From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-BN3-obe.outbound.protection.outlook.com (mail-eopbgr680080.outbound.protection.outlook.com [40.107.68.80]) by dpdk.org (Postfix) with ESMTP id 9C3E71B1F8 for ; Thu, 12 Jul 2018 20:16:20 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k6FSz9HiRT1NmAnRSID+vb9YGnmXqhsUatSPiv3YC+k=; b=U8T/DC4Thmou0vPLEvA2nZ4kLljruapSiAqfDRT4Eb5iFzB41lbc6zq7OJ4o6FlZl6KdXrebVZov8GfuYMlyi6aDnyIlQ2fQ1nr5lygKbk1gFL2ULd8G4lDwM/SC3cbOHZHuJKwaR6TNLLH21Yht5dpBxqoXTX+4wy6dEYrNLdg= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3635.namprd07.prod.outlook.com (52.132.102.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.952.18; Thu, 12 Jul 2018 18:16:17 +0000 Received: from CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::f0d4:1828:37f5:5927]) by CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::f0d4:1828:37f5:5927%2]) with mapi id 15.20.0930.022; Thu, 12 Jul 2018 18:16:16 +0000 From: "Verma, Shally" To: "Doherty, Declan" , "pablo.de.lara.guarch@intel.com" CC: "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Kartha, Umesh" Thread-Topic: [dpdk-dev] [PATCH v4 1/4] lib/cryptodev: add asymmetric algos in cryptodev Thread-Index: AQHUFHAX8g9R6E3wfkO5OPi8+keMSqSB2GkAgAUoPwCABNifsA== Date: Thu, 12 Jul 2018 18:16:15 +0000 Message-ID: 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-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Shally.Verma@cavium.com; x-originating-ip: [117.98.204.228] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3635; 7:WHIujEKwHH7MLCtNFKKUxo50kJcMArl4inlWlSf5W2I/3+bNXhBTsmHP6FZ/n381j+94fn+bVzYUgnnGg1h+ipsqzdpla22dBbXYBbr4RrXo70Clu0Y4d7Ht8mCqbiJoredvi8srfB4flcflDobB+SF1WbBmSB2mbZBoAIlVrFKpXAk/fsXAm6S3FfAxjPtRgXs7+fixMyMz5xXW1SrjCumVW8bKQZGuBw3D06lRLBHi7nbWvkpMl9mrTglWOb3N x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(136003)(346002)(396003)(376002)(366004)(39850400004)(13464003)(199004)(189003)(51444003)(6116002)(6246003)(76176011)(305945005)(7736002)(86362001)(561944003)(74316002)(7696005)(66066001)(8936002)(33656002)(14444005)(256004)(81156014)(81166006)(8676002)(93886005)(97736004)(2900100001)(3846002)(6436002)(68736007)(5660300001)(54906003)(110136005)(229853002)(53946003)(9686003)(105586002)(2501003)(5250100002)(99286004)(25786009)(316002)(55016002)(4326008)(478600001)(72206003)(107886003)(14454004)(476003)(106356001)(53936002)(186003)(6506007)(102836004)(2906002)(486006)(26005)(53546011)(11346002)(446003)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3635; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-office365-filtering-correlation-id: c75948d8-f975-4276-6251-08d5e8238ed7 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3635; x-ms-traffictypediagnostic: CY4PR0701MB3635: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(228905959029699); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(93006095)(93001095)(3002001)(3231311)(944501410)(52105095)(149027)(150027)(6041310)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3635; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3635; x-forefront-prvs: 0731AA2DE6 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: v/CAjre08bKDAw2Pu9QDUSoe6Z2IYppN4tgyNH/7MTKoenZYVi8UepRdgN3d2h7n1Sy4Vx4pd5E86NrZJ2Bk3mZ1HLMb9DyaNyBV/74EQjJPXNFplt934LKZNJ5ik6gHo0oOLaosmJt0+cTqtKoN1uE+XYPIEuCsEBfT5usBDuTGexC7L5R24bqG5talkdV+iMCrjrdpAe9c1aI1pj2fWm8RE4H1GGIh9ZIS4AambNDewDvpKULJDTn0cug65ma2SNA3Xc8rNFu+Dl7UnRaSuDdZgBR/Hj9HIzYUDzHERqKRByB4nXPVSLFJTSjHlQ1VUeF+FqYMSPSmtsVKpqveSPkAKm15fe7gT5kcmFmGExg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-Network-Message-Id: c75948d8-f975-4276-6251-08d5e8238ed7 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jul 2018 18:16:15.9678 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3635 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: Thu, 12 Jul 2018 18:16:21 -0000 SEkgRGVjbGFuDQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IERvaGVydHks IERlY2xhbiBbbWFpbHRvOmRlY2xhbi5kb2hlcnR5QGludGVsLmNvbV0NCj5TZW50OiAwOSBKdWx5 IDIwMTggMjA6MjUNCj5UbzogVmVybWEsIFNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+ OyBwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20NCj5DYzogZGV2QGRwZGsub3JnOyBBdGhy ZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47 IE11cnRoeSwgTmlkYWRhdm9sdQ0KPjxOaWRhZGF2b2x1Lk11cnRoeUBjYXZpdW0uY29tPjsgU2Fo dSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlzaCA8QXNoaXNo Lkd1cHRhQGNhdml1bS5jb20+OyBLYXJ0aGEsDQo+VW1lc2ggPFVtZXNoLkthcnRoYUBjYXZpdW0u Y29tPg0KPlN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2NCAxLzRdIGxpYi9jcnlwdG9k ZXY6IGFkZCBhc3ltbWV0cmljIGFsZ29zIGluIGNyeXB0b2Rldg0KPg0KPkV4dGVybmFsIEVtYWls DQo+DQo+T24gMDYvMDcvMjAxOCAzOjI4IFBNLCBWZXJtYSwgU2hhbGx5IHdyb3RlOg0KPj4gSGkg RGVjbGFuDQo+Pg0KPj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+Pj4gRnJvbTogRG9o ZXJ0eSwgRGVjbGFuIFttYWlsdG86ZGVjbGFuLmRvaGVydHlAaW50ZWwuY29tXQ0KPj4+IFNlbnQ6 IDA1IEp1bHkgMjAxOCAyMDoyNA0KPj4+IFRvOiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFA Y2F2aXVtLmNvbT47IHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbQ0KPj4+IENjOiBkZXZA ZHBkay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5 YUBjYXZpdW0uY29tPjsgTXVydGh5LCBOaWRhZGF2b2x1DQo+Pj4gPE5pZGFkYXZvbHUuTXVydGh5 QGNhdml1bS5jb20+OyBTYWh1LCBTdW5pbGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+OyBHdXB0 YSwgQXNoaXNoIDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47DQo+S2FydGhhLA0KPj4+IFVtZXNo IDxVbWVzaC5LYXJ0aGFAY2F2aXVtLmNvbT4NCj4+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UEFUQ0ggdjQgMS80XSBsaWIvY3J5cHRvZGV2OiBhZGQgYXN5bW1ldHJpYyBhbGdvcyBpbiBjcnlw dG9kZXYNCj4+Pg0KPj4+IEV4dGVybmFsIEVtYWlsDQo+Pj4NCj4+PiBIZXkgU2hhbGx5LA0KPj4+ DQo+Pj4ganVzdCBhIGZldyB0aGluZ3MgaW5saW5lIGJlbG93IG1haW5seSBjb25jZXJuZWQgd2l0 aCB0aGUgbmVlZCB0byBiZSBhYmxlDQo+Pj4gdG8gc3VwcG9ydCBzZXNzaW9uLWxlc3Mgb3BlcmF0 aW9ucyBpbiBmdXR1cmUgUE1Ecy4gSSB0aGluayB3aXRoIGEgZmV3DQo+Pj4gbWlub3IgY2hhbmdl cyB0byB0aGUgQVBJIG5vdyBpdCBzaG91bGQgYWxsb3cgc2Vzc2lvbi1sZXNzIHRvIGJlDQo+Pj4g c3VwcG9ydGVkIGxhdGVyIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGEgbWFqb3IgcmV3b3JrIG9mIHRo ZSBBUElzLCBJIGRvbid0DQo+Pj4gdGhpbmsgdGhpcyBzaG91bGQgY2F1c2UgYW55IG1ham9yIHJl d29yayB0byB5b3VyIFBNRCBqdXN0IHRoZSBhZG9wdGlvbg0KPj4+IG9mIHNvbWUgbmV3IG1vcmUg ZXhwbGljaXQgb3AgdHlwZXMuDQo+Pj4NCj4+PiBUaGFua3MNCj4+PiBEZWNsYW4NCj4+Pg0KPj4+ IE9uIDAzLzA3LzIwMTggNDoyNCBQTSwgU2hhbGx5IFZlcm1hIHdyb3RlOg0KPj4+PiBBZGQgcnRl X2NyeXB0b19hc3ltLmggd2l0aCBzdXBwb3J0ZWQgeGZybXMNCj4+Pj4gYW5kIGFzc29jaWF0ZWQg b3Agc3RydWN0dXJlcyBhbmQgQVBJcw0KPj4+Pg0KPj4+PiBBUEkgY3VycmVudGx5IHN1cHBvcnRz Og0KPj4+PiAtIFJTQSBFbmNyeXB0LCBEZWNyeXB0LCBTaWduIGFuZCBWZXJpZnkNCj4+Pj4gLSBN b2R1bGFyIEV4cG9uZW50aWF0aW9uIGFuZCBJbnZlcnNpb24NCj4+Pj4gLSBEU0EgU2lnbiBhbmQg VmVyaWZ5DQo+Pj4+IC0gRGVmZmllLWhlbGxtYW4gcHJpdmF0ZSBrZXkgZXhjaGFuZ2UNCj4+Pj4g LSBEZWZmaWUtaGVsbG1hbiBwdWJsaWMga2V5IGV4Y2hhbmdlDQo+Pj4+IC0gRGVmZmllLWhlbGxt YW4gc2hhcmVkIHNlY3JldCBjb21wdXRlDQo+Pj4+IC0gRGVmZmllLWhlbGxtYW4gcHVibGljL3By aXZhdGUga2V5IHBhaXIgZ2VuZXJhdGlvbg0KPj4+PiB1c2luZyB4Zm9ybSBjaGFpbg0KPj4+Pg0K Pj4+PiBTaWduZWQtb2ZmLWJ5OiBTaGFsbHkgVmVybWEgPHNoYWxseS52ZXJtYUBjYXZpdW1uZXR3 b3Jrcy5jb20+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IFN1bmlsYSBTYWh1IDxzdW5pbGEuc2FodUBj YXZpdW1uZXR3b3Jrcy5jb20+DQo+Pj4+IFNpZ25lZC1vZmYtYnk6IEFzaGlzaCBHdXB0YSA8YXNo aXNoLmd1cHRhQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4+Pj4gU2lnbmVkLW9mZi1ieTogVW1lc2gg S2FydGhhIDx1bWVzaC5rYXJ0aGFAY2F2aXVtbmV0d29ya3MuY29tPg0KPj4+PiAtLS0NCj4+Pj4g ICAgbGliL2xpYnJ0ZV9jcnlwdG9kZXYvTWFrZWZpbGUgICAgICAgICAgfCAgIDEgKw0KPj4+PiAg ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9tZXNvbi5idWlsZCAgICAgICB8ICAgMyArLQ0KPj4+PiAg ICBsaWIvbGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0uaCB8IDQ5NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysNCj4+Pj4gICAgMyBmaWxlcyBjaGFuZ2VkLCA0OTkgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPj4+Pg0KPj4+PiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX2NyDQo+Pj4NCj4+PiAuLi4NCj4+ Pg0KPj4+PiArdHlwZWRlZiBzdHJ1Y3QgcnRlX2NyeXB0b19wYXJhbV90IHsNCj4+Pj4gKyAgICAg dWludDhfdCAqZGF0YTsNCj4+Pj4gKyAgICAgLyoqPCBwb2ludGVyIHRvIGJ1ZmZlciBob2xkaW5n IGRhdGEgKi8NCj4+Pj4gKyAgICAgcnRlX2lvdmFfdCBpb3ZhOw0KPj4+PiArICAgICAvKio8IElP IGFkZHJlc3Mgb2YgZGF0YSBidWZmZXIgKi8NCj4+Pj4gKyAgICAgc2l6ZV90IGxlbmd0aDsNCj4+ Pj4gKyAgICAgLyoqPCBsZW5ndGggb2YgZGF0YSBpbiBieXRlcyAqLw0KPj4+PiArfSBydGVfY3J5 cHRvX3BhcmFtOw0KPj4+DQo+Pj4gV2hhdCBpcyB0aGUgaW50ZW5kZWQgd2F5IGZvciB0aGlzIG1l bW9yeSB0byBiZSBhbGxvY2F0ZWQsDQo+Pg0KPj4gW1NoYWxseV0gSXQgc2hvdWxkIGJlIHBvaW50 ZXIgdG8gZmxhdCBidWZmZXJzIGFuZCBhZGRlZCBvbmx5IHRvIGlucHV0L291dHB1dCBkYXRhIHRv L2Zyb20NCj4+IGFzeW1tZXRyaWMgY3J5cHRvIGVuZ2luZS4NCj4+DQo+Pj4gaXQgc2VlbXMgbGlr ZQ0KPj4+IHRoZXJlIG1pZ2h0IGJlIGEgbW9yZSBnZW5lcmFsIHJlcXVpcmVtZW50IGluIERQREsg Zm9yIElPIGFkZHJlc3NhYmxlDQo+Pj4gbWVtb3J5IChjb21wcmVzc2lvbj8gb3RoZXIgaGFyZHdh cmUgYWNjZWxlYXRvcnMgaW1wbGVtZW50ZWQgb24gRlBHQXMpDQo+Pj4gdGhhbiBqdXN0IGFzeW1t ZXRyaWMgY3J5cHRvLCB3aWxsIHdlIGVuZCB1cCBuZWVkaW5nIHRvIHN1cHBvcnQgZmVhdHVyZXMN Cj4+PiBsaWtlIHNjYXR0ZXIgZ2F0aGVyIGxpc3RzIGluIHRoaXMgc3RydWN0dXJlPw0KPj4NCj4+ IFtTaGFsbHldIEkgZG9u4oCZdCBhbnRpY2lwYXRlIHRoYXQgd2Ugd291bGQgbmVlZCB0byBzdXBw b3J0IHNjYXR0ZXItZ2F0aGVyIGRhdGEgYnVmZmVycyBhcyBmYXIgYXMgaXQgaXMgdXNlZCBmb3Ig YXN5bW1ldHJpYy4NCj4+IEFuZCBJJ20gbm90IGF3YXJlIGlmIHdlIGhhdmUgcmVxdWlyZW1lbnQg dG8gc3VwcG9ydCBpdCBmb3IgYXN5bW1ldHJpYyBwcm9jZXNzaW5nIHNpbmNlIGRhdGEgc2l6ZSBp cyB1c3VhbGx5IHNtYWxsIGZvcg0KPj4gc3VjaCBvcGVyYXRpb25zLiBUaHVzLCBhcHAgaXMgZXhw ZWN0ZWQgdG8gc2VuZCBsaW5lYXIgYnVmZmVycyBmb3IgaW5wdXQvb3V0cHV0Lg0KPj4NCj4+IERv ZXMgdGhhdCBhbnN3ZXIgeW91ciBxdWVzdGlvbj8gT3IgZGlkIEkgbWlzcyBhbnl0aGluZz8NCj4+ DQo+DQo+U3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZS4NCj4NCj4+DQo+Pj4gYnR3IEkg dGhpbmsgdGhpcyBpcw0KPj4+IHByb2JhYmx5IGZpbmUgZm9yIHRoZSBtb21lbnQgYXMgaXQgd2ls bCBiZSBleHBlcm1lbnRpYWwgYnV0IEkgdGhpbmsgaXQNCj4+PiB3aWxsIG5lZWQgdG8gYmUgYWRk cmVzc2VkIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgZXhwZXJtZW50aWFsIHRhZy4NCj4+Pg0K Pj4NCj4+IC4uLg0KPj4NCj4+Pj4gKyAgICAgUlRFX0NSWVBUT19BU1lNX1hGT1JNX01PRElOViwN Cj4+Pg0KPj4+IFdvdWxkIHByZWZlciBpZiB0aGlzIHdhcyBfTU9EX0lOViA6KQ0KPj4+DQo+Pj4+ ICsgICAgIC8qKjwgTW9kdWxhciBJbnZlcnNlDQo+Pj4+ICsgICAgICAqIFBlcmZvcm0gTW9kdWx1 cyBpbnZlcnNlIGJeKC0xKSBtb2Qgbg0KPj4+PiArICAgICAgKi8NCj4+Pj4gKyAgICAgUlRFX0NS WVBUT19BU1lNX1hGT1JNX01PREVYLA0KPj4+DQo+Pj4gYW55IHRoaXMgd2FzIF9NT0RfRVggOikN Cj4+DQo+PiBbU2hhbGx5XSBmaW5lIHdpbGwgZG8gbmFtZSBjaGFuZ2UuDQo+Pg0KPj4+DQo+Pj4+ ICsgICAgIC8qKjwgTW9kdWxhciBFeHBvbmVudGlhdGlvbg0KPj4+PiArICAgICAgKiBQZXJmb3Jt IE1vZHVsYXIgRXhwb25lbnRpYXRpb24gYl5lIG1vZCBuDQo+Pj4+ICsgICAgICAqLw0KPj4+PiAr ICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fVFlQRV9MSVNUX0VORA0KPj4+PiArICAgICAvKio8 IEVuZCBvZiBsaXN0ICovDQo+Pj4+ICt9Ow0KPj4+PiArDQo+Pj4+ICsvKioNCj4+Pj4gKyAqIEFz eW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbiB0eXBlIHZhcmlhbnRzDQo+Pj4+ICsgKi8NCj4+Pj4g K2VudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGUgew0KPj4+PiArICAgICBSVEVfQ1JZUFRPX0FT WU1fT1BfRU5DUllQVCwNCj4+Pj4gKyAgICAgLyoqPCBBc3ltbWV0cmljIEVuY3J5cHQgb3BlcmF0 aW9uICovDQo+Pj4+ICsgICAgIFJURV9DUllQVE9fQVNZTV9PUF9ERUNSWVBULA0KPj4+PiArICAg ICAvKio8IEFzeW1tZXRyaWMgRGVjcnlwdCBvcGVyYXRpb24gKi8NCj4+Pj4gKyAgICAgUlRFX0NS WVBUT19BU1lNX09QX1NJR04sDQo+Pj4+ICsgICAgIC8qKjwgU2lnbmF0dXJlIEdlbmVyYXRpb24g b3BlcmF0aW9uICovDQo+Pj4+ICsgICAgIFJURV9DUllQVE9fQVNZTV9PUF9WRVJJRlksDQo+Pj4+ ICsgICAgIC8qKjwgU2lnbmF0dXJlIFZlcmlmaWNhdGlvbiBvcGVyYXRpb24gKi8NCj4+Pj4gKyAg ICAgUlRFX0NSWVBUT19BU1lNX09QX1BSSVZBVEVfS0VZX0dFTkVSQVRFLA0KPj4+PiArICAgICAv Kio8IERIIFByaXZhdGUgS2V5IGdlbmVyYXRpb24gb3BlcmF0aW9uICovDQo+Pj4+ICsgICAgIFJU RV9DUllQVE9fQVNZTV9PUF9QVUJMSUNfS0VZX0dFTkVSQVRFLA0KPj4+PiArICAgICAvKio8IERI IFB1YmxpYyBLZXkgZ2VuZXJhdGlvbiBvcGVyYXRpb24gKi8NCj4+Pj4gKyAgICAgUlRFX0NSWVBU T19BU1lNX09QX1NIQVJFRF9TRUNSRVRfQ09NUFVURSwNCj4+Pj4gKyAgICAgLyoqPCBESCBTaGFy ZWQgU2VjcmV0IGNvbXB1dGUgb3BlcmF0aW9uICovDQo+Pj4+ICsgICAgIFJURV9DUllQVE9fQVNZ TV9PUF9MSVNUX0VORA0KPj4+PiArfTsNCj4+Pj4gKw0KPj4+DQo+Pj4gSSB0aGluayB0aGF0IGhh dmluZyBnZW5lcmljIG9wZXJhdGlvbiB0eXBlcyB3aGljaCBtYXkgb3IgbWF5IG5vdCBhcHBseQ0K Pj4+IHRvIGFsbCBvZiB0aGUgZGVmaW5lZCB4Zm9ybXMgaXMgY29uZnVzaW5nIGZyb20gYSB1c2Vy IHBlcnNwZWN0aXZlIGFuZCBpbg0KPj4+IHRoZSBsb25nZXIgdGVybSB3aWxsIG1ha2UgaXQgaW1w b3NzaWJsZSB0byBzdXBwb3J0IHNlc3Npb24tbGVzcw0KPj4+IGFzeW1tZXRyaWMgb3BlcmF0aW9u cy4gSWYgd2UgaW5zdGVhZCBkbyBzb21ldGhpbmcgbGlrZQ0KPj4+DQo+Pj4gICAgICAgICBSVEVf Q1JZUFRPX0FTWU1fT1BfUlNBX0VOQ1JZUFQsDQo+Pj4gICAgICAgICBSVEVfQ1JZUFRPX0FTWU1f T1BfUlNBX0RFQ1JZUFQsDQo+Pj4gICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfUlNBX1NJR04s DQo+Pj4gICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfUlNBX1ZFUklGWSwNCj4+PiAgICAgICAg IFJURV9DUllQVE9fQVNZTV9PUF9ESF9LRVlfR0VORVJBVEUsDQo+Pj4gICAgICAgICBSVEVfQ1JZ UFRPX0FTWU1fT1BfREhfU0hBUkVEX1NFQ1JFVF9DT01QVVRFLA0KPj4+ICAgICAgICAgZXRjLi4u DQo+Pj4NCj4+PiBUaGVuIHRoZSBvcCB0eXBlIGJlY29tZXMgdmVyeSBleHBsaWNpdCBhbmQgd2ls bCBhbGxvdyBzZXNzaW9uLWxlc3MNCj4+PiBvcGVyYXRpb25zIHRvIGJlIHN1cHBvcnRlZCBieSBQ TURzLiBUaGlzIHNob3VsZG4ndCBoYXZlIGFueSBpbXBhY3Qgb24NCj4+PiB5b3VyIGN1cnJlbnQg aW1wbGVtZW50YXRpb24gb3RoZXIgdGhhbiB1cGRhdGluZyB0aGUgb3AgdHlwZS4NCj4+Pg0KPj4N Cj4+IFtTaGFsbHldIE9rLCBzbyB5b3Ugc3VnZ2VzdCB0byBtZXJnZSB4Zm9ybSBhbmQgb3BfdHlw ZSAoaW5jbHVkaW5nIGtlZXBpbmcgb3BfdHlwZSBpbiBvbmUgcGxhY2UpICBmb3Igc2ltcGxpY2l0 eSBzYWtlLg0KPj4NCj4+IElmIHdlIHRha2UgdGhpcyBjaGFuZ2UsIHRoZW4gSSB3aWxsIHByZWZl ciB0byBrZWVwIGl0IGFzIHhmb3JtcyByYXRoZXIgdGhhbiBvcF90eXBlcywgc3VjaCBhcywNCj4+ DQo+PiBlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlcyB7DQo+PiBSVEVfQ1JZUFRPX0FT WU1fWEZPUk1fUlNBX0VOQ1JZUFQsDQo+PiBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX1NJR04s DQo+PiBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRFNBX1NJR04sDQo+PiBSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fRFNBX1ZFUklGWSwNCj4+IFJURV9DUllQVE9fQVNZTV9YRk9STV9ESF9QUklWX0tFWV9H RU5FUkFURSwNCj4+IFJURV9DUllQVE9fQVNZTV9YRk9STV9ESF9QVUJfS0VZX0dFTkVSQVRFLA0K Pj4gUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RIX1NIQVJFRF9TRUNSRVRfQ09NUFVURSwgLi4uLiBh bmQgc28gb24uLg0KPj4gfQ0KPj4NCj4+IFRoZXNlLCB3aGVuIHNldCBvbiBhIHJ0ZV9jcnlwdG9f YXN5bV94Zm9ybSAsIHdpbGwgd29yayBzZWFtbGVzc2x5IGZvciBib3RoIHNlc3Npb24gYW5kIHNl c3Npb24tbGVzcy4NCj4+IEkgYWxzbyBzZWUgYWR2YW50YWdlIGhlcmUgdG8gc3VwcG9ydCB4Zm9y bSBjaGFpbmluZy4gSW4gdGhpcyBjYXNlLCBvcF90eXBlIGluIHJ0ZV9jcnlwdG9fYXN5bV94eF9v cF9wYXJhbXMgaXNuJ3QgbmVlZGVkIGFuZCB3aWxsDQo+YmUgcmVtb3ZlZC4NCj4+IEl0IHdpbGwg YWRkIGJpdCBvZiByZXBldGl0aW9uIHRob3VnaCwgbGlrZSBSU0FfU0lHTiAvIERTQV9TSUdOLCBi dXQgdGhhdCB3b3VsZCBvY2N1ciBpbiBhbnkgY2FzZSwgaWYgd2UgYXJlIG1lcmdpbmcgdHdvIHR5 cGVzLg0KPj4gRG9lcyB0aGF0IHNvdW5kIG9rYXk/DQo+DQo+SSB3b3VsZCBiZSBhIGJpdCBjb25j ZXJuZWQgd2l0aCBkcm9wcGluZyB0aGUNCj5ydGVfY3J5cHRvX2FzeW1feHhfb3BfcGFyYW1zIGFz IGlmIHdlIGFyZSBmb2xsb3dpbmcgdGhlIHN5bW1ldHJpYyBtb2RlbCwNCj50aGUgeGZvcm0gc2hv dWxkIG9ubHkgc3BlY2lmeSB0aGUgaW1tdXRhYmxlIGRhdGEgaW4gcmVsYXRpb24gdG8gYQ0KPnRy YW5zZm9ybSBhbmQgdGhlIG9wZXJhdGlvbiBzaG91bGQgcHJvdmlkZSB0aGUgbXV0YWJsZSBpbnB1 dCBkYXRhLiBJJ20NCj5ub3Qgc3VyZSBob3cgdGhpcyB3b3VsZCBsb29rIGxpa2UgZm9yIHRoZSBk aWZmZXJlbnQgYXN5bW1ldHJpYw0KPm9wZXJhdGlvbnMgYnV0IGlmIHRoZXJlIGFyZSB0cmFuc2Zv cm1zIHRoYXQgZG9uJ3QgaGF2ZSBpbW11dGFibGUgZGF0YQ0KPnRoZW4gaXQgd291bGQgbWFrZSBt b3JlIHNlbnNlIG5vdCB0byBoYXZlIGEgc3BlY2lmaWMgeGZvcm0gZGF0YQ0KPnN0cnVjdHVyZSBm b3IgdGhhdCBhbmQgcGFzcyB0aGUgZGF0YSB0aHJvdWdoIHRoYXQgdHJhbnNmb3JtYXRpb25zDQo+ b3BlcmF0aW9uIHN0cnVjdHVyZS4NCg0KW1NoYWxseV0gQmVsaWV2ZSB0aGVyZSdzIHNvbWUgbWlz dW5kZXJzdGFuZGluZyBoZXJlLiBNeSBzdWdnZXN0aW9uIHdhcyBub3QgdG8gZHJvcCBhc3ltX3h4 X29wX3BhcmFtcywgYnV0IGp1c3QgYW4gb3BfdHlwZSBmaWVsZCBmcm9tIG9wX3BhcmFtcyBpZiB4 Zm9ybSB0eXBlcyBhcmUgcmVkZWZpbmVkIGFzIHN1Z2dlc3RlZCBhYm92ZS4gSG93ZXZlciwgSSBz ZWUgYmVsb3cgeW91IGhhdmUgYW5vdGhlciBwcm9wb3NhbCBzbyBJIHdpbGwgY2xhcmlmeSBtb3Jl IHRoZXJlLg0KQXMgYSBzaWRlIG5vdGUsIEFzeW0gd29ya3Mgb24gc2ltaWxhciBwcmluY2lwbGUg YXMgc3ltbWV0cmljIGkuZS4gaW1tdXRhYmxlIGRhdGEgaW4geGZvcm0gYW5kIG11dGFibGUgaW4g b3BfcGFyYW1zLiBTbywgb3BfcGFyYW1zIGRlZmluaXRlbHkgd2lsbCBiZSB0aGVyZS4NCg0KPg0K Pj4NCj4+IFdlIHdlcmUgYWJvdXQgdG8gc3VibWl0IE9wZW5zc2wgUE1EIHdpdGggYXN5bSBzdXBw b3J0IHRvZGF5LiBCdXQgSSB3b3VsZCBob2xkIGJhY2sgdGlsbCB3ZSBhbGlnbiBvbiB0aGlzLg0K Pj4gLi4uDQo+Pg0KPg0KPk9rLCBJIHRoaW5rIEkgaGFkIG1pc3NlZCBwYXJ0IG9mIHRoZSBjb21w bGV4aXR5IG9mIHRoZSBjaGFpbmVkIHVzZWQNCj5jYXNlLiBJIHRoaW5rIGlmIHdlIGFyZSB0byBm b2xsb3cgdGhlIHN5bW1ldHJpYyBjcnlwdG8gbW9kZWwgd2UgZW5kIHVwDQo+d2l0aCBzb21ldGhp bmcgYWxvbmcgdGhlIGxpbmVzIG9mIGEgZnVuZGFtZW50YWwgb3AgdHlwZXMgLSBkaCwgZHNhLCBt b2QsDQo+cnNhIGV0Yy4NCj4NCj5lbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlcyB7DQo+ICAg ICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfREgsDQo+ICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fT1Bf RFNBLA0KPiAgICAgICAgUlRFX0NSWVBUT19BU1lNX09QX01PRCwNCj4gICAgICAgIFJURV9DUllQ VE9fQVNZTV9PUF9SU0EsDQo+fTsNCj4NCj53aXRoIGEgY29ycmVzcG9uZGluZyBhc3ltX29wIGFz IGZvbGxvd3MuDQo+DQo+c3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCB7DQo+ICAgICAgICB1bmlv biB7DQo+ICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAq c2Vzc2lvbjsNCj4gICAgICAgICAgICAgICAgLyoqPCBIYW5kbGUgZm9yIHRoZSBpbml0aWFsaXpl ZCBzZXNzaW9uIGNvbnRleHQgKi8NCj4gICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9jcnlwdG9f YXN5bV94Zm9ybSAqeGZvcm07DQo+ICAgICAgICB9Ow0KPg0KPiAgICAgICAgdW5pb24gew0KPiAg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX2RoX29wX2RhdGEgZGg7DQo+ICAg ICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fZHNhX29wX2RhdGEgZHNhOw0KPiAg ICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19hc3luX21vZF9vcF9kYXRhIG1vZDsNCj4g ICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9yc2Ffb3BfZGF0YSByc2E7DQo+ ICAgICAgICB9IG9wX2RhdGE7DQo+fTsNCj4NCj4NCj5JbiB0ZXJtcyBvZiB0aGUgeGZvcm0gZGVm aW5pdGlvbnMgSSdtIG5vdCBzdXJlIHRoYXQgd2Ugc2hvdWxkIGhhdmUgYWxsDQo+dGhlIGRpZmZl cmVudCB0cmFuc2Zvcm1zIGRlZmluZWQgaW4gdGhlIHNhbWUgZW51bS4gSWYgd2UgdGFrZSB0aGUg YmVsb3cNCj5hcHByb2FjaCwgYWxsIHRoZSBzcGVjaWZpY3Mgb2YgZWFjaCB0cmFuc2Zvcm0gY291 bGQgYmUgc3BsaXQgb3V0IGludG8NCj5zZXBhcmF0ZSBoZWFkZXJzLCBnaXZpbmcgYSBjbGVhbmVy IEFQSS4gVGhpcyB3b3VsZCBzZWUgYSB4Zm9ybSB0eXBlcw0KPmVudW0gd2hpY2ggd291bGQgbWly cm9yIHRoZSBvcGVyYXRpb24gdHlwZXM6DQo+DQo+ZW51bSBydGVfY3J5cHRvX2FzeW1feGZvcm1f dHlwZXMgew0KPiAgICAgICAgUlRFX0NSWVBUT19BU1lNX1hGT1JNX0RILA0KPiAgICAgICAgUlRF X0NSWVBUT19BU1lNX1hGT1JNX0RTQSwNCj4gICAgICAgIFJURV9DUllQVE9fQVNZTV9YRk9STV9N T0QsDQo+ICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBLA0KPn0NCj4NCj53aXRoIGNv cnJlc3BvbmRpbmcgeGZvcm1zIHN0cnVjdHVyZXMNCj4NCj5zdHJ1Y3QgcnRlX2NyeXB0b19hc3lt X3hmb3JtIGRoOw0KPnN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0gZHNhOw0KPnN0cnVjdCBy dGVfY3J5cHRvX2FzeW1feGZvcm0gbW9kbHVzOw0KPnN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZv cm0gcnNhOw0KPg0KPnRoZW4gd2l0aGluIHRoZSB4Zm9ybXMgd291bGQgZGVmaW5lIHRoZSBzdWIt dHlwZSBvZiB0aGF0IHhmb3JtIGFuZCBoYXZlDQo+ZGVmaW5pdGlvbnMgb2YgIHRoZSByZWxldmFu dCBzZXNzaW9uIGRhdGEgd2hpY2ggaXMgcmVxdWlyZWQsIHdpdGggdGhlDQo+cnNhIGl0IG1pZ2h0 IGxvb2sgbGlrZSBzb21ldGhpbmcgbGlrZSB0aGlzOg0KPg0KPmVudW0gcnRlX2NyeXB0b19hc3lt X3hmb3JtX3JzYV90eXBlcyB7DQo+ICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX0VO Q1JZUFQsDQo+ICAgICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX0RFQ1JZUFQsDQo+ICAg ICAgICBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fUlNBX1NJR04sDQo+ICAgICAgICBSVEVfQ1JZUFRP X0FTWU1fWEZPUk1fUlNBX1ZFUklGWSwNCj59DQo+DQo+c3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94 Zm9ybSByc2Egew0KPiAgICAgICAgZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfcnNhX3R5cGVzIHR5 cGU7DQo+ICAgICAgICB1bmlvbiB7DQo+ICAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRv X2FzeW1feGZvcm1fcnNhX2VuY3J5cHRfZGF0YSBlbmNyeXB0Ow0KPiAgICAgICAgICAgICAgICBz dHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtX3JzYV9kZWNyeXB0X2RhdGEgZGVjcnlwdDsNCj4g ICAgICAgICAgICAgICAgZXRjLi4uDQo+ICAgICAgICB9IGRhdGE7DQo+fTsNCj4NCj5UaGUgbmVl ZCBmb3IgeGZvcm0gc3ViLXR5cGUgZGF0YSBzdHJ1Y3R1cmUgd291bGQgYmUgZGVwZW5kZW50IG9u IHdoZXRoZXINCj50aGVyZSB3YXMgaW1tdXRhYmxlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgcGFy dGljdWxhciB0cmFuc2Zvcm0uIEFsc28gaWYNCj53ZSB0YWtlIHRoaXMgYXBwcm9hY2ggaXQgd291 bGQgYWxsb3cgZWFjaCBvcGVyYXRpb24gdHlwZSB0byBiZSBzZXBhcmF0ZWQNCj5vdXQgaW50byB0 aGVyZSBvd24gaGVhZGVycy4NCj4NCg0KW1NoYWxseV0gSSdtIGFzc3VtaW5nIHlvdSBhcmUgbm90 IHN1Z2dlc3RpbmcgYW55IGNoYW5nZXMgdG8gZXhpc3RpbmcgZnVuZGFtZW50YWwgcnRlX2NyeXB0 b19hc3ltX29wIGFuZCBydGVfY3J5cHRvX2FzeW1feGZvcm0gc3RydWN0dXJlcyBoZXJlLCBhcyB0 aGV5J3JlIA0KZGVmaW5lZCB0aGUgd2F5IHlvdSBtZW50aW9uZWQuICBPbmx5IGNoYW5nZSBJIHNl ZSBoYXZpbmcgYSBuZXcgeGZvcm0gc3ViLXR5cGUgaW4gcGVyLXhmb3JtIHN0cnVjdC4NClNpbmNl IHdlIGFscmVhZHkgaGF2ZSBhbiBlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHsNClJURV9D UllQVE9fQVNZTV9PUF9FTkNSWVBULA0KUlRFX0NSWVBUT19BU1lNX09QX1NJR04NClJURV9DUllQ VE9fQVNZTV9PUF9WRVJJRlkNClJURV9DUllQVE9fQVNZTV9PUF9LRVlfUEFJUl9HRU5FUkFURSBh bmQgc28gb24uLi4NCn0NClNvLCB3ZSBjYW4gdXNlIGV4aXN0aW5nIG9uZSBpbnRvIGFzeW1feHhf eGZvcm0gc3RydWN0dXJlIHNvIGV2ZXJ5IHJ0ZV9jcnlwdG9fYXN5bV94eF94Zm9ybSBzdHJ1Y3Qg d291bGQgbG9vayBsaWtlOg0KDQpzdHJ1Y3QgcnRlX2NyeXB0b194eHhfeGZvcm0gew0KCWVudW0g cnRlX2NyeXB0b19hc3ltX29wX3R5cGU7DQoJLyoqPCBTaWduL1ZlcmlmeS9FbmNyeXB0L0RlY3J5 cHQva2V5IGdlbmVyYXRlLyAqLw0KDQoJLyogb3RoZXIgeGZvcm0gcGFyYW1zIHN1Y2ggYXMgcHVi bGljIGFuZCBwcml2YXRlIGtleSAqLw0KfQ0KDQpTaW5jZSBldmVyeSB4Zm9ybSByZXR1cm5zIGJp dG1hc2sgb2Ygb3BfdHlwZXMgc3VwcG9ydGVkIGluIGNhcGFiaWxpdHkgc3RydWN0dXJlLiBTbywg YXBwIHdvdWxkIGtub3cgd2hpY2ggb3AgdHlwZXMgYXJlIHN1cHBvcnRlZCBvbiB4Zm9ybS4NCkFs c28sIEkgZG9u4oCZdCBzZWUgYSBuZWVkIGEgbmV3IGRlZmluZSBzdWNoIGFzIE9QX1JTQS9PUF9E U0EgYXMgZXZlcnkgb3AgY29tZSBhc3NvY2lhdGVkIHdpdGggc2Vzc2lvbi94Zm9ybSB3aXRoIHNh bWUgaW5mb3JtYXRpb24sIHNvIHJlbGV2YW50IHhmb3JtIG9wIHBhcmFtcyB3aWxsIGJlIHJlZmVy ZW5jZWQgYmFzZWQgb24gdGhhdC4NCg0KVGhhbmtzDQpTaGFsbHkNCg0KPj4+IC4uLi4NCj4+Pg0K Pj4+DQo+Pj4+ICsgKi8NCj4+Pj4gK3N0cnVjdCBydGVfY3J5cHRvX2RoX3hmb3JtIHsNCj4+Pj4g KyAgICAgZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfdHlwZSB0eXBlOw0KPj4+PiArICAgICAvKio8 IFNldHVwIHhmb3JtIGZvciBrZXkgZ2VuZXJhdGUgb3Igc2hhcmVkIHNlY3JldCBjb21wdXRlICov DQo+Pj4+ICsNCj4+Pg0KPj4+IHRoZXJlIGlzIGFuIGluY29uc2lzdGVuY3kgaGVyZSBpbiB0ZXJt cyBvZiB3ZXJlIHRoZSBvcF90eXBlIGlzIGRlZmluZWQsDQo+Pj4gaW4gdGhpcyBjYXNlIGl0IGlz IGluIHRoZSB4Zm9ybSBidXQgaXQgb3RoZXIgY2FzZXMgUlNBLCBEU0EgaXQgaXMNCj4+PiBkZWZp bmVkIGluIHRoZSBvcGVyYXRpb24gaW5mb3JtYXRpb24gaXRzZWxmLiBJIGRvbid0IGtub3cgb2Yg YW55IHJlYXNvbg0KPj4+IHdoeSBpdCBpcyBuZWVkZWQgaW4gdGhlIHhmb3JtIGJ1dCBJIHRoaW5r IGl0IG11c3QgYmUgY29uc2lzdGVudCBhY3Jvc3MNCj4+PiBhbGwgb3BlcmF0aW9ucy94Zm9ybXMu IElkZWFsbHkgZnJvbSBteSBwZXJzcGVjdGl2ZSBpdCB3b3VsZCBiZSBpbiB0aGUNCj4+PiBydGVf Y3J5cHRvX2FzeW1fb3Agc3RydWN0dXJlLCBzZWUgYmVsb3csIGFzIHRoaXMgd291bGQgYWxsb3cN Cj4+PiBzZXNzaW9uL3Nlc3Npb24tbGVzcyBvcGVyYXRpb25zIHRvIGJlIHN1cHBvcnRlZCBzZWFt bGVzc2x5Lg0KPj4+DQo+Pg0KPj4gW1NoYWxseV0gUmVhc29uIHdhcyB4Zm9ybSBjaGFpbmluZy4g QXMgcGVyIEZpb25hIGZlZWRiYWNrLCB3ZSBpZGVudGlmaWVkIHJlcXVpcmVtZW50IHRvIGJyZWFr IERIIEtleSBwYWlyDQo+PiBnZW5lcmF0aW9uIGluIHRvIHR3byAgOiBQUklWX0tFWV9HRU5FUkFU SU9OIGFuZCBQVUJfS0VZX0dFTkVSQVRJT04sIHNvIEkgaGFkIHRvIG1vdmUgdGhpcyBwYXJhbSBh cm91bmQuDQo+PiBCdXQgdGhpcyB3aWxsIGJlIGFkZHJlc3NlZCBvbmNlIHdlIGNoYW5nZSB4Zm9y bV90eXBlcyBhcyBwZXIgc3VnZ2VzdGlvbiBhYm92ZS4NCj4+DQo+PiAuLi4NCj4+DQo+Pj4NCj4+ PiAuLi4NCj4+Pg0KPj4+PiArLyoqDQo+Pj4+ICsgKiBBc3ltbWV0cmljIENyeXB0b2dyYXBoaWMg T3BlcmF0aW9uLg0KPj4+PiArICoNCj4+Pj4gKyAqIFN0cnVjdHVyZSBkZXNjcmliaW5nIGFzeW1t ZXRyaWMgY3J5cHRvIG9wZXJhdGlvbiBwYXJhbXMuDQo+Pj4+ICsgKg0KPj4+PiArICovDQo+Pj4+ ICtzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX29wIHsNCj4+Pj4gKyAgICAgc3RydWN0IHJ0ZV9jcnlw dG9kZXZfYXN5bV9zZXNzaW9uICpzZXNzaW9uOw0KPj4+PiArICAgICAvKio8IEhhbmRsZSBmb3Ig dGhlIGluaXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPj4+PiArDQo+Pj4+ICsgICAgIF9f ZXh0ZW5zaW9uX18NCj4+Pj4gKyAgICAgdW5pb24gew0KPj4+PiArICAgICAgICAgICAgIHN0cnVj dCBydGVfY3J5cHRvX3JzYV9vcF9wYXJhbSByc2E7DQo+Pj4+ICsgICAgICAgICAgICAgc3RydWN0 IHJ0ZV9jcnlwdG9fbW9kX29wX3BhcmFtIG1vZGV4Ow0KPj4+PiArICAgICAgICAgICAgIHN0cnVj dCBydGVfY3J5cHRvX21vZF9vcF9wYXJhbSBtb2RpbnY7DQo+Pj4+ICsgICAgICAgICAgICAgc3Ry dWN0IHJ0ZV9jcnlwdG9fZGhfb3BfcGFyYW0gZGg7DQo+Pj4+ICsgICAgICAgICAgICAgc3RydWN0 IHJ0ZV9jcnlwdG9fZHNhX29wX3BhcmFtIGRzYTsNCj4+Pj4gKyAgICAgfTsNCj4+Pj4gK30gX19y dGVfY2FjaGVfYWxpZ25lZDsNCj4+Pj4gKw0KPj4+IFJlbGF0aW5nIHRvIG15IGNvbW1lbnQgb24g cG9zaXRpb24gb2YgdGhlIG9wX3R5cGUgYW5kIHRoZSBtaW5vciBjaGFuZ2UNCj4+PiBvZiBoYXZp bmcgYW4gdW5pb24gb2Ygc2Vzc2lvbi94Zm9ybSBpbiB0aGUgcnRlX2NyeXB0b19hc3ltX29wIHN0 cnVjdHVyZQ0KPj4+IHdvdWxkIHRoZW4gZW5hYmxlIHNlc3Npb25sZXNzIHN1cHBvcnQgdG8gYmUg YWRkZWQgc2VhbWxlc3MgaW4gdGhlIGZ1dHVyZQ0KPj4+IHdpdGggbWluaW1hbCBlZmZlY3QgdG8g dGhlIGN1cnJlbnQgcHJvcG9zYWwuDQo+Pg0KPj4gW1NoYWxseV0gQWdhaW4sIHRoaXMgd2lsbCBh bHNvIGJlIHJlc29sdmVkIHdpdGggY2hhbmdlIHRvIHhmb3JtX3R5cGVzDQo+Pg0KPj4+DQo+Pj4g c3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9vcCB7DQo+Pj4gLSAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0 b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Npb247DQo+Pj4gLSAgICAgICAvKio8IEhhbmRsZSBmb3Ig dGhlIGluaXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPj4+ICsgICAgICAgZW51bSBydGVf Y3J5cHRvX2FzeW1fb3BfdHlwZSBvcF90eXBlOw0KPj4+ICsNCj4+PiArICAgICAgIHVuaW9uIHsN Cj4+PiArICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9jcnlwdG9kZXZfYXN5bV9zZXNzaW9uICpz ZXNzaW9uOw0KPj4+ICsgICAgICAgICAgICAgICAvKio8IEhhbmRsZSBmb3IgdGhlIGluaXRpYWxp c2VkIHNlc3Npb24gY29udGV4dCAqLw0KPj4+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2Ny eXB0b19hc3ltX3hmb3JtICp4Zm9ybTsNCj4+PiArICAgICAgIH07DQo+Pj4NCj4+IFtTaGFsbHld IE9rLiBXaWxsIGFkZCB0aGlzIGNoYW5nZS4gQnV0IHRoZW4gSSdsbCBoYXZlIHRvIGNoZWNrIGlm IGNyeXB0byBQTUQgaGFzIHN1cHBvcnQgdG8gcmVmbGVjdCB3aGljaCB0eXBlIG9mIG1vZGUgaXQg c3VwcG9ydHM/DQo+Pg0KPlRoZSBzZXNzX3R5cGU9UlRFX0NSWVBUT19PUF9XSVRIX1NFU1NJT04v UlRFX0NSWVBUT19PUF9TRVNTSU9OTEVTUw0KPnNob3VsZCBiZSBzZXQgaW4gdGhlIG91dGVyIGNy eXB0b19vcCBzdHJ1Y3QsIHNvIGlmIHRoZSBQTUQgZG9lc24ndA0KPnN1cHBvcnQgdGhlIHNlbGVj dGVkIHNlc3NfdHlwZSwgaXQgc2hvdWxkIGp1c3QgZmFpbCB0aGUgZW5xdWV1ZSBhbmQNCj5wb3Nz aWJseSBsb2cgYW4gZXJyb3IuDQo+DQo+PiBUaGFua3MgZm9yIHJldmlldy4NCj4+IFNoYWxseQ0K Pj4NCj4+PiAgICAgICAgICBfX2V4dGVuc2lvbl9fDQo+Pj4NCj4+Pg0KPj4+PiArI2lmZGVmIF9f Y3BsdXNwbHVzDQo+Pj4+ICt9DQo+Pj4+ICsjZW5kaWYNCj4+Pj4gKw0KPj4+PiArI2VuZGlmIC8q IF9SVEVfQ1JZUFRPX0FTWU1fSF8gKi8NCj4+Pj4NCj4+DQoNCg==