From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (NAM12-DM6-obe.outbound.protection.outlook.com [40.107.243.57]) by mx.groups.io with SMTP id smtpd.web11.14547.1675440015523080931 for ; Fri, 03 Feb 2023 08:00:15 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=OY3cCQeG; spf=permerror, err=parse error for token &{10 18 %{i}._ip.%{h}._ehlo.%{d}._spf.vali.email}: invalid domain name (domain: nvidia.com, ip: 40.107.243.57, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WLmXC/ikJ76RT1msJLhgci6p5nDfjqpGD7zdCuC3KQW2cEs/1gb8fbhs/T+ya77FIG7IGQYMZx/7us4oh4gm2UxeoIzB9yqNzXTsEO22VuMTv5MfLsNLnmegJRYIVpYwnO3e1v9rrkwxMu01rfxXOUn3uHDcz+4SL50uAiy0SgI6R2DTc//QSziM2ETpoqebsfgt56vm5Ltm9pOtVjgXEK9T7EJlHiSKL3g1boVZ+Kqz5nusNDUsUH01QEuicF/Oqq9GLWzb0sRAv/KK7mDEYG++5/AhgvxZJrlaPGvfatS+KsmB+M5q3kFdPUvyYH5F5lqQa8dKrghod0LyK9MV6Q== 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=dVmG2DJ/b2DZPTTrwAULC2l8dfHo0YE4aQvKByfxlGw=; b=LZOB8AuN5W6sWStItOsjFSMAu6cyKnztClJ383bBLU8iukiKA/0cbRkFzqkqYAnVqWRm9XBtH24rv5mUUYVyos/Ti7QcND8m2E2RjNphqFUdME58uBK8NNMQFWVEdWflmd8J2CfN1pvpsDo37WQMLd5E0hJemWzPIMQLTQp/Q0V2rUxffexupVN4aVXJPiuX7GhxTi6gM35Hm1z2RmYIdOPVcNaWE+iMIIQUTFskruwS24LxCwERonBFuEzPsENtPDSvMM7sV8l3vwUMWw+jVQBRPCiFS2zOClLQ9BzjFIcaRVeeX2zvs4vZQQ5BY2IhOhnFuAmM9lwfaSn9exk4Jg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=dVmG2DJ/b2DZPTTrwAULC2l8dfHo0YE4aQvKByfxlGw=; b=OY3cCQeG30zr9eyLMk9+71o9gwDxv4yAx66TIPj8QDlxTsBLLiFkuZbpnJ4RGoz/4dge3XZu+sAOARYxfTaq78gFAIShx8I/mnQLsYAHxvfpvfGVIuMpQtZUq4u+FhONRZWO2KZXeDusOKnVqc7/6FKxWhs2ded9za4ZrP/NXRLgRAikt4+DdqAbl6yah9uvj4+6AGf4eFdREoFs4asRMgSryY8IZfFr4aiwsDbrHR/K9CweOLBF1fFy2/p18OO+jnYaLahDGQUAGoiMu7Y6DhAF6tvoiEWSVU89Lsfsz8xDpJpztv78Uord8IibuYVrZUtSHfgN/iS41uFbLPX99g== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by SA0PR12MB4383.namprd12.prod.outlook.com (2603:10b6:806:94::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.27; Fri, 3 Feb 2023 16:00:13 +0000 Received: from DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::3d2e:1f83:5259:9893]) by DS7PR12MB5789.namprd12.prod.outlook.com ([fe80::3d2e:1f83:5259:9893%3]) with mapi id 15.20.6064.031; Fri, 3 Feb 2023 16:00:13 +0000 From: "Jeff Brasen" To: Pierre Gondois , "devel@edk2.groups.io" CC: "Sami.Mujawar@arm.com" , "Alexei.Fedorov@arm.com" , "quic_llindhol@quicinc.com" , "ardb+tianocore@kernel.org" Subject: Re: [PATCH] DynamicTablesPkg: Allow multiple top level physical nodes Thread-Topic: [PATCH] DynamicTablesPkg: Allow multiple top level physical nodes Thread-Index: AQHZNlw80YqbEhIwJ0C03wroMmUOIq67j8eAgABPd3CAABEsgIAAAF/ggAFEd4CAAC7WQA== Date: Fri, 3 Feb 2023 16:00:13 +0000 Message-ID: References: <5a4e5960-ad7d-e8d0-cd87-f51693c51ad8@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DS7PR12MB5789:EE_|SA0PR12MB4383:EE_ x-ms-office365-filtering-correlation-id: 92387f44-d004-4230-9a2d-08db05ffbc0f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: VaPa4dQrTYCK0fHezVEqAFwrhrjJYJjAU8E+l7jRUebilDO9ji0iyyZT0ZOEVgEaIR+sKjoXknAry8jSoe0XqTMk3G7i//NNBQAA0+5MzrNx0loFiSoonXZyRsF5Vl74u7lG8nMnZt+nIKH5gdeOD6BbiWO8IboWBYLga82nH9I6M2NKGnr5/DIgJe1lY8Q/UTRRx7UoORxvyZe4DZr6L3ODF1MRN/LrmjvYXKDVhWL8764ZUeEkMLKhorOdMAN4B7IXaZLeypvvJYIP0GeXfkIYecmQC8mSj+5c7+CqrQ3XsJyncsixT4jkpctHKIov7BK9WEcaxtnzx2I5pN0ipm1TUsBEMp3mF/VRLOsz1wjHnpvJck36x7x7pU06BY97hCl4o8mDDxBnsT/NcK1gKfQcP4BmaIGcUM64QVdNNy9ctdKoLXjO14DlpNCYfg2I1P8JSRl5BbI0lNVUGTC4hrEdgf54CCtwIo/HKRXb+1+zEsdm9dhI4+f+Qg+aoeB2Ba/QdO3Rxf2zuXI4ccmEf8rT0S95VwxcwN3C9aIXvh8kBQLrs+RuNl0Iyn0lSlk9G3ORBhxA9sL3JiDB4m0DzSPMxNeqPAMzPjXjjtsghnTAPcvsFySUML980074usiMAlqLuairKEcP9elte8NvNqPSm3ajC9AIFlbjLH5jeoSsL+PN3rS8G0PRS2JIf3h0dsu+PYVezDVLZiHS7jmhSw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DS7PR12MB5789.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(4636009)(366004)(136003)(39860400002)(396003)(376002)(346002)(451199018)(66946007)(76116006)(8676002)(6506007)(7696005)(478600001)(26005)(110136005)(53546011)(33656002)(9686003)(54906003)(316002)(186003)(5660300002)(86362001)(2906002)(52536014)(30864003)(41300700001)(66476007)(8936002)(64756008)(66556008)(71200400001)(4326008)(66446008)(55016003)(83380400001)(38070700005)(122000001)(38100700002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c0dudmpTYzBGcmhJdWhhYiswOXE5ZlVKQ24xY0ZScURudmQ1elRtVGJUMEpZ?= =?utf-8?B?MjR2SHRsZGxkN2hWK2daaXlDMEtOcmJRS2lFeVlQOE80Z1padUlNcjhrYUVp?= =?utf-8?B?UkhpSWdjaXNKeHRORC92bDlwaVdLZThwSW1ZQlZKdUZ2Z0N1NTZ5MVl6TjFW?= =?utf-8?B?bFA3YkRaUm9uL3hDa1VCR3p1ZklGQktVT1RPek1RTTNQbk5MMWh5Y1k5dGZF?= =?utf-8?B?YkUrNnduS2s0aDBGR3VGWHoyemJUaVN5czFDb2dpZjhGZmZuNW9hNDlXTFNl?= =?utf-8?B?NFU4SlVQblAwTld0SDJSN3ZOT0Fmbm5ZZEt4STBMcDNncVA2MmJMSlo2Y1NW?= =?utf-8?B?R2lHRURiUS9iclYvakJLeU52c3BqUlh0MkFPcDY3YlBxaHBrNXdnMmZBaVJw?= =?utf-8?B?MFZqV040UkFlbHVmWU5oRXRaSWVYVThwalpsU1ovREZpVW9XMkpEa3lXUlh5?= =?utf-8?B?amgyYVh0KzV4MU5TOERFR2xWSTV1ZXNIT1FqSWhQMmhLaE9IOUtTVUFlVkc0?= =?utf-8?B?WUJCU3dKRUpqMVNXa1ZDQ3JZK3dxbHRaZzFkb2d4TGNXYmJKRkxjeXJReDRR?= =?utf-8?B?ZEkzTmhnWFpzUU5QMFlnd1VjL05vdXl5U1p2T2dMbW00d2ducVBlZGw4WmZv?= =?utf-8?B?NGlYZzRORWxHa294dEFEdzdkQmxKZWhjY0RyclRTNmFxcHJSMjRIc05QemtB?= =?utf-8?B?ZUV5YVRCVzdwdkVtZVo4Yzd5UjQxK1A3ckt2UVJjRFZMRXI1YkV2a0o4UlJU?= =?utf-8?B?SHVCd2JGbEJyRTVUY3FJdE9OZm5aODRleHBjcWtjbjJoWCtpSHJkc2hMcWVM?= =?utf-8?B?NGVoeE1XdlJqcjZYSDE4SkVyNWRZSk45VGJvcnlxSW1WUmpjaU1GU1Z1bDht?= =?utf-8?B?TzNvbGVYNXR3RDdXUUYvdkFyYks2dUFDWndLMzIrWTVhbUw5SUhaVkZ0RWtL?= =?utf-8?B?OVU5SjcrM01LUVdKb2dYYm5kdXltY0Ezd0ZucnJTeUZyR2crSENZOEp2dXAx?= =?utf-8?B?d0xqOXR4SW00ajhyVUdVeThFSldvdDJTSWJhMEdBUnRBajlWSFZDNjlLTUR2?= =?utf-8?B?aTE2YThTVExPdmdFUkNqMlZ2NU1zSFF1NUVuR1ppcCtSUlRpa1ZyM2Y4dXlo?= =?utf-8?B?TFJ0SDdwRSthZEcyRnl5c0dka1VoOVFadElZNEE5Sm8zeGJhN0JnNTRkQVlj?= =?utf-8?B?TmdzaHlFNkNOdmNGYXlXNEs2Nk9OaE5qTjJ1a0grckVxcGgvNVB3b0Fibyto?= =?utf-8?B?V3MwWXFoYVVMa1MrcFgrOXUrbkRvdXVrNGg3Kzd0VUpaT01FY0RuWStJWVlR?= =?utf-8?B?MGx3c3M4UFJMVTFQQXBkL1A2MXpkOGNhSGdUUVFuN0RXQ0tCSGtpbGVNL1dr?= =?utf-8?B?cXJMTHB6NkRvcW5zOWgrbFB3Z0ZVNGN4SU5LODhFMjhCZHFTLy9TS0JsYVRy?= =?utf-8?B?WEZjNWFoOThjYktwaUo1cnhIQ3pIYXJBL1BldlRmUUU2ZGE3bmcwMnZ4bEIz?= =?utf-8?B?amg5QmFPcHRxSXhhbkZtaUY4WEtyQkc2cS9uaXVja2k4STB1cFVtbEk2b0lm?= =?utf-8?B?QVpMdXc0ZDg3RjZjSEc3SEdFdEhLQ3VLOHlzUGhaOCtKeVBBa09jaFBDOVBG?= =?utf-8?B?MkphYzBOSDZlM1M1WU5CRFFJblByeGsrN01OV0J1NGpSMjdpeHBwbWl3dVdU?= =?utf-8?B?dWdXbVFYSUlkNkVLMk9RYzhUanF0dGM4TmdoWkVLUjZBOHY2ZDhveVd2Mzcx?= =?utf-8?B?RXVJU2cwYjMrMEdqSWtaSFZUR0xUVUlSbnRPMSs4MlZDTEVLcUtXclB0RjNl?= =?utf-8?B?U2pJY25Kcm1NdHg3bXBYM2NPV3NYTm4zNWVyWGNNMHJSREVHVEtVOWNkR0dw?= =?utf-8?B?aDBoTGQvcm1NZjBGWHRwSlZoRU10WjJNamFCdGYvbzlFc21ha2FHMG5qWmkx?= =?utf-8?B?OC80TGh3UzFGVi93L1JqZ0cycGlUM0xKRW43OWh1Mnc2d1VFV2tGbHNWbzg0?= =?utf-8?B?bGl2VWppd0xoRGt4c2p5UmI0elA3Z0lpVmI0Skxza20rRG51TERwTDU0YWpU?= =?utf-8?B?RGJHUWUrS1lObkFhZkM1ejROaC9lM2xQVmhSczN6aXVTbVB5UDVnbEVWSHpK?= =?utf-8?Q?8d4mJBrwI858P7QM5/mH41wNh?= MIME-Version: 1.0 X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DS7PR12MB5789.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 92387f44-d004-4230-9a2d-08db05ffbc0f X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2023 16:00:13.2526 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sSDo6UbcY0cGR/zVIpM2z5wJk9hxdcqUyNQwzZXhF6QHwzqQI1ZunhOULRi05rKWQHyq6cUmvxbcgqFMcNrOuw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4383 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSdsbCBvbiBhbiB1cGRhdGVkIHBhdGNoIHRoaXMgbW9ybmluZyB0aGF0IG9ubHkgZG9lcyB0aGUg bmV3IGJlaGF2aW9yLiBXZSBjYW4ndCByZXNldCB0aGUgcHJvY2luZGV4IGFzIGl0IGlzIHVzZWQg Zm9yIHRoZSBfVUlEIGFzIHdlbGwgYW5kIHdlIHdvdWxkIGVuZCB1cCB3aXRoIHRoZSBzYW1lIHZh bHVlIGluIHR3byBub2Rlcy4NCg0KLUplZmYNCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+IEZyb206IFBpZXJyZSBHb25kb2lzIDxwaWVycmUuZ29uZG9pc0Bhcm0uY29tPg0KPiBT ZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDMsIDIwMjMgNjoxMSBBTQ0KPiBUbzogSmVmZiBCcmFzZW4g PGpicmFzZW5AbnZpZGlhLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBTYW1pLk11 amF3YXJAYXJtLmNvbTsgQWxleGVpLkZlZG9yb3ZAYXJtLmNvbTsNCj4gcXVpY19sbGluZGhvbEBx dWljaW5jLmNvbTsgYXJkYit0aWFub2NvcmVAa2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BB VENIXSBEeW5hbWljVGFibGVzUGtnOiBBbGxvdyBtdWx0aXBsZSB0b3AgbGV2ZWwgcGh5c2ljYWwg bm9kZXMNCj4gDQo+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9y IGF0dGFjaG1lbnRzDQo+IA0KPiANCj4gT24gMi8yLzIzIDE4OjUzLCBKZWZmIEJyYXNlbiB3cm90 ZToNCj4gPiBUaGVyZSBhcmUgc29tZSBjYXNlcyAoZm9yIGV4YW1wbGUgdGhlIF9QU0wgbGlzdCBp biB0aGVybWFsIHpvbmVzKQ0KPiA+IHdoZXJlIHdlIG5lZWQgdG8gaGF2ZSBhIHJlZmVyZW5jZSB0 byB0aGUgbm9kZSBhbmQgd2UgaGF2ZSBiZWVuIGRvaW5nDQo+ID4gdGhhdCB2aWEgYW4gRXh0ZXJu IGFuZCBhIHJlZmVyZW5jZSB0byB0aGUgbm9kZSBwYXRoLiBJIGFtIHB1c2ggYSBwYXRjaA0KPiA+ IHdoZXJlIHRoZSBlZmZlY3RpdmVseSB0aGUgUENEIEkgYWRkZWQgd2FzIGZpeGVkIHRydWUgYnV0 IHdhcyB1bnN1cmUgaWYNCj4gPiB0aGF0IHdvdWxkIGhhdmUgdW5leHBlY3RlZCBpc3N1ZXMgd2l0 aCBvdGhlciB2ZW5kb3JzIHBsYXRmb3Jtcw0KPiANCj4gVGhlIGN1cnJlbnQgU3NkdENwdVRvcG9s b2d5R2VuZXJhdG9yIGRvZXNuJ3QgZ2VuZXJhdGUgYW4gQU1MIG5vZGUgZm9yIHRoZQ0KPiB0b3Ag bGV2ZWwgcGFja2FnZS4gRXZlbiB0aG91Z2ggdGhpcyBzZWVtIGNvbXBsaWFudCB0byB0aGUgQUNQ SSBzcGVjLCB0aGlzDQo+IGluZHVjZXMgYSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIEFTTCB0b3Bv bG9neSBkZXNjcmlwdGlvbiBhbmQgdGhlIFBQVFQNCj4gdG9wb2xvZ3kgZGVzY3JpcHRpb24uIEZv ciBpbnN0YW5jZSwgZm9yIHRoZSBKdW5vLCB0aGUgdG9wb2xvZ3kgZ2VuZXJhdGVkIGZvciB0aGUN Cj4gQUNQSSB0YWJsZXMgYXJlOg0KPiBQUFRUOg0KPiAoUEFDS0FHRSkNCj4gXC1MaXR0bGUgQ2x1 c3Rlcg0KPiAgICBcLUNQVVswLDMtNV0NCj4gXC1CaWcgQ2x1c3Rlcg0KPiAgICBcLUNQVVsxLTJd DQo+IA0KPiBTU0RUOg0KPiBMaXR0bGUgQ2x1c3Rlcg0KPiBcLUNQVVswLDMtNV0NCj4gQmlnIENs dXN0ZXINCj4gXC1DUFVbMS0yXQ0KPiANCj4gVG8gc29sdmUgeW91ciBpc3N1ZSwgdG8gaGF2ZSBt YXRjaGluZyB0b3BvbG9neSBkZXNjcmlwdGlvbnMsIGFuZCBhZnRlcg0KPiBkaXNjdXNzaW5nIHdp dGggU2FtaSwgaXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmU6DQo+IFNTRFQ6DQo+IChQQUNLQUdF KQ0KPiBcLUxpdHRsZSBDbHVzdGVyDQo+ICAgIFwtQ1BVWzAsMy01XQ0KPiBcLUJpZyBDbHVzdGVy DQo+ICAgIFwtQ1BVWzEtMl0NCj4gDQo+IFRoZSBKdW5vIGlzIHRoZSBvbmx5IHBsYXRmb3JtIHRo YXQgcHVibGljbHkgdXNlcyB0aGUgU3NkdENwdVRvcG9sb2d5R2VuZXJhdG9yLA0KPiBzbyBJIGFt IG5vdCBzdXJlIGhvdyBvdGhlciBwbGF0Zm9ybXMgc3VwcG9ydCBzaG91bGQgYmUgaGFuZGxlZC4N Cj4gDQo+IEFib3V0IHRoZSBjb2RlIGl0c2VsZiwgSSB0aGluayB0aGUgUHJvY0NvbnRhaW5lcklu ZGV4IHNob3VsZCBhbHNvIGJlIHJlc2V0IGluDQo+IENyZWF0ZUFtbENwdVRvcG9sb2d5VHJlZSgp IHdoZW4gZ2VuZXJhdGluZyBhIG5ldyBsZXZlbCBvZiBjb250YWluZXJzIChpZiBpdCBpcw0KPiBk ZWNpZGVkIHRvIGdvIHRoaXMgd2F5KS4NCj4gDQo+IFJlZ2FyZHMsDQo+IFBpZXJyZQ0KPiANCj4g Pg0KPiA+IC1KZWZmDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4g RnJvbTogUGllcnJlIEdvbmRvaXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+DQo+ID4+IFNlbnQ6 IFRodXJzZGF5LCBGZWJydWFyeSAyLCAyMDIzIDEwOjQ5IEFNDQo+ID4+IFRvOiBKZWZmIEJyYXNl biA8amJyYXNlbkBudmlkaWEuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPj4gQ2M6IFNh bWkuTXVqYXdhckBhcm0uY29tOyBBbGV4ZWkuRmVkb3JvdkBhcm0uY29tOw0KPiA+PiBxdWljX2xs aW5kaG9sQHF1aWNpbmMuY29tOyBhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnDQo+ID4+IFN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIER5bmFtaWNUYWJsZXNQa2c6IEFsbG93IG11bHRpcGxlIHRvcCBsZXZl bA0KPiA+PiBwaHlzaWNhbCBub2Rlcw0KPiA+Pg0KPiA+PiBFeHRlcm5hbCBlbWFpbDogVXNlIGNh dXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+Pg0KPiA+Pg0KPiA+PiBIZWxs byBKZWZmLA0KPiA+PiBJIHdhcyBhc3N1bWluZyB0aGF0IG5vIG90aGVyIG1vZHVsZSB3b3VsZCBy ZWx5IG9uIHRoZSBBTUwgcGF0aCB0bw0KPiA+PiBhY2Nlc3MgYW4gQU1MIG5vZGUgYW5kIHRoYXQg bm9kZXMgc2hvdWxkIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZWlyDQo+ID4+IGNoYXJhY3Rlcmlz dGljcyBpbnN0ZWFkLCBpLmUuIGludGVybmFsIHByb3BlcnRpZXMvTmFtZS9VaWQuDQo+ID4+IFRo ZXJlIGFyZSBjdXJyZW50bHkgbm8gcHVibGljIEFQSSBhbGxvd2luZyB0byBkbyBzbywgYnV0IHRo ZXJlIGFyZQ0KPiA+PiBpbnRlcm5hbCBBUElzIHRoYXQgY291bGQgYmUgcmVsaWVkIG9uIHRvIGNy ZWF0ZSB0aGVtLg0KPiA+Pg0KPiA+PiBJJ20gbm90IHN1cmUgd2hhdCBTYW1pIGlzIHRoaW5raW5n LA0KPiA+Pg0KPiA+PiBSZWdhcmRzLA0KPiA+PiBQaWVycmUNCj4gPj4NCj4gPj4gT24gMi8yLzIz IDE3OjQ4LCBKZWZmIEJyYXNlbiB3cm90ZToNCj4gPj4+IEp1c3QgdG8gY2xhcmlmeSB5b3UgYXJl IHN1Z2dlc3RpbmcgdGhhdCBhbGwgQ1BVIG5vZGVzIGdlbmVyYXRlZCB2aWENCj4gPj4+IHRoaXMg d2l0aCBoYXZlIGFuIG91dGVyIHByb2Nlc3NvciBjb250YWluZXI/IEkgYW0gZmluZSB3aXRoIHRo YXQgYnV0DQo+ID4+PiB3YXMgY29uY2VybmVkIHdpdGggYSBjaGFuZ2UgaW4gYmVoYXZpb3IgdG8g b3RoZXIgcGxhdGZvcm1zIGluIGNhc2UNCj4gPj4+IHRoZXkgYXJlIGV4cGVjdGluZyB0aGUgQ1BV cyB0byBqdXN0IGJlIHVuZGVyIFxTQi5DMDB4IGluc3RlYWQgb2YNCj4gPj4+IFxTQi5DMDAwLkMw MHgNCj4gPj4+DQo+ID4+PiAtSmVmZg0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBQaWVycmUgR29uZG9pcyA8cGllcnJlLmdvbmRv aXNAYXJtLmNvbT4NCj4gPj4+PiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkgMiwgMjAyMyA1OjAz IEFNDQo+ID4+Pj4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBkZXZlbEBl ZGsyLmdyb3Vwcy5pbw0KPiA+Pj4+IENjOiBTYW1pLk11amF3YXJAYXJtLmNvbTsgQWxleGVpLkZl ZG9yb3ZAYXJtLmNvbTsNCj4gPj4+PiBxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tOyBhcmRiK3Rp YW5vY29yZUBrZXJuZWwub3JnDQo+ID4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSF0gRHluYW1pY1Rh Ymxlc1BrZzogQWxsb3cgbXVsdGlwbGUgdG9wIGxldmVsDQo+ID4+Pj4gcGh5c2ljYWwgbm9kZXMN Cj4gPj4+Pg0KPiA+Pj4+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtz IG9yIGF0dGFjaG1lbnRzDQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IEhlbGxvIEplZmYsDQo+ID4+ Pj4gSSB0aGluayBpdCdzIG9rIHRvIG1ha2UgdGhpcyB0aGUgZ2VuZXJpYyBjYXNlIGFuZCByZW1v dmUgdGhlIFBjZCB0bw0KPiA+Pj4+IGVuYWJsZQ0KPiA+PiBpdC4NCj4gPj4+PiBDZiBBQ1BJIDYu NSwgNS4yLjMwLjEgUHJvY2Vzc29yIGhpZXJhcmNoeSBub2RlIHN0cnVjdHVyZSAoVHlwZSAwKToN Cj4gPj4+Pg0KPiA+Pj4+ICJNdWx0aXBsZSB0cmVlcyBtYXkgYmUgZGVzY3JpYmVkLCBjb3Zlcmlu ZyBmb3IgZXhhbXBsZSBtdWx0aXBsZQ0KPiA+PiBwYWNrYWdlcy4NCj4gPj4+PiBGb3IgdGhlIHJv b3Qgb2YgYSB0cmVlLCB0aGUgcGFyZW50IHBvaW50ZXIgc2hvdWxkIGJlIDAuIg0KPiA+Pj4+IGFu ZA0KPiA+Pj4+ICJFYWNoIHZhbGlkIHByb2Nlc3NvciBtdXN0IGJlbG9uZyB0byBleGFjdGx5IG9u ZSBwYWNrYWdlLiBUaGF0IGlzLA0KPiA+Pj4+IHRoZSBsZWFmIG11c3QgaXRzZWxmIGJlIGEgcGh5 c2ljYWwgcGFja2FnZSBvciBoYXZlIGFuIGFuY2VzdG9yDQo+ID4+Pj4gbWFya2VkIGFzIGEgcGh5 c2ljYWwgcGFja2FnZS4iDQo+ID4+Pj4NCj4gPj4+PiBzbyB0aGlzIG9yaWdpbmFsIGNvbW1lbnQg aXMgaW5jb3JyZWN0Og0KPiA+Pj4+ICIiIg0KPiA+Pj4+IC8vIEl0IGlzIGFzc3VtZWQgdGhhdCB0 aGVyZSBpcyBvbmUgdW5pcXVlDQo+ID4+IENNX0FSTV9QUk9DX0hJRVJBUkNIWV9JTkZPDQo+ID4+ Pj4gLy8gc3RydWN0dXJlIHdpdGggbm8gUGFyZW50VG9rZW4gYW5kIHRoZQ0KPiA+Pj4+IEVGSV9B Q1BJXzZfM19QUFRUX1BBQ0tBR0VfUEhZU0lDQUwNCj4gPj4+PiAvLyBmbGFnIHNldC4gQWxsIG90 aGVyIENNX0FSTV9QUk9DX0hJRVJBUkNIWV9JTkZPIGFyZSBub24tcGh5c2ljYWwNCj4gPj4+PiBh bmQgLy8gaGF2ZSBhIFBhcmVudFRva2VuLg0KPiA+Pj4+ICIiIg0KPiA+Pj4+DQo+ID4+Pj4gT24g Mi8xLzIzIDE3OjQyLCBKZWZmIEJyYXNlbiB3cm90ZToNCj4gPj4+Pj4gSW4gU1NEVCBDUFUgdG9w b2xvZ3kgZ2VuZXJhdG9yIGFsbG93IGZvciBtdWx0aXBsZSB0b3AgbGV2ZWwNCj4gPj4+Pj4gcGh5 c2ljYWwgbm9kZXMgYXMgd291bGQgYmUgc2VlbiB3aXRoIGEgbXVsdGktc29ja2V0IHN5c3RlbS4g VGhpcw0KPiA+Pj4+PiB3aWxsIGJlIGF1dG8gZGV0ZWN0ZWQgaWYgdGhlcmUgYXJlIG1vcmUgdGhl biBvbmUgcGh5c2ljYWwgZGV2aWNlDQo+ID4+Pj4+IGFuZCB0aGVyZSBpcyBhIG5ldyBQQ0QgdG8g ZW5hYmxlIGZvcmNpbmcgb2YgYSB0b3AgbGV2ZWwgcHJvY2Vzc29yDQo+ID4+Pj4+IGNvbnRhaW5l ciB0byBhbGxvdyBmb3IgY29uc2lzdGVuY3kgZm9yIHN5c3RlbXMgdGhhdCBjYW4gYmUgZWl0aGVy DQo+ID4+Pj4+IHNpbmdsZSBvciBtdWx0aQ0KPiA+PiBzb2NrZXQuDQo+ID4+Pj4+DQo+ID4+Pj4+ IFNpZ25lZC1vZmYtYnk6IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4+Pj4+ IC0tLQ0KPiA+Pj4+PiAgICAgRHluYW1pY1RhYmxlc1BrZy9EeW5hbWljVGFibGVzUGtnLmRlYyAg ICAgICAgIHwgIDMgKw0KPiA+Pj4+PiAgICAgLi4uL1NzZHRDcHVUb3BvbG9neUdlbmVyYXRvci5j ICAgICAgICAgICAgICAgIHwgNjYgKysrKysrKysrKy0tLS0tLS0tLQ0KPiA+Pj4+PiAgICAgLi4u L1NzZHRDcHVUb3BvbG9neUxpYkFybS5pbmYgICAgICAgICAgICAgICAgIHwgIDQgKysNCj4gPj4+ Pj4gICAgIDMgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0p DQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9EeW5hbWljVGFibGVzUGtnL0R5bmFtaWNU YWJsZXNQa2cuZGVjDQo+ID4+Pj4+IGIvRHluYW1pY1RhYmxlc1BrZy9EeW5hbWljVGFibGVzUGtn LmRlYw0KPiA+Pj4+PiBpbmRleCBhZGMyZTY3Y2JmLi5hMDYxYjcwMzIyIDEwMDY0NA0KPiA+Pj4+ PiAtLS0gYS9EeW5hbWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ID4+Pj4+ICsr KyBiL0R5bmFtaWNUYWJsZXNQa2cvRHluYW1pY1RhYmxlc1BrZy5kZWMNCj4gPj4+Pj4gQEAgLTYz LDUgKzYzLDggQEANCj4gPj4+Pj4gICAgICAgIyBVc2UgUENJIHNlZ21lbnQgbnVtYmVycyBhcyBV SUQNCj4gPj4+Pj4NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+PiBnRWRraWlEeW5hbWljVGFibGVzUGtn VG9rZW5TcGFjZUd1aWQuUGNkUGNpVXNlU2VnbWVudEFzVWlkfEZBTFNFfEINCj4gPj4+PiBPT0xF DQo+ID4+Pj4+IEFOfDB4NDAwMDAwMDkNCj4gPj4+Pj4NCj4gPj4+Pj4gKyAgIyBGb3JjZSB0b3Ag bGV2ZWwgY29udGFpbmVyIGZvciBzaW5nbGUgc29ja2V0IGRldmljZXMNCj4gPj4+Pj4gKw0KPiA+ Pj4+DQo+ID4+IGdFZGtpaUR5bmFtaWNUYWJsZXNQa2dUb2tlblNwYWNlR3VpZC5QY2RGb3JjZVRv cExldmVsUHJvY2Vzc29yQ29udGFpDQo+ID4+Pj4+ICsgbmVyfEZBTFNFfEJPT0xFQU58MHg0MDAw MDAwQQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgICBbR3VpZHNdDQo+ID4+Pj4+ICAgICAgIGdFZGtp aUR5bmFtaWNUYWJsZXNQa2dUb2tlblNwYWNlR3VpZCA9IHsgMHhhYjIyNmU2NiwgMHgzMWQ4LA0K PiA+Pj4+PiAweDQ2MTMsIHsgMHg4NywgMHg5ZCwgMHhkMiwgMHhmYSwgMHhiNiwgMHgxMCwgMHgy NiwgMHgzYyB9IH0gZGlmZg0KPiA+Pj4+PiAtLWdpdA0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+IGEv RHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0Q3B1VG9wb2xvZ3lMaWJB cm0vU3NkdENwDQo+ID4+Pj4gdVQNCj4gPj4+Pj4gb3BvbG9neUdlbmVyYXRvci5jDQo+ID4+Pj4+ DQo+ID4+Pj4NCj4gPj4gYi9EeW5hbWljVGFibGVzUGtnL0xpYnJhcnkvQWNwaS9Bcm0vQWNwaVNz ZHRDcHVUb3BvbG9neUxpYkFybS9Tc2R0Q3ANCj4gPj4+PiB1VA0KPiA+Pj4+PiBvcG9sb2d5R2Vu ZXJhdG9yLmMNCj4gPj4+Pj4gaW5kZXggYzI0ZGE4ZWM3MS4uNThmODZmZjUwOCAxMDA2NDQNCj4g Pj4+Pj4gLS0tDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4gYS9EeW5hbWljVGFibGVzUGtnL0xpYnJh cnkvQWNwaS9Bcm0vQWNwaVNzZHRDcHVUb3BvbG9neUxpYkFybS9Tc2R0Q3ANCj4gPj4+PiB1VA0K PiA+Pj4+PiBvcG9sb2d5R2VuZXJhdG9yLmMNCj4gPj4+Pj4gKysrDQo+ID4+Pj4gYi9EeW5hbWlj VGFibGVzUGtnL0xpYnJhcnkvQWNwaS9Bcm0vQWNwaVNzZHRDcHVUb3BvbG9neUxpYkFybS9Tc2R0 DQo+ID4+Pj4+ICsrKyBDcHVUb3BvbG9neUdlbmVyYXRvci5jDQo+ID4+Pj4+IEBAIC0yMiw2ICsy Miw3IEBADQo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8TGlicmFyeS9BY3BpSGVscGVyTGliLmg+DQo+ ID4+Pj4+ICAgICAjaW5jbHVkZSA8TGlicmFyeS9UYWJsZUhlbHBlckxpYi5oPg0KPiA+Pj4+PiAg ICAgI2luY2x1ZGUgPExpYnJhcnkvQW1sTGliL0FtbExpYi5oPg0KPiA+Pj4+PiArI2luY2x1ZGUg PExpYnJhcnkvUGNkTGliLmg+DQo+ID4+Pj4+ICAgICAjaW5jbHVkZSA8UHJvdG9jb2wvQ29uZmln dXJhdGlvbk1hbmFnZXJQcm90b2NvbC5oPg0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgI2luY2x1ZGUg IlNzZHRDcHVUb3BvbG9neUdlbmVyYXRvci5oIg0KPiA+Pj4+PiBAQCAtODE0LDcgKzgxNSw4IEBA IENyZWF0ZUFtbFByb2Nlc3NvckNvbnRhaW5lciAoDQo+ID4+Pj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvY29sIEludGVyZmFjZS4NCj4gPj4+Pj4gICAg ICAgQHBhcmFtIFtpbl0gTm9kZVRva2VuICAgICAgICAgICAgICAgVG9rZW4gb2YgdGhlDQo+ID4+ Pj4gQ01fQVJNX1BST0NfSElFUkFSQ0hZX0lORk8NCj4gPj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5IGhhbmRsZWQuDQo+ID4+Pj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbm5vdCBiZSBDTV9OVUxMX1RPS0VO Lg0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTV9OVUxM X1RPS0VOIGlmIHRvcCBsZXZlbCBjb250YWluZXINCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIGNyZWF0ZWQuDQo+ID4+Pj4+ICAgICAgIEBw YXJhbSBbaW5dIFBhcmVudE5vZGUgICAgICAgICAgICAgIFBhcmVudCBub2RlIHRvIGF0dGFjaCB0 aGUgY3JlYXRlZA0KPiA+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBub2RlIHRvLg0KPiA+Pj4+PiAgICAgICBAcGFyYW0gW2luLG91dF0gUHJvY0NvbnRhaW5l ckluZGV4ICBQb2ludGVyIHRvIHRoZSBjdXJyZW50DQo+ID4+Pj4+IHByb2Nlc3NvciBjb250YWlu ZXIgQEAgLTg0MSwxMiArODQzLDEyIEBADQo+ID4+IENyZWF0ZUFtbENwdVRvcG9sb2d5VHJlZQ0K PiA+Pj4+ICgNCj4gPj4+Pj4gICAgICAgQU1MX09CSkVDVF9OT0RFX0hBTkRMRSAgUHJvY0NvbnRh aW5lck5vZGU7DQo+ID4+Pj4+ICAgICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgIFVpZDsNCj4g Pj4+Pj4gICAgICAgVUlOVDE2ICAgICAgICAgICAgICAgICAgTmFtZTsNCj4gPj4+Pj4gKyAgVUlO VDMyICAgICAgICAgICAgICAgICAgTm9kZUZsYWdzOw0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgICBB U1NFUlQgKEdlbmVyYXRvciAhPSBOVUxMKTsNCj4gPj4+Pj4gICAgICAgQVNTRVJUIChHZW5lcmF0 b3ItPlByb2NOb2RlTGlzdCAhPSBOVUxMKTsNCj4gPj4+Pj4gICAgICAgQVNTRVJUIChHZW5lcmF0 b3ItPlByb2NOb2RlQ291bnQgIT0gMCk7DQo+ID4+Pj4+ICAgICAgIEFTU0VSVCAoQ2ZnTWdyUHJv dG9jb2wgIT0gTlVMTCk7DQo+ID4+Pj4+IC0gIEFTU0VSVCAoTm9kZVRva2VuICE9IENNX05VTExf VE9LRU4pOw0KPiA+Pj4+PiAgICAgICBBU1NFUlQgKFBhcmVudE5vZGUgIT0gTlVMTCk7DQo+ID4+ Pj4+ICAgICAgIEFTU0VSVCAoUHJvY0NvbnRhaW5lckluZGV4ICE9IE5VTEwpOw0KPiA+Pj4+Pg0K PiA+Pj4+PiBAQCAtODkzLDggKzg5NSwxNCBAQCBDcmVhdGVBbWxDcHVUb3BvbG9neVRyZWUgKA0K PiA+Pj4+PiAgICAgICAgICAgfSBlbHNlIHsNCj4gPj4+Pj4gICAgICAgICAgICAgLy8gSWYgdGhp cyBpcyBub3QgYSBDcHUsIHRoZW4gdGhpcyBpcyBhIHByb2Nlc3NvciBjb250YWluZXIuDQo+ID4+ Pj4+DQo+ID4+Pj4+ICsgICAgICAgIE5vZGVGbGFncyA9IEdlbmVyYXRvci0+UHJvY05vZGVMaXN0 W0luZGV4XS5GbGFnczsNCj4gPj4+Pj4gKyAgICAgICAgLy8gQWxsb3cgcGh5c2ljYWwgcHJvcGVy dHkgZm9yIHRvcCBsZXZlbCBub2Rlcw0KPiA+Pj4+PiArICAgICAgICBpZiAoTm9kZVRva2VuID09 IENNX05VTExfVE9LRU4pIHsNCj4gPj4+Pj4gKyAgICAgICAgICBOb2RlRmxhZ3MgJj0gfkVGSV9B Q1BJXzZfM19QUFRUX1BBQ0tBR0VfUEhZU0lDQUw7DQo+ID4+Pj4+ICsgICAgICAgIH0NCj4gPj4+ Pj4gKw0KPiA+Pj4+DQo+ID4+Pj4gRXZlbiB0aG91Z2ggaXQgd2FzIG5ldmVyIGVuY291bnRlcmVk IHNvIGZhciwgaXQgc2hvdWxkIGFsc28gYmUNCj4gPj4+PiBwb3NzaWJsZSB0byBoYXZlIGEgcGh5 c2ljYWwgcGFja2FnZSBjb25zaXN0aW5nIG9mIG9ubHkgb25lIENQVS4gU28NCj4gPj4+PiBJIGd1 ZXNzIGl0IHdvdWxkIGJlIGJldHRlciB0byBjcmVhdGUgYSBmdW5jdGlvbiB0byBjaGVjayB0aGUg ZmxhZ3MsDQo+ID4+Pj4gd2hldGhlciB0aGUgUHJvY05vZGUgaXMgYSBDUFUgb3IgYSBjbHVzdGVy Lg0KPiA+Pj4+DQo+ID4+Pj4gSSBhdHRhY2hlZCBhIFdpcCBwYXRjaCBiYXNlIG9uIHlvdXIgd29y ayB3aGVyZSBzdWNoIGZ1bmN0aW9uIGlzIGNyZWF0ZWQuDQo+ID4+Pj4gRmVlbCBmcmVlIHRvIHRh a2UgaXQvbW9kaWZ5IGl0IGF0IHlvdXIgd2lsbC4NCj4gPj4+Pg0KPiA+Pj4+PiAgICAgICAgICAg ICAvLyBBY3BpIHByb2Nlc3NvciBJZCBmb3IgY2x1c3RlcnMgaXMgbm90IGhhbmRsZWQuDQo+ID4+ Pj4+IC0gICAgICAgIGlmICgoR2VuZXJhdG9yLT5Qcm9jTm9kZUxpc3RbSW5kZXhdLkZsYWdzICYN Cj4gPj4+PiBQUFRUX1BST0NFU1NPUl9NQVNLKSAhPQ0KPiA+Pj4+PiArICAgICAgICBpZiAoKE5v ZGVGbGFncyAmIFBQVFRfUFJPQ0VTU09SX01BU0spICE9DQo+ID4+Pj4+ICAgICAgICAgICAgICAg ICBQUFRUX0NMVVNURVJfUFJPQ0VTU09SX01BU0spDQo+ID4+Pj4+ICAgICAgICAgICAgIHsNCj4g Pj4+Pj4gICAgICAgICAgICAgICBERUJVRyAoKA0KPiA+Pj4+PiBAQCAtOTczLDEwICs5ODEsMTAg QEAgQ3JlYXRlVG9wb2xvZ3lGcm9tUHJvY0hpZXJhcmNoeSAoDQo+ID4+Pj4+ICAgICAgIElOICAg ICAgICBBTUxfT0JKRUNUX05PREVfSEFORExFICAgICAgICAgICAgICAgICAgICAgICAgU2NvcGVO b2RlDQo+ID4+Pj4+ICAgICAgICkNCj4gPj4+Pj4gICAgIHsNCj4gPj4+Pj4gLSAgRUZJX1NUQVRV UyAgU3RhdHVzOw0KPiA+Pj4+PiAtICBVSU5UMzIgICAgICBJbmRleDsNCj4gPj4+Pj4gLSAgVUlO VDMyICAgICAgVG9wTGV2ZWxQcm9jTm9kZUluZGV4Ow0KPiA+Pj4+PiAtICBVSU5UMzIgICAgICBQ cm9jQ29udGFpbmVySW5kZXg7DQo+ID4+Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgU3RhdHVzOw0K PiA+Pj4+PiArICBVSU5UMzIgICAgICAgICAgIEluZGV4Ow0KPiA+Pj4+PiArICBDTV9PQkpFQ1Rf VE9LRU4gIFRvcExldmVsVG9rZW47DQo+ID4+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgUHJvY0Nv bnRhaW5lckluZGV4Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgICBBU1NFUlQgKEdlbmVyYXRvciAh PSBOVUxMKTsNCj4gPj4+Pj4gICAgICAgQVNTRVJUIChHZW5lcmF0b3ItPlByb2NOb2RlQ291bnQg IT0gMCk7IEBAIC05ODQsOCArOTkyLDggQEANCj4gPj4+Pj4gQ3JlYXRlVG9wb2xvZ3lGcm9tUHJv Y0hpZXJhcmNoeSAoDQo+ID4+Pj4+ICAgICAgIEFTU0VSVCAoQ2ZnTWdyUHJvdG9jb2wgIT0gTlVM TCk7DQo+ID4+Pj4+ICAgICAgIEFTU0VSVCAoU2NvcGVOb2RlICE9IE5VTEwpOw0KPiA+Pj4+Pg0K PiA+Pj4+PiAtICBUb3BMZXZlbFByb2NOb2RlSW5kZXggPSBNQVhfVUlOVDMyOw0KPiA+Pj4+PiAt ICBQcm9jQ29udGFpbmVySW5kZXggICAgPSAwOw0KPiA+Pj4+PiArICBUb3BMZXZlbFRva2VuICAg ICAgPSBDTV9OVUxMX1RPS0VOOw0KPiA+Pj4+PiArICBQcm9jQ29udGFpbmVySW5kZXggPSAwOw0K PiA+Pj4+Pg0KPiA+Pj4+PiAgICAgICBTdGF0dXMgPSBUb2tlblRhYmxlSW5pdGlhbGl6ZSAoR2Vu ZXJhdG9yLCBHZW5lcmF0b3ItDQo+ID4+PiBQcm9jTm9kZUNvdW50KTsNCj4gPj4+Pj4gICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+PiBAQCAtOTkzLDMzICsxMDAxLDI3IEBA IENyZWF0ZVRvcG9sb2d5RnJvbVByb2NIaWVyYXJjaHkgKA0KPiA+Pj4+PiAgICAgICAgIHJldHVy biBTdGF0dXM7DQo+ID4+Pj4+ICAgICAgIH0NCj4gPj4+Pj4NCj4gPj4+Pj4gLSAgLy8gSXQgaXMg YXNzdW1lZCB0aGF0IHRoZXJlIGlzIG9uZSB1bmlxdWUNCj4gPj4+Pj4gQ01fQVJNX1BST0NfSElF UkFSQ0hZX0lORk8NCj4gPj4+Pj4gLSAgLy8gc3RydWN0dXJlIHdpdGggbm8gUGFyZW50VG9rZW4g YW5kIHRoZQ0KPiA+Pj4+PiBFRklfQUNQSV82XzNfUFBUVF9QQUNLQUdFX1BIWVNJQ0FMDQo+ID4+ Pj4+IC0gIC8vIGZsYWcgc2V0LiBBbGwgb3RoZXIgQ01fQVJNX1BST0NfSElFUkFSQ0hZX0lORk8g YXJlDQo+ID4+Pj4+IG5vbi1waHlzaWNhbCBhbmQNCj4gPj4+Pj4gLSAgLy8gaGF2ZSBhIFBhcmVu dFRva2VuLg0KPiA+Pj4+PiAtICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBHZW5lcmF0b3ItPlBy b2NOb2RlQ291bnQ7IEluZGV4KyspIHsNCj4gPj4+Pj4gLSAgICBpZiAoKEdlbmVyYXRvci0+UHJv Y05vZGVMaXN0W0luZGV4XS5QYXJlbnRUb2tlbiA9PQ0KPiA+Pj4+IENNX05VTExfVE9LRU4pICYm DQo+ID4+Pj4+IC0gICAgICAgIChHZW5lcmF0b3ItPlByb2NOb2RlTGlzdFtJbmRleF0uRmxhZ3Mg Jg0KPiA+Pj4+PiAtICAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfUEFDS0FHRV9QSFlTSUNBTCkp DQo+ID4+Pj4+IC0gICAgew0KPiA+Pj4+PiAtICAgICAgaWYgKFRvcExldmVsUHJvY05vZGVJbmRl eCAhPSBNQVhfVUlOVDMyKSB7DQo+ID4+Pj4+IC0gICAgICAgIERFQlVHICgoDQo+ID4+Pj4+IC0g ICAgICAgICAgREVCVUdfRVJST1IsDQo+ID4+Pj4+IC0gICAgICAgICAgIkVSUk9SOiBTU0RULUNQ VS1UT1BPTE9HWTogVG9wIGxldmVsDQo+ID4+Pj4gQ01fQVJNX1BST0NfSElFUkFSQ0hZX0lORk8g Ig0KPiA+Pj4+PiAtICAgICAgICAgICJtdXN0IGJlIHVuaXF1ZVxuIg0KPiA+Pj4+PiAtICAgICAg ICAgICkpOw0KPiA+Pj4+PiAtICAgICAgICBBU1NFUlQgKDApOw0KPiA+Pj4+PiAtICAgICAgICBn b3RvIGV4aXRfaGFuZGxlcjsNCj4gPj4+Pj4gLSAgICAgIH0NCj4gPj4+Pj4gKyAgaWYgKCFQY2RH ZXRCb29sIChQY2RGb3JjZVRvcExldmVsUHJvY2Vzc29yQ29udGFpbmVyKSkgew0KPiA+Pj4+PiAr ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEdlbmVyYXRvci0+UHJvY05vZGVDb3VudDsgSW5k ZXgrKykgew0KPiA+Pj4+PiArICAgICAgaWYgKChHZW5lcmF0b3ItPlByb2NOb2RlTGlzdFtJbmRl eF0uUGFyZW50VG9rZW4gPT0NCj4gPj4+PiBDTV9OVUxMX1RPS0VOKSAmJg0KPiA+Pj4+PiArICAg ICAgICAgIChHZW5lcmF0b3ItPlByb2NOb2RlTGlzdFtJbmRleF0uRmxhZ3MgJg0KPiA+Pj4+PiAr ICAgICAgICAgICBFRklfQUNQSV82XzNfUFBUVF9QQUNLQUdFX1BIWVNJQ0FMKSkNCj4gPj4+Pj4g KyAgICAgIHsNCj4gPj4+Pj4gKyAgICAgICAgLy8gTXVsdGktc29ja2V0IGRldGVjdGVkLCB1c2lu ZyB0b3AgbGV2ZWwgY29udGFpbmVycw0KPiA+Pj4+PiArICAgICAgICBpZiAoVG9wTGV2ZWxUb2tl biAhPSBDTV9OVUxMX1RPS0VOKSB7DQo+ID4+Pj4+ICsgICAgICAgICAgVG9wTGV2ZWxUb2tlbiA9 IENNX05VTExfVE9LRU47DQo+ID4+Pj4+ICsgICAgICAgICAgYnJlYWs7DQo+ID4+Pj4+ICsgICAg ICAgIH0NCj4gPj4+Pj4NCj4gPj4+Pj4gLSAgICAgIFRvcExldmVsUHJvY05vZGVJbmRleCA9IElu ZGV4Ow0KPiA+Pj4+PiAtICAgIH0NCj4gPj4+Pj4gLSAgfSAvLyBmb3INCj4gPj4+Pj4gKyAgICAg ICAgVG9wTGV2ZWxUb2tlbiA9IEdlbmVyYXRvci0+UHJvY05vZGVMaXN0W0luZGV4XS5Ub2tlbjsN Cj4gPj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4gKyAgICB9IC8vIGZvcg0KPiA+Pj4+PiArICB9DQo+ ID4+Pj4+DQo+ID4+Pj4+ICAgICAgIFN0YXR1cyA9IENyZWF0ZUFtbENwdVRvcG9sb2d5VHJlZSAo DQo+ID4+Pj4+ICAgICAgICAgICAgICAgICAgR2VuZXJhdG9yLA0KPiA+Pj4+PiAgICAgICAgICAg ICAgICAgIENmZ01nclByb3RvY29sLA0KPiA+Pj4+PiAtICAgICAgICAgICAgIEdlbmVyYXRvci0+ UHJvY05vZGVMaXN0W1RvcExldmVsUHJvY05vZGVJbmRleF0uVG9rZW4sDQo+ID4+Pj4+ICsgICAg ICAgICAgICAgVG9wTGV2ZWxUb2tlbiwNCj4gPj4+Pj4gICAgICAgICAgICAgICAgICBTY29wZU5v ZGUsDQo+ID4+Pj4+ICAgICAgICAgICAgICAgICAgJlByb2NDb250YWluZXJJbmRleA0KPiA+Pj4+ PiAgICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+IEBAIC0xMTA2LDcgKzExMDgsNyBAQCBDcmVh dGVUb3BvbG9neUZyb21HaWNDICgNCj4gPj4+Pj4gICAgICAgICAgICAgYnJlYWs7DQo+ID4+Pj4+ ICAgICAgICAgICB9DQo+ID4+Pj4+ICAgICAgICAgfQ0KPiA+Pj4+PiAtICB9IC8vIGZvcg0KPiA+ Pj4+PiArICB9ICAgLy8gZm9yDQo+ID4+Pj4NCj4gPj4+PiBJcyBpdCBwb3NzaWJsZSB0byByZW1v dmUgdGhpcyBjaGFuZ2UgPw0KPiA+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+ICAgICAgIHJldHVybiBT dGF0dXM7DQo+ID4+Pj4+ICAgICB9DQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+ Pg0KPiA+PiBhL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdENwdVRv cG9sb2d5TGliQXJtL1NzZHRDcA0KPiA+Pj4+IHVUDQo+ID4+Pj4+IG9wb2xvZ3lMaWJBcm0uaW5m DQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4gYi9EeW5hbWljVGFibGVzUGtnL0xpYnJhcnkvQWNwaS9B cm0vQWNwaVNzZHRDcHVUb3BvbG9neUxpYkFybS9Tc2R0Q3ANCj4gPj4+PiB1VA0KPiA+Pj4+PiBv cG9sb2d5TGliQXJtLmluZg0KPiA+Pj4+PiBpbmRleCAzZTJkMTU0NzQ5Li4wMGFkZmU5ODZmIDEw MDY0NA0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+PiBhL0R5bmFtaWNUYWJsZXNQ a2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdENwdVRvcG9sb2d5TGliQXJtL1NzZHRDcA0KPiA+ Pj4+IHVUDQo+ID4+Pj4+IG9wb2xvZ3lMaWJBcm0uaW5mDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+IGIv RHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0Q3B1VG9wb2xvZ3lMaWJB cm0vU3NkdA0KPiA+Pj4+PiArKysgQ3B1VG9wb2xvZ3lMaWJBcm0uaW5mDQo+ID4+Pj4+IEBAIC0z MSwzICszMSw3IEBADQo+ID4+Pj4+ICAgICAgIEFjcGlIZWxwZXJMaWINCj4gPj4+Pj4gICAgICAg QW1sTGliDQo+ID4+Pj4+ICAgICAgIEJhc2VMaWINCj4gPj4+Pj4gKyAgUGNkTGliDQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gK1tQY2RdDQo+ID4+Pj4+ICsNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+PiArZ0Vk a2lpRHluYW1pY1RhYmxlc1BrZ1Rva2VuU3BhY2VHdWlkLlBjZEZvcmNlVG9wTGV2ZWxQcm9jZXNz b3JDb250YQ0KPiA+Pj4+IGluDQo+ID4+Pj4+ICtlcg0K