From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id B5B764CA2 for ; Wed, 12 Sep 2018 20:09:53 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Sep 2018 11:09:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,365,1531810800"; d="scan'208";a="69491072" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by fmsmga007.fm.intel.com with ESMTP; 12 Sep 2018 11:09:51 -0700 Received: from irsmsx105.ger.corp.intel.com ([169.254.7.54]) by IRSMSX106.ger.corp.intel.com ([169.254.8.41]) with mapi id 14.03.0319.002; Wed, 12 Sep 2018 19:09:50 +0100 From: "Ananyev, Konstantin" To: "Joseph, Anoob" , "dev@dpdk.org" CC: "Awal, Mohammad Abdul" , "Doherty, Declan" , "Jerin Jacob (jerin.jacob@caviumnetworks.com)" , Narayana Prasad Thread-Topic: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing Thread-Index: AQHUO8sQ1vNhPIIy2kCq+ieD7nPPdqTefpOAgABfO7CAAuY7AIALGZsggAAAuDA= Date: Wed, 12 Sep 2018 18:09:49 +0000 Message-ID: <2601191342CEEE43887BDE71AB977258EA954E9D@irsmsx105.ger.corp.intel.com> References: <1535129598-27301-1-git-send-email-konstantin.ananyev@intel.com> <358d1b6c-26f2-b125-07a4-cfb1c0e2a57b@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA95089D@irsmsx105.ger.corp.intel.com> <475cf471-b46a-671a-5485-0042c652430c@caviumnetworks.com> <2601191342CEEE43887BDE71AB977258EA954BAD@irsmsx105.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB977258EA954BAD@irsmsx105.ger.corp.intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYmNlZjM4ZWMtNThjNS00NTg1LTlhNDItY2RkZGUzMTk0MGY2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiZHUwMit4YVROXC9TOTF4XC9wamM0T1ExanBacGxWenduSjJKYURWcVROUHJiRGpZWlF1RlJNMGR0YTV3RlwvOUthRiJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [163.33.239.182] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [RFC] ipsec: new library for IPsec data-path processing 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: Wed, 12 Sep 2018 18:09:54 -0000 SGkgQW5vb2IsDQoNCj4gDQo+IEhpIEtvbnN0YW50aW4sDQo+IFBsZWFzZSBzZWUgaW5saW5lLg0K PiANCj4gDQo+IFRoaXMgUkZDIGludHJvZHVjZXMgYSBuZXcgbGlicmFyeSB3aXRoaW4gRFBESzog bGlicnRlX2lwc2VjLg0KPiBUaGUgYWltIGlzIHRvIHByb3ZpZGUgRFBESyBuYXRpdmUgaGlnaCBw ZXJmb3JtYW5jZSBsaWJyYXJ5IGZvciBJUHNlYw0KPiBkYXRhLXBhdGggcHJvY2Vzc2luZy4NCj4g VGhlIGxpYnJhcnkgaXMgc3VwcG9zZWQgdG8gdXRpbGl6ZSBleGlzdGluZyBEUERLIGNyeXB0by1k ZXYgYW5kDQo+IHNlY3VyaXR5IEFQSSB0byBwcm92aWRlIGFwcGxpY2F0aW9uIHdpdGggdHJhbnNw YXJlbnQgSVBzZWMgcHJvY2Vzc2luZyBBUEkuDQo+IFRoZSBsaWJyYXJ5IGlzIGNvbmNlbnRyYXRl ZCBvbiBkYXRhLXBhdGggcHJvdG9jb2xzIHByb2Nlc3NpbmcgKEVTUCBhbmQgQUgpLA0KPiBJS0Ug cHJvdG9jb2wocykgaW1wbGVtZW50YXRpb24gaXMgb3V0IG9mIHNjb3BlIGZvciB0aGF0IGxpYnJh cnkuDQo+IFRob3VnaCBob29rL2NhbGxiYWNrIG1lY2hhbmlzbXMgd2lsbCBiZSBkZWZpbmVkIHRv IGFsbG93IGludGVncmF0ZSBpdA0KPiB3aXRoIGV4aXN0aW5nIElLRSBpbXBsZW1lbnRhdGlvbnMu DQo+IER1ZSB0byBxdWl0ZSBjb21wbGV4IG5hdHVyZSBvZiBJUHNlYyBwcm90b2NvbCBzdWl0ZSBh bmQgdmFyaWV0eSBvZiB1c2VyDQo+IHJlcXVpcmVtZW50cyBhbmQgdXNhZ2Ugc2NlbmFyaW9zIGEg ZmV3IEFQSSBsZXZlbHMgd2lsbCBiZSBwcm92aWRlZDoNCj4gMSkgU2VjdXJpdHkgQXNzb2NpYXRp b24gKFNBLWxldmVsKSBBUEkNCj4gICAgICBPcGVyYXRlcyBhdCBTQSBsZXZlbCwgcHJvdmlkZXMg ZnVuY3Rpb25zIHRvOg0KPiAgICAgIC0gaW5pdGlhbGl6ZS90ZWFyZG93biBTQSBvYmplY3QNCj4g ICAgICAtIHByb2Nlc3MgaW5ib3VuZC9vdXRib3VuZCBFU1AvQUggcGFja2V0cyBhc3NvY2lhdGVk IHdpdGggdGhlIGdpdmVuIFNBDQo+ICAgICAgICAoZGVjcnlwdC9lbmNyeXB0LCBhdXRoZW50aWNh dGUsIGNoZWNrIGludGVncml0eSwNCj4gICAgICAgICBhZGQvcmVtb3ZlIEVTUC9BSCByZWxhdGVk IGhlYWRlcnMgYW5kIGRhdGEsIGV0Yy4pLg0KPiAyKSBTZWN1cml0eSBBc3NvY2lhdGlvbiBEYXRh YmFzZSAoU0FEKSBBUEkNCj4gICAgICBBUEkgdG8gY3JlYXRlL21hbmFnZS9kZXN0cm95IElQc2Vj IFNBRC4NCj4gICAgICBXaGlsZSBEUERLIElQc2VjIGxpYnJhcnkgcGxhbnMgdG8gaGF2ZSBpdHMg b3duIGltcGxlbWVudGF0aW9uLA0KPiAgICAgIHRoZSBpbnRlbnRpb24gaXMgdG8ga2VlcCBpdCBh cyBpbmRlcGVuZGVudCBmcm9tIHRoZSBvdGhlciBwYXJ0cw0KPiAgICAgIG9mIElQc2VjIGxpYnJh cnkgYXMgcG9zc2libGUuDQo+ICAgICAgVGhhdCBpcyBzdXBwb3NlZCB0byBnaXZlIHVzZXJzIHRo ZSBhYmlsaXR5IHRvIHByb3ZpZGUgdGhlaXIgb3duDQo+ICAgICAgaW1wbGVtZW50YXRpb24gb2Yg dGhlIFNBRCBjb21wYXRpYmxlIHdpdGggdGhlIG90aGVyIHBhcnRzIG9mIHRoZQ0KPiAgICAgIElQ c2VjIGxpYnJhcnkuDQo+IDMpIElQc2VjIENvbnRleHQgKENUWCkgQVBJDQo+ICAgICAgVGhpcyBp cyBzdXBwb3NlZCB0byBiZSBhIGhpZ2gtbGV2ZWwgQVBJLCB3aGVyZSBlYWNoIElQc2VjIENUWCBp cyBhbg0KPiAgICAgIGFic3RyYWN0aW9uIG9mICdpbmRlcGVuZGVudCBjb3B5IG9mIHRoZSBJUHNl YyBzdGFjaycuDQo+ICAgICAgQ1RYIG93bnMgc2V0IG9mIFNBcywgU0FEcyBhbmQgYXNzaWduZWQg dG8gaXQgY3J5cHRvLWRldiBxdWV1ZXMsIGV0Yy4NCj4gICAgICBhbmQgcHJvdmlkZXM6DQo+ICAg ICAgLSBkZS1tdWx0aXBsZXhpbmcgc3RyZWFtIG9mIGluYm91bmQgcGFja2V0cyB0byBwYXJ0aWN1 bGFyIFNBcyBhbmQNCj4gICAgICAgIGZ1cnRoZXIgSVBzZWMgcmVsYXRlZCBwcm9jZXNzaW5nLg0K PiAgICAgIC0gSVBzZWMgcmVsYXRlZCBwcm9jZXNzaW5nIGZvciB0aGUgb3V0Ym91bmQgcGFja2V0 cy4NCj4gICAgICAtIFNBIGFkZC9kZWxldGUvdXBkYXRlIGZ1bmN0aW9uYWxpdHkNCj4gW0Fub29i XTogU2VjdXJpdHkgUG9saWN5IGlzIGFuIGltcG9ydGFudCBhc3BlY3Qgb2YgSVBzZWMuIEFuIElQ c2VjDQo+IGxpYnJhcnkgd2l0aG91dCBTZWN1cml0eSBQb2xpY3kgQVBJIHdvdWxkIGJlIGluY29t cGxldGUuIEZvciBpbmxpbmUNCj4gcHJvdG9jb2wgb2ZmbG9hZCwgdGhlIGZpbmFsIFNQLVNBIGNo ZWNrKHNlbGVjdG9yIGNoZWNrKSBpcyB0aGUgb25seQ0KPiBJUHNlYyBwYXJ0IGJlaW5nIGRvbmUg YnkgaXBzZWMtc2VjZ3cgbm93LiBXb3VsZCBtYWtlIHNlbnNlIHRvIGFkZCB0aGF0DQo+IGFsc28g aW4gdGhlIGxpYnJhcnkuDQo+IA0KPiBZb3UgbWVhbiBoZXJlLCB0aGF0IHdlIG5lZWQgc29tZSBz b3J0IG9mIFNQRCBpbXBsZW1lbnRhdGlvbiwgY29ycmVjdD8NCj4gW0Fub29iXSBZZXMuDQoNCk9r LCBJIHNlZS4NCk91ciB0aG91Z2h0IHdhcyB0aGF0IGp1c3Qgc29tZXRoaW5nIGJhc2VkIG9uIGxp YnJ0ZV9hY2wgd291bGQgYmUgZW5vdWdoIGhlcmUuLi4NCkJ1dCBpZiB5b3UgdGhpbmsgdGhhdCBh IHNwZWNpYWwgZGVmaW5lZCBTUEQgQVBJIChhbmQgaW1wbGVtZW50YXRpb24pIGlzIG5lZWRlZCAt DQp3ZSBjYW4gcHJvYmFibHkgZGlzY3VzcyBpdCBhbG9uZyB3aXRoIFNBRCBBUEkgKCMyIGFib3Zl KS4NClRob3VnaCBpZiB5b3UnZCBsaWtlIHRvIHN0YXJ0IHRvIHdvcmsgb24gUkZDIGZvciBpdCBy aWdodC1hd2F5IC0gcGxlYXNlIGZlZWwgZnJlZSB0byBkbyBzbyA6KQ0KDQo+IA0KPiANCj4gDQo+ IEN1cnJlbnQgUkZDIGNvbmNlbnRyYXRlcyBvbiBTQS1sZXZlbCBBUEkgb25seSAoMSksDQo+IGRl dGFpbGVkIGRpc2N1c3Npb24gZm9yIDIpIGFuZCAzKSB3aWxsIGJlIHN1YmplY3RzIGZvciBzZXBh cmF0ZSBSRkMocykuDQo+IA0KPiBTQSAobG93KSBsZXZlbCBBUEkNCj4gPT09PT09PT09PT09PT09 PT09DQo+IA0KPiBBUEkgZGVzY3JpYmVkIGJlbG93IG9wZXJhdGVzIG9uIFNBIGxldmVsLg0KPiBJ dCBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IHRoYXQgYWxsb3dzIHVzZXIgZm9yIGdpdmVuIFNBIHRv IHByb2Nlc3MNCj4gaW5ib3VuZCBhbmQgb3V0Ym91bmQgSVBzZWMgcGFja2V0cy4NCj4gVG8gYmUg bW9yZSBzcGVjaWZpYzoNCj4gLSBmb3IgaW5ib3VuZCBFU1AvQUggcGFja2V0cyBwZXJmb3JtIGRl Y3J5cHRpb24sIGF1dGhlbnRpY2F0aW9uLA0KPiAgICBpbnRlZ3JpdHkgY2hlY2tpbmcsIHJlbW92 ZSBFU1AvQUggcmVsYXRlZCBoZWFkZXJzDQo+IFtBbm9vYl0gQW50aS1yZXBsYXkgY2hlY2sgd291 bGQgYWxzbyBiZSByZXF1aXJlZC4NCj4gDQo+IFllcCwgYW50aS1yZXBsYXkgYW5kIEVTTiBzdXBw b3J0IGlzIGltcGxpZWQgYXMgcGFydCBvZiAiaW50ZWdyaXR5IGNoZWNraW5nIi4NCj4gUHJvYmFi bHkgSSBoYXZlIHRvIGJlIG1vcmUgc3BlY2lmaWMgaGVyZS4NCj4gW0Fub29iXSBUaGlzIGlzIGZp bmUuDQo+IA0KPiANCj4gDQo+IC0gZm9yIG91dGJvdW5kIHBhY2tldHMgcGVyZm9ybSBwYXlsb2Fk IGVuY3J5cHRpb24sIGF0dGFjaCBJQ1YsDQo+ICAgIHVwZGF0ZS9hZGQgSVAgaGVhZGVycywgYWRk IEVTUC9BSCBoZWFkZXJzL3RyYWlsZXJzLA0KPiAgICBzZXR1cCByZWxhdGVkIG1idWYgZmVsaWRz IChvbF9mbGFncywgdHhfb2ZmbG9hZHMsIGV0Yy4pLg0KPiBbQW5vb2JdIERvIHdlIGhhdmUgYW55 IHBsYW5zIHRvIGhhbmRsZSBFU04gZXhwaXJ5PyBTb21lIG1lYW5zIHRvDQo+IGluaXRpYXRlIGFu IElLRSByZW5lZ290aWF0aW9uPyBJJ20gYXNzdW1pbmcgYXBwbGljYXRpb24gd29uJ3QgYmUgYXdh cmUNCj4gb2YgdGhlIHNlcXVlbmNlIG51bWJlcnMsIGluIHRoaXMgY2FzZS4NCj4gW0Fub29iXSBX aGF0IGlzIHlvdXIgcGxhbiB3aXRoIGV2ZW50cyBsaWtlIEVTTiBleHBpcnk/IElQc2VjIHNwZWMg dGFsa3MgYWJvdXQgYnl0ZSBhbmQgdGltZSBleHBpcnkgYXMgd2VsbC4NCg0KQXQgY3VycmVudCBt b21lbnQsIGZvciBTQSBsZXZlbDogcnRlX2lwc2VjX2NyeXB0b19wcmVwYXJlKCkvcnRlX2lwc2Vj X2lubGluZV9wcm9jZXNzKCkgd2lsbCBzZXQgcnRlX2Vycm5vDQp0byBzcGVjaWFsIHZhbHVlIChF T1ZFUkZMT1cpIHRvIHNpZ25hbCB1cHBlciBsYXllciB0aGF0IGxpbWl0IGlzIHJlYWNoZWQuDQpV cHBlciBsYXllciBjYW4gZGVjaWRlIHRvIHN0YXJ0IHJlLW5lZ290aWF0aW9uLCBvciBqdXN0IGRl c3Ryb3kgYW4gU0EuDQogDQpGdXR1cmUgcGxhbnMgZm9yIElQc2VjIENvbnRleHQgKENUWCkgQVBJ ICgjMyBhYm92ZSk6DQpJbnRyb2R1Y2UgYSBzcGVjaWFsIGZ1bmN0aW9uLCBzb21ldGhpbmcgbGlr ZToNCnJ0ZV9pcHNlY19nZXRfZXhwaXJlZChydGVfaXBzZWNfY3R4ICpjdHgsIHJ0ZV9pcHNlY19z YSAqZXhwaXJlZF9zYVtdLCB1aW50MzJfdCBudW0pOw0KSXQgd291bGQgcmV0dXJuIHVwLXRvICpu dW0qIG9mIFNBcyBmb3IgZ2l2ZW4gaXBzZWMgY29udGV4dCwgdGhhdCBhcmUgZXhwaXJlZC9saW1p dCByZWFjaGVkLg0KVGhlbiB1cHBlciBsYXllciBhZ2FpbiBtaWdodCBkZWNpZGUgZm9yIGVhY2gg U0Egc2hvdWxkIHJlbmVnb3RpYXRpb24gYmUgc3RhcnRlZCwNCm9yIGp1c3Qgd2lwZSBnaXZlbiBT QS4NCkl0IHdvdWxkIGJlIHVwcGVyIGxheWVyIHJlc3BvbnNpYmlsaXR5IHRvIGNhbGwgdGhpcyBm dW5jdGlvbiBwZXJpb2RpY2FsbHkuDQogDQo+IA0KPiANCj4gLSBpbml0aWFsaXplL3VuLWluaXRp YWxpemUgZ2l2ZW4gU0EgYmFzZWQgb24gdXNlciBwcm92aWRlZCBwYXJhbWV0ZXJzLg0KPiANCj4g UHJvY2Vzc2VkIGluYm91bmQvb3V0Ym91bmQgcGFja2V0cyBjb3VsZCBiZSBncm91cGVkIGJ5IHVz ZXIgcHJvdmlkZWQNCj4gZmxvdyBpZCAob3BhcXVlIDY0LWJpdCBudW1iZXIgYXNzb2NpYXRlZCBi eSB1c2VyIHdpdGggZ2l2ZW4gU0EpLg0KPiANCj4gU0EtbGV2ZWwgQVBJIGlzIGJhc2VkIG9uIHRv cCBvZiBjcnlwdG8tZGV2L3NlY3VyaXR5IEFQSSBhbmQgcmVsaWVzIG9uIHRoZW0NCj4gdG8gcGVy Zm9ybSBhY3R1YWwgY2lwaGVyIGFuZCBpbnRlZ3JpdHkgY2hlY2tpbmcuDQo+IER1ZSB0byB0aGUg bmF0dXJlIG9mIGNyeXB0by1kZXYgQVBJIChlbnF1ZXVlL2RlcXVlIG1vZGVsKSB3ZSB1c2UNCj4g YXN5bmNocm9ub3VzIEFQSSBmb3IgSVBzZWMgcGFja2V0cyBkZXN0aW5lZCB0byBiZSBwcm9jZXNz ZWQNCj4gYnkgY3J5cHRvLWRldmljZToNCj4gcnRlX2lwc2VjX2NyeXB0b19wcmVwYXJlKCktPnJ0 ZV9jcnlwdG9kZXZfZW5xdWV1ZV9idXJzdCgpLT4NCj4gcnRlX2NyeXB0b2Rldl9kZXF1ZXVlX2J1 cnN0KCktPnJ0ZV9pcHNlY19jcnlwdG9fcHJvY2VzcygpLg0KPiBUaG91Z2ggZm9yIHBhY2tldHMg ZGVzdGluZWQgZm9yIGlubGluZSBwcm9jZXNzaW5nIG5vIGV4dHJhIG92ZXJoZWFkDQo+IGlzIHJl cXVpcmVkIGFuZCBzaW1wbGUgYW5kIHN5bmNocm9ub3VzIEFQSTogcnRlX2lwc2VjX2lubGluZV9w cm9jZXNzKCkNCj4gaXMgaW50cm9kdWNlZCBmb3IgdGhhdCBjYXNlLg0KPiBbQW5vb2JdIFRoZSBB UEkgc2hvdWxkIGluY2x1ZGUgZXZlbnQtZGVsaXZlcnkgYXMgYSBjcnlwdG8tb3AgY29tcGxldGlv bg0KPiBtZWNoYW5pc20gYXMgd2VsbC4gVGhlIGFwcGxpY2F0aW9uIGNvdWxkIGNvbmZpZ3VyZSB0 aGUgZXZlbnQgY3J5cHRvDQo+IGFkYXB0ZXIgYW5kIHRoZW4gZW5xdWV1ZSBhbmQgZGVxdWV1ZSB0 byBjcnlwdG8gZGV2aWNlIHVzaW5nIGV2ZW50cyAodmlhDQo+IGV2ZW50IGRldikuDQo+IA0KPiBO b3Qgc3VyZSB3aGF0IHBhcnRpY3VsYXIgZXh0cmEgQVBJIHlvdSB0aGluayBpcyByZXF1aXJlZCBo ZXJlPw0KPiBBcyBJIHVuZGVyc3RhbmQgaW4gYm90aCBjYXNlcyAod2l0aCBvciB3aXRob3V0IGV2 ZW50IGNyeXB0by1hZGFwdGVyKSB3ZSBzdGlsbCBoYXZlIHRvOg0KPiAgMSkgZmlsbCBjcnlwdG8t b3AgcHJvcGVybHkNCj4gIDIpIGVucXVldWUgaXQgdG8gY3J5cHRvLWRldiAodmlhIGV2ZW50ZGV2 IG9yIGRpcmVjdGx5KQ0KPiAzKSAgcmVjZWl2ZSBwcm9jZXNzZWQgYnkgY3J5cHRvLWRldiBjcnlw dG8tb3AgKGVpdGhlciB2aWEgZXZlbnRkZXYgb3IgZGlyZWN0bHkpDQo+IDQpIGNoZWNrIGNyeXB0 by1vcCBzdGF0dXMsIGRvIGZ1cnRoZXIgcG9zdC1wcm9jZXNzaW5nIGlmIGFueQ0KPiANCj4gU28g IzEgYW5kICM0IChTQS1sZXZlbCBBUEkgcmVzcG5pYmlsaXR5KSByZW1haW4gdGhlIHNhbWUgZm9y IGJvdGggY2FzZXMuDQo+IFtBbm9vYl0gcnRlX2lwc2VjX2lubGluZV9wcm9jZXNzIHdvcmtzIG9u IHBhY2tldHMgbm90IGV2ZW50cy4gV2UgbWlnaHQgbmVlZCBhIHNpbWlsYXIgQVBJIHdoaWNoIHBy b2Nlc3NlcyBldmVudHMuDQoNCk9rLCBJIHN0aWxsIGRvbid0IGdldCB5b3UgaGVyZS4NCkNvdWxk IHlvdSBzcGVjaWZ5IHdoYXQgZXhhY3RseSBmdW5jdGlvbiB5b3UnZCBsaWtlIHRvIGFkZCB0byB0 aGUgQVBJIGhlcmUgd2l0aCBwYXJhbWV0ZXIgbGlzdA0KYW5kIGJyaWVmIGJlaGF2aW9yIGRlc2Ny aXB0aW9uPyANCg0KPiANCj4gVGhlIGZvbGxvd2luZyBmdW5jdGlvbmFsaXR5Og0KPiAgICAtIG1h dGNoIGluYm91bmQvb3V0Ym91bmQgcGFja2V0cyB0byBwYXJ0aWN1bGFyIFNBDQo+ICAgIC0gbWFu YWdlIGNyeXB0by9zZWN1cml0eSBkZXZpY2VzDQo+ICAgIC0gcHJvdmlkZSBTQUQvU1BEIHJlbGF0 ZWQgZnVuY3Rpb25hbGl0eQ0KPiAgICAtIGRldGVybWluZSB3aGF0IGNyeXB0by9zZWN1cml0eSBk ZXZpY2UgaGFzIHRvIGJlIHVzZWQNCj4gICAgICBmb3IgZ2l2ZW4gcGFja2V0KHMpDQo+IGlzIG91 dCBvZiBzY29wZSBmb3IgU0EtbGV2ZWwgQVBJLg0KPiANCj4gQmVsb3cgaXMgdGhlIGJyaWVmIChh bmQgc2ltcGxpZmllZCkgb3ZlcnZpZXcgb2YgZXhwZWN0ZWQgU0EtbGV2ZWwNCj4gQVBJIHVzYWdl Lg0KPiANCj4gLyogYWxsb2NhdGUgYW5kIGluaXRpYWxpemUgU0EgKi8NCj4gc2l6ZV90IHN6ID0g cnRlX2lwc2VjX3NhX3NpemUoKTsNCj4gc3RydWN0IHJ0ZV9pcHNlY19zYSAqc2EgPSBydGVfbWFs bG9jKHN6KTsNCj4gc3RydWN0IHJ0ZV9pcHNlY19zYV9wcm0gcHJtOw0KPiAvKiBmaWxsIHBybSAq Lw0KPiByYyA9IHJ0ZV9pcHNlY19zYV9pbml0KHNhLCAmcHJtKTsNCj4gaWYgKHJjICE9IDApIHsg LypoYW5kbGUgZXJyb3IgKi99DQo+IC4uLi4uDQo+IA0KPiAvKiBwcm9jZXNzIGluYm91bmQvb3V0 Ym91bmQgSVBzZWMgcGFja2V0cyB0aGF0IGJlbG9uZ3MgdG8gZ2l2ZW4gU0EgKi8NCj4gDQo+IC8q IGlubGluZSBJUHNlYyBwcm9jZXNzaW5nIHdhcyBkb25lIGZvciB0aGVzZSBwYWNrZXRzICovDQo+ IGlmICh1c2VfaW5saW5lX2lwc2VjKQ0KPiAgICAgICAgIG4gPSBydGVfaXBzZWNfaW5saW5lX3By b2Nlc3Moc2EsIHBrdHMsIG5iX3BrdHMpOw0KPiAvKiB1c2UgY3J5cHRvLWRldmljZSB0byBwcm9j ZXNzIHRoZSBwYWNrZXRzICovDQo+IGVsc2Ugew0KPiAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19v cCAqY29wW25iX3BrdHNdOw0KPiAgICAgICBzdHJ1Y3QgcnRlX2lwc2VjX2dyb3VwIGdycFtuYl9w a3RzXTsNCj4gDQo+ICAgICAgICAuLi4uDQo+ICAgICAgIC8qIHByZXBhcmUgY3J5cHRvIG9wcyAq Lw0KPiAgICAgICBuID0gcnRlX2lwc2VjX2NyeXB0b19wcmVwYXJlKHNhLCBwa3RzLCBjb3BzLCBu Yl9wa3RzKTsNCj4gICAgICAgLyogZW5xdWV1ZSBjcnlwdG8gb3BzIHRvIHJlbGF0ZWQgY3J5cHRv LWRldiAqLw0KPiAgICAgICBuID0gIHJ0ZV9jcnlwdG9kZXZfZW5xdWV1ZV9idXJzdCguLi4sIGNv cHMsIG4pOw0KPiAgICAgICBpZiAobiAhPSBuYl9wa3RzKSB7IC8qaGFuZGxlIGZhaWxlZCBwYWNr ZXRzICovfQ0KPiAgICAgICAvKiBkZXF1ZXVlIGZpbmlzaGVkIGNyeXB0byBvcHMgZnJvbSByZWxh dGVkIGNyeXB0by1kZXYgKi8NCj4gICAgICAgbiA9IHJ0ZV9jcnlwdG9kZXZfZGVxdWV1ZV9idXJz dCguLi4sIGNvcHMsIG5iX3BrdHMpOw0KPiAgICAgICAvKiBmaW5pc2ggSVBzZWMgcHJvY2Vzc2lu ZyBmb3IgYXNzb2NpYXRlZCBwYWNrZXRzICovDQo+ICAgICAgIG4gPSBydGVfaXBzZWNfY3J5cHRv X3Byb2Nlc3MoY29wLCBwa3RzLCBncnAsIG4pOw0KPiBbQW5vb2JdIERvZXMgdGhlIFNBIGJhc2Vk IGdyb3VwaW5nIGFwcGx5IHRvIGJvdGggaW5ib3VuZCBhbmQgb3V0Ym91bmQ/DQo+IA0KPiBZZXMs IHRoZSBwbGFuIGlzIHRvIGhhdmUgaXQgYXZhaWxhYmxlIGZvciBib3RoIGNhc2VzLg0KPiBbQW5v b2JdIE9uIHRoZSBpbmJvdW5kLCBzaG91bGRuJ3QgdGhlIHBhY2tldHMgYmUgZ3JvdXBlZCtvcmRl cmVkIGJhc2VkIG9uIGlubmVyIEwzK2lubmVyIEw0Pw0KDQpJIHRoaW5rIHRoYXQncyB1cCB0byB0 aGUgdXNlciBkZWNpZGUgYmFzZWQgb24gd2hhdCBjcml0ZXJpYSB3YW50cyB0byBncm91cCBpdCBh bmQgZG9lcyBoZSB3YW50cw0KdG8gZG8gYW55IGdyb3VwaW5nIGF0IGFsbC4NClRoYXQncyB3aHkg Zmxvd2lkIGlzIHVzZXItZGVmaW5lZCBhbmQgdG90YWxseSB0cmFuc3BhcmVudCB0byB0aGUgbGli Lg0KDQo+IA0KPiANCj4gDQo+ICAgICAgIC8qIG5vdyB3ZSBoYXZlIDxuPiBncm91cCBvZiBwYWNr ZXRzIGdyb3VwZWQgYnkgU0EgZmxvdyBpZCAgKi8NCj4gICAgICAuLi4uDQo+ICAgfQ0KPiAuLi4N Cj4gDQo+IC8qIHVuaW5pdCBnaXZlbiBTQSAqLw0KPiBydGVfaXBzZWNfc2FfZmluaShzYSk7DQo+ IA0KPiBQbGFubmVkIHNjb3BlIGZvciAxOC4xMToNCj4gPT09PT09PT09PT09PT09PT09PT09PT09 DQo+IA0KPiAtIFNBLWxldmVsIEFQSSBkZWZpbml0aW9uDQo+IC0gRVNQIHR1bm5lbCBtb2RlIHN1 cHBvcnQgKGJvdGggSVB2NC9JUHY2KQ0KPiAtIFN1cHBvcnRlZCBhbGdvcml0aG1zOiBBRVMtQ0JD LCBBRVMtR0NNLCBITUFDLVNIQTEsIE5VTEwuDQo+IC0gVVQNCj4gW0Fub29iXSBXaGF0IGlzIFVU Pw0KPiANCj4gVW5pdC1UZXN0DQo+IA0KPiANCj4gTm90ZTogU3RpbGwgV0lQLCBzbyBub3QgYWxs IHBsYW5uZWQgZm9yIDE4LjExIGZ1bmN0aW9uYWxpdHkgaXMgaW4gcGxhY2UuDQo+IA0KPiBQb3N0 IDE4LjExOg0KPiA9PT09PT09PT09PQ0KPiAtIEVTUCB0cmFuc3BvcnQgbW9kZSBzdXBwb3J0IChi b3RoIElQdjQvSVB2NikNCj4gLSB1cGRhdGUgZXhhbXBsZXMvaXBzZWMtc2VjZ3cgdG8gdXNlIGxp YnJ0ZV9pcHNlYw0KPiAtIFNBRCBhbmQgaGlnaC1sZXZlbCBBUEkgZGVmaW5pdGlvbiBhbmQgaW1w bGVtZW50YXRpb24NCj4gDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBNb2hhbW1hZCBBYmR1bCBBd2Fs IDxtb2hhbW1hZC5hYmR1bC5hd2FsQGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRGVjbGFu IERvaGVydHkgPGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogS29u c3RhbnRpbiBBbmFueWV2IDxrb25zdGFudGluLmFuYW55ZXZAaW50ZWwuY29tPg0KPiAtLS0NCj4g ICBjb25maWcvY29tbW9uX2Jhc2UgICAgICAgICAgICAgICAgICAgICB8ICAgNSArDQo+ICAgbGli L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiAgIGxpYi9saWJy dGVfaXBzZWMvTWFrZWZpbGUgICAgICAgICAgICAgIHwgIDI0ICsNCj4gICBsaWIvbGlicnRlX2lw c2VjL21lc29uLmJ1aWxkICAgICAgICAgICB8ICAxMCArDQo+ICAgbGliL2xpYnJ0ZV9pcHNlYy9w YWQuaCAgICAgICAgICAgICAgICAgfCAgNDUgKysNCj4gICBsaWIvbGlicnRlX2lwc2VjL3J0ZV9p cHNlYy5oICAgICAgICAgICB8IDI0NSArKysrKysrKysNCj4gICBsaWIvbGlicnRlX2lwc2VjL3J0 ZV9pcHNlY192ZXJzaW9uLm1hcCB8ICAxMyArDQo+ICAgbGliL2xpYnJ0ZV9pcHNlYy9zYS5jICAg ICAgICAgICAgICAgICAgfCA5MjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ ICAgbGliL2xpYnJ0ZV9uZXQvcnRlX2VzcC5oICAgICAgICAgICAgICAgfCAgMTAgKy0NCj4gICBs aWIvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArDQo+ICAgbWsvcnRl LmFwcC5tayAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKw0KPiAgIDExIGZpbGVzIGNo YW5nZWQsIDEyNzggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiAgIGNyZWF0ZSBtb2Rl IDEwMDY0NCBsaWIvbGlicnRlX2lwc2VjL01ha2VmaWxlDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGxpYi9saWJydGVfaXBzZWMvbWVzb24uYnVpbGQNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli L2xpYnJ0ZV9pcHNlYy9wYWQuaA0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX2lw c2VjL3J0ZV9pcHNlYy5oDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfaXBzZWMv cnRlX2lwc2VjX3ZlcnNpb24ubWFwDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVf aXBzZWMvc2EuYw0KPiA8c25pcD4NCj4gK3N0YXRpYyBpbmxpbmUgdWludDE2X3QNCj4gK2VzcF9v dXRiX3R1bl9wcmVwYXJlKHN0cnVjdCBydGVfaXBzZWNfc2EgKnNhLCBzdHJ1Y3QgcnRlX21idWYg Km1iW10sDQo+ICsgICAgICAgc3RydWN0IHJ0ZV9jcnlwdG9fb3AgKmNvcFtdLCB1aW50MTZfdCBu dW0pDQo+ICt7DQo+ICsgICAgICAgaW50MzJfdCByYzsNCj4gKyAgICAgICB1aW50MzJfdCBpLCBu Ow0KPiArICAgICAgIHVuaW9uIHN5bV9vcF9kYXRhIGljdjsNCj4gKw0KPiArICAgICAgIG4gPSBl c25fb3V0Yl9jaGVja19zcW4oc2EsIG51bSk7DQo+ICsNCj4gKyAgICAgICBmb3IgKGkgPSAwOyBp ICE9IG47IGkrKykgew0KPiArDQo+ICsgICAgICAgICAgICAgICBzYS0+c3FuKys7DQo+IFtBbm9v Yl0gU2hvdWxkbid0IHRoaXMgYmUgZG9uZSBhdG9taWNhbGx5Pw0KPiANCj4gSWYgd2Ugd2FudCB0 byBoYXZlIE1ULXNhZmUgQVBJIGZvciBTQS1kYXRhcGF0aCBBUEksIHRoZW4geWVzLg0KPiBUaG91 Z2ggaXQgd291bGQgbWFrZSB0aGluZ3MgbW9yZSBjb21wbGljYXRlZCBoZXJlLCBlc3BlY2lhbGx5 IGZvciBpbmJvdW5kIHdpdGggYW50aS1yZXBsYXkgc3VwcG9ydC4NCj4gSSB0aGluayBpdCBpcyBk b2FibGUgKHNwaW4tbG9jaz8pLCBidXQgd291bGQgY2F1c2UgZXh0cmEgb3ZlcmhlYWQgYW5kIGNv bXBsZXhpdHkuDQo+IFJpZ2h0IG5vdyBJIGFtIG5vdCBzdXJlIGl0IHJlYWxseSB3b3J0aCBpdCAt IGNvbW1lbnRzL3N1Z2dlc3Rpb25zIGFyZSB3ZWxjb21lLg0KPiBXaGF0IHByb2JhYmx5IGNvdWxk IGJlIGEgZ29vZCBjb21wcm9taXNlIC0gcnVudGltZSBkZWNpc2lvbiBwZXIgU0EgYmFzaXMgKGF0 IHNhX2luaXQoKSksDQo+IGRvIHdlIG5lZWQgYW4gU1Qgb3IgTVQgYmVoYXZpb3IgZm9yIGdpdmVu IFNBLg0KPiBbQW5vb2JdIEdvaW5nIHdpdGggc2luZ2xlIHRocmVhZCBhcHByb2FjaCB3b3VsZCBz aWduaWZpY2FudGx5IGxpbWl0IHRoZSBzY29wZSBvZiB0aGlzIGxpYnJhcnkuIFNpbmdsZSB0aHJl YWQgYXBwcm9hY2ggd291bGQgbWVhbg0KPiBvbmUgU0Egb24gb25lIGNvcmUuIFRoaXMgd291bGQg bm90IHdvcmsgb24gcHJhY3RpY2FsIGNhc2VzLg0KPiBTdXBwb3NlIHdlIGhhdmUgdHdvIGZsb3dz IHdoaWNoIGFyZSBzdXBwb3NlZCB0byB1c2UgdGhlIHNhbWUgU0EuIFdpdGggUlNTLCB0aGVzZSBm bG93cyBjb3VsZCBlbmQgdXAgb24gZGlmZmVyZW50IGNvcmVzLiBOb3cNCj4gb25seSBvbmUgY29y ZSB3b3VsZCBiZSBhYmxlIHRvIHByb2Nlc3MsIGFzIFNBIHdpbGwgbm90IGJlIHNoYXJlZC4gV2Ug aGF2ZSB0aGUgc2FtZSBwcm9ibGVtIGluIGlwc2VjLXNlY2d3IHRvby4NCg0KSnVzdCBmb3IgbXkg Y3VyaW9zaXR5IC0gaG93IGRvIHlvdSBwbGFuIHRvIHVzZSBSU1MgZm9yIGlwc2VjIHBhY2tldCBk aXN0cmlidXRpb24/DQpEbyB5b3UgZm9yZXNlZSBhIGNvbW1vbiBzaXR1YXRpb24gd2hlbiB0aGVy ZSB3b3VsZCBiZSBwYWNrZXRzIHRoYXQgYmVsb25ncyB0byB0aGUgc2FtZSBTQQ0KKHNhbWUgU1BJ KSBidXQgd2l0aCBtdWx0aXBsZSBzb3VyY2UoZGVzdGluYXRpb24pIElQIGFkZHJlc3Nlcz8NCklm IHNvLCBwcm9iYWJseSBzb21lIGV4YW1wbGVzIHdvdWxkIGJlIGhlbHBmdWwuDQpJIHRoaW5rIElQ c2VjIFJGQ3MgZG9lc24ndCBwcmV2ZW50IHN1Y2ggc2l0dWF0aW9uLCBidXQgQUZBSUsgdGhlIG1v c3QgY29tbW9uIGNhc2UgLSBzaW5nbGUgc291cmNlL2Rlc3RpbmF0aW9uIElQcyBmb3IgdGhlIHNh bWUgU1BJLg0KDQpBbnl3YXksIGxldCdzIHByZXRlbmQgd2UgZm91bmQgc29tZSBzbWFydCB3YXkg dG8gZGlzdHJpYnV0ZSBpbmJvdW5kIHBhY2tldHMgZm9yIHRoZSBzYW1lIFNBIHRvIG11bHRpcGxl IEhXIHF1ZXVlcy9DUFUgY29yZXMuDQpUbyBtYWtlIGlwc2VjIHByb2Nlc3NpbmcgZm9yIHN1Y2gg Y2FzZSB0byB3b3JrIGNvcnJlY3RseSBqdXN0IGF0b21pY2l0eSBvbiBjaGVjay91cGRhdGUgc2Vn bi9yZXBsYXlfd2luZG93IGlzIG5vdCBlbm91Z2guDQpJIHRoaW5rIGl0IHdvdWxkIHJlcXVpcmUg c29tZSBleHRyYSBzeW5jaHJvbml6YXRpb246ICANCm1ha2Ugc3VyZSB0aGF0IHdlIGRvIGZpbmFs IHBhY2tldCBwcm9jZXNzaW5nIChzZXEgY2hlY2svdXBkYXRlKSBhdCB0aGUgc2FtZSBvcmRlciBh cyB3ZSByZWNlaXZlZCB0aGUgcGFja2V0cw0KKHBhY2tldHMgZW50ZXJlZCBpcHNlYyBwcm9jZXNz aW5nKS4gIA0KSSBkb24ndCByZWFsbHkgbGlrZSB0byBpbnRyb2R1Y2Ugc3VjaCBoZWF2eSBtZWNo YW5pc21zIG9uIFNBIGxldmVsLCAgYWZ0ZXIgYWxsIGl0IHN1cHBvc2VkIHRvIGJlIGxpZ2h0IGFu ZCBzaW1wbGUuDQpUaG91Z2ggd2UgcGxhbiBDVFggbGV2ZWwgQVBJIHRvIHN1cHBvcnQgc3VjaCBz Y2VuYXJpby4NCldoYXQgSSB0aGluayB3b3VsZCBiZSB1c2VmdWwgYWRkaXRpb24gZm9yIFNBIGxl dmVsIEFQSSAtIGhhdmUgYW4gYWJpbGl0eSB0byBkbyBvbmUgdXBkYXRlIHNlcW4vcmVwbGF5X3dp bmRvdyBhbmQgbXVsdGlwbGUgY2hlY2tzIGNvbmN1cnJlbnRseS4NCg0KPiBJbiBjYXNlIG9mIGlu Z3Jlc3MgYWxzbywgdGhlIHNhbWUgcHJvYmxlbSBleGlzdHMuIFdlIHdpbGwgbm90IGJlIGFibGUg dG8gdXNlIFJTUyBhbmQgc3ByZWFkIHRoZSB0cmFmZmljIHRvIG11bHRpcGxlIGNvcmVzLiBDb25z aWRlcmluZw0KPiBJUHNlYyBiZWluZyBDUFUgaW50ZW5zaXZlLCB0aGlzIHdvdWxkIGxpbWl0IHRo ZSBuZXQgb3V0cHV0IG9mIHRoZSBjaGlwLg0KDQpUaGF0J3MgdHJ1ZSAtIGJ1dCBmcm9tIG90aGVy IHNpZGUgaW1wbGVtZW50YXRpb24gY2FuIG9mZmxvYWQgaGVhdnkgcGFydA0KKGVuY3J5cHQvZGVj cnlwdCwgYXV0aCkgdG8gc3BlY2lhbCBIVyAoY3J5cHRvZGV2KS4NCkluIHRoYXQgY2FzZSBzaW5n bGUgY29yZSBtaWdodCBiZSBlbm91Z2ggZm9yIFNBIGFuZCBleHRyYSBzeW5jaHJvbml6YXRpb24g d291bGQganVzdCBzbG93ZG93biB0aGluZ3MuDQpUaGF0J3Mgd2h5IEkgdGhpbmsgaXQgc2hvdWxk IGJlIGNvbmZpZ3VyYWJsZSAgd2hhdCBiZWhhdmlvciAoU1Qgb3IgTVQpIHRvIHVzZS4gDQoNCktv bnN0YW50aW4NCg==