From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0085.outbound.protection.outlook.com [104.47.37.85]) by dpdk.org (Postfix) with ESMTP id D70775B26 for ; Mon, 9 Jul 2018 19:12:09 +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=nmdG2YbikFRpvX4aXFNOVmvZgQFqVkWKlJff/sMVKRY=; b=L+MgXmV5hhxuHF1D1IHgnP/sqF9GtUX7xBEzj0v94Xtr/3LtetWNyFU0jv7WDMfcDrtHFosXVG4AqKebJSizoUgJiLATIPbwfCmlyM4l1fI/Xiab0ijZ3f42e7T5JS3GAA2R60qkSTLHfSf3827eS41Xl1K+fLGznhb0+EeEfAs= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.930.21; Mon, 9 Jul 2018 17:12:08 +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; Mon, 9 Jul 2018 17:12:07 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "Doherty, Declan" , "De Lara Guarch, Pablo" 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+keMSqSB2GkAgAUoPwCAAB6wAIAAB10g Date: Mon, 9 Jul 2018 17:12:07 +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> <348A99DA5F5B7549AA880327E580B435895D52BA@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B435895D52BA@IRSMSX101.ger.corp.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: [171.49.225.192] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3634; 7:mokMCDGWTlRvDHf2yw3OlQO1f1rdENNstcWJr2F07jvOsIhXD2Ehw6Qvzz6ioDk9fqeMy3wRuFYwGUzVaG9xDObDsoVigqXzN7HwdcyvOKFRt9ia8RMLtAURYryHiqtnVAlv0Kp8nka/nzD2hjsjSXVs7DzHs+GEa5MeKmPv+RjWs2HC7Fk1qomFd0+WKJa5cuHkI5W97yaedoHR+y4J1Y69+3ijg5QA+5r+E9vlyHWlXWai85RPOfU8UAAtfKXC x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(376002)(136003)(346002)(396003)(39850400004)(366004)(51444003)(13464003)(199004)(189003)(5660300001)(7696005)(76176011)(81156014)(2906002)(107886003)(6246003)(3846002)(8676002)(81166006)(53936002)(8936002)(68736007)(25786009)(305945005)(561944003)(316002)(102836004)(53546011)(6116002)(55236004)(33656002)(4326008)(14454004)(6506007)(26005)(7736002)(74316002)(110136005)(186003)(11346002)(446003)(99286004)(86362001)(14444005)(476003)(486006)(256004)(54906003)(72206003)(53946003)(478600001)(2900100001)(105586002)(106356001)(93886005)(5250100002)(66066001)(97736004)(6436002)(229853002)(9686003)(55016002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3634; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; x-ms-office365-filtering-correlation-id: 2490f580-4a01-4043-6cfb-08d5e5bf1991 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989117)(5600053)(711020)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(8990107)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3634; x-ms-traffictypediagnostic: CY4PR0701MB3634: 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)(93006095)(93001095)(3231311)(944501410)(52105095)(10201501046)(3002001)(149027)(150027)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:CY4PR0701MB3634; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3634; x-forefront-prvs: 07283408BE received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Y9Wy/3dL/mArOpZqOOuuh7JE3i4UapGJsM0Iefrw2gUR18u6dMAaoEKwJT+9IgmbUSOJs8QnQlY0HsqzIyYsBJiOK3nKqyxybzDCcbZPEyedAuqh1uF7mjra37HVieubmui5oVNUgztICuWdOUank5QE8Njoa/gKxRrbqTT9oIAJMNC7C0D5Pn6gmNZDfOEpsDe8p0URY9tWCOY6eKJcMhnNxSfhh0RyNUEakc+OxFB5PuXb41NsaJkTJEKeuC6hEInziIsABzuJKKeRccXCt/kF12WSxlQtli1MxXC4csVkKO9jOBjnuCwDuZaYM08VauR1z6WH0T5moToRGKTZB5CNHewW5EQPfs8Z3/HaYzY= 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: 2490f580-4a01-4043-6cfb-08d5e5bf1991 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jul 2018 17:12:07.2487 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3634 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 17:12:10 -0000 DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IFRyYWhlLCBGaW9uYSBbbWFp bHRvOmZpb25hLnRyYWhlQGludGVsLmNvbV0NCj5TZW50OiAwOSBKdWx5IDIwMTggMjI6MTUNCj5U bzogRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20+OyBWZXJtYSwgU2hh bGx5IDxTaGFsbHkuVmVybWFAY2F2aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPjxw YWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQo+Q2M6IGRldkBkcGRrLm9yZzsgQXRocmV5 YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+OyBN dXJ0aHksIE5pZGFkYXZvbHUNCj48TmlkYWRhdm9sdS5NdXJ0aHlAY2F2aXVtLmNvbT47IFNhaHUs IFN1bmlsYSA8U3VuaWxhLlNhaHVAY2F2aXVtLmNvbT47IEd1cHRhLCBBc2hpc2ggPEFzaGlzaC5H dXB0YUBjYXZpdW0uY29tPjsgS2FydGhhLA0KPlVtZXNoIDxVbWVzaC5LYXJ0aGFAY2F2aXVtLmNv bT47IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJFOiBb ZHBkay1kZXZdIFtQQVRDSCB2NCAxLzRdIGxpYi9jcnlwdG9kZXY6IGFkZCBhc3ltbWV0cmljIGFs Z29zIGluIGNyeXB0b2Rldg0KPg0KPkV4dGVybmFsIEVtYWlsDQo+DQo+SGkgU2hhbGx5LCAgRGVj bGFuLCBQYWJsbywNCj4NCj5JJ20gY29uY2VybmVkIGFib3V0IHJ1c2hpbmcgaW4gc2lnbmlmaWNh bnQgbGFzdC1taW51dGUgY2hhbmdlcywgYnV0IHdvdWxkIGxpa2UgdG8gc2VlIHRoaXMgQVBJIGlu IDE4LjA4Lg0KPlNvIEkgc3VnZ2VzdCB0aGUgcGF0Y2hzZXQgaXMgYXBwbGllZCB3aXRoIHRoZSBj YXZlYXQgdGhhdCBpdCBpcyBleHBlcmltZW50YWwgYW5kIHdpbGwgY29udGludWUgdG8gYmUgc28N Cj5mb3IgdGhlIG5leHQgcmVsZWFzZSwgaW4gd2hpY2ggdGhlIHJlbWFpbmluZyBvcGVuIGlzc3Vl cyBzaG91bGQgYmUgYWRkcmVzc2VkLg0KPlRoZSBtYWluIGFyZWFzIG9mIGNvbmNlcm4gYXJlOg0K PiAtIHRoZSBzdHJ1Y3R1cmVzIGZvciB4Zm9ybXMgYW5kIG9wcyBhbmQgcmV3b3JrIG5lZWRlZCB0 byBjYXRlciBmb3Igc2Vzc2lvbmxlc3MNCj4gLSBjYXBhYmlsaXRpZXMNCj4NClNvdW5kcyBnb29k IHRvIG1lLiBJZiB0aGF04oCZcyBmaW5lIHdpdGggZXZlcnlvbmUsIEkgd2lsbCBzZW5kIGN1cnJl bnQgb3BlbnNzbCBQTUQgcGF0Y2guIFBsZWFzZSBjb25maXJtLg0KDQpUaGFua3MNClNoYWxseQ0K Pg0KPlJlZ2FyZHMsDQo+RmlvbmENCj4NCj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxmIE9m IERvaGVydHksIERlY2xhbg0KPj4gU2VudDogTW9uZGF5LCBKdWx5IDksIDIwMTggMzo1NSBQTQ0K Pj4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgRGUgTGFyYSBH dWFyY2gsIFBhYmxvDQo+PiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPg0KPj4gQ2M6 IGRldkBkcGRrLm9yZzsgQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5B dGhyZXlhQGNhdml1bS5jb20+OyBNdXJ0aHksDQo+PiBOaWRhZGF2b2x1IDxOaWRhZGF2b2x1Lk11 cnRoeUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsg R3VwdGEsDQo+PiBBc2hpc2ggPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgS2FydGhhLCBVbWVz aCA8VW1lc2guS2FydGhhQGNhdml1bS5jb20+DQo+PiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBb UEFUQ0ggdjQgMS80XSBsaWIvY3J5cHRvZGV2OiBhZGQgYXN5bW1ldHJpYyBhbGdvcyBpbiBjcnlw dG9kZXYNCj4+DQo+PiBPbiAwNi8wNy8yMDE4IDM6MjggUE0sIFZlcm1hLCBTaGFsbHkgd3JvdGU6 DQo+PiA+IEhpIERlY2xhbg0KPj4gPg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4+ID4+IEZyb206IERvaGVydHksIERlY2xhbiBbbWFpbHRvOmRlY2xhbi5kb2hlcnR5QGludGVs LmNvbV0NCj4+ID4+IFNlbnQ6IDA1IEp1bHkgMjAxOCAyMDoyNA0KPj4gPj4gVG86IFZlcm1hLCBT aGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29tPjsgcGFibG8uZGUubGFyYS5ndWFyY2hAaW50 ZWwuY29tDQo+PiA+PiBDYzogZGV2QGRwZGsub3JnOyBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQg PE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IE11cnRoeSwNCj4+IE5pZGFkYXZv bHUNCj4+ID4+IDxOaWRhZGF2b2x1Lk11cnRoeUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhIDxT dW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlzaA0KPj4gPEFzaGlzaC5HdXB0YUBj YXZpdW0uY29tPjsgS2FydGhhLA0KPj4gPj4gVW1lc2ggPFVtZXNoLkthcnRoYUBjYXZpdW0uY29t Pg0KPj4gPj4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHY0IDEvNF0gbGliL2NyeXB0 b2RldjogYWRkIGFzeW1tZXRyaWMgYWxnb3MgaW4gY3J5cHRvZGV2DQo+PiA+Pg0KPj4gPj4gRXh0 ZXJuYWwgRW1haWwNCj4+ID4+DQo+PiA+PiBIZXkgU2hhbGx5LA0KPj4gPj4NCj4+ID4+IGp1c3Qg YSBmZXcgdGhpbmdzIGlubGluZSBiZWxvdyBtYWlubHkgY29uY2VybmVkIHdpdGggdGhlIG5lZWQg dG8gYmUgYWJsZQ0KPj4gPj4gdG8gc3VwcG9ydCBzZXNzaW9uLWxlc3Mgb3BlcmF0aW9ucyBpbiBm dXR1cmUgUE1Ecy4gSSB0aGluayB3aXRoIGEgZmV3DQo+PiA+PiBtaW5vciBjaGFuZ2VzIHRvIHRo ZSBBUEkgbm93IGl0IHNob3VsZCBhbGxvdyBzZXNzaW9uLWxlc3MgdG8gYmUNCj4+ID4+IHN1cHBv cnRlZCBsYXRlciB3aXRob3V0IHRoZSBuZWVkIGZvciBhIG1ham9yIHJld29yayBvZiB0aGUgQVBJ cywgSSBkb24ndA0KPj4gPj4gdGhpbmsgdGhpcyBzaG91bGQgY2F1c2UgYW55IG1ham9yIHJld29y ayB0byB5b3VyIFBNRCBqdXN0IHRoZSBhZG9wdGlvbg0KPj4gPj4gb2Ygc29tZSBuZXcgbW9yZSBl eHBsaWNpdCBvcCB0eXBlcy4NCj4+ID4+DQo+PiA+PiBUaGFua3MNCj4+ID4+IERlY2xhbg0KPj4g Pj4NCj4+ID4+IE9uIDAzLzA3LzIwMTggNDoyNCBQTSwgU2hhbGx5IFZlcm1hIHdyb3RlOg0KPj4g Pj4+IEFkZCBydGVfY3J5cHRvX2FzeW0uaCB3aXRoIHN1cHBvcnRlZCB4ZnJtcw0KPj4gPj4+IGFu ZCBhc3NvY2lhdGVkIG9wIHN0cnVjdHVyZXMgYW5kIEFQSXMNCj4+ID4+Pg0KPj4gPj4+IEFQSSBj dXJyZW50bHkgc3VwcG9ydHM6DQo+PiA+Pj4gLSBSU0EgRW5jcnlwdCwgRGVjcnlwdCwgU2lnbiBh bmQgVmVyaWZ5DQo+PiA+Pj4gLSBNb2R1bGFyIEV4cG9uZW50aWF0aW9uIGFuZCBJbnZlcnNpb24N Cj4+ID4+PiAtIERTQSBTaWduIGFuZCBWZXJpZnkNCj4+ID4+PiAtIERlZmZpZS1oZWxsbWFuIHBy aXZhdGUga2V5IGV4Y2hhbmdlDQo+PiA+Pj4gLSBEZWZmaWUtaGVsbG1hbiBwdWJsaWMga2V5IGV4 Y2hhbmdlDQo+PiA+Pj4gLSBEZWZmaWUtaGVsbG1hbiBzaGFyZWQgc2VjcmV0IGNvbXB1dGUNCj4+ ID4+PiAtIERlZmZpZS1oZWxsbWFuIHB1YmxpYy9wcml2YXRlIGtleSBwYWlyIGdlbmVyYXRpb24N Cj4+ID4+PiB1c2luZyB4Zm9ybSBjaGFpbg0KPj4gPj4+DQo+PiA+Pj4gU2lnbmVkLW9mZi1ieTog U2hhbGx5IFZlcm1hIDxzaGFsbHkudmVybWFAY2F2aXVtbmV0d29ya3MuY29tPg0KPj4gPj4+IFNp Z25lZC1vZmYtYnk6IFN1bmlsYSBTYWh1IDxzdW5pbGEuc2FodUBjYXZpdW1uZXR3b3Jrcy5jb20+ DQo+PiA+Pj4gU2lnbmVkLW9mZi1ieTogQXNoaXNoIEd1cHRhIDxhc2hpc2guZ3VwdGFAY2F2aXVt bmV0d29ya3MuY29tPg0KPj4gPj4+IFNpZ25lZC1vZmYtYnk6IFVtZXNoIEthcnRoYSA8dW1lc2gu a2FydGhhQGNhdml1bW5ldHdvcmtzLmNvbT4NCj4+ID4+PiAtLS0NCj4+ID4+PiAgICBsaWIvbGli cnRlX2NyeXB0b2Rldi9NYWtlZmlsZSAgICAgICAgICB8ICAgMSArDQo+PiA+Pj4gICAgbGliL2xp YnJ0ZV9jcnlwdG9kZXYvbWVzb24uYnVpbGQgICAgICAgfCAgIDMgKy0NCj4+ID4+PiAgICBsaWIv bGlicnRlX2NyeXB0b2Rldi9ydGVfY3J5cHRvX2FzeW0uaCB8IDQ5NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysNCj4+ID4+PiAgICAzIGZpbGVzIGNoYW5nZWQsIDQ5OSBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+PiA+Pj4NCj4+ID4+PiBkaWZmIC0tZ2l0IGEvbGliL2xp YnJ0ZV9jcnlwdG9kZXYvTWFrZWZpbGUgYi9saWIvbGlicnRlX2NyDQo+PiA+Pg0KPj4gPj4gLi4u DQo+PiA+Pg0KPj4gPj4+ICt0eXBlZGVmIHN0cnVjdCBydGVfY3J5cHRvX3BhcmFtX3Qgew0KPj4g Pj4+ICsgICAgIHVpbnQ4X3QgKmRhdGE7DQo+PiA+Pj4gKyAgICAgLyoqPCBwb2ludGVyIHRvIGJ1 ZmZlciBob2xkaW5nIGRhdGEgKi8NCj4+ID4+PiArICAgICBydGVfaW92YV90IGlvdmE7DQo+PiA+ Pj4gKyAgICAgLyoqPCBJTyBhZGRyZXNzIG9mIGRhdGEgYnVmZmVyICovDQo+PiA+Pj4gKyAgICAg c2l6ZV90IGxlbmd0aDsNCj4+ID4+PiArICAgICAvKio8IGxlbmd0aCBvZiBkYXRhIGluIGJ5dGVz ICovDQo+PiA+Pj4gK30gcnRlX2NyeXB0b19wYXJhbTsNCj4+ID4+DQo+PiA+PiBXaGF0IGlzIHRo ZSBpbnRlbmRlZCB3YXkgZm9yIHRoaXMgbWVtb3J5IHRvIGJlIGFsbG9jYXRlZCwNCj4+ID4NCj4+ ID4gW1NoYWxseV0gSXQgc2hvdWxkIGJlIHBvaW50ZXIgdG8gZmxhdCBidWZmZXJzIGFuZCBhZGRl ZCBvbmx5IHRvIGlucHV0L291dHB1dCBkYXRhIHRvL2Zyb20NCj4+ID4gYXN5bW1ldHJpYyBjcnlw dG8gZW5naW5lLg0KPj4gPg0KPj4gPj4gaXQgc2VlbXMgbGlrZQ0KPj4gPj4gdGhlcmUgbWlnaHQg YmUgYSBtb3JlIGdlbmVyYWwgcmVxdWlyZW1lbnQgaW4gRFBESyBmb3IgSU8gYWRkcmVzc2FibGUN Cj4+ID4+IG1lbW9yeSAoY29tcHJlc3Npb24/IG90aGVyIGhhcmR3YXJlIGFjY2VsZWF0b3JzIGlt cGxlbWVudGVkIG9uIEZQR0FzKQ0KPj4gPj4gdGhhbiBqdXN0IGFzeW1tZXRyaWMgY3J5cHRvLCB3 aWxsIHdlIGVuZCB1cCBuZWVkaW5nIHRvIHN1cHBvcnQgZmVhdHVyZXMNCj4+ID4+IGxpa2Ugc2Nh dHRlciBnYXRoZXIgbGlzdHMgaW4gdGhpcyBzdHJ1Y3R1cmU/DQo+PiA+DQo+PiA+IFtTaGFsbHld IEkgZG9u4oCZdCBhbnRpY2lwYXRlIHRoYXQgd2Ugd291bGQgbmVlZCB0byBzdXBwb3J0IHNjYXR0 ZXItZ2F0aGVyIGRhdGEgYnVmZmVycyBhcyBmYXIgYXMgaXQgaXMgdXNlZA0KPj4gZm9yIGFzeW1t ZXRyaWMuDQo+PiA+IEFuZCBJJ20gbm90IGF3YXJlIGlmIHdlIGhhdmUgcmVxdWlyZW1lbnQgdG8g c3VwcG9ydCBpdCBmb3IgYXN5bW1ldHJpYyBwcm9jZXNzaW5nIHNpbmNlIGRhdGEgc2l6ZSBpcw0K Pj4gdXN1YWxseSBzbWFsbCBmb3INCj4+ID4gc3VjaCBvcGVyYXRpb25zLiBUaHVzLCBhcHAgaXMg ZXhwZWN0ZWQgdG8gc2VuZCBsaW5lYXIgYnVmZmVycyBmb3IgaW5wdXQvb3V0cHV0Lg0KPj4gPg0K Pj4gPiBEb2VzIHRoYXQgYW5zd2VyIHlvdXIgcXVlc3Rpb24/IE9yIGRpZCBJIG1pc3MgYW55dGhp bmc/DQo+PiA+DQo+Pg0KPj4gU3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJhdGlvbmFsZS4NCj4+DQo+ PiA+DQo+PiA+PiBidHcgSSB0aGluayB0aGlzIGlzDQo+PiA+PiBwcm9iYWJseSBmaW5lIGZvciB0 aGUgbW9tZW50IGFzIGl0IHdpbGwgYmUgZXhwZXJtZW50aWFsIGJ1dCBJIHRoaW5rIGl0DQo+PiA+ PiB3aWxsIG5lZWQgdG8gYmUgYWRkcmVzc2VkIGJlZm9yZSB0aGUgcmVtb3ZhbCBvZiB0aGUgZXhw ZXJtZW50aWFsIHRhZy4NCj4+ID4+DQo+PiA+DQo+PiA+IC4uLg0KPj4gPg0KPj4gPj4+ICsgICAg IFJURV9DUllQVE9fQVNZTV9YRk9STV9NT0RJTlYsDQo+PiA+Pg0KPj4gPj4gV291bGQgcHJlZmVy IGlmIHRoaXMgd2FzIF9NT0RfSU5WIDopDQo+PiA+Pg0KPj4gPj4+ICsgICAgIC8qKjwgTW9kdWxh ciBJbnZlcnNlDQo+PiA+Pj4gKyAgICAgICogUGVyZm9ybSBNb2R1bHVzIGludmVyc2UgYl4oLTEp IG1vZCBuDQo+PiA+Pj4gKyAgICAgICovDQo+PiA+Pj4gKyAgICAgUlRFX0NSWVBUT19BU1lNX1hG T1JNX01PREVYLA0KPj4gPj4NCj4+ID4+IGFueSB0aGlzIHdhcyBfTU9EX0VYIDopDQo+PiA+DQo+ PiA+IFtTaGFsbHldIGZpbmUgd2lsbCBkbyBuYW1lIGNoYW5nZS4NCj4+ID4NCj4+ID4+DQo+PiA+ Pj4gKyAgICAgLyoqPCBNb2R1bGFyIEV4cG9uZW50aWF0aW9uDQo+PiA+Pj4gKyAgICAgICogUGVy Zm9ybSBNb2R1bGFyIEV4cG9uZW50aWF0aW9uIGJeZSBtb2Qgbg0KPj4gPj4+ICsgICAgICAqLw0K Pj4gPj4+ICsgICAgIFJURV9DUllQVE9fQVNZTV9YRk9STV9UWVBFX0xJU1RfRU5EDQo+PiA+Pj4g KyAgICAgLyoqPCBFbmQgb2YgbGlzdCAqLw0KPj4gPj4+ICt9Ow0KPj4gPj4+ICsNCj4+ID4+PiAr LyoqDQo+PiA+Pj4gKyAqIEFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlvbiB0eXBlIHZhcmlhbnRz DQo+PiA+Pj4gKyAqLw0KPj4gPj4+ICtlbnVtIHJ0ZV9jcnlwdG9fYXN5bV9vcF90eXBlIHsNCj4+ ID4+PiArICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfRU5DUllQVCwNCj4+ID4+PiArICAgICAvKio8 IEFzeW1tZXRyaWMgRW5jcnlwdCBvcGVyYXRpb24gKi8NCj4+ID4+PiArICAgICBSVEVfQ1JZUFRP X0FTWU1fT1BfREVDUllQVCwNCj4+ID4+PiArICAgICAvKio8IEFzeW1tZXRyaWMgRGVjcnlwdCBv cGVyYXRpb24gKi8NCj4+ID4+PiArICAgICBSVEVfQ1JZUFRPX0FTWU1fT1BfU0lHTiwNCj4+ID4+ PiArICAgICAvKio8IFNpZ25hdHVyZSBHZW5lcmF0aW9uIG9wZXJhdGlvbiAqLw0KPj4gPj4+ICsg ICAgIFJURV9DUllQVE9fQVNZTV9PUF9WRVJJRlksDQo+PiA+Pj4gKyAgICAgLyoqPCBTaWduYXR1 cmUgVmVyaWZpY2F0aW9uIG9wZXJhdGlvbiAqLw0KPj4gPj4+ICsgICAgIFJURV9DUllQVE9fQVNZ TV9PUF9QUklWQVRFX0tFWV9HRU5FUkFURSwNCj4+ID4+PiArICAgICAvKio8IERIIFByaXZhdGUg S2V5IGdlbmVyYXRpb24gb3BlcmF0aW9uICovDQo+PiA+Pj4gKyAgICAgUlRFX0NSWVBUT19BU1lN X09QX1BVQkxJQ19LRVlfR0VORVJBVEUsDQo+PiA+Pj4gKyAgICAgLyoqPCBESCBQdWJsaWMgS2V5 IGdlbmVyYXRpb24gb3BlcmF0aW9uICovDQo+PiA+Pj4gKyAgICAgUlRFX0NSWVBUT19BU1lNX09Q X1NIQVJFRF9TRUNSRVRfQ09NUFVURSwNCj4+ID4+PiArICAgICAvKio8IERIIFNoYXJlZCBTZWNy ZXQgY29tcHV0ZSBvcGVyYXRpb24gKi8NCj4+ID4+PiArICAgICBSVEVfQ1JZUFRPX0FTWU1fT1Bf TElTVF9FTkQNCj4+ID4+PiArfTsNCj4+ID4+PiArDQo+PiA+Pg0KPj4gPj4gSSB0aGluayB0aGF0 IGhhdmluZyBnZW5lcmljIG9wZXJhdGlvbiB0eXBlcyB3aGljaCBtYXkgb3IgbWF5IG5vdCBhcHBs eQ0KPj4gPj4gdG8gYWxsIG9mIHRoZSBkZWZpbmVkIHhmb3JtcyBpcyBjb25mdXNpbmcgZnJvbSBh IHVzZXIgcGVyc3BlY3RpdmUgYW5kIGluDQo+PiA+PiB0aGUgbG9uZ2VyIHRlcm0gd2lsbCBtYWtl IGl0IGltcG9zc2libGUgdG8gc3VwcG9ydCBzZXNzaW9uLWxlc3MNCj4+ID4+IGFzeW1tZXRyaWMg b3BlcmF0aW9ucy4gSWYgd2UgaW5zdGVhZCBkbyBzb21ldGhpbmcgbGlrZQ0KPj4gPj4NCj4+ID4+ ICAgICAgICAgUlRFX0NSWVBUT19BU1lNX09QX1JTQV9FTkNSWVBULA0KPj4gPj4gICAgICAgICBS VEVfQ1JZUFRPX0FTWU1fT1BfUlNBX0RFQ1JZUFQsDQo+PiA+PiAgICAgICAgIFJURV9DUllQVE9f QVNZTV9PUF9SU0FfU0lHTiwNCj4+ID4+ICAgICAgICAgUlRFX0NSWVBUT19BU1lNX09QX1JTQV9W RVJJRlksDQo+PiA+PiAgICAgICAgIFJURV9DUllQVE9fQVNZTV9PUF9ESF9LRVlfR0VORVJBVEUs DQo+PiA+PiAgICAgICAgIFJURV9DUllQVE9fQVNZTV9PUF9ESF9TSEFSRURfU0VDUkVUX0NPTVBV VEUsDQo+PiA+PiAgICAgICAgIGV0Yy4uLg0KPj4gPj4NCj4+ID4+IFRoZW4gdGhlIG9wIHR5cGUg YmVjb21lcyB2ZXJ5IGV4cGxpY2l0IGFuZCB3aWxsIGFsbG93IHNlc3Npb24tbGVzcw0KPj4gPj4g b3BlcmF0aW9ucyB0byBiZSBzdXBwb3J0ZWQgYnkgUE1Ecy4gVGhpcyBzaG91bGRuJ3QgaGF2ZSBh bnkgaW1wYWN0IG9uDQo+PiA+PiB5b3VyIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb3RoZXIgdGhh biB1cGRhdGluZyB0aGUgb3AgdHlwZS4NCj4+ID4+DQo+PiA+DQo+PiA+IFtTaGFsbHldIE9rLCBz byB5b3Ugc3VnZ2VzdCB0byBtZXJnZSB4Zm9ybSBhbmQgb3BfdHlwZSAoaW5jbHVkaW5nIGtlZXBp bmcgb3BfdHlwZSBpbiBvbmUgcGxhY2UpICBmb3INCj4+IHNpbXBsaWNpdHkgc2FrZS4NCj4+ID4N Cj4+ID4gSWYgd2UgdGFrZSB0aGlzIGNoYW5nZSwgdGhlbiBJIHdpbGwgcHJlZmVyIHRvIGtlZXAg aXQgYXMgeGZvcm1zIHJhdGhlciB0aGFuIG9wX3R5cGVzLCBzdWNoIGFzLA0KPj4gPg0KPj4gPiBl bnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV90eXBlcyB7DQo+PiA+IFJURV9DUllQVE9fQVNZTV9Y Rk9STV9SU0FfRU5DUllQVCwNCj4+ID4gUlRFX0NSWVBUT19BU1lNX1hGT1JNX1JTQV9TSUdOLA0K Pj4gPiBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fRFNBX1NJR04sDQo+PiA+IFJURV9DUllQVE9fQVNZ TV9YRk9STV9EU0FfVkVSSUZZLA0KPj4gPiBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fREhfUFJJVl9L RVlfR0VORVJBVEUsDQo+PiA+IFJURV9DUllQVE9fQVNZTV9YRk9STV9ESF9QVUJfS0VZX0dFTkVS QVRFLA0KPj4gPiBSVEVfQ1JZUFRPX0FTWU1fWEZPUk1fREhfU0hBUkVEX1NFQ1JFVF9DT01QVVRF LCAuLi4uIGFuZCBzbyBvbi4uDQo+PiA+IH0NCj4+ID4NCj4+ID4gVGhlc2UsIHdoZW4gc2V0IG9u IGEgcnRlX2NyeXB0b19hc3ltX3hmb3JtICwgd2lsbCB3b3JrIHNlYW1sZXNzbHkgZm9yIGJvdGgg c2Vzc2lvbiBhbmQgc2Vzc2lvbi1sZXNzLg0KPj4gPiBJIGFsc28gc2VlIGFkdmFudGFnZSBoZXJl IHRvIHN1cHBvcnQgeGZvcm0gY2hhaW5pbmcuIEluIHRoaXMgY2FzZSwgb3BfdHlwZSBpbg0KPj4g cnRlX2NyeXB0b19hc3ltX3h4X29wX3BhcmFtcyBpc24ndCBuZWVkZWQgYW5kIHdpbGwgYmUgcmVt b3ZlZC4NCj4+ID4gSXQgd2lsbCBhZGQgYml0IG9mIHJlcGV0aXRpb24gdGhvdWdoLCBsaWtlIFJT QV9TSUdOIC8gRFNBX1NJR04sIGJ1dCB0aGF0IHdvdWxkIG9jY3VyIGluIGFueSBjYXNlLCBpZiB3 ZQ0KPj4gYXJlIG1lcmdpbmcgdHdvIHR5cGVzLg0KPj4gPiBEb2VzIHRoYXQgc291bmQgb2theT8N Cj4+DQo+PiBJIHdvdWxkIGJlIGEgYml0IGNvbmNlcm5lZCB3aXRoIGRyb3BwaW5nIHRoZQ0KPj4g cnRlX2NyeXB0b19hc3ltX3h4X29wX3BhcmFtcyBhcyBpZiB3ZSBhcmUgZm9sbG93aW5nIHRoZSBz eW1tZXRyaWMgbW9kZWwsDQo+PiB0aGUgeGZvcm0gc2hvdWxkIG9ubHkgc3BlY2lmeSB0aGUgaW1t dXRhYmxlIGRhdGEgaW4gcmVsYXRpb24gdG8gYQ0KPj4gdHJhbnNmb3JtIGFuZCB0aGUgb3BlcmF0 aW9uIHNob3VsZCBwcm92aWRlIHRoZSBtdXRhYmxlIGlucHV0IGRhdGEuIEknbQ0KPj4gbm90IHN1 cmUgaG93IHRoaXMgd291bGQgbG9vayBsaWtlIGZvciB0aGUgZGlmZmVyZW50IGFzeW1tZXRyaWMN Cj4+IG9wZXJhdGlvbnMgYnV0IGlmIHRoZXJlIGFyZSB0cmFuc2Zvcm1zIHRoYXQgZG9uJ3QgaGF2 ZSBpbW11dGFibGUgZGF0YQ0KPj4gdGhlbiBpdCB3b3VsZCBtYWtlIG1vcmUgc2Vuc2Ugbm90IHRv IGhhdmUgYSBzcGVjaWZpYyB4Zm9ybSBkYXRhDQo+PiBzdHJ1Y3R1cmUgZm9yIHRoYXQgYW5kIHBh c3MgdGhlIGRhdGEgdGhyb3VnaCB0aGF0IHRyYW5zZm9ybWF0aW9ucw0KPj4gb3BlcmF0aW9uIHN0 cnVjdHVyZS4NCj4+DQo+PiA+DQo+PiA+IFdlIHdlcmUgYWJvdXQgdG8gc3VibWl0IE9wZW5zc2wg UE1EIHdpdGggYXN5bSBzdXBwb3J0IHRvZGF5LiBCdXQgSSB3b3VsZCBob2xkIGJhY2sgdGlsbCB3 ZSBhbGlnbiBvbg0KPj4gdGhpcy4NCj4+ID4gLi4uDQo+PiA+DQo+Pg0KPj4gT2ssIEkgdGhpbmsg SSBoYWQgbWlzc2VkIHBhcnQgb2YgdGhlIGNvbXBsZXhpdHkgb2YgdGhlIGNoYWluZWQgdXNlZA0K Pj4gY2FzZS4gSSB0aGluayBpZiB3ZSBhcmUgdG8gZm9sbG93IHRoZSBzeW1tZXRyaWMgY3J5cHRv IG1vZGVsIHdlIGVuZCB1cA0KPj4gd2l0aCBzb21ldGhpbmcgYWxvbmcgdGhlIGxpbmVzIG9mIGEg ZnVuZGFtZW50YWwgb3AgdHlwZXMgLSBkaCwgZHNhLCBtb2QsDQo+PiByc2EgZXRjLg0KPj4NCj4+ IGVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5cGVzIHsNCj4+ICAgICAgIFJURV9DUllQVE9fQVNZ TV9PUF9ESCwNCj4+ICAgICAgIFJURV9DUllQVE9fQVNZTV9PUF9EU0EsDQo+PiAgICAgICBSVEVf Q1JZUFRPX0FTWU1fT1BfTU9ELA0KPj4gICAgICAgUlRFX0NSWVBUT19BU1lNX09QX1JTQSwNCj4+ IH07DQo+Pg0KPj4gd2l0aCBhIGNvcnJlc3BvbmRpbmcgYXN5bV9vcCBhcyBmb2xsb3dzLg0KPj4N Cj4+IHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fb3Agew0KPj4gICAgICAgdW5pb24gew0KPj4gICAg ICAgICAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNlc3Npb247DQo+ PiAgICAgICAgICAgICAgIC8qKjwgSGFuZGxlIGZvciB0aGUgaW5pdGlhbGl6ZWQgc2Vzc2lvbiBj b250ZXh0ICovDQo+PiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm0g Knhmb3JtOw0KPj4gICAgICAgfTsNCj4+DQo+PiAgICAgICB1bmlvbiB7DQo+PiAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfY3J5cHRvX2FzeW1fZGhfb3BfZGF0YSBkaDsNCj4+ICAgICAgICAgICAg ICAgc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV9kc2Ffb3BfZGF0YSBkc2E7DQo+PiAgICAgICAgICAg ICAgIHN0cnVjdCBydGVfY3J5cHRvX2FzeW5fbW9kX29wX2RhdGEgbW9kOw0KPj4gICAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3JzYV9vcF9kYXRhIHJzYTsNCj4+ICAgICAgIH0g b3BfZGF0YTsNCj4+IH07DQo+Pg0KPj4NCj4+IEluIHRlcm1zIG9mIHRoZSB4Zm9ybSBkZWZpbml0 aW9ucyBJJ20gbm90IHN1cmUgdGhhdCB3ZSBzaG91bGQgaGF2ZSBhbGwNCj4+IHRoZSBkaWZmZXJl bnQgdHJhbnNmb3JtcyBkZWZpbmVkIGluIHRoZSBzYW1lIGVudW0uIElmIHdlIHRha2UgdGhlIGJl bG93DQo+PiBhcHByb2FjaCwgYWxsIHRoZSBzcGVjaWZpY3Mgb2YgZWFjaCB0cmFuc2Zvcm0gY291 bGQgYmUgc3BsaXQgb3V0IGludG8NCj4+IHNlcGFyYXRlIGhlYWRlcnMsIGdpdmluZyBhIGNsZWFu ZXIgQVBJLiBUaGlzIHdvdWxkIHNlZSBhIHhmb3JtIHR5cGVzDQo+PiBlbnVtIHdoaWNoIHdvdWxk IG1pcnJvciB0aGUgb3BlcmF0aW9uIHR5cGVzOg0KPj4NCj4+IGVudW0gcnRlX2NyeXB0b19hc3lt X3hmb3JtX3R5cGVzIHsNCj4+ICAgICAgIFJURV9DUllQVE9fQVNZTV9YRk9STV9ESCwNCj4+ICAg ICAgIFJURV9DUllQVE9fQVNZTV9YRk9STV9EU0EsDQo+PiAgICAgICBSVEVfQ1JZUFRPX0FTWU1f WEZPUk1fTU9ELA0KPj4gICAgICAgUlRFX0NSWVBUT19BU1lNX1hGT1JNX1JTQSwNCj4+IH0NCj4+ DQo+PiB3aXRoIGNvcnJlc3BvbmRpbmcgeGZvcm1zIHN0cnVjdHVyZXMNCj4+DQo+PiBzdHJ1Y3Qg cnRlX2NyeXB0b19hc3ltX3hmb3JtIGRoOw0KPj4gc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9y bSBkc2E7DQo+PiBzdHJ1Y3QgcnRlX2NyeXB0b19hc3ltX3hmb3JtIG1vZGx1czsNCj4+IHN0cnVj dCBydGVfY3J5cHRvX2FzeW1feGZvcm0gcnNhOw0KPj4NCj4+IHRoZW4gd2l0aGluIHRoZSB4Zm9y bXMgd291bGQgZGVmaW5lIHRoZSBzdWItdHlwZSBvZiB0aGF0IHhmb3JtIGFuZCBoYXZlDQo+PiBk ZWZpbml0aW9ucyBvZiAgdGhlIHJlbGV2YW50IHNlc3Npb24gZGF0YSB3aGljaCBpcyByZXF1aXJl ZCwgd2l0aCB0aGUNCj4+IHJzYSBpdCBtaWdodCBsb29rIGxpa2Ugc29tZXRoaW5nIGxpa2UgdGhp czoNCj4+DQo+PiBlbnVtIHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybV9yc2FfdHlwZXMgew0KPj4gICAg ICAgUlRFX0NSWVBUT19BU1lNX1hGT1JNX1JTQV9FTkNSWVBULA0KPj4gICAgICAgUlRFX0NSWVBU T19BU1lNX1hGT1JNX1JTQV9ERUNSWVBULA0KPj4gICAgICAgUlRFX0NSWVBUT19BU1lNX1hGT1JN X1JTQV9TSUdOLA0KPj4gICAgICAgUlRFX0NSWVBUT19BU1lNX1hGT1JNX1JTQV9WRVJJRlksDQo+ PiB9DQo+Pg0KPj4gc3RydWN0IHJ0ZV9jcnlwdG9fYXN5bV94Zm9ybSByc2Egew0KPj4gICAgICAg ZW51bSBydGVfY3J5cHRvX2FzeW1fb3BfcnNhX3R5cGVzIHR5cGU7DQo+PiAgICAgICB1bmlvbiB7 DQo+PiAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvX2FzeW1feGZvcm1fcnNhX2VuY3J5 cHRfZGF0YSBlbmNyeXB0Ow0KPj4gICAgICAgICAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19hc3lt X3hmb3JtX3JzYV9kZWNyeXB0X2RhdGEgZGVjcnlwdDsNCj4+ICAgICAgICAgICAgICAgZXRjLi4u DQo+PiAgICAgICB9IGRhdGE7DQo+PiB9Ow0KPj4NCj4+IFRoZSBuZWVkIGZvciB4Zm9ybSBzdWIt dHlwZSBkYXRhIHN0cnVjdHVyZSB3b3VsZCBiZSBkZXBlbmRlbnQgb24gd2hldGhlcg0KPj4gdGhl cmUgd2FzIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgdHJhbnNm b3JtLiBBbHNvIGlmDQo+PiB3ZSB0YWtlIHRoaXMgYXBwcm9hY2ggaXQgd291bGQgYWxsb3cgZWFj aCBvcGVyYXRpb24gdHlwZSB0byBiZSBzZXBhcmF0ZWQNCj4+IG91dCBpbnRvIHRoZXJlIG93biBo ZWFkZXJzLg0KPj4NCj4+ID4+IC4uLi4NCj4+ID4+DQo+PiA+Pg0KPj4gPj4+ICsgKi8NCj4+ID4+ PiArc3RydWN0IHJ0ZV9jcnlwdG9fZGhfeGZvcm0gew0KPj4gPj4+ICsgICAgIGVudW0gcnRlX2Ny eXB0b19hc3ltX29wX3R5cGUgdHlwZTsNCj4+ID4+PiArICAgICAvKio8IFNldHVwIHhmb3JtIGZv ciBrZXkgZ2VuZXJhdGUgb3Igc2hhcmVkIHNlY3JldCBjb21wdXRlICovDQo+PiA+Pj4gKw0KPj4g Pj4NCj4+ID4+IHRoZXJlIGlzIGFuIGluY29uc2lzdGVuY3kgaGVyZSBpbiB0ZXJtcyBvZiB3ZXJl IHRoZSBvcF90eXBlIGlzIGRlZmluZWQsDQo+PiA+PiBpbiB0aGlzIGNhc2UgaXQgaXMgaW4gdGhl IHhmb3JtIGJ1dCBpdCBvdGhlciBjYXNlcyBSU0EsIERTQSBpdCBpcw0KPj4gPj4gZGVmaW5lZCBp biB0aGUgb3BlcmF0aW9uIGluZm9ybWF0aW9uIGl0c2VsZi4gSSBkb24ndCBrbm93IG9mIGFueSBy ZWFzb24NCj4+ID4+IHdoeSBpdCBpcyBuZWVkZWQgaW4gdGhlIHhmb3JtIGJ1dCBJIHRoaW5rIGl0 IG11c3QgYmUgY29uc2lzdGVudCBhY3Jvc3MNCj4+ID4+IGFsbCBvcGVyYXRpb25zL3hmb3Jtcy4g SWRlYWxseSBmcm9tIG15IHBlcnNwZWN0aXZlIGl0IHdvdWxkIGJlIGluIHRoZQ0KPj4gPj4gcnRl X2NyeXB0b19hc3ltX29wIHN0cnVjdHVyZSwgc2VlIGJlbG93LCBhcyB0aGlzIHdvdWxkIGFsbG93 DQo+PiA+PiBzZXNzaW9uL3Nlc3Npb24tbGVzcyBvcGVyYXRpb25zIHRvIGJlIHN1cHBvcnRlZCBz ZWFtbGVzc2x5Lg0KPj4gPj4NCj4+ID4NCj4+ID4gW1NoYWxseV0gUmVhc29uIHdhcyB4Zm9ybSBj aGFpbmluZy4gQXMgcGVyIEZpb25hIGZlZWRiYWNrLCB3ZSBpZGVudGlmaWVkIHJlcXVpcmVtZW50 IHRvIGJyZWFrIERIIEtleQ0KPj4gcGFpcg0KPj4gPiBnZW5lcmF0aW9uIGluIHRvIHR3byAgOiBQ UklWX0tFWV9HRU5FUkFUSU9OIGFuZCBQVUJfS0VZX0dFTkVSQVRJT04sIHNvIEkgaGFkIHRvIG1v dmUgdGhpcw0KPj4gcGFyYW0gYXJvdW5kLg0KPj4gPiBCdXQgdGhpcyB3aWxsIGJlIGFkZHJlc3Nl ZCBvbmNlIHdlIGNoYW5nZSB4Zm9ybV90eXBlcyBhcyBwZXIgc3VnZ2VzdGlvbiBhYm92ZS4NCj4+ ID4NCj4+ID4gLi4uDQo+PiA+DQo+PiA+Pg0KPj4gPj4gLi4uDQo+PiA+Pg0KPj4gPj4+ICsvKioN Cj4+ID4+PiArICogQXN5bW1ldHJpYyBDcnlwdG9ncmFwaGljIE9wZXJhdGlvbi4NCj4+ID4+PiAr ICoNCj4+ID4+PiArICogU3RydWN0dXJlIGRlc2NyaWJpbmcgYXN5bW1ldHJpYyBjcnlwdG8gb3Bl cmF0aW9uIHBhcmFtcy4NCj4+ID4+PiArICoNCj4+ID4+PiArICovDQo+PiA+Pj4gK3N0cnVjdCBy dGVfY3J5cHRvX2FzeW1fb3Agew0KPj4gPj4+ICsgICAgIHN0cnVjdCBydGVfY3J5cHRvZGV2X2Fz eW1fc2Vzc2lvbiAqc2Vzc2lvbjsNCj4+ID4+PiArICAgICAvKio8IEhhbmRsZSBmb3IgdGhlIGlu aXRpYWxpc2VkIHNlc3Npb24gY29udGV4dCAqLw0KPj4gPj4+ICsNCj4+ID4+PiArICAgICBfX2V4 dGVuc2lvbl9fDQo+PiA+Pj4gKyAgICAgdW5pb24gew0KPj4gPj4+ICsgICAgICAgICAgICAgc3Ry dWN0IHJ0ZV9jcnlwdG9fcnNhX29wX3BhcmFtIHJzYTsNCj4+ID4+PiArICAgICAgICAgICAgIHN0 cnVjdCBydGVfY3J5cHRvX21vZF9vcF9wYXJhbSBtb2RleDsNCj4+ID4+PiArICAgICAgICAgICAg IHN0cnVjdCBydGVfY3J5cHRvX21vZF9vcF9wYXJhbSBtb2RpbnY7DQo+PiA+Pj4gKyAgICAgICAg ICAgICBzdHJ1Y3QgcnRlX2NyeXB0b19kaF9vcF9wYXJhbSBkaDsNCj4+ID4+PiArICAgICAgICAg ICAgIHN0cnVjdCBydGVfY3J5cHRvX2RzYV9vcF9wYXJhbSBkc2E7DQo+PiA+Pj4gKyAgICAgfTsN Cj4+ID4+PiArfSBfX3J0ZV9jYWNoZV9hbGlnbmVkOw0KPj4gPj4+ICsNCj4+ID4+IFJlbGF0aW5n IHRvIG15IGNvbW1lbnQgb24gcG9zaXRpb24gb2YgdGhlIG9wX3R5cGUgYW5kIHRoZSBtaW5vciBj aGFuZ2UNCj4+ID4+IG9mIGhhdmluZyBhbiB1bmlvbiBvZiBzZXNzaW9uL3hmb3JtIGluIHRoZSBy dGVfY3J5cHRvX2FzeW1fb3Agc3RydWN0dXJlDQo+PiA+PiB3b3VsZCB0aGVuIGVuYWJsZSBzZXNz aW9ubGVzcyBzdXBwb3J0IHRvIGJlIGFkZGVkIHNlYW1sZXNzIGluIHRoZSBmdXR1cmUNCj4+ID4+ IHdpdGggbWluaW1hbCBlZmZlY3QgdG8gdGhlIGN1cnJlbnQgcHJvcG9zYWwuDQo+PiA+DQo+PiA+ IFtTaGFsbHldIEFnYWluLCB0aGlzIHdpbGwgYWxzbyBiZSByZXNvbHZlZCB3aXRoIGNoYW5nZSB0 byB4Zm9ybV90eXBlcw0KPj4gPg0KPj4gPj4NCj4+ID4+IHN0cnVjdCBydGVfY3J5cHRvX2FzeW1f b3Agew0KPj4gPj4gLSAgICAgICBzdHJ1Y3QgcnRlX2NyeXB0b2Rldl9hc3ltX3Nlc3Npb24gKnNl c3Npb247DQo+PiA+PiAtICAgICAgIC8qKjwgSGFuZGxlIGZvciB0aGUgaW5pdGlhbGlzZWQgc2Vz c2lvbiBjb250ZXh0ICovDQo+PiA+PiArICAgICAgIGVudW0gcnRlX2NyeXB0b19hc3ltX29wX3R5 cGUgb3BfdHlwZTsNCj4+ID4+ICsNCj4+ID4+ICsgICAgICAgdW5pb24gew0KPj4gPj4gKyAgICAg ICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvZGV2X2FzeW1fc2Vzc2lvbiAqc2Vzc2lvbjsNCj4+ ID4+ICsgICAgICAgICAgICAgICAvKio8IEhhbmRsZSBmb3IgdGhlIGluaXRpYWxpc2VkIHNlc3Np b24gY29udGV4dCAqLw0KPj4gPj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBydGVfY3J5cHRvX2Fz eW1feGZvcm0gKnhmb3JtOw0KPj4gPj4gKyAgICAgICB9Ow0KPj4gPj4NCj4+ID4gW1NoYWxseV0g T2suIFdpbGwgYWRkIHRoaXMgY2hhbmdlLiBCdXQgdGhlbiBJJ2xsIGhhdmUgdG8gY2hlY2sgaWYg Y3J5cHRvIFBNRCBoYXMgc3VwcG9ydCB0byByZWZsZWN0IHdoaWNoDQo+PiB0eXBlIG9mIG1vZGUg aXQgc3VwcG9ydHM/DQo+PiA+DQo+PiBUaGUgc2Vzc190eXBlPVJURV9DUllQVE9fT1BfV0lUSF9T RVNTSU9OL1JURV9DUllQVE9fT1BfU0VTU0lPTkxFU1MNCj4+IHNob3VsZCBiZSBzZXQgaW4gdGhl IG91dGVyIGNyeXB0b19vcCBzdHJ1Y3QsIHNvIGlmIHRoZSBQTUQgZG9lc24ndA0KPj4gc3VwcG9y dCB0aGUgc2VsZWN0ZWQgc2Vzc190eXBlLCBpdCBzaG91bGQganVzdCBmYWlsIHRoZSBlbnF1ZXVl IGFuZA0KPj4gcG9zc2libHkgbG9nIGFuIGVycm9yLg0KPj4NCj4+ID4gVGhhbmtzIGZvciByZXZp ZXcuDQo+PiA+IFNoYWxseQ0KPj4gPg0KPj4gPj4gICAgICAgICAgX19leHRlbnNpb25fXw0KPj4g Pj4NCj4+ID4+DQo+PiA+Pj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPj4gPj4+ICt9DQo+PiA+Pj4g KyNlbmRpZg0KPj4gPj4+ICsNCj4+ID4+PiArI2VuZGlmIC8qIF9SVEVfQ1JZUFRPX0FTWU1fSF8g Ki8NCj4+ID4+Pg0KPj4gPg0KDQo=