From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.107.3.79; helo=eur03-am5-obe.outbound.protection.outlook.com; envelope-from=supreeth.venkatesh@arm.com; receiver=edk2-devel@lists.01.org Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30079.outbound.protection.outlook.com [40.107.3.79]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0B3CF21164C6B for ; Mon, 15 Oct 2018 06:09:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dnbtGs+FJlbr+WZaNtY++FbzXMAB3lPt1d89nivmb1E=; b=Zuxyq/p+oqSmgHgQr36/5w6Ow2fakqkex5z9L6xXqutUiABvQQEeGxU0M/pk3cEvIwzmmeB1qdJlLU2SKxftLawjduFBCapvgXGpEN4TMPZrHCycaCiCfRV5sGd/gzz4o8LwbeXdMYUxUBqhrErHaI8/qYiflZ116vxvxjoyYXg= Received: from AM4PR08MB2788.eurprd08.prod.outlook.com (10.171.191.18) by AM4PR08MB0738.eurprd08.prod.outlook.com (10.164.82.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1228.23; Mon, 15 Oct 2018 13:09:33 +0000 Received: from AM4PR08MB2788.eurprd08.prod.outlook.com ([fe80::d4b:69c8:51b8:1739]) by AM4PR08MB2788.eurprd08.prod.outlook.com ([fe80::d4b:69c8:51b8:1739%4]) with mapi id 15.20.1228.027; Mon, 15 Oct 2018 13:09:33 +0000 From: Supreeth Venkatesh To: Eric Jin , "edk2-devel@lists.01.org" CC: Jiaxin Wu , Supreeth Venkatesh Thread-Topic: [PATCH] uefi-sct/SctPkg:Enhance the EraseBlock Test Thread-Index: AQHUY9q32vd2xjREN0qm5/UtptPOyqUfRhIAgACuNAA= Date: Mon, 15 Oct 2018 13:09:33 +0000 Message-ID: References: <20181014162639.12728-1-eric.jin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 x-ms-exchange-imapappendstamp: AM4PR08MB2788.eurprd08.prod.outlook.com (15.20.1228.020) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Supreeth.Venkatesh@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [217.140.111.135] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM4PR08MB0738; 6:z72HDWuPCxXcISq9S3I2t0jGAUX8rDSU25PwY79DpE2NB/fsaWakhdKz1ZBW9N9Vq18/z3zadlNh1+y7SsZRptBkMPgsqeP5GO8Z/Y7diqGekHAY34syrwpSeA9MxqZIYTtZ9zGc0YIS/U2pkGA8tUtKhbNfAczAnUYKO3h71v9fmvxNFN80SZj+po79sR/hCEuvXBycaNavNYJ91L4fwhWVWyVbkVf3QuSQOwUM4qakYu4mUXhRiKqAv9/LpvP8kF6ffd85Dc9or+T3CFLdNdmXXyqZKOGI+JqqXCmlPno6inV3MQx51LFILBJi3bOmX6rteIErjRMuuBQB915GrW3osbslNvSnKJudInfeIcZ24xK7IeSThqlDeruU9mcBhWqJYPhcPfC2dpWMbIxCUCsW43fPvB1Tc19iigAuS4VoWrLuQXO78ehw0IHXpQWuiwB2ppm6zgCpbp1YfGNowg==; 5:G0d3O3qN6rnbQPo7TJxHwD8sWNNtqfbtvk3fK+mDz6Jk+c4M/KNOMItlyHn2HJJs18Rvj1hJB3IYnqcZNulDyoB9X+OwhNQnroBZCEbQNTVLNlKoEYLQCcqxQfjTQZU/FesKVTw9Fapwn5Pj2Eph+l3/xQdiZ/vynP1K/cgRKH8=; 7:arLu5Skj2x4ZQdVP4V0a52Nz0J2kVKBO07yJ48zIlere3gFmq7D9rBKsx/CkP6LERBkXOe5g4cC2pXt2YhCJGAQhG4RbBYuqWWauFDMtZ2Zwj/QmVR+/0aXM/RIM6tqdQoLWClXC9Strm46fnutxdO6nJq9KoT5L/uq3HhafFAGFLTaDyuOXcmVFY+v7FfwGMytiC8prrVEHakOEthN/WAMALOx+Goz8pTD5E8yxRSHesfG28MSQKXLhWdgnKxoj x-ms-office365-filtering-correlation-id: 0eaa5ec4-c199-4d03-3ba7-08d6329f7382 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM4PR08MB0738; x-ms-traffictypediagnostic: AM4PR08MB0738: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917)(228905959029699)(21748063052155)(28532068793085)(190501279198761)(227612066756510); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231355)(944501410)(52105095)(10201501046)(93006095)(93001095)(6055026)(149066)(150057)(6041310)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051); SRVR:AM4PR08MB0738; BCL:0; PCL:0; RULEID:; SRVR:AM4PR08MB0738; x-forefront-prvs: 0826B2F01B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(396003)(39860400002)(366004)(346002)(376002)(189003)(199004)(69234005)(40434004)(68736007)(7736002)(229853002)(33656002)(74316002)(316002)(2906002)(9686003)(236005)(14454004)(54896002)(53946003)(4326008)(6306002)(6436002)(16200700003)(6246003)(55016002)(3846002)(6116002)(53936002)(186003)(790700001)(25786009)(5024004)(102836004)(64126003)(65826007)(256004)(99286004)(5250100002)(14444005)(26005)(476003)(19627235002)(446003)(4744004)(11346002)(7696005)(486006)(5660300001)(71200400001)(106356001)(97736004)(76176011)(2501003)(105586002)(54906003)(53546011)(71190400001)(110136005)(65956001)(65806001)(66066001)(478600001)(44832011)(81156014)(81166006)(2900100001)(8936002)(72206003)(8676002)(6506007)(86362001)(58126008)(559001)(579004)(569006); DIR:OUT; SFP:1101; SCL:1; SRVR:AM4PR08MB0738; H:AM4PR08MB2788.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: CWelx6k1zQ0ysoI5+dHv64ha0K9V1peXbmh+N8Yifej9EntQvUdxDC0nrPqrsylx2IXt8h0WEpbrY+ydRhFo68UxKRRp8DMGVH2brdJiBJ/uqzLIoEr34cZA8G4q2RM1Hnc0WXv8d24uwC4dqF7ki0eFleCifqvtj95M/wsgUNVT705W5kGDDAb4JiQVauMxGvXcdp5oC/xChIQd6KdjsAg/AOebj6v4OtlZRA/Q8F2onC4Dw2XQw7H6AgG+SObhKn1YkcF+6Zt54HBvxB0o7A4F94lTkdMwwyfG4viAK/sRSlP0yvJKQnesfpN5fJcBZIDj5k20ABwNEheCpkQ0w4Lm0HNTiNVuSuzl3FUp5RI= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0eaa5ec4-c199-4d03-3ba7-08d6329f7382 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Oct 2018 13:09:33.8138 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB0738 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [PATCH] uefi-sct/SctPkg:Enhance the EraseBlock Test X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Oct 2018 13:09:37 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RllJDQoNCk9uIDEwLzE1LzIwMTggMDM6NDMgQU0sIFN1cHJlZXRoIFZlbmthdGVzaCB3cm90ZToN Cg0KDQpPbiAxMC8xNC8yMDE4IDA1OjI2IFBNLCBFcmljIEppbiB3cm90ZToNCg0KVGhlIEVyYXNl U2l6ZSBpbiB0aGUgRXJhc2VCbG9ja3MgY29uZiB0ZXN0IHNob3VsZCBiZSBieXRlcy4NCkNvdmVy IHRoZSBjYXNlIHRoYXQgdGhlIHNpemUgb2YgdGhlIGRhdGEgdG8gZXJhc2UgaXMgYQ0KbXVsdGlw bGUgb2YgdGhlICdFcmFzZUxlbmd0aEdyYW51bGFyaXR5JyB2YWx1ZSBvZiBhbiBFcmFzZSBCbG9j aw0KUHJvdG9jb2wgaW5zdGFuY2UuIEFuZCBjaGVjayB3aGV0aGVyIHRoZSBkYXRhIG9uIGFkamFj ZW50IGJsb2Nrcw0KYXJlIG1pc3Rha2VubHkgZXJhc2VkLg0KDQpDYzogU3VwcmVldGggVmVua2F0 ZXNoIDxzdXByZWV0aC52ZW5rYXRlc2hAYXJtLmNvbT48bWFpbHRvOnN1cHJlZXRoLnZlbmthdGVz aEBhcm0uY29tPg0KQ2M6IEppYXhpbiBXdSA8amlheGluLnd1QGludGVsLmNvbT48bWFpbHRvOmpp YXhpbi53dUBpbnRlbC5jb20+DQpDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1 dGlvbiBBZ3JlZW1lbnQgMS4xDQpTaWduZWQtb2ZmLWJ5OiBFcmljIEppbiA8ZXJpYy5qaW5AaW50 ZWwuY29tPjxtYWlsdG86ZXJpYy5qaW5AaW50ZWwuY29tPg0KLS0tDQogIC4uLi9FcmFzZUJsb2Nr QkJUZXN0Q29uZm9ybWFuY2UuYyAgICAgICAgICAgICB8ICAyNSArLQ0KICAuLi4vQmxhY2tCb3hU ZXN0L0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlvbi5jICAgfCA2MDAgKysrKysrKysrKysrKysrKy0t DQogIC4uLi9CbGFja0JveFRlc3QvRXJhc2VCbG9ja0JCVGVzdE1haW4uaCAgICAgICB8ICAxNiAr LQ0KICAuLi4vUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3QvR3VpZC5jICAgfCAgIDQg Ky0NCiAgLi4uL1Byb3RvY29sL0VyYXNlQmxvY2svQmxhY2tCb3hUZXN0L0d1aWQuaCAgIHwgICA3 ICsNCiAgNSBmaWxlcyBjaGFuZ2VkLCA1ODkgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0p DQoNCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9j b2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3QvRXJhc2VCbG9ja0JCVGVzdENvbmZvcm1hbmNlLmMg Yi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9C bGFja0JveFRlc3QvRXJhc2VCbG9ja0JCVGVzdENvbmZvcm1hbmNlLmMNCmluZGV4IGRmMDU3YjI2 Li43ZTg0ODIzOSAxMDA2NDQNCi0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VG SS9Qcm90b2NvbC9FcmFzZUJsb2NrL0JsYWNrQm94VGVzdC9FcmFzZUJsb2NrQkJUZXN0Q29uZm9y bWFuY2UuYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29s L0VyYXNlQmxvY2svQmxhY2tCb3hUZXN0L0VyYXNlQmxvY2tCQlRlc3RDb25mb3JtYW5jZS5jDQpA QCAtMSw3ICsxLDcgQEANCiAgLyoqIEBmaWxlDQogICAgICBDb3B5cmlnaHQgMjAxNyBVbmlmaWVk IEVGSSwgSW5jLjxCUj4NCi0gIENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRpb24u IEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KKyAgQ29weXJpZ2h0IChjKSAyMDE3IC0gMjAxOCwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KICAgICAgVGhpcyBw cm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KICAgIGFyZSBsaWNlbnNlZCBh bmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBC U0QgTGljZW5zZQ0KQEAgLTUxLDggKzUxLDggQEAgQkJUZXN0RXJhc2VCbG9ja3NDb25mb3JtYW5j ZVRlc3QgKA0KICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tT aXplOw0KICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW9BbGlnbjsN CiAgICBFRklfTEJBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3RCbG9jazsNCi0N Ci0gIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmxvY2tOdW1iZXI7DQor ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyYXNlTGVuZ3RoR3JhbnVs YXJpdHk7DQorICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVyYXNlU2l6 ZTsNCiAgICAgIEVGSV9FUkFTRV9CTE9DS19UT0tFTiAgICAgICAgICAgICAgICAgVG9rZW47DQog IEBAIC0xMjEsMTAgKzEyMSwxMSBAQCBCQlRlc3RFcmFzZUJsb2Nrc0NvbmZvcm1hbmNlVGVzdCAo DQogICAgSW9BbGlnbiAgICAgICAgICAgPSBNZWRpYS0+SW9BbGlnbjsNCiAgICBMYXN0QmxvY2sg ICAgICAgICA9IE1lZGlhLT5MYXN0QmxvY2s7DQogIC0gIEJsb2NrTnVtYmVyICAgICAgID0gKFVJ TlQzMikgTUlOSU1VTShMYXN0QmxvY2ssIE1BWF9OVU1CRVJfT0ZfUkVBRF9CTE9DS19CVUZGRVIp Ow0KKyAgRXJhc2VMZW5ndGhHcmFudWxhcml0eSA9IEVyYXNlQmxvY2stPkVyYXNlTGVuZ3RoR3Jh bnVsYXJpdHk7DQorICBFcmFzZVNpemUgICAgICAgICAgICAgID0gKFVJTlROKVNjdE11bHRVNjR4 MzIgKEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHksIEJsb2NrU2l6ZSk7DQogICAgICBpZiAoTWVkaWFQ cmVzZW50ID09IEZBTFNFKSB7DQotICAgIFN0YXR1cyA9IEVyYXNlQmxvY2stPkVyYXNlQmxvY2tz KEVyYXNlQmxvY2ssIE1lZGlhSWQsIDAsICZUb2tlbiwgQmxvY2tOdW1iZXIpOw0KKyAgICBTdGF0 dXMgPSBFcmFzZUJsb2NrLT5FcmFzZUJsb2NrcyhFcmFzZUJsb2NrLCBNZWRpYUlkLCAwLCAmVG9r ZW4sIEVyYXNlU2l6ZSk7DQogICAgICBpZiAoU3RhdHVzID09IEVGSV9OT19NRURJQSkNCiAgICAg ICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQogICAgICBlbHNl DQpAQCAtMTQxLDcgKzE0Miw3IEBAIEJCVGVzdEVyYXNlQmxvY2tzQ29uZm9ybWFuY2VUZXN0ICgN CiAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzDQogICAgICAgICAgICAgICAgICAgICAgICk7 DQogIC0gICAgU3RhdHVzID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3MoRXJhc2VCbG9jaywgTWVk aWFJZCwgTGFzdEJsb2NrICsgMSwgJlRva2VuLCBCbG9ja051bWJlcik7DQorICAgIFN0YXR1cyA9 IEVyYXNlQmxvY2stPkVyYXNlQmxvY2tzKEVyYXNlQmxvY2ssIE1lZGlhSWQsIExhc3RCbG9jayAr IDEsICZUb2tlbiwgRXJhc2VTaXplKTsNCiAgICAgIGlmIChTdGF0dXMgPT0gRUZJX05PX01FRElB KQ0KICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCiAg ICAgIGVsc2UNCkBAIC0xNTgsNyArMTU5LDcgQEAgQkJUZXN0RXJhc2VCbG9ja3NDb25mb3JtYW5j ZVRlc3QgKA0KICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMNCiAgICAgICAgICAgICAgICAg ICAgICAgKTsNCiAgLSAgICBTdGF0dXMgPSBFcmFzZUJsb2NrLT5FcmFzZUJsb2NrcyhFcmFzZUJs b2NrLCBNZWRpYUlkLCBMYXN0QmxvY2sgLSAxMCwgJlRva2VuLCBCbG9ja051bWJlciArIDEpOw0K KyAgICBTdGF0dXMgPSBFcmFzZUJsb2NrLT5FcmFzZUJsb2NrcyhFcmFzZUJsb2NrLCBNZWRpYUlk LCBMYXN0QmxvY2sgLSAxMCwgJlRva2VuLCBFcmFzZVNpemUgKyAxKTsNCldoeSAtMTA/IE1hZ2lj IE51bWJlci4NCg0KICAgICAgaWYgKFN0YXR1cyA9PSBFRklfTk9fTUVESUEpDQogICAgICAgIEFz c2VydGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KICAgICAgZWxzZQ0KQEAg LTE3Nyw3ICsxNzgsNyBAQCBCQlRlc3RFcmFzZUJsb2Nrc0NvbmZvcm1hbmNlVGVzdCAoDQogICAg ICAgfSBlbHNlIHsNCiAgICAgIGlmIChSZWFkT25seSA9PSBUUlVFKSB7DQotICAgICAgU3RhdHVz ID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3MoRXJhc2VCbG9jaywgTWVkaWFJZCwgMCwgJlRva2Vu LCBCbG9ja051bWJlcik7DQorICAgICAgU3RhdHVzID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3Mo RXJhc2VCbG9jaywgTWVkaWFJZCwgMCwgJlRva2VuLCBFcmFzZVNpemUpOw0KICAgICAgICBpZiAo U3RhdHVzID09IEVGSV9XUklURV9QUk9URUNURUQpDQogICAgICAgICAgQXNzZXJ0aW9uVHlwZSA9 IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQogICAgICAgIGVsc2UNCkBAIC0xOTUsNyArMTk2 LDcgQEAgQkJUZXN0RXJhc2VCbG9ja3NDb25mb3JtYW5jZVRlc3QgKA0KICAgICAgICAgICAgICAg ICAgICAgICApOw0KICAgICAgICB9IGVsc2Ugew0KLSAgICAgIFN0YXR1cyA9IEVyYXNlQmxvY2st PkVyYXNlQmxvY2tzKEVyYXNlQmxvY2ssIE1lZGlhSWQgKyAxLCAwLCAmVG9rZW4sIEJsb2NrTnVt YmVyKTsNCisgICAgICBTdGF0dXMgPSBFcmFzZUJsb2NrLT5FcmFzZUJsb2NrcyhFcmFzZUJsb2Nr LCBNZWRpYUlkICsgMSwgMCwgJlRva2VuLCBFcmFzZVNpemUpOw0KICAgICAgICBpZiAoU3RhdHVz ID09IEVGSV9NRURJQV9DSEFOR0VEKQ0KICAgICAgICAgIEFzc2VydGlvblR5cGUgPSBFRklfVEVT VF9BU1NFUlRJT05fUEFTU0VEOw0KICAgICAgICBlbHNlDQpAQCAtMjEyLDcgKzIxMyw3IEBAIEJC VGVzdEVyYXNlQmxvY2tzQ29uZm9ybWFuY2VUZXN0ICgNCiAgICAgICAgICAgICAgICAgICAgICAg U3RhdHVzDQogICAgICAgICAgICAgICAgICAgICAgICk7DQogIC0gICAgICBTdGF0dXMgPSBFcmFz ZUJsb2NrLT5FcmFzZUJsb2NrcyhFcmFzZUJsb2NrLCBNZWRpYUlkICsgMSwgTGFzdEJsb2NrICsg MSwgJlRva2VuLCBCbG9ja051bWJlcik7DQorICAgICAgU3RhdHVzID0gRXJhc2VCbG9jay0+RXJh c2VCbG9ja3MoRXJhc2VCbG9jaywgTWVkaWFJZCArIDEsIExhc3RCbG9jayArIDEsICZUb2tlbiwg RXJhc2VTaXplKTsNCiAgICAgICAgaWYgKFN0YXR1cyA9PSBFRklfTUVESUFfQ0hBTkdFRCkNCiAg ICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BBU1NFRDsNCiAgICAg ICAgZWxzZQ0KQEAgLTIyOSw3ICsyMzAsNyBAQCBCQlRlc3RFcmFzZUJsb2Nrc0NvbmZvcm1hbmNl VGVzdCAoDQogICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KICAgICAgICAgICAgICAgICAg ICAgICApOw0KICAtICAgICAgU3RhdHVzID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3MoRXJhc2VC bG9jaywgTWVkaWFJZCArIDEsIExhc3RCbG9jayAtIDEwLCAmVG9rZW4sIEJsb2NrTnVtYmVyICsg MSk7DQorICAgICAgU3RhdHVzID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3MoRXJhc2VCbG9jaywg TWVkaWFJZCArIDEsIExhc3RCbG9jayAtIDEwLCAmVG9rZW4sIEVyYXNlU2l6ZSArIDEpOw0KTWFn aWMgTnVtYmVyIDEwLg0KDQogICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX01FRElBX0NIQU5HRUQp DQogICAgICAgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQog ICAgICAgIGVsc2UNCkBAIC0yNDYsNyArMjQ3LDcgQEAgQkJUZXN0RXJhc2VCbG9ja3NDb25mb3Jt YW5jZVRlc3QgKA0KICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMNCiAgICAgICAgICAgICAg ICAgICAgICAgKTsNCiAgLSAgICAgIFN0YXR1cyA9IEVyYXNlQmxvY2stPkVyYXNlQmxvY2tzKEVy YXNlQmxvY2ssIE1lZGlhSWQsIExhc3RCbG9jayArIDEsICZUb2tlbiwgQmxvY2tOdW1iZXIpOw0K KyAgICAgIFN0YXR1cyA9IEVyYXNlQmxvY2stPkVyYXNlQmxvY2tzKEVyYXNlQmxvY2ssIE1lZGlh SWQsIExhc3RCbG9jayArIDEsICZUb2tlbiwgRXJhc2VTaXplKTsNCiAgICAgICAgaWYgKFN0YXR1 cyA9PSBFRklfSU5WQUxJRF9QQVJBTUVURVIpDQogICAgICAgICAgQXNzZXJ0aW9uVHlwZSA9IEVG SV9URVNUX0FTU0VSVElPTl9QQVNTRUQ7DQogICAgICAgIGVsc2UNCmRpZmYgLS1naXQgYS91ZWZp LXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0Jv eFRlc3QvRXJhc2VCbG9ja0JCVGVzdEZ1bmN0aW9uLmMgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENh c2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3QvRXJhc2VCbG9ja0JC VGVzdEZ1bmN0aW9uLmMNCmluZGV4IGVhMDgxNjI1Li43MTI0YjUyNSAxMDA2NDQNCi0tLSBhL3Vl Zmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9FcmFzZUJsb2NrL0JsYWNr Qm94VGVzdC9FcmFzZUJsb2NrQkJUZXN0RnVuY3Rpb24uYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtn L1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0VyYXNlQmxvY2svQmxhY2tCb3hUZXN0L0VyYXNl QmxvY2tCQlRlc3RGdW5jdGlvbi5jDQpAQCAtMzcsMTIgKzM3LDU1IEBAIEJCVGVzdEVyYXNlQmxv Y2tzRnVuY3Rpb25UZXN0ICgNCiAgICApDQogIHsNCiAgICBFRklfU1RBTkRBUkRfVEVTVF9MSUJS QVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYjsNCisgIEVGSV9TVEFUVVMgICAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KKyAgRUZJX0VSQVNFX0JMT0NLX1BST1RPQ09MICAgICAg ICAgICAgICAqRXJhc2VCbG9jazsNCisNCisgIC8vDQorICAvLyBpbml0DQorICAvLw0KKyAgRXJh c2VCbG9jayA9IChFRklfRVJBU0VfQkxPQ0tfUFJPVE9DT0wqKUNsaWVudEludGVyZmFjZTsNCisN CisgIC8vDQorICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJmYWNlDQorICAvLw0K KyAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wgKA0KKyAgICAgICAgICAgICAgICAgICBT dXBwb3J0SGFuZGxlLA0KKyAgICAgICAgICAgICAgICAgICAmZ0VmaVN0YW5kYXJkVGVzdExpYnJh cnlHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlN0YW5kYXJkTGliDQorICAg ICAgICAgICAgICAgICAgICk7DQorDQorICBpZiAoIEVGSV9FUlJPUihTdGF0dXMpICkgew0KKyAg ICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCisgICAgICAgICAgICAgICAgICAgU3Rh bmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQs DQorICAgICAgICAgICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KKyAgICAgICAg ICAgICAgICAgICBMIkJTLkhhbmRsZVByb3RvY29sIC0gSGFuZGxlIHN0YW5kYXJkIHRlc3QgbGli cmFyeSIsDQorICAgICAgICAgICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXJcbiIsDQorICAg ICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KKyAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19M SU5FX18sDQorICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KKyAgICAgICAgICAgICAgICAgICAp Ow0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgQkJUZXN0RXJhc2VCbG9ja3NGdW5j dGlvblRlc3RDaGVja1BvaW50MSAoU3RhbmRhcmRMaWIsIEVyYXNlQmxvY2spOw0KKw0KKyAgQkJU ZXN0RXJhc2VCbG9ja3NGdW5jdGlvblRlc3RDaGVja1BvaW50MiAoU3RhbmRhcmRMaWIsIEVyYXNl QmxvY2spOw0KKw0KKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KK30NCisNCitFRklfU1RBVFVTDQor QkJUZXN0RXJhc2VCbG9ja3NGdW5jdGlvblRlc3RDaGVja1BvaW50MSAoDQorICBJTiBFRklfU1RB TkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYiwNCisgIElOIEVGSV9F UkFTRV9CTE9DS19QUk9UT0NPTCAgICAgICAgICAgICAgKkVyYXNlQmxvY2sNCisgICkNCit7DQog ICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQogICAgRUZJ X1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcmFzZVN0YXR1czsNCiAgICBFRklf U1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRTdGF0dXM7DQogICAgRUZJX1NU QVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZVN0YXR1czsNCiAgICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoU3RhdHVzOw0KLSAgRUZJX0VSQVNF X0JMT0NLX1BST1RPQ09MICAgICAgICAgICAgICAqRXJhc2VCbG9jazsNCiAgICBFRklfQkxPQ0tf SU9fUFJPVE9DT0wgICAgICAgICAgICAgICAgICpCbG9ja0lvOw0KICAgIEVGSV9CTE9DS19JTzJf UFJPVE9DT0wgICAgICAgICAgICAgICAgKkJsb2NrSW8yOw0KICAgIEVGSV9URVNUX0FTU0VSVElP TiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZTsNCkBAIC02NCw5ICsxMDcsOSBAQCBC QlRlc3RFcmFzZUJsb2Nrc0Z1bmN0aW9uVGVzdCAoDQogICAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqQnVmZmVyMSA9IE5VTEw7DQogICAgVUlOVDggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAqQnVmZmVyMiA9IE5VTEw7DQogICAgQk9PTEVBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJc1plcm8gID0gVFJVRTsNCi0gIEJPT0xFQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMSA9IFRSVUU7DQotICBCT09MRUFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIElzWmVybzIgPSBUUlVFOw0KLSAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJc1plcm8zID0gVFJVRTsNCisgIEJPT0xFQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMTsNCisgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMjsNCisgIEJPT0xFQU4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSXNaZXJvMzsNCiAgICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQogICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleDE7DQpAQCAtNzUsMzAgKzExOCw2IEBAIEJCVGVzdEVyYXNlQmxvY2tzRnVuY3Rp b25UZXN0ICgNCiAgICBFRklfRVJBU0VfQkxPQ0tfVE9LRU4gICAgICAgICAgICAgICAgIFRva2Vu Ow0KICAgIEVGSV9CTE9DS19JTzJfVE9LRU4gICAgICAgICAgICAgICAgICAgQmxvY2tJbzJUb2tl bjsNCiAgLSAgRXJhc2VCbG9jayA9IChFRklfRVJBU0VfQkxPQ0tfUFJPVE9DT0wqKUNsaWVudElu dGVyZmFjZTsNCi0NCi0gIC8vDQotICAvLyBHZXQgdGhlIFN0YW5kYXJkIExpYnJhcnkgSW50ZXJm YWNlDQotICAvLw0KLSAgU3RhdHVzID0gZ3RCUy0+SGFuZGxlUHJvdG9jb2wgKA0KLSAgICAgICAg ICAgICAgICAgICBTdXBwb3J0SGFuZGxlLA0KLSAgICAgICAgICAgICAgICAgICAmZ0VmaVN0YW5k YXJkVGVzdExpYnJhcnlHdWlkLA0KLSAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlN0YW5k YXJkTGliDQotICAgICAgICAgICAgICAgICAgICk7DQotDQotICBpZiAoIEVGSV9FUlJPUihTdGF0 dXMpICkgew0KLSAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0aW9uICgNCi0gICAgICAgICAg ICAgICAgICAgU3RhbmRhcmRMaWIsDQotICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VS VElPTl9GQUlMRUQsDQotICAgICAgICAgICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlk LA0KLSAgICAgICAgICAgICAgICAgICBMIkJTLkhhbmRsZVByb3RvY29sIC0gSGFuZGxlIHN0YW5k YXJkIHRlc3QgbGlicmFyeSIsDQotICAgICAgICAgICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0g JXJcbiIsDQotICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KLSAgICAgICAgICAgICAgICAg ICAoVUlOVE4pX19MSU5FX18sDQotICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KLSAgICAgICAg ICAgICAgICAgICApOw0KLSAgICByZXR1cm4gU3RhdHVzOw0KLSAgfQ0KICAgICAgRXJhc2VMZW5n dGhHcmFudWxhcml0eSA9IEVyYXNlQmxvY2stPkVyYXNlTGVuZ3RoR3JhbnVsYXJpdHk7DQogIEBA IC0yMjMsOSArMjQyLDEzIEBAIEJCVGVzdEVyYXNlQmxvY2tzRnVuY3Rpb25UZXN0ICgNCiAgICAg ICAgICAvLyBSZWFkIHRoZSBkYXRhIHdpdGggMCwgdGhlIGZpcnN0L2xhc3QgYmxvY2sgc2hvdWxk IG5vdCBiZSBlcmFzZWQNCiAgICAgICAgICBSZWFkU3RhdHVzID0gQmxvY2tJby0+UmVhZEJsb2Nr cyAoQmxvY2tJbywgTWVkaWFJZCwgTGJhLCBCdWZmZXJTaXplLCAoVk9JRCopQnVmZmVyMik7DQog ICAgICAgICAgaWYgKFJlYWRTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgICAgICAgSXNa ZXJvMSA9IEZBTFNFOw0KKyAgICAgICAgICBJc1plcm8yID0gVFJVRTsNCisgICAgICAgICAgSXNa ZXJvMyA9IEZBTFNFOw0KKw0KICAgICAgICAgICAgZm9yIChJbmRleDEgPSAwOyBJbmRleDEgPCBC bG9ja1NpemU7IEluZGV4MSsrKSB7DQotICAgICAgICAgICAgaWYgKEJ1ZmZlcjJbSW5kZXgxXSAh PSAwKSB7DQotICAgICAgICAgICAgICBJc1plcm8xID0gRkFMU0U7DQorICAgICAgICAgICAgaWYg KEJ1ZmZlcjJbSW5kZXgxXSAhPSAxKSB7DQorICAgICAgICAgICAgICBJc1plcm8xID0gVFJVRTsN CiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0K QEAgLTIzOCw4ICsyNjEsOCBAQCBCQlRlc3RFcmFzZUJsb2Nrc0Z1bmN0aW9uVGVzdCAoDQogICAg ICAgICAgICB9DQogICAgICAgICAgICAgIGZvciAoSW5kZXgxID0gQnVmZmVyU2l6ZSAtIEJsb2Nr U2l6ZTsgSW5kZXgxIDwgQnVmZmVyU2l6ZTsgSW5kZXgxKyspIHsNCi0gICAgICAgICAgICBpZiAo QnVmZmVyMltJbmRleDFdICE9IDApIHsNCi0gICAgICAgICAgICAgIElzWmVybzMgPSBGQUxTRTsN CisgICAgICAgICAgICBpZiAoQnVmZmVyMltJbmRleDFdICE9IDEpIHsNCisgICAgICAgICAgICAg IElzWmVybzMgPSBUUlVFOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICB9 DQogICAgICAgICAgICB9DQpAQCAtMjU0LDcgKzI3Nyw3IEBAIEJCVGVzdEVyYXNlQmxvY2tzRnVu Y3Rpb25UZXN0ICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdFcmFzZUJsb2NrQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzLA0KLSAg ICAgICAgICAgICAgICAgICAgICAgICBMIkVyYXNlQmxvY2tzIC0gRXJhc2VCbG9ja3MgZm9yIHRl c3RpbmcsIHRoZSBmaXJzdC9sYXN0IGJsb2NrIHNob3VsZCBub3QgYmUgZXJhc2VkIiwNCisgICAg ICAgICAgICAgICAgICAgICAgICAgTCJFcmFzZUJsb2NrcyAtIEVyYXNlQmxvY2tzIGZvciB0ZXN0 aW5nIHdpdGggQmxvY2tJbywgdGhlIGZpcnN0L2xhc3QgYmxvY2sgc2hvdWxkIG5vdCBiZSBlcmFz ZWQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgTCIlYTolZDpFcmFzZUJsb2NrcyBTdGF0 dXMgLSAlciwgSXNaZXJvMSAtICVkLCBJc1plcm8yIC0gJWQsIElzWmVybzMgLSAlZCIsDQogICAg ICAgICAgICAgICAgICAgICAgICAgICBfX0ZJTEVfXywNCiAgICAgICAgICAgICAgICAgICAgICAg ICAgIChVSU5UTilfX0xJTkVfXywNCkBAIC0yOTMsNyArMzE2LDcgQEAgQkJUZXN0RXJhc2VCbG9j a3NGdW5jdGlvblRlc3QgKA0KICAgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0K ICAgICAgICAgICAgICAgICAgICAgICAgIEFzc2VydGlvblR5cGUsDQogICAgICAgICAgICAgICAg ICAgICAgICAgZ0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDEsDQotICAg ICAgICAgICAgICAgICAgICAgICBMIkVyYXNlQmxvY2tzIC0gRXJhc2VCbG9ja3MgZm9yIHRlc3Rp bmciLA0KKyAgICAgICAgICAgICAgICAgICAgICAgTCJFcmFzZUJsb2NrcyAtIEVyYXNlQmxvY2tz IGZvciB0ZXN0aW5nIHdpdGggQmxvY2tJbyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgTCIl YTolZDpFcmFzZUJsb2NrcyBTdGF0dXMgLSAlciwgSXNaZXJvIC0gJWQiLA0KICAgICAgICAgICAg ICAgICAgICAgICAgIF9fRklMRV9fLA0KICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UTilf X0xJTkVfXywNCkBAIC0zMzMsOSArMzU2LDYgQEAgQkJUZXN0RXJhc2VCbG9ja3NGdW5jdGlvblRl c3QgKA0KICBCbG9ja0lvMjoNCiAgICAgIElzWmVybyAgPSBUUlVFOw0KLSAgSXNaZXJvMSA9IFRS VUU7DQotICBJc1plcm8yID0gVFJVRTsNCi0gIElzWmVybzMgPSBUUlVFOw0KICAgICAgU3RhdHVz ID0gTG9jYXRlQmxvY2tJbzJGcm9tRXJhc2VCbG9jayhFcmFzZUJsb2NrLCAmQmxvY2tJbzIsIFN0 YW5kYXJkTGliKTsNCiAgICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQpAQCAtNDkyLDkg KzUxMiwxMyBAQCBCbG9ja0lvMjoNCiAgICAgICAgICAvLyBSZWFkIHRoZSBkYXRhIHdpdGggMCwg dGhlIGZpcnN0L2xhc3QgYmxvY2sgc2hvdWxkIG5vdCBiZSBlcmFzZWQNCiAgICAgICAgICBSZWFk U3RhdHVzID0gQmxvY2tJbzItPlJlYWRCbG9ja3NFeCAoQmxvY2tJbzIsIE1lZGlhSWQsIExiYSwg JkJsb2NrSW8yVG9rZW4sIEJ1ZmZlclNpemUsIChWT0lEKilCdWZmZXIyKTsNCiAgICAgICAgICBp ZiAoUmVhZFN0YXR1cyA9PSBFRklfU1VDQ0VTUykgew0KKyAgICAgICAgICBJc1plcm8xID0gRkFM U0U7DQorICAgICAgICAgIElzWmVybzIgPSBUUlVFOw0KKyAgICAgICAgICBJc1plcm8zID0gRkFM U0U7DQorDQogICAgICAgICAgICBmb3IgKEluZGV4MSA9IDA7IEluZGV4MSA8IEJsb2NrU2l6ZTsg SW5kZXgxKyspIHsNCi0gICAgICAgICAgICBpZiAoQnVmZmVyMltJbmRleDFdICE9IDApIHsNCi0g ICAgICAgICAgICAgIElzWmVybzEgPSBGQUxTRTsNCisgICAgICAgICAgICBpZiAoQnVmZmVyMltJ bmRleDFdICE9IDEpIHsNCisgICAgICAgICAgICAgIElzWmVybzEgPSBUUlVFOw0KICAgICAgICAg ICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQpAQCAtNTA3LDEz ICs1MzEsMTMgQEAgQmxvY2tJbzI6DQogICAgICAgICAgICB9DQogICAgICAgICAgICAgIGZvciAo SW5kZXgxID0gQnVmZmVyU2l6ZSAtIEJsb2NrU2l6ZTsgSW5kZXgxIDwgQnVmZmVyU2l6ZTsgSW5k ZXgxKyspIHsNCi0gICAgICAgICAgICBpZiAoQnVmZmVyMltJbmRleDFdICE9IDApIHsNCi0gICAg ICAgICAgICAgIElzWmVybzMgPSBGQUxTRTsNCisgICAgICAgICAgICBpZiAoQnVmZmVyMltJbmRl eDFdICE9IDEpIHsNCisgICAgICAgICAgICAgIElzWmVybzMgPSBUUlVFOw0KICAgICAgICAgICAg ICAgIGJyZWFrOw0KICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogIC0gICAgICAgICAg aWYgKChFcmFzZVN0YXR1cyA9PSBFRklfU1VDQ0VTUykgJiYgKElzWmVybzEgPT0gRkFMU0UpICYm IChJc1plcm8yID09IFRSVUUpICYmICgoSXNaZXJvMyA9PSBGQUxTRSkpKQ0KKyAgICAgICAgICBp ZiAoKEVyYXNlU3RhdHVzID09IEVGSV9TVUNDRVNTKSAmJiAoSXNaZXJvMSA9PSBGQUxTRSkgJiYg KElzWmVybzIgPT0gVFJVRSkgJiYgKElzWmVybzMgPT0gRkFMU0UpICYmIChFbnRlckV2ZW50ID09 IDEpKQ0KRGVmaW5lIE1hY3JvIGZvciAxLg0KDQogICAgICAgICAgICAgICAgIEFzc2VydGlvblR5 cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KICAgICAgICAgICAgZWxzZQ0KICAgICAg ICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCkBAIC01 MjMsMTIgKzU0NywxMiBAQCBCbG9ja0lvMjoNCiAgICAgICAgICAgICAgICAgICAgICAgICBTdGFu ZGFyZExpYiwNCiAgICAgICAgICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KICAgICAg ICAgICAgICAgICAgICAgICAgIGdFcmFzZUJsb2NrQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlk MDA0LA0KLSAgICAgICAgICAgICAgICAgICAgICAgTCJFcmFzZUJsb2NrcyAtIEVyYXNlQmxvY2tz IGZvciB0ZXN0aW5nLCB0aGUgZmlyc3QvbGFzdCBibG9jayBzaG91bGQgbm90IGJlIGVyYXNlZCIs DQotICAgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkOkVyYXNlQmxvY2tzIFN0YXR1cyAtICVy LCBJc1plcm8xIC0gJWQsIElzWmVybzIgLSAlZCwgSXNaZXJvMyAtICVkIiwNCisgICAgICAgICAg ICAgICAgICAgICAgIEwiRXJhc2VCbG9ja3MgLSBFcmFzZUJsb2NrcyBmb3IgdGVzdGluZyB3aXRo IEJsb2NrSW8yLCB0aGUgZmlyc3QvbGFzdCBibG9jayBzaG91bGQgbm90IGJlIGVyYXNlZCIsDQor ICAgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkOkVyYXNlQmxvY2tzIFN0YXR1cyAtICVyLCBJ c1plcm8xIC0gJWQsIElzWmVybzIgLSAlZCwgSXNaZXJvMyAtICVkLCBFbnRlckV2ZW50IC0gJWQi LA0KICAgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KICAgICAgICAgICAgICAgICAg ICAgICAgIChVSU5UTilfX0xJTkVfXywNCiAgICAgICAgICAgICAgICAgICAgICAgICBFcmFzZVN0 YXR1cywNCi0gICAgICAgICAgICAgICAgICAgICAgIElzWmVybzEsIElzWmVybzIsIElzWmVybzMN CisgICAgICAgICAgICAgICAgICAgICAgIElzWmVybzEsIElzWmVybzIsIElzWmVybzMsIEVudGVy RXZlbnQNCiAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgfQ0KQEAgLTU4 OSw4ICs2MTMsOCBAQCBCbG9ja0lvMjoNCiAgICAgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNz ZXJ0aW9uICgNCiAgICAgICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCiAgICAgICAg ICAgICAgICAgICAgICAgICBBc3NlcnRpb25UeXBlLA0KLSAgICAgICAgICAgICAgICAgICAgICAg Z0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDQsDQotICAgICAgICAgICAg ICAgICAgICAgICBMIkVyYXNlQmxvY2tzIC0gRXJhc2VCbG9ja3MgZm9yIHRlc3RpbmciLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgZ0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1 aWQwMDIsDQorICAgICAgICAgICAgICAgICAgICAgICBMIkVyYXNlQmxvY2tzIC0gRXJhc2VCbG9j a3MgZm9yIHRlc3Rpbmcgd2l0aCBCbG9ja0lvMiIsDQogICAgICAgICAgICAgICAgICAgICAgICAg TCIlYTolZDpFcmFzZUJsb2NrcyBTdGF0dXMgLSAlciwgSXNaZXJvIC0gJWQsIEVudGVyRXZlbnQg LSAlZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQogICAgICAgICAgICAg ICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KQEAgLTYzNSwzICs2NTksNDg1IEBAIEVuZDoN CiAgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KICB9DQogICtFRklfU1RBVFVTDQorQkJUZXN0RXJh c2VCbG9ja3NGdW5jdGlvblRlc3RDaGVja1BvaW50MiAoDQorICBJTiBFRklfU1RBTkRBUkRfVEVT VF9MSUJSQVJZX1BST1RPQ09MICAgICpTdGFuZGFyZExpYiwNCisgIElOIEVGSV9FUkFTRV9CTE9D S19QUk9UT0NPTCAgICAgICAgICAgICAgKkVyYXNlQmxvY2sNCisgICkNCit7DQorICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCisgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRXJhc2VTdGF0dXM7DQorICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFJlYWRTdGF0dXM7DQorICBFRklfU1RBVFVTICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFdyaXRlU3RhdHVzOw0KKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGbHVzaFN0YXR1czsNCisgIEVGSV9CTE9DS19JT19QUk9UT0NPTCAg ICAgICAgICAgICAgICAgKkJsb2NrSW87DQorICBFRklfQkxPQ0tfSU8yX1BST1RPQ09MICAgICAg ICAgICAgICAgICpCbG9ja0lvMjsNCisgIEVGSV9URVNUX0FTU0VSVElPTiAgICAgICAgICAgICAg ICAgICAgQXNzZXJ0aW9uVHlwZTsNCisgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRXJhc2VMZW5ndGhHcmFudWxhcml0eTsNCisNCisgIEVGSV9CTE9DS19JT19NRURJQSAg ICAgICAgICAgICAgICAgICAgKk1lZGlhOw0KKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBNZWRpYUlkOw0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZW1vdmFibGVNZWRpYTsNCisgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTWVkaWFQcmVzZW50Ow0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMb2dpY2FsUGFydGl0aW9uOw0KKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSZWFkT25seTsNCisgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgV3JpdGVDYWNoaW5nOw0KKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBCbG9ja1NpemU7DQorICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElv QWxpZ247DQorICBFRklfTEJBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhc3RCbG9j azsNCisgIEVGSV9MQkEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGJhOw0KKw0KKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXJTaXplOw0KKyAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVyMSA9IE5VTEw7DQorICBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpCdWZmZXIyID0gTlVMTDsNCisg IEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMTsNCisgIEJPT0xF QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMjsNCisgIEJPT0xFQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSXNaZXJvMzsNCisNCisgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQorDQorICBFRklfRVJBU0VfQkxPQ0tfVE9L RU4gICAgICAgICAgICAgICAgIFRva2VuOw0KKyAgRUZJX0JMT0NLX0lPMl9UT0tFTiAgICAgICAg ICAgICAgICAgICBCbG9ja0lvMlRva2VuOw0KKw0KKw0KKyAgRXJhc2VMZW5ndGhHcmFudWxhcml0 eSA9IEVyYXNlQmxvY2stPkVyYXNlTGVuZ3RoR3JhbnVsYXJpdHk7DQorDQorICBTdGF0dXMgPSBM b2NhdGVCbG9ja0lvRnJvbUVyYXNlQmxvY2soRXJhc2VCbG9jaywgJkJsb2NrSW8sIFN0YW5kYXJk TGliKTsNCisgIGlmIChTdGF0dXMgPT0gRUZJX1NVQ0NFU1MpIHsNCisgICAgTWVkaWEgPSBCbG9j a0lvLT5NZWRpYTsNCisNCisgICAgTWVkaWFJZCAgICAgICAgICAgPSBNZWRpYS0+TWVkaWFJZDsN CisgICAgUmVtb3ZhYmxlTWVkaWEgICAgPSBNZWRpYS0+UmVtb3ZhYmxlTWVkaWE7DQorICAgIE1l ZGlhUHJlc2VudCAgICAgID0gTWVkaWEtPk1lZGlhUHJlc2VudDsNCisgICAgTG9naWNhbFBhcnRp dGlvbiAgPSBNZWRpYS0+TG9naWNhbFBhcnRpdGlvbjsNCisgICAgUmVhZE9ubHkgICAgICAgICAg PSBNZWRpYS0+UmVhZE9ubHk7DQorICAgIFdyaXRlQ2FjaGluZyAgICAgID0gTWVkaWEtPldyaXRl Q2FjaGluZzsNCisgICAgQmxvY2tTaXplICAgICAgICAgPSBNZWRpYS0+QmxvY2tTaXplOw0KKyAg ICBJb0FsaWduICAgICAgICAgICA9IE1lZGlhLT5Jb0FsaWduOw0KKyAgICBMYXN0QmxvY2sgICAg ICAgICA9IE1lZGlhLT5MYXN0QmxvY2s7DQorDQorICAgIEJ1ZmZlclNpemUgICAgICAgID0gKFVJ TlROKVNjdE11bHRVNjR4MzIgKDQgKiBFcmFzZUxlbmd0aEdyYW51bGFyaXR5LCBCbG9ja1NpemUp Ow0KNCwgNSA9IG1hZ2ljIG51bWJlcnMuDQoNCisNCisgICAgaWYgKCA1ICogRXJhc2VMZW5ndGhH cmFudWxhcml0eSA+IExhc3RCbG9jayApIHsNCisgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkTWVz c2FnZSAoDQorICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAg ICAgICAgICAgRUZJX1ZFUkJPU0VfTEVWRUxfREVGQVVMVCwNCisgICAgICAgICAgICAgICAgICAg ICBMIlxyXG5UaGUgc3BhY2Ugb24gdGhlIGRldmljZSBpcyBsaW1pdGVkLCBhbmQgdGhlIExhc3RC bG9jayBpczogMHglbHgiLA0KKyAgICAgICAgICAgICAgICAgICAgIExhc3RCbG9jaw0KKyAgICAg ICAgICAgICAgICAgICAgICk7DQorDQorICAgICAgZ290byBCbG9ja0lvMjsNCisgICAgfQ0KKw0K KyAgICAvLw0KKyAgICAvLyBhbGxvY2F0ZSBhbGlnbmVkIGJ1ZmZlcg0KKyAgICAvLw0KKyAgICBC dWZmZXIxID0gQWxsb2NhdGVBbGlnbmVkUG9vbCgNCisgICAgICAgICAgICAgICAgRWZpQm9vdFNl cnZpY2VzRGF0YSwNCisgICAgICAgICAgICAgICAgQnVmZmVyU2l6ZSwNCisgICAgICAgICAgICAg ICAgSW9BbGlnbg0KKyAgICAgICAgICAgICAgICApOw0KKyAgICBpZiAoQnVmZmVyMSA9PSBOVUxM KSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQorICAgICAgICAgICAg ICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgRUZJX1RFU1RfQVNT RVJUSU9OX0ZBSUxFRCwNCisgICAgICAgICAgICAgICAgICAgICBnVGVzdEdlbmVyaWNGYWlsdXJl R3VpZCwNCisgICAgICAgICAgICAgICAgICAgICBMIkFsbG9jYXRlQWxpZ25lZFBvb2wgLSBBbGxv Y2F0ZSBhbGlnbmVkIGJ1ZmZlciBmb3IgdGVzdGluZyIsDQorICAgICAgICAgICAgICAgICAgICAg TCIlYTolZDpTdGF0dXMgLSAlciIsDQorICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQor ICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICAgICAgICAg ICAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTDQorICAgICAgICAgICAgICAgICAgICAgKTsNCisgICAg ICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgIH0NCisNCisgICAgQnVmZmVyMiA9 IEFsbG9jYXRlQWxpZ25lZFBvb2woDQorICAgICAgICAgICAgICAgIEVmaUJvb3RTZXJ2aWNlc0Rh dGEsDQorICAgICAgICAgICAgICAgIEJ1ZmZlclNpemUsDQorICAgICAgICAgICAgICAgIElvQWxp Z24NCisgICAgICAgICAgICAgICAgKTsNCisgICAgaWYgKEJ1ZmZlcjIgPT0gTlVMTCkgew0KKyAg ICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAgICAgICAgICAgICAgICAg IFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9URVNUX0FTU0VSVElPTl9G QUlMRUQsDQorICAgICAgICAgICAgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQor ICAgICAgICAgICAgICAgICAgICAgTCJBbGxvY2F0ZUFsaWduZWRQb29sIC0gQWxsb2NhdGUgYWxp Z25lZCBidWZmZXIgZm9yIHRlc3RpbmciLA0KKyAgICAgICAgICAgICAgICAgICAgIEwiJWE6JWQ6 U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KKyAgICAgICAg ICAgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCisgICAgICAgICAgICAgICAgICAgICBFRklf T1VUX09GX1JFU09VUkNFUw0KKyAgICAgICAgICAgICAgICAgICAgICk7DQorICAgICAgRnJlZUFs aWduZWRQb29sKEJ1ZmZlcjEpOw0KKyAgICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsN CisgICAgfQ0KKw0KKyAgICBpZiAoKE1lZGlhUHJlc2VudCA9PSBUUlVFKSAmJiAoUmVhZE9ubHkg PT0gRkFMU0UpKSB7DQorDQorICAgICAgTGJhID0gRXJhc2VMZW5ndGhHcmFudWxhcml0eTsNCisN CisgICAgICAvLw0KKyAgICAgIC8vIFJlYWQgdGhlIGRhdGEgYXQgZmlyc3Qgd2l0aCBSZWFkQmxv Y2tzDQorICAgICAgLy8NCisgICAgICBTdGF0dXMgPSBCbG9ja0lvLT5SZWFkQmxvY2tzIChCbG9j a0lvLCBNZWRpYUlkLCBMYmEsIEJ1ZmZlclNpemUsIChWT0lEKilCdWZmZXIxKTsNCisgICAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNz ZXJ0aW9uICgNCisgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAgICAgICAg ICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgTCJSZWFkQmxvY2tzIC0gUmVhZEJsb2NrcyBmb3IgdGVzdGluZyBmYWlsIiwNCisgICAgICAg ICAgICAgICAgICAgICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgX19GSUxFX18sDQorICAgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18s DQorICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMNCisgICAgICAgICAgICAgICAgICAgICAg ICk7DQorDQorICAgICAgICBGcmVlQWxpZ25lZFBvb2woQnVmZmVyMSk7DQorICAgICAgICBGcmVl QWxpZ25lZFBvb2woQnVmZmVyMik7DQorICAgICAgICBnb3RvIEJsb2NrSW8yOw0KKyAgICAgIH0N CisNCisgICAgICAvLw0KKyAgICAgIC8vIFdyaXRlIDENCisgICAgICAvLw0KKyAgICAgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IEJ1ZmZlclNpemU7IEluZGV4KyspIHsNCisgICAgICAgICAgIEJ1 ZmZlcjJbSW5kZXhdID0gMTsNCisgICAgICB9DQorDQorICAgICAgU3RhdHVzID0gQmxvY2tJby0+ V3JpdGVCbG9ja3MgKEJsb2NrSW8sIE1lZGlhSWQsIExiYSwgQnVmZmVyU2l6ZSwgKFZPSUQqKUJ1 ZmZlcjIpOw0KKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAgIFN0YW5k YXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRh cmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVE LA0KKyAgICAgICAgICAgICAgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAg ICAgICAgICAgICAgICAgICAgICBMIldyaXRlQmxvY2tzIC0gV3JpdGVCbG9ja3MgZm9yIHRlc3Rp bmcgZmFpbCIsDQorICAgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkOlN0YXR1cyAtICVyIiwN CisgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KKyAgICAgICAgICAgICAgICAgICAg ICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzDQorICAg ICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICAgICAgRnJlZUFsaWduZWRQb29sKEJ1ZmZl cjEpOw0KKyAgICAgICAgRnJlZUFsaWduZWRQb29sKEJ1ZmZlcjIpOw0KKyAgICAgICAgZ290byBC bG9ja0lvMjsNCisgICAgICB9DQorDQorICAgICAgLy8gRXJhc2UgQmxvY2tzIHdpdGggbm9uLUVy YXNlTGVuZ3RoR3JhbnVsYXJpdHkgYmxvY2tzDQorICAgICAgVG9rZW4uRXZlbnQgPSBOVUxMOw0K KyAgICAgIFRva2VuLlRyYW5zYWN0aW9uU3RhdHVzID0gRUZJX05PVF9SRUFEWTsNCisNCisgICAg ICBFcmFzZVN0YXR1cyA9IEVyYXNlQmxvY2stPkVyYXNlQmxvY2tzIChFcmFzZUJsb2NrLCBNZWRp YUlkLCAyICogRXJhc2VMZW5ndGhHcmFudWxhcml0eSwgJlRva2VuLCAyICogRXJhc2VMZW5ndGhH cmFudWxhcml0eSAqIEJsb2NrU2l6ZSk7DQpXaHkgYnkgYSBmYWN0b3Igb2YgMj8NCg0KKw0KKyAg ICAgIC8vIFJlYWQgdGhlIGRhdGEgd2l0aCAwLCB0aGUgZmlyc3QvbGFzdCBFcmFzZUxlbmd0aEdy YW51bGFyaXR5IHNob3VsZCBub3QgYmUgZXJhc2VkDQorICAgICAgUmVhZFN0YXR1cyA9IEJsb2Nr SW8tPlJlYWRCbG9ja3MgKEJsb2NrSW8sIE1lZGlhSWQsIExiYSwgQnVmZmVyU2l6ZSwgKFZPSUQq KUJ1ZmZlcjIpOw0KKyAgICAgIGlmIChSZWFkU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAg ICAgICBJc1plcm8xID0gRkFMU0U7DQorICAgICAgICBJc1plcm8yID0gVFJVRTsNCisgICAgICAg IElzWmVybzMgPSBGQUxTRTsNCisNCisgICAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVy YXNlTGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4KyspIHsNCisgICAgICAgICAg aWYgKEJ1ZmZlcjJbSW5kZXhdICE9IDEpIHsNCisgICAgICAgICAgICBJc1plcm8xID0gVFJVRTsN CisgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAg ICAgZm9yIChJbmRleCA9IEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4 IDwgMyAqIEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4KyspIHsNCisg ICAgICAgICAgaWYgKEJ1ZmZlcjJbSW5kZXhdICE9IDApIHsNCisgICAgICAgICAgICBJc1plcm8y ID0gRkFMU0U7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgIH0NCisgICAgICAgIH0N CjMgLSBNYWdpYyBOdW1iZXINCg0KKw0KKyAgICAgICAgZm9yIChJbmRleCA9IDMgKiBFcmFzZUxl bmd0aEdyYW51bGFyaXR5ICogQmxvY2tTaXplOyBJbmRleCA8IDQgKiBFcmFzZUxlbmd0aEdyYW51 bGFyaXR5ICogQmxvY2tTaXplOyBJbmRleCsrKSB7DQorICAgICAgICAgIGlmIChCdWZmZXIyW0lu ZGV4XSAhPSAxKSB7DQorICAgICAgICAgICAgSXNaZXJvMyA9IFRSVUU7DQorICAgICAgICAgICAg YnJlYWs7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCjQgLSBNYWdpYyBOdW1iZXINClBlcmhh cHMgMiAiZm9yIiBsb29wcyB3aWxsIGJlIHVzZWZ1bCBoZXJlLg0KDQorDQorICAgICAgICBpZiAo KEVyYXNlU3RhdHVzID09IEVGSV9TVUNDRVNTKSAmJiAoSXNaZXJvMSA9PSBGQUxTRSkgJiYgKElz WmVybzIgPT0gVFJVRSkgJiYgKChJc1plcm8zID09IEZBTFNFKSkpDQorICAgICAgICAgIEFzc2Vy dGlvblR5cGUgPSBFRklfVEVTVF9BU1NFUlRJT05fUEFTU0VEOw0KKyAgICAgICAgZWxzZQ0KKyAg ICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRDsNCisNCisg ICAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9u VHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgZ0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlv bkFzc2VydGlvbkd1aWQwMDUsDQorICAgICAgICAgICAgICAgICAgICAgICAgIEwiRXJhc2VCbG9j a3MgLSBFcmFzZUJsb2NrcyBmb3IgdGVzdGluZyB3aXRoIEJsb2NrSW8sIHRoZSBmaXJzdC9sYXN0 IEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgc2hvdWxkIG5vdCBiZSBlcmFzZWQiLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICBMIiVhOiVkOkVyYXNlQmxvY2tzIFN0YXR1cyAtICVyLCBJc1plcm8x IC0gJWQsIElzWmVybzIgLSAlZCwgSXNaZXJvMyAtICVkIiwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgX19GSUxFX18sDQorICAgICAgICAgICAgICAgICAgICAgICAgIChVSU5UTilfX0xJTkVf XywNCisgICAgICAgICAgICAgICAgICAgICAgICAgRXJhc2VTdGF0dXMsDQorICAgICAgICAgICAg ICAgICAgICAgICAgIElzWmVybzEsIElzWmVybzIsIElzWmVybzMNCisgICAgICAgICAgICAgICAg ICAgICAgICAgKTsNCisNCisgICAgICB9DQorDQorICAgICAgLy8NCisgICAgICAvLyBSZXN0b3Jl IHRoZSBkYXRhIHdpdGggV3JpdGVCbG9ja3MgYW5kIEZsdXNoQmxvY2tzDQorICAgICAgLy8NCisg ICAgICBXcml0ZVN0YXR1cyA9IEJsb2NrSW8tPldyaXRlQmxvY2tzIChCbG9ja0lvLCBNZWRpYUlk LCBMYmEsIEJ1ZmZlclNpemUsIChWT0lEKilCdWZmZXIxKTsNCisgICAgICBGbHVzaFN0YXR1cyA9 IEVGSV9TVUNDRVNTOw0KKyAgICAgIGlmIChXcml0ZUNhY2hpbmcgPT0gVFJVRSkNCisgICAgICAg IEZsdXNoU3RhdHVzID0gQmxvY2tJby0+Rmx1c2hCbG9ja3MoQmxvY2tJbyk7DQorDQorICAgICAg aWYgKChXcml0ZVN0YXR1cyAhPSBFRklfU1VDQ0VTUykgfHwgKEZsdXNoU3RhdHVzICE9IEVGSV9T VUNDRVNTKSkNCisgICAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAg ICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAgICBF RklfVEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAgICAgICAgICAgICAgICAgICAgICAgZ1Rlc3RH ZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICAgICAgICAgICAgICAgICBMIldyaXRlQmxvY2tz L0ZsdXNoQmxvY2tzIC0gUmVzdG9yZSBmb3IgdGVzdGluZyBmYWlsIiwNCisgICAgICAgICAgICAg ICAgICAgICAgIEwiJWE6JWQ6IFdyaXRlU3RhdHVzIC0gJXIsIEZsdXNoU3RhdHVzIC0gJXIiLA0K KyAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sDQorICAgICAgICAgICAgICAgICAgICAg ICAoVUlOVE4pX19MSU5FX18sDQorICAgICAgICAgICAgICAgICAgICAgICBXcml0ZVN0YXR1cywN CisgICAgICAgICAgICAgICAgICAgICAgIEZsdXNoU3RhdHVzDQorICAgICAgICAgICAgICAgICAg ICAgICApOw0KKw0KKyAgICAgIEZyZWVBbGlnbmVkUG9vbChCdWZmZXIxKTsNCisgICAgICBGcmVl QWxpZ25lZFBvb2woQnVmZmVyMik7DQorICAgIH0NCisgIH0NCisNCitCbG9ja0lvMjoNCisNCisg IFN0YXR1cyA9IExvY2F0ZUJsb2NrSW8yRnJvbUVyYXNlQmxvY2soRXJhc2VCbG9jaywgJkJsb2Nr SW8yLCBTdGFuZGFyZExpYik7DQorICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAg IE1lZGlhID0gQmxvY2tJbzItPk1lZGlhOw0KKw0KKyAgICBNZWRpYUlkICAgICAgICAgICA9IE1l ZGlhLT5NZWRpYUlkOw0KKyAgICBSZW1vdmFibGVNZWRpYSAgICA9IE1lZGlhLT5SZW1vdmFibGVN ZWRpYTsNCisgICAgTWVkaWFQcmVzZW50ICAgICAgPSBNZWRpYS0+TWVkaWFQcmVzZW50Ow0KKyAg ICBMb2dpY2FsUGFydGl0aW9uICA9IE1lZGlhLT5Mb2dpY2FsUGFydGl0aW9uOw0KKyAgICBSZWFk T25seSAgICAgICAgICA9IE1lZGlhLT5SZWFkT25seTsNCisgICAgV3JpdGVDYWNoaW5nICAgICAg PSBNZWRpYS0+V3JpdGVDYWNoaW5nOw0KKyAgICBCbG9ja1NpemUgICAgICAgICA9IE1lZGlhLT5C bG9ja1NpemU7DQorICAgIElvQWxpZ24gICAgICAgICAgID0gTWVkaWEtPklvQWxpZ247DQorICAg IExhc3RCbG9jayAgICAgICAgID0gTWVkaWEtPkxhc3RCbG9jazsNCisNCisgICAgQnVmZmVyU2l6 ZSAgICAgICAgPSAoVUlOVE4pU2N0TXVsdFU2NHgzMiAoNCAqIEVyYXNlTGVuZ3RoR3JhbnVsYXJp dHksIEJsb2NrU2l6ZSk7DQpXaHkgNA0KDQorDQorICAgIGlmICggNSAqIEVyYXNlTGVuZ3RoR3Jh bnVsYXJpdHkgPiBMYXN0QmxvY2sgKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZE1lc3Nh Z2UgKA0KKyAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAg ICAgICAgIEVGSV9WRVJCT1NFX0xFVkVMX0RFRkFVTFQsDQorICAgICAgICAgICAgICAgICAgICAg TCJcclxuVGhlIHNwYWNlIG9uIHRoZSBkZXZpY2UgaXMgbGltaXRlZCwgYW5kIHRoZSBMYXN0Qmxv Y2sgaXM6IDB4JWx4IiwNCisgICAgICAgICAgICAgICAgICAgICBMYXN0QmxvY2sNCisgICAgICAg ICAgICAgICAgICAgICApOw0KKw0KKyAgICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCisgICAgfQ0K V2h5IDUNCg0KKw0KKyAgICAvLw0KKyAgICAvLyBhbGxvY2F0ZSBhbGlnbmVkIGJ1ZmZlcg0KKyAg ICAvLw0KKyAgICBCdWZmZXIxID0gQWxsb2NhdGVBbGlnbmVkUG9vbCgNCisgICAgICAgICAgICAg ICAgRWZpQm9vdFNlcnZpY2VzRGF0YSwNCisgICAgICAgICAgICAgICAgQnVmZmVyU2l6ZSwNCisg ICAgICAgICAgICAgICAgSW9BbGlnbg0KKyAgICAgICAgICAgICAgICApOw0KKyAgICBpZiAoQnVm ZmVyMSA9PSBOVUxMKSB7DQorICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQor ICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAgICAgICAgICAgICAg RUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAgICAgICAgICAgICAgICBnVGVzdEdl bmVyaWNGYWlsdXJlR3VpZCwNCisgICAgICAgICAgICAgICAgICAgICBMIkFsbG9jYXRlQWxpZ25l ZFBvb2wgLSBBbGxvY2F0ZSBhbGlnbmVkIGJ1ZmZlciBmb3IgdGVzdGluZyIsDQorICAgICAgICAg ICAgICAgICAgICAgTCIlYTolZDpTdGF0dXMgLSAlciIsDQorICAgICAgICAgICAgICAgICAgICAg X19GSUxFX18sDQorICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAg ICAgICAgICAgICAgICAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTDQorICAgICAgICAgICAgICAgICAg ICAgKTsNCisgICAgICByZXR1cm4gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQorICAgIH0NCisNCisg ICAgQnVmZmVyMiA9IEFsbG9jYXRlQWxpZ25lZFBvb2woDQorICAgICAgICAgICAgICAgIEVmaUJv b3RTZXJ2aWNlc0RhdGEsDQorICAgICAgICAgICAgICAgIEJ1ZmZlclNpemUsDQorICAgICAgICAg ICAgICAgIElvQWxpZ24NCisgICAgICAgICAgICAgICAgKTsNCisgICAgaWYgKEJ1ZmZlcjIgPT0g TlVMTCkgew0KKyAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAgICAg ICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAgICAgICAgICAgIEVGSV9URVNU X0FTU0VSVElPTl9GQUlMRUQsDQorICAgICAgICAgICAgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFp bHVyZUd1aWQsDQorICAgICAgICAgICAgICAgICAgICAgTCJBbGxvY2F0ZUFsaWduZWRQb29sIC0g QWxsb2NhdGUgYWxpZ25lZCBidWZmZXIgZm9yIHRlc3RpbmciLA0KKyAgICAgICAgICAgICAgICAg ICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9f LA0KKyAgICAgICAgICAgICAgICAgICAgIChVSU5UTilfX0xJTkVfXywNCisgICAgICAgICAgICAg ICAgICAgICBFRklfT1VUX09GX1JFU09VUkNFUw0KKyAgICAgICAgICAgICAgICAgICAgICk7DQor ICAgICAgRnJlZUFsaWduZWRQb29sKEJ1ZmZlcjEpOw0KKyAgICAgIHJldHVybiBFRklfT1VUX09G X1JFU09VUkNFUzsNCisgICAgfQ0KKw0KKyAgICBpZiAoKE1lZGlhUHJlc2VudCA9PSBUUlVFKSAm JiAoUmVhZE9ubHkgPT0gRkFMU0UpKSB7DQorICAgICAgQmxvY2tJbzJUb2tlbi5FdmVudCA9IE5V TEw7DQorICAgICAgQmxvY2tJbzJUb2tlbi5UcmFuc2FjdGlvblN0YXR1cyA9IEVGSV9OT1RfUkVB RFk7DQorDQorICAgICAgTGJhID0gRXJhc2VMZW5ndGhHcmFudWxhcml0eTsNCisNCisgICAgICAv Lw0KKyAgICAgIC8vIFJlYWQgdGhlIGRhdGEgYXQgZmlyc3Qgd2l0aCBSZWFkQmxvY2tzDQorICAg ICAgLy8NCisgICAgICBTdGF0dXMgPSBCbG9ja0lvMi0+UmVhZEJsb2Nrc0V4IChCbG9ja0lvMiwg TWVkaWFJZCwgTGJhLCAmQmxvY2tJbzJUb2tlbiwgQnVmZmVyU2l6ZSwgKFZPSUQqKUJ1ZmZlcjEp Ow0KKyAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAgIFN0YW5kYXJkTGli LT5SZWNvcmRBc3NlcnRpb24gKA0KKyAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIs DQorICAgICAgICAgICAgICAgICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAg ICAgICAgICAgICAgICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICAg ICAgICAgICAgICAgICBMIlJlYWRCbG9ja3MgLSBSZWFkQmxvY2tzIGZvciB0ZXN0aW5nIGZhaWwi LA0KKyAgICAgICAgICAgICAgICAgICAgICAgTCIlYTolZDpTdGF0dXMgLSAlciIsDQorICAgICAg ICAgICAgICAgICAgICAgICBfX0ZJTEVfXywNCisgICAgICAgICAgICAgICAgICAgICAgIChVSU5U TilfX0xJTkVfXywNCisgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cw0KKyAgICAgICAgICAg ICAgICAgICAgICAgKTsNCisNCisgICAgICAgIEZyZWVBbGlnbmVkUG9vbChCdWZmZXIxKTsNCisg ICAgICAgIEZyZWVBbGlnbmVkUG9vbChCdWZmZXIyKTsNCisgICAgICAgIGdvdG8gRW5kOw0KKyAg ICAgIH0NCisNCisgICAgICAvLw0KKyAgICAgIC8vIFdyaXRlIDENCisgICAgICAvLw0KKw0KKyAg ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEJ1ZmZlclNpemU7IEluZGV4KyspIHsNCisgICAg ICAgIEJ1ZmZlcjJbSW5kZXhdID0gMTsNCisgICAgICB9DQorDQorICAgICAgU3RhdHVzID0gQmxv Y2tJbzItPldyaXRlQmxvY2tzRXggKEJsb2NrSW8yLCBNZWRpYUlkLCBMYmEsICZCbG9ja0lvMlRv a2VuLCBCdWZmZXJTaXplLCAoVk9JRCopQnVmZmVyMik7DQorICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICAgICAgU3RhbmRhcmRMaWItPlJlY29yZEFzc2VydGlvbiAoDQorICAg ICAgICAgICAgICAgICAgICAgICBTdGFuZGFyZExpYiwNCisgICAgICAgICAgICAgICAgICAgICAg IEVGSV9URVNUX0FTU0VSVElPTl9GQUlMRUQsDQorICAgICAgICAgICAgICAgICAgICAgICBnVGVz dEdlbmVyaWNGYWlsdXJlR3VpZCwNCisgICAgICAgICAgICAgICAgICAgICAgIEwiV3JpdGVCbG9j a3MgLSBXcml0ZUJsb2NrcyBmb3IgdGVzdGluZyBmYWlsIiwNCisgICAgICAgICAgICAgICAgICAg ICAgIEwiJWE6JWQ6U3RhdHVzIC0gJXIiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgX19GSUxF X18sDQorICAgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pX19MSU5FX18sDQorICAgICAgICAg ICAgICAgICAgICAgICBTdGF0dXMNCisgICAgICAgICAgICAgICAgICAgICAgICk7DQorDQorICAg ICAgICBGcmVlQWxpZ25lZFBvb2woQnVmZmVyMSk7DQorICAgICAgICBGcmVlQWxpZ25lZFBvb2wo QnVmZmVyMik7DQorICAgICAgICBnb3RvIEVuZDsNCisgICAgICB9DQorDQorICAgICAgLy8NCisg ICAgICAvLyBFcmFzZSBCbG9ja3Mgd2l0aCBub24gRXJhc2VMZW5ndGhHcmFudWxhcml0eSBibG9j a3MNCisgICAgICAvLw0KKyAgICAgIFRva2VuLkV2ZW50ICAgICAgICAgICAgID0gTlVMTDsNCisg ICAgICBUb2tlbi5UcmFuc2FjdGlvblN0YXR1cyA9IEVGSV9OT1RfUkVBRFk7DQorDQorICAgICAg RW50ZXJFdmVudCA9IDA7DQorDQorICAgICAgU3RhdHVzID0gZ3RCUy0+Q3JlYXRlRXZlbnQgKA0K KyAgICAgICAgICAgICAgICAgICBFVlRfTk9USUZZX1NJR05BTCwNCisgICAgICAgICAgICAgICAg ICAgVFBMX0NBTExCQUNLLA0KKyAgICAgICAgICAgICAgICAgICAoRUZJX0VWRU5UX05PVElGWSkg Tm90aWZ5RnVuY3Rpb24sDQorICAgICAgICAgICAgICAgICAgIE5VTEwsDQorICAgICAgICAgICAg ICAgICAgICZUb2tlbi5FdmVudA0KKyAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgICAgIFN0YW5kYXJkTGliLT5SZWNvcmRBc3Nl cnRpb24gKA0KKyAgICAgICAgICAgICAgICAgICAgICAgU3RhbmRhcmRMaWIsDQorICAgICAgICAg ICAgICAgICAgICAgICBFRklfVEVTVF9BU1NFUlRJT05fRkFJTEVELA0KKyAgICAgICAgICAgICAg ICAgICAgICAgZ1Rlc3RHZW5lcmljRmFpbHVyZUd1aWQsDQorICAgICAgICAgICAgICAgICAgICAg ICBMIkNyZWF0ZUV2ZW50IC0gQ3JlYXRlRXZlbnQgZm9yIHRlc3RpbmcgZmFpbCIsDQorICAgICAg ICAgICAgICAgICAgICAgICBMIiVhOiVkOlN0YXR1cyAtICVyIiwNCisgICAgICAgICAgICAgICAg ICAgICAgIF9fRklMRV9fLA0KKyAgICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9f LA0KKyAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzDQorICAgICAgICAgICAgICAgICAgICAg ICApOw0KKyAgICAgICAgRnJlZUFsaWduZWRQb29sKEJ1ZmZlcjEpOw0KKyAgICAgICAgRnJlZUFs aWduZWRQb29sKEJ1ZmZlcjIpOw0KKyAgICAgICAgZ290byBFbmQ7DQorICAgICAgfQ0KKw0KKyAg ICAgIEVyYXNlU3RhdHVzID0gRXJhc2VCbG9jay0+RXJhc2VCbG9ja3MgKEVyYXNlQmxvY2ssIE1l ZGlhSWQsIDIgKiBFcmFzZUxlbmd0aEdyYW51bGFyaXR5LCAmVG9rZW4sIDIgKiBFcmFzZUxlbmd0 aEdyYW51bGFyaXR5ICogQmxvY2tTaXplKTsNCisgICAgICB3aGlsZShUb2tlbi5UcmFuc2FjdGlv blN0YXR1cyA9PSBFRklfTk9UX1JFQURZKTsNCisNCisgICAgICAvLyBSZWFkIHRoZSBkYXRhIHdp dGggMCwgdGhlIGZpcnN0L2xhc3QgRXJhc2VMZW5ndGhHcmFudWxhcml0eSBzaG91bGQgbm90IGJl IGVyYXNlZA0KKyAgICAgIFJlYWRTdGF0dXMgPSBCbG9ja0lvMi0+UmVhZEJsb2Nrc0V4IChCbG9j a0lvMiwgTWVkaWFJZCwgTGJhLCAmQmxvY2tJbzJUb2tlbiwgQnVmZmVyU2l6ZSwgKFZPSUQqKUJ1 ZmZlcjIpOw0KKyAgICAgIGlmIChSZWFkU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgICAg ICBJc1plcm8xID0gRkFMU0U7DQorICAgICAgICBJc1plcm8yID0gVFJVRTsNCisgICAgICAgIElz WmVybzMgPSBGQUxTRTsNCisNCisgICAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVyYXNl TGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4KyspIHsNCisgICAgICAgICAgaWYg KEJ1ZmZlcjJbSW5kZXhdICE9IDEpIHsNCisgICAgICAgICAgICBJc1plcm8xID0gVFJVRTsNCisg ICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAg Zm9yIChJbmRleCA9IEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4IDwg MyAqIEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgKiBCbG9ja1NpemU7IEluZGV4KyspIHsNCisgICAg ICAgICAgaWYgKEJ1ZmZlcjJbSW5kZXhdICE9IDApIHsNCisgICAgICAgICAgICBJc1plcm8yID0g RkFMU0U7DQorICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisN CisgICAgICAgIGZvciAoSW5kZXggPSAzICogRXJhc2VMZW5ndGhHcmFudWxhcml0eSAqIEJsb2Nr U2l6ZTsgSW5kZXggPCA0ICogRXJhc2VMZW5ndGhHcmFudWxhcml0eSAqIEJsb2NrU2l6ZTsgSW5k ZXgrKykgew0KKyAgICAgICAgICBpZiAoQnVmZmVyMltJbmRleF0gIT0gMSkgew0KKyAgICAgICAg ICAgIElzWmVybzMgPSBUUlVFOw0KKyAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICB9DQor ICAgICAgICB9DQpNYWdpYyBudW1iZXJzIGluIGFib3ZlIGJsb2NrLg0KDQorDQorICAgICAgICBp ZiAoKEVyYXNlU3RhdHVzID09IEVGSV9TVUNDRVNTKSAmJiAoSXNaZXJvMSA9PSBGQUxTRSkgJiYg KElzWmVybzIgPT0gVFJVRSkgJiYgKElzWmVybzMgPT0gRkFMU0UpICYmIChFbnRlckV2ZW50ID09 IDEpKQ0KKyAgICAgICAgICAgICBBc3NlcnRpb25UeXBlID0gRUZJX1RFU1RfQVNTRVJUSU9OX1BB U1NFRDsNCisgICAgICAgIGVsc2UNCisgICAgICAgICAgQXNzZXJ0aW9uVHlwZSA9IEVGSV9URVNU X0FTU0VSVElPTl9GQUlMRUQ7DQorDQorICAgICAgICBTdGFuZGFyZExpYi0+UmVjb3JkQXNzZXJ0 aW9uICgNCisgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAgICAgICAgICAg ICAgICAgICAgICAgQXNzZXJ0aW9uVHlwZSwNCisgICAgICAgICAgICAgICAgICAgICAgIGdFcmFz ZUJsb2NrQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA2LA0KKyAgICAgICAgICAgICAgICAg ICAgICAgTCJFcmFzZUJsb2NrcyAtIEVyYXNlQmxvY2tzIGZvciB0ZXN0aW5nIHdpdGggQmxvY2tJ bzIsIHRoZSBmaXJzdC9sYXN0IEVyYXNlTGVuZ3RoR3JhbnVsYXJpdHkgc2hvdWxkIG5vdCBiZSBl cmFzZWQiLA0KKyAgICAgICAgICAgICAgICAgICAgICAgTCIlYTolZDpFcmFzZUJsb2NrcyBTdGF0 dXMgLSAlciwgSXNaZXJvMSAtICVkLCBJc1plcm8yIC0gJWQsIElzWmVybzMgLSAlZCwgRW50ZXJF dmVudCAtICVkIiwNCisgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0KKyAgICAgICAg ICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICAgICAgICAgICAgICAg RXJhc2VTdGF0dXMsDQorICAgICAgICAgICAgICAgICAgICAgICBJc1plcm8xLCBJc1plcm8yLCBJ c1plcm8zLCBFbnRlckV2ZW50DQorICAgICAgICAgICAgICAgICAgICAgICApOw0KKw0KKyAgICAg IH0NCisNCisNCisgICAgICAvLw0KKyAgICAgIC8vIFJlc3RvcmUgdGhlIGRhdGEgd2l0aCBXcml0 ZUJsb2NrcyBhbmQgRmx1c2hCbG9ja3MNCisgICAgICAvLw0KKyAgICAgIFdyaXRlU3RhdHVzID0g QmxvY2tJbzItPldyaXRlQmxvY2tzRXggKEJsb2NrSW8yLCBNZWRpYUlkLCBMYmEsICZCbG9ja0lv MlRva2VuLCBCdWZmZXJTaXplLCAoVk9JRCopQnVmZmVyMSk7DQorICAgICAgRmx1c2hTdGF0dXMg PSBFRklfU1VDQ0VTUzsNCisgICAgICBpZiAoV3JpdGVDYWNoaW5nID09IFRSVUUpDQorICAgICAg ICBGbHVzaFN0YXR1cyA9IEJsb2NrSW8yLT5GbHVzaEJsb2Nrc0V4IChCbG9ja0lvMiwgJkJsb2Nr SW8yVG9rZW4pOw0KKw0KKyAgICAgIGlmICgoV3JpdGVTdGF0dXMgIT0gRUZJX1NVQ0NFU1MpIHx8 IChGbHVzaFN0YXR1cyAhPSBFRklfU1VDQ0VTUykpDQorICAgICAgICBTdGFuZGFyZExpYi0+UmVj b3JkQXNzZXJ0aW9uICgNCisgICAgICAgICAgICAgICAgICAgICAgIFN0YW5kYXJkTGliLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgRUZJX1RFU1RfQVNTRVJUSU9OX0ZBSUxFRCwNCisgICAgICAg ICAgICAgICAgICAgICAgIGdUZXN0R2VuZXJpY0ZhaWx1cmVHdWlkLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgTCJXcml0ZUJsb2Nrcy9GbHVzaEJsb2NrcyAtIFJlc3RvcmUgZm9yIHRlc3Rpbmcg ZmFpbCIsDQorICAgICAgICAgICAgICAgICAgICAgICBMIiVhOiVkOiBXcml0ZVN0YXR1cyAtICVy LCBGbHVzaFN0YXR1cyAtICVyIiwNCisgICAgICAgICAgICAgICAgICAgICAgIF9fRklMRV9fLA0K KyAgICAgICAgICAgICAgICAgICAgICAgKFVJTlROKV9fTElORV9fLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgV3JpdGVTdGF0dXMsDQorICAgICAgICAgICAgICAgICAgICAgICBGbHVzaFN0YXR1 cw0KKyAgICAgICAgICAgICAgICAgICAgICAgKTsNCisNCisgICAgICBGcmVlQWxpZ25lZFBvb2wo QnVmZmVyMSk7DQorICAgICAgRnJlZUFsaWduZWRQb29sKEJ1ZmZlcjIpOw0KKyAgICB9DQorDQor RW5kOg0KKyAgICBpZiAoVG9rZW4uRXZlbnQgIT0gTlVMTCkNCisgICAgICBndEJTLT5DbG9zZUV2 ZW50KFRva2VuLkV2ZW50KTsNCisNCisgIH0NCisNCisgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQor fQ0KKw0KZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90 b2NvbC9FcmFzZUJsb2NrL0JsYWNrQm94VGVzdC9FcmFzZUJsb2NrQkJUZXN0TWFpbi5oIGIvdWVm aS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0VyYXNlQmxvY2svQmxhY2tC b3hUZXN0L0VyYXNlQmxvY2tCQlRlc3RNYWluLmgNCmluZGV4IDRiNTY5ZDMyLi4yODBjZjA3MCAx MDA2NDQNCi0tLSBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90b2NvbC9F cmFzZUJsb2NrL0JsYWNrQm94VGVzdC9FcmFzZUJsb2NrQkJUZXN0TWFpbi5oDQorKysgYi91ZWZp LXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0Jv eFRlc3QvRXJhc2VCbG9ja0JCVGVzdE1haW4uaA0KQEAgLTEsNyArMSw3IEBADQogIC8qKiBAZmls ZQ0KICAgICAgQ29weXJpZ2h0IDIwMTcgVW5pZmllZCBFRkksIEluYy48QlI+DQotICBDb3B5cmln aHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4N CisgIENvcHlyaWdodCAoYykgMjAxNyAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmln aHRzIHJlc2VydmVkLjxCUj4NCiAgICAgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWlu ZyBtYXRlcmlhbHMNCiAgICBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRo ZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEIExpY2Vuc2UNCkBAIC01OCwxNCArNTgs MTIgQEAgQWJzdHJhY3Q6DQogIC8vDQogIC8vDQogIEVGSV9TVEFUVVMNCi1FRklBUEkNCiAgSW5p dGlhbGl6ZUVyYXNlQmxvY2tCQlRlc3QgKA0KICAgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICAgICAgSW1hZ2VIYW5kbGUsDQogICAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgICAgICAgICAgICAq U3lzdGVtVGFibGUNCiAgICApOw0KICAgICAgRUZJX1NUQVRVUw0KLUVGSUFQSQ0KICBVbmxvYWRF cmFzZUJsb2NrQkJUZXN0ICgNCiAgICBJTiBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIElt YWdlSGFuZGxlDQogICAgKTsNCkBAIC05MCw2ICs4OCwxOCBAQCBCQlRlc3RFcmFzZUJsb2Nrc0Z1 bmN0aW9uVGVzdCAoDQogICAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgU3VwcG9ydEhh bmRsZQ0KICAgICk7DQogICtFRklfU1RBVFVTDQorQkJUZXN0RXJhc2VCbG9ja3NGdW5jdGlvblRl c3RDaGVja1BvaW50MSAoDQorICBJTiBFRklfU1RBTkRBUkRfVEVTVF9MSUJSQVJZX1BST1RPQ09M ICAgICpTdGFuZGFyZExpYiwNCisgIElOIEVGSV9FUkFTRV9CTE9DS19QUk9UT0NPTCAgICAgICAg ICAgICAgKkVyYXNlQmxvY2sNCisgICk7DQorDQorRUZJX1NUQVRVUw0KK0JCVGVzdEVyYXNlQmxv Y2tzRnVuY3Rpb25UZXN0Q2hlY2tQb2ludDIgKA0KKyAgSU4gRUZJX1NUQU5EQVJEX1RFU1RfTElC UkFSWV9QUk9UT0NPTCAgICAqU3RhbmRhcmRMaWIsDQorICBJTiBFRklfRVJBU0VfQkxPQ0tfUFJP VE9DT0wgICAgICAgICAgICAgICpFcmFzZUJsb2NrDQorICApOw0KKw0KICBFRklfU1RBVFVTDQog IExvY2F0ZUJsb2NrSW9Gcm9tRXJhc2VCbG9jayAoDQogICAgSU4gRUZJX0VSQVNFX0JMT0NLX1BS T1RPQ09MICAgICAgICAgICAgICAqRXJhc2VCbG9jaywNCmRpZmYgLS1naXQgYS91ZWZpLXNjdC9T Y3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3Qv R3VpZC5jIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0VyYXNl QmxvY2svQmxhY2tCb3hUZXN0L0d1aWQuYw0KaW5kZXggY2ZjMzA3MDcuLmViMjEwZTNiIDEwMDY0 NA0KLS0tIGEvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNlL1VFRkkvRUZJL1Byb3RvY29sL0VyYXNl QmxvY2svQmxhY2tCb3hUZXN0L0d1aWQuYw0KKysrIGIvdWVmaS1zY3QvU2N0UGtnL1Rlc3RDYXNl L1VFRkkvRUZJL1Byb3RvY29sL0VyYXNlQmxvY2svQmxhY2tCb3hUZXN0L0d1aWQuYw0KQEAgLTQw LDQgKzQwLDYgQEAgRUZJX0dVSUQgZ0VyYXNlQmxvY2tCQlRlc3RDb25mb3JtYW5jZUFzc2VydGlv bkd1aWQwMDkgPSBFRklfVEVTVF9FUkFTRUJMT0NLQkJURVMNCiAgRUZJX0dVSUQgZ0VyYXNlQmxv Y2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDEgPSBFRklfVEVTVF9FUkFTRUJMT0NLQkJU RVNURlVOQ1RJT05fQVNTRVJUSU9OXzAwMV9HVUlEOw0KICBFRklfR1VJRCBnRXJhc2VCbG9ja0JC VGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwMiA9IEVGSV9URVNUX0VSQVNFQkxPQ0tCQlRFU1RG VU5DVElPTl9BU1NFUlRJT05fMDAyX0dVSUQ7DQogIEVGSV9HVUlEIGdFcmFzZUJsb2NrQkJUZXN0 RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzID0gRUZJX1RFU1RfRVJBU0VCTE9DS0JCVEVTVEZVTkNU SU9OX0FTU0VSVElPTl8wMDNfR1VJRDsNCi1FRklfR1VJRCBnRXJhc2VCbG9ja0JCVGVzdEZ1bmN0 aW9uQXNzZXJ0aW9uR3VpZDAwNCA9IEVGSV9URVNUX0VSQVNFQkxPQ0tCQlRFU1RGVU5DVElPTl9B U1NFUlRJT05fMDA0X0dVSUQ7DQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUNCitFRklfR1VJ RCBnRXJhc2VCbG9ja0JCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3VpZDAwNCA9IEVGSV9URVNUX0VS QVNFQkxPQ0tCQlRFU1RGVU5DVElPTl9BU1NFUlRJT05fMDA0X0dVSUQ7DQorRUZJX0dVSUQgZ0Vy YXNlQmxvY2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDUgPSBFRklfVEVTVF9FUkFTRUJM T0NLQkJURVNURlVOQ1RJT05fQVNTRVJUSU9OXzAwNV9HVUlEOw0KK0VGSV9HVUlEIGdFcmFzZUJs b2NrQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDA2ID0gRUZJX1RFU1RfRVJBU0VCTE9DS0JC VEVTVEZVTkNUSU9OX0FTU0VSVElPTl8wMDZfR1VJRDsNClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQ0KZGlmZiAtLWdpdCBhL3VlZmktc2N0L1NjdFBrZy9UZXN0Q2FzZS9VRUZJL0VGSS9Qcm90 b2NvbC9FcmFzZUJsb2NrL0JsYWNrQm94VGVzdC9HdWlkLmggYi91ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3QvR3VpZC5oDQpp bmRleCAzNGFhODhjMS4uNjFmNjM0ZjQgMTAwNjQ0DQotLS0gYS91ZWZpLXNjdC9TY3RQa2cvVGVz dENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9jay9CbGFja0JveFRlc3QvR3VpZC5oDQor KysgYi91ZWZpLXNjdC9TY3RQa2cvVGVzdENhc2UvVUVGSS9FRkkvUHJvdG9jb2wvRXJhc2VCbG9j ay9CbGFja0JveFRlc3QvR3VpZC5oDQpAQCAtNzksNCArNzksMTEgQEAgZXh0ZXJuIEVGSV9HVUlE IGdFcmFzZUJsb2NrQkJUZXN0RnVuY3Rpb25Bc3NlcnRpb25HdWlkMDAzOw0KICB7IDB4NDAyYTA0 NWUsIDB4YTY3YiwgMHg0YTNlLCB7IDB4ODksIDB4OWUsIDB4MmQsIDB4ZTQsIDB4NzEsIDB4NzUs IDB4NmUsIDB4MTYgfSB9DQogIGV4dGVybiBFRklfR1VJRCBnRXJhc2VCbG9ja0JCVGVzdEZ1bmN0 aW9uQXNzZXJ0aW9uR3VpZDAwNDsNCiAgKyNkZWZpbmUgRUZJX1RFU1RfRVJBU0VCTE9DS0JCVEVT VEZVTkNUSU9OX0FTU0VSVElPTl8wMDVfR1VJRCBcDQoreyAweGNlYTNlM2E1LCAweGFhNmYsIDB4 NDdmZSwgeyAweGFhLCAweDJiLCAweGUwLCAweDM1LCAweDRjLCAweDYzLCAweDY5LCAweGQ2IH0g fQ0KK2V4dGVybiBFRklfR1VJRCBnRXJhc2VCbG9ja0JCVGVzdEZ1bmN0aW9uQXNzZXJ0aW9uR3Vp ZDAwNTsNCisNCisjZGVmaW5lIEVGSV9URVNUX0VSQVNFQkxPQ0tCQlRFU1RGVU5DVElPTl9BU1NF UlRJT05fMDA2X0dVSUQgXA0KK3sgMHgxMjVhZDAwNiwgMHgyODg2LCAweDQwMjIsIHsgMHhiOCwg MHgyYywgMHg2MCwgMHgyZiwgMHgxNCwgMHhhZCwgMHhmYSwgMHgyOCB9IH0NCitleHRlcm4gRUZJ X0dVSUQgZ0VyYXNlQmxvY2tCQlRlc3RGdW5jdGlvbkFzc2VydGlvbkd1aWQwMDY7DQoNCg0KDQpJ TVBPUlRBTlQgTk9USUNFOiBUaGUgY29udGVudHMgb2YgdGhpcyBlbWFpbCBhbmQgYW55IGF0dGFj aG1lbnRzIGFyZSBjb25maWRlbnRpYWwgYW5kIG1heSBhbHNvIGJlIHByaXZpbGVnZWQuIElmIHlv dSBhcmUgbm90IHRoZSBpbnRlbmRlZCByZWNpcGllbnQsIHBsZWFzZSBub3RpZnkgdGhlIHNlbmRl ciBpbW1lZGlhdGVseSBhbmQgZG8gbm90IGRpc2Nsb3NlIHRoZSBjb250ZW50cyB0byBhbnkgb3Ro ZXIgcGVyc29uLCB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLCBvciBzdG9yZSBvciBjb3B5IHRoZSBp bmZvcm1hdGlvbiBpbiBhbnkgbWVkaXVtLiBUaGFuayB5b3UuDQo=