From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 284A7D28C for ; Fri, 24 Mar 2017 15:37:06 +0100 (CET) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga105.fm.intel.com with ESMTP; 24 Mar 2017 07:37:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.36,215,1486454400"; d="scan'208";a="239946119" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga004.fm.intel.com with ESMTP; 24 Mar 2017 07:37:06 -0700 Received: from fmsmsx113.amr.corp.intel.com ([169.254.13.235]) by FMSMSX108.amr.corp.intel.com ([169.254.9.101]) with mapi id 14.03.0319.002; Fri, 24 Mar 2017 07:37:05 -0700 From: "Wiles, Keith" To: "Ananyev, Konstantin" CC: "Hu, Jiayu" , Yuanhan Liu , "Richardson, Bruce" , Stephen Hemminger , "Yigit, Ferruh" , "dev@dpdk.org" , "Liang, Cunming" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support Thread-Index: AQHSou9HGbI2XQXRT0SMpTSJ0l69vaGhXiuAgADH34CAADY2gIAAD3+AgAAqRwCAABfzgIAAL+AAgADcygCAAEHVgIAAEc0AgAAMT4CAADypAIAAMHAA Date: Fri, 24 Mar 2017 14:37:04 +0000 Message-ID: <0C56AF3E-C8AB-4903-AD34-F39C6D74C889@intel.com> References: <1B893F1B-4DA8-4F88-9583-8C0BAA570832@intel.com> <20170323021502.GA114662@localhost.localdomain> <20170323062433.GA120139@localhost.localdomain> <59AF69C657FD0841A61C55336867B5B066729E3F@IRSMSX103.ger.corp.intel.com> <20170323102135.GA124301@localhost.localdomain> <2601191342CEEE43887BDE71AB9772583FAD410A@IRSMSX109.ger.corp.intel.com> <20170324022310.GA129105@localhost.localdomain> <32FED22E-7116-4B6A-894E-C81CBF7B4BBE@intel.com> <20170324072230.GU18844@yliu-dev.sh.intel.com> <20170324080633.GA2865@localhost.localdomain> <2601191342CEEE43887BDE71AB9772583FAD80A6@IRSMSX109.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB9772583FAD80A6@IRSMSX109.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.255.84.105] Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH 0/2] lib: add TCP IPv4 GRO support 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: Fri, 24 Mar 2017 14:37:07 -0000 DQo+IE9uIE1hciAyNCwgMjAxNywgYXQgNjo0MyBBTSwgQW5hbnlldiwgS29uc3RhbnRpbiA8a29u c3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT4gd3JvdGU6DQo+IA0KPiANCj4gDQo+PiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gRnJvbTogSHUsIEppYXl1DQo+PiBTZW50OiBGcmlkYXks IE1hcmNoIDI0LCAyMDE3IDg6MDcgQU0NCj4+IFRvOiBZdWFuaGFuIExpdSA8eXVhbmhhbi5saXVA bGludXguaW50ZWwuY29tPg0KPj4gQ2M6IFdpbGVzLCBLZWl0aCA8a2VpdGgud2lsZXNAaW50ZWwu Y29tPjsgQW5hbnlldiwgS29uc3RhbnRpbiA8a29uc3RhbnRpbi5hbmFueWV2QGludGVsLmNvbT47 IFJpY2hhcmRzb24sIEJydWNlDQo+PiA8YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBTdGVw aGVuIEhlbW1pbmdlciA8c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmc+OyBZaWdpdCwgRmVycnVo IDxmZXJydWgueWlnaXRAaW50ZWwuY29tPjsNCj4+IGRldkBkcGRrLm9yZzsgTGlhbmcsIEN1bm1p bmcgPGN1bm1pbmcubGlhbmdAaW50ZWwuY29tPjsgVGhvbWFzIE1vbmphbG9uIDx0aG9tYXMubW9u amFsb25ANndpbmQuY29tPg0KPj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIDAvMl0g bGliOiBhZGQgVENQIElQdjQgR1JPIHN1cHBvcnQNCj4+IA0KPj4gT24gRnJpLCBNYXIgMjQsIDIw MTcgYXQgMDM6MjI6MzBQTSArMDgwMCwgWXVhbmhhbiBMaXUgd3JvdGU6DQo+Pj4gT24gRnJpLCBN YXIgMjQsIDIwMTcgYXQgMDY6MTg6NDhBTSArMDAwMCwgV2lsZXMsIEtlaXRoIHdyb3RlOg0KPj4+ Pj4+IEkgdGhpbmsgdGhhdCBoYXZpbmcgYSBzZXBhcmF0ZSBsaWJyYXJ5IGZvciBHUk8gaXMgYSBz dGVwIGluIGEgcmlnaHQgZGlyZWN0aW9uLg0KPj4+Pj4+PiBGcm9tIG15IHBlcnNwZWN0aXZlIC0g aXQgcHJvdmlkZXMgYSBjbGVhbiBhbmQgZmxleGlibGUgd2F5IHRvIHVzZSB0aGF0IGZlYXR1cmUu DQo+Pj4+Pj4gSWYgbGF0ZXIgc29tZW9uZSB3b3VsZCBsaWtlIHRvIHB1dCBHUk8gaW50byBldGhk ZXYgbGF5ZXIgKG9yIHBhcnRpY3VsYXIgUE1EKSwNCj4+Pj4+PiBoZSBjYW4gdXNlIGV4aXN0aW5n IGxpYnJ0ZV9ncm8gZm9yIHRoYXQuDQo+Pj4+PiANCj4+Pj4+IEFncmVlLiBJIHRoaW5rIGludHJv ZHVjaW5nIG1vcmUgZmxleGliaWxpdHkgaXMgYW4gaW1wb3J0YW50IHRoaW5nIGZvciBhcHBsaWNh dGlvbnMuDQo+Pj4+IA0KPj4+PiBDcmVhdGluZyBhIG5ldyBsaWJyYXJ5IGp1c3QgZm9yIEdSTyBp cyBub3QgYSByZWFzb25hYmxlIHNvbHV0aW9uLCBidXQgYWRkaW5nIHRoYXQgc3VwcG9ydCB0byBh biBleGlzdGluZyBsaWJyYXJ5IGxpa2UgbGlicnRlX25ldCB3b3VsZA0KPj4gYmUgY2xlYW5lciBh bmQgbm90IGNyZWF0ZSB5ZXQgYW5vdGhlciBsaWJyYXJ5Lg0KPj4+IA0KPj4+IExpYnJ0ZV9uZXQg c2VlbXMgbGlrZSBhIGdvb2Qgc3VnZ2VzdGlvbiB0byBtZSwgZXNwZWNpYWxseSB3aGVuIHdlIGFy ZQ0KPj4+IGNvbnNpZGVyaW5nIHRvIGFkZCBHU08gaW4gZnV0dXJlLiBUaGUgb25seSBjb25jZXJu IHRvIG1lIGlzICJuZXQiIG1heQ0KPj4+IGJlIHRvbyBnZW5lcmljLiBJdCBtYXliZSBraW5kIG9m IGhhcmQgdG8gZGVjaWRlIHdoaWNoIHNob3VsZCBiZSBpbg0KPj4+IGxpYnJ0ZV9uZXQsIGFuZCB3 aGljaCBzaG91bGQgYmUgYWRkZWQgYXMgYSBzdGFuZGFsb25lIGxpYi4gRm9yIGV4YW1wbGUsDQo+ Pj4gc2hvdWxkbid0ICdscG0nIGFuZCAnaXBfZnJhZycgYWxzbyBiZWxvbmcgdG8gbGlicnRlX25l dD8NCj4gDQo+IEFib3V0IGxpYnJ0ZV9ncm8gdnMgbGlicnRlX25ldDoNCj4gDQo+IFJpZ2h0IG5v dyBsaWJydGVfbmV0IGlzIHF1aXRlIGxpZ2h0d2VpZ2h0IG9uZSAtIGl0IG1vc3RseSBjb250YWlu cyBhIG5ldCBwcm90b2NvbHMgZGVmaW5pdGlvbnMNCj4gcGx1cyBzb21lIGV4dHJhIGhlbHBlciBm dW5jdGlvbnM6IHRvIHBhcnNlIHRoZSBsMi9sMyBoZWFkZXJzIHRvIGRldGVybWluZSBwdHlwZSwg dG8gY2FsY3VsYXRlIGNrc3VtLCBldGMuDQo+IEdSTyBjb2RlIGlzIHF1aXRlIGRpZmZlcmVudCAt IGl0IGhhcyB0byBhbGxvY2F0ZSBhbmQgbWFuYWdlIGhhc2ggdGFibGUocyksIGV0Yy4NCj4gQWdh aW4gbXkgdW5kZXJzdGFuZGluZyBpdCB3b3VsZCBrZWVwIGdyb3dpbmcgKHdpdGggbmV3IHByb3Rv IHN1cHBvcnQpLg0KPiBBZ2FpbiBhcyBtZW50aW9uZWQgYWJvdmUgaWYgR1JPIHNob3VsZCBnbyBp bnRvIGxpYnJ0ZV9uZXQsIHRoZW4gbGlicnRlX2lwZnJhZyBhbmQgZnV0dXJlIEdTTyBzaG91bGQg YWxzbyBiZSBoZXJlLg0KPiBXaGljaCB3b3VsZCBjcmVhdGUgcXVpdGUgYSBtb25zdHJvdXMgbGli cmFyeS4gIA0KPiBTbyBJIHRoaW5rIGl0IGlzIGJldHRlciB0byBrZWVwIGxpYnJ0ZV9uZXQgc21h bGwgYW5kIHRpZHkgYW5kIHB1dCBHUk8gZnVuY3Rpb25hbGl0eSBpbnRvIHRoZSBuZXcgbGlicmFy eS4NCg0KVGhlIHNpemUgb2YgYSBsaWJyYXJ5IGlzIG5vdCBhIGNvbmNlcm4gd2UgaGF2ZSBzb21l IHByZXR0eSBiaWcgb25lcyBhbHJlYWR5Lg0KDQotcnctcnctci0tIDIgcmt3aWxlcyBya3dpbGVz IDEuMk0gTWFyIDIxIDE1OjIyIGxpYnJ0ZV9hY2wuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3 aWxlcyAgMzlLIE1hciAyMSAxNToyMiBsaWJydGVfY2ZnZmlsZS5hDQotcnctcnctci0tIDEgcmt3 aWxlcyBya3dpbGVzIDI5MksgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9jbWRsaW5lLmENCi1ydy1ydy1y LS0gMSBya3dpbGVzIHJrd2lsZXMgMjExSyBNYXIgMjEgMTU6MjMgbGlicnRlX2NyeXB0b2Rldi5h DQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzICA3NUsgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9k aXN0cmlidXRvci5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFyIDIxIDE1 OjIyIGxpYnJ0ZV9lYWwuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAzMjNLIE1hciAy MSAxNToyMyBsaWJydGVfZWZkLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMzc0SyBN YXIgMjIgMDk6MzEgbGlicnRlX2V0aGRldi5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVz IDY3NUsgTWFyIDIxIDE1OjIyIGxpYnJ0ZV9oYXNoLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJr d2lsZXMgMzY2SyBNYXIgMjEgMTU6MjMgbGlicnRlX2lwX2ZyYWcuYQ0KLXJ3LXJ3LXItLSAxIHJr d2lsZXMgcmt3aWxlcyAgMjlLIE1hciAyMSAxNToyMiBsaWJydGVfam9ic3RhdHMuYQ0KLXJ3LXJ3 LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAxNjdLIE1hciAyMSAxNToyMyBsaWJydGVfa25pLmENCi1y dy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgIDE5SyBNYXIgMjEgMTU6MjIgbGlicnRlX2t2YXJn cy5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDMwOUsgTWFyIDIxIDE1OjIyIGxpYnJ0 ZV9scG0uYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAgOTNLIE1hciAyMSAxNToyMiBs aWJydGVfbWJ1Zi5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDI3MEsgTWFyIDIxIDE1 OjIyIGxpYnJ0ZV9tZW1wb29sLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgIDE3SyBN YXIgMjEgMTU6MjIgbGlicnRlX21ldGVyLmENCi1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMg IDcxSyBNYXIgMjEgMTU6MjIgbGlicnRlX25ldC5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dp bGVzIDIxMUsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV9wZHVtcC5hDQotcnctcnctci0tIDEgcmt3aWxl cyBya3dpbGVzIDE0MEsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV9waXBlbGluZS5hDQotcnctcnctci0t IDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFyIDIxIDE1OjIzIGxpYnJ0ZV9wb3J0LmENCi1ydy1y dy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMTIySyBNYXIgMjEgMTU6MjIgbGlicnRlX3Bvd2VyLmEN Ci1ydy1ydy1yLS0gMSBya3dpbGVzIHJrd2lsZXMgMTU0SyBNYXIgMjEgMTU6MjIgbGlicnRlX3Jl b3JkZXIuYQ0KLXJ3LXJ3LXItLSAxIHJrd2lsZXMgcmt3aWxlcyAgNjNLIE1hciAyMSAxNToyMiBs aWJydGVfcmluZy5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDM3N0sgTWFyIDIxIDE1 OjIzIGxpYnJ0ZV9zY2hlZC5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzIDEuNE0gTWFy IDIxIDE1OjIzIGxpYnJ0ZV90YWJsZS5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dpbGVzICA1 M0sgTWFyIDIxIDE1OjIyIGxpYnJ0ZV90aW1lci5hDQotcnctcnctci0tIDEgcmt3aWxlcyBya3dp bGVzIDYwOUsgTWFyIDIxIDE1OjIzIGxpYnJ0ZV92aG9zdC5hDQoNClJlbW92ZWQgdGhlIFBNRCBh cmNoaXZlcyBhbmQgbHMgaXMgbm90IGEgZ3JlYXQgd2F5IHRvIGdldCB0aGUgdHJ1ZSBzaXplIGNv bXBhcmVkIHRvIHVzaW5nIOKAmHNpemXigJkuDQoNCklmIHlvdSBsb29rIGF0IHRoZSBzaXplIHZh bHVlcywgdGhlIOKAmHNpemUgKi5h4oCZIGlzIGludGVyZXN0aW5nIHRvby4NCg0KVGhlIHNpemUg b2YgbGlicnRlX25ldCBpcyA3MUsgKyBpcF9mcmFnIDM2NksgaXMgcHJldHR5IHNtYWxsIGNvbXBh cmVkIHRvIGEgZmV3IG90aGVycy4gSSB3b3VsZCBhc3N1bWUgR1JPIGlzIHByZXR0eSBzbWFsbCB0 b28sIHNvIGFkZGluZyBHUk8gaW50byBsaWJydGVfbmV0IGlzIHZlcnkgcmVhc29uYWJsZS4gV2Ug Y291bGQgbGVhdmUgaXBfZnJhZyBvdXQgYXMgY3VycmVudGx5IGl0IGlzIGEgc3RhbmRhbG9uZSBs aWIsIGJ1dCBjb250aW51ZSB0byBhZGQgR1NPIHRvIGxpYnJ0ZV9uZXQuIEkgd291bGQgbm90IGFz c3VtZSB0aGUgc2l6ZSB3b3VsZCB0aGF0IGxhcmdlIGFuZCBpdCBzZWVtcyBsaWtlIHRoZSBiZXN0 IHBsYWNlIHRvIHB1dCB0aGUgY29kZS4NCg0KSWYgeW91IHN0aWxsIHdhbnQgdG8gY3JlYXRlIGEg Z3NvIGxpYiB0aGVuIEkgZ3Vlc3MgeW91IGNhbiwganVzdCBzZWVtcyB1bnJlYXNvbmFibGUgdG8g bWUuDQoNCj4gDQo+Pj4gDQo+Pj4+IENyZWF0aW5nIG1vcmUgZmxleGliaWxpdHkgaXMgbm90IHRo ZSBiZXN0IGdvYWwgYXMgd2UgcmVhbGx5IHdhbnQgdG8gbWFrZSBHUk8gZWFzeSBhbmQgc2ltcGxl IGZvciB0aGUgZGV2ZWxvcGVyIHRvIHVzZSBmb3IgYW55DQo+PiBkZXZpY2Ugd2l0aG91dCBoYXZp bmcgdG8gY2hhbmdlIGhpcyBhcHBsaWNhdGlvbnMgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGZl YXR1cmUuIFNvbWUgdGltZXMgcHJvdmlkaW5nIG1vcmUgZmxleGliaWxpdHkganVzdCBtZWFucw0K Pj4gbWFraW5nIGl0IG1vcmUgY29tcGxleGVkIGFuZCBtb3JlIEFQSXMgdGhlIGRldmVsb3BlciBu ZWVkcyB0byB1bmRlcnN0YW5kLiBQcm92aWRpbmcgR1JPIGFzIGEgb2ZmbG9hZCBmZWF0dXJlIGlz IHRoZSBiZXR0ZXINCj4+IGRpcmVjdGlvbiBhcyBpdCBtYWtlcyBpdCBzaW1wbGUgZm9yIGFuIGFw cGxpY2F0aW9uIHRvIHVzZS4NCj4+Pj4gDQo+Pj4+IElmIHdlIHByb3ZpZGUgR1JPIGFzIGEgc3Rh bmRhcmQgb2ZmbG9hZCBzaW1pbGFyIHRvIHRoZSBvdGhlciBvZmZsb2FkcyB3ZSBjdXJyZW50bHkg aGF2ZSBtYWtlcyBpdCBlYXN5IGZvciB0aGUgZGV2ZWxvcGVyLiBUaGUgYmVzdA0KPj4gZ29hbCBm b3IgYSBmZWF0dXJlIGlzIHRoZSBiZXN0IHBlcmZvcm1hbmNlIGZvciB0aGUgYXBwbGljYXRpb24g d2l0aG91dCBoYXZpbmcgdGhlIGFwcGxpY2F0aW9uIG1ha2UgZXZlbiBtb3JlIEFQSXMgY2FsbHMg YWxvbmcgd2l0aA0KPj4gc2ltcGxlIGFuZCBlYXN5IHRvIHVzZS4NCj4+PiANCj4+PiBJbiBnZW5l cmFsLCBJJ2QgYWdyZWUgd2l0aCB5b3UsIGlmIG5vIG9uZSBpcyBvYmplY3QgdG8gYWRkIGEgc2hv cnQgcGllY2UNCj4+PiBvZiBjb2RlIGF0IHRoZSBlbmQgb2YgcnRlX2V0aF9yeF9idXJzdDoNCj4+ PiANCj4+PiAgICAgKyAgICAgICBpZiAoZXRoX2dyb19pc19lbmFibGVkKGRldikpDQo+Pj4gICAg ICsgICAgICAgICAgICAgICBuYl9yeCA9IHJ0ZV9uZXRfZ3JvKC4uLik7DQo+Pj4gICAgICsNCj4+ PiAgICAgICAgICAgICByZXR1cm4gbmJfcng7DQo+Pj4gICAgICB9DQo+Pj4gDQo+Pj4gT2JqZWN0 aW9ucz8NCg0KV2h5IGRvIHdlIG5lZWQgdG8gbW9kaWZ5IGV2ZXJ5IGRyaXZlciwgd2h5IG5vdCB1 c2UgdGhlIFJYIGNhbGxiYWNrIGZlYXR1cmUgdGhlbiBubyBkcml2ZXJzIHdlcmUgaGFybWVkIGlu IHRoaXMgcGF0Y2ggOi0pDQoNCj4gDQo+IEknZCBiZXR0ZXIgbm90IHRvIG9wZW4gdGhhdCBkb29y Lg0KPiBJZiB3ZSdsbCBhbGxvdyB0aGF0IGZvciBHUk8gLSB3ZSdsbCBoYXZlIHRvIGFsbG93IHRo YXQgZm9yIGV2ZXJ5IG90aGVyIHN0dWZmOg0KPiAtIGlwIHJlYXNzZW1ibHkNCj4gLSBsMy9sNCBj a3N1bSBjYWxjdWxhdGlvbiBpZiB1bmRlcmx5aW5nIEhXIGRvZXNuJ3Qgc3VwcG9ydCBpdA0KPiAt IFNXIHB0eXBlIHJlY29nbml0aW9uDQo+IC0gZXRjLg0KPiANCj4gQWRkaW5nIGFsbCB0aGVzZSB0 aGluZ3MgaW50byByeF9idXJzdCgpIHdvdWxkIG1vc3QgbGlrZWx5IHNsb3cgdGhpbmdzIGRvd24N Cj4gKHJlbWVtYmVyIGl0IGlzIGEgZGF0YS1wYXRoKSBhbmQgcHJldHR5IHNvb24gd291bGQgYnJp bmcgcnhfYnVyc3QoKSBpbnRvDQo+IG1lc3N5IG1vbnN0ZXIgdGhhdCB3b3VsZCBiZSBoYXJkIHRv IG1haW50YWluIGFuZCBkZWJ1Zy4gICAgDQo+IA0KPiBNeSBwcmVmZXJlbmNlIHdvdWxkIGJlIHRv IGtlZXAgcnRlX2V0aGRldiBkYXRhLXBhdGggYXMgc21hbGwgYW5kIHRpZHkgYXMgcG9zc2libGUu DQo+IElmIGluIGZ1dHVyZSB3ZSdkIHJlYWxseSBsaWtlIHRvIGludHJvZHVjZSBhbGwgdGhlc2Ug U1cgdGhpbmdzIGludG8gZGV2IGxheWVyIC0NCj4gbXkgcHJlZmVyZW5jZSB3b3VsZCBiZSB0byBj cmVhdGUgc29tZSBzb3J0IG9mIG5ldyBhYnN0cmFjdGlvbiBvbiB0b3Agb2YgY3VycmVudCBldGhk ZXY6DQo+IHJ0ZV9ldGhfc21hcnRkZXYgb3Igc28uDQo+IFNvIGl0IHdvdWxkIGJlOg0KPiBydGVf ZXRoX3NtYXJ0ZGV2X3J4X2J1cnN0KC4uLi4pDQo+IHsNCj4gICBuYl9yeCA9ICBydGVfZXRoX3J4 X2J1cnN0KC4uLik7DQo+ICAgLyogYXBwbHkgR1JPLCByZWFzc2VtYmx5LCBldGMuICovDQo+ICAu Li4NCj4gfSANCg0KQWRkaW5nIGEgbmV3IEFQSSBpcyBzdGlsbCBub3QgcmVxdWlyZWQsIGFzIHRo ZSBSWCBjYWxsYmFjayBjb2RlIGlzIGFscmVhZHkgaW4gcGxhY2UgZm9yIHRoZXNlIHR5cGVzIG9m IHBvc3QgcHJvY2Vzc2luZyBvZiBtYnVmcy4NCg0KPiANCj4gU29tZXRoaW5nIHNpbWlsYXIgd2l0 aCB3aGF0IDZXaW5kIHRyeWluZyB0byBpbnRyb2R1Y2Ugd2l0aCB0aGVpciBmYWlsc2FmZSBkZXYg Y29uY2VwdC4NCg0KVGhlIDZXaW5kIGlzIGEgZGlmZmVyZW50IHN0b3J5IGhlcmUgYW5kIG5vdCBh IHBvc3QgcHJvY2Vzc2luZyBvZiBSWCBtYnVmcy4NCg0KPiANCj4+PiANCj4+PiBCdXQgb25lIHdh eSBvciBhbm90aGVyLCB3ZSBuZWVkIHB1dCB0aGUgZ3JvIGNvZGUgYXQgc29tZXdoZXJlIGFuZCB3 ZQ0KPj4+IG5lZWQgaW50cm9kdWNlIGEgZ2VuZXJpYyBBUEkgZm9yIHRoYXQuIEl0IGNvdWxkIGJl IGxpYnJ0ZV9uZXQgYXMgeW91DQo+Pj4gc3VnZ2VzdGVkLiBTbyB0aGUgZ29vZCB0aGluZyBpcyB0 aGF0IHdlIGFsbCBhdCBsZWFzdCBjb21lIGFuIGFncmVlbWVudA0KPj4+IHRoYXQgaXQgc2hvdWxk IGJlIGltcGxlbWVudGVkIGluIGxpYiwgcmlnaHQ/IFRoZSBvbmx5IGNvbnRyb3ZlcnN5IGlzDQo+ Pj4gc2hvdWxkIHdlIGV4cG9ydCBpdCB0byBhcHBsaWNhdGlvbiBhbmQgbGV0IHRoZW0gdG8gaW52 b2tlIGl0LCBvciBoaWRlDQo+Pj4gaXQgaW5zaWRlIHJ0ZV9ldGhfcnhfYnVyc3QuDQo+Pj4gDQo+ Pj4gVGhvdWdoIGl0IG1heSB0YWtlIHNvbWUgdGltZSBmb3IgYWxsIG9mIHVzIHRvIGNvbWUgYW4g YWdyZWVtZW50IG9uIHRoYXQsDQo+Pj4gYnV0IHRoZSBnb29kIHRoaW5nIGlzIHRoYXQgaXQgd291 bGQgYmUgYSB2ZXJ5IHRyaXZpYWwgY2hhbmdlIG9uY2UgaXQncw0KPj4+IGRvbmUuIEFncmVlPw0K Pj4gDQo+PiBBZ3JlZS4NCj4+IA0KPj4+IA0KPj4+IFRodXMgSSdkIHN1Z2dlc3QgSmlheXUgdG8g Zm9jdXMgb24gdGhlIHRoZSBHUk8gY29kZSBkZXZlbG9wZW1lbnQsIHN1Y2gNCj4+PiBhcyBtYWtp bmcgaXQgZ2VuZXJpYyBlbm91Z2ggYW5kIGFkZGluZyBvdGhlciBwcm90b2NvbHMgc3VwcG9ydC4g QW5kIEkNCj4+PiB3b3VsZCBsaWtlIHRvIGFzayB5b3UgZ3V5cyB0byBoZWxwIHJldmlldyB0aGVt LiBNYWtlcyBzZW5zZSB0byBhbGw/DQo+Pj4gDQo+PiANCj4+IEFncmVlIGFnYWluLiBObyBtYXR0 ZXIgd2hlcmUgdG8gcHV0IEdSTyBjb2RlLCB0aGUgYXBpcyBzaG91bGQgYmUgZ2VuZXJpYw0KPj4g YW5kIGV4dGVuc2libGUuIEFuZCBtb3JlIHByb3RvY29scyBzaG91bGQgYmUgc3VwcG9ydGVkLg0K PiANCj4gWWVwLCB0aGF0J3Mgd2hhdCBteSB0YWtlIGZyb20gdGhlIGJlZ2lubmluZzoNCj4gTGV0 J3MgZGV2ZWxvcCBhIGxpYnJ0ZV9ncm8gZmlyc3QgYW5kIG1ha2UgaXQgc3VjY2Vzc2Z1bCwgdGhl biB3ZSBjYW4gdGhpbmsgc2hvdWxkDQo+IHdlIChhbmQgaG93KSBwdXQgaW50byBldGhkZXYgbGF5 ZXIuDQoNCkxldCBub3QgY3JlYXRlIGEgZ3JvIGxpYnJhcnkgYW5kIHB1dCB0aGUgY29kZSBpbnRv IGxpYnJ0ZV9uZXQgYXMgc2l6ZSBpcyBub3QgYSBjb25jZXJuIHlldCBhbmQgaXQgaXMgdGhlIGJl c3QgcGxhY2UgdG8gcHV0IHRoZSBjb2RlLiBBcyBmb3IgaXBfZnJhZyBzb21lb25lIGNhbiBtb3Zl IGl0IGludG8gbGlicnRlX25ldCBpZiBzb21lb25lIHdyaXRlcyB0aGUgcGF0Y2guDQoNCj4gDQo+ IEtvbnN0YW50aW4NCj4gDQo+PiANCj4+IFRoYW5rcywNCj4+IEppYXl1DQo+PiANCj4+PiBUaGFu a3MuDQo+Pj4gDQo+Pj4gCS0teWxpdQ0KPj4+IA0KPj4+IA0KPj4+Pj4+IEkgZGlkbid0ICBoYXZl IGEgY2xvc2VyIGxvb2sgeWV0LCBidXQgSSB0aGluayB0aGF0IGNhdWdodCBteSBhdHRlbnRpb246 DQo+Pj4+Pj4gQVBJIGZpciB0aGUgbGliIHNlZW1zIHRvbyBJUHY0L1RDUCBvcmllbnRlZCAtDQo+ Pj4+Pj4gdGhvdWdoIEkgdW5kZXJzdGFuZCB0aGF0IHRoZSBtb3N0IGNvbW1vbiBjYXNlIGFuZCBz aG91bGQgYmUgaW1wbGVtZW50ZWQgZmlyc3QuDQo+Pj4+Pj4gSSB3b25kZXIgY2FuIHdlIGhhdmUg aXQgYSBiaXQgbW9yZSBnZW5lcmljIGFuZCBleHRlbmRhYmxlLCBzbyB1c2VyIGNhbiBzcGVjaWZ5 IHdoYXQgY29tYmluYXRpb24gb2YgcHJvdG9jb2xzDQo+Pj4+Pj4gaGUgaXMgaW50ZXJlc3RlZCBp biAobGV0IHNheTogaXB2NC90Y3AsICBpcHY2L3RjcCwgZXRjLikuDQo+Pj4+Pj4gRXZlbiBpZiBy aWdodCBub3cgd2UnbGwgaGF2ZSBpdCBpbXBsZW1lbnRlZCBvbmx5IGZvciBpcHY0L3RjcC4NCj4+ Pj4+PiBUaGVuIGludGVybmFsbHkgd2UgY2FuIGhhdmUgc29tZSBjaGVjayBpcyB0aGF0IHN1cHBv cnRlZCBvciBub3QgYW5kIGlmIHllcyBzZXR1cCB0aGluZ3MgYWNjb3JkaW5nbHkuDQo+Pj4+PiAN Cj4+Pj4+IEluZGVlZCwgY3VycmVudCBhcGlzIGFyZSB0b28gc3BlY2lmaWMuIEl0J3Mgbm90IHZl cnkgZnJpZW5kbHkgdG8gYXBwbGljYXRpb25zLg0KPj4+Pj4gTWF5YmUgd2UgY2FuIHVzZSBtYWNy byB0byBkZWZpbmUgdGhlIGNvbWJpbmF0aW9uIG9mIHByb3RvY29scywgbGlrZSBHUk9fVENQX0lQ VjQNCj4+Pj4+IGFuZCBHUk9fVURQX0lQVjY7IGFuZCBwcm92aWRlIGEgZ2VuZXJpYyBzZXR1cCBm dW5jdGlvbiBhbmQgcmVhc3NlbWJseSBmdW5jdGlvbi4NCj4+Pj4+IEJvdGggb2YgdGhlbSBwZXJm b3JtIGRpZmZlcmVudCBvcGVyYXRpb25zIGFjY29yZGluZyB0byB0aGUgbWFjcm8gdmFsdWUgaW5w dXR0ZWQNCj4+Pj4+IGJ5IHRoZSBhcHBsaWNhdGlvbi4NCj4+Pj4+IA0KPj4+Pj4+IEJUVywgdGhh dCdzIGZvciAxNy4wOCwgcmlnaHQ/DQo+Pj4+PiANCj4+Pj4+IFllcywgaXQncyBmb3IgMTcuMDgu DQo+Pj4+PiANCj4+Pj4+IEppYXl1DQo+Pj4+Pj4gDQo+Pj4+Pj4gS29uc3RhbnRpbg0KPj4+Pj4+ IA0KPj4+Pj4+IA0KPj4+PiANCj4+Pj4gUmVnYXJkcywNCj4+Pj4gS2VpdGgNCg0KUmVnYXJkcywN CktlaXRoDQoNCg==