From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id 9F6391B1BE for ; Wed, 11 Oct 2017 11:02:08 +0200 (CEST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Oct 2017 02:02:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.43,360,1503385200"; d="scan'208";a="159233589" Received: from irsmsx105.ger.corp.intel.com ([163.33.3.28]) by orsmga005.jf.intel.com with ESMTP; 11 Oct 2017 02:02:04 -0700 Received: from irsmsx103.ger.corp.intel.com ([169.254.3.49]) by irsmsx105.ger.corp.intel.com ([169.254.7.75]) with mapi id 14.03.0319.002; Wed, 11 Oct 2017 10:02:03 +0100 From: "Ananyev, Konstantin" To: Akhil Goyal , "dev@dpdk.org" CC: "Doherty, Declan" , "De Lara Guarch, Pablo" , "hemant.agrawal@nxp.com" , "Nicolau, Radu" , "borisp@mellanox.com" , "aviadye@mellanox.com" , "thomas@monjalon.net" , "sandeep.malik@nxp.com" , "jerin.jacob@caviumnetworks.com" , "Mcnamara, John" , "olivier.matz@6wind.com" Thread-Topic: [PATCH v2 01/12] lib/rte_security: add security library Thread-Index: AQHTPs6D9BCMaNuCEk+S+R5XqMEq8qLbgOsAgAF0KoCAALvukA== Date: Wed, 11 Oct 2017 09:02:02 +0000 Message-ID: <2601191342CEEE43887BDE71AB9772585FAA75A3@IRSMSX103.ger.corp.intel.com> References: <20170914082651.26232-1-akhil.goyal@nxp.com> <20171003131413.23846-1-akhil.goyal@nxp.com> <20171003131413.23846-2-akhil.goyal@nxp.com> <2601191342CEEE43887BDE71AB9772585FAA4E58@IRSMSX103.ger.corp.intel.com> <15007bf0-d263-05a0-2009-31210f686085@nxp.com> <2601191342CEEE43887BDE71AB9772585FAA651D@IRSMSX103.ger.corp.intel.com> <0d5a9ca0-34c2-f020-204f-b1105f357bdb@nxp.com> In-Reply-To: <0d5a9ca0-34c2-f020-204f-b1105f357bdb@nxp.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZGY4MWM4ZTktMGVhZS00MmI1LTg5OGYtOTljZjFkMmQxNzAyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IjhlM0dOMVFlYmUxSzR1UTZNTVcrQnowZkZLSXRoeWRnRUgzRWhhNXNcL1wvST0ifQ== x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 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] [PATCH v2 01/12] lib/rte_security: add security library 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, 11 Oct 2017 09:02:09 -0000 SGkgQWtoaWwsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWtoaWwg R295YWwgW21haWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiBTZW50OiBUdWVzZGF5LCBPY3Rv YmVyIDEwLCAyMDE3IDE6MTcgUE0NCj4gVG86IEFuYW55ZXYsIEtvbnN0YW50aW4gPGtvbnN0YW50 aW4uYW5hbnlldkBpbnRlbC5jb20+OyBkZXZAZHBkay5vcmcNCj4gQ2M6IERvaGVydHksIERlY2xh biA8ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tPjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxvIDxwYWJs by5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOw0KPiBO aWNvbGF1LCBSYWR1IDxyYWR1Lm5pY29sYXVAaW50ZWwuY29tPjsgYm9yaXNwQG1lbGxhbm94LmNv bTsgYXZpYWR5ZUBtZWxsYW5veC5jb207IHRob21hc0Btb25qYWxvbi5uZXQ7DQo+IHNhbmRlZXAu bWFsaWtAbnhwLmNvbTsgamVyaW4uamFjb2JAY2F2aXVtbmV0d29ya3MuY29tOyBNY25hbWFyYSwg Sm9obiA8am9obi5tY25hbWFyYUBpbnRlbC5jb20+OyBvbGl2aWVyLm1hdHpANndpbmQuY29tDQo+ IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjIgMDEvMTJdIGxpYi9ydGVfc2VjdXJpdHk6IGFkZCBzZWN1 cml0eSBsaWJyYXJ5DQo+IA0KPiBIaSBLb25zdGFudGluLA0KPiANCj4gT24gMTAvOS8yMDE3IDc6 MTIgUE0sIEFuYW55ZXYsIEtvbnN0YW50aW4gd3JvdGU6DQo+ID4gSGkgQWtoaWwsDQo+ID4NCj4g Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogQWtoaWwgR295YWwgW21h aWx0bzpha2hpbC5nb3lhbEBueHAuY29tXQ0KPiA+PiBTZW50OiBGcmlkYXksIE9jdG9iZXIgNiwg MjAxNyA3OjExIFBNDQo+ID4+IFRvOiBBbmFueWV2LCBLb25zdGFudGluIDxrb25zdGFudGluLmFu YW55ZXZAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4+IENjOiBEb2hlcnR5LCBEZWNsYW4g PGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFibG8u ZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsNCj4gaGVtYW50LmFncmF3YWxAbnhwLmNvbTsNCj4g Pj4gTmljb2xhdSwgUmFkdSA8cmFkdS5uaWNvbGF1QGludGVsLmNvbT47IGJvcmlzcEBtZWxsYW5v eC5jb207IGF2aWFkeWVAbWVsbGFub3guY29tOyB0aG9tYXNAbW9uamFsb24ubmV0Ow0KPiA+PiBz YW5kZWVwLm1hbGlrQG54cC5jb207IGplcmluLmphY29iQGNhdml1bW5ldHdvcmtzLmNvbTsgTWNu YW1hcmEsIEpvaG4gPGpvaG4ubWNuYW1hcmFAaW50ZWwuY29tPjsgb2xpdmllci5tYXR6QDZ3aW5k LmNvbQ0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIIHYyIDAxLzEyXSBsaWIvcnRlX3NlY3VyaXR5 OiBhZGQgc2VjdXJpdHkgbGlicmFyeQ0KPiA+Pg0KPiA+PiBIaSBLb25zdGFudGluLA0KPiA+Pg0K PiA+PiBUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQo+ID4+IE9uIDEwLzUvMjAxNyAxMDowMCBQ TSwgQW5hbnlldiwgS29uc3RhbnRpbiB3cm90ZToNCj4gPj4+IEhpIGxhZHMsDQo+ID4+Pg0KPiA+ Pj4+DQo+ID4+Pj4gcnRlX3NlY3VyaXR5IGxpYnJhcnkgcHJvdmlkZXMgQVBJcyBmb3Igc2VjdXJp dHkgc2Vzc2lvbg0KPiA+Pj4+IGNyZWF0ZS9mcmVlIGZvciBwcm90b2NvbCBvZmZsb2FkIG9yIG9m ZmxvYWRlZCBjcnlwdG8NCj4gPj4+PiBvcGVyYXRpb24gdG8gZXRoZXJuZXQgZGV2aWNlLg0KPiA+ Pj4+DQo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogQWtoaWwgR295YWwgPGFraGlsLmdveWFsQG54cC5j b20+DQo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogQm9yaXMgUGlzbWVubnkgPGJvcmlzcEBtZWxsYW5v eC5jb20+DQo+ID4+Pj4gU2lnbmVkLW9mZi1ieTogUmFkdSBOaWNvbGF1IDxyYWR1Lm5pY29sYXVA aW50ZWwuY29tPg0KPiA+Pj4+IFNpZ25lZC1vZmYtYnk6IERlY2xhbiBEb2hlcnR5IDxkZWNsYW4u ZG9oZXJ0eUBpbnRlbC5jb20+DQo+ID4+Pj4gLS0tDQo+ID4+Pj4gICAgbGliL2xpYnJ0ZV9zZWN1 cml0eS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgNTMgKysrDQo+ID4+Pj4gICAgbGliL2xp YnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHkuYyAgICAgICAgICAgfCAyNzUgKysrKysrKysrKysr KysrDQo+ID4+Pj4gICAgbGliL2xpYnJ0ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHkuaCAgICAgICAg ICAgfCA0OTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4+Pj4gICAgbGliL2xpYnJ0 ZV9zZWN1cml0eS9ydGVfc2VjdXJpdHlfZHJpdmVyLmggICAgfCAxODIgKysrKysrKysrKw0KPiA+ Pj4+ICAgIGxpYi9saWJydGVfc2VjdXJpdHkvcnRlX3NlY3VyaXR5X3ZlcnNpb24ubWFwIHwgIDEz ICsNCj4gPj4+PiAgICA1IGZpbGVzIGNoYW5nZWQsIDEwMTggaW5zZXJ0aW9ucygrKQ0KPiA+Pj4+ ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3NlY3VyaXR5L01ha2VmaWxlDQo+ID4+ Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9saWJydGVfc2VjdXJpdHkvcnRlX3NlY3VyaXR5 LmMNCj4gPj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2xpYnJ0ZV9zZWN1cml0eS9ydGVf c2VjdXJpdHkuaA0KPiA+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvbGlicnRlX3NlY3Vy aXR5L3J0ZV9zZWN1cml0eV9kcml2ZXIuaA0KPiA+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBs aWIvbGlicnRlX3NlY3VyaXR5L3J0ZV9zZWN1cml0eV92ZXJzaW9uLm1hcA0KPiA+Pj4+DQo+IA0K PiBbLi4uXQ0KPiANCj4gPj4+PiArDQo+ID4+Pj4gK3N0cnVjdCBydGVfc2VjdXJpdHlfY3R4IHsN Cj4gPj4+PiArCXVpbnQxNl90IGlkOw0KPiA+Pj4+ICsJZW51bSB7DQo+ID4+Pj4gKwkJUlRFX1NF Q1VSSVRZX0lOU1RBTkNFX0lOVkFMSUQsDQo+ID4+Pj4gKwkJUlRFX1NFQ1VSSVRZX0lOU1RBTkNF X1ZBTElEDQo+ID4+Pj4gKwl9IHN0YXRlOw0KPiA+Pj4+ICsJdm9pZCAqZGV2aWNlOw0KPiA+Pj4+ ICsJc3RydWN0IHJ0ZV9zZWN1cml0eV9vcHMgKm9wczsNCj4gPj4+PiArCXVpbnQxNl90IHNlc3Nf Y250Ow0KPiA+Pj4+ICt9Ow0KPiA+Pj4+ICsNCj4gPj4+PiArc3RhdGljIHN0cnVjdCBydGVfc2Vj dXJpdHlfY3R4ICpzZWN1cml0eV9pbnN0YW5jZXM7DQo+ID4+Pj4gK3N0YXRpYyB1aW50MTZfdCBt YXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzOw0KPiA+Pj4+ICtzdGF0aWMgdWludDE2X3QgbmJfc2Vj dXJpdHlfaW5zdGFuY2VzOw0KPiA+Pj4NCj4gPj4+IFByb2JhYmx5IGEgZHVtYiBxdWVzdGlvbiAt IGJ1dCB3aHkgZG8geW91IG5lZWQgYSBnbG9iYWwgc2VjdXJpdHlfaW5zdGFuY2VzIFtdDQo+ID4+ PiBhbmQgd2h5IHNlY3VyaXR5X2luc3RhbmNlIGhhcyB0byBiZSByZWZyZW5jZWQgYnkgaW5kZXg/ DQo+ID4+PiBBcyBJIHVuZGVyc3RhbmQsIHdpdGggcHJvcG9zZWQgbW9kZWwgYWxsIGRyaXZlcnMg aGF2ZSB0byBkbyBzb21ldGhpbmcgbGlrZToNCj4gPj4+IHJ0ZV9zZWN1cml0eV9yZWdpc3Rlcigm ZXRoX2Rldi0+ZGF0YS0+c2VjX2lkLCAgKHZvaWQgKilldGhfZGV2LCAmaXhnYmVfc2VjdXJpdHlf b3BzKTsNCj4gPj4+IGFuZCB0aGVuIGFsbCBhcHBzIHdvdWxkIGhhdmUgdG86DQo+ID4+PiBydGVf ZXRoX2Rldl9nZXRfc2VjX2lkKHBvcnRpZCkNCj4gPj4+IHRvIHJldHJpZXZlIHRoYXQgc2VjdXJp dHlfaW5zdGFuY2UgaW5kZXguDQo+ID4+PiBXaHkgbm90IGp1c3QgdHJlYXQgc3RydWN0IHJ0ZV9z ZWN1cml0eV9jdHgqIGFzIG9wYXF1ZSBwb2ludGVyIGFuZCBtYWtlDQo+ID4+PiBhbGwgcmVsYXRl ZCBBUEkgZ2V0L2FjY2VwdCBpdCBhcyBhIHBhcmF0ZW1lci4NCj4gPj4+IFRvIHJldHJpZXZlIHNl Y19jdHggZnJvbSBkZXZpY2UganVzdDoNCj4gPj4+IHN0cnVjdCBydGVfc2VjdXJpdHlfY3R4KiBy dGVfZXRoZGV2X2dldF9zZWNfY3R4KHBvcnRpZCk7DQo+ID4+PiBzdHJ1Y3QgcnRlX3NlY3VyaXR5 X2N0eCogcnRlX2NyeXB0b2Rldl9nZXRfc2VjX2N0eChwb3J0aWQpOw0KPiA+Pj4gPw0KPiA+PiBX ZSB3b3VsZCBsb29rIGludG8gdGhpcyBzZXBhcmF0ZWx5Lg0KPiA+DQo+ID4gQ291bGQgeW91IGNs YXJpZnkgd2hhdCBkb2VzIGl0IG1lYW4/DQo+ID4gSXQgd2lsbCBiZSBhZGRyZXNzZWQgaW4gdjQg b3IgZG9uJ3QgcGxhbiB0byBhZGRyZXNzIGl0IGF0IGFsbCBvciBzb21ldGhpbmcgZWxzZT8NCj4g V2Ugd2VyZSB0aGlua2luZyBvZiBpbXByb3ZpbmcgdGhpcyBiZXlvbmQgdGhlIHNjb3BlIG9mIHRo aXMgcGF0Y2hzZXQgYXMNCj4gYW4gaW5jcmVtZW50YWwgcGF0Y2guDQo+IA0KPiANCj4gPg0KPiA+ DQo+ID4+Pg0KPiA+Pj4gQW5vdGhlciBxdWVzdGlvbiBob3cgY3VycmVudGx5IHByb3Bvc2VkIG1v ZGVsIHdpdGggZ2xvYmFsIHN0YXRpYyBhcnJheSBhbmQgZnJpZW5kcywNCj4gPj4+IHN1cHBvc2Vk IHRvIHdvcmsgZm9yIERQREsgTVAgbW9kZWw/DQo+ID4+PiBPciBNUCBzdXBwb3J0IGlzIG5vdCBw bGFubmVkPw0KPiA+PiBtdWx0aSBwcm9jZXNzIGNhc2UgaXMgcGxhbm5lZCBmb3IgZnV0dXJlIGVu aGFuY2VtZW50LiBUaGlzIGlzIG1lbnRpb25lZA0KPiA+PiBpbiB0aGUgY292ZXIgbm90ZS4NCj4g Pg0KPiA+IEdyZWF0LCB0aGVuIEkgc3VwcG9zZSB5b3Ugc2hvdWxkIGhhdmUgYSBnZW5lcmljIGlk ZWEgaG93IHRoYXQgbW9kZWwgd2lsbCB3b3JrDQo+ID4gZm9yIERQREsgbXVsdGktcHJvY2VzcyBt b2RlbD8NCj4gPiBJZiBzbywgY2FuIHlvdSBwcm9iYWJseSBzaGFyZSB5b3VyIHRob3VnaHRzLCBi ZWNhdXNlIGl0IGlzIG5vdCBjbGVhciB0byBtZS4NCj4gPiBMZXQgc2F5IHVzZXIgaGFzIGFuIGV0 aGRldiBkZXZpY2Ugd2l0aCBpcHNlYyBjYXBhYmlsaXR5IGFuZCAgd2FudHMgdG8gdXNlIGl0DQo+ ID4gZnJvbSBib3RoIHByaW1hcnkgYW5kIHNlY29uZGFyeSBwcm9jZXNzLg0KPiA+IFdoYXQgd291 bGQgYmUgYSBwcm9jZWR1cmU/DQo+ID4gQ2FuIHVzZXIgdXNlIHRoZSBzYW1lIHNlY3VyaXR5IGlu c3RhbmNlIGZyb20gYm90aCBwcm9jZXNzZXM/DQo+ID4gSWYgeWVzLCB0aGVuDQo+ID4gLSBob3cg c2Vjb25kYXJ5IHByb2Nlc3Mgd2lsbCBnZXQgc2VjdXJpdHlfaW5zdGFuY2VfaWQgZm9yIHRoYXQg ZGV2aWNlDQo+ID4gZnJvbSBwcmltYXJ5IHByb2Nlc3M/DQo+ID4gICBCeSBjYWxsaW5nIHJ0ZV9l dGhfZGV2X2dldF9zZWNfaWQoKSwgb3Igc29tZXRoaW5nIGVsc2U/DQo+ID4gLSBob3cgZ3VhcmFu dGVlIHRoYXQgYWxsIHRoZXNlIGZ1bmMgcG9pbnRlcnMgaW5zaWRlIG9wcyB3aWxsIGJlIG1hcHBl ZCB0byB0aGUNCj4gPiBzYW1lIGFkZHJlc3MgaW5zaWRlICBwcm9jZXNzZXM/DQo+ID4gSWYgbm90 LCB0aGVuIGRvZXMgaXQgbWVhbiBlYWNoIHByb2Nlc3MgaGFzIHRvIGNhbGwgcnRlX3NlY3VyaXR5 X3JlZ2lzdGVyKCkNCj4gPiBmb3IgZWFjaCBkZXZpY2U/DQo+ID4gQnV0IHJpZ2h0IG5vdyB5b3Ug aGF2ZSBvbmx5IG9uZSBzZWNfaWQgIGluc2lkZSBydGVfZXRoX2Rldl9kYXRhLg0KPiA+DQo+ID4g V291bGQgc2Vjb25kYXJ5IHByb2Nlc3MgYmUgYWxsb3dlZCB0byByZWdpc3Rlci91bnJlZ2lzdGVy L3VwZGF0ZSBzZWN1cml0eSBpbnN0YW5jZXM/DQo+ID4gICBpZiB5ZXMsIGhvdyB0aGUgd2lsbCBz eW5jaHJvbml6ZT8NCj4gPiBTYW1lIHF1ZXN0aW9uIGZvciBzZXNzaW9uIG9wcy4NCj4gPg0KPiAN Cj4gQ3VycmVudGx5IG11bHRpIHByb2Nlc3MgY2FzZSBpcyBub3QgaGFuZGxlZCBhbmQgd2UgaGF2 ZSBub3QgcHV0IG91cg0KPiB0aG91Z2h0cyBvbiByZXNvbHZpbmcgdGhpcyBhcyBvZiBub3cuIFdl IHdlcmUgcGxhbm5pbmcgdG8gaW1wcm92ZSB0aGlzDQo+IGJleW9uZCB0aGUgc2NvcGUgb2YgdGhp cyBwYXRjaHNldCBhcyBhbiBpbmNyZW1lbnRhbCBwYXRjaC4NCj4gDQo+ID4+Pg0KPiA+Pj4+ICsN Cj4gPj4+PiArc3RhdGljIGludA0KPiA+Pj4+ICtydGVfc2VjdXJpdHlfaXNfdmFsaWRfaWQodWlu dDE2X3QgaWQpDQo+ID4+Pj4gK3sNCj4gPj4+PiArCWlmIChpZCA+PSBuYl9zZWN1cml0eV9pbnN0 YW5jZXMgfHwNCj4gPj4+PiArCSAgICAoc2VjdXJpdHlfaW5zdGFuY2VzW2lkXS5zdGF0ZSAhPSBS VEVfU0VDVVJJVFlfSU5TVEFOQ0VfVkFMSUQpKQ0KPiA+Pj4+ICsJCXJldHVybiAwOw0KPiA+Pj4+ ICsJZWxzZQ0KPiA+Pj4+ICsJCXJldHVybiAxOw0KPiA+Pj4+ICt9DQo+ID4+Pj4gKw0KPiA+Pj4+ ICsvKiBNYWNyb3MgdG8gY2hlY2sgZm9yIHZhbGlkIGlkICovDQo+ID4+Pj4gKyNkZWZpbmUgUlRF X1NFQ19WQUxJRF9JRF9PUl9FUlJfUkVUKGlkLCByZXR2YWwpIGRvIHsgXA0KPiA+Pj4+ICsJaWYg KCFydGVfc2VjdXJpdHlfaXNfdmFsaWRfaWQoaWQpKSB7IFwNCj4gPj4+PiArCQlSVEVfUE1EX0RF QlVHX1RSQUNFKCJJbnZhbGlkIHNlY19pZD0lZFxuIiwgaWQpOyBcDQo+ID4+Pj4gKwkJcmV0dXJu IHJldHZhbDsgXA0KPiA+Pj4+ICsJfSBcDQo+ID4+Pj4gK30gd2hpbGUgKDApDQo+ID4+Pj4gKw0K PiA+Pj4+ICsjZGVmaW5lIFJURV9TRUNfVkFMSURfSURfT1JfUkVUKGlkKSBkbyB7IFwNCj4gPj4+ PiArCWlmICghcnRlX3NlY3VyaXR5X2lzX3ZhbGlkX2lkKGlkKSkgeyBcDQo+ID4+Pj4gKwkJUlRF X1BNRF9ERUJVR19UUkFDRSgiSW52YWxpZCBzZWNfaWQ9JWRcbiIsIGlkKTsgXA0KPiA+Pj4+ICsJ CXJldHVybjsgXA0KPiA+Pj4+ICsJfSBcDQo+ID4+Pj4gK30gd2hpbGUgKDApDQo+ID4+Pj4gKw0K PiA+Pj4+ICtpbnQNCj4gPj4+PiArcnRlX3NlY3VyaXR5X3JlZ2lzdGVyKHVpbnQxNl90ICppZCwg dm9pZCAqZGV2aWNlLA0KPiA+Pj4+ICsJCSAgICAgIHN0cnVjdCBydGVfc2VjdXJpdHlfb3BzICpv cHMpDQo+ID4+Pj4gK3sNCj4gPg0KPiA+IFByb2JhYmx5IGNvbnN0ICBzdHJ1Y3QgcnRlX3NlY3Vy aXR5X29wcyAqb3BzDQo+ID4NCj4gPj4+PiArCWlmIChtYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2Vz ID09IDApIHsNCj4gPj4+PiArCQlzZWN1cml0eV9pbnN0YW5jZXMgPSBydGVfbWFsbG9jKA0KPiA+ Pj4+ICsJCQkJInJ0ZV9zZWN1cml0eV9pbnN0YW5jZXNfb3BzIiwNCj4gPj4+PiArCQkJCXNpemVv Zigqc2VjdXJpdHlfaW5zdGFuY2VzKSAqDQo+ID4+Pj4gKwkJCQlSVEVfU0VDVVJJVFlfSU5TVEFO Q0VTX0JMT0NLX0FMTE9DX1NaLCAwKTsNCj4gPj4+PiArDQo+ID4+Pj4gKwkJaWYgKHNlY3VyaXR5 X2luc3RhbmNlcyA9PSBOVUxMKQ0KPiA+Pj4+ICsJCQlyZXR1cm4gLUVOT01FTTsNCj4gPj4+PiAr CQltYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzID0NCj4gPj4+PiArCQkJCVJURV9TRUNVUklUWV9J TlNUQU5DRVNfQkxPQ0tfQUxMT0NfU1o7DQo+ID4+Pj4gKwl9IGVsc2UgaWYgKG5iX3NlY3VyaXR5 X2luc3RhbmNlcyA+PSBtYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzKSB7DQo+ID4+Pg0KPiA+Pj4g WW91IHByb2JhYmx5IG5lZWQgdHJ5IHRvIHJldXNlIHVucmVnaXN0ZXJlZCBlbnRyaWVzIGZpcnN0 Pw0KPiA+Pj4gS29uc3RhbnRpbg0KPiA+Pj4NCj4gPj4gVGhlc2UgQVBJcyBhcmUgZXhwZXJpbWVu dGFsIGF0IHRoaXMgbW9tZW50IGFzIG1lbnRpb25lZCBpbiB0aGUgcGF0Y2hzZXQuDQo+ID4+IFdl IHdpbGwgdHJ5IGFjY29tbW9kYXRlIHlvdXIgY29tbWVudHMgaW4gZnV0dXJlLg0KPiA+DQo+ID4g QWdhaW4gY291bGQgeW91IGNsYXJpZnkgd2hhdCBkbyB5b3UgbWVhbiBieSAnZnV0dXJlJyBoZXJl Pw0KPiA+DQo+IEFzIEkgc2FpZCBiZWZvcmUsIHRoZXNlIEFQSXMgbmVlZCB0byBiZSByZS1sb29r ZWQgdG8gaW5jb3Jwb3JhdGUgdGhlDQo+IG11bHRpIHByb2Nlc3MgY2FzZXMgYW5kIGJldHRlciBt ZW1vcnkgdXRpbGl6YXRpb24uDQo+IFdlIGludGVuZCB0byBpbmNsdWRlIG1vc3Qgb2YgeW91ciBj b21tZW50cyBzZXBhcmF0ZWx5IGJleW9uZCB0aGUgc2NvcGUNCj4gb2YgdGhpcyBwYXRjaHNldC4N Cj4gSSBiZWxpZXZlIHRoZSBjb21wbGV0ZSBjb2RlIHNob3VsZCBub3QgYmUgcHV0IG9uIGhvbGQg ZHVlIHRvIHRoZXNlDQo+IGlzc3VlcyAobXVsdGkgcHJvY2VzcyBhbmQgb3B0aW1pemF0aW9ucyBp biByZWdpc3Rlci9kZXJlZ2lzdGVyIEFQSXMpLg0KPiBBcyBwZXIgbXkgdW5kZXJzdGFuZGluZyB0 aGUgY29kZSBpcyBub3QgaW1wYWN0aW5nIGFueSBvZiB0aGUgZXhpc3RpbmcNCj4gZnVuY3Rpb25h bGl0aWVzLg0KDQpJIGRvbid0IGhhdmUgYSBwcm9ibGVtIGlmIHJ0ZV9zZWN1cml0eSBjb2RlIGJ5 IGl0c2VsZiB3aWxsIGJlIHJld29ya2VkIGluIGZ1dHVyZSByZWxlYXNlcy4NCkJ1dCBydGVfc2Vj dXJpdHkgaXMgbm90IHN0YW5kYWxvbmUgLSBjaGFuZ2VzIGluIHB1YmxpYyBBUEkgYW5kIG1ham9y IGRlc2lnbiBwcmluY2lwbGVzDQpmb3IgcnRlX3NlY3VyaXR5IG1lYW5zIGNvZGUgY2hhbmdlcyBm b3IgcnRlX2V0aGRldiwgaXhnYmUsIGV0Yy4NCkFnYWluIG5vdCB0aGUgZW5kIG9mIHRoZSB3b3Js ZCwgYnV0IHdvdWxkIGJlIGJldHRlciB0byBtaW5pbWl6ZSBzdWNoIGNvZGUgY2h1cm4gaWYgcG9z c2libGUuDQpTbyBpZiB5b3UgcGxhbiB0byBtYWtlIGNoYW5nZXMgaW4gcHVibGljIEFQSSBJIHRh bGtlZCBiZWZvcmU6DQpyZXdvcmsvcmVtb3ZlIHJ0ZV9zZWN1cml0eV9yZWdpc3Rlci91bnJlZ2lz dGVyKCksDQpyZXBsYWNlIHJ0ZV9ldGhfZGV2X2dldF9zZWNfaWQocG9ydGlkKSB3aXRoIHN0cnVj dCBydGVfc2VjdXJpdHlfY3R4KiBydGVfZXRoZGV2X2dldF9zZWNfY3R4KHBvcnRpZCkgb3Igc28u DQpldGMuIA0KYW55d2F5IC0gSSB0aGluayBpdCB3b3VsZCBiZSByZWFsbHkgZ29vZCB0byBoYXZl IHRoZW0gaW4gMTcuMTEgdGltZWZyYW1lLg0KDQo+IA0KPiBIb3dldmVyLHdlIHdpbGwgZGlzY3Vz cyBpbnRlcm5hbGx5IGlmIHRoZXNlIGNhbiBiZSByZXNvbHZlZCBpbiB2NCBvciBub3QuDQo+IA0K DQpXaWxsIHdhaXQgZm9yIHY0IHRoZW4uDQpLb25zdGFudGluDQoNCj4gDQo+ID4+Pg0KPiA+Pj4+ ICsJCXVpbnQxNl90ICppbnN0YW5jZXMgPSBydGVfcmVhbGxvYyhzZWN1cml0eV9pbnN0YW5jZXMs DQo+ID4+Pj4gKwkJCQlzaXplb2Yoc3RydWN0IHJ0ZV9zZWN1cml0eV9vcHMgKikgKg0KPiA+Pj4+ ICsJCQkJKG1heF9uYl9zZWN1cml0eV9pbnN0YW5jZXMgKw0KPiA+Pj4+ICsJCQkJUlRFX1NFQ1VS SVRZX0lOU1RBTkNFU19CTE9DS19BTExPQ19TWiksIDApOw0KPiA+Pj4+ICsNCj4gPj4+PiArCQlp ZiAoaW5zdGFuY2VzID09IE5VTEwpDQo+ID4+Pj4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiA+Pj4+ ICsNCj4gPj4+PiArCQltYXhfbmJfc2VjdXJpdHlfaW5zdGFuY2VzICs9DQo+ID4+Pj4gKwkJCQlS VEVfU0VDVVJJVFlfSU5TVEFOQ0VTX0JMT0NLX0FMTE9DX1NaOw0KPiA+Pj4+ICsJfQ0KPiA+Pj4+ ICsNCj4gPj4+PiArCSppZCA9IG5iX3NlY3VyaXR5X2luc3RhbmNlcysrOw0KPiA+Pj4+ICsNCj4g Pj4+PiArCXNlY3VyaXR5X2luc3RhbmNlc1sqaWRdLmlkID0gKmlkOw0KPiA+Pj4+ICsJc2VjdXJp dHlfaW5zdGFuY2VzWyppZF0uc3RhdGUgPSBSVEVfU0VDVVJJVFlfSU5TVEFOQ0VfVkFMSUQ7DQo+ ID4+Pj4gKwlzZWN1cml0eV9pbnN0YW5jZXNbKmlkXS5kZXZpY2UgPSBkZXZpY2U7DQo+ID4+Pj4g KwlzZWN1cml0eV9pbnN0YW5jZXNbKmlkXS5vcHMgPSBvcHM7DQo+ID4NCj4gPiBCVFcsIEkgdGhp bmsgeW91IG5lZWQgdG8gY29weSBhY3R1YWwgY29udGVudHMgb2Ygb3BzLg0KPiA+IE90aGVyd2lz ZSB5b3UgYXNzdW1pbmcgdGhhdCBvcHMgYXJlIHN0YXRpYw0KPiA+ICh3b3VsZCBiZSB2YWxpZCB0 aG91Z2ggYWxsIHByb2Nlc3NlcyBsaWZldGltZXMpLg0KPiA+DQo+ID4gS29uc3RhbnRpbg0KPiA+ DQo+IA0KPiANCj4gUmVnYXJkcywNCj4gQWtoaWwNCg==