From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0071.outbound.protection.outlook.com [104.47.41.71]) by dpdk.org (Postfix) with ESMTP id 70AF51B1AD for ; Thu, 22 Feb 2018 06:50:16 +0100 (CET) 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; bh=9sTAVd1aTIt8F000MhQaFRDFwDphAfYhpCOZ5JKfrjQ=; b=H4pCN1hePWAtfON6aB64fIOo0NK9CRHorjvlLOj5Vbss2ydKXccJD+isvKD1jMTDveSOXdEi8F4Z8UipQLFcLK8kNP7EPqITzaEcss7KZhQ9GM8/OsHKliDKWGXz/0AfsLOOomjqfjxDKO+2guXqAJ0Eioy/VDuBMeBwHzXokwk= Received: from CY4PR0701MB3634.namprd07.prod.outlook.com (52.132.101.164) by CY4PR0701MB3778.namprd07.prod.outlook.com (52.132.102.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.506.18; Thu, 22 Feb 2018 05:50:14 +0000 Received: from CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::e842:2eb2:2ff5:5dd6]) by CY4PR0701MB3634.namprd07.prod.outlook.com ([fe80::e842:2eb2:2ff5:5dd6%13]) with mapi id 15.20.0506.023; Thu, 22 Feb 2018 05:50:13 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" , "Athreya, Narayana Prasad" , "Murthy, Nidadavolu" , "Sahu, Sunila" , "Gupta, Ashish" , "Doherty, Declan" , "Keating, Brian A" , "Griffin, John" CC: "De Lara Guarch, Pablo" Thread-Topic: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto Thread-Index: AQHTodGzuPus9zTdeEGX8ylmFTF93KOj+27wgAFmJYCAB8aI8A== Date: Thu, 22 Feb 2018 05:50:12 +0000 Message-ID: References: <1516701263-13154-1-git-send-email-shally.verma@caviumnetworks.com> <1516701263-13154-2-git-send-email-shally.verma@caviumnetworks.com> <348A99DA5F5B7549AA880327E580B4358931B76C@IRSMSX101.ger.corp.intel.com> <348A99DA5F5B7549AA880327E580B4358931F083@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B4358931F083@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: [122.175.91.50] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR0701MB3778; 7:NLKBH3OjJOQ0AX5gMgu4GQxTzYoMd0+9jy61DWO317NkbycTR6JJgu2U2k84Jg/JE0LCosu9cW4mwPvqv6Y0HJ4lnFS7L8q2dolcXrd6Tm9WP0RS2bdCfwOaViix/dgbbhrhi6W0UFd2FAPwWX5KflcNo3CXkVHUIU4QPkpxVjDyybo1AX/x1GdphyHM0/UFy0ml11oD7Zjl8YmsG7fewIywmfVkh2U/sLjMEBGDPQWCpc/FukHTFKCEpQvi5JmR x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(39380400002)(376002)(366004)(346002)(39860400002)(396003)(13464003)(189003)(199004)(26005)(229853002)(3660700001)(3280700002)(81156014)(7736002)(55016002)(9686003)(6306002)(53936002)(86362001)(8936002)(6436002)(53946003)(1720100001)(305945005)(105586002)(7696005)(68736007)(5660300001)(561944003)(316002)(110136005)(6506007)(2900100001)(59450400001)(93886005)(76176011)(33656002)(81166006)(53546011)(5890100001)(966005)(66066001)(6246003)(53376002)(99286004)(186003)(25786009)(74316002)(478600001)(5250100002)(3846002)(72206003)(6116002)(106356001)(4326008)(2906002)(14454004)(2950100002)(97736004)(2501003)(102836004)(921003)(1121003)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3778; H:CY4PR0701MB3634.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; x-ms-office365-filtering-correlation-id: 9300b5e5-6ff9-475b-09bf-08d579b82430 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(4534165)(4627221)(201703031133081)(201702281549075)(5600026)(4604075)(3008032)(2017052603307)(7153060)(7193020); SRVR:CY4PR0701MB3778; x-ms-traffictypediagnostic: CY4PR0701MB3778: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(20558992708506)(788757137089)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001075)(6040501)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231101)(944501161)(6041288)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:CY4PR0701MB3778; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3778; x-forefront-prvs: 059185FE08 received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: QVHVC1LFk7/Y3DNH6O9CdImWnSBeXrjtVgBNz4DD+Rb59zf3kQLBRDNEVv4hAL2E+u7LhQz7u1JJDMyVtfe71uY4kW8qHaWh7HzN9Zz6ewGKPcPjFt7YZPlT4woFJyUZ5Cjb3zPZbFSJnrhb+h5ACBTDy37pEt0A1gUqb/6mgZM= 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: 9300b5e5-6ff9-475b-09bf-08d579b82430 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Feb 2018 05:50:12.8989 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3778 Subject: Re: [dpdk-dev] [RFC v1 1/1] lib/cryptodev: add support of asymmetric crypto 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, 22 Feb 2018 05:50:17 -0000 SEkgRmlvbmENCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogVHJhaGUsIEZp b25hIFttYWlsdG86ZmlvbmEudHJhaGVAaW50ZWwuY29tXQ0KPlNlbnQ6IDE1IEZlYnJ1YXJ5IDIw MTggMTc6MTYNCj5UbzogVmVybWEsIFNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBk ZXZAZHBkay5vcmc7IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRo cmV5YUBjYXZpdW0uY29tPjsNCj5NdXJ0aHksIE5pZGFkYXZvbHUgPE5pZGFkYXZvbHUuTXVydGh5 QGNhdml1bS5jb20+OyBTYWh1LCBTdW5pbGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+OyBHdXB0 YSwgQXNoaXNoDQo+PEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgRG9oZXJ0eSwgRGVjbGFuIDxk ZWNsYW4uZG9oZXJ0eUBpbnRlbC5jb20+OyBLZWF0aW5nLCBCcmlhbiBBIDxicmlhbi5hLmtlYXRp bmdAaW50ZWwuY29tPjsgR3JpZmZpbiwNCj5Kb2huIDxqb2huLmdyaWZmaW5AaW50ZWwuY29tPg0K PkNjOiBEZSBMYXJhIEd1YXJjaCwgUGFibG8gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNv bT47IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJFOiBb ZHBkay1kZXZdIFtSRkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBhZGQgc3VwcG9ydCBvZiBhc3lt bWV0cmljIGNyeXB0bw0KPg0KPkhpIFNoYWxseSwNCj4NCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+PiBGcm9tOiBWZXJtYSwgU2hhbGx5IFttYWlsdG86U2hhbGx5LlZlcm1hQGNhdml1 bS5jb21dDQo+PiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMTUsIDIwMTggNTozMyBBTQ0KPj4g VG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnOyBB dGhyZXlhLCBOYXJheWFuYSBQcmFzYWQNCj4+IDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1 bS5jb20+OyBNdXJ0aHksIE5pZGFkYXZvbHUgPE5pZGFkYXZvbHUuTXVydGh5QGNhdml1bS5jb20+ Ow0KPj4gU2FodSwgU3VuaWxhIDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsgR3VwdGEsIEFzaGlz aCA8QXNoaXNoLkd1cHRhQGNhdml1bS5jb20+OyBEb2hlcnR5LCBEZWNsYW4NCj4+IDxkZWNsYW4u ZG9oZXJ0eUBpbnRlbC5jb20+OyBLZWF0aW5nLCBCcmlhbiBBIDxicmlhbi5hLmtlYXRpbmdAaW50 ZWwuY29tPjsgR3JpZmZpbiwgSm9obg0KPj4gPGpvaG4uZ3JpZmZpbkBpbnRlbC5jb20+DQo+PiBD YzogRGUgTGFyYSBHdWFyY2gsIFBhYmxvIDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+ DQo+PiBTdWJqZWN0OiBSRTogW2RwZGstZGV2XSBbUkZDIHYxIDEvMV0gbGliL2NyeXB0b2Rldjog YWRkIHN1cHBvcnQgb2YgYXN5bW1ldHJpYyBjcnlwdG8NCj4+DQo+PiBISSBGaW9uYQ0KPj4NCj4+ IFRoYW5rcyBmb3IgeW91ciBmZWVkYmFjay4gUmVzcG9uc2UgYmVsb3cuDQo+Pg0KPj4gPi0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiA+RnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86Zmlv bmEudHJhaGVAaW50ZWwuY29tXQ0KPj4gPlNlbnQ6IDA5IEZlYnJ1YXJ5IDIwMTggMjM6NDMNCj4+ ID5UbzogZGV2QGRwZGsub3JnOyBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJh c2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IE11cnRoeSwNCj4+IE5pZGFkYXZvbHUNCj4+ID48Tmlk YWRhdm9sdS5NdXJ0aHlAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYSA8U3VuaWxhLlNhaHVAY2F2 aXVtLmNvbT47IEd1cHRhLCBBc2hpc2gNCj4+IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFZl cm1hLA0KPj4gPlNoYWxseSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBEb2hlcnR5LCBEZWNs YW4gPGRlY2xhbi5kb2hlcnR5QGludGVsLmNvbT47IEtlYXRpbmcsIEJyaWFuIEENCj4+IDxicmlh bi5hLmtlYXRpbmdAaW50ZWwuY29tPjsNCj4+ID5HcmlmZmluLCBKb2huIDxqb2huLmdyaWZmaW5A aW50ZWwuY29tPg0KPj4gPkNjOiBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47 IERlIExhcmEgR3VhcmNoLCBQYWJsbyA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPg0K Pj4gPlN1YmplY3Q6IFJFOiBbZHBkay1kZXZdIFtSRkMgdjEgMS8xXSBsaWIvY3J5cHRvZGV2OiBh ZGQgc3VwcG9ydCBvZiBhc3ltbWV0cmljIGNyeXB0bw0KPj4gPg0KPj4gPkhpIFNoYWxseSwNCj4+ ID5Db21tZW50cyBiZWxvdy4NCj4+ID4NCj4+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+PiA+PiBGcm9tOiBkZXYgW21haWx0bzpkZXYtYm91bmNlc0BkcGRrLm9yZ10gT24gQmVoYWxm IE9mIFNoYWxseSBWZXJtYQ0KPj4gPj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAyMywgMjAxOCA5 OjU0IEFNDQo+PiA+PiBUbzogRG9oZXJ0eSwgRGVjbGFuIDxkZWNsYW4uZG9oZXJ0eUBpbnRlbC5j b20+DQo+PiA+PiBDYzogZGV2QGRwZGsub3JnOyBwYXRocmV5YUBjYXZpdW1uZXR3b3Jrcy5jb207 IG5tdXJ0aHlAY2F2aXVtbmV0d29ya3MuY29tOw0KPj4gPj4gc3NhaHVAY2F2aXVtbmV0d29ya3Mu Y29tOyBhZ3VwdGFAY2F2aXVtbmV0d29ya3MuY29tOyBTaGFsbHkgVmVybWENCj4+ID4+IDxzdmVy bWFAY2F2aXVtbmV0d29ya3MuY29tPg0KPj4gPj4gU3ViamVjdDogW2RwZGstZGV2XSBbUkZDIHYx IDEvMV0gbGliL2NyeXB0b2RldjogYWRkIHN1cHBvcnQgb2YgYXN5bW1ldHJpYyBjcnlwdG8NCj4+ ID4+DQo+PiA+PiBGcm9tOiBTaGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+ DQo+PiA+Pg0KPj4gPj4gQWRkIHN1cHBvcnQgZm9yIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlv bnMgaW4gRFBESyBsaWIgY3J5cHRvZGV2DQo+PiA+Pg0KPj4gPj4gS2V5IGZlYXR1cmUgaW5jbHVk ZToNCj4+ID4+IC0gT25seSBzZXNzaW9uIGJhc2VkIGFzeW1tZXRyaWMgY3J5cHRvIG9wZXJhdGlv bnMNCj4+ID4+IC0gbmV3IGdldCBhbmQgc2V0IEFQSXMgZm9yIHN5bW1ldHJpYyBhbmQgYXN5bW1l dHJpYyBzZXNzaW9uIHByaXZhdGUNCj4+ID4+ICAgZGF0YSBhbmQgb3RoZXIgaW5mb3JtYXRpb25z DQo+PiA+PiAtIEFQSXMgdG8gY3JlYXRlLCBjb25maWd1cmUgYW5kIGF0dGNoIHF1ZXVlIHBhaXIg dG8gYXN5bW1ldHJpYyBzZXNzaW9ucw0KPj4gPj4gLSBuZXcgY2FwYWJpbGl0aWVzIGluIHN0cnVj dCBkZXZpY2VfaW5mbyB0byBpbmRpY2F0ZQ0KPj4gPj4gICAtLSBudW1iZXIgb2YgZGVkaWNhdGVk IHF1ZXVlIHBhaXJzIGF2YWlsYWJsZSBmb3Igc3ltbWV0cmljIGFuZA0KPj4gPj4gICAgICBhc3lt bWV0cmljIG9wZXJhdGlvbnMsIGlmIGFueQ0KPj4gPj4gICAtLSBudW1iZXIgb2YgYXN5bW1ldHJp YyBzZXNzaW9ucyBwb3NzaWJsZSBwZXIgcXANCj4+ID4+DQo+PiA+W0Zpb25hXSBUaG91Z2ggaXQn cyBwcm9iYWJseSBwcmVtYXR1cmUgdG8gaW5jbHVkZSBvbiB0aGUgQVBJIGhhdmUgeW91IGNvbnNp ZGVyZWQNCj4+ID5wcm92aWRpbmcgZm9yIHByZS1sb2FkZWQga2V5cyBpbiBmdXR1cmUsIGkuZS4g dGhlIGFiaWxpdHkgdG8gd3JhcCBrZXlzIG9yIHJlZmVyIHRvIGtleXMNCj4+ID5hbHJlYWR5IHN0 b3JlZCBzZWN1cmVseSBvbiB0aGUgZGV2aWNlLCBhcyBhbiBhbHRlcm5hdGl2ZSB0byBwYXNzaW5n IHRoZSBrZXlzIG9uIHRoZSBBUEk/DQo+PiA+DQo+PiBbU2hhbGx5XSBDdXJyZW50IGludGVudGlv biBvZiBEUERLIGFzeW0gc3BlYyBpcyB0byBleHBvc2UgSFcgY2FwYWJpbGl0aWVzIHRvIGFwcGxp Y2F0aW9uIHRvIG9mZmxvYWQgdGhlc2UNCj4+IGNvbXB1dGUgaW50ZW5zaXZlIG9wcy4NCj4+IFRo b3VnaCB5b3VyIHVzZS1jYXNlIGlzIHZlcnkgbXVjaCBhIHByYWN0aWNhbCByZXF1aXJlbWVudCAs IGJ1dCB0byBhY2hpZXZlIHRoaXMgSSBiZWxpZXZlIHdlIG5lZWQgYSBsYXllcg0KPj4gYWJvdmUg dGhpcyBzcGVjIGFuZCBuZWVkIGRpZmZlcmVudCBpbnRlcmZhY2VzLiBTdWNoIGFzLCBzb21lIHB1 YmxpYy9zZWN1cmUga2V5IGxpYnJhcnkgd2hpY2ggcHJvdmlkZQ0KPj4gaW50ZXJmYWNlcyB0byBn ZW5lcmF0ZSAvIHN0b3JlLyBwZXJmb3JtIG9wIHVzaW5nIGFuIG9wYXF1ZSBrZXkgaGFuZGxlcyB3 aGljaCBpbnRlcm5hbGx5IGNhbiB1c2UgRFBESw0KPj4gdG8gZG8gcGFydCBvZiBpdC4gRm9yIHN1 Y2ggY2FzZSwgSSBlbnZpc2lvbiBkcGRrIChvciBsaWJyYXJ5IGFib3ZlKSB3aWxsIGxpa2VseSBy dW4gb24gc29tZSBzZWN1cmUgcHJvY2Vzc29yLg0KPj4gVGh1cywgY3VycmVudGx5IEkga2VwdCBz dWNoIHVzZS1jYXNlIG91dCBvZiBjdXJyZW50IHNwZWMgc2NvcGUuDQo+W0Zpb25hXSBvaw0KPg0K Pj4gPg0KPj4gPj4gUHJvcG9zZWQgYXN5bW1ldHJpYyBjcnlwdG9ncmFwaGljIG9wZXJhdGlvbnMg YXJlOg0KPj4gPj4gLSByc2ENCj4+ID4+IC0gZHNhDQo+PiA+PiAtIGRlZmZpZS1oZWxsbWFuIGtl eSBwYWlyIGdlbmVyYXRpb24gYW5kIHNoYXJlZCBrZXkgY29tcHV0YXRpb24NCj4+ID4+IC0gZWNk ZWZmaWUtaGVsbG1hbg0KPj4gPj4gLSBmdW5kYW1lbnRhbCBlbGxpcHRpYyBjdXJ2ZSBvcGVyYXRp b25zDQo+PiA+PiAtIGVsbGlwdGljIGN1cnZlIERTQQ0KPj4gPj4gLSBtb2R1bGFyIGV4cG9uZW50 aWF0aW9uIGFuZCBpbnZlcnNpb24NCj4+ID4+DQo+PiA+PiBUaGlzIHBhdGNoIHByaW1hcmlseSBk ZWZpbmVzIFBNRCBvcGVyYXRpb25zIGFuZCBkZXZpY2UgY2FwYWJpbGl0aWVzDQo+PiA+PiB0byBw ZXJmb3JtIGFzeW1tZXRyaWMgY3J5cHRvIG9wcyBvbiBxdWV1ZSBwYWlycyBhbmQgaW50ZW5kIHRv DQo+PiA+PiBpbnZpdGUgZmVlZGJhY2tzIG9uIGN1cnJlbnQgcHJvcG9zYWwgc28gYXMgdG8gZW5z dXJlIGl0IGVuY29tcGFzcw0KPj4gPj4gYWxsIGtpbmQgb2YgY3J5cHRvIGRldmljZXMgd2l0aCBk aWZmZXJlbnQgY2FwYWJpbGl0aWVzIGFuZCBxdWV1ZQ0KPj4gPj4gcGFpciBtYW5hZ2VtZW50Lg0K Pj4gPj4NCj4+ID4+IExpc3Qgb2YgVEJEczoNCj4+ID4+IC0gQ3VycmVudGx5LCBwYXRjaCBvbmx5 IHVwZGF0ZWQgZm9yIFJTQSB4Zm9ybSBhbmQgYXNzb2NpYXRlZCBwYXJhbXMuDQo+PiA+PiAgIE90 aGVyIGFsZ29yaXRtcyB0byBiZSBhZGRlZCBpbiBzdWJzZXF1ZW50IHZlcnNpb25zLg0KPj4gPj4g LSBwZXItc2VydmljZSBzdGF0cyB1cGRhdGUNCj4+ID4+DQo+PiA+PiBTaWduZWQtb2ZmLWJ5OiBT aGFsbHkgVmVybWEgPHN2ZXJtYUBjYXZpdW1uZXR3b3Jrcy5jb20+DQo+PiA+PiAtLS0NCj4+ID4+ DQo+PiA+PiBJdCBpcyBkZXJpdmF0aXZlIG9mIFJGQyB2MiBhc3ltbWV0cmljIGNyeXB0byBwYXRj aCBzZXJpZXMgaW5pdGlhdGVkIGJ5DQo+PiA+PiBVbWVzaCBLYXJ0aGEobWFpbHRvOnVtZXNoLmth cnRoYUBjYXZpdW1uZXR3b3Jrcy5jb20pOg0KPj4gPj4NCj4+ID4+ICBodHRwOi8vZHBkay5vcmcv ZGV2L3BhdGNod29yay9wYXRjaC8yNDI0NS8NCj4+ID4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3Bh dGNod29yay9wYXRjaC8yNDI0Ni8NCj4+ID4+ICBodHRwOi8vZHBkay5vcmcvZGV2L3BhdGNod29y ay9wYXRjaC8yNDI0Ny8NCj4+ID4+DQo+PiA+PiBBbmQgaW5jbHVzaXZlIG9mIGFsbCByZXZpZXcg Y29tbWVudHMgZ2l2ZW4gb24gUkZDIHYyLg0KPj4gPj4gICggU2VlIGNvbXBsZXRlIGRpc2N1c3Np b24gdGhyZWFkIGhlcmU6DQo+PiA+PiBodHRwOi8vZGV2LmRwZGsubmFya2l2ZS5jb20veXFURkZM SHcvZHBkay1kZXYtcmZjLXNwZWNpZmljYXRpb25zLWZvci1hc3ltbWV0cmljLWNyeXB0by0NCj4+ ID4+IGFsZ29yaXRobXMjcG9zdDEyKQ0KPj4gPj4NCj4+ID4+IFNvbWUgb2YgdGhlIFJGQ3YyIFJl dmlldyBjb21tZW50cyBwZW5kaW5nIGZvciBjbG9zdXJlOg0KPj4gPj4gPiAiIFtGaW9uYV0gVGhl IGNvdW50IGZuIGlzbid0IHVzZWQgYXQgYWxsIGZvciBzeW0gLSBwcm9iYWJseSBubyBuZWVkIHRv IGFkZCBmb3IgYXN5bQ0KPj4gPj4gICAgICBiZXR0ZXIgaW5zdGVhZCB0byByZW1vdmUgdGhlIHN5 bSBmbi4iDQo+PiA+Pg0KPj4gPj4gICAgICBJdCBpcyBzdGlsbCBwcmVzZW50IGluIGRwZGstbmV4 dC1jcnlwdG8gZm9yIHN5bSwgc28gd2hhdCBoYXMgYmVlbiBkZWNpc2lvbg0KPj4gPj4gICAgICBv biBpdD8NCj4+ID5bRmlvbmFdIE5vIGNoYW5nZS4gVGhlIHJ0ZV9jcnlwdG9kZXZfb3BzIGZuIGlz IHN0aWxsIG5vdCBjYWxsZWQgc28gdXNlbGVzcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuDQo+PiA+ cnRlX2NyeXB0b2Rldl9xdWV1ZV9wYWlyX2NvdW50KCkgcmV0dXJucyB0aGUgbnVtX3FwcyBjb25m aWd1cmVkIGluDQo+PiA+cnRlX2NyeXB0b2Rldl9jb25maWd1cmUoKSwgYnV0IG5ldmVyIGNhbGxz IHRoZSBQTUQgZGV2X29wcy5xdWV1ZV9wYWlyX2NvdW50KCkuDQo+PiA+U28gY3J5cHRvZGV2X3N5 bV9xdWV1ZV9wYWlyX2NvdW50X3Qgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuDQo+PiA+QW5kIG5vIHBv aW50IGluIGFkZGluZyBvbmUgZm9yIGFzeW0uDQo+PiA+DQo+Pg0KPj4gW1NoYWxseV0gT2sNCj4+ DQo+PiA+Pg0KPj4gPj4gPiJbRmlvbmFdIGlmIGVhY2ggcXAgY2FuIGhhbmRsZSBvbmx5IGEgc3Bl Y2lmaWMgc2VydmljZSwgaS5lLiBhIHN1YnNldCBvZmYgdGhlIGNhcGFiaWxpdGllcw0KPj4gPj4g ICAgIEluZGljYXRlZCBieSB0aGUgZGV2aWNlIGNhcGFiaWxpdHkgbGlzdCwgdGhlcmUncyBhIG5l ZWQgZm9yIGEgbmV3IEFQSSB0byBxdWVyeQ0KPj4gPj4gICAgIHRoZSBjYXBhYmlsaXR5IG9mIGEg cXAuIg0KPj4gPj4NCj4+ID4+ICAgICBDdXJyZW50IHByb3Bvc2FsIGRvZXNu4oCZdCBkaXN0aW5n dWlzaCBiZXR3ZWVuIGRldmljZSBjYXBhYmlsaXR5IGFuZCBxcCBjYXBhYmlsaXR5Lg0KPj4gPj4g ICAgIEl0IHJhdGhlciBsZWF2ZSBzdWNoIGRpZmZlcmVuY2VzIGhhbmRsaW5nIGludGVybmFsIHRv IFBNRHMuIFRodXMgbm8gY2FwYWJpbGl0eQ0KPj4gPj4gICAgIG9yIEFQSSBhZGRlZCBmb3IgcXAg aW4gY3VycmVudCB2ZXJzaW9uLiBJdCBpcyBzdWJqZWN0IHRvIHJldmlzaXQgYmFzZWQgb24gcmV2 aWV3DQo+PiA+PiAgICAgZmVlZGJhY2sgb24gY3VycmVudCBwcm9wb3NhbC4NCj4+ID5bRmlvbmFd IFRoaXMgd291bGQgbm90IHdvcmsgZm9yIHNvbWUgZGV2aWNlcywgY29tbWVudHMgYmVsb3cuDQo+ PiA+DQo+PiA+Pg0KPj4gPj4gLSBTZXNzaW9ubGVzcyBTdXBwb3J0Lg0KPj4gPj4gICAgIEN1cnJl bnQgcHJvcG9zYWwgb25seSBzdXBwb3J0IFNlc3Npb24tYmFzZWQgYmVjYXVzZToNCj4+ID4+ICAg ICAgMS4gQWxsIG9uZS10aW1lIHNldHVwIGkuZS4gIGFsZ29zIGFuZCBhc3NvY2lhdGVkIHBhcmFt cywgc3VjaCBhcywgcHVibGljLXByaXZhdGUga2V5cw0KPj4gPj4gICAgICAgICBvciBtb2R1bHVz IGxlbmd0aCBjYW4gYmUgZG9uZSBpbiBjb250cm9sIHBhdGggdXNpbmcgc2Vzc2lvbi1pbml0IEFQ SQ0KPj4gPj4gICAgICAyLiBpdOKAmXMgYW4gZWFzaWVyIHdheSB0byBkZWRpY2F0ZSBxcCB0byBk byBzcGVjaWZpYyBzZXJ2aWNlICh1c2luZyBxdWV1ZV9wYWlyX2F0dGFjaCgpKQ0KPj4gPj4gICAg ICAgICB3aGljaCBjYW5ub3QgYmUgY2FzZSBpbiBzZXNzaW9ubGVzcw0KPj4gPj4gICAgICAzLiBD b3VsZG7igJl0IGZpbmQgYW55IHNpZ25pZmljYW50IGFkdmFudGFnZSBnb2luZyBzZXNzaW9ubGVz cyB3YXkuIEFsc28gZXhpc3RpbmcgbW9zdCBvZiBQTURzIGFyZQ0KPj4gPj4gc2Vzc2lvbi1iYXNl ZC4NCj4+ID4+DQo+PiA+PiAgICAgSXQgY291bGQgYmUgYWRkZWQgaW4gc3Vic2VxdWVudCB2ZXJz aW9ucywgaWYgcmVxdWlyZW1lbnQgaXMgaWRlbnRpZmllZCwgYmFzZWQgb24gcmV2aWV3IGNvbW1l bnQNCj4+ID4+ICAgICBvbiB0aGlzIFJGQy4NCj4+ID5bRmlvbmFdIE91ciBwcmVmZXJlbmNlIHdv dWxkIGJlIGZvciBzZXNzaW9ubGVzcywgYXMgaXQgd291bGQgbmVlZCBmZXdlciBBUEkgY2FsbHMg KG5vDQo+PiBzZXNzaW9uX2NyZWF0ZS9zZXNzaW9uX2NsZWFyKQ0KPj4gPmFuZCBlLmcuIERIIGFu ZCBFQ0RIIHNlc3Npb25zIGFyZSBsaWtlbHkgdG8gYmUgb25seSB1c2VkIGZvciBhIHNpbmdsZSBv cC4gSG93ZXZlciB0aGlzIGlzIG5vdCBhIGJsb2NrZXINCj4+IGZvcg0KPj4gPnRoaXMgQVBJLCB3 ZSBjYW4gUE9DIGl0IGxhdGVyIGFuZCBwcm9wb3NlIGFuIGV4dGVuc2lvbiB0byB0aGUgQVBJIGlm IGl0IGdpdmVzIGEgcGVyZm9ybWFuY2UNCj4+IGltcHJvdmVtZW50Lg0KPj4gPg0KPj4gW1NoYWxs eV0gWW91IG1lYW4geW91IHJlY29tbWVuZCB0byBoYXZlIHNlc3Npb24tbGVzcyBzdXBwb3J0IGFs b25nIHdpdGggc2Vzc2lvbi1iYXNlZD8NCj5bRmlvbmFdIFllcy4gQnV0IGFzIHN0YXRlZCwgaXQn cyBvayB0byBzdGFydCB3aXRob3V0IGl0IGFuZCBhZGQgbGF0ZXIuDQo+DQo+DQo+PiA+Pg0KPj4g Pj4gU3VtbWFyeQ0KPj4gPj4gLS0tLS0tLQ0KPj4gPj4NCj4+ID4+IFRoaXMgc2VjdGlvbiBwcm92 aWRlcyBhbiBvdmVydmlldyBvZiBrZXkgZmVhdHVyZSBlbmFibGVkIGluIGN1cnJlbnQgc3BlY2lm aWNhdGlvbi4NCj4+ID4+IEl0IGNvbXByaXNlIG9mIGtleSBkZXNpZ24gY2hhbGxlbmdlcyBhcyBo YXZlIGJlZW4gaWRlbnRpZmllZCBvbiBSRkN2MiBhbmQNCj4+ID4+IHN1bW1hcnkgZGVzY3JpcHRp b24gb2YgbmV3IGludGVyZmFjZXMgYW5kIGRlZmluaXRpb25zIGFkZGVkIHRvIGhhbmRsZSBzYW1l Lg0KPj4gPj4NCj4+ID4+IERlc2NyaXB0aW9uDQo+PiA+PiAtLS0tLS0tLS0tLQ0KPj4gPj4NCj4+ ID4+IFRoaXMgQVBJIHNldCBhc3N1bWVzIHRoYXQgdGhlIG1heF9uYl9xdWV1ZV9wYWlycyBvbiBh DQo+PiA+PiBkZXZpY2UgY2FuIGJlIGFsbG9jYXRlZCB0byBhbnkgbWl4IG9mIHN5bSBvciBhc3lt LiBTb21lIGRldmljZXMNCj4+ID4+IG1heSBoYXZlIGEgZml4ZWQgbWF4IHBlciBzZXJ2aWNlLiBU aHVzLCBydGVfY3J5cHRvZGV2X2luZm8NCj4+ID4+IGlzIHVwZGF0ZWQgd2l0aCBtYXhfc3ltX25i X3F1ZXVlcyBhbmQgbWF4X2FzeW1fbmJfcXVldWVzIHdpdGggcnVsZToNCj4+ID4+DQo+PiA+PiBt YXhfbmJfcXVldWVfcGFpciA9IG1heF9uYl9zeW1fcXAgKyBtYXhfbmJfYXN5bV9xcC4NCj4+ID4+ DQo+PiA+PiBJZiBkZXZpY2UgaGFzIG5vIHJlc3RyaWN0aW9ucyBvbiBxcCB0byBiZSB1c2VkIHBl ciBzZXJ2aWNlLCBzdWNoIFBNRHMgY2FuIGxlYXZlDQo+PiA+PiBtYXhfbmJfc3ltX3FwID0gbWF4 X25iX2FzeW1fcXAgPSAwLiBJbiBzdWNoIGNhc2UsIGFwcGxpY2F0aW9uIGNhbiBzZXR1cCBhbnkg b2YNCj4+ID4+IHRoZSBzZXJ2aWNlIHVwdG8gbGltaXQgZGVmaW5lZCBieSBtYXhfbmJfcXVldWVf cGFpci4NCj4+ID5bRmlvbmFdIFRoaXMgc2VlbXMgYXdrd2FyZCBpZiBhIGdlbnVpbmUgMCAgZS5n LiBBbiBhcHBsIHdhbnRzIHRvIHNldCB1cCBhIHN5bSBxcCwgYW5kDQo+PiA+c2VlcyB0aGF0IG1h eF9uYl9xdWV1ZV9wYWlyPTQuIENhbid0IHRydXN0IHRoaXMgLSBuZWVkcyB0byBsb29rIGRlZXBl ci4gU2Vlcw0KPj4gPm1heF9uYl9zeW1fcXA9MC4gRG9lc24ndCBrbm93IGlmIHRoYXQgbWVhbnMg aXQgY2FuIHNldCB1cCA0IHN5bSBxcHMgb3Igbm8gcXBzDQo+PiA+dW50aWwgaXQgYWxzbyBjaGVj a3MgbWF4X25iX2FzeW1fcXAuIElmPTQgdGhlbiBpdCBjYW4ndCBzZXQgdXAgYW55IHN5bSBxcCwg aWY9MCBpdCBjYW4gc2V0IHVwIDQuDQo+PiA+V291bGQgaXQgYmUgYmV0dGVyIGlmDQo+PiA+CW1h eF9uYl9xdWV1ZV9wYWlyID0gbWF4KG1heF9uYl9zeW1fcXAsIG1heF9uYl9hc3ltX3FwKS4NCj4+ ID4JbWF4X25iX3N5bV9xcCA9IDAuLm1heF9uYl9xdWV1ZV9wYWlyDQo+PiA+CW1heF9uYl9hc3lt X3FwID0gMC4ubWF4X25iX3F1ZXVlX3BhaXINCj4+ID4NCj4+DQo+PiBbU2hhbGx5XSBPay4gSSBj YW4gY2hhbmdlIGRlZmluaXRpb24gdG8gcmVwbGFjZSAwIGJ5IG1heCBudW0gZm9yIG5vLWxpbWl0 IGNhc2Ugd2l0aCBzbGlnaHQgbW9kaWZpY2F0aW9uICB0bw0KPj4gdGhlIGNvbmRpdGlvbiBpLmUu DQo+PiBtYXhfbmJfcXVldWVfcGFpciA+PSAgbWF4KG1heF9uYl9zeW1fcXAsIG1heF9uYl9hc3lt X3FwKQ0KPj4NCj4+IGJlY2F1c2UgZGV2aWNlIGNhbiBoYXZlIGRpc3RyaWJ1dGlvbiBvZiAobWF4 X25iX3F1ZXVlX3BhaXIsIG1heF9uYl9zeW1fcXAsIG1heF9uYl9hc3ltX3FwKSBhcw0KPj4gKDQs NCw0KSBvciAoNCwzLDEpDQo+PiB3aGVyZSB0b3RhbCBudW1iZXIgb2YgcXAgc2V0dXAgYnkgYXBw bGljYXRpb24gY2Fubm90IGV4Y2VlZCBtYXhfbmJfcXVldWVfcGFpcnMuDQo+Pg0KPj4gPj4gSGVy ZSwgbWF4X25iX3N5bV9xcCBhbmQgbWF4X25iX2FzeW1fcXAsIGlmIG5vbi16ZXJvLCBqdXN0IGRl ZmluZSBsaW1pdCBvbiBxcCB3aGljaCBhcmUNCj4+ID4+IGF2YWlsYWJsZSBmb3IgZWFjaCBzZXJ2 aWNlIGFuZCAqYXJlIG5vdCogaWRzIHRvIGJlIHVzZWQgZHVyaW5nIHFwIHNldHVwIGFuZCBlbnF1 ZXVlIGkuZS4NCj4+ID4+IGlmIGRldmljZSBzdXBwb3J0cyBib3RoIHN5bW1ldHJpYyBhbmQgYXN5 bW1ldHJpYyB3aXRoIG4gcXAsIHRoZW4gYW55IG9mIHRoZW0NCj4+ID4+IGNhbiBiZSBjb25maWd1 cmVkIGZvciBzeW1tZXRyaWMgb3IgYXN5bW1ldHJpYyBzdWJqZWN0IHRvIGxpbWl0IGRlZmluZWQg YnkNCj4+ID4+IG1heF9uYl9zeW1fcXAgYW5kIG1heF9uYl9hc3ltX3FwLiBGb3IgZXhhbXBsZSwN Cj4+ID4+IGlmIGRldmljZSBoYXMgNiBxdWV1ZXMgYW5kIDUgZm9yIHN5bW1ldHJpYyBhbmQgMSBm b3IgYXN5bW1ldHJpYyB0aGF0IGltcGx5DQo+PiA+PiBhcHBsaWNhdGlvbiBjYW4gc2V0dXAgb25s eSAxIG91dCBvZiBhbnkgNiBxcCBmb3IgYXN5bW1ldHJpYyBhbmQgcmVzdCBmb3INCj4+ID4+IHN5 bW1ldHJpYy4NCj4+ID4+DQo+PiA+PiBBZGRpdGlvbmFsbHksIGFwcGxpY2F0aW9uIGNhbiBkZWRp Y2F0ZSBxcCB0byBwZXJmb3JtIHNwZWNpZmljIHNlcnZpY2UgdmlhIG9wdGlvbmFsDQo+PiA+PiBx dWV1ZV9wYWlyX2F0dGFjaF9zeW0vYXN5bV9zZXNzaW9uKCkgQVBJLg0KPj4gPltGaW9uYV0gVGhp cyBpcyB0b28gbGF0ZSAtIHNvbWUgZGV2aWNlcyBoYXZlIHFwcyB3aGljaCBuZWVkIHRvIGtub3cg YXQgc2V0dXAgd2hpY2gNCj4+ID5zZXJ2aWNlIHRoZXknbGwgYmUgdXNlZCBmb3IsIGFzIHRoZXkg cmVzZXJ2ZSByZXNvdXJjZXMgYmFzZWQgb24gdGhlIHNlcnZpY2UuDQo+PiA+ZS5nLiBhIGRldmlj ZSByZXBvcnRzIGluIGluZm8gdGhhdCBpdCBjYW4gc3VwcG9ydCBxcHMobWF4IDQsIG1heF9zeW0g MiwgbWF4IGFzeW0gMikNCj4+ID5BbiBhcHBsaWNhdGlvbiBqdXN0IHdhbnRzIHRvIHVzZSAxIHN5 bSBxcCBhbmQgMSBhc3ltLCBzbyBjb25maWd1cmVzIGRldmljZSB3aXRoDQo+PiA+cXBzKG1heCAy LCBtYXhfc3ltIDEsIG1heCBhc3ltIDEpDQo+PiA+Tm93IGFwcGwgY2FsbHMgcXBfc2V0dXAgZm9y IHFwIGluZGV4IDAuIFdhbnRzIHRvIHN0YXJ0IHdpdGggcnVubmluZyBhc3ltbWV0cmljDQo+PiA+ c2VydmljZSBhbmQgd2lsbCBzZXQgdXAgdGhlIHN5bW1ldHJpYyBsYXRlciwgbWF5YmUgaW4gYSBz ZXBhcmF0ZSB0aHJlYWQuDQo+PiA+T3VyIGRldmljZXMgbmVlZCB0byBrbm93IGF0IHNldHVwIHRp bWUgd2hpY2ggc2VydmljZSB3aWxsIGJlIHVzZWQgb24gdGhlIHFwLg0KPj4gPlNvIGhhdmVuJ3Qg YmVlbiBnaXZlbiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gc2V0dXAgdGhlIHFwLg0KPj4gPg0KPj4g PkV2ZW4gaWYgdGhlIFBNRCBjb3VsZCBzZXQgdXAgc2VydmljZS1hZ25vc3RpYyBxcHMgYW5kIGp1 c3QgbWFwIGxhdGVyLCB5b3UNCj4+ID5zdWdnZXN0IHRoZSBxcF9hdHRhY2hfc3ltL2FzeW1fc2Vz c2lvbigpIHdvdWxkIGJlIG9wdGlvbmFsLiBIb3cgY291bGQgdGhlIGFwcGwNCj4+ID5tYWtlIHRo ZSBkZWNpc2lvbiB3aGV0aGVyIHRvIGNhbGwgaXQgb3Igbm90IGluIGFib3ZlIGNhc2U/IEl0IG5l ZWRzIHRvIGtub3cgd2hldGhlcg0KPj4gPnRoZSBjcmVhdGVkIHFwIGlzIGFnbm9zdGljIG9yIG5v dCwgc28gYSBjYXBhYmlsaXR5IG11c3QgYmUgcmVwb3J0ZWQgYnkgdGhlIFBNRC4NCj4+ID5PUiB0 aGUgQVBJIHNob3VsZCBub3QgYmUgb3B0aW9uYWwsIG11c3QgYmUgY2FsbGVkIGZvciBldmVyeSBz ZXNzaW9uLg0KPj4gPkJ1dCB0aGF0J3MgcGVyZiBpbXBhY3RpbmcgYW5kIG5vdCBoZWxwZnVsIGlm IGEgZGV2aWNlIGNvdWxkIHN1cHBvcnQgc2VydmljZS1hZ25vc3RpYyBxcHMuDQo+PiA+DQo+PiA+ SSBkb24ndCBoYXZlIGEgc29sdXRpb24gZm9yIHNlcnZpY2UtYWdub3N0aWMgcXBzLiBGb3Igb3Vy IGRldmljZXMgdGhhdCdzIG5vdCBuZWNlc3NhcnkuDQo+PiA+SXMgaXQgbGlrZWx5IHRoYXQgYW55 b25lIHdhbnRzIHRvIHNldCB1cCBhIHFwIHRvIHByb2Nlc3MgYm90aCBzeW0gYW5kIGFzeW0gb3Bz Pw0KPj4gPklzIGl0IHN1ZmZpY2llbnQgdG8gYWNjb21tb2RhdGUgcXBzIHdoaWNoIGNhbiBzdXBw b3J0IGVpdGhlcg0KPj4gPnNlcnZpY2UsIGJ1dCBvbmUgbXVzdCBiZSBwaWNrZWQgYXQgc2V0dXAg YWZ0ZXIgd2hpY2ggdGhlIHFwIHN1cHBvcnRzIG9ubHkgdGhhdCBzZXJ2aWNlPw0KPj4gPkhvdyBh Ym91dCB0aGUgZm9sbG93aW5nIC0gOg0KPj4gPiAtIGRldmljZSByZXBvcnRzIGluIGluZm8gcXBz KG1heCwgbWF4X3N5bSwgbWF4IGFzeW0pIHdoZXJlDQo+PiA+CW1heCA9IG1heChtYXhfc3ltLCBt YXhfYXN5bSkuDQo+PiA+CW1heF9zeW0gPSAwLi5tYXgNCj4+ID4JbWF4X2FzeW0gPSAwLi5tYXgN Cj4+ID4JU28gaWYgYSBkZXZpY2UgcmVwb3J0cyA0LDIsMiwgaXQgaGFzIDQgdG90YWwsIDIgY2Fu IGJlIHNldHVwIGZvciBzeW0sIDIgZm9yIGFzeW0NCj4+ID4JT3IgaWYgaXQgcmVwb3J0cyA0LDQs NCwgYWxsIDQgb2YgdGhlbSBjYW4gYmUgc2V0dXAgYXMgc3ltIG9yIGFsbCA0IGFzDQo+PiA+CWFz eW0gb3IgYSBtaXgsIGJ1dCB0b3RhbCBzZXR1cCBjYW4ndCBiZSBtb3JlIHRoYW4gNC4NCj4+ID4g LSBhcHBsIGNvbmZpZ3VyZXMgcXBzKG1heCwgbWF4X3N5bSwgbWF4X2FzeW0pDQo+PiA+CUlmIGl0 IHNwZWNpZmllcyA0LDEsMyBpdCB3YW50cyB0byB1c2UgNCBpbiB0b3RhbCwgMSBmb3Igc3ltLCAz IGZvciBhc3ltLg0KPj4gPglJZiBpdCBzcGVjaWZpZXMgMSwxLDAgaXQgd2FudHMgdG8gdXNlIDEg aW4gdG90YWwsIDEgZm9yIHN5bSwgMCBmb3IgYXN5bS4NCj4+ID4JVGhlIG51bWJlcnMgaXQgY29u ZmlndXJlcyBtdXN0IGJlIDw9IHRob3NlIHJlcG9ydGVkIGluIGluZm8uDQo+PiA+IC0gYXBwbCBj YWxscyBxcF9zZXR1cChkZXYsIHFwLCBzZXJ2aWNlKSB3aGVyZSBzZXJ2aWNlID0gc3ltIG9yIGFz eW0NCj4+ID4JcXAgaW5kZXggbXVzdCBiZSBiZXR3ZWVuIDAuLm1heC0xDQo+PiA+CVRoZSBQTUQg bWFwcyB0aGF0IGluZGV4IHRvIGFuIGludGVybmFsIHFwIHdoaWNoIGNhbiBzdXBwb3J0IHRoZSBy ZXF1ZXN0ZWQgc2VydmljZS4NCj4+ID4JSWYgcXBfc2V0dXAgaXMgY2FsbGVkIG9uIGFuIGluZGV4 IGFuZCB0aGUgbWF4IGNvbmZpZ3VyZWQgcXBzIGhhdmUgYWxyZWFkeQ0KPj4gPgliZWVuIHNldHVw IGZvciB0aGF0IHNlcnZpY2UgdGhlbiB0aGUgc2V0dXAgZmFpbHMuDQo+PiA+SW4gY2FzZSB0aGUg YXBwbCBmb3JnZXRzIHdoaWNoIHFwIGl0IHNldCB1cCBmb3Igd2hpY2ggc2VydmljZSwgSSB0aGlu ayBpdCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8gYWRkIGEgbmV3DQo+PiBBUEkNCj4+ID4JcnRlX2Ny eXB0b2Rldl9xcF9pbmZvKCkgd2hpY2ggd291bGQgcmV0dXJuIHdoYXQgc2VydmljZSBpcyBjb25m aWd1cmVkIG9uIHRoZSBxcA0KPj4gPg0KPj4gPklmIGl0J3MgbmVjZXNzYXJ5IHRvIHN1cHBvcnQg c2VydmljZS1hZ25vc3RpYyBxcHMsIHRoZW4gb25lIHdheSB3b3VsZCBiZSB0byBzcGVjaWZ5IGEg dGhpcmQgc2VydmljZSBhYm92ZQ0KPj4gYXMNCj4+ID4gLSBzeW0rYXN5bS4NCj4+ID5BbmQgaGF2 ZSBkZXZpY2VzIHJlcG9ydCBtYXhfc3ltX2FzeW1fcXBzPw0KPj4gPg0KPj4gPkl0J3MgZGlmZmlj dWx0IHRvIGZpbmQgYSBzb2x1dGlvbiBmb3IgdGhpcyB3aXRob3V0IGJyZWFraW5nIHRoZSBjdXJy ZW50IEFQSSAtIHNlZSBzaW1wbGVyDQo+PiA+YWx0ZXJuYXRpdmUgYmVsb3cuDQo+PiA+DQo+PiA+ PiBFeGNlcHQgdGhlIG9uZXMgbWVudGlvbmVkIGFib3ZlLCBzcGVjaWZpY2F0aW9uIGRvZXNuJ3Qg ZGVmaW5lIGFueSByZXN0cmljdGlvbnMgb24NCj4+ID4+IGVucXVldWUvZGVxdWV1ZSBBUEkgZm9y IGRpZmZlcmVudCBjcnlwdG8gc2VydmljZXMuIEFwcGxpY2F0aW9uIGNhbiBlbnF1ZXVlIGJvdGgg c3ltbWV0cmljDQo+PiA+PiBhbmQgYXN5bW1ldHJpYyBvcGVyYXRpb25zIHRvIHNhbWUgZGV2aWNl IGFuZCBxcCBpZiBkZXZpY2UgaW5mbyBpbmRpY2F0ZSBzdXBwb3J0IG9mIGJvdGgNCj4+ID4+IHN5 bW1ldHJpYyBhbmQgYXN5bW1ldHJpYyBhbmQgcXAgaXMgbm90IGRlZGljYXRlZCB0byBhbnkuIEhv d2V2ZXIgaW4gcHJhY3RpY2UsIGl0IGNvdWxkDQo+PiA+PiByZXN1bHQgaW4gaGVhZC1vZi1saW5l IGJsb2NraW5nIGR1ZSB0byB0aGUgYXN5bSBvcHMgdGFraW5nIGxvbmdlciB0aGFuIHRoZSBzeW1t ZXRyaWMgb3BzLg0KPj4gPj4NCj4+ID4+IFNvbWUgSFcgYWNjZWxlcmF0b3JzIGF2b2lkIHRoaXMg aXNzdWUgYnkgc3VwcG9ydGluZyBzeW0gYW5kIGFzeW0gb3BzDQo+PiA+PiBvbiBkaWZmZXJlbnQg cXBzIG9uIHRoZSBzYW1lIGRldmljZS4gIFN1Y2ggZGV2aWNlcyBjYW4gc2V0IG1heF9uYl9zeW1f cXAgYW5kDQo+PiA+PiBtYXhfbmJfYXN5bV9xcCB0byBudW1iZXIgb2YgcXVldWVzIGF2YWlsYWJs ZSBmb3IgZWFjaCByZXNwZWN0aXZlIHNlcnZpY2UuDQo+PiA+Pg0KPj4gPj4gVGhpcyBtYXkgZ2l2 ZSBwcm9ibGVtIGluIGluZGV4aW5nIG9uIGVucXVldWUvZGVxdWV1ZSBpLmUuDQo+PiA+PiBpZiAy IGFzeW0gcXBzIGFuZCAyIHN5bSBxcHMgYXJlIGNyZWF0ZWQgb24gdGhlIHNhbWUgZGV2aWNlLA0K Pj4gPj4gdGhlIHF1ZXVlX3BhaXJfaWRzIGFyZSBkdXBsaWNhdGVkLiBUbyBoYW5kbGUgc3VjaCBz Y2VuYXJpbywNCj4+ID4+IDIgYWx0ZXJuYXRpdmVzIGFyZSBwcm9wb3NlZCBmb3IgUE1EIGRlc2ln bjoNCj4+ID4+DQo+PiA+PiAxLiBBbGxvdyBhbGwgcXAgdG8gaW5wdXQgYW55IG9wZXJhdGlvbiB0 eXBlIHZpcnR1YWxseS4gU2F5LA0KPj4gPj4NCj4+ID4+ICAgICBDb25zaWRlciBkZXZpY2Ugd2l0 aCBzeW1tZXRyaWMgYW5kIGFzeW1tZXRyaWMgY2FwYWJpbGl0eSBoYXZpbmcNCj4+ID4+ICAgICBt YXhfbmJfcXVldWVfcGFpciBhcyA2LCB0aGVuIGJ5IGRlc2lnbiwgYWxsIDYgYXJlIGNhcGFibGUg dG8gaW5wdXQNCj4+ID4+ICAgICBib3RoIG9wIHR5cGVzLg0KPj4gPj4NCj4+ID4+ICAgICBJZiBQ TUQgdXNlcyBmaXhlZCBzZXQgb2YgcXAsIHRoZW4gaW50ZXJuYWxseSwgY2FuIG1hcCBxcCBpZCB0 bw0KPj4gPj4gICAgIGFjdHVhbCBwaHlzaWNhbCBxcCBpZCB0byBiZSB1c2VkIGFjY29yZGluZyB0 byBzZXNzaW9uL29wIHR5cGUuDQo+PiA+PiAgICAgSWYgc3VjaCBtYXBwaW5nIGlzIGRvbmUgb24g ZGF0YSBwYXRoLCBtYXkgaW1wYWN0IHBlcmZvcm1hbmNlIG9mIFBNRHMuDQo+PiA+PiAgICAgVGh1 cywgdG8gaGFuZGxlIHN1Y2ggbWFwcGluZyBvdXQgb2YgZGF0YSBwYXRoLCBsaWJyYXJ5IHByb3Zp ZGVzIGFuIEFQSQ0KPj4gPj4gICAgIHF1ZXVlX3BhaXJfYXR0YWNoX3N5bS9hc3ltX3Nlc3Npb24o KSB3aGljaCBmYWNpbGl0YXRlIGFwcGxpY2F0aW9uIHRvDQo+PiA+PiAgICAgZGVkaWNhdGUgcXAg aWQgdG8gcGVyZm9ybSBzcGVjaWZpYyAoc3ltL2FzeW0pIHNlcnZpY2UgaW4gY29udHJvbCBwYXRo DQo+PiA+PiAgICAgYW5kIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIDFzdCBjYWxsIHRvIGVucXVl dWVfYnVyc3QoKS4NCj4+ID4+ICAgICBIZXJlIFBNRCBjYW4gYmluZCBhcHAgcHJvdmlkZWQgbG9n aWNhbCBxcCBpZCB0byBhY3R1YWwgcGh5c2ljYWwgcXAgaWQgdG8gdXNlDQo+PiA+PiAgICAgZGVw ZW5kaW5nIG9uIHNlc3Npb24gdHlwZSAsIE9SIGFsdGVybmF0aXZlbHkNCj4+ID4+DQo+PiA+PiAy LiBQTURzIGNhbiBzcGxpdCBpdCBpbnRvIHR3byBQTURzLCBvbmUgd2l0aCBzeW1tZXRyaWMgT05M WSBjYXBhYmlsaXR5IGFuZCBvdGhlcg0KPj4gPj4gICAgIHdpdGggYXN5bW1ldHJpYyBPTkxZIGNh cGFiaWxpdHkgKGFsc28gcHJvcG9zZWQgYnkgRmlvbmEgaW4gUkZDdjIpLg0KPj4gPj4gICAgIFRo aXMgbWF5IHJlcXVpcmUgc29tZSAgY2hhbmdlcyB0byBFQUwgdG8gZmFjaWxpdGF0ZSBwY2kgZGV2 aWNlIHNoYXJpbmcgYmV0d2Vlbg0KPj4gPj4gICAgIFBNRHMsIGVuYWJsaW5nIHNlcGFyYXRpb24g b2Ygc3ltIGFuZCAgYXN5bSBzZXJ2aWNlcyBvbnRvIGRpZmZlcmVudCBQTURzLg0KPj4gPj4gICAg IEFzIHBlciBSRkN2MiBmZWVkYmFjaywgSW50ZWwgIHByb3Bvc2VkIHRvIHN1Ym1pdCBhIHBhdGNo IHRvICBlbmFibGUgdGhpcy4NCj4+ID5bRmlvbmFdIFRoZSBlYWwgY2hhbmdlcyB3ZXJlIHByb2Js ZW1hdGljLCBhbmQgZmVlZGJhY2sgZnJvbSB0aGUgRHVibGluIHVzZXJzcGFjZQ0KPj4gPmV2ZW50 IGxhc3QgU2VwdGVtYmVyIHdhcyB0aGF0IHNldmVyYWwgb3RoZXJzIGhhdmUgdHJpZWQgc2ltaWxh ciBidXQgcmV2ZXJ0ZWQgdG8gcmVzb2x2aW5nDQo+PiA+dGhlIHByb2JsZW0gd2l0aGluIHRoZSBQ TUQuIFRoaXMgaXMgd2hhdCB3ZSBhcmUgYWxzbyBpbiB0aGUgcHJvY2VzcyBvZiBkb2luZy4NCj4+ ID5XaXRoIHRoaXMgd2UgaW50ZW5kIHRvIGF2b2lkIGFsbCB0aGUgYWJvdmUgY29tcGxpY2F0aW9u cy4NCj4+ID5pLmUuIG9uZSBwY2kgZGV2aWNlLCBpbiBpdHMgcHJvYmUgZm4sIGNhbiBjcmVhdGUg bXVsdGlwbGUgQVBJIGRldmljZSBpbnN0YW5jZXMuDQo+PiA+T25lIGluc3RhbmNlIG9mIGNyeXB0 b2RldiB3aWxsIHByb3ZpZGUgYSBzeW0gY3J5cHRvIHNlcnZpY2UsIG9uZSBpbnN0YW5jZSBvZg0K Pj4gPmNvbXByZXNzZGV2IHdpbGwgcHJvdmlkZSBhIGNvbXByZXNzaW9uIHNlcnZpY2UgYW5kIGEg c2Vjb25kIGNyeXB0b2RldiBpbnN0YW5jZSB3aWxsDQo+PiA+cHJvdmlkZSB0aGUgYXN5bW1ldHJp YyBzZXJ2aWNlLiBBbGwgcXBzIG9uIGVhY2ggQVBJIGRldmljZSBpbnN0YW5jZSBjYW4gdGhlbiBz dXBwb3J0IGFsbA0KPj4gPm9mIHRoZSBjYXBhYmlsaXRpZXMgcmVwb3J0ZWQgYnkgdGhhdCBkZXZp Y2UuDQo+PiA+DQo+PiA+QSBzdWdnZXN0aW9uIGZvciBrZWVwaW5nIHRoZSBzaW1wbGljaXR5IG9u IHRoZSBBUEkgd291bGQgYmUgdG8gZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4uDQo+PiA+aS5lLiBk b24ndCBwcm92aWRlIGFueSBzdXBwb3J0IGZvciBzcGVjaWZpY2F0aW9uIG9mIHN5bSBvciBhc3lt IHFwcy4gRXhwZWN0IGFsbA0KPj4gPnFwcyBvbiBlYWNoIGRldmljZSB0byBzdXBwb3J0IGFsbCBj YXBhYmlsaXRpZXMgcmVwb3J0ZWQuDQo+PiA+DQo+PiA+DQo+Pg0KPj4gW1NoYWxseV0gSW5pdGlh bGx5IEkgaGFkIHRob3VnaHQgb2Ygc2FtZSBwcm9wb3NhbCB0byBhZGQgYW4gaW5wdXQgZmllbGQg aW4gcXBfY29uZiBzbyB0aGF0IFBNRCBjYW4ga25vdw0KPj4gYXQgcXBfc2V0dXAgdGltZSB3aGlj aCBzZXJ2aWNlIGl0IGdvaW5nIHRvIGJlIHVzZWQgZm9yLg0KPj4gSG93ZXZlciBsb29raW5nIHRo YXQgc3BlYyBhbHJlYWR5IGhhZCBxcF9hdHRhY2hfc3ltL2FzeW0gQVBJcyBhbmQgYWxzbyB0aGUg cG9zc2liaWxpdHkgdGhhdCBzb21lDQo+PiBkZXZpY2UgY2FuIHN1cHBvcnQgc2VydmljZSAtIGFn bm9zdGljIHFwLCBJIGluaXRpYXRlZCB3aXRoIGN1cnJlbnQgcHJvcG9zYWwuDQo+PiBJIG1hcmtl ZCB0aGVtIG9wdGlvbmFsIHdpdGggYSBkaXNjbGFpbWVyIHRoYXQgLCBpZiBub3QgYXR0YWNoZWQs IHRoZW4gUE1EIHdpbGwgdGhlbiBuZWVkIHRvIG1hcCBsb2dpY2FsDQo+PiBxcGlkIHRvIHBoeXNp Y2FsIGR1cmluZyBlbnF1ZXVlX2J1cnN0KCkgd2hpY2ggbWlnaHQgcmVzdWx0IGluIGltcGFjdGVk IHBlcmZvcm1hbmNlLg0KPj4gVGhpcyBpcyBwYXJ0aWN1bGFybHkgYXBwbGljYWJsZSB0byBkZXZp Y2VzIHdoaWNoIGludGVybmFsbHkgaGF2ZSBmaXhlZCBxcHMgcGVyIGVhY2ggc2VydmljZSBhbmQg c2V0DQo+PiBtYXhfbmJfc3ltL2FzeW1fcXAgdG8gaW5kaWNhdGUgc2FtZS4NCj4+IEFuZCB0aHVz IGZvciBzdWNoIGRldmljZXMsIEkgcHJpbWFyaWx5IHJlY29tbWVuZGVkIHRoYXQgdGhleSBzaG91 bGQgYXBwZWFyIGFzIHR3byBzZXBhcmF0ZSBQTURzDQo+PiB3aGVyZSBvbmUgc3VwcG9ydCBzeW0g YW5kIG90aGVyIGFzeW0uDQo+PiBIb3dldmVyLCBvbmx5IHBvaW50IHRvIGlzIHRvIHNlZSBob3cg d2VsbCBzdWl0ZWQgaXMgdGhpcyBmb3IgZWFjaCBkZXZpY2UgZHJpdmVyIGRlc2lnbiBhcyBpdCBt aWdodCByYXRoZXINCj4+IHR1cm4gdG8gYmUgc2ltcGxlciBmb3Igc29tZSBpbXBsZW1lbnRhdGlv biB0byBqdXN0IGhhdmUgc2luZ2xlIHdheSB0byBkZWRpY2F0ZSBhIHFwIHRvIGEgc2VydmljZSB2 aWENCj4+IGF0dGFjaCBvciBxcF9zZXR1cCBjaGFuZ2UgdGhhbiBoYXZpbmcgdHdvIHNlcGFyYXRl IGluc3RhbmNlcy4NCj4+DQo+PiBCdXQsIEkgY29uY3VyIGZyb20geW91ciB0aG91Z2h0cy4gV2Ug Y2FuIHN0YXJ0IHdpdGggc2ltcGxlIGRlZmluaXRpb24gYW5kIHJlbW92ZSBjb25jZXB0IG9mDQo+ PiBtYXhfbmJfc3ltX3FwIGFuZCBtYXhfbmJfYXN5bV9xcCBpbiBmaXJzdCB2ZXJzaW9uIGFuZCBz YXkNCj4+IC1pZiBkZXZpY2Ugc3VwcG9ydCBzZXJ2aWNlIGFnbm9zdGljIHFwLCB0aGF0IG1lYW5z IGFsbCBvZiBpdHMgcXAgY2FuIGJlIHNldCB1cCBmb3IgYW55IHNlcnZpY2UuIFBNRCBjYW4NCj4+ IHNob3cgaW4gaXRzIGZlYXR1cmUgZmxhZyBzdXBwb3J0IGZvciBzeW1tZXRyaWMgYW5kIGFzeW1t ZXRyaWMgY3J5cHRvLiBBcHBsaWNhdGlvbiBjYW4gc2V0IHVwIHFwIHRoZSB3YXkNCj4+IGl0IHdh bnQsIHNwZWMgZGVmaW5lIG5vIHJlY29tbWVuZGVkIHdheSBvZiB1c2FnZSBoZXJlLg0KPltGaW9u YV0gSSB3b3VsZCB3b3JkIHRoaXMgZGlmZmVyZW50bHksIGFzIG5vIG1lY2hhbmlzbSBpcyBwcm92 aWRlZCBmb3IgYW4gYXBwbCB0byBzZXR1cCBhIHFwIGZvciBhIHNwZWNpZmljIHNlcnZpY2UuDQo+ SWYgUE1EIHNob3dzIGluIGl0cyBmZWF0dXJlIGZsYWcgdGhhdCBpdCBzdXBwb3J0cyBib3RoIHN5 bSBhbmQgYXN5bSB0aGVuIGl0IG11c3Qgc3VwcG9ydCB0aG9zZSBvbiBhbGwgaXRzIHFwcy4NCj5B cHBsaWNhdGlvbiBtYXkgY2hvb3NlIHRvIGRpcmVjdCBhbGwgYXN5bSBvcHMgdG8gb25lIHFwIGFu ZCBhbGwgYXN5bSB0byBhIGRpZmZlcmVudCBxcCB0byBhdm9pZA0KPmhlYWQtb2YtbGluZSBibG9j a2luZywgYnV0IHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlIHFwIHNldHVwIG9yIGNhcGFiaWxpdGll cyB0byBwcmV2ZW50IHRoZSBhcHBsaWNhdGlvbg0KPmZyb20gc2VuZGluZyBhbiBlbnF1ZXVlX2J1 cnN0KCkgd2l0aCBhIG1peCBvZiBhc3ltIGFuZCBzeW0gb3BzIGFsbCB0byB0aGUgc2FtZSBxcCBh bmQgaXQgc2hvdWxkIHdvcmsuDQo+DQoNCltTaGFsbHldIENsZWFyLg0KDQo+PiAtaWYgZGV2aWNl IGhhcyBmaXhlZCBzZXQgb2YgcXAgcGVyIGVhY2ggc2VydmljZSwgdGhlbiBpdCBzaG91bGQgc3Bs aXQgaXRzZWxmIGludG8gdHdvIDogc3ltbWV0cmljIG9ubHkgYW5kDQo+PiBhc3ltbWV0cmljIG9u bHkuDQo+W0Zpb25hXSBGb3IgdXMgdGhpcyBpcyBvaywgYnV0IGl0IHdvdWxkIGJlIGdvb2QgdG8g Z2V0IGZlZWRiYWNrIGZyb20gb3RoZXIgcHJvdmlkZXJzIG9mIGh3IGFjY2VsZXJhdGlvbg0KPmFz IGl0IGlzIHF1aXRlIGEgY29uc3RyYWludC4NCj4NCg0KW1NoYWxseV0gVGhhdCdzIHRoZSBpbnRl bnRpb24gYnV0IHVudGlsIHRoZW4gSSBhc3N1bWUgd2UgYWdyZWUgdG8gY3VycmVudCBwcm9wb3Nh bD8hDQoNCklmIHllcywgdGhlbiBqdXN0IHRvIGFsaWduIGFuZCBjbG9zZSBvbiBvdXIgZGlzY3Vz c2lvbiBvbiB0aGlzIGhlcmXigJlzIHRoZSBzdW1tYXJ5IDoNCi0gVGhlcmUncyBubyBkaWZmZXJl bnRpYXRpb24gdG8gZGV2aWNlIGNhcGFiaWxpdHkgYW5kIHFwIGNhcGFiaWxpdHkuICBJZiBQTUQg c2hvd3MgaW4gaXRzIGZlYXR1cmUgZmxhZyB0aGF0IGl0IHN1cHBvcnRzIGJvdGggc3ltIGFuZCBh c3ltIHRoZW4gaXQgbXVzdCBzdXBwb3J0IHRob3NlIG9uIGFsbCBpdHMgcXBzLg0KLSBpZiBQTUQg c3VwcG9ydCBib3RoIGJ1dCBpbnRlcm5hbGx5IGhhcyBodyB3aXRoIGRlZGljYXRlZCBxcCBmb3Ig ZWFjaCBzZXJ2aWNlIHRoZW4gaXQgKmNhbiogc3BsaXQgaXRzZWxmIGludG8gdHdvOiBzeW1tZXRy aWMgb25seSBhbmQgYXN5bW1ldHJpYyBvbmx5IFBNRCBpbnN0YW5jZXMuDQotIEN1cnJlbnRseSB3 ZSBkb27igJl0IHNlZSBhIHJlcXVpcmVtZW50IHRvIGRlZGljYXRlIHFwIHRvIGEgc2VydmljZSwg dGh1cyBubyBuZWVkIGZvciBtYXhfbmJfc3ltL2FzeW1fcXAgb3Igc2VydmljZV90eXBlIGluZm8g ZHVyaW5nIHFwX3NldHVwLiBIb3dldmVyIHRoaXMgaXMgb3BlbiBmb3IgcmV2aWV3IGFuZCBkaXNj dXNzaW9uIGFuZCBjYW4gYmUgYWRkZWQgbGF0ZXIsIGlmIGFueSByZXF1aXJlbWVudCBpcyBpZGVu dGlmaWVkIGZvciBzYW1lLg0KDQpJcyB0aGF0IGNvcnJlY3Q/DQoNClRoYW5rcw0KU2hhbGx5DQo+ PiBUaGlzIGlzIHdlbGwgc3VpdGVkIGZvciBzZXNzaW9uLWxlc3MgYWxzby4gIElNTywgSWYgYW55 IGlzc3VlcyByZXBvcnRlZCB3aXRoIHRoZXNlIHJ1bGVzLCB0aGVuIHdlIGNhbiBhZGQNCj4+IHRo aXMgc3VwcG9ydCBsYXRlciBiYXNlZCBvbiB0aGUgdGhlbiBpZGVudGlmaWVkIHJlcXVpcmVtZW50 LiBIb3dldmVyLCBpZiB3ZSBlbmQgdXAgYWRkaW5nIHRoZSBzdXBwb3J0DQo+PiBiYWNrIG9mIG1h eF9uYl9zeW0vYXN5bV9xcCBpbiBzcGVjIGxhdGVyLCB0aGVuIGF0dGFjaC9kZXRhY2hfcXAgQVBJ cyB3aWxsIG5vdCBiZSBzdWZmaWNpZW50IGFzIHRoZXkNCj4+IGFyZSBzZXNzaW9uIHNwZWNpZmlj LiBHaXZlbiB0aGF0LCBoYXZpbmcgYW4gaW5wdXQgcGFyYW0gZHVyaW5nIHFwX3NldHVwKCkgaXMg bW9yZSBnZW5lcmljIHdheSB0aGF0IHN1aXQNCj4+IGJvdGggc2Vzc2lvbiBhbmQgc2Vzc2lvbmxl c3Mgd2F5LiBEb2VzIHRoaXMgYWxsIHNvdW5kcyByaWdodD8NCj5bRmlvbmFdIGFncmVlZC4NCj4N Cj4+DQo+PiBJIHdpbGwgd2FpdCB0byBjbG9zZSBvbiB0aGlzIGRlc2lnbiBkaXNjdXNzaW9uIGZp cnN0IGJlZm9yZSBnaXZpbmcgZmVlZGJhY2sgdG8gcmVzdCBvZiB0aGUgY29tbWVudCBmdXJ0aGVy DQo+PiBiZWxvdy4gQnV0IGNvbnNpZGVyIGFsbCBmZWVkYmFjayByZWdhcmRpbmcgdHlwbyBhbmQg bGljZW5zaW5nIGFzIGFja25vd2xlZGdlZC4NCj4+DQo+PiBUaGFua3MNCj4+IFNoYWxseQ0KPj4N Cg0K