From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0044.outbound.protection.outlook.com [104.47.33.44]) by dpdk.org (Postfix) with ESMTP id C99EE1B349 for ; Fri, 22 Dec 2017 08:45:37 +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=mOvkDhBHIQD9F7/oVPWRvARluIRPphTwN04HvbCnitI=; b=N+4lFCD7f2hJ3rsUGQVimb/uJXUxbyxUNnizT9Qa3snSsZVE5+nKl8h1qAGQPt36kcbzKr+qWdkAvfQAbdRJqP8t++/euiAoTi1Trajo8iGCQF8LJWznKKeX0RXfXF5JMGtkFvginJ+q+d1YMvpWQGY8GZZ59Htiqi47oCzAzt0= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by CY4PR07MB3061.namprd07.prod.outlook.com (10.172.116.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.323.15; Fri, 22 Dec 2017 07:45:35 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::b138:ccec:b8d1:528f]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::b138:ccec:b8d1:528f%16]) with mapi id 15.20.0323.018; Fri, 22 Dec 2017 07:45:33 +0000 From: "Verma, Shally" To: "fiona.trahe@intel.com" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Gupta, Ashish" , "Sahu, Sunila" , "De Lara Guarch, Pablo" , "Challa, Mahipal" , "Jain, Deepak K" , Hemant Agrawal , Roy Pledge , Youri Querry , Ahmed Mansour , "Trahe, Fiona" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdN5YkDnST0/zTP6Qnydb7p68QcP6AAL8pPAACHKh0A= Date: Fri, 22 Dec 2017 07:45:33 +0000 Message-ID: References: <348A99DA5F5B7549AA880327E580B435892E72D2@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B435892E72D2@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: [115.113.156.2] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; CY4PR07MB3061; 6:SyL8wzRAh9nQnMW89DA2qJN8U8X6hfgdZlT7TAB0U1zMm04eQekzIslwDdO6vlW1/E4nhOMVJGDda9NiaeYtWGdsKHrLiTz6ZPoN600IHoDnu5mZwMqPs2bdEj5VQ5JnscnD2Q902U5dIsLv41ka+PJGvXnspLUFSroEHFbzzMNT6SvgAGDwBfmFx+86Aw4SR//WNO7Nnh18AI55v5DDTzJQaPFzYD4yz3FzLQsqTHpDgu2kG9PPdBT2mahGVJzIfy4UoEiQ2XPDRPjTo9fQvHobOSI4lRgvzz+lvnGntGNVTfjYXxtHA6FZmCkVakk0CAFJThgoafIKsFLGulszM5H60PVqBXN47hMkYg2CW2Y=; 5:bnnrgO3/VtB9SXzlZRoM8LxKI+VvKxFSX9cOER2w+dltdNtED1g2QxNsOc/I8hx8v4pFZ4ogeyj3qdhXiyB53aju2Qzq8JaOWqCSyQ8uEipd4e2Teho3mgsiIN9fs6C+we2szQnN4fmPz1bOya0nQ05TQfNp8XDpBTdaTSgQgEY=; 24:nz6pnDRUtq8d33RUdsfor430Nk6f+VLZFCMUv3jZBMFyRBpRD6ZSnkJqBrPREwxSxVHfueMONiz+N4H7WI06pQ/AEWjYw5M14x9pZjYnmEI=; 7:P0sl0aF1BiKcYw0NIB0zrlHAHkt6Ke8cmFIp19t0SoSHJcYn/FzZiv2ukts8E4wX+8O4YxNaP5C6uA5RoPkfSnn8RSx8I+n8A0knYMLc8nQ95mZ4D8GiS3MohqOcs8DzFCOCkDf3E9k6iS/Q+n6pvu2ymQYrKwOYzVmkT723hbDGaEe00DgEhiHzXMFRnBZlanq7InxnCSz8CqQ9VhfsH0j7inZWTpHqa6vL23lHNxE4ZjjujPwGVLSxUncS3Tc7 x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(376002)(366004)(396003)(346002)(39860400002)(39380400002)(55674003)(199004)(189003)(13464003)(40224003)(57704003)(2900100001)(110136005)(5660300001)(561944003)(54906003)(3660700001)(3280700002)(5890100001)(66066001)(478600001)(2906002)(33656002)(68736007)(8656006)(6246003)(2501003)(97736004)(7736002)(72206003)(81156014)(305945005)(14454004)(6506007)(8676002)(53546011)(53376002)(53936002)(74316002)(8936002)(5250100002)(76176011)(81166006)(106356001)(99286004)(53946003)(229853002)(966005)(9686003)(86362001)(6306002)(2950100002)(7696005)(55016002)(59450400001)(1720100001)(4326008)(25786009)(6436002)(3846002)(6116002)(105586002)(102836004)(316002)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR07MB3061; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: ae493ce5-7011-4cd8-eddf-08d5490ffb9b x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(3008031)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603307)(7153060); SRVR:CY4PR07MB3061; x-ms-traffictypediagnostic: CY4PR07MB3061: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(3231023)(944501039)(10201501046)(93006095)(93001095)(6041268)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:CY4PR07MB3061; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CY4PR07MB3061; x-forefront-prvs: 05299D545B received-spf: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) 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: ae493ce5-7011-4cd8-eddf-08d5490ffb9b X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Dec 2017 07:45:33.5555 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR07MB3061 Subject: Re: [dpdk-dev] [RFC v1] doc compression API for DPDK 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: Fri, 22 Dec 2017 07:45:38 -0000 SGkgRmlvbmENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUcmFoZSwg RmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+IFNlbnQ6IDIwIERlY2VtYmVy IDIwMTcgMjE6MDMNCj4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5h UHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47DQo+IEd1cHRhLCBBc2hpc2ggPEFzaGlzaC5HdXB0 YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxhDQo+IDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsg RGUgTGFyYSBHdWFyY2gsIFBhYmxvDQo+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+ OyBDaGFsbGEsIE1haGlwYWwNCj4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBKYWluLCBE ZWVwYWsgSyA8ZGVlcGFrLmsuamFpbkBpbnRlbC5jb20+Ow0KPiBIZW1hbnQgQWdyYXdhbCA8aGVt YW50LmFncmF3YWxAbnhwLmNvbT47IFJveSBQbGVkZ2UNCj4gPHJveS5wbGVkZ2VAbnhwLmNvbT47 IFlvdXJpIFF1ZXJyeSA8eW91cmkucXVlcnJ5XzFAbnhwLmNvbT47IEFobWVkDQo+IE1hbnNvdXIg PGFobWVkLm1hbnNvdXJAbnhwLmNvbT47IFRyYWhlLCBGaW9uYQ0KPiA8ZmlvbmEudHJhaGVAaW50 ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3Ig RFBESw0KPiANCj4gSGkgU2hhbGx5LA0KPiANCj4gSSB0aGluayB3ZSBhcmUgYWxtb3N0IGluIHN5 bmMgbm93IC0gYSBmZXcgY29tbWVudHMgYmVsb3cgd2l0aCBqdXN0IG9uZQ0KPiBvcGVuIHF1ZXN0 aW9uIHdoaWNoIEkgc3VzcGVjdCB3YXMgYSB0eXBvLg0KPiBJZiB0aGlzIGlzIG9rIHRoZW4gbm8g bmVlZCBmb3IgYSBtZWV0aW5nIEkgdGhpbmsuDQo+IEluIHRoaXMgY2FzZSB3aWxsIHlvdSBpc3N1 ZSBhIHYyIG9mIHRoaXMgZG9jID8NCj4gDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gRnJvbTogVmVybWEsIFNoYWxseSBbbWFpbHRvOlNoYWxseS5WZXJtYUBjYXZpdW0u Y29tXQ0KPiA+IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1iZXIgMjAsIDIwMTcgNzoxNSBBTQ0KPiA+ IFRvOiBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0K PiA+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFA Y2F2aXVtLmNvbT47DQo+IEd1cHRhLCBBc2hpc2gNCj4gPiA8QXNoaXNoLkd1cHRhQGNhdml1bS5j b20+OyBTYWh1LCBTdW5pbGEgPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+Ow0KPiBEZSBMYXJhIEd1 YXJjaCwgUGFibG8NCj4gPiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgQ2hhbGxh LCBNYWhpcGFsDQo+IDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPjsgSmFpbiwgRGVlcGFrIEsN Cj4gPiA8ZGVlcGFrLmsuamFpbkBpbnRlbC5jb20+OyBIZW1hbnQgQWdyYXdhbA0KPiA8aGVtYW50 LmFncmF3YWxAbnhwLmNvbT47IFJveSBQbGVkZ2UNCj4gPiA8cm95LnBsZWRnZUBueHAuY29tPjsg WW91cmkgUXVlcnJ5IDx5b3VyaS5xdWVycnlfMUBueHAuY29tPjsNCj4gQWhtZWQgTWFuc291cg0K PiA+IDxhaG1lZC5tYW5zb3VyQG54cC5jb20+DQo+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRv YyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPg0KPiA+IEhpIEZpb25hDQo+ID4NCj4gPiBQ bGVhc2UgcmVmZXIgdG8gbXkgY29tbWVudHMgYmVsb3cgd2l0aCBteSB1bmRlcnN0YW5kaW5nIG9u IHR3byBtYWpvcg0KPiBwb2ludHMgT1VUX09GX1NQQUNFIGFuZA0KPiA+IFN0YXRlZnVsIERlc2ln bi4NCj4gPiBJZiB5b3UgYmVsaWV2ZSB3ZSBzdGlsbCBuZWVkIGEgbWVldGluZyB0byBjb252ZXJn ZSBvbiBzYW1lIHBsZWFzZSBzaGFyZQ0KPiBtZWV0aW5nIGRldGFpbHMgdG8gbWUuDQo+ID4NCj4g Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFRyYWhlLCBG aW9uYSBbbWFpbHRvOmZpb25hLnRyYWhlQGludGVsLmNvbV0NCj4gPiA+IFNlbnQ6IDE1IERlY2Vt YmVyIDIwMTcgMjM6MTENCj4gPiA+IFRvOiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVybWFAY2F2 aXVtLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4gQ2M6IEF0aHJleWEsIE5hcmF5YW5hIFByYXNh ZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsNCj4gPiA+IENoYWxsYSwgTWFo aXBhbCA8TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0K PiA+ID4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT47IEd1cHRhLCBBc2hpc2gNCj4g PiA+IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYSA8U3VuaWxhLlNhaHVA Y2F2aXVtLmNvbT47DQo+ID4gPiBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47 IEphaW4sIERlZXBhayBLDQo+ID4gPiA8ZGVlcGFrLmsuamFpbkBpbnRlbC5jb20+DQo+ID4gPiBT dWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiA+ID4N Cj4gPiA+IEhpIFNoYWxseSwNCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBWZXJtYSwgU2hhbGx5IFttYWlsdG86U2hhbGx5LlZl cm1hQGNhdml1bS5jb21dDQo+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBEZWNlbWJlciA3LCAyMDE3 IDU6NDMgQU0NCj4gPiA+ID4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29t PjsgZGV2QGRwZGsub3JnDQo+ID4gPiA+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQNCj4g PE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47DQo+ID4gPiBDaGFsbGEsIE1haGlw YWwNCj4gPiA+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJjaCwg UGFibG8NCj4gPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+OyBHdXB0YSwgQXNo aXNoDQo+ID4gPiA+IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYQ0KPiA8 U3VuaWxhLlNhaHVAY2F2aXVtLmNvbT4NCj4gPiA+ID4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRv YyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPiA+DQo+ID4gPiAvL3NuaXAuLi4uDQo+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+IFBsZWFzZSBub3RlIGFueSB0aW1lIG91dHB1dCBidWZmZXIgcmFu IG91dCBvZiBzcGFjZSBkdXJpbmcgd3JpdGUNCj4gPiA+IHRoZW4NCj4gPiA+ID4gPiA+ID4gb3Bl cmF0aW9uIHdpbGwgdHVybiDigJxTdGF0ZWZ1bOKAnS7CoCBTZWUNCj4gPiA+ID4gPiA+ID4gPiBt b3JlIG9uIFN0YXRlZnVsIHVuZGVyIHJlc3BlY3RpdmUgc2VjdGlvbi4NCj4gPiA+ID4gPiA+ID4g W0Zpb25hXSBMZXQncyBjb21lIGJhY2sgdG8gdGhpcyBsYXRlci4gQW4gYWx0ZXJuYXRpdmUgaXMg dGhhdA0KPiA+ID4gPiA+IE9VVF9PRl9TUEFDRSBpcw0KPiA+ID4gPiA+ID4gPiByZXR1cm5lZCBh bmQgdGhlICBhcHBsaWNhdGlvbg0KPiA+ID4gPiA+ID4gPiBtdXN0IHRyZWF0IGFzIGEgZmFpbCBh bmQgcmVzdWJtaXQgdGhlIG9wZXJhdGlvbiB3aXRoIGEgbGFyZ2VyDQo+ID4gPiBkZXN0aW5hdGlv bg0KPiA+ID4gPiA+ID4gPiBidWZmZXIuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gW1NoYWxs eV0gVGhlbiBJIHByb3Bvc2UgdG8gYWRkIGEgZmVhdHVyZSBmbGFnDQo+ID4gPiA+ID4gIkZGX1NV UFBPUlRfT1VUX09GX1NQQUNFIiBwZXIgeGZvcm0gdHlwZSBmb3IgZmxleGlibGUNCj4gPiA+ID4g PiA+IFBNRCBkZXNpZ24uDQo+ID4gPiA+ID4gPiBBcyB0aGVyZSdyZSBkZXZpY2VzIHdoaWNoIHRy ZWF0IGl0IGFzIGVycm9yIG9uIGNvbXByZXNzaW9uIGJ1dCBub3QNCj4gb24NCj4gPiA+ID4gPiBk ZWNvbXByZXNzaW9uLg0KPiA+ID4gPiA+ID4gSWYgaXQgaXMgbm90IHN1cHBvcnRlZCwgdGhlbiBp dCBzaG91bGQgYmUgdHJlYXRlZCBhcyBmYWlsdXJlIGNvbmRpdGlvbg0KPiBhbmQNCj4gPiA+IGFw cA0KPiA+ID4gPiA+IGNhbiByZXN1Ym1pdCBvcGVyYXRpb24uDQo+ID4gPiA+ID4gPiBpZiBzdXBw b3J0ZWQsIGJlaGF2aW91ciAqVG8tYmUtRGVmaW5lZCogdW5kZXIgc3RhdGVmdWwuDQo+ID4gPiA+ ID4gW0Zpb25hXSBDYW4geW91IGV4cGxhaW4gJ3R1cm4gc3RhdGVmdWwnIHNvbWUgbW9yZT8NCj4g PiA+ID4gPiBJZiBjb21wcmVzc29yIHJ1bnMgb3V0IG9mIHNwYWNlIGR1cmluZyBzdGF0ZWxlc3Mg b3BlcmF0aW9uLCBlaXRoZXINCj4gY29tcA0KPiA+ID4gb3INCj4gPiA+ID4gPiBkZWNvbXAsIGFu ZCB0dXJucyBzdGF0ZWZ1bCwgaG93IHdvdWxkIHRoZSBhcHAga25vdz8gQW5kIHdoYXQNCj4gd291 bGQNCj4gPiA+IGJlIGluDQo+ID4gPiA+ID4gc3RhdHVzLCBjb25zdW1lZCBhbmQgcHJvZHVjZWQ/ DQo+ID4gPiA+ID4gQ291bGQgaXQgcmV0dXJuIE9VVF9PRl9TUEFDRSwgYW5kIGlmIGJvdGggY29u c3VtZWQgYW5kIHByb2R1Y2VkDQo+ID09IDANCj4gPiA+ID4NCj4gPiA+ID4gW1NoYWxseV0gSWYg Y29uc3VtZWQgPSBwcm9kdWNlZCA9PSAwLCB0aGVuIGl0J3Mgbm90IE9VVF9PRl9TUEFDRQ0KPiA+ ID4gY29uZGl0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiA+IHRoZW4gdGhlIHdob2xlIG9wIG11c3Qg YmUgcmVzdWJtaXR0ZWQgd2l0aCBhIGJpZ2dlciBvdXRwdXQgYnVmZmVyLg0KPiBCdXQNCj4gPiA+ IGlmDQo+ID4gPiA+ID4gY29uc3VtZWQgYW5kIHByb2R1Y2VkID4gMCB0aGVuIGFwcCBjb3VsZCB0 YWtlIHRoZSBvdXRwdXQgYW5kDQo+IHN1Ym1pdA0KPiA+ID4gbmV4dA0KPiA+ID4gPiA+IG9wDQo+ ID4gPiA+ID4gY29udGludWluZyBmcm9tIGNvbnN1bWVkKzEuDQo+ID4gPiA+ID4NCj4gPiA+ID4N Cj4gPiA+ID4gW1NoYWxseV0gY29uc3VtZWQgYW5kIHByb2R1Y2VkIHdpbGwgKmFsd2F5cyogYmUg PiAwIGluIGNhc2Ugb2YNCj4gPiA+IE9VVF9PRl9TUEFDRS4NCj4gPiA+ID4gT1VUX09GX1NQQUNF IG1lYW5zIG91dHB1dCBidWZmZXIgZXhoYXVzdGVkIHdoaWxlIHdyaXRpbmcgZGF0YSBpbnRvDQo+ IGl0DQo+ID4gPiBhbmQgUE1EIG1heSBoYXZlIG1vcmUgdG8NCj4gPiA+ID4gd3JpdGUgdG8gaXQu IFNvIGluIHN1Y2ggY2FzZSwgUE1EIHNob3VsZCBzZXQNCj4gPiA+ID4gUHJvZHVjZWQgPSBjb21w bGV0ZSBsZW5ndGggb2Ygb3V0cHV0IGJ1ZmZlcg0KPiA+ID4gPiBTdGF0dXMgPSBPVVRfT0ZfU1BB Q0UNCj4gPiA+ID4gY29uc3VtZSwgZm9sbG93aW5nIHBvc3NpYmlsaXRpZXMgaGVyZToNCj4gPiA+ ID4gMS4gY29uc3VtZWQgPSBjb21wbGV0ZSBsZW5ndGggb2Ygc3JjIG1idWYgbWVhbnMgUE1EIGhh cyByZWFkIGZ1bGwNCj4gaW5wdXQsDQo+ID4gPiBPUg0KPiA+ID4gPiAyLiBjb25zdW1lZCA9IHBh cnRpYWwgbGVuZ3RoIG9mIHNyYyBtYnVmIG1lYW5zIFBNRCBoYXMgcmVhZCBwYXJ0aWFsDQo+IGlu cHV0DQo+ID4gPiA+DQo+ID4gPiA+IE9uIHNlZWluZyB0aGlzIHN0YXR1cywgYXBwIHNob3VsZCBj b25zdW1lIG91dHB1dCBhbmQgcmUtZW5xdWV1ZQ0KPiBzYW1lDQo+ID4gPiBvcCB3aXRoIGVtcHR5 IG91dHB1dCBidWZmZXIgYW5kDQo+ID4gPiA+IHNyYyA9IGNvbnN1bWVkKzEuDQo+ID4gPiBbRmlv bmFdIEFzIHRoaXMgd2FzIGEgc3RhdGVsZXNzIG9wLCB0aGUgUE1EIGNhbm5vdCBiZSBleHBlY3Rl ZCB0byBoYXZlDQo+ID4gPiBzdG9yZWQgdGhlIGhpc3RvcnkgYW5kIHN0YXRlIGFuZCBzbw0KPiA+ ID4gY2Fubm90IGJlIGV4cGVjdGVkIHRvIGNvbnRpbnVlIGZyb20gY29uc3VtZWQrMS4gVGhpcyB3 b3VsZCBiZQ0KPiBzdGF0ZWZ1bA0KPiA+ID4gYmVoYXZpb3VyLg0KPiA+DQo+ID4gW1NoYWxseV0g RXhhY3RseS4NCj4gPg0KPiA+ID4gQnV0IGl0IHNlZW1zIHlvdSBhcmUgc2F5aW5nIHRoYXQgZXZl biBvbiBpbiB0aGlzIHN0YXRlbGVzcyBjYXNlIHlvdSdkIGxpa2UNCj4gdGhlDQo+ID4gPiBQTURz IHdobyBjYW4gc3RvcmUgc3RhdGUNCj4gPiA+IHRvIGhhdmUgdGhlIG9wdGlvbiBvZiBjb252ZXJ0 aW5nIHRvIHN0YXRlZnVsLiBTbw0KPiA+ID4gYSBQTUQgd2hpY2ggY2FuIHN1cHBvcnQgdGhpcyBj b3VsZCByZXR1cm4gT1VUX09GX1NQQUNFIHdpdGgNCj4gPiA+IHByb2R1Y2VkL2NvbnN1bWVkIGFz IHlvdSBkZXNjcmliZSBhYm92ZS4NCj4gPiA+IGEgUE1EIHdoaWNoIGNhbid0IHN1cHBvcnQgaXQg c2hvdWxkIHJldHVybiBhbiBlcnJvci4NCj4gPiA+IFRoZSBhcHBsIGNhbiBjb250aW51ZSBvbiBm cm9tIGNvbnN1bWVkKzEgaW4gdGhlIGZvcm1lciBjYXNlIGFuZA0KPiByZXN1Ym1pdA0KPiA+ID4g dGhlIGZ1bGwgcmVxdWVzdA0KPiA+ID4gd2l0aCBhIGJpZ2dlciBidWZmZXIgaW4gdGhlIGxhdHRl ciBjYXNlLg0KPiA+ID4gSXMgdGhpcyB0aGUgYmVoYXZpb3VyIHlvdSdyZSBsb29raW5nIGZvcj8N Cj4gPiA+IElmIHNvIHRoZSBlcnJvciBjb3VsZCBiZSBzb21ldGhpbmcgbGlrZSBORUVEX0JJR0dF Ul9EU1RfQlVGPw0KPiA+ID4gSG93ZXZlciwgd291bGRuJ3QgT1VUX09GX1NQQUNFIHdpdGggcHJv ZHVjZWQ9Y29uc3VtZWQ9MCBjb252ZXkNCj4gdGhlDQo+ID4gPiBzYW1lIGluZm9ybWF0aW9uIG9u IHRoZSBBUEk/DQo+ID4gPiBJdCBtYXkgY29ycmVzcG9uZCB0byBhbiBlcnJvciBvbiB0aGUgdW5k ZXJseWluZyBQTUQsIGJ1dCB3b3VsZCBpdCBiZQ0KPiBzaW1wbGVyDQo+ID4gPiBvbiB0aGUgY29t cHJlc3NkZXYgQVBJDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gUGxlYXNlIG5vdGUgYXMgcGVyIGN1 cnJlbnQgcHJvcG9zYWwsIGFwcCBzaG91bGQgY2FsbA0KPiA+ID4gcnRlX2NvbXBkZXZfZW5xdWV1 ZV9zdHJlYW0oKSB2ZXJzaW9uIG9mIEFQSSBpZiBpdA0KPiA+ID4gPiBkb2Vzbid0IGtub3cgb3V0 cHV0IHNpemUgYmVmb3JlaGFuZC4NCj4gPiA+IFtGaW9uYV0gVHJ1ZS4gQnV0IGFib3ZlIGlzIG9u bHkgdHJ5aW5nIHRvIGRlc2NyaWJlIGJlaGF2aW91ciBpbiB0aGUNCj4gc3RhdGVsZXNzDQo+ID4g PiBlcnJvciBjYXNlLg0KPiA+DQo+ID4gW1NoYWxseV0gT2suIE5vdyBJIGdvdCBwb2ludCBvZiBj b25mdXNpb24gd2l0aCB0ZXJtICd0dXJucyBzdGF0ZWZ1bCcgaGVyZS4gTm8NCj4gaXQncyBub3Qg bGlrZSBzdGF0ZWxlc3MgdG8NCj4gPiBzdGF0ZWZ1bCBjb252ZXJzaW9uLg0KPiA+IFN0YXRlbGVz cyBvcGVyYXRpb24gaXMgc3RhdGVsZXNzIG9ubHkgYW5kIGluIHN0YXRlbGVzcyB3ZSBkb24ndCBl eHBlY3QNCj4gT1VUX09GX1NQQUNFIGVycm9yLiBTbywgbm93IEkNCj4gPiBhbHNvIHVuZGVyc3Rh bmQgd2hhdCB5b3UncmUgdHJ5aW5nIHRvIGltcGx5IHdpdGggcHJvZHVjZWQ9Y29uc3VtZWQ9MC4N Cj4gPg0KPiA+IFNvLCBsZXQgbWUgc3VtbWFyaXNlIHJlZGVmaW5pdGlvbiBvZiBPVVRfT0ZfU1BB Q0UgYmFzZWQgb24gUkZDIHYzOg0KPiA+DQo+ID4gSW50ZXJwcmV0aW5nIE9VVF9PRl9TUEFDRSBj b25kaXRpb246DQo+ID4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiBBLiBT dGF0ZWxlc3MgT3BlcmF0aW9uczoNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ID4gQS4xIElmIG9wZXJhdGlvbiBpcyBzdGF0ZWxlc3MgaS5lLiBydGVfY29tcF9vcC4g b3BfdHlwZSA9PQ0KPiBSVEVfQ09NUF9PUF9TVEFURUxFU1MsIGFuZCBQTUQgcnVucyBvdXQNCj4g PiBvZiBidWZmZXIgZHVyaW5nIGNvbXByZXNzaW9uIG9yIGRlY29tcHJlc3Npb24gdGhlbiBpdCBp cyBhbiBlcnJvciBjb25kaXRpb24NCj4gZm9yIFBNRC4NCj4gPiBJdCB3aWxsIHJlc2V0IGl0c2Vs ZiBhbmQgcmV0dXJuIHdpdGggcHJvZHVjZWQ9Y29uc3VtZWQ9MCB3aXRoIHN0YXR1cw0KPiBPVVRf T0ZfU1BBQ0UuIE9uIHNlZWluZyB0aGlzLA0KPiA+IGFwcGxpY2F0aW9uIHNob3VsZCByZXN1Ym1p dCBmdWxsIHJlcXVlc3Qgd2l0aCBiaWdnZXIgb3V0cHV0IGJ1ZmZlciBzaXplLg0KPiA+DQo+ID4g Qi4gU3RhdGVmdWwgT3BlcmF0aW9uczoNCj4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ID4gQi4xIElmIG9wZXJhdGlvbiBpcyBzdGF0ZWZ1bCBpLmUuIHJ0ZV9jb21wX29wLm9w X3R5cGUgPT0NCj4gUlRFX0NPTVBfT1BfU1RBVEVGVUwsICBhbmQgUE1EIHJ1bnMgb3V0DQo+ID4g b2YgYnVmZmVyIGR1cmluZyBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uLCB0aGVuIFBNRCB3 aWxsIHVwZGF0ZQ0KPiA+IHByb2R1Y2VkPWNvbnN1bWVkIChhcyBtZW50aW9uZWQgYWJvdmUpDQo+ IFtGaW9uYV0gPyBEaWQgeW91IG1lYW4gdG8gc2F5ICJ3aWxsIHVwZGF0ZSBwcm9kdWNlZCAmIGNv bnN1bWVkIiA/DQoNCltTaGFsbHldIFllcyB5b3UgcmlnaHQgdGhhdCB3YXMgdHlwby4gSXQgc2hv dWxkIGJlIHByb2R1Y2VkICYgY29uc3VtZWQuDQoNCj4gSSB0aGluaw0KPiAgIC0gY29uc3VtZWQg d291bGQgYmUgPD0gaW5wdXQgbGVuZ3RoICh0eXBpY2FsbHkgPCkNCj4gICAtIHByb2R1Y2VkIHdv dWxkIGJlIDw9IG91dHB1dCBidWZmZXIgbGVuICh0eXBpY2FsbHkgPSwgYnV0IGNvdWxkIGJlIGEg ZmV3DQo+IGJ5dGVzIGxlc3MpDQo+ICAgLSBzdGF0dXMgd291bGQgYmUgT1VUX09GX1NQQUNFDQo+ IERvIHlvdSBhZ3JlZT8NCj4gDQoNCltTaGFsbHldIFllcy4NCg0KPiA+IGFuZCBhcHAgc2hvdWxk IHJlc3VibWl0IG9wIHdpdGggaW5wdXQgZnJvbSBjb25zdW1lZCsxDQo+ID4gYW5kIG91dHB1dCBi dWZmZXIgd2l0aCBmcmVlIHNwYWNlLg0KPiA+IFBsZWFzZSBub3RlIGZvciBzdWNoIGNhc2UsIGFw cGxpY2F0aW9uIHNob3VsZCBhbGxvY2F0ZSBzdHJlYW0gdmlhIGNhbGwgdG8NCj4gcnRlX2NvbXBf c3RyZWFtX2NyZWF0ZSgpIGFuZA0KPiA+IGF0dGFjaCBpdCB0byBvcCBhbmQgcGFzcyBpdCBhbG9u ZyBldmVyeSB0aW1lIHBlbmRpbmcgb3AgaXMgZW5xdWV1ZWQgdW50aWwgb3ANCj4gcHJvY2Vzc2lu ZyBpcyBjb21wbGV0ZSB3aXRoDQo+ID4gc3RhdHVzIHNldCB0byBTVUNDRVNTL0ZBSUxVUkUuDQo+ IFtGaW9uYV0gQWdyZWVkDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4gLy9zbmlwLi4uLi4NCj4gPiA+ DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBELjIuMS4yIFN0YXRlZnVsIG9wZXJh dGlvbiBzdGF0ZSBtYWludGVuYW5jZQ0KPiA+ID4gPiA+ID4gPiA+IMKgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+ ID4gPiA+IFRoaXMgc2VjdGlvbiBzdGFydHMgd2l0aCBkZXNjcmlwdGlvbiBvZiBvdXIgdW5kZXJz dGFuZGluZyBhYm91dA0KPiA+ID4gPiA+ID4gPiBjb21wcmVzc2lvbiBBUEkgc3VwcG9ydCBmb3Ig c3RhdGVmdWwuDQo+ID4gPiA+ID4gPiA+ID4gRGVwZW5kaW5nIHVwb24gdW5kZXJzdGFuZGluZyBi dWlsZCB1cG9uIHRoZXNlIGNvbmNlcHRzLCB3ZQ0KPiB3aWxsDQo+ID4gPiA+ID4gaWRlbnRpZnkN Cj4gPiA+ID4gPiA+ID4gcmVxdWlyZWQgZGF0YSBzdHJ1Y3R1cmUvcGFyYW0NCj4gPiA+ID4gPiA+ ID4gPiB0byBtYWludGFpbiBpbi1wcm9ncmVzcyBvcGVyYXRpb24gY29udGV4dCBieSBQTUQuDQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBGb3Igc3RhdGVmdWwgY29tcHJlc3Npb24s IGJhdGNoIG9mIGRlcGVuZGVudCBwYWNrZXRzIHN0YXJ0cyBhdCBhDQo+ID4gPiBwYWNrZXQNCj4g PiA+ID4gPiA+ID4gaGF2aW5nDQo+ID4gPiA+ID4gPiA+ID4gUlRFX05PX0ZMVVNIL1JURV9TWU5D X0ZMVVNIIGZsdXNoIHZhbHVlIGFuZCBlbmQgYXQgcGFja2V0DQo+ID4gPiBoYXZpbmcNCj4gPiA+ ID4gPiA+ID4gUlRFX0ZVTExfRkxVU0gvRklOQUxfRkxVU0guDQo+ID4gPiA+ID4gPiA+ID4gaS5l LiBhcnJheSBvZiBvcGVyYXRpb25zIHdpbGwgY2Fycnkgc3RydWN0dXJlIGxpa2UgdGhpczoNCj4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiAt LS0tLQ0KPiA+ID4gLQ0KPiA+ID4gPiA+ID4gPiA+IHxvcDEubm9fZmx1c2ggfCBvcDIubm9fZmx1 c2ggfCBvcDMubm9fZmx1c2ggfCBvcDQuZnVsbF9mbHVzaHwNCj4gPiA+ID4gPiA+ID4gPiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLS0NCj4gPiA+IC0NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+IFtGaW9uYV0gSSB0aGluayBpdCBuZWVkcyB0byBiZSBtb3JlIGNvbnN0cmFpbmVkIHRo YW4geW91ciBleGFtcGxlcw0KPiA+ID4gYmVsb3cuDQo+ID4gPiA+ID4gT25seSAxIG9wZXJhdGlv biBmcm9tIGEgc3RyZWFtIGNhbiBiZSBpbiBhIGJ1cnN0LiBBcyBlYWNoIG9wZXJhdGlvbg0KPiA+ ID4gPiA+IGluIGEgc3RhdGVmdWwgc3RyZWFtIG11c3QgY29tcGxldGUsIGFzIG5leHQgb3BlcmF0 aW9uIG5lZWRzIHN0YXRlDQo+IGFuZA0KPiA+ID4gPiA+IGhpc3RvcnkNCj4gPiA+ID4gPiBvZiBw cmV2aW91cyBvcGVyYXRpb24gdG8gYmUgY29tcGxldGUgYmVmb3JlIGl0IGNhbiBiZSBwcm9jZXNz ZWQuDQo+ID4gPiA+ID4gQW5kIGlmIG9uZSBmYWlsZWQsIGUuZy4gZHVlIHRvIE9VVF9PRl9TUEFD RSwgdGhpcyBzaG91bGQgYWZmZWN0DQo+ID4gPiA+ID4gdGhlIGZvbGxvd2luZyBvcGVyYXRpb24g aW4gdGhlIHNhbWUgc3RyZWFtLg0KPiA+ID4gPiA+IFdvcnN0IGNhc2UgdGhpcyBtZWFucyBidXJz dHMgb2YgMS4gQnVyc3QgY2FuIGJlID4xIGlmIHRoZXJlIGFyZQ0KPiBtdWx0aXBsZQ0KPiA+ID4g PiA+IGluZGVwZW5kZW50IHN0cmVhbXMgd2l0aCBhdmFpbGFibGUgZGF0YSBmb3IgcHJvY2Vzc2lu Zy4gT3IgaWYgdGhlcmUgaXMNCj4gPiA+ID4gPiBkYXRhIGF2YWlsYWJsZSB3aGljaCBjYW4gYmUg c3RhdGVsZXNzbHkgcHJvY2Vzc2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gSWYgdGhlcmUgYXJl IG11bHRpcGxlIGJ1ZmZlcnMgYXZhaWxhYmxlIGZyb20gYSBzdHJlYW0gLCB0aGVuIGluc3RlYWQN Cj4gdGhleQ0KPiA+ID4gY2FuDQo+ID4gPiA+ID4gYmUgbGlua2VkIHRvZ2V0aGVyIGluIGFuIG1i dWYgY2hhaW4gc2VudCBpbiBhIHNpbmdsZSBvcGVyYXRpb24uDQo+ID4gPiA+ID4NCj4gPiA+ID4g PiBUbyBoYW5kbGUgdGhlIHNlcXVlbmNlcyBiZWxvdyB3b3VsZCBtZWFuIHRoZSBQTUQNCj4gPiA+ ID4gPiB3b3VsZCBuZWVkIHRvIHN0b3JlIG9wcyBzZW5kaW5nIG9uZSBhdCBhIHRpbWUgdG8gYmUg cHJvY2Vzc2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQXMgdGhpcyBpcyBzaWduaWZpY2FudGx5 IGRpZmZlcmVudCBmcm9tIHdoYXQgeW91IGRlc2NyaWJlIGJlbG93LCBJJ2xsIHdhaXQNCj4gZm9y DQo+ID4gPiA+ID4gZnVydGhlciBmZWVkYmFjaw0KPiA+ID4gPiA+IGJlZm9yZSBjb250aW51aW5n Lg0KPiA+ID4gPg0KPiA+ID4gPiBbU2hhbGx5XSBJIGNvbmN1ciB3aXRoIHlvdXIgdGhvdWdodHMu IEFuZCB0aGVzZSdyZSBhcmUgbm90IHNpZ25pZmljYW50bHkNCj4gPiA+IGRpZmZlcmVudCBmcm9t IHRoZSBjb25jZXB0DQo+ID4gPiA+IHByZXNlbnRlZCBiZWxvdy4NCj4gPiA+ID4NCj4gPiA+ID4g WWVzIGFzIHlvdSBtZW50aW9uZWQsIGV2ZW4gZm9yIGJ1cnN0X3NpemU+MSBQTUQgd2lsbCBoYXZl IHRvIHNlcmlhbGl6ZQ0KPiA+ID4gZWFjaCBvcCBpbnRlcm5hbGx5IGkuZS4NCj4gPiA+ID4gSXQg aGFzIHRvIHdhaXQgZm9yIHByZXZpb3VzIHRvIGZpbmlzaCBiZWZvcmUgcHV0dGluZyBuZXh0IGZv ciBwcm9jZXNzaW5nDQo+IHdoaWNoDQo+ID4gPiBpcw0KPiA+ID4gPiBhcyBnb29kIGFzIGFwcGxp Y2F0aW9uIG1ha2luZyBzZXJpYWxpc2VkIGNhbGwgcGFzc2luZyBvbmUgb3AgYXQtYS10aW1lIG9y DQo+IGlmDQo+ID4gPiA+IHN0cmVhbSBjb25zaXN0cyBvZiBtdWx0aXBsZSBidWZmZXJzLCBtYWtp bmcgdGhlaXIgc2NhdHRlci1nYXRoZXIgbGlzdCBhbmQNCj4gPiA+ID4gdGhlbiBlbnF1ZXVlIGl0 IGFzIG9uZSBvcCBhdCBhIHRpbWUgd2hpY2ggaXMgbW9yZSBlZmZpY2llbnQgYW5kIGlkZWFsDQo+ IHVzYWdlLg0KPiA+ID4gPiBIb3dldmVyIGluIG9yZGVyIHRvIGFsbG93IGV4dGVuc2liaWxpdHks IEkgZGlkbid0IG1lbnRpb24gbGltaXRhdGlvbiBvbg0KPiA+ID4gYnVyc3Rfc2l6ZS4NCj4gPiA+ ID4gQmVjYXVzZSBJZiBQTUQgZG9lc24ndCBzdXBwb3J0IGJ1cnN0X3NpemUgPiAxIGl0IGNhbiBh bHdheXMgcmV0dXJuDQo+ID4gPiBuYl9lbnF1ZXVlZCA9IDEsIGluIHdoaWNoIGNhc2UNCj4gPiA+ ID4gYXBwIGNhbiBlbnF1ZXVlIG5leHQgaG93ZXZlciB3aXRoIGNvbmRpdGlvbiBpdCBzaG91bGQg d2FpdCBmb3INCj4gcHJldmlvdXMNCj4gPiA+IHRvIGNvbXBsZXRlDQo+ID4gPiA+IGJlZm9yZSBt YWtpbmcgbmV4dCBlbnF1ZXVlIGNhbGwuDQo+ID4gPiA+DQo+ID4gPiA+IFNvLCBpZiB3ZSB0YWtl IHNpbXBsZSBleGFtcGxlIHRvIGNvbXByZXNzIDJrIG9mIGRhdGEgd2l0aCBzcmMgbWJ1ZiBzaXpl DQo+ID0NCj4gPiA+IDFrLg0KPiA+ID4gPiBUaGVuIHdpdGggYnVyc3Rfc2l6ZT0xLCBleHBlY3Rl ZCBjYWxsIGZsb3cgd291bGQgYmUodGhpcyBpcyBqdXN0IG9uZQ0KPiBmbG93LA0KPiA+ID4gb3Ro ZXIgdmFyaWF0aW9ucyBhcmUgYWxzbyBwb3NzaWJsZQ0KPiA+ID4gPiBzdWNoYXMgbWFraW5nIGNo YWluIG9mIDFrIGJ1ZmZlcnMgYW5kIHBhc3Mgd2hvbGUgZGF0YSBpbiBvbmUgZ28pOg0KPiA+ID4g Pg0KPiA+ID4gPiAxLiBmaWxsIDFzdCAxayBjaHVuayBvZiBkYXRhIGluIG9wLm1zcmMNCj4gPiA+ ID4gMi5lbnF1ZXVlX3N0cmVhbSAoLi4uLCB8b3AuZmx1c2ggPSBub19mbHVzaHwsIDEsIHB0cl9z dHJlYW0pOw0KPiA+ID4gPiAzLmRlcXVldWVfYnVyc3QofG9wfCwxKTsNCj4gPiA+ID4gNC5yZWZp bGwgbmV4dCAxayBjaHVuayBpbiBvcC5tc3JjDQo+ID4gPiA+IDUuZW5xdWV1ZV9zdHJlYW0oLi4u LHxvcC5mbHVzaCA9IGZ1bGxfZmx1c2h8LCAxICwgcHRyX3N0cmVhbSk7DQo+ID4gPiA+IDYuZGVx dWV1ZV9idXJzdCh8b3B8LCAxKTsNCj4gPiA+ID4gNy5lbmQNCj4gPiA+ID4NCj4gPiA+ID4gU28s IEkgZG9u4oCZdCBzZWUgbXVjaCBvZiBhIGNoYW5nZSBpbiBBUEkgY2FsbCBmbG93IGZyb20gaGVy ZSB0byBkZXNpZ24NCj4gPiA+IHByZXNlbnRlZCBiZWxvdyBleGNlcHQgbmJfb3BzID0gMSBpbg0K PiA+ID4gPiBlYWNoIGNhbGwuDQo+ID4gPiA+IEhvd2V2ZXIgSSBhbSBhc3N1bWluZyB0aGF0IG9w IHN0cnVjdHVyZSB3b3VsZCBzdGlsbCBiZSBzYW1lIGZvcg0KPiBzdGF0ZWZ1bA0KPiA+ID4gcHJv Y2Vzc2luZyBpLmUuIGl0IHdvdWxkIHN0YXJ0IHdpdGgNCj4gPiA+ID4gb3AuZmx1c2ggdmFsdWUg PSBOTy9TWU5DX0ZMVVNIIGFuZCBlbmQgYXQgb3Agd2l0aCBmbHVzaCB2YWx1ZSA9IEZVTEwNCj4g PiA+IEZMVVNILg0KPiA+ID4gPiBBcmUgd2Ugb24gc2FtZSBwYWdlIGhlcmU/DQo+ID4gPiA+DQo+ ID4gPiA+IFRoYW5rcw0KPiA+ID4gPiBTaGFsbHkNCj4gPiA+DQo+ID4gPiBbRmlvbmFdIFdlIHN0 aWxsIGhhdmUgYSBkaWZmZXJlbnQgdW5kZXJzdGFuZGluZyBvZiB0aGUgc3RhdGVmdWwgZmxvdw0K PiBuZWVkZWQNCj4gPiA+IG9uIHRoZSBBUEkuDQo+ID4gPiBJ4oCZbGwgdHJ5IHRvIGNsYXJpZnkg YW5kIG1heWJlIHdlIGNhbiBzZXQgdXAgYSBtZWV0aW5nIHRvIGRpc2N1c3MuDQo+ID4gPiBNeSBh c3N1bXB0aW9ucyBmaXJzdDoNCj4gPiA+IOKAoglPcmRlciBvZiBvcHMgb24gYSBxcCBtdXN0IGJl IG1haW50YWluZWQg4oCTIG9wcyBzaG91bGQgYmUgZGVxdWV1ZWQNCj4gPiA+IGluIHNhbWUgc2Vx dWVuY2UgdGhleSBhcmUgZW5xdWV1ZWQuDQo+ID4gPiDigKIJT3BzIGZyb20gbWFueSBzdHJlYW1z IGNhbiBiZSBlbnF1ZXVlZCBvbiBzYW1lIHFwLg0KPiA+ID4g4oCiCU9wcyBmcm9tIGEgcXAgbWF5 IGJlIGZhbm5lZCBvdXQgdG8gYXZhaWxhYmxlIGh3IG9yIHN3IGVuZ2luZXMgYW5kDQo+ID4gPiBw cm9jZXNzZWQgaW4gcGFyYWxsZWwsIHNvIGVhY2ggb3AgbXVzdCBiZSBpbmRlcGVuZGVudC4NCj4g PiA+IOKAoglTdGF0ZWxlc3MgYW5kIHN0YXRlZnVsIG9wcyBjYW4gYmUgZW5xdWV1ZWQgb24gdGhl IHNhbWUgcXANCj4gPiA+DQo+ID4gPiBTdWJtaXR0aW5nIGEgYnVyc3Qgb2Ygc3RhdGVsZXNzIG9w cyB0byBhIHFwIGlzIG5vIHByb2JsZW0uDQo+ID4gPiBTdWJtaXR0aW5nIG1vcmUgdGhhbiAxIG9w IGF0IGEgdGltZSBmcm9tIHRoZSBzYW1lIHN0YXRlZnVsIHN0cmVhbSB0byBhDQo+IHFwIGlzDQo+ ID4gPiBhIHByb2JsZW0uDQo+ID4gPiBFeGFtcGxlOg0KPiA+ID4gQXBwbCBzdWJtaXRzIDIgb3Bz IGluIHNhbWUgc3RyZWFtIGluIGEgYnVyc3QsIGVhY2ggaGFzIHNyYyBhbmQgZGVzdA0KPiBtYnVm cywNCj4gPiA+IGlucHV0IGxlbmd0aC9vZmZzZXQgYW5kDQo+ID4gPiByZXF1aXJlcyBjaGVja3N1 bSB0byBiZSBjYWxjdWxhdGVkLg0KPiA+ID4gVGhlIGZpcnN0IG9wIG11c3QgYmUgcHJvY2Vzc2Vk IHRvIGNvbXBsZXRpb24gYmVmb3JlIHRoZSBzZWNvbmQgY2FuIGJlDQo+ID4gPiBzdGFydGVkIGFz IGl0IG5lZWRzIHRoZSBoaXN0b3J5IGFuZCB0aGUgY2hlY2tzdW0gc28gZmFyLg0KPiA+ID4gSWYg ZWFjaCBkZXN0IG1idWYgaXMgYmlnIGVub3VnaCBzbyBubyBvdmVyZmxvdywgZWFjaCBkZXN0IG1i dWYgd2lsbCBiZQ0KPiA+ID4gcGFydGlhbGx5IGZpbGxlZC4gVGhpcyBpcyBwcm9iYWJseSBub3QN Cj4gPiA+IHdoYXTigJlzIGRlc2lyZWQsIGFuZCB3aWxsIGZvcmNlIGFuIGV4dHJhIGNvcHkgdG8g bWFrZSB0aGUgb3V0cHV0IGRhdGENCj4gPiA+IGNvbnRpZ3VvdXMuDQo+ID4gPiBJZiB0aGUgZGVz dCBtYnVmIGluIHRoZSBmaXJzdCBvcCBpcyB0b28gc21hbGwsIHRoZW4gZG9lcyB0aGUgUE1EIGFs bG9jIG1vcmUNCj4gPiA+IG1lbW9yeSBpbiB0aGUgZGVzdCBtYnVmPw0KPiA+ID4gT3IgYWxsb2Mg YW5vdGhlciBtYnVmPyBPciBmYWlsIGFuZCB0aGUgd2hvbGUgYnVyc3QgbXVzdCBiZSByZXN1Ym1p dHRlZD8NCj4gPiA+IE9yIHN0b3JlIHRoZSAybmQgb3AsIHdhaXQsIG9uIHNlZWluZyB0aGUgT1VU X09GX1NQQUNFIG9uIHRoZSAxc3Qgb3AsDQo+ID4gPiBvdmVyd3JpdGUgdGhlIHNyYywgZGVzdCwg bGVuIGV0YyBvZiB0aGUgMm5kIG9wDQo+ID4gPiB0byBpbmNsdWRlIHRoZSB1bnByb2Nlc3NlZCBw YXJ0IG9mIHRoZSAxc3Qgb3A/DQo+ID4gPiBJbiB0aGUgbWVhbnRpbWUsIGFyZSBhbGwgb3RoZXIg b3BzIG9uIHRoZSBxcCBibG9ja2VkIGJlaGluZCB0aGVzZT8NCj4gPiA+IEZvciBodyBhY2NlbGVy YXRvcnMgaXTigJlzIHdvcnNlLCBhcyBQTUQgd291bGQgbm9ybWFsbHkgcmV0dXJuIG9uY2Ugb3Bz DQo+IGFyZQ0KPiA+ID4gb2ZmbG9hZGVkIGFuZCB0aGUgZGVxdWV1ZSB3b3VsZA0KPiA+ID4gcGFz cyBwcm9jZXNzZWQgb3BzIHN0cmFpZ2h0IGJhY2sgdG8gdGhlIGFwcGwuIEluc3RlYWQsIHRoZSBl bnF1ZXVlIHdvdWxkDQo+ID4gPiBuZWVkIHRvIGtpY2sgb2ZmIGEgdGhyZWFkIHRvDQo+ID4gPiBk ZXF1ZXVlIG9wcyBhbmQgZmlsdGVyIHRvIGZpbmQgdGhlIHN0YXRlZnVsIG9uZSwgc3RvcmluZyB0 aGUgb3RoZXJzIHRpbCB0aGUNCj4gbmV4dA0KPiA+ID4gYXBwbGljYXRpb24gZGVxdWV1ZSBpcyBj YWxsZWQuDQo+ID4gPg0KPiA+ID4gQWJvdmUgc2NlbmFyaW9zIGRvbuKAmXQgbGVuZCB0aGVtc2Vs dmVzIHRvIGFjY2VsZXJhdGluZyBhIHBhY2tldA0KPiBwcm9jZXNzaW5nDQo+ID4gPiB3b3JrbG9h ZC4NCj4gPiA+IEl0IHB1c2hlcyBhIHdvcmtsb2FkIGRvd24gdG8gYWxsIFBNRHMgd2hpY2ggSSBi ZWxpZXZlIGJlbG9uZ3MgYWJvdmUgdGhpcw0KPiBBUEkNCj4gPiA+IGFzDQo+ID4gPiB0aGF0IHdv cmsgaXMgbm90IGFib3V0IG9mZmxvYWRpbmcgdGhlIGNvbXB1dGUgaW50ZW5zaXZlIGNvbXByZXNz aW9uDQo+IHdvcmsNCj4gPiA+IGJ1dA0KPiA+ID4gYWJvdXQgdGhlIHNlcXVlbmNpbmcgb2YgZGF0 YSBhbmQgc28gaXMgYmV0dGVyIGNvZGVkIG9uY2UsIGFib3ZlIHRoZSBBUEkNCj4gaW4NCj4gPiA+ IGFuIGFwcGxpY2F0aW9uIGxheWVyDQo+ID4gPiBjb21tb24gdG8gYWxsIFBNRHMuIChTZWUgTm90 ZTEgaW4NCj4gaHR0cDovL2RwZGsub3JnL21sL2FyY2hpdmVzL2Rldi8yMDE3LQ0KPiA+ID4gT2N0 b2Jlci8wNzg5NDQuaHRtbCApDQo+ID4gPiBJZiBhbiBhcHBsaWNhdGlvbiBoYXMgc2V2ZXJhbCBw YWNrZXRzIHdpdGggZGF0YSBmcm9tIGEgc3RyZWFtIHRoYXQgaXQgbmVlZHMNCj4gdG8NCj4gPiA+ IChkZSljb21wcmVzcyBzdGF0ZWZ1bGx5LA0KPiA+ID4gd2hhdCBpdCBwcm9iYWJseSB3YW50cyBp cyBmb3IgdGhlIG91dHB1dCBkYXRhIHRvIGZpbGwgZWFjaCBvdXRwdXQgYnVmZmVyDQo+ID4gPiBj b21wbGV0ZWx5IGJlZm9yZSB3cml0aW5nIHRvIHRoZSBuZXh0IGJ1ZmZlci4NCj4gPiA+IENoYWlu aW5nIHRoZSBzcmMgbWJ1ZnMgaW4gdGhlc2UgcGt0cyBpbnRvIG9uZSBjaGFpbiBhbmQgc2VuZGlu ZyBhcyBvbmUgb3ANCj4gPiA+IGFsbG93cyB0aGUgb3V0cHV0DQo+ID4gPiBkYXRhIHRvIGJlIHBh Y2tlZCBpbnRvIGEgZGVzdCBtYnVmIG9yIG1idWYgY2hhaW4uDQo+ID4gPiBJIHRoaW5rIHdoYXTi gJlzIG5lZWRlZCBpcyBhIGxheWVyIGFib3ZlIHRoZSBBUEkgdG8gYWNjdW11bGF0ZSBpbmNvbWlu Zw0KPiA+ID4gcGFja2V0cyB3aGlsZSB3YWl0aW5nIGZvciB0aGUNCj4gPiA+IHByZXZpb3VzIHNl dCBvZiBwYWNrZXRzIHRvIGJlIGNvbXByZXNzZWQuIEZvcndhcmRpbmcgdG8gdGhlIFBNRCB0bw0K PiBxdWV1ZQ0KPiA+ID4gdGhlcmUgaXMgbm90IHRoZSByaWdodCBwbGFjZQ0KPiA+ID4gdG8gYnVm ZmVyIHRoZW0gYXMgdGhlIHF1ZXVlIHNob3VsZCBiZSBwZXIgc3RyZWFtIHJhdGhlciB0aGFuIG9u IHRoZQ0KPiA+ID4gYWNjZWxlcmF0b3IgZW5naW5l4oCZcyBxdWV1ZQ0KPiA+ID4gd2hpY2ggaGFz IGxvdHMgb2Ygb3RoZXIgaW5kZXBlbmRlbnQgcGFja2V0cy4NCj4gPiA+DQo+ID4NCj4gPiBbU2hh bGx5XSBPay4gSSBiZWxpZXZlIEkgZ2V0IGl0Lg0KPiA+IEluIGdlbmVyYWwgSSBhZ3JlZSB0byB0 aGlzIHByb3Bvc2FsLiBIb3dldmVyIGhhdmUgY29uY2VybiBvbiAxIHBvaW50IGhlcmUNCj4gaS5l LiBvcmRlciBtYWludGVuYW5jZS4gUGxlYXNlDQo+ID4gc2VlIGZ1cnRoZXIgZm9yIG1vcmUgZXhw bGFuYXRpb24uDQo+ID4NCj4gPiA+DQo+ID4gPiBQcm9wb3NhbDoNCj4gPiA+IOKAoiBPcHMgZnJv bSBhIHFwIG1heSBiZSBmYW5uZWQgb3V0IHRvIGF2YWlsYWJsZSBodyBvciBzdyBlbmdpbmVzIGFu ZA0KPiA+ID4gICAgIHByb2Nlc3NlZCBpbiBwYXJhbGxlbCwgc28gZWFjaCBvcCBtdXN0IGJlIGlu ZGVwZW5kZW50Lg0KPiA+IFtTaGFsbHldIFBvc3NpYmxlIG9ubHkgaWYgIFBNRCBzdXBwb3J0IGNv bWJpbmF0aW9uIG9mIFNXIGFuZCBIVw0KPiBwcm9jZXNzaW5nLiBSaWdodD8NCj4gW0Zpb25hXSBO b3QgbmVjZXNzYXJpbHksIEludGVsIFF1aWNrQXNzaXN0IGFjY2VsZXJhdG9ycyBhcmUgSFcgYW5k IGNhbg0KPiBwcm9jZXNzIG9wcyBmcm9tIHNhbWUgcXAgaW4gcGFyYWxsZWwNCj4gDQo+IA0KPiA+ ID4g4oCiIE9yZGVyIG9mIG9wcyBvbiBhIHFwIG11c3QgYmUgbWFpbnRhaW5lZCDigJMgb3BzIHNo b3VsZCBiZSBkZXF1ZXVlZCBpbg0KPiA+ID4gc2FtZSBzZXF1ZW5jZSB0aGV5IGFyZSBlbnF1ZXVl ZC4NCj4gPiBbU2hhbGx5XSBJZiBlYWNoIG9wIGlzIGluZGVwZW5kZW50IHRoZW4gd2h5IGRvIHdl IG5lZWQgdG8gbWFpbnRhaW4NCj4gb3JkZXJpbmcuIFNpbmNlIHRoZXkncmUgaW5kZXBlbmRlbnQN Cj4gPiBhbmQgdGh1cyBjYW4gYmUgcHJvY2Vzc2VkIGluIHBhcmFsbGVsIHNvIHRoZXkgY2FuIHdl bGwgYmUgcXVpdGUgb3V0LW9mLW9yZGVyDQo+IGFuZCBhdmFpbGFibGUgZm9yIGRlcXVldWUgYXMN Cj4gPiBzb29uIGFzIGNvbXBsZXRlZC4NCj4gPiBTZXJpYWxpemluZyB0aGVtIHdpbGwgbGltaXQg SFcgdGhyb3VnaHB1dCBjYXBhYmlsaXR5LiBBbmQgSSBjYW4gZW52aXNpb24NCj4gc29tZSBhcHAg bWF5IG5vdCBjYXJlIGFib3V0DQo+ID4gb3JkZXJpbmcganVzdCBjb21wbGV0aW9uLg0KPiA+IFNv IEkgd291bGQgc3VnZ2VzdCBpZiBhcHBsaWNhdGlvbiBuZWVkIG9yZGVyaW5nIHNob3VsZCB0YWcg ZWFjaCBvcCB3aXRoDQo+IHNvbWUgaWQgb3Igc2VyaWFsIG51bWJlciBpbiBvcA0KPiA+IHVzZXJf ZGF0YSBhcmVhIHRvIGlkZW50aWZ5IGVucXVldWUgb3JkZXIgT1Igd2UgbWF5IGFkZCBmbGFnIGlu DQo+IGVucXVldWVfYnVyc3QoKSBBUEkgdG8gZW5mb3JjZQ0KPiA+IHNlcmlhbGl6ZWQgZGVxdWV1 aW5nLCBpZiB0aGF0J3MgaGFyZCByZXF1aXJlbWVudCBvZiBhbnkuDQo+IFtGaW9uYV0gT2ssICBJ IHRoaW5rIHlvdSdyZSByaWdodCwgdGhpcyByZXF1aXJlbWVudCBpc24ndCBuZWVkZWQuDQo+IElu IHN0YXRlbGVzcyBvcHMgaXQncyBub3QgbmVlZGVkLg0KPiBGb3Igc3RhdGVmdWwgdGhlIGFwcGwg c2hvdWxkIG9ubHkgaGF2ZSBvbmUgb3AgcGVyIHN0cmVhbSBpbmZsaWdodCBhdCBhbnkgdGltZQ0K PiBzbyBtYW5hZ2VzIHRoZSBvcmRlcmluZy4NCj4gU28gd2UgY2FuIHNwZWNpZnkgb24gdGhlIEFQ SSB0aGF0IG9yZGVyaW5nIGlzIG5vdCBuZWNlc3NhcmlseSBtYWludGFpbmVkIG9uDQo+IHRoZSBx cCBhbmQgUE1EcyBtYXkgcmV0dXJuIHJlc3BvbnNlcyBvdXQtb2Ytb3JkZXIuDQo+IFRoZSByZXNw b25zaWJpbGl0eSBpcyBvbiB0aGUgYXBwbGljYXRpb24gdG8gbWFpbnRhaW4gb3JkZXIgaWYgaXQn cyBuZWVkZWQuDQo+IElmIGxhdGVyIHdlIGZpbmQgc29tZSBhcmd1bWVudCBmb3IgbWFpbnRhaW5p bmcgb3JkZXIgSSdkIHN1Z2dlc3QgYQ0KPiBjb25maWd1cmF0aW9uIHBhcmFtIHBlciBxcCBvciBl dmVuIHBlciBkZXZpY2UgcmF0aGVyIHRoYW4gb24gdGhlDQo+IGVucXVldWVfYnVyc3QoKQ0KDQpb U2hhbGx5XSBEb25lLg0KDQo+IA0KPiANCj4gPiA+IOKAoiBTdGF0ZWxlc3MgYW5kIHN0YXRlZnVs IG9wcyBjYW4gYmUgZW5xdWV1ZWQgb24gdGhlIHNhbWUgcXANCj4gPiA+IOKAoiBTdGF0ZWxlc3Mg YW5kIHN0YXRlZnVsIG9wcyBjYW4gYmUgZW5xdWV1ZWQgaW4gdGhlIHNhbWUgYnVyc3QNCj4gPiA+ IOKAoiBPbmx5IDEgb3AgYXQgYSB0aW1lIG1heSBiZSBlbnF1ZXVlZCB0byB0aGUgcXAgZnJvbSBh bnkgc3RhdGVmdWwNCj4gc3RyZWFtLg0KPiA+ID4g4oCiIEEgYnVyc3QgY2FuIGhhdmUgbXVsdGlw bGUgc3RhdGVmdWwgb3BzLCBidXQgZWFjaCBtdXN0IGJlIGZyb20gYQ0KPiBkaWZmZXJlbnQNCj4g PiA+IHN0cmVhbS4NCj4gPiA+IOKAoiBBbGwgb3BzIHdpbGwgaGF2ZSBhIHNlc3Npb24gYXR0YWNo ZWQg4oCTIHRoaXMgd2lsbCBvbmx5IGNvbnRhaW4gaW1tdXRhYmxlDQo+IGRhdGENCj4gPiA+IHdo aWNoDQo+ID4gPiAgICBjYW4gYmUgdXNlZCBieSBtYW55IG9wcywgZGV2aWNlcyBhbmQgb3IgZHJp dmVycyBhdCB0aGUgc2FtZSB0aW1lLg0KPiA+ID4g4oCiIEFsbCBzdGF0ZWZ1bCBvcHMgd2lsbCBo YXZlIGEgc3RyZWFtIGF0dGFjaGVkIGZvciBtYWludGFpbmluZyBzdGF0ZSBhbmQNCj4gPiA+ICAg IGhpc3RvcnksIHRoaXMgY2FuIG9ubHkgYmUgdXNlZCBieSBvbmUgb3AgYXQgYSB0aW1lLg0KPiA+ IFtTaGFsbHldIFNvLCB5b3UgbWVhbjoNCj4gPg0KPiA+IEEgc2luZ2xlIGVucXVlX2J1cnN0KCkg KmNhbiogY2FycnkgbXVsdGlwbGUgc3RyZWFtcy4gSS5FLiBUaGlzIGlzIGFsbG93ZWQNCj4gYm90 aCBpbiBidXJzdCBvciBpbiBxcCAoc2F5LCB3aGVuDQo+ID4gbXVsdGlwbGUgdGhyZWFkcyBjYWxs IGVucXVlX2J1cnN0KCkgb24gc2FtZSBxcCkNCj4gPg0KPiA+ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiA+ICAgICAgICAgICAgICAgZW5xdWVfYnVyc3QgKHxvcDEubm9fZmx1 c2ggfCBvcDIubm9fZmx1c2ggfCBvcDMuZmx1c2hfZmluYWwgfA0KPiBvcDQubm9fZmx1c2ggfCBv cDUubm9fZmx1c2ggfCkNCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ ID4gV2hlcmUsDQo+ID4gQWxsIG9wMSwgb3AyLi4ub3A1IGJlbG9uZ3MgdG8gYWxsICpkaWZmZXJl bnQqIHN0cmVhbXMuIE9wMyBjYW4gYmUNCj4gc3RhdGVsZXNzL3N0YXRlZnVsIGRlcGVuZGluZyB1 cG9uDQo+ID4gb3BfdHlwZSB2YWx1ZSBhbmQgZWFjaCBjYW4gaGF2ZSAqc2FtZSBvciBkaWZmZXJl bnQqIHNlc3Npb25zLg0KPiBbRmlvbmFdIEV4YWN0bHkNCj4gDQo+ID4gSWYgSSB1bmRlcnN0YW5k IHRoaXMgcmlnaHQsIHRoZW4geWVzIGl0IGxvb2tzIGdvb2QgdG8gbWUuIEhvd2V2ZXIgdGhpcyBh bHNvDQo+IGJyaW5nIG9uZSBtaW5vciBwb2ludCBmb3INCj4gPiBkaXNjdXNzaW9uIGJ1dCBJIHdv dWxkIHdhaXQgdG8gaW5pdGlhdGUgdGhhdCB1bnRpbCB3ZSBjbG9zZSBvbiBjdXJyZW50IG9wZW4N Cj4gcG9pbnRzLg0KPiA+DQo+ID4gVGhhbmtzDQo+ID4gU2hhbGx5DQoNCltTaGFsbHldIFNpbmNl IHdlIGFyZSBpbiBzeW5jIG5vdy4gU28gSSB3aWxsIGJyaW5nIHVwIGFub3RoZXIgcG9pbnQgZm9y IGRpc2N1c3Npb24uDQoNCkknbSB0aGlua2luZyBwcm9iYWJseSB3ZSBzaG91bGQgaGF2ZSBzdHJl YW0gcmVnYXJkbGVzcyBvZiBvcF90eXBlIHdoZXJlIGl0IHNob3VsZCBiZSBtYXJrZWQgKm1hbmRh dG9yeSogZm9yIHN0YXRlZnVsIGJ1dCAqb3B0aW9uYWwqICAob3IgbWF5IGJlIG1hbmRhdG9yeSkg Zm9yIHN0YXRlbGVzcyBhcyBoYXZpbmcgaXQgZm9yIHN0YXRlbGVzcyBtYXkgaGVscCBzb21lIFBN RCB0byBnYWluIHBlcmZvcm1hbmNlIGluIGRhdGEgcGF0aCBhbmQgcmVhc29uIGlzIGhlcmU6DQoN CkN1cnJlbnRseSB3ZSBzZWUgc3RyZWFtIGFzIHJlc291cmNlIHdoaWNoIG1haW50YWluIHN0YXRl cyAoZXQgZWwpIGZvciBzdGF0ZWZ1bCBwcm9jZXNzaW5nIGJ1dCB0aGlzIGlzIGFsc28gYSBwbGFj ZWhvbGRlciB3aGVyZSBQTUQgY2FuIGNob29zZSB0byBkbyBvbmUtdGltZSByZXNvdXJjZSBzZXR1 cCBjb21tb24gdG8gYm90aCBvcF90eXBlcyAoc3VjaCBhcyBhbGxvY2F0aW5nIGluc3RydWN0aW9u IGZyb20gaXRzIGludGVybmFsIHBvb2wgYW5kIGluaXRpYWxpemUgaXQgd2l0aCBzZXNzaW9uIHBh cmFtcykuDQpTbyBmb3Igc3VjaCBQTUQgZGVzaWducywgaXQgd2lsbCBiZSBiZW5lZmljaWFsIHRv IHVzZSBzdHJlYW0gZm9yIHN0YXRlbGVzcyBhcyB3ZWxsIGFzIGl0IHdpbGwgaGVscCBtaW5pbWl6 ZSBpbnN0cnVjdGlvbiBzZXR1cCB0aW1lIG9uIGRhdGEgcGF0aCBhcyBhbGwgMS10aW1lIG9wZXJh dGlvbnMgd2lsbCBiZSBkb25lIGluIHN0cmVhbV9jcmVhdGUoKS4NCkluIGNhc2Ugb2Ygc3RhdGVs ZXNzLCBpZiBzdHJlYW0gaXMgcHJlc2VudCB3b3VsZCBtZWFuIGl0IGlzIGF2YWlsYWJsZSBmb3Ig bmV4dCB1c2UgYXMgc29vbiBhcyBsYXN0IGFzc29jaWF0ZWQgb3AgaXMgZGVxdWV1ZWQgYXMgaXQg aG9sZCBubyBjb250ZXh0IG9mIGxhc3Qgb3AgYnV0IGNvbW1vbiByZXNvdXJjZXMgcmUtdXNlYWJs ZSBmb3IgbmV4dCBvcC4NCg0KQXBhcnQsIHRoZXJlJ3MgYW5vdGhlciBwb2ludC4gV2UgY2FuIGVu YWJsZSBBUEkgc3BlYyB0byBsZXZlcmFnZSBtZW1wb29sIG9iamVjdCBjYWNoZSBjb25jZXB0IGJ5 IGFsbG93aW5nIFBNRCB0byBhbGxvY2F0ZSBzdHJlYW0gZnJvbSBvcCBwb29sIGFzIHBlci1vcCBw cml2YXRlIGRhdGEgaS5lLiBlYWNoIG9iamVjdCBlbHRfc2l6ZSA9IHNpemVvZihydGVfY29tcF9v cCkgKyB1c2VyX3NpemUgKyBzdHJlYW1fc2l6ZS4NClRoaXMgd291bGQgaGVscCBQTUQgcmVkdWNl IG1lbW9yeSBhY2Nlc3MgdGltZSBpZiBjYWNoaW5nIGlzIGVuYWJsZWQgYXMgZWFjaCBvcCBzdHJl YW0gcmVzaWRlIHdpdGggaXQgaW4gY2FjaGUgcmF0aGVyIHRoYW4gaGF2aW5nIHRoZW0gZnJvbSBk aWZmZXJlbnQgcG9vbCB3aXRoIGRpZmZlcmVudCBwb2xpY2llcy4NCg0KSWYgYWdyZWVkLCB0aGVu IGl0IGNhbiBiZSBlbmFibGVkIGluIEFQSSBzcGVjIHN1Y2ggYXMgKHRoaXMgaXMganVzdCBhIHBy b3Bvc2FsLCB0aGVyZSBjb3VsZCBiZSBvdGhlciAgLi4pDQoNCi0gTW9kaWZ5IHN0cmVhbV9jcmVh dGUgc3BlYyBmb2xsb3dpbmc6DQoNCnN0cnVjdCBydGVfY29tcF9vcF9wb29sX3ByaXZhdGUgew0K CXVpbnQxNl90IHVzZXJfc2l6ZTsNCgkvKio8IFNpemUgb2YgcHJpdmF0ZSB1c2VyIGRhdGEgd2l0 aCBlYWNoIG9wZXJhdGlvbi4gKi8NCgl1aW50MTZfdCBkZXZfcHJpdl9kYXRhX3NpemU7DQoJLyoq PCBTaXplIG9mIGRldmljZSBwcml2YXRlIGRhdGEgd2l0aCBlYWNoIG9wZXJhdGlvbi4gKi8NCn07 DQoNCmludCBydGVfY29tcF9zdHJlYW1fY3JlYXRlKHVpbnQzMl90IGRldl9pZCwgDQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9jb21wX3Nlc3Npb24g KnNlc3MsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICoqc3RyZWFtLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnRlX21lbXBvb2wgKm9wX3Bvb2wgLyogb3B0aW9uYWwgKi8pOw0KDQotIFRoaXMgd2ls bCBtYXAgdG8gUE1EIG9wcyBzdHJlYW1fY3JlYXRlKCkuIEhlcmUgaWYgb3BfcG9vbCAhPSBOVUxM LCB0aGVuIFBNRCBjYW4gcmUtYWxsb2NhdGUgb3AgcG9vbCB3aXRoIG5ldyBlbHRfc2l6ZSA9IHJ0 ZV9jb21wX29wICsgb3BfcHJpdmF0ZS0+dXNlcl9zaXplICsgZGV2X3ByaXZhdGVfc3RyZWFtX3Np emUgc28gdGhhdCBzdHJlYW0gcmVzaWRlIGluIG9wIHByaXZhdGUgYXJlYS4NCg0KT3IsIHdlIG1h eSBhZGQgYW5vdGhlciBBUEkgYWx0b2dldGhlciB0byBkbyBzdHJlYW0gYWxsb2NhdGlvbnMgZnJv bSBvcF9wb29sIHN1Y2ggYXMgcnRlX2NvbXBfc3RyZWFtX2NyZWF0ZV9mcm9tX3Bvb2woLi4uKTsN Cg0KSSB3aWxsIGlzc3VlIFJGQyBEb2MgdjIgYWZ0ZXIgeW91ciBmZWVkYmFjayB0aGVzZS4NCg0K VGhhbmtzDQpTaGFsbHkNCg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBDb2RlIGFydGVmYWN0czoNCj4g PiA+DQo+ID4gPiBlbnVtIHJ0ZV9jb21wX29wX3R5cGUgew0KPiA+ID4gICAgIFJURV9DT01QX09Q X1NUQVRFTEVTUywNCj4gPiA+ICAgICBSVEVfQ09NUF9PUF9TVEFURUZVTA0KPiA+ID4gfQ0KPiA+ ID4NCj4gPiA+IEFkZCBmb2xsb3dpbmcgdG8gcnRlX2NvbXBfb3A6DQo+ID4gPiAgICAgZW51bSBy dGVfY29tcF9vcF90eXBlIG9wX3R5cGU7DQo+ID4gPiAgICAgdm9pZCAqIHN0cmVhbV9wcml2YXRl Ow0KPiA+ID4gICAgIC8qIGxvY2F0aW9uIHdoZXJlIFBNRCBtYWludGFpbnMgc3RyZWFtIHN0YXRl IOKAkyBvbmx5IHJlcXVpcmVkIGlmDQo+IG9wX3R5cGUgaXMNCj4gPiA+IFNUQVRFRlVMLCBlbHNl IHNldCB0byBOVUxMICovDQo+ID4gPg0KPiA+ID4gQXMgc2l6ZSBvZiBzdHJlYW0gZGF0YSB3aWxs IHZhcnkgZGVwZW5kaW5nIG9uIFBNRCwgZWFjaCBQTUQgb3IgZGV2aWNlDQo+ID4gPiBzaG91bGQg YWxsb2NhdGUgJiBtYW5hZ2UgaXRzIG93biBtZW1wb29sLiBBc3NvY2lhdGVkIEFQSXMgYXJlOg0K PiA+ID4gcnRlX2NvbXBfc3RyZWFtX2NyZWF0ZSh1aW50OF90IGRldl9pZCwgcnRlX2NvbXBfc2Vz c2lvbiAqc2Vzcywgdm9pZA0KPiAqKg0KPiA+ID4gc3RyZWFtKTsNCj4gPiA+IC8qIFRoaXMgc2hv dWxkIGFsbG9jIGEgc3RyZWFtIGZyb20gdGhlIGRldmljZeKAmXMgbWVtcG9vbCBhbmQgaW5pdGlh bGlzZSBpdC4NCj4gVGhpcw0KPiA+ID4gaGFuZGxlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBQTUQg d2l0aCBldmVyeSBvcCBpbiB0aGUgc3RyZWFtLiBRLiBTaG91bGQNCj4gPiA+IHFwX2lkIGFsc28g YmUgYWRkZWQsIHdpdGggY29uc3RyYWludCB0aGF0IGFsbCBvcHMgaW4gdGhlIHNhbWUgc3RyZWFt DQo+IHNob3VsZA0KPiA+ID4gYmUgc2VudCB0byB0aGUgc2FtZSBxcD8gICovDQo+ID4gPiBydGVf Y29tcF9zdHJlYW1fZnJlZSh1aW50OF90IGRldl9pZCwgdm9pZCAqIHN0cmVhbSk7DQo+ID4gPiAv KiBUaGlzIHNob3VsZCBjbGVhciB0aGUgc3RyZWFtIGFuZCByZXR1cm4gaXQgdG8gdGhlIGRldmlj ZeKAmXMgbWVtcG9vbCAqLw0KPiA+ID4NCj4gPiA+IEFsbCBvcHMgYXJlIGVucXVldWVkL2RlcXVl dWVkIHRvIGRldmljZSAmIHFwIHVzaW5nIHNhbWUNCj4gPiA+IHJ0ZV9jb21wcmVzc2Rldl9lbnF1 ZXVlX2J1cnN0KCkv4oCmZGVxdWV1ZV9idXJzdDsNCj4gPiA+DQo+ID4gPiBSZSBmbHVzaCBmbGFn cywgc3RhdGVmdWwgc3RyZWFtIHdvdWxkIHN0YXJ0IHdpdGggb3AuZmx1c2ggPSBOT05FIG9yIFNZ TkMNCj4gYW5kDQo+ID4gPiBlbmQgd2l0aCBGVUxMIG9yIEZJTkFMDQo+ID4gPiBTVEFURUxFU1Mg b3BzIHdvdWxkIGp1c3QgdXNlIGVpdGhlciBGVUxMIG9yIEZJTkFMDQo+ID4gPg0KPiA+ID4NCj4g PiA+IExldCBtZSBrbm93IGlmIHlvdSB3YW50IHRvIHNldCB1cCBhIG1lZXRpbmcgLSBpdCBtaWdo dCBiZSBhIG1vcmUNCj4gZWZmZWN0aXZlDQo+ID4gPiB3YXkgdG8NCj4gPiA+IGFycml2ZSBhdCBh biBBUEkgdGhhdCB3b3JrcyBmb3IgYWxsIFBNRHMuDQo+ID4gPg0KPiA+ID4gSSdsbCBzZW5kIG91 dCBhIHYzIHRvZGF5IHdpdGggYWJvdmUgcGx1cyB1cGRhdGVzIGJhc2VkIG9uIGFsbCB0aGUgb3Ro ZXINCj4gPiA+IGZlZWRiYWNrLg0KPiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiBGaW9uYQ0K DQo=