From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id E8BFE1B3D2 for ; Fri, 22 Dec 2017 16:13:06 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga102.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Dec 2017 07:13:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,441,1508828400"; d="scan'208";a="15827664" Received: from irsmsx154.ger.corp.intel.com ([163.33.192.96]) by fmsmga001.fm.intel.com with ESMTP; 22 Dec 2017 07:13:02 -0800 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by IRSMSX154.ger.corp.intel.com (163.33.192.96) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 22 Dec 2017 15:13:01 +0000 Received: from irsmsx101.ger.corp.intel.com ([169.254.1.46]) by irsmsx111.ger.corp.intel.com ([169.254.2.30]) with mapi id 14.03.0319.002; Fri, 22 Dec 2017 15:13:01 +0000 From: "Trahe, Fiona" To: "Verma, Shally" , "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/zTP6Qnydb7p68QcP6AAL8pPAACHKh0AARa5m8A== Date: Fri, 22 Dec 2017 15:13:00 +0000 Message-ID: <348A99DA5F5B7549AA880327E580B435892E9A94@IRSMSX101.ger.corp.intel.com> References: <348A99DA5F5B7549AA880327E580B435892E72D2@IRSMSX101.ger.corp.intel.com> In-Reply-To: Accept-Language: en-IE, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiY2IyOGY1OGQtYmM2MC00YzAxLWJjZmYtODMxYjEwZjgzMmJkIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IjN5aWhERW9iY3hseXpVT3hwb3AzeUpQcDFsMW9ETFBFOXNsSTBOWmpVTW89In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [163.33.239.181] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [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 15:13:07 -0000 SGkgU2hhbGx5LA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFZlcm1h LCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gU2VudDogRnJpZGF5 LCBEZWNlbWJlciAyMiwgMjAxNyA3OjQ2IEFNDQo+IFRvOiBUcmFoZSwgRmlvbmEgPGZpb25hLnRy YWhlQGludGVsLmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogQXRocmV5YSwgTmFyYXlhbmEgUHJh c2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+OyBHdXB0YSwgQXNoaXNoDQo+ IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYSA8U3VuaWxhLlNhaHVAY2F2 aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA8cGFibG8uZGUubGFyYS5ndWFyY2hA aW50ZWwuY29tPjsgQ2hhbGxhLCBNYWhpcGFsIDxNYWhpcGFsLkNoYWxsYUBjYXZpdW0uY29tPjsg SmFpbiwgRGVlcGFrIEsNCj4gPGRlZXBhay5rLmphaW5AaW50ZWwuY29tPjsgSGVtYW50IEFncmF3 YWwgPGhlbWFudC5hZ3Jhd2FsQG54cC5jb20+OyBSb3kgUGxlZGdlDQo+IDxyb3kucGxlZGdlQG54 cC5jb20+OyBZb3VyaSBRdWVycnkgPHlvdXJpLnF1ZXJyeV8xQG54cC5jb20+OyBBaG1lZCBNYW5z b3VyDQo+IDxhaG1lZC5tYW5zb3VyQG54cC5jb20+OyBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhl QGludGVsLmNvbT4NCj4gU3ViamVjdDogUkU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkg Zm9yIERQREsNCj4gDQo+IEhpIEZpb25hDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+ID4gRnJvbTogVHJhaGUsIEZpb25hIFttYWlsdG86ZmlvbmEudHJhaGVAaW50ZWwuY29t XQ0KPiA+IFNlbnQ6IDIwIERlY2VtYmVyIDIwMTcgMjE6MDMNCj4gPiBUbzogVmVybWEsIFNoYWxs eSA8U2hhbGx5LlZlcm1hQGNhdml1bS5jb20+OyBkZXZAZHBkay5vcmcNCj4gPiBDYzogQXRocmV5 YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0K PiA+IEd1cHRhLCBBc2hpc2ggPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxh DQo+ID4gPFN1bmlsYS5TYWh1QGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJjaCwgUGFibG8NCj4g PiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgQ2hhbGxhLCBNYWhpcGFsDQo+ID4g PE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBKYWluLCBEZWVwYWsgSyA8ZGVlcGFrLmsuamFp bkBpbnRlbC5jb20+Ow0KPiA+IEhlbWFudCBBZ3Jhd2FsIDxoZW1hbnQuYWdyYXdhbEBueHAuY29t PjsgUm95IFBsZWRnZQ0KPiA+IDxyb3kucGxlZGdlQG54cC5jb20+OyBZb3VyaSBRdWVycnkgPHlv dXJpLnF1ZXJyeV8xQG54cC5jb20+OyBBaG1lZA0KPiA+IE1hbnNvdXIgPGFobWVkLm1hbnNvdXJA bnhwLmNvbT47IFRyYWhlLCBGaW9uYQ0KPiA+IDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+ID4g U3ViamVjdDogUkU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPg0K PiA+IEhpIFNoYWxseSwNCj4gPg0KPiA+IEkgdGhpbmsgd2UgYXJlIGFsbW9zdCBpbiBzeW5jIG5v dyAtIGEgZmV3IGNvbW1lbnRzIGJlbG93IHdpdGgganVzdCBvbmUNCj4gPiBvcGVuIHF1ZXN0aW9u IHdoaWNoIEkgc3VzcGVjdCB3YXMgYSB0eXBvLg0KPiA+IElmIHRoaXMgaXMgb2sgdGhlbiBubyBu ZWVkIGZvciBhIG1lZXRpbmcgSSB0aGluay4NCj4gPiBJbiB0aGlzIGNhc2Ugd2lsbCB5b3UgaXNz dWUgYSB2MiBvZiB0aGlzIGRvYyA/DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gPiA+IEZyb206IFZlcm1hLCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFA Y2F2aXVtLmNvbV0NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgRGVjZW1iZXIgMjAsIDIwMTcgNzox NSBBTQ0KPiA+ID4gVG86IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2 QGRwZGsub3JnDQo+ID4gPiBDYzogQXRocmV5YSwgTmFyYXlhbmEgUHJhc2FkIDxOYXJheWFuYVBy YXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0KPiA+IEd1cHRhLCBBc2hpc2gNCj4gPiA+IDxBc2hp c2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYSA8U3VuaWxhLlNhaHVAY2F2aXVtLmNv bT47DQo+ID4gRGUgTGFyYSBHdWFyY2gsIFBhYmxvDQo+ID4gPiA8cGFibG8uZGUubGFyYS5ndWFy Y2hAaW50ZWwuY29tPjsgQ2hhbGxhLCBNYWhpcGFsDQo+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1 bS5jb20+OyBKYWluLCBEZWVwYWsgSw0KPiA+ID4gPGRlZXBhay5rLmphaW5AaW50ZWwuY29tPjsg SGVtYW50IEFncmF3YWwNCj4gPiA8aGVtYW50LmFncmF3YWxAbnhwLmNvbT47IFJveSBQbGVkZ2UN Cj4gPiA+IDxyb3kucGxlZGdlQG54cC5jb20+OyBZb3VyaSBRdWVycnkgPHlvdXJpLnF1ZXJyeV8x QG54cC5jb20+Ow0KPiA+IEFobWVkIE1hbnNvdXINCj4gPiA+IDxhaG1lZC5tYW5zb3VyQG54cC5j b20+DQo+ID4gPiBTdWJqZWN0OiBSRTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3Ig RFBESw0KPiA+ID4NCj4gPiA+IEhpIEZpb25hDQo+ID4gPg0KPiA+ID4gUGxlYXNlIHJlZmVyIHRv IG15IGNvbW1lbnRzIGJlbG93IHdpdGggbXkgdW5kZXJzdGFuZGluZyBvbiB0d28gbWFqb3INCj4g PiBwb2ludHMgT1VUX09GX1NQQUNFIGFuZA0KPiA+ID4gU3RhdGVmdWwgRGVzaWduLg0KPiA+ID4g SWYgeW91IGJlbGlldmUgd2Ugc3RpbGwgbmVlZCBhIG1lZXRpbmcgdG8gY29udmVyZ2Ugb24gc2Ft ZSBwbGVhc2Ugc2hhcmUNCj4gPiBtZWV0aW5nIGRldGFpbHMgdG8gbWUuDQo+ID4gPg0KPiA+ID4N Cj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gRnJvbTogVHJhaGUs IEZpb25hIFttYWlsdG86ZmlvbmEudHJhaGVAaW50ZWwuY29tXQ0KPiA+ID4gPiBTZW50OiAxNSBE ZWNlbWJlciAyMDE3IDIzOjExDQo+ID4gPiA+IFRvOiBWZXJtYSwgU2hhbGx5IDxTaGFsbHkuVmVy bWFAY2F2aXVtLmNvbT47IGRldkBkcGRrLm9yZw0KPiA+ID4gPiBDYzogQXRocmV5YSwgTmFyYXlh bmEgUHJhc2FkIDxOYXJheWFuYVByYXNhZC5BdGhyZXlhQGNhdml1bS5jb20+Ow0KPiA+ID4gPiBD aGFsbGEsIE1haGlwYWwgPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJj aCwgUGFibG8NCj4gPiA+ID4gPHBhYmxvLmRlLmxhcmEuZ3VhcmNoQGludGVsLmNvbT47IEd1cHRh LCBBc2hpc2gNCj4gPiA+ID4gPEFzaGlzaC5HdXB0YUBjYXZpdW0uY29tPjsgU2FodSwgU3VuaWxh IDxTdW5pbGEuU2FodUBjYXZpdW0uY29tPjsNCj4gPiA+ID4gVHJhaGUsIEZpb25hIDxmaW9uYS50 cmFoZUBpbnRlbC5jb20+OyBKYWluLCBEZWVwYWsgSw0KPiA+ID4gPiA8ZGVlcGFrLmsuamFpbkBp bnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24g QVBJIGZvciBEUERLDQo+ID4gPiA+DQo+ID4gPiA+IEhpIFNoYWxseSwNCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206 IFZlcm1hLCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0NCj4gPiA+ID4g PiBTZW50OiBUaHVyc2RheSwgRGVjZW1iZXIgNywgMjAxNyA1OjQzIEFNDQo+ID4gPiA+ID4gVG86 IFRyYWhlLCBGaW9uYSA8ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4g PiA+ID4gQ2M6IEF0aHJleWEsIE5hcmF5YW5hIFByYXNhZA0KPiA+IDxOYXJheWFuYVByYXNhZC5B dGhyZXlhQGNhdml1bS5jb20+Ow0KPiA+ID4gPiBDaGFsbGEsIE1haGlwYWwNCj4gPiA+ID4gPiA8 TWFoaXBhbC5DaGFsbGFAY2F2aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA+ID4g PiA8cGFibG8uZGUubGFyYS5ndWFyY2hAaW50ZWwuY29tPjsgR3VwdGEsIEFzaGlzaA0KPiA+ID4g PiA+IDxBc2hpc2guR3VwdGFAY2F2aXVtLmNvbT47IFNhaHUsIFN1bmlsYQ0KPiA+IDxTdW5pbGEu U2FodUBjYXZpdW0uY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29t cHJlc3Npb24gQVBJIGZvciBEUERLDQo+ID4gPiA+DQo+ID4gPiA+IC8vc25pcC4uLi4NCj4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+IFBsZWFzZSBub3RlIGFueSB0aW1lIG91dHB1dCBidWZmZXIg cmFuIG91dCBvZiBzcGFjZSBkdXJpbmcgd3JpdGUNCj4gPiA+ID4gdGhlbg0KPiA+ID4gPiA+ID4g PiA+IG9wZXJhdGlvbiB3aWxsIHR1cm4g4oCcU3RhdGVmdWzigJ0uwqAgU2VlDQo+ID4gPiA+ID4g PiA+ID4gPiBtb3JlIG9uIFN0YXRlZnVsIHVuZGVyIHJlc3BlY3RpdmUgc2VjdGlvbi4NCj4gPiA+ ID4gPiA+ID4gPiBbRmlvbmFdIExldCdzIGNvbWUgYmFjayB0byB0aGlzIGxhdGVyLiBBbiBhbHRl cm5hdGl2ZSBpcyB0aGF0DQo+ID4gPiA+ID4gPiBPVVRfT0ZfU1BBQ0UgaXMNCj4gPiA+ID4gPiA+ ID4gPiByZXR1cm5lZCBhbmQgdGhlICBhcHBsaWNhdGlvbg0KPiA+ID4gPiA+ID4gPiA+IG11c3Qg dHJlYXQgYXMgYSBmYWlsIGFuZCByZXN1Ym1pdCB0aGUgb3BlcmF0aW9uIHdpdGggYSBsYXJnZXIN Cj4gPiA+ID4gZGVzdGluYXRpb24NCj4gPiA+ID4gPiA+ID4gPiBidWZmZXIuDQo+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+IFtTaGFsbHldIFRoZW4gSSBwcm9wb3NlIHRvIGFkZCBhIGZlYXR1 cmUgZmxhZw0KPiA+ID4gPiA+ID4gIkZGX1NVUFBPUlRfT1VUX09GX1NQQUNFIiBwZXIgeGZvcm0g dHlwZSBmb3IgZmxleGlibGUNCj4gPiA+ID4gPiA+ID4gUE1EIGRlc2lnbi4NCj4gPiA+ID4gPiA+ ID4gQXMgdGhlcmUncmUgZGV2aWNlcyB3aGljaCB0cmVhdCBpdCBhcyBlcnJvciBvbiBjb21wcmVz c2lvbiBidXQgbm90DQo+ID4gb24NCj4gPiA+ID4gPiA+IGRlY29tcHJlc3Npb24uDQo+ID4gPiA+ ID4gPiA+IElmIGl0IGlzIG5vdCBzdXBwb3J0ZWQsIHRoZW4gaXQgc2hvdWxkIGJlIHRyZWF0ZWQg YXMgZmFpbHVyZSBjb25kaXRpb24NCj4gPiBhbmQNCj4gPiA+ID4gYXBwDQo+ID4gPiA+ID4gPiBj YW4gcmVzdWJtaXQgb3BlcmF0aW9uLg0KPiA+ID4gPiA+ID4gPiBpZiBzdXBwb3J0ZWQsIGJlaGF2 aW91ciAqVG8tYmUtRGVmaW5lZCogdW5kZXIgc3RhdGVmdWwuDQo+ID4gPiA+ID4gPiBbRmlvbmFd IENhbiB5b3UgZXhwbGFpbiAndHVybiBzdGF0ZWZ1bCcgc29tZSBtb3JlPw0KPiA+ID4gPiA+ID4g SWYgY29tcHJlc3NvciBydW5zIG91dCBvZiBzcGFjZSBkdXJpbmcgc3RhdGVsZXNzIG9wZXJhdGlv biwgZWl0aGVyDQo+ID4gY29tcA0KPiA+ID4gPiBvcg0KPiA+ID4gPiA+ID4gZGVjb21wLCBhbmQg dHVybnMgc3RhdGVmdWwsIGhvdyB3b3VsZCB0aGUgYXBwIGtub3c/IEFuZCB3aGF0DQo+ID4gd291 bGQNCj4gPiA+ID4gYmUgaW4NCj4gPiA+ID4gPiA+IHN0YXR1cywgY29uc3VtZWQgYW5kIHByb2R1 Y2VkPw0KPiA+ID4gPiA+ID4gQ291bGQgaXQgcmV0dXJuIE9VVF9PRl9TUEFDRSwgYW5kIGlmIGJv dGggY29uc3VtZWQgYW5kIHByb2R1Y2VkDQo+ID4gPT0gMA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g W1NoYWxseV0gSWYgY29uc3VtZWQgPSBwcm9kdWNlZCA9PSAwLCB0aGVuIGl0J3Mgbm90IE9VVF9P Rl9TUEFDRQ0KPiA+ID4gPiBjb25kaXRpb24uDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IHRoZW4g dGhlIHdob2xlIG9wIG11c3QgYmUgcmVzdWJtaXR0ZWQgd2l0aCBhIGJpZ2dlciBvdXRwdXQgYnVm ZmVyLg0KPiA+IEJ1dA0KPiA+ID4gPiBpZg0KPiA+ID4gPiA+ID4gY29uc3VtZWQgYW5kIHByb2R1 Y2VkID4gMCB0aGVuIGFwcCBjb3VsZCB0YWtlIHRoZSBvdXRwdXQgYW5kDQo+ID4gc3VibWl0DQo+ ID4gPiA+IG5leHQNCj4gPiA+ID4gPiA+IG9wDQo+ID4gPiA+ID4gPiBjb250aW51aW5nIGZyb20g Y29uc3VtZWQrMS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBbU2hhbGx5XSBj b25zdW1lZCBhbmQgcHJvZHVjZWQgd2lsbCAqYWx3YXlzKiBiZSA+IDAgaW4gY2FzZSBvZg0KPiA+ ID4gPiBPVVRfT0ZfU1BBQ0UuDQo+ID4gPiA+ID4gT1VUX09GX1NQQUNFIG1lYW5zIG91dHB1dCBi dWZmZXIgZXhoYXVzdGVkIHdoaWxlIHdyaXRpbmcgZGF0YSBpbnRvDQo+ID4gaXQNCj4gPiA+ID4g YW5kIFBNRCBtYXkgaGF2ZSBtb3JlIHRvDQo+ID4gPiA+ID4gd3JpdGUgdG8gaXQuIFNvIGluIHN1 Y2ggY2FzZSwgUE1EIHNob3VsZCBzZXQNCj4gPiA+ID4gPiBQcm9kdWNlZCA9IGNvbXBsZXRlIGxl bmd0aCBvZiBvdXRwdXQgYnVmZmVyDQo+ID4gPiA+ID4gU3RhdHVzID0gT1VUX09GX1NQQUNFDQo+ ID4gPiA+ID4gY29uc3VtZSwgZm9sbG93aW5nIHBvc3NpYmlsaXRpZXMgaGVyZToNCj4gPiA+ID4g PiAxLiBjb25zdW1lZCA9IGNvbXBsZXRlIGxlbmd0aCBvZiBzcmMgbWJ1ZiBtZWFucyBQTUQgaGFz IHJlYWQgZnVsbA0KPiA+IGlucHV0LA0KPiA+ID4gPiBPUg0KPiA+ID4gPiA+IDIuIGNvbnN1bWVk ID0gcGFydGlhbCBsZW5ndGggb2Ygc3JjIG1idWYgbWVhbnMgUE1EIGhhcyByZWFkIHBhcnRpYWwN Cj4gPiBpbnB1dA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gT24gc2VlaW5nIHRoaXMgc3RhdHVzLCBh cHAgc2hvdWxkIGNvbnN1bWUgb3V0cHV0IGFuZCByZS1lbnF1ZXVlDQo+ID4gc2FtZQ0KPiA+ID4g PiBvcCB3aXRoIGVtcHR5IG91dHB1dCBidWZmZXIgYW5kDQo+ID4gPiA+ID4gc3JjID0gY29uc3Vt ZWQrMS4NCj4gPiA+ID4gW0Zpb25hXSBBcyB0aGlzIHdhcyBhIHN0YXRlbGVzcyBvcCwgdGhlIFBN RCBjYW5ub3QgYmUgZXhwZWN0ZWQgdG8gaGF2ZQ0KPiA+ID4gPiBzdG9yZWQgdGhlIGhpc3Rvcnkg YW5kIHN0YXRlIGFuZCBzbw0KPiA+ID4gPiBjYW5ub3QgYmUgZXhwZWN0ZWQgdG8gY29udGludWUg ZnJvbSBjb25zdW1lZCsxLiBUaGlzIHdvdWxkIGJlDQo+ID4gc3RhdGVmdWwNCj4gPiA+ID4gYmVo YXZpb3VyLg0KPiA+ID4NCj4gPiA+IFtTaGFsbHldIEV4YWN0bHkuDQo+ID4gPg0KPiA+ID4gPiBC dXQgaXQgc2VlbXMgeW91IGFyZSBzYXlpbmcgdGhhdCBldmVuIG9uIGluIHRoaXMgc3RhdGVsZXNz IGNhc2UgeW91J2QgbGlrZQ0KPiA+IHRoZQ0KPiA+ID4gPiBQTURzIHdobyBjYW4gc3RvcmUgc3Rh dGUNCj4gPiA+ID4gdG8gaGF2ZSB0aGUgb3B0aW9uIG9mIGNvbnZlcnRpbmcgdG8gc3RhdGVmdWwu IFNvDQo+ID4gPiA+IGEgUE1EIHdoaWNoIGNhbiBzdXBwb3J0IHRoaXMgY291bGQgcmV0dXJuIE9V VF9PRl9TUEFDRSB3aXRoDQo+ID4gPiA+IHByb2R1Y2VkL2NvbnN1bWVkIGFzIHlvdSBkZXNjcmli ZSBhYm92ZS4NCj4gPiA+ID4gYSBQTUQgd2hpY2ggY2FuJ3Qgc3VwcG9ydCBpdCBzaG91bGQgcmV0 dXJuIGFuIGVycm9yLg0KPiA+ID4gPiBUaGUgYXBwbCBjYW4gY29udGludWUgb24gZnJvbSBjb25z dW1lZCsxIGluIHRoZSBmb3JtZXIgY2FzZSBhbmQNCj4gPiByZXN1Ym1pdA0KPiA+ID4gPiB0aGUg ZnVsbCByZXF1ZXN0DQo+ID4gPiA+IHdpdGggYSBiaWdnZXIgYnVmZmVyIGluIHRoZSBsYXR0ZXIg Y2FzZS4NCj4gPiA+ID4gSXMgdGhpcyB0aGUgYmVoYXZpb3VyIHlvdSdyZSBsb29raW5nIGZvcj8N Cj4gPiA+ID4gSWYgc28gdGhlIGVycm9yIGNvdWxkIGJlIHNvbWV0aGluZyBsaWtlIE5FRURfQklH R0VSX0RTVF9CVUY/DQo+ID4gPiA+IEhvd2V2ZXIsIHdvdWxkbid0IE9VVF9PRl9TUEFDRSB3aXRo IHByb2R1Y2VkPWNvbnN1bWVkPTAgY29udmV5DQo+ID4gdGhlDQo+ID4gPiA+IHNhbWUgaW5mb3Jt YXRpb24gb24gdGhlIEFQST8NCj4gPiA+ID4gSXQgbWF5IGNvcnJlc3BvbmQgdG8gYW4gZXJyb3Ig b24gdGhlIHVuZGVybHlpbmcgUE1ELCBidXQgd291bGQgaXQgYmUNCj4gPiBzaW1wbGVyDQo+ID4g PiA+IG9uIHRoZSBjb21wcmVzc2RldiBBUEkNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gPiBQ bGVhc2Ugbm90ZSBhcyBwZXIgY3VycmVudCBwcm9wb3NhbCwgYXBwIHNob3VsZCBjYWxsDQo+ID4g PiA+IHJ0ZV9jb21wZGV2X2VucXVldWVfc3RyZWFtKCkgdmVyc2lvbiBvZiBBUEkgaWYgaXQNCj4g PiA+ID4gPiBkb2Vzbid0IGtub3cgb3V0cHV0IHNpemUgYmVmb3JlaGFuZC4NCj4gPiA+ID4gW0Zp b25hXSBUcnVlLiBCdXQgYWJvdmUgaXMgb25seSB0cnlpbmcgdG8gZGVzY3JpYmUgYmVoYXZpb3Vy IGluIHRoZQ0KPiA+IHN0YXRlbGVzcw0KPiA+ID4gPiBlcnJvciBjYXNlLg0KPiA+ID4NCj4gPiA+ IFtTaGFsbHldIE9rLiBOb3cgSSBnb3QgcG9pbnQgb2YgY29uZnVzaW9uIHdpdGggdGVybSAndHVy bnMgc3RhdGVmdWwnIGhlcmUuIE5vDQo+ID4gaXQncyBub3QgbGlrZSBzdGF0ZWxlc3MgdG8NCj4g PiA+IHN0YXRlZnVsIGNvbnZlcnNpb24uDQo+ID4gPiBTdGF0ZWxlc3Mgb3BlcmF0aW9uIGlzIHN0 YXRlbGVzcyBvbmx5IGFuZCBpbiBzdGF0ZWxlc3Mgd2UgZG9uJ3QgZXhwZWN0DQo+ID4gT1VUX09G X1NQQUNFIGVycm9yLiBTbywgbm93IEkNCj4gPiA+IGFsc28gdW5kZXJzdGFuZCB3aGF0IHlvdSdy ZSB0cnlpbmcgdG8gaW1wbHkgd2l0aCBwcm9kdWNlZD1jb25zdW1lZD0wLg0KPiA+ID4NCj4gPiA+ IFNvLCBsZXQgbWUgc3VtbWFyaXNlIHJlZGVmaW5pdGlvbiBvZiBPVVRfT0ZfU1BBQ0UgYmFzZWQg b24gUkZDIHYzOg0KPiA+ID4NCj4gPiA+IEludGVycHJldGluZyBPVVRfT0ZfU1BBQ0UgY29uZGl0 aW9uOg0KPiA+ID4gfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCj4gPiA+IEEuIFN0 YXRlbGVzcyBPcGVyYXRpb25zOg0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiA+ID4gQS4xIElmIG9wZXJhdGlvbiBpcyBzdGF0ZWxlc3MgaS5lLiBydGVfY29tcF9v cC4gb3BfdHlwZSA9PQ0KPiA+IFJURV9DT01QX09QX1NUQVRFTEVTUywgYW5kIFBNRCBydW5zIG91 dA0KPiA+ID4gb2YgYnVmZmVyIGR1cmluZyBjb21wcmVzc2lvbiBvciBkZWNvbXByZXNzaW9uIHRo ZW4gaXQgaXMgYW4gZXJyb3IgY29uZGl0aW9uDQo+ID4gZm9yIFBNRC4NCj4gPiA+IEl0IHdpbGwg cmVzZXQgaXRzZWxmIGFuZCByZXR1cm4gd2l0aCBwcm9kdWNlZD1jb25zdW1lZD0wIHdpdGggc3Rh dHVzDQo+ID4gT1VUX09GX1NQQUNFLiBPbiBzZWVpbmcgdGhpcywNCj4gPiA+IGFwcGxpY2F0aW9u IHNob3VsZCByZXN1Ym1pdCBmdWxsIHJlcXVlc3Qgd2l0aCBiaWdnZXIgb3V0cHV0IGJ1ZmZlciBz aXplLg0KPiA+ID4NCj4gPiA+IEIuIFN0YXRlZnVsIE9wZXJhdGlvbnM6DQo+ID4gPiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiBCLjEgSWYgb3BlcmF0aW9uIGlzIHN0YXRl ZnVsIGkuZS4gcnRlX2NvbXBfb3Aub3BfdHlwZSA9PQ0KPiA+IFJURV9DT01QX09QX1NUQVRFRlVM LCAgYW5kIFBNRCBydW5zIG91dA0KPiA+ID4gb2YgYnVmZmVyIGR1cmluZyBjb21wcmVzc2lvbiBv ciBkZWNvbXByZXNzaW9uLCB0aGVuIFBNRCB3aWxsIHVwZGF0ZQ0KPiA+ID4gcHJvZHVjZWQ9Y29u c3VtZWQgKGFzIG1lbnRpb25lZCBhYm92ZSkNCj4gPiBbRmlvbmFdID8gRGlkIHlvdSBtZWFuIHRv IHNheSAid2lsbCB1cGRhdGUgcHJvZHVjZWQgJiBjb25zdW1lZCIgPw0KPiANCj4gW1NoYWxseV0g WWVzIHlvdSByaWdodCB0aGF0IHdhcyB0eXBvLiBJdCBzaG91bGQgYmUgcHJvZHVjZWQgJiBjb25z dW1lZC4NCj4gDQo+ID4gSSB0aGluaw0KPiA+ICAgLSBjb25zdW1lZCB3b3VsZCBiZSA8PSBpbnB1 dCBsZW5ndGggKHR5cGljYWxseSA8KQ0KPiA+ICAgLSBwcm9kdWNlZCB3b3VsZCBiZSA8PSBvdXRw dXQgYnVmZmVyIGxlbiAodHlwaWNhbGx5ID0sIGJ1dCBjb3VsZCBiZSBhIGZldw0KPiA+IGJ5dGVz IGxlc3MpDQo+ID4gICAtIHN0YXR1cyB3b3VsZCBiZSBPVVRfT0ZfU1BBQ0UNCj4gPiBEbyB5b3Ug YWdyZWU/DQo+ID4NCj4gDQo+IFtTaGFsbHldIFllcy4NCj4gDQo+ID4gPiBhbmQgYXBwIHNob3Vs ZCByZXN1Ym1pdCBvcCB3aXRoIGlucHV0IGZyb20gY29uc3VtZWQrMQ0KPiA+ID4gYW5kIG91dHB1 dCBidWZmZXIgd2l0aCBmcmVlIHNwYWNlLg0KPiA+ID4gUGxlYXNlIG5vdGUgZm9yIHN1Y2ggY2Fz ZSwgYXBwbGljYXRpb24gc2hvdWxkIGFsbG9jYXRlIHN0cmVhbSB2aWEgY2FsbCB0bw0KPiA+IHJ0 ZV9jb21wX3N0cmVhbV9jcmVhdGUoKSBhbmQNCj4gPiA+IGF0dGFjaCBpdCB0byBvcCBhbmQgcGFz cyBpdCBhbG9uZyBldmVyeSB0aW1lIHBlbmRpbmcgb3AgaXMgZW5xdWV1ZWQgdW50aWwgb3ANCj4g PiBwcm9jZXNzaW5nIGlzIGNvbXBsZXRlIHdpdGgNCj4gPiA+IHN0YXR1cyBzZXQgdG8gU1VDQ0VT Uy9GQUlMVVJFLg0KPiA+IFtGaW9uYV0gQWdyZWVkDQo+ID4NCj4gPiA+DQo+ID4gPiA+DQo+ID4g PiA+IC8vc25pcC4uLi4uDQo+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gRC4yLjEuMiBTdGF0ZWZ1bCBvcGVyYXRpb24gc3RhdGUgbWFpbnRlbmFuY2UNCj4gPiA+ ID4gPiA+ID4gPiA+IMKgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBzZWN0aW9uIHN0YXJ0 cyB3aXRoIGRlc2NyaXB0aW9uIG9mIG91ciB1bmRlcnN0YW5kaW5nIGFib3V0DQo+ID4gPiA+ID4g PiA+ID4gY29tcHJlc3Npb24gQVBJIHN1cHBvcnQgZm9yIHN0YXRlZnVsLg0KPiA+ID4gPiA+ID4g PiA+ID4gRGVwZW5kaW5nIHVwb24gdW5kZXJzdGFuZGluZyBidWlsZCB1cG9uIHRoZXNlIGNvbmNl cHRzLCB3ZQ0KPiA+IHdpbGwNCj4gPiA+ID4gPiA+IGlkZW50aWZ5DQo+ID4gPiA+ID4gPiA+ID4g cmVxdWlyZWQgZGF0YSBzdHJ1Y3R1cmUvcGFyYW0NCj4gPiA+ID4gPiA+ID4gPiA+IHRvIG1haW50 YWluIGluLXByb2dyZXNzIG9wZXJhdGlvbiBjb250ZXh0IGJ5IFBNRC4NCj4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBGb3Igc3RhdGVmdWwgY29tcHJlc3Npb24sIGJhdGNoIG9m IGRlcGVuZGVudCBwYWNrZXRzIHN0YXJ0cyBhdCBhDQo+ID4gPiA+IHBhY2tldA0KPiA+ID4gPiA+ ID4gPiA+IGhhdmluZw0KPiA+ID4gPiA+ID4gPiA+ID4gUlRFX05PX0ZMVVNIL1JURV9TWU5DX0ZM VVNIIGZsdXNoIHZhbHVlIGFuZCBlbmQgYXQgcGFja2V0DQo+ID4gPiA+IGhhdmluZw0KPiA+ID4g PiA+ID4gPiA+IFJURV9GVUxMX0ZMVVNIL0ZJTkFMX0ZMVVNILg0KPiA+ID4gPiA+ID4gPiA+ID4g aS5lLiBhcnJheSBvZiBvcGVyYXRpb25zIHdpbGwgY2Fycnkgc3RydWN0dXJlIGxpa2UgdGhpczoN Cj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gPiAtLS0tLQ0KPiA+ID4gPiAtDQo+ID4gPiA+ID4gPiA+ID4gPiB8b3AxLm5vX2ZsdXNo IHwgb3AyLm5vX2ZsdXNoIHwgb3AzLm5vX2ZsdXNoIHwgb3A0LmZ1bGxfZmx1c2h8DQo+ID4gPiA+ ID4gPiA+ID4gPiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiAtLS0tLQ0KPiA+ID4gPiAtDQo+ ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gW0Zpb25hXSBJIHRoaW5rIGl0IG5lZWRzIHRv IGJlIG1vcmUgY29uc3RyYWluZWQgdGhhbiB5b3VyIGV4YW1wbGVzDQo+ID4gPiA+IGJlbG93Lg0K PiA+ID4gPiA+ID4gT25seSAxIG9wZXJhdGlvbiBmcm9tIGEgc3RyZWFtIGNhbiBiZSBpbiBhIGJ1 cnN0LiBBcyBlYWNoIG9wZXJhdGlvbg0KPiA+ID4gPiA+ID4gaW4gYSBzdGF0ZWZ1bCBzdHJlYW0g bXVzdCBjb21wbGV0ZSwgYXMgbmV4dCBvcGVyYXRpb24gbmVlZHMgc3RhdGUNCj4gPiBhbmQNCj4g PiA+ID4gPiA+IGhpc3RvcnkNCj4gPiA+ID4gPiA+IG9mIHByZXZpb3VzIG9wZXJhdGlvbiB0byBi ZSBjb21wbGV0ZSBiZWZvcmUgaXQgY2FuIGJlIHByb2Nlc3NlZC4NCj4gPiA+ID4gPiA+IEFuZCBp ZiBvbmUgZmFpbGVkLCBlLmcuIGR1ZSB0byBPVVRfT0ZfU1BBQ0UsIHRoaXMgc2hvdWxkIGFmZmVj dA0KPiA+ID4gPiA+ID4gdGhlIGZvbGxvd2luZyBvcGVyYXRpb24gaW4gdGhlIHNhbWUgc3RyZWFt Lg0KPiA+ID4gPiA+ID4gV29yc3QgY2FzZSB0aGlzIG1lYW5zIGJ1cnN0cyBvZiAxLiBCdXJzdCBj YW4gYmUgPjEgaWYgdGhlcmUgYXJlDQo+ID4gbXVsdGlwbGUNCj4gPiA+ID4gPiA+IGluZGVwZW5k ZW50IHN0cmVhbXMgd2l0aCBhdmFpbGFibGUgZGF0YSBmb3IgcHJvY2Vzc2luZy4gT3IgaWYgdGhl cmUgaXMNCj4gPiA+ID4gPiA+IGRhdGEgYXZhaWxhYmxlIHdoaWNoIGNhbiBiZSBzdGF0ZWxlc3Ns eSBwcm9jZXNzZWQuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSWYgdGhlcmUgYXJlIG11bHRp cGxlIGJ1ZmZlcnMgYXZhaWxhYmxlIGZyb20gYSBzdHJlYW0gLCB0aGVuIGluc3RlYWQNCj4gPiB0 aGV5DQo+ID4gPiA+IGNhbg0KPiA+ID4gPiA+ID4gYmUgbGlua2VkIHRvZ2V0aGVyIGluIGFuIG1i dWYgY2hhaW4gc2VudCBpbiBhIHNpbmdsZSBvcGVyYXRpb24uDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gVG8gaGFuZGxlIHRoZSBzZXF1ZW5jZXMgYmVsb3cgd291bGQgbWVhbiB0aGUgUE1EDQo+ ID4gPiA+ID4gPiB3b3VsZCBuZWVkIHRvIHN0b3JlIG9wcyBzZW5kaW5nIG9uZSBhdCBhIHRpbWUg dG8gYmUgcHJvY2Vzc2VkLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEFzIHRoaXMgaXMgc2ln bmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB3aGF0IHlvdSBkZXNjcmliZSBiZWxvdywgSSdsbCB3 YWl0DQo+ID4gZm9yDQo+ID4gPiA+ID4gPiBmdXJ0aGVyIGZlZWRiYWNrDQo+ID4gPiA+ID4gPiBi ZWZvcmUgY29udGludWluZy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFtTaGFsbHldIEkgY29uY3Vy IHdpdGggeW91ciB0aG91Z2h0cy4gQW5kIHRoZXNlJ3JlIGFyZSBub3Qgc2lnbmlmaWNhbnRseQ0K PiA+ID4gPiBkaWZmZXJlbnQgZnJvbSB0aGUgY29uY2VwdA0KPiA+ID4gPiA+IHByZXNlbnRlZCBi ZWxvdy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFllcyBhcyB5b3UgbWVudGlvbmVkLCBldmVuIGZv ciBidXJzdF9zaXplPjEgUE1EIHdpbGwgaGF2ZSB0byBzZXJpYWxpemUNCj4gPiA+ID4gZWFjaCBv cCBpbnRlcm5hbGx5IGkuZS4NCj4gPiA+ID4gPiBJdCBoYXMgdG8gd2FpdCBmb3IgcHJldmlvdXMg dG8gZmluaXNoIGJlZm9yZSBwdXR0aW5nIG5leHQgZm9yIHByb2Nlc3NpbmcNCj4gPiB3aGljaA0K PiA+ID4gPiBpcw0KPiA+ID4gPiA+IGFzIGdvb2QgYXMgYXBwbGljYXRpb24gbWFraW5nIHNlcmlh bGlzZWQgY2FsbCBwYXNzaW5nIG9uZSBvcCBhdC1hLXRpbWUgb3INCj4gPiBpZg0KPiA+ID4gPiA+ IHN0cmVhbSBjb25zaXN0cyBvZiBtdWx0aXBsZSBidWZmZXJzLCBtYWtpbmcgdGhlaXIgc2NhdHRl ci1nYXRoZXIgbGlzdCBhbmQNCj4gPiA+ID4gPiB0aGVuIGVucXVldWUgaXQgYXMgb25lIG9wIGF0 IGEgdGltZSB3aGljaCBpcyBtb3JlIGVmZmljaWVudCBhbmQgaWRlYWwNCj4gPiB1c2FnZS4NCj4g PiA+ID4gPiBIb3dldmVyIGluIG9yZGVyIHRvIGFsbG93IGV4dGVuc2liaWxpdHksIEkgZGlkbid0 IG1lbnRpb24gbGltaXRhdGlvbiBvbg0KPiA+ID4gPiBidXJzdF9zaXplLg0KPiA+ID4gPiA+IEJl Y2F1c2UgSWYgUE1EIGRvZXNuJ3Qgc3VwcG9ydCBidXJzdF9zaXplID4gMSBpdCBjYW4gYWx3YXlz IHJldHVybg0KPiA+ID4gPiBuYl9lbnF1ZXVlZCA9IDEsIGluIHdoaWNoIGNhc2UNCj4gPiA+ID4g PiBhcHAgY2FuIGVucXVldWUgbmV4dCBob3dldmVyIHdpdGggY29uZGl0aW9uIGl0IHNob3VsZCB3 YWl0IGZvcg0KPiA+IHByZXZpb3VzDQo+ID4gPiA+IHRvIGNvbXBsZXRlDQo+ID4gPiA+ID4gYmVm b3JlIG1ha2luZyBuZXh0IGVucXVldWUgY2FsbC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFNvLCBp ZiB3ZSB0YWtlIHNpbXBsZSBleGFtcGxlIHRvIGNvbXByZXNzIDJrIG9mIGRhdGEgd2l0aCBzcmMg bWJ1ZiBzaXplDQo+ID4gPQ0KPiA+ID4gPiAxay4NCj4gPiA+ID4gPiBUaGVuIHdpdGggYnVyc3Rf c2l6ZT0xLCBleHBlY3RlZCBjYWxsIGZsb3cgd291bGQgYmUodGhpcyBpcyBqdXN0IG9uZQ0KPiA+ IGZsb3csDQo+ID4gPiA+IG90aGVyIHZhcmlhdGlvbnMgYXJlIGFsc28gcG9zc2libGUNCj4gPiA+ ID4gPiBzdWNoYXMgbWFraW5nIGNoYWluIG9mIDFrIGJ1ZmZlcnMgYW5kIHBhc3Mgd2hvbGUgZGF0 YSBpbiBvbmUgZ28pOg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gMS4gZmlsbCAxc3QgMWsgY2h1bmsg b2YgZGF0YSBpbiBvcC5tc3JjDQo+ID4gPiA+ID4gMi5lbnF1ZXVlX3N0cmVhbSAoLi4uLCB8b3Au Zmx1c2ggPSBub19mbHVzaHwsIDEsIHB0cl9zdHJlYW0pOw0KPiA+ID4gPiA+IDMuZGVxdWV1ZV9i dXJzdCh8b3B8LDEpOw0KPiA+ID4gPiA+IDQucmVmaWxsIG5leHQgMWsgY2h1bmsgaW4gb3AubXNy Yw0KPiA+ID4gPiA+IDUuZW5xdWV1ZV9zdHJlYW0oLi4uLHxvcC5mbHVzaCA9IGZ1bGxfZmx1c2h8 LCAxICwgcHRyX3N0cmVhbSk7DQo+ID4gPiA+ID4gNi5kZXF1ZXVlX2J1cnN0KHxvcHwsIDEpOw0K PiA+ID4gPiA+IDcuZW5kDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBTbywgSSBkb27igJl0IHNlZSBt dWNoIG9mIGEgY2hhbmdlIGluIEFQSSBjYWxsIGZsb3cgZnJvbSBoZXJlIHRvIGRlc2lnbg0KPiA+ ID4gPiBwcmVzZW50ZWQgYmVsb3cgZXhjZXB0IG5iX29wcyA9IDEgaW4NCj4gPiA+ID4gPiBlYWNo IGNhbGwuDQo+ID4gPiA+ID4gSG93ZXZlciBJIGFtIGFzc3VtaW5nIHRoYXQgb3Agc3RydWN0dXJl IHdvdWxkIHN0aWxsIGJlIHNhbWUgZm9yDQo+ID4gc3RhdGVmdWwNCj4gPiA+ID4gcHJvY2Vzc2lu ZyBpLmUuIGl0IHdvdWxkIHN0YXJ0IHdpdGgNCj4gPiA+ID4gPiBvcC5mbHVzaCB2YWx1ZSA9IE5P L1NZTkNfRkxVU0ggYW5kIGVuZCBhdCBvcCB3aXRoIGZsdXNoIHZhbHVlID0gRlVMTA0KPiA+ID4g PiBGTFVTSC4NCj4gPiA+ID4gPiBBcmUgd2Ugb24gc2FtZSBwYWdlIGhlcmU/DQo+ID4gPiA+ID4N Cj4gPiA+ID4gPiBUaGFua3MNCj4gPiA+ID4gPiBTaGFsbHkNCj4gPiA+ID4NCj4gPiA+ID4gW0Zp b25hXSBXZSBzdGlsbCBoYXZlIGEgZGlmZmVyZW50IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN0YXRl ZnVsIGZsb3cNCj4gPiBuZWVkZWQNCj4gPiA+ID4gb24gdGhlIEFQSS4NCj4gPiA+ID4gSeKAmWxs IHRyeSB0byBjbGFyaWZ5IGFuZCBtYXliZSB3ZSBjYW4gc2V0IHVwIGEgbWVldGluZyB0byBkaXNj dXNzLg0KPiA+ID4gPiBNeSBhc3N1bXB0aW9ucyBmaXJzdDoNCj4gPiA+ID4g4oCiCU9yZGVyIG9m IG9wcyBvbiBhIHFwIG11c3QgYmUgbWFpbnRhaW5lZCDigJMgb3BzIHNob3VsZCBiZSBkZXF1ZXVl ZA0KPiA+ID4gPiBpbiBzYW1lIHNlcXVlbmNlIHRoZXkgYXJlIGVucXVldWVkLg0KPiA+ID4gPiDi gKIJT3BzIGZyb20gbWFueSBzdHJlYW1zIGNhbiBiZSBlbnF1ZXVlZCBvbiBzYW1lIHFwLg0KPiA+ ID4gPiDigKIJT3BzIGZyb20gYSBxcCBtYXkgYmUgZmFubmVkIG91dCB0byBhdmFpbGFibGUgaHcg b3Igc3cgZW5naW5lcyBhbmQNCj4gPiA+ID4gcHJvY2Vzc2VkIGluIHBhcmFsbGVsLCBzbyBlYWNo IG9wIG11c3QgYmUgaW5kZXBlbmRlbnQuDQo+ID4gPiA+IOKAoglTdGF0ZWxlc3MgYW5kIHN0YXRl ZnVsIG9wcyBjYW4gYmUgZW5xdWV1ZWQgb24gdGhlIHNhbWUgcXANCj4gPiA+ID4NCj4gPiA+ID4g U3VibWl0dGluZyBhIGJ1cnN0IG9mIHN0YXRlbGVzcyBvcHMgdG8gYSBxcCBpcyBubyBwcm9ibGVt Lg0KPiA+ID4gPiBTdWJtaXR0aW5nIG1vcmUgdGhhbiAxIG9wIGF0IGEgdGltZSBmcm9tIHRoZSBz YW1lIHN0YXRlZnVsIHN0cmVhbSB0byBhDQo+ID4gcXAgaXMNCj4gPiA+ID4gYSBwcm9ibGVtLg0K PiA+ID4gPiBFeGFtcGxlOg0KPiA+ID4gPiBBcHBsIHN1Ym1pdHMgMiBvcHMgaW4gc2FtZSBzdHJl YW0gaW4gYSBidXJzdCwgZWFjaCBoYXMgc3JjIGFuZCBkZXN0DQo+ID4gbWJ1ZnMsDQo+ID4gPiA+ IGlucHV0IGxlbmd0aC9vZmZzZXQgYW5kDQo+ID4gPiA+IHJlcXVpcmVzIGNoZWNrc3VtIHRvIGJl IGNhbGN1bGF0ZWQuDQo+ID4gPiA+IFRoZSBmaXJzdCBvcCBtdXN0IGJlIHByb2Nlc3NlZCB0byBj b21wbGV0aW9uIGJlZm9yZSB0aGUgc2Vjb25kIGNhbiBiZQ0KPiA+ID4gPiBzdGFydGVkIGFzIGl0 IG5lZWRzIHRoZSBoaXN0b3J5IGFuZCB0aGUgY2hlY2tzdW0gc28gZmFyLg0KPiA+ID4gPiBJZiBl YWNoIGRlc3QgbWJ1ZiBpcyBiaWcgZW5vdWdoIHNvIG5vIG92ZXJmbG93LCBlYWNoIGRlc3QgbWJ1 ZiB3aWxsIGJlDQo+ID4gPiA+IHBhcnRpYWxseSBmaWxsZWQuIFRoaXMgaXMgcHJvYmFibHkgbm90 DQo+ID4gPiA+IHdoYXTigJlzIGRlc2lyZWQsIGFuZCB3aWxsIGZvcmNlIGFuIGV4dHJhIGNvcHkg dG8gbWFrZSB0aGUgb3V0cHV0IGRhdGENCj4gPiA+ID4gY29udGlndW91cy4NCj4gPiA+ID4gSWYg dGhlIGRlc3QgbWJ1ZiBpbiB0aGUgZmlyc3Qgb3AgaXMgdG9vIHNtYWxsLCB0aGVuIGRvZXMgdGhl IFBNRCBhbGxvYyBtb3JlDQo+ID4gPiA+IG1lbW9yeSBpbiB0aGUgZGVzdCBtYnVmPw0KPiA+ID4g PiBPciBhbGxvYyBhbm90aGVyIG1idWY/IE9yIGZhaWwgYW5kIHRoZSB3aG9sZSBidXJzdCBtdXN0 IGJlIHJlc3VibWl0dGVkPw0KPiA+ID4gPiBPciBzdG9yZSB0aGUgMm5kIG9wLCB3YWl0LCBvbiBz ZWVpbmcgdGhlIE9VVF9PRl9TUEFDRSBvbiB0aGUgMXN0IG9wLA0KPiA+ID4gPiBvdmVyd3JpdGUg dGhlIHNyYywgZGVzdCwgbGVuIGV0YyBvZiB0aGUgMm5kIG9wDQo+ID4gPiA+IHRvIGluY2x1ZGUg dGhlIHVucHJvY2Vzc2VkIHBhcnQgb2YgdGhlIDFzdCBvcD8NCj4gPiA+ID4gSW4gdGhlIG1lYW50 aW1lLCBhcmUgYWxsIG90aGVyIG9wcyBvbiB0aGUgcXAgYmxvY2tlZCBiZWhpbmQgdGhlc2U/DQo+ ID4gPiA+IEZvciBodyBhY2NlbGVyYXRvcnMgaXTigJlzIHdvcnNlLCBhcyBQTUQgd291bGQgbm9y bWFsbHkgcmV0dXJuIG9uY2Ugb3BzDQo+ID4gYXJlDQo+ID4gPiA+IG9mZmxvYWRlZCBhbmQgdGhl IGRlcXVldWUgd291bGQNCj4gPiA+ID4gcGFzcyBwcm9jZXNzZWQgb3BzIHN0cmFpZ2h0IGJhY2sg dG8gdGhlIGFwcGwuIEluc3RlYWQsIHRoZSBlbnF1ZXVlIHdvdWxkDQo+ID4gPiA+IG5lZWQgdG8g a2ljayBvZmYgYSB0aHJlYWQgdG8NCj4gPiA+ID4gZGVxdWV1ZSBvcHMgYW5kIGZpbHRlciB0byBm aW5kIHRoZSBzdGF0ZWZ1bCBvbmUsIHN0b3JpbmcgdGhlIG90aGVycyB0aWwgdGhlDQo+ID4gbmV4 dA0KPiA+ID4gPiBhcHBsaWNhdGlvbiBkZXF1ZXVlIGlzIGNhbGxlZC4NCj4gPiA+ID4NCj4gPiA+ ID4gQWJvdmUgc2NlbmFyaW9zIGRvbuKAmXQgbGVuZCB0aGVtc2VsdmVzIHRvIGFjY2VsZXJhdGlu ZyBhIHBhY2tldA0KPiA+IHByb2Nlc3NpbmcNCj4gPiA+ID4gd29ya2xvYWQuDQo+ID4gPiA+IEl0 IHB1c2hlcyBhIHdvcmtsb2FkIGRvd24gdG8gYWxsIFBNRHMgd2hpY2ggSSBiZWxpZXZlIGJlbG9u Z3MgYWJvdmUgdGhpcw0KPiA+IEFQSQ0KPiA+ID4gPiBhcw0KPiA+ID4gPiB0aGF0IHdvcmsgaXMg bm90IGFib3V0IG9mZmxvYWRpbmcgdGhlIGNvbXB1dGUgaW50ZW5zaXZlIGNvbXByZXNzaW9uDQo+ ID4gd29yaw0KPiA+ID4gPiBidXQNCj4gPiA+ID4gYWJvdXQgdGhlIHNlcXVlbmNpbmcgb2YgZGF0 YSBhbmQgc28gaXMgYmV0dGVyIGNvZGVkIG9uY2UsIGFib3ZlIHRoZSBBUEkNCj4gPiBpbg0KPiA+ ID4gPiBhbiBhcHBsaWNhdGlvbiBsYXllcg0KPiA+ID4gPiBjb21tb24gdG8gYWxsIFBNRHMuIChT ZWUgTm90ZTEgaW4NCj4gPiBodHRwOi8vZHBkay5vcmcvbWwvYXJjaGl2ZXMvZGV2LzIwMTctDQo+ ID4gPiA+IE9jdG9iZXIvMDc4OTQ0Lmh0bWwgKQ0KPiA+ID4gPiBJZiBhbiBhcHBsaWNhdGlvbiBo YXMgc2V2ZXJhbCBwYWNrZXRzIHdpdGggZGF0YSBmcm9tIGEgc3RyZWFtIHRoYXQgaXQgbmVlZHMN Cj4gPiB0bw0KPiA+ID4gPiAoZGUpY29tcHJlc3Mgc3RhdGVmdWxseSwNCj4gPiA+ID4gd2hhdCBp dCBwcm9iYWJseSB3YW50cyBpcyBmb3IgdGhlIG91dHB1dCBkYXRhIHRvIGZpbGwgZWFjaCBvdXRw dXQgYnVmZmVyDQo+ID4gPiA+IGNvbXBsZXRlbHkgYmVmb3JlIHdyaXRpbmcgdG8gdGhlIG5leHQg YnVmZmVyLg0KPiA+ID4gPiBDaGFpbmluZyB0aGUgc3JjIG1idWZzIGluIHRoZXNlIHBrdHMgaW50 byBvbmUgY2hhaW4gYW5kIHNlbmRpbmcgYXMgb25lIG9wDQo+ID4gPiA+IGFsbG93cyB0aGUgb3V0 cHV0DQo+ID4gPiA+IGRhdGEgdG8gYmUgcGFja2VkIGludG8gYSBkZXN0IG1idWYgb3IgbWJ1ZiBj aGFpbi4NCj4gPiA+ID4gSSB0aGluayB3aGF04oCZcyBuZWVkZWQgaXMgYSBsYXllciBhYm92ZSB0 aGUgQVBJIHRvIGFjY3VtdWxhdGUgaW5jb21pbmcNCj4gPiA+ID4gcGFja2V0cyB3aGlsZSB3YWl0 aW5nIGZvciB0aGUNCj4gPiA+ID4gcHJldmlvdXMgc2V0IG9mIHBhY2tldHMgdG8gYmUgY29tcHJl c3NlZC4gRm9yd2FyZGluZyB0byB0aGUgUE1EIHRvDQo+ID4gcXVldWUNCj4gPiA+ID4gdGhlcmUg aXMgbm90IHRoZSByaWdodCBwbGFjZQ0KPiA+ID4gPiB0byBidWZmZXIgdGhlbSBhcyB0aGUgcXVl dWUgc2hvdWxkIGJlIHBlciBzdHJlYW0gcmF0aGVyIHRoYW4gb24gdGhlDQo+ID4gPiA+IGFjY2Vs ZXJhdG9yIGVuZ2luZeKAmXMgcXVldWUNCj4gPiA+ID4gd2hpY2ggaGFzIGxvdHMgb2Ygb3RoZXIg aW5kZXBlbmRlbnQgcGFja2V0cy4NCj4gPiA+ID4NCj4gPiA+DQo+ID4gPiBbU2hhbGx5XSBPay4g SSBiZWxpZXZlIEkgZ2V0IGl0Lg0KPiA+ID4gSW4gZ2VuZXJhbCBJIGFncmVlIHRvIHRoaXMgcHJv cG9zYWwuIEhvd2V2ZXIgaGF2ZSBjb25jZXJuIG9uIDEgcG9pbnQgaGVyZQ0KPiA+IGkuZS4gb3Jk ZXIgbWFpbnRlbmFuY2UuIFBsZWFzZQ0KPiA+ID4gc2VlIGZ1cnRoZXIgZm9yIG1vcmUgZXhwbGFu YXRpb24uDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBQcm9wb3NhbDoNCj4gPiA+ID4g4oCiIE9w cyBmcm9tIGEgcXAgbWF5IGJlIGZhbm5lZCBvdXQgdG8gYXZhaWxhYmxlIGh3IG9yIHN3IGVuZ2lu ZXMgYW5kDQo+ID4gPiA+ICAgICBwcm9jZXNzZWQgaW4gcGFyYWxsZWwsIHNvIGVhY2ggb3AgbXVz dCBiZSBpbmRlcGVuZGVudC4NCj4gPiA+IFtTaGFsbHldIFBvc3NpYmxlIG9ubHkgaWYgIFBNRCBz dXBwb3J0IGNvbWJpbmF0aW9uIG9mIFNXIGFuZCBIVw0KPiA+IHByb2Nlc3NpbmcuIFJpZ2h0Pw0K PiA+IFtGaW9uYV0gTm90IG5lY2Vzc2FyaWx5LCBJbnRlbCBRdWlja0Fzc2lzdCBhY2NlbGVyYXRv cnMgYXJlIEhXIGFuZCBjYW4NCj4gPiBwcm9jZXNzIG9wcyBmcm9tIHNhbWUgcXAgaW4gcGFyYWxs ZWwNCj4gPg0KPiA+DQo+ID4gPiA+IOKAoiBPcmRlciBvZiBvcHMgb24gYSBxcCBtdXN0IGJlIG1h aW50YWluZWQg4oCTIG9wcyBzaG91bGQgYmUgZGVxdWV1ZWQgaW4NCj4gPiA+ID4gc2FtZSBzZXF1 ZW5jZSB0aGV5IGFyZSBlbnF1ZXVlZC4NCj4gPiA+IFtTaGFsbHldIElmIGVhY2ggb3AgaXMgaW5k ZXBlbmRlbnQgdGhlbiB3aHkgZG8gd2UgbmVlZCB0byBtYWludGFpbg0KPiA+IG9yZGVyaW5nLiBT aW5jZSB0aGV5J3JlIGluZGVwZW5kZW50DQo+ID4gPiBhbmQgdGh1cyBjYW4gYmUgcHJvY2Vzc2Vk IGluIHBhcmFsbGVsIHNvIHRoZXkgY2FuIHdlbGwgYmUgcXVpdGUgb3V0LW9mLW9yZGVyDQo+ID4g YW5kIGF2YWlsYWJsZSBmb3IgZGVxdWV1ZSBhcw0KPiA+ID4gc29vbiBhcyBjb21wbGV0ZWQuDQo+ ID4gPiBTZXJpYWxpemluZyB0aGVtIHdpbGwgbGltaXQgSFcgdGhyb3VnaHB1dCBjYXBhYmlsaXR5 LiBBbmQgSSBjYW4gZW52aXNpb24NCj4gPiBzb21lIGFwcCBtYXkgbm90IGNhcmUgYWJvdXQNCj4g PiA+IG9yZGVyaW5nIGp1c3QgY29tcGxldGlvbi4NCj4gPiA+IFNvIEkgd291bGQgc3VnZ2VzdCBp ZiBhcHBsaWNhdGlvbiBuZWVkIG9yZGVyaW5nIHNob3VsZCB0YWcgZWFjaCBvcCB3aXRoDQo+ID4g c29tZSBpZCBvciBzZXJpYWwgbnVtYmVyIGluIG9wDQo+ID4gPiB1c2VyX2RhdGEgYXJlYSB0byBp ZGVudGlmeSBlbnF1ZXVlIG9yZGVyIE9SIHdlIG1heSBhZGQgZmxhZyBpbg0KPiA+IGVucXVldWVf YnVyc3QoKSBBUEkgdG8gZW5mb3JjZQ0KPiA+ID4gc2VyaWFsaXplZCBkZXF1ZXVpbmcsIGlmIHRo YXQncyBoYXJkIHJlcXVpcmVtZW50IG9mIGFueS4NCj4gPiBbRmlvbmFdIE9rLCAgSSB0aGluayB5 b3UncmUgcmlnaHQsIHRoaXMgcmVxdWlyZW1lbnQgaXNuJ3QgbmVlZGVkLg0KPiA+IEluIHN0YXRl bGVzcyBvcHMgaXQncyBub3QgbmVlZGVkLg0KPiA+IEZvciBzdGF0ZWZ1bCB0aGUgYXBwbCBzaG91 bGQgb25seSBoYXZlIG9uZSBvcCBwZXIgc3RyZWFtIGluZmxpZ2h0IGF0IGFueSB0aW1lDQo+ID4g c28gbWFuYWdlcyB0aGUgb3JkZXJpbmcuDQo+ID4gU28gd2UgY2FuIHNwZWNpZnkgb24gdGhlIEFQ SSB0aGF0IG9yZGVyaW5nIGlzIG5vdCBuZWNlc3NhcmlseSBtYWludGFpbmVkIG9uDQo+ID4gdGhl IHFwIGFuZCBQTURzIG1heSByZXR1cm4gcmVzcG9uc2VzIG91dC1vZi1vcmRlci4NCj4gPiBUaGUg cmVzcG9uc2liaWxpdHkgaXMgb24gdGhlIGFwcGxpY2F0aW9uIHRvIG1haW50YWluIG9yZGVyIGlm IGl0J3MgbmVlZGVkLg0KPiA+IElmIGxhdGVyIHdlIGZpbmQgc29tZSBhcmd1bWVudCBmb3IgbWFp bnRhaW5pbmcgb3JkZXIgSSdkIHN1Z2dlc3QgYQ0KPiA+IGNvbmZpZ3VyYXRpb24gcGFyYW0gcGVy IHFwIG9yIGV2ZW4gcGVyIGRldmljZSByYXRoZXIgdGhhbiBvbiB0aGUNCj4gPiBlbnF1ZXVlX2J1 cnN0KCkNCj4gDQo+IFtTaGFsbHldIERvbmUuDQo+IA0KPiA+DQo+ID4NCj4gPiA+ID4g4oCiIFN0 YXRlbGVzcyBhbmQgc3RhdGVmdWwgb3BzIGNhbiBiZSBlbnF1ZXVlZCBvbiB0aGUgc2FtZSBxcA0K PiA+ID4gPiDigKIgU3RhdGVsZXNzIGFuZCBzdGF0ZWZ1bCBvcHMgY2FuIGJlIGVucXVldWVkIGlu IHRoZSBzYW1lIGJ1cnN0DQo+ID4gPiA+IOKAoiBPbmx5IDEgb3AgYXQgYSB0aW1lIG1heSBiZSBl bnF1ZXVlZCB0byB0aGUgcXAgZnJvbSBhbnkgc3RhdGVmdWwNCj4gPiBzdHJlYW0uDQo+ID4gPiA+ IOKAoiBBIGJ1cnN0IGNhbiBoYXZlIG11bHRpcGxlIHN0YXRlZnVsIG9wcywgYnV0IGVhY2ggbXVz dCBiZSBmcm9tIGENCj4gPiBkaWZmZXJlbnQNCj4gPiA+ID4gc3RyZWFtLg0KPiA+ID4gPiDigKIg QWxsIG9wcyB3aWxsIGhhdmUgYSBzZXNzaW9uIGF0dGFjaGVkIOKAkyB0aGlzIHdpbGwgb25seSBj b250YWluIGltbXV0YWJsZQ0KPiA+IGRhdGENCj4gPiA+ID4gd2hpY2gNCj4gPiA+ID4gICAgY2Fu IGJlIHVzZWQgYnkgbWFueSBvcHMsIGRldmljZXMgYW5kIG9yIGRyaXZlcnMgYXQgdGhlIHNhbWUg dGltZS4NCj4gPiA+ID4g4oCiIEFsbCBzdGF0ZWZ1bCBvcHMgd2lsbCBoYXZlIGEgc3RyZWFtIGF0 dGFjaGVkIGZvciBtYWludGFpbmluZyBzdGF0ZSBhbmQNCj4gPiA+ID4gICAgaGlzdG9yeSwgdGhp cyBjYW4gb25seSBiZSB1c2VkIGJ5IG9uZSBvcCBhdCBhIHRpbWUuDQo+ID4gPiBbU2hhbGx5XSBT bywgeW91IG1lYW46DQo+ID4gPg0KPiA+ID4gQSBzaW5nbGUgZW5xdWVfYnVyc3QoKSAqY2FuKiBj YXJyeSBtdWx0aXBsZSBzdHJlYW1zLiBJLkUuIFRoaXMgaXMgYWxsb3dlZA0KPiA+IGJvdGggaW4g YnVyc3Qgb3IgaW4gcXAgKHNheSwgd2hlbg0KPiA+ID4gbXVsdGlwbGUgdGhyZWFkcyBjYWxsIGVu cXVlX2J1cnN0KCkgb24gc2FtZSBxcCkNCj4gPiA+DQo+ID4gPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gICAgICAgICAgICAgICBlbnF1ZV9idXJzdCAofG9wMS5u b19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5mbHVzaF9maW5hbCB8DQo+ID4gb3A0Lm5vX2Zs dXNoIHwgb3A1Lm5vX2ZsdXNoIHwpDQo+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gPiA+IFdoZXJlLA0KPiA+ID4gQWxsIG9wMSwgb3AyLi4ub3A1IGJlbG9uZ3Mg dG8gYWxsICpkaWZmZXJlbnQqIHN0cmVhbXMuIE9wMyBjYW4gYmUNCj4gPiBzdGF0ZWxlc3Mvc3Rh dGVmdWwgZGVwZW5kaW5nIHVwb24NCj4gPiA+IG9wX3R5cGUgdmFsdWUgYW5kIGVhY2ggY2FuIGhh dmUgKnNhbWUgb3IgZGlmZmVyZW50KiBzZXNzaW9ucy4NCj4gPiBbRmlvbmFdIEV4YWN0bHkNCj4g Pg0KPiA+ID4gSWYgSSB1bmRlcnN0YW5kIHRoaXMgcmlnaHQsIHRoZW4geWVzIGl0IGxvb2tzIGdv b2QgdG8gbWUuIEhvd2V2ZXIgdGhpcyBhbHNvDQo+ID4gYnJpbmcgb25lIG1pbm9yIHBvaW50IGZv cg0KPiA+ID4gZGlzY3Vzc2lvbiBidXQgSSB3b3VsZCB3YWl0IHRvIGluaXRpYXRlIHRoYXQgdW50 aWwgd2UgY2xvc2Ugb24gY3VycmVudCBvcGVuDQo+ID4gcG9pbnRzLg0KPiA+ID4NCj4gPiA+IFRo YW5rcw0KPiA+ID4gU2hhbGx5DQo+IA0KPiBbU2hhbGx5XSBTaW5jZSB3ZSBhcmUgaW4gc3luYyBu b3cuIFNvIEkgd2lsbCBicmluZyB1cCBhbm90aGVyIHBvaW50IGZvciBkaXNjdXNzaW9uLg0KPiAN Cj4gSSdtIHRoaW5raW5nIHByb2JhYmx5IHdlIHNob3VsZCBoYXZlIHN0cmVhbSByZWdhcmRsZXNz IG9mIG9wX3R5cGUgd2hlcmUgaXQgc2hvdWxkIGJlIG1hcmtlZA0KPiAqbWFuZGF0b3J5KiBmb3Ig c3RhdGVmdWwgYnV0ICpvcHRpb25hbCogIChvciBtYXkgYmUgbWFuZGF0b3J5KSBmb3Igc3RhdGVs ZXNzIGFzIGhhdmluZyBpdCBmb3Igc3RhdGVsZXNzIG1heQ0KPiBoZWxwIHNvbWUgUE1EIHRvIGdh aW4gcGVyZm9ybWFuY2UgaW4gZGF0YSBwYXRoIGFuZCByZWFzb24gaXMgaGVyZToNCj4gDQo+IEN1 cnJlbnRseSB3ZSBzZWUgc3RyZWFtIGFzIHJlc291cmNlIHdoaWNoIG1haW50YWluIHN0YXRlcyAo ZXQgZWwpIGZvciBzdGF0ZWZ1bCBwcm9jZXNzaW5nIGJ1dCB0aGlzIGlzIGFsc28gYQ0KPiBwbGFj ZWhvbGRlciB3aGVyZSBQTUQgY2FuIGNob29zZSB0byBkbyBvbmUtdGltZSByZXNvdXJjZSBzZXR1 cCBjb21tb24gdG8gYm90aCBvcF90eXBlcyAoc3VjaCBhcw0KPiBhbGxvY2F0aW5nIGluc3RydWN0 aW9uIGZyb20gaXRzIGludGVybmFsIHBvb2wgYW5kIGluaXRpYWxpemUgaXQgd2l0aCBzZXNzaW9u IHBhcmFtcykuDQo+IFNvIGZvciBzdWNoIFBNRCBkZXNpZ25zLCBpdCB3aWxsIGJlIGJlbmVmaWNp YWwgdG8gdXNlIHN0cmVhbSBmb3Igc3RhdGVsZXNzIGFzIHdlbGwgYXMgaXQgd2lsbCBoZWxwIG1p bmltaXplDQo+IGluc3RydWN0aW9uIHNldHVwIHRpbWUgb24gZGF0YSBwYXRoIGFzIGFsbCAxLXRp bWUgb3BlcmF0aW9ucyB3aWxsIGJlIGRvbmUgaW4gc3RyZWFtX2NyZWF0ZSgpLg0KPiBJbiBjYXNl IG9mIHN0YXRlbGVzcywgaWYgc3RyZWFtIGlzIHByZXNlbnQgd291bGQgbWVhbiBpdCBpcyBhdmFp bGFibGUgZm9yIG5leHQgdXNlIGFzIHNvb24gYXMgbGFzdCBhc3NvY2lhdGVkDQo+IG9wIGlzIGRl cXVldWVkIGFzIGl0IGhvbGQgbm8gY29udGV4dCBvZiBsYXN0IG9wIGJ1dCBjb21tb24gcmVzb3Vy Y2VzIHJlLXVzZWFibGUgZm9yIG5leHQgb3AuDQpbRmlvbmFdIFdlIGludGVuZCB0byB1c2Ugc2Vz c2lvbiBwcml2YXRlIGFyZWEgZm9yIHNpbWlsYXIuICBCdXQgSSBkb24ndCBzZWUgYSBwcm9ibGVt IHdpdGggd2hhdCB5b3Ugc3VnZ2VzdC4gDQpXZSBjYW4gZWl0aGVyIGFkZCBhIGNhcGFiaWxpdHkg d2hpY2ggYXBwbCBtdXN0IGNoZWNrIHRvIGtub3cgaWYgaXQgc2hvdWxkIGNhbGwgc3RyZWFtX2Ny ZWF0ZSgpIGZvciBTVEFURUxFU1Mgc2Vzc2lvbnMgT1Igd2UgY291bGQgc2F5IHN0cmVhbV9jcmVh dGUgc2hvdWxkIGJlIGNhbGxlZCBmb3IgZXZlcnkgc2Vzc2lvbiwgaWYgaXQgcmV0dXJucyBub24t TlVMTCBmb3Igc3RhdGVsZXNzIHNlc3Npb24gdGhlbiBpdCBzaG91bGQgYmUgYXR0YWNoZWQgdG8g ZXZlcnkgb3Agc2VudCB0byB0aGUgc2Vzc2lvbj8NCg0KIA0KPiBBcGFydCwgdGhlcmUncyBhbm90 aGVyIHBvaW50LiBXZSBjYW4gZW5hYmxlIEFQSSBzcGVjIHRvIGxldmVyYWdlIG1lbXBvb2wgb2Jq ZWN0IGNhY2hlIGNvbmNlcHQgYnkNCj4gYWxsb3dpbmcgUE1EIHRvIGFsbG9jYXRlIHN0cmVhbSBm cm9tIG9wIHBvb2wgYXMgcGVyLW9wIHByaXZhdGUgZGF0YSBpLmUuIGVhY2ggb2JqZWN0IGVsdF9z aXplID0NCj4gc2l6ZW9mKHJ0ZV9jb21wX29wKSArIHVzZXJfc2l6ZSArIHN0cmVhbV9zaXplLg0K PiBUaGlzIHdvdWxkIGhlbHAgUE1EIHJlZHVjZSBtZW1vcnkgYWNjZXNzIHRpbWUgaWYgY2FjaGlu ZyBpcyBlbmFibGVkIGFzIGVhY2ggb3Agc3RyZWFtIHJlc2lkZSB3aXRoIGl0IGluDQo+IGNhY2hl IHJhdGhlciB0aGFuIGhhdmluZyB0aGVtIGZyb20gZGlmZmVyZW50IHBvb2wgd2l0aCBkaWZmZXJl bnQgcG9saWNpZXMuDQpbRmlvbmFdIEknbSBub3Qgc3VyZSBhYm91dCB0aGlzLiBUaGUgaW50ZW50 aW9uIHdhcyB0aGUgb3AtcG9vbCB3b3VsZCBiZSBkZXZpY2UtaW5kZXBlbmRlbnQuDQpTbyB0aGUg YXBwbCB3b3VsZCBoYXZlIHRvIHJldHJpZXZlIHRoZSBzaXplIG9mIHN0cmVhbSBmcm9tIGFsbCBQ TURzIGFuZCBzaXplIGZvciB0aGUgbGFyZ2VzdC4gDQpTbyBjb3VsZCBiZSB3YXN0ZWZ1bCBmb3Ig bWVtb3J5Lg0KRm9yIHN0YXRlZnVsIEkgY2FuIHNlZSwgaWYgbWVtb3J5IHdhcyBub3QgYW4gaXNz dWUgdGhpcyB3b3VsZCBiZSBnb29kLCBhcyBvbmUgb3AgY291bGQgYmUgcmUtdXNlZCwgc3RyZWFt IHdvdWxkIGJlIGFscmVhZHkgYXR0YWNoZWQuDQpCdXQgZm9yIHN0YXRlbGVzcywgSSB0aGluayB5 b3UncmUgc3VnZ2VzdGluZyB0aGVyZSB3b3VsZCBiZSBvbmUgc3RyZWFtIHVzZWQgYnkgbWFueSBv cHMgaW4gYSBidXJzdCBvciBldmVuIGluIGRpZmZlcmVudCBidXJzdHMuIFNvIGhvdyBjb3VsZCB0 aGF0IHdvcmsgYXMgZWFjaCBvcCB3b3VsZCBoYXZlIGEgc2VwYXJhdGUgc3RyZWFtPyAgDQoNCiAN Cj4gSWYgYWdyZWVkLCB0aGVuIGl0IGNhbiBiZSBlbmFibGVkIGluIEFQSSBzcGVjIHN1Y2ggYXMg KHRoaXMgaXMganVzdCBhIHByb3Bvc2FsLCB0aGVyZSBjb3VsZCBiZSBvdGhlciAgLi4pDQo+IA0K PiAtIE1vZGlmeSBzdHJlYW1fY3JlYXRlIHNwZWMgZm9sbG93aW5nOg0KPiANCj4gc3RydWN0IHJ0 ZV9jb21wX29wX3Bvb2xfcHJpdmF0ZSB7DQo+IAl1aW50MTZfdCB1c2VyX3NpemU7DQo+IAkvKio8 IFNpemUgb2YgcHJpdmF0ZSB1c2VyIGRhdGEgd2l0aCBlYWNoIG9wZXJhdGlvbi4gKi8NCj4gCXVp bnQxNl90IGRldl9wcml2X2RhdGFfc2l6ZTsNCj4gCS8qKjwgU2l6ZSBvZiBkZXZpY2UgcHJpdmF0 ZSBkYXRhIHdpdGggZWFjaCBvcGVyYXRpb24uICovDQo+IH07DQo+IA0KPiBpbnQgcnRlX2NvbXBf c3RyZWFtX2NyZWF0ZSh1aW50MzJfdCBkZXZfaWQsDQo+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcnRlX2NvbXBfc2Vzc2lvbiAqc2VzcywNCj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqc3RyZWFtLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0ZV9tZW1w b29sICpvcF9wb29sIC8qIG9wdGlvbmFsICovKTsNCj4gDQo+IC0gVGhpcyB3aWxsIG1hcCB0byBQ TUQgb3BzIHN0cmVhbV9jcmVhdGUoKS4gSGVyZSBpZiBvcF9wb29sICE9IE5VTEwsIHRoZW4gUE1E IGNhbiByZS1hbGxvY2F0ZSBvcCBwb29sDQo+IHdpdGggbmV3IGVsdF9zaXplID0gcnRlX2NvbXBf b3AgKyBvcF9wcml2YXRlLT51c2VyX3NpemUgKyBkZXZfcHJpdmF0ZV9zdHJlYW1fc2l6ZSBzbyB0 aGF0IHN0cmVhbSByZXNpZGUNCj4gaW4gb3AgcHJpdmF0ZSBhcmVhLg0KPiANCj4gT3IsIHdlIG1h eSBhZGQgYW5vdGhlciBBUEkgYWx0b2dldGhlciB0byBkbyBzdHJlYW0gYWxsb2NhdGlvbnMgZnJv bSBvcF9wb29sIHN1Y2ggYXMNCj4gcnRlX2NvbXBfc3RyZWFtX2NyZWF0ZV9mcm9tX3Bvb2woLi4u KTsNCj4gDQo+IEkgd2lsbCBpc3N1ZSBSRkMgRG9jIHYyIGFmdGVyIHlvdXIgZmVlZGJhY2sgdGhl c2UuDQpbRmlvbmFdIFdvdWxkIGl0IGJlIHByZWZlcmFibGUgdG8gaXNzdWUgdjIgZXZlbiB3aXRo IGRlc2lnbiBzbyBmYXI/IFRvIGdpdmUgQWhtZWQgYW5kIHRoZSBjb21tdW5pdHkgYSBiZXR0ZXIg ZG9jIHRvIHJldmlldy4gQWxzbyBJJ20gb24gaG9saWRheXMgdW50aWwgYWZ0ZXIgQ2hyaXN0bWFz IHNvIHdpbGwgbm90IGdldCBiYWNrIHRvIHRoaXMgdGlsIDh0aCBKYW51YXJ5LiAgIA0KDQoNCg0K PiBUaGFua3MNCj4gU2hhbGx5DQo+IA0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBDb2RlIGFy dGVmYWN0czoNCj4gPiA+ID4NCj4gPiA+ID4gZW51bSBydGVfY29tcF9vcF90eXBlIHsNCj4gPiA+ ID4gICAgIFJURV9DT01QX09QX1NUQVRFTEVTUywNCj4gPiA+ID4gICAgIFJURV9DT01QX09QX1NU QVRFRlVMDQo+ID4gPiA+IH0NCj4gPiA+ID4NCj4gPiA+ID4gQWRkIGZvbGxvd2luZyB0byBydGVf Y29tcF9vcDoNCj4gPiA+ID4gICAgIGVudW0gcnRlX2NvbXBfb3BfdHlwZSBvcF90eXBlOw0KPiA+ ID4gPiAgICAgdm9pZCAqIHN0cmVhbV9wcml2YXRlOw0KPiA+ID4gPiAgICAgLyogbG9jYXRpb24g d2hlcmUgUE1EIG1haW50YWlucyBzdHJlYW0gc3RhdGUg4oCTIG9ubHkgcmVxdWlyZWQgaWYNCj4g PiBvcF90eXBlIGlzDQo+ID4gPiA+IFNUQVRFRlVMLCBlbHNlIHNldCB0byBOVUxMICovDQo+ID4g PiA+DQo+ID4gPiA+IEFzIHNpemUgb2Ygc3RyZWFtIGRhdGEgd2lsbCB2YXJ5IGRlcGVuZGluZyBv biBQTUQsIGVhY2ggUE1EIG9yIGRldmljZQ0KPiA+ID4gPiBzaG91bGQgYWxsb2NhdGUgJiBtYW5h Z2UgaXRzIG93biBtZW1wb29sLiBBc3NvY2lhdGVkIEFQSXMgYXJlOg0KPiA+ID4gPiBydGVfY29t cF9zdHJlYW1fY3JlYXRlKHVpbnQ4X3QgZGV2X2lkLCBydGVfY29tcF9zZXNzaW9uICpzZXNzLCB2 b2lkDQo+ID4gKioNCj4gPiA+ID4gc3RyZWFtKTsNCj4gPiA+ID4gLyogVGhpcyBzaG91bGQgYWxs b2MgYSBzdHJlYW0gZnJvbSB0aGUgZGV2aWNl4oCZcyBtZW1wb29sIGFuZCBpbml0aWFsaXNlIGl0 Lg0KPiA+IFRoaXMNCj4gPiA+ID4gaGFuZGxlIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBQTUQgd2l0 aCBldmVyeSBvcCBpbiB0aGUgc3RyZWFtLiBRLiBTaG91bGQNCj4gPiA+ID4gcXBfaWQgYWxzbyBi ZSBhZGRlZCwgd2l0aCBjb25zdHJhaW50IHRoYXQgYWxsIG9wcyBpbiB0aGUgc2FtZSBzdHJlYW0N Cj4gPiBzaG91bGQNCj4gPiA+ID4gYmUgc2VudCB0byB0aGUgc2FtZSBxcD8gICovDQo+ID4gPiA+ IHJ0ZV9jb21wX3N0cmVhbV9mcmVlKHVpbnQ4X3QgZGV2X2lkLCB2b2lkICogc3RyZWFtKTsNCj4g PiA+ID4gLyogVGhpcyBzaG91bGQgY2xlYXIgdGhlIHN0cmVhbSBhbmQgcmV0dXJuIGl0IHRvIHRo ZSBkZXZpY2XigJlzIG1lbXBvb2wgKi8NCj4gPiA+ID4NCj4gPiA+ID4gQWxsIG9wcyBhcmUgZW5x dWV1ZWQvZGVxdWV1ZWQgdG8gZGV2aWNlICYgcXAgdXNpbmcgc2FtZQ0KPiA+ID4gPiBydGVfY29t cHJlc3NkZXZfZW5xdWV1ZV9idXJzdCgpL+KApmRlcXVldWVfYnVyc3Q7DQo+ID4gPiA+DQo+ID4g PiA+IFJlIGZsdXNoIGZsYWdzLCBzdGF0ZWZ1bCBzdHJlYW0gd291bGQgc3RhcnQgd2l0aCBvcC5m bHVzaCA9IE5PTkUgb3IgU1lOQw0KPiA+IGFuZA0KPiA+ID4gPiBlbmQgd2l0aCBGVUxMIG9yIEZJ TkFMDQo+ID4gPiA+IFNUQVRFTEVTUyBvcHMgd291bGQganVzdCB1c2UgZWl0aGVyIEZVTEwgb3Ig RklOQUwNCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4gTGV0IG1lIGtub3cgaWYgeW91IHdhbnQg dG8gc2V0IHVwIGEgbWVldGluZyAtIGl0IG1pZ2h0IGJlIGEgbW9yZQ0KPiA+IGVmZmVjdGl2ZQ0K PiA+ID4gPiB3YXkgdG8NCj4gPiA+ID4gYXJyaXZlIGF0IGFuIEFQSSB0aGF0IHdvcmtzIGZvciBh bGwgUE1Ecy4NCj4gPiA+ID4NCj4gPiA+ID4gSSdsbCBzZW5kIG91dCBhIHYzIHRvZGF5IHdpdGgg YWJvdmUgcGx1cyB1cGRhdGVzIGJhc2VkIG9uIGFsbCB0aGUgb3RoZXINCj4gPiA+ID4gZmVlZGJh Y2suDQo+ID4gPiA+DQo+ID4gPiA+IFJlZ2FyZHMsDQo+ID4gPiA+IEZpb25hDQoNCg==