From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 619DC1B064 for ; Mon, 9 Jul 2018 18:44:37 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Jul 2018 09:44:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,330,1526367600"; d="scan'208";a="56246139" Received: from irsmsx106.ger.corp.intel.com ([163.33.3.31]) by orsmga006.jf.intel.com with ESMTP; 09 Jul 2018 09:44:33 -0700 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.185]) by IRSMSX106.ger.corp.intel.com ([169.254.8.211]) with mapi id 14.03.0319.002; Mon, 9 Jul 2018 17:44:33 +0100 From: "Trahe, Fiona" To: "Doherty, Declan" , "Verma, Shally" , "De Lara Guarch, Pablo" CC: "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Kartha, Umesh" , "Trahe, Fiona" Thread-Topic: [dpdk-dev] [PATCH v4 1/4] lib/cryptodev: add asymmetric algos in cryptodev Thread-Index: AQHUFHAnY+hq1erFFEOIQ8K0FjbGHaSCMbCAgAS+NQCAACuKQA== Date: Mon, 9 Jul 2018 16:44:32 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435895D52BA@IRSMSX101.ger.corp.intel.com> References: <1530631466-26427-1-git-send-email-shally.verma@caviumnetworks.com> <1530631466-26427-2-git-send-email-shally.verma@caviumnetworks.com> <9905afc5-3571-d6c8-c2b0-7c9804f0dbd6@intel.com> <6482e729-cc0b-e3bb-a03a-3b60ec29d488@intel.com> In-Reply-To: <6482e729-cc0b-e3bb-a03a-3b60ec29d488@intel.com> Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZmUwYWU5MDYtOGFmMS00MTUyLWE1ODQtZjE5ODExZGRmZDY4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoibktvODVlbStVY0FkY1ZjXC9DZ05GZ3QwcWlrNUo1c095dmF6TXFRcVRDcVBLNktZTUNvQXVoWlpzUGZPXC9RWER5In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v4 1/4] lib/cryptodev: add asymmetric algos in cryptodev 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: Mon, 09 Jul 2018 16:44:38 -0000 SGkgU2hhbGx5LCAgRGVjbGFuLCBQYWJsbywNCg0KSSdtIGNvbmNlcm5lZCBhYm91dCBydXNoaW5n IGluIHNpZ25pZmljYW50IGxhc3QtbWludXRlIGNoYW5nZXMsIGJ1dCB3b3VsZCBsaWtlIHRvIHNl ZSB0aGlzIEFQSSBpbiAxOC4wOC4NClNvIEkgc3VnZ2VzdCB0aGUgcGF0Y2hzZXQgaXMgYXBwbGll ZCB3aXRoIHRoZSBjYXZlYXQgdGhhdCBpdCBpcyBleHBlcmltZW50YWwgYW5kIHdpbGwgY29udGlu dWUgdG8gYmUgc28NCmZvciB0aGUgbmV4dCByZWxlYXNlLCBpbiB3aGljaCB0aGUgcmVtYWluaW5n IG9wZW4gaXNzdWVzIHNob3VsZCBiZSBhZGRyZXNzZWQuIA0KVGhlIG1haW4gYXJlYXMgb2YgY29u Y2VybiBhcmU6DQogLSB0aGUgc3RydWN0dXJlcyBmb3IgeGZvcm1zIGFuZCBvcHMgYW5kIHJld29y ayBuZWVkZWQgdG8gY2F0ZXIgZm9yIHNlc3Npb25sZXNzDQogLSBjYXBhYmlsaXRpZXMNCg0KDQpS ZWdhcmRzLA0KRmlvbmENCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206 IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBPbiBCZWhhbGYgT2YgRG9oZXJ0eSwg RGVjbGFuDQo+IFNlbnQ6IE1vbmRheSwgSnVseSA5LCAyMDE4IDM6NTUgUE0NCj4gVG86IFZlcm1h LCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgRGUgTGFyYSBHdWFyY2gsIFBhYmxv DQo+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQo+IENjOiBkZXZAZHBkay5vcmc7 IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0u Y29tPjsgTXVydGh5LA0KPiBOaWRhZGF2b2x1IDxOaWRhZGF2b2x1Lk11cnRoeUBjYXZpdW0uY29t PjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEsDQo+IEFzaGlz aCA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBLYXJ0aGEsIFVtZXNoIDxVbWVzaC5LYXJ0aGFA Y2F2aXVtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY0IDEvNF0gbGli L2NyeXB0b2RldjogYWRkIGFzeW1tZXRyaWMgYWxnb3MgaW4gY3J5cHRvZGV2DQo+IA0KPiBPbiAw Ni8wNy8yMDE4IDM6MjggUE0sIFZlcm1hLCBTaGFsbHkgd3JvdGU6DQo+ID4gSGkgRGVjbGFuDQo+ ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogRG9oZXJ0eSwg RGVjbGFuIFttYWlsdG86ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tXQ0KPiA+PiBTZW50OiAwNSBK dWx5IDIwMTggMjA6MjQNCj4gPj4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZp dW0uY29tPjsgcGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tDQo+ID4+IENjOiBkZXZAZHBk ay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBj YXZpdW0uY29tPjsgTXVydGh5LA0KPiBOaWRhZGF2b2x1DQo+ID4+IDxOaWRhZGF2b2x1Lk11cnRo eUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3Vw dGEsIEFzaGlzaA0KPiA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBLYXJ0aGEsDQo+ID4+IFVt ZXNoIDxVbWVzaC5LYXJ0aGFAY2F2aXVtLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtkcGRrLWRl dl0gW1BBVENIIHY0IDEvNF0gbGliL2NyeXB0b2RldjogYWRkIGFzeW1tZXRyaWMgYWxnb3MgaW4g Y3J5cHRvZGV2DQo+ID4+DQo+ID4+IEV4dGVybmFsIEVtYWlsDQo+ID4+DQo+ID4+IEhleSBTaGFs bHksDQo+ID4+DQo+ID4+IGp1c3QgYSBmZXcgdGhpbmdzIGlubGluZSBiZWxvdyBtYWlubHkgY29u Y2VybmVkIHdpdGggdGhlIG5lZWQgdG8gYmUgYWJsZQ0KPiA+PiB0byBzdXBwb3J0IHNlc3Npb24t bGVzcyBvcGVyYXRpb25zIGluIGZ1dHVyZSBQTURzLiBJIHRoaW5rIHdpdGggYSBmZXcNCj4gPj4g bWlub3IgY2hhbmdlcyB0byB0aGUgQVBJIG5vdyBpdCBzaG91bGQgYWxsb3cgc2Vzc2lvbi1sZXNz IHRvIGJlDQo+ID4+IHN1cHBvcnRlZCBsYXRlciB3aXRob3V0IHRoZSBuZWVkIGZvciBhIG1ham9y IHJld29yayBvZiB0aGUgQVBJcywgSSBkb24ndA0KPiA+PiB0aGluayB0aGlzIHNob3VsZCBjYXVz ZSBhbnkgbWFqb3IgcmV3b3JrIHRvIHlvdXIgUE1EIGp1c3QgdGhlIGFkb3B0aW9uDQo+ID4+IG9m IHNvbWUgbmV3IG1vcmUgZXhwbGljaXQgb3AgdHlwZXMuDQo+ID4+DQo+ID4+IFRoYW5rcw0KPiA+ PiBEZWNsYW4NCj4gPj4NCj4gPj4gT24gMDMvMDcvMjAxOCA0OjI0IFBNLCBTaGFsbHkgVmVybWEg d3JvdGU6DQo+ID4+PiBBZGQgcnRlX2NyeXB0b19hc3ltLmggd2l0aCBzdXBwb3J0ZWQgeGZybXMN Cj4gPj4+IGFuZCBhc3NvY2lhdGVkIG9wIHN0cnVjdHVyZXMgYW5kIEFQSXMNCj4gPj4+DQo+ID4+ PiBBUEkgY3VycmVudGx5IHN1cHBvcnRzOg0KPiA+Pj4gLSBSU0EgRW5jcnlwdCwgRGVjcnlwdCwg U2lnbiBhbmQgVmVyaWZ5DQo+ID4+PiAtIE1vZHVsYXIgRXhwb25lbnRpYXRpb24gYW5kIEludmVy c2lvbg0KPiA+Pj4gLSBEU0EgU2lnbiBhbmQgVmVyaWZ5DQo+ID4+PiAtIERlZmZpZS1oZWxsbWFu IHByaXZhdGUga2V5IGV4Y2hhbmdlDQo+ID4+PiAtIERlZmZpZS1oZWxsbWFuIHB1YmxpYyBrZXkg ZXhjaGFuZ2UNCj4gPj4+IC0gRGVmZmllLWhlbGxtYW4gc2hhcmVkIHNlY3JldCBjb21wdXRlDQo+ ID4+PiAtIERlZmZpZS1oZWxsbWFuIHB1YmxpYy9wcml2YXRlIGtleSBwYWlyIGdlbmVyYXRpb24N Cj4gPj4+IHVzaW5nIHhmb3JtIGNoYWluDQo+ID4+Pg0KPiA+Pj4gU2lnbmVkLW9mZi1ieTogU2hh bGx5IFZlcm1hIDxzaGFsbHkudmVybWFAY2F2aXVtbmV0d29ya3MuY29tPg0KPiA+Pj4gU2lnbmVk LW9mZi1ieTogU3VuaWxhIFNhaHUgPHN1bmlsYS5zYWh1QGNhdml1bW5ldHdvcmtzLmNvbT4NCj4g Pj4+IFNpZ25lZC1vZmYtYnk6IEFzaGlzaCBHdXB0YSA8YXNoaXNoLmd1cHRhQGNhdml1bW5ldHdv cmtzLmNvbT4NCj4gPj4+IFNpZ25lZC1vZmYtYnk6IFVtZXNoIEthcnRoYSA8dW1lc2gua2FydGhh QGNhdml1bW5ldHdvcmtzLmNvbT4NCj4gPj4+IC0tLQ0KPiA+Pj4gICAgbGliL2xpYnJ0ZV9jcnlw dG9kZXYvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKw0KPiA+Pj4gICAgbGliL2xpYnJ0ZV9jcnlw dG9kZXYvbWVzb24uYnVpbGQgICAgICAgfCAgIDMgKy0NCj4gPj4+ICAgIGxpYi9saWJydGVfY3J5 cHRvZGV2L3J0ZV9jcnlwdG9fYXN5bS5oIHwgNDk2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KPiA+Pj4gICAgMyBmaWxlcyBjaGFuZ2VkLCA0OTkgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQ0KPiA+Pj4NCj4gPj4+IGRpZmYgLS1naXQgYS9saWIvbGlicnRlX2NyeXB0b2Rl di9NYWtlZmlsZSBiL2xpYi9saWJydGVfY3INCj4gPj4NCj4gPj4gLi4uDQo+ID4+DQo+ID4+PiAr dHlwZWRlZiBzdHJ1Y3QgcnRlX2NyeXB0b19wYXJhbV90IHsNCj4gPj4+ICsgICAgIHVpbnQ4X3Qg KmRhdGE7DQo+ID4+PiArICAgICAvKio8IHBvaW50ZXIgdG8gYnVmZmVyIGhvbGRpbmcgZGF0YSAq Lw0KPiA+Pj4gKyAgICAgcnRlX2lvdmFfdCBpb3ZhOw0KPiA+Pj4gKyAgICAgLyoqPCBJTyBhZGRy ZXNzIG9mIGRhdGEgYnVmZmVyICovDQo+ID4+PiArICAgICBzaXplX3QgbGVuZ3RoOw0KPiA+Pj4g KyAgICAgLyoqPCBsZW5ndGggb2YgZGF0YSBpbiBieXRlcyAqLw0KPiA+Pj4gK30gcnRlX2NyeXB0 b19wYXJhbTsNCj4gPj4NCj4gPj4gV2hhdCBpcyB0aGUgaW50ZW5kZWQgd2F5IGZvciB0aGlzIG1l bW9yeSB0byBiZSBhbGxvY2F0ZWQsDQo+ID4NCj4gPiBbU2hhbGx5XSBJdCBzaG91bGQgYmUgcG9p bnRlciB0byBmbGF0IGJ1ZmZlcnMgYW5kIGFkZGVkIG9ubHkgdG8gaW5wdXQvb3V0cHV0IGRhdGEg dG8vZnJvbQ0KPiA+IGFzeW1tZXRyaWMgY3J5cHRvIGVuZ2luZS4NCj4gPg0KPiA+PiBpdCBzZWVt cyBsaWtlDQo+ID4+IHRoZXJlIG1pZ2h0IGJlIGEgbW9yZSBnZW5lcmFsIHJlcXVpcmVtZW50IGlu IERQREsgZm9yIElPIGFkZHJlc3NhYmxlDQo+ID4+IG1lbW9yeSAoY29tcHJlc3Npb24/IG90aGVy IGhhcmR3YXJlIGFjY2VsZWF0b3JzIGltcGxlbWVudGVkIG9uIEZQR0FzKQ0KPiA+PiB0aGFuIGp1 c3QgYXN5bW1ldHJpYyBjcnlwdG8sIHdpbGwgd2UgZW5kIHVwIG5lZWRpbmcgdG8gc3VwcG9ydCBm ZWF0dXJlcw0KPiA+PiBsaWtlIHNjYXR0ZXIgZ2F0aGVyIGxpc3RzIGluIHRoaXMgc3RydWN0dXJl Pw0KPiA+DQo+ID4gW1NoYWxseV0gSSBkb27igJl0IGFudGljaXBhdGUgdGhhdCB3ZSB3b3VsZCBu ZWVkIHRvIHN1cHBvcnQgc2NhdHRlci1nYXRoZXIgZGF0YSBidWZmZXJzIGFzIGZhciBhcyBpdCBp cyB1c2VkDQo+IGZvciBhc3ltbWV0cmljLg0KPiA+IEFuZCBJJ20gbm90IGF3YXJlIGlmIHdlIGhh dmUgcmVxdWlyZW1lbnQgdG8gc3VwcG9ydCBpdCBmb3IgYXN5bW1ldHJpYyBwcm9jZXNzaW5nIHNp bmNlIGRhdGEgc2l6ZSBpcw0KPiB1c3VhbGx5IHNtYWxsIGZvcg0KPiA+IHN1Y2ggb3BlcmF0aW9u cy4gVGh1cywgYXBwIGlzIGV4cGVjdGVkIHRvIHNlbmQgbGluZWFyIGJ1ZmZlcnMgZm9yIGlucHV0 L291dHB1dC4NCj4gPg0KPiA+IERvZXMgdGhhdCBhbnN3ZXIgeW91ciBxdWVzdGlvbj8gT3IgZGlk IEkgbWlzcyBhbnl0aGluZz8NCj4gPg0KPiANCj4gU3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJhdGlv bmFsZS4NCj4gDQo+ID4NCj4gPj4gYnR3IEkgdGhpbmsgdGhpcyBpcw0KPiA+PiBwcm9iYWJseSBm aW5lIGZvciB0aGUgbW9tZW50IGFzIGl0IHdpbGwgYmUgZXhwZXJtZW50aWFsIGJ1dCBJIHRoaW5r IGl0DQo+ID4+IHdpbGwgbmVlZCB0byBiZSBhZGRyZXNzZWQgYmVmb3JlIHRoZSByZW1vdmFsIG9m IHRoZSBleHBlcm1lbnRpYWwgdGFnLg0KPiA+Pg0KPiA+DQo+ID4gLi4uDQo+ID4NCj4gPj4+ICsg ICAgIFJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RJTlYsDQo+ID4+DQo+ID4+IFdvdWxkIHByZWZl ciBpZiB0aGlzIHdhcyBfTU9EX0lOViA6KQ0KPiA+Pg0KPiA+Pj4gKyAgICAgLyoqPCBNb2R1bGFy IEludmVyc2UNCj4gPj4+ICsgICAgICAqIFBlcmZvcm0gTW9kdWx1cyBpbnZlcnNlIGJeKC0xKSBt b2Qgbg0KPiA+Pj4gKyAgICAgICovDQo+ID4+PiArICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1f TU9ERVgsDQo+ID4+DQo+ID4+IGFueSB0aGlzIHdhcyBfTU9EX0VYIDopDQo+ID4NCj4gPiBbU2hh bGx5XSBmaW5lIHdpbGwgZG8gbmFtZSBjaGFuZ2UuDQo+ID4NCj4gPj4NCj4gPj4+ICsgICAgIC8q KjwgTW9kdWxhciBFeHBvbmVudGlhdGlvbg0KPiA+Pj4gKyAgICAgICogUGVyZm9ybSBNb2R1bGFy IEV4cG9uZW50aWF0aW9uIGJeZSBtb2Qgbg0KPiA+Pj4gKyAgICAgICovDQo+ID4+PiArICAgICBS VEVfQ1JZUFRPX0FTWU1fWEZPUk1fVFlQRV9MSVNUX0VORA0KPiA+Pj4gKyAgICAgLyoqPCBFbmQg b2YgbGlzdCAqLw0KPiA+Pj4gK307DQo+ID4+PiArDQo+ID4+PiArLyoqDQo+ID4+PiArICogQXN5 bW1ldHJpYyBjcnlwdG8gb3BlcmF0aW9uIHR5cGUgdmFyaWFudHMNCj4gPj4+ICsgKi8NCj4gPj4+ ICtlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHsNCj4gPj4+ICsgICAgIFJURV9DUllQVE9f QVNZTV9PUF9FTkNSWVBULA0KPiA+Pj4gKyAgICAgLyoqPCBBc3ltbWV0cmljIEVuY3J5cHQgb3Bl cmF0aW9uICovDQo+ID4+PiArICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfREVDUllQVCwNCj4gPj4+ ICsgICAgIC8qKjwgQXN5bW1ldHJpYyBEZWNyeXB0IG9wZXJhdGlvbiAqLw0KPiA+Pj4gKyAgICAg UlRFX0NSWVBUT19BU1lNX09QX1NJR04sDQo+ID4+PiArICAgICAvKio8IFNpZ25hdHVyZSBHZW5l cmF0aW9uIG9wZXJhdGlvbiAqLw0KPiA+Pj4gKyAgICAgUlRFX0NSWVBUT19BU1lNX09QX1ZFUklG WSwNCj4gPj4+ICsgICAgIC8qKjwgU2lnbmF0dXJlIFZlcmlmaWNhdGlvbiBvcGVyYXRpb24gKi8N Cj4gPj4+ICsgICAgIFJURV9DUllQVE9fQVNZTV9PUF9QUklWQVRFX0tFWV9HRU5FUkFURSwNCj4g Pj4+ICsgICAgIC8qKjwgREggUHJpdmF0ZSBLZXkgZ2VuZXJhdGlvbiBvcGVyYXRpb24gKi8NCj4g Pj4+ICsgICAgIFJURV9DUllQVE9fQVNZTV9PUF9QVUJMSUNfS0VZX0dFTkVSQVRFLA0KPiA+Pj4g KyAgICAgLyoqPCBESCBQdWJsaWMgS2V5IGdlbmVyYXRpb24gb3BlcmF0aW9uICovDQo+ID4+PiAr ICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfU0hBUkVEX1NFQ1JFVF9DT01QVVRFLA0KPiA+Pj4gKyAg ICAgLyoqPCBESCBTaGFyZWQgU2VjcmV0IGNvbXB1dGUgb3BlcmF0aW9uICovDQo+ID4+PiArICAg ICBSVEVfQ1JZUFRPX0FTWU1fT1BfTElTVF9FTkQNCj4gPj4+ICt9Ow0KPiA+Pj4gKw0KPiA+Pg0K PiA+PiBJIHRoaW5rIHRoYXQgaGF2aW5nIGdlbmVyaWMgb3BlcmF0aW9uIHR5cGVzIHdoaWNoIG1h eSBvciBtYXkgbm90IGFwcGx5DQo+ID4+IHRvIGFsbCBvZiB0aGUgZGVmaW5lZCB4Zm9ybXMgaXMg Y29uZnVzaW5nIGZyb20gYSB1c2VyIHBlcnNwZWN0aXZlIGFuZCBpbg0KPiA+PiB0aGUgbG9uZ2Vy IHRlcm0gd2lsbCBtYWtlIGl0IGltcG9zc2libGUgdG8gc3VwcG9ydCBzZXNzaW9uLWxlc3MNCj4g Pj4gYXN5bW1ldHJpYyBvcGVyYXRpb25zLiBJZiB3ZSBpbnN0ZWFkIGRvIHNvbWV0aGluZyBsaWtl DQo+ID4+DQo+ID4+ICAgICAgICAgUlRFX0NSWVBUT19BU1lNX09QX1JTQV9FTkNSWVBULA0KPiA+ PiAgICAgICAgIFJURV9DUllQVE9fQVNZTV9PUF9SU0FfREVDUllQVCwNCj4gPj4gICAgICAgICBS VEVfQ1JZUFRPX0FTWU1fT1BfUlNBX1NJR04sDQo+ID4+ICAgICAgICAgUlRFX0NSWVBUT19BU1lN X09QX1JTQV9WRVJJRlksDQo+ID4+ICAgICAgICAgUlRFX0NSWVBUT19BU1lNX09QX0RIX0tFWV9H RU5FUkFURSwNCj4gPj4gICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfREhfU0hBUkVEX1NFQ1JF VF9DT01QVVRFLA0KPiA+PiAgICAgICAgIGV0Yy4uLg0KPiA+Pg0KPiA+PiBUaGVuIHRoZSBvcCB0 eXBlIGJlY29tZXMgdmVyeSBleHBsaWNpdCBhbmQgd2lsbCBhbGxvdyBzZXNzaW9uLWxlc3MNCj4g Pj4gb3BlcmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgYnkgUE1Ecy4gVGhpcyBzaG91bGRuJ3QgaGF2 ZSBhbnkgaW1wYWN0IG9uDQo+ID4+IHlvdXIgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvdGhlciB0 aGFuIHVwZGF0aW5nIHRoZSBvcCB0eXBlLg0KPiA+Pg0KPiA+DQo+ID4gW1NoYWxseV0gT2ssIHNv IHlvdSBzdWdnZXN0IHRvIG1lcmdlIHhmb3JtIGFuZCBvcF90eXBlIChpbmNsdWRpbmcga2VlcGlu ZyBvcF90eXBlIGluIG9uZSBwbGFjZSkgIGZvcg0KPiBzaW1wbGljaXR5IHNha2UuDQo+ID4NCj4g PiBJZiB3ZSB0YWtlIHRoaXMgY2hhbmdlLCB0aGVuIEkgd2lsbCBwcmVmZXIgdG8ga2VlcCBpdCBh cyB4Zm9ybXMgcmF0aGVyIHRoYW4gb3BfdHlwZXMsIHN1Y2ggYXMsDQo+ID4NCj4gPiBlbnVtIHJ0 ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlcyB7DQo+ID4gUlRFX0NSWVBUT19BU1lNX1hGT1JNX1JT QV9FTkNSWVBULA0KPiA+IFJURV9DUllQVE9fQVNZTV9YRk9STV9SU0FfU0lHTiwNCj4gPiBSVEVf Q1JZUFRPX0FTWU1fWEZPUk1fRFNBX1NJR04sDQo+ID4gUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RT QV9WRVJJRlksDQo+ID4gUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RIX1BSSVZfS0VZX0dFTkVSQVRF LA0KPiA+IFJURV9DUllQVE9fQVNZTV9YRk9STV9ESF9QVUJfS0VZX0dFTkVSQVRFLA0KPiA+IFJU RV9DUllQVE9fQVNZTV9YRk9STV9ESF9TSEFSRURfU0VDUkVUX0NPTVBVVEUsIC4uLi4gYW5kIHNv IG9uLi4NCj4gPiB9DQo+ID4NCj4gPiBUaGVzZSwgd2hlbiBzZXQgb24gYSBydGVfY3J5cHRvX2Fz eW1feGZvcm0gLCB3aWxsIHdvcmsgc2VhbWxlc3NseSBmb3IgYm90aCBzZXNzaW9uIGFuZCBzZXNz aW9uLWxlc3MuDQo+ID4gSSBhbHNvIHNlZSBhZHZhbnRhZ2UgaGVyZSB0byBzdXBwb3J0IHhmb3Jt IGNoYWluaW5nLiBJbiB0aGlzIGNhc2UsIG9wX3R5cGUgaW4NCj4gcnRlX2NyeXB0b19hc3ltX3h4 X29wX3BhcmFtcyBpc24ndCBuZWVkZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZC4NCj4gPiBJdCB3aWxs IGFkZCBiaXQgb2YgcmVwZXRpdGlvbiB0aG91Z2gsIGxpa2UgUlNBX1NJR04gLyBEU0FfU0lHTiwg YnV0IHRoYXQgd291bGQgb2NjdXIgaW4gYW55IGNhc2UsIGlmIHdlDQo+IGFyZSBtZXJnaW5nIHR3 byB0eXBlcy4NCj4gPiBEb2VzIHRoYXQgc291bmQgb2theT8NCj4gDQo+IEkgd291bGQgYmUgYSBi aXQgY29uY2VybmVkIHdpdGggZHJvcHBpbmcgdGhlDQo+IHJ0ZV9jcnlwdG9fYXN5bV94eF9vcF9w YXJhbXMgYXMgaWYgd2UgYXJlIGZvbGxvd2luZyB0aGUgc3ltbWV0cmljIG1vZGVsLA0KPiB0aGUg eGZvcm0gc2hvdWxkIG9ubHkgc3BlY2lmeSB0aGUgaW1tdXRhYmxlIGRhdGEgaW4gcmVsYXRpb24g dG8gYQ0KPiB0cmFuc2Zvcm0gYW5kIHRoZSBvcGVyYXRpb24gc2hvdWxkIHByb3ZpZGUgdGhlIG11 dGFibGUgaW5wdXQgZGF0YS4gSSdtDQo+IG5vdCBzdXJlIGhvdyB0aGlzIHdvdWxkIGxvb2sgbGlr ZSBmb3IgdGhlIGRpZmZlcmVudCBhc3ltbWV0cmljDQo+IG9wZXJhdGlvbnMgYnV0IGlmIHRoZXJl IGFyZSB0cmFuc2Zvcm1zIHRoYXQgZG9uJ3QgaGF2ZSBpbW11dGFibGUgZGF0YQ0KPiB0aGVuIGl0 IHdvdWxkIG1ha2UgbW9yZSBzZW5zZSBub3QgdG8gaGF2ZSBhIHNwZWNpZmljIHhmb3JtIGRhdGEN Cj4gc3RydWN0dXJlIGZvciB0aGF0IGFuZCBwYXNzIHRoZSBkYXRhIHRocm91Z2ggdGhhdCB0cmFu c2Zvcm1hdGlvbnMNCj4gb3BlcmF0aW9uIHN0cnVjdHVyZS4NCj4gDQo+ID4NCj4gPiBXZSB3ZXJl IGFib3V0IHRvIHN1Ym1pdCBPcGVuc3NsIFBNRCB3aXRoIGFzeW0gc3VwcG9ydCB0b2RheS4gQnV0 IEkgd291bGQgaG9sZCBiYWNrIHRpbGwgd2UgYWxpZ24gb24NCj4gdGhpcy4NCj4gPiAuLi4NCj4g Pg0KPiANCj4gT2ssIEkgdGhpbmsgSSBoYWQgbWlzc2VkIHBhcnQgb2YgdGhlIGNvbXBsZXhpdHkg b2YgdGhlIGNoYWluZWQgdXNlZA0KPiBjYXNlLiBJIHRoaW5rIGlmIHdlIGFyZSB0byBmb2xsb3cg dGhlIHN5bW1ldHJpYyBjcnlwdG8gbW9kZWwgd2UgZW5kIHVwDQo+IHdpdGggc29tZXRoaW5nIGFs b25nIHRoZSBsaW5lcyBvZiBhIGZ1bmRhbWVudGFsIG9wIHR5cGVzIC0gZGgsIGRzYSwgbW9kLA0K PiByc2EgZXRjLg0KPiANCj4gZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZXMgew0KPiAJUlRF X0NSWVBUT19BU1lNX09QX0RILA0KPiAJUlRFX0NSWVBUT19BU1lNX09QX0RTQSwNCj4gCVJURV9D UllQVE9fQVNZTV9PUF9NT0QsDQo+IAlSVEVfQ1JZUFRPX0FTWU1fT1BfUlNBLA0KPiB9Ow0KPiAN Cj4gd2l0aCBhIGNvcnJlc3BvbmRpbmcgYXN5bV9vcCBhcyBmb2xsb3dzLg0KPiANCj4gc3RydWN0 IHJ0ZV9jcnlwdG9fYXN5bV9vcCB7DQo+IAl1bmlvbiB7DQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9k ZXZfYXN5bV9zZXNzaW9uICpzZXNzaW9uOw0KPiAJCS8qKjwgSGFuZGxlIGZvciB0aGUgaW5pdGlh bGl6ZWQgc2Vzc2lvbiBjb250ZXh0ICovDQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9y bSAqeGZvcm07DQo+IAl9Ow0KPiANCj4gCXVuaW9uIHsNCj4gCQlzdHJ1Y3QgcnRlX2NyeXB0b19h c3ltX2RoX29wX2RhdGEgZGg7DQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9kc2Ffb3BfZGF0 YSBkc2E7DQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bl9tb2Rfb3BfZGF0YSBtb2Q7DQo+IAkJ c3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9yc2Ffb3BfZGF0YSByc2E7DQo+IAl9IG9wX2RhdGE7DQo+ IH07DQo+IA0KPiANCj4gSW4gdGVybXMgb2YgdGhlIHhmb3JtIGRlZmluaXRpb25zIEknbSBub3Qg c3VyZSB0aGF0IHdlIHNob3VsZCBoYXZlIGFsbA0KPiB0aGUgZGlmZmVyZW50IHRyYW5zZm9ybXMg ZGVmaW5lZCBpbiB0aGUgc2FtZSBlbnVtLiBJZiB3ZSB0YWtlIHRoZSBiZWxvdw0KPiBhcHByb2Fj aCwgYWxsIHRoZSBzcGVjaWZpY3Mgb2YgZWFjaCB0cmFuc2Zvcm0gY291bGQgYmUgc3BsaXQgb3V0 IGludG8NCj4gc2VwYXJhdGUgaGVhZGVycywgZ2l2aW5nIGEgY2xlYW5lciBBUEkuIFRoaXMgd291 bGQgc2VlIGEgeGZvcm0gdHlwZXMNCj4gZW51bSB3aGljaCB3b3VsZCBtaXJyb3IgdGhlIG9wZXJh dGlvbiB0eXBlczoNCj4gDQo+IGVudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3R5cGVzIHsNCj4g CVJURV9DUllQVE9fQVNZTV9YRk9STV9ESCwNCj4gCVJURV9DUllQVE9fQVNZTV9YRk9STV9EU0Es DQo+IAlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fTU9ELA0KPiAJUlRFX0NSWVBUT19BU1lNX1hGT1JN X1JTQSwNCj4gfQ0KPiANCj4gd2l0aCBjb3JyZXNwb25kaW5nIHhmb3JtcyBzdHJ1Y3R1cmVzDQo+ IA0KPiBzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtIGRoOw0KPiBzdHJ1Y3QgcnRlX2NyeXB0 b19hc3ltX3hmb3JtIGRzYTsNCj4gc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybSBtb2RsdXM7 DQo+IHN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gcnNhOw0KPiANCj4gdGhlbiB3aXRoaW4g dGhlIHhmb3JtcyB3b3VsZCBkZWZpbmUgdGhlIHN1Yi10eXBlIG9mIHRoYXQgeGZvcm0gYW5kIGhh dmUNCj4gZGVmaW5pdGlvbnMgb2YgIHRoZSByZWxldmFudCBzZXNzaW9uIGRhdGEgd2hpY2ggaXMg cmVxdWlyZWQsIHdpdGggdGhlDQo+IHJzYSBpdCBtaWdodCBsb29rIGxpa2Ugc29tZXRoaW5nIGxp a2UgdGhpczoNCj4gDQo+IGVudW0gcnRlX2NyeXB0b19hc3ltX3hmb3JtX3JzYV90eXBlcyB7DQo+ IAlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX0VOQ1JZUFQsDQo+IAlSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fUlNBX0RFQ1JZUFQsDQo+IAlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX1NJR04sDQo+ IAlSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX1ZFUklGWSwNCj4gfQ0KPiANCj4gc3RydWN0IHJ0 ZV9jcnlwdG9fYXN5bV94Zm9ybSByc2Egew0KPiAJZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfcnNh X3R5cGVzIHR5cGU7DQo+IAl1bmlvbiB7DQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9y bV9yc2FfZW5jcnlwdF9kYXRhIGVuY3J5cHQ7DQo+IAkJc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94 Zm9ybV9yc2FfZGVjcnlwdF9kYXRhIGRlY3J5cHQ7DQo+IAkJZXRjLi4uDQo+IAl9IGRhdGE7DQo+ IH07DQo+IA0KPiBUaGUgbmVlZCBmb3IgeGZvcm0gc3ViLXR5cGUgZGF0YSBzdHJ1Y3R1cmUgd291 bGQgYmUgZGVwZW5kZW50IG9uIHdoZXRoZXINCj4gdGhlcmUgd2FzIGltbXV0YWJsZSBkYXRhIGFz c29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgdHJhbnNmb3JtLiBBbHNvIGlmDQo+IHdlIHRha2Ug dGhpcyBhcHByb2FjaCBpdCB3b3VsZCBhbGxvdyBlYWNoIG9wZXJhdGlvbiB0eXBlIHRvIGJlIHNl cGFyYXRlZA0KPiBvdXQgaW50byB0aGVyZSBvd24gaGVhZGVycy4NCj4gDQo+ID4+IC4uLi4NCj4g Pj4NCj4gPj4NCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX2NyeXB0b19kaF94Zm9ybSB7 DQo+ID4+PiArICAgICBlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHR5cGU7DQo+ID4+PiAr ICAgICAvKio8IFNldHVwIHhmb3JtIGZvciBrZXkgZ2VuZXJhdGUgb3Igc2hhcmVkIHNlY3JldCBj b21wdXRlICovDQo+ID4+PiArDQo+ID4+DQo+ID4+IHRoZXJlIGlzIGFuIGluY29uc2lzdGVuY3kg aGVyZSBpbiB0ZXJtcyBvZiB3ZXJlIHRoZSBvcF90eXBlIGlzIGRlZmluZWQsDQo+ID4+IGluIHRo aXMgY2FzZSBpdCBpcyBpbiB0aGUgeGZvcm0gYnV0IGl0IG90aGVyIGNhc2VzIFJTQSwgRFNBIGl0 IGlzDQo+ID4+IGRlZmluZWQgaW4gdGhlIG9wZXJhdGlvbiBpbmZvcm1hdGlvbiBpdHNlbGYuIEkg ZG9uJ3Qga25vdyBvZiBhbnkgcmVhc29uDQo+ID4+IHdoeSBpdCBpcyBuZWVkZWQgaW4gdGhlIHhm b3JtIGJ1dCBJIHRoaW5rIGl0IG11c3QgYmUgY29uc2lzdGVudCBhY3Jvc3MNCj4gPj4gYWxsIG9w ZXJhdGlvbnMveGZvcm1zLiBJZGVhbGx5IGZyb20gbXkgcGVyc3BlY3RpdmUgaXQgd291bGQgYmUg aW4gdGhlDQo+ID4+IHJ0ZV9jcnlwdG9fYXN5bV9vcCBzdHJ1Y3R1cmUsIHNlZSBiZWxvdywgYXMg dGhpcyB3b3VsZCBhbGxvdw0KPiA+PiBzZXNzaW9uL3Nlc3Npb24tbGVzcyBvcGVyYXRpb25zIHRv IGJlIHN1cHBvcnRlZCBzZWFtbGVzc2x5Lg0KPiA+Pg0KPiA+DQo+ID4gW1NoYWxseV0gUmVhc29u IHdhcyB4Zm9ybSBjaGFpbmluZy4gQXMgcGVyIEZpb25hIGZlZWRiYWNrLCB3ZSBpZGVudGlmaWVk IHJlcXVpcmVtZW50IHRvIGJyZWFrIERIIEtleQ0KPiBwYWlyDQo+ID4gZ2VuZXJhdGlvbiBpbiB0 byB0d28gIDogUFJJVl9LRVlfR0VORVJBVElPTiBhbmQgUFVCX0tFWV9HRU5FUkFUSU9OLCBzbyBJ IGhhZCB0byBtb3ZlIHRoaXMNCj4gcGFyYW0gYXJvdW5kLg0KPiA+IEJ1dCB0aGlzIHdpbGwgYmUg YWRkcmVzc2VkIG9uY2Ugd2UgY2hhbmdlIHhmb3JtX3R5cGVzIGFzIHBlciBzdWdnZXN0aW9uIGFi b3ZlLg0KPiA+DQo+ID4gLi4uDQo+ID4NCj4gPj4NCj4gPj4gLi4uDQo+ID4+DQo+ID4+PiArLyoq DQo+ID4+PiArICogQXN5bW1ldHJpYyBDcnlwdG9ncmFwaGljIE9wZXJhdGlvbi4NCj4gPj4+ICsg Kg0KPiA+Pj4gKyAqIFN0cnVjdHVyZSBkZXNjcmliaW5nIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJh dGlvbiBwYXJhbXMuDQo+ID4+PiArICoNCj4gPj4+ICsgKi8NCj4gPj4+ICtzdHJ1Y3QgcnRlX2Ny eXB0b19hc3ltX29wIHsNCj4gPj4+ICsgICAgIHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vz c2lvbiAqc2Vzc2lvbjsNCj4gPj4+ICsgICAgIC8qKjwgSGFuZGxlIGZvciB0aGUgaW5pdGlhbGlz ZWQgc2Vzc2lvbiBjb250ZXh0ICovDQo+ID4+PiArDQo+ID4+PiArICAgICBfX2V4dGVuc2lvbl9f DQo+ID4+PiArICAgICB1bmlvbiB7DQo+ID4+PiArICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5 cHRvX3JzYV9vcF9wYXJhbSByc2E7DQo+ID4+PiArICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5 cHRvX21vZF9vcF9wYXJhbSBtb2RleDsNCj4gPj4+ICsgICAgICAgICAgICAgc3RydWN0IHJ0ZV9j cnlwdG9fbW9kX29wX3BhcmFtIG1vZGludjsNCj4gPj4+ICsgICAgICAgICAgICAgc3RydWN0IHJ0 ZV9jcnlwdG9fZGhfb3BfcGFyYW0gZGg7DQo+ID4+PiArICAgICAgICAgICAgIHN0cnVjdCBydGVf Y3J5cHRvX2RzYV9vcF9wYXJhbSBkc2E7DQo+ID4+PiArICAgICB9Ow0KPiA+Pj4gK30gX19ydGVf Y2FjaGVfYWxpZ25lZDsNCj4gPj4+ICsNCj4gPj4gUmVsYXRpbmcgdG8gbXkgY29tbWVudCBvbiBw b3NpdGlvbiBvZiB0aGUgb3BfdHlwZSBhbmQgdGhlIG1pbm9yIGNoYW5nZQ0KPiA+PiBvZiBoYXZp bmcgYW4gdW5pb24gb2Ygc2Vzc2lvbi94Zm9ybSBpbiB0aGUgcnRlX2NyeXB0b19hc3ltX29wIHN0 cnVjdHVyZQ0KPiA+PiB3b3VsZCB0aGVuIGVuYWJsZSBzZXNzaW9ubGVzcyBzdXBwb3J0IHRvIGJl IGFkZGVkIHNlYW1sZXNzIGluIHRoZSBmdXR1cmUNCj4gPj4gd2l0aCBtaW5pbWFsIGVmZmVjdCB0 byB0aGUgY3VycmVudCBwcm9wb3NhbC4NCj4gPg0KPiA+IFtTaGFsbHldIEFnYWluLCB0aGlzIHdp bGwgYWxzbyBiZSByZXNvbHZlZCB3aXRoIGNoYW5nZSB0byB4Zm9ybV90eXBlcw0KPiA+DQo+ID4+ DQo+ID4+IHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3Agew0KPiA+PiAtICAgICAgIHN0cnVjdCBy dGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbjsNCj4gPj4gLSAgICAgICAvKio8IEhh bmRsZSBmb3IgdGhlIGluaXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPiA+PiArICAgICAg IGVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgb3BfdHlwZTsNCj4gPj4gKw0KPiA+PiArICAg ICAgIHVuaW9uIHsNCj4gPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvZGV2X2Fz eW1fc2Vzc2lvbiAqc2Vzc2lvbjsNCj4gPj4gKyAgICAgICAgICAgICAgIC8qKjwgSGFuZGxlIGZv ciB0aGUgaW5pdGlhbGlzZWQgc2Vzc2lvbiBjb250ZXh0ICovDQo+ID4+ICsgICAgICAgICAgICAg ICBzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtICp4Zm9ybTsNCj4gPj4gKyAgICAgICB9Ow0K PiA+Pg0KPiA+IFtTaGFsbHldIE9rLiBXaWxsIGFkZCB0aGlzIGNoYW5nZS4gQnV0IHRoZW4gSSds bCBoYXZlIHRvIGNoZWNrIGlmIGNyeXB0byBQTUQgaGFzIHN1cHBvcnQgdG8gcmVmbGVjdCB3aGlj aA0KPiB0eXBlIG9mIG1vZGUgaXQgc3VwcG9ydHM/DQo+ID4NCj4gVGhlIHNlc3NfdHlwZT1SVEVf Q1JZUFRPX09QX1dJVEhfU0VTU0lPTi9SVEVfQ1JZUFRPX09QX1NFU1NJT05MRVNTDQo+IHNob3Vs ZCBiZSBzZXQgaW4gdGhlIG91dGVyIGNyeXB0b19vcCBzdHJ1Y3QsIHNvIGlmIHRoZSBQTUQgZG9l c24ndA0KPiBzdXBwb3J0IHRoZSBzZWxlY3RlZCBzZXNzX3R5cGUsIGl0IHNob3VsZCBqdXN0IGZh aWwgdGhlIGVucXVldWUgYW5kDQo+IHBvc3NpYmx5IGxvZyBhbiBlcnJvci4NCj4gDQo+ID4gVGhh bmtzIGZvciByZXZpZXcuDQo+ID4gU2hhbGx5DQo+ID4NCj4gPj4gICAgICAgICAgX19leHRlbnNp b25fXw0KPiA+Pg0KPiA+Pg0KPiA+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPiA+Pj4gK30NCj4g Pj4+ICsjZW5kaWYNCj4gPj4+ICsNCj4gPj4+ICsjZW5kaWYgLyogX1JURV9DUllQVE9fQVNZTV9I XyAqLw0KPiA+Pj4NCj4gPg0KDQo=