From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id E60131B1AF for ; Tue, 26 Sep 2017 09:47:00 +0200 (CEST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Sep 2017 00:46:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.42,440,1500966000"; d="scan'208";a="153376480" Received: from pgsmsx107.gar.corp.intel.com ([10.221.44.105]) by orsmga005.jf.intel.com with ESMTP; 26 Sep 2017 00:46:57 -0700 Received: from pgsmsx103.gar.corp.intel.com ([169.254.2.203]) by PGSMSX107.gar.corp.intel.com ([169.254.7.200]) with mapi id 14.03.0319.002; Tue, 26 Sep 2017 15:46:55 +0800 From: "Zhao1, Wei" To: "Yigit, Ferruh" CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v3 1/2] net/i40e: queue region set and flush Thread-Index: AQHTLdIoeqU7BZgiK0uTHIs5i75GdaK9FtqAgAgg2LD//6i+AIAB8fwg Date: Tue, 26 Sep 2017 07:46:55 +0000 Message-ID: References: <1505282644-40415-1-git-send-email-wei.zhao1@intel.com> <1505445188-70251-1-git-send-email-wei.zhao1@intel.com> <1505445188-70251-2-git-send-email-wei.zhao1@intel.com> <0508ed6a-4301-de07-7bb1-a74a5ff2a871@intel.com> <1109bef6-39c2-155e-f60d-a8f4147ba359@intel.com> In-Reply-To: <1109bef6-39c2-155e-f60d-a8f4147ba359@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [172.30.20.205] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v3 1/2] net/i40e: queue region set and flush X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 26 Sep 2017 07:47:01 -0000 DQpIaSwgIEZlcnJ1aA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFlp Z2l0LCBGZXJydWgNCj4gU2VudDogTW9uZGF5LCBTZXB0ZW1iZXIgMjUsIDIwMTcgNTozMiBQTQ0K PiBUbzogWmhhbzEsIFdlaSA8d2VpLnpoYW8xQGludGVsLmNvbT4NCj4gQ2M6IGRldkBkcGRrLm9y Zw0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFUQ0ggdjMgMS8yXSBuZXQvaTQwZTogcXVl dWUgcmVnaW9uIHNldCBhbmQgZmx1c2gNCj4gDQo+IE9uIDkvMjUvMjAxNyA4OjQwIEFNLCBaaGFv MSwgV2VpIHdyb3RlOg0KPiA+IEhpLCBGZXJydWgNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBZaWdpdCwgRmVycnVoDQo+ID4+IFNlbnQ6IFdlZG5lc2Rh eSwgU2VwdGVtYmVyIDIwLCAyMDE3IDY6MzYgUE0NCj4gPj4gVG86IFpoYW8xLCBXZWkgPHdlaS56 aGFvMUBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtkcGRrLWRl dl0gW1BBVENIIHYzIDEvMl0gbmV0L2k0MGU6IHF1ZXVlIHJlZ2lvbiBzZXQgYW5kDQo+ID4gZmx1 c2gNCj4gPj4NCj4gPj4gT24gOS8xNS8yMDE3IDQ6MTMgQU0sIFdlaSBaaGFvIHdyb3RlOg0KPiA+ PiA+IFRoaXMgZmVhdHVyZSBlbmFibGUgcXVldWUgcmVnaW9ucyBjb25maWd1cmF0aW9uIGZvciBS U1MgaW4gUEYvVkYsDQo+ID4+ID4gc28gdGhhdCBkaWZmZXJlbnQgdHJhZmZpYyBjbGFzc2VzIG9y IGRpZmZlcmVudCBwYWNrZXQNCj4gPj4gPiBjbGFzc2lmaWNhdGlvbiB0eXBlcyBjYW4gYmUgc2Vw YXJhdGVkIHRvIGRpZmZlcmVudCBxdWV1ZXMgaW4NCj4gPj4gPiBkaWZmZXJlbnQgcXVldWUgcmVn aW9ucy5UaGlzIHBhdGNoIGNhbiBzZXQgcXVldWUgcmVnaW9uIHJhbmdlLCBpdA0KPiA+PiA+IGlu Y2x1ZGUgcXVldWUgbnVtYmVyIGluIGEgcmVnaW9uIGFuZCB0aGUgaW5kZXggb2YgZmlyc3QgcXVl dWUuDQo+ID4+DQo+ID4+IElzIGZvbGxvd2luZyBjb3JyZWN0Og0KPiA+PiBTbyBpbnN0ZWFkIG9m IGRpc3RyaWJ1dGluZyBwYWNrZXRzIHRvIHRoZSBtdWx0aXBsZSBxdWV1ZXMsIHRoaXMgd2lsbA0K PiA+IGRpc3RyaWJ1dGUNCj4gPj4gcGFja2V0cyBpbnRvIHF1ZXVlIHJlcWlvbnMgd2hpY2ggbWF5 IGNvbnNpc3RzIG9mIG11bHRpcGxlIHF1ZXVlcy4NCj4gPj4NCj4gPj4gSWYgc28sIGlzIHRoZXJl IGEgd2F5IHRvIGNvbnRyb2wgaG93IHBhY2tldHMgZGlzdHJpYnV0ZWQgd2l0aGluIHNhbWUNCj4g Pj4gcXVldWUgcmVnaW9uIHRvIG11bHRpcGxlIHF1ZXVlcz8NCj4gPj4NCj4gPg0KPiA+IGRpc3Ry aWJ1dGVkIHdpdGhpbiBzYW1lIHF1ZXVlIHJlZ2lvbiBpcyBiYXNlZCBvbiBhIHJzcyBhbGdvcml0 aG0sIGl0DQo+ID4gaXMgaW1wbGVtZW50ZWQgYnkgTklDIHNlbGYsIHNvZnR3YXJlIGNhbiBub3Qg Y29udHJvbCBpdC4NCj4gDQo+IEkgd2FzIHRoaW5raW5nIFJTUyB1c2VkIHRvIHNlbGVjdCBxdWV1 ZSByZWdpb24sIGJ1dCBubyBmaXJzdCBxdWV1ZSByZWdpb24NCj4gc2VsZWN0ZWQsIGxhdGVyIFJT UyB1c2VkIHRvIHNlbGVjdCBxdWV1ZSB3aXRoaW4gdGhlIHJlZ2lvbi4NCj4gVGhhbmtzIGZvciBj bGFyaWZpY2F0aW9uLg0KDQpPSw0KDQo+IA0KPiA8Li4uPg0KPiANCj4gPiBzaXplb2YodnNpLT5p bmZvLnRjX21hcHBpbmcpKTsNCj4gPj4gPiArwqDCoMKgwqDCoCAodm9pZClydGVfbWVtY3B5KCZ2 c2ktPmluZm8ucXVldWVfbWFwcGluZywNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmN0eHQu aW5mby5xdWV1ZV9tYXBwaW5nLA0KPiA+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc2l6ZW9mKHZzaS0+aW5mby5xdWV1ZV9tYXBwaW5nKSk7DQo+ID4+DQo+ ID4+IFBsZWFzZSBrZWVwIGxpbmUgYWxsaWdubWVudCBzYW1lIHdpdGggYWJvdmUgbGluZS4NCj4g Pg0KPiA+IG9LLCBjaGFuZ2UgaW4gdjQsIGJ1dCBjYW4gbm90IHRoZSBzYW1lLg0KPiA+ICh2b2lk KXJ0ZV9tZW1jcHkoJnZzaS0+aW5mby5xdWV1ZV9tYXBwaW5nLA0KPiAmY3R4dC5pbmZvLnF1ZXVl X21hcHBpbmcsDQo+ID4NCj4gPiBzaXplb2YodnNpLT5pbmZvLnF1ZXVlX21hcHBpbmcpKTsNCj4g PiB3aWxsIG92ZXIgODAgbWF4bnVtYmVyLg0KPiANCj4gU29tZXRpbmcgbGlrZSBmb2xsb3dpbmcs IG5ldyBsaW5lcyBhbGlnbmVkOg0KPiANCj4gCSh2b2lkKXJ0ZV9tZW1jcHkoJnZzaS0+aW5mby5x dWV1ZV9tYXBwaW5nLA0KPiAJCSZjdHh0LmluZm8ucXVldWVfbWFwcGluZywNCj4gCQlzaXplb2Yo dnNpLT5pbmZvLnF1ZXVlX21hcHBpbmcpKTsNCg0KDQpPaywgY2hhbmdlIGluIHY0DQoNCj4gDQo+ IDwuLi4+DQo+IA0KPiA+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKChpID09IGluZm8tPnF1ZXVlX3JlZ2lvbl9udW1iZXIpICYmDQo+ID4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChpIDw9DQo+ID4+ID4gK0k0MEVfUkVHSU9OX01BWF9JTkRFWCkpIHsN Cj4gPj4NCj4gPj4NCj4gPj4gUGxlYXNlIHVzZSBvbmUgbW9yZSBsZXZlbCBpbmRlbnRhaW9uIGhl cmUsIGFuZCBwaGFyYW50ZXNpcyBsb29rcw0KPiA+PiBleHRyYSBjYW4geW91IHBsZWFzZSBkb3Vi bGUgY2hlY2s/DQo+ID4NCj4gPiBZb3UgbWVhbix5b3Ugd2FudCB0aGUgZm9sbG93aW5nIG1vZWRl ID8NCj4gPiDCoMKgwqDCoMKgwqDCoCBpZiAoaSA9PSBpbmZvLT5xdWV1ZV9yZWdpb25fbnVtYmVy KSB7DQo+ID4gwqDCoMKgwqDCoMKgwqDCoAlpZihpIDw9IEk0MEVfUkVHSU9OX01BWF9JTkRFWCkg ew0KPiA+IAkJCS4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KPiA+ICAgICAgICAgCX0NCj4g PiAgICAgICAgfQ0KPiA+DQo+IA0KPiBObywgY29udGludWF0aW9uIG9mIHRoZSAiaWYiIHNob3Vs ZCBiZSBlYXN5IHRvIHJlY29nbml6ZWQgZnJvbSBib2R5IG9mIHRoZQ0KPiAiaWYiLCBzb21ldGhp bmcgbGlrZToNCj4gDQo+IAlpZiAoKGkgPT0gaW5mby0+cXVldWVfcmVnaW9uX251bWJlcikgJiYN Cj4gCQkJKGkgPD0gSTQwRV9SRUdJT05fTUFYX0lOREVYKSkgew0KPiAJCWluZm8tPnJlZ2lvbltp XS5yZWdpb25faWQgPSBjb25mX3B0ci0+cmVnaW9uX2lkOw0KPiAJCWluZm8tPnJlZ2lvbltpXS5x dWV1ZV9udW0gPSBjb25mX3B0ci0+cXVldWVfbnVtOw0KPiANCj4gPC4uLj4NCj4gDQoNCk9rLCBj aGFuZ2UgaW4gdjQNCg0KPiANCj4gPj4gPiArc3RhdGljIGludA0KPiA+PiA+ICtpNDBlX3NldF9y ZWdpb25fZmxvd3R5cGVfcGYoc3RydWN0IGk0MGVfaHcgKmh3LA0KPiA+PiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGk0MGVfcGYgKnBmLCBzdHJ1 Y3QNCj4gPiBydGVfaTQwZV9yc3NfcmVnaW9uX2NvbmYNCj4gPj4gKmNvbmZfcHRyKQ0KPiA+Pg0K PiA+PiBXaGF0IGRvIHlvdSB0aGluayBzdGFydGluZyBhbGwgZnVuY3Rpb25zLCBldmVuIHRoZXkg YXJlIHN0YXRpYywgd2l0aA0KPiA+PiAiaTQwZV9xdWV1ZV9yZWdpb25fIiBwcmVmaXg/DQo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0ID0gaTQwZV9zZXRfcXVldWVfcmVnaW9uKHBmLA0KPiA+IGNvbmZfcHRyKTsNCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBS VEVfUE1EX0k0MEVfUkVHSU9OX0ZMT1dUWVBFX1BGX1NFVDoNCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBpNDBl X3NldF9yZWdpb25fZmxvd3R5cGVfcGYoaHcsDQo+ID4gcGYsIGNvbmZfcHRyKTsNCj4gPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBSVEVfUE1E X0k0MEVfUkVHSU9OX0ZMT1dUWVBFX1ZGX1NFVDoNCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSAtRUlOVkFMOw0K PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGJyZWFrOw0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNl IFJURV9QTURfSTQwRV9VUF9SRUdJT05fU0VUOg0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGk0MGVfc2V0X3Vw X3JlZ2lvbihwZiwNCj4gPiBjb25mX3B0cik7DQo+ID4NCj4gPiBJIGhhdmUgdXNlIHRoZSBmb3Jt YXQgb2ZpNDBlX3NldF/CoCBhcyBwcmVmaXg/DQo+ID4gQmVjYXVzZSBtYW55IHNldCBpcyBub3Qg cmVsYXRlZCBkaXJlY3RseSB0byBxdWV1ZSByZWdpb24uDQo+IA0KPiBXaGVuIGxvb2tpbmcgdG8g dGhpcyBwYXRjaCB3aGF0IGZ1bmN0aW9ucyBhcmUgZG9pbmcgaXMgY2xlYXIsIGJ1dCBpdCBhbHNv IHNob3VsZA0KPiBiZSBjbGVhciB3aGVuIGxvb2tpbmcgdGhlIHNvdXJjZSBjb2RlIHNvbWUgdGlt ZSBsYXRlciB3aGF0IHRoYXQgZnVuY3Rpb24gaXMNCj4gYWJvdXQuDQo+IA0KPiBUaGF0IGlzIHdo eSBJIGJlbGlldmUgYSBuYW1lc3BhY2UgaXMgdXNlZnVsLCBsaWtlICJpNDBlX3F1ZXVlX3JlZ2lv bl94eCIsIHNvDQo+IHlvdSBjYW4gaW1tZWRpYXRlbHkgc2F5IHRoaXMgZnVuY3Rpb24gaXMgYWJv dXQgIlJTUyBxdWV1ZSByZWdpb24iIGZlYXR1cmUuDQo+IA0KPiBUaGlzIGZ1bmN0aW9uIGlzICJy dGVfcG1kX2k0MGVfcXVldWVfcmVnaW9uX2NvbmYiLCBpdCBpcyBhcHBseWluZyBwcm92aWRlZA0K PiBxdWV1ZSByZWdpb24gY29uZmlndXJhdGlvbiBiYXNlZCBvZiByZWdpb24gb3AgdHlwZSwgc28g SSBhc3N1bWVkIGFsbCB0aGVzZQ0KPiBmdW5jdGlvbnMgYXJlIGRpcmVjdGx5IHJlbGF0ZWQgdG8g dGhlIGZhdHVyZS4NCj4gDQo+IElmIHlvdSBiZWxpZXZlIGZ1bmN0aW9uIG5hbWUgd2lsbCBiZSB3 cm9uZyB3aXRoIHRoYXQgcHJlZml4LCBvZiBjb3Vyc2UganVzdA0KPiBkb24ndCB1c2UgaXQsIGJ1 dCBwbGVhc2UgdHJ5IHRvIHN0aWNrIHdpdGggYSBuYW1lIHNwYWNlLCB0aGF0IHdpbGwgbWFrZSBl YXN5IHRvDQo+IHVuZGVyc3RhbmQgdGhlc2UgZmVhdHVyZXMgaW4gYWxsIHNvdXJjZSBjb2RlLg0K PiANCj4gPC4uLj4NCg0KT2ssIGZpeCBpbiB2NA0KDQoNCj4gDQo+IA0KPiA+PiA+ICsNCj4gPj4g PiArwqDCoMKgwqDCoCBtZW1zZXQoJmh3LT5sb2NhbF9kY2J4X2NvbmZpZywgMCwNCj4gPj4gPiAr wqDCoMKgwqDCoCBzaXplb2Yoc3RydWN0IGk0MGVfZGNieF9jb25maWcpKTsNCj4gPj4NCj4gPj4g V3JvbmcgaW5kZW50YXRpb24uDQo+IA0KPiBSZW1pbmRlciBvZiB0aGlzIG9uZSBpbmNhc2UgbWlz c2VkLg0KDQpPaywgY2hhbmdlIGluIHY0DQoNCj4gDQo+IDwuLi4+DQo+IA0KPiA+PiA+ICtpbnQg cnRlX3BtZF9pNDBlX3F1ZXVlX3JlZ2lvbl9jb25mKHVpbnQ4X3QgcG9ydCwNCj4gPj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0DQo+ID4gcnRlX2k0MGVfcnNzX3JlZ2lvbl9jb25mICpjb25m X3B0cikgew0KPiA+PiA+ICvCoMKgwqDCoMKgIHN0cnVjdCBydGVfZXRoX2RldiAqZGV2ID0gJnJ0 ZV9ldGhfZGV2aWNlc1twb3J0XTsNCj4gPj4NCj4gPj4geW91IG5lZWQgdG8gdmVyaWZ5IHBvcnRf aWQsIHNpbmNlIHRoaXMgaXMgcHVibGljIEFQSSBub3cuIFBsZWFzZQ0KPiA+PiBjaGVjaw0KPiA+ IG90aGVyDQo+ID4+IEFQSXMgaW4gdGhpcyBmaWxlLg0KPiANCj4gUmVtaW5kZXIgb2YgdGhpcyBv bmUgaW5jYXNlIG1pc3NlZC4NCg0KT2ssIGNoYW5nZSBpbiB2NA0KDQo+IA0KPiBJIG1lYW4gaXNf aTQwZV9zdXBwb3J0ZWQoKSBjYWxsIHRoYXQgb3RoZXIgQVBJcyBoYXZlLg0KPiANCj4gPC4uLj4N Cj4gDQo+ID4+ID4gKw0KPiA+PiA+ICvCoMKgwqDCoMKgIGlmICghaXNfaTQwZV9zdXBwb3J0ZWQo ZGV2KSkNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRU5PVFNVUDsNCj4gPj4gPiArDQo+ID4+ID4gK8KgwqDCoMKgwqAgc3dpdGNoIChv cF90eXBlKSB7DQo+ID4+ID4gK8KgwqDCoMKgwqAgY2FzZSBSVEVfUE1EX0k0MEVfUVVFVUVfUkVH SU9OX1NFVDoNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IGk0MGVfc2V0X3F1ZXVlX3JlZ2lvbihwZiwgY29uZl9wdHIpOw0KPiA+PiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ID4+DQo+ ID4+IERvZXMgaXQgbWFrZSBzZW5zZSB0byBhZGQgYW5vdGhlciB0eXBlIHRvIGdldCB0aGUgY3Vy cmVudCBxdWV1ZQ0KPiA+PiByZWdpb24gY29uZmlnPw0KPiANCj4gUmVtaW5kZXIgb2YgdGhpcyBv bmUgaW5jYXNlIG1pc3NlZC4NCg0KSSB3aWxsIGFkZCBhIGdldCBjb21tYW5kLg0KDQo+IA0KPiA+ DQo+ID4+ID4gK8KgwqDCoMKgwqAgY2FzZSBSVEVfUE1EX0k0MEVfUkVHSU9OX0ZMT1dUWVBFX1BG X1NFVDoNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldCA9IGk0MGVfc2V0X3JlZ2lvbl9mbG93dHlwZV9wZihodywgcGYsDQo+ID4gY29uZl9wdHIp Ow0KPiA+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7DQo+ID4+ID4gK8KgwqDCoMKgwqAgY2FzZSBSVEVfUE1EX0k0MEVfUkVHSU9OX0ZMT1dUWVBF X1ZGX1NFVDoNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHJldCA9IC1FSU5WQUw7DQo+ID4+DQo+ID4+IFdpbGwgdGhpcyBiZSBpbXBsZW1lbnRlZCBs YXRlciwgb3Igbm90IGEgdmFsaWQgY2FzZSBhdCBhbGw/DQo+IA0KPiBSZW1pbmRlciBvZiB0aGlz IG9uZSBpbmNhc2UgbWlzc2VkLg0KDQpPaywgY2hhbmdlIGluIHY0DQoNCj4gDQo+ID4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gPj4gPiAr wqDCoMKgwqDCoCBjYXNlIFJURV9QTURfSTQwRV9VUF9SRUdJT05fU0VUOj4gKw0KPiA+IHJldCA9 DQo+ID4+IGk0MGVfc2V0X3VwX3JlZ2lvbihwZiwgY29uZl9wdHIpOw0KPiA+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ID4+ID4gK8KgwqDC oMKgwqAgY2FzZSBSVEVfUE1EX0k0MEVfUkVHSU9OX0FMTF9GTFVTSF9PTjoNCj4gPj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGk0MGVfZmx1c2hf cmVnaW9uX2FsbF9jb25mKGh3LCBwZiwgMSk7DQo+ID4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gPj4gPiArwqDCoMKgwqDCoCBjYXNlIFJU RV9QTURfSTQwRV9SRUdJT05fQUxMX0ZMVVNIX09GRjoNCj4gPj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGk0MGVfZmx1c2hfcmVnaW9uX2FsbF9j b25mKGh3LCBwZiwgMCk7DQo+ID4+DQo+ID4+IENhbiB5b3UgcGxlYXNlIGRlc2NyaWJlIHdoYXQg Zmx1c2hfb24gYW5kIGZsdXNoX29mZiBhcmUsIHlvdSBjYW4NCj4gPj4gY29tbWVudCB0byBjb2Rl IGlmIGFsc28uDQo+IA0KPiBSZW1pbmRlciBvZiB0aGlzIG9uZSBpbmNhc2UgbWlzc2VkLg0KDQpJ IHdpbGwgY29tbWVudCB0byBjb2RlIGluIHY0Lg0KQUxMIGNvbmZpZyBmcm9tIENMSSBhdCBmaXJz dCB3aWxsIG9ubHkga2VlcCBpbiBEUERLIHNvZnR3YXJlIHN0b3JlZCBpbiBkcml2ZXIsIG9ubHkg YWZ0ZXIgIiBGTFVTSF9PTiAiLCBpdCBjb21taXQgYWxsIGNvbmZpZ3VyZSB0byBIVy4NCkJlY2F1 c2UgSSBoYXZlIHRvIHNldCBoYXJkd2FyZSBjb25maWcgYXQgYSB0aW1lLCBzbyBJIGhhdmUgdG8g cmVjb3JkIGFsbCBDTEkgY29tbWFuZCBhdCBmaXJzdC4NCiIgRkxVU0hfT0ZGICIgaXMganVzdCBj bGVhbiBhbGwgY29uZmlndXJhdGlvbiBhYm91dCBxdWV1ZSByZWdpb24gIGp1c3Qgbm93LCBhbmQg cmVzdG9yZSBhbGwgdG8gRFBESyBpNDBlIGRyaXZlciBkZWZhdWx0IGNvbmZpZyB3aGVuIHN0YXJ0 IHVwLg0KVGhlIGZvbGxvd2luZyBpcyBteSB0ZXN0IHByb2Nlc3MgaW4gQ0xJOiANCg0KLi94ODZf NjQtbmF0aXZlLWxpbnV4YXBwLWdjYy9hcHAvdGVzdHBtZCAtYyAxZmZmZiAtbiA0IC0tIC1pIC0t bmItY29yZXM9OCAgLS1yeHE9OCAtLXR4cT04IC0tcG9ydC10b3BvbG9neT1jaGFpbmVkIHNldCBm d2Qgcnhvbmx5IHBvcnQgY29uZmlnIGFsbCByc3MgYWxsIHF1ZXVlLXJlZ2lvbiBzZXQgcG9ydCAw IHJlZ2lvbl9pZCAwIHF1ZXVlX3N0YXJ0X2luZGV4IDIgcXVldWVfbnVtIDIgcXVldWUtcmVnaW9u IHNldCBwb3J0IDAgcmVnaW9uX2lkIDEgcXVldWVfc3RhcnRfaW5kZXggNCBxdWV1ZV9udW0gMiAN CnF1ZXVlLXJlZ2lvbiBzZXQgcGYgcG9ydCAwIHJlZ2lvbl9pZCAwIGZsb3d0eXBlIDMxIA0KcXVl dWUtcmVnaW9uIHNldCBwZiBwb3J0IDAgcmVnaW9uX2lkIDEgZmxvd3R5cGUgMzMgDQpxdWV1ZS1y ZWdpb24gc2V0IHBmIHBvcnQgMCByZWdpb25faWQgMSBmbG93dHlwZSAzNCANCnF1ZXVlLXJlZ2lv biBzZXQgcG9ydCAwIFVQIDEgcmVnaW9uX2lkIDAgDQpxdWV1ZS1yZWdpb24gc2V0IHBvcnQgMCBV UCAzIHJlZ2lvbl9pZCAxIA0KcXVldWUtcmVnaW9uIGZsdXNoIG9uICBwb3J0IDAgDQpzdGFydCBz ZXQgdmVyYm9zZSAxIHNlbmRwKFtFdGhlcihkc3Q9IjNDOkZEOkZFOjlGOjcwOkI4Iiwgc3JjPSI1 MjowMDowMDowMDowMDowMCIpL0RvdDFRKHByaW89MykvSVAoc3JjPSIxMC4wLjAuMSIsZHN0PSIx OTIuMTY4LjAuMiIpL1RDUChkcG9ydD04MCwgc3BvcnQ9ODAgKS8oIlgiKjQ4KV0sIGlmYWNlPSJl bnM1ZjIiLCBjb3VudD0xMCkgc2VuZHAoW0V0aGVyKGRzdD0iM0M6RkQ6RkU6OUY6NzA6QjgiLCBz cmM9IjUyOjAwOjAwOjAwOjAwOjAwIikvSVAoc3JjPSIxMC4wLjAuMSIsZHN0PSIxOTIuMTY4LjAu MiIpL1NDVFAoZHBvcnQ9ODAsIHNwb3J0PTgwICkvKCJYIio0OCldLCBpZmFjZT0iZW5zNWYyIiwg Y291bnQ9MTApIHNlbmRwKFtFdGhlcihkc3Q9IjNDOkZEOkZFOjlGOjcwOkI4Iiwgc3JjPSI1Mjow MDowMDowMDowMDowMCIpL0lQKHNyYz0iMTAuMC4wLjEiLGRzdD0iMTkyLjE2OC4wLjIiKS9VRFAo ZHBvcnQ9ODAsIHNwb3J0PTgwICkvKCJYIio0OCldLCBpZmFjZT0iZW5zNWYyIiwgY291bnQ9MTAp DQoNCj4gDQo+IDwuLi4+DQo+IA0KPiA+PiA+IEBAIC0xNDYsNiArMTYwLDE4IEBAIHN0cnVjdCBy dGVfcG1kX2k0MGVfcHR5cGVfbWFwcGluZyB7wqAgfTsNCj4gPj4gPg0KPiA+PiA+wqAgLyoqDQo+ ID4+ID4gKyAqIFF1ZXVlIHJlZ2lvbiBpbmZvcm1hdGlvbiBnZXQgZnJvbSBDTEkuDQo+ID4+DQo+ ID4+IEl0IGRvZXNuJ3QgbmVlZCB0byBiZSBmcm9tIENMSSwgY2FuIGRyb3AgdGhhdCBwYXJ0DQo+ IA0KPiBSZW1pbmRlciBvZiB0aGlzIG9uZSBpbmNhc2UgbWlzc2VkLg0KPiANCg0KT2ssIGNoYW5n ZSBpbiB2NA0KDQo+IDwuLi4+DQo+IA0KPiA+PiA+ICvCoMKgwqDCoMKgIHVpbnQ4X3QgdXNlcl9w cmlvcml0eTsNCj4gPj4gPiArwqDCoMKgwqDCoCBlbnVtIHJ0ZV9wbWRfaTQwZV9xdWV1ZV9yZWdp b25fb3DCoCBvcDsNCj4gPj4NCj4gPj4gRXh0cmEgc3BhY2UgYmVmb3JlICJvcCINCj4gPg0KPiA+ IE1heWJlLCBJIFNIT1VMRCBhZGQgdWludDhfdCByYXdbM10gYmVmb3JlIOKAnG9w4oCdDQo+IA0K PiBTb3JyeSwgSSBkaWRuJ3QgZ2V0IHRoaXMgb25lLg0KDQpPaw0KDQo+IA0KPiA8Li4uPg0KPiAN Cj4gPj4gcnRlX3BtZF9pNDBlX3B0eXBlX21hcHBpbmdfcmVwbGFjZSh1aW50OF90DQo+ID4+ID4g cG9ydCzCoCBpbnQgcnRlX3BtZF9pNDBlX2FkZF92Zl9tYWNfYWRkcih1aW50OF90IHBvcnQsIHVp bnQxNl90DQo+ID4+ID52Zl9pZCwNCj4gPj4gPsKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgc3RydWN0DQo+ID4gZXRoZXJfYWRkciAqbWFj X2FkZHIpOw0KPiA+PiA+DQo+ID4+ID4gKy8qKg0KPiA+PiA+ICsgKiBHZXQgUlNTIHF1ZXVlIHJl Z2lvbiBpbmZvIGZyb20gQ0xJIGFuZCBkbyBjb25maWd1cmF0aW9uIGZvcg0KPiA+Pg0KPiA+PiBB Z2FpbiBub3cgdGhpcyBpcyBhbiBBUEksIG5vdCBqdXN0IGZvciB0ZXN0cG1kLCBwbGVhc2UgZHJv cCBDTEkNCj4gDQo+IFJlbWluZGVyIG9mIHRoaXMgb25lIGluY2FzZSBtaXNzZWQuDQoNCk9rLCBj aGFuZ2UgaW4gdjQNCg0KPiANCj4gPj4NCj4gPj4gPiArICogdGhhdCBwb3J0IGFzIHRoZSBjb21t YW5kIG90aW9uIHR5cGUNCj4gPj4NCj4gPj4gcy9vdGlvbi9vcHRpb25zDQo+ID4+DQo+IA0KPiBS ZW1pbmRlciBvZiB0aGlzIG9uZSBpbmNhc2UgbWlzc2VkLg0KDQpPaywgY2hhbmdlIGluIHY0DQoN Cj4gDQo+IDwuLi4+DQo+IA0KPiA+PiA+ICtpbnQgcnRlX3BtZF9pNDBlX3F1ZXVlX3JlZ2lvbl9j b25mKHVpbnQ4X3QgcG9ydCwNCj4gPj4NCj4gPj4gQ2FuIHlvdSBwbGVhc2UgdXNlIHBvcnRfaWQg YXMgdmFyaWFibGUgbmFtZSB0byBiZSBjb25zaXN0ZW50Lg0KPiANCj4gUmVtaW5kZXIgb2YgdGhp cyBvbmUgaW5jYXNlIG1pc3NlZC4NCg0KT2ssIGNoYW5nZSBpbiB2NA0KDQo+IA0KPiA8Li4uPg0K