From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.2.71; helo=eur02-ve1-obe.outbound.protection.outlook.com; envelope-from=meenakshi.aggarwal@nxp.com; receiver=edk2-devel@lists.01.org Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20071.outbound.protection.outlook.com [40.107.2.71]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 6818A202E5E53 for ; Mon, 13 Nov 2017 21:32:39 -0800 (PST) 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=fKE+eGImg+7Krfbgmiyy8dCTtt3Y3t9uYDbpI7kZ+No=; b=lb8yeJ37E0QKv/NcyAi7BWj3Bre2o+x5TVRDjy28afyLuJ7R/QkgUmSvK5Yu9AJSaS8xpsBxr2DaeYBRCIluKUGTM6X0onTfk3h6HhQ58kDajC5a9lFfjSziWwtP5fJL43INepbN0XOPVdHSXDdfM7A9GK0iCVmcVRB0jSHDzk8= Received: from DB5PR04MB0998.eurprd04.prod.outlook.com (10.161.199.12) by HE1PR04MB3004.eurprd04.prod.outlook.com (10.170.255.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.218.12; Tue, 14 Nov 2017 05:36:43 +0000 Received: from DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::7964:3b7:763b:63ba]) by DB5PR04MB0998.eurprd04.prod.outlook.com ([fe80::7964:3b7:763b:63ba%13]) with mapi id 15.20.0197.017; Tue, 14 Nov 2017 05:36:41 +0000 From: Meenakshi Aggarwal To: Ard Biesheuvel CC: Leif Lindholm , "Kinney, Michael D" , "edk2-devel@lists.01.org" , Udit Kumar , Varun Sethi Thread-Topic: [PATCH 06/10] Platform/NXP: Add support for I2c operations library Thread-Index: AQHTV6YM8nGMR1wz/U+uoCk+O8qyY6MSSLAAgAD5Y1A= Date: Tue, 14 Nov 2017 05:36:41 +0000 Message-ID: References: <1510065736-9394-1-git-send-email-meenakshi.aggarwal@nxp.com> <1510065736-9394-7-git-send-email-meenakshi.aggarwal@nxp.com> In-Reply-To: Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=meenakshi.aggarwal@nxp.com; x-originating-ip: [192.88.169.1] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; HE1PR04MB3004; 6:0+mxFn2LNa+vT58VGrJr65e/Ossc7Lkg2VlavL6V273EzzuyKXPsoHaqI0n5idkMC2l84S+FinLKhJtDrA/j1A1qndbCzlD+H5b8apktYLzaYEdCLaYIxGU9xVTUj6g8Qxrp3IQE9M3zKTJs5TdnqHlGsnzyfHjFUUM/3QViNHNlVC8u34+DK94esIfLl4uRhxhmfSUFTzF0dmyOAL3KNw882QaTyhSjFOauZ9cuqD+iCgMbYTgfdyWWPo4nCKXuqGt5ojr2+JsgDcMQpG9am5fSzWSOHYZjF1qVk2aYTSvjxJSR0+CCG8J2VgIfwMwYBJdeWahRbNTeUhv1n04ygehn5CjlLImJigwEYwMvjMg=; 5:H3ROMMiBKZQYlxlzDddVX3Bqiq16gwPSmTSVWEsSbeI6uCcuu5fi9QEpAjR2+M68nToSJHll6ZcGEXIYRKYNhdx4lFC1u/wsYnBLf4Wv9gNyl84zsglB1kUyBxHky9UslcFZLqBg1oD3XYI7N7+JsQhLlQvYJpgSDFa5g1KSyqc=; 24:T0LdL3fmR7REvtPS8Es3iRvBz8FYEDptqLZn0igvZpRZeQD5xew0iOZLD9jtmKJefci7giMUsvqDgZjORCdV1GR90cz94KsoTu96BHsh65A=; 7:kGUvzZXuVNwGRvgYD/PFo61A0zQYAoVQa7wyyT5gMScpbSevsyn7oVkZvqI++VbL5zZFcZrgbDzRaGOH80kmTnuk8aHXP1ylqBdotI26VxC8YWgv20ajrg2xXEzNpDcVkqb5Nv25vTcdyTdj3TEIJmbDQ0byBJ5W05QulBUE5lvKtiLu4Mhm/+avA88BswYiayiD15rtg/6YfP4ZViDr5LjoXYosEiUll9W/iav5+2OHJa7kqnD3rps5WLD1DkPP x-ms-exchange-antispam-srfa-diagnostics: SSOS;SSOR; x-forefront-antispam-report: SFV:SKI; SCL:-1; SFV:NSPM; SFS:(10009020)(6009001)(346002)(39860400002)(376002)(199003)(13464003)(189002)(24454002)(97736004)(68736007)(16799955002)(229853002)(3660700001)(3280700002)(102836003)(2906002)(25786009)(6116002)(3846002)(5250100002)(7696004)(6916009)(5660300001)(2950100002)(86362001)(575784001)(101416001)(8936002)(76176999)(99286004)(316002)(54906003)(54356999)(50986999)(66066001)(6436002)(4326008)(53936002)(9686003)(53946003)(6246003)(6506006)(6306002)(55016002)(33656002)(106356001)(551934003)(966005)(14454004)(7736002)(45080400002)(478600001)(305945005)(74316002)(189998001)(81166006)(53546010)(2900100001)(8676002)(105586002)(81156014)(547064002)(579004)(559001)(19627235001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR04MB3004; H:DB5PR04MB0998.eurprd04.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; x-ms-office365-filtering-correlation-id: 9f77c9f6-6594-49fd-55b4-08d52b21af34 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(48565401081)(2017052603258); SRVR:HE1PR04MB3004; x-ms-traffictypediagnostic: HE1PR04MB3004: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(189930954265078)(185117386973197)(162533806227266)(45079756050767)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3002001)(3231022)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123562025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR04MB3004; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR04MB3004; x-forefront-prvs: 04916EA04C received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f77c9f6-6594-49fd-55b4-08d52b21af34 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Nov 2017 05:36:41.4900 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR04MB3004 Subject: Re: [PATCH 06/10] Platform/NXP: Add support for I2c operations library X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Nov 2017 05:32:40 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwg W21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBNb25kYXksIE5vdmVt YmVyIDEzLCAyMDE3IDY6MDYgUE0NCj4gVG86IE1lZW5ha3NoaSBBZ2dhcndhbCA8bWVlbmFrc2hp LmFnZ2Fyd2FsQG54cC5jb20+DQo+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmLmxpbmRob2xtQGxp bmFyby5vcmc+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgVWRpdCBLdW1hcg0KPiA8dWRpdC5rdW1hckBu eHAuY29tPjsgVmFydW4gU2V0aGkgPFYuU2V0aGlAbnhwLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQ QVRDSCAwNi8xMF0gUGxhdGZvcm0vTlhQOiBBZGQgc3VwcG9ydCBmb3IgSTJjIG9wZXJhdGlvbnMN Cj4gbGlicmFyeQ0KPiANCj4gT24gNyBOb3ZlbWJlciAyMDE3IGF0IDE0OjQyLCBNZWVuYWtzaGkg QWdnYXJ3YWwNCj4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPiB3cm90ZToNCj4gPiBJMkMg YnVzIGluaXRpYWxpemF0aW9uIGFuZCBJMmMgcmVhZC93cml0ZSBBUElzIGFkZGVkLg0KPiA+DQo+ ID4gQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEu MQ0KPiA+IFNpZ25lZC1vZmYtYnk6IE1lZW5ha3NoaSBBZ2dhcndhbCA8bWVlbmFrc2hpLmFnZ2Fy d2FsQG54cC5jb20+DQo+ID4gLS0tDQo+ID4gIFBsYXRmb3JtL05YUC9JbmNsdWRlL0xpYnJhcnkv STJjLmggICAgIHwgMTI1ICsrKysrKysrDQo+ID4gIFBsYXRmb3JtL05YUC9MaWJyYXJ5L0kyY0xp Yi9JMmNMaWIuYyAgIHwgNTQ5DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0K PiA+ICBQbGF0Zm9ybS9OWFAvTGlicmFyeS9JMmNMaWIvSTJjTGliLmggICB8IDEwOSArKysrKysr DQo+ID4gIFBsYXRmb3JtL05YUC9MaWJyYXJ5L0kyY0xpYi9JMmNMaWIuaW5mIHwgIDQzICsrKw0K PiA+ICA0IGZpbGVzIGNoYW5nZWQsIDgyNiBpbnNlcnRpb25zKCspDQo+ID4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBQbGF0Zm9ybS9OWFAvSW5jbHVkZS9MaWJyYXJ5L0kyYy5oDQo+ID4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBQbGF0Zm9ybS9OWFAvTGlicmFyeS9JMmNMaWIvSTJjTGliLmMNCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IFBsYXRmb3JtL05YUC9MaWJyYXJ5L0kyY0xpYi9JMmNMaWIuaA0KPiA+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vTlhQL0xpYnJhcnkvSTJjTGliL0kyY0xpYi5p bmYNCj4gPg0KPiANCj4gUGxlYXNlIHRyeSB0byB1c2UgdGhlIFBJIHByb3RvY29scyBmb3IgSTJD IHJhdGhlciB0aGFuIGludmVudGluZyB5b3VyIG93bi4NCj4gDQpXaWxsIHJld29yayBvdXIgcGF0 Y2gNCg0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9OWFAvSW5jbHVkZS9MaWJyYXJ5L0kyYy5o DQo+ID4gYi9QbGF0Zm9ybS9OWFAvSW5jbHVkZS9MaWJyYXJ5L0kyYy5oDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5jNzE5NWFiDQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL1BsYXRmb3JtL05YUC9JbmNsdWRlL0xpYnJhcnkvSTJjLmgNCj4gPiBAQCAt MCwwICsxLDEyNSBAQA0KPiA+ICsvKiogSTJjLmgNCj4gPiArICBIZWFkZXIgZGVmaW5pbmcgdGhl IGNvbnN0YW50LCBiYXNlIGFkZHJlc3MgYW1kIGZ1bmN0aW9uIGZvciBJMkMNCj4gPiArY29udHJv bGxlcg0KPiA+ICsNCj4gPiArICBDb3B5cmlnaHQgMjAxNyBOWFANCj4gPiArDQo+ID4gKyAgVGhp cyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyAgYXJlIGxpY2Vuc2VkIGFu ZCBtYWRlDQo+ID4gKyBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZSAgd2hpY2gNCj4gPiArIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0 aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gPiArIGZvdW5kIGF0 DQo+ID4gKw0KPiA+ICsNCj4gaHR0cHM6Ly9lbWVhMDEuc2FmZWxpbmtzLnByb3RlY3Rpb24ub3V0 bG9vay5jb20vP3VybD1odHRwJTNBJTJGJTJGb3ANCj4gPiArIGVuc291cmNlLm9yZyUyRmxpY2Vu c2VzJTJGYnNkLQ0KPiBsaWNlbnNlLnBocCZkYXRhPTAyJTdDMDElN0NtZWVuYWtzaGkuYQ0KPiA+ ICsNCj4gZ2dhcndhbCU0MG54cC5jb20lN0MxNDYwOWYyZDQ1MTA0Y2JmZmE0ZDA4ZDUyYTkzMjJl ZCU3QzY4NmVhMWQzYg0KPiBjMmI0DQo+ID4gKw0KPiBjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCU3 QzAlN0M2MzY0NjE3MzM4MjI0MDYwMTAmc2RhdGE9djZYTmJBNHV2DQo+IEZGYjINCj4gPiArIEZw NWRhWkdYU2VkTE95MWNKVyUyRjVVbzk0dmNkcGJVJTNEJnJlc2VydmVkPTANCj4gPiArDQo+ID4g KyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFO ICJBUyBJUyINCj4gPiArIEJBU0lTLCAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFU SU9OUyBPRiBBTlkgS0lORCwNCj4gRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRC4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfX0kyQ19IX19fDQo+ID4gKyNkZWZpbmUgX19J MkNfSF9fDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8VWVmaS5oPg0KPiA+ICsNCj4gPiArI2RlZmlu ZSBJMkMxICAwDQo+ID4gKyNkZWZpbmUgSTJDMiAgMQ0KPiA+ICsjZGVmaW5lIEkyQzMgIDINCj4g PiArI2RlZmluZSBJMkM0ICAzDQo+ID4gKw0KPiA+ICsvLy8NCj4gPiArLy8vIERlZmluZSB0aGUg STJDIGZsYWdzDQo+ID4gKy8vLw0KPiA+ICsjZGVmaW5lIEkyQ19SRUFEX0ZMQUcgICAgICAgICAw eDENCj4gPiArI2RlZmluZSBJMkNfV1JJVEVfRkxBRyAgICAgICAgMHgyDQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBGdW5jdGlvbiB0byBpbml0aWFsaXplIGkyYyBidXMNCj4gPiArDQo+ID4gKyAg QHBhcmFtICAgSTJjQnVzICAgICBJMmMgQ29udHJvbGxlciBudW1iZXINCj4gPiArICBAcGFyYW0g ICBTcGVlZCAgICAgIFZhbHVlIHRvIGJlIHNldA0KPiA+ICsNCj4gPiArICBAcmV0dmFsICBFRklf U1VDQ0VTUw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArSTJj QnVzSW5pdCAoDQo+ID4gKyAgSU4gICBVSU5UMzIgICBJMmNCdXMsDQo+ID4gKyAgSU4gICBVSU5U MzIgICAgU3BlZWQNCj4gDQo+IFBsZWFzZSBmaXggYWxpZ25tZW50DQo+IA0KPiA+ICsgICk7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byByZWFkIGRhdGEgdXNpbiBpMmMNCj4g PiArDQo+ID4gKyAgQHBhcmFtICAgSTJjQnVzICAgICBJMmMgQ29udHJvbGxlciBudW1iZXINCj4g PiArICBAcGFyYW0gICBDaGlwICAgICAgIEFkZHJlc3Mgb2Ygc2xhdmUgZGV2aWNlIGZyb20gd2hl cmUgZGF0YSB0byBiZSByZWFkDQo+ID4gKyAgQHBhcmFtICAgT2Zmc2V0ICAgICBPZmZzZXQgb2Yg c2xhdmUgbWVtb3J5DQo+ID4gKyAgQHBhcmFtICAgQWxlbiAgICAgICBBZGRyZXNzIGxlbmd0aCBv ZiBzbGF2ZQ0KPiA+ICsgIEBwYXJhbSAgIEJ1ZmZlciAgICAgQSBwb2ludGVyIHRvIHRoZSBkZXN0 aW5hdGlvbiBidWZmZXIgZm9yIHRoZSBkYXRhDQo+ID4gKyAgQHBhcmFtICAgTGVuICAgICAgICBM ZW5ndGggb2YgZGF0YSB0byBiZSByZWFkDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1Rf UkVBRFkgICAgQXJiaXRyYXRpb24gbG9zdA0KPiA+ICsgIEByZXR2YWwgIEVGSV9USU1FT1VUICAg ICAgRmFpbGVkIHRvIGluaXRpYWxpemUgZGF0YSB0cmFuc2ZlciBpbiBwcmVkZWZpbmVkDQo+IHRp bWUNCj4gPiArICBAcmV0dmFsICBFRklfTk9UX0ZPVU5EICAgIEFDSyB3YXMgbm90IHJlY2lldmVk DQo+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICBSZWFkIHdhcyBzdWNjZXNzZnVsDQo+ ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJMmNEYXRhUmVhZCAoDQo+ID4g KyAgSU4gICBVSU5UMzIgIEkyY0J1cywNCj4gPiArICBJTiAgIFVJTlQ4ICAgIENoaXAsDQo+ID4g KyAgSU4gICBVSU5UMzIgIE9mZnNldCwNCj4gPiArICBJTiAgIFVJTlQzMiAgQWxlbiwNCj4gPiAr ICBPVVQgIFVJTlQ4ICAqQnVmZmVyLA0KPiA+ICsgIElOICAgVUlOVDMyICBMZW4NCj4gPiArICAp Ow0KPiANCj4gYW5kIGhlcmUNCj4gDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0 byB3cml0ZSBkYXRhIHVzaW5nIGkyYyBidXMNCj4gPiArDQo+ID4gKyAgQHBhcmFtICAgSTJjQnVz ICAgICAgICAgICAgICAgICAgSTJjIENvbnRyb2xsZXIgbnVtYmVyDQo+ID4gKyAgQHBhcmFtICAg Q2hpcCAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBvZiBzbGF2ZSBkZXZpY2Ugd2hlcmUgZGF0 YSB0byBiZQ0KPiB3cml0dGVuDQo+ID4gKyAgQHBhcmFtICAgT2Zmc2V0ICAgICAgICAgICAgICAg ICAgT2Zmc2V0IG9mIHNsYXZlIG1lbW9yeQ0KPiA+ICsgIEBwYXJhbSAgIEFsZW4gICAgICAgICAg ICAgICAgICAgIEFkZHJlc3MgbGVuZ3RoIG9mIHNsYXZlDQo+ID4gKyAgQHBhcmFtICAgQnVmZmVy ICAgICAgICAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBzb3VyY2UgYnVmZmVyIGZvciB0aGUg ZGF0YQ0KPiA+ICsgIEBwYXJhbSAgIExlbiAgICAgICAgICAgICAgICAgICAgIExlbmd0aCBvZiBk YXRhIHRvIGJlIHdyaXRlDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfUkVBRFkgICAg ICAgICAgIEFyYml0cmF0aW9uIGxvc3QNCj4gPiArICBAcmV0dmFsICBFRklfVElNRU9VVCAgICAg ICAgICAgICBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkYXRhIHRyYW5zZmVyIGluDQo+IHByZWRlZmlu ZWQgdGltZQ0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfRk9VTkQgICAgICAgICAgIEFDSyB3YXMg bm90IHJlY2lldmVkDQo+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgUmVh ZCB3YXMgc3VjY2Vzc2Z1bA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiAr STJjRGF0YVdyaXRlICgNCj4gPiArICBJTiAgIFVJTlQzMiAgICAgICAgSTJjQnVzLA0KPiA+ICsg IElOICAgVUlOVDggICAgICAgICBDaGlwLA0KPiA+ICsgIElOICAgVUlOVDMyICAgICAgICBPZmZz ZXQsDQo+ID4gKyAgSU4gICBJTlQzMiAgICAgICAgIEFsZW4sDQo+ID4gKyAgT1VUICBVSU5UOCAg ICAgICAgICpCdWZmZXIsDQo+ID4gKyAgSU4gICBJTlQzMiAgICAgICAgIExlbg0KPiA+ICsgICk7 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byByZXNldCBJMmMNCj4gPiArICBA cGFyYW0gICBJMmNCdXMgICAgICAgICAgICAgICAgICAgIEkyYyBDb250cm9sbGVyIG51bWJlcg0K PiA+ICsNCj4gPiArICBAcmV0dXJuICBWT0lEDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0ky Y1Jlc2V0ICgNCj4gPiArICBVSU5UMzIgSTJjQnVzDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIEZ1bmN0aW9uIHRvIFByb2JlIEkyYyBzbGF2ZSBkZXZpY2UNCj4gPiArICBAcGFy YW0gICAgSTJjQnVzICAgICAgICAgICAgICAgICAgICBJMmMgQ29udHJvbGxlciBudW1iZXINCj4g PiArDQo+ID4gKyAgQHJldHZhbCAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgSW52YWxpZCBJ MmMgQ29udHJvbGxlciBudW1iZXINCj4gPiArICBAcmV0dmFsICAgRUZJX1NVQ0NFU1MgICAgICAg ICAgICAgICBJMmMgZGV2aWNlIHByb2JlZCBzdWNjZXNzZnVsbHkNCj4gPiArDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtJMmNQcm9iZURldmljZXMgKA0KPiA+ ICsgIElOICAgSU5UMTYgICAgSTJjQnVzLA0KPiA+ICsgIElOICAgVUlOVDggICAgQ2hpcA0KPiA+ ICsgICk7DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vTlhQ L0xpYnJhcnkvSTJjTGliL0kyY0xpYi5jDQo+ID4gYi9QbGF0Zm9ybS9OWFAvTGlicmFyeS9JMmNM aWIvSTJjTGliLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAu LjU3NGI4OTkNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vTlhQL0xpYnJh cnkvSTJjTGliL0kyY0xpYi5jDQo+ID4gQEAgLTAsMCArMSw1NDkgQEANCj4gPiArLyoqIEkyY0xp Yi5jDQo+ID4gKyAgSTJjIExpYnJhcnkgY29udGFpbmluZyBmdW5jdGlvbnMgZm9yIHJlYWQsIHdy aXRlLCBpbml0aWFsaXplLCBzZXQNCj4gPiArc3BlZWQgZXRjDQo+ID4gKw0KPiA+ICsgIENvcHly aWdodCAyMDE3IE5YUA0KPiA+ICsNCj4gPiArICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBh bnlpbmcgbWF0ZXJpYWxzICBhcmUgbGljZW5zZWQgYW5kIG1hZGUNCj4gPiArIGF2YWlsYWJsZSB1 bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlICB3aGljaA0K PiA+ICsgYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZQ0KPiA+ICsgZm91bmQgYXQNCj4gPiArDQo+ID4gKw0KPiBodHRwczov L2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYl MkZvcA0KPiA+ICsgZW5zb3VyY2Uub3JnJTJGbGljZW5zZXMlMkZic2QtDQo+IGxpY2Vuc2UucGhw JmRhdGE9MDIlN0MwMSU3Q21lZW5ha3NoaS5hDQo+ID4gKw0KPiBnZ2Fyd2FsJTQwbnhwLmNvbSU3 QzE0NjA5ZjJkNDUxMDRjYmZmYTRkMDhkNTJhOTMyMmVkJTdDNjg2ZWExZDNiDQo+IGMyYjQNCj4g PiArDQo+IGM2ZmE5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjQ2MTczMzgyMjQwNjAxMCZz ZGF0YT12NlhOYkE0dXYNCj4gRkZiMg0KPiA+ICsgRnA1ZGFaR1hTZWRMT3kxY0pXJTJGNVVvOTR2 Y2RwYlUlM0QmcmVzZXJ2ZWQ9MA0KPiA+ICsNCj4gPiArICBUSEUgUFJPR1JBTSBJUyBESVNUUklC VVRFRCBVTkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIg0KPiA+ICsgQkFTSVMsICBX SVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELA0KPiBFSVRI RVIgRVhQUkVTUyBPUiBJTVBMSUVELg0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpbmNsdWRlIDxC YXNlLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4gKyNpbmNsdWRl IDxMaWJyYXJ5L0kyYy5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9Jb0xpYi5oPg0KPiA+ICsj aW5jbHVkZSA8TGlicmFyeS9UaW1lckxpYi5oPg0KPiA+ICsNCj4gPiArI2luY2x1ZGUgIkkyY0xp Yi5oIg0KPiA+ICsNCj4gDQo+IFNUQVRJQyBDT05TVA0KPiANCj4gPiArRUZJX1BIWVNJQ0FMX0FE RFJFU1MNCj4gSTJjQWRkckFycltGaXhlZFBjZEdldDMyKFBjZE51bUkyY0NvbnRyb2xsZXIpXSA9 DQo+ID4gK3sNCj4gPiArICBGaXhlZFBjZEdldDY0KFBjZEkyYzBCYXNlQWRkciksDQo+ID4gKyAg Rml4ZWRQY2RHZXQ2NChQY2RJMmMxQmFzZUFkZHIpLA0KPiA+ICsgIEZpeGVkUGNkR2V0NjQoUGNk STJjMkJhc2VBZGRyKSwNCj4gPiArICBGaXhlZFBjZEdldDY0KFBjZEkyYzNCYXNlQWRkcikNCj4g PiArfTsNCj4gPiArDQo+IA0KPiBTVEFUSUMgQ09OU1QNCj4gDQo+ID4gK1VJTlQxNiBDbGtEaXZb NjBdWzJdID0gew0KPiA+ICsgIHsgMjAsICAweDAwIH0sIHsgMjIsIDB4MDEgfSwgIHsgMjQsIDB4 MDIgfSwgIHsgMjYsIDB4MDMgfSwNCj4gPiArICB7IDI4LCAgMHgwNCB9LCB7IDMwLCAgMHgwNSB9 LCB7IDMyLCAgMHgwOSB9LCB7IDM0LCAweDA2IH0sDQo+ID4gKyAgeyAzNiwgIDB4MEEgfSwgeyA0 MCwgMHgwNyB9LCAgeyA0NCwgMHgwQyB9LCAgeyA0OCwgMHgwRCB9LA0KPiA+ICsgIHsgNTIsICAw eDQzIH0sIHsgNTYsICAweDBFIH0sIHsgNjAsIDB4NDUgfSwgIHsgNjQsIDB4MTIgfSwNCj4gPiAr ICB7IDY4LCAgMHgwRiB9LCB7IDcyLCAgMHgxMyB9LCB7IDgwLCAgMHgxNCB9LCB7IDg4LCAgMHgx NSB9LA0KPiA+ICsgIHsgOTYsICAweDE5IH0sIHsgMTA0LCAweDE2IH0sIHsgMTEyLCAweDFBIH0s IHsgMTI4LCAweDE3IH0sDQo+ID4gKyAgeyAxMzYsIDB4NEYgfSwgeyAxNDQsIDB4MUMgfSwgeyAx NjAsIDB4MUQgfSwgeyAxNzYsIDB4NTUgfSwNCj4gPiArICB7IDE5MiwgMHgxRSB9LCB7IDIwOCwg MHg1NiB9LCB7IDIyNCwgMHgyMiB9LCB7IDIyOCwgMHgyNCB9LA0KPiA+ICsgIHsgMjQwLCAweDFG IH0sIHsgMjU2LCAweDIzIH0sIHsgMjg4LCAweDVDIH0sIHsgMzIwLCAweDI1IH0sDQo+ID4gKyAg eyAzODQsIDB4MjYgfSwgeyA0NDgsIDB4MkEgfSwgeyA0ODAsIDB4MjcgfSwgeyA1MTIsIDB4MkIg fSwNCj4gPiArICB7IDU3NiwgMHgyQyB9LCB7IDY0MCwgMHgyRCB9LCB7IDc2OCwgMHgzMSB9LCB7 IDg5NiwgMHgzMiB9LA0KPiA+ICsgIHsgOTYwLCAweDJGIH0sIHsgMTAyNCwgMHgzMyB9LCB7IDEx NTIsIDB4MzQgfSx7IDEyODAsIDB4MzUgfSwNCj4gPiArICB7IDE1MzYsIDB4MzYgfSwgeyAxNzky LCAweDNBIH0sIHsgMTkyMCwgMHgzNyB9LCB7IDIwNDgsIDB4M0IgfSwNCj4gPiArICB7IDIzMDQs IDB4M0MgfSwgeyAyNTYwLCAweDNEIH0sIHsgMzA3MiwgMHgzRSB9LCB7IDM1ODQsIDB4N0EgfSwN Cj4gPiArICB7IDM4NDAsIDB4M0YgfSwgeyA0MDk2LCAweDdCIH0sIHsgNTEyMCwgMHg3RCB9LCB7 IDYxNDQsIDB4N0UgfSwgfTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIENhbGN1bGF0ZSBhbmQg c2V0IHByb3BlciBjbG9jayBkaXZpZGVyDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgUmF0ZSAgIDog ICBjbG9jayByYXRlDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgQ2xrRGl2IDogICBWYWx1ZSB1c2Vk IHRvIGdldCBmcmVxdWVuY3kgZGl2aWRlciB2YWx1ZQ0KPiA+ICsNCj4gPiArKiovDQo+IA0KPiBT VEFUSUMNCj4gDQo+ID4gK1VJTlQ4DQo+ID4gK0dldENsaygNCj4gPiArICBJTiAgVUlOVDMyICAg IFJhdGUNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBVSU5UTiAgQ2xrUmF0ZTsNCj4gPiArICBV SU5UMzIgRGl2Ow0KPiA+ICsgIFVJTlQ4ICBDbGtEaXZ4Ow0KPiA+ICsNCj4gPiArICBDbGtSYXRl ID0gQ2FsY3VsYXRlSTJjQ2xvY2tSYXRlKCk7DQo+ID4gKw0KPiA+ICsgIERpdiA9IChDbGtSYXRl ICsgUmF0ZSAtIDEpIC8gUmF0ZTsNCj4gPiArDQo+ID4gKyAgaWYgKERpdiA8IENsa0RpdlswXVsw XSkgew0KPiA+ICsgICAgQ2xrRGl2eCA9IDA7DQo+ID4gKyAgfSBlbHNlIGlmIChEaXYgPiBDbGtE aXZbQVJSQVlfU0laRShDbGtEaXYpIC0gMV1bMF0pew0KPiA+ICsgICAgQ2xrRGl2eCA9IEFSUkFZ X1NJWkUoQ2xrRGl2KSAtIDE7ICB9IGVsc2Ugew0KPiA+ICsgICAgZm9yIChDbGtEaXZ4ID0gMDsg Q2xrRGl2W0Nsa0RpdnhdWzBdIDwgRGl2OyBDbGtEaXZ4KyspOyAgfQ0KPiA+ICsNCj4gPiArICBy ZXR1cm4gQ2xrRGl2eDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24g dG8gcmVzZXQgSTJjDQo+ID4gKyAgQHBhcmFtICBJMmNCdXMgOiAgICAgICAgSTJjIENvbnRyb2xs ZXIgbnVtYmVyDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gVk9JRA0KPiA+ICsqKi8NCj4gPiArDQo+ ID4gK1ZPSUQNCj4gPiArSTJjUmVzZXQgKA0KPiA+ICsgIElOICBVSU5UMzIgSTJjQnVzDQo+ID4g KyAgKQ0KPiA+ICt7DQo+ID4gKyAgSTJDX1JFR1MgKkkyY1JlZ3M7DQo+ID4gKw0KPiA+ICsgIEky Y1JlZ3MgPSAoSTJDX1JFR1MgKilJMmNBZGRyQXJyW0kyY0J1c107DQo+ID4gKw0KPiA+ICsgIC8q KiBSZXNldCBtb2R1bGUgKi8NCj4gDQo+IFBsZWFzZSB1c2UgLy8gZm9yIHNpbmdsZSBsaW5lIGNv bW1lbnRzDQo+IA0KPiA+ICsgIE1taW9Xcml0ZTgoKFVJTlROKSZJMmNSZWdzLT5JMmNDciwgSTJD X0NSX0lESVMpOw0KPiA+ICsgTW1pb1dyaXRlOCgoVUlOVE4pJkkyY1JlZ3MtPkkyY1NyLCAwKTsN Cj4gDQo+IFNwYWNlIGJlZm9yZSAoDQo+IA0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBGdW5jdGlvbiB0byBzZXQgSTJjIGJ1cyBzcGVlZA0KPiA+ICsNCj4gPiArICBAcGFyYW0gIEky Y0J1cyA6ICAgICAgIEkyYyBDb250cm9sbGVyIG51bWJlcg0KPiA+ICsgIEBwYXJhbSAgU3BlZWQg IDogICAgICAgVmFsdWUgdG8gYmUgc2V0DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NF U1MNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK0kyY1NldEJ1 c1NwZWVkICgNCj4gPiArICBJTiAgVUlOVDMyICBJMmNCdXMsDQo+ID4gKyAgSU4gIFVJTlQzMiAg U3BlZWQNCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBJMkNfUkVHUyAqSTJjUmVnczsNCj4gPiAr ICBVSU5UOCBDbGtJZDsNCj4gPiArICBVSU5UOCBTcGVlZElkOw0KPiA+ICsNCj4gPiArICBJMmNS ZWdzID0gKEkyQ19SRUdTICopSTJjQWRkckFycltJMmNCdXNdOw0KPiA+ICsNCj4gPiArICBBU1NF UlQoSTJjUmVncyk7DQo+ID4gKw0KPiA+ICsgIENsa0lkID0gR2V0Q2xrKFNwZWVkKTsNCj4gPiAr ICBTcGVlZElkID0gQ2xrRGl2W0Nsa0lkXVsxXTsNCj4gPiArDQo+ID4gKyAgLyoqIFN0b3JlIGRp dmlkZXIgdmFsdWUgKi8NCj4gPiArICBNbWlvV3JpdGU4KChVSU5UTikmSTJjUmVncy0+STJjRmRy LCBTcGVlZElkKTsgIEkyY1Jlc2V0KEkyY0J1cyk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklf U1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24gdXNlZCB0 byBjaGVjayBpZiBpMmMgaXMgaW4gbWVudGlvbmVkIHN0YXRlIG9yIG5vdA0KPiA+ICsNCj4gPiAr ICBAcGFyYW0gICBJMmNSZWdzIDogICAgICBQb2ludGVyIHRvIEkyQyByZWdpc3RlcnMNCj4gPiAr ICBAcGFyYW0gICBTdGF0ZSAgIDogICAgICBpMmMgc3RhdGUgbmVlZCB0byBiZSBjaGVja2VkDQo+ ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfUkVBRFkgIEFyYml0cmF0aW9uIHdhcyBsb3N0 DQo+ID4gKyAgQHJldHZhbCAgRUZJX1RJTUVPVVQgICAgVGltZW91dCBvY2N1cmVkDQo+ID4gKyAg QHJldHZhbCAgQ3VyclN0YXRlICAgICAgVmFsdWUgb2Ygc3RhdGUgcmVnaXN0ZXINCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK1dhaXRGb3JJMmNTdGF0ZSAoDQo+ID4gKyAg SU4gIEkyQ19SRUdTICAqSTJjUmVncywNCj4gPiArICBJTiAgVUlOVDMyICBTdGF0ZQ0KPiA+ICsg ICkNCj4gPiArew0KPiA+ICsgIFVJTlQ4IEN1cnJTdGF0ZTsNCj4gPiArICBVSU5UNjQgQ250Ow0K PiA+ICsNCj4gPiArICBmb3IgKENudCA9IDA7IENudCA8IDUwOyBDbnQrKykgew0KPiA+ICsgICAg Q3VyclN0YXRlID0gTW1pb1JlYWQ4KChVSU5UTikmSTJjUmVncy0+STJjU3IpOw0KPiA+ICsgICAg aWYgKEN1cnJTdGF0ZSAmIEkyQ19TUl9JQUwpIHsNCj4gPiArICAgICAgIE1taW9Xcml0ZTgoKFVJ TlROKSZJMmNSZWdzLT5JMmNTciwgQ3VyclN0YXRlIHwgSTJDX1NSX0lBTCk7DQo+ID4gKyAgICAg ICAgcmV0dXJuIEVGSV9OT1RfUkVBRFk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgICAgaWYg KChDdXJyU3RhdGUgJiAoU3RhdGUgPj4gOCkpID09IChVSU5UOClTdGF0ZSkgew0KPiA+ICsgICAg ICByZXR1cm4gQ3VyclN0YXRlOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIE1pY3JvU2Vj b25kRGVsYXkoMzAwKTsNCj4gDQo+IFdoeSAzMDAgdXM/IEFuZCBwbGVhc2UgYWRkIGEgTWVtb3J5 RmVuY2UgKCkgYXMgd2VsbA0KPiANCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklf VElNRU9VVDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24gdG8gdHJh bnNmZXIgYnl0ZSBvbiBpMmMNCj4gPiArDQo+ID4gKyAgQHBhcmFtICAgSTJjUmVncyAgOiAgICAg UG9pbnRlciB0byBpMmMgcmVnaXN0ZXJzDQo+ID4gKyAgQHBhcmFtICAgQnl0ZSAgICAgOiAgICAg Qnl0ZSB0byBiZSB0cmFuc2ZlcnJlZCBvbiBpMmMgYnVzDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg IEVGSV9OT1RfUkVBRFkgIEFyYml0cmF0aW9uIHdhcyBsb3N0DQo+ID4gKyAgQHJldHZhbCAgRUZJ X1RJTUVPVVQgICAgVGltZW91dCBvY2N1cmVkDQo+ID4gKyAgQHJldHZhbCAgRUZJX05PVF9GT1VO RCAgQUNLIHdhcyBub3QgcmVjaWV2ZWQNCj4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICBE YXRhIHRyYW5zZmVyIHdhcyBzdWNjZXNmdWwNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK1RyYW5zZmVyQnl0ZSAoDQo+ID4gKyAgSU4gIEkyQ19SRUdTICAqSTJjUmVncywN Cj4gPiArICBJTiAgVUlOVDggICAgICBCeXRlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJ X1NUQVRVUyBSZXQ7DQo+ID4gKw0KPiA+ICsgIE1taW9Xcml0ZTgoKFVJTlROKSZJMmNSZWdzLT5J MmNTciwgSTJDX1NSX0lJRl9DTEVBUik7DQo+ID4gKyBNbWlvV3JpdGU4KChVSU5UTikmSTJjUmVn cy0+STJjRHIsIEJ5dGUpOw0KPiA+ICsNCj4gPiArICBSZXQgPSBXYWl0Rm9ySTJjU3RhdGUoSTJj UmVncywgSUlGKTsgIGlmICgoUmV0ID09IEVGSV9USU1FT1VUKSB8fA0KPiA+ICsgKFJldCA9PSBF RklfTk9UX1JFQURZKSkgew0KPiA+ICsgICAgcmV0dXJuIFJldDsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIGlmIChSZXQgJiBJMkNfU1JfUlhfTk9fQUspIHsNCj4gPiArICAgIHJldHVybiBFRklf Tk9UX0ZPVU5EOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byBzdG9wIHRyYW5zYWN0 aW9uIG9uIGkyYyBidXMNCj4gPiArDQo+ID4gKyAgQHBhcmFtICAgSTJjUmVncyA6ICAgICAgICBQ b2ludGVyIHRvIGkyYyByZWdpc3RlcnMNCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgRUZJX05PVF9S RUFEWSAgICBBcmJpdHJhdGlvbiB3YXMgbG9zdA0KPiA+ICsgIEByZXR2YWwgIEVGSV9USU1FT1VU ICAgICAgVGltZW91dCBvY2N1cmVkDQo+ID4gKyAgQHJldHZhbCAgRUZJX1NVQ0NFU1MgICAgICBT dG9wIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9T VEFUVVMNCj4gPiArSTJjU3RvcCAoDQo+ID4gKyAgSU4gIEkyQ19SRUdTICAqSTJjUmVncw0KPiA+ ICsgICkNCj4gPiArew0KPiA+ICsgIElOVDMyIFJldDsNCj4gPiArICBVSU5UMzIgVGVtcDsNCj4g PiArDQo+ID4gKyAgVGVtcCA9IE1taW9SZWFkOCgoVUlOVE4pJkkyY1JlZ3MtPkkyY0NyKTsNCj4g PiArDQo+ID4gKyAgVGVtcCAmPSB+KEkyQ19DUl9NU1RBIHwgSTJDX0NSX01UWCk7DQo+ID4gKyBN bWlvV3JpdGU4KChVSU5UTikmSTJjUmVncy0+STJjQ3IsIFRlbXApOw0KPiA+ICsNCj4gPiArICBS ZXQgPSBXYWl0Rm9ySTJjU3RhdGUoSTJjUmVncywgQlVTX0lETEUpOw0KPiA+ICsNCj4gPiArICBp ZiAoUmV0IDwgMCkgew0KPiA+ICsgICAgcmV0dXJuIFJldDsNCj4gPiArICB9IGVsc2Ugew0KPiA+ ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0NCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgRnVuY3Rpb24gdG8gc2VuZCBzdGFydCBzaWduYWwsIENoaXAgQWRkcmVzcyBh bmQNCj4gPiArICBtZW1vcnkgb2Zmc2V0DQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgIEkyY1JlZ3Mg OiAgUG9pbnRlciB0byBpMmMgYmFzZSByZWdpc3RlcnMNCj4gPiArICBAcGFyYW0gICBDaGlwICAg IDogIENoaXAgQWRkcmVzcw0KPiA+ICsgIEBwYXJhbSAgIE9mZnNldCAgOiAgU2xhdmUgbWVtb3J5 J3Mgb2Zmc2V0DQo+ID4gKyAgQHBhcmFtICAgQWxlbiAgICA6ICBsZW5ndGggb2YgY2hpcCBhZGRy ZXNzDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfUkVBRFkgICBBcmJpdHJhdGlvbiBs b3N0DQo+ID4gKyAgQHJldHZhbCAgRUZJX1RJTUVPVVQgICAgIEZhaWxlZCB0byBpbml0aWFsaXpl IGRhdGEgdHJhbnNmZXIgaW4gcHJlZGVmaW5lZA0KPiB0aW1lDQo+ID4gKyAgQHJldHZhbCAgRUZJ X05PVF9GT1VORCAgIEFDSyB3YXMgbm90IHJlY2lldmVkDQo+ID4gKyAgQHJldHZhbCAgRUZJX1NV Q0NFU1MgICAgIFJlYWQgd2FzIHN1Y2Nlc3NmdWwNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklf U1RBVFVTDQo+ID4gK0luaXRUcmFuc2ZlciAoDQo+ID4gKyAgSU4gIEkyQ19SRUdTICAqSTJjUmVn cywNCj4gPiArICBJTiAgVUlOVDggICAgICBDaGlwLA0KPiA+ICsgIElOICBVSU5UMzIgICAgIE9m ZnNldCwNCj4gPiArICBJTiAgSU5UMzIgICAgICBBbGVuDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4g KyAgVUlOVDMyIFRlbXA7DQo+ID4gKyAgRUZJX1NUQVRVUyBSZXQ7DQo+ID4gKw0KPiA+ICsgIC8q KiBFbmFibGUgSTJDIGNvbnRyb2xsZXIgKi8NCj4gPiArICBpZiAoTW1pb1JlYWQ4KChVSU5UTikm STJjUmVncy0+STJjQ3IpICYgSTJDX0NSX0lESVMpIHsNCj4gPiArICAgIE1taW9Xcml0ZTgoKFVJ TlROKSZJMmNSZWdzLT5JMmNDciwgSTJDX0NSX0lFTik7ICB9DQo+ID4gKw0KPiA+ICsgIGlmIChN bWlvUmVhZDgoKFVJTlROKSZJMmNSZWdzLT5JMmNBZHIpID09IChDaGlwIDw8IDEpKSB7DQo+ID4g KyAgICBNbWlvV3JpdGU4KChVSU5UTikmSTJjUmVncy0+STJjQWRyLCAoQ2hpcCA8PCAxKSBeIDIp OyAgfQ0KPiA+ICsNCj4gPiArICBNbWlvV3JpdGU4KChVSU5UTikmSTJjUmVncy0+STJjU3IsIEky Q19TUl9JSUZfQ0xFQVIpOyAgUmV0ID0NCj4gPiArIFdhaXRGb3JJMmNTdGF0ZShJMmNSZWdzLCBC VVNfSURMRSk7ICBpZiAoKFJldCA9PSBFRklfVElNRU9VVCkgfHwNCj4gPiArIChSZXQgPT0gRUZJ X05PVF9SRUFEWSkpIHsNCj4gPiArICAgIHJldHVybiBSZXQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4g PiArICAvKiogU3RhcnQgSTJDIHRyYW5zYWN0aW9uICovDQo+ID4gKyAgVGVtcCA9IE1taW9SZWFk OCgoVUlOVE4pJkkyY1JlZ3MtPkkyY0NyKTsNCj4gPiArICAvKiogc2V0IHRvIG1hc3RlciBtb2Rl ICovDQo+ID4gKyAgVGVtcCB8PSBJMkNfQ1JfTVNUQTsNCj4gPiArICBNbWlvV3JpdGU4KChVSU5U TikmSTJjUmVncy0+STJjQ3IsIFRlbXApOw0KPiA+ICsNCj4gPiArICBSZXQgPSBXYWl0Rm9ySTJj U3RhdGUoSTJjUmVncywgQlVTX0JVU1kpOyAgaWYgKChSZXQgPT0gRUZJX1RJTUVPVVQpDQo+ID4g KyB8fCAoUmV0ID09IEVGSV9OT1RfUkVBRFkpKSB7DQo+ID4gKyAgICByZXR1cm4gUmV0Ow0KPiA+ ICsgIH0NCj4gPiArDQo+ID4gKyAgVGVtcCB8PSBJMkNfQ1JfTVRYIHwgSTJDX0NSX1RYX05PX0FL Ow0KPiA+ICsgTW1pb1dyaXRlOCgoVUlOVE4pJkkyY1JlZ3MtPkkyY0NyLCBUZW1wKTsNCj4gPiAr DQo+ID4gKyAgLyoqIHdyaXRlIHNsYXZlIEFkZHJlc3MgKi8NCj4gPiArICBSZXQgPSBUcmFuc2Zl ckJ5dGUoSTJjUmVncywgQ2hpcCA8PCAxKTsgIGlmIChSZXQgIT0gRUZJX1NVQ0NFU1MpIHsNCj4g PiArICAgIHJldHVybiBSZXQ7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICBpZiAoQWxlbiA+PSAw KSB7DQo+ID4gKyAgICB3aGlsZSAoQWxlbi0tKSB7DQo+ID4gKyAgICAgIFJldCA9IFRyYW5zZmVy Qnl0ZShJMmNSZWdzLCAoT2Zmc2V0ID4+IChBbGVuICogOCkpICYgMHhmZik7DQo+ID4gKyAgICAg IGlmIChSZXQgIT0gRUZJX1NVQ0NFU1MpDQo+ID4gKyAgICAgICAgcmV0dXJuIFJldDsNCj4gPiAr ICAgIH0NCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byBjaGVjayBpZiBpMmMgYnVkIGlzIGlkbGUN Cj4gDQo+IGJ1ZCAtPiBidXMNCj4gDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgIEJhc2UgICAgOiAg ICBQb2ludGVyIHRvIGJhc2UgYWRkcmVzcyBvZiBJMmMgY29udHJvbGxlcg0KPiA+ICsNCj4gPiAr ICBAcmV0dmFsICBFRklfU1VDQ0VTUw0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0lOVDMyDQo+ID4g K0kyY0J1c0lkbGUgKA0KPiA+ICsgIElOICBWT0lEICpCYXNlDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ ID4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBGdW5jdGlvbiB0byBpbml0aWF0ZSBkYXRhIHRyYW5zZmVyIG9uIGkyYyBidXMNCj4gPiArDQo+ ID4gKyAgQHBhcmFtICAgSTJjUmVncyAgOiAgIFBvaW50ZXIgdG8gaTJjIGJhc2UgcmVnaXN0ZXJz DQo+ID4gKyAgQHBhcmFtICAgQ2hpcCAgICAgOiAgIENoaXAgQWRkcmVzcw0KPiA+ICsgIEBwYXJh bSAgIE9mZnNldCAgIDogICBTbGF2ZSBtZW1vcnkncyBvZmZzZXQNCj4gPiArICBAcGFyYW0gICBB bGVuICAgICA6ICAgbGVuZ3RoIG9mIGNoaXAgYWRkcmVzcw0KPiA+ICsNCj4gPiArICBAcmV0dmFs ICBFRklfTk9UX1JFQURZIDogQXJiaXRyYXRpb24gbG9zdA0KPiA+ICsgIEByZXR2YWwgIEVGSV9U SU1FT1VUICAgOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkYXRhIHRyYW5zZmVyIGluIHByZWRlZmlu ZWQNCj4gdGltZQ0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfRk9VTkQgOiBBQ0sgd2FzIG5vdCBy ZWNpZXZlZA0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgOiBSZWFkIHdhcyBzdWNjZXNz ZnVsDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJbml0RGF0YVRyYW5z ZmVyICgNCj4gPiArICBJTiAgSTJDX1JFR1MgICpJMmNSZWdzLA0KPiA+ICsgIElOICBVSU5UOCAg ICAgICAgICAgQ2hpcCwNCj4gPiArICBJTiAgVUlOVDMyICAgICAgICAgIE9mZnNldCwNCj4gPiAr ICBJTiAgSU5UMzIgICAgICAgICAgIEFsZW4NCj4gPiArICApDQo+ID4gK3sNCj4gPiArICBFRklf U1RBVFVTIFJldDsNCj4gPiArICBJTlQzMiBSZXRyeTsNCj4gPiArDQo+ID4gKyAgZm9yIChSZXRy eSA9IDA7IFJldHJ5IDwgMzsgUmV0cnkrKykgew0KPiA+ICsgICAgUmV0ID0gSW5pdFRyYW5zZmVy KEkyY1JlZ3MsIENoaXAsIE9mZnNldCwgQWxlbik7DQo+ID4gKyAgICBpZiAoUmV0ID09IEVGSV9T VUNDRVNTKSB7DQo+ID4gKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArICAgIH0NCj4g PiArDQo+ID4gKyAgICBJMmNTdG9wKEkyY1JlZ3MpOw0KPiA+ICsNCj4gPiArICAgIGlmIChFRklf Tk9UX0ZPVU5EID09IFJldCkgew0KPiA+ICsgICAgICByZXR1cm4gUmV0Ow0KPiA+ICsgICAgfQ0K PiA+ICsNCj4gPiArICAgIC8qKiBEaXNhYmxlIGNvbnRyb2xsZXIgKi8NCj4gPiArICAgIGlmIChS ZXQgIT0gRUZJX05PVF9SRUFEWSkgew0KPiA+ICsgICAgICBNbWlvV3JpdGU4KChVSU5UTikmSTJj UmVncy0+STJjQ3IsIEkyQ19DUl9JRElTKTsNCj4gPiArICAgIH0NCj4gPiArDQo+ID4gKyAgICBp ZiAoSTJjQnVzSWRsZShJMmNSZWdzKSA8IDApIHsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAg ICB9DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBSZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgIEZ1bmN0aW9uIHRvIHJlYWQgZGF0YSB1c2luZyBpMmMgYnVzDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbSAgIEkyY0J1cyAgICAgICAgICA6ICAgSTJjIENvbnRyb2xsZXIgbnVtYmVyDQo+ ID4gKyAgQHBhcmFtICAgQ2hpcCAgICAgICAgICAgIDogICBBZGRyZXNzIG9mIHNsYXZlIGRldmlj ZSBmcm9tIHdoZXJlIGRhdGEgdG8gYmUNCj4gcmVhZA0KPiA+ICsgIEBwYXJhbSAgIE9mZnNldCAg ICAgICAgICA6ICAgT2Zmc2V0IG9mIHNsYXZlIG1lbW9yeQ0KPiA+ICsgIEBwYXJhbSAgIEFsZW4g ICAgICAgICAgICA6ICAgQWRkcmVzcyBsZW5ndGggb2Ygc2xhdmUNCj4gPiArICBAcGFyYW0gICBC dWZmZXIgICAgICAgICAgOiAgIEEgcG9pbnRlciB0byB0aGUgZGVzdGluYXRpb24gYnVmZmVyIGZv ciB0aGUgZGF0YQ0KPiA+ICsgIEBwYXJhbSAgIExlbiAgICAgICAgICAgICA6ICAgTGVuZ3RoIG9m IGRhdGEgdG8gYmUgcmVhZA0KPiA+ICsNCj4gPiArICBAcmV0dmFsICBFRklfTk9UX1JFQURZICAg OiAgIEFyYml0cmF0aW9uIGxvc3QNCj4gPiArICBAcmV0dmFsICBFRklfVElNRU9VVCAgICAgOiAg IEZhaWxlZCB0byBpbml0aWFsaXplIGRhdGEgdHJhbnNmZXIgaW4gcHJlZGVmaW5lZA0KPiB0aW1l DQo+ID4gKyAgQHJldHZhbCAgRUZJX05PVF9GT1VORCAgIDogICBBQ0sgd2FzIG5vdCByZWNpZXZl ZA0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICA6ICAgUmVhZCB3YXMgc3VjY2Vzc2Z1 bA0KPiA+ICsNCj4gPiArKiovDQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArSTJjRGF0YVJlYWQgKA0K PiA+ICsgIElOICBVSU5UMzIgIEkyY0J1cywNCj4gPiArICBJTiAgVUlOVDggICBDaGlwLA0KPiA+ ICsgIElOICBVSU5UMzIgIE9mZnNldCwNCj4gPiArICBJTiAgVUlOVDMyICBBbGVuLA0KPiA+ICsg IElOICBVSU5UOCAgICpCdWZmZXIsDQo+ID4gKyAgSU4gIFVJTlQzMiAgTGVuDQo+ID4gKyAgKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyBSZXQ7DQo+ID4gKyAgVUlOVDMyIFRlbXA7DQo+ID4g KyAgSU5UMzIgSTsNCj4gPiArICBJMkNfUkVHUyAqSTJjUmVnczsNCj4gPiArDQo+ID4gKyAgSTJj UmVncyA9IChJMkNfUkVHUyAqKUkyY0FkZHJBcnJbSTJjQnVzXTsNCj4gPiArDQo+ID4gKyAgUmV0 ID0gSW5pdERhdGFUcmFuc2ZlcihJMmNSZWdzLCBDaGlwLCBPZmZzZXQsIEFsZW4pOyAgaWYgKFJl dCAhPQ0KPiA+ICsgRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAgIHJldHVybiBSZXQ7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBUZW1wID0gTW1pb1JlYWQ4KChVSU5UTikmSTJjUmVncy0+STJjQ3Ip Ow0KPiA+ICsgIFRlbXAgfD0gSTJDX0NSX1JTVEE7DQo+ID4gKyAgTW1pb1dyaXRlOCgoVUlOVE4p JkkyY1JlZ3MtPkkyY0NyLCBUZW1wKTsNCj4gPiArDQo+ID4gKyAgUmV0ID0gVHJhbnNmZXJCeXRl KEkyY1JlZ3MsIChDaGlwIDw8IDEpIHwgMSk7ICBpZiAoUmV0ICE9DQo+ID4gKyBFRklfU1VDQ0VT Uykgew0KPiA+ICsgICAgSTJjU3RvcChJMmNSZWdzKTsNCj4gPiArICAgIHJldHVybiBSZXQ7DQo+ ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvKiogc2V0dXAgYnVzIHRvIHJlYWQgZGF0YSAqLw0KPiA+ ICsgIFRlbXAgPSBNbWlvUmVhZDgoKFVJTlROKSZJMmNSZWdzLT5JMmNDcik7DQo+ID4gKyAgVGVt cCAmPSB+KEkyQ19DUl9NVFggfCBJMkNfQ1JfVFhfTk9fQUspOyAgaWYgKExlbiA9PSAxKSB7DQo+ ID4gKyAgICBUZW1wIHw9IEkyQ19DUl9UWF9OT19BSzsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsg IE1taW9Xcml0ZTgoKFVJTlROKSZJMmNSZWdzLT5JMmNDciwgVGVtcCk7DQo+ID4gKyBNbWlvV3Jp dGU4KChVSU5UTikmSTJjUmVncy0+STJjU3IsIEkyQ19TUl9JSUZfQ0xFQVIpOw0KPiA+ICsNCj4g PiArICAvKiogcmVhZCBkYXRhICovDQo+ID4gKyAgLyoqIER1bW15IFJlYWQgdG8gaW5pdGlhdGUg cmVjaWV2ZSBvcGVyYXRpb24gKi8NCj4gPiArIE1taW9SZWFkOCgoVUlOVE4pJkkyY1JlZ3MtPkky Y0RyKTsNCj4gPiArDQo+ID4gKyAgZm9yIChJID0gMDsgSSA8IExlbjsgSSsrKSB7DQo+ID4gKyAg ICBSZXQgPSBXYWl0Rm9ySTJjU3RhdGUoSTJjUmVncywgSUlGKTsNCj4gPiArICAgIGlmICgoUmV0 ID09IEVGSV9USU1FT1VUKSB8fCAoUmV0ID09IEVGSV9OT1RfUkVBRFkpKSB7DQo+ID4gKyAgICAg ICBJMmNTdG9wKEkyY1JlZ3MpOw0KPiA+ICsgICAgICAgcmV0dXJuIFJldDsNCj4gPiArICAgIH0N Cj4gPiArICAgIC8qKg0KPiA+ICsgICAgICBJdCBtdXN0IGdlbmVyYXRlIFNUT1AgYmVmb3JlIHJl YWQgSTJEUiB0byBwcmV2ZW50DQo+ID4gKyAgICAgIGNvbnRyb2xsZXIgZnJvbSBnZW5lcmF0aW5n IGFub3RoZXIgY2xvY2sgY3ljbGUNCj4gPiArICAgICoqLw0KPiA+ICsgICAgaWYgKEkgPT0gKExl biAtIDEpKSB7DQo+ID4gKyAgICAgIEkyY1N0b3AoSTJjUmVncyk7DQo+ID4gKyAgICB9IGVsc2Ug aWYgKEkgPT0gKExlbiAtIDIpKSB7DQo+ID4gKyAgICAgIFRlbXAgPSBNbWlvUmVhZDgoKFVJTlRO KSZJMmNSZWdzLT5JMmNDcik7DQo+ID4gKyAgICAgIFRlbXAgfD0gSTJDX0NSX1RYX05PX0FLOw0K PiA+ICsgICAgICBNbWlvV3JpdGU4KChVSU5UTikmSTJjUmVncy0+STJjQ3IsIFRlbXApOw0KPiA+ ICsgICAgfQ0KPiA+ICsgICAgTW1pb1dyaXRlOCgoVUlOVE4pJkkyY1JlZ3MtPkkyY1NyLCBJMkNf U1JfSUlGX0NMRUFSKTsNCj4gPiArICAgIEJ1ZmZlcltJXSA9IE1taW9SZWFkOCgoVUlOVE4pJkky Y1JlZ3MtPkkyY0RyKTsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEkyY1N0b3AoSTJjUmVncyk7 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqDQo+ID4gKyAgRnVuY3Rpb24gdG8gd3JpdGUgZGF0YSB1c2luZyBpMmMgYnVzDQo+ID4gKw0K PiA+ICsgIEBwYXJhbSAgIEkyY0J1cyAgICAgICAgICAgOiAgICBJMmMgQ29udHJvbGxlciBudW1i ZXINCj4gPiArICBAcGFyYW0gICBDaGlwICAgICAgICAgICAgIDogICAgQWRkcmVzcyBvZiBzbGF2 ZSBkZXZpY2Ugd2hlcmUgZGF0YSB0byBiZSB3cml0dGVuDQo+ID4gKyAgQHBhcmFtICAgT2Zmc2V0 ICAgICAgICAgICA6ICAgIE9mZnNldCBvZiBzbGF2ZSBtZW1vcnkNCj4gPiArICBAcGFyYW0gICBB bGVuICAgICAgICAgICAgIDogICAgQWRkcmVzcyBsZW5ndGggb2Ygc2xhdmUNCj4gPiArICBAcGFy YW0gICBCdWZmZXIgICAgICAgICAgIDogICAgQSBwb2ludGVyIHRvIHRoZSBzb3VyY2UgYnVmZmVy IGZvciB0aGUgZGF0YQ0KPiA+ICsgIEBwYXJhbSAgIExlbiAgICAgICAgICAgICAgOiAgICBMZW5n dGggb2YgZGF0YSB0byBiZSB3cml0ZQ0KPiA+ICsNCj4gPiArICBAcmV0dmFsICBFRklfTk9UX1JF QURZICAgIDogICAgQXJiaXRyYXRpb24gbG9zdA0KPiA+ICsgIEByZXR2YWwgIEVGSV9USU1FT1VU ICAgICAgOiAgICBGYWlsZWQgdG8gaW5pdGlhbGl6ZSBkYXRhIHRyYW5zZmVyIGluIHByZWRlZmlu ZWQNCj4gdGltZQ0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfRk9VTkQgICAgOiAgICBBQ0sgd2Fz IG5vdCByZWNpZXZlZA0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgOiAgICBSZWFk IHdhcyBzdWNjZXNzZnVsDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJ MmNEYXRhV3JpdGUgKA0KPiA+ICsgIElOICBVSU5UMzIgICBJMmNCdXMsDQo+ID4gKyAgSU4gIFVJ TlQ4ICAgIENoaXAsDQo+ID4gKyAgSU4gIFVJTlQzMiAgIE9mZnNldCwNCj4gPiArICBJTiAgSU5U MzIgICAgQWxlbiwNCj4gPiArICBPVVQgVUlOVDggICAgKkJ1ZmZlciwNCj4gPiArICBJTiAgSU5U MzIgICAgTGVuDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyBSZXQ7DQo+ID4g KyAgSTJDX1JFR1MgKkkyY1JlZ3M7DQo+ID4gKyAgSU5UMzIgSTsNCj4gPiArDQo+ID4gKyAgSTJj UmVncyA9IChJMkNfUkVHUyAqKUkyY0FkZHJBcnJbSTJjQnVzXTsNCj4gPiArDQo+ID4gKyAgUmV0 ID0gSW5pdERhdGFUcmFuc2ZlcihJMmNSZWdzLCBDaGlwLCBPZmZzZXQsIEFsZW4pOyAgaWYgKFJl dCAhPQ0KPiA+ICsgRUZJX1NVQ0NFU1MpIHsNCj4gPiArICAgIHJldHVybiBSZXQ7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICAvKiogd3JpdGUgZGF0YSAqLw0KPiA+ICsgIC8qKiBEdW1teSB3cml0 ZSB0byBpbml0aWF0ZSB3cml0ZSBvcGVyYXRpb24gKi8gIGZvciAoSSA9IDA7IEkgPA0KPiA+ICsg TGVuOyBJKyspIHsNCj4gPiArICAgIFJldCA9IFRyYW5zZmVyQnl0ZShJMmNSZWdzLCBCdWZmZXJb SV0pOw0KPiA+ICsgICAgaWYgKFJldCAhPSBFRklfU1VDQ0VTUykgew0KPiA+ICsgICAgICBicmVh azsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEkyY1N0b3AoSTJjUmVncyk7 DQo+ID4gKyAgcmV0dXJuIFJldDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVu Y3Rpb24gdG8gUHJvYmUgaTJjIGJ1cw0KPiA+ICsNCj4gPiArICBAcGFyYW0gICBJMmMgICAgICAg ICAgICAgICAgICAgOiAgSTJjIENvbnRyb2xsZXIgbnVtYmVyDQo+ID4gKw0KPiA+ICsgIEByZXR2 YWwgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiA6ICBJbnB1dCBwYXJhbWV0ciBJMmMgd2FzIGludmFs aWQNCj4gPiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAgICAgICAgOiAgSTJjIHdhcyBpbml0 aWFsaXplZCBzdWNjZXNzZnVsbHkNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ ID4gK0VGSUFQSQ0KPiA+ICtJMmNQcm9iZURldmljZXMgKA0KPiA+ICsgIElOICBJTlQxNiAgICBJ MmMsDQo+ID4gKyAgSU4gIFVJTlQ4ICAgIENoaXBBZGQNCj4gPiArICApDQo+ID4gK3sNCj4gPiAr ICBpZihJMmMgPj0gUGNkR2V0MzIoUGNkTnVtSTJjQ29udHJvbGxlcikgfHwgSTJjQWRkckFycltJ MmNdID09IDB4MCkNCj4gPiArew0KPiANCj4gU3BhY2UgYWZ0ZXIgaWYgYW5kIGFmdGVyIFBjZEdl dDMyDQo+IA0KPiANCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICByZXR1cm4gSTJjRGF0YVdyaXRlKEkyYywgQ2hpcEFkZCwgMCwg MCwgTlVMTCwgMCk7DQo+IA0KPiBhbmQgaGVyZQ0KPiANCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgRnVuY3Rpb24gdG8gaW5pdGlhbGl6ZSBpMmMgYnVzDQo+ID4gKw0KPiA+ICsgIEBw YXJhbSAgIEkyY0J1cyAgICAgICAgICAgICAgICAgOiBJMmMgQ29udHJvbGxlciBudW1iZXINCj4g PiArICBAcGFyYW0gICBTcGVlZCAgICAgICAgICAgICAgICAgIDogdmFsdWUgdG8gYmUgc2V0DQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtJMmNCdXNJbml0ICgN Cj4gPiArICBJTiAgVUlOVDMyICBJMmNCdXMsDQo+ID4gKyAgSU4gIFVJTlQzMiAgU3BlZWQNCj4g PiArICApDQo+ID4gK3sNCj4gPiArICByZXR1cm4gSTJjU2V0QnVzU3BlZWQoSTJjQnVzLCBTcGVl ZCk7IH0NCj4gPiBkaWZmIC0tZ2l0IGEvUGxhdGZvcm0vTlhQL0xpYnJhcnkvSTJjTGliL0kyY0xp Yi5oDQo+ID4gYi9QbGF0Zm9ybS9OWFAvTGlicmFyeS9JMmNMaWIvSTJjTGliLmgNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAuLjYxMDc2ZjUNCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vTlhQL0xpYnJhcnkvSTJjTGliL0kyY0xpYi5oDQo+ ID4gQEAgLTAsMCArMSwxMDkgQEANCj4gPiArLyoqIEkyY0xpYi5oDQo+ID4gKyAgSGVhZGVyIGRl ZmluaW5nIHRoZSBjb25zdGFudCwgYmFzZSBhZGRyZXNzIGFtZCBmdW5jdGlvbiBmb3IgSTJDDQo+ ID4gK2NvbnRyb2xsZXINCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IDIwMTcgTlhQDQo+ID4gKw0K PiA+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIGFyZSBs aWNlbnNlZCBhbmQgbWFkZQ0KPiA+ICsgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29u ZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UgIHdoaWNoDQo+ID4gKyBhY2NvbXBhbmllcyB0aGlz IGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQgb2YgdGhlIGxpY2Vuc2UgbWF5IGJlDQo+ID4g KyBmb3VuZCBhdA0KPiA+ICsNCj4gPiArDQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90 ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cCUzQSUyRiUyRm9wDQo+ID4gKyBlbnNvdXJjZS5v cmclMkZsaWNlbnNlcyUyRmJzZC0NCj4gbGljZW5zZS5waHAmZGF0YT0wMiU3QzAxJTdDbWVlbmFr c2hpLmENCj4gPiArDQo+IGdnYXJ3YWwlNDBueHAuY29tJTdDMTQ2MDlmMmQ0NTEwNGNiZmZhNGQw OGQ1MmE5MzIyZWQlN0M2ODZlYTFkM2INCj4gYzJiNA0KPiA+ICsNCj4gYzZmYTkyY2Q5OWM1YzMw MTYzNSU3QzAlN0MwJTdDNjM2NDYxNzMzODIyNDA2MDEwJnNkYXRhPXY2WE5iQTR1dg0KPiBGRmIy DQo+ID4gKyBGcDVkYVpHWFNlZExPeTFjSlclMkY1VW85NHZjZHBiVSUzRCZyZXNlcnZlZD0wDQo+ ID4gKw0KPiA+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElD RU5TRSBPTiBBTiAiQVMgSVMiDQo+ID4gKyBCQVNJUywgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBS RVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsDQo+IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQu DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgX19JMkNfSF9fXw0KPiA+ICsj ZGVmaW5lIF9fSTJDX0hfXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPFVlZmkuaD4NCj4gPiArDQo+ ID4gKyNkZWZpbmUgSTJDX0NSX0lJRU4gICAgICAgICAgICgxIDw8IDYpDQo+ID4gKyNkZWZpbmUg STJDX0NSX01TVEEgICAgICAgICAgICgxIDw8IDUpDQo+ID4gKyNkZWZpbmUgSTJDX0NSX01UWCAg ICAgICAgICAgICgxIDw8IDQpDQo+ID4gKyNkZWZpbmUgSTJDX0NSX1RYX05PX0FLICAgICAgICgx IDw8IDMpDQo+ID4gKyNkZWZpbmUgSTJDX0NSX1JTVEEgICAgICAgICAgICgxIDw8IDIpDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIEkyQ19TUl9JQ0YgICAgICAgICAgICAoMSA8PCA3KQ0KPiA+ICsjZGVm aW5lIEkyQ19TUl9JQkIgICAgICAgICAgICAoMSA8PCA1KQ0KPiA+ICsjZGVmaW5lIEkyQ19TUl9J QUwgICAgICAgICAgICAoMSA8PCA0KQ0KPiA+ICsjZGVmaW5lIEkyQ19TUl9JSUYgICAgICAgICAg ICAoMSA8PCAxKQ0KPiA+ICsjZGVmaW5lIEkyQ19TUl9SWF9OT19BSyAgICAgICAoMSA8PCAwKQ0K PiA+ICsNCj4gPiArI2RlZmluZSBJMkNfQ1JfSUVOICAgICAgICAgICAgKDAgPDwgNykNCj4gPiAr I2RlZmluZSBJMkNfQ1JfSURJUyAgICAgICAgICAgKDEgPDwgNykNCj4gPiArI2RlZmluZSBJMkNf U1JfSUlGX0NMRUFSICAgICAgKDEgPDwgMSkNCj4gPiArDQo+ID4gKyNkZWZpbmUgQlVTX0lETEUg ICAgICAgICAgICAgICgwIHwgKEkyQ19TUl9JQkIgPDwgOCkpDQo+ID4gKyNkZWZpbmUgQlVTX0JV U1kgICAgICAgICAgICAgIChJMkNfU1JfSUJCIHwgKEkyQ19TUl9JQkIgPDwgOCkpDQo+ID4gKyNk ZWZpbmUgSUlGICAgICAgICAgICAgICAgICAgIChJMkNfU1JfSUlGIHwgKEkyQ19TUl9JSUYgPDwg OCkpDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBSZWNvcmQgZGVmaW5pbmcgaTJjIHJlZ2lzdGVy cw0KPiA+ICsqKi8NCj4gPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+ICsgIFVJTlQ4ICAgICBJMmNB ZHI7DQo+ID4gKyAgVUlOVDggICAgIEkyY0ZkcjsNCj4gPiArICBVSU5UOCAgICAgSTJjQ3I7DQo+ ID4gKyAgVUlOVDggICAgIEkyY1NyOw0KPiA+ICsgIFVJTlQ4ICAgICBJMmNEcjsNCj4gPiArfSBJ MkNfUkVHUyA7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBGdW5jdGlvbiB0byBzZXQgSTJjIGJ1 cyBzcGVlZA0KPiA+ICsNCj4gPiArICBAcGFyYW0gICBJMmNCdXMgICAgICAgICAgIEkyYyBDb250 cm9sbGVyIG51bWJlcg0KPiA+ICsgIEBwYXJhbSAgIFNwZWVkICAgICAgICAgICAgVmFsdWUgdG8g YmUgc2V0DQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTDQo+ID4gKyoqLw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtJMmNTZXRCdXNTcGVlZCAoDQo+ID4gKyAg SU4gICBVSU5UMzIgICBJMmNCdXMsDQo+ID4gKyAgSU4gICBVSU5UMzIgICAgU3BlZWQNCj4gPiAr ICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24gdG8gc3RvcCB0cmFuc2FjdGlv biBvbiBpMmMgYnVzDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgIEkyY1JlZ3MgICAgICAgICAgUG9p bnRlciB0byBpMmMgcmVnaXN0ZXJzDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfUkVB RFkgICAgQXJiaXRyYXRpb24gd2FzIGxvc3QNCj4gPiArICBAcmV0dmFsICBFRklfVElNRU9VVCAg ICAgIFRpbWVvdXQgb2NjdXJlZA0KPiA+ICsgIEByZXR2YWwgIEVGSV9TVUNDRVNTICAgICAgU3Rv cCBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtFRklfU1RB VFVTDQo+ID4gK0kyY1N0b3AgKA0KPiA+ICsgIElOICAgSTJDX1JFR1MgICAgICAgKkkyY1JlZ3MN Cj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRnVuY3Rpb24gdG8gaW5pdGlhdGUg ZGF0YSB0cmFuc2ZlciBvbiBpMmMgYnVzDQo+ID4gKw0KPiA+ICsgIEBwYXJhbSAgIEkyY1JlZ3Mg ICBQb2ludGVyIHRvIGkyYyBiYXNlIHJlZ2lzdGVycw0KPiA+ICsgIEBwYXJhbSAgIENoaXAgICAg ICBDaGlwIEFkZHJlc3MNCj4gPiArICBAcGFyYW0gICBPZmZzZXQgICAgU2xhdmUgbWVtb3J5J3Mg b2Zmc2V0DQo+ID4gKyAgQHBhcmFtICAgQWxlbiAgICAgIGxlbmd0aCBvZiBjaGlwIGFkZHJlc3MN Cj4gPiArDQo+ID4gKyAgQHJldHZhbCAgRUZJX05PVF9SRUFEWSAgICAgICAgICAgQXJiaXRyYXRp b24gbG9zdA0KPiA+ICsgIEByZXR2YWwgIEVGSV9USU1FT1VUICAgICAgICAgICAgIEZhaWxlZCB0 byBpbml0aWFsaXplIGRhdGEgdHJhbnNmZXIgaW4NCj4gcHJlZGVmaW5lZCB0aW1lDQo+ID4gKyAg QHJldHZhbCAgRUZJX05PVF9GT1VORCAgICAgICAgICAgQUNLIHdhcyBub3QgcmVjaWV2ZWQNCj4g PiArICBAcmV0dmFsICBFRklfU1VDQ0VTUyAgICAgICAgICAgICBSZWFkIHdhcyBzdWNjZXNzZnVs DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtJMmNCdXNJbml0VHJhbnNm ZXIgKA0KPiA+ICsgIElOICAgSTJDX1JFR1MgICAgICAgKkkyY1JlZ3MsDQo+ID4gKyAgSU4gICBV SU5UOCAgICAgICAgICBDaGlwLA0KPiA+ICsgIElOICAgVUlOVDMyICAgICAgICAgT2Zmc2V0LA0K PiA+ICsgIElOICAgSU5UMzIgICAgICAgICAgQWxlbg0KPiA+ICsgICk7DQo+ID4gKw0KPiA+ICtV SU5UMzINCj4gPiArQ2FsY3VsYXRlSTJjQ2xvY2tSYXRlICgNCj4gPiArICBWT0lEDQo+ID4gKyAg KTsNCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9OWFAvTGli cmFyeS9JMmNMaWIvSTJjTGliLmluZg0KPiA+IGIvUGxhdGZvcm0vTlhQL0xpYnJhcnkvSTJjTGli L0kyY0xpYi5pbmYNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAu LjQyN2MzYjgNCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUGxhdGZvcm0vTlhQL0xpYnJh cnkvSTJjTGliL0kyY0xpYi5pbmYNCj4gPiBAQCAtMCwwICsxLDQzIEBADQo+ID4gKyMgIEkyY0xp Yi5pbmYNCj4gPiArIw0KPiA+ICsjICBDb21wb25lbnQgZGVzY3JpcHRpb24gZmlsZSBmb3IgSTJj TGliIG1vZHVsZSAjICMgIENvcHlyaWdodCAyMDE3DQo+ID4gK05YUCAjICMgIFRoaXMgcHJvZ3Jh bSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIyAgYXJlIGxpY2Vuc2VkDQo+ID4gK2Fu ZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJT RCBMaWNlbnNlDQo+ID4gKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlDQo+ID4gK21heSBiZSBmb3VuZCBhdCAjDQo+ID4N Cj4gK2h0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9 aHR0cCUzQSUyRiUyRm9wDQo+IGUNCj4gPiArbnNvdXJjZS5vcmclMkZsaWNlbnNlcyUyRmJzZC0N Cj4gbGljZW5zZS5waHAmZGF0YT0wMiU3QzAxJTdDbWVlbmFrc2hpLmFnZw0KPiA+DQo+ICthcndh bCU0MG54cC5jb20lN0MxNDYwOWYyZDQ1MTA0Y2JmZmE0ZDA4ZDUyYTkzMjJlZCU3QzY4NmVhMWQz YmMNCj4gMmI0YzZmDQo+ID4NCj4gK2E5MmNkOTljNWMzMDE2MzUlN0MwJTdDMCU3QzYzNjQ2MTcz MzgyMjQwNjAxMCZzZGF0YT12NlhOYkE0dXZGDQo+IEZiMkZwNWQNCj4gPiArYVpHWFNlZExPeTFj SlclMkY1VW85NHZjZHBiVSUzRCZyZXNlcnZlZD0wDQo+ID4gKyMNCj4gPiArIyAgVEhFIFBST0dS QU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFOICJBUyBJUyINCj4g PiArQkFTSVMsICMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5Z IEtJTkQsDQo+IEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4gKyMNCj4gPiArIw0KPiA+ ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAg ID0gMHgwMDAxMDAwNQ0KPiANCj4gMHgwMDAxMDAxQQ0KPiANCj4gPiArICBCQVNFX05BTUUgICAg ICAgICAgICAgICAgICAgICAgPSBJMmNMaWINCj4gPiArICBGSUxFX0dVSUQgICAgICAgICAgICAg ICAgICAgICAgPSA4ZWNlZmM4Zi1hMmM0LTQwOTEtYjgxZi0yMGY3YWViMDU2N2YNCj4gDQo+IFBs ZWFzZSBkb24ndCByZXVzZSB0aGUgR1VJRCBvZiBQTDAxMVNlcmlhbFBvcnRMaWIuaW5mDQo+IA0K PiA+ICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gPiArICBWRVJT SU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiArICBMSUJSQVJZX0NMQVNTICAg ICAgICAgICAgICAgICAgPSBJMmNMaWINCj4gPiArDQo+ID4gK1tTb3VyY2VzLmNvbW1vbl0NCj4g PiArIEkyY0xpYi5jDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZUxp Yg0KPiA+ICsgIElvTGliDQo+ID4gKyAgU29jTGliDQo+IA0KPiBQbGVhc2UgcmVvcmRlciB0aGlz IHBhdGNoIGFmdGVyIHRoZSBvbmUgdGhhdCBpbnRyb2R1Y2VzIFNvY0xpYiAoaWYgdGhpcyB0cnVs eQ0KPiBkZXBlbmRzIG9uIGl0KQ0KPiANCj4gPiArICBUaW1lckxpYg0KPiA+ICsNCj4gPiArW1Bh Y2thZ2VzXQ0KPiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgZWRrMi1wbGF0Zm9ybXMv UGxhdGZvcm0vTlhQL054cFFvcmlxTHMuZGVjDQo+IA0KPiBQbGVhc2UgcmVtb3ZlIGVkazItcGxh dGZvcm1zLyBwcmVmaXggYW5kIGFkZCBpdCB0byB5b3VyIFBBQ0tBR0VTX1BBVEgNCj4gaW5zdGVh ZC4NCj4gDQo+ID4gKw0KPiA+ICtbUGNkXQ0KPiA+ICsgIGdOeHBRb3JpcUxzVG9rZW5TcGFjZUd1 aWQuUGNkSTJjMEJhc2VBZGRyDQo+ID4gKyAgZ054cFFvcmlxTHNUb2tlblNwYWNlR3VpZC5QY2RJ MmMxQmFzZUFkZHINCj4gPiArICBnTnhwUW9yaXFMc1Rva2VuU3BhY2VHdWlkLlBjZEkyYzJCYXNl QWRkcg0KPiA+ICsgIGdOeHBRb3JpcUxzVG9rZW5TcGFjZUd1aWQuUGNkSTJjM0Jhc2VBZGRyDQo+ ID4gKyAgZ054cFFvcmlxTHNUb2tlblNwYWNlR3VpZC5QY2ROdW1JMmNDb250cm9sbGVyDQo+ID4g LS0NCj4gPiAxLjkuMQ0KPiA+DQo=