From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 8AC847803CD for ; Mon, 19 Feb 2024 09:12:26 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=QP0/0Yv9mFD0tyPka6QRcZ/yHD2JSIYof/Xfg5a80tc=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1708333945; v=1; b=MSK/he56nWsnkV4fMQlBM97w+di6FwJ2xg/0J4vyVr8Tequ9PkPNSaqVmi1vGEURMX+ypEf8 Le50LLh6n46BRDp5B/eZjV+lV2Q5t2Qq5EbA0bUMOzNSXv63MrzVRLq9ZbIsyxYqauCANy70RV1 ZFDRNQhe1vz011R6dRHB0mdY= X-Received: by 127.0.0.2 with SMTP id VkzvYY7687511xlYg7VjnXSw; Mon, 19 Feb 2024 01:12:25 -0800 X-Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.10]) by mx.groups.io with SMTP id smtpd.web10.37445.1708333939454185715 for ; Mon, 19 Feb 2024 01:12:19 -0800 X-IronPort-AV: E=McAfee;i="6600,9927,10988"; a="13798970" X-IronPort-AV: E=Sophos;i="6.06,170,1705392000"; d="scan'208";a="13798970" X-Received: from orviesa005.jf.intel.com ([10.64.159.145]) by fmvoesa104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Feb 2024 01:12:18 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.06,170,1705392000"; d="scan'208";a="9105775" X-Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orviesa005.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 19 Feb 2024 01:12:18 -0800 X-Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 19 Feb 2024 01:12:17 -0800 X-Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 19 Feb 2024 01:12:17 -0800 X-Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 19 Feb 2024 01:12:17 -0800 X-Received: from NAM02-SN1-obe.outbound.protection.outlook.com (104.47.57.40) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 19 Feb 2024 01:12:16 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dHp13PavCS8ABNEUMI4IWU6e5GaSLKNCgspb2kHzE03WRMVwqr4Y/CNGbKY3AJM7rVn4HwoTIEe9o/RAc39XQdmOHryWeruikNOq6yBOAeD2sWKXzEVlZ3X5ll5wL0cMIcSzpimrE2iOpTfy+AOVAQ4DqqWMF/iuzF1eOmS9xQuybMdZiNc4y/GctesNdxGS3kKufab2MuS9eHxg7WMx5IzMELg1GtlWOSqiBM/JG44fkpOkr/B18UE4mlNadZa9dJkwrrCa4SNM54BhdRAlPUBXqiG/eWxCjITnKMijkYCr77TlBSLzm3sHdhNhhN5LUHA21cU6/N2GPyich5b/mg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=I0sprEH3pEcEaybSZsgkLmUOiAHDHwQojkvKhodEpwM=; b=XJ0Ol0hDhDaGImgK/akz0LrK4I/aEY2N1NbkIbAYbZ+a4FEZtvn8WVKz2Y4o0yYQLDtITTUGzeVGGvdpaqFI4xH2tlDNzmkE2nR/hZbxSMzMlDDo4+uydpinsGUnOExHB5fPC3iI057Pm8aQo9dYauBlcMDXI+xbnJMFoptqWfiNCltxApd3feOHsdxPxVfln5Z/Oq8xnjKZWrwZSKCwrmJT38RtvHoXLsq4V/84gDq1UWslOhQ7z7tTSNXJogtX8aYcU9hN4QsUO5vSRaKWKdxEnWJXFo92uJyaXWveWA/iaFJX5FBqyjnon54tzGLBFRIHYRA9G2SaSBPZs7vEqg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none X-Received: from BN9PR11MB5483.namprd11.prod.outlook.com (2603:10b6:408:104::10) by CH3PR11MB7391.namprd11.prod.outlook.com (2603:10b6:610:151::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.37; Mon, 19 Feb 2024 09:12:14 +0000 X-Received: from BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::aced:fdb2:cf39:5641]) by BN9PR11MB5483.namprd11.prod.outlook.com ([fe80::aced:fdb2:cf39:5641%6]) with mapi id 15.20.7292.036; Mon, 19 Feb 2024 09:12:14 +0000 From: "duntan" To: Laszlo Ersek , "Kinney, Michael D" , Leif Lindholm , "devel@edk2.groups.io" , Leif Lindholm , "Andrew Fish (afish@apple.com)" , "Gao, Liming" CC: Gerd Hoffmann , "Kumar, Rahul R" , "Ni, Ray" Subject: Re: [edk2-devel] [edk2-stable202402 PATCH 1/2] UefiCpuPkg/PiSmmCpuDxeSmm: distinguish GetSmBase() failure modes Thread-Topic: [edk2-devel] [edk2-stable202402 PATCH 1/2] UefiCpuPkg/PiSmmCpuDxeSmm: distinguish GetSmBase() failure modes Thread-Index: AQHaXsD2TR4hVzJiVE65iN0zy+aR3rEIy7mAgABmt4CAAJ3SgIAASD0AgAEAgQCABkREkA== Date: Mon, 19 Feb 2024 09:12:14 +0000 Message-ID: References: <20240213210918.16372-1-lersek@redhat.com> <20240213210918.16372-2-lersek@redhat.com> <5f807038-3e4b-0d82-6fee-37b81fd8e9f6@redhat.com> <8b4bffe9-2ac2-4a9f-873a-13a90f887b4a@quicinc.com> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5483:EE_|CH3PR11MB7391:EE_ x-ms-office365-filtering-correlation-id: 8f02262e-0195-43a8-78c0-08dc312adcf0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: 5znBU0ab6T5GersHL1i3rDq/Tz+y4Uh4gTGXY19CNRwvKHIq0uICENL7a4ZRq18LpWEi+f44zfAWscvU7AZxoP+hK5caanGbyvqUuk/hjnw+kmNGv1omVwtLuGW4j0vL45rkXEqkBnTvqed+RHMjz3/vrre5iht7U2z/bJHtiNlPDO0MZhpipdJt3xg0o+zGZjYqIoFN0+7Qn66dwHG6xmapjjeuyTWU5kOEX04u5FIyj7ZGa6v0sGpSwFbgt2GH2F7HV0Cw8FOupHQk7Is2UbIJRx7vhWuR47nyEwx6Dc3bzbfzW5YnKHiZGa9mKE9olVEXpaV6QAJ4YMs1h9m72V+u0OZKcHAke8IUIcu3L06VTXfFXp/KB190At4CRl7dhQ7WLpgWLMx9xvw+8SucleI0s4an/bGU1PfWpgWiEbdVm/Wk+QjPoWV8aZSjT8Y5Q5Prey/Ih8HhcIySB82sSEpAPg/qEsMYi1rWPK5PEwVWOLHgg5mCPLrNwzYGBg0gH/UrTi059SZec48KHCbqsgSpz86H1JJ4zYKWh7BvantUquqWwS2la+4d/S3JDxLa3KoDak4t2lHa8cUxcA66jKRAa87LyadH4N4dGpiLo18= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?T0VRVnpzWnFuWWVmZEJscjZPc0QyTnJyN0hCMzN6RzBOVXBtRm5rTzBoZnZQ?= =?utf-8?B?bFJQdzBUaGlDT3RXSzNFTG1oT2c2S2NZSmtzcTJXcmp0MUVrWFVMbS84NGZk?= =?utf-8?B?d1RYRFhZU0lhYXF2bGZJbWs5NFR0bUI0cVRySnlEMzhQejE2a1MveXFBbXR1?= =?utf-8?B?ckFFRU1zY1kvNVRkRlFsQW1iMmhmM0RFUFVIS1BIL0VsMDRoRitlS1g3VmNE?= =?utf-8?B?OVJTUTJSdkJVMVErQlNjWFEvZTRGZmo3alBBeEIvSm9WQ0V4Z05zb0xGQjFv?= =?utf-8?B?OUk0MVdUVWxhbHJUVDJpNUR5MXo4TmtKZXM2ZitkUnVkRmhrMStpcWdxMWdQ?= =?utf-8?B?eXJRcEpNcnZNWEhhS3lHV0puSGhWM2hPb0w2Q0cwL0FGQ0hnNXg3bk5sWkN2?= =?utf-8?B?NjZvdmpmYXIraDNQSThQVXVhYXdjeGxqS2RBQjhwelZyWkxxQ1NpTER3YkYz?= =?utf-8?B?MWFYYjdQTnBsejZvczVlU3ZaVUZzbFNvVzBOL1RSUE54OWh4bmJQamxUWUU5?= =?utf-8?B?QSthR1pNay9LdGE3MEZLV3pwNHJzU2JXYlJFTmtrQ29ZNzk5KzF0ay9FTEY5?= =?utf-8?B?MHlWRXZEZzd3Y0c0TnhXZVI5S2RDRjA2aVlkeFhuZEZGYzk3QUJaelZORUFp?= =?utf-8?B?MGpzb0N6V0FlVVdYbjlBbGVzVEdJeUk0bVBXSjdzVlFyN2huWVlRdjdxaWRk?= =?utf-8?B?WkZndElPQWUxem9HdWhaeW9xMkMvTkMzcmMrZ0ozZm1mQ0k3Vkk2Q3R0b2NE?= =?utf-8?B?K0xZK215eEgvTlhIOFc3M2FXQkkxU3h0Ukx1V0R1Qjl6MEt4K3BPcjFqb3ND?= =?utf-8?B?ZmNnSlprNmN2QnhxZER2MGU3MUxqck1JY1FEVENwZ2RKNzM5eEQxS2xPQlBD?= =?utf-8?B?aVFCL0hsNzQ3MXMwNERNd0tacm5Rd1EwdFB1M2c1ZE01VFJGTEtic2F0eXV2?= =?utf-8?B?YytEWmFIU1hjKzg2MHVSazMyaXRkeXJjYVM4SEo2aDQvY3dWelZmKytpcjFR?= =?utf-8?B?aStVUmpIQzZoVjJoTjJaRUMveFlPRmNKSisxZ2YxdnMzMTlUSTU4WW4vNFo4?= =?utf-8?B?Q0hza09ObzV1NE4vdDdUTDJtY2V4Y0ErbHRRcDVvY2pYMkdUK3hsaEVwbGNU?= =?utf-8?B?cGJmcmV6OVdKVS9jN3BkVDlNYVdnc2NsSzVMUU82eW1LeW9YQkFEQnFHYW16?= =?utf-8?B?eDA0YXhra1JKRE9NakM2UjlvRGdma2NUWTdRWnFMUVNQdENVeWNYYTJraGQ4?= =?utf-8?B?ZnFpcTIxY1JoNzdVQ2djc1hKZWp3amNqQXpiM2JsRG8wendZd3IyY3ExeEpR?= =?utf-8?B?MVNFNDNYdkttMFJiUVh0VjlpM2IrVmpxL1dUZGtkK28wWS9lWWdGYVR3RWs0?= =?utf-8?B?VmllM2FhT0RRWlBmV3l1eGs4aHZ4cFU5RktNT0VkQUZRZ2pka3VidVpIV3ZU?= =?utf-8?B?NGQycTlrZVpsd1pkZjMzMWduOGsrV3BQR1dZKzM2WUlhRlkvSTh3VFhzUExE?= =?utf-8?B?cVVXUTZqemZNS3ZqcWhxOXJOQ3JMcDM5c1Z2SGJ5WlArZG1WbXV0U2k1Y21W?= =?utf-8?B?VkFxamZzc3QzV1YyQU85clNRZ2o1YTlNb2V1NURGUm1icU82Y3UzOWdBa0hV?= =?utf-8?B?NXpUUzFBS2lQK1Yyckc2UTdzRFZNQmo0bkVqOWw0MzVMTW96SUxZZ1NZUHkx?= =?utf-8?B?Z0FiTzFaNFZ6RXhDV2M5Mmx0Nkw3eEIwbFhLNkZBbmdpSjdkT3ZoaFBuc1VV?= =?utf-8?B?UzZXSzBHZXVXdVV5VTVRM0FKVmpBaTBXbXFMeU5mZW9kWHVrOVNtcUVwc29q?= =?utf-8?B?NWU2bTc2RFdRWDVzOVRpNExRZnRCeURBbk5EQ2pUU0pKRFlnck1hOUliSTVS?= =?utf-8?B?QWhxZFUrUjZleDhZQUg3ZU5CbmREb1RMbWhYc1JSNmt1b2kzSHUybEkyTEZJ?= =?utf-8?B?Nm5qTkZHNHY0MFFBOW0wczJyODgxVDc0TThWNU0zRW0wTDRxbVdkWjdXeVI0?= =?utf-8?B?bFNFY3JoVmI3VjZqTVIxSEZvRlRKdWszTGpFSXN2RitEblAyNHRNOENLY00w?= =?utf-8?B?RnVlOEFxS0ZsUUVpdSticXRSdmJKdGQ5QTVEZWV4dngyWXpPTWpOK0ZVcTZW?= =?utf-8?Q?Sisg=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5483.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8f02262e-0195-43a8-78c0-08dc312adcf0 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Feb 2024 09:12:14.4400 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hYU1qKngsMh+3FWgFovcIPxIG3U9P7ZumRqLy2DwjP/c/Wu4p3kjjaya7gqBz9eo2YCPQbltFsl5tW7msM3oNA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR11MB7391 X-OriginatorOrg: intel.com Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,dun.tan@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: xxwCoedFrGvaSQq7QFrc5k4sx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b="MSK/he56"; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io TGFzemxvLA0KDQpTb3JyeSBmb3IgdGhlIGxhdGUgcmVwbHkuIFRoYW5rcyBmb3IgeW91ciBjb2Rl IHJlZmFjdG9yaW5nIHBhdGNoIGFuZCBidWdmaXggcGF0Y2ghDQoNClRoYW5rcywNCkR1bg0KDQot LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVk aGF0LmNvbT4gDQpTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMTUsIDIwMjQgNDo0NSBQTQ0KVG86 IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IExlaWYgTGlu ZGhvbG0gPHF1aWNfbGxpbmRob2xAcXVpY2luYy5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg TGVpZiBMaW5kaG9sbSA8bGxpbmRob2xAcXRpLnF1YWxjb21tLmNvbT47IEFuZHJldyBGaXNoIChh ZmlzaEBhcHBsZS5jb20pIDxhZmlzaEBhcHBsZS5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5n QGJ5b3NvZnQuY29tLmNuPg0KQ2M6IFRhbiwgRHVuIDxkdW4udGFuQGludGVsLmNvbT47IEdlcmQg SG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPjsgS3VtYXIsIFJhaHVsIFIgPHJhaHVsLnIua3Vt YXJAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBb ZWRrMi1kZXZlbF0gW2VkazItc3RhYmxlMjAyNDAyIFBBVENIIDEvMl0gVWVmaUNwdVBrZy9QaVNt bUNwdUR4ZVNtbTogZGlzdGluZ3Vpc2ggR2V0U21CYXNlKCkgZmFpbHVyZSBtb2Rlcw0KDQpPbiAy LzE0LzI0IDE4OjI2LCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gTWVyZ2VkOiBodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvcHVsbC81MzczDQoNClRoYW5rcyENCkxhc3psbw0K DQo+IA0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+IEZyb206IExlaWYgTGluZGhv bG0gPHF1aWNfbGxpbmRob2xAcXVpY2luYy5jb20+DQo+PiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1 YXJ5IDE0LCAyMDI0IDU6MDggQU0NCj4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgS2lubmV5 LCBNaWNoYWVsIEQgDQo+PiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBsZXJzZWtAcmVk aGF0LmNvbTsgTGVpZiBMaW5kaG9sbSANCj4+IDxsbGluZGhvbEBxdGkucXVhbGNvbW0uY29tPjsg QW5kcmV3IEZpc2ggKGFmaXNoQGFwcGxlLmNvbSkgDQo+PiA8YWZpc2hAYXBwbGUuY29tPjsgR2Fv LCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4+IENjOiBUYW4sIER1biA8ZHVu LnRhbkBpbnRlbC5jb20+OyBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVkaGF0LmNvbT47IA0KPj4g S3VtYXIsIFJhaHVsIFIgPHJhaHVsLnIua3VtYXJAaW50ZWwuY29tPjsgTmksIFJheSA8cmF5Lm5p QGludGVsLmNvbT4NCj4+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW2VkazItc3RhYmxlMjAy NDAyIFBBVENIIDEvMl0NCj4+IFVlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW06IGRpc3Rpbmd1aXNo IEdldFNtQmFzZSgpIGZhaWx1cmUgbW9kZXMNCj4+DQo+PiBPbiAyMDI0LTAyLTE0IDAzOjQzLCBN aWNoYWVsIEQgS2lubmV5IHdyb3RlOg0KPj4+IEhpIExhc3psbywNCj4+Pg0KPj4+IFRoYW5rIHlv dSBmb3IgdGhlIHF1aWNrIGZpeC4NCj4+Pg0KPj4+IEkgaGF2ZSByZXZpZXdlZCB0aGUgY2hhbmdl cy4gIEkgYWdyZWUgdGhleSBmaXggdGhlIGlzc3VlIGF0IGhhbmQuDQo+Pj4NCj4+PiBSZXZpZXdl ZC1ieTogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+Pj4N Cj4+PiBJIGhhdmUgYWRqdXN0ZWQgdGhlIGNvbW1pdCBtZXNzYWdlIHdpdGggeW91ciBzdWdnZXN0 ZWQgY2hhbmdlcyBpbiANCj4+PiB0aGUgUFIgSSBoYXZlIHByZXBhcmVkOg0KPj4+DQo+Pj4gaHR0 cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL3B1bGwvNTM3Mw0KPj4+DQo+Pj4gVGhlcmUg bWF5IGJlIGJldHRlciB3YXlzIHRvIG9yZ2FuaXplIHRoaXMgY29kZSBpbiBnZW5lcmFsIHRvIG1h a2UgaXQgDQo+Pj4gZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIG1haW50YWluIGluIHRoZSBmdXR1 cmUsIGJ1dCB3ZSBjYW4gbGV0IFJheSANCj4+PiByZXZpZXcgdGhhdCB3aGVuIGhlIHJldHVybnMu ICBUaGF0IHdpbGwgYWxzbyBsaWtlbHkgYmUgYSBtdWNoIGJ1Z2dlciANCj4+PiBjaGFuZ2UgdGhh dCBjYW4gYmUgYWNjZXB0ZWQganVzdCBiZWZvcmUgYSByZWxlYXNlLg0KPj4+DQo+Pj4gSSBhbHNv IGFwcHJvdmUgdGhpcyBhcyBhIGNyaXRpY2FsIGZpeCBmb3IgZWRrMi1zdGFibGUyMDI0MDINCj4+ Pg0KPj4+IEkgd2lsbCB3YWl0IHRpbGwgdG9tb3Jyb3cgbW9ybmluZyBteSB0aW1lIHRvIHNlZSBp ZiBHZXJkIGFuZCBSYWh1bCANCj4+PiBhbmQgTGVpZiBjYW4gYWxzbyBwcm92aWRlIHRoZWlyIHJl dmlld3MvYXBwcm92YWxzIGFuZCB0byBnaXZlIG1lIA0KPj4+IHNvbWUgdGltZSB0byBydW4gc29t ZSB0ZXN0cy4NCj4+DQo+PiBGb3IgdGhlIHNlcmllczoNCj4+IFJldmlld2VkLWJ5OiBMZWlmIExp bmRob2xtIDxxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tPiBJJ20gaGFwcHkgZm9yIA0KPj4gdGhp cyB0byBnbyBpbnRvIHRoZSBzdGFibGUgdGFnLg0KPj4NCj4+IC8NCj4+ICAgICAgTGVpZg0KPj4N Cj4+PiBJIGRvIG5vdCBleHBlY3QgUmF5IE5pIG9yIER1biBUYW4gdG8gYmUgYXZhaWxhYmxlIHRo aXMgd2Vlay4NCj4+Pg0KPj4+IEJlc3QgcmVnYXJkcywNCj4+Pg0KPj4+IE1pa2UNCj4+Pg0KPj4+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4+PiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZg0KPj4gTGFzemxvDQo+Pj4+ IEVyc2VrDQo+Pj4+IFNlbnQ6IFR1ZXNkYXksIEZlYnJ1YXJ5IDEzLCAyMDI0IDE6MzYgUE0NCj4+ Pj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+Pj4+IENjOiBUYW4sIER1biA8ZHVuLnRhbkBp bnRlbC5jb20+OyBHZXJkIEhvZmZtYW5uIA0KPj4+PiA8a3JheGVsQHJlZGhhdC5jb20+OyBLdW1h ciwgUmFodWwgUiA8cmFodWwuci5rdW1hckBpbnRlbC5jb20+OyBOaSwgDQo+Pj4+IFJheSA8cmF5 Lm5pQGludGVsLmNvbT4NCj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbZWRrMi1zdGFi bGUyMDI0MDIgUEFUQ0ggMS8yXQ0KPj4+PiBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tOiBkaXN0 aW5ndWlzaCBHZXRTbUJhc2UoKSBmYWlsdXJlIG1vZGVzDQo+Pj4+DQo+Pj4+IE9uIDIvMTMvMjQg MjI6MDksIExhc3psbyBFcnNlayB3cm90ZToNCj4+Pj4+IENvbW1pdCA3MjVhY2QwYjljYzAgKCJV ZWZpQ3B1UGtnOiBBdm9pZCBhc3N1bWluZyBvbmx5IG9uZQ0KPj4+PiBzbW1iYXNlaG9iIiwNCj4+ Pj4+IDIwMjMtMTItMTIpIGludHJvZHVjZWQgYSBoZWxwZXIgZnVuY3Rpb24gY2FsbGVkIEdldFNt QmFzZSgpLA0KPj4+PiByZXBsYWNpbmcgdGhlDQo+Pj4+PiBsb29rdXAgb2YgdGhlIGZpcnN0IGFu ZCBvbmx5ICJnU21tQmFzZUhvYkd1aWQiIEdVSUQgSE9CLCB3aXRoDQo+Pj4+IGl0ZXJhdGVkDQo+ Pj4+PiBsb29rdXBzIHBsdXMgbWVtb3J5IGFsbG9jYXRpb24uDQo+Pj4+Pg0KPj4+Pj4gVGhpcyBp bnRyb2R1Y2VkIGEgbmV3IGZhaWx1cmUgbW9kZSBmb3Igc2V0dGluZw0KPj4+PiAibUNwdUhvdFBs dWdEYXRhLlNtQmFzZSIuDQo+Pj4+PiBOYW1lbHksIGJlZm9yZSBjb21taXQgNzI1YWNkMGI5Y2Mw LCAibUNwdUhvdFBsdWdEYXRhLlNtQmFzZSIgd291bGQNCj4+IGJlDQo+Pj4+IHNldA0KPj4+Pj4g dG8gTlVMTCBpZiBhbmQgb25seSBpZiB0aGUgR1VJRCBIT0Igd2FzIGFic2VudC4gQWZ0ZXIgdGhl IGNvbW1pdCwgDQo+Pj4+PiBhDQo+Pj4+IE5VTEwNCj4+Pj4+IGFzc2lnbm1lbnQgd291bGQgYmUg cG9zc2libGUgaWYgdGhlIEdVSUQgSE9CIHdhcyBhYnNlbnQsICpvciogb25lDQo+PiBvZg0KPj4+ PiB0aGUNCj4+Pj4+IG1lbW9yeSBhbGxvY2F0aW9ucyBpbnNpZGUgR2V0U21CYXNlKCkgZmFpbGVk Lg0KPj4+Pg0KPj4+PiBTb3JyeSwgdGhlc2UgdHdvIHBhcmFncmFwaHMgYXJlIG5vdCBwcmVjaXNl LiBBIGJldHRlciB2ZXJzaW9uOg0KPj4+Pg0KPj4+PiAtLS0tLS0tLS0tDQo+Pj4+IENvbW1pdCA3 MjVhY2QwYjljYzAgKCJVZWZpQ3B1UGtnOiBBdm9pZCBhc3N1bWluZyBvbmx5IG9uZQ0KPj4gc21t YmFzZWhvYiIsDQo+Pj4+IDIwMjMtMTItMTIpIGludHJvZHVjZWQgYSBoZWxwZXIgZnVuY3Rpb24g Y2FsbGVkIEdldFNtQmFzZSgpLA0KPj4gcmVwbGFjaW5nDQo+Pj4+IHRoZSBsb29rdXAgb2YgdGhl IGZpcnN0IGFuZCBvbmx5ICJnU21tQmFzZUhvYkd1aWQiIEdVSUQgSE9CIGFuZCANCj4+Pj4gdW5j b25kaXRpb25hbCAibUNwdUhvdFBsdWdEYXRhLlNtQmFzZSIgYWxsb2NhdGlvbiwgd2l0aCBpdGVy YXRlZCANCj4+Pj4gbG9va3VwcyBwbHVzIGNvbmRpdGlvbmFsIG1lbW9yeSBhbGxvY2F0aW9uLg0K Pj4+Pg0KPj4+PiBUaGlzIGludHJvZHVjZWQgYSBuZXcgZmFpbHVyZSBtb2RlIGZvciBzZXR0aW5n IA0KPj4+PiAibUNwdUhvdFBsdWdEYXRhLlNtQmFzZSIuDQo+Pj4+IE5hbWVseSwgYmVmb3JlIGNv bW1pdCA3MjVhY2QwYjljYzAsICJtQ3B1SG90UGx1Z0RhdGEuU21CYXNlIiB3b3VsZA0KPj4gYmUN Cj4+Pj4gYWxsb2NhdGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIEdVSUQgSE9CIGJlaW5nIGFic2VudC4g QWZ0ZXIgdGhlIA0KPj4+PiBjb21taXQsICJtQ3B1SG90UGx1Z0RhdGEuU21CYXNlIiBjb3VsZCBy ZW1haW4gTlVMTCBpZiB0aGUgR1VJRCBIT0IgDQo+Pj4+IHdhcw0KPj4gYWJzZW50LA0KPj4+PiAq b3IqIG9uZSBvZiB0aGUgbWVtb3J5IGFsbG9jYXRpb25zIGluc2lkZSBHZXRTbUJhc2UoKSBmYWls ZWQ7IGFuZCANCj4+Pj4gaW4gdGhlIGZvcm1lciBjYXNlLCB3ZSdkIGV2ZW4gcHJvY2VlZCB0byB0 aGUgcmVzdCBvZiANCj4+Pj4gUGlDcHVTbW1FbnRyeSgpLg0KPj4+PiAtLS0tLS0tLS0tDQo+Pj4+ DQo+Pj4+IFNvcnJ5LCBpdCdzIGxhdGUuDQo+Pj4+DQo+Pj4+IElmIHRoaXMgcGF0Y2ggc2V0IGlz IGFjY2VwdGVkIG90aGVyd2lzZSwgdGhlbiBNaWtlIG9yIExpbWluZywgY2FuDQo+PiB5b3UNCj4+ Pj4gcGxlYXNlIHVwZGF0ZSB0aGUgZmlyc3QgdHdvIHBhcmFncmFwaHMgb2YgdGhlIGNvbW1pdCBt ZXNzYWdlIHVwb24gDQo+Pj4+IG1lcmdlPw0KPj4+Pg0KPj4+PiBUaGFua3MNCj4+Pj4gTGFzemxv DQo+Pj4+DQo+Pj4+Pg0KPj4+Pj4gSW4gcmVsYXRpb24gdG8gdGhpcyBjb25mbGF0aW9uIG9mIGRp c3RpbmN0IGZhaWx1cmUgbW9kZXMsIGNvbW1pdA0KPj4+Pj4gNzI1YWNkMGI5Y2MwIGFjdHVhbGx5 IGludHJvZHVjZWQgYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuDQo+PiBOYW1lbHksDQo+Pj4+ IGENCj4+Pj4+IE5VTEwgIm1DcHVIb3RQbHVnRGF0YS5TbUJhc2UiIGlzIG5vdCBoYW5kbGVkIHBy b3Blcmx5IGF0IGFsbCBub3cuDQo+Pj4+IFdlJ3JlDQo+Pj4+PiBnb2luZyB0byBmaXggdGhhdCBO VUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gYSBzdWJzZXF1ZW50IHBhdGNoOw0KPj4+PiBob3dl dmVyLA0KPj4+Pj4gYXMgYSBwcmUtcmVxdWlzaXRlIGZvciB0aGF0IHdlIG5lZWQgdG8gdGVsbCBh cGFydCB0aGUgZmFpbHVyZSANCj4+Pj4+IG1vZGVzDQo+Pj4+IG9mDQo+Pj4+PiBHZXRTbUJhc2Uo KS4NCj4+Pj4+DQo+Pj4+PiBGb3IgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMsIHJldHVybiBF RklfT1VUX09GX1JFU09VUkNFUy4gTW92ZQ0KPj4gdGhlDQo+Pj4+PiAiYXNzZXJ0aW9uIiB0aGF0 IFNNUkFNIGNhbm5vdCBiZSBleGhhdXN0ZWQgaGFwcGVuIG91dCB0byB0aGUgDQo+Pj4+PiBjYWxs ZXIgKFBpQ3B1U21tRW50cnkoKSkuIFN0cmVuZ3RoZW4gdGhlIGFzc2VydGlvbiBieSBhZGRpbmcg YW4gDQo+Pj4+PiBleHBsaWNpdA0KPj4+Pj4gQ3B1RGVhZExvb3AoKSBjYWxsLiAoTm90ZTogR2V0 U21CYXNlKCkgKmFscmVhZHkqIGNhbGxzDQo+PiBDcHVEZWFkTG9vcCgpDQo+Pj4+IGlmDQo+Pj4+ PiAoTnVtYmVyT2ZQcm9jZXNzb3JzICE9IE1heE51bWJlck9mQ3B1cykuKQ0KPj4+Pj4NCj4+Pj4+ IEZvciB0aGUgYWJzZW5jZSBvZiB0aGUgR1VJRCBIT0IsIHJldHVybiBFRklfTk9UX0ZPVU5ELg0K Pj4+Pj4NCj4+Pj4+IEZvciBnb29kIG1lYXN1cmUsIG1ha2UgR2V0U21CYXNlKCkgU1RBVElDIChp dCBzaG91bGQgaGF2ZSBiZWVuDQo+PiBTVEFUSUMNCj4+Pj4gZnJvbQ0KPj4+Pj4gdGhlIHN0YXJ0 KS4NCj4+Pj4+DQo+Pj4+PiBUaGlzIGlzIGp1c3QgYSByZWZhY3RvcmluZywgbm8gYmVoYXZpb3Jh bCBkaWZmZXJlbmNlIGlzIGludGVuZGVkDQo+Pj4+IChiZXlvbmQNCj4+Pj4+IHRoZSBleHBsaWNp dCBDcHVEZWFkTG9vcCgpIHVwb24gU01SQU0gZXhoYXVzdGlvbikuDQo+Pj4+Pg0KPj4+Pj4gQ2M6 IER1biBUYW4gPGR1bi50YW5AaW50ZWwuY29tPg0KPj4+Pj4gQ2M6IEdlcmQgSG9mZm1hbm4gPGty YXhlbEByZWRoYXQuY29tPg0KPj4+Pj4gQ2M6IFJhaHVsIEt1bWFyIDxyYWh1bDEua3VtYXJAaW50 ZWwuY29tPg0KPj4+Pj4gQ2M6IFJheSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4+Pj4+IFJlZjog aHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00NjgyDQo+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPj4+Pj4g LS0tDQo+Pj4+Pg0KPj4+Pj4gTm90ZXM6DQo+Pj4+PiAgICAgIGNvbnRleHQ6LVU0DQo+Pj4+Pg0K Pj4+Pj4gICBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMgfCA0MCAN Cj4+Pj4+ICsrKysrKysrKysrKysrLS0tDQo+PiAtLS0NCj4+Pj4+ICAgMSBmaWxlIGNoYW5nZWQs IDI4IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQ0KPj4+Pj4NCj4+Pj4+IGRpZmYgLS1n aXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4+Pj4gYi9V ZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4+Pj4+IGluZGV4IGNk Mzk0ODI2ZmZjZi4uMDkzODI5NDVkZGI0IDEwMDY0NA0KPj4+Pj4gLS0tIGEvVWVmaUNwdVBrZy9Q aVNtbUNwdUR4ZVNtbS9QaVNtbUNwdUR4ZVNtbS5jDQo+Pj4+PiArKysgYi9VZWZpQ3B1UGtnL1Bp U21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4+Pj4+IEBAIC02MTksMTYgKzYxOSwyMyBA QCBTbUJhc2VIb2JDb21wYXJlICgNCj4+Pj4+DQo+Pj4+PiAgIC8qKg0KPj4+Pj4gICAgIEV4dHJh Y3QgU21CYXNlIGZvciBhbGwgQ1BVIGZyb20gU21tQmFzZSBIT0IuDQo+Pj4+Pg0KPj4+Pj4gLSAg QHBhcmFtW2luXSAgTWF4TnVtYmVyT2ZDcHVzICAgTWF4IE51bWJlck9mQ3B1cy4NCj4+Pj4+ICsg IEBwYXJhbVtpbl0gIE1heE51bWJlck9mQ3B1cyAgICAgICAgTWF4IE51bWJlck9mQ3B1cy4NCj4+ Pj4+DQo+Pj4+PiAtICBAcmV0dmFsIFNtQmFzZUJ1ZmZlciAgICAgICAgICBQb2ludGVyIHRvIFNt QmFzZSBCdWZmZXIuDQo+Pj4+PiAtICBAcmV0dmFsIE5VTEwgICAgICAgICAgICAgICAgICBnU21t QmFzZUhvYkd1aWQgd2FzIG5vdCBiZWVuDQo+Pj4+IGNyZWF0ZWQuDQo+Pj4+PiArICBAcGFyYW1b b3V0XSBBbGxvY2F0ZWRTbUJhc2VCdWZmZXIgIFBvaW50ZXIgdG8gU21CYXNlIEJ1ZmZlcg0KPj4+ PiBhbGxvY2F0ZWQNCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YnkgdGhpcyBmdW5jdGlvbi4gT25seSBzZXQgDQo+Pj4+PiArIGlmDQo+Pj4+IHRoZQ0KPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiByZXR1cm5zIEVG SV9TVUNDRVNTLg0KPj4+Pj4gKw0KPj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAg ICAgU21CYXNlIEJ1ZmZlciBvdXRwdXQgc3VjY2Vzc2Z1bGx5Lg0KPj4+Pj4gKyAgQHJldHZhbCBF RklfT1VUX09GX1JFU09VUkNFUyAgTWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLg0KPj4+Pj4gKyAg QHJldHZhbCBFRklfTk9UX0ZPVU5EICAgICAgICAgZ1NtbUJhc2VIb2JHdWlkIHdhcyBuZXZlciBj cmVhdGVkLg0KPj4+Pj4gICAqKi8NCj4+Pj4+IC1VSU5UTiAqDQo+Pj4+PiArU1RBVElDDQo+Pj4+ PiArRUZJX1NUQVRVUw0KPj4+Pj4gICBHZXRTbUJhc2UgKA0KPj4+Pj4gLSAgSU4gIFVJTlROICBN YXhOdW1iZXJPZkNwdXMNCj4+Pj4+ICsgIElOICBVSU5UTiAgTWF4TnVtYmVyT2ZDcHVzLA0KPj4+ Pj4gKyAgT1VUIFVJTlROICAqKkFsbG9jYXRlZFNtQmFzZUJ1ZmZlcg0KPj4+Pj4gICAgICkNCj4+ Pj4+ICAgew0KPj4+Pj4gICAgIFVJTlROICAgICAgICAgICAgICBIb2JDb3VudDsNCj4+Pj4+ICAg ICBFRklfSE9CX0dVSURfVFlQRSAgKkd1aWRIb2I7DQo+Pj4+PiBAQCAtNjQ5LDkgKzY1Niw5IEBA IEdldFNtQmFzZSAoDQo+Pj4+PiAgICAgTnVtYmVyT2ZQcm9jZXNzb3JzID0gMDsNCj4+Pj4+DQo+ Pj4+PiAgICAgRmlyc3RTbW1CYXNlR3VpZEhvYiA9IEdldEZpcnN0R3VpZEhvYiAoJmdTbW1CYXNl SG9iR3VpZCk7DQo+Pj4+PiAgICAgaWYgKEZpcnN0U21tQmFzZUd1aWRIb2IgPT0gTlVMTCkgew0K Pj4+Pj4gLSAgICByZXR1cm4gTlVMTDsNCj4+Pj4+ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7 DQo+Pj4+PiAgICAgfQ0KPj4+Pj4NCj4+Pj4+ICAgICBHdWlkSG9iID0gRmlyc3RTbW1CYXNlR3Vp ZEhvYjsNCj4+Pj4+ICAgICB3aGlsZSAoR3VpZEhvYiAhPSBOVUxMKSB7DQo+Pj4+PiBAQCAtNjcx LDExICs2NzgsMTAgQEAgR2V0U21CYXNlICgNCj4+Pj4+ICAgICAgIENwdURlYWRMb29wICgpOw0K Pj4+Pj4gICAgIH0NCj4+Pj4+DQo+Pj4+PiAgICAgU21CYXNlSG9icyA9IEFsbG9jYXRlUG9vbCAo c2l6ZW9mIChTTU1fQkFTRV9IT0JfREFUQSAqKSAqDQo+Pj4+IEhvYkNvdW50KTsNCj4+Pj4+IC0g IEFTU0VSVCAoU21CYXNlSG9icyAhPSBOVUxMKTsNCj4+Pj4+ICAgICBpZiAoU21CYXNlSG9icyA9 PSBOVUxMKSB7DQo+Pj4+PiAtICAgIHJldHVybiBOVUxMOw0KPj4+Pj4gKyAgICByZXR1cm4gRUZJ X09VVF9PRl9SRVNPVVJDRVM7DQo+Pj4+PiAgICAgfQ0KPj4+Pj4NCj4+Pj4+ICAgICAvLw0KPj4+ Pj4gICAgIC8vIFJlY29yZCBlYWNoIFNtbUJhc2VIb2IgcG9pbnRlciBpbiB0aGUgU21CYXNlSG9i cy4NCj4+Pj4+IEBAIC02OTEsOSArNjk3LDkgQEAgR2V0U21CYXNlICgNCj4+Pj4+ICAgICBTbUJh c2VCdWZmZXIgPSAoVUlOVE4gKilBbGxvY2F0ZVBvb2wgKHNpemVvZiAoVUlOVE4pICoNCj4+Pj4g KE1heE51bWJlck9mQ3B1cykpOw0KPj4+Pj4gICAgIEFTU0VSVCAoU21CYXNlQnVmZmVyICE9IE5V TEwpOw0KPj4+Pj4gICAgIGlmIChTbUJhc2VCdWZmZXIgPT0gTlVMTCkgew0KPj4+Pj4gICAgICAg RnJlZVBvb2wgKFNtQmFzZUhvYnMpOw0KPj4+Pj4gLSAgICByZXR1cm4gTlVMTDsNCj4+Pj4+ICsg ICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPj4+Pj4gICAgIH0NCj4+Pj4+DQo+Pj4+ PiAgICAgUXVpY2tTb3J0IChTbUJhc2VIb2JzLCBIb2JDb3VudCwgc2l6ZW9mIChTTU1fQkFTRV9I T0JfREFUQSAqKSwNCj4+Pj4gKEJBU0VfU09SVF9DT01QQVJFKVNtQmFzZUhvYkNvbXBhcmUsICZT b3J0QnVmZmVyKTsNCj4+Pj4+ICAgICBQcmV2UHJvY2Vzc29ySW5kZXggPSAwOw0KPj4+Pj4gQEAg LTcxMyw5ICs3MTksMTAgQEAgR2V0U21CYXNlICgNCj4+Pj4+ICAgICAgIFByZXZQcm9jZXNzb3JJ bmRleCArPSBTbUJhc2VIb2JzW0hvYkluZGV4XS0NCj4+PiBOdW1iZXJPZlByb2Nlc3NvcnM7DQo+ Pj4+PiAgICAgfQ0KPj4+Pj4NCj4+Pj4+ICAgICBGcmVlUG9vbCAoU21CYXNlSG9icyk7DQo+Pj4+ PiAtICByZXR1cm4gU21CYXNlQnVmZmVyOw0KPj4+Pj4gKyAgKkFsbG9jYXRlZFNtQmFzZUJ1ZmZl ciA9IFNtQmFzZUJ1ZmZlcjsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4+Pj4+ICAgfQ0KPj4+Pj4N Cj4+Pj4+ICAgLyoqDQo+Pj4+PiAgICAgRnVuY3Rpb24gdG8gY29tcGFyZSAyIE1QX0lORk9STUFU SU9OMl9IT0JfREFUQSBwb2ludGVyIGJhc2VkIA0KPj4+Pj4gb24NCj4+Pj4gUHJvY2Vzc29ySW5k ZXguDQo+Pj4+PiBAQCAtMTExMCwxMCArMTExNywxNyBAQCBQaUNwdVNtbUVudHJ5ICgNCj4+Pj4+ ICAgICAvLw0KPj4+Pj4gICAgIC8vIFJldHJpdmUgdGhlIGFsbG9jYXRlZCBTbW1CYXNlIGZyb20g Z1NtbUJhc2VIb2JHdWlkLiBJZg0KPj4gZm91bmQsDQo+Pj4+PiAgICAgLy8gbWVhbnMgdGhlIFNt QmFzZSByZWxvY2F0aW9uIGhhcyBiZWVuIGRvbmUuDQo+Pj4+PiAgICAgLy8NCj4+Pj4+IC0gIG1D cHVIb3RQbHVnRGF0YS5TbUJhc2UgPSBHZXRTbUJhc2UgKG1NYXhOdW1iZXJPZkNwdXMpOw0KPj4+ Pj4gLSAgaWYgKG1DcHVIb3RQbHVnRGF0YS5TbUJhc2UgIT0gTlVMTCkgew0KPj4+Pj4gKyAgbUNw dUhvdFBsdWdEYXRhLlNtQmFzZSA9IE5VTEw7DQo+Pj4+PiArICBTdGF0dXMgICAgICAgICAgICAg ICAgID0gR2V0U21CYXNlIChtTWF4TnVtYmVyT2ZDcHVzLA0KPj4+PiAmbUNwdUhvdFBsdWdEYXRh LlNtQmFzZSk7DQo+Pj4+PiArICBpZiAoU3RhdHVzID09IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTKSB7 DQo+Pj4+PiArICAgIEFTU0VSVCAoU3RhdHVzICE9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTKTsNCj4+ Pj4+ICsgICAgQ3B1RGVhZExvb3AgKCk7DQo+Pj4+PiArICB9DQo+Pj4+PiArDQo+Pj4+PiArICBp ZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPj4+Pj4gKyAgICBBU1NFUlQgKG1DcHVIb3RQbHVn RGF0YS5TbUJhc2UgIT0gTlVMTCk7DQo+Pj4+PiAgICAgICAvLw0KPj4+Pj4gICAgICAgLy8gQ2hl Y2sgd2hldGhlciB0aGUgUmVxdWlyZWQgVGlsZVNpemUgaXMgZW5vdWdoLg0KPj4+Pj4gICAgICAg Ly8NCj4+Pj4+ICAgICAgIGlmIChUaWxlU2l6ZSA+IFNJWkVfOEtCKSB7DQo+Pj4+PiBAQCAtMTEy NSw4ICsxMTM5LDEwIEBAIFBpQ3B1U21tRW50cnkgKA0KPj4+Pj4gICAgICAgfQ0KPj4+Pj4NCj4+ Pj4+ICAgICAgIG1TbW1SZWxvY2F0ZWQgPSBUUlVFOw0KPj4+Pj4gICAgIH0gZWxzZSB7DQo+Pj4+ PiArICAgIEFTU0VSVCAoU3RhdHVzID09IEVGSV9OT1RfRk9VTkQpOw0KPj4+Pj4gKyAgICBBU1NF UlQgKG1DcHVIb3RQbHVnRGF0YS5TbUJhc2UgPT0gTlVMTCk7DQo+Pj4+PiAgICAgICAvLw0KPj4+ Pj4gICAgICAgLy8gV2hlbiB0aGUgSE9CIGRvZXNuJ3QgZXhpc3QsIGFsbG9jYXRlIG5ldyBTTUJB U0UgaXRzZWxmLg0KPj4+Pj4gICAgICAgLy8NCj4+Pj4+ICAgICAgIERFQlVHICgoREVCVUdfSU5G TywgIlBpQ3B1U21tRW50cnk6IGdTbW1CYXNlSG9iR3VpZCBub3QNCj4+Pj4gZm91bmQhXG4iKSk7 DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+DQo+Pj4+Pg0KPj4+Pj4NCj4+Pj4+DQo+Pj4+DQo+Pj4+DQo+ Pj4+DQo+Pj4+DQo+Pj4+DQo+Pj4NCj4+Pg0KPj4+DQo+Pj4gDQo+Pj4NCj4+Pg0KPiANCg0KDQoK LT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2ZSBhbGwg bWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9ubGluZSAoIzExNTU4Nik6 IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzExNTU4NgpNdXRlIFRoaXMg VG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzEwNDM0MTM0Mi83Njg2MTc2Ckdyb3VwIE93bmVy OiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbwpVbnN1YnNjcmliZTogaHR0cHM6Ly9lZGsyLmdy b3Vwcy5pby9nL2RldmVsL3Vuc3ViIFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0t PS09LT0tPS0KCg0K