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.43; helo=eur01-db5-obe.outbound.protection.outlook.com; envelope-from=udit.kumar@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0043.outbound.protection.outlook.com [104.47.2.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E5E522244E3F0 for ; Sun, 15 Apr 2018 21:39:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=B93lZ2FmNZf91zKO/e2cvTCf7EY226bp8WwTVYbxGJE=; b=ZZtL85nYRF4Dxaxs9UcxmxPPCjbkrlczwselTE/ehMCOx/07imWSf6OwSQjxndqLKq98GO83hn0DfHmdJ8y4QWUtGZPn1vYba2c+p2630cQY9AVUtWBjZzwTd75PdfyJiMcyd0C+ohnPV1DujeeDXMYA58TaiydMNXgtIjqF1D8= Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com (52.133.18.151) by AM6PR0402MB3495.eurprd04.prod.outlook.com (52.133.19.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.675.14; Mon, 16 Apr 2018 04:39:15 +0000 Received: from AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::28c1:57d5:1b06:e35b]) by AM6PR0402MB3334.eurprd04.prod.outlook.com ([fe80::28c1:57d5:1b06:e35b%13]) with mapi id 15.20.0675.015; Mon, 16 Apr 2018 04:39:15 +0000 From: Udit Kumar To: Leif Lindholm , "edk2-devel@lists.01.org" CC: Michael D Kinney , Liming Gao , Laszlo Ersek , Meenakshi Aggarwal Thread-Topic: [PATCH] MdePkg: add big-endian MMIO BaseBeIoLib Thread-Index: AQHT007EzzYGkXulA0q/HdmBMZFaCKQCGz8g Date: Mon, 16 Apr 2018 04:39:15 +0000 Message-ID: References: <20180413174211.858-1-leif.lindholm@linaro.org> In-Reply-To: <20180413174211.858-1-leif.lindholm@linaro.org> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=udit.kumar@nxp.com; x-originating-ip: [14.142.187.166] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM6PR0402MB3495; 7:U0seNlHpMvHv8L3tWFhBTGc/pkJjXaVZlU4HmLxauYRVglyaKnXuqc4WjLRrtEvKIAT1OjcVpf2OqhqyoA/5LszyK/cnct5VdfviLcOl9RKRHvlzhve2otbBCxP+kQ6BVzmpiA6gc79+67eitN+QayCIUkYzqKiRmq/OXJnECFPE5Mi1n0aYlwTgJlOYjvltFH0+WmRW+8JMSvfs1Q4WmGcv0clDjmlhsKki2p0PM/hz6dhucwp+A9xPXRwJ4LUc x-ms-exchange-antispam-srfa-diagnostics: SOS; x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(48565401081)(2017052603328)(7153060)(7193020); SRVR:AM6PR0402MB3495; x-ms-traffictypediagnostic: AM6PR0402MB3495: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(35073007944872)(185117386973197)(162533806227266)(45079756050767)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231232)(944501327)(52105095)(10201501046)(3002001)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(6072148)(201708071742011); SRVR:AM6PR0402MB3495; BCL:0; PCL:0; RULEID:; SRVR:AM6PR0402MB3495; x-forefront-prvs: 0644578634 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6029001)(39860400002)(396003)(39380400002)(366004)(376002)(346002)(189003)(199004)(13464003)(3280700002)(81166006)(16799955002)(76176011)(575784001)(86362001)(81156014)(33656002)(14454004)(3660700001)(97736004)(478600001)(966005)(68736007)(8676002)(99286004)(7696005)(106356001)(105586002)(186003)(2906002)(45080400002)(6116002)(3846002)(4326008)(102836004)(476003)(446003)(54906003)(11346002)(66066001)(6246003)(110136005)(55236004)(53546011)(7736002)(2900100001)(316002)(26005)(5660300001)(229853002)(9686003)(8936002)(16200700003)(55016002)(6306002)(53946003)(6436002)(53936002)(74316002)(25786009)(59450400001)(5250100002)(44832011)(2501003)(6506007)(305945005)(486006)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR0402MB3495; H:AM6PR0402MB3334.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: h5YySs+6zQ9UYTmK215+MxW6vEZsDn8xPRAFkniHLxVsy4CpezunSfQ1+gMgLoJjnYY590TA62Mxtm2UxG6MpeTEBs/K3A8W646o7pJfmLsOZwVMENgYyHXQUdqoZiz5vmdyFMASTa489MaYlFRcobCcppJyTflbnMje4ucWmiunqLYSqFMQ/aoDMaBezV3s spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: dc4d1167-8424-44a1-449f-08d5a3540256 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: dc4d1167-8424-44a1-449f-08d5a3540256 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Apr 2018 04:39:15.3175 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR0402MB3495 Subject: Re: [PATCH] MdePkg: add big-endian MMIO BaseBeIoLib 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: Mon, 16 Apr 2018 04:39:20 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIExlaWYgDQpUaGlzIGlzIHJlYWxseSB1c2VmdWwsIFdlIHdpbGwgcmUtc3BpbiBvdXIg cGF0Y2hlcyBiYXNlZCBvbiB0aGlzIA0KUmVnYXJkcw0KVWRpdA0KDQo+IC0tLS0tT3JpZ2luYWwg TWVzc2FnZS0tLS0tDQo+IEZyb206IExlaWYgTGluZGhvbG0gW21haWx0bzpsZWlmLmxpbmRob2xt QGxpbmFyby5vcmddDQo+IFNlbnQ6IEZyaWRheSwgQXByaWwgMTMsIDIwMTggMTE6MTIgUE0NCj4g VG86IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT47IExpbWluZyBHYW8NCj4gPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IFVkaXQgS3VtYXINCj4gPHVk aXQua3VtYXJAbnhwLmNvbT4NCj4gU3ViamVjdDogW1BBVENIXSBNZGVQa2c6IGFkZCBiaWctZW5k aWFuIE1NSU8gQmFzZUJlSW9MaWINCj4gDQo+IFdoZW4gcGVyZm9ybWluZyBNTUlPIHRvIGEgZGVz dGluYXRpb24gb2YgdGhlIG9wcG9zaXRlIGVuZGlhbm5lc3MgdG8gdGhlDQo+IGV4ZWN1dGluZyBw cm9jZXNzb3IsIHRoaXMgbGlicmFyeSBwcm92aWRlcyBhdXRvbWF0aWMgYnl0ZSBvcmRlciByZXZl cnNhbCBvbg0KPiBpbnB1dHMgYW5kIG91dHB1dHMuDQo+IA0KPiBDb250cmlidXRlZC11bmRlcjog VGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6IExl aWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz4NCj4gLS0tDQo+IA0KPiBVZGl0 LCBtYW55IGFwb2xvZ2llcyBmb3IgdGhpcyBkcmFnZ2luZyBvdXQgLSBiYWNrLXRvLWJhY2sgY29u ZmVyZW5jZXMsIGhvbGlkYXlzLA0KPiBhbmQgbG90cyBvZiBjYXRjaGluZyB1cC4NCj4gDQo+IFRo aXMgbW9kaWZpZWQgdmVyc2lvbiBpbnRyb2R1Y2VzIGEgc2luZ2xlIEJlSW9MaWIgaW5zdGFuY2Us IGJhY2tlZCBieSBhIHNvdXJjZS0NCj4gZmlsZSB0aGF0IGNvdWxkIGJlIHVzZWQgYWxzbyBmb3Ig YSBoeXBvdGhldGljYWwgTGVJb0xpYi4NCj4gVGhlcmUgaXMgbm8gTGVJb0xpYi5oIGluY2x1ZGVk IHRob3VnaC4NCg0KSSBhc3N1bWUgYXQgcHJlc2VudCwgdGhlcmUgaXMgbm8gbmVlZCBvZiBMZUlv TGliIGFzIHNwZWNzIGl0c2VsZiBzdXBwb3J0cyBMRSBvbmx5Lg0KDQo+IFdoaWxlIHRoaXMgaXMg YXJndWFibHkgb3ZlcmVuZ2luZWVyZWQsIEkgZG8gZmVlbCByZWFzb25hYmx5IHN0cm9uZ2x5IHRo YXQgY29kZQ0KPiBzaG91bGQgYmUgbmFtZWQgZm9yIHdoYXQgaXQgZG9lcywgbm90IGZvciBob3cg aXQgaXMgdXNlZCwgYW5kIGRvaW5nIGl0IHRoaXMgd2F5DQo+IGxldHMgbWUgZm9sbG93IHRoYXQg cnVsZS4NCg0KWW91IGFyZSBiZWluZyB0b28gZnV0dXJpc3RpYyDwn5iKIA0KDQpSZXZpZXdlZCBi eSBVZGl0IEt1bWFyDQoNCj4gSSBoYXZlIG5vdCBkdXBsaWNhdGVkIHRoZSAudW5pIGZpbGUgdG9n ZXRoZXIgd2l0aCB0aGUgLmluZiwgc2luY2UgdGhpcyBmb2xsb3dzIHdoYXQNCj4gaXMgZG9uZSBp biBCYXNlSW9MaWJJbnRyaW5zaWMuDQo+IA0KPiAgTWRlUGtnL0luY2x1ZGUvTGlicmFyeS9CZUlv TGliLmggICAgICAgICAgICAgICB8IDM3NiArKysrKysrKysrKysrKysrKysrDQo+ICBNZGVQa2cv TGlicmFyeS9CYXNlSW9MaWJTd2FwL0Jhc2VCZUlvTGliLmluZiAgIHwgIDQ4ICsrKw0KPiAgTWRl UGtnL0xpYnJhcnkvQmFzZUlvTGliU3dhcC9CYXNlSW9MaWJTd2FwLnVuaSB8ICAyMyArKw0KPiAg TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliU3dhcC9Jb0xpYlN3YXAuYyAgICAgICB8IDQ3Nw0KPiAr KysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBNZGVQa2cvTWRlUGtnLmRlYyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAzICsNCj4gIDUgZmlsZXMgY2hhbmdlZCwgOTI3IGluc2Vy dGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBNZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0Jl SW9MaWIuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYlN3 YXAvQmFzZUJlSW9MaWIuaW5mDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0xpYnJhcnkv QmFzZUlvTGliU3dhcC9CYXNlSW9MaWJTd2FwLnVuaQ0KPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IE1k ZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYlN3YXAvSW9MaWJTd2FwLmMNCj4gDQo+IGRpZmYgLS1naXQg YS9NZGVQa2cvSW5jbHVkZS9MaWJyYXJ5L0JlSW9MaWIuaA0KPiBiL01kZVBrZy9JbmNsdWRlL0xp YnJhcnkvQmVJb0xpYi5oDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAw MDAuLjViMmRjMWE4ZTENCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9NZGVQa2cvSW5jbHVkZS9M aWJyYXJ5L0JlSW9MaWIuaA0KPiBAQCAtMCwwICsxLDM3NiBAQA0KPiArLyoqIEBmaWxlDQo+ICsg IFByb3ZpZGUgYnl0ZS1zd2FwcGluZyBzZXJ2aWNlcyB0byBhY2Nlc3MgTU1JTyByZWdpc3RlcnMu DQo+ICsNCj4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gK0NvcHlyaWdodCAoYykgMjAxNywgQU1EIEluY29y cG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtDb3B5cmlnaHQgKGMpIDIwMTgs IExpbmFybyBsdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICtUaGlzIHByb2dy YW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0K PiArYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExp Y2Vuc2Ugd2hpY2gNCj4gK2FjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwg dGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gK2ZvdW5kIGF0DQo+ICtodHRwczovL2VtZWEw MS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZvcGVu cw0KPiArb3VyY2Uub3JnJTJGbGljZW5zZXMlMkZic2QtDQo+IGxpY2Vuc2UucGhwJmRhdGE9MDIl N0MwMSU3Q3VkaXQua3VtYXIlNDBueHAuDQo+ICtjb20lN0MyZjZjMzFlZWQzODU0Y2FhMDBiNDA4 ZDVhMTY1ZTRkNyU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDkNCj4gOWM1YzMwMTYNCj4gKzM1JTdD MCU3QzAlN0M2MzY1OTIzODEzNzQwMzA4OTcmc2RhdGE9YzBGRjdFS2puRGRUcVRNUCUyQlZEempP DQo+IEJFaEk1REUwRg0KPiAralY4dzVkT2dJcG9RJTNEJnJlc2VydmVkPTANCj4gKw0KPiArVEhF IFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJ UyIgQkFTSVMsDQo+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFO WSBLSU5ELCBFSVRIRVIgRVhQUkVTUw0KPiBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0K PiArI2lmbmRlZiBfX0JFX0lPX0xJQl9IX18NCj4gKyNkZWZpbmUgX19CRV9JT19MSUJfSF9fDQo+ ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRl IGVuZGlhbm5lc3MuDQo+ICsNCj4gKyAgUmVhZHMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNw ZWNpZmllZCBieSBBZGRyZXNzLg0KPiArICBUaGUgMTYtYml0IHJlYWQgdmFsdWUgaXMgcmV0dXJu ZWQgaW4gcmV2ZXJzZWQgYnl0ZSBvcmRlci4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJh bnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNl cmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRv IHJlYWQuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gKw0KPiArKiovDQo+ ICtVSU5UMTYNCj4gK0VGSUFQSQ0KPiArQmVNbWlvUmVhZDE2ICgNCj4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsg IFdyaXRlcyBhIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVuZGlhbm5lc3MuDQo+ ICsNCj4gKyAgV3JpdGVzIHRoZSAxNi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRk cmVzcyB3aXRoIHRoZQ0KPiArIGJ5dGUtcmV2ZXJzZWQgIHZlcnNpb24gb2YgdGhlIHZhbHVlIHNw ZWNpZmllZCBieSBWYWx1ZSBhbmQgcmV0dXJucyB0aGUgb3JpZ2luYWwNCj4gVmFsdWUuDQo+ICsg IFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0 ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRk cmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgIFRo ZSB2YWx1ZSB0byB3cml0ZSB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArICBAcmV0dXJu IFZhbHVlLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQxNg0KPiArRUZJQVBJDQo+ICtCZU1taW9Xcml0 ZTE2ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBWYWx1ZQ0KPiArICApOw0KPiAr DQo+ICsvKioNCj4gKyAgUmVhZHMgYSAxNi1iaXQgTU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBl bmRpYW5uZXNzLCBwZXJmb3JtcyBhDQo+ICtiaXR3aXNlIE9SLA0KPiArICBhbmQgd3JpdGVzIHRo ZSByZXN1bHQgYmFjayB0byB0aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgUmVh ZHMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLCBieXRlLXJl dmVyc2VzDQo+ICsgdGhlIHJlYWQgIHJlc3VsdCwgcGVyZm9ybXMgYSBiaXR3aXNlIE9SIGJldHdl ZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRoZSB2YWx1ZSBzcGVjaWZpZWQgIGJ5IE9yRGF0 YSwgYnl0ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBhbmQgd3JpdGVzDQo+ICsgdGhlIHJlc3VsdCB0 byB0aGUgMTYtYml0IE1NSU8gIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUNCj4g KyBwcmUtcmV2ZXJzYWwgdmFsdWUgd3JpdHRlbiB0byB0aGUgTU1JTyAgcmVnaXN0ZXIgaXMgcmV0 dXJuZWQuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyBy ZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsg IEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFt ICBPckRhdGEgIFRoZSB2YWx1ZSB0byBPUiB3aXRoIHRoZSByZWFkIHZhbHVlIGZyb20gdGhlIE1N SU8NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiBiYWNr IHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQxNg0KPiArRUZJQVBJ DQo+ICtCZU1taW9PcjE2ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAg IEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBPckRhdGEN Cj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMTYtYml0IE1NSU8gcmVnaXN0ZXIg b2Ygb3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lzZSBBTkQsDQo+ICsg IGFuZCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvIHRoZSAxNi1iaXQgTU1JTyByZWdpc3Rlci4N Cj4gKw0KPiArICBSZWFkcyB0aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFk ZHJlc3MsIGJ5dGUtcmV2ZXJzZXMNCj4gKyB0aGUgcmVhZCAgcmVzdWx0LCBwZXJmb3JtcyBhIGJp dHdpc2UgQU5EIGJldHdlZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRoZSB2YWx1ZSBzcGVj aWZpZWQgIGJ5IEFuZERhdGEsIGJ5dGUtcmV2ZXJzZXMgdGhlIHJlc3VsdCwgYW5kIHdyaXRlcw0K PiArIHRoZSByZXN1bHQgdG8gdGhlIDE2LWJpdCBNTUlPICByZWdpc3RlciBzcGVjaWZpZWQgYnkg QWRkcmVzcy4gVGhlDQo+ICsgcHJlLXJldmVyc2FsIHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1NSU8g IHJlZ2lzdGVyIGlzIHJldHVybmVkLg0KPiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVl IHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUgIG9wZXJhdGlvbnMNCj4gKyBhcmUgc2VyaWFs aXplZC4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gd3Jp dGUuDQo+ICsgIEBwYXJhbSAgQW5kRGF0YSBUaGUgdmFsdWUgdG8gQU5EIHdpdGggdGhlIHJlYWQg dmFsdWUgZnJvbSB0aGUgTU1JTw0KPiByZWdpc3Rlci4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSB2 YWx1ZSB3cml0dGVuIGJhY2sgdG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ICsNCj4gKyoqLw0KPiAr VUlOVDE2DQo+ICtFRklBUEkNCj4gK0JlTW1pb0FuZDE2ICgNCj4gKyAgSU4gICAgICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICBBbmREYXRhDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIDE2 LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVuZGlhbm5lc3MsIHBlcmZvcm1zIGENCj4g K2JpdHdpc2UgQU5EDQo+ICsgIGZvbGxvd2VkIGJ5IGEgYml0d2lzZSBPUiwgYW5kIHdyaXRlcyB0 aGUgcmVzdWx0IGJhY2sgdG8gdGhlIDE2LWJpdA0KPiArTU1JTw0KPiArICByZWdpc3Rlci4NCj4g Kw0KPiArICBSZWFkcyB0aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJl c3MsIGJ5dGUgcmV2ZXJzZXMNCj4gKyB0aGUgcmVhZCAgcmVzdWx0LCBwZXJmb3JtcyBhIGJpdHdp c2UgQU5EIGJldHdlZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRoZSB2YWx1ZSBzcGVjaWZp ZWQgIGJ5IEFuZERhdGEsIHBlcmZvcm1zIGEgYml0d2lzZSBPUiBiZXR3ZWVuIHRoZQ0KPiArIHJl c3VsdCBvZiB0aGUgQU5EIG9wZXJhdGlvbiBhbmQgIHRoZSB2YWx1ZSBzcGVjaWZpZWQgYnkgT3JE YXRhLA0KPiArIGJ5dGUtcmV2ZXJzZXMgdGhlIHJlc3VsdCwgYW5kIHdyaXRlcyB0aGUgcmVzdWx0 ICB0byB0aGUgMTYtYml0IE1NSU8NCj4gKyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4g VGhlIHByZS1yZXZlcnNhbCB2YWx1ZSAgd3JpdHRlbiB0byB0aGUgTU1JTw0KPiByZWdpc3RlciBp cyByZXR1cm5lZC4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBN TUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsN Cj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArICBA cGFyYW0gIEFuZERhdGEgVGhlIHZhbHVlIHRvIEFORCB3aXRoIHRoZSByZWFkIHZhbHVlIGZyb20g dGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsgIEBwYXJhbSAgT3JEYXRhICBUaGUgdmFsdWUgdG8g T1Igd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBBTkQgb3BlcmF0aW9uLg0KPiArDQo+ICsgIEByZXR1 cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiAr KiovDQo+ICtVSU5UMTYNCj4gK0VGSUFQSQ0KPiArQmVNbWlvQW5kVGhlbk9yMTYgKA0KPiArICBJ TiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4gICAgICBV SU5UMTYgICAgICAgICAgICAgICAgICAgIEFuZERhdGEsDQo+ICsgIElOICAgICAgVUlOVDE2ICAg ICAgICAgICAgICAgICAgICBPckRhdGENCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRz IGEgMzItYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcy4NCj4gKw0KPiAr ICBSZWFkcyB0aGUgMzItYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuDQo+ ICsgIFRoZSAzMi1iaXQgcmVhZCB2YWx1ZSBpcyByZXR1cm5lZCBpbiByZXZlcnNlZCBieXRlIG9y ZGVyLg0KPiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVh ZCBhbmQgd3JpdGUgIG9wZXJhdGlvbnMNCj4gKyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBA cGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gcmVhZC4NCj4gKw0KPiArICBAcmV0 dXJuIFRoZSB2YWx1ZSByZWFkLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQzMg0KPiArRUZJQVBJDQo+ ICtCZU1taW9SZWFkMzIgKA0KPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAg QWRkcmVzcw0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgV3JpdGVzIGEgMzItYml0IE1NSU8g cmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcy4NCj4gKw0KPiArICBXcml0ZXMgdGhlIDMy LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzIHdpdGggdGhlDQo+ICsgYnl0 ZS1yZXZlcnNlZCAgdmVyc2lvbiBvZiB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IFZhbHVlIGFuZCBy ZXR1cm5zIHRoZSBvcmlnaW5hbA0KPiBWYWx1ZS4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1 YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJl IHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVy IHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVlICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRo ZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0K PiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK0JlTW1pb1dyaXRlMzIgKA0KPiArICBJTiAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4gICAgICBVSU5UMzIgICAg ICAgICAgICAgICAgICAgIFZhbHVlDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBh IDMyLWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVuZGlhbm5lc3MsIHBlcmZvcm1zIGEN Cj4gK2JpdHdpc2UgT1IsDQo+ICsgIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvIHRoZSAz Mi1iaXQgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgMzItYml0IE1NSU8gcmVn aXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MsIGJ5dGUtcmV2ZXJzZXMNCj4gKyB0aGUgcmVhZCAg cmVzdWx0LCBwZXJmb3JtcyBhIGJpdHdpc2UgT1IgYmV0d2VlbiB0aGUgcmVhZCByZXN1bHQgYW5k DQo+ICsgdGhlIHZhbHVlIHNwZWNpZmllZCAgYnkgT3JEYXRhLCBieXRlLXJldmVyc2VzIHRoZSBy ZXN1bHQsIGFuZCB3cml0ZXMNCj4gKyB0aGUgcmVzdWx0IHRvIHRoZSAzMi1iaXQgTU1JTyAgcmVn aXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZQ0KPiArIHByZS1yZXZlcnNhbCB2YWx1ZSB3 cml0dGVuIHRvIHRoZSBNTUlPICByZWdpc3RlciBpcyByZXR1cm5lZC4NCj4gKyAgVGhpcyBmdW5j dGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRp b25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBN TUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIE9yRGF0YSAgVGhlIHZhbHVlIHRv IE9SIHdpdGggdGhlIHJlYWQgdmFsdWUgZnJvbSB0aGUgTU1JTw0KPiByZWdpc3Rlci4NCj4gKw0K PiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIGJhY2sgdG8gdGhlIE1NSU8gcmVnaXN0ZXIu DQo+ICsNCj4gKyoqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK0JlTW1pb09yMzIgKA0KPiAr ICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4gICAg ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIE9yRGF0YQ0KPiArICApOw0KPiArDQo+ICsvKioN Cj4gKyAgUmVhZHMgYSAzMi1iaXQgTU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBlbmRpYW5uZXNz LCBwZXJmb3JtcyBhDQo+ICtiaXR3aXNlIEFORCwNCj4gKyAgYW5kIHdyaXRlcyB0aGUgcmVzdWx0 IGJhY2sgdG8gdGhlIDMyLWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlYWRzIHRoZSAz Mi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0ZS1yZXZlcnNlcw0K PiArIHRoZSByZWFkICByZXN1bHQsIHBlcmZvcm1zIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB0aGUg cmVhZCByZXN1bHQgYW5kDQo+ICsgdGhlIHZhbHVlIHNwZWNpZmllZCAgYnkgQW5kRGF0YSwgYnl0 ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBhbmQgd3JpdGVzDQo+ICsgdGhlIHJlc3VsdCB0byB0aGUg MzItYml0IE1NSU8gIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUNCj4gKyBwcmUt cmV2ZXJzYWwgdmFsdWUgd3JpdHRlbiB0byB0aGUgTU1JTyAgcmVnaXN0ZXIgaXMgcmV0dXJuZWQu DQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFu ZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJh bSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBBbmRE YXRhIFRoZSB2YWx1ZSB0byBBTkQgd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+ IHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0 aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArKiovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiAr QmVNbWlvQW5kMzIgKA0KPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRk cmVzcywNCj4gKyAgSU4gICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEFuZERhdGENCj4g KyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMzItYml0IE1NSU8gcmVnaXN0ZXIgb2Yg b3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lzZSBBTkQNCj4gKyAgZm9s bG93ZWQgYnkgYSBiaXR3aXNlIE9SLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUg MzItYml0DQo+ICtNTUlPDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlYWRzIHRoZSAzMi1i aXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0ZSByZXZlcnNlcw0KPiAr IHRoZSByZWFkICB2YWx1ZSwgcGVyZm9ybXMgYSBiaXR3aXNlIEFORCBiZXR3ZWVuIHRoZSByZWFk IHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVkICBieSBBbmREYXRhLCBwZXJmb3Jt cyBhIGJpdHdpc2UgT1IgYmV0d2VlbiB0aGUNCj4gKyByZXN1bHQgb2YgdGhlIEFORCBvcGVyYXRp b24gYW5kICB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IE9yRGF0YSwNCj4gKyBieXRlLXJldmVyc2Vz IHRoZSByZXN1bHQsIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCAgdG8gdGhlIDMyLWJpdCBNTUlPDQo+ ICsgcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSBwcmUtcmV2ZXJzYWwgdmFsdWUg IHdyaXR0ZW4gdG8gdGhlIE1NSU8NCj4gcmVnaXN0ZXIgaXMgcmV0dXJuZWQuDQo+ICsgIFRoaXMg ZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3Bl cmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBU aGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBBbmREYXRhIFRoZSB2YWx1 ZSB0byBBTkQgd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+IHJlZ2lzdGVyLg0K PiArICBAcGFyYW0gIE9yRGF0YSAgVGhlIHZhbHVlIHRvIE9SIHdpdGggdGhlIHJlc3VsdCBvZiB0 aGUgQU5EIG9wZXJhdGlvbi4NCj4gKw0KPiArICBAcmV0dXJuIFRoZSB2YWx1ZSB3cml0dGVuIGJh Y2sgdG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDMyDQo+ICtFRklB UEkNCj4gK0JlTW1pb0FuZFRoZW5PcjMyICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAg ICBBbmREYXRhLA0KPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgT3JEYXRh DQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVy IG9mIG9wcG9zaXRlIGVuZGlhbm5lc3MuDQo+ICsNCj4gKyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlP IHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLg0KPiArICBUaGUgNjQtYml0IHJlYWQgdmFs dWUgaXMgcmV0dXJuZWQgaW4gcmV2ZXJzZWQgYnl0ZSBvcmRlci4NCj4gKyAgVGhpcyBmdW5jdGlv biBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25z DQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlP IHJlZ2lzdGVyIHRvIHJlYWQuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4g Kw0KPiArKiovDQo+ICtVSU5UNjQNCj4gK0VGSUFQSQ0KPiArQmVNbWlvUmVhZDY0ICgNCj4gKyAg SU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MNCj4gKyAgKTsNCj4gKw0K PiArLyoqDQo+ICsgIFdyaXRlcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVu ZGlhbm5lc3MuDQo+ICsNCj4gKyAgV3JpdGVzIHRoZSA2NC1iaXQgTU1JTyByZWdpc3RlciBzcGVj aWZpZWQgYnkgQWRkcmVzcyB3aXRoIHRoZQ0KPiArIGJ5dGUtcmV2ZXJzZWQgIHZlcnNpb24gb2Yg dGhlIHZhbHVlIHNwZWNpZmllZCBieSBWYWx1ZSBhbmQgcmV0dXJucyBWYWx1ZS4NCj4gKyAgVGhp cyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBv cGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNz IFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVlICAgVGhlIHZh bHVlIHRvIHdyaXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ2 NA0KPiArRUZJQVBJDQo+ICtCZU1taW9Xcml0ZTY0ICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICBWYWx1ZQ0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyAgUmVhZHMgYSA2NC1iaXQg TU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBlbmRpYW5uZXNzLCBwZXJmb3JtcyBhDQo+ICtiaXR3 aXNlIE9SLA0KPiArICBhbmQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgNjQtYml0IE1N SU8gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIHNw ZWNpZmllZCBieSBBZGRyZXNzLCBieXRlIHJldmVyc2VzDQo+ICsgdGhlIHJlYWQgIHJlc3VsdCwg cGVyZm9ybXMgYSBiaXR3aXNlIE9SIGJldHdlZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRo ZSB2YWx1ZSBzcGVjaWZpZWQgIGJ5IE9yRGF0YSwgYnl0ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBh bmQgd3JpdGVzDQo+ICsgdGhlIHJlc3VsdCB0byB0aGUgNjQtYml0IE1NSU8gIHJlZ2lzdGVyIHNw ZWNpZmllZCBieSBBZGRyZXNzLiBUaGUNCj4gKyBwcmUtcmV2ZXJzYWwgdmFsdWUgd3JpdHRlbiB0 byB0aGUgIE1NSU8gcmVnaXN0ZXIgaXMgcmV0dXJuZWQuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVz dCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiAr IGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdp c3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBPckRhdGEgIFRoZSB2YWx1ZSB0byBPUiB3aXRo IHRoZSByZWFkIHZhbHVlIGZyb20gdGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJl dHVybiBUaGUgdmFsdWUgd3JpdHRlbiBiYWNrIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ ICsqKi8NCj4gK1VJTlQ2NA0KPiArRUZJQVBJDQo+ICtCZU1taW9PcjY0ICgNCj4gKyAgSU4gICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDY0 ICAgICAgICAgICAgICAgICAgICBPckRhdGENCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFJl YWRzIGEgNjQtYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9y bXMgYQ0KPiArYml0d2lzZSBBTkQsDQo+ICsgIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRv IHRoZSA2NC1iaXQgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgNjQtYml0IE1N SU8gcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MsIGJ5dGUtcmV2ZXJzZXMNCj4gKyB0aGUg cmVhZCAgdmFsdWUsIHBlcmZvcm1zIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB0aGUgcmVhZCByZXN1 bHQgYW5kDQo+ICsgdGhlIHZhbHVlIHNwZWNpZmllZCAgYnkgQW5kRGF0YSwgYnl0ZS1yZXZlcnNl cyB0aGUgcmVzdWx0LCBhbmQgd3JpdGVzDQo+ICsgdGhlIHJlc3VsdCB0byB0aGUgNjQtYml0IE1N SU8gIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUNCj4gKyBwcmUtcmV2ZXJzYWwg dmFsdWUgd3JpdHRlbiB0byB0aGUgTU1JTyAgcmVnaXN0ZXIgaXMgcmV0dXJuZWQuDQo+ICsgIFRo aXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAg b3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVz cyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBBbmREYXRhIFRoZSB2 YWx1ZSB0byBBTkQgd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+IHJlZ2lzdGVy Lg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0aGUgTU1JTyBy ZWdpc3Rlci4NCj4gKw0KPiArKiovDQo+ICtVSU5UNjQNCj4gK0VGSUFQSQ0KPiArQmVNbWlvQW5k NjQgKA0KPiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4g KyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIEFuZERhdGENCj4gKyAgKTsNCj4g Kw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgNjQtYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUg ZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lzZSBBTkQNCj4gKyAgZm9sbG93ZWQgYnkg YSBiaXR3aXNlIE9SLCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgNjQtYml0DQo+ ICtNTUlPDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlYWRzIHRoZSA2NC1iaXQgTU1JTyBy ZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0ZS1yZXZlcnNlcw0KPiArIHRoZSByZWFk ICByZXN1bHQsIHBlcmZvcm1zIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB0aGUgcmVhZCByZXN1bHQg YW5kDQo+ICsgdGhlIHZhbHVlIHNwZWNpZmllZCAgYnkgQW5kRGF0YSwgcGVyZm9ybXMgYSBiaXR3 aXNlIE9SIGJldHdlZW4gdGhlDQo+ICsgcmVzdWx0IG9mIHRoZSBBTkQgb3BlcmF0aW9uIGFuZCAg dGhlIHZhbHVlIHNwZWNpZmllZCBieSBPckRhdGEsDQo+ICsgYnl0ZS1yZXZlcnNlcyB0aGUgcmVz dWx0LCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgIHRvIHRoZSA2NC1iaXQgTU1JTw0KPiArIHJlZ2lz dGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUgcHJlLXJldmVyc2FsIHZhbHVlICB3cml0dGVu IHRvIHRoZSBNTUlPDQo+IHJlZ2lzdGVyIGlzIHJldHVybmVkLg0KPiArICBUaGlzIGZ1bmN0aW9u IG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQgd3JpdGUgIG9wZXJhdGlvbnMN Cj4gKyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBAcGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8g cmVnaXN0ZXIgdG8gd3JpdGUuDQo+ICsgIEBwYXJhbSAgQW5kRGF0YSBUaGUgdmFsdWUgdG8gQU5E IHdpdGggdGhlIHJlYWQgdmFsdWUgZnJvbSB0aGUgTU1JTw0KPiByZWdpc3Rlci4NCj4gKyAgQHBh cmFtICBPckRhdGEgIFRoZSB2YWx1ZSB0byBPUiB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIEFORCBv cGVyYXRpb24uDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3JpdHRlbiBiYWNrIHRvIHRo ZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ2NA0KPiArRUZJQVBJDQo+ICtC ZU1taW9BbmRUaGVuT3I2NCAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBBZGRyZXNzLA0KPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQW5kRGF0 YSwNCj4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE9yRGF0YQ0KPiArICAp Ow0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xp YlN3YXAvQmFzZUJlSW9MaWIuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliU3dhcC9C YXNlQmVJb0xpYi5pbmYNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAw MC4uZmJkNjhiOTkyOQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9MaWJyYXJ5L0Jh c2VJb0xpYlN3YXAvQmFzZUJlSW9MaWIuaW5mDQo+IEBAIC0wLDAgKzEsNDggQEANCj4gKyMjIEBm aWxlDQo+ICsjICBCeXRlIHN3YXBwaW5nIEkvTyBMaWJyYXJ5Lg0KPiArIw0KPiArIyAgQnl0ZSBz d2FwcGluZyBJL08gTGlicmFyeSBmb3IgYWxsIGFyY2hpdGVjdHVyZXMuIE9ubHkgTU1JTw0KPiAr c3VwcG9ydGVkLiBJL08gIyAgYWNjZXNzZXMgdGFrZSBwbGFjZSB0aHJvdWdoIHRoZSBub3JtYWwg SW9MaWIsIGJ1dA0KPiArdmFsdWVzIHJlYWQgYW5kIHdyaXR0ZW4gIyAgYXJlIGJ5dGUtcmV2ZXJz ZWQgdG8gaW50ZXJhY3Qgd2l0aCBwZXJpcGhlcmFscyBvZg0KPiBub24tbmF0aXZlIGVuZGlhbm5l c3MuDQo+ICsjDQo+ICsjICBDb3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE1LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cw0KPiArcmVzZXJ2ZWQuPEJSPiAjICBQb3J0aW9ucyBjb3B5cmlnaHQg KGMpIDIwMDggLSAyMDA5LCBBcHBsZSBJbmMuIEFsbA0KPiArcmlnaHRzIHJlc2VydmVkLjxCUj4g IyAgQ29weXJpZ2h0IChjKSAyMDE3LCBBTUQgSW5jb3Jwb3JhdGVkLiBBbGwNCj4gK3JpZ2h0cyBy ZXNlcnZlZC48QlI+ICMgIyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVy aWFscyAjDQo+ICthcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJt cyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCj4gK0JTRCBMaWNlbnNlICMgIHdoaWNoIGFjY29tcGFu aWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBUaGUgZnVsbCB0ZXh0IG9mDQo+ICt0aGUgbGljZW5zZSBt YXkgYmUgZm91bmQgYXQgIw0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5v dXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZvcGVuc28NCj4gdXJjZS5vcmclMkZsaWNlbnNl cyUyRmJzZC0NCj4gbGljZW5zZS5waHAmZGF0YT0wMiU3QzAxJTdDdWRpdC5rdW1hciU0MG54cC5j b20lN0MyZjZjMzFlZWQzODU0Y2FhDQo+IDAwYjQwOGQ1YTE2NWU0ZDclN0M2ODZlYTFkM2JjMmI0 YzZmYTkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjMNCj4gNjU5MjM4MTM3NDAzMDg5NyZzZGF0 YT1jMEZGN0VLam5EZFRxVE1QJTJCVkR6ak9CRWhJNURFMEZqVjh3NWRPZ0kNCj4gcG9RJTNEJnJl c2VydmVkPTAuDQo+ICsjICBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBVTkRFUiBUSEUgQlNE IExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiArQkFTSVMsICMgIFdJVEhPVVQgV0FSUkFOVElFUyBP UiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUg0KPiBFWFBSRVNTIE9SIElNUExJ RUQuDQo+ICsjDQo+ICsjIw0KPiArDQo+ICtbRGVmaW5lc10NCj4gKyAgSU5GX1ZFUlNJT04gICAg ICAgICAgICAgICAgICAgID0gMHgwMDAxMDAxYQ0KPiArICBCQVNFX05BTUUgICAgICAgICAgICAg ICAgICAgICAgPSBCYXNlQmVJb0xpYg0KPiArICBNT0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAg ICAgPSBCYXNlSW9MaWJTd2FwLnVuaQ0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAg ICAgPSAwNzNjM2ZiZC1mZjBkLTQxYjYtYTIwOS0xZTQyZmQyYTNiYWINCj4gKyAgTU9EVUxFX1RZ UEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAg ICAgICAgICAgPSAxLjANCj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQmVJ b0xpYg0KPiArDQo+ICsNCj4gKyMNCj4gKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAg ID0gSUEzMiBYNjQgRUJDIElQRiBBUk0gQUFSQ0g2NA0KPiArIw0KPiArDQo+ICtbU291cmNlc10N Cj4gKyAgSW9MaWJTd2FwLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtn LmRlYw0KPiArDQo+ICtbTGlicmFyeUNsYXNzZXNdDQo+ICsgIEJhc2VMaWINCj4gKyAgSW9MaWIN Cj4gKw0KPiArW0J1aWxkT3B0aW9uc10NCj4gKyAgR0NDOipfKl8qX0NDX0ZMQUdTICAgICAgICAg ICAgID0gLUQgRlVOQ1RJT05fUFJFRklYPUJlDQo+ICsgIElOVEVMOipfKl8qX0NDX0ZMQUdTICAg ICAgICAgICA9IC9EIEZVTkNUSU9OX1BSRUZJWD1CZQ0KPiArICBNU0ZUOipfKl8qX0NDX0ZMQUdT ICAgICAgICAgICAgPSAvRCBGVU5DVElPTl9QUkVGSVg9QmUNCj4gZGlmZiAtLWdpdCBhL01kZVBr Zy9MaWJyYXJ5L0Jhc2VJb0xpYlN3YXAvQmFzZUlvTGliU3dhcC51bmkNCj4gYi9NZGVQa2cvTGli cmFyeS9CYXNlSW9MaWJTd2FwL0Jhc2VJb0xpYlN3YXAudW5pDQo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAuLmUzNWI0YWJlZjcNCj4gLS0tIC9kZXYvbnVsbA0KPiAr KysgYi9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJTd2FwL0Jhc2VJb0xpYlN3YXAudW5pDQo+IEBA IC0wLDAgKzEsMjMgQEANCj4gKy8vIC8qKiBAZmlsZQ0KPiArLy8gQnl0ZSBzd2FwcGluZyBJL08g TGlicmFyeS4NCj4gKy8vDQo+ICsvLyBCeXRlIHN3YXBwaW5nIEkvTyBMaWJyYXJ5IGZvciBhbGwg YXJjaGl0ZWN0dXJlcy4gT25seSBNTUlPDQo+ICtzdXBwb3J0ZWQuIEkvTyAvLyBhY2Nlc3NlcyB0 YWtlIHBsYWNlIHRocm91Z2ggdGhlIG5vcm1hbCBJb0xpYiwgYnV0DQo+ICt2YWx1ZXMgcmVhZCBh bmQgd3JpdHRlbiAvLyBhcmUgYnl0ZS1yZXZlcnNlZCB0byBpbnRlcmFjdCB3aXRoIHBlcmlwaGVy YWxzIG9mDQo+IG5vbi1uYXRpdmUgZW5kaWFubmVzcy4NCj4gKy8vDQo+ICsvLyBDb3B5cmlnaHQg KGMpIDIwMTgsIExpbmFybyBsdGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiAvLyAvLyBUaGlz DQo+ICtwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAvLyBhcmUgbGljZW5z ZWQgYW5kIG1hZGUNCj4gK2F2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMg b2YgdGhlIEJTRCBMaWNlbnNlIC8vIHdoaWNoDQo+ICthY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1 dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gK2ZvdW5kIGF0IC8v DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9 aHR0cCUzQSUyRiUyRm9wZW5zbw0KPiB1cmNlLm9yZyUyRmxpY2Vuc2VzJTJGYnNkLQ0KPiBsaWNl bnNlLnBocCZkYXRhPTAyJTdDMDElN0N1ZGl0Lmt1bWFyJTQwbnhwLmNvbSU3QzJmNmMzMWVlZDM4 NTRjYWENCj4gMDBiNDA4ZDVhMTY1ZTRkNyU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAx NjM1JTdDMCU3QzAlN0M2Mw0KPiA2NTkyMzgxMzc0MDMwODk3JnNkYXRhPWMwRkY3RUtqbkRkVHFU TVAlMkJWRHpqT0JFaEk1REUwRmpWOHc1ZE9nSQ0KPiBwb1ElM0QmcmVzZXJ2ZWQ9MC4NCj4gKy8v IFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAi QVMgSVMiDQo+ICtCQVNJUywgLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9O UyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gKy8vDQo+ICsv LyAqKi8NCj4gKw0KPiArDQo+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJCeXRlIHN3YXBwaW5nIEkvTw0KPiBMaWJyYXJ5Ig0KPiArDQo+ ICsjc3RyaW5nIFNUUl9NT0RVTEVfREVTQ1JJUFRJT04gICAgICAgICAgI2xhbmd1YWdlIGVuLVVT ICJCeXRlIHN3YXBwaW5nIEkvTw0KPiBMaWJyYXJ5IGZvciBhbGwgYXJjaGl0ZWN0dXJlcy4gT25s eSBNTUlPIHN1cHBvcnRlZC4gSS9PIGFjY2Vzc2VzIHRha2UgcGxhY2UNCj4gdGhyb3VnaCB0aGUg bm9ybWFsIElvTGliLCBidXQgdmFsdWVzIHJlYWQgYW5kIHdyaXR0ZW4gYXJlIGJ5dGUtcmV2ZXJz ZWQgdG8NCj4gaW50ZXJhY3Qgd2l0aCBwZXJpcGhlcmFscyBvZiBub24tbmF0aXZlIGVuZGlhbm5l c3MuIg0KPiArDQo+IGRpZmYgLS1naXQgYS9NZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJTd2FwL0lv TGliU3dhcC5jDQo+IGIvTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliU3dhcC9Jb0xpYlN3YXAuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi5mNGY0OWY3MmQyDQo+ IC0tLSAvZGV2L251bGwNCj4gKysrIGIvTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliU3dhcC9Jb0xp YlN3YXAuYw0KPiBAQCAtMCwwICsxLDQ3NyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIFByb3ZpZGUg Ynl0ZS1zd2FwcGluZyBzZXJ2aWNlcyB0byBhY2Nlc3MgTU1JTyByZWdpc3RlcnMuDQo+ICsNCj4g K0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMTIsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gK0NvcHlyaWdodCAoYykgMjAxNywgQU1EIEluY29ycG9yYXRlZC4g QWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ICtDb3B5cmlnaHQgKGMpIDIwMTgsIExpbmFybyBs dGQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArDQo+ICtUaGlzIHByb2dyYW0gYW5kIHRo ZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBsaWNlbnNlZCBhbmQgbWFkZQ0KPiArYXZhaWxh YmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2Ugd2hp Y2gNCj4gK2FjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0 aGUgbGljZW5zZSBtYXkgYmUNCj4gK2ZvdW5kIGF0DQo+ICtodHRwczovL2VtZWEwMS5zYWZlbGlu a3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZvcGVucw0KPiArb3Vy Y2Uub3JnJTJGbGljZW5zZXMlMkZic2QtDQo+IGxpY2Vuc2UucGhwJmRhdGE9MDIlN0MwMSU3Q3Vk aXQua3VtYXIlNDBueHAuDQo+ICtjb20lN0MyZjZjMzFlZWQzODU0Y2FhMDBiNDA4ZDVhMTY1ZTRk NyU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDkNCj4gOWM1YzMwMTYNCj4gKzM1JTdDMCU3QzAlN0M2 MzY1OTIzODEzNzQwMzA4OTcmc2RhdGE9YzBGRjdFS2puRGRUcVRNUCUyQlZEempPDQo+IEJFaEk1 REUwRg0KPiAralY4dzVkT2dJcG9RJTNEJnJlc2VydmVkPTANCj4gKw0KPiArVEhFIFBST0dSQU0g SVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyIgQkFTSVMs DQo+ICtXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUw0KPiBPUiBJTVBMSUVELg0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2luY2x1 ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvSW9MaWIuaD4NCj4g Kw0KPiArI2RlZmluZSBfX0NPTkNBVEVOQVRFKGEsIGIpIGEgIyMgYg0KPiArI2RlZmluZSBfQ09O Q0FURU5BVEUoYSwgYikgX19DT05DQVRFTkFURShhLCBiKSAjZGVmaW5lDQo+IEFERF9QUkVGSVgo bmFtZSkNCj4gK19DT05DQVRFTkFURSAoRlVOQ1RJT05fUFJFRklYLCBuYW1lKQ0KPiArDQo+ICsv KioNCj4gKyAgUmVhZHMgYSAxNi1iaXQgTU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBlbmRpYW5u ZXNzLg0KPiArDQo+ICsgIFJlYWRzIHRoZSAxNi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQg YnkgQWRkcmVzcy4NCj4gKyAgVGhlIDE2LWJpdCByZWFkIHZhbHVlIGlzIHJldHVybmVkIGluIHJl dmVyc2VkIGJ5dGUgb3JkZXIuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhh dCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVk Lg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFkLg0K PiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2 DQo+ICtFRklBUEkNCj4gK0FERF9QUkVGSVggKE1taW9SZWFkMTYpICgNCj4gKyAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MNCj4gKyAgKQ0KPiArew0KPiArICByZXR1 cm4gU3dhcEJ5dGVzMTYgKE1taW9SZWFkMTYgKEFkZHJlc3MpKTsgfQ0KPiArDQo+ICsvKioNCj4g KyAgV3JpdGVzIGEgMTYtYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcy4N Cj4gKw0KPiArICBXcml0ZXMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBB ZGRyZXNzIHdpdGggdGhlDQo+ICsgYnl0ZS1yZXZlcnNlZCAgdmVyc2lvbiBvZiB0aGUgdmFsdWUg c3BlY2lmaWVkIGJ5IFZhbHVlIGFuZCByZXR1cm5zIHRoZSBvcmlnaW5hbA0KPiBWYWx1ZS4NCj4g KyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdy aXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBB ZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVlICAg VGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1 cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDE2DQo+ICtFRklBUEkNCj4gK0FERF9QUkVG SVggKE1taW9Xcml0ZTE2KSAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBBZGRyZXNzLA0KPiArICBJTiAgICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgVmFsdWUN Cj4gKyAgKQ0KPiArew0KPiArICAoVk9JRCkgTW1pb1dyaXRlMTYgKEFkZHJlc3MsIFN3YXBCeXRl czE2IChWYWx1ZSkpOw0KPiArDQo+ICsgIHJldHVybiBWYWx1ZTsNCj4gK30NCj4gKw0KPiArLyoq DQo+ICsgIFJlYWRzIGEgMTYtYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVz cywgcGVyZm9ybXMgYQ0KPiArYml0d2lzZSBPUiwNCj4gKyAgYW5kIHdyaXRlcyB0aGUgcmVzdWx0 IGJhY2sgdG8gdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlYWRzIHRoZSAx Ni1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0ZS1yZXZlcnNlcw0K PiArIHRoZSByZWFkICByZXN1bHQsIHBlcmZvcm1zIGEgYml0d2lzZSBPUiBiZXR3ZWVuIHRoZSBy ZWFkIHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVkICBieSBPckRhdGEsIGJ5dGUt cmV2ZXJzZXMgdGhlIHJlc3VsdCwgYW5kIHdyaXRlcw0KPiArIHRoZSByZXN1bHQgdG8gdGhlIDE2 LWJpdCBNTUlPICByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhlDQo+ICsgcHJlLXJl dmVyc2FsIHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1NSU8gIHJlZ2lzdGVyIGlzIHJldHVybmVkLg0K PiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBhbmQg d3JpdGUgIG9wZXJhdGlvbnMNCj4gKyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBAcGFyYW0g IEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gd3JpdGUuDQo+ICsgIEBwYXJhbSAgT3JEYXRh ICBUaGUgdmFsdWUgdG8gT1Igd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+IHJl Z2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0aGUg TU1JTyByZWdpc3Rlci4NCj4gKw0KPiArKiovDQo+ICtVSU5UMTYNCj4gK0VGSUFQSQ0KPiArQURE X1BSRUZJWCAoTW1pb09yMTYpICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBPckRh dGENCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMTYgVmFsdWU7DQo+ICsNCj4gKyAgVmFsdWUgPSBB RERfUFJFRklYIChNbWlvUmVhZDE2KSAoQWRkcmVzcyk7ICBWYWx1ZSB8PSBPckRhdGE7DQo+ICsN Cj4gKyAgcmV0dXJuIEFERF9QUkVGSVggKE1taW9Xcml0ZTE2KSAoQWRkcmVzcywgVmFsdWUpOyB9 DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9z aXRlIGVuZGlhbm5lc3MsIHBlcmZvcm1zIGENCj4gK2JpdHdpc2UgQU5ELA0KPiArICBhbmQgd3Jp dGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgMTYtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ICsNCj4g KyAgUmVhZHMgdGhlIDE2LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLCBi eXRlLXJldmVyc2VzDQo+ICsgdGhlIHJlYWQgIHJlc3VsdCwgcGVyZm9ybXMgYSBiaXR3aXNlIEFO RCBiZXR3ZWVuIHRoZSByZWFkIHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVkICBi eSBBbmREYXRhLCBieXRlLXJldmVyc2VzIHRoZSByZXN1bHQsIGFuZCB3cml0ZXMNCj4gKyB0aGUg cmVzdWx0IHRvIHRoZSAxNi1iaXQgTU1JTyAgcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3Mu IFRoZQ0KPiArIHByZS1yZXZlcnNhbCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBNTUlPICByZWdpc3Rl ciBpcyByZXR1cm5lZC4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFs bCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiAr ICBAcGFyYW0gIEFuZERhdGEgVGhlIHZhbHVlIHRvIEFORCB3aXRoIHRoZSByZWFkIHZhbHVlIGZy b20gdGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgd3Jp dHRlbiBiYWNrIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQxNg0K PiArRUZJQVBJDQo+ICtBRERfUFJFRklYIChNbWlvQW5kMTYpICgNCj4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDE2ICAgICAg ICAgICAgICAgICAgICBBbmREYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDE2IFZhbHVlOw0K PiArDQo+ICsgIFZhbHVlID0gQUREX1BSRUZJWCAoTW1pb1JlYWQxNikgKEFkZHJlc3MpOyAgVmFs dWUgJj0gQW5kRGF0YTsNCj4gKw0KPiArICByZXR1cm4gQUREX1BSRUZJWCAoTW1pb1dyaXRlMTYp IChBZGRyZXNzLCBWYWx1ZSk7IH0NCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMTYtYml0IE1N SU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lz ZSBBTkQNCj4gKyAgZm9sbG93ZWQgYnkgYSBiaXR3aXNlIE9SLCBhbmQgd3JpdGVzIHRoZSByZXN1 bHQgYmFjayB0byB0aGUgMTYtYml0DQo+ICtNTUlPDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ICsg IFJlYWRzIHRoZSAxNi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0 ZSByZXZlcnNlcw0KPiArIHRoZSByZWFkICByZXN1bHQsIHBlcmZvcm1zIGEgYml0d2lzZSBBTkQg YmV0d2VlbiB0aGUgcmVhZCByZXN1bHQgYW5kDQo+ICsgdGhlIHZhbHVlIHNwZWNpZmllZCAgYnkg QW5kRGF0YSwgcGVyZm9ybXMgYSBiaXR3aXNlIE9SIGJldHdlZW4gdGhlDQo+ICsgcmVzdWx0IG9m IHRoZSBBTkQgb3BlcmF0aW9uIGFuZCAgdGhlIHZhbHVlIHNwZWNpZmllZCBieSBPckRhdGEsDQo+ ICsgYnl0ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBhbmQgd3JpdGVzIHRoZSByZXN1bHQgIHRvIHRo ZSAxNi1iaXQgTU1JTw0KPiArIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNzLiBUaGUgcHJl LXJldmVyc2FsIHZhbHVlICB3cml0dGVuIHRvIHRoZSBNTUlPDQo+IHJlZ2lzdGVyIGlzIHJldHVy bmVkLg0KPiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVh ZCBhbmQgd3JpdGUgIG9wZXJhdGlvbnMNCj4gKyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBA cGFyYW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gd3JpdGUuDQo+ICsgIEBwYXJhbSAg QW5kRGF0YSBUaGUgdmFsdWUgdG8gQU5EIHdpdGggdGhlIHJlYWQgdmFsdWUgZnJvbSB0aGUgTU1J Tw0KPiByZWdpc3Rlci4NCj4gKyAgQHBhcmFtICBPckRhdGEgIFRoZSB2YWx1ZSB0byBPUiB3aXRo IHRoZSByZXN1bHQgb2YgdGhlIEFORCBvcGVyYXRpb24uDQo+ICsNCj4gKyAgQHJldHVybiBUaGUg dmFsdWUgd3JpdHRlbiBiYWNrIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4g K1VJTlQxNg0KPiArRUZJQVBJDQo+ICtBRERfUFJFRklYIChNbWlvQW5kVGhlbk9yMTYpICgNCj4g KyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAg ICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgICBBbmREYXRhLA0KPiArICBJTiAgICAgIFVJTlQx NiAgICAgICAgICAgICAgICAgICAgT3JEYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDE2IFZh bHVlOw0KPiArDQo+ICsgIFZhbHVlID0gQUREX1BSRUZJWCAoTW1pb1JlYWQxNikgKEFkZHJlc3Mp OyAgVmFsdWUgJj0gQW5kRGF0YTsgIFZhbHVlDQo+ICsgfD0gT3JEYXRhOw0KPiArDQo+ICsgIHJl dHVybiBBRERfUFJFRklYIChNbWlvV3JpdGUxNikgKEFkZHJlc3MsIFZhbHVlKTsgfQ0KPiArDQo+ ICsvKioNCj4gKyAgUmVhZHMgYSAzMi1iaXQgTU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBlbmRp YW5uZXNzLg0KPiArDQo+ICsgIFJlYWRzIHRoZSAzMi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZp ZWQgYnkgQWRkcmVzcy4NCj4gKyAgVGhlIDMyLWJpdCByZWFkIHZhbHVlIGlzIHJldHVybmVkIGlu IHJldmVyc2VkIGJ5dGUgb3JkZXIuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUg dGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxp emVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byByZWFk Lg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHJlYWQuDQo+ICsNCj4gKyoqLw0KPiArVUlO VDMyDQo+ICtFRklBUEkNCj4gK0FERF9QUkVGSVggKE1taW9SZWFkMzIpICgNCj4gKyAgSU4gICAg ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MNCj4gKyAgKQ0KPiArew0KPiArICBy ZXR1cm4gU3dhcEJ5dGVzMzIgKE1taW9SZWFkMzIgKEFkZHJlc3MpKTsgfQ0KPiArDQo+ICsvKioN Cj4gKyAgV3JpdGVzIGEgMzItYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVz cy4NCj4gKw0KPiArICBXcml0ZXMgdGhlIDMyLWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBi eSBBZGRyZXNzIHdpdGggdGhlDQo+ICsgYnl0ZS1yZXZlcnNlZCAgdmVyc2lvbiBvZiB0aGUgdmFs dWUgc3BlY2lmaWVkIGJ5IFZhbHVlIGFuZCByZXR1cm5zIHRoZSBvcmlnaW5hbA0KPiBWYWx1ZS4N Cj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5k IHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFt ICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0KPiArICBAcGFyYW0gIFZhbHVl ICAgVGhlIHZhbHVlIHRvIHdyaXRlIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIEBy ZXR1cm4gVmFsdWUuDQo+ICsNCj4gKyoqLw0KPiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK0FERF9Q UkVGSVggKE1taW9Xcml0ZTMyKSAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBBZGRyZXNzLA0KPiArICBJTiAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgVmFs dWUNCj4gKyAgKQ0KPiArew0KPiArICAoVk9JRCkgTW1pb1dyaXRlMzIgKEFkZHJlc3MsIFN3YXBC eXRlczMyIChWYWx1ZSkpOw0KPiArDQo+ICsgIHJldHVybiBWYWx1ZTsNCj4gK30NCj4gKw0KPiAr LyoqDQo+ICsgIFJlYWRzIGEgMzItYml0IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFu bmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lzZSBPUiwNCj4gKyAgYW5kIHdyaXRlcyB0aGUgcmVz dWx0IGJhY2sgdG8gdGhlIDMyLWJpdCBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsgIFJlYWRzIHRo ZSAzMi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywgYnl0ZS1yZXZlcnNl cw0KPiArIHRoZSByZWFkICByZXN1bHQsIHBlcmZvcm1zIGEgYml0d2lzZSBPUiBiZXR3ZWVuIHRo ZSByZWFkIHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVkICBieSBPckRhdGEsIGJ5 dGUtcmV2ZXJzZXMgdGhlIHJlc3VsdCwgYW5kIHdyaXRlcw0KPiArIHRoZSByZXN1bHQgdG8gdGhl IDMyLWJpdCBNTUlPICByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcy4gVGhlDQo+ICsgcHJl LXJldmVyc2FsIHZhbHVlIHdyaXR0ZW4gdG8gdGhlIE1NSU8gIHJlZ2lzdGVyIGlzIHJldHVybmVk Lg0KPiArICBUaGlzIGZ1bmN0aW9uIG11c3QgZ3VhcmFudGVlIHRoYXQgYWxsIE1NSU8gcmVhZCBh bmQgd3JpdGUgIG9wZXJhdGlvbnMNCj4gKyBhcmUgc2VyaWFsaXplZC4NCj4gKw0KPiArICBAcGFy YW0gIEFkZHJlc3MgVGhlIE1NSU8gcmVnaXN0ZXIgdG8gd3JpdGUuDQo+ICsgIEBwYXJhbSAgT3JE YXRhICBUaGUgdmFsdWUgdG8gT1Igd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+ IHJlZ2lzdGVyLg0KPiArDQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0 aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArKiovDQo+ICtVSU5UMzINCj4gK0VGSUFQSQ0KPiAr QUREX1BSRUZJWCAoTW1pb09yMzIpICgNCj4gKyAgSU4gICAgICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICBP ckRhdGENCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIgVmFsdWU7DQo+ICsNCj4gKyAgVmFsdWUg PSBBRERfUFJFRklYIChNbWlvUmVhZDMyKSAoQWRkcmVzcyk7ICBWYWx1ZSB8PSBPckRhdGE7DQo+ ICsNCj4gKyAgcmV0dXJuIEFERF9QUkVGSVggKE1taW9Xcml0ZTMyKSAoQWRkcmVzcywgVmFsdWUp OyB9DQo+ICsNCj4gKy8qKg0KPiArICBSZWFkcyBhIDMyLWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9w cG9zaXRlIGVuZGlhbm5lc3MsIHBlcmZvcm1zIGENCj4gK2JpdHdpc2UgQU5ELA0KPiArICBhbmQg d3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgMzItYml0IE1NSU8gcmVnaXN0ZXIuDQo+ICsN Cj4gKyAgUmVhZHMgdGhlIDMyLWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRyZXNz LCBieXRlLXJldmVyc2VzDQo+ICsgdGhlIHJlYWQgIHJlc3VsdCwgcGVyZm9ybXMgYSBiaXR3aXNl IEFORCBiZXR3ZWVuIHRoZSByZWFkIHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVk ICBieSBBbmREYXRhLCBieXRlLXJldmVyc2VzIHRoZSByZXN1bHQsIGFuZCB3cml0ZXMNCj4gKyB0 aGUgcmVzdWx0IHRvIHRoZSAzMi1iaXQgTU1JTyAgcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJl c3MuIFRoZQ0KPiArIHByZS1yZXZlcnNhbCB2YWx1ZSB3cml0dGVuIHRvIHRoZSBNTUlPICByZWdp c3RlciBpcyByZXR1cm5lZC4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRlZSB0aGF0 IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlhbGl6ZWQu DQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdyaXRlLg0K PiArICBAcGFyYW0gIEFuZERhdGEgVGhlIHZhbHVlIHRvIEFORCB3aXRoIHRoZSByZWFkIHZhbHVl IGZyb20gdGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUg d3JpdHRlbiBiYWNrIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQz Mg0KPiArRUZJQVBJDQo+ICtBRERfUFJFRklYIChNbWlvQW5kMzIpICgNCj4gKyAgSU4gICAgICBV SU5UTiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBBbmREYXRhDQo+ICsgICkNCj4gK3sNCj4gKyAgVUlOVDMyIFZhbHVl Ow0KPiArDQo+ICsgIFZhbHVlID0gQUREX1BSRUZJWCAoTW1pb1JlYWQzMikgKEFkZHJlc3MpOyAg VmFsdWUgJj0gQW5kRGF0YTsNCj4gKw0KPiArICByZXR1cm4gQUREX1BSRUZJWCAoTW1pb1dyaXRl MzIpIChBZGRyZXNzLCBWYWx1ZSk7IH0NCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgMzItYml0 IE1NSU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0 d2lzZSBBTkQNCj4gKyAgZm9sbG93ZWQgYnkgYSBiaXR3aXNlIE9SLCBhbmQgd3JpdGVzIHRoZSBy ZXN1bHQgYmFjayB0byB0aGUgMzItYml0DQo+ICtNTUlPDQo+ICsgIHJlZ2lzdGVyLg0KPiArDQo+ ICsgIFJlYWRzIHRoZSAzMi1iaXQgTU1JTyByZWdpc3RlciBzcGVjaWZpZWQgYnkgQWRkcmVzcywg Ynl0ZSByZXZlcnNlcw0KPiArIHRoZSByZWFkICB2YWx1ZSwgcGVyZm9ybXMgYSBiaXR3aXNlIEFO RCBiZXR3ZWVuIHRoZSByZWFkIHJlc3VsdCBhbmQNCj4gKyB0aGUgdmFsdWUgc3BlY2lmaWVkICBi eSBBbmREYXRhLCBwZXJmb3JtcyBhIGJpdHdpc2UgT1IgYmV0d2VlbiB0aGUNCj4gKyByZXN1bHQg b2YgdGhlIEFORCBvcGVyYXRpb24gYW5kICB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IE9yRGF0YSwN Cj4gKyBieXRlLXJldmVyc2VzIHRoZSByZXN1bHQsIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCAgdG8g dGhlIDMyLWJpdCBNTUlPDQo+ICsgcmVnaXN0ZXIgc3BlY2lmaWVkIGJ5IEFkZHJlc3MuIFRoZSBw cmUtcmV2ZXJzYWwgdmFsdWUgIHdyaXR0ZW4gdG8gdGhlIE1NSU8NCj4gcmVnaXN0ZXIgaXMgcmV0 dXJuZWQuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyBy ZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsg IEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFt ICBBbmREYXRhIFRoZSB2YWx1ZSB0byBBTkQgd2l0aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBN TUlPDQo+IHJlZ2lzdGVyLg0KPiArICBAcGFyYW0gIE9yRGF0YSAgVGhlIHZhbHVlIHRvIE9SIHdp dGggdGhlIHJlc3VsdCBvZiB0aGUgQU5EIG9wZXJhdGlvbi4NCj4gKw0KPiArICBAcmV0dXJuIFRo ZSB2YWx1ZSB3cml0dGVuIGJhY2sgdG8gdGhlIE1NSU8gcmVnaXN0ZXIuDQo+ICsNCj4gKyoqLw0K PiArVUlOVDMyDQo+ICtFRklBUEkNCj4gK0FERF9QUkVGSVggKE1taW9BbmRUaGVuT3IzMikgKA0K PiArICBJTiAgICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4g ICAgICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIEFuZERhdGEsDQo+ICsgIElOICAgICAgVUlO VDMyICAgICAgICAgICAgICAgICAgICBPckRhdGENCj4gKyAgKQ0KPiArew0KPiArICBVSU5UMzIg VmFsdWU7DQo+ICsNCj4gKyAgVmFsdWUgPSBBRERfUFJFRklYIChNbWlvUmVhZDMyKSAoQWRkcmVz cyk7ICBWYWx1ZSAmPSBBbmREYXRhOyAgVmFsdWUNCj4gKyB8PSBPckRhdGE7DQo+ICsNCj4gKyAg cmV0dXJuIEFERF9QUkVGSVggKE1taW9Xcml0ZTMyKSAoQWRkcmVzcywgVmFsdWUpOyB9DQo+ICsN Cj4gKy8qKg0KPiArICBSZWFkcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVu ZGlhbm5lc3MuDQo+ICsNCj4gKyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNp ZmllZCBieSBBZGRyZXNzLg0KPiArICBUaGUgNjQtYml0IHJlYWQgdmFsdWUgaXMgcmV0dXJuZWQg aW4gcmV2ZXJzZWQgYnl0ZSBvcmRlci4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRl ZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlh bGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHJl YWQuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUgcmVhZC4NCj4gKw0KPiArKiovDQo+ICtV SU5UNjQNCj4gK0VGSUFQSQ0KPiArQUREX1BSRUZJWCAoTW1pb1JlYWQ2NCkgKA0KPiArICBJTiAg ICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcw0KPiArICApDQo+ICt7DQo+ICsg IHJldHVybiBTd2FwQnl0ZXM2NCAoTW1pb1JlYWQ2NCAoQWRkcmVzcykpOyB9DQo+ICsNCj4gKy8q Kg0KPiArICBXcml0ZXMgYSA2NC1iaXQgTU1JTyByZWdpc3RlciBvZiBvcHBvc2l0ZSBlbmRpYW5u ZXNzLg0KPiArDQo+ICsgIFdyaXRlcyB0aGUgNjQtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lmaWVk IGJ5IEFkZHJlc3Mgd2l0aCB0aGUNCj4gKyBieXRlLXJldmVyc2VkICB2ZXJzaW9uIG9mIHRoZSB2 YWx1ZSBzcGVjaWZpZWQgYnkgVmFsdWUgYW5kIHJldHVybnMgVmFsdWUuDQo+ICsgIFRoaXMgZnVu Y3Rpb24gbXVzdCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0 aW9ucw0KPiArIGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUg TU1JTyByZWdpc3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBWYWx1ZSAgIFRoZSB2YWx1ZSB0 byB3cml0ZSB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0KPiArKiovDQo+ICtVSU5UNjQNCj4g K0VGSUFQSQ0KPiArQUREX1BSRUZJWCAoTW1pb1dyaXRlNjQpICgNCj4gKyAgSU4gICAgICBVSU5U TiAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MsDQo+ICsgIElOICAgICAgVUlOVDY0ICAgICAg ICAgICAgICAgICAgICBWYWx1ZQ0KPiArICApDQo+ICt7DQo+ICsgIChWT0lEKSBNbWlvV3JpdGU2 NCAoQWRkcmVzcywgU3dhcEJ5dGVzNjQgKFZhbHVlKSk7DQo+ICsNCj4gKyAgcmV0dXJuIFZhbHVl Ow0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAgUmVhZHMgYSA2NC1iaXQgTU1JTyByZWdpc3RlciBv ZiBvcHBvc2l0ZSBlbmRpYW5uZXNzLCBwZXJmb3JtcyBhDQo+ICtiaXR3aXNlIE9SLA0KPiArICBh bmQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byB0aGUgNjQtYml0IE1NSU8gcmVnaXN0ZXIuDQo+ ICsNCj4gKyAgUmVhZHMgdGhlIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRy ZXNzLCBieXRlIHJldmVyc2VzDQo+ICsgdGhlIHJlYWQgIHJlc3VsdCwgcGVyZm9ybXMgYSBiaXR3 aXNlIE9SIGJldHdlZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRoZSB2YWx1ZSBzcGVjaWZp ZWQgIGJ5IE9yRGF0YSwgYnl0ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBhbmQgd3JpdGVzDQo+ICsg dGhlIHJlc3VsdCB0byB0aGUgNjQtYml0IE1NSU8gIHJlZ2lzdGVyIHNwZWNpZmllZCBieSBBZGRy ZXNzLiBUaGUNCj4gKyBwcmUtcmV2ZXJzYWwgdmFsdWUgd3JpdHRlbiB0byB0aGUgIE1NSU8gcmVn aXN0ZXIgaXMgcmV0dXJuZWQuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVzdCBndWFyYW50ZWUgdGhh dCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiArIGFyZSBzZXJpYWxpemVk Lg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdpc3RlciB0byB3cml0ZS4N Cj4gKyAgQHBhcmFtICBPckRhdGEgIFRoZSB2YWx1ZSB0byBPUiB3aXRoIHRoZSByZWFkIHZhbHVl IGZyb20gdGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsNCj4gKyAgQHJldHVybiBUaGUgdmFsdWUg d3JpdHRlbiBiYWNrIHRvIHRoZSBNTUlPIHJlZ2lzdGVyLg0KPiArDQo+ICsqKi8NCj4gK1VJTlQ2 NA0KPiArRUZJQVBJDQo+ICtBRERfUFJFRklYIChNbWlvT3I2NCkgKA0KPiArICBJTiAgICAgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcywNCj4gKyAgSU4gICAgICBVSU5UNjQgICAg ICAgICAgICAgICAgICAgIE9yRGF0YQ0KPiArICApDQo+ICt7DQo+ICsgIFVJTlQ2NCBWYWx1ZTsN Cj4gKw0KPiArICBWYWx1ZSA9IEFERF9QUkVGSVggKE1taW9SZWFkNjQpIChBZGRyZXNzKTsgIFZh bHVlIHw9IE9yRGF0YTsNCj4gKw0KPiArICByZXR1cm4gQUREX1BSRUZJWCAoTW1pb1dyaXRlNjQp IChBZGRyZXNzLCBWYWx1ZSk7IH0NCj4gKw0KPiArLyoqDQo+ICsgIFJlYWRzIGEgNjQtYml0IE1N SU8gcmVnaXN0ZXIgb2Ygb3Bwb3NpdGUgZW5kaWFubmVzcywgcGVyZm9ybXMgYQ0KPiArYml0d2lz ZSBBTkQsDQo+ICsgIGFuZCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvIHRoZSA2NC1iaXQgTU1J TyByZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgNjQtYml0IE1NSU8gcmVnaXN0ZXIgc3Bl Y2lmaWVkIGJ5IEFkZHJlc3MsIGJ5dGUtcmV2ZXJzZXMNCj4gKyB0aGUgcmVhZCAgdmFsdWUsIHBl cmZvcm1zIGEgYml0d2lzZSBBTkQgYmV0d2VlbiB0aGUgcmVhZCByZXN1bHQgYW5kDQo+ICsgdGhl IHZhbHVlIHNwZWNpZmllZCAgYnkgQW5kRGF0YSwgYnl0ZS1yZXZlcnNlcyB0aGUgcmVzdWx0LCBh bmQgd3JpdGVzDQo+ICsgdGhlIHJlc3VsdCB0byB0aGUgNjQtYml0IE1NSU8gIHJlZ2lzdGVyIHNw ZWNpZmllZCBieSBBZGRyZXNzLiBUaGUNCj4gKyBwcmUtcmV2ZXJzYWwgdmFsdWUgd3JpdHRlbiB0 byB0aGUgTU1JTyAgcmVnaXN0ZXIgaXMgcmV0dXJuZWQuDQo+ICsgIFRoaXMgZnVuY3Rpb24gbXVz dCBndWFyYW50ZWUgdGhhdCBhbGwgTU1JTyByZWFkIGFuZCB3cml0ZSAgb3BlcmF0aW9ucw0KPiAr IGFyZSBzZXJpYWxpemVkLg0KPiArDQo+ICsgIEBwYXJhbSAgQWRkcmVzcyBUaGUgTU1JTyByZWdp c3RlciB0byB3cml0ZS4NCj4gKyAgQHBhcmFtICBBbmREYXRhIFRoZSB2YWx1ZSB0byBBTkQgd2l0 aCB0aGUgcmVhZCB2YWx1ZSBmcm9tIHRoZSBNTUlPDQo+IHJlZ2lzdGVyLg0KPiArDQo+ICsgIEBy ZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0aGUgTU1JTyByZWdpc3Rlci4NCj4gKw0K PiArKiovDQo+ICtVSU5UNjQNCj4gK0VGSUFQSQ0KPiArQUREX1BSRUZJWCAoTW1pb0FuZDY0KSAo DQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBBZGRyZXNzLA0KPiArICBJ TiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQW5kRGF0YQ0KPiArICApDQo+ICt7DQo+ ICsgIFVJTlQ2NCBWYWx1ZTsNCj4gKw0KPiArICBWYWx1ZSA9IEFERF9QUkVGSVggKE1taW9SZWFk NjQpIChBZGRyZXNzKTsgIFZhbHVlICY9IEFuZERhdGE7DQo+ICsNCj4gKyAgcmV0dXJuIEFERF9Q UkVGSVggKE1taW9Xcml0ZTY0KSAoQWRkcmVzcywgVmFsdWUpOyB9DQo+ICsNCj4gKy8qKg0KPiAr ICBSZWFkcyBhIDY0LWJpdCBNTUlPIHJlZ2lzdGVyIG9mIG9wcG9zaXRlIGVuZGlhbm5lc3MsIHBl cmZvcm1zIGENCj4gK2JpdHdpc2UgQU5EDQo+ICsgIGZvbGxvd2VkIGJ5IGEgYml0d2lzZSBPUiwg YW5kIHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gdGhlIDY0LWJpdA0KPiArTU1JTw0KPiArICBy ZWdpc3Rlci4NCj4gKw0KPiArICBSZWFkcyB0aGUgNjQtYml0IE1NSU8gcmVnaXN0ZXIgc3BlY2lm aWVkIGJ5IEFkZHJlc3MsIGJ5dGUtcmV2ZXJzZXMNCj4gKyB0aGUgcmVhZCAgcmVzdWx0LCBwZXJm b3JtcyBhIGJpdHdpc2UgQU5EIGJldHdlZW4gdGhlIHJlYWQgcmVzdWx0IGFuZA0KPiArIHRoZSB2 YWx1ZSBzcGVjaWZpZWQgIGJ5IEFuZERhdGEsIHBlcmZvcm1zIGEgYml0d2lzZSBPUiBiZXR3ZWVu IHRoZQ0KPiArIHJlc3VsdCBvZiB0aGUgQU5EIG9wZXJhdGlvbiBhbmQgIHRoZSB2YWx1ZSBzcGVj aWZpZWQgYnkgT3JEYXRhLA0KPiArIGJ5dGUtcmV2ZXJzZXMgdGhlIHJlc3VsdCwgYW5kIHdyaXRl cyB0aGUgcmVzdWx0ICB0byB0aGUgNjQtYml0IE1NSU8NCj4gKyByZWdpc3RlciBzcGVjaWZpZWQg YnkgQWRkcmVzcy4gVGhlIHByZS1yZXZlcnNhbCB2YWx1ZSAgd3JpdHRlbiB0byB0aGUgTU1JTw0K PiByZWdpc3RlciBpcyByZXR1cm5lZC4NCj4gKyAgVGhpcyBmdW5jdGlvbiBtdXN0IGd1YXJhbnRl ZSB0aGF0IGFsbCBNTUlPIHJlYWQgYW5kIHdyaXRlICBvcGVyYXRpb25zDQo+ICsgYXJlIHNlcmlh bGl6ZWQuDQo+ICsNCj4gKyAgQHBhcmFtICBBZGRyZXNzIFRoZSBNTUlPIHJlZ2lzdGVyIHRvIHdy aXRlLg0KPiArICBAcGFyYW0gIEFuZERhdGEgVGhlIHZhbHVlIHRvIEFORCB3aXRoIHRoZSByZWFk IHZhbHVlIGZyb20gdGhlIE1NSU8NCj4gcmVnaXN0ZXIuDQo+ICsgIEBwYXJhbSAgT3JEYXRhICBU aGUgdmFsdWUgdG8gT1Igd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBBTkQgb3BlcmF0aW9uLg0KPiAr DQo+ICsgIEByZXR1cm4gVGhlIHZhbHVlIHdyaXR0ZW4gYmFjayB0byB0aGUgTU1JTyByZWdpc3Rl ci4NCj4gKw0KPiArKiovDQo+ICtVSU5UNjQNCj4gK0VGSUFQSQ0KPiArQUREX1BSRUZJWCAoTW1p b0FuZFRoZW5PcjY0KSAoDQo+ICsgIElOICAgICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBB ZGRyZXNzLA0KPiArICBJTiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgQW5kRGF0YSwN Cj4gKyAgSU4gICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE9yRGF0YQ0KPiArICApDQo+ ICt7DQo+ICsgIFVJTlQ2NCBWYWx1ZTsNCj4gKw0KPiArICBWYWx1ZSA9IEFERF9QUkVGSVggKE1t aW9SZWFkNjQpIChBZGRyZXNzKTsgIFZhbHVlICY9IEFuZERhdGE7ICBWYWx1ZQ0KPiArIHw9IE9y RGF0YTsNCj4gKw0KPiArICByZXR1cm4gQUREX1BSRUZJWCAoTW1pb1dyaXRlNjQpIChBZGRyZXNz LCBWYWx1ZSk7IH0NCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZGVjIGIvTWRlUGtnL01k ZVBrZy5kZWMgaW5kZXgNCj4gMGU2NGYyMmY0YS4uYWU3YzhkZmExMSAxMDA2NDQNCj4gLS0tIGEv TWRlUGtnL01kZVBrZy5kZWMNCj4gKysrIGIvTWRlUGtnL01kZVBrZy5kZWMNCj4gQEAgLTE2MCw2 ICsxNjAsOSBAQCBbTGlicmFyeUNsYXNzZXNdDQo+ICAgICMjICBAbGlicmFyeWNsYXNzICBQcm92 aWRlIHNlcnZpY2VzIHRvIGFjY2VzcyBJL08gUG9ydHMgYW5kIE1NSU8gcmVnaXN0ZXJzLg0KPiAg ICBJb0xpYnxJbmNsdWRlL0xpYnJhcnkvSW9MaWIuaA0KPiANCj4gKyAgIyMgIEBsaWJyYXJ5Y2xh c3MgIFByb3ZpZGUgYmlnLWVuZGlhbiBzZXJ2aWNlcyB0byBhY2Nlc3MgTU1JTyByZWdpc3RlcnMu DQo+ICsgIEJlSW9MaWJ8SW5jbHVkZS9MaWJyYXJ5L0JlSW9MaWIuaA0KPiArDQo+ICAgICMjICBA bGlicmFyeWNsYXNzICBQcm92aWRlIHNlcnZpY2VzIHRvIGNyZWF0ZSwgZ2V0IGFuZCB1cGRhdGUg SFNUSSB0YWJsZSBpbiBBSVANCj4gcHJvdG9jb2wuDQo+ICAgIEhzdGlMaWJ8SW5jbHVkZS9MaWJy YXJ5L0hzdGlMaWIuaA0KPiANCj4gLS0NCj4gMi4xMS4wDQoNCg==