From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.5.77; helo=eur03-ve1-obe.outbound.protection.outlook.com; envelope-from=evan.lloyd@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50077.outbound.protection.outlook.com [40.107.5.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 3A762225B02A6 for ; Mon, 19 Mar 2018 09:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=tzxQAOLB92PzNtediQaO8l3zZ2bdXVjPyv9jtHRl8cw=; b=iyI7Zayz631Jqjvr2MkCD66DoHTGC1KB8BQoORKOsk9E3nZSyq52MJbFZGnHLd9uRxTP4a0c4DjuzrXVLpE6e38NRjaIKWHkCE7RopSBFuQBT11TufjrXcr8P/x9gJH+noXOItyfUiozAXfqcmWUWVLz8RDTyPBrjEuIw+p0+2k= Received: from HE1PR0801MB1771.eurprd08.prod.outlook.com (10.168.150.14) by HE1PR0801MB1417.eurprd08.prod.outlook.com (10.167.248.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.588.14; Mon, 19 Mar 2018 16:13:31 +0000 Received: from HE1PR0801MB1771.eurprd08.prod.outlook.com ([fe80::69cc:3ecf:9c8c:f5a3]) by HE1PR0801MB1771.eurprd08.prod.outlook.com ([fe80::69cc:3ecf:9c8c:f5a3%17]) with mapi id 15.20.0588.016; Mon, 19 Mar 2018 16:13:31 +0000 From: Evan Lloyd To: Sami Mujawar , "edk2-devel@lists.01.org" CC: Arvind Chauhan , Daniil Egranov , Thomas Abraham , "leif.lindholm@linaro.org" , Matteo Carlini , Stephanie Hughes-Fitt , nd Thread-Topic: [PATCH 1/2][platforms/dynamictables] Platform/ARM: Dynamic Tables support for Juno Thread-Index: AQHTv5YKCUqcHHUca0aIWwSvnoAb7aPXuwJA Date: Mon, 19 Mar 2018 16:13:31 +0000 Message-ID: References: <20180319152153.98292-1-sami.mujawar@arm.com> <20180319152153.98292-2-sami.mujawar@arm.com> In-Reply-To: <20180319152153.98292-2-sami.mujawar@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Evan.Lloyd@arm.com; x-originating-ip: [217.140.96.140] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR0801MB1417; 6:2MoB6jnWT++b3s34rNef7x8ydZztAgD+Ta4xnTme9LRjaIKNCyxoEpS3hx0MEloep+dATqwCToU67tGJsTeaRfkI7qzup8pw1Y902KfSfrbwqeCajJV66L6498iVvjISBD7I6TCk8gGVj21xeZWVEcvO0QbB3NsxAKLP5Nxiq4yMBm/dwhONryB+3W8Wkj1t++iLxrSpXivVCFkdmPBcEzCeY/LiMwKo6o1nX9YpZq3YJTBYSrndGftFcMtY3rmBUahxwy+4T9JrpuPEXUjVxGtBHCr2JvFPn6OJ7PZVb/B9kpQeW6A/ycf3di7amkaqFmdHpI0UYKS3ByPikpXv1ix2SoutSBfC5IxTzKQuV0CynY5P6xgW3XYD3QiZGe+Y; 5:CBxgXLwHcE2HBlqDvP2YeapizroIGYHfKiVGuHKAbn0ARnYTGOLxYklMOOv30/ulfQG+OxXVWFjW5fcNuKaWQH3RQazBMqDuWLs7AT67lvycTWxeoLC22jrclQJyQhk5zRJcQM7Qw0ZBKsKS9aFThh8BsEWZ3Ol6tsJ/xT6E3cM=; 24:rFc6O+H0TilAIqZEbztFbe04DKWTXYt/bLy4vV3jFRwgTa3PbmEO7MFlvczPMKk6P5PQ4/HBZULndPf1QDygIfIz1MQQTn2RNHzgWT2RtU0=; 7:+fYlut8jatjzQMmZKA6KtDCCjWha1XM2TP7bMPQ/MVlcwrt8gT0gFM5I+43Bgxst67gr8Kob+y7YwvgjBBBsUAz+tc9lZv/kEloY1wZC6TrlTn+EmgFSk70JgYe/Zu98WwlRLs+BuvVXgWb4T4dyQvNdkaRO4D68X20Dl2fYjLXEKQNFtssh/klPSSxO1CbAX3uN6Sp/Yib71uH1zXSRwsl4MKv4ryShGmqsrP34X2OCFSGIjqck8jLV464r59Zx x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 4290e9be-ece8-494b-4555-08d58db45ba4 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(3008032)(2017052603328)(7153060)(7193020); SRVR:HE1PR0801MB1417; x-ms-traffictypediagnostic: HE1PR0801MB1417: nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(162533806227266); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231221)(944501244)(52105095)(93006095)(93001095)(10201501046)(6055026)(6041310)(20161123558120)(20161123564045)(20161123562045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011); SRVR:HE1PR0801MB1417; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0801MB1417; x-forefront-prvs: 06167FAD59 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(979002)(376002)(396003)(39860400002)(346002)(39380400002)(366004)(199004)(189003)(37524003)(13464003)(15188155005)(16200700003)(9686003)(575784001)(6506007)(2906002)(59450400001)(72206003)(102836004)(229853002)(966005)(68736007)(53936002)(2950100002)(53946003)(110136005)(6306002)(53546011)(54906003)(86362001)(478600001)(53376002)(6246003)(6116002)(76176011)(14454004)(3846002)(2900100001)(55016002)(25786009)(4326008)(8936002)(6436002)(99286004)(2501003)(8676002)(33656002)(66066001)(5660300001)(81156014)(7736002)(97736004)(26005)(74316002)(7696005)(106356001)(3660700001)(81166006)(105586002)(316002)(3280700002)(5250100002)(16799955002)(305945005)(959014)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0801MB1417; H:HE1PR0801MB1771.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: BRKNAnjf/GBcmT8C5fjGeWdsSluUS4siX8MnZRoSsAXIFVBSQES2OTtBMNEHkdY+VQPC/Ft52o9LCZc1/b8D9Qt3tqSw/a6jU2qQ61dzrSxUki5J9iUEVSRub9EMesH1KHVpHhGVs5TX8wPzxyTWouwk6d4LmrZ6jqbYFWTMx/hi2q2w4YUk4YkI7Dy2wMC9ojLACrRXRKdksaJ9AObbxC1LJ2IS/sF88wybxsZ+6EE2MYj0oCH4LkUj37/lcJ+uksOpaZV8OuD7v21rimoC0pWeQ0UTpUGnc3Igd9C33UlaV+TMtNEdKtVSUhtxQ39xTgBOqL7laCE776r+p6UNXw== spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4290e9be-ece8-494b-4555-08d58db45ba4 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Mar 2018 16:13:31.1883 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1417 Subject: Re: [PATCH 1/2][platforms/dynamictables] Platform/ARM: Dynamic Tables support for Juno X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Mar 2018 16:07:09 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogU2FtaSBNdWphd2FyIFtt YWlsdG86c2FtaS5tdWphd2FyQGFybS5jb21dDQo+IFNlbnQ6IDE5IE1hcmNoIDIwMTggMTU6MjIN Cj4gVG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBBcnZpbmQgQ2hhdWhhbiA8QXJ2 aW5kLkNoYXVoYW5AYXJtLmNvbT47IERhbmlpbCBFZ3Jhbm92DQo+IDxEYW5paWwuRWdyYW5vdkBh cm0uY29tPjsgVGhvbWFzIEFicmFoYW0NCj4gPHRob21hcy5hYnJhaGFtQGFybS5jb20+OyBFdmFu IExsb3lkIDxFdmFuLkxsb3lkQGFybS5jb20+Ow0KPiBsZWlmLmxpbmRob2xtQGxpbmFyby5vcmc7 IE1hdHRlbyBDYXJsaW5pIDxNYXR0ZW8uQ2FybGluaUBhcm0uY29tPjsNCj4gU3RlcGhhbmllIEh1 Z2hlcy1GaXR0IDxTdGVwaGFuaWUuSHVnaGVzLUZpdHRAYXJtLmNvbT47IG5kDQo+IDxuZEBhcm0u Y29tPg0KPiBTdWJqZWN0OiBbUEFUQ0ggMS8yXVtwbGF0Zm9ybXMvZHluYW1pY3RhYmxlc10gUGxh dGZvcm0vQVJNOiBEeW5hbWljDQo+IFRhYmxlcyBzdXBwb3J0IGZvciBKdW5vDQo+IA0KPiBUaGUg ZHluYW1pYyB0YWJsZXMgZnJhbWV3b3JrIHV0aWxpemVzIHRoZSBjb25maWd1cmF0aW9uIG1hbmFn ZXINCj4gcHJvdG9jb2wgdG8gZ2V0IHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyBpbmZvcm1hdGlvbiBy ZXF1aXJlZCBmb3INCj4gYnVpbGRpbmcgdGhlIGZpcm13YXJlIHRhYmxlcy4NCj4gDQo+IFRoZSBj b25maWd1cmF0aW9uIG1hbmFnZXIgaXMgYSBwbGF0Zm9ybSBzcGVjaWZpYyBjb21wb25lbnQgdGhh dA0KPiBjb2xsYXRlcyB0aGUgcGxhdGZvcm0gaGFyZHdhcmUgaW5mb3JtYXRpb24gYW5kIGJ1aWxk cyBhbiBhYnN0cmFjdA0KPiBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIHJlcG9zaXRvcnkuIFRoZSBj b25maWd1cmF0aW9uIG1hbmFnZXIgYWxzbw0KPiBpbXBsZW1lbnRzIHRoZSBjb25maWd1cmF0aW9u IG1hbmFnZXIgcHJvdG9jb2wgd2hpY2ggcmV0dXJucyB0aGUNCj4gaGFyZHdhcmUgaW5mb3JtYXRp b24gcmVxdWVzdGVkIGJ5IHRoZSB0YWJsZSBnZW5lcmF0b3JzLg0KPiANCj4gVGhpcyBwYXRjaCBp bXBsZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIG1hbmFnZXIgc3VwcG9ydCBmb3IgdGhlDQo+IEp1 bm8gcGxhdGZvcm0uDQo+IA0KPiBUaGUgZHluYW1pYyB0YWJsZXMgZnJhbWV3b3JrIHN1cHBvcnQg aXMgY29uZmlndXJhYmxlIGFuZCBjYW4gYmUNCj4gZW5hYmxlZCB1c2luZyB0aGUgRFlOQU1JQ19U QUJMRVNfRlJBTUVXT1JLIGJ1aWxkIG9wdGlvbi4NCj4gDQo+IFdoZW4gRFlOQU1JQ19UQUJMRVNf RlJBTUVXT1JLIGlzIGRlZmluZWQsIEFDUEkgdGFibGVzIGFyZQ0KPiBnZW5lcmF0ZWQNCj4gYW5k IGluc3RhbGxlZCBieSB0aGUgZHluYW1pYyB0YWJsZSBmcmFtZXdvcmsuIFRoZXJlZm9yZSBpbnN0 YWxsYXRpb24NCj4gb2YgQUNQSSB0YWJsZXMgZnJvbSB0aGUgRmlybXdhcmUgVm9sdW1lIChGVikg aXMgZGlzYWJsZWQgYnkgdGhpcw0KPiBvcHRpb24uDQo+IA0KPiBDb250cmlidXRlZC11bmRlcjog VGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6IFNh bWkgTXVqYXdhciA8c2FtaS5tdWphd2FyQGFybS5jb20+DQpSZXZpZXdlZC1ieTogRXZhbiBMbG95 ZCA8ZXZhbi5sbG95ZEBhcm0uY29tPg0KPiAtLS0NCj4gIFBsYXRmb3JtL0FSTS9KdW5vUGtnL0Fy bUp1bm8uZHNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8DQo+IDE2ICstDQo+ICBQbGF0Zm9ybS9BUk0vSnVub1BrZy9Bcm1KdW5v LmZkZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfA0KPiAxNCArLQ0KPiANCj4gUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJh dGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXIuZHNjLmkNCj4gbmMgICAgICAgICAgICAg ICAgICAgICAgICB8ICAyOSArDQo+IA0KPiBQbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0 aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS8NCj4gQ29uZmlndXJhdGlvbk1hbmFn ZXIuYyAgICAgIHwgNTg5ICsrKysrKysrKysrKysrKysrKysrDQo+IA0KPiBQbGF0Zm9ybS9BUk0v SnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4ZS8NCj4g Q29uZmlndXJhdGlvbk1hbmFnZXIuaCAgICAgIHwgMTU2ICsrKysrKw0KPiANCj4gUGxhdGZvcm0v QVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUv DQo+IENvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlLmluZiB8ICA4NSArKysNCj4gDQo+IFBsYXRmb3Jt L0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhl Lw0KPiBQbGF0Zm9ybS5oICAgICAgICAgICAgICAgICAgfCAgNjUgKysrDQo+IA0KPiBQbGF0Zm9y bS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9E c2R0DQo+IC5hc2wgICAgICAgICAgICAgICAgICAgICAgIHwgMzA2ICsrKysrKysrKysNCj4gDQo+ IFBsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL1BsYXRmb3JtQVNMVGFi bGVzTGliL1BsYXRmDQo+IG9ybUFTTFRhYmxlc0xpYi5pbmYgICAgICAgfCAgNDQgKysNCj4gDQo+ IFBsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL1BsYXRmb3JtQVNMVGFi bGVzTGliL1NzZHRKDQo+IHVub1VzYi5hc2wgICAgICAgICAgICAgICAgfCAxMjIgKysrKw0KPiAN Cj4gUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvUGxhdGZvcm1BU0xU YWJsZXNMaWIvU3NkdA0KPiBQY2kuYXNsICAgICAgICAgICAgICAgICAgICB8IDIxOCArKysrKysr Kw0KPiANCj4gUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvUGxhdGZv cm1BU0xUYWJsZXNMaWIvU3NkdA0KPiBVYXJ0LmFzbCAgICAgICAgICAgICAgICAgICB8ICA0OCAr Kw0KPiAgUGxhdGZvcm0vQVJNL0p1bm9Qa2cvRHJpdmVycy9Bcm1KdW5vRHhlL0FybUp1bm9EeGUu Yw0KPiB8ICAgOSArLQ0KPiAgMTMgZmlsZXMgY2hhbmdlZCwgMTY5NyBpbnNlcnRpb25zKCspLCA0 IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0Fy bUp1bm8uZHNjDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQXJtSnVuby5kc2MNCj4gaW5kZXgN Cj4gOWQ3MzE3NjgzZWYzOWFiNDc0MjkyMzRiOThkOTRjMDQ5NTNiNDFjYi4uZTc1YjQ4NDgzNDVi ODNlNzNhYQ0KPiBhYWJlYTlmNWYxZGFjZWE1ODk1ZjYgMTAwNjQ0DQo+IC0tLSBhL1BsYXRmb3Jt L0FSTS9KdW5vUGtnL0FybUp1bm8uZHNjDQo+ICsrKyBiL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0Fy bUp1bm8uZHNjDQo+IEBAIC0zMyw2ICszMywxMSBAQCBbRGVmaW5lc10NCj4gICMgT24gUlRTTSwg bW9zdCBwZXJpcGhlcmFscyBhcmUgVkV4cHJlc3MgTW90aGVyYm9hcmQgcGVyaXBoZXJhbHMNCj4g ICFpbmNsdWRlIFBsYXRmb3JtL0FSTS9WRXhwcmVzc1BrZy9Bcm1WRXhwcmVzcy5kc2MuaW5jDQo+ IA0KPiArIWlmZGVmIERZTkFNSUNfVEFCTEVTX0ZSQU1FV09SSw0KPiArIWluY2x1ZGUgRHluYW1p Y1RhYmxlc1BrZy9EeW5hbWljVGFibGVzLmRzYy5pbmMNCj4gKyFpbmNsdWRlDQo+IFBsYXRmb3Jt L0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyLmRz Yy5pDQo+IG5jDQo+ICshZW5kaWYNCj4gKw0KPiAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbl0NCj4g ICAgQXJtTGlifEFybVBrZy9MaWJyYXJ5L0FybUxpYi9Bcm1CYXNlTGliLmluZg0KPiAgICBBcm1N bXVMaWJ8QXJtUGtnL0xpYnJhcnkvQXJtTW11TGliL0FybU1tdUJhc2VMaWIuaW5mDQo+IEBAIC03 MSw2ICs3NiwxNCBAQCBbTGlicmFyeUNsYXNzZXMuY29tbW9uLlVFRklfRFJJVkVSLA0KPiBMaWJy YXJ5Q2xhc3Nlcy5jb21tb24uVUVGSV9BUFBMSUNBVElPTiwgTGlicg0KPiAgW0J1aWxkT3B0aW9u c10NCj4gICAgR0NDOipfKl9BUk1fUExBVEZPUk1fRkxBR1MgPSAtbWFyY2g9YXJtdjgtYQ0KPiAN Cj4gKyFpZmRlZiBEWU5BTUlDX1RBQkxFU19GUkFNRVdPUksNCj4gKyAgKl8qXypfUExBVEZPUk1f RkxBR1MgPSAtRERZTkFNSUNfVEFCTEVTX0ZSQU1FV09SSw0KPiArIWVuZGlmDQo+ICsNCj4gKyFp ZmRlZiBESVNBQkxFX0xQSQ0KPiArICAqXypfKl9BU0xQUF9GTEFHUyA9IC1ERElTQUJMRV9MUEkN Cj4gKyFlbmRpZg0KPiArDQo+IA0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCj4gICMN Cj4gICMgUGNkIFNlY3Rpb24gLSBsaXN0IG9mIGFsbCBFREsgSUkgUENEIEVudHJpZXMgZGVmaW5l ZCBieSB0aGlzIFBsYXRmb3JtDQo+IEBAIC0yNDIsOCArMjU1LDkgQEAgW0NvbXBvbmVudHMuY29t bW9uXQ0KPiAgICAjIEFDUEkgU3VwcG9ydA0KPiAgICAjDQo+ICAgIE1kZU1vZHVsZVBrZy9Vbml2 ZXJzYWwvQWNwaS9BY3BpVGFibGVEeGUvQWNwaVRhYmxlRHhlLmluZg0KPiArIWlmbmRlZiBEWU5B TUlDX1RBQkxFU19GUkFNRVdPUksNCj4gICAgUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQWNwaVRhYmxl cy9BY3BpVGFibGVzLmluZg0KPiAtDQo+ICshZW5kaWYNCj4gICAgTWRlTW9kdWxlUGtnL1VuaXZl cnNhbC9IaWlEYXRhYmFzZUR4ZS9IaWlEYXRhYmFzZUR4ZS5pbmYNCj4gDQo+ICAgIEFybVBrZy9E cml2ZXJzL0FybUdpYy9Bcm1HaWNEeGUuaW5mDQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0v SnVub1BrZy9Bcm1KdW5vLmZkZg0KPiBiL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0FybUp1bm8uZmRm DQo+IGluZGV4DQo+IGVlOWQwZTdmNGY2ZTZhYzk5ZGVkNmExNGU4OGViMmM3ODU0ZGQ0NzMuLmUz NWE0M2U5YjY0ZDgxNDFjNWFhZQ0KPiBiZDFlNzg0NDYxNzhlYzQyNTQ1IDEwMDY0NA0KPiAtLS0g YS9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Bcm1KdW5vLmZkZg0KPiArKysgYi9QbGF0Zm9ybS9BUk0v SnVub1BrZy9Bcm1KdW5vLmZkZg0KPiBAQCAtMSw1ICsxLDUgQEANCj4gICMNCj4gLSMgIENvcHly aWdodCAoYykgMjAxMy0yMDE1LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4g KyMgIENvcHlyaWdodCAoYykgMjAxMy0yMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gICMNCj4gICMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRl cmlhbHMNCj4gICMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiBAQCAtMTE0LDcgKzEx NCwxNyBAQCBbRlYuRnZNYWluXQ0KPiAgICAjIEFDUEkgU3VwcG9ydA0KPiAgICAjDQo+ICAgIElO RiBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0FjcGkvQWNwaVRhYmxlRHhlL0FjcGlUYWJsZUR4ZS5p bmYNCj4gKyFpZm5kZWYgRFlOQU1JQ19UQUJMRVNfRlJBTUVXT1JLDQo+ICAgIElORiBSdWxlT3Zl cnJpZGU9QUNQSVRBQkxFDQo+IFBsYXRmb3JtL0FSTS9KdW5vUGtnL0FjcGlUYWJsZXMvQWNwaVRh Ymxlcy5pbmYNCj4gKyFlbHNlDQo+ICsgICMgQ29uZmlndXJhdGlvbiBNYW5hZ2VyDQo+ICsgIElO Rg0KPiBQbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0 aW9uTWFuYWdlckR4ZS8NCj4gQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUuaW5mDQo+ICsNCj4gKyAg Iw0KPiArICAjIER5bmFtaWMgVGFibGUgZmRmDQo+ICsgICMNCj4gKyAgIWluY2x1ZGUgRHluYW1p Y1RhYmxlc1BrZy9EeW5hbWljVGFibGVzLmZkZi5pbmMNCj4gKyFlbmRpZg0KPiANCj4gICAgSU5G IE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvSGlpRGF0YWJhc2VEeGUvSGlpRGF0YWJhc2VEeGUuaW5m DQo+IA0KPiBAQCAtMzY4LDggKzM3OCwxMCBAQCBbUnVsZS5Db21tb24uVUVGSV9BUFBMSUNBVElP Ti5CSU5BUlldDQo+ICAgICAgVkVSU0lPTiAgIFNUUklORz0iJChJTkZfVkVSU0lPTikiIE9wdGlv bmFsDQo+IEJVSUxEX05VTT0kKEJVSUxEX05VTUJFUikNCj4gICAgfQ0KPiANCj4gKyFpZm5kZWYg RFlOQU1JQ19UQUJMRVNfRlJBTUVXT1JLDQo+ICBbUnVsZS5Db21tb24uVVNFUl9ERUZJTkVELkFD UElUQUJMRV0NCj4gICAgRklMRSBGUkVFRk9STSA9ICQoTkFNRURfR1VJRCkgew0KPiAgICAgIFJB VyBBQ1BJICAgICAgICAgICAgICAgfC5hY3BpDQo+ICAgICAgUkFXIEFTTCAgICAgICAgICAgICAg ICB8LmFtbA0KPiAgICB9DQo+ICshZW5kaWYNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3JtL0FS TS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyLmRzDQo+ IGMuaW5jDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29u ZmlndXJhdGlvbk1hbmFnZXIuZA0KPiBzYy5pbmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDgxMTU1 NjYwM2NiZGQxNTdjDQo+IGZjZmUyYzYxOTc2YjQ2OWVhMTVlMjkNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysNCj4gYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9Db25m aWd1cmF0aW9uTWFuYWdlci5kDQo+IHNjLmluYw0KPiBAQCAtMCwwICsxLDI5IEBADQo+ICsjIyBA ZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFu eWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5k ZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3Jn L2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArIw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ ICsjIFtCdWlsZE9wdGlvbnMuY29tbW9uLkVES0lJLkRYRV9SVU5USU1FX0RSSVZFUl0NCj4gKw0K PiArW0J1aWxkT3B0aW9uc10NCj4gKw0KPiArW0xpYnJhcnlDbGFzc2VzLmNvbW1vbl0NCj4gKw0K PiArW0NvbXBvbmVudHMuY29tbW9uXQ0KPiArICAjIENvbmZpZ3VyYXRpb24gTWFuYWdlcg0KPiAr DQo+IFBsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRp b25NYW5hZ2VyRHhlLw0KPiBDb25maWd1cmF0aW9uTWFuYWdlckR4ZS5pbmYgew0KPiArICAgIDxM aWJyYXJ5Q2xhc3Nlcz4NCj4gKyAgICAjIFBsYXRmb3JtIEFTTCBUYWJsZXMNCj4gKw0KPiBQbGF0 Zm9ybUFzbFRhYmxlc0xpYnxQbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdl ci9QbGF0Zg0KPiBvcm1BU0xUYWJsZXNMaWIvUGxhdGZvcm1BU0xUYWJsZXNMaWIuaW5mDQo+ICsg IDxCdWlsZE9wdGlvbnM+DQo+ICsgICAqXypfKl9QTEFURk9STV9GTEFHUyA9IC0NCj4gSSQoQklO X0RJUikvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvUGxhdGZvcm1B U0xUYQ0KPiBibGVzTGliL1BsYXRmb3JtQVNMVGFibGVzTGliL09VVFBVVA0KPiArICB9DQo+IGRp ZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9D b25maWd1cmF0aW9uTWFuYWdlckR4DQo+IGUvQ29uZmlndXJhdGlvbk1hbmFnZXIuYw0KPiBiL1Bs YXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5h Z2VyRHgNCj4gZS9Db25maWd1cmF0aW9uTWFuYWdlci5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+IGluZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBl NjdkZmExZjQ3Y2MzMDA0YjcNCj4gNzVlYzQzZDAyZTA3NzU0Njc1ZTI2DQo+IC0tLSAvZGV2L251 bGwNCj4gKysrDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIv Q29uZmlndXJhdGlvbk1hbmFnZXJEeA0KPiBlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyLmMNCj4gQEAg LTAsMCArMSw1ODkgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBDb25maWd1cmF0aW9uIE1hbmFnZXIg RHhlDQo+ICsNCj4gKyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsNCj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21w YW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVu ZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyAg d2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcv bGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJ QlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsg IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhF Ug0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsNCj4gKyAgQHBhciBHbG9zc2FyeToNCj4gKyAg ICAtIENtIG9yIENNICAgLSBDb25maWd1cmF0aW9uIE1hbmFnZXINCj4gKyAgICAtIE9iaiBvciBP QkogLSBPYmplY3QNCj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9E ZWJ1Z1BvcnQyVGFibGUuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0lvTGliLmg+DQo+ICsjaW5j bHVkZSA8TGlicmFyeS9VZWZpQm9vdFNlcnZpY2VzVGFibGVMaWIuaD4NCj4gKyNpbmNsdWRlIDxM aWJyYXJ5L0FybUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNp bmNsdWRlIDxMaWJyYXJ5L1BjZExpYi5oPg0KPiArI2luY2x1ZGUgPFByb3RvY29sL0FjcGlUYWJs ZS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8QXJtUGxhdGZvcm0uaD4NCj4gKyNpbmNsdWRlIDxBY3Bp VGFibGVHZW5lcmF0b3IuaD4NCj4gKyNpbmNsdWRlIDxQcm90b2NvbC9Db25maWd1cmF0aW9uTWFu YWdlclByb3RvY29sLmg+DQo+ICsNCj4gKyNpbmNsdWRlICJDb25maWd1cmF0aW9uTWFuYWdlci5o Ig0KPiArI2luY2x1ZGUgIlBsYXRmb3JtLmgiDQo+ICsNCj4gKy8vIEFNTCBDb2RlIEluY2x1ZGUg ZmlsZXMgZ2VuZXJhdGVkIGJ5IGlBU0wgQ29tcGlsZXINCj4gKyNpbmNsdWRlIDxEc2R0LmhleD4N Cj4gKyNpbmNsdWRlIDxTc2R0SnVub1VzYi5oZXg+DQo+ICsjaW5jbHVkZSA8U3NkdFVhcnQuaGV4 Pg0KPiArI2luY2x1ZGUgPFNzZHRQY2kuaGV4Pg0KPiArDQo+ICsvKiogVGhlIHBsYXRmb3JtIGNv bmZpZ3VyYXRpb24gcmVwb3NpdG9yeSBpbmZvcm1hdGlvbi4NCj4gKyovDQo+ICtTVEFUSUMNCj4g K0VGSV9QTEFURk9STV9SRVBPU0lUT1JZX0lORk8gQXJtSnVub1BsYXRmb3JtUmVwb3NpdG9yeUlu Zm8gPSB7DQo+ICsgIC8vLyBDb25maWd1cmF0aW9uIE1hbmFnZXIgaW5mb3JtYXRpb24NCj4gKyAg eyBDT05GSUdVUkFUSU9OX01BTkFHRVJfUkVWSVNJT04sIENGR19NR1JfT0VNX0lEIH0sDQo+ICsN Cj4gKyAgLy8gQUNQSSBUYWJsZSBMaXN0DQo+ICsgIHsNCj4gKyAgICAvLyBGQURUIFRhYmxlDQo+ ICsgICAgew0KPiArICAgICAgRUZJX0FDUElfNl8yX0ZJWEVEX0FDUElfREVTQ1JJUFRJT05fVEFC TEVfU0lHTkFUVVJFLA0KPiArICAgICAgQ1JFQVRFX1NURF9BQ1BJX1RBQkxFX0dFTl9JRCAoRVNU RF9BQ1BJX1RBQkxFX0lEX0ZBRFQpLA0KPiArICAgICAgTlVMTA0KPiArICAgIH0sDQo+ICsgICAg Ly8gR1REVCBUYWJsZQ0KPiArICAgIHsNCj4gKyAgICAgIEVGSV9BQ1BJXzZfMl9HRU5FUklDX1RJ TUVSX0RFU0NSSVBUSU9OX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgIENSRUFURV9TVERfQUNQ SV9UQUJMRV9HRU5fSUQgKEVTVERfQUNQSV9UQUJMRV9JRF9HVERUKSwNCj4gKyAgICAgIE5VTEwN Cj4gKyAgICB9LA0KPiArICAgIC8vIE1BRFQgVGFibGUNCj4gKyAgICB7DQo+ICsgICAgICBFRklf QUNQSV82XzJfTVVMVElQTEVfQVBJQ19ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsg ICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VOX0lEIChFU1REX0FDUElfVEFCTEVfSURfTUFE VCksDQo+ICsgICAgICBOVUxMDQo+ICsgICAgfSwNCj4gKyAgICAvLyBTUENSIFRhYmxlDQo+ICsg ICAgew0KPiArDQo+IEVGSV9BQ1BJXzZfMl9TRVJJQUxfUE9SVF9DT05TT0xFX1JFRElSRUNUSU9O X1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgIENSRUFURV9TVERfQUNQSV9UQUJMRV9HRU5fSUQg KEVTVERfQUNQSV9UQUJMRV9JRF9TUENSKSwNCj4gKyAgICAgIE5VTEwNCj4gKyAgICB9LA0KPiAr ICAgIC8vIERTRFQgVGFibGUNCj4gKyAgICB7DQo+ICsNCj4gRUZJX0FDUElfNl8yX0RJRkZFUkVO VElBVEVEX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICBDUkVB VEVfU1REX0FDUElfVEFCTEVfR0VOX0lEIChFU1REX0FDUElfVEFCTEVfSURfRFNEVCksDQo+ICsg ICAgICAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKilkc2R0X0FtbENvZGUNCj4gKyAgICB9 LA0KPiArICAgIC8vIERCRzIgVGFibGUNCj4gKyAgICB7DQo+ICsgICAgICBFRklfQUNQSV82XzJf REVCVUdfUE9SVF8yX1RBQkxFX1NJR05BVFVSRSwNCj4gKyAgICAgIENSRUFURV9TVERfQUNQSV9U QUJMRV9HRU5fSUQgKEVTVERfQUNQSV9UQUJMRV9JRF9EQkcyKSwNCj4gKyAgICAgIE5VTEwNCj4g KyAgICB9LA0KPiArICAgIC8vIFNTRFQgVGFibGUgZGVzY3JpYmluZyB0aGUgSnVubyBVU0INCj4g KyAgICB7DQo+ICsgICAgICBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElP Tl9UQUJMRV9TSUdOQVRVUkUsDQo+ICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VOX0lE IChFU1REX0FDUElfVEFCTEVfSURfU1NEVCksDQo+ICsgICAgICAoRUZJX0FDUElfREVTQ1JJUFRJ T05fSEVBREVSKilzc2R0anVub3VzYl9BbWxDb2RlDQo+ICsgICAgfSwNCj4gKyAgICAvLyBTU0RU IHRhYmxlIGRlc2NyaWJpbmcgdGhlIFBMMDExIFVBUlQNCj4gKyAgICB7DQo+ICsgICAgICBFRklf QUNQSV82XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9TSUdOQVRVUkUsDQo+ ICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VOX0lEIChFU1REX0FDUElfVEFCTEVfSURf U1NEVCksDQo+ICsgICAgICAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVSKilzc2R0dWFydF9B bWxDb2RlDQo+ICsgICAgfSwNCj4gKw0KPiArICAgIC8qIFBDSSBNQ0ZHIFRhYmxlDQo+ICsgICAg ICAgUENJZSBpcyBvbmx5IGF2YWlsYWJsZSBvbiBKdW5vIFIxIGFuZCBSMi4NCj4gKyAgICAgICBB ZGQgdGhlIFBDSSB0YWJsZSBlbnRyaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHRhYmxlIHNvIHRoYXQN Cj4gKyAgICAgICB3ZSBjYW4gZWFzaWx5IGRpc2FibGUgUENJZSBmb3IgSnVubyBSMA0KPiArICAg ICovDQo+ICsgICAgew0KPiArDQo+IEVGSV9BQ1BJXzZfMl9QQ0lfRVhQUkVTU19NRU1PUllfTUFQ UEVEX0NPTkZJR1VSQVRJT05fU1BBQ0UNCj4gX0JBU0VfQUREUkVTU19ERVNDUklQVElPTl9UQUJM RV9TSUdOQVRVUkUsDQo+ICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VOX0lEIChFU1RE X0FDUElfVEFCTEVfSURfTUNGRyksDQo+ICsgICAgICBOVUxMDQo+ICsgICAgfSwNCj4gKyAgICAv LyBTU0RUIHRhYmxlIGRlc2NyaWJpbmcgdGhlIFBDSSByb290IGNvbXBsZXgNCj4gKyAgICB7DQo+ ICsgICAgICBFRklfQUNQSV82XzJfU0VDT05EQVJZX1NZU1RFTV9ERVNDUklQVElPTl9UQUJMRV9T SUdOQVRVUkUsDQo+ICsgICAgICBDUkVBVEVfU1REX0FDUElfVEFCTEVfR0VOX0lEIChFU1REX0FD UElfVEFCTEVfSURfU1NEVCksDQo+ICsgICAgICAoRUZJX0FDUElfREVTQ1JJUFRJT05fSEVBREVS Kilzc2R0cGNpX0FtbENvZGUNCj4gKyAgICB9DQo+ICsgIH0sDQo+ICsNCj4gKyAgLy8gQm9vdCBh cmNoaXRlY3R1cmUgaW5mb3JtYXRpb24NCj4gKyAgeyBFRklfQUNQSV82XzJfQVJNX1BTQ0lfQ09N UExJQU5UIH0sICAgICAgLy8gQm9vdEFyY2hGbGFncw0KPiArDQo+ICsgIC8vIFBvd2VyIG1hbmFn ZW1lbnQgcHJvZmlsZSBpbmZvcm1hdGlvbg0KPiArICB7IEVGSV9BQ1BJXzZfMl9QTV9QUk9GSUxF X01PQklMRSB9LCAgICAgICAvLyBQb3dlck1hbmFnZW1lbnQgUHJvZmlsZQ0KPiArDQo+ICsgIC8q IEdJQyBDUFUgSW50ZXJmYWNlIGluZm9ybWF0aW9uDQo+ICsgICAgIEdJQ19FTlRSWSAoQ1BVSW50 ZXJmYWNlTnVtYmVyLCBNcGlkciwgUG11SXJxLCBWR2ljSXJxLA0KPiBFbmVyZ3lFZmZpY2llbmN5 KQ0KPiArICAqLw0KPiArICB7DQo+ICsgICAgR0lDQ19FTlRSWSAoMiwgR0VUX01QSUQgKDEsIDAp LCA1MCwgMjUsIDApLA0KPiArICAgIEdJQ0NfRU5UUlkgKDMsIEdFVF9NUElEICgxLCAxKSwgNTQs IDI1LCAwKSwNCj4gKyAgICBHSUNDX0VOVFJZICg0LCBHRVRfTVBJRCAoMSwgMiksIDU4LCAyNSwg MCksDQo+ICsgICAgR0lDQ19FTlRSWSAoNSwgR0VUX01QSUQgKDEsIDMpLCA2MiwgMjUsIDApLA0K PiArDQo+ICsgICAgR0lDQ19FTlRSWSAoMCwgR0VUX01QSUQgKDAsIDApLCAzNCwgMjUsIDEpLA0K PiArICAgIEdJQ0NfRU5UUlkgKDEsIEdFVF9NUElEICgwLCAxKSwgMzgsIDI1LCAxKQ0KPiArICB9 LA0KPiArDQo+ICsgIC8vIEdJQyBEaXN0cmlidXRvciBJbmZvDQo+ICsgIHsNCj4gKyAgICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUlOVDMyICBHaWNJZA0KPiAr ICAgIEZpeGVkUGNkR2V0NjQgKFBjZEdpY0Rpc3RyaWJ1dG9yQmFzZSksICAvLyBVSU5UNjQNCj4g UGh5c2ljYWxCYXNlQWRkcmVzcw0KPiArICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvLyBVSU5UMzIgIFN5c3RlbVZlY3RvckJhc2UNCj4gKyAgICAyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVUlOVDggICBHaWNWZXJzaW9uDQo+ICsg IH0sDQo+ICsNCj4gKyAgLy8gR2VuZXJpYyBUaW1lciBJbmZvDQo+ICsgIHsNCj4gKyAgICAvLyBU aGUgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGZvciB0aGUgY291bnRlciBjb250cm9sIGZyYW1lDQo+ ICsgICAgU1lTVEVNX0NPVU5URVJfQkFTRV9BRERSRVNTLA0KPiArICAgIC8vIFRoZSBwaHlzaWNh bCBiYXNlIGFkZHJlc3MgZm9yIHRoZSBjb3VudGVyIHJlYWQgZnJhbWUNCj4gKyAgICBTWVNURU1f Q09VTlRFUl9SRUFEX0JBU0UsDQo+ICsgICAgLy8gVGhlIHNlY3VyZSBQTDEgdGltZXIgaW50ZXJy dXB0DQo+ICsgICAgRml4ZWRQY2RHZXQzMiAoUGNkQXJtQXJjaFRpbWVyU2VjSW50ck51bSksDQo+ ICsgICAgLy8gVGhlIHNlY3VyZSBQTDEgdGltZXIgZmxhZ3MNCj4gKyAgICBHVERUX0dUSU1FUl9G TEFHUywNCj4gKyAgICAvLyBUaGUgbm9uLXNlY3VyZSBQTDEgdGltZXIgaW50ZXJydXB0DQo+ICsg ICAgRml4ZWRQY2RHZXQzMiAoUGNkQXJtQXJjaFRpbWVySW50ck51bSksDQo+ICsgICAgLy8gVGhl IG5vbi1zZWN1cmUgUEwxIHRpbWVyIGZsYWdzDQo+ICsgICAgR1REVF9HVElNRVJfRkxBR1MsDQo+ ICsgICAgLy8gVGhlIHZpcnR1YWwgdGltZXIgaW50ZXJydXB0DQo+ICsgICAgRml4ZWRQY2RHZXQz MiAoUGNkQXJtQXJjaFRpbWVyVmlydEludHJOdW0pLA0KPiArICAgIC8vIFRoZSB2aXJ0dWFsIHRp bWVyIGZsYWdzDQo+ICsgICAgR1REVF9HVElNRVJfRkxBR1MsDQo+ICsgICAgLy8gVGhlIG5vbi1z ZWN1cmUgUEwyIHRpbWVyIGludGVycnVwdA0KPiArICAgIEZpeGVkUGNkR2V0MzIgKFBjZEFybUFy Y2hUaW1lckh5cEludHJOdW0pLA0KPiArICAgIC8vIFRoZSBub24tc2VjdXJlIFBMMiB0aW1lciBm bGFncw0KPiArICAgIEdURFRfR1RJTUVSX0ZMQUdTDQo+ICsgIH0sDQo+ICsNCj4gKyAgLy8gV2F0 Y2hkb2cgSW5mbw0KPiArICB7DQo+ICsgICAgLy8gVGhlIHBoeXNpY2FsIGJhc2UgYWRkcmVzcyBv ZiB0aGUgU0JTQSBXYXRjaGRvZyBjb250cm9sIGZyYW1lDQo+ICsgICAgRml4ZWRQY2RHZXQ2NCAo UGNkR2VuZXJpY1dhdGNoZG9nQ29udHJvbEJhc2UpLA0KPiArICAgIC8vIFRoZSBwaHlzaWNhbCBi YXNlIGFkZHJlc3Mgb2YgdGhlIFNCU0EgV2F0Y2hkb2cgcmVmcmVzaCBmcmFtZQ0KPiArICAgIEZp eGVkUGNkR2V0NjQgKFBjZEdlbmVyaWNXYXRjaGRvZ1JlZnJlc2hCYXNlKSwNCj4gKyAgICAvLyBU aGUgd2F0Y2hkb2cgaW50ZXJydXB0DQo+ICsgICAgRml4ZWRQY2RHZXQzMiAoUGNkR2VuZXJpY1dh dGNoZG9nRWwySW50ck51bSksDQo+ICsgICAgLy8gVGhlIHdhdGNoZG9nIGZsYWdzDQo+ICsgICAg U0JTQV9XQVRDSERPR19GTEFHUw0KPiArICB9LA0KPiArDQo+ICsgIC8vIFNQQ1IgU2VyaWFsIFBv cnQNCj4gKyAgew0KPiArICAgIEZpeGVkUGNkR2V0NjQgKFBjZFNlcmlhbFJlZ2lzdGVyQmFzZSks ICAgICAgICAgICAgLy8gVUlOVDY0ICBCYXNlQWRkcmVzcw0KPiArICAgIEZpeGVkUGNkR2V0MzIg KFBMMDExVWFydEludGVycnVwdCksICAgICAgICAgICAgICAgLy8gVUlOVDMyICBJbnRlcnJ1cHQN Cj4gKyAgICBGaXhlZFBjZEdldDY0IChQY2RVYXJ0RGVmYXVsdEJhdWRSYXRlKSwgICAgICAgICAg IC8vIFVJTlQ2NCAgQmF1ZFJhdGUNCj4gKyAgICBGaXhlZFBjZEdldDMyIChQTDAxMVVhcnRDbGtJ bkh6KSwgICAgICAgICAgICAgICAgIC8vIFVJTlQzMiAgQ2xvY2sNCj4gKyAgICBFRklfQUNQSV9E QkcyX1BPUlRfU1VCVFlQRV9TRVJJQUxfQVJNX1BMMDExX1VBUlQgIC8vIFVJTlQxNg0KPiBQb3J0 IHN1YnR5cGUNCj4gKyAgfSwNCj4gKyAgLy8gRGVidWcgU2VyaWFsIFBvcnQNCj4gKyAgew0KPiAr ICAgIEZpeGVkUGNkR2V0NjQgKFBjZFNlcmlhbERiZ1JlZ2lzdGVyQmFzZSksICAgICAgICAgLy8g VUlOVDY0ICBCYXNlQWRkcmVzcw0KPiArICAgIDM4LCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gVUlOVDMyICBJbnRlcnJ1cHQNCj4gKyAgICBGaXhlZFBj ZEdldDY0IChQY2RTZXJpYWxEYmdVYXJ0QmF1ZFJhdGUpLCAgICAgICAgIC8vIFVJTlQ2NCAgQmF1 ZFJhdGUNCj4gKyAgICBGaXhlZFBjZEdldDMyIChQY2RTZXJpYWxEYmdVYXJ0Q2xrSW5IeiksICAg ICAgICAgIC8vIFVJTlQzMiAgQ2xvY2sNCj4gKyAgICBFRklfQUNQSV9EQkcyX1BPUlRfU1VCVFlQ RV9TRVJJQUxfQVJNX1BMMDExX1VBUlQgIC8vIFVJTlQxNg0KPiBQb3J0IHN1YnR5cGUNCj4gKyAg fSwNCj4gKw0KPiArICAvLyBQQ0kgQ29uZmlndXJhdGlvbiBTcGFjZSBJbmZvDQo+ICsgIHsNCj4g KyAgICAvLyBUaGUgcGh5c2ljYWwgYmFzZSBhZGRyZXNzIGZvciB0aGUgUENJIHNlZ21lbnQNCj4g KyAgICBGaXhlZFBjZEdldDY0IChQY2RQY2lDb25maWd1cmF0aW9uU3BhY2VCYXNlQWRkcmVzcyks DQo+ICsgICAgLy8gVGhlIFBDSSBzZWdtZW50IGdyb3VwIG51bWJlcg0KPiArICAgIDAsDQo+ICsg ICAgLy8gVGhlIHN0YXJ0IGJ1cyBudW1iZXINCj4gKyAgICBGaXhlZFBjZEdldDMyIChQY2RQY2lC dXNNaW4pLA0KPiArICAgIC8vIFRoZSBlbmQgYnVzIG51bWJlcg0KPiArICAgIEZpeGVkUGNkR2V0 MzIgKFBjZFBjaUJ1c01heCkNCj4gKyAgfSwNCj4gKw0KPiArICAvLyBHSUMgTXNpIEZyYW1lIElu Zm8NCj4gKyAgew0KPiArICAgIC8vIFRoZSBHSUMgTVNJIEZyYW1lIElEDQo+ICsgICAgMCwNCj4g KyAgICAvLyBUaGUgUGh5c2ljYWwgYmFzZSBhZGRyZXNzIGZvciB0aGUgTVNJIEZyYW1lLg0KPiAr ICAgIEFSTV9KVU5PX0dJVjJNX01TSV9CQVNFLA0KPiArICAgIC8qIFRoZSBHSUMgTVNJIEZyYW1l IGZsYWdzDQo+ICsgICAgICAgYXMgZGVzY3JpYmVkIGJ5IHRoZSBHSUMgTVNJIGZyYW1lDQo+ICsg ICAgICAgc3RydWN0dXJlIGluIHRoZSBBQ1BJIFNwZWNpZmljYXRpb24uDQo+ICsgICAgKi8NCj4g KyAgICAwLA0KPiArICAgIC8vIFNQSSBDb3VudCB1c2VkIGJ5IHRoaXMgZnJhbWUuDQo+ICsgICAg MTI3LA0KPiArICAgIC8vIFNQSSBCYXNlIHVzZWQgYnkgdGhpcyBmcmFtZS4NCj4gKyAgICAyMjQN Cj4gKyAgfQ0KPiArfTsNCj4gKw0KPiArLyoqIEluaXRpYWxpemUgdGhlIHBsYXRmb3JtIGNvbmZp Z3VyYXRpb24gcmVwb3NpdG9yeS4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgVGhpcyAgICAgICAg UG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KPiArDQo+ICsg IEByZXR2YWwgRUZJX1NVQ0NFU1MgICBTdWNjZXNzDQo+ICsqLw0KPiArU1RBVElDDQo+ICtFRklf U1RBVFVTDQo+ICtFRklBUEkNCj4gK0luaXRpYWxpemVQbGF0Zm9ybVJlcG9zaXRvcnkgKA0KPiAr ICBJTiAgQ09OU1QgRUZJX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9QUk9UT0NPTCAgKiBDT05TVCBU aGlzDQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5GTyAgKiBQ bGF0Zm9ybVJlcG87DQo+ICsNCj4gKyAgUGxhdGZvcm1SZXBvID0gVGhpcy0+UGxhdFJlcG9JbmZv Ow0KPiArDQo+ICsgIEdldEp1bm9SZXZpc2lvbiAoUGxhdGZvcm1SZXBvLT5KdW5vUmV2aXNpb24p Ow0KPiArICBERUJVRyAoKERFQlVHX0lORk8sICJKdW5vIFJldiA9IDB4JXhcbiIsIFBsYXRmb3Jt UmVwby0NCj4gPkp1bm9SZXZpc2lvbikpOw0KPiArICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ICt9 DQo+ICsNCj4gKy8qKiBSZXR1cm4gYSBzdGFuZGFyZCBuYW1lc3BhY2Ugb2JqZWN0Lg0KPiArDQo+ ICsgIEBwYXJhbSBbaW5dICBUaGlzICAgICAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0aW9u IE1hbmFnZXIgUHJvdG9jb2wuDQo+ICsgIEBwYXJhbSBbaW5dICBDbU9iamVjdElkICBUaGUgQ29u ZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdCBJRC4NCj4gKyAgQHBhcmFtIFtpbl0gIFRva2VuICAg ICAgIEFuIG9wdGlvbmFsIHRva2VuIGlkZW50aWZ5aW5nIHRoZSBvYmplY3QuIElmDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnVzZWQgdGhpcyBtdXN0IGJlIENNX05VTExfVE9LRU4u DQo+ICsgIEBwYXJhbSBbb3V0XSBDbU9iamVjdCAgICBQb2ludGVyIHRvIHRoZSBDb25maWd1cmF0 aW9uIE1hbmFnZXIgT2JqZWN0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlw dG9yIGRlc2NyaWJpbmcgdGhlIHJlcXVlc3RlZCBPYmplY3QuDQo+ICsNCj4gKyAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgU3VjY2Vzcy4NCj4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgQSBwYXJhbWV0ZXIgaXMgaW52YWxpZC4NCj4gKyAgQHJldHZhbCBFRklfTk9UX0ZP VU5EICAgICAgICAgVGhlIHJlcXVpcmVkIG9iamVjdCBpbmZvcm1hdGlvbiBpcyBub3QNCj4gZm91 bmQuDQo+ICsqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRTdGFuZGFyZE5hbWVT cGFjZU9iamVjdCAoDQo+ICsgIElOICBDT05TVCBFRklfQ09ORklHVVJBVElPTl9NQU5BR0VSX1BS T1RPQ09MICAqIENPTlNUIFRoaXMsDQo+ICsgIElOICBDT05TVCBDTV9PQkpFQ1RfSUQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQo+ICsgIElOICBDT05TVCBDTV9P QkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRva2VuIE9QVElPTkFMLA0K PiArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgKiBDT05T VCBDbU9iamVjdA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAg ICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ICsgIEVGSV9QTEFURk9STV9SRVBPU0lUT1JZ X0lORk8gICogUGxhdGZvcm1SZXBvOw0KPiArDQo+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAo Q21PYmplY3QgPT0gTlVMTCkpIHsNCj4gKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVMTCk7DQo+ICsg ICAgQVNTRVJUIChDbU9iamVjdCAhPSBOVUxMKTsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURf UEFSQU1FVEVSOw0KPiArICB9DQo+ICsgIFBsYXRmb3JtUmVwbyA9IFRoaXMtPlBsYXRSZXBvSW5m bzsNCj4gKw0KPiArICBzd2l0Y2ggKEdFVF9DTV9PQkpFQ1RfSUQgKENtT2JqZWN0SWQpKSB7DQo+ ICsgICAgSEFORExFX0NNX09CSkVDVCAoRVN0ZE9iakNmZ01nckluZm8sIFBsYXRmb3JtUmVwby0+ Q21JbmZvKTsNCj4gKw0KPiArICAgIGNhc2UgRVN0ZE9iakFjcGlUYWJsZUxpc3Q6DQo+ICsgICAg ICBpZiAoUGxhdGZvcm1SZXBvLT5KdW5vUmV2aXNpb24gIT0gSlVOT19SRVZJU0lPTl9SMCkgew0K PiArICAgICAgICBDbU9iamVjdC0+U2l6ZSA9IHNpemVvZiAoUGxhdGZvcm1SZXBvLT5DbUFjcGlU YWJsZUxpc3QpOw0KPiArICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgVUlOVDMyIFRhYmxlQ291 bnQgPSBzaXplb2YgKFBsYXRmb3JtUmVwby0+Q21BY3BpVGFibGVMaXN0KSAvDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKFBsYXRmb3JtUmVwby0+Q21BY3BpVGFibGVM aXN0WzBdKTsNCj4gKyAgICAgICAgLyogVGhlIGxhc3QgMiB0YWJsZXMgaW4gdGhlIEFDUEkgdGFi bGUgbGlzdCBlbmFibGUgUENJZSBzdXBwb3J0Lg0KPiArICAgICAgICAgICBSZWR1Y2UgdGhlIENt T2JqZWN0IHNpemUgc28gdGhhdCB0aGUgUENJZSBzcGVjaWZpYyBBQ1BJDQo+ICsgICAgICAgICAg IHRhYmxlcyBhcmUgbm90IGluc3RhbGxlZCBvbiBKdW5vIFIwDQo+ICsgICAgICAgICovDQo+ICsg ICAgICAgIENtT2JqZWN0LT5TaXplID0gc2l6ZW9mIChQbGF0Zm9ybVJlcG8tPkNtQWNwaVRhYmxl TGlzdFswXSkgKg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgKFRhYmxlQ291bnQgLTIp Ow0KPiArICAgICAgfQ0KPiArICAgICAgQ21PYmplY3QtPkRhdGEgPSAoVk9JRCopJlBsYXRmb3Jt UmVwby0+Q21BY3BpVGFibGVMaXN0Ow0KPiArICAgICAgREVCVUcgKCgNCj4gKyAgICAgICAgREVC VUdfSU5GTywNCj4gKyAgICAgICAgIkVTdGRPYmpBY3BpVGFibGVMaXN0OiBQdHIgPSAweCVwLiBT aXplID0gJWRcbiIsDQo+ICsgICAgICAgIENtT2JqZWN0LT5EYXRhLA0KPiArICAgICAgICBDbU9i amVjdC0+U2l6ZQ0KPiArICAgICAgICApKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAg ZGVmYXVsdDogew0KPiArICAgICAgU3RhdHVzID0gRUZJX05PVF9GT1VORDsNCj4gKyAgICAgIERF QlVHICgoDQo+ICsgICAgICAgIERFQlVHX0VSUk9SLA0KPiArICAgICAgICAiRVJST1I6IE9iamVj dCAweCV4LiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICAgICAgQ21PYmplY3RJZCwNCj4gKyAgICAg ICAgU3RhdHVzDQo+ICsgICAgICAgICkpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiAr ICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4gKw0KPiArLyoqIFJldHVybiBh biBBUk0gbmFtZXNwYWNlIG9iamVjdC4NCj4gKw0KPiArICBAcGFyYW0gW2luXSAgVGhpcyAgICAg ICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIFByb3RvY29sLg0KPiArICBA cGFyYW0gW2luXSAgQ21PYmplY3RJZCAgVGhlIENvbmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3Qg SUQuDQo+ICsgIEBwYXJhbSBbaW5dICBUb2tlbiAgICAgICBBbiBvcHRpb25hbCB0b2tlbiBpZGVu dGlmeWluZyB0aGUgb2JqZWN0LiBJZg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW51 c2VkIHRoaXMgbXVzdCBiZSBDTV9OVUxMX1RPS0VOLg0KPiArICBAcGFyYW0gW291dF0gQ21PYmpl Y3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBNYW5hZ2VyIE9iamVjdA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRvciBkZXNjcmliaW5nIHRoZSByZXF1ZXN0 ZWQgT2JqZWN0Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nl c3MuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIEEgcGFyYW1ldGVyIGlzIGlu dmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgICAgIFRoZSByZXF1aXJlZCBv YmplY3QgaW5mb3JtYXRpb24gaXMgbm90DQo+IGZvdW5kLg0KPiArKi8NCj4gK0VGSV9TVEFUVVMN Cj4gK0VGSUFQSQ0KPiArR2V0QXJtTmFtZVNwYWNlT2JqZWN0ICgNCj4gKyAgSU4gIENPTlNUIEVG SV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1QgVGhpcywNCj4gKyAgSU4g IENPTlNUIENNX09CSkVDVF9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ21PYmpl Y3RJZCwNCj4gKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQo+ICsgIElOICBPVVQgICBDTV9PQkpfREVTQ1JJUFRP UiAgICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQo+ICsgICkNCj4gK3sNCj4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4g KyAgRUZJX1BMQVRGT1JNX1JFUE9TSVRPUllfSU5GTyAgKiBQbGF0Zm9ybVJlcG87DQo+ICsNCj4g KyAgaWYgKChUaGlzID09IE5VTEwpIHx8IChDbU9iamVjdCA9PSBOVUxMKSkgew0KPiArICAgIEFT U0VSVCAoVGhpcyAhPSBOVUxMKTsNCj4gKyAgICBBU1NFUlQgKENtT2JqZWN0ICE9IE5VTEwpOw0K PiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgIH0NCj4gKyAgUGxhdGZv cm1SZXBvID0gVGhpcy0+UGxhdFJlcG9JbmZvOw0KPiArDQo+ICsgIHN3aXRjaCAoR0VUX0NNX09C SkVDVF9JRCAoQ21PYmplY3RJZCkpIHsNCj4gKyAgICBIQU5ETEVfQ01fT0JKRUNUIChFQXJtT2Jq Qm9vdEFyY2hJbmZvLCBQbGF0Zm9ybVJlcG8tDQo+ID5Cb290QXJjaEluZm8pOw0KPiArICAgIEhB TkRMRV9DTV9PQkpFQ1QgKA0KPiArICAgICAgRUFybU9ialBvd2VyTWFuYWdlbWVudFByb2ZpbGVJ bmZvLA0KPiArICAgICAgUGxhdGZvcm1SZXBvLT5QbVByb2ZpbGVJbmZvDQo+ICsgICAgICApOw0K PiArICAgIEhBTkRMRV9DTV9PQkpFQ1QgKEVBcm1PYmpHZW5lcmljVGltZXJJbmZvLCBQbGF0Zm9y bVJlcG8tDQo+ID5HZW5lcmljVGltZXJJbmZvKTsNCj4gKyAgICBIQU5ETEVfQ01fT0JKRUNUICgN Cj4gKyAgICAgIEVBcm1PYmpQbGF0Zm9ybUdlbmVyaWNXYXRjaGRvZ0luZm8sDQo+ICsgICAgICBQ bGF0Zm9ybVJlcG8tPldhdGNoZG9nDQo+ICsgICAgICApOw0KPiArICAgIEhBTkRMRV9DTV9PQkpF Q1QgKEVBcm1PYmpHaWNDSW5mbywgUGxhdGZvcm1SZXBvLT5HaWNDSW5mbyk7DQo+ICsgICAgSEFO RExFX0NNX09CSkVDVCAoRUFybU9iakdpY0RJbmZvLCBQbGF0Zm9ybVJlcG8tPkdpY0RJbmZvKTsN Cj4gKyAgICBIQU5ETEVfQ01fT0JKRUNUICgNCj4gKyAgICAgIEVBcm1PYmpTZXJpYWxDb25zb2xl UG9ydEluZm8sDQo+ICsgICAgICBQbGF0Zm9ybVJlcG8tPlNwY3JTZXJpYWxQb3J0DQo+ICsgICAg ICApOw0KPiArICAgIEhBTkRMRV9DTV9PQkpFQ1QgKEVBcm1PYmpTZXJpYWxEZWJ1Z1BvcnRJbmZv LCBQbGF0Zm9ybVJlcG8tDQo+ID5EYmdTZXJpYWxQb3J0KTsNCj4gKyAgICBIQU5ETEVfQ01fT0JK RUNUIChFQXJtT2JqR2ljTXNpRnJhbWVJbmZvLCBQbGF0Zm9ybVJlcG8tDQo+ID5HaWNNc2lGcmFt ZUluZm8pOw0KPiArDQo+ICsgICAgY2FzZSBFQXJtT2JqUGNpQ29uZmlnU3BhY2VJbmZvOg0KPiAr ICAgICAgaWYgKFBsYXRmb3JtUmVwby0+SnVub1JldmlzaW9uICE9IEpVTk9fUkVWSVNJT05fUjAp IHsNCj4gKyAgICAgICAgQ21PYmplY3QtPlNpemUgPSBzaXplb2YgKFBsYXRmb3JtUmVwby0+UGNp Q29uZmlnSW5mbyk7DQo+ICsgICAgICAgIENtT2JqZWN0LT5EYXRhID0gKFZPSUQqKSZQbGF0Zm9y bVJlcG8tPlBjaUNvbmZpZ0luZm87DQo+ICsgICAgICAgIERFQlVHICgoDQo+ICsgICAgICAgICAg REVCVUdfSU5GTywNCj4gKyAgICAgICAgICAiRUFybU9ialBjaUNvbmZpZ1NwYWNlSW5mbzogUHRy ID0gMHglcCwgU2l6ZSA9ICVkXG4iLA0KPiArICAgICAgICAgIENtT2JqZWN0LT5EYXRhLA0KPiAr ICAgICAgICAgIENtT2JqZWN0LT5TaXplDQo+ICsgICAgICAgICAgKSk7DQo+ICsgICAgICB9DQo+ ICsgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1bHQ6IHsNCj4gKyAgICAgIFN0YXR1cyA9 IEVGSV9OT1RfRk9VTkQ7DQo+ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19JTkZP LA0KPiArICAgICAgICAiSU5GTzogT2JqZWN0IDB4JXguIFN0YXR1cyA9ICVyXG4iLA0KPiArICAg ICAgICBDbU9iamVjdElkLA0KPiArICAgICAgICBTdGF0dXMNCj4gKyAgICAgICAgKSk7DQo+ICsg ICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0vL3N3aXRjaA0KPiArDQo+ICsgIHJldHVybiBT dGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8qKiBSZXR1cm4gYW4gT0VNIG5hbWVzcGFjZSBvYmplY3Qu DQo+ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFRoaXMgICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZp Z3VyYXRpb24gTWFuYWdlciBQcm90b2NvbC4NCj4gKyAgQHBhcmFtIFtpbl0gIENtT2JqZWN0SWQg IFRoZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KPiArICBAcGFyYW0gW2luXSAg VG9rZW4gICAgICAgQW4gb3B0aW9uYWwgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4gSWYN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCB0aGlzIG11c3QgYmUgQ01fTlVM TF9UT0tFTi4NCj4gKyAgQHBhcmFtIFtvdXRdIENtT2JqZWN0ICAgIFBvaW50ZXIgdG8gdGhlIENv bmZpZ3VyYXRpb24gTWFuYWdlciBPYmplY3QNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgcmVxdWVzdGVkIE9iamVjdC4NCj4gKw0KPiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICBTdWNjZXNzLg0KPiArICBAcmV0dmFsIEVGSV9J TlZBTElEX1BBUkFNRVRFUiBBIHBhcmFtZXRlciBpcyBpbnZhbGlkLg0KPiArICBAcmV0dmFsIEVG SV9OT1RfRk9VTkQgICAgICAgICBUaGUgcmVxdWlyZWQgb2JqZWN0IGluZm9ybWF0aW9uIGlzIG5v dA0KPiBmb3VuZC4NCj4gKyovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0dldE9lbU5h bWVTcGFjZU9iamVjdCAoDQo+ICsgIElOICBDT05TVCBFRklfQ09ORklHVVJBVElPTl9NQU5BR0VS X1BST1RPQ09MICAqIENPTlNUIFRoaXMsDQo+ICsgIElOICBDT05TVCBDTV9PQkpFQ1RfSUQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENtT2JqZWN0SWQsDQo+ICsgIElOICBDT05TVCBD TV9PQkpFQ1RfVE9LRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRva2VuIE9QVElPTkFM LA0KPiArICBJTiAgT1VUICAgQ01fT0JKX0RFU0NSSVBUT1IgICAgICAgICAgICAgICAgICAgKiBD T05TVCBDbU9iamVjdA0KPiArICApDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgIFN0YXR1cyA9IEVG SV9TVUNDRVNTOw0KPiArDQo+ICsgIGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoQ21PYmplY3QgPT0g TlVMTCkpIHsNCj4gKyAgICBBU1NFUlQgKFRoaXMgIT0gTlVMTCk7DQo+ICsgICAgQVNTRVJUIChD bU9iamVjdCAhPSBOVUxMKTsNCj4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0K PiArICB9DQo+ICsNCj4gKyAgc3dpdGNoIChHRVRfQ01fT0JKRUNUX0lEIChDbU9iamVjdElkKSkg ew0KPiArICAgIGRlZmF1bHQ6IHsNCj4gKyAgICAgIFN0YXR1cyA9IEVGSV9OT1RfRk9VTkQ7DQo+ ICsgICAgICBERUJVRyAoKA0KPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICAgIkVS Uk9SOiBPYmplY3QgMHgleC4gU3RhdHVzID0gJXJcbiIsDQo+ICsgICAgICAgIENtT2JqZWN0SWQs DQo+ICsgICAgICAgIFN0YXR1cw0KPiArICAgICAgICApKTsNCj4gKyAgICAgIGJyZWFrOw0KPiAr ICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+ICsNCj4gKy8q KiBUaGUgR2V0T2JqZWN0IGZ1bmN0aW9uIGRlZmluZXMgdGhlIGludGVyZmFjZSBpbXBsZW1lbnRl ZCBieSB0aGUNCj4gKyAgICBDb25maWd1cmF0aW9uIE1hbmFnZXIgUHJvdG9jb2wgZm9yIHJldHVy bmluZyB0aGUgQ29uZmlndXJhdGlvbg0KPiArICAgIE1hbmFnZXIgT2JqZWN0cy4NCj4gKw0KPiAr ICBAcGFyYW0gW2luXSAgVGhpcyAgICAgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlvbiBN YW5hZ2VyIFByb3RvY29sLg0KPiArICBAcGFyYW0gW2luXSAgQ21PYmplY3RJZCAgVGhlIENvbmZp Z3VyYXRpb24gTWFuYWdlciBPYmplY3QgSUQuDQo+ICsgIEBwYXJhbSBbaW5dICBUb2tlbiAgICAg ICBBbiBvcHRpb25hbCB0b2tlbiBpZGVudGlmeWluZyB0aGUgb2JqZWN0LiBJZg0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW51c2VkIHRoaXMgbXVzdCBiZSBDTV9OVUxMX1RPS0VOLg0K PiArICBAcGFyYW0gW291dF0gQ21PYmplY3QgICAgUG9pbnRlciB0byB0aGUgQ29uZmlndXJhdGlv biBNYW5hZ2VyIE9iamVjdA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRv ciBkZXNjcmliaW5nIHRoZSByZXF1ZXN0ZWQgT2JqZWN0Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJ X1NVQ0NFU1MgICAgICAgICAgIFN1Y2Nlc3MuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSIEEgcGFyYW1ldGVyIGlzIGludmFsaWQuDQo+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgIFRoZSByZXF1aXJlZCBvYmplY3QgaW5mb3JtYXRpb24gaXMgbm90DQo+IGZvdW5k Lg0KPiArKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQXJtSnVub1BsYXRmb3JtR2V0 T2JqZWN0ICgNCj4gKyAgSU4gIENPTlNUIEVGSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9D T0wgICogQ09OU1QgVGhpcywNCj4gKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ21PYmplY3RJZCwNCj4gKyAgSU4gIENPTlNUIENNX09CSkVD VF9UT0tFTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQo+ICsg IElOICBPVVQgICBDTV9PQkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAqIENPTlNUIENt T2JqZWN0DQo+ICsgICkNCj4gK3sNCj4gKyAgRUZJX1NUQVRVUyAgU3RhdHVzOw0KPiArDQo+ICsg IGlmICgoVGhpcyA9PSBOVUxMKSB8fCAoQ21PYmplY3QgPT0gTlVMTCkpIHsNCj4gKyAgICBBU1NF UlQgKFRoaXMgIT0gTlVMTCk7DQo+ICsgICAgQVNTRVJUIChDbU9iamVjdCAhPSBOVUxMKTsNCj4g KyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiArICB9DQo+ICsNCj4gKyAgc3dp dGNoIChHRVRfQ01fTkFNRVNQQUNFX0lEIChDbU9iamVjdElkKSkgew0KPiArICAgIGNhc2UgRU9i ak5hbWVTcGFjZVN0YW5kYXJkOg0KPiArICAgICAgU3RhdHVzID0gR2V0U3RhbmRhcmROYW1lU3Bh Y2VPYmplY3QgKFRoaXMsIENtT2JqZWN0SWQsIFRva2VuLA0KPiBDbU9iamVjdCk7DQo+ICsgICAg ICBicmVhazsNCj4gKyAgICBjYXNlIEVPYmpOYW1lU3BhY2VBcm06DQo+ICsgICAgICBTdGF0dXMg PSBHZXRBcm1OYW1lU3BhY2VPYmplY3QgKFRoaXMsIENtT2JqZWN0SWQsIFRva2VuLA0KPiBDbU9i amVjdCk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBjYXNlIEVPYmpOYW1lU3BhY2VPZW06DQo+ ICsgICAgICBTdGF0dXMgPSBHZXRPZW1OYW1lU3BhY2VPYmplY3QgKFRoaXMsIENtT2JqZWN0SWQs IFRva2VuLA0KPiBDbU9iamVjdCk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICBkZWZhdWx0OiB7 DQo+ICsgICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgICBERUJV RyAoKA0KPiArICAgICAgICBERUJVR19FUlJPUiwNCj4gKyAgICAgICAgIkVSUk9SOiBVbmtub3du IE5hbWVzcGFjZSBPYmplY3QgPSAweCV4LiBTdGF0dXMgPSAlclxuIiwNCj4gKyAgICAgICAgQ21P YmplY3RJZCwNCj4gKyAgICAgICAgU3RhdHVzDQo+ICsgICAgICAgICkpOw0KPiArICAgICAgYnJl YWs7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gK30NCj4g Kw0KPiArLyoqIFRoZSBTZXRPYmplY3QgZnVuY3Rpb24gZGVmaW5lcyB0aGUgaW50ZXJmYWNlIGlt cGxlbWVudGVkIGJ5IHRoZQ0KPiArICAgIENvbmZpZ3VyYXRpb24gTWFuYWdlciBQcm90b2NvbCBm b3IgdXBkYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24NCj4gKyAgICBNYW5hZ2VyIE9iamVjdHMuDQo+ ICsNCj4gKyAgQHBhcmFtIFtpbl0gIFRoaXMgICAgICAgIFBvaW50ZXIgdG8gdGhlIENvbmZpZ3Vy YXRpb24gTWFuYWdlciBQcm90b2NvbC4NCj4gKyAgQHBhcmFtIFtpbl0gIENtT2JqZWN0SWQgIFRo ZSBDb25maWd1cmF0aW9uIE1hbmFnZXIgT2JqZWN0IElELg0KPiArICBAcGFyYW0gW2luXSAgVG9r ZW4gICAgICAgQW4gb3B0aW9uYWwgdG9rZW4gaWRlbnRpZnlpbmcgdGhlIG9iamVjdC4gSWYNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVudXNlZCB0aGlzIG11c3QgYmUgQ01fTlVMTF9U T0tFTi4NCj4gKyAgQHBhcmFtIFtvdXRdIENtT2JqZWN0ICAgIFBvaW50ZXIgdG8gdGhlIENvbmZp Z3VyYXRpb24gTWFuYWdlciBPYmplY3QNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl c2NyaXB0b3IgZGVzY3JpYmluZyB0aGUgT2JqZWN0Lg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1VO U1VQUE9SVEVEICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkLg0KPiArKi8NCj4gK0VG SV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArQXJtSnVub1BsYXRmb3JtU2V0T2JqZWN0ICgNCj4gKyAg SU4gIENPTlNUIEVGSV9DT05GSUdVUkFUSU9OX01BTkFHRVJfUFJPVE9DT0wgICogQ09OU1QgVGhp cywNCj4gKyAgSU4gIENPTlNUIENNX09CSkVDVF9JRCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ21PYmplY3RJZCwNCj4gKyAgSU4gIENPTlNUIENNX09CSkVDVF9UT0tFTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgVG9rZW4gT1BUSU9OQUwsDQo+ICsgIElOICAgICAgICBDTV9P QkpfREVTQ1JJUFRPUiAgICAgICAgICAgICAgICAgICAqIENPTlNUIENtT2JqZWN0DQo+ICsgICkN Cj4gK3sNCj4gKyAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gK30NCj4gKw0KPiArLyoqIEEg c3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbWFuYWdlciBwcm90b2NvbCBp bnRlcmZhY2UuDQo+ICsqLw0KPiArU1RBVElDDQo+ICtDT05TVA0KPiArRUZJX0NPTkZJR1VSQVRJ T05fTUFOQUdFUl9QUk9UT0NPTA0KPiBBcm1KdW5vUGxhdGZvcm1Db25maWdNYW5hZ2VyUHJvdG9j b2wgPSB7DQo+ICsgIENSRUFURV9SRVZJU0lPTiAoMSwgMCksDQo+ICsgIEFybUp1bm9QbGF0Zm9y bUdldE9iamVjdCwNCj4gKyAgQXJtSnVub1BsYXRmb3JtU2V0T2JqZWN0LA0KPiArICAmQXJtSnVu b1BsYXRmb3JtUmVwb3NpdG9yeUluZm8NCj4gK307DQo+ICsNCj4gKy8qKg0KPiArICBFbnRyeXBv aW50IG9mIENvbmZpZ3VyYXRpb24gTWFuYWdlciBEeGUuDQo+ICsNCj4gKyAgQHBhcmFtICBJbWFn ZUhhbmRsZQ0KPiArICBAcGFyYW0gIFN5c3RlbVRhYmxlDQo+ICsNCj4gKyAgQHJldHVybiBFRklf U1VDQ0VTUw0KPiArICBAcmV0dXJuIEVGSV9MT0FEX0VSUk9SDQo+ICsgIEByZXR1cm4gRUZJX09V VF9PRl9SRVNPVVJDRVMNCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4g K0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlSW5pdGlhbGl6ZSAoDQo+ICsgIElOIEVGSV9IQU5ETEUg ICAgICAgICAgSW1hZ2VIYW5kbGUsDQo+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICogU3lzdGVt VGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICBTdGF0dXM7DQo+ICsNCj4gKyAg U3RhdHVzID0gZ0JTLT5JbnN0YWxsUHJvdG9jb2xJbnRlcmZhY2UgKA0KPiArICAgICAgICAgICAg ICAgICAgJkltYWdlSGFuZGxlLA0KPiArICAgICAgICAgICAgICAgICAgJmdFZmlDb25maWd1cmF0 aW9uTWFuYWdlclByb3RvY29sR3VpZCwNCj4gKyAgICAgICAgICAgICAgICAgIEVGSV9OQVRJVkVf SU5URVJGQUNFLA0KPiArICAgICAgICAgICAgICAgICAgKFZPSUQqKSZBcm1KdW5vUGxhdGZvcm1D b25maWdNYW5hZ2VyUHJvdG9jb2wNCj4gKyAgICAgICAgICAgICAgICAgICk7DQo+ICsgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gKyAgICBERUJVRyAoKA0KPiArICAgICAgREVCVUdfRVJS T1IsDQo+ICsgICAgICAiRVJST1I6IEZhaWxlZCB0byBnZXQgSW5zdGFsbCBDb25maWd1cmF0aW9u IE1hbmFnZXIgUHJvdG9jb2wuIiBcDQo+ICsgICAgICAiIFN0YXR1cyA9ICVyXG4iLA0KPiArICAg ICAgU3RhdHVzDQo+ICsgICAgICApKTsNCj4gKyAgICBnb3RvIGVycm9yX2hhbmRsZXI7DQo+ICsg IH0NCj4gKw0KPiArICBTdGF0dXMgPSBJbml0aWFsaXplUGxhdGZvcm1SZXBvc2l0b3J5ICgNCj4g KyAgICAmQXJtSnVub1BsYXRmb3JtQ29uZmlnTWFuYWdlclByb3RvY29sDQo+ICsgICAgKTsNCj4g KyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgIERFQlVHICgoDQo+ICsgICAgICBE RUJVR19FUlJPUiwNCj4gKyAgICAgICJFUlJPUjogRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIFBs YXRmb3JtIENvbmZpZ3VyYXRpb24gUmVwb3NpdG9yeS4iIFwNCj4gKyAgICAgICIgU3RhdHVzID0g JXJcbiIsDQo+ICsgICAgICBTdGF0dXMNCj4gKyAgICAgICkpOw0KPiArICB9DQo+ICsNCj4gK2Vy cm9yX2hhbmRsZXI6DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4g YS9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1cmF0aW9u TWFuYWdlckR4DQo+IGUvQ29uZmlndXJhdGlvbk1hbmFnZXIuaA0KPiBiL1BsYXRmb3JtL0FSTS9K dW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHgNCj4gZS9D b25maWd1cmF0aW9uTWFuYWdlci5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4DQo+ IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzOGI3MDFlNDMwMzg3 N2YyMA0KPiA5NWRhZDBjNzZjNmNjZjZkMjEwMWQ4DQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+ IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlv bk1hbmFnZXJEeA0KPiBlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyLmgNCj4gQEAgLTAsMCArMSwxNTYg QEANCj4gKy8qKiBAZmlsZQ0KPiArDQo+ICsgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEFS TSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArDQo+ICsgIFRoaXMgcHJvZ3JhbSBh bmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRl IGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJTRCBM aWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1 bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDovL29w ZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQUk9H UkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiDQo+ IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsgIEBwYXIgR2xv c3Nhcnk6DQo+ICsgICAgLSBDbSBvciBDTSAgIC0gQ29uZmlndXJhdGlvbiBNYW5hZ2VyDQo+ICsg ICAgLSBPYmogb3IgT0JKIC0gT2JqZWN0DQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBDT05GSUdV UkFUSU9OX01BTkFHRVJfSF9fDQo+ICsjZGVmaW5lIENPTkZJR1VSQVRJT05fTUFOQUdFUl9IX18N Cj4gKw0KPiArLyoqIFRoZSBjb25maWd1cmF0aW9uIG1hbmFnZXIgdmVyc2lvbg0KPiArKi8NCj4g KyNkZWZpbmUgQ09ORklHVVJBVElPTl9NQU5BR0VSX1JFVklTSU9OIENSRUFURV9SRVZJU0lPTiAo MSwgMCkNCj4gKw0KPiArLyoqIFRoZSBPRU0gSUQNCj4gKyovDQo+ICsjZGVmaW5lIENGR19NR1Jf T0VNX0lEICAgIHsgJ0EnLCAnUicsICdNJywgJ0wnLCAnVCcsICdEJyB9DQo+ICsNCj4gKy8qKiBB IGhlbHBlciBtYWNybyBmb3IgcG9wdWxhdGluZyB0aGUgR0lDIENQVSBpbmZvcm1hdGlvbg0KPiAr Ki8NCj4gKyNkZWZpbmUgR0lDQ19FTlRSWSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgQ1BVSW50ZXJmYWNlTnVtYmVy LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg ICAgIE1waWRyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgICAgICBQbXVJcnEsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgVkdpY0lycSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgICAgICAgIEVuZXJneUVmZmljaWVuY3kgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICApIHsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgQ1BVSW50 ZXJmYWNlTnVtYmVyLCAgICAgICAvKiBVSU5UMzIgIENQVUludGVyZmFjZU51bWJlciAgICAgICAg ICAgKi8gXA0KPiArICAgIENQVUludGVyZmFjZU51bWJlciwgICAgICAgLyogVUlOVDMyICBBY3Bp UHJvY2Vzc29yVWlkICAgICAgICAgICAgICovIFwNCj4gKyAgICBFRklfQUNQSV82XzJfR0lDX0VO QUJMRUQsIC8qIFVJTlQzMiAgRmxhZ3MgICAgICAgICAgICAgICAgICAgICAgICAqLyBcDQo+ICsg ICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UMzIgIFBhcmtpbmdQcm90b2NvbFZl cnNpb24gICAgICAgKi8gXA0KPiArICAgIFBtdUlycSwgICAgICAgICAgICAgICAgICAgLyogVUlO VDMyICBQZXJmb3JtYW5jZUludGVycnVwdEdzaXYgICAgICovIFwNCj4gKyAgICAwLCAgICAgICAg ICAgICAgICAgICAgICAgIC8qIFVJTlQ2NCAgUGFya2VkQWRkcmVzcyAgICAgICAgICAgICAgICAq LyBcDQo+ICsgICAgRml4ZWRQY2RHZXQ2NCAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgUGNkR2ljSW50ZXJydXB0SW50ZXJm YWNlQmFzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAg ICksICAgICAgICAgICAgICAgICAgICAgIC8qIFVJTlQ2NCAgUGh5c2ljYWxCYXNlQWRkcmVzcyAg ICAgICAgICAqLyBcDQo+ICsgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAvKiBVSU5UNjQg IEdJQ1YgICAgICAgICAgICAgICAgICAgICAgICAgKi8gXA0KPiArICAgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgLyogVUlOVDY0ICBHSUNIICAgICAgICAgICAgICAgICAgICAgICAgICovIFwN Cj4gKyAgICBWR2ljSXJxLCAgICAgICAgICAgICAgICAgIC8qIFVJTlQzMiAgVkdJQ01haW50ZW5h bmNlSW50ZXJydXB0ICAgICAqLyBcDQo+ICsgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAv KiBVSU5UNjQgIEdJQ1JCYXNlQWRkcmVzcyAgICAgICAgICAgICAgKi8gXA0KPiArICAgIE1waWRy LCAgICAgICAgICAgICAgICAgICAgLyogVUlOVDY0ICBNUElEUiAgICAgICAgICAgICAgICAgICAg ICAgICovIFwNCj4gKyAgICBFbmVyZ3lFZmZpY2llbmN5ICAgICAgICAgIC8qIFVJTlQ4ICAgUHJv Y2Vzc29yUG93ZXJFZmZpY2llbmN5Q2xhc3MqLyBcDQo+ICsgICAgfQ0KPiArDQo+ICsvKiogQSBo ZWxwZXIgbWFjcm8gZm9yIHJldHVybmluZyBjb25maWd1cmF0aW9uIG1hbmFnZXIgb2JqZWN0cw0K PiArKi8NCj4gKyNkZWZpbmUgSEFORExFX0NNX09CSkVDVChDbU9iamVjdElkLCBPYmplY3QpICAg XA0KPiArICBjYXNlIENtT2JqZWN0SWQ6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgQ21PYmplY3QtPlNpemUgPSBzaXplb2YgKE9iamVjdCk7ICAgICAgICAgIFwNCj4gKyAg ICBDbU9iamVjdC0+RGF0YSA9IChWT0lEKikmT2JqZWN0OyAgICAgICAgICAgXA0KPiArICAgIERF QlVHICgoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBERUJV R19JTkZPLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICNDbU9iamVj dElkICI6IFB0ciA9IDB4JXAsIFNpemUgPSAlZFxuIiwgXA0KPiArICAgICAgQ21PYmplY3QtPkRh dGEsICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICBDbU9iamVjdC0+U2l6ZSAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICkpOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgIH0NCj4gKw0KPiArLyoqIEEgaGVscGVyIG1hY3JvIGZv ciByZXR1cm5pbmcgY29uZmlndXJhdGlvbiBtYW5hZ2VyIG9iamVjdHMNCj4gKyAgICByZWZlcmVu Y2VkIGJ5IHRva2VuDQo+ICsqLw0KPiArI2RlZmluZSBIQU5ETEVfQ01fT0JKRUNUX1JFRl9CWV9U T0tFTiggICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICBDbU9iamVjdElk LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAg ICAgT2JqZWN0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICAgICAgICAgIFRva2VuLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICBIYW5kbGVyUHJvYyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgICAgKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBjYXNlIENtT2Jq ZWN0SWQ6IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgICBpZiAoVG9rZW4gPT0gQ01fTlVMTF9UT0tFTikgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgICAgICBDbU9iamVjdC0+U2l6ZSA9IHNpemVvZiAoT2JqZWN0KTsgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgQ21PYmplY3QtPkRhdGEgPSAoVk9JRCop Jk9iamVjdDsgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIERFQlVHICgoICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg ICAgIERFQlVHX0lORk8sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICAgICAgICAjQ21PYmplY3RJZCAiOiBQdHIgPSAweCVwLCBTaXplID0gJWRcbiIs ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgQ21PYmplY3QtPkRhdGEsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgIENtT2JqZWN0LT5TaXpl ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAp KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgICBTdGF0dXMgPSBIYW5kbGVyUHJvYyAoVGhpcywgQ21PYmpl Y3RJZCwgVG9rZW4sIENtT2JqZWN0KTsgXA0KPiArICAgICAgREVCVUcgKCggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgREVCVUdf SU5GTywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgICAgICNDbU9iamVjdElkICI6IFRva2VuID0gMHglcCwgUHRyID0gMHglcCwgU2l6ZSA9ICVk XG4iLCAgXA0KPiArICAgICAgICAoVk9JRCopVG9rZW4sICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgQ21PYmplY3QtPkRhdGEsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgICAgIENtT2JqZWN0LT5T aXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg ICApKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICB9DQo+ICsNCj4gKy8qKiBUaGUgbnVt YmVyIG9mIENQVXMNCj4gKyovDQo+ICsjZGVmaW5lIFBMQVRfQ1BVX0NPVU5UICAgICAgICAgIDYN Cj4gKw0KPiArLyoqIFRoZSBudW1iZXIgb2YgQUNQSSB0YWJsZXMgdG8gaW5zdGFsbA0KPiArKi8N Cj4gKyNkZWZpbmUgUExBVF9BQ1BJX1RBQkxFX0NPVU5UICAgMTANCj4gKw0KPiArLyoqIEEgc3Ry dWN0dXJlIGRlc2NyaWJpbmcgdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24NCj4gKyAgICBtYW5h Z2VyIHJlcG9zaXRvcnkgaW5mb3JtYXRpb24NCj4gKyovDQo+ICt0eXBlZGVmIHN0cnVjdCBQbGF0 Zm9ybVJlcG9zaXRvcnlJbmZvIHsNCj4gKyAgLy8vIENvbmZpZ3VyYXRpb24gTWFuYWdlciBJbmZv cm1hdGlvbg0KPiArICBDTV9TVERfT0JKX0NPTkZJR1VSQVRJT05fTUFOQUdFUl9JTkZPIENtSW5m bzsNCj4gKw0KPiArICAvLy8gTGlzdCBvZiBBQ1BJIHRhYmxlcw0KPiArICBDTV9TVERfT0JKX0FD UElfVEFCTEVfSU5GTw0KPiBDbUFjcGlUYWJsZUxpc3RbUExBVF9BQ1BJX1RBQkxFX0NPVU5UXTsN Cj4gKw0KPiArICAvLy8gQm9vdCBhcmNoaXRlY3R1cmUgaW5mb3JtYXRpb24NCj4gKyAgQ01fQVJN X0JPT1RfQVJDSF9JTkZPICAgICAgICAgICAgICAgICBCb290QXJjaEluZm87DQo+ICsNCj4gKyAg Ly8vIFBvd2VyIG1hbmFnZW1lbnQgcHJvZmlsZSBpbmZvcm1hdGlvbg0KPiArICBDTV9BUk1fUE9X RVJfTUFOQUdFTUVOVF9QUk9GSUxFX0lORk8gIFBtUHJvZmlsZUluZm87DQo+ICsNCj4gKyAgLy8v IEdJQyBDUFUgaW50ZXJmYWNlIGluZm9ybWF0aW9uDQo+ICsgIENNX0FSTV9HSUNDX0lORk8gICAg ICAgICAgICAgICAgICAgICAgR2ljQ0luZm9bUExBVF9DUFVfQ09VTlRdOw0KPiArDQo+ICsgIC8v LyBHSUMgZGlzdHJpYnV0b3IgaW5mb3JtYXRpb24NCj4gKyAgQ01fQVJNX0dJQ0RfSU5GTyAgICAg ICAgICAgICAgICAgICAgICBHaWNESW5mbzsNCj4gKw0KPiArICAvLy8gR2VuZXJpYyB0aW1lciBp bmZvcm1hdGlvbg0KPiArICBDTV9BUk1fR0VORVJJQ19USU1FUl9JTkZPICAgICAgICAgICAgIEdl bmVyaWNUaW1lckluZm87DQo+ICsNCj4gKyAgLy8vIFdhdGNoZG9nIGluZm9ybWF0aW9uDQo+ICsg IENNX0FSTV9HRU5FUklDX1dBVENIRE9HX0lORk8gICAgICAgICAgV2F0Y2hkb2c7DQo+ICsNCj4g KyAgLyoqIFNlcmlhbCBwb3J0IGluZm9ybWF0aW9uIGZvciB0aGUNCj4gKyAgICAgIHNlcmlhbCBw b3J0IGNvbnNvbGUgcmVkaXJlY3Rpb24gcG9ydA0KPiArICAqLw0KPiArICBDTV9BUk1fU0VSSUFM X1BPUlRfSU5GTyAgICAgICAgICAgICAgIFNwY3JTZXJpYWxQb3J0Ow0KPiArDQo+ICsgIC8vLyBT ZXJpYWwgcG9ydCBpbmZvcm1hdGlvbiBmb3IgdGhlIERCRzIgVUFSVCBwb3J0DQo+ICsgIENNX0FS TV9TRVJJQUxfUE9SVF9JTkZPICAgICAgICAgICAgICAgRGJnU2VyaWFsUG9ydDsNCj4gKw0KPiAr ICAvLy8gUENJIGNvbmZpZ3VyYXRpb24gc3BhY2UgaW5mb3JtYXRpb24NCj4gKyAgQ01fQVJNX1BD SV9DT05GSUdfU1BBQ0VfSU5GTyAgICAgICAgICBQY2lDb25maWdJbmZvOw0KPiArDQo+ICsgIC8v LyBHSUMgTVNJIEZyYW1lIGluZm9ybWF0aW9uDQo+ICsgIENNX0FSTV9HSUNfTVNJX0ZSQU1FX0lO Rk8gICAgICAgICAgICAgR2ljTXNpRnJhbWVJbmZvOw0KPiArDQo+ICsgIC8vLyBKdW5vIEJvYXJk IFJldmlzaW9uDQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnVu b1JldmlzaW9uOw0KPiArfSBFRklfUExBVEZPUk1fUkVQT1NJVE9SWV9JTkZPOw0KPiArDQo+ICsj ZW5kaWYgLy8gQ09ORklHVVJBVElPTl9NQU5BR0VSX0hfXw0KPiBkaWZmIC0tZ2l0DQo+IGEvUGxh dGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvQ29uZmlndXJhdGlvbk1hbmFn ZXJEeA0KPiBlL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlLmluZg0KPiBiL1BsYXRmb3JtL0FSTS9K dW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHgNCj4gZS9D b25maWd1cmF0aW9uTWFuYWdlckR4ZS5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFiZDZkZTlh MmZiOWZiZTU5Mg0KPiBkOTFlZTc3YzYxMDc1ODBhM2ZiNWENCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysNCj4gYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9Db25maWd1 cmF0aW9uTWFuYWdlckR4DQo+IGUvQ29uZmlndXJhdGlvbk1hbmFnZXJEeGUuaW5mDQo+IEBAIC0w LDAgKzEsODUgQEANCj4gKyMjIEBmaWxlDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTcg LSAyMDE4LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gKyMNCj4gKyMgIFRo aXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyMgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArIyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiAr Iw0KPiArIyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsjICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQ UkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0K PiArIyMNCj4gKw0KPiArW0RlZmluZXNdDQo+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAg ICAgICA9IDB4MDAwMTAwMTkNCj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0g Q29uZmlndXJhdGlvbk1hbmFnZXJEeGUNCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gQTk3RjcwQUMtM0JCNC00NTk2LUI0RDItOUY5NDhFQzEyRDE3DQo+ICsgIE1PRFVMRV9U WVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9EUklWRVINCj4gKyAgVkVSU0lPTl9TVFJJTkcg ICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIEVOVFJZX1BPSU5UICAgICAgICAgICAgICAgICAg ICA9IENvbmZpZ3VyYXRpb25NYW5hZ2VyRHhlSW5pdGlhbGl6ZQ0KPiArDQo+ICsjDQo+ICsjIFRo ZSBmb2xsb3dpbmcgaW5mb3JtYXRpb24gaXMgZm9yIHJlZmVyZW5jZSBvbmx5IGFuZCBub3QgcmVx dWlyZWQgYnkgdGhlDQo+IGJ1aWxkIHRvb2xzLg0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNU VVJFUyAgICAgICAgICAgPSBBUk0gQUFSQ0g2NA0KPiArIw0KPiArDQo+ICtbU291cmNlc10NCj4g KyAgQ29uZmlndXJhdGlvbk1hbmFnZXIuYw0KPiArDQo+ICtbUGFja2FnZXNdDQo+ICsgIEFybVBr Zy9Bcm1Qa2cuZGVjDQo+ICsgIEFybVBsYXRmb3JtUGtnL0FybVBsYXRmb3JtUGtnLmRlYw0KPiAr ICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0K PiArICBQbGF0Zm9ybS9BUk0vSnVub1BrZy9Bcm1KdW5vLmRlYw0KPiArICBEeW5hbWljVGFibGVz UGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ICsNCj4gK1tMaWJyYXJ5Q2xhc3Nlc10NCj4gKyAg QXJtUGxhdGZvcm1MaWINCj4gKyAgUGxhdGZvcm1Bc2xUYWJsZXNMaWINCj4gKyAgUHJpbnRMaWIN Cj4gKyAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxlTGliDQo+ICsgIFVlZmlEcml2ZXJFbnRyeVBvaW50 DQo+ICsgIFVlZmlSdW50aW1lU2VydmljZXNUYWJsZUxpYg0KPiArDQo+ICtbUHJvdG9jb2xzXQ0K PiArICBnRWZpQ29uZmlndXJhdGlvbk1hbmFnZXJQcm90b2NvbEd1aWQNCj4gKw0KPiArW0ZpeGVk UGNkXQ0KPiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJjaFRpbWVyU2VjSW50ck51bQ0K PiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJjaFRpbWVySW50ck51bQ0KPiArICBnQXJt VG9rZW5TcGFjZUd1aWQuUGNkQXJtQXJjaFRpbWVyVmlydEludHJOdW0NCj4gKyAgZ0FybVRva2Vu U3BhY2VHdWlkLlBjZEFybUFyY2hUaW1lckh5cEludHJOdW0NCj4gKw0KPiArICBnQXJtVG9rZW5T cGFjZUd1aWQuUGNkR2ljRGlzdHJpYnV0b3JCYXNlDQo+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5Q Y2RHaWNJbnRlcnJ1cHRJbnRlcmZhY2VCYXNlDQo+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RH aWNSZWRpc3RyaWJ1dG9yc0Jhc2UNCj4gKw0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFj ZUd1aWQuUGNkU2VyaWFsUmVnaXN0ZXJCYXNlDQo+ICsgIGdFZmlNZGVQa2dUb2tlblNwYWNlR3Vp ZC5QY2RVYXJ0RGVmYXVsdEJhdWRSYXRlDQo+ICsgIGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlk LlBMMDExVWFydENsa0luSHoNCj4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUEwwMTFV YXJ0SW50ZXJydXB0DQo+ICsNCj4gKyAgIyMgUEwwMTEgU2VyaWFsIERlYnVnIFVBUlQNCj4gKyAg Z0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1aWQuUGNkU2VyaWFsRGJnUmVnaXN0ZXJCYXNlDQo+ICsg IGdBcm1QbGF0Zm9ybVRva2VuU3BhY2VHdWlkLlBjZFNlcmlhbERiZ1VhcnRCYXVkUmF0ZQ0KPiAr ICBnQXJtUGxhdGZvcm1Ub2tlblNwYWNlR3VpZC5QY2RTZXJpYWxEYmdVYXJ0Q2xrSW5Ieg0KPiAr DQo+ICsgICMgU0JTQSBHZW5lcmljIFdhdGNoZG9nDQo+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5Q Y2RHZW5lcmljV2F0Y2hkb2dDb250cm9sQmFzZQ0KPiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNk R2VuZXJpY1dhdGNoZG9nUmVmcmVzaEJhc2UNCj4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEdl bmVyaWNXYXRjaGRvZ0VsMkludHJOdW0NCj4gKw0KPiArICAjIFBDSSBSb290IGNvbXBsZXggc3Bl Y2lmaWMgUENEcw0KPiArICBnQXJtSnVub1Rva2VuU3BhY2VHdWlkLlBjZFBjaUNvbmZpZ3VyYXRp b25TcGFjZUJhc2VBZGRyZXNzDQo+ICsgIGdBcm1KdW5vVG9rZW5TcGFjZUd1aWQuUGNkUGNpQ29u ZmlndXJhdGlvblNwYWNlU2l6ZQ0KPiArDQo+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RQY2lC dXNNaW4NCj4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZFBjaUJ1c01heA0KPiArDQo+ICtbUGNk XQ0KPiArDQo+ICtbRGVwZXhdDQo+ICsgIFRSVUUNCj4gZGlmZiAtLWdpdA0KPiBhL1BsYXRmb3Jt L0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL0NvbmZpZ3VyYXRpb25NYW5hZ2VyRHgN Cj4gZS9QbGF0Zm9ybS5oDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1h bmFnZXIvQ29uZmlndXJhdGlvbk1hbmFnZXJEeA0KPiBlL1BsYXRmb3JtLmgNCj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMC4uZDU0OTM3MGNmNDlhYzQ5M2I0DQo+IDZjNTc0NzY4ZGQwM2YwMDE2YTVjYWMNCj4g LS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0 aW9uTWFuYWdlci9Db25maWd1cmF0aW9uTWFuYWdlckR4DQo+IGUvUGxhdGZvcm0uaA0KPiBAQCAt MCwwICsxLDY1IEBADQo+ICsvKiogQGZpbGUNCj4gKw0KPiArICBDb3B5cmlnaHQgKGMpIDIwMTcs IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiArDQo+ICsgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gKyAgYXJlIGxpY2Vuc2VkIGFuZCBt YWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlDQo+IEJT RCBMaWNlbnNlDQo+ICsgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhl IGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyAgaHR0cDov L29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiArDQo+ICsgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi DQo+IEJBU0lTLA0KPiArICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9G IEFOWSBLSU5ELCBFSVRIRVINCj4gRVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4g Kw0KPiArI2lmbmRlZiBQTEFURk9STV9IX18NCj4gKyNkZWZpbmUgUExBVEZPUk1fSF9fDQo+ICsN Cj4gKyNkZWZpbmUgR1REVF9HTE9CQUxfRkxBR1NfTUFQUEVEICAgICAgXA0KPiArDQo+IEVGSV9B Q1BJXzZfMl9HVERUX0dMT0JBTF9GTEFHX01FTU9SWV9NQVBQRURfQkxPQ0tfUFJFU0VOVA0KPiAr I2RlZmluZSBHVERUX0dMT0JBTF9GTEFHU19OT1RfTUFQUEVEICAwDQo+ICsjZGVmaW5lIEdURFRf R0xPQkFMX0ZMQUdTX0VER0UgICAgICAgIFwNCj4gKyAgICAgICAgICBFRklfQUNQSV82XzJfR1RE VF9HTE9CQUxfRkxBR19JTlRFUlJVUFRfTU9ERQ0KPiArI2RlZmluZSBHVERUX0dMT0JBTF9GTEFH U19MRVZFTCAgICAgICAwDQo+ICsNCj4gKy8qDQo+ICsgIE5vdGU6IFdlIGNvdWxkIGhhdmUgYSBi dWlsZCBmbGFnIHRoYXQgc3dpdGNoZXMgYmV0d2VlbiBtZW1vcnkNCj4gKyAgbWFwcGVkL25vbi1t ZW1vcnkgbWFwcGVkIHRpbWVyDQo+ICsqLw0KPiArI2lmZGVmIFNZU1RFTV9DT1VOVEVSX0JBU0Vf QUREUkVTUw0KPiArI2RlZmluZSBHVERUX0dMT0JBTF9GTEFHUyAgICAgICAgICAgICAoR1REVF9H TE9CQUxfRkxBR1NfTUFQUEVEIHwgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBHVERUX0dMT0JBTF9GTEFHU19MRVZFTCkNCj4gKyNlbHNlDQo+ICsjZGVmaW5l IEdURFRfR0xPQkFMX0ZMQUdTDQo+IChHVERUX0dMT0JBTF9GTEFHU19OT1RfTUFQUEVEIHwgXA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVERUX0dMT0JBTF9G TEFHU19MRVZFTCkNCj4gKyNkZWZpbmUgU1lTVEVNX0NPVU5URVJfQkFTRV9BRERSRVNTICAgMHhG RkZGRkZGRkZGRkZGRkZGDQo+ICsjZGVmaW5lIFNZU1RFTV9DT1VOVEVSX1JFQURfQkFTRSAgICAg IDB4RkZGRkZGRkZGRkZGRkZGRg0KPiArI2VuZGlmDQo+ICsNCj4gKyNkZWZpbmUgR1REVF9USU1F Ul9FREdFX1RSSUdHRVJFRCAgIFwNCj4gKyAgICAgICAgICBFRklfQUNQSV82XzJfR1REVF9USU1F Ul9GTEFHX1RJTUVSX0lOVEVSUlVQVF9NT0RFDQo+ICsjZGVmaW5lIEdURFRfVElNRVJfTEVWRUxf VFJJR0dFUkVEICAwDQo+ICsjZGVmaW5lIEdURFRfVElNRVJfQUNUSVZFX0xPVyAgICAgICBcDQo+ ICsgICAgICAgICAgRUZJX0FDUElfNl8yX0dURFRfVElNRVJfRkxBR19USU1FUl9JTlRFUlJVUFRf UE9MQVJJVFkNCj4gKyNkZWZpbmUgR1REVF9USU1FUl9BQ1RJVkVfSElHSCAgICAgIDANCj4gKw0K PiArI2RlZmluZSBHVERUX0dUSU1FUl9GTEFHUyAgICAgICAgICAgKEdURFRfVElNRVJfQUNUSVZF X0xPVyB8IFwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdURFRf VElNRVJfTEVWRUxfVFJJR0dFUkVEKQ0KPiArDQo+ICsvLyBXYXRjaGRvZw0KPiArI2RlZmluZSBT QlNBX1dBVENIRE9HX0VER0VfVFJJR0dFUkVEICAgXA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9HVERU X1NCU0FfR0VORVJJQ19XQVRDSERPR19GTEFHX1RJTUVSX0lOVEVSUlVQDQo+IFRfTU9ERQ0KPiAr I2RlZmluZSBTQlNBX1dBVENIRE9HX0xFVkVMX1RSSUdHRVJFRCAgMA0KPiArI2RlZmluZSBTQlNB X1dBVENIRE9HX0FDVElWRV9MT1cgICAgICAgXA0KPiArDQo+IEVGSV9BQ1BJXzZfMl9HVERUX1NC U0FfR0VORVJJQ19XQVRDSERPR19GTEFHX1RJTUVSX0lOVEVSUlVQDQo+IFRfUE9MQVJJVFkNCj4g KyNkZWZpbmUgU0JTQV9XQVRDSERPR19BQ1RJVkVfSElHSCAgICAgIDANCj4gKyNkZWZpbmUgU0JT QV9XQVRDSERPR19TRUNVUkUgICAgICAgICAgIFwNCj4gKw0KPiBFRklfQUNQSV82XzJfR1REVF9T QlNBX0dFTkVSSUNfV0FUQ0hET0dfRkxBR19TRUNVUkVfVElNRVINCj4gKyNkZWZpbmUgU0JTQV9X QVRDSERPR19OT05fU0VDVVJFICAgICAgIDANCj4gKw0KPiArI2RlZmluZSBTQlNBX1dBVENIRE9H X0ZMQUdTDQo+IChTQlNBX1dBVENIRE9HX05PTl9TRUNVUkUgICAgfCBcDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTQlNBX1dBVENIRE9HX0FDVElWRV9ISUdI IHwgXA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0JTQV9X QVRDSERPR19FREdFX1RSSUdHRVJFRCkNCj4gKw0KPiArI2VuZGlmIC8vIFBMQVRGT1JNX0hfXw0K PiArDQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9u TWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Ecw0KPiBkdC5hc2wNCj4gYi9QbGF0Zm9ybS9B Uk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Ecw0K PiBkdC5hc2wNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgNCj4gMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA1NzY4OWZjNjFmZDRhNDA5Nw0KPiBjNDFi MGVlYzM1YjFlMDgyMjRkNjQNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysNCj4gYi9QbGF0Zm9ybS9B Uk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Ecw0K PiBkdC5hc2wNCj4gQEAgLTAsMCArMSwzMDYgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBEaWZmZXJl bnRpYXRlZCBTeXN0ZW0gRGVzY3JpcHRpb24gVGFibGUgRmllbGRzIChEU0RUKQ0KPiArDQo+ICsg IENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gKyAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmllcyB0 aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5z ZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1Q TElFRC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJBcm1QbGF0Zm9ybS5oIg0KPiAr DQo+ICtEZWZpbml0aW9uQmxvY2soIkRzZHRUYWJsZS5hbWwiLCAiRFNEVCIsIDEsICJBUk1MVEQi LCAiQVJNLUpVTk8iLA0KPiBFRklfQUNQSV9BUk1fT0VNX1JFVklTSU9OKSB7DQo+ICsgIFNjb3Bl KF9TQikgew0KPiArI2lmZGVmIERJU0FCTEVfTFBJDQo+ICsgICAgLy8NCj4gKyAgICAvLyBQcm9j ZXNzb3INCj4gKyAgICAvLw0KPiArICAgIERldmljZShDUFUwKSB7DQo+ICsgICAgICBOYW1lKF9I SUQsICJBQ1BJMDAwNyIpDQo+ICsgICAgICBOYW1lKF9VSUQsIFplcm8pDQo+ICsgICAgfQ0KPiAr ICAgIERldmljZShDUFUxKSB7DQo+ICsgICAgICBOYW1lKF9ISUQsICJBQ1BJMDAwNyIpDQo+ICsg ICAgICBOYW1lKF9VSUQsIE9uZSkNCj4gKyAgICB9DQo+ICsgICAgRGV2aWNlKENQVTIpIHsNCj4g KyAgICAgIE5hbWUoX0hJRCwgIkFDUEkwMDA3IikNCj4gKyAgICAgIE5hbWUoX1VJRCwgMikNCj4g KyAgICB9DQo+ICsgICAgRGV2aWNlKENQVTMpIHsNCj4gKyAgICAgIE5hbWUoX0hJRCwgIkFDUEkw MDA3IikNCj4gKyAgICAgIE5hbWUoX1VJRCwgMykNCj4gKyAgICB9DQo+ICsgICAgRGV2aWNlKENQ VTQpIHsNCj4gKyAgICAgIE5hbWUoX0hJRCwgIkFDUEkwMDA3IikNCj4gKyAgICAgIE5hbWUoX1VJ RCwgNCkNCj4gKyAgICB9DQo+ICsgICAgRGV2aWNlKENQVTUpIHsNCj4gKyAgICAgIE5hbWUoX0hJ RCwgIkFDUEkwMDA3IikNCj4gKyAgICAgIE5hbWUoX1VJRCwgNSkNCj4gKyAgICB9DQo+ICsjZWxz ZQ0KPiArICAgIC8vDQo+ICsgICAgLy8gQTU3eDItQTUzeDQgUHJvY2Vzc29yIGRlY2xhcmF0aW9u DQo+ICsgICAgLy8NCj4gKyAgICBNZXRob2QgKF9PU0MsIDQsIFNlcmlhbGl6ZWQpICB7IC8vIF9P U0M6IE9wZXJhdGluZyBTeXN0ZW0gQ2FwYWJpbGl0aWVzDQo+ICsgICAgICBDcmVhdGVEV29yZEZp ZWxkIChBcmczLCAweDAwLCBTVFMwKQ0KPiArICAgICAgQ3JlYXRlRFdvcmRGaWVsZCAoQXJnMywg MHgwNCwgQ0FQMCkNCj4gKyAgICAgIElmICgoQXJnMCA9PSBUb1VVSUQgKCIwODExYjA2ZS00YTI3 LTQ0ZjktOGQ2MC0zY2JiYzIyZTdiNDgiKSAvKg0KPiBQbGF0Zm9ybS13aWRlIENhcGFiaWxpdGll cyAqLykpIHsNCj4gKyAgICAgICAgSWYgKCEoQXJnMSA9PSBPbmUpKSB7DQo+ICsgICAgICAgICAg U1RTMCAmPSB+MHgxRg0KPiArICAgICAgICAgIFNUUzAgfD0gMHgwQQ0KPiArICAgICAgICB9IEVs c2Ugew0KPiArICAgICAgICAgIElmICgoQ0FQMCAmIDB4MTAwKSkgew0KPiArICAgICAgICAgICAg Q0FQMCAmPSB+MHgxMDAgLyogTm8gc3VwcG9ydCBmb3IgT1MgSW5pdGlhdGVkIExQSSAqLw0KPiAr ICAgICAgICAgICAgU1RTMCAmPSB+MHgxRg0KPiArICAgICAgICAgICAgU1RTMCB8PSAweDEyDQo+ ICsgICAgICAgICAgfQ0KPiArICAgICAgICB9DQo+ICsgICAgICB9IEVsc2Ugew0KPiArICAgICAg ICBTVFMwICY9IH4weDFGDQo+ICsgICAgICAgIFNUUzAgfD0gMHgwNg0KPiArICAgICAgfQ0KPiAr ICAgICAgUmV0dXJuIChBcmczKQ0KPiArICAgIH0NCj4gKyAgICBEZXZpY2UgKENMVTApIHsgLy8g Q2x1c3RlcjAgc3RhdGUNCj4gKyAgICAgIE5hbWUoX0hJRCwgIkFDUEkwMDEwIikNCj4gKyAgICAg IE5hbWUoX1VJRCwgMSkNCj4gKyAgICAgIE5hbWUgKF9MUEksIFBhY2thZ2UoKSB7DQo+ICsgICAg ICAgIDAsIC8vIFZlcnNpb24NCj4gKyAgICAgICAgMCwgLy8gTGV2ZWwgSW5kZXgNCj4gKyAgICAg ICAgMSwgLy8gQ291bnQNCj4gKyAgICAgICAgUGFja2FnZSgpIHsgLy8gUG93ZXIgR2F0aW5nIHN0 YXRlIGZvciBDbHVzdGVyDQo+ICsgICAgICAgICAgMjUwMCwgLy8gTWluIHJlc2lkZW5jeSAodVMp DQo+ICsgICAgICAgICAgMTE1MCwgLy8gV2FrZSBsYXRlbmN5ICh1UykNCj4gKyAgICAgICAgICAx LCAvLyBGbGFncw0KPiArICAgICAgICAgIDEsIC8vIEFyY2ggQ29udGV4dCBGbGFncw0KPiArICAg ICAgICAgIDEwMCwgLy9SZXNpZGVuY3kgQ291bnRlciBGcmVxdWVuY3kNCj4gKyAgICAgICAgICAw LCAvLyBObyBQYXJlbnQgU3RhdGUNCj4gKyAgICAgICAgICAweDAxMDAwMDAwLCAvLyBJbnRlZ2Vy IEVudHJ5IG1ldGhvZA0KPiArICAgICAgICAgIFJlc291cmNlVGVtcGxhdGUoKSB7IC8vIE51bGwg UmVzaWRlbmN5IENvdW50ZXINCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChTeXN0ZW1NZW1vcnks IDAsIDAsIDAsIDApDQo+ICsgICAgICAgICAgfSwNCj4gKyAgICAgICAgICBSZXNvdXJjZVRlbXBs YXRlKCkgeyAvLyBOdWxsIFVzYWdlIENvdW50ZXINCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChT eXN0ZW1NZW1vcnksIDAsIDAsIDAsIDApDQo+ICsgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAi Q2x1UHdyRG4iDQo+ICsgICAgICAgIH0sDQo+ICsgICAgICB9KQ0KPiArICAgICAgTmFtZShQTFBJ LCBQYWNrYWdlKCkgew0KPiArICAgICAgICAwLCAvLyBWZXJzaW9uDQo+ICsgICAgICAgIDEsIC8v IExldmVsIEluZGV4DQo+ICsgICAgICAgIDIsIC8vIENvdW50DQo+ICsgICAgICAgIFBhY2thZ2Uo KSB7IC8vIFdGSSBmb3IgQ1BVDQo+ICsgICAgICAgICAgMSwgLy8gTWluIHJlc2lkZW5jeSAodVMp DQo+ICsgICAgICAgICAgMSwgLy8gV2FrZSBsYXRlbmN5ICh1UykNCj4gKyAgICAgICAgICAxLCAv LyBGbGFncw0KPiArICAgICAgICAgIDAsIC8vIEFyY2ggQ29udGV4dCBGbGFncw0KPiArICAgICAg ICAgIDEwMCwgLy9SZXNpZGVuY3kgQ291bnRlciBGcmVxdWVuY3kNCj4gKyAgICAgICAgICAwLCAv LyBObyBwYXJlbnQgc3RhdGUNCj4gKyAgICAgICAgICBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4g KyAgICAgICAgICAgIC8vIFJlZ2lzdGVyIEVudHJ5IG1ldGhvZA0KPiArICAgICAgICAgICAgUmVn aXN0ZXIgKEZGaXhlZEhXLA0KPiArICAgICAgICAgICAgICAweDIwLCAgICAgICAgICAgICAgIC8v IEJpdCBXaWR0aA0KPiArICAgICAgICAgICAgICAweDAwLCAgICAgICAgICAgICAgIC8vIEJpdCBP ZmZzZXQNCj4gKyAgICAgICAgICAgICAgMHhGRkZGRkZGRiwgICAgICAgICAvLyBBZGRyZXNzDQo+ ICsgICAgICAgICAgICAgIDB4MDMsICAgICAgICAgICAgICAgLy8gQWNjZXNzIFNpemUNCj4gKyAg ICAgICAgICAgICAgKQ0KPiArICAgICAgICAgIH0sDQo+ICsgICAgICAgICAgUmVzb3VyY2VUZW1w bGF0ZSgpIHsgLy8gTnVsbCBSZXNpZGVuY3kgQ291bnRlcg0KPiArICAgICAgICAgICAgUmVnaXN0 ZXIgKFN5c3RlbU1lbW9yeSwgMCwgMCwgMCwgMCkNCj4gKyAgICAgICAgICB9LA0KPiArICAgICAg ICAgIFJlc291cmNlVGVtcGxhdGUoKSB7IC8vIE51bGwgVXNhZ2UgQ291bnRlcg0KPiArICAgICAg ICAgICAgUmVnaXN0ZXIgKFN5c3RlbU1lbW9yeSwgMCwgMCwgMCwgMCkNCj4gKyAgICAgICAgICB9 LA0KPiArICAgICAgICAgICJXRkkiLA0KPiArICAgICAgICB9LA0KPiArICAgICAgICBQYWNrYWdl KCkgeyAvLyBQb3dlciBHYXRpbmcgc3RhdGUgZm9yIENQVQ0KPiArICAgICAgICAgIDE1MCwgLy8g TWluIHJlc2lkZW5jeSAodVMpDQo+ICsgICAgICAgICAgMzUwLCAvLyBXYWtlIGxhdGVuY3kgKHVT KQ0KPiArICAgICAgICAgIDEsIC8vIEZsYWdzDQo+ICsgICAgICAgICAgMSwgLy8gQXJjaCBDb250 ZXh0IEZsYWdzDQo+ICsgICAgICAgICAgMTAwLCAvL1Jlc2lkZW5jeSBDb3VudGVyIEZyZXF1ZW5j eQ0KPiArICAgICAgICAgIDEsIC8vIFBhcmVudCBub2RlIGNhbiBiZSBpbiBhbnkgc3RhdGUNCj4g KyAgICAgICAgICBSZXNvdXJjZVRlbXBsYXRlICgpIHsNCj4gKyAgICAgICAgICAgIC8vIFJlZ2lz dGVyIEVudHJ5IG1ldGhvZA0KPiArICAgICAgICAgICAgUmVnaXN0ZXIgKEZGaXhlZEhXLA0KPiAr ICAgICAgICAgICAgICAweDIwLCAgICAgICAgICAgICAgIC8vIEJpdCBXaWR0aA0KPiArICAgICAg ICAgICAgICAweDAwLCAgICAgICAgICAgICAgIC8vIEJpdCBPZmZzZXQNCj4gKyAgICAgICAgICAg ICAgMHgwMDAxMDAwMCwgICAgICAgICAvLyBBZGRyZXNzDQo+ICsgICAgICAgICAgICAgIDB4MDMs ICAgICAgICAgICAgICAgLy8gQWNjZXNzIFNpemUNCj4gKyAgICAgICAgICAgICAgKQ0KPiArICAg ICAgICAgIH0sDQo+ICsgICAgICAgICAgUmVzb3VyY2VUZW1wbGF0ZSgpIHsgLy8gTnVsbCBSZXNp ZGVuY3kgQ291bnRlcg0KPiArICAgICAgICAgICAgUmVnaXN0ZXIgKFN5c3RlbU1lbW9yeSwgMCwg MCwgMCwgMCkNCj4gKyAgICAgICAgICB9LA0KPiArICAgICAgICAgIFJlc291cmNlVGVtcGxhdGUo KSB7IC8vIE51bGwgVXNhZ2UgQ291bnRlcg0KPiArICAgICAgICAgICAgUmVnaXN0ZXIgKFN5c3Rl bU1lbW9yeSwgMCwgMCwgMCwgMCkNCj4gKyAgICAgICAgICB9LA0KPiArICAgICAgICAgICJDb3Jl UHdyRG4iDQo+ICsgICAgICAgIH0sDQo+ICsgICAgICB9KQ0KPiArICAgICAgRGV2aWNlKENQVTAp IHsgLy8gQTU3LTA6IENsdXN0ZXIgMCwgQ3B1IDANCj4gKyAgICAgICAgTmFtZShfSElELCAiQUNQ STAwMDciKQ0KPiArICAgICAgICBOYW1lKF9VSUQsIDQpDQo+ICsgICAgICAgIE1ldGhvZCAoX0xQ SSwgMCwgTm90U2VyaWFsaXplZCkgew0KPiArICAgICAgICAgIHJldHVybihQTFBJKQ0KPiArICAg ICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICBEZXZpY2UoQ1BVMSkgeyAvLyBBNTctMTogQ2x1 c3RlciAwLCBDcHUgMQ0KPiArICAgICAgICBOYW1lKF9ISUQsICJBQ1BJMDAwNyIpDQo+ICsgICAg ICAgIE5hbWUoX1VJRCwgNSkNCj4gKyAgICAgICAgTWV0aG9kIChfTFBJLCAwLCBOb3RTZXJpYWxp emVkKSB7DQo+ICsgICAgICAgICAgcmV0dXJuKFBMUEkpDQo+ICsgICAgICAgIH0NCj4gKyAgICAg IH0NCj4gKyAgICB9DQo+ICsgICAgRGV2aWNlIChDTFUxKSB7IC8vIENsdXN0ZXIxIHN0YXRlDQo+ ICsgICAgICBOYW1lKF9ISUQsICJBQ1BJMDAxMCIpDQo+ICsgICAgICBOYW1lKF9VSUQsIDIpDQo+ ICsgICAgICBOYW1lIChfTFBJLCBQYWNrYWdlKCkgew0KPiArICAgICAgICAwLCAvLyBWZXJzaW9u DQo+ICsgICAgICAgIDAsIC8vIExldmVsIEluZGV4DQo+ICsgICAgICAgIDEsIC8vIENvdW50DQo+ ICsgICAgICAgIFBhY2thZ2UoKSB7IC8vIFBvd2VyIEdhdGluZyBzdGF0ZSBmb3IgQ2x1c3Rlcg0K PiArICAgICAgICAgIDI1MDAsIC8vIE1pbiByZXNpZGVuY3kgKHVTKQ0KPiArICAgICAgICAgIDEx NTAsIC8vIFdha2UgbGF0ZW5jeSAodVMpDQo+ICsgICAgICAgICAgMSwgLy8gRmxhZ3MNCj4gKyAg ICAgICAgICAxLCAvLyBBcmNoIENvbnRleHQgRmxhZ3MNCj4gKyAgICAgICAgICAxMDAsIC8vUmVz aWRlbmN5IENvdW50ZXIgRnJlcXVlbmN5DQo+ICsgICAgICAgICAgMCwgLy8gTm8gUGFyZW50IFN0 YXRlDQo+ICsgICAgICAgICAgMHgwMTAwMDAwMCwgLy8gSW50ZWdlciBFbnRyeSBtZXRob2QNCj4g KyAgICAgICAgICBSZXNvdXJjZVRlbXBsYXRlKCkgeyAvLyBOdWxsIFJlc2lkZW5jeSBDb3VudGVy DQo+ICsgICAgICAgICAgICBSZWdpc3RlciAoU3lzdGVtTWVtb3J5LCAwLCAwLCAwLCAwKQ0KPiAr ICAgICAgICAgIH0sDQo+ICsgICAgICAgICAgUmVzb3VyY2VUZW1wbGF0ZSgpIHsgLy8gTnVsbCBV c2FnZSBDb3VudGVyDQo+ICsgICAgICAgICAgICBSZWdpc3RlciAoU3lzdGVtTWVtb3J5LCAwLCAw LCAwLCAwKQ0KPiArICAgICAgICAgIH0sDQo+ICsgICAgICAgICAgIkNsdVB3ckRuIg0KPiArICAg ICAgICB9LA0KPiArICAgICAgfSkNCj4gKyAgICAgIE5hbWUoUExQSSwgUGFja2FnZSgpIHsNCj4g KyAgICAgICAgMCwgLy8gVmVyc2lvbg0KPiArICAgICAgICAxLCAvLyBMZXZlbCBJbmRleA0KPiAr ICAgICAgICAyLCAvLyBDb3VudA0KPiArICAgICAgICBQYWNrYWdlKCkgeyAvLyBXRkkgZm9yIENQ VQ0KPiArICAgICAgICAgIDEsIC8vIE1pbiByZXNpZGVuY3kgKHVTKQ0KPiArICAgICAgICAgIDEs IC8vIFdha2UgbGF0ZW5jeSAodVMpDQo+ICsgICAgICAgICAgMSwgLy8gRmxhZ3MNCj4gKyAgICAg ICAgICAwLCAvLyBBcmNoIENvbnRleHQgRmxhZ3MNCj4gKyAgICAgICAgICAxMDAsIC8vUmVzaWRl bmN5IENvdW50ZXIgRnJlcXVlbmN5DQo+ICsgICAgICAgICAgMCwgLy8gTm8gcGFyZW50IHN0YXRl DQo+ICsgICAgICAgICAgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICAvLyBS ZWdpc3RlciBFbnRyeSBtZXRob2QNCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChGRml4ZWRIVywN Cj4gKyAgICAgICAgICAgICAgMHgyMCwgICAgICAgICAgICAgICAvLyBCaXQgV2lkdGgNCj4gKyAg ICAgICAgICAgICAgMHgwMCwgICAgICAgICAgICAgICAvLyBCaXQgT2Zmc2V0DQo+ICsgICAgICAg ICAgICAgIDB4RkZGRkZGRkYsICAgICAgICAgLy8gQWRkcmVzcw0KPiArICAgICAgICAgICAgICAw eDAzLCAgICAgICAgICAgICAgIC8vIEFjY2VzcyBTaXplDQo+ICsgICAgICAgICAgICAgICkNCj4g KyAgICAgICAgICB9LA0KPiArICAgICAgICAgIFJlc291cmNlVGVtcGxhdGUoKSB7IC8vIE51bGwg UmVzaWRlbmN5IENvdW50ZXINCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChTeXN0ZW1NZW1vcnks IDAsIDAsIDAsIDApDQo+ICsgICAgICAgICAgfSwNCj4gKyAgICAgICAgICBSZXNvdXJjZVRlbXBs YXRlKCkgeyAvLyBOdWxsIFVzYWdlIENvdW50ZXINCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChT eXN0ZW1NZW1vcnksIDAsIDAsIDAsIDApDQo+ICsgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAi V0ZJIiwNCj4gKyAgICAgICAgfSwNCj4gKyAgICAgICAgUGFja2FnZSgpIHsgLy8gUG93ZXIgR2F0 aW5nIHN0YXRlIGZvciBDUFUNCj4gKyAgICAgICAgICAxNTAsIC8vIE1pbiByZXNpZGVuY3kgKHVT KQ0KPiArICAgICAgICAgIDM1MCwgLy8gV2FrZSBsYXRlbmN5ICh1UykNCj4gKyAgICAgICAgICAx LCAvLyBGbGFncw0KPiArICAgICAgICAgIDEsIC8vIEFyY2ggQ29udGV4dCBGbGFncw0KPiArICAg ICAgICAgIDEwMCwgLy9SZXNpZGVuY3kgQ291bnRlciBGcmVxdWVuY3kNCj4gKyAgICAgICAgICAx LCAvLyBQYXJlbnQgbm9kZSBjYW4gYmUgaW4gYW55IHN0YXRlDQo+ICsgICAgICAgICAgUmVzb3Vy Y2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICAvLyBSZWdpc3RlciBFbnRyeSBtZXRob2QN Cj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChGRml4ZWRIVywNCj4gKyAgICAgICAgICAgICAgMHgy MCwgICAgICAgICAgICAgICAvLyBCaXQgV2lkdGgNCj4gKyAgICAgICAgICAgICAgMHgwMCwgICAg ICAgICAgICAgICAvLyBCaXQgT2Zmc2V0DQo+ICsgICAgICAgICAgICAgIDB4MDAwMTAwMDAsICAg ICAgICAgLy8gQWRkcmVzcw0KPiArICAgICAgICAgICAgICAweDAzLCAgICAgICAgICAgICAgIC8v IEFjY2VzcyBTaXplDQo+ICsgICAgICAgICAgICAgICkNCj4gKyAgICAgICAgICB9LA0KPiArICAg ICAgICAgIFJlc291cmNlVGVtcGxhdGUoKSB7IC8vIE51bGwgUmVzaWRlbmN5IENvdW50ZXINCj4g KyAgICAgICAgICAgIFJlZ2lzdGVyIChTeXN0ZW1NZW1vcnksIDAsIDAsIDAsIDApDQo+ICsgICAg ICAgICAgfSwNCj4gKyAgICAgICAgICBSZXNvdXJjZVRlbXBsYXRlKCkgeyAvLyBOdWxsIFVzYWdl IENvdW50ZXINCj4gKyAgICAgICAgICAgIFJlZ2lzdGVyIChTeXN0ZW1NZW1vcnksIDAsIDAsIDAs IDApDQo+ICsgICAgICAgICAgfSwNCj4gKyAgICAgICAgICAiQ29yZVB3ckRuIg0KPiArICAgICAg ICB9LA0KPiArICAgICAgfSkNCj4gKyAgICAgIERldmljZShDUFUyKSB7IC8vIEE1My0wOiBDbHVz dGVyIDEsIENwdSAwDQo+ICsgICAgICAgIE5hbWUoX0hJRCwgIkFDUEkwMDA3IikNCj4gKyAgICAg ICAgTmFtZShfVUlELCAwKQ0KPiArICAgICAgICBNZXRob2QgKF9MUEksIDAsIE5vdFNlcmlhbGl6 ZWQpIHsNCj4gKyAgICAgICAgICByZXR1cm4oUExQSSkNCj4gKyAgICAgICAgfQ0KPiArICAgICAg fQ0KPiArICAgICAgRGV2aWNlKENQVTMpIHsgLy8gQTUzLTE6IENsdXN0ZXIgMSwgQ3B1IDENCj4g KyAgICAgICAgTmFtZShfSElELCAiQUNQSTAwMDciKQ0KPiArICAgICAgICBOYW1lKF9VSUQsIDEp DQo+ICsgICAgICAgIE1ldGhvZCAoX0xQSSwgMCwgTm90U2VyaWFsaXplZCkgew0KPiArICAgICAg ICAgIHJldHVybihQTFBJKQ0KPiArICAgICAgICB9DQo+ICsgICAgICB9DQo+ICsgICAgICBEZXZp Y2UoQ1BVNCkgeyAvLyBBNTMtMjogQ2x1c3RlciAxLCBDcHUgMg0KPiArICAgICAgICBOYW1lKF9I SUQsICJBQ1BJMDAwNyIpDQo+ICsgICAgICAgIE5hbWUoX1VJRCwgMikNCj4gKyAgICAgICAgTWV0 aG9kIChfTFBJLCAwLCBOb3RTZXJpYWxpemVkKSB7DQo+ICsgICAgICAgICAgcmV0dXJuKFBMUEkp DQo+ICsgICAgICAgIH0NCj4gKyAgICAgIH0NCj4gKyAgICAgIERldmljZShDUFU1KSB7IC8vIEE1 My0zOiBDbHVzdGVyIDEsIENwdSAzDQo+ICsgICAgICAgIE5hbWUoX0hJRCwgIkFDUEkwMDA3IikN Cj4gKyAgICAgICAgTmFtZShfVUlELCAzKQ0KPiArICAgICAgICBNZXRob2QgKF9MUEksIDAsIE5v dFNlcmlhbGl6ZWQpIHsNCj4gKyAgICAgICAgICByZXR1cm4oUExQSSkNCj4gKyAgICAgICAgfQ0K PiArICAgICAgfQ0KPiArICAgIH0NCj4gKyNlbmRpZg0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAv LyBLZXlib2FyZCBhbmQgTW91c2UNCj4gKyAgICAvLw0KPiArICAgIERldmljZShLTUkwKSB7DQo+ ICsgICAgICBOYW1lKF9ISUQsICJBUk1IMDUwMSIpDQo+ICsgICAgICBOYW1lKF9DSUQsICJQTDA1 MF9LQkQiKQ0KPiArICAgICAgTmFtZShfQ1JTLCBSZXNvdXJjZVRlbXBsYXRlKCkgew0KPiArICAg ICAgICAgICAgICBNZW1vcnkzMkZpeGVkKFJlYWRXcml0ZSwgMHgxQzA2MDAwOCwgMHg0KQ0KPiAr ICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkKFJlYWRXcml0ZSwgMHgxQzA2MDAwMCwgMHg0KQ0K PiArICAgICAgICAgICAgICBNZW1vcnkzMkZpeGVkKFJlYWRPbmx5LCAweDFDMDYwMDA0LCAweDQp DQo+ICsgICAgICAgICAgICAgIEludGVycnVwdChSZXNvdXJjZUNvbnN1bWVyLCBMZXZlbCwgQWN0 aXZlSGlnaCwgRXhjbHVzaXZlKSB7IDE5NyB9DQo+ICsgICAgICB9KQ0KPiArICAgIH0NCj4gKw0K PiArICAgIC8vDQo+ICsgICAgLy8gTEFOOTExOCBFdGhlcm5ldA0KPiArICAgIC8vDQo+ICsgICAg RGV2aWNlKEVUSDApIHsNCj4gKyAgICAgIE5hbWUoX0hJRCwgIkFSTUg5MTE4IikNCj4gKyAgICAg IE5hbWUoX1VJRCwgWmVybykNCj4gKyAgICAgIE5hbWUoX0NSUywgUmVzb3VyY2VUZW1wbGF0ZSgp IHsNCj4gKyAgICAgICAgICAgICAgTWVtb3J5MzJGaXhlZChSZWFkV3JpdGUsIDB4MTgwMDAwMDAs IDB4MTAwMCkNCj4gKyAgICAgICAgICAgICAgSW50ZXJydXB0KFJlc291cmNlQ29uc3VtZXIsIExl dmVsLCBBY3RpdmVIaWdoLCBFeGNsdXNpdmUpIHsgMTkyIH0NCj4gKyAgICAgIH0pDQo+ICsgICAg ICBOYW1lKF9EU0QsIFBhY2thZ2UoKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgVG9VVUlEKCJk YWZmZDgxNC02ZWJhLTRkOGMtOGE5MS1iYzliYmY0YWEzMDEiKSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSgpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ YWNrYWdlKDIpIHsicGh5LW1vZGUiLCAibWlpIn0sDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUGFja2FnZSgyKSB7InJlZy1pby13aWR0aCIsIDQgfSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQYWNrYWdlKDIpIHsic21zYyxpcnEtYWN0aXZlLWhpZ2giLDF9 LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2UoMikgeyJzbXNjLGly cS1wdXNoLXB1bGwiLDF9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgfSkg Ly8gX0RTRCgpDQo+ICsgICAgfQ0KPiArICB9IC8vIFNjb3BlKF9TQikNCj4gK30NCj4gZGlmZiAt LWdpdA0KPiBhL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5hZ2VyL1BsYXRm b3JtQVNMVGFibGVzTGliL1BsDQo+IGF0Zm9ybUFTTFRhYmxlc0xpYi5pbmYNCj4gYi9QbGF0Zm9y bS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Q bA0KPiBhdGZvcm1BU0xUYWJsZXNMaWIuaW5mDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGlu ZGV4DQo+IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRiNmU0OGQz ZWZjZDNjZWIwOTQNCj4gYzRiMjkxZWFhNGMzMDYwZTkzYjkyDQo+IC0tLSAvZGV2L251bGwNCj4g KysrDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIvUGxhdGZv cm1BU0xUYWJsZXNMaWIvUGwNCj4gYXRmb3JtQVNMVGFibGVzTGliLmluZg0KPiBAQCAtMCwwICsx LDQ0IEBADQo+ICsjIyBAZmlsZQ0KPiArIw0KPiArIyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAx OCwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ICsjDQo+ICsjICBUaGlzIHBy b2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5zZWQg YW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUN Cj4gQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gKyMg IGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gKyMNCj4g KyMgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBB TiAiQVMgSVMiDQo+IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VO VEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMj DQo+ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAg PSAweDAwMDEwMDE5DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEp1bm9B c2xUYWJsZXNMaWINCj4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAgICAgID0gNTU3MDA0 REItREY0NS00MjZCLTlFNUUtMUU4QUJBQTJFRTJDDQo+ICsgIE1PRFVMRV9UWVBFICAgICAgICAg ICAgICAgICAgICA9IERYRV9EUklWRVINCj4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAg ICAgID0gMS4wDQo+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAgICA9IFBsYXRmb3Jt QXNsVGFibGVzTGlifERYRV9EUklWRVINCj4gKw0KPiArIw0KPiArIyBUaGUgZm9sbG93aW5nIGlu Zm9ybWF0aW9uIGlzIGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZQ0K PiBidWlsZCB0b29scy4NCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAg ID0gQVJNIEFBUkNINjQNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIERzZHQuYXNsDQo+ ICsgIFNzZHRKdW5vVXNiLmFzbA0KPiArICBTc2R0UGNpLmFzbA0KPiArICBTc2R0VWFydC5hc2wN Cj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBBcm1Qa2cvQXJtUGtnLmRlYw0KPiArICBBcm1QbGF0 Zm9ybVBrZy9Bcm1QbGF0Zm9ybVBrZy5kZWMNCj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAg TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gKyAgUGxhdGZvcm0vQVJNL0p1bm9Qa2cv QXJtSnVuby5kZWMNCj4gKyAgUGxhdGZvcm0vQVJNL1ZFeHByZXNzUGtnL0FybVZFeHByZXNzUGtn LmRlYw0KPiArDQo+ICtbRml4ZWRQY2RdDQo+ICsgIGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNl R3VpZC5QY2RTZXJpYWxSZWdpc3RlckJhc2UNCj4gKyAgZ0FybVBsYXRmb3JtVG9rZW5TcGFjZUd1 aWQuUEwwMTFVYXJ0SW50ZXJydXB0DQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9BUk0vSnVu b1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Tcw0KPiBkdEp1 bm9Vc2IuYXNsDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIv UGxhdGZvcm1BU0xUYWJsZXNMaWIvU3MNCj4gZHRKdW5vVXNiLmFzbA0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi5iNWRmYjA3ZGZiYmZmMjY5NjdlDQo+IDA5OWYzYWNkNjFkM2JjYjE3OWUyZg0KPiAtLS0g L2Rldi9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25N YW5hZ2VyL1BsYXRmb3JtQVNMVGFibGVzTGliL1NzDQo+IGR0SnVub1VzYi5hc2wNCj4gQEAgLTAs MCArMSwxMjIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBTU0RUIGZvciBKdW5vIFVTQg0KPiArDQo+ ICsgIENvcHlyaWdodCAoYykgMjAxNC0yMDE3LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCj4gKyAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ICsgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFu ZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiArICB3aGljaCBhY2NvbXBhbmll cyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJl DQo+IGZvdW5kIGF0DQo+ICsgIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGlj ZW5zZS5waHANCj4gKw0KPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUg QlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiBCQVNJUywNCj4gKyAgV0lUSE9VVCBXQVJSQU5U SUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1Ig SU1QTElFRC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKyNpbmNsdWRlICJBcm1QbGF0Zm9ybS5oIg0K PiArDQo+ICtEZWZpbml0aW9uQmxvY2soIlNzZHRKdW5vVVNCLmFtbCIsICJTU0RUIiwgMSwgIkFS TUxURCIsICJBUk0tSlVOTyIsDQo+IEVGSV9BQ1BJX0FSTV9PRU1fUkVWSVNJT04pIHsNCj4gKyAg U2NvcGUoX1NCKSB7DQo+ICsNCj4gKyAgICAvLw0KPiArICAgIC8vIFVTQiBFSENJIEhvc3QgQ29u dHJvbGxlcg0KPiArICAgIC8vDQo+ICsgICAgRGV2aWNlKFVTQjApIHsNCj4gKyAgICAgIE5hbWUo X0hJRCwgIkFSTUgwRDIwIikNCj4gKyAgICAgIE5hbWUoX0NJRCwgIlBOUDBEMjAiKQ0KPiArICAg ICAgTmFtZShfVUlELCAyKQ0KPiArDQo+ICsgICAgICBOYW1lKF9DQ0EsIFpFUk8pICAgLy8gQ2Fj aGUtaW5jb2hlcmVudCBidXMtbWFzdGVyDQo+ICsNCj4gKyAgICAgIE1ldGhvZChfQ1JTLCAweDAs IFNlcmlhbGl6ZWQpew0KPiArICAgICAgICBOYW1lKFJCVUYsIFJlc291cmNlVGVtcGxhdGUoKXsN Cj4gKyAgICAgICAgICBNZW1vcnkzMkZpeGVkKFJlYWRXcml0ZSwgMHg3RkZDMDAwMCwgMHgwMDAw MDBCMCkgICAgICAgICAgICAgICAgLy8NCj4gMHg3RkZDMDAwMCBpcyB0aGUgSnVubyBTb0MgVVNC IEVIQ0kgY29udHJvbGxlciBiYXNlIGFkZHJlc3MNCj4gKyAgICAgICAgICBJbnRlcnJ1cHQoUmVz b3VyY2VDb25zdW1lciwgTGV2ZWwsIEFjdGl2ZUhpZ2gsIEV4Y2x1c2l2ZSkgezE0OX0gLy8NCj4g SU5UIElEPTE0OSBHSUMgSVJRIElEPTExNyBmb3IgSnVubyBTb0MgVVNCIEVIQ0kgQ29udHJvbGxl cg0KPiArICAgICAgICB9KQ0KPiArICAgICAgICBSZXR1cm4oUkJVRikNCj4gKyAgICAgIH0NCj4g Kw0KPiArICAgICAgLy8NCj4gKyAgICAgIC8vIFJvb3QgSHViDQo+ICsgICAgICAvLw0KPiArICAg ICAgRGV2aWNlKFJIVUIpIHsNCj4gKyAgICAgICAgTmFtZShfQURSLCBaZXJvKSAgLy8gQWRkcmVz cyBvZiBSb290IEh1YiBzaG91bGQgYmUgMCBhcyBwZXIgQUNQSQ0KPiA1LjAgc3BlYw0KPiArDQo+ ICsgICAgICAgIC8vDQo+ICsgICAgICAgIC8vIFBvcnRzIGNvbm5lY3RlZCB0byBSb290IEh1Yg0K PiArICAgICAgICAvLw0KPiArICAgICAgICBEZXZpY2UoSFVCMSkgew0KPiArICAgICAgICAgIE5h bWUoX0FEUiwgT25lKQ0KPiArICAgICAgICAgIE5hbWUoX1VQQywgUGFja2FnZSgpew0KPiArICAg ICAgICAgICAgWmVybywgICAgICAgLy8gUG9ydCBpcyBOT1QgY29ubmVjdGFibGUNCj4gKyAgICAg ICAgICAgIDB4RkYsICAgICAgIC8vIERvbid0IGNhcmUNCj4gKyAgICAgICAgICAgIFplcm8sICAg ICAgIC8vIFJlc2VydmVkIDAgbXVzdCBiZSB6ZXJvDQo+ICsgICAgICAgICAgICBaZXJvICAgICAg ICAvLyBSZXNlcnZlZCAxIG11c3QgYmUgemVybw0KPiArICAgICAgICAgIH0pDQo+ICsNCj4gKyAg ICAgICAgICBEZXZpY2UoUFJUMSkgew0KPiArICAgICAgICAgICAgTmFtZShfQURSLCBPbmUpDQo+ ICsgICAgICAgICAgICBOYW1lKF9VUEMsIFBhY2thZ2UoKXsNCj4gKyAgICAgICAgICAgICAgMHhG RiwgICAgICAgIC8vIFBvcnQgaXMgY29ubmVjdGFibGUNCj4gKyAgICAgICAgICAgICAgWmVybywg ICAgICAgIC8vIFBvcnQgY29ubmVjdG9yIGlzIEENCj4gKyAgICAgICAgICAgICAgWmVybywNCj4g KyAgICAgICAgICAgICAgWmVybw0KPiArICAgICAgICAgICAgfSkNCj4gKyAgICAgICAgICAgIE5h bWUoX1BMRCwgUGFja2FnZShPbmUpIHsNCj4gKyAgICAgICAgICAgICAgQnVmZmVyKDB4MTApew0K PiArICAgICAgICAgICAgICAgIDB4ODEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsDQo+ICsgICAgICAgICAgICAgICAgMHgzMSwgMHgxQywgMHgwMCwgMHgwMCwgMHgw MCwgMHgwMCwgMHgwMCwgMHgwMA0KPiArICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICB9 KQ0KPiArICAgICAgICAgIH0gLy8gVVNCMF9SSFVCX0hVQjFfUFJUMQ0KPiArICAgICAgICAgIERl dmljZShQUlQyKSB7DQo+ICsgICAgICAgICAgICBOYW1lKF9BRFIsIDB4MDAwMDAwMDIpDQo+ICsg ICAgICAgICAgICBOYW1lKF9VUEMsIFBhY2thZ2UoKSB7DQo+ICsgICAgICAgICAgICAgIDB4RkYs ICAgICAgICAvLyBQb3J0IGlzIGNvbm5lY3RhYmxlDQo+ICsgICAgICAgICAgICAgIFplcm8sICAg ICAgICAvLyBQb3J0IGNvbm5lY3RvciBpcyBBDQo+ICsgICAgICAgICAgICAgIFplcm8sDQo+ICsg ICAgICAgICAgICAgIFplcm8NCj4gKyAgICAgICAgICAgIH0pDQo+ICsgICAgICAgICAgICBOYW1l KF9QTEQsIFBhY2thZ2UoT25lKSB7DQo+ICsgICAgICAgICAgICAgIEJ1ZmZlcigweDEwKXsNCj4g KyAgICAgICAgICAgICAgICAweDgxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAw LCAweDAwLA0KPiArICAgICAgICAgICAgICAgIDB4MzEsIDB4MUMsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsIDB4MDANCj4gKyAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgfSkN Cj4gKyAgICAgICAgICB9IC8vIFVTQjBfUkhVQl9IVUIxX1BSVDINCj4gKw0KPiArICAgICAgICAg IERldmljZShQUlQzKSB7DQo+ICsgICAgICAgICAgICBOYW1lKF9BRFIsIDB4MDAwMDAwMDMpDQo+ ICsgICAgICAgICAgICBOYW1lKF9VUEMsIFBhY2thZ2UoKSB7DQo+ICsgICAgICAgICAgICAgIDB4 RkYsICAgICAgICAvLyBQb3J0IGlzIGNvbm5lY3RhYmxlDQo+ICsgICAgICAgICAgICAgIFplcm8s ICAgICAgICAvLyBQb3J0IGNvbm5lY3RvciBpcyBBDQo+ICsgICAgICAgICAgICAgIFplcm8sDQo+ ICsgICAgICAgICAgICAgIFplcm8NCj4gKyAgICAgICAgICAgIH0pDQo+ICsgICAgICAgICAgICBO YW1lKF9QTEQsIFBhY2thZ2UoT25lKSB7DQo+ICsgICAgICAgICAgICAgIEJ1ZmZlcigweDEwKXsN Cj4gKyAgICAgICAgICAgICAgICAweDgxLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAw eDAwLCAweDAwLA0KPiArICAgICAgICAgICAgICAgIDB4MzEsIDB4MUMsIDB4MDAsIDB4MDAsIDB4 MDAsIDB4MDAsIDB4MDAsIDB4MDANCj4gKyAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAg fSkNCj4gKyAgICAgICAgICB9IC8vIFVTQjBfUkhVQl9IVUIxX1BSVDMNCj4gKw0KPiArICAgICAg ICAgIERldmljZShQUlQ0KSB7DQo+ICsgICAgICAgICAgICBOYW1lKF9BRFIsIDB4MDAwMDAwMDQp DQo+ICsgICAgICAgICAgICBOYW1lKF9VUEMsIFBhY2thZ2UoKXsNCj4gKyAgICAgICAgICAgICAg MHhGRiwgICAgICAgIC8vIFBvcnQgaXMgY29ubmVjdGFibGUNCj4gKyAgICAgICAgICAgICAgWmVy bywgICAgICAgIC8vIFBvcnQgY29ubmVjdG9yIGlzIEENCj4gKyAgICAgICAgICAgICAgWmVybywN Cj4gKyAgICAgICAgICAgICAgWmVybw0KPiArICAgICAgICAgICAgfSkNCj4gKyAgICAgICAgICAg IE5hbWUoX1BMRCwgUGFja2FnZShPbmUpIHsNCj4gKyAgICAgICAgICAgICAgQnVmZmVyKDB4MTAp ew0KPiArICAgICAgICAgICAgICAgIDB4ODEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAs IDB4MDAsIDB4MDAsDQo+ICsgICAgICAgICAgICAgICAgMHgzMSwgMHgxQywgMHgwMCwgMHgwMCwg MHgwMCwgMHgwMCwgMHgwMCwgMHgwMA0KPiArICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAg ICB9KQ0KPiArICAgICAgICAgIH0gLy8gVVNCMF9SSFVCX0hVQjFfUFJUNA0KPiArICAgICAgICB9 IC8vIFVTQjBfUkhVQl9IVUIxDQo+ICsgICAgICB9IC8vIFVTQjBfUkhVQg0KPiArICAgIH0gLy8g VVNCMA0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9BUk0vSnVub1Br Zy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Tcw0KPiBkdFBjaS5h c2wNCj4gYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9y bUFTTFRhYmxlc0xpYi9Tcw0KPiBkdFBjaS5hc2wNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXgNCj4gMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmQ0N2I0 ZGZjMDEzYTk4MzBiDQo+IDllMWQ4ZmM1MWM5Nzk0ZjI0YWQzNzkNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysNCj4gYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0 Zm9ybUFTTFRhYmxlc0xpYi9Tcw0KPiBkdFBjaS5hc2wNCj4gQEAgLTAsMCArMSwyMTggQEANCj4g Ky8qKiBAZmlsZQ0KPiArICBTU0RUIGZvciBKdW5vIFBDSWUNCj4gKw0KPiArICBDb3B5cmlnaHQg KGMpIDIwMTQtMjAxNywgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsgICAg VGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmli dXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBhdA0K PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ICsN Cj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9O IEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNF TlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsN Cj4gKyoqLw0KPiArDQo+ICsjaW5jbHVkZSAiQXJtUGxhdGZvcm0uaCINCj4gKw0KPiArLyoNCj4g KyAgU2VlIEFDUEkgNi4xIFNlY3Rpb24gNi4yLjEzDQo+ICsNCj4gKyAgVGhlcmUgYXJlIHR3byB3 YXlzIHRoYXQgX1BSVCBjYW4gYmUgdXNlZC4gLi4uDQo+ICsNCj4gKyAgSW4gdGhlIGZpcnN0IG1v ZGVsLCBhIFBDSSBMaW5rIGRldmljZSBpcyB1c2VkIHRvIHByb3ZpZGUgYWRkaXRpb25hbA0KPiAr ICBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIHN1Y2ggYXMgd2hldGhlciB0aGUgaW50ZXJydXB0 IGlzIExldmVsIG9yDQo+ICsgIEVkZ2UgdHJpZ2dlcmVkLCBpdCBpcyBhY3RpdmUgSGlnaCBvciBM b3csIFNoYXJlZCBvciBFeGNsdXNpdmUsIGV0Yy4NCj4gKw0KPiArICBJbiB0aGUgc2Vjb25kIG1v ZGVsLCB0aGUgUENJIGludGVycnVwdHMgYXJlIGhhcmR3aXJlZCB0byBzcGVjaWZpYw0KPiArICBp bnRlcnJ1cHQgaW5wdXRzIG9uIHRoZSBpbnRlcnJ1cHQgY29udHJvbGxlciBhbmQgYXJlIG5vdA0K PiArICBjb25maWd1cmFibGUuIEluIHRoaXMgY2FzZSwgdGhlIFNvdXJjZSBmaWVsZCBpbiBfUFJU IGRvZXMgbm90DQo+ICsgIHJlZmVyZW5jZSBhIGRldmljZSwgYnV0IGluc3RlYWQgY29udGFpbnMg dGhlIHZhbHVlIHplcm8sIGFuZCB0aGUNCj4gKyAgU291cmNlIEluZGV4IGZpZWxkIGNvbnRhaW5z IHRoZSBnbG9iYWwgc3lzdGVtIGludGVycnVwdCB0byB3aGljaCB0aGUNCj4gKyAgUENJIGludGVy cnVwdCBpcyBoYXJkd2lyZWQuDQo+ICsNCj4gKyAgV2UgdXNlIHRoZSBmaXJzdCBtb2RlbCB3aXRo IGxpbmsgaW5kaXJlY3Rpb24gdG8gc2V0IHRoZSBjb3JyZWN0DQo+ICsgIGludGVycnVwdCB0eXBl IGFzIFBDSSBkZWZhdWx0cyAoTGV2ZWwgVHJpZ2dlcmVkLCBBY3RpdmUgTG93KSBhcmUgbm90DQo+ ICsgIGNvbXBhdGlibGUgd2l0aCBHSUN2Mi4NCj4gKyovDQo+ICsjZGVmaW5lIExOS19ERVZJQ0Uo VW5pcXVlX0lkLCBMaW5rX05hbWUsIGlycSkNCj4gXA0KPiArICAgICAgICBEZXZpY2UoTGlua19O YW1lKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgTmFtZShfSElELCBFSVNBSUQoIlBOUDBD MEYiKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICAgICAgICAgICAgTmFtZShfVUlELCBVbmlxdWVfSWQpICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAg ICAgTmFtZShfUFJTLCBSZXNvdXJjZVRlbXBsYXRlKCkgeyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgICAgICAgICAgIEludGVycnVw dChSZXNvdXJjZVByb2R1Y2VyLCBMZXZlbCwgQWN0aXZlSGlnaCwgRXhjbHVzaXZlKSB7IGlycSB9 DQo+IFwNCj4gKyAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAg ICAgICAgIE1ldGhvZCAoX0NSUywgMCkgeyBSZXR1cm4gKF9QUlMpIH0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgIE1ldGhvZCAo X1NSUywgMSkgeyB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgICAgICAgIE1ldGhvZCAoX0RJUykgeyB9ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgICAgICAgfQ0KPiArDQo+ICsjZGVmaW5lIFBSVF9FTlRSWShBZGRyZXNzLCBQaW4s IExpbmspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgICAgUGFja2FnZSAoNCkgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICAgICAgICAgICAgQWRkcmVzcywgICAgLyogdXNlcyB0aGUgc2FtZSBmb3JtYXQgYXMg X0FEUiAqLw0KPiBcDQo+ICsgICAgICAgICAgICBQaW4sICAgICAgICAvKiBUaGUgUENJIHBpbiBu dW1iZXIgb2YgdGhlIGRldmljZSAoMC1JTlRBLCAxLUlOVEIsIDItSU5UQywNCj4gMy1JTlREKS4g Ki8gIFwNCj4gKyAgICAgICAgICAgIExpbmssICAgICAgIC8qIEludGVycnVwdCBhbGxvY2F0ZWQg dmlhIExpbmsgZGV2aWNlLiAqLw0KPiBcDQo+ICsgICAgICAgICAgICBaZXJvICAgICAgICAvKiBn bG9iYWwgc3lzdGVtIGludGVycnVwdCBudW1iZXIgKG5vIHVzZWQpICovDQo+IFwNCj4gKyAgICAg ICAgICB9DQo+ICsNCj4gKy8qDQo+ICsgIFNlZSBSZWZlcmVuY2UgWzFdIDYuMS4xDQo+ICsgICJI aWdoIHdvcmTigJNEZXZpY2UgIywgTG93IHdvcmTigJNGdW5jdGlvbiAjLiAoZm9yIGV4YW1wbGUs IGRldmljZSAzLA0KPiBmdW5jdGlvbiAyIGlzDQo+ICsgICAweDAwMDMwMDAyKS4gVG8gcmVmZXIg dG8gYWxsIHRoZSBmdW5jdGlvbnMgb24gYSBkZXZpY2UgIywgdXNlIGEgZnVuY3Rpb24NCj4gbnVt YmVyIG9mIEZGRkYpLiINCj4gKyovDQo+ICsjZGVmaW5lIFJPT1RfUFJUX0VOVFJZKFBpbiwgTGlu aykgICBQUlRfRU5UUlkoMHgwMDAwRkZGRiwgUGluLCBMaW5rKQ0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERldmljZSAwIGZvciBCcmlk Z2UuDQo+ICsNCj4gK0RlZmluaXRpb25CbG9jaygiU3NkdFBjaS5hbWwiLCAiU1NEVCIsIDEsICJB Uk1MVEQiLCAiQVJNLUpVTk8iLA0KPiBFRklfQUNQSV9BUk1fT0VNX1JFVklTSU9OKSB7DQo+ICsg IFNjb3BlKF9TQikgew0KPiArICAgICAgICAvLw0KPiArICAgICAgICAvLyBQQ0kgUm9vdCBDb21w bGV4DQo+ICsgICAgICAgIC8vDQo+ICsgICAgICAgIExOS19ERVZJQ0UoMSwgTE5LQSwgMTY4KQ0K PiArICAgICAgICBMTktfREVWSUNFKDIsIExOS0IsIDE2OSkNCj4gKyAgICAgICAgTE5LX0RFVklD RSgzLCBMTktDLCAxNzApDQo+ICsgICAgICAgIExOS19ERVZJQ0UoNCwgTE5LRCwgMTcxKQ0KPiAr DQo+ICsgICAgICAgIERldmljZShQQ0kwKQ0KPiArICAgIHsNCj4gKyAgICAgICAgICAgICAgICAg IE5hbWUoX0hJRCwgRUlTQUlEKCJQTlAwQTA4IikpIC8vIFBDSSBFeHByZXNzIFJvb3QgQnJpZGdl DQo+ICsgICAgICAgICAgICAgICAgICBOYW1lKF9DSUQsIEVJU0FJRCgiUE5QMEEwMyIpKSAvLyBD b21wYXRpYmxlIFBDSSBSb290IEJyaWRnZQ0KPiArICAgICAgICAgICAgICAgICAgTmFtZShfU0VH LCBaZXJvKSAvLyBQQ0kgU2VnbWVudCBHcm91cCBudW1iZXINCj4gKyAgICAgICAgICAgICAgICAg IE5hbWUoX0JCTiwgWmVybykgLy8gUENJIEJhc2UgQnVzIE51bWJlcg0KPiArICAgICAgICAgICAg ICAgICAgTmFtZShfQ0NBLCAxKSAgICAvLyBJbml0aWFsbHkgbWFyayB0aGUgUENJIGNvaGVyZW50 IChmb3IgSnVub1IxKQ0KPiArDQo+ICsgICAgICAgIC8vIFJvb3QgQ29tcGxleCAwDQo+ICsgICAg ICAgIERldmljZSAoUlAwKSB7DQo+ICsgICAgICAgICAgICBOYW1lKF9BRFIsIDB4RjAwMDAwMDAp ICAgIC8vIERldiAwLCBGdW5jIDANCj4gKyAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAg ICAgLy8gUENJIFJvdXRpbmcgVGFibGUNCj4gKyAgICAgICAgICAgICAgICBOYW1lKF9QUlQsIFBh Y2thZ2UoKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBST09UX1BSVF9FTlRSWSgwLCBM TktBKSwgICAvLyBJTlRBDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBST09UX1BSVF9FTlRS WSgxLCBMTktCKSwgICAvLyBJTlRCDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBST09UX1BS VF9FTlRSWSgyLCBMTktDKSwgICAvLyBJTlRDDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBS T09UX1BSVF9FTlRSWSgzLCBMTktEKSwgICAvLyBJTlREDQo+ICsgICAgICAgICAgICAgICAgfSkN Cj4gKyAgICAgICAgLy8gUm9vdCBjb21wbGV4IHJlc291cmNlcw0KPiArICAgICAgICAgICAgICAg IE1ldGhvZCAoX0NSUywgMCwgU2VyaWFsaXplZCkgew0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgTmFtZSAoUkJVRiwgUmVzb3VyY2VUZW1wbGF0ZSAoKSB7DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFdvcmRCdXNOdW1iZXIgKCAvLyBCdXMgbnVtYmVycyBhc3NpZ25lZCB0 byB0aGlzIHJvb3QNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBS ZXNvdXJjZVByb2R1Y2VyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE1pbkZpeGVkLCBNYXhGaXhlZCwgUG9zRGVjb2RlLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDAsICAgLy8gQWRkcmVzc0dyYW51bGFyaXR5DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAvLyBBZGRyZXNzTWluaW11 bSAtIE1pbmltdW0gQnVzIE51bWJlcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDI1NSwgLy8gQWRkcmVzc01heGltdW0gLSBNYXhpbXVtIEJ1cyBOdW1iZXINCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAgIC8vIEFkZHJlc3NU cmFuc2xhdGlvbiAtIFNldCB0byAwDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMjU2ICAvLyBSYW5nZUxlbmd0aCAtIE51bWJlciBvZiBCdXNzZXMNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIERXb3JkTWVtb3J5ICggLy8gMzItYml0IEJBUiBXaW5kb3dzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VQcm9kdWNlciwgUG9z RGVjb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbkZp eGVkLCBNYXhGaXhlZCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDYWNoZWFibGUsIFJlYWRXcml0ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vDQo+IEdyYW51bGFyaXR5DQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1MDAwMDAwMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KPiBNaW4gQmFzZSBBZGRy ZXNzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1N0ZGRkZG RiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAvLw0KPiBNYXggQmFzZSBBZGRyZXNzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLw0KPiBUcmFuc2xhdGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDA4MDAwMDAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQo+IExlbmd0aA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQo+ICsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVdvcmRNZW1vcnkgKCAvLyA2NC1iaXQgQkFSIFdpbmRvd3MN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVByb2R1 Y2VyLCBQb3NEZWNvZGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTWluRml4ZWQsIE1heEZpeGVkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENhY2hlYWJsZSwgUmVhZFdyaXRlLA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCj4gR3JhbnVsYXJpdHkNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDQwMDAwMDAwMDAsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8NCj4gTWlu IEJhc2UgQWRkcmVzcw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDB4NDBGRkZGRkZGRiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLw0KPiBNYXggQmFzZSBBZGRyZXNzDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KPiBUcmFuc2xhdGUNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwMA0KPiAvLyBM ZW5ndGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KPiArDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXb3JkSW8gKCAvLyBJTyB3aW5kb3cNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVByb2R1Y2VyLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbkZpeGVkLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heEZpeGVkLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc0RlY29kZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFbnRpcmVSYW5nZSwNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAwLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vDQo+IEdyYW51 bGFyaXR5DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAw MDAwMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLw0KPiBNaW4gQmFzZSBBZGRyZXNzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHgwMDdmZmZmZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBNYXgNCj4gQmFzZSBBZGRyZXNzDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg1ZjgwMDAwMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLw0KPiBUcmFu c2xhdGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAw MDAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLw0KPiBMZW5ndGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAsLCxUeXBlVHJhbnNsYXRpb24NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgfSkgLy8gTmFtZShSQlVGKQ0KPiArDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKFJCVUYpDQo+ICsgICAgICAgICAgICAg ICAgfSAvLyBNZXRob2QoX0NSUykNCj4gKw0KPiArICAgICAgICAgICAgICAgIC8vDQo+ICsgICAg ICAgICAgICAgICAgLy8gT1MgQ29udHJvbCBIYW5kb2ZmDQo+ICsgICAgICAgICAgICAgICAgLy8N Cj4gKyAgICAgICAgICAgICAgICBOYW1lKFNVUFAsIFplcm8pIC8vIFBDSSBfT1NDIFN1cHBvcnQg RmllbGQgdmFsdWUNCj4gKyAgICAgICAgICAgICAgICBOYW1lKENUUkwsIFplcm8pIC8vIFBDSSBf T1NDIENvbnRyb2wgRmllbGQgdmFsdWUNCj4gKw0KPiArICAgICAgICAgICAgICAgIC8qDQo+ICsg ICAgICAgICAgU2VlIFsxXSA2LjIuMTAsIFsyXSA0LjUNCj4gKyAgICAgICAgICAgICAgICAqLw0K PiArICAgICAgICAgICAgICAgIE1ldGhvZChfT1NDLDQpIHsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIC8vIENoZWNrIGZvciBwcm9wZXIgVVVJRA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgSWYoTEVxdWFsKEFyZzAsVG9VVUlEKCIzM0RCNEQ1Qi0xRkY3LTQwMUMtOTY1Ny0NCj4gNzQ0 MUMwM0RENzY2IikpKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENy ZWF0ZSBEV29yZC1hZHJlc3NhYmxlIGZpZWxkcyBmcm9tIHRoZSBDYXBhYmlsaXRpZXMNCj4gQnVm ZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURXb3JkRmllbGQo QXJnMywwLENEVzEpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENyZWF0ZURX b3JkRmllbGQoQXJnMyw0LENEVzIpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IENyZWF0ZURXb3JkRmllbGQoQXJnMyw4LENEVzMpDQo+ICsNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gU2F2ZSBDYXBhYmlsaXRpZXMgRFdvcmQyICYgMw0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZShDRFcyLFNVUFApDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFN0b3JlKENEVzMsQ1RSTCkNCj4gKw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGFsbG93IG5hdGl2ZSBob3QgcGx1ZyBjb250 cm9sIGlmIE9TIHN1cHBvcnRzOg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyAqIEFTUE0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKiBDbG9jayBQ TQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAqIE1TSS9NU0ktWA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZihMTm90RXF1YWwoQW5kKFNVUFAsIDB4 MTYpLCAweDE2KSkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IEFuZChDVFJMLDB4MUUsQ1RSTCkgLy8gTWFzayBiaXQgMCAoYW5kIHVuZGVmaW5lZA0KPiBiaXRz KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWx3YXlzIGFsbG93IG5hdGl2ZSBQTUUsIEFFUiAo bm8gZGVwZW5kZW5jaWVzKQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vIE5ldmVyIGFsbG93IFNIUEMgKG5vIFNIUEMgY29udHJvbGxlciBpbiB0aGlzIHN5c3RlbSkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5kKENUUkwsMHgxRCxDVFJMKQ0K PiArDQo+ICsjaWYgMA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZihMTm90 KEFuZChDRFcxLDEpKSkgeyAgICAgICAgICAgICAgICAvLyBRdWVyeSBmbGFnIGNsZWFyPw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2FibGUgR1BFcyBm b3IgZmVhdHVyZXMgZ3JhbnRlZCBuYXRpdmUgY29udHJvbC4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJZihBbmQoQ1RSTCwweDAxKSkgeyAgICAgICAgLy8gSG90 IHBsdWcgY29udHJvbCBncmFudGVkPw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU3RvcmUoMCxIUENFKSAgICAgICAgICAgICAgICAvLyBjbGVhciB0 aGUgaG90IHBsdWcgU0NJDQo+IGVuYWJsZSBiaXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlKDEsSFBDUykgICAgICAgICAgICAgICAgLy8g Y2xlYXIgdGhlIGhvdCBwbHVnIFNDSQ0KPiBzdGF0dXMgYml0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElmKEFuZChDVFJMLDB4MDQpKSB7ICAgICAgICAvLyBQTUUgY29udHJvbCBn cmFudGVkPw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU3RvcmUoMCxQTUNFKSAgICAgICAgICAgICAgICAvLyBjbGVhciB0aGUgUE1FIFNDSQ0KPiBl bmFibGUgYml0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBTdG9yZSgxLFBNQ1MpICAgICAgICAgICAgICAgIC8vIGNsZWFyIHRoZSBQTUUgU0NJDQo+ IHN0YXR1cyBiaXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYoQW5kKENUUkws MHgxMCkpIHsgICAgICAgIC8vIE9TIHJlc3RvcmluZyBQQ0llIGNhcA0KPiBzdHJ1Y3R1cmU/DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQg c3RhdHVzIHRvIG5vdCByZXN0b3JlIFBDSWUgY2FwIHN0cnVjdHVyZQ0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBvbiByZXN1bWUgZnJvbSBT Mw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3Rv cmUoMSxTM0NSKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArI2VuZGlmDQo+ICsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYoTE5vdEVxdWFsKEFyZzEsT25lKSkg eyAgICAgICAgLy8gVW5rbm93biByZXZpc2lvbg0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE9yKENEVzEsMHgwOCxDRFcxKQ0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYoTE5vdEVxdWFsKENEVzMsQ1RSTCkpIHsgICAgICAgIC8vIENhcGFiaWxpdGllcyBiaXRzIHdl cmUNCj4gbWFza2VkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg T3IoQ0RXMSwweDEwLENEVzEpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXBkYXRlIERXT1JEMyBpbiB0 aGUgYnVmZmVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlKENUUkws Q0RXMykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKEFyZzMpDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICB9IEVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBPcihDRFcxLDQsQ0RXMSkgLy8gVW5yZWNvZ25pemVkIFVVSUQNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuKEFyZzMpDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgfSAvLyBFbmQgX09TQw0KPiArICAg IH0gLy8gUENJMA0KPiArICB9DQo+ICt9DQo+IGRpZmYgLS1naXQNCj4gYS9QbGF0Zm9ybS9BUk0v SnVub1BrZy9Db25maWd1cmF0aW9uTWFuYWdlci9QbGF0Zm9ybUFTTFRhYmxlc0xpYi9Tcw0KPiBk dFVhcnQuYXNsDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvQ29uZmlndXJhdGlvbk1hbmFnZXIv UGxhdGZvcm1BU0xUYWJsZXNMaWIvU3MNCj4gZHRVYXJ0LmFzbA0KPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPiBpbmRleA0KPiAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw Li5kMzkzMmYyNzJkMWI4YTgxZTcNCj4gN2RjNWMzMzlhYjc1YWRhMGU5ZDNlYQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKw0KPiBiL1BsYXRmb3JtL0FSTS9KdW5vUGtnL0NvbmZpZ3VyYXRpb25NYW5h Z2VyL1BsYXRmb3JtQVNMVGFibGVzTGliL1NzDQo+IGR0VWFydC5hc2wNCj4gQEAgLTAsMCArMSw0 OCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFNTRFQgZm9yIFVBUlQNCj4gKw0KPiArICBDb3B5cmln aHQgKGMpIDIwMTQtMjAxNywgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsg ICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiArICBhcmUg bGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9u cyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4gKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0 cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZQ0KPiBmb3VuZCBh dA0KPiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ ICsNCj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNF IE9OIEFOICJBUyBJUyINCj4gQkFTSVMsDQo+ICsgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ ICsNCj4gKyoqLw0KPiArI2luY2x1ZGUgIkFybVBsYXRmb3JtLmgiDQo+ICsNCj4gK0RlZmluaXRp b25CbG9jaygiU3NkdFVhcnQuYW1sIiwgIlNTRFQiLCAxLCAiQVJNTFREIiwgIkFSTS1KVU5PIiwN Cj4gRUZJX0FDUElfQVJNX09FTV9SRVZJU0lPTikgew0KPiArICBTY29wZShfU0IpIHsNCj4gKyAg ICAvLyBVQVJUIFBMMDExDQo+ICsgICAgRGV2aWNlKENPTTIpIHsNCj4gKyAgICAgIE5hbWUoX0hJ RCwgIkFSTUgwMDExIikNCj4gKyAgICAgIE5hbWUoX0NJRCwgIlBMMDExIikNCj4gKyAgICAgIE5h bWUoX1VJRCwgWmVybykNCj4gKw0KPiArICAgICAgTWV0aG9kKF9TVEEpIHsNCj4gKyAgICAgICAg UmV0dXJuKDB4RikNCj4gKyAgICAgIH0NCj4gKw0KPiArICAgICAgTWV0aG9kKF9DUlMsIDB4MCwg Tm90U2VyaWFsaXplZCkgew0KPiArICAgICAgICBOYW1lKFJCVUYsIFJlc291cmNlVGVtcGxhdGUo KSB7DQo+ICsgICAgICAgICAgTWVtb3J5MzJGaXhlZCgNCj4gKyAgICAgICAgICAgIFJlYWRXcml0 ZSwNCj4gKyAgICAgICAgICAgIEZpeGVkUGNkR2V0NjQgKFBjZFNlcmlhbFJlZ2lzdGVyQmFzZSks DQo+ICsgICAgICAgICAgICAweDEwMDANCj4gKyAgICAgICAgICAgICkNCj4gKyAgICAgICAgICBJ bnRlcnJ1cHQoDQo+ICsgICAgICAgICAgICBSZXNvdXJjZUNvbnN1bWVyLA0KPiArICAgICAgICAg ICAgTGV2ZWwsDQo+ICsgICAgICAgICAgICBBY3RpdmVIaWdoLA0KPiArICAgICAgICAgICAgRXhj bHVzaXZlDQo+ICsgICAgICAgICAgICApIHsNCj4gKyAgICAgICAgICAgICAgRml4ZWRQY2RHZXQz MiAoUEwwMTFVYXJ0SW50ZXJydXB0KQ0KPiArICAgICAgICAgICAgfQ0KPiArICAgICAgICB9KQ0K PiArICAgICAgICBSZXR1cm4gKFJCVUYpDQo+ICsgICAgICB9DQo+ICsgICAgfQ0KPiArICB9DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Ecml2ZXJzL0FybUp1bm9E eGUvQXJtSnVub0R4ZS5jDQo+IGIvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvRHJpdmVycy9Bcm1KdW5v RHhlL0FybUp1bm9EeGUuYw0KPiBpbmRleA0KPiAxODQ5MWM3Mzc4NTIzZjM2NTY0NDY1OGMyNzBk ZTk1ZTcxMWM1YWMxLi4wYTQyZDIxZDRlOWI2MDgyNGYxZA0KPiAzMTNhNGQ1YWQ5ZTRiYzZkYjNh YSAxMDA2NDQNCj4gLS0tIGEvUGxhdGZvcm0vQVJNL0p1bm9Qa2cvRHJpdmVycy9Bcm1KdW5vRHhl L0FybUp1bm9EeGUuYw0KPiArKysgYi9QbGF0Zm9ybS9BUk0vSnVub1BrZy9Ecml2ZXJzL0FybUp1 bm9EeGUvQXJtSnVub0R4ZS5jDQo+IEBAIC0xLDYgKzEsNiBAQA0KPiAgLyoqIEBmaWxlDQo+ICAq DQo+IC0qICBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNSwgQVJNIExpbWl0ZWQuIEFsbCByaWdodHMg cmVzZXJ2ZWQuDQo+ICsqICBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNywgQVJNIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ICAqDQo+ICAqICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2Nv bXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICAqICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxl IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gQlNEIExpY2Vuc2UNCj4g QEAgLTMzLDkgKzMzLDEwIEBADQo+ICAjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiAgI2lu Y2x1ZGUgPExpYnJhcnkvUHJpbnRMaWIuaD4NCj4gDQo+IC0NCj4gKyNpZm5kZWYgRFlOQU1JQ19U QUJMRVNfRlJBTUVXT1JLDQo+ICAvLyBUaGlzIEdVSUQgbXVzdCBtYXRjaCB0aGUgRklMRV9HVUlE IGluDQo+IEFybVBsYXRmb3JtUGtnL0FybUp1bm9Qa2cvQWNwaVRhYmxlcy9BY3BpVGFibGVzLmlu Zg0KPiAgU1RBVElDIENPTlNUIEVGSV9HVUlEIG1KdW5vQWNwaVRhYmxlRmlsZSA9IHsgMHhhMWRk ODA4ZSwgMHgxZTk1LA0KPiAweDQzOTksIHsgMHhhYiwgMHhjMCwgMHg2NSwgMHgzYywgMHg4Miwg MHhlOCwgMHg1MywgMHgwYyB9IH07DQo+ICsjZW5kaWYNCj4gDQo+ICB0eXBlZGVmIHN0cnVjdCB7 DQo+ICAgIEFDUElfSElEX0RFVklDRV9QQVRIICAgICAgQWNwaURldmljZVBhdGg7DQo+IEBAIC00 ODcsMTEgKzQ4OCwxMyBAQCBBcm1KdW5vRW50cnlQb2ludCAoDQo+IA0KPiAgICBHZXRKdW5vUmV2 aXNpb24oSnVub1JldmlzaW9uKTsNCj4gDQo+ICsjaWZuZGVmIERZTkFNSUNfVEFCTEVTX0ZSQU1F V09SSw0KPiAgICAvLw0KPiAgICAvLyBUcnkgdG8gaW5zdGFsbCB0aGUgQUNQSSBUYWJsZXMNCj4g ICAgLy8NCj4gICAgU3RhdHVzID0gTG9jYXRlQW5kSW5zdGFsbEFjcGlGcm9tRnYgKCZtSnVub0Fj cGlUYWJsZUZpbGUpOw0KPiAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArI2VuZGlm DQo+IA0KPiAgICAvLw0KPiAgICAvLyBTZXR1cCBSMS9SMiBvcHRpb25zIGlmIG5vdCBhbHJlYWR5 IGRvbmUuDQo+IEBAIC01MTYsNiArNTE5LDcgQEAgQXJtSnVub0VudHJ5UG9pbnQgKA0KPiAgICAg ICAgICAgICAgICAgICAgICAmRW5kT2ZEeGVFdmVudA0KPiAgICAgICAgICAgICAgICAgICAgICAp Ow0KPiANCj4gKyNpZm5kZWYgRFlOQU1JQ19UQUJMRVNfRlJBTUVXT1JLDQo+ICAgICAgLy8gRGVj bGFyZSB0aGUgcmVsYXRlZCBBQ1BJIFRhYmxlcw0KPiAgICAgIEVmaUNyZWF0ZVByb3RvY29sTm90 aWZ5RXZlbnQgKA0KPiAgICAgICAgICAmZ0VmaUFjcGlUYWJsZVByb3RvY29sR3VpZCwNCj4gQEAg LTUyNCw2ICs1MjgsNyBAQCBBcm1KdW5vRW50cnlQb2ludCAoDQo+ICAgICAgICAgIE5VTEwsDQo+ ICAgICAgICAgICZtQWNwaVJlZ2lzdHJhdGlvbg0KPiAgICAgICAgICApOw0KPiArI2VuZGlmDQo+ ICAgIH0NCj4gDQo+ICAgIC8vDQo+IC0tDQo+ICdHdWlkKENFMTY1NjY5LTNFRjMtNDkzRi1CODVE LTYxOTBFRTVCOTc1OSknDQo+IA0KDQo=