From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=104.47.2.62; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=supreeth.venkatesh@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0062.outbound.protection.outlook.com [104.47.2.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7525E203BEA3A for ; Fri, 4 May 2018 16:20:48 -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=0fFNrxeeTwasoebnZPaHb+S8igwQdEGLbEzUcjd3Ubg=; b=DnfBB4q73paZ0bTC11AGTROgNmywF+Biq0jhCSBkoMgvNiACKTUbWFH4RcolZCLweYDW0g2F1vXcWEUtktav1kw7z9G6guEPb7MLLjaKkfhFAK7aejldIRTd213YwEnfa+BCGDuud9fFJQ4XDPifwxoGfUqX+ahw62Wva1fnQvo= Received: from AM4PR0802MB2306.eurprd08.prod.outlook.com (10.172.218.15) by AM4PR0802MB2196.eurprd08.prod.outlook.com (10.172.217.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.735.16; Fri, 4 May 2018 23:20:45 +0000 Received: from AM4PR0802MB2306.eurprd08.prod.outlook.com ([fe80::e117:6f62:6a9b:6be4]) by AM4PR0802MB2306.eurprd08.prod.outlook.com ([fe80::e117:6f62:6a9b:6be4%8]) with mapi id 15.20.0735.016; Fri, 4 May 2018 23:20:45 +0000 From: Supreeth Venkatesh To: Achin Gupta CC: "edk2-devel@lists.01.org" Thread-Topic: [PATCH v1 06/18] StandaloneMmPkg: Add an AArch64 specific entry point library. Thread-Index: AQHTzbWYAD51eIXwm0ysHFxjTXokaqQDfDoAgBtSHhA= Date: Fri, 4 May 2018 23:20:45 +0000 Message-ID: References: <20180406144223.10931-1-supreeth.venkatesh@arm.com> <20180406144223.10931-7-supreeth.venkatesh@arm.com> <20180416140421.GL663@e104320-lin> In-Reply-To: <20180416140421.GL663@e104320-lin> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Supreeth.Venkatesh@arm.com; x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR0802MB2196; 7:MHIIDuSIRm+7XgMt7bQY9W5J1fUF++epRY3H0J5FwpDpuelsxhJJvdjC9bSvFNbNdMIY3OmRCm/yfoQOLnH6bEWHZbX1pmHfSOJ5rvHZvvnMyE/4g901EtzAXXJ56JMmMXXfVoRtbgZCehk+DcOmI/+HcfeCgmGdPRTx9LiGl/3jPoxqCOD1P0mVBZ7DG1wllxRAr5ttis/ltgQA9SL25+jWKg5G2QibnPUJ8ejUmLU2LXgKJX2YdvWq70c92PBp x-ms-exchange-antispam-srfa-diagnostics: SOS;SOR; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(2017052603328)(7153060)(7193020); SRVR:AM4PR0802MB2196; x-ms-traffictypediagnostic: AM4PR0802MB2196: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(162533806227266)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231254)(944501410)(52105095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123562045)(20161123558120)(6072148)(201708071742011); SRVR:AM4PR0802MB2196; BCL:0; PCL:0; RULEID:; SRVR:AM4PR0802MB2196; x-forefront-prvs: 06628F7CA4 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(39860400002)(346002)(39380400002)(396003)(376002)(366004)(13464003)(199004)(189003)(52314003)(40434004)(105586002)(446003)(8936002)(106356001)(4326008)(11346002)(476003)(486006)(966005)(72206003)(5660300001)(6116002)(478600001)(305945005)(7736002)(3846002)(25786009)(81156014)(81166006)(8676002)(66066001)(14454004)(97736004)(316002)(5250100002)(3280700002)(99286004)(6246003)(86362001)(3660700001)(16200700003)(53946003)(74316002)(6306002)(9686003)(55016002)(6436002)(229853002)(102836004)(6862004)(2906002)(6636002)(6506007)(68736007)(59450400001)(53546011)(15188155005)(16799955002)(53376002)(33656002)(26005)(2900100001)(76176011)(7696005)(53936002)(5890100001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR0802MB2196; H:AM4PR0802MB2306.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 8tb8VqPwV69y/0EwlBO+tePHAjBBkWXmzJSjVXqB0p6pHMA3yliATXi4KbA0I0QAJsgxiTI8EJ9pNSYAAKc6JJKRlSHYQMLi1iAfcQ4D/7AbTpcnpVCUuNAfXXQcTsjWbjryXPRZB9154mfFyFwSIYCn71zgfRMN+jmQLxAFfABEyPsbbfQd0LoVqzrUe8rJ spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: 7c0d0ea0-07a9-4e32-4177-08d5b215a9b9 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c0d0ea0-07a9-4e32-4177-08d5b215a9b9 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 May 2018 23:20:45.3559 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR0802MB2196 Subject: Re: [PATCH v1 06/18] StandaloneMmPkg: Add an AArch64 specific entry point library. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 04 May 2018 23:20:49 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TXkgcmVzcG9uc2UgaW5saW5lLg0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTog QWNoaW4gR3VwdGENClNlbnQ6IE1vbmRheSwgQXByaWwgMTYsIDIwMTggOTowNCBBTQ0KVG86IFN1 cHJlZXRoIFZlbmthdGVzaCA8U3VwcmVldGguVmVua2F0ZXNoQGFybS5jb20+DQpDYzogZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmc7IG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tOyBsaW1pbmcuZ2Fv QGludGVsLmNvbTsgamlld2VuLnlhb0BpbnRlbC5jb207IGxlaWYubGluZGhvbG1AbGluYXJvLm9y ZzsgYXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZzsgbmQgPG5kQGFybS5jb20+DQpTdWJqZWN0OiBS ZTogW1BBVENIIHYxIDA2LzE4XSBTdGFuZGFsb25lTW1Qa2c6IEFkZCBhbiBBQXJjaDY0IHNwZWNp ZmljIGVudHJ5IHBvaW50IGxpYnJhcnkuDQoNCkhpIFN1cHJlZXRoLA0KDQpPbiBGcmksIEFwciAw NiwgMjAxOCBhdCAwMzo0MjoxMVBNICswMTAwLCBTdXByZWV0aCBWZW5rYXRlc2ggd3JvdGU6DQo+ IFRoZSBTdGFuZGFsb25lIE1NIGVudmlyb25tZW50IHJ1bnMgaW4gUy1FTDAgaW4gQUFyY2g2NCBv biBBUk0gU3RhbmRhcmQNCj4gUGxhdGZvcm1zIGFuZCBpcyBpbml0aWFsaXNlZCBkdXJpbmcgdGhl IFNFQyBwaGFzZS4gQVJNIFRydXN0ZWQgZmlybXdhcmUNCj4gaW4gRUwzIGlzIHJlc3BvbnNpYmxl IGZvciBpbml0aWFsaXNpbmcgdGhlIGFyY2hpdGVjdHVyYWwgY29udGV4dCBmb3INCj4gUy1FTDAg YW5kIGxvYWRpbmcgdGhlIFN0YW5kYWxvbmUgTU0gaW1hZ2UuIFRoZSBtZW1vcnkgYWxsb2NhdGVk IHRvIHRoaXMNCj4gaW1hZ2UgaXMgbWFya2VkIGFzIFJPK1guIEhlYXAgbWVtb3J5IGlzIG1hcmtl ZCBhcyBSVytYTi4NCj4NCj4gQ2VydGFpbiBhY3Rpb25zIGhhdmUgdG8gYmUgY29tcGxldGVkIHBy aW9yIHRvIGV4ZWN1dGluZyB0aGUgZ2VuZXJpYyBjb2RlDQo+IGluIHRoZSBTdGFuZGFsb25lIE1N IENvcmUgbW9kdWxlLiBUaGVzZSBhcmU6DQo+DQo+IDEuIE1lbW9yeSBwZXJtaXNzaW9uIGF0dHJp YnV0ZXMgZm9yIGVhY2ggc2VjdGlvbiBvZiB0aGUgU3RhbmRhbG9uZSBNTQ0KPiAgICBDb3JlIG1v ZHVsZSBuZWVkIHRvIGJlIGNoYW5nZWQgcHJpb3IgdG8gYWNjZXNzaW5nIGFueSBSVyBkYXRhLg0K Pg0KPiAyLiBBIEhvYiBsaXN0IGhhcyB0byBiZSBjcmVhdGVkIHdpdGggaW5mb3JtYXRpb24gdGhh dCBhbGxvd3MgdGhlIE1NDQo+ICAgIGVudmlyb25tZW50IHRvIGluaXRpYWxpc2UgYW5kIGRpc3Bh dGNoIGRyaXZlcnMuDQo+DQo+IEZ1cnRoZXJtb3JlLCB0aGlzIG1vZHVsZSBpcyByZXNwb25zaWJs ZSBmb3IgaGFuZGluZyBvdmVyIHJ1bnRpbWUgTU0NCj4gZXZlbnRzIHRvIHRoZSBTdGFuZGFsb25l IE1NIENQVSBkcml2ZXIgYW5kIHJldHVybmluZyBjb250cm9sIHRvIEFSTQ0KPiBUcnVzdGVkIEZp cm13YXJlIHVwb24gZXZlbnQgY29tcGxldGlvbi4gSGVuY2UgaXQgbmVlZHMgdG8ga25vdyB0aGUg Q1BVDQo+IGRyaXZlciBlbnRyeSBwb2ludC4NCj4NCj4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGFu IGVudHJ5IHBvaW50IG1vZHVsZSB0aGF0IEFSTSBUcnVzdGVkIEZpcm13YXJlDQo+IGp1bXBzIHRv IGluIFMtRUwwLiBJdCB0aGVuIHBlcmZvcm1zIHRoZSBhYm92ZSBhY3Rpb25zIGJlZm9yZSBjYWxs aW5nIHRoZQ0KPiBTdGFuZGFsb25lIE1NIEZvdW5kYXRpb24gZW50cnkgcG9pbnQgYW5kIGhhbmRs aW5nIHN1YnNlcXVlbnQgTU0gZXZlbnRzLg0KPg0KPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9D b3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6IEFjaGluIEd1 cHRhIDxhY2hpbi5ndXB0YUBhcm0uY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBTdXByZWV0aCBWZW5r YXRlc2ggPHN1cHJlZXRoLnZlbmthdGVzaEBhcm0uY29tPg0KPiAtLS0NCj4gIC4uLi9MaWJyYXJ5 L0FybS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC5oICAgICAgIHwgMjMyICsrKysrKysrKysr KysrKysrDQo+ICAuLi4vSW5jbHVkZS9MaWJyYXJ5L01tQ29yZVN0YW5kYWxvbmVFbnRyeVBvaW50 LmggICB8IDEwMSArKysrKysrKw0KPiAgLi4uL1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L0Fy bS9DcmVhdGVIb2JMaXN0LmMgfCAyMDAgKysrKysrKysrKysrKysrDQo+ICAuLi4vQXJtL1NldFBl cm1pc3Npb25zLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI3OCArKysrKysrKysrKysr KysrKysrKysNCj4gIC4uLi9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuYyAgICAgICAg ICAgICAgIHwgMjY0ICsrKysrKysrKysrKysrKysrKysNCj4gIC4uLi9TdGFuZGFsb25lTW1Db3Jl RW50cnlQb2ludC5pbmYgICAgICAgICAgICAgICAgIHwgIDUzICsrKysNCj4gIFN0YW5kYWxvbmVN bVBrZyA9PiBTdGFuZGFsb25lTW1Qa2d+SEVBRCAgICAgICAgICAgIHwgICAwDQo+ICA3IGZpbGVz IGNoYW5nZWQsIDExMjggaW5zZXJ0aW9ucygrKQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFN0YW5k YWxvbmVNbVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtL1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50 LmgNCg0KVGhlIG5hbWVzIG9mIHRoaXMgZmlsZSBhbmQgdGhlIG9uZSBiZWxvdyBhcmUgcmUtYXJy YW5nZW1lbnRzIG9mIHRoZSBzYW1lDQp3b3Jkcy4gVGhpcyBpcyBjb25mdXNpbmcuIEl0IHdvdWxk IGJlIGJldHRlciB0byBzdGljayB0byBvbmUgY29udmVudGlvbi4gU2luY2UNCnRoZSBuYW1lIG9m IHRoZSBwYWNrYWdlIHN0YXJ0cyB3aXRoIFN0YW5kYWxvbmVNbSwgZXZlcnl0aGluZyBlbHNlIHNo b3VsZCBmb2xsb3cNCnN1aXQuDQoNClNvIGNhbiB0aGlzIGZpbGUgYmUgcmVuYW1lZCB0byBBcm1T dGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC5oIGFuZCB0aGUgb25lIGJlbG93DQp0byBTdGFuZGFs b25lTW1Db3JlRW50cnlQb2ludC5oIHVubGVzcyB5b3UgdGhpbmsgdGhpcyBjYW4gYmUgZG9uZSBk aWZmZXJlbnRseT8NCltTdXByZWV0aF0gT2suIEkgaGF2ZSByZW5hbWVkIHRoZXNlIGFzICIgU3Rh bmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuaCIgYW5kICJBQXJjaDY0LyBTdGFuZGFsb25lTW1Db3Jl RW50cnlQb2ludC5oIi4NCg0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IFN0YW5kYWxvbmVNbVBrZy9J bmNsdWRlL0xpYnJhcnkvTW1Db3JlU3RhbmRhbG9uZUVudHJ5UG9pbnQuaA0KDQo8dGFnPg0KDQo+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1t Q29yZUVudHJ5UG9pbnQvQXJtL0NyZWF0ZUhvYkxpc3QuYw0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IFN0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9T ZXRQZXJtaXNzaW9ucy5jDQoNClBlQ29mZkV4dHJhQWN0aW9uTGliIGFuZCB0aGUgSG9iTGliIGFy ZSBwcmUtcmVxdWlzaXRlcyBmb3IgdGhlc2UgdHdvDQpmaWxlcy4gU2hvdWxkIHRoZXkgbm90IGFw cGVhciBmaXJzdCBpbiB0aGUgcGF0Y2ggc3RhY2s/DQpbU3VwcmVldGhdIEhvYmxpYiAtIHllcy4N ClBlQ29mZkV4dHJhQWN0aW9uTGliIC0gTm8sIGFzIGl0IGhhcyBubyBjb21waWxhdGlvbiBkZXBl bmRlbmNpZXMuIE9mIGNvdXJzZSwgaXQgd2lsbCBmYWlsIGF0IHJ1bnRpbWUsIGJ1dCBQZUNvZmZF eHRyYUFjdGlvbkxpYiBoYXMgYSByZXZlcnNlIGRlcGVuZGVuY3kNCm9uIFN0YW5kYWxvbmVNbVBr ZyBQQ0QuIEFueXdheSwgc2luY2UgdGhpcyBpcyBiZWluZyBzZW50IGFzIGEgc2VyaWVzLiBJIGhv cGUgaXQgd2lsbCBiZSBjaGVja2VkIGluIHRvZ2V0aGVyLg0KDQo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQXJt L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50LmMNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBTdGFu ZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC9TdGFuZGFsb25l TW1Db3JlRW50cnlQb2ludC5pbmYNCg0KQ2FuIHRoaXMgYW5kIHRoZSB0YWdnZWQgZmlsZSBhYm92 ZSBnbyBpbiBhIHNlcGFyYXRlIGNvbW1pdD8gQ2Fubm90IHNlZSBob3cgdGhleQ0KYXJlIHJlbGF0 ZWQgdG8gdGhlIEFybSBzcGVjaWZpYyBlbnRyeSBwb2ludC4NCltTdXByZWV0aF0gSSB3aWxsIG1v dmUgdGhlIGNvbW1pdCBvZiAuLi4vSW5jbHVkZS9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRy eVBvaW50LmggIHRvIHRoZSAiY29yZSIgY29tbWl0IGlkLiBSZXN0IG9mIHRoZW0gYXJlIEFBcmNo NjQgc3BlY2lmaWMgZW50cnkgcG9pbnRzLg0KDQo+ICByZW5hbWUgU3RhbmRhbG9uZU1tUGtnID0+ IFN0YW5kYWxvbmVNbVBrZ35IRUFEICgxMDAlKQ0KPg0KPiBkaWZmIC0tZ2l0IGEvU3RhbmRhbG9u ZU1tUGtnL0luY2x1ZGUvTGlicmFyeS9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuaCBi L1N0YW5kYWxvbmVNbVBrZy9JbmNsdWRlL0xpYnJhcnkvQXJtL1N0YW5kYWxvbmVNbUNvcmVFbnRy eVBvaW50LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMDI5 YzZjNDc2Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1N0YW5kYWxvbmVNbVBrZy9JbmNsdWRl L0xpYnJhcnkvQXJtL1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50LmgNCj4gQEAgLTAsMCArMSwy MzIgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBFbnRyeSBwb2ludCB0byB0aGUgU3RhbmRhbG9uZSBN TSBGb3VuZGF0aW9uIHdoZW4gaW5pdGlhbGlzZWQgZHVyaW5nIHRoZSBTRUMNCj4gKyAgcGhhc2Ug b24gQVJNIHBsYXRmb3Jtcw0KPiArDQo+ICtDb3B5cmlnaHQgKGMpIDIwMTcsIEFSTSBMdGQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KDQpDb3B5cmlnaHQgeWVhciBuZWVkcyB0byBiZSB1cGRh dGVkLg0KW1N1cHJlZXRoXSBPay4NCg0KPiArVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55 aW5nIG1hdGVyaWFscw0KPiArYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ICt3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2Ug bWF5IGJlIGZvdW5kIGF0DQo+ICtodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxp Y2Vuc2UucGhwDQo+ICsNCj4gK1RIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBC U0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArV0lUSE9VVCBXQVJSQU5USUVTIE9S IFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4N Cj4gKw0KPiArKiovDQo+ICsNCj4gKyNpZm5kZWYgX19NT0RVTEVfRU5UUllfUE9JTlRfSF9fDQo+ ICsjZGVmaW5lIF9fTU9EVUxFX0VOVFJZX1BPSU5UX0hfXw0KDQpOYW1lIG9mIHRoaXMgZGVmaW5l IG5lZWRzIHRvIGJlIGNoYW5nZWQNCltTdXByZWV0aF0gT2suDQoNCj4gKw0KPiArI2luY2x1ZGUg PExpYnJhcnkvUGVDb2ZmTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9GdkxpYi5oPg0KPiAr DQo+ICsjZGVmaW5lIENQVV9JTkZPX0ZMQUdfUFJJTUFSWV9DUFUgIDB4MDAwMDAwMDENCj4gKw0K PiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKCpQSV9NTV9DUFVfVFBfRldfRU5UUllQT0lO VCkgKA0KPiArICBJTiBVSU5UTiBFdmVudElkLA0KPiArICBJTiBVSU5UTiBDcHVOdW1iZXIsDQo+ ICsgIElOIFVJTlROIE5zQ29tbUJ1ZmZlckFkZHINCj4gKyAgKTsNCg0KVGhpcyB0eXBlZGVmIGlz IG5vdCBiZWluZyB1c2VkLg0KW1N1cHJlZXRoXSBPay4gUmVtb3ZlZC4NCg0KPiArDQo+ICt0eXBl ZGVmIHN0cnVjdCB7DQo+ICsgIFVJTlQ4ICBUeXBlOyAgICAgICAvKiB0eXBlIG9mIHRoZSBzdHJ1 Y3R1cmUgKi8NCj4gKyAgVUlOVDggIFZlcnNpb247ICAgIC8qIHZlcnNpb24gb2YgdGhpcyBzdHJ1 Y3R1cmUgKi8NCj4gKyAgVUlOVDE2IFNpemU7ICAgICAgLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVy ZSBpbiBieXRlcyAqLw0KPiArICBVSU5UMzIgQXR0cjsgICAgICAvKiBhdHRyaWJ1dGVzOiB1bnVz ZWQgYml0cyBTQlogKi8NCj4gK30gRUZJX1BBUkFNX0hFQURFUjsNCj4gKw0KPiArdHlwZWRlZiBz dHJ1Y3Qgew0KPiArICBVSU5UNjQgTXBpZHI7DQo+ICsgIFVJTlQzMiBMaW5lYXJJZDsNCj4gKyAg VUlOVDMyIEZsYWdzOw0KPiArfSBFRklfU0VDVVJFX1BBUlRJVElPTl9DUFVfSU5GTzsNCj4gKw0K PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBFRklfUEFSQU1fSEVBREVSICAgICAgICAgICAgICBI ZWFkZXI7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIFNwTWVtQmFzZTsNCj4g KyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgU3BNZW1MaW1pdDsNCj4gKyAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICAgICAgU3BJbWFnZUJhc2U7DQo+ICsgIFVJTlQ2NCAgICAgICAg ICAgICAgICAgICAgICAgIFNwU3RhY2tCYXNlOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICAgICBTcEhlYXBCYXNlOw0KPiArICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICBT cE5zQ29tbUJ1ZkJhc2U7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIFNwU2hh cmVkQnVmQmFzZTsNCj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgU3BJbWFnZVNp emU7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgIFNwUGNwdVN0YWNrU2l6ZTsN Cj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgU3BIZWFwU2l6ZTsNCj4gKyAgVUlO VDY0ICAgICAgICAgICAgICAgICAgICAgICAgU3BOc0NvbW1CdWZTaXplOw0KPiArICBVSU5UNjQg ICAgICAgICAgICAgICAgICAgICAgICBTcFBjcHVTaGFyZWRCdWZTaXplOw0KPiArICBVSU5UMzIg ICAgICAgICAgICAgICAgICAgICAgICBOdW1TcE1lbVJlZ2lvbnM7DQo+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgICAgICAgIE51bUNwdXM7DQo+ICsgIEVGSV9TRUNVUkVfUEFSVElUSU9OX0NQ VV9JTkZPICpDcHVJbmZvOw0KPiArfSBFRklfU0VDVVJFX1BBUlRJVElPTl9CT09UX0lORk87DQo+ ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgRUZJX1BBUkFNX0hFQURFUiAgICAgICAgICAg ICAgIGg7DQo+ICsgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICBTcFN0YWNrQmFzZTsN Cj4gKyAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgIFNwU2hhcmVkQnVmQmFzZTsNCj4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNwUGNwdVN0YWNrU2l6ZTsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgIFNwUGNwdVNoYXJlZEJ1ZlNpemU7DQo+ICsg IEVGSV9TRUNVUkVfUEFSVElUSU9OX0NQVV9JTkZPICBDcHVJbmZvOw0KPiArfSBFRklfU0VDVVJF X1BBUlRJVElPTl9XQVJNX0JPT1RfSU5GTzsNCg0KVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBub3Qg YmVpbmcgdXNlZC4NCltTdXByZWV0aF0gT2suIFJlbW92ZWQuDQoNCj4gKw0KPiArDQo+ICt0eXBl ZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoKlBJX01NX0FSTV9URl9DUFVfRFJJVkVSX0VOVFJZUE9J TlQpICgNCj4gKyAgSU4gVUlOVE4gRXZlbnRJZCwNCj4gKyAgSU4gVUlOVE4gQ3B1TnVtYmVyLA0K PiArICBJTiBVSU5UTiBOc0NvbW1CdWZmZXJBZGRyDQo+ICsgICk7DQoNClRoaXMgcHJvdG90eXBl IGludGVyZmFjZSBpcyBub3QgYWRlcXVhdGUgZm9yIHVwc3RyZWFtaW5nLiBJIGFtIHRoaW5raW5n IG9mIHRoZQ0KZm9sbG93aW5nOg0KDQp0eXBlZGVmDQpFRklfU1RBVFVTDQooKlBJX01NX0FSTV9U Rl9DUFVfRFJJVkVSX0VOVFJZUE9JTlQpICgNCiAgSU4gVUlOVDY0IEV2ZW50SW5mb0FkZHIsDQog IElOIFVJTlQzMiBFdmVudEluZm9TaXplLA0KICBJTiBVSU5UMzIgQ3B1TnVtYmVyDQogICk7DQoN CltTdXByZWV0aF0gSSBhbSBPayB3aXRoIGl0LiBIb3dldmVyLCB3ZSBzaG91bGQgc3RpbGwgdXNl ICJVSU5UTiIgYXMgZGF0YSB0eXBlcywgYXMgdGhlc2UgYXJlIGRlcml2ZWQgZnJvbSBlaXRoZXIg U01DIG9yIFNWQyBhcmd1bWVudHMgYW5kDQp0aGV5IGRlcGVuZCBvbiAgcmVnaXN0ZXIgbGVuZ3Ro IHdoaWNoIGlzIGFyY2hpdGVjdHVyZSBzcGVjaWZpYy4gKG5vdCB0aGF0IHdlIGFyZSBzdXBwb3J0 aW5nIDMyIGJpdCBidXQgc3RpbGwgZnV0dXJlIHByb29maW5nIGl0KS4NCg0KV2hlbiB0aGUgTU1f Q09NTVVOSUNBVEUgU01DIGlzIGludm9rZWQsIEV2ZW50SW5mb0FkZHIgLT4gTU0gY29tbXVuaWNh dGlvbg0KYnVmZmVyLiBEaXR0byBmb3IgRXZlbnRJbmZvU2l6ZS4NCg0KSSBkb24ndCB0aGluayB0 aGVyZSBpcyBhIG5lZWQgdG8gcGFzcyBFdmVudElkIGFueSBsb25nZXIuIFRoZSBvcmlnaW5hbCB0 aGlua2luZw0Kd2FzIHRoYXQgZm9yIGFzeW5jaHJvbm91cyBldmVudHMgZS5nLiBpbnRlcnJ1cHRz IGhhbmRsZWQgaW4gYW4gTU0gcGFydGl0aW9uLCBBcm0NClRGIHdpbGwgbm90IHVzZSBVVUlEcy4g SW5zdGVhZCBFdmVudElEcyB3aWxsIGJlIHVzZWQuIEhlbmNlIHRoZXJlIHdhcyBhIG5lZWQgdG8N CmNvbnZlcnQgYW4gRXZlbnRJRCBpbnRvIGEgVVVJRCBpbiB0aGUgTU0gQ1BVIERyaXZlci4gSXQg d291bGQgdGhlbiB1c2UgdGhlIFVVSUQNCnRvIGNhbGwgU21pTWFuYWdlKCkuIFRoaXMgcmVzdHJp Y3Rpb24gaXMgbm8gbG9uZ2VyIHRydWUuIFNvLCB0aGUgU1BNIGNhbg0KZGVsZWdhdGUgYW4gYXN5 bmNocm9ub3VzIGV2ZW50IHVzaW5nIHRoZSBHVUlEIG9mIGEgU3RhbmRhbG9uZU1NIGRyaXZlciBq dXN0IGxpa2UNCnRoZSBub3JtYWwgd29ybGQgcG9wdWxhdGVzIHRoZSBjb21tdW5pY2F0aW9uIGJ1 ZmZlci4NCg0KVGhpcyB3aWxsIHJlc3VsdCBpbiBjaGFuZ2VzIHRvIHRoZSBNTSBDUFUgZHJpdmVy LiBJIHdpbGwgY29tbWVudCBvbiB0aG9zZQ0Kc2VwYXJhdGVseS4NCg0KV2UgYWxzbyBuZWVkIHRv IHR3ZWFrIHRoZSBBQkkgZHVyaW5nIGFuIEVSRVQgZnJvbSBTUF9FVkVOVF9DT01QTEVURSB0byB0 aGUNCmZvbGxvd2luZy4NCg0KeDAgLT4gQWRkcmVzcyBvZiB2ZXJzaW9uZWQgZGF0YSBzdHJ1Y3R1 cmUgcG9wdWxhdGVkIGluIFJPIG1lbW9yeSBzaGFyZWQgYmV0d2Vlbg0KICAgICAgU1BNIGFuZCBT UCArIFBheWxvZA0KeDEgLT4gTUJaLiBSZXNlcnZlZC4NCngyIC0+IE1CWi4gUmVzZXJ2ZWQuDQp4 MyAtPiBNQlouIFJlc2VydmVkLg0KDQpUaGUgdmVyc2lvbmVkIGRhdGEgc3RydWN0dXJlIGNvdWxk IGxvb2sgbGlrZSB0aGlzOg0KDQp0eXBlZGVmIHN0cnVjdCB7Xk0NCiAgRUZJX1BBUkFNX0hFQURF UiAgICAgICAgICAgICAgSGVhZGVyO15NDQogIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAg IENwdU51bWJlcjteTQ0KICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgICBFdmVudEJ1ZmZl ckFkZHJlc3M7Xk0gLy8gTU0gQ29tbXVuaWNhdGlvbiBidWZmZXINCiAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICAgRXZlbnRCdWZmZXJTaXplO15NICAgIC8vIE1NIENvbW0uIGJ1ZmZlciBz aXplDQp9IEVGSV9TRUNVUkVfUEFSVElUSU9OX0VWRU5UX0lORk87Xk0NCg0KVGhlIHBvaW50IGJl aW5nIHRoYXQganVzdCBsaWtlIHRoZSBTdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludCBhbmQgU1BN IHNoYXJlIGENCmRhdGEgc3RydWN0dXJlIHRvIHBhc3MgaW5mb3JtYXRpb24gZHVyaW5nIGluaXRp YWxpc2F0aW9uLCB0aGUgYWJvdmUgZGF0YQ0Kc3RydWN0dXJlIHdpbGwgYmUgdXNlZCB0byBwYXNz IGluZm9ybWF0aW9uIHdoZW4gYW4gZXZlbnQgaGFzIHRvIGJlIGRlbGVnYXRlZA0KZnJvbSB0aGUg U1BNLg0KW1N1cHJlZXRoXSBZZXMuIEJ1dCBDdXJyZW50bHksIHVwLXN0cmVhbWVkIGFybS10ZiBn ZXRzIGJhY2sgZXZlbnQgY29tcGxldGUgSUQgZnJvbSBBcmcwIGFuZCBzdGF0dXMgZnJvbSBBcmcx Lg0KSGVuY2UgdGhlc2UgY2hhbmdlcyBpbiBlZGsyIHNob3VsZCBiZSB1cC1zdHJlYW1lZCB3aGVu IGFybS10ZiBjb21wbGV0ZXMgdGhlIGltcGxlbWVudGF0aW9uIGFzIHBlciBuZXcgU1BSVCBpbnRl cmZhY2UuDQoNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBQSV9NTV9BUk1fVEZfQ1BV X0RSSVZFUl9FTlRSWVBPSU5UICpBcm1UZkNwdURyaXZlckVwUHRyOw0KPiArfSBBUk1fVEZfQ1BV X0RSSVZFUl9FUF9ERVNDUklQVE9SOw0KPiArDQo+ICt0eXBlZGVmIFJFVFVSTl9TVEFUVVMgKCpS RUdJT05fUEVSTUlTU0lPTl9VUERBVEVfRlVOQykgKA0KPiArICBJTiAgRUZJX1BIWVNJQ0FMX0FE RFJFU1MgICAgICBCYXNlQWRkcmVzcywNCj4gKyAgSU4gIFVJTlQ2NCAgICAgICAgICAgICAgICAg ICAgTGVuZ3RoDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBQcml2aWxlZ2VkIGZpcm13YXJl IGFzc2lnbnMgUk8gJiBFeGVjdXRhYmxlIGF0dHJpYnV0ZXMgdG8gYWxsIG1lbW9yeSBvY2N1cGll ZA0KPiArICBieSB0aGUgQm9vdCBGaXJtd2FyZSBWb2x1bWUuIFRoaXMgZnVuY3Rpb24gc2V0cyB0 aGUgY29ycmVjdCBwZXJtaXNzaW9ucyBvZg0KPiArICBzZWN0aW9ucyBpbiB0aGUgU3RhbmRhbG9u ZSBNTSBDb3JlIG1vZHVsZSB0byBiZSBhYmxlIHRvIGFjY2VzcyBSTyBhbmQgUlcgZGF0YQ0KPiAr ICBhbmQgbWFrZSBmdXJ0aGVyIHByb2dyZXNzIGluIHRoZSBib290IHByb2Nlc3MuDQo+ICsNCj4g KyAgQHBhcmFtICBJbWFnZUNvbnRleHQgICAgICAgICAgIFBvaW50ZXIgdG8gUEUvQ09GRiBpbWFn ZSBjb250ZXh0DQo+ICsgIEBwYXJhbSAgU2VjdGlvbkhlYWRlck9mZnNldCAgICBPZmZzZXQgb2Yg UEUvQ09GRiBpbWFnZSBzZWN0aW9uIGhlYWRlcg0KPiArICBAcGFyYW0gIE51bWJlck9mU2VjdGlv bnMgICAgICAgTnVtYmVyIG9mIFNlY3Rpb25zDQo+ICsgIEBwYXJhbSAgVGV4dFVwZGF0ZXIgICAg ICAgICAgICBGdW5jdGlvbiB0byBjaGFuZ2UgY29kZSBwZXJtaXNzaW9ucw0KPiArICBAcGFyYW0g IFJlYWRPbmx5VXBkYXRlciAgICAgICAgRnVuY3Rpb24gdG8gY2hhbmdlIFJPIHBlcm1pc3Npb25z DQo+ICsgIEBwYXJhbSAgUmVhZFdyaXRlVXBkYXRlciAgICAgICBGdW5jdGlvbiB0byBjaGFuZ2Ug UlcgcGVybWlzc2lvbnMNCj4gKw0KPiArKiovDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4g K1VwZGF0ZU1tRm91bmRhdGlvblBlQ29mZlBlcm1pc3Npb25zICgNCj4gKyAgSU4gIENPTlNUIFBF X0NPRkZfTE9BREVSX0lNQUdFX0NPTlRFWFQgICAgICAqSW1hZ2VDb250ZXh0LA0KPiArICBJTiAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb25IZWFkZXJPZmZz ZXQsDQo+ICsgIElOICBDT05TVCAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVt YmVyT2ZTZWN0aW9ucywNCg0KVUlOVDMyPw0KW1N1cHJlZXRoXSBOdW1iZXJPZlNlY3Rpb25zIGlz IGFjdHVhbGx5IFVJTlQxNiBhcyBwZXIgYXMgdGhlIHBlaW1hZ2UuaCBoZWFkZXIgZmlsZS4NCg0K PiArICBJTiAgUkVHSU9OX1BFUk1JU1NJT05fVVBEQVRFX0ZVTkMgICAgICAgICAgIFRleHRVcGRh dGVyLA0KPiArICBJTiAgUkVHSU9OX1BFUk1JU1NJT05fVVBEQVRFX0ZVTkMgICAgICAgICAgIFJl YWRPbmx5VXBkYXRlciwNCj4gKyAgSU4gIFJFR0lPTl9QRVJNSVNTSU9OX1VQREFURV9GVU5DICAg ICAgICAgICBSZWFkV3JpdGVVcGRhdGVyDQo+ICsgICk7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsg IFByaXZpbGVnZWQgZmlybXdhcmUgYXNzaWducyBSTyAmIEV4ZWN1dGFibGUgYXR0cmlidXRlcyB0 byBhbGwgbWVtb3J5IG9jY3VwaWVkDQo+ICsgIGJ5IHRoZSBCb290IEZpcm13YXJlIFZvbHVtZS4g VGhpcyBmdW5jdGlvbiBsb2NhdGVzIHRoZSBzZWN0aW9uIGluZm9ybWF0aW9uIG9mDQo+ICsgIHRo ZSBTdGFuZGFsb25lIE1NIENvcmUgbW9kdWxlIHRvIGJlIGFibGUgdG8gY2hhbmdlIHBlcm1pc3Np b25zIG9mIHRoZQ0KPiArICBpbmRpdmlkdWFsIHNlY3Rpb25zIGxhdGVyIGluIHRoZSBib290IHBy b2Nlc3MuDQo+ICsNCj4gKyAgQHBhcmFtICBUZURhdGEgICAgICAgICAgICAgICAgIFBvaW50ZXIg dG8gUEUvQ09GRiBpbWFnZSBkYXRhDQo+ICsgIEBwYXJhbSAgSW1hZ2VDb250ZXh0ICAgICAgICAg ICBQb2ludGVyIHRvIFBFL0NPRkYgaW1hZ2UgY29udGV4dA0KPiArICBAcGFyYW0gIFNlY3Rpb25I ZWFkZXJPZmZzZXQgICAgT2Zmc2V0IG9mIFBFL0NPRkYgaW1hZ2Ugc2VjdGlvbiBoZWFkZXINCj4g KyAgQHBhcmFtICBOdW1iZXJPZlNlY3Rpb25zICAgICAgIE51bWJlciBvZiBTZWN0aW9ucw0KPiAr DQo+ICsqKi8NCj4gK0VGSV9TVEFUVVMNCj4gK0VGSUFQSQ0KPiArR2V0U3RhbmRhbG9uZU1tQ29y ZVBlQ29mZlNlY3Rpb25zICgNCj4gKyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKlRlRGF0YSwNCj4gKyAgSU4gIE9VVCAgIFBFX0NPRkZfTE9BREVSX0lNQUdFX0NP TlRFWFQgICAgKkltYWdlQ29udGV4dCwNCj4gKyAgSU4gIE9VVCAgIFVJTlQzMiAgICAgICAgICAg ICAgICAgICAgICAgICAgKlNlY3Rpb25IZWFkZXJPZmZzZXQ7DQo+ICsgIElOICBPVVQgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgICAgICpOdW1iZXJPZlNlY3Rpb25zOw0KPiArICApOw0K PiArDQo+ICsNCj4gKy8qKg0KPiArICBQcml2aWxlZ2VkIGZpcm13YXJlIGFzc2lnbnMgUk8gJiBF eGVjdXRhYmxlIGF0dHJpYnV0ZXMgdG8gYWxsIG1lbW9yeSBvY2N1cGllZA0KPiArICBieSB0aGUg Qm9vdCBGaXJtd2FyZSBWb2x1bWUuIFRoaXMgZnVuY3Rpb24gbG9jYXRlcyB0aGUgU3RhbmRhbG9u ZSBNTSBDb3JlDQo+ICsgIG1vZHVsZSBQRS9DT0ZGIGltYWdlIGluIHRoZSBCRlYgYW5kIHJldHVy bnMgdGhpcyBpbmZvcm1hdGlvbi4NCj4gKw0KPiArICBAcGFyYW0gIEJmdkFkZHJlc3MgICAgICAg ICAgICAgQmFzZSBBZGRyZXNzIG9mIEJvb3QgRmlybXdhcmUgVm9sdW1lDQo+ICsgIEBwYXJhbSAg VGVEYXRhICAgICAgICAgICAgICAgICBQb2ludGVyIHRvIGFkZHJlc3MgZm9yIGFsbG9jYXRpbmcg bWVtb3J5IGZvcg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEUvQ09GRiBp bWFnZSBkYXRhDQo+ICsgIEBwYXJhbSAgVGVEYXRhU2l6ZSAgICAgICAgICAgICBQb2ludGVyIHRv IHNpemUgb2YgUEUvQ09GRiBpbWFnZSBkYXRhDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRVUw0K PiArRUZJQVBJDQo+ICtMb2NhdGVTdGFuZGFsb25lTW1Db3JlUGVDb2ZmRGF0YSAoDQo+ICsgIElO ICAgICAgICBFRklfRklSTVdBUkVfVk9MVU1FX0hFQURFUiAgICAgICpCZnZBZGRyZXNzLA0KPiAr ICBJTiAgT1VUICAgVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKlRlRGF0YTsNCg0K VUlOVDY0Kio/DQoNCj4gKyAgSU4gIE9VVCAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg ICAgKlRlRGF0YVNpemU7DQoNClVJTlQzMj8NCg0KW1N1cHJlZXRoXSBGZnNGaW5kU2VjdGlvbkRh dGEgKA0KICBJTiBFRklfU0VDVElPTl9UWVBFICAgICAgICAgICAgICBTZWN0aW9uVHlwZSwNCiAg SU4gRUZJX0ZGU19GSUxFX0hFQURFUiAgICAgICAgICAgKkZmc0ZpbGVIZWFkZXIsDQogIE9VVCBW T0lEICAgICAgICAgICAgICAgICAgICAgICAgICoqU2VjdGlvbkRhdGEsDQogIE9VVCBVSU5UTiAg ICAgICAgICAgICAgICAgICAgICAgICpTZWN0aW9uRGF0YVNpemUNCiAgKTsNCkluIEZWIExpYnJh cnkgaGFzIHRoZXNlLCBzbyBub3QgY2hhbmdpbmcgdGhlbS4NCg0KPiArICApOw0KPiArDQo+ICsN Cj4gKy8qKg0KPiArICBVc2UgdGhlIGJvb3QgaW5mb3JtYXRpb24gcGFzc2VkIGJ5IHByaXZpbGVn ZWQgZmlybXdhcmUgdG8gcG9wdWxhdGUgYSBIT0IgbGlzdA0KPiArICBzdWl0YWJsZSBmb3IgY29u c3VtcHRpb24gYnkgdGhlIE1NIENvcmUgYW5kIGRyaXZlcnMuDQo+ICsNCj4gKyAgQHBhcmFtICBD cHVEcml2ZXJFbnRyeVBvaW50ICAgIEFkZHJlc3Mgb2YgTU0gQ1BVIGRyaXZlciBlbnRyeXBvaW50 DQo+ICsgIEBwYXJhbSAgUGF5bG9hZEJvb3RJbmZvICAgICAgICBCb290IGluZm9ybWF0aW9uIHBh c3NlZCBieSBwcml2aWxlZ2VkIGZpcm13YXJlDQo+ICsNCj4gKyoqLw0KPiArVk9JRCAqDQo+ICtF RklBUEkNCj4gK0NyZWF0ZUhvYkxpc3RGcm9tQm9vdEluZm8gKA0KPiArICBJTiAgT1VUICBQSV9N TV9BUk1fVEZfQ1BVX0RSSVZFUl9FTlRSWVBPSU5UICpDcHVEcml2ZXJFbnRyeVBvaW50LA0KPiAr ICBJTiAgICAgICBFRklfU0VDVVJFX1BBUlRJVElPTl9CT09UX0lORk8gICAgICpQYXlsb2FkQm9v dEluZm8NCj4gKyAgKTsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgVGhlIGVudHJ5IHBvaW50IG9m IFN0YW5kYWxvbmUgTU0gRm91bmRhdGlvbi4NCj4gKw0KPiArICBAcGFyYW0gIEhvYlN0YXJ0ICBQ b2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIEhPQiBMaXN0Lg0KDQpDb21tZW50IG5lZWRz IHRvIGJlIHVwZGF0ZWQuDQpbU3VwcmVldGhdIE9rLiBEb25lLg0KDQo+ICsNCj4gKyoqLw0KPiAr Vk9JRA0KPiArRUZJQVBJDQo+ICtfTW9kdWxlRW50cnlQb2ludCAoDQo+ICsgIElOIFZPSUQgICAg KlNoYXJlZEJ1ZkFkZHJlc3MsDQo+ICsgIElOIFVJTlQ2NCAgU2hhcmVkQnVmU2l6ZSwNCj4gKyAg SU4gVUlOVDY0ICBjb29raWUxLA0KPiArICBJTiBVSU5UNjQgIGNvb2tpZTINCj4gKyAgKTsNCg0K VGhlIEFCSSBmb3IgdGhlIGZpcnN0IEVSRVQgaW50byB0aGUgcGFydGl0aW9uIG5lZWRzIHRvIGJl IHR3ZWFrZWQuIEkgZG9uJ3QgdGhpbmsNCndlIG5lZWQgU2hhcmVkQnVmU2l6ZSBhcyB0aGlzIGlz IGRpc2NvdmVyYWJsZSBmcm9tIEhlYWRlci5TaXplIGluDQpFRklfU0VDVVJFX1BBUlRJVElPTl9C T09UX0lORk8uDQpbU3VwcmVldGhdIE9rLiBEb25lLg0KDQo+ICsNCj4gKw0KPiArLyoqDQo+ICsg IEF1dG9nZW5lcmF0ZWQgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgbGlicmFyeSBjb25zdHJ1Y3Rv cnMgZm9yIGFsbCBvZiB0aGUgbW9kdWxlJ3MgZGVwZW5kZW50IGxpYnJhcmllcy4NCj4gKw0KPiAr ICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IF9Nb2R1bGVFbnRyeVBvaW50KCkuDQo+ ICsgIFRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIHNldCBvZiBsaWJyYXJ5IGNvbnN0cnVjdG9ycyBm b3IgdGhlIHNldCBvZiBsaWJyYXJ5IGluc3RhbmNlcw0KPiArICB0aGF0IGEgbW9kdWxlIGRlcGVu ZHMgb24uICBUaGlzIGluY2x1ZGVzIGxpYnJhcnkgaW5zdGFuY2VzIHRoYXQgYSBtb2R1bGUgZGVw ZW5kcyBvbg0KPiArICBkaXJlY3RseSBhbmQgbGlicmFyeSBpbnN0YW5jZXMgdGhhdCBhIG1vZHVs ZSBkZXBlbmRzIG9uIGluZGlyZWN0bHkgdGhyb3VnaCBvdGhlcg0KPiArICBsaWJyYXJpZXMuIFRo aXMgZnVuY3Rpb24gaXMgYXV0b2dlbmVyYXRlZCBieSBidWlsZCB0b29scyBhbmQgdGhvc2UgYnVp bGQgdG9vbHMgYXJlDQo+ICsgIHJlc3BvbnNpYmxlIGZvciBjb2xsZWN0aW5nIHRoZSBzZXQgb2Yg bGlicmFyeSBpbnN0YW5jZXMsIGRldGVybWluZSB3aGljaCBvbmVzIGhhdmUNCj4gKyAgY29uc3Ry dWN0b3JzLCBhbmQgY2FsbGluZyB0aGUgbGlicmFyeSBjb25zdHJ1Y3RvcnMgaW4gdGhlIHByb3Bl ciBvcmRlciBiYXNlZCB1cG9uDQo+ICsgIGVhY2ggb2YgdGhlIGxpYnJhcnkgaW5zdGFuY2VzIG93 biBkZXBlbmRlbmNpZXMuDQo+ICsNCj4gKyAgQHBhcmFtICBJbWFnZUhhbmRsZSAgVGhlIGltYWdl IGhhbmRsZSBvZiB0aGUgRFhFIENvcmUuDQo+ICsgIEBwYXJhbSAgU3lzdGVtVGFibGUgIEEgcG9p bnRlciB0byB0aGUgRUZJIFN5c3RlbSBUYWJsZS4NCj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtF RklBUEkNCj4gK1Byb2Nlc3NMaWJyYXJ5Q29uc3RydWN0b3JMaXN0ICgNCj4gKyAgSU4gRUZJX0hB TkRMRSAgICAgICAgICAgICBJbWFnZUhhbmRsZSwNCj4gKyAgSU4gRUZJX01NX1NZU1RFTV9UQUJM RSAgKk1tU3lzdGVtVGFibGUNCj4gKyAgKTsNCj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQXV0b2dl bmVyYXRlZCBmdW5jdGlvbiB0aGF0IGNhbGxzIGEgc2V0IG9mIG1vZHVsZSBlbnRyeSBwb2ludHMu DQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBieSBfTW9kdWxlRW50cnlQ b2ludCgpLg0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBzZXQgb2YgbW9kdWxlIGVudHJ5 IHBvaW50cy4NCj4gKyAgVGhpcyBmdW5jdGlvbiBpcyBhdXRvZ2VuZXJhdGVkIGJ5IGJ1aWxkIHRv b2xzIGFuZCB0aG9zZSBidWlsZCB0b29scyBhcmUgcmVzcG9uc2libGUNCj4gKyAgZm9yIGNvbGxl Y3RpbmcgdGhlIG1vZHVsZSBlbnRyeSBwb2ludHMgYW5kIGNhbGxpbmcgdGhlbSBpbiBhIHNwZWNp ZmllZCBvcmRlci4NCj4gKw0KPiArICBAcGFyYW0gIEhvYlN0YXJ0ICBQb2ludGVyIHRvIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIEhPQiBMaXN0IHBhc3NlZCBpbiBmcm9tIHRoZSBQRUkgUGhhc2UuDQo+ ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcm9jZXNzTW9kdWxlRW50cnlQb2lu dExpc3QgKA0KPiArICBJTiBWT0lEICAqSG9iU3RhcnQNCj4gKyAgKTsNCj4gKw0KPiArI2VuZGlm DQo+IGRpZmYgLS1naXQgYS9TdGFuZGFsb25lTW1Qa2cvSW5jbHVkZS9MaWJyYXJ5L01tQ29yZVN0 YW5kYWxvbmVFbnRyeVBvaW50LmggYi9TdGFuZGFsb25lTW1Qa2cvSW5jbHVkZS9MaWJyYXJ5L01t Q29yZVN0YW5kYWxvbmVFbnRyeVBvaW50LmgNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMC4uZDYxMDVkNDkzNQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1N0YW5k YWxvbmVNbVBrZy9JbmNsdWRlL0xpYnJhcnkvTW1Db3JlU3RhbmRhbG9uZUVudHJ5UG9pbnQuaA0K PiBAQCAtMCwwICsxLDEwMSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIE1vZHVsZSBlbnRyeSBwb2lu dCBsaWJyYXJ5IGZvciBEWEUgY29yZS4NCg0KVGhpcyBjb21tZW50IG5lZWRzIHRvIGJlIGNoYW5n ZWQuDQpbU3VwcmVldGhdIE9rLiBEb25lLg0KPiArDQo+ICtDb3B5cmlnaHQgKGMpIDIwMDYgLSAy MDA4LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtDb3B5 cmlnaHQgKGMpIDIwMTYgLSAyMDE3LCBBUk0gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQoNCkNvcHlyaWdodCB5ZWFyIGhlcmUgYW5kIGV2ZXJ5d2hlcmUgZWxzZS4NCltTdXByZWV0 aF0gT2suIERvbmUuDQo+ICsNCj4gK1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBt YXRlcmlhbHMNCj4gK2FyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRl cm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArd2hpY2ggYWNjb21wYW5p ZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBi ZSBmb3VuZCBhdA0KPiAraHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiArDQo+ICtUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNEIExJ Q0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBS RVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ICsN Cj4gKyoqLw0KPiArDQo+ICsjaWZuZGVmIF9fTU9EVUxFX0VOVFJZX1BPSU5UX0hfXw0KPiArI2Rl ZmluZSBfX01PRFVMRV9FTlRSWV9QT0lOVF9IX18NCj4gKw0KPiArLy8vDQo+ICsvLy8gR2xvYmFs IHZhcmlhYmxlIHRoYXQgY29udGFpbnMgYSBwb2ludGVyIHRvIHRoZSBIb2IgTGlzdCBwYXNzZWQg aW50byB0aGUgRFhFIENvcmUgZW50cnkgcG9pbnQuDQo+ICsvLy8NCj4gK2V4dGVybiBWT0lEICAq Z0hvYkxpc3Q7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFRoZSBlbnRyeSBwb2ludCBvZiBQRS9D T0ZGIEltYWdlIGZvciB0aGUgRFhFIENvcmUuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBpcyB0 aGUgZW50cnkgcG9pbnQgZm9yIHRoZSBEWEUgQ29yZS4gVGhpcyBmdW5jdGlvbiBpcyByZXF1aXJl ZCB0byBjYWxsDQo+ICsgIFByb2Nlc3NNb2R1bGVFbnRyeVBvaW50TGlzdCgpIGFuZCBQcm9jZXNz TW9kdWxlRW50cnlQb2ludExpc3QoKSBpcyBuZXZlciBleHBlY3RlZCB0byByZXR1cm4uDQo+ICsg IFRoZSBEWEUgQ29yZSBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyBQcm9jZXNzTGlicmFyeUNv bnN0cnVjdG9yTGlzdCgpIGFzIHNvb24gYXMgdGhlIEVGSQ0KPiArICBTeXN0ZW0gVGFibGUgYW5k IHRoZSBpbWFnZSBoYW5kbGUgZm9yIHRoZSBEWEUgQ29yZSBpdHNlbGYgaGF2ZSBiZWVuIGVzdGFi bGlzaGVkLg0KPiArICBJZiBQcm9jZXNzTW9kdWxlRW50cnlQb2ludExpc3QoKSByZXR1cm5zLCB0 aGVuIEFTU0VSVCgpIGFuZCBoYWx0IHRoZSBzeXN0ZW0uDQoNClRoaXMgY29tbWVudCBuZWVkcyB0 byBiZSBjaGFuZ2VkIGFzIHRoaXMgaXMgbm90IHRoZSBEWEUgY29yZS4NCltTdXByZWV0aF0gT2su IERvbmUuDQoNCj4gKw0KPiArICBAcGFyYW0gIEhvYlN0YXJ0ICBQb2ludGVyIHRvIHRoZSBiZWdp bm5pbmcgb2YgdGhlIEhPQiBMaXN0IHBhc3NlZCBpbiBmcm9tIHRoZSBQRUkgUGhhc2UuDQo+ICsN Cj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtfTW9kdWxlRW50cnlQb2ludCAoDQo+ICsg IElOIFZPSUQgICpIb2JTdGFydA0KPiArICApOw0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBSZXF1 aXJlZCBieSB0aGUgRUJDIGNvbXBpbGVyIGFuZCBpZGVudGljYWwgaW4gZnVuY3Rpb25hbGl0eSB0 byBfTW9kdWxlRW50cnlQb2ludCgpLg0KPiArDQo+ICsgIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWly ZWQgdG8gY2FsbCBfTW9kdWxlRW50cnlQb2ludCgpIHBhc3NpbmcgaW4gSG9iU3RhcnQuDQo+ICsN Cj4gKyAgQHBhcmFtICBIb2JTdGFydCAgUG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBI T0IgTGlzdCBwYXNzZWQgaW4gZnJvbSB0aGUgUEVJIFBoYXNlLg0KPiArDQo+ICsqKi8NCj4gK1ZP SUQNCj4gK0VGSUFQSQ0KPiArRWZpTWFpbiAoDQo+ICsgIElOIFZPSUQgICpIb2JTdGFydA0KPiAr ICApOw0KPiArDQo+ICsNCj4gKy8qKg0KPiArICBBdXRvZ2VuZXJhdGVkIGZ1bmN0aW9uIHRoYXQg Y2FsbHMgdGhlIGxpYnJhcnkgY29uc3RydWN0b3JzIGZvciBhbGwgb2YgdGhlIG1vZHVsZSdzIGRl cGVuZGVudCBsaWJyYXJpZXMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxl ZCBieSBfTW9kdWxlRW50cnlQb2ludCgpLg0KPiArICBUaGlzIGZ1bmN0aW9uIGNhbGxzIHRoZSBz ZXQgb2YgbGlicmFyeSBjb25zdHJ1Y3RvcnMgZm9yIHRoZSBzZXQgb2YgbGlicmFyeSBpbnN0YW5j ZXMNCj4gKyAgdGhhdCBhIG1vZHVsZSBkZXBlbmRzIG9uLiAgVGhpcyBpbmNsdWRlcyBsaWJyYXJ5 IGluc3RhbmNlcyB0aGF0IGEgbW9kdWxlIGRlcGVuZHMgb24NCj4gKyAgZGlyZWN0bHkgYW5kIGxp YnJhcnkgaW5zdGFuY2VzIHRoYXQgYSBtb2R1bGUgZGVwZW5kcyBvbiBpbmRpcmVjdGx5IHRocm91 Z2ggb3RoZXINCj4gKyAgbGlicmFyaWVzLiBUaGlzIGZ1bmN0aW9uIGlzIGF1dG9nZW5lcmF0ZWQg YnkgYnVpbGQgdG9vbHMgYW5kIHRob3NlIGJ1aWxkIHRvb2xzIGFyZQ0KPiArICByZXNwb25zaWJs ZSBmb3IgY29sbGVjdGluZyB0aGUgc2V0IG9mIGxpYnJhcnkgaW5zdGFuY2VzLCBkZXRlcm1pbmUg d2hpY2ggb25lcyBoYXZlDQo+ICsgIGNvbnN0cnVjdG9ycywgYW5kIGNhbGxpbmcgdGhlIGxpYnJh cnkgY29uc3RydWN0b3JzIGluIHRoZSBwcm9wZXIgb3JkZXIgYmFzZWQgdXBvbg0KPiArICBlYWNo IG9mIHRoZSBsaWJyYXJ5IGluc3RhbmNlcyBvd24gZGVwZW5kZW5jaWVzLg0KPiArDQo+ICsgIEBw YXJhbSAgSW1hZ2VIYW5kbGUgIFRoZSBpbWFnZSBoYW5kbGUgb2YgdGhlIERYRSBDb3JlLg0KPiAr ICBAcGFyYW0gIFN5c3RlbVRhYmxlICBBIHBvaW50ZXIgdG8gdGhlIEVGSSBTeXN0ZW0gVGFibGUu DQo+ICsNCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtQcm9jZXNzTGlicmFyeUNvbnN0 cnVjdG9yTGlzdCAoDQo+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgSW1hZ2VIYW5kbGUs DQo+ICsgIElOIEVGSV9NTV9TWVNURU1fVEFCTEUgICAgKk1tU3lzdGVtVGFibGUNCj4gKyAgKTsN Cj4gKw0KPiArDQo+ICsvKioNCj4gKyAgQXV0b2dlbmVyYXRlZCBmdW5jdGlvbiB0aGF0IGNhbGxz IGEgc2V0IG9mIG1vZHVsZSBlbnRyeSBwb2ludHMuDQo+ICsNCj4gKyAgVGhpcyBmdW5jdGlvbiBt dXN0IGJlIGNhbGxlZCBieSBfTW9kdWxlRW50cnlQb2ludCgpLg0KPiArICBUaGlzIGZ1bmN0aW9u IGNhbGxzIHRoZSBzZXQgb2YgbW9kdWxlIGVudHJ5IHBvaW50cy4NCj4gKyAgVGhpcyBmdW5jdGlv biBpcyBhdXRvIGdlbmVyYXRlZCBieSBidWlsZCB0b29scyBhbmQgdGhvc2UgYnVpbGQgdG9vbHMg YXJlIHJlc3BvbnNpYmxlDQo+ICsgIGZvciBjb2xsZWN0aW5nIHRoZSBtb2R1bGUgZW50cnkgcG9p bnRzIGFuZCBjYWxsaW5nIHRoZW0gaW4gYSBzcGVjaWZpZWQgb3JkZXIuDQo+ICsNCj4gKyAgQHBh cmFtICBIb2JTdGFydCAgUG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBIT0IgTGlzdCBw YXNzZWQgaW4gZnJvbSB0aGUgUEVJIFBoYXNlLg0KPiArDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VG SUFQSQ0KPiArUHJvY2Vzc01vZHVsZUVudHJ5UG9pbnRMaXN0ICgNCj4gKyAgSU4gVk9JRCAgKkhv YlN0YXJ0DQo+ICsgICk7DQo+ICsNCj4gKyNlbmRpZg0KPiBkaWZmIC0tZ2l0IGEvU3RhbmRhbG9u ZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQXJtL0NyZWF0ZUhvYkxp c3QuYyBiL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50 L0FybS9DcmVhdGVIb2JMaXN0LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMC4uZjliM2ZhZWE4Zg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1N0YW5kYWxvbmVN bVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9DcmVhdGVIb2JMaXN0 LmMNCj4gQEAgLTAsMCArMSwyMDAgQEANCj4gKy8qKiBAZmlsZQ0KPiArICBFbnRyeSBwb2ludCB0 byB0aGUgU3RhbmRhbG9uZSBNTSBGb3VuZGF0aW9uIHdoZW4gaW5pdGlhbGl6ZWQgZHVyaW5nIHRo ZSBTRUMNCj4gKyAgcGhhc2Ugb24gQVJNIHBsYXRmb3Jtcw0KDQpUaGUgY29tbWVudCBuZWVkcyB0 byBiZSB1cGRhdGVkLg0KW1N1cHJlZXRoXSBPay4gRG9uZS4NCj4gKw0KPiArQ29weXJpZ2h0IChj KSAyMDE3LCBBUk0gTHRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1RoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCj4gK2FyZSBsaWNlbnNlZCBhbmQgbWFk ZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGlj ZW5zZQ0KPiArd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0 ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAraHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocC4NCj4gKw0KPiArVEhFIFBST0dSQU0gSVMgRElT VFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICtX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIg RVhQUkVTUyBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArDQo+ICsjaW5jbHVkZSA8 UGlNbS5oPg0KPiArDQo+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gKyNpbmNsdWRlIDxHdWlkL01t cmFtTWVtb3J5UmVzZXJ2ZS5oPg0KPiArI2luY2x1ZGUgPEd1aWQvTXBJbmZvcm1hdGlvbi5oPg0K PiArDQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FybU1tdUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvQXJtU3ZjTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2lu Y2x1ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGli cmFyeS9TZXJpYWxQb3J0TGliLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJk L0FybVN0ZFNtYy5oPg0KPiArDQo+ICtleHRlcm4gRUZJX0hPQl9IQU5ET0ZGX0lORk9fVEFCTEUq DQo+ICtIb2JDb25zdHJ1Y3RvciAoDQo+ICsgIElOIFZPSUQgICAqRWZpTWVtb3J5QmVnaW4sDQo+ ICsgIElOIFVJTlROICBFZmlNZW1vcnlMZW5ndGgsDQoNClVJTlQzMiBvciBVSU5UNjQ/DQpbU3Vw cmVldGhdIFVJTlROIGlzIGJldHRlci4NCg0KPiArICBJTiBWT0lEICAgKkVmaUZyZWVNZW1vcnlC b3R0b20sDQo+ICsgIElOIFZPSUQgICAqRWZpRnJlZU1lbW9yeVRvcA0KPiArICApOw0KPiArDQo+ ICsvLyBHVUlEIHRvIGlkZW50aWZ5IEhPQiB3aXRoIHdoZXJlYWJvdXRzIG9mIGNvbW11bmljYXRp b24gYnVmZmVyIHdpdGggTm9ybWFsDQo+ICsvLyBXb3JsZA0KPiArZXh0ZXJuIEVGSV9HVUlEIGdF ZmlTdGFuZGFsb25lTW1Ob25TZWN1cmVCdWZmZXJHdWlkOw0KPiArDQo+ICsvLyBHVUlEIHRvIGlk ZW50aWZ5IEhPQiB3aGVyZSB0aGUgZW50cnkgcG9pbnQgb2YgdGhlIENQVSBkcml2ZXIgd2lsbCBi ZQ0KPiArLy8gcG9wdWxhdGVkIHRvIGFsbG93IHRoaXMgZW50cnkgcG9pbnQgZHJpdmVyIHRvIGlu dm9rZSBpdCB1cG9uIHJlY2VpcHQgb2YgYW4NCj4gKy8vIGV2ZW50DQo+ICtleHRlcm4gRUZJX0dV SUQgZ0VmaUFybVRmQ3B1RHJpdmVyRXBEZXNjcmlwdG9yR3VpZDsNCj4gKw0KPiArLyoqDQo+ICsg IFVzZSB0aGUgYm9vdCBpbmZvcm1hdGlvbiBwYXNzZWQgYnkgcHJpdmlsZWdlZCBmaXJtd2FyZSB0 byBwb3B1bGF0ZSBhIEhPQiBsaXN0DQo+ICsgIHN1aXRhYmxlIGZvciBjb25zdW1wdGlvbiBieSB0 aGUgTU0gQ29yZSBhbmQgZHJpdmVycy4NCj4gKw0KPiArICBAcGFyYW0gIFBheWxvYWRCb290SW5m byAgICBCb290IGluZm9ybWF0aW9uIHBhc3NlZCBieSBwcml2aWxlZ2VkIGZpcm13YXJlDQo+ICsN Cj4gKyoqLw0KPiArVk9JRCAqDQo+ICtDcmVhdGVIb2JMaXN0RnJvbUJvb3RJbmZvICgNCj4gKyAg SU4gIE9VVCAgUElfTU1fQVJNX1RGX0NQVV9EUklWRVJfRU5UUllQT0lOVCAqQ3B1RHJpdmVyRW50 cnlQb2ludCwNCj4gKyAgSU4gICAgICAgRUZJX1NFQ1VSRV9QQVJUSVRJT05fQk9PVF9JTkZPICAg ICAqUGF5bG9hZEJvb3RJbmZvDQo+ICspDQo+ICt7DQo+ICsgIEVGSV9IT0JfSEFORE9GRl9JTkZP X1RBQkxFICAgICAgKkhvYlN0YXJ0Ow0KPiArICBFRklfUkVTT1VSQ0VfQVRUUklCVVRFX1RZUEUg ICAgIEF0dHJpYnV0ZXM7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXg7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyU2l6ZTsNCj4g KyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICBGbGFnczsNCj4gKyAgRUZJX01NUkFN X0hPQl9ERVNDUklQVE9SX0JMT0NLICAqTW1yYW1SYW5nZXNIb2I7DQo+ICsgIEVGSV9NTVJBTV9E RVNDUklQVE9SICAgICAgICAgICAgKk1tcmFtUmFuZ2VzOw0KPiArICBFRklfTU1SQU1fREVTQ1JJ UFRPUiAgICAgICAgICAgICpOc0NvbW1CdWZNbXJhbVJhbmdlOw0KPiArICBNUF9JTkZPUk1BVElP Tl9IT0JfREFUQSAgICAgICAgICpNcEluZm9ybWF0aW9uSG9iRGF0YTsNCj4gKyAgRUZJX1BST0NF U1NPUl9JTkZPUk1BVElPTiAgICAgICAqUHJvY0luZm9CdWZmZXI7DQo+ICsgIEVGSV9TRUNVUkVf UEFSVElUSU9OX0NQVV9JTkZPICAgKkNwdUluZm87DQo+ICsgIEFSTV9URl9DUFVfRFJJVkVSX0VQ X0RFU0NSSVBUT1IgKkNwdURyaXZlckVudHJ5UG9pbnREZXNjOw0KPiArDQo+ICsgIC8vIENyZWF0 ZSBhIGhvYmxpc3Qgd2l0aCBhIFBISVQgYW5kIEVPSA0KPiArICBIb2JTdGFydCA9IEhvYkNvbnN0 cnVjdG9yICgoVk9JRCAqKSBQYXlsb2FkQm9vdEluZm8tPlNwTWVtQmFzZSwNCj4gKyAgICAoVUlO VE4pICBQYXlsb2FkQm9vdEluZm8tPlNwTWVtTGltaXQgLSBQYXlsb2FkQm9vdEluZm8tPlNwTWVt QmFzZSwNCj4gKyAgICAoVk9JRCAqKSBQYXlsb2FkQm9vdEluZm8tPlNwSGVhcEJhc2UsDQo+ICsg ICAgKFZPSUQgKikgKFBheWxvYWRCb290SW5mby0+U3BIZWFwQmFzZSArIFBheWxvYWRCb290SW5m by0+U3BIZWFwU2l6ZSkpOw0KPiArDQo+ICsgIC8vIENoZWNrIHRoYXQgdGhlIEhvYmxpc3Qgc3Rh cnRzIGF0IHRoZSBib3R0b20gb2YgdGhlIEhlYXANCj4gKyAgQVNTRVJUIChIb2JTdGFydCA9PSAo Vk9JRCAqKSBQYXlsb2FkQm9vdEluZm8tPlNwSGVhcEJhc2UpOw0KPiArDQo+ICsgIC8vIEJ1aWxk IGEgQm9vdCBGaXJtd2FyZSBWb2x1bWUgSE9CDQo+ICsgIEJ1aWxkRnZIb2IoUGF5bG9hZEJvb3RJ bmZvLT5TcEltYWdlQmFzZSwgUGF5bG9hZEJvb3RJbmZvLT5TcEltYWdlU2l6ZSk7DQo+ICsNCj4g KyAgLy8gQnVpbGQgYSByZXNvdXJjZSBkZXNjcmlwdG9yIEhvYiB0aGF0IGRlc2NyaWJlcyB0aGUg YXZhaWxhYmxlIHBoeXNpY2FsDQo+ICsgIC8vIG1lbW9yeSByYW5nZQ0KPiArICBBdHRyaWJ1dGVz ID0oDQo+ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9QUkVTRU5UIHwNCj4gKyAgICBFRklf UkVTT1VSQ0VfQVRUUklCVVRFX0lOSVRJQUxJWkVEIHwNCj4gKyAgICBFRklfUkVTT1VSQ0VfQVRU UklCVVRFX1RFU1RFRCB8DQo+ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9VTkNBQ0hFQUJM RSB8DQo+ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9DT01CSU5FQUJMRSB8DQo+ ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9USFJPVUdIX0NBQ0hFQUJMRSB8DQo+ ICsgICAgRUZJX1JFU09VUkNFX0FUVFJJQlVURV9XUklURV9CQUNLX0NBQ0hFQUJMRQ0KPiArICAp Ow0KPiArDQo+ICsgIEJ1aWxkUmVzb3VyY2VEZXNjcmlwdG9ySG9iIChFRklfUkVTT1VSQ0VfU1lT VEVNX01FTU9SWSwNCj4gKyAgICBBdHRyaWJ1dGVzLA0KPiArICAgIChVSU5UTikgUGF5bG9hZEJv b3RJbmZvLT5TcE1lbUJhc2UsDQo+ICsgICAgUGF5bG9hZEJvb3RJbmZvLT5TcE1lbUxpbWl0IC0g UGF5bG9hZEJvb3RJbmZvLT5TcE1lbUJhc2UpOw0KPiArDQo+ICsgIC8vIEZpbmQgdGhlIHNpemUg b2YgdGhlIEdVSURlZCBIT0Igd2l0aCBNUCBpbmZvcm1hdGlvbg0KPiArICBCdWZmZXJTaXplID0g c2l6ZW9mIChNUF9JTkZPUk1BVElPTl9IT0JfREFUQSk7DQo+ICsgIEJ1ZmZlclNpemUgKz0gc2l6 ZW9mIChFRklfUFJPQ0VTU09SX0lORk9STUFUSU9OKSAqIFBheWxvYWRCb290SW5mby0+TnVtQ3B1 czsNCj4gKw0KPiArICAvLyBDcmVhdGUgYSBHdWlkZWQgTVAgaW5mb3JtYXRpb24gSE9CIHRvIGVu YWJsZSB0aGUgQVJNIFRGIENQVSBkcml2ZXIgdG8NCj4gKyAgLy8gcGVyZm9ybSBwZXItY3B1IGFs bG9jYXRpb25zLg0KPiArICBNcEluZm9ybWF0aW9uSG9iRGF0YSA9IEJ1aWxkR3VpZEhvYigmZ01w SW5mb3JtYXRpb25Ib2JHdWlkLCBCdWZmZXJTaXplKTsNCj4gKw0KPiArICAvLyBQb3B1bGF0ZSB0 aGUgTVAgaW5mb3JtYXRpb24gSE9CIHdpdGggdGhlIHRvcG9sb2d5IGluZm9ybWF0aW9uIHBhc3Nl ZCBieQ0KPiArICAvLyBwcml2aWxlZ2VkIGZpcm13YXJlDQo+ICsgIE1wSW5mb3JtYXRpb25Ib2JE YXRhLT5OdW1iZXJPZlByb2Nlc3NvcnMgPSBQYXlsb2FkQm9vdEluZm8tPk51bUNwdXM7DQo+ICsg IE1wSW5mb3JtYXRpb25Ib2JEYXRhLT5OdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3JzID0gUGF5bG9h ZEJvb3RJbmZvLT5OdW1DcHVzOw0KPiArICBQcm9jSW5mb0J1ZmZlciA9IE1wSW5mb3JtYXRpb25I b2JEYXRhLT5Qcm9jZXNzb3JJbmZvQnVmZmVyOw0KPiArICBDcHVJbmZvID0gUGF5bG9hZEJvb3RJ bmZvLT5DcHVJbmZvOw0KPiArDQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFBheWxvYWRC b290SW5mby0+TnVtQ3B1czsgSW5kZXgrKykgew0KPiArICAgIFByb2NJbmZvQnVmZmVyW0luZGV4 XS5Qcm9jZXNzb3JJZCAgICAgID0gQ3B1SW5mb1tJbmRleF0uTXBpZHI7DQo+ICsgICAgUHJvY0lu Zm9CdWZmZXJbSW5kZXhdLkxvY2F0aW9uLlBhY2thZ2UgPSBHRVRfQ0xVU1RFUl9JRChDcHVJbmZv W0luZGV4XS5NcGlkcik7DQo+ICsgICAgUHJvY0luZm9CdWZmZXJbSW5kZXhdLkxvY2F0aW9uLkNv cmUgICAgPSBHRVRfQ09SRV9JRChDcHVJbmZvW0luZGV4XS5NcGlkcik7DQo+ICsgICAgUHJvY0lu Zm9CdWZmZXJbSW5kZXhdLkxvY2F0aW9uLlRocmVhZCAgPSBHRVRfQ09SRV9JRChDcHVJbmZvW0lu ZGV4XS5NcGlkcik7DQo+ICsNCj4gKyAgICBGbGFncyA9IFBST0NFU1NPUl9FTkFCTEVEX0JJVCB8 IFBST0NFU1NPUl9IRUFMVEhfU1RBVFVTX0JJVDsNCj4gKyAgICBpZiAoQ3B1SW5mb1tJbmRleF0u RmxhZ3MgJiBDUFVfSU5GT19GTEFHX1BSSU1BUllfQ1BVKSB7DQo+ICsgICAgICBGbGFncyB8PSBQ Uk9DRVNTT1JfQVNfQlNQX0JJVDsNCj4gKyAgICB9DQo+ICsgICAgUHJvY0luZm9CdWZmZXJbSW5k ZXhdLlN0YXR1c0ZsYWcgPSBGbGFnczsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIENyZWF0ZSBhIEd1 aWRlZCBIT0IgdG8gdGVsbCB0aGUgQVJNIFRGIENQVSBkcml2ZXIgdGhlIGxvY2F0aW9uIGFuZCBs ZW5ndGgNCj4gKyAgLy8gb2YgdGhlIGNvbW11bmljYXRpb24gYnVmZmVyIHNoYXJlZCB3aXRoIHRo ZSBOb3JtYWwgd29ybGQuDQo+ICsgIE5zQ29tbUJ1Zk1tcmFtUmFuZ2UgPSAoRUZJX01NUkFNX0RF U0NSSVBUT1IgKikgQnVpbGRHdWlkSG9iICgmZ0VmaVN0YW5kYWxvbmVNbU5vblNlY3VyZUJ1ZmZl ckd1aWQsIHNpemVvZihFRklfTU1SQU1fREVTQ1JJUFRPUikpOw0KPiArICBOc0NvbW1CdWZNbXJh bVJhbmdlLT5QaHlzaWNhbFN0YXJ0ID0gUGF5bG9hZEJvb3RJbmZvLT5TcE5zQ29tbUJ1ZkJhc2U7 DQo+ICsgIE5zQ29tbUJ1Zk1tcmFtUmFuZ2UtPkNwdVN0YXJ0ICAgICAgPSBQYXlsb2FkQm9vdElu Zm8tPlNwTnNDb21tQnVmQmFzZTsNCj4gKyAgTnNDb21tQnVmTW1yYW1SYW5nZS0+UGh5c2ljYWxT aXplICA9IFBheWxvYWRCb290SW5mby0+U3BOc0NvbW1CdWZTaXplOw0KPiArICBOc0NvbW1CdWZN bXJhbVJhbmdlLT5SZWdpb25TdGF0ZSAgID0gRUZJX0NBQ0hFQUJMRSB8IEVGSV9BTExPQ0FURUQ7 DQo+ICsNCj4gKyAgLy8gQ3JlYXRlIGEgR3VpZGVkIEhPQiB0byBlbmFibGUgdGhlIEFSTSBURiBD UFUgZHJpdmVyIHRvIHNoYXJlIGl0cyBlbnRyeQ0KPiArICAvLyBwb2ludCBhbmQgcG9wdWxhdGUg aXQgd2l0aCB0aGUgYWRkcmVzcyBvZiB0aGUgc2hhcmVkIGJ1ZmZlcg0KPiArICBDcHVEcml2ZXJF bnRyeVBvaW50RGVzYyA9IChBUk1fVEZfQ1BVX0RSSVZFUl9FUF9ERVNDUklQVE9SICopIEJ1aWxk R3VpZEhvYiAoJmdFZmlBcm1UZkNwdURyaXZlckVwRGVzY3JpcHRvckd1aWQsIHNpemVvZihBUk1f VEZfQ1BVX0RSSVZFUl9FUF9ERVNDUklQVE9SKSk7DQo+ICsNCj4gKyAgKkNwdURyaXZlckVudHJ5 UG9pbnQgPSBOVUxMOw0KPiArICBDcHVEcml2ZXJFbnRyeVBvaW50RGVzYy0+QXJtVGZDcHVEcml2 ZXJFcFB0ciA9IENwdURyaXZlckVudHJ5UG9pbnQ7DQo+ICsNCj4gKyAgLy8gRmluZCB0aGUgc2l6 ZSBvZiB0aGUgR1VJRGVkIEhPQiB3aXRoIFNSQU0gcmFuZ2VzDQo+ICsgIEJ1ZmZlclNpemUgPSBz aXplb2YgKEVGSV9NTVJBTV9IT0JfREVTQ1JJUFRPUl9CTE9DSyk7DQo+ICsgIEJ1ZmZlclNpemUg Kz0gUGF5bG9hZEJvb3RJbmZvLT5OdW1TcE1lbVJlZ2lvbnMgKg0KPiArICAgIHNpemVvZihFRklf TU1SQU1fREVTQ1JJUFRPUik7DQo+ICsNCj4gKyAgLy8gQ3JlYXRlIGEgR1VJRGVkIEhPQiB3aXRo IFNSQU0gcmFuZ2VzDQo+ICsgIE1tcmFtUmFuZ2VzSG9iID0gQnVpbGRHdWlkSG9iICgmZ0VmaU1t UGVpTW1yYW1NZW1vcnlSZXNlcnZlR3VpZCwgQnVmZmVyU2l6ZSk7DQo+ICsNCj4gKyAgLy8gRmls bCB1cCB0aGUgbnVtYmVyIG9mIE1NUkFNIG1lbW9yeSByZWdpb25zDQo+ICsgIE1tcmFtUmFuZ2Vz SG9iLT5OdW1iZXJPZk1tUmVzZXJ2ZWRSZWdpb25zID0gUGF5bG9hZEJvb3RJbmZvLT5OdW1TcE1l bVJlZ2lvbnM7DQo+ICsgIC8vIEZpbGwgdXAgdGhlIE1NUkFNIHJhbmdlcw0KPiArICBNbXJhbVJh bmdlcyA9ICZNbXJhbVJhbmdlc0hvYi0+RGVzY3JpcHRvclswXTsNCj4gKw0KPiArICAvLyBCYXNl IGFuZCBzaXplIG9mIG1lbW9yeSBvY2N1cGllZCBieSB0aGUgU3RhbmRhbG9uZSBNTSBpbWFnZQ0K PiArICBNbXJhbVJhbmdlc1swXS5QaHlzaWNhbFN0YXJ0ID0gUGF5bG9hZEJvb3RJbmZvLT5TcElt YWdlQmFzZTsNCj4gKyAgTW1yYW1SYW5nZXNbMF0uQ3B1U3RhcnQgICAgICA9IFBheWxvYWRCb290 SW5mby0+U3BJbWFnZUJhc2U7DQo+ICsgIE1tcmFtUmFuZ2VzWzBdLlBoeXNpY2FsU2l6ZSAgPSBQ YXlsb2FkQm9vdEluZm8tPlNwSW1hZ2VTaXplOw0KPiArICBNbXJhbVJhbmdlc1swXS5SZWdpb25T dGF0ZSAgID0gRUZJX0NBQ0hFQUJMRSB8IEVGSV9BTExPQ0FURUQ7DQo+ICsNCj4gKyAgLy8gQmFz ZSBhbmQgc2l6ZSBvZiBidWZmZXIgc2hhcmVkIHdpdGggcHJpdmlsZWdlZCBTZWN1cmUgd29ybGQg c29mdHdhcmUNCj4gKyAgTW1yYW1SYW5nZXNbMV0uUGh5c2ljYWxTdGFydCA9IFBheWxvYWRCb290 SW5mby0+U3BTaGFyZWRCdWZCYXNlOw0KPiArICBNbXJhbVJhbmdlc1sxXS5DcHVTdGFydCAgICAg ID0gUGF5bG9hZEJvb3RJbmZvLT5TcFNoYXJlZEJ1ZkJhc2U7DQo+ICsgIE1tcmFtUmFuZ2VzWzFd LlBoeXNpY2FsU2l6ZSAgPSBQYXlsb2FkQm9vdEluZm8tPlNwUGNwdVNoYXJlZEJ1ZlNpemUgKiBQ YXlsb2FkQm9vdEluZm8tPk51bUNwdXM7DQo+ICsgIE1tcmFtUmFuZ2VzWzFdLlJlZ2lvblN0YXRl ICAgPSBFRklfQ0FDSEVBQkxFIHwgRUZJX0FMTE9DQVRFRDsNCj4gKw0KPiArICAvLyBCYXNlIGFu ZCBzaXplIG9mIGJ1ZmZlciB1c2VkIGZvciBzeW5jaHJvbm91cyBjb21tdW5pY2F0aW9uIHdpdGgg Tm9ybWFsDQo+ICsgIC8vIHdvcmxkIHNvZnR3YXJlDQo+ICsgIE1tcmFtUmFuZ2VzWzJdLlBoeXNp Y2FsU3RhcnQgPSBQYXlsb2FkQm9vdEluZm8tPlNwTnNDb21tQnVmQmFzZTsNCj4gKyAgTW1yYW1S YW5nZXNbMl0uQ3B1U3RhcnQgICAgICA9IFBheWxvYWRCb290SW5mby0+U3BOc0NvbW1CdWZCYXNl Ow0KPiArICBNbXJhbVJhbmdlc1syXS5QaHlzaWNhbFNpemUgID0gUGF5bG9hZEJvb3RJbmZvLT5T cE5zQ29tbUJ1ZlNpemU7DQo+ICsgIE1tcmFtUmFuZ2VzWzJdLlJlZ2lvblN0YXRlICAgPSBFRklf Q0FDSEVBQkxFIHwgRUZJX0FMTE9DQVRFRDsNCj4gKw0KPiArICAvLyBCYXNlIGFuZCBzaXplIG9m IG1lbW9yeSBhbGxvY2F0ZWQgZm9yIHN0YWNrcyBmb3IgYWxsIGNwdXMNCj4gKyAgTW1yYW1SYW5n ZXNbM10uUGh5c2ljYWxTdGFydCA9IFBheWxvYWRCb290SW5mby0+U3BTdGFja0Jhc2U7DQo+ICsg IE1tcmFtUmFuZ2VzWzNdLkNwdVN0YXJ0ICAgICAgPSBQYXlsb2FkQm9vdEluZm8tPlNwU3RhY2tC YXNlOw0KPiArICBNbXJhbVJhbmdlc1szXS5QaHlzaWNhbFNpemUgID0gUGF5bG9hZEJvb3RJbmZv LT5TcFBjcHVTdGFja1NpemUgKiBQYXlsb2FkQm9vdEluZm8tPk51bUNwdXM7DQo+ICsgIE1tcmFt UmFuZ2VzWzNdLlJlZ2lvblN0YXRlICAgPSBFRklfQ0FDSEVBQkxFIHwgRUZJX0FMTE9DQVRFRDsN Cj4gKw0KPiArICAvLyBCYXNlIGFuZCBzaXplIG9mIGhlYXAgbWVtb3J5IHNoYXJlZCBieSBhbGwg Y3B1cw0KPiArICBNbXJhbVJhbmdlc1s0XS5QaHlzaWNhbFN0YXJ0ID0gKEVGSV9QSFlTSUNBTF9B RERSRVNTKSBIb2JTdGFydDsNCj4gKyAgTW1yYW1SYW5nZXNbNF0uQ3B1U3RhcnQgICAgICA9IChF RklfUEhZU0lDQUxfQUREUkVTUykgSG9iU3RhcnQ7DQo+ICsgIE1tcmFtUmFuZ2VzWzRdLlBoeXNp Y2FsU2l6ZSAgPSBIb2JTdGFydC0+RWZpRnJlZU1lbW9yeUJvdHRvbSAtIChFRklfUEhZU0lDQUxf QUREUkVTUykgSG9iU3RhcnQ7DQo+ICsgIE1tcmFtUmFuZ2VzWzRdLlJlZ2lvblN0YXRlICAgPSBF RklfQ0FDSEVBQkxFIHwgRUZJX0FMTE9DQVRFRDsNCj4gKw0KPiArICAvLyBCYXNlIGFuZCBzaXpl IG9mIGhlYXAgbWVtb3J5IHNoYXJlZCBieSBhbGwgY3B1cw0KPiArICBNbXJhbVJhbmdlc1s1XS5Q aHlzaWNhbFN0YXJ0ID0gSG9iU3RhcnQtPkVmaUZyZWVNZW1vcnlCb3R0b207DQo+ICsgIE1tcmFt UmFuZ2VzWzVdLkNwdVN0YXJ0ICAgICAgPSBIb2JTdGFydC0+RWZpRnJlZU1lbW9yeUJvdHRvbTsN Cj4gKyAgTW1yYW1SYW5nZXNbNV0uUGh5c2ljYWxTaXplICA9IEhvYlN0YXJ0LT5FZmlGcmVlTWVt b3J5VG9wIC0gSG9iU3RhcnQtPkVmaUZyZWVNZW1vcnlCb3R0b207DQo+ICsgIE1tcmFtUmFuZ2Vz WzVdLlJlZ2lvblN0YXRlICAgPSBFRklfQ0FDSEVBQkxFOw0KPiArDQo+ICsgIHJldHVybiBIb2JT dGFydDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5k YWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9TZXRQZXJtaXNzaW9ucy5jIGIvU3RhbmRhbG9uZU1t UGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQXJtL1NldFBlcm1pc3Npb25z LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uZTk2YjgxY2Rj MA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5k YWxvbmVNbUNvcmVFbnRyeVBvaW50L0FybS9TZXRQZXJtaXNzaW9ucy5jDQoNClRoaXMgZmlsZSBu ZWVkcyB0byBiZSByZXZpZXdlZCBieSBBcmQgYXMgaXQgaXMgaGVhdmlseSBiYXNlZCB1cG9uIGhp cyBvcmlnaW5hbA0Kd29yayBhbmQgaGFzIG5vdCBjaGFuZ2VkIG11Y2ggc2luY2UgSSB3cm90ZSBp dC4NCltTdXByZWV0aF0gWWVzLiBIZSBpcyBvbiB0aGUgcmV2aWV3ZXJzIGxpc3QuDQoNCj4gQEAg LTAsMCArMSwyNzggQEANCj4gKy8qKiBAZmlsZQ0KPiArICBFbnRyeSBwb2ludCB0byB0aGUgU3Rh bmRhbG9uZSBNTSBGb3VuZGF0aW9uIHdoZW4gaW5pdGlhbGlzZWQgZHVyaW5nIHRoZSBTRUMNCj4g KyAgcGhhc2Ugb24gQVJNIHBsYXRmb3Jtcw0KDQpDb21tZW50IG5lZWRzIHRvIGJlIHVwZGF0ZWQu DQpbU3VwcmVldGhdIFllcy4gRG9uZS4NCj4gKw0KPiArQ29weXJpZ2h0IChjKSAyMDE3LCBBUk0g THRkLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK1RoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gK2FyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUg dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0KPiArd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBs aWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiAraHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocC4NCj4gKw0KPiArVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5E RVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMsDQo+ICtXSVRIT1VUIFdBUlJB TlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJ TVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArDQo+ICsjaW5jbHVkZSA8UGlNbS5oPg0KPiAr DQo+ICsNCj4gKw0KPiArI2luY2x1ZGUgPFBpUGVpLmg+DQo+ICsjaW5jbHVkZSA8R3VpZC9NbXJh bU1lbW9yeVJlc2VydmUuaD4NCj4gKyNpbmNsdWRlIDxHdWlkL01wSW5mb3JtYXRpb24uaD4NCj4g Kw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQXJtL1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50Lmg+ DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Bcm1NbXVMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5 L0FybVN2Y0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0hvYkxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvU2VyaWFsUG9ydExpYi5oPg0KPiArDQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5k YXJkL0FybVN0ZFNtYy5oPg0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK1VwZGF0 ZU1tRm91bmRhdGlvblBlQ29mZlBlcm1pc3Npb25zICgNCj4gKyAgSU4gIENPTlNUIFBFX0NPRkZf TE9BREVSX0lNQUdFX0NPTlRFWFQgICAgICAqSW1hZ2VDb250ZXh0LA0KPiArICBJTiAgVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb25IZWFkZXJPZmZzZXQsDQo+ ICsgIElOICBDT05TVCAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZT ZWN0aW9ucywNCg0KVUlOVDMyPw0KW1N1cHJlZXRoXSBpdHMgYWN0dWFsbHkgVUlOVDE2Lg0KDQo+ ICsgIElOICBSRUdJT05fUEVSTUlTU0lPTl9VUERBVEVfRlVOQyAgICAgICAgICAgVGV4dFVwZGF0 ZXIsDQo+ICsgIElOICBSRUdJT05fUEVSTUlTU0lPTl9VUERBVEVfRlVOQyAgICAgICAgICAgUmVh ZE9ubHlVcGRhdGVyLA0KPiArICBJTiAgUkVHSU9OX1BFUk1JU1NJT05fVVBEQVRFX0ZVTkMgICAg ICAgICAgIFJlYWRXcml0ZVVwZGF0ZXINCj4gKyAgKQ0KPiArew0KPiArICBFRklfSU1BR0VfU0VD VElPTl9IRUFERVIgICAgICAgICBTZWN0aW9uSGVhZGVyOw0KPiArICBSRVRVUk5fU1RBVFVTICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAg ICAgICAgIEJhc2U7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemU7 DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRTaXplOw0KPiArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKw0KPiArICBBU1NFUlQg KEltYWdlQ29udGV4dCAhPSBOVUxMKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJdGVyYXRlIG92 ZXIgdGhlIHNlY3Rpb25zDQo+ICsgIC8vDQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IE51 bWJlck9mU2VjdGlvbnM7IEluZGV4KyspIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFJlYWQgc2Vj dGlvbiBoZWFkZXIgZnJvbSBmaWxlDQo+ICsgICAgLy8NCj4gKyAgICBTaXplID0gc2l6ZW9mIChF RklfSU1BR0VfU0VDVElPTl9IRUFERVIpOw0KPiArICAgIFJlYWRTaXplID0gU2l6ZTsNCj4gKyAg ICBTdGF0dXMgPSBJbWFnZUNvbnRleHQtPkltYWdlUmVhZCAoSW1hZ2VDb250ZXh0LT5IYW5kbGUs IFNlY3Rpb25IZWFkZXJPZmZzZXQsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZTaXplLCAmU2VjdGlvbkhlYWRlcik7DQo+ICsgICAgaWYgKFJFVFVSTl9FUlJPUiAoU3Rh dHVzKSB8fCAoU2l6ZSAhPSBSZWFkU2l6ZSkpIHsNCj4gKyAgICAgIERFQlVHICgoREVCVUdfRVJS T1IsDQo+ICsgICAgICAgICIlYTogSW1hZ2VDb250ZXh0LT5JbWFnZVJlYWQgKCkgZmFpbGVkIChT dGF0dXMgPSAlcilcbiIsDQo+ICsgICAgICAgIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7DQo+ICsg ICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4gKw0KPiArICAgIERFQlVHICgoREVCVUdf SU5GTywNCj4gKyAgICAgICAgICAgICIlYTogU2VjdGlvbiAlZCBvZiBpbWFnZSBhdCAweCVseCBo YXMgMHgleCBwZXJtaXNzaW9uc1xuIiwNCj4gKyAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgSW5k ZXgsIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRyZXNzLCBTZWN0aW9uSGVhZGVyLkNoYXJhY3Rlcmlz dGljcykpOw0KPiArICAgIERFQlVHICgoREVCVUdfSU5GTywNCj4gKyAgICAgICAgICAgICIlYTog U2VjdGlvbiAlZCBvZiBpbWFnZSBhdCAweCVseCBoYXMgJXMgbmFtZVxuIiwNCj4gKyAgICAgICAg ICAgIF9fRlVOQ1RJT05fXywgSW5kZXgsIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRyZXNzLCBTZWN0 aW9uSGVhZGVyLk5hbWUpKTsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sDQo+ICsgICAgICAg ICAgICAiJWE6IFNlY3Rpb24gJWQgb2YgaW1hZ2UgYXQgMHglbHggaGFzIDB4JXggYWRkcmVzc1xu IiwNCj4gKyAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgSW5kZXgsIEltYWdlQ29udGV4dC0+SW1h Z2VBZGRyZXNzLCBJbWFnZUNvbnRleHQtPkltYWdlQWRkcmVzcyArIFNlY3Rpb25IZWFkZXIuVmly dHVhbEFkZHJlc3MpKTsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sDQo+ICsgICAgICAgICAg ICAiJWE6IFNlY3Rpb24gJWQgb2YgaW1hZ2UgYXQgMHglbHggaGFzIDB4JXggZGF0YVxuIiwNCj4g KyAgICAgICAgICAgIF9fRlVOQ1RJT05fXywgSW5kZXgsIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRy ZXNzLCBTZWN0aW9uSGVhZGVyLlBvaW50ZXJUb1Jhd0RhdGEpKTsNCj4gKw0KPiArICAgIC8vDQo+ ICsgICAgLy8gSWYgdGhlIHNlY3Rpb24gaXMgbWFya2VkIGFzIFhOIHRoZW4gcmVtb3ZlIHRoZSBY IGF0dHJpYnV0ZS4gRnVydGhlcm1vcmUsDQo+ICsgICAgLy8gaWYgaXQgaXMgYSB3cml0ZWFibGUg c2VjdGlvbiB0aGVuIG1hcmsgaXQgYXBwcm9wcmlhdGVseSBhcyB3ZWxsLg0KPiArICAgIC8vDQo+ ICsgICAgaWYgKChTZWN0aW9uSGVhZGVyLkNoYXJhY3RlcmlzdGljcyAmIEVGSV9JTUFHRV9TQ05f TUVNX0VYRUNVVEUpID09IDApIHsNCj4gKyAgICAgIEJhc2UgPSBJbWFnZUNvbnRleHQtPkltYWdl QWRkcmVzcyArIFNlY3Rpb25IZWFkZXIuVmlydHVhbEFkZHJlc3M7DQo+ICsNCj4gKyAgICAgIFRl eHRVcGRhdGVyIChCYXNlLCBTZWN0aW9uSGVhZGVyLk1pc2MuVmlydHVhbFNpemUpOw0KPiArDQo+ ICsgICAgICBpZiAoKFNlY3Rpb25IZWFkZXIuQ2hhcmFjdGVyaXN0aWNzICYgRUZJX0lNQUdFX1ND Tl9NRU1fV1JJVEUpICE9IDApIHsNCj4gKyAgICAgICAgUmVhZFdyaXRlVXBkYXRlciAoQmFzZSwg U2VjdGlvbkhlYWRlci5NaXNjLlZpcnR1YWxTaXplKTsNCj4gKyAgICAgICAgREVCVUcgKChERUJV R19JTkZPLA0KPiArICAgICAgICAgICAgICAgICIlYTogTWFwcGluZyBzZWN0aW9uICVkIG9mIGlt YWdlIGF0IDB4JWx4IHdpdGggUlctWE4gcGVybWlzc2lvbnNcbiIsDQo+ICsgICAgICAgICAgICAg ICAgX19GVU5DVElPTl9fLCBJbmRleCwgSW1hZ2VDb250ZXh0LT5JbWFnZUFkZHJlc3MpKTsNCj4g KyAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgIERFQlVHICgoREVCVUdfSU5GTywNCj4gKyAgICAg ICAgICAgICAgICAiJWE6IE1hcHBpbmcgc2VjdGlvbiAlZCBvZiBpbWFnZSBhdCAweCVseCB3aXRo IFJPLVhOIHBlcm1pc3Npb25zXG4iLA0KPiArICAgICAgICAgICAgICAgIF9fRlVOQ1RJT05fXywg SW5kZXgsIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRyZXNzKSk7DQo+ICsgICAgICB9DQo+ICsgICAg fSBlbHNlIHsNCj4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLA0KPiArICAgICAgICAgICAg ICAgICIlYTogSWdub3Jpbmcgc2VjdGlvbiAlZCBvZiBpbWFnZSBhdCAweCVseCB3aXRoIDB4JXgg cGVybWlzc2lvbnNcbiIsDQo+ICsgICAgICAgICAgICAgICAgX19GVU5DVElPTl9fLCBJbmRleCwg SW1hZ2VDb250ZXh0LT5JbWFnZUFkZHJlc3MsIFNlY3Rpb25IZWFkZXIuQ2hhcmFjdGVyaXN0aWNz KSk7DQo+ICsgICAgfQ0KPiArICAgIFNlY3Rpb25IZWFkZXJPZmZzZXQgKz0gc2l6ZW9mIChFRklf SU1BR0VfU0VDVElPTl9IRUFERVIpOw0KPiArICB9DQo+ICsNCj4gKyAgcmV0dXJuIFJFVFVSTl9T VUNDRVNTOw0KPiArfQ0KPiArDQo+ICtFRklfU1RBVFVTDQo+ICtFRklBUEkNCj4gK0xvY2F0ZVN0 YW5kYWxvbmVNbUNvcmVQZUNvZmZEYXRhICgNCj4gKyAgSU4gICAgICAgIEVGSV9GSVJNV0FSRV9W T0xVTUVfSEVBREVSICAgICAgKkJmdkFkZHJlc3MsDQo+ICsgIElOICBPVVQgICBWT0lEICAgICAg ICAgICAgICAgICAgICAgICAgICAgICoqVGVEYXRhLA0KPiArICBJTiAgT1VUICAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICAgICAgICAqVGVEYXRhU2l6ZQ0KPiArICApDQo+ICt7DQo+ICsgIEVG SV9GRlNfRklMRV9IRUFERVIgICAgICAgICAgICAgKkZpbGVIZWFkZXIgPSBOVUxMOw0KPiArICBF RklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKw0KPiArICBTdGF0dXMg PSBGZnNGaW5kTmV4dEZpbGUgKA0KPiArICAgICAgICAgICAgICAgICAgRUZJX0ZWX0ZJTEVUWVBF X1NFQ1VSSVRZX0NPUkUsDQo+ICsgICAgICAgICAgICAgICAgICBCZnZBZGRyZXNzLA0KPiArICAg ICAgICAgICAgICAgICAgJkZpbGVIZWFkZXIpOw0KPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMp KSB7DQo+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlVuYWJsZSB0byBsb2NhdGUgU3RhbmRh bG9uZSBNTSBGRlMgZmlsZSAtIDB4JXhcbiIsDQo+ICsgICAgICBTdGF0dXMpKTsNCj4gKyAgICBy ZXR1cm4gU3RhdHVzOw0KPiArICB9DQo+ICsNCj4gKyAgU3RhdHVzID0gRmZzRmluZFNlY3Rpb25E YXRhIChFRklfU0VDVElPTl9QRTMyLCBGaWxlSGVhZGVyLCBUZURhdGEsIFRlRGF0YVNpemUpOw0K PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ICsgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiVW5hYmxlIHRvIGxvY2F0ZSBTdGFuZGFsb25lIE1NIFNlY3Rpb24gZGF0YSAtIDB4JXhc biIsDQo+ICsgICAgICAgICAgICAgIFN0YXR1cykpOw0KPiArICAgIHJldHVybiBTdGF0dXM7DQo+ ICsgIH0NCj4gKw0KPiArICBERUJVRyAoKERFQlVHX0lORk8sICJGb3VuZCBTdGFuZGFsb25lIE1N IFBFIGRhdGEgLSAweCV4XG4iLCAqVGVEYXRhKSk7DQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9 DQo+ICsNCj4gK3N0YXRpYw0KPiArRUZJX1NUQVRVUw0KPiArR2V0UGVDb2ZmU2VjdGlvbkluZm9y bWF0aW9uICgNCj4gKyAgSU4gIENPTlNUIFBFX0NPRkZfTE9BREVSX0lNQUdFX0NPTlRFWFQgICAg ICAqSW1hZ2VDb250ZXh0LA0KPiArICBJTiAgT1VUICAgUEVfQ09GRl9MT0FERVJfSU1BR0VfQ09O VEVYVCAgICAgICpUbXBDb250ZXh0LA0KPiArICBJTiAgT1VUICAgVUlOVDMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpTZWN0aW9uSGVhZGVyT2Zmc2V0LA0KPiArICBJTiAgT1VUICAgVUlO VE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICpOdW1iZXJPZlNlY3Rpb25zDQo+ICsgICkN Cj4gK3sNCj4gKyAgUkVUVVJOX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7 DQo+ICsgIEVGSV9JTUFHRV9PUFRJT05BTF9IRUFERVJfUFRSX1VOSU9OICAgSGRyOw0KPiArICBF RklfSU1BR0VfT1BUSU9OQUxfSEVBREVSX1VOSU9OICAgICAgIEhkckRhdGE7DQo+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZWFkU2l6ZTsNCj4gKw0KPiArICBBU1NFUlQgKElt YWdlQ29udGV4dCAhPSBOVUxMKTsNCj4gKyAgQVNTRVJUIChUbXBDb250ZXh0ICE9IE5VTEwpOw0K PiArICBBU1NFUlQgKFNlY3Rpb25IZWFkZXJPZmZzZXQgIT0gTlVMTCk7DQo+ICsgIEFTU0VSVCAo TnVtYmVyT2ZTZWN0aW9ucyAhPSBOVUxMKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBXZSBuZWVk IHRvIGNvcHkgSW1hZ2VDb250ZXh0IHNpbmNlIFBlQ29mZkxvYWRlckdldEltYWdlSW5mbyAoKQ0K PiArICAvLyB3aWxsIG1hbmdsZSB0aGUgSW1hZ2VBZGRyZXNzIGZpZWxkDQo+ICsgIC8vDQo+ICsg IENvcHlNZW0gKFRtcENvbnRleHQsIEltYWdlQ29udGV4dCwgc2l6ZW9mICgqVG1wQ29udGV4dCkp Ow0KPiArDQo+ICsgIGlmIChUbXBDb250ZXh0LT5QZUNvZmZIZWFkZXJPZmZzZXQgPT0gMCkgew0K PiArICAgIFN0YXR1cyA9IFBlQ29mZkxvYWRlckdldEltYWdlSW5mbyAoVG1wQ29udGV4dCk7DQo+ ICsgICAgaWYgKFJFVFVSTl9FUlJPUiAoU3RhdHVzKSkgew0KPiArICAgICAgREVCVUcgKChERUJV R19FUlJPUiwNCj4gKyAgICAgICAgIiVhOiBQZUNvZmZMb2FkZXJHZXRJbWFnZUluZm8gKCkgZmFp bGVkIChTdGF0dXMgPSAlcilcbiIsDQo+ICsgICAgICAgIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7 DQo+ICsgICAgICByZXR1cm4gU3RhdHVzOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICsgIGlm IChUbXBDb250ZXh0LT5Jc1RlSW1hZ2UgJiYNCj4gKyAgICAgIFRtcENvbnRleHQtPkltYWdlQWRk cmVzcyA9PSBJbWFnZUNvbnRleHQtPkltYWdlQWRkcmVzcykgew0KPiArICAgIERFQlVHICgoREVC VUdfSU5GTywgIiVhOiBpZ25vcmluZyBYSVAgVEUgaW1hZ2UgYXQgMHglbHhcbiIsIF9fRlVOQ1RJ T05fXywNCj4gKyAgICAgIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRyZXNzKSk7DQo+ICsgICAgcmV0 dXJuIFJFVFVSTl9VTlNVUFBPUlRFRDsNCj4gKyAgfQ0KPiArDQo+ICsgIGlmIChUbXBDb250ZXh0 LT5TZWN0aW9uQWxpZ25tZW50IDwgRUZJX1BBR0VfU0laRSkgew0KPiArICAgIC8vDQo+ICsgICAg Ly8gVGhlIHNlY3Rpb25zIG5lZWQgdG8gYmUgYXQgbGVhc3QgNCBLQiBhbGlnbmVkLCBzaW5jZSB0 aGF0IGlzIHRoZQ0KPiArICAgIC8vIGdyYW51bGFyaXR5IGF0IHdoaWNoIHdlIGNhbiB0aWdodGVu IHBlcm1pc3Npb25zLg0KPiArICAgIC8vDQo+ICsgICAgaWYgKCFUbXBDb250ZXh0LT5Jc1RlSW1h Z2UpIHsNCj4gKyAgICAgIERFQlVHICgoREVCVUdfV0FSTiwNCj4gKyAgICAgICAgIiVhOiBub24t VEUgSW1hZ2UgYXQgMHglbHggaGFzIFNlY3Rpb25BbGlnbm1lbnQgPCA0IEtCICglbHUpXG4iLA0K PiArICAgICAgICBfX0ZVTkNUSU9OX18sIEltYWdlQ29udGV4dC0+SW1hZ2VBZGRyZXNzLCBUbXBD b250ZXh0LT5TZWN0aW9uQWxpZ25tZW50KSk7DQo+ICsgICAgfQ0KPiArICAgIHJldHVybiBSRVRV Uk5fVU5TVVBQT1JURUQ7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBSZWFkIHRoZSBQ RS9DT0ZGIEhlYWRlci4gRm9yIFBFMzIgKDMyLWJpdCkgdGhpcyB3aWxsIHJlYWQgaW4gdG9vIG11 Y2gNCj4gKyAgLy8gZGF0YSwgYnV0IHRoYXQgc2hvdWxkIG5vdCBodXJ0IGFueXRoaW5nLiBIZHIu UGUzMi0+T3B0aW9uYWxIZWFkZXIuTWFnaWMNCj4gKyAgLy8gZGV0ZXJtaW5lcyBpZiB0aGlzIGlz IGEgUEUzMiBvciBQRTMyKyBpbWFnZS4gVGhlIG1hZ2ljIGlzIGluIHRoZSBzYW1lDQo+ICsgIC8v IGxvY2F0aW9uIGluIGJvdGggaW1hZ2VzLg0KPiArICAvLw0KPiArICBIZHIuVW5pb24gPSAmSGRy RGF0YTsNCj4gKyAgU2l6ZSA9IHNpemVvZiAoRUZJX0lNQUdFX09QVElPTkFMX0hFQURFUl9VTklP Tik7DQo+ICsgIFJlYWRTaXplID0gU2l6ZTsNCj4gKyAgU3RhdHVzID0gVG1wQ29udGV4dC0+SW1h Z2VSZWFkIChUbXBDb250ZXh0LT5IYW5kbGUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg VG1wQ29udGV4dC0+UGVDb2ZmSGVhZGVyT2Zmc2V0LCAmU2l6ZSwgSGRyLlBlMzIpOw0KPiArICBp ZiAoUkVUVVJOX0VSUk9SIChTdGF0dXMpIHx8IChTaXplICE9IFJlYWRTaXplKSkgew0KPiArICAg IERFQlVHICgoREVCVUdfRVJST1IsDQo+ICsgICAgICAiJWE6IFRtcENvbnRleHQtPkltYWdlUmVh ZCAoKSBmYWlsZWQgKFN0YXR1cyA9ICVyKVxuIiwNCj4gKyAgICAgIF9fRlVOQ1RJT05fXywgU3Rh dHVzKSk7DQo+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gKyAgfQ0KPiArDQo+ICsgIEFTU0VSVCAo SGRyLlBlMzItPlNpZ25hdHVyZSA9PSBFRklfSU1BR0VfTlRfU0lHTkFUVVJFKTsNCj4gKw0KPiAr ICAqU2VjdGlvbkhlYWRlck9mZnNldCA9IFRtcENvbnRleHQtPlBlQ29mZkhlYWRlck9mZnNldCAr IHNpemVvZiAoVUlOVDMyKSArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YgKEVG SV9JTUFHRV9GSUxFX0hFQURFUik7DQo+ICsgICpOdW1iZXJPZlNlY3Rpb25zICAgID0gKFVJTlRO KShIZHIuUGUzMi0+RmlsZUhlYWRlci5OdW1iZXJPZlNlY3Rpb25zKTsNCj4gKw0KPiArICBzd2l0 Y2ggKEhkci5QZTMyLT5PcHRpb25hbEhlYWRlci5NYWdpYykgew0KPiArICAgIGNhc2UgRUZJX0lN QUdFX05UX09QVElPTkFMX0hEUjMyX01BR0lDOg0KPiArICAgICAgKlNlY3Rpb25IZWFkZXJPZmZz ZXQgKz0gSGRyLlBlMzItPkZpbGVIZWFkZXIuU2l6ZU9mT3B0aW9uYWxIZWFkZXI7DQo+ICsgICAg ICBicmVhazsNCj4gKyAgICBjYXNlIEVGSV9JTUFHRV9OVF9PUFRJT05BTF9IRFI2NF9NQUdJQzoN Cj4gKyAgICAgICpTZWN0aW9uSGVhZGVyT2Zmc2V0ICs9IEhkci5QZTMyUGx1cy0+RmlsZUhlYWRl ci5TaXplT2ZPcHRpb25hbEhlYWRlcjsNCj4gKyAgICAgIGJyZWFrOw0KPiArICAgIGRlZmF1bHQ6 DQo+ICsgICAgICBBU1NFUlQgKEZBTFNFKTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJldHVybiBSRVRV Uk5fU1VDQ0VTUzsNCj4gK30NCj4gKw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRT dGFuZGFsb25lTW1Db3JlUGVDb2ZmU2VjdGlvbnMgKA0KPiArICBJTiAgICAgICAgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqVGVEYXRhLA0KPiArICBJTiAgT1VUICAgUEVfQ09GRl9M T0FERVJfSU1BR0VfQ09OVEVYVCAgICAqSW1hZ2VDb250ZXh0LA0KPiArICBJTiAgT1VUICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICAgICAgICAqU2VjdGlvbkhlYWRlck9mZnNldCwNCj4gKyAg SU4gIE9VVCAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgKk51bWJlck9mU2VjdGlv bnMNCj4gKyAgKQ0KPiArew0KPiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gKyAgUEVfQ09GRl9MT0FERVJfSU1BR0VfQ09OVEVYVCBUbXBDb250ZXh0Ow0KPiArDQo+ ICsgIC8vIEluaXRpYWxpemUgdGhlIEltYWdlIENvbnRleHQNCj4gKyAgWmVyb01lbSAoSW1hZ2VD b250ZXh0LCBzaXplb2YgKFBFX0NPRkZfTE9BREVSX0lNQUdFX0NPTlRFWFQpKTsNCj4gKyAgSW1h Z2VDb250ZXh0LT5IYW5kbGUgICAgPSBUZURhdGE7DQo+ICsgIEltYWdlQ29udGV4dC0+SW1hZ2VS ZWFkID0gUGVDb2ZmTG9hZGVySW1hZ2VSZWFkRnJvbU1lbW9yeTsNCj4gKw0KPiArICBERUJVRygo REVCVUdfSU5GTywgIkZvdW5kIFN0YW5kYWxvbmUgTU0gUEUgZGF0YSAtIDB4JXhcbiIsIFRlRGF0 YSkpOw0KPiArDQo+ICsgIFN0YXR1cyA9IFBlQ29mZkxvYWRlckdldEltYWdlSW5mbyAoSW1hZ2VD b250ZXh0KTsNCj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgREVCVUcoKERF QlVHX0VSUk9SLCAiVW5hYmxlIHRvIGxvY2F0ZSBTdGFuZGFsb25lIE1NIENvcmUgUEUtQ09GRiBJ bWFnZSBpbmZvcm1hdGlvbiAtIDB4JXhcbiIsIFN0YXR1cykpOw0KPiArICAgIHJldHVybiBTdGF0 dXM7DQo+ICsgIH0NCj4gKw0KPiArICBTdGF0dXMgPSBHZXRQZUNvZmZTZWN0aW9uSW5mb3JtYXRp b24oSW1hZ2VDb250ZXh0LCAmVG1wQ29udGV4dCwgU2VjdGlvbkhlYWRlck9mZnNldCwgTnVtYmVy T2ZTZWN0aW9ucyk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiArICAgIERFQlVH KChERUJVR19FUlJPUiwgIlVuYWJsZSB0byBsb2NhdGUgU3RhbmRhbG9uZSBNTSBDb3JlIFBFLUNP RkYgU2VjdGlvbiBpbmZvcm1hdGlvbiAtIDB4JXhcbiIsIFN0YXR1cykpOw0KPiArICAgIHJldHVy biBTdGF0dXM7DQo+ICsgIH0NCj4gKw0KPiArICBERUJVRygoREVCVUdfSU5GTywgIlN0YW5kYWxv bmUgTU0gQ29yZSBQRS1DT0ZGIFNlY3Rpb25IZWFkZXJPZmZzZXQgLSAweCV4LCBOdW1iZXJPZlNl Y3Rpb25zIC0gJWRcbiIsICpTZWN0aW9uSGVhZGVyT2Zmc2V0LCAqTnVtYmVyT2ZTZWN0aW9ucykp Ow0KPiArDQo+ICsgIHJldHVybiBTdGF0dXM7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9TdGFuZGFs b25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC9Bcm0vU3RhbmRhbG9u ZU1tQ29yZUVudHJ5UG9pbnQuYyBiL1N0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVN bUNvcmVFbnRyeVBvaW50L0FybS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLjcyZTNiODM0ZDQNCj4gLS0tIC9k ZXYvbnVsbA0KPiArKysgYi9TdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3Jl RW50cnlQb2ludC9Bcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuYw0KPiBAQCAtMCwwICsx LDI2NCBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEVudHJ5IHBvaW50IHRvIHRoZSBTdGFuZGFsb25l IE1NIEZvdW5kYXRpb24gd2hlbiBpbml0aWFsaXplZCBkdXJpbmcgdGhlIFNFQw0KPiArICBwaGFz ZSBvbiBBUk0gcGxhdGZvcm1zDQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAxNywgQVJNIEx0ZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzDQo+ICthcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVy IHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCj4gK3doaWNoIGFj Y29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5z ZSBtYXkgYmUgZm91bmQgYXQNCj4gK2h0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2Qt bGljZW5zZS5waHAuDQo+ICsNCj4gK1RIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRI RSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0KPiArV0lUSE9VVCBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElF RC4NCj4gKw0KPiArKiovDQo+ICsNCj4gKw0KPiArI2luY2x1ZGUgPFBpTW0uaD4NCj4gKw0KPiAr I2luY2x1ZGUgPExpYnJhcnkvQXJtL1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50Lmg+DQo+ICsN Cj4gKyNpbmNsdWRlIDxQaVBlaS5oPg0KPiArI2luY2x1ZGUgPEd1aWQvTW1yYW1NZW1vcnlSZXNl cnZlLmg+DQo+ICsjaW5jbHVkZSA8R3VpZC9NcEluZm9ybWF0aW9uLmg+DQo+ICsNCj4gKyNpbmNs dWRlIDxMaWJyYXJ5L0FybU1tdUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvQXJtU3ZjTGli Lmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJh cnkvSG9iTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ICsjaW5jbHVk ZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9TZXJpYWxQ b3J0TGliLmg+DQo+ICsNCj4gKyNpbmNsdWRlIDxJbmR1c3RyeVN0YW5kYXJkL0FybVN0ZFNtYy5o Pg0KPiArI2luY2x1ZGUgPEluZHVzdHJ5U3RhbmRhcmQvQXJtTW1TdmMuaD4NCj4gKw0KPiArI2Rl ZmluZSBTUE1fTUFKT1JfVkVSX01BU0sgICAgICAgIDB4RkZGRjAwMDANCj4gKyNkZWZpbmUgU1BN X01JTk9SX1ZFUl9NQVNLICAgICAgICAweDAwMDBGRkZGDQo+ICsjZGVmaW5lIFNQTV9NQUpPUl9W RVJfU0hJRlQgICAgICAgMTYNCj4gKw0KPiArY29uc3QgVUlOVDMyIFNQTV9NQUpPUl9WRVIgPSAw Ow0KPiArY29uc3QgVUlOVDMyIFNQTV9NSU5PUl9WRVIgPSAxOw0KPiArDQo+ICtjb25zdCBVSU5U OCBCT09UX1BBWUxPQURfVkVSU0lPTiA9IDE7DQo+ICsNCj4gK1BJX01NX0FSTV9URl9DUFVfRFJJ VkVSX0VOVFJZUE9JTlQgICAgICBDcHVEcml2ZXJFbnRyeVBvaW50ID0gTlVMTDsNCj4gKw0KPiAr LyoqDQo+ICsgIFJldHJpZXZlIGEgcG9pbnRlciB0byBhbmQgcHJpbnQgdGhlIGJvb3QgaW5mb3Jt YXRpb24gcGFzc2VkIGJ5IHByaXZpbGVnZWQNCj4gKyAgc2VjdXJlIGZpcm13YXJlDQo+ICsNCj4g KyAgQHBhcmFtICBTaGFyZWRCdWZBZGRyZXNzIFRoZSBwb2ludGVyIG1lbW9yeSBzaGFyZWQgd2l0 aCBwcml2aWxlZ2VkIGZpcm13YXJlDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NFQ1VSRV9QQVJUSVRJ T05fQk9PVF9JTkZPICoNCj4gK0dldEFuZFByaW50Qm9vdGluZm9ybWF0aW9uICgNCj4gKyAgSU4g Vk9JRCAgICAgICAgICAgICAgICAgICAgICAqU2hhcmVkQnVmQWRkcmVzcw0KPiArKQ0KPiArew0K PiArICBFRklfU0VDVVJFX1BBUlRJVElPTl9CT09UX0lORk8gKlBheWxvYWRCb290SW5mbzsNCj4g KyAgRUZJX1NFQ1VSRV9QQVJUSVRJT05fQ1BVX0lORk8gICpQYXlsb2FkQ3B1SW5mbzsNCj4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiArDQo+ICsgIFBheWxvYWRC b290SW5mbyA9IChFRklfU0VDVVJFX1BBUlRJVElPTl9CT09UX0lORk8gKikgU2hhcmVkQnVmQWRk cmVzczsNCj4gKw0KPiArICBpZiAoUGF5bG9hZEJvb3RJbmZvLT5IZWFkZXIuVmVyc2lvbiAhPSBC T09UX1BBWUxPQURfVkVSU0lPTikNCj4gKyAgew0KPiArICAgIERFQlVHKChERUJVR19FUlJPUiwg IkJvb3QgSW5mb3JtYXRpb24gVmVyc2lvbiBNaXNtYXRjaC4gQ3VycmVudD0weCV4LCBFeHBlY3Rl ZD0weCV4LlxuIiwgUGF5bG9hZEJvb3RJbmZvLT5IZWFkZXIuVmVyc2lvbiwgQk9PVF9QQVlMT0FE X1ZFUlNJT04pKTsNCj4gKyAgICByZXR1cm4gTlVMTDsNCj4gKyAgfQ0KPiArICBERUJVRygoREVC VUdfSU5GTywgIk51bVNwTWVtUmVnaW9ucyAtIDB4JXhcbiIsIFBheWxvYWRCb290SW5mby0+TnVt U3BNZW1SZWdpb25zKSk7DQo+ICsgIERFQlVHKChERUJVR19JTkZPLCAiU3BNZW1CYXNlICAgICAg IC0gMHglbHhcbiIsIFBheWxvYWRCb290SW5mby0+U3BNZW1CYXNlKSk7DQo+ICsgIERFQlVHKChE RUJVR19JTkZPLCAiU3BNZW1MaW1pdCAgICAgIC0gMHglbHhcbiIsIFBheWxvYWRCb290SW5mby0+ U3BNZW1MaW1pdCkpOw0KPiArICBERUJVRygoREVCVUdfSU5GTywgIlNwSW1hZ2VCYXNlICAgICAt IDB4JWx4XG4iLCBQYXlsb2FkQm9vdEluZm8tPlNwSW1hZ2VCYXNlKSk7DQo+ICsgIERFQlVHKChE RUJVR19JTkZPLCAiU3BTdGFja0Jhc2UgICAgIC0gMHglbHhcbiIsIFBheWxvYWRCb290SW5mby0+ U3BTdGFja0Jhc2UpKTsNCj4gKyAgREVCVUcoKERFQlVHX0lORk8sICJTcEhlYXBCYXNlICAgICAg LSAweCVseFxuIiwgUGF5bG9hZEJvb3RJbmZvLT5TcEhlYXBCYXNlKSk7DQo+ICsgIERFQlVHKChE RUJVR19JTkZPLCAiU3BOc0NvbW1CdWZCYXNlIC0gMHglbHhcbiIsIFBheWxvYWRCb290SW5mby0+ U3BOc0NvbW1CdWZCYXNlKSk7DQo+ICsgIERFQlVHKChERUJVR19JTkZPLCAiU3BTaGFyZWRCdWZC YXNlIC0gMHglbHhcbiIsIFBheWxvYWRCb290SW5mby0+U3BTaGFyZWRCdWZCYXNlKSk7DQo+ICsN Cj4gKyAgREVCVUcoKERFQlVHX0lORk8sICJTcEltYWdlU2l6ZSAgICAgLSAweCV4XG4iLCBQYXls b2FkQm9vdEluZm8tPlNwSW1hZ2VTaXplKSk7DQo+ICsgIERFQlVHKChERUJVR19JTkZPLCAiU3BQ Y3B1U3RhY2tTaXplIC0gMHgleFxuIiwgUGF5bG9hZEJvb3RJbmZvLT5TcFBjcHVTdGFja1NpemUp KTsNCj4gKyAgREVCVUcoKERFQlVHX0lORk8sICJTcEhlYXBTaXplICAgICAgLSAweCV4XG4iLCBQ YXlsb2FkQm9vdEluZm8tPlNwSGVhcFNpemUpKTsNCj4gKyAgREVCVUcoKERFQlVHX0lORk8sICJT cE5zQ29tbUJ1ZlNpemUgLSAweCV4XG4iLCBQYXlsb2FkQm9vdEluZm8tPlNwTnNDb21tQnVmU2l6 ZSkpOw0KPiArICBERUJVRygoREVCVUdfSU5GTywgIlNwUGNwdVNoYXJlZEJ1ZlNpemUgLSAweCV4 XG4iLCBQYXlsb2FkQm9vdEluZm8tPlNwUGNwdVNoYXJlZEJ1ZlNpemUpKTsNCj4gKw0KPiArICBE RUJVRygoREVCVUdfSU5GTywgIk51bUNwdXMgICAgICAgICAtIDB4JXhcbiIsIFBheWxvYWRCb290 SW5mby0+TnVtQ3B1cykpOw0KPiArICBERUJVRygoREVCVUdfSU5GTywgIkNwdUluZm8gICAgICAg ICAtIDB4JXBcbiIsIFBheWxvYWRCb290SW5mby0+Q3B1SW5mbykpOw0KPiArDQo+ICsgIFBheWxv YWRDcHVJbmZvID0gKEVGSV9TRUNVUkVfUEFSVElUSU9OX0NQVV9JTkZPICopIFBheWxvYWRCb290 SW5mby0+Q3B1SW5mbzsNCj4gKw0KPiArICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBQYXlsb2Fk Qm9vdEluZm8tPk51bUNwdXM7IEluZGV4KyspIHsNCj4gKyAgICBERUJVRygoREVCVUdfSU5GTywg Ik1waWRyICAgICAgICAgICAtIDB4JWx4XG4iLCBQYXlsb2FkQ3B1SW5mb1tJbmRleF0uTXBpZHIp KTsNCj4gKyAgICBERUJVRygoREVCVUdfSU5GTywgIkxpbmVhcklkICAgICAgICAtIDB4JXhcbiIs IFBheWxvYWRDcHVJbmZvW0luZGV4XS5MaW5lYXJJZCkpOw0KPiArICAgIERFQlVHKChERUJVR19J TkZPLCAiRmxhZ3MgICAgICAgICAgIC0gMHgleFxuIiwgUGF5bG9hZENwdUluZm9bSW5kZXhdLkZs YWdzKSk7DQo+ICsgIH0NCj4gKw0KPiArICByZXR1cm4gUGF5bG9hZEJvb3RJbmZvOw0KPiArfQ0K PiArDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0RlbGVnYXRlZEV2ZW50TG9vcCAoDQo+ICsgIElO IEFSTV9TVkNfQVJHUyAqRXZlbnRDb21wbGV0ZVN2Y0FyZ3MNCj4gKyAgKQ0KPiArew0KPiArICBF RklfU1RBVFVTIFN0YXR1czsNCj4gKw0KPiArICB3aGlsZShUUlVFKSB7DQo+ICsgICAgQXJtQ2Fs bFN2YyhFdmVudENvbXBsZXRlU3ZjQXJncyk7DQo+ICsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lO Rk8sICJSZWNlaXZlZCBkZWxlZ2F0ZWQgZXZlbnRcbiIpKTsNCj4gKyAgICBERUJVRyAoKERFQlVH X0lORk8sICJYMCA6ICAweCV4XG4iLCAoVUlOVDMyKSBFdmVudENvbXBsZXRlU3ZjQXJncy0+QXJn MCkpOw0KPiArICAgIERFQlVHICgoREVCVUdfSU5GTywgIlgxIDogIDB4JXhcbiIsIChVSU5UMzIp IEV2ZW50Q29tcGxldGVTdmNBcmdzLT5BcmcxKSk7DQo+ICsgICAgREVCVUcgKChERUJVR19JTkZP LCAiWDIgOiAgMHgleFxuIiwgKFVJTlQzMikgRXZlbnRDb21wbGV0ZVN2Y0FyZ3MtPkFyZzIpKTsN Cj4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJYMyA6ICAweCV4XG4iLCAoVUlOVDMyKSBFdmVu dENvbXBsZXRlU3ZjQXJncy0+QXJnMykpOw0KPiArDQo+ICsgICAgU3RhdHVzID0gQ3B1RHJpdmVy RW50cnlQb2ludCgNCj4gKyAgICAgIEV2ZW50Q29tcGxldGVTdmNBcmdzLT5BcmcwLA0KPiArICAg ICAgRXZlbnRDb21wbGV0ZVN2Y0FyZ3MtPkFyZzIsDQo+ICsgICAgICBFdmVudENvbXBsZXRlU3Zj QXJncy0+QXJnMSk7DQo+ICsgICAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgICBE RUJVRygoREVCVUdfRVJST1IsICJGYWlsZWQgZGVsZWdhdGVkIGV2ZW50IDB4JXgsIFN0YXR1cyAw eCV4XG4iLA0KPiArICAgICAgICBFdmVudENvbXBsZXRlU3ZjQXJncy0+QXJnMCwgU3RhdHVzKSk7 DQo+ICsgICAgfQ0KPiArDQo+ICsgICAgRXZlbnRDb21wbGV0ZVN2Y0FyZ3MtPkFyZzAgPSBBUk1f U1ZDX0lEX1NQX0VWRU5UX0NPTVBMRVRFX0FBUkNINjQ7DQo+ICsgICAgRXZlbnRDb21wbGV0ZVN2 Y0FyZ3MtPkFyZzEgPSBTdGF0dXM7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiArU1RBVElDDQo+ICtF RklfU1RBVFVTDQo+ICtHZXRTcG1WZXJzaW9uICgpDQo+ICt7DQo+ICsgIEVGSV9TVEFUVVMgICBT dGF0dXM7DQo+ICsgIFVJTlQxNiAgICAgICBTcG1NYWpvclZlcnNpb247DQo+ICsgIFVJTlQxNiAg ICAgICBTcG1NaW5vclZlcnNpb247DQo+ICsgIFVJTlQzMiAgICAgICBTcG1WZXJzaW9uOw0KPiAr ICBBUk1fU1ZDX0FSR1MgU3BtVmVyc2lvbkFyZ3M7DQo+ICsNCj4gKyAgU3BtVmVyc2lvbkFyZ3Mu QXJnMCA9IEFSTV9TVkNfSURfU1BNX1ZFUlNJT05fQUFSQ0gzMjsNCj4gKw0KPiArICBBcm1DYWxs U3ZjICgmU3BtVmVyc2lvbkFyZ3MpOw0KPiArDQo+ICsgIFNwbVZlcnNpb24gPSBTcG1WZXJzaW9u QXJncy5BcmcwOw0KPiArDQo+ICsgIFNwbU1ham9yVmVyc2lvbiA9ICgoU3BtVmVyc2lvbiAmIFNQ TV9NQUpPUl9WRVJfTUFTSykgPj4gU1BNX01BSk9SX1ZFUl9TSElGVCk7DQo+ICsgIFNwbU1pbm9y VmVyc2lvbiA9ICgoU3BtVmVyc2lvbiAmIFNQTV9NSU5PUl9WRVJfTUFTSykgPj4gMCk7DQo+ICsN Cj4gKyAgLy8gRGlmZmVyZW50IG1ham9yIHJldmlzaW9uIHZhbHVlcyBpbmRpY2F0ZSBwb3NzaWJs eSBpbmNvbXBhdGlibGUgZnVuY3Rpb25zLg0KPiArICAvLyBGb3IgdHdvIHJldmlzaW9ucywgQSBh bmQgQiwgZm9yIHdoaWNoIHRoZSBtYWpvciByZXZpc2lvbiB2YWx1ZXMgYXJlDQo+ICsgIC8vIGlk ZW50aWNhbCwgaWYgdGhlIG1pbm9yIHJldmlzaW9uIHZhbHVlIG9mIHJldmlzaW9uIEIgaXMgZ3Jl YXRlciB0aGFuDQo+ICsgIC8vIHRoZSBtaW5vciByZXZpc2lvbiB2YWx1ZSBvZiByZXZpc2lvbiBB LCB0aGVuIGV2ZXJ5IGZ1bmN0aW9uIGluDQo+ICsgIC8vIHJldmlzaW9uIEEgbXVzdCB3b3JrIGlu IGEgY29tcGF0aWJsZSB3YXkgd2l0aCByZXZpc2lvbiBCLg0KPiArICAvLyBIb3dldmVyLCBpdCBp cyBwb3NzaWJsZSBmb3IgcmV2aXNpb24gQiB0byBoYXZlIGEgaGlnaGVyDQo+ICsgIC8vIGZ1bmN0 aW9uIGNvdW50IHRoYW4gcmV2aXNpb24gQS4NCj4gKyAgaWYgKChTcG1NYWpvclZlcnNpb24gPT0g U1BNX01BSk9SX1ZFUikgJiYNCj4gKyAgICAgIChTcG1NaW5vclZlcnNpb24gPj0gU1BNX01JTk9S X1ZFUikpDQo+ICsgIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJTUE0gVmVyc2lvbjog TWFqb3I9MHgleCwgTWlub3I9MHgleFxuIiwNCj4gKyAgICAgICAgICAgU3BtTWFqb3JWZXJzaW9u LCBTcG1NaW5vclZlcnNpb24pKTsNCj4gKyAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gKyAg fQ0KPiArICBlbHNlDQo+ICsgIHsNCj4gKyAgICBERUJVRyAoKERFQlVHX0lORk8sICJJbmNvbXBh dGlibGUgU1BNIFZlcnNpb25zLlxuIEN1cnJlbnQgVmVyc2lvbjogTWFqb3I9MHgleCwgTWlub3I9 MHgleC5cbiBFeHBlY3RlZDogTWFqb3I9MHgleCwgTWlub3I+PTB4JXguXG4iLA0KPiArICAgICAg ICAgICAgU3BtTWFqb3JWZXJzaW9uLCBTcG1NaW5vclZlcnNpb24sIFNQTV9NQUpPUl9WRVIsIFNQ TV9NSU5PUl9WRVIpKTsNCj4gKyAgICBTdGF0dXMgPSBFRklfVU5TVVBQT1JURUQ7DQo+ICsgIH0N Cj4gKw0KPiArICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgVGhlIGVu dHJ5IHBvaW50IG9mIFN0YW5kYWxvbmUgTU0gRm91bmRhdGlvbi4NCj4gKw0KPiArICBAcGFyYW0g IEhvYlN0YXJ0ICBUaGUgcG9pbnRlciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBIT0IgTGlzdC4N Cj4gKw0KPiArKiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK19Nb2R1bGVFbnRyeVBvaW50ICgN Cj4gKyAgSU4gVk9JRCAgICAqU2hhcmVkQnVmQWRkcmVzcywNCj4gKyAgSU4gVUlOVDY0ICBTaGFy ZWRCdWZTaXplLA0KPiArICBJTiBVSU5UNjQgIGNvb2tpZTEsDQo+ICsgIElOIFVJTlQ2NCAgY29v a2llMg0KDQpBcyBkZXNjcmliZWQgZWFybGllciwgU2hhcmVkQnVmU2l6ZSBpcyBub3QgcmVxdWly ZWQuIFRoZSBmb3JtYXQgb2YgdGhlIGhlYWRlciBpbg0KU2hhcmVkQnVmQWRkcmVzcyBzaG91bGQg cHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGlzY292ZXIgdGhlIHNpemUuDQpbU3VwcmVl dGhdIE9rLg0KDQo+ICsgICkNCj4gK3sNCj4gKyAgUEVfQ09GRl9MT0FERVJfSU1BR0VfQ09OVEVY VCAgICAgICAgICAgIEltYWdlQ29udGV4dDsNCj4gKyAgRUZJX1NFQ1VSRV9QQVJUSVRJT05fQk9P VF9JTkZPICAgICAgICAgICpQYXlsb2FkQm9vdEluZm87DQo+ICsgIEFSTV9TVkNfQVJHUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbml0TW1Gb3VuZGF0aW9uU3ZjQXJncyA9IHswfTsNCj4g KyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAg VUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlY3Rpb25IZWFkZXJPZmZz ZXQ7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJP ZlNlY3Rpb25zOw0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KkhvYlN0YXJ0Ow0KPiArICBWT0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KlRlRGF0YTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl RGF0YVNpemU7DQo+ICsNCj4gKyAgU3RhdHVzID0gU2VyaWFsUG9ydEluaXRpYWxpemUgKCk7DQoN Ckl0IGlzIHdvcnRoIGNvbW1lbnRpbmcgaGVyZSB0aGF0IHRoaXMgZnVuY3Rpb24gd2lsbCBzdWNj ZWVkIGFzIHRoZSBBcm0gVEYNCnBsYXRmb3JtIHBvcnQgaGFzIGdyYW50ZWQgYWNjZXNzIHRvIHRo ZSBVQVJULiBJdCBpcyBhbHNvIHdvcnRoIGNoZWNraW5nIGluDQplZGsyLXBsYXRmb3JtcyB0aGF0 IHRoZSBVQVJUIGFsbG9jYXRlZCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHVzZWQgYnkgQXJt IFRGLg0KW1N1cHJlZXRoXSBXaGVuIEkgY3JlYXRlIFN0YW5kYWxvbmUgTU0gaW1hZ2UncyBkZXNj cmlwdGlvbiBmaWxlIGZvciBBQXJjaDY0IEZWUCwNCkkgc3BlY2lmaWMgdGhpcyBQQ0QNCmdFZmlN ZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTZXJpYWxSZWdpc3RlckJhc2UNCndoaWNoIHdp bGwgZGV0ZXJtaW5lIHdoZXJlIHRoZSBzZXJpYWwgcG9ydCBtZXNzYWdlcyBnby4NClBsYXRmb3Jt IG93bmVyIHdpbGwgY2hvb3NlIHRoaXMgYXMgcGVyIGhpcy9oZXIgcGxhdGZvcm0g8J+Yii4NCg0K Y2hlZXJzLA0KQWNoaW4NCg0KPiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiArDQo+ ICsgIC8vIEdldCBTZWN1cmUgUGFydGl0aW9uIE1hbmFnZXIgVmVyc2lvbiBJbmZvcm1hdGlvbg0K PiArICBTdGF0dXMgPSBHZXRTcG1WZXJzaW9uKCk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVz KSkgew0KPiArICAgIGdvdG8gZmluaXNoOw0KPiArICB9DQo+ICsNCj4gKyAgUGF5bG9hZEJvb3RJ bmZvID0gR2V0QW5kUHJpbnRCb290aW5mb3JtYXRpb24oU2hhcmVkQnVmQWRkcmVzcyk7DQo+ICsg IGlmIChQYXlsb2FkQm9vdEluZm8gPT0gTlVMTCkgew0KPiArICAgIFN0YXR1cyA9IEVGSV9VTlNV UFBPUlRFRDsNCj4gKyAgICBnb3RvIGZpbmlzaDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vIExvY2F0 ZSBQRS9DT0ZGIEZpbGUgaW5mb3JtYXRpb24gZm9yIHRoZSBTdGFuZGFsb25lIE1NIGNvcmUgbW9k dWxlDQo+ICsgIFN0YXR1cyA9IExvY2F0ZVN0YW5kYWxvbmVNbUNvcmVQZUNvZmZEYXRhICgNCj4g KyAgICAgICAgICAgICAgICAgKEVGSV9GSVJNV0FSRV9WT0xVTUVfSEVBREVSICopIFBheWxvYWRC b290SW5mby0+U3BJbWFnZUJhc2UsDQo+ICsgICAgICAgICAgICAgICAgICZUZURhdGEsDQo+ICsg ICAgICAgICAgICAgICAgICZUZURhdGFTaXplKTsNCj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMp KSB7DQo+ICsgICAgZ290byBmaW5pc2g7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBPYnRhaW4gdGhl IFBFL0NPRkYgU2VjdGlvbiBpbmZvcm1hdGlvbiBmb3IgdGhlIFN0YW5kYWxvbmUgTU0gY29yZSBt b2R1bGUNCj4gKyAgU3RhdHVzID0gR2V0U3RhbmRhbG9uZU1tQ29yZVBlQ29mZlNlY3Rpb25zICgN Cj4gKyAgICAgICAgICAgIFRlRGF0YSwNCj4gKyAgICAgICAgICAgICZJbWFnZUNvbnRleHQsDQo+ ICsgICAgICAgICAgICAmU2VjdGlvbkhlYWRlck9mZnNldCwNCj4gKyAgICAgICAgICAgICZOdW1i ZXJPZlNlY3Rpb25zKTsNCj4gKyAgaWYgKEVGSV9FUlJPUihTdGF0dXMpKSB7DQo+ICsgICAgZ290 byBmaW5pc2g7DQo+ICsgIH0NCj4gKw0KPiArICAvLyBVcGRhdGUgdGhlIG1lbW9yeSBhY2Nlc3Mg cGVybWlzc2lvbnMgb2YgaW5kaXZpZHVhbCBzZWN0aW9ucyBpbiB0aGUNCj4gKyAgLy8gU3RhbmRh bG9uZSBNTSBjb3JlIG1vZHVsZQ0KPiArICBTdGF0dXMgPSBVcGRhdGVNbUZvdW5kYXRpb25QZUNv ZmZQZXJtaXNzaW9ucygNCj4gKyAgICAgICAgICAgICZJbWFnZUNvbnRleHQsDQo+ICsgICAgICAg ICAgICBTZWN0aW9uSGVhZGVyT2Zmc2V0LA0KPiArICAgICAgICAgICAgTnVtYmVyT2ZTZWN0aW9u cywNCj4gKyAgICAgICAgICAgIEFybVNldE1lbW9yeVJlZ2lvbk5vRXhlYywNCj4gKyAgICAgICAg ICAgIEFybVNldE1lbW9yeVJlZ2lvblJlYWRPbmx5LA0KPiArICAgICAgICAgICAgQXJtQ2xlYXJN ZW1vcnlSZWdpb25SZWFkT25seSk7DQo+ICsgIGlmIChFRklfRVJST1IoU3RhdHVzKSkgew0KPiAr ICAgIGdvdG8gZmluaXNoOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQ3JlYXRlIEhv Ymxpc3QgYmFzZWQgdXBvbiBib290IGluZm9ybWF0aW9uIHBhc3NlZCBieSBwcml2aWxlZ2VkIHNv ZnR3YXJlDQo+ICsgIC8vDQo+ICsgIEhvYlN0YXJ0ID0gQ3JlYXRlSG9iTGlzdEZyb21Cb290SW5m bygmQ3B1RHJpdmVyRW50cnlQb2ludCwgUGF5bG9hZEJvb3RJbmZvKTsNCj4gKw0KPiArICAvLw0K PiArICAvLyBDYWxsIHRoZSBNTSBDb3JlIGVudHJ5IHBvaW50DQo+ICsgIC8vDQo+ICsgIFByb2Nl c3NNb2R1bGVFbnRyeVBvaW50TGlzdCAoSG9iU3RhcnQpOw0KPiArDQo+ICsgIEFTU0VSVF9FRklf RVJST1IgKENwdURyaXZlckVudHJ5UG9pbnQpOw0KPiArICBERUJVRyAoKERFQlVHX0lORk8sICJT aGFyZWQgQ3B1IERyaXZlciBFUCAweCVseFxuIiwgKFVJTlQ2NCkgQ3B1RHJpdmVyRW50cnlQb2lu dCkpOw0KPiArDQo+ICtmaW5pc2g6DQo+ICsgIEluaXRNbUZvdW5kYXRpb25TdmNBcmdzLkFyZzAg PSBBUk1fU1ZDX0lEX1NQX0VWRU5UX0NPTVBMRVRFX0FBUkNINjQ7DQo+ICsgIEluaXRNbUZvdW5k YXRpb25TdmNBcmdzLkFyZzEgPSBTdGF0dXM7DQo+ICsgIERlbGVnYXRlZEV2ZW50TG9vcCgmSW5p dE1tRm91bmRhdGlvblN2Y0FyZ3MpOw0KPiArICBBU1NFUlRfRUZJX0VSUk9SKDApOw0KPiArDQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9TdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1D b3JlRW50cnlQb2ludC9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC5pbmYgYi9TdGFuZGFsb25l TW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC9TdGFuZGFsb25lTW1Db3Jl RW50cnlQb2ludC5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uOWVkYzg1ZDQwNg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1N0YW5kYWxvbmVNbVBrZy9M aWJyYXJ5L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBv aW50LmluZg0KPiBAQCAtMCwwICsxLDUzIEBADQo+ICsjIyBAZmlsZQ0KPiArIyBNb2R1bGUgZW50 cnkgcG9pbnQgbGlicmFyeSBmb3IgRFhFIGNvcmUuDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykg MjAxNywgQVJNIEx0ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICsjDQo+ICsjICBUaGlz IHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICsjICBhcmUgbGljZW5z ZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0 aGUgQlNEIExpY2Vuc2UNCj4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9u LiBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiArIyAgaHR0 cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocC4NCj4gKyMgIFRIRSBQ Uk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMi IEJBU0lTLA0KPiArIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBB TlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKyMNCj4gKyMNCj4gKyMjDQo+ ICsNCj4gK1tEZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAw eDAwMDEwMDFBDQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFN0YW5kYWxv bmVNbUNvcmVFbnRyeVBvaW50DQo+ICsgIEZJTEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9 IEM5N0FDNTkzLTEwOUEtNEM2My05MDVDLTY3NUZERTI2ODlFOA0KPiArICBNT0RVTEVfVFlQRSAg ICAgICAgICAgICAgICAgICAgPSBNTV9DT1JFX1NUQU5EQUxPTkUNCj4gKyAgVkVSU0lPTl9TVFJJ TkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ICsgIFBJX1NQRUNJRklDQVRJT05fVkVSU0lPTiAg ICAgICA9IDB4MDAwMTAwMzINCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0g U3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnR8TU1fQ09SRV9TVEFOREFMT05FDQo+ICsNCj4gKyMN Cj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0gSUEzMiBYNjQgSVBGIEVCQyAo RUJDIGlzIGZvciBidWlsZCBvbmx5KQ0KPiArIw0KPiArDQo+ICtbU291cmNlcy5BQVJDSDY0XQ0K PiArICBBcm0vU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQuYw0KPiArICBBcm0vU2V0UGVybWlz c2lvbnMuYw0KPiArICBBcm0vQ3JlYXRlSG9iTGlzdC5jDQo+ICsNCj4gK1tQYWNrYWdlc10NCj4g KyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMN Cj4gKyAgU3RhbmRhbG9uZU1tUGtnL1N0YW5kYWxvbmVNbVBrZy5kZWMNCj4gKw0KPiArW1BhY2th Z2VzLkFBUkNINjRdDQo+ICsgIEFybVBrZy9Bcm1Qa2cuZGVjDQo+ICsgIEFybVBsYXRmb3JtUGtn L0FybVBsYXRmb3JtUGtnLmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEFybU1t dUxpYg0KPiArICBBcm1TdmNMaWINCj4gKyAgQmFzZUxpYg0KPiArICBEZWJ1Z0xpYg0KPiArDQo+ ICtbR3VpZHNdDQo+ICsgIGdNcEluZm9ybWF0aW9uSG9iR3VpZA0KPiArICBnRWZpTW1QZWlNbXJh bU1lbW9yeVJlc2VydmVHdWlkDQo+ICsgIGdFZmlTdGFuZGFsb25lTW1Ob25TZWN1cmVCdWZmZXJH dWlkDQo+ICsgIGdFZmlBcm1UZkNwdURyaXZlckVwRGVzY3JpcHRvckd1aWQNCj4gZGlmZiAtLWdp dCBhL1N0YW5kYWxvbmVNbVBrZyBiL1N0YW5kYWxvbmVNbVBrZ35IRUFEDQo+IHNpbWlsYXJpdHkg aW5kZXggMTAwJQ0KPiByZW5hbWUgZnJvbSBTdGFuZGFsb25lTW1Qa2cNCj4gcmVuYW1lIHRvIFN0 YW5kYWxvbmVNbVBrZ35IRUFEDQo+IC0tDQo+IDIuMTYuMg0KPg0KSU1QT1JUQU5UIE5PVElDRTog VGhlIGNvbnRlbnRzIG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlk ZW50aWFsIGFuZCBtYXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50 ZW5kZWQgcmVjaXBpZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5k IGRvIG5vdCBkaXNjbG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0 IGZvciBhbnkgcHVycG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55 IG1lZGl1bS4gVGhhbmsgeW91Lg0K