From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0058.outbound.protection.outlook.com [104.47.40.58]) by dpdk.org (Postfix) with ESMTP id 0B30329CA for ; Thu, 7 Dec 2017 06:42:59 +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=cdstO0KIAmT20pfP3EOrPrms6UYzmz0DPIgeLn/3lLg=; b=XuMkJ92hPDdbL6NvghbRIxys0HWgkAO+1iaGB1wk0aS9lM3+EnPIjmXuXLHw2yd2h8OFwm1ey1eCzIz/A09bvsWnNpCG67qVtIWJpzj+H1lTmIs7eAa0VhYJPoTyT4pr4IY8Q6S+Z45lgmso4u9DC0XmUDn3HFksAkNPWhDRb0o= Received: from BY1PR0701MB1111.namprd07.prod.outlook.com (10.160.104.21) by CO2PR07MB2727.namprd07.prod.outlook.com (10.166.201.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.282.5; Thu, 7 Dec 2017 05:42:56 +0000 Received: from BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c]) by BY1PR0701MB1111.namprd07.prod.outlook.com ([fe80::c184:ee9b:3c4c:c97c%14]) with mapi id 15.20.0282.012; Thu, 7 Dec 2017 05:42:54 +0000 From: "Verma, Shally" To: "Trahe, Fiona" , "dev@dpdk.org" CC: "Athreya, Narayana Prasad" , "Challa, Mahipal" , "De Lara Guarch, Pablo" , "Gupta, Ashish" , "Sahu, Sunila" Thread-Topic: [RFC v1] doc compression API for DPDK Thread-Index: AdNpzBSo1ZjDhxTcR46UpkXBh0QrkQAB3v7wAVBbZeA= Date: Thu, 7 Dec 2017 05:42:54 +0000 Message-ID: References: <348A99DA5F5B7549AA880327E580B435892CB667@IRSMSX101.ger.corp.intel.com> In-Reply-To: <348A99DA5F5B7549AA880327E580B435892CB667@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; CO2PR07MB2727; 6:/JcaVxL3spV01Y7z+Uwwhjyx+ewH8DRUPjnxu8aL4erJC9E2UDTeaFe0RjwR5H6BVYHGtZDfsqmIM0moQd+Q3fOwav/b4NSC2rnFNfIoYrEyjcZoWWSaa0eV9Xt3BHOA2kcKr/7pVWbHVR94Uvp58+bmSkenBHibPetaG48aN3rqYn+eroSGSt+q5sdyO8vHaXM5HMDlGdeT5oP1ZkFNfP3kYhSf5HKbf2i9miFTZ++tmNI8fYCAvkNsRNGHU6sEwWqa7cVVIuqebXWzPn4pIv5JLENrjMbAfRJVSO9KBy96vKOScdxTA1vYRIiXHXXkkmwqwFjpkUvRWKiKUVC0Yalat82hNoJzTFh5qIbALrE=; 5:GDmbleoBBKSzcwPpumutNMqKQ+55YCSalSPohXLriCn6ZCbNdeR1byCa/KaqDgdHXWu00ZrmYhBzHx7pr463uvPWGEqk9Qj1O06EfNiIJGEsqMa57i/5McPCDnu35Soh4ztsdZqNy92lDZSyidrCZnlY1Ssrh/A5u9DUYglsDLo=; 24:SIAen+eHpRB9Xc7CsK8PSJmTMkLbmhYi6eUnW+JPfaFB5ofWZo0sQrwe64tMILWxr6n5mmRK6rPsD1XM83TYrdGJjn4rNeAqh33U831bMUA=; 7:hiktAuJyJNyh5aFFA13jeZcjNQzW9WWWg/8VQvrS6Hv/hi3ONwIW4yhzyIm2jk1lrY6M2QqcHzPIJ4gJCRw3FUlKiIfXkhA3oUahIG3GTtmHjNNy8Jyh4ilLHYMjaxiadi1AjnSIOC6x7mcTTDWDmK4KgCwPMGU6o5+0IbLBqv4DynDW3wZIMMHwR25JYtm280/oioU5o/FaQv16pRegaQ4uedcauDx0l6RUJ2b2YfNUi7xHv5NCVuBLpd9msmhu x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(346002)(366004)(376002)(13464003)(199004)(189003)(5890100001)(8676002)(33656002)(966005)(5250100002)(81166006)(99286004)(81156014)(561944003)(14454004)(97736004)(72206003)(101416001)(76176011)(66066001)(1720100001)(53546010)(2906002)(6116002)(53946003)(68736007)(6306002)(9686003)(7696005)(2900100001)(55236003)(25786009)(102836003)(86362001)(2501003)(53936002)(3846002)(2950100002)(478600001)(53376002)(107886003)(7736002)(8936002)(6246003)(55016002)(3660700001)(110136005)(229853002)(105586002)(74316002)(3280700002)(305945005)(5660300001)(106356001)(54906003)(6506006)(6436002)(316002)(4326008)(559001)(579004); DIR:OUT; SFP:1101; SCL:1; SRVR:CO2PR07MB2727; H:BY1PR0701MB1111.namprd07.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: 03b6d2df-8e36-413c-14d7-08d53d355d14 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4602075)(7168020)(4627115)(201703031133081)(201702281549075)(2017052603286); SRVR:CO2PR07MB2727; x-ms-traffictypediagnostic: CO2PR07MB2727: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(278428928389397)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040450)(2401047)(8121501046)(5005006)(3231022)(93006095)(93001095)(3002001)(10201501046)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(20161123558100)(6072148)(201708071742011); SRVR:CO2PR07MB2727; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:CO2PR07MB2727; x-forefront-prvs: 05143A8241 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: 03b6d2df-8e36-413c-14d7-08d53d355d14 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Dec 2017 05:42:54.5388 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO2PR07MB2727 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: Thu, 07 Dec 2017 05:42:59 -0000 SEkgRmlvbmENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBUcmFoZSwg RmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+IFNlbnQ6IDAyIERlY2VtYmVy IDIwMTcgMDA6NDINCj4gVG86IFZlcm1hLCBTaGFsbHkgPFNoYWxseS5WZXJtYUBjYXZpdW0uY29t PjsgZGV2QGRwZGsub3JnDQo+IENjOiBBdGhyZXlhLCBOYXJheWFuYSBQcmFzYWQgPE5hcmF5YW5h UHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47DQo+IENoYWxsYSwgTWFoaXBhbCA8TWFoaXBhbC5D aGFsbGFAY2F2aXVtLmNvbT47IERlIExhcmEgR3VhcmNoLCBQYWJsbw0KPiA8cGFibG8uZGUubGFy YS5ndWFyY2hAaW50ZWwuY29tPjsgVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+ DQo+IFN1YmplY3Q6IFJFOiBbUkZDIHYxXSBkb2MgY29tcHJlc3Npb24gQVBJIGZvciBEUERLDQo+ IA0KPiANCj4gDQo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiBGcm9tOiBWZXJt YSwgU2hhbGx5IFttYWlsdG86U2hhbGx5LlZlcm1hQGNhdml1bS5jb21dDQo+ID4gU2VudDogVGh1 cnNkYXksIE5vdmVtYmVyIDMwLCAyMDE3IDExOjEzIEFNDQo+ID4gVG86IFRyYWhlLCBGaW9uYSA8 ZmlvbmEudHJhaGVAaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+ID4gQ2M6IEF0aHJleWEsIE5h cmF5YW5hIFByYXNhZCA8TmFyYXlhbmFQcmFzYWQuQXRocmV5YUBjYXZpdW0uY29tPjsNCj4gQ2hh bGxhLCBNYWhpcGFsDQo+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+DQo+ID4gU3ViamVj dDogUmU6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lvbiBBUEkgZm9yIERQREsNCj4gPg0KPiA+IEhJ IEZpb25hDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9t OiBUcmFoZSwgRmlvbmEgW21haWx0bzpmaW9uYS50cmFoZUBpbnRlbC5jb21dDQo+ID4gPiBTZW50 OiAyOCBOb3ZlbWJlciAyMDE3IDAwOjI1DQo+ID4gPiBUbzogVmVybWEsIFNoYWxseSA8U2hhbGx5 LlZlcm1hQGNhdml1bS5jb20+OyBkZXZAZHBkay5vcmc7IEF0aHJleWEsDQo+ID4gPiBOYXJheWFu YSBQcmFzYWQgPE5hcmF5YW5hUHJhc2FkLkF0aHJleWFAY2F2aXVtLmNvbT47IENoYWxsYSwNCj4g TWFoaXBhbA0KPiA+ID4gPE1haGlwYWwuQ2hhbGxhQGNhdml1bS5jb20+OyBEZSBMYXJhIEd1YXJj aCwgUGFibG8NCj4gPiA+IDxwYWJsby5kZS5sYXJhLmd1YXJjaEBpbnRlbC5jb20+DQo+ID4gPiBD YzogVHJhaGUsIEZpb25hIDxmaW9uYS50cmFoZUBpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0OiBS RTogW1JGQyB2MV0gZG9jIGNvbXByZXNzaW9uIEFQSSBmb3IgRFBESw0KPiA+ID4NCj4gPiA+IEhp IFNoYWxseSwNCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4g PiA+IEZyb206IFZlcm1hLCBTaGFsbHkgW21haWx0bzpTaGFsbHkuVmVybWFAY2F2aXVtLmNvbV0N Cj4gPiA+ID4gU2VudDogVHVlc2RheSwgT2N0b2JlciAzMSwgMjAxNyAxMTozOSBBTQ0KPiA+ID4g PiBUbzogZGV2QGRwZGsub3JnOyBUcmFoZSwgRmlvbmEgPGZpb25hLnRyYWhlQGludGVsLmNvbT47 IEF0aHJleWEsDQo+ID4gPiBOYXJheWFuYSBQcmFzYWQNCj4gPiA+ID4gPE5hcmF5YW5hUHJhc2Fk LkF0aHJleWFAY2F2aXVtLmNvbT47IENoYWxsYSwgTWFoaXBhbA0KPiA+ID4gPE1haGlwYWwuQ2hh bGxhQGNhdml1bS5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFtSRkMgdjFdIGRvYyBjb21wcmVzc2lv biBBUEkgZm9yIERQREsNCj4gPiA+ID4NCj4gPiA+ID4gSEkgRmlvbmENCj4gPiA+ID4NCj4gPiA+ ID4gVGhpcyBpcyBhbiBSRkMgZG9jdW1lbnQgdG8gYnJpZWYgb3VyIHVuZGVyc3RhbmRpbmcgYW5k IHJlcXVpcmVtZW50cw0KPiBvbg0KPiA+ID4gY29tcHJlc3Npb24gQVBJIHByb3Bvc2FsIGluDQo+ ID4gPiA+IERQREsuIEl0IGlzIGJhc2VkIG9uICJbUkZDXSBDb21wcmVzc2lvbiBBUEkgaW4gRFBE Sw0KPiA+ID4gaHR0cDovL2RwZGsub3JnL21sL2FyY2hpdmVzL2Rldi8yMDE3LQ0KPiA+ID4gPiBP Y3RvYmVyLzA3OTM3Ny5odG1sIi4NCj4gPiA+ID4gSW50ZW50aW9uIG9mIHRoaXMgZG9jdW1lbnQg aXMgdG8gYWxpZ24gb24gY29uY2VwdHMgYnVpbHQgaW50bw0KPiBjb21wcmVzc2lvbg0KPiA+ID4g QVBJLCBpdHMgdXNhZ2UgYW5kIGlkZW50aWZ5IGZ1cnRoZXINCj4gPiA+ID4gcmVxdWlyZW1lbnRz Lg0KPiA+ID4gPg0KPiA+ID4gPiBHb2luZyBmdXJ0aGVyIGl0IGNvdWxkIGJlIGEgYmFzZSB0byBD b21wcmVzc2lvbiBNb2R1bGUgUHJvZ3JhbW1lcg0KPiA+ID4gR3VpZGUuDQo+ID4gPiA+DQo+ID4g PiA+IEN1cnJlbnQgc2NvcGUgaXMgbGltaXRlZCB0bw0KPiA+ID4gPiAtIGRlZmluaXRpb24gb2Yg dGhlIHRlcm1pbm9sb2d5IHdoaWNoIG1ha2VzIHVwIGZvdW5kYXRpb24gb2YNCj4gY29tcHJlc3Np b24NCj4gPiA+IEFQSQ0KPiA+ID4gPiAtIHR5cGljYWwgQVBJIGZsb3cgZXhwZWN0ZWQgdG8gdXNl IGJ5IGFwcGxpY2F0aW9ucw0KPiA+ID4gPg0KPiA+ID4gPiBPdmVydmlldw0KPiA+ID4gPiB+fn5+ fn5+fg0KPiA+ID4gPiBBLiBOb3Rpb24gb2YgYSBzZXNzaW9uIGluIGNvbXByZXNzaW9uIEFQSQ0K PiA+ID4gPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+IEEgU2Vz c2lvbiBpcyBwZXIgZGV2aWNlIGxvZ2ljYWwgZW50aXR5IHdoaWNoIGlzIHNldHVwIHdpdGggY2hh aW5lZC14Zm9ybXMNCj4gdG8NCj4gPiA+IGJlIHBlcmZvcm1lZCBvbiBidXJzdA0KPiA+ID4gPiBv cGVyYXRpb25zIHdoZXJlIGluZGl2aWR1YWwgZW50cnkgY29udGFpbnMgb3BlcmF0aW9uIHR5cGUN Cj4gPiA+IChkZWNvbXByZXNzL2NvbXByZXNzKSBhbmQgcmVsYXRlZCBwYXJhbWV0ZXIuDQo+ID4g PiA+IEEgdHlwaWNhbCBTZXNzaW9uIHBhcmFtZXRlciBpbmNsdWRlczoNCj4gPiA+ID4gLSBjb21w cmVzcyAvIGRlY29tcHJlc3MNCj4gPiA+ID4gLSBkZXZfaWQNCj4gPiA+ID4gLSBjb21wcmVzc2lv biBhbGdvcml0aG0gYW5kIG90aGVyIHJlbGF0ZWQgcGFyYW1ldGVycw0KPiA+ID4gPiAtIG1lbXBv b2wgLSBmb3IgdXNlIGJ5IHNlc3Npb24gZm9yIHJ1bnRpbWUgcmVxdWlyZW1lbnQNCj4gPiA+ID4g LSBhbmQgYW55IG90aGVyIGFzc29jaWF0ZWQgcHJpdmF0ZSBkYXRhIG1haW50YWluZWQgYnkgc2Vz c2lvbg0KPiA+ID4gPg0KPiA+ID4gPiBBcHBsaWNhdGlvbiBjYW4gc2V0dXAgbXVsdGlwbGUgc2Vz c2lvbnMgb24gYSBkZXZpY2UgYXMgZGljdGF0ZWQgYnkNCj4gPiA+IGRldl9pbmZvLm5iX3Nlc3Np b25zIG9yDQo+ID4gPiA+IG5iX3Nlc3Npb25fcGVyX3FwLg0KPiA+ID4gPg0KPiA+ID4gW0Zpb25h XSBUaGUgc2Vzc2lvbiBkZXNpZ24gaXMgbW9kZWxsZWQgb24gdGhlIGNyeXB0b2RldiBzZXNzaW9u IGRlc2lnbg0KPiBhbmQNCj4gPiA+IHNvIGFsbG93cw0KPiA+ID4gdG8gY3JlYXRlIGEgc2Vzc2lv biB3aGljaCBjYW4gYmUgdXNlZCBvbiBkaWZmZXJlbnQgZHJpdmVyIHR5cGVzLiBFLmcuICBhDQo+ ID4gPiBzZXNzaW9uIGNvdWxkIGJlIHNldCB1cCBhbmQgaW5pdGlhbGlzZWQNCj4gPiA+IHRvIHJ1 biBvbiBhIFF1aWNrQXNzaXN0IGRldmljZSBhbmQgYSBTb2Z0d2FyZSBkZXZpY2UuIFRoaXMgbWF5 IGJlIHVzZWZ1bA0KPiBmb3INCj4gPiA+IHN0YXRlbGVzcw0KPiA+ID4gcmVxdWVzdHMsIGFuZCBl bmFibGUgbG9hZC1iYWxhbmNpbmcuIEZvciBzdGF0ZWZ1bCBmbG93cyB0aGUgc2Vzc2lvbg0KPiBz aG91bGQgYmUNCj4gPiA+IHNldCB1cCBmb3INCj4gPiA+IG9ubHkgb25lIHNwZWNpZmljIGRyaXZl ci10eXBlIGFzIHRoZSBzdGF0ZSBpbmZvcm1hdGlvbiB3aWxsIGJlIHN0b3JlZCBpbiB0aGUNCj4g PiA+IHByaXZhdGUgZGF0YSBzcGVjaWZpYyB0byB0aGUgZHJpdmVyLXR5cGUNCj4gPiA+IGFuZCBu b3QgdHJhbnNmZXJyYWJsZSBiZXR3ZWVuIGRyaXZlci10eXBlcy4NCj4gPiA+IFNvIGEgc2Vzc2lv bg0KPiA+ID4gIC0gaXMgbm90IHBlci1kZXZpY2UNCj4gPiA+ICAtIGhhcyBubyBkZXZfaWQNCj4g PiA+ICAtIGhhcyBubyBtZW1wb29sIHN0b3JlZCBpbiBpdCAtIHRoZSBwb29sIGlzIGNyZWF0ZWQg YnkgdGhlIGFwcGxpY2F0aW9uLCB0aGUNCj4gbGliDQo+ID4gPiBjYW4gcmV0cmlldmUgdGhlIHBv b2wgZnJvbSB0aGUgb2JqZWN0IHdpdGggcnRlX21lbXBvb2xfZnJvbV9vYmooKQ0KPiA+ID4gIC0g ZG9lcyBub3QgaGF2ZSBhIGxpbWl0IG51bWJlciBwZXIgZGV2aWNlLCBqdXN0IHBlciBxcCwgaS5l LiB0aGVyZSBpcyBubw0KPiA+ID4gZGV2X2luZm8ubmJfc2Vzc2lvbnMsIGp1c3QgZGV2X2luZm8u bWF4X25iX3Nlc3Npb25zX3Blcl9xcA0KPiA+ID4NCj4gPiA+IERvIHlvdSB0aGluayBhbnkgb2Yg dGhpcyBuZWVkcyB0byBiZSBjaGFuZ2VkPw0KPiA+DQo+ID4gW1NoYWxseV0gUGxlYXNlIGhlbHAg Y29uZmlybSBmb2xsb3dpbmcgYmVmb3JlIEkgY291bGQgYW5zd2VyIHRoaXMuDQo+ID4NCj4gPiBJ biBjcnlwdG9kZXYsIHNlc3Npb24gaG9sZHMgYW4gZHJpdmVycyBhcnJheSBpbml0aWFsaXplZCBv biBpdCB3aGVyZSBlYWNoIGNhbg0KPiBiZSBzZXR1cCB0byBwZXJmb3JtDQo+ID4gc2FtZS9kaWZm ZXJlbnQgb3BlcmF0aW9uIGluIGl0cyBwcml2YXRlX2RhdGEuDQo+ID4gT24gbWFwcGluZyBpdCB0 byBjb21wcmVzc2lvbiBpdCBtZWFuLCBhIHNlc3Npb246DQo+ID4gLSBXaWxsIG5vdCByZXRhaW4g YW55IG9mIHRoZSBpbmZvIGFzIG1lbnRpb25lZCBhYm92ZSAoeGZvcm0sIG1lbXBvb2wsDQo+IGFs Z29zIGV0IGVsKS4gQWxsIHN1Y2ggaW5mb3JtYXRpb24gaXMNCj4gPiBtYWludGFpbmVkIGFzIHBh cnQgb2YgYXNzb2NpYXRlZCBkZXZpY2UgZHJpdmVyIHByaXZhdGUgZGF0YS4NCj4gW0Zpb25hXSBl eGFjdGx5DQo+IA0KPiA+IC0gQXBwIGNhbiB1c2Ugc2FtZSBzZXNzaW9uIHRvIHNldCBjb21wcmVz cyB4Zm9ybSBhbmQgZGVjb21wcmVzcyB4Zm9ybQ0KPiBvbiBkZXZpY2VzIGJ1dCBpZiBib3RoIGRl dmljZXMNCj4gPiBtYXBzIHRvIHNhbWUgZHJpdmVyX2lkIHRoZW4gb25seSBlaXRoZXIgaXMgZWZm ZWN0aXZlICh3aGljaGV2ZXIgaXMgc2V0IGZpcnN0KT8NCj4gW0Zpb25hXSBObywgIHRoZSBpbnRl bnRpb24gaXMgdGhhdCB0aGUgc2Vzc2lvbiBpcyBpbml0aWFsaXNlZCBmb3IgYWxsIGRyaXZlcnMs IGFuZCBzbw0KPiBmb3IgYWxsIGRldmljZXMsIHVzaW5nIHRoZSBzYW1lIHhmb3JtLiBTbyBpdCBz aG91bGQgb25seSBiZSBpbml0aWFsaXNlZCB0byBlaXRoZXINCj4gY29tcHJlc3Mgb3IgZGVjb21w cmVzcy4NCg0KW1NoYWxseV0gT2suIFRoZW4gZG9jdW1lbnRhdGlvbiBjYW4gYmUgdXBkYXRlZCB0 byByZWZsZWN0IHRoaXMgcHVycG9zZS4NCg0KPiBUaGUgaW50ZW50IGJlaW5nIHRoYXQgYW4gYXBw bGljYXRpb24gY2FuIHByZXBhcmUgYW4gb3BlcmF0aW9uIChzdGF0ZWxlc3MpDQo+IGluZGVwZW5k ZW50bHkgb2YgdGhlIGRyaXZlciAmIGRldmljZSBpdCdzIHRhcmdldGluZywgYW5kIHRoZW4gY2hv b3NlIHdoZXJlDQo+IHRvIHNlbmQgaXQsIHBvc3NpYmx5IGJhc2VkIG9uIHdoaWNoIGRldmljZSBp cyBub3QgYnVzeS4NCj4gDQo+IA0KW1NoYWxseV0gT2suIFRoZW4gZm9yIG5vdyB3ZSBjYW4gY29u dGludWUgd2l0aCBzYW1lIGRlc2lnbiBhcHByb2FjaCBhcyBpbiBjcnlwdG9kZXYuIFdpbGwgcHJv cG9zZSBhbnkgY2hhbmdlcyBsYXRlciBvbiBhIG5lZWQgYmFzaXMuDQpBbHNvLCBJIG1heSBoYXZl IGZldyBxdWVzdGlvbnMgb24gc2Vzc2lvbiBBUEkgaW1wbGVtZW50YXRpb24gaW4gcnRlX2NvbXBy ZXNzZGV2LmMuIFdpbGwgYXNrIHRoZW0gaW4gQVBJIFJGQy4NCg0KPiA+DQo+ID4gSXMgdGhpcyB1 bmRlcnN0YW5kaW5nIGNvcnJlY3Q/DQo+ID4NCj4gPiA+DQo+ID4gPiA+IEIuIE5vdGlvbiBvZiBi dXJzdCBvcGVyYXRpb25zIGluIGNvbXByZXNzaW9uIEFQSQ0KPiA+ID4gPiDCoD09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ID4gPiBzdHJ1Y3QgcnRlX2NvbXBfb3Ag ZGVmaW5lcyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIG9wZXJhdGlvbmFsDQo+ID4gPiBwYXJh bWV0ZXIgYW5kIG1ha2VzIHVwIG9uZSBzaW5nbGUNCj4gPiA+ID4gZWxlbWVudCBvZiBidXJzdC4g VGhpcyBpcyBib3RoIGFuIGlucHV0L291dHB1dCBwYXJhbWV0ZXIuDQo+ID4gPiA+IFBNRCBnZXRz IHNvdXJjZSwgZGVzdGluYXRpb24gYW5kIGNoZWNrc3VtIGluZm9ybWF0aW9uIGF0IGlucHV0IGFu ZA0KPiA+ID4gdXBkYXRlZCBpdCB3aXRoIGJ5dGVzIGNvbnN1bWVkIGFuZA0KPiA+ID4gPiBwcm9k dWNlZCBhdCBvdXRwdXQuDQo+ID4gPiBbRmlvbmFdIEFncmVlZA0KPiA+ID4NCj4gPiA+ID4gT25j ZSBlbnF1ZXVlZCBmb3IgcHJvY2Vzc2luZywgcnRlX2NvbXBfb3AgKmNhbm5vdCBiZSByZXVzZWQq IHVudGlsDQo+IGl0cw0KPiA+ID4gc3RhdHVzIGlzIHNldCB0bw0KPiA+ID4gPiBSVEVfQ09NUF9P UF9GQUlMVVJFIG9yIFJURV9DT01QX09QX1NUQVRVU19TVUNDRVNTLg0KPiA+ID4gW0Zpb25hXSBj YW5ub3QgYmUgdXNlZCB1bnRpbCBpdHMgc3RhdHVzIGlzIHNldCB0byBhbnkgdmFsdWUgb3RoZXIg dGhhbg0KPiA+ID4gUlRFX0NPTVBfT1BfTk9UX1BST0NFU1NFRA0KPiA+DQo+ID4gW1NoYWxseV0g SG93IHVzZXIgd2lsbCBrbm93IHRoYXQgc3RhdHVzIGlzIE5PVF9QUk9DRVNTRUQgYWZ0ZXIgb3Bz IGFyZQ0KPiBlbnF1ZXVlZD8NCj4gPiBJIGFzc3VtZSBvbmx5IHdheSB0byBjaGVjayBlbnF1ZXVl ZCBvcHMgc3RhdHVzIGlzIGRlcXVldWVfYnVyc3QoKSBhbmQNCj4gUE1EIHB1dCBhbiBvcCBpbnRv IGNvbXBsZXRpb24NCj4gPiBxdWV1ZSBmb3IgZGVxdWV1ZSAqb25seSB3aGVuKiBpdCBpcyBjb21w bGV0ZWQgd2l0aA0KPiBQYXNzL0ZhaWwvT3V0X29mX3NwYWNlIGNvbmRpdGlvbiAqbm90KiB3aGVu IGl0J3MgaW4NCj4gPiBwcm9ncmVzcyAoZXF1aXZhbGVudCBvZiBSVEVfQ09NUF9PUF9OT1RfUFJP Q0VTU0VEKS4NCj4gPg0KPiA+IEFtIEkgbWlzc2luZyBhbnl0aGluZyBoZXJlPw0KPiBbRmlvbmFd ICBDb3JyZWN0LiBQTUQgc2hvdWxkIG9ubHkgcmV0dXJuIGFuIG9wIGluIHRoZSBkZXF1ZXVlIG9u Y2UgaXQncw0KPiBwcm9jZXNzZWQuDQo+IA0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gQy4g U2Vzc2lvbiBhbmQgcnRlX2NvbXBfb3ANCj4gPiA+ID4gwqA9PT09PT09PT09PT09PT09PT09PT09 PQ0KPiA+ID4gPiBFdmVyeSBvcGVyYXRpb24gaW4gYSBidXJzdCBpcyB0aWVkIHRvIGEgU2Vzc2lv bi4gTW9yZSB0byBjb3ZlciBvbiB0aGlzDQo+IHVuZGVyDQo+ID4gPiBTdGF0ZWxlc3MgVnMgU3Rh dGVmdWwgc2VjdGlvbi4NCj4gPiA+IFtGaW9uYV0gQWdyZWVkLiBJIHdvdWxkIGFkZCB0aGF0IGVh Y2ggb3BlcmF0aW9uIGluIGEgYnVyc3QgbWF5IGJlDQo+IGF0dGFjaGVkDQo+ID4gPiB0byBhIGRp ZmZlcmVudCBzZXNzaW9uLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+IEQuIFN0YXRlbGVzcyBWcyBT dGF0ZWZ1bA0KPiA+ID4gPiA9PT09PT09PT09PT09PT09PT09DQo+ID4gPiA+IENvbXByZXNzaW9u IEFQSSBwcm92aWRlIFJURV9DT01QX0ZGX1NUQVRFRlVMIGZlYXR1cmUgZmxhZyBmb3INCj4gUE1E DQo+ID4gPiB0byByZWZsZWN0IGl0cyBzdXBwb3J0IGZvciBTdGF0ZWZ1bA0KPiA+ID4gPiBvcGVy YXRpb24uDQo+ID4gPiBbRmlvbmFdIEFncmVlZC4NCj4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEQu MSBDb21wcmVzc2lvbiBBUEkgU3RhdGVsZXNzIG9wZXJhdGlvbg0KPiA+ID4gPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gQSBT dGF0ZWxlc3Mgb3BlcmF0aW9uIG1lYW5zIGFsbCBlbnF1ZXVlZCBwYWNrZXRzIGFyZSBpbmRlcGVu ZGVudCBvZg0KPiA+ID4gZWFjaCBvdGhlciBpLmUuIEVhY2ggcGFja2V0IGhhcw0KPiA+ID4gPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhlaXIgZmx1c2ggdmFsdWUgaXMgc2V0IHRvIFJU RV9GTFVTSF9GVUxMIG9yDQo+IFJURV9GTFVTSF9GSU5BTA0KPiA+ID4gKHJlcXVpcmVkIG9ubHkg b24gY29tcHJlc3Npb24NCj4gPiA+ID4gc2lkZSksDQo+ID4gPiA+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBbGwtb2YgdGhlIHJlcXVpcmVkIGlucHV0IGFuZCBzdWZmaWNpZW50IGxhcmdl IGJ1ZmZlciBzaXplIHRvIHN0b3JlDQo+ID4gPiBvdXRwdXQgaS5lLiBPVVRfT0ZfU1BBQ0UgY2Fu DQo+ID4gPiA+IG5ldmVyIG9jY3VyIChyZXF1aXJlZCBkdXJpbmcgYm90aCBjb21wcmVzc2lvbiBh bmQgZGVjb21wcmVzc2lvbikNCj4gPiA+ID4NCj4gPiA+ID4gSW4gc3VjaCBjYXNlLCBQTUQgaW5p dGlhdGVzIHN0YXRlbGVzcyBwcm9jZXNzaW5nIGFuZCByZWxlYXNlcyBhY3F1aXJlZA0KPiA+ID4g cmVzb3VyY2VzIGFmdGVyIHByb2Nlc3Npbmcgb2YgY3VycmVudA0KPiA+ID4gPiBvcGVyYXRpb24g aXMgY29tcGxldGUgaS5lLiBmdWxsIGlucHV0IGNvbnN1bWVkIGFuZCBmdWxsIG91dHB1dCB3cml0 dGVuLg0KPiA+ID4gPiBBcHBsaWNhdGlvbiBjYW4gYXR0YWNoIHNhbWUgb3IgZGlmZmVyZW50IHNl c3Npb24gdG8gZWFjaCBwYWNrZXQgYW5kIGNhbg0KPiA+ID4gbWFrZSBjb25zZWN1dGl2ZSBlbnF1 ZV9idXJzdCgpDQo+ID4gPiA+IGNhbGxzIGkuZS4gRm9sbG93aW5nIGlzIHJlbGV2YW50IHVzYWdl Og0KPiA+ID4gPg0KPiA+ID4gPiBlbnF1ZXVlZCA9IHJ0ZV9jb21wX2VucXVlX2J1cnN0IChkZXZf aWQsIHFwX2lkLCBvcHMxLCBuYl9vcHMpOw0KPiA+ID4gPiBlbnF1ZXVlZCA9IHJ0ZV9jb21wX2Vu cXVlX2J1cnN0KGRldl9pZCwgcXBfaWQsIG9wczIsIG5iX29wcyk7DQo+ID4gPiA+IGVucXVldWVk ID0gcnRlX2NvbXBfZW5xdWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzMywgbmJfb3BzKTsNCj4g PiA+ID4NCj4gPiA+ID4gKk5vdGUg4oCTIEV2ZXJ5IGNhbGwgaGFzIGRpZmZlcmVudCBvcHMgYXJy YXkgaS5lLsKgIHNhbWUgcnRlX2NvbXBfb3AgYXJyYXkNCj4gPiA+ICpjYW5ub3QgYmUgcmV1c2Vk KiB0byBxdWV1ZSBuZXh0DQo+ID4gPiA+IGJhdGNoIG9mIGRhdGEgdW50aWwgcHJldmlvdXMgb25l cyBhcmUgY29tcGxldGVseSBwcm9jZXNzZWQuDQo+ID4gPiA+DQo+ID4gPiA+IEFsc28gaWYgbXVs dGlwbGUgdGhyZWFkcyBjYWxscyBlbnF1ZXVlX2J1cnN0KCkgb24gc2FtZSBxdWV1ZSBwYWlyIHRo ZW4NCj4gaXTigJlzDQo+ID4gPiBhcHBsaWNhdGlvbiBvbnVzIHRvIHVzZSBwcm9wZXINCj4gPiA+ ID4gbG9ja2luZyBtZWNoYW5pc20gdG8gZW5zdXJlIHNlcmlhbGl6ZWQgZW5xdWV1aW5nIG9mIG9w ZXJhdGlvbnMuDQo+ID4gPiBbRmlvbmFdIEFncmVlZCB0byBhYm92ZSBzdGF0ZWxlc3MgZGVzY3Jp cHRpb24uDQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gUGxlYXNlIG5vdGUgYW55IHRpbWUgb3V0cHV0 IGJ1ZmZlciByYW4gb3V0IG9mIHNwYWNlIGR1cmluZyB3cml0ZSB0aGVuDQo+ID4gPiBvcGVyYXRp b24gd2lsbCB0dXJuIOKAnFN0YXRlZnVs4oCdLsKgIFNlZQ0KPiA+ID4gPiBtb3JlIG9uIFN0YXRl ZnVsIHVuZGVyIHJlc3BlY3RpdmUgc2VjdGlvbi4NCj4gPiA+IFtGaW9uYV0gTGV0J3MgY29tZSBi YWNrIHRvIHRoaXMgbGF0ZXIuIEFuIGFsdGVybmF0aXZlIGlzIHRoYXQNCj4gT1VUX09GX1NQQUNF IGlzDQo+ID4gPiByZXR1cm5lZCBhbmQgdGhlICBhcHBsaWNhdGlvbg0KPiA+ID4gbXVzdCB0cmVh dCBhcyBhIGZhaWwgYW5kIHJlc3VibWl0IHRoZSBvcGVyYXRpb24gd2l0aCBhIGxhcmdlciBkZXN0 aW5hdGlvbg0KPiA+ID4gYnVmZmVyLg0KPiA+DQo+ID4gW1NoYWxseV0gVGhlbiBJIHByb3Bvc2Ug dG8gYWRkIGEgZmVhdHVyZSBmbGFnDQo+ICJGRl9TVVBQT1JUX09VVF9PRl9TUEFDRSIgcGVyIHhm b3JtIHR5cGUgZm9yIGZsZXhpYmxlDQo+ID4gUE1EIGRlc2lnbi4NCj4gPiBBcyB0aGVyZSdyZSBk ZXZpY2VzIHdoaWNoIHRyZWF0IGl0IGFzIGVycm9yIG9uIGNvbXByZXNzaW9uIGJ1dCBub3Qgb24N Cj4gZGVjb21wcmVzc2lvbi4NCj4gPiBJZiBpdCBpcyBub3Qgc3VwcG9ydGVkLCB0aGVuIGl0IHNo b3VsZCBiZSB0cmVhdGVkIGFzIGZhaWx1cmUgY29uZGl0aW9uIGFuZCBhcHANCj4gY2FuIHJlc3Vi bWl0IG9wZXJhdGlvbi4NCj4gPiBpZiBzdXBwb3J0ZWQsIGJlaGF2aW91ciAqVG8tYmUtRGVmaW5l ZCogdW5kZXIgc3RhdGVmdWwuDQo+IFtGaW9uYV0gQ2FuIHlvdSBleHBsYWluICd0dXJuIHN0YXRl ZnVsJyBzb21lIG1vcmU/DQo+IElmIGNvbXByZXNzb3IgcnVucyBvdXQgb2Ygc3BhY2UgZHVyaW5n IHN0YXRlbGVzcyBvcGVyYXRpb24sIGVpdGhlciBjb21wIG9yDQo+IGRlY29tcCwgYW5kIHR1cm5z IHN0YXRlZnVsLCBob3cgd291bGQgdGhlIGFwcCBrbm93PyBBbmQgd2hhdCB3b3VsZCBiZSBpbg0K PiBzdGF0dXMsIGNvbnN1bWVkIGFuZCBwcm9kdWNlZD8NCj4gQ291bGQgaXQgcmV0dXJuIE9VVF9P Rl9TUEFDRSwgYW5kIGlmIGJvdGggY29uc3VtZWQgYW5kIHByb2R1Y2VkID09IDANCg0KW1NoYWxs eV0gSWYgY29uc3VtZWQgPSBwcm9kdWNlZCA9PSAwLCB0aGVuIGl0J3Mgbm90IE9VVF9PRl9TUEFD RSBjb25kaXRpb24uDQoNCj4gdGhlbiB0aGUgd2hvbGUgb3AgbXVzdCBiZSByZXN1Ym1pdHRlZCB3 aXRoIGEgYmlnZ2VyIG91dHB1dCBidWZmZXIuIEJ1dCBpZg0KPiBjb25zdW1lZCBhbmQgcHJvZHVj ZWQgPiAwIHRoZW4gYXBwIGNvdWxkIHRha2UgdGhlIG91dHB1dCBhbmQgc3VibWl0IG5leHQNCj4g b3ANCj4gY29udGludWluZyBmcm9tIGNvbnN1bWVkKzEuDQo+DQogDQpbU2hhbGx5XSBjb25zdW1l ZCBhbmQgcHJvZHVjZWQgd2lsbCAqYWx3YXlzKiBiZSA+IDAgaW4gY2FzZSBvZiBPVVRfT0ZfU1BB Q0UuDQpPVVRfT0ZfU1BBQ0UgbWVhbnMgb3V0cHV0IGJ1ZmZlciBleGhhdXN0ZWQgd2hpbGUgd3Jp dGluZyBkYXRhIGludG8gaXQgYW5kIFBNRCBtYXkgaGF2ZSBtb3JlIHRvIHdyaXRlIHRvIGl0LiBT byBpbiBzdWNoIGNhc2UsIFBNRCBzaG91bGQgc2V0DQpQcm9kdWNlZCA9IGNvbXBsZXRlIGxlbmd0 aCBvZiBvdXRwdXQgYnVmZmVyDQpTdGF0dXMgPSBPVVRfT0ZfU1BBQ0UNCmNvbnN1bWUsIGZvbGxv d2luZyBwb3NzaWJpbGl0aWVzIGhlcmU6DQoxLiBjb25zdW1lZCA9IGNvbXBsZXRlIGxlbmd0aCBv ZiBzcmMgbWJ1ZiBtZWFucyBQTUQgaGFzIHJlYWQgZnVsbCBpbnB1dCwgT1INCjIuIGNvbnN1bWVk ID0gcGFydGlhbCBsZW5ndGggb2Ygc3JjIG1idWYgbWVhbnMgUE1EIGhhcyByZWFkIHBhcnRpYWwg aW5wdXQNCg0KT24gc2VlaW5nIHRoaXMgc3RhdHVzLCBhcHAgc2hvdWxkIGNvbnN1bWUgb3V0cHV0 IGFuZCByZS1lbnF1ZXVlIHNhbWUgb3Agd2l0aCBlbXB0eSBvdXRwdXQgYnVmZmVyIGFuZCBzcmMg PSBjb25zdW1lZCsxLg0KUGxlYXNlIG5vdGUgYXMgcGVyIGN1cnJlbnQgcHJvcG9zYWwsIGFwcCBz aG91bGQgY2FsbCBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSgpIHZlcnNpb24gb2YgQVBJIGlm IGl0IGRvZXNuJ3Qga25vdyBvdXRwdXQgc2l6ZSBiZWZvcmVoYW5kLg0KDQo+IA0KPiA+ID4NCj4g PiA+ID4gIFR5cGljYWwgQVBJKGZsb3ctd2lzZSkgdG8gc2V0dXAgZm9yIHN0YXRlbGVzcyBvcGVy YXRpb246DQo+ID4gPiA+IDEuIHJ0ZV9jb21wX3Nlc3Npb24gKnNlc3MgPSBydGVfY29tcF9zZXNz aW9uX2NyZWF0ZShydGVfbWVtcG9vbA0KPiA+ID4gKnBvb2wpOw0KPiA+ID4gPiAyLiBydGVfY29t cF9zZXNzaW9uX2luaXQgKGludCBkZXZfaWQsIHJ0ZV9jb21wX3Nlc3Npb24gKnNlc3MsDQo+ID4g PiBydGVfY29tcF94Zm9ybSAqeGZvcm0sIHJ0ZV9tZW1wb29sDQo+ID4gPiA+ICpzZXNzX3Bvb2wp Ow0KPiA+ID4gPiAzLiBydGVfY29tcF9vcF9wb29sX2NyZWF0ZShydGVfbWVtcG9vbCAuLikNCj4g PiA+ID4gNC4gcnRlX2NvbXBfb3BfYnVsa19hbGxvYyAoc3RydWN0IHJ0ZV9tZW1wb29sICptZW1w b29sLCBzdHJ1Y3QNCj4gPiA+IHJ0ZV9jb21wX29wICoqb3BzLCB1aW50MTZfdA0KPiA+ID4gPiBu Yl9vcHMpOw0KPiA+ID4gPiA1LiBmb3IgZXZlcnkgcnRlX2NvbXBfb3AgaW4gb3BzW10sDQo+ID4g PiA+IMKgwqDCoCA1LjEgcnRlX2NvbXBfb3BfYXR0YWNoX3Nlc3Npb24ocnRlX2NvbXBfb3AgKm9w LA0KPiBydGVfY29tcF9zZXNzaW9uDQo+ID4gPiAqc2Vzcyk7DQo+ID4gPiA+IMKgwqDCoCA1LjIg c2V0IHVwIHdpdGggc3JjL2RzdCBidWZmZXINCj4gPiA+ID4gNi4gZW5xID0gcnRlX2NvbXBkZXZf ZW5xdWV1ZV9idXJzdCh1aW50OF90IGRldl9pZCwgdWludDE2X3QgcXBfaWQsDQo+ID4gPiBzdHJ1 Y3QgcnRlX2NvbXBfb3AgKipvcHMsIHVpbnQxNl90DQo+ID4gPiA+IG5iX29wcyk7DQo+ID4gPiA+ IDcuIGRxdSA9IHJ0ZV9jb21wZGV2X2RlcXVldWVfYnVyc3QoZGV2X2lkLCBxcF9pZCwgb3BzLCBl bnEpOw0KPiA+ID4gPiA4LiByZXBlYXQgNyB3aGlsZSAoZHF1IDwgZW5xKSAvLyBXYWl0IHRpbGwg YWxsIG9mIGVucXVldWVkIGFyZSBkZXF1ZXVlZA0KPiA+ID4gPiA5LiBSZXBlYXQgNS4yIGZvciBu ZXh0IGJhdGNoIG9mIGRhdGENCj4gPiA+ID4gMTAuIHJ0ZV9jb21wX3Nlc3Npb25fY2xlYXIgKCkg Ly8gb25seSByZXNldCBwcml2YXRlIGRhdGEgbWVtb3J5IGFyZWENCj4gYW5kDQo+ID4gPiAqbm90 KiB0aGUgeGZvcm0gYW5kIGRldmlkDQo+ID4gPiA+IGluZm9ybWF0aW9uLiBJbiBjYXNlLCB5b3Ug d2FudCB0byByZS11c2Ugc2Vzc2lvbi4NCj4gPiA+ID4gMTEuIHJ0ZV9jb21wX3Nlc3Npb25fZnJl ZShyZXRfY29tcF9zZXNzICpzZXNzaW9uKQ0KPiA+ID4gW0Zpb25hXSBvay4gVGhpcyBpcyBvbmUg cG9zc2libGUgZmxvdy4gVGhlcmUgYXJlIHZhcmlhdGlvbnMgcG9zc2libGUNCj4gPiA+ICAtIEFi b3ZlIGFzc3VtZXMgYWxsIG9wcyBhcmUgdXNpbmcgdGhlIHNhbWUgc2Vzc2lvbiwgdGhpcyBpcyBu b3QNCj4gbmVjZXNzYXJpbHkNCj4gPiA+IHRoZSBjYXNlLiBFLmcuIHRoZXJlDQo+ID4gPiAgICBj b3VsZCBiZSBhIGNvbXByZXNzaW9uIHNlc3Npb24gYW5kIGEgZGVjb21wcmVzc2lvbiBzZXNzaW9u IGFuZCBhDQo+IGJ1cnN0IG9mDQo+ID4gPiBvcHMgbWF5IGNvbnRhaW4gYm90aC4NCj4gPg0KPiA+ IFtTaGFsbHldIEFncmVlIGJ1dCBhc3N1bWUgYXBwbGljYWJsZSBvbmx5IGZvciBzdGF0ZWxlc3Mg dW50aWwgd2UgY292ZXINCj4gc3RhdGVmdWwNCj4gPg0KPiA+ID4gICAgSW4gdGhpcyBjYXNlIFN0 ZXAgOSB3b3VsZCBiZSBSZXBlYXQgNS4xIGFzIHdlbGwgYXMgNS4yDQo+ID4gPiAgLSBBbHNvIGl0 IHdvdWxkIG5vdCBiZSBuZWNlc3NhcnkgdG8gd2FpdCB1bnRpbCB0aGUgZnVsbCBidXJzdCBpcyBk ZXF1ZXVlZA0KPiA+ID4gYmVmb3JlIGRvaW5nDQo+ID4gPiAgICBhbm90aGVyIGVucXVldWUgLSB0 aG91Z2ggb2YgY291cnNlIHRoZSBvcHMgd291bGQgbmVlZCB0byBiZQ0KPiBtYW5hZ2VkIHNvDQo+ ID4gPiBvbmx5DQo+ID4gPiAgICB0aG9zZSBmaW5pc2hlZCB3aXRoIGFyZSByZXVzZWQsIG9yIG11 bHRpcGxlIHNldHMgb2Ygb3BzIGNvdWxkIGJlDQo+IGFsbG9jYXRlZC4NCj4gPg0KPiA+IFtTaGFs bHldIEFncmVlDQo+ID4NCj4gPiA+ICAtIFdoYXQgZG8geW91IG1lYW4gYnkgU3RlcCAxMCBjb21t ZW50PyBUaGUgc2Vzc2lvbiBvbmx5IGhhcyBwcml2YXRlDQo+IGRhdGEuDQo+ID4gPiBJdCdzIHVw IHRvIHRoZSBQTUQgdG8NCj4gPiA+ICAgIHN0b3JlIHdoYXRldmVyIGl0IG5lZWRzIGZyb20gdGhl IHhmb3JtLiBJIHRoaW5rIHNlc3Npb25fY2xlYXIgc2hvdWxkDQo+IG1lYW4NCj4gPiA+IGFsbCB0 aGUgZGF0YSBpcyB6ZXJvZWQgaW4gdGhlIHNlc3Npb24uDQo+ID4gPiAgICBJZiB0aGUgc2Vzc2lv biBpcyB0byBiZSByZS11c2VkIHRoZW4gbm90aGluZyBuZWVkcyB0byBiZSBjbGVhcmVkLiBFYWNo IG9wDQo+IGlzDQo+ID4gPiBhbHJlYWR5IHJlLXVzaW5nIHRoZSBzZXNzaW9uIGluIHlvdXINCj4g PiA+ICAgIGZsb3cgYWJvdmUgd2l0aG91dCBjbGVhcmluZyBiZXR3ZWVuIG9wcy4NCj4gPiA+ICAg IEJVVCB0aGlzIG9ubHkgYXBwbGllcyB0byBzdGF0ZWxlc3MNCj4gPg0KPiA+IFtTaGFsbHldIFRo aXMgY2FtZSBmcm9tIG15IHByZXZpb3VzIG5vdGlvbiBvZiBzZXNzaW9uLiBOb3cgd2hlbiBJIHNl ZSBpdA0KPiBhbmFsb2d5IHRvIGNyeXB0b2RldiwgaXRzIHB1cnBvc2UNCj4gPiBpcyBjbGVhciB0 byBtZS4NCj4gPiBCdXQgdGhlbiBJIHByb3Bvc2UgdG8gcmVuYW1lIEFQSSB0byBydGVfY29tcGRl dl9zZXNzX3Rlcm0oKSB0byBtYWtlIGl0DQo+IHNlbGYtZXhwbGFuYXRvcnkuDQo+IFtGaW9uYV0g U28gSSB0aGluayB0ZXJtIGlzbid0IHZlcnkgY2xlYXIsIEkgZ3Vlc3MgaXQncyBzaG9ydCBmb3Ig dGVybWluYXRlPw0KPiBJZiBzbyBJIGNhbiBjaGFuZ2UgdG8gcnRlX2NvbXBkZXZfc2Vzc190ZXJt aW5hdGUoKQ0KDQpbU2hhbGx5XSBZZXMgYnkgdGVybSBJIG1lYW50IHRlcm1pbmF0ZS4gU28gcnRl X2NvbXBkZXZfc2Vzc190ZXJtaW5hdGUoKSBpcyBmaW5lLg0KDQo+IEhvd2V2ZXIgSSB0aGluayB3 ZSBtYXkgbm90IG5lZWQgdGhpcyBhdCBhbGwgaWYgd2UgZ28gd2l0aCB5b3VyIHN0cmVhbQ0KPiBz dWdnZXN0aW9uIGJlbG93Lg0KPiBBcyB0aGVyZSBtYXkgYmUgb25seSBpbW11dGFibGUgZGF0YSBp biB0aGUgc2Vzc2lvbiAtIGxpa2UgYWxnbywgbGV2ZWwsDQo+IGNoZWNrc3VtIHR5cGUsIGV0Yy4N Cj4gSW4gY3J5cHRvZGV2IHRoZSBzZXNzaW9uIGRhdGEgaXMgYWxzbyBpbW11dGFibGUsIGJ1dCBh cyBpdCBob2xkcyBhIGtleSBpdCdzDQo+IGltcG9ydGFudCB0byBjbGVhcg0KPiBpdCBiZWZvcmUg YWxsb3dpbmcgdGhlIHNlc3Npb24gdG8gYmUgcmUtdXNlZC4gSSdtIG5vdCBzdXJlIHdlJ2xsIGhh dmUgYW55IGRhdGENCj4gbGVmdCBpbg0KPiBzZXNzaW9uIHdoaWNoIG5lZWRzIHRvIGJlIGNsZWFy ZWQsIGFsbCB0aGUgc3RhdGUgZGF0YSBtYXkgYmUgaW4gdGhlIHN0cmVhbS4NCj4gDQoNCltTaGFs bHldIEkgd291bGQgc2F5IHdlIHN0aWxsIG5lZWQgaXQgdG8gcmV2ZXJzZSBvcGVyYXRpb25zIGRv bmUgaW4gc2Vzc19pbml0KCkgbGlrZSBmcmVlIHVwIGRldmljZSBwcml2YXRlIGRhdGEuDQpTbywg d2Ugc2hvdWxkIHJldGFpbiBpdC4NCg0KPiA+DQo+ID4gLSBmb3Igc3RhdGVmdWwgd2UgbWF5IG5l ZWQgYSBkaWZmZXJlbnQNCj4gPiA+IGJlaGF2aW91ciAtIHRvIGNsZWFyIHN0YXRlIGRhdGEgYnV0 DQo+ID4gPiAgICBrZWVwIGFsZ28sIGxldmVsLCBIdWZmbWFuLXR5cGUsIGNoZWNrc3VtLXR5cGUu IExldCdzIGRpc2N1c3MgdW5kZXINCj4gc3RhdGVmdWwNCj4gPiA+IC0gdGhpcyBtYXkgbmVlZCBh IG5ldyBBUEkuDQo+ID4gPg0KPiA+DQo+ID4gW1NoYWxseV0gT3IgUE1EIGNhbiBpbnRlcm5hbGx5 IHJlc2V0IGl0cyBzdGF0ZSBvbmNlIGl0IHByb2Nlc3MgYW4gb3Agd2l0aA0KPiBGVUxMX0ZMVVNI L0ZJTklTSC4gV2lsbCByZXZpc2l0IGl0DQo+ID4gdW5kZXIgc3RhdGVmdWwuDQo+IFtGaW9uYV0g WWVzLCB0aGF0IGNvdWxkIGFsc28gYmUgYW4gb3B0aW9uIGZvciBzdHJlYW0uDQo+IA0KPiANCj4g PiA+ID4gRC4xLjIgUmVxdWlyZW1lbnQgZm9yIFN0YXRlbGVzcw0KPiA+ID4gPiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+IFNpbmNlIG9wZXJhdGlv biBjYW4gY29tcGxldGUgb3V0LW9mLW9yZGVyLiBUaGVyZSBzaG91bGQgYmUgb25lICh2b2lkDQo+ ID4gPiAqdXNlcikgcGVyIHJ0ZV9jb21wX29wIHRvIGVuYWJsZQ0KPiA+ID4gPiBhcHBsaWNhdGlv biB0byBtYXAgZGVxdWV1ZWQgb3AgdG8gZW5xdWV1ZWQgb3AuDQo+ID4gPiBbRmlvbmFdIEluIGNy eXB0b2RldiB0aGVyZSB3YXMgYW4gb3BhcXVlX2RhdGEgZmllbGQgaW4gdGhlIG9wIC0gaXQgd2Fz DQo+ID4gPiByZW1vdmVkIGFzIHRoZSBhcHBsaWNhdGlvbiBjYW4gc3RvcmUgYW55DQo+ID4gPiBw cml2YXRlIGRhdGEgaXQgbmVlZHMgZm9sbG93aW5nIHRoZSBvcCwgYXMgaXQgY3JlYXRlcyB0aGUg b3AgcG9vbCBhbmQNCj4gZGljdGF0ZXMNCj4gPiA+IHRoZSBzaXplLiBEbyB5b3UgdGhpbmsgd2Ug bmVlZCBhbg0KPiA+ID4gZXhwbGljaXQgKHZvaWQgKnVzZXIpIG9yIGNhbiB3ZSBmb2xsb3cgdGhl IHNhbWUgYXBwcm9hY2g/DQo+ID4gPg0KPiA+DQo+ID4gW1NoYWxseV0gaWYgcHJpdl9kYXRhIGlu IGNyeXB0b19vcF9wb29sX2NyZWF0ZSgpIGlzIHVzZXIgZGF0YSwgIHRoZW4gd2UgZG9uJ3QNCj4g bmVlZCBleHBsaWNpdCB1c2VyICouDQo+ID4gQnV0IHRoZW4gSSBwcm9wb3NlIHZhcmlhYmxlIG5h bWUgc2hvdWxkIGJlIHJlbmFtZWQgdG8gdXNlcl9kYXRhDQo+IGluZGljYXRpbmcgaXQgaXMgYW4g YXBwIGRhdGEgb3BhcXVlIHRvDQo+ID4gUE1ELg0KPiA+IEFuZCwgX19ydGVfY29tcF9vcF9nZXRf cHJpdl9kYXRhX3NpemUgKCkgc2hvdWxkIGJlIGNoYW5nZWQgdG8NCj4gX19ydGVfY29tcF9vcF9n ZXRfdXNlcl9kYXRhX3NpemUoKS4NCj4gW0Zpb25hXSBBZ3JlZWQuDQo+IA0KPiANCj4gPiA+IFtG aW9uYV0gT3V0IG9mIHRpbWUgLSBJJ2xsIGNvbnRpbnVlIGZyb20gaGVyZSBsYXRlciBpbiB0aGUg d2Vlay4NCj4gPiBbU2hhbGx5XSBTdXJlLiBMb29rIGZvcndhcmQgdG8gdGhhdC4NCj4gPg0KPiA+ IFRoYW5rcw0KPiA+IFNoYWxseQ0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+ID4gRC4yIENvbXBy ZXNzaW9uIEFQSSBTdGF0ZWZ1bCBvcGVyYXRpb24NCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPiDCoEEgU3Rh dGVmdWwgb3BlcmF0aW9uIG1lYW5zIGZvbGxvd2luZyBjb25kaXRpb25zOg0KPiA+ID4gPiAtIEFQ SSByYW4gaW50byBvdXRfb2Zfc3BhY2Ugc2l0dWF0aW9uIGR1cmluZyBwcm9jZXNzaW5nIG9mIGlu cHV0Lg0KPiBFeGFtcGxlLA0KPiA+ID4gc3RhdGVsZXNzIGNvbXByZXNzZWQgc3RyZWFtDQo+ID4g PiA+IGZlZCBmdWxseSB0byBkZWNvbXByZXNzb3IgYnV0IG91dHB1dCBidWZmZXIgaXMgbm90IGxh cmdlIGVub3VnaCB0byBob2xkDQo+ID4gPiBvdXRwdXQuDQo+ID4gPiA+IC0gQVBJIHdhaXRpbmcg Zm9yIG1vcmUgaW5wdXQgdG8gcHJvZHVjZSBvdXRwdXQuIEV4YW1wbGUsIHN0YXRlbGVzcw0KPiA+ ID4gY29tcHJlc3NlZCBzdHJlYW0gZmVkIHBhcnRpYWxseSB0bw0KPiA+ID4gPiBkZWNvbXByZXNz b3IuDQo+IFtGaW9uYV0gSSBhZ3JlZSB0aGlzIGlzIHN0YXRlZnVsIGlmIG1vcmUgaW5wdXQgaXMg dG8gZm9sbG93LiBCdXQgZG9u4oCZdCB1bmRlcnN0YW5kDQo+IHRoZQ0KPiBzdGF0ZWxlc3MgcmVm LiBoZXJlLiBJdCdzIG5vdCByZWxldmFudCB3aGV0aGVyIGNvbXByZXNzaW9uIHdhcyBkb25lDQo+ IHN0YXRlZnVsbHkNCj4gb3Igc3RhdGVsZXNzbHksIGlmIG9ubHkgcGFydCBvZiB0aGUgZGF0YSBp cyBmZWQgdG8gdGhlIGRlY29tcHJlc3NvciB0aGVuIGl0DQo+IHNob3VsZA0KPiBiZSBmZWQgdG8g YSBzdGF0ZWZ1bCBzZXNzaW9uLg0KPiANCg0KW1NoYWxseV0gQWdyZWUgdG8gd2hhdCB5b3Ugc2Fp ZC4gVGhpcyBpcyByZWdhcmRsZXNzIG9mIHN0YXRlZnVsL3N0YXRlbGVzcy4NCg0KPiANCj4gPiA+ ID4gLSBBUEkgaXMgZGVwZW5kZW50IG9uIHByZXZpb3VzIG9wZXJhdGlvbiBmb3IgZnVydGhlcg0K PiA+ID4gY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbg0KPiA+ID4gPg0KPiA+ID4gPiBJbiBjYXNl IG9mIGVpdGhlciBvbmUgb3IgYWxsIG9mIHRoZSBhYm92ZSBjb25kaXRpb25zIFBNRCBpcyByZXF1 aXJlZCB0bw0KPiA+ID4gbWFpbnRhaW4gY29udGV4dCBvZiBvcGVyYXRpb25zDQo+ID4gPiA+IGFj cm9zcyBlbnF1ZV9idXJzdCgpIGNhbGxzLCB1bnRpbCBhIHBhY2tldCB3aXRowqAgUlRFX0ZMVVNI X0ZVTEwvRklOQUwNCj4gYW5kDQo+ID4gPiBzdWZmaWNpZW50IGlucHV0L291dHB1dCBidWZmZXJz DQo+ID4gPiA+IGlzIHJlY2VpdmVkIGFuZCBwcm9jZXNzZWQuDQo+ID4gPiA+DQo+ID4gPiA+IEQu Mi4xIENvbXByZXNzaW9uIEFQSSByZXF1aXJlbWVudCBmb3IgU3RhdGVmdWwNCj4gPiA+ID4gLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tDQo+ID4gPiA+DQo+ID4gPiA+IEQuMi4xLjEgU2xpZGluZyBXaW5kb3cgU2l6ZQ0KPiA+ID4g PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gTWF4aW11bSBs ZW5ndGggb2YgU2xpZGluZyBXaW5kb3cgaW4gYnl0ZXMuIFByZXZpb3VzIGRhdGEgbG9va3VwIHdp bGwNCj4gYmUNCj4gPiA+IHBlcmZvcm1lZCB1cCB0byB0aGlzIGxlbmd0aC4gVG8NCj4gPiA+ID4g YmUgYWRkZWQgYXMgYWxnb3JpdGhtIGNhcGFiaWxpdHkgcGFyYW1ldGVyIGFuZCBzZXQgYnkgUE1E Lg0KPiBbRmlvbmFdIEFncmVlZC4gMzJrIGRlZmF1bHQuDQo+IFRvIGJlIHNldCBvbiBzZXNzaW9u IHhmb3JtIGZvciBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uPw0KDQpbU2hhbGx5 XSBZZXMgZm9yIGJvdGggY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24uDQoNCj4gSXMgdGhl cmUgYSBzdWJzZXQgb2Ygc3BlY2lmaWMgdmFsdWVzIHlvdSdkIGxpa2Ugc3VwcG9ydGVkIG9uIHRo ZSBBUEk/DQo+ICAocmF0aGVyIHRoYW4gYWxsIHRvIG1pbmltaXNlIHRlc3QgY2FzZXMpDQoNCltT aGFsbHldIEkgd291bGQgc3VnZ2VzdCB0byBzdGF5IHdpdGggY3VycmVudCBhcHByb2FjaCBvZiBw cm92aWRpbmcgbWF4LiANClRob3VnaCBpdCBtYXkgaW5jcmVhc2UgdGVzdCBlZmZvcnRzIGJ1dCB0 aGF0IHdheSBpdCB3aWxsIGJlIG1vcmUgY29uZm9ybWFudCB0byB6bGliL2RlZmxhdGUgUkZDIGFu ZCBleHRlbnNpYmxlIHRvIG1lZXQgZGlmZmVyZW50IGFwcCBuZWVkLg0KDQo+IA0KPiANCj4gPiA+ ID4NCj4gPiA+ID4gRC4yLjEuMiBTdGF0ZWZ1bCBvcGVyYXRpb24gc3RhdGUgbWFpbnRlbmFuY2UN Cj4gPiA+ID4gwqAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4gPiA+IFRoaXMgc2VjdGlvbiBzdGFydHMgd2l0aCBkZXNjcmlw dGlvbiBvZiBvdXIgdW5kZXJzdGFuZGluZyBhYm91dA0KPiA+ID4gY29tcHJlc3Npb24gQVBJIHN1 cHBvcnQgZm9yIHN0YXRlZnVsLg0KPiA+ID4gPiBEZXBlbmRpbmcgdXBvbiB1bmRlcnN0YW5kaW5n IGJ1aWxkIHVwb24gdGhlc2UgY29uY2VwdHMsIHdlIHdpbGwNCj4gaWRlbnRpZnkNCj4gPiA+IHJl cXVpcmVkIGRhdGEgc3RydWN0dXJlL3BhcmFtDQo+ID4gPiA+IHRvIG1haW50YWluIGluLXByb2dy ZXNzIG9wZXJhdGlvbiBjb250ZXh0IGJ5IFBNRC4NCj4gPiA+ID4NCj4gPiA+ID4gRm9yIHN0YXRl ZnVsIGNvbXByZXNzaW9uLCBiYXRjaCBvZiBkZXBlbmRlbnQgcGFja2V0cyBzdGFydHMgYXQgYSBw YWNrZXQNCj4gPiA+IGhhdmluZw0KPiA+ID4gPiBSVEVfTk9fRkxVU0gvUlRFX1NZTkNfRkxVU0gg Zmx1c2ggdmFsdWUgYW5kIGVuZCBhdCBwYWNrZXQgaGF2aW5nDQo+ID4gPiBSVEVfRlVMTF9GTFVT SC9GSU5BTF9GTFVTSC4NCj4gPiA+ID4gaS5lLiBhcnJheSBvZiBvcGVyYXRpb25zIHdpbGwgY2Fy cnkgc3RydWN0dXJlIGxpa2UgdGhpczoNCj4gPiA+ID4NCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tDQo+ID4gPiA+IHxvcDEubm9fZmx1c2ggfCBvcDIubm9fZmx1c2ggfCBvcDMu bm9fZmx1c2ggfCBvcDQuZnVsbF9mbHVzaHwNCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4gPiA+DQo+IFtGaW9uYV0gSSB0aGluayBpdCBuZWVkcyB0byBiZSBtb3JlIGNv bnN0cmFpbmVkIHRoYW4geW91ciBleGFtcGxlcyBiZWxvdy4NCj4gT25seSAxIG9wZXJhdGlvbiBm cm9tIGEgc3RyZWFtIGNhbiBiZSBpbiBhIGJ1cnN0LiBBcyBlYWNoIG9wZXJhdGlvbg0KPiBpbiBh IHN0YXRlZnVsIHN0cmVhbSBtdXN0IGNvbXBsZXRlLCBhcyBuZXh0IG9wZXJhdGlvbiBuZWVkcyBz dGF0ZSBhbmQNCj4gaGlzdG9yeQ0KPiBvZiBwcmV2aW91cyBvcGVyYXRpb24gdG8gYmUgY29tcGxl dGUgYmVmb3JlIGl0IGNhbiBiZSBwcm9jZXNzZWQuDQo+IEFuZCBpZiBvbmUgZmFpbGVkLCBlLmcu IGR1ZSB0byBPVVRfT0ZfU1BBQ0UsIHRoaXMgc2hvdWxkIGFmZmVjdA0KPiB0aGUgZm9sbG93aW5n IG9wZXJhdGlvbiBpbiB0aGUgc2FtZSBzdHJlYW0uDQo+IFdvcnN0IGNhc2UgdGhpcyBtZWFucyBi dXJzdHMgb2YgMS4gQnVyc3QgY2FuIGJlID4xIGlmIHRoZXJlIGFyZSBtdWx0aXBsZQ0KPiBpbmRl cGVuZGVudCBzdHJlYW1zIHdpdGggYXZhaWxhYmxlIGRhdGEgZm9yIHByb2Nlc3NpbmcuIE9yIGlm IHRoZXJlIGlzDQo+IGRhdGEgYXZhaWxhYmxlIHdoaWNoIGNhbiBiZSBzdGF0ZWxlc3NseSBwcm9j ZXNzZWQuDQo+IA0KPiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYnVmZmVycyBhdmFpbGFibGUgZnJv bSBhIHN0cmVhbSAsIHRoZW4gaW5zdGVhZCB0aGV5IGNhbg0KPiBiZSBsaW5rZWQgdG9nZXRoZXIg aW4gYW4gbWJ1ZiBjaGFpbiBzZW50IGluIGEgc2luZ2xlIG9wZXJhdGlvbi4NCj4gDQo+IFRvIGhh bmRsZSB0aGUgc2VxdWVuY2VzIGJlbG93IHdvdWxkIG1lYW4gdGhlIFBNRA0KPiB3b3VsZCBuZWVk IHRvIHN0b3JlIG9wcyBzZW5kaW5nIG9uZSBhdCBhIHRpbWUgdG8gYmUgcHJvY2Vzc2VkLg0KPiAN Cj4gQXMgdGhpcyBpcyBzaWduaWZpY2FudGx5IGRpZmZlcmVudCBmcm9tIHdoYXQgeW91IGRlc2Ny aWJlIGJlbG93LCBJJ2xsIHdhaXQgZm9yDQo+IGZ1cnRoZXIgZmVlZGJhY2sNCj4gYmVmb3JlIGNv bnRpbnVpbmcuDQoNCltTaGFsbHldIEkgY29uY3VyIHdpdGggeW91ciB0aG91Z2h0cy4gQW5kIHRo ZXNlJ3JlIGFyZSBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgZnJvbSB0aGUgY29uY2VwdCBw cmVzZW50ZWQgYmVsb3cuDQoNClllcyBhcyB5b3UgbWVudGlvbmVkLCBldmVuIGZvciBidXJzdF9z aXplPjEgUE1EIHdpbGwgaGF2ZSB0byBzZXJpYWxpemUgZWFjaCBvcCBpbnRlcm5hbGx5IGkuZS4g DQpJdCBoYXMgdG8gd2FpdCBmb3IgcHJldmlvdXMgdG8gZmluaXNoIGJlZm9yZSBwdXR0aW5nIG5l eHQgZm9yIHByb2Nlc3Npbmcgd2hpY2ggaXMgDQphcyBnb29kIGFzIGFwcGxpY2F0aW9uIG1ha2lu ZyBzZXJpYWxpc2VkIGNhbGwgcGFzc2luZyBvbmUgb3AgYXQtYS10aW1lIG9yIGlmDQpzdHJlYW0g Y29uc2lzdHMgb2YgbXVsdGlwbGUgYnVmZmVycywgbWFraW5nIHRoZWlyIHNjYXR0ZXItZ2F0aGVy IGxpc3QgYW5kIA0KdGhlbiBlbnF1ZXVlIGl0IGFzIG9uZSBvcCBhdCBhIHRpbWUgd2hpY2ggaXMg bW9yZSBlZmZpY2llbnQgYW5kIGlkZWFsIHVzYWdlLg0KSG93ZXZlciBpbiBvcmRlciB0byBhbGxv dyBleHRlbnNpYmlsaXR5LCBJIGRpZG4ndCBtZW50aW9uIGxpbWl0YXRpb24gb24gYnVyc3Rfc2l6 ZS4gDQpCZWNhdXNlIElmIFBNRCBkb2Vzbid0IHN1cHBvcnQgYnVyc3Rfc2l6ZSA+IDEgaXQgY2Fu IGFsd2F5cyByZXR1cm4gbmJfZW5xdWV1ZWQgPSAxLCBpbiB3aGljaCBjYXNlDQphcHAgY2FuIGVu cXVldWUgbmV4dCBob3dldmVyIHdpdGggY29uZGl0aW9uIGl0IHNob3VsZCB3YWl0IGZvciBwcmV2 aW91cyB0byBjb21wbGV0ZQ0KYmVmb3JlIG1ha2luZyBuZXh0IGVucXVldWUgY2FsbC4NCg0KU28s IGlmIHdlIHRha2Ugc2ltcGxlIGV4YW1wbGUgdG8gY29tcHJlc3MgMmsgb2YgZGF0YSB3aXRoIHNy YyBtYnVmIHNpemUgPSAxay4gDQpUaGVuIHdpdGggYnVyc3Rfc2l6ZT0xLCBleHBlY3RlZCBjYWxs IGZsb3cgd291bGQgYmUodGhpcyBpcyBqdXN0IG9uZSBmbG93LCBvdGhlciB2YXJpYXRpb25zIGFy ZSBhbHNvIHBvc3NpYmxlIHN1Y2hhcyBtYWtpbmcgY2hhaW4gb2YgMWsgYnVmZmVycyBhbmQgcGFz cyB3aG9sZSBkYXRhIGluIG9uZSBnbyk6DQoNCjEuIGZpbGwgMXN0IDFrIGNodW5rIG9mIGRhdGEg aW4gb3AubXNyYw0KMi5lbnF1ZXVlX3N0cmVhbSAoLi4uLCB8b3AuZmx1c2ggPSBub19mbHVzaHws IDEsIHB0cl9zdHJlYW0pOw0KMy5kZXF1ZXVlX2J1cnN0KHxvcHwsMSk7DQo0LnJlZmlsbCBuZXh0 IDFrIGNodW5rIGluIG9wLm1zcmMNCjUuZW5xdWV1ZV9zdHJlYW0oLi4uLHxvcC5mbHVzaCA9IGZ1 bGxfZmx1c2h8LCAxICwgcHRyX3N0cmVhbSk7DQo2LmRlcXVldWVfYnVyc3QofG9wfCwgMSk7DQo3 LmVuZA0KDQpTbywgSSBkb27igJl0IHNlZSBtdWNoIG9mIGEgY2hhbmdlIGluIEFQSSBjYWxsIGZs b3cgZnJvbSBoZXJlIHRvIGRlc2lnbiBwcmVzZW50ZWQgYmVsb3cgZXhjZXB0IG5iX29wcyA9IDEg aW4gZWFjaCBjYWxsLg0KSG93ZXZlciBJIGFtIGFzc3VtaW5nIHRoYXQgb3Agc3RydWN0dXJlIHdv dWxkIHN0aWxsIGJlIHNhbWUgZm9yIHN0YXRlZnVsIHByb2Nlc3NpbmcgaS5lLiBpdCB3b3VsZCBz dGFydCB3aXRoIG9wLmZsdXNoIHZhbHVlID0gTk8vU1lOQ19GTFVTSCBhbmQgZW5kIGF0IG9wIHdp dGggZmx1c2ggdmFsdWUgPSBGVUxMIEZMVVNILg0KQXJlIHdlIG9uIHNhbWUgcGFnZSBoZXJlPyAN Cg0KVGhhbmtzDQpTaGFsbHkNCg0KPiANCj4gQnV0IGluIHByaW5jaXBhbCBJIGFncmVlIHdpdGgg dGhlIGlkZWEgb2YgYSBzdHJlYW0gc3RydWN0dXJlIHRvIGhvbGQgdGhlIHN0YXRlDQo+IGRhdGEN Cj4gbmVlZGVkIGZvciBhIHN0YXRlZnVsIGZsb3cuIE9yaWdpbmFsbHkgSSdkIGFzc3VtZWQgdGhp cyBkYXRhIHdvdWxkIGJlIGhlbGQgaW4NCj4gdGhlIHNlc3Npb24NCj4gYnV0IEkgdGhpbmsgaXQn cyBiZXR0ZXIgdG8gbm90IGhhdmUgYSAxOjEgbWFwcGluZyBiZXR3ZWVuIHN0cmVhbSBhbmQgc2Vz c2lvbg0KPiBhcyB0aGlzDQo+IHdvdWxkIGxpbWl0IGEgc2Vzc2lvbiB1bm5lY2Vzc2FyaWx5LiBT byB0aGVyZSBjYW4gYmUgbWFueSBzdHJlYW1zIGluIGEgc2luZ2xlDQo+IHNlc3Npb24uDQo+IA0K PiANCj4gPiA+ID4gRm9yIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2Ugd2lsbCB1c2UgdGVybSAic3Ry ZWFtIiB0byBpZGVudGlmeSBzdWNoIHJlbGF0ZWQNCj4gc2V0DQo+ID4gPiBvZiBvcGVyYXRpb24g aW4gZm9sbG93aW5nDQo+ID4gPiA+IGRlc2NyaXB0aW9uLg0KPiA+ID4gPg0KPiA+ID4gPiBTdHJl YW0gcHJvY2Vzc2luZyBpbXBvc2UgZm9sbG93aW5nIGxpbWl0YXRpb25zIG9uIHVzYWdlIG9mDQo+ IGVucXVlX2J1cnN0KCkNCj4gPiA+IEFQSQ0KPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQWxsIGRlcGVuZGVudCBwYWNrZXRzIGluIGEgc3RyZWFtIHNob3VsZCBjYXJyeSBzYW1l IHNlc3Npb24NCj4gPiA+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIHN0cmVhbSBp cyBicm9rZW4gaW50byBtdWx0aXBsZSBlbnF1ZXVlX2J1cnN0KCkgY2FsbCwgdGhlbg0KPiBuZXh0 DQo+ID4gPiBlbnF1ZXVlX2J1cnN0KCkgY2Fubm90IGJlIGNhbGxlZA0KPiA+ID4gPiB1bnRpbCBw cmV2aW91cyBvbmUgaGFzIGZ1bGx5IHByb2Nlc3NlZC4gSS5FLg0KPiA+ID4gPg0KPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENvbnNpZGVyIGZvciBleGFtcGxlLCBhIHN0cmVh bSB3aXRoIG9wczEgLi5vcHM3LCAgVGhpcyBpcyAqbm90Kg0KPiA+ID4gYWxsb3dlZA0KPiA+ID4g Pg0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0NCj4gPiA+IC0t LS0tLS0tLS0tLS0tDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnF1 ZV9idXJzdCh8b3AxLm5vX2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLm5vX2ZsdXNoIHwNCj4g PiA+IG9wNC5ub19mbHVzaHwpDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiAtLS0tDQo+ID4gPiAtLS0tLS0tLS0tLS0tLQ0KPiA+ID4gPg0KPiA+ID4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bnF1ZV9idXJzdCh8b3A1Lm5vX2ZsdXNoIHwgb3A2Lm5vX2ZsdXNoIHwgb3A3LmZsdXNoX2ZpbmFs IHwpDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLQ0KPiA+ID4gPg0K PiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqBUaGlzICppcyogYWxsb3dlZA0KPiA+ ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0NCj4gPiA+IC0tLS0tLS0t LS0tLS0tDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5xdWVfYnVyc3Qo fG9wMS5ub19mbHVzaCB8IG9wMi5ub19mbHVzaCB8IG9wMy5ub19mbHVzaCB8DQo+ID4gPiBvcDQu bm9fZmx1c2h8KQ0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLQ0K PiA+ID4gLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4NCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRlcXVlX2J1cnN0KG9wczEgLi5vcHM0KQ0KPiA+ID4gPg0KPiA+ID4gPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlbnF1ZV9idXJzdCh8b3A1Lm5vX2ZsdXNoIHwgb3A2Lm5vX2ZsdXNoIHwgb3A3LmZs dXNoX2ZpbmFsIHwpDQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLQ0K PiA+ID4gPg0KPiA+ID4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQSBzaW5nbGUgZW5x dWVfYnVyc3QoKSBjYW4gY2Fycnkgb25seSBvbmUgc3RyZWFtLiBJLkUuIFRoaXMgaXMNCj4gKm5v dCoNCj4gPiA+IGFsbG93ZWQNCj4gPiA+ID4NCj4gPiA+ID4gwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0KPiAtLS0tLQ0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t DQo+ID4gPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVucXVlX2J1cnN0ICh8b3AxLm5v X2ZsdXNoIHwgb3AyLm5vX2ZsdXNoIHwgb3AzLmZsdXNoX2ZpbmFsIHwNCj4gPiA+IG9wNC5ub19m bHVzaCB8IG9wNS5ub19mbHVzaCB8KQ0KPiA+ID4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCj4gLS0tLQ0KPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0K PiA+ID4gPg0KPiA+ID4gPiBJZiBhIHN0cmVhbSBpcyBicm9rZW4gaW4gdG8gc2V2ZXJhbCBlbnF1 ZXVlX2J1cnN0KCkgY2FsbHMsIHRoZW4gY29tcHJlc3MNCj4gPiA+IEFQSSBuZWVkIHRvIG1haW50 YWluIG9wZXJhdGlvbmFsDQo+ID4gPiA+IHN0YXRlIGJldHdlZW4gY2FsbHMuIEZvciB0aGlzLCBj b25jZXB0IG9mIHJ0ZV9jb21wX3N0cmVhbSBpcyBlbmFibGVkIGluDQo+IHRvDQo+ID4gPiBjb21w cmVzc2lvbiBBUEkuDQo+ID4gPiA+IEhlcmXigJlyZSB0aGUgcHJvcG9zZWQgY2hhbmdlcyB0byBl eGlzdGluZyBkZXNpZ246DQo+ID4gPiA+DQo+ID4gPiA+IDEuIEFkZCBydGVfY29tcF9vcF90eXBl DQo+ID4gPiA+IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4NCj4gPiA+ ID4gZW51bSBydGVfY29tcF9vcF90eXBlIHsNCj4gPiA+ID4gUlRFX0NPTVBfT1BfU1RBVEVMRVNT LA0KPiA+ID4gPiBSVEVfQ09NUF9PUF9TVEFURUZVTA0KPiA+ID4gPiB9DQo+ID4gPiA+DQo+ID4g PiA+IDIuIEFkZCBuZXcgZGF0YSB0eXBlIHJ0ZV9jb21wX3N0cmVhbSB0byBtYWludGFpbiBzdHJl YW0gc3RhdGUNCj4gPiA+ID4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4NCj4gPiA+ID4gcnRlX2NvbXBfc3RyZWFtIGlzIGFuIG9wYXF1ZSBkYXRhIHN0cnVj dHVyZSB0byBhcHBsaWNhdGlvbiB3aGljaCBpcw0KPiA+ID4gZXhjaGFuZ2VkIGJhY2sgYW5kIGZv cnRoIGJldHdlZW4NCj4gPiA+ID4gYXBwbGljYXRpb24gYW5kIFBNRCBkdXJpbmcgc3RhdGVmdWwg Y29tcHJlc3Npb24vZGVjb21wcmVzc2lvbi4NCj4gPiA+ID4gSXQgc2hvdWxkIGJlIGFsbG9jYXRl ZCBwZXIgc3RyZWFtIEFORCBiZWZvcmUgYmVnaW5uaW5nIG9mIHN0YXRlZnVsDQo+ID4gPiBvcGVy YXRpb24uIElmIHN0cmVhbSBpcyBicm9rZW4gaW50bw0KPiA+ID4gPiBtdWx0aXBsZSBlbnF1ZXVl X2J1cnN0KCkgdGhlbiBlYWNoDQo+ID4gPiA+IHJlc3BlY3RpdmUgZW5xdWV1ZV9idXJzdCgpIG11 c3QgY2Fycnkgc2FtZSBydGVfY29tcF9zdHJlYW0NCj4gcG9pbnRlci4gSXQNCj4gPiA+IGlzIG1h bmRhdG9yeSBpbnB1dCBmb3Igc3RhdGVmdWwNCj4gPiA+ID4gb3BlcmF0aW9ucy4NCj4gPiA+ID4g cnRlX2NvbXBfc3RyZWFtIGNhbiBiZSBjbGVhcmVkIGFuZCByZXVzZWQgdmlhIGNvbXByZXNzaW9u IEFQSQ0KPiA+ID4gcnRlX2NvbXBfc3RyZWFtX2NsZWFyKCkgYW5kIGZyZWUgdmlhDQo+ID4gPiA+ IHJ0ZV9jb21wX3N0cmVhbV9mcmVlKCkuIENsZWFyL2ZyZWUgc2hvdWxkIG5vdCBiZSBjYWxsZWQg d2hlbiBpdCBpcyBpbg0KPiB1c2UuDQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgZW5hYmxlcyBzaGFy aW5nIG9mIGEgc2Vzc2lvbiBieSBtdWx0aXBsZSB0aHJlYWRzIGhhbmRsaW5nIGRpZmZlcmVudA0K PiA+ID4gc3RyZWFtcyBhcyBlYWNoIGJ1bGsgb3BzIGNhcnJ5IGl0cw0KPiA+ID4gPiBvd24gY29u dGV4dC4gVGhpcyBjYW4gYWxzbyBiZSB1c2VkIGJ5IFBNRCB0byBoYW5kbGUgT1VUX09GX1NQQUNF DQo+ID4gPiBzaXR1YXRpb24uDQo+ID4gPiA+DQo+ID4gPiA+IDMuIEFkZCBzdHJlYW0gYWxsb2Nh dGUsIGNsZWFyIGFuZCBmcmVlIEFQSQ0KPiA+ID4gPiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQo+ID4gPiA+IDMuMS4g cnRlX2NvbXBfb3Bfc3RyZWFtX2FsbG9jKHJ0ZV9tZW1wb29sICpwb29sLA0KPiBydGVfY29tcF9v cF90eXBlDQo+ID4gPiB0eXBlLCBydGVfY29tcF9zdHJlYW0NCj4gPiA+ID4gKipzdHJlYW0pOw0K PiA+ID4gPiAzLjIuIHJ0ZV9jb21wX29wX3N0cmVhbV9jbGVhcihydGVfY29tcF9zdHJlYW0gKnN0 cmVhbSk7IC8vIGluIHRoaXMNCj4gPiA+IGNhc2Ugc3RyZWFtIHdpbGwgYmUgdXNlYWJsZSBmb3Ig bmV3DQo+ID4gPiA+IHN0YXRlZnVsIGJhdGNoDQo+ID4gPiA+IDMuMy4gcnRlX2NvbXBfb3Bfc3Ry ZWFtX2ZyZWUocnRlX2NvbXBfc3RyZWFtICpzdHJlYW0pOyAvLyB0byBmcmVlDQo+ID4gPiBjb250 ZXh0DQo+ID4gPiA+DQo+ID4gPiA+IDQuIEFkZCBuZXcgQVBJIHJ0ZV9jb21wZGV2X2VucXVldWVf c3RyZWFtKCkNCj4gPiA+ID4gLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLg0KPiA+ID4gPiAgc3RhdGlj IGlubGluZSB1aW50MTZfdCBydGVfY29tcGRldl9lbnF1ZXVlX3N0cmVhbSh1aW50OF90IGRldl9p ZCwNCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQxNl90IHFwX2lkLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZV9jb21wX29wICoqb3BzLA0KPiA+ID4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDE2X3Qg bmJfb3BzLA0KPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBydGVfY29tcF9zdHJlYW0gKnN0cmVhbSk7IC8vdG8gYmUgcGFzc2VkDQo+IHdpdGgN Cj4gPiA+IGVhY2ggY2FsbA0KPiA+ID4gPg0KPiA+ID4gPiBBcHBsaWNhdGlvbiBzaG91bGQgY2Fs bCB0aGlzIEFQSSB0byBwcm9jZXNzIGRlcGVuZGVudCBzZXQgb2YgZGF0YSBPUg0KPiB3aGVuDQo+ ID4gPiBvdXRwdXQgYnVmZmVyIHNpemUgaXMgdW5rbm93bi4NCj4gPiA+ID4NCj4gPiA+ID4gcnRl X2NvbXBfb3BfcG9vbF9jcmVhdGUoKSBzaG91bGQgY3JlYXRlIG1lbXBvb2wgbGFyZ2UgZW5vdWdo IHRvDQo+ID4gPiBhY2NvbW1vZGF0ZSBvcGVyYXRpb25hbCBzdGF0ZQ0KPiA+ID4gPiAobWFpbnRh aW5lZCBieSBydGVfY29tcF9zdHJlYW0pIGJhc2VkIG9uIHJ0ZV9jb21wX29wX3R5cGUuIFNpbmNl DQo+ID4gPiBydGVfY29tcF9zdHJlYW0gd291bGQgYmUNCj4gPiA+ID4gbWFpbnRhaW5lZCBieSBQ TUQsIHRodXMgYWxsb2NhdGluZyBpdCBmcm9tIFBNRCBtYW5hZ2VkIHBvb2wgb2ZmZXJzDQo+ID4g PiBwZXJmb3JtYW5jZSBnYWlucy4NCj4gPiA+ID4NCj4gPiA+ID4gQVBJIGZsb3c6IHJ0ZV9jb21w X29wX3Bvb2xfY3JlYXRlKCkgLeKGkiBydGVfY29tcF9vcF9idWxrX2FsbG9jKCkgLS0NCj4gLT4N Cj4gPiA+IHJ0ZV9jb21wX29wX3N0cmVhbV9hbGxvYygpIOKGkg0KPiA+ID4gPiBlbnF1ZV9zdHJl YW0oLi5vcHMsIC4uLCBzdHJlYW0pDQo+ID4gPiA+DQo+ID4gPiA+IEQuMi4xLjMgSGlzdG9yeSBi dWZmZXINCj4gPiA+ID4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gPiA+ID4gV2ls bCBiZSBtYWludGFpbmVkIGJ5IFBNRCB3aXRoIGluIHJ0ZV9jb21wX3N0cmVhbQ0KPiA+ID4gPg0K PiA+ID4gPiBUaGFua3MNCj4gPiA+ID4gU2hhbGx5DQoNCg==