From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (NAM11-BN8-obe.outbound.protection.outlook.com [40.107.236.41]) by mx.groups.io with SMTP id smtpd.web10.15743.1675442286936317988 for ; Fri, 03 Feb 2023 08:38:07 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=O1YlF6ZH; 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.236.41, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jw14kgKzVGe4TVmqF5XRg36IK2Sffi36KZva6WKJmxJ5cwm9L+y/qCjebImQukfMhk6+rhx5eWAqSCcCfVsDm2CPVNAMnIi2bL/YSskzGOROSdAtxxgto6VddOboQJTVKdeBOmHjtvbpQariL2O/f4i7QHOPQa7nE+d3agpQepH0pBMochugT+PHVucZMO1hfwJXR0jl0AhD652hIPLB+pcLO0GR8XYrgvbNHm9Y+58fmos3KqrXb0aBikyXjES9x2fMGk/Xyc4HaBSzj5pVODqkbg5dZRAZiEATbI6YkDGWEE2SvSJSZMn8aH8gu1LKgCWQkqwbt2+jvuYck23FMg== 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=43r1LcWVuozWqNBrJ0d8xeEwmA1Kh9dmzFujtMS0mJ4=; b=mDwb3uY16IwheGQxzJiFoxZ3Ma5VopqdTmT3YBz0N6Yy/Z/xBD8fMKU8SXzapand7c5wz16VWevZzbyfQXKIywNH0mzrTg8nnWT9VwEr6lrP+n7JNLHxfafYqrQEarvEdeHA1NhynnsNTFdhXn3pCn8GRqdgTuCal3zwl/tv0KZ8S4ZmsMyfjzvYJ8BiSCHJp/9aKPiaRXqbdEfzx8Nrq4nF+p1hbvpJL6ObwWH53PnstNlZw7ub0YkbL7FNXTJhL1h6XwyrtVmBIa83BVDwJJbRG57yQr6J4O42Go52MgHV6CA4hL2t6I2ycm6px7Y7Fi78RXJREuHt4Qvh6jy42g== 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=43r1LcWVuozWqNBrJ0d8xeEwmA1Kh9dmzFujtMS0mJ4=; b=O1YlF6ZHOyAqSzCmWpay18bbE3TFcL97ev0WV4vKXy2Z3bPk7DaanGqAroaK1Cl4n+QH7Lwr25baD5PYOsD4moVc3Fx6uvOnbBmLuBCVPB/sbwYQPQUEOual/FJUGezgf2jScVfJY8AvOYR2twQT2OJ48PmnFPlByyGjgObbjIvmtB0xtGzzG+5Nya50UmRsp1GCi4DsEKAuCxdiH/WK7nhWSermtyOGk927otfSE1efLzEIEnSHTR4ZLXv6AlTESuJyDryEa5W7EKuc19Fm/ZMrQ1PgOQHG48npG1FICPMc/R9kG0aFxuz7Hz7fXxjp7MRYGnr3SNxEYQjx3n16yA== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by SA1PR12MB7125.namprd12.prod.outlook.com (2603:10b6:806:29f::14) 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:38:04 +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:38:04 +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/ggAFEd4CAAC7WQIAACD8AgAACkpA= Date: Fri, 3 Feb 2023 16:38:04 +0000 Message-ID: References: <5a4e5960-ad7d-e8d0-cd87-f51693c51ad8@arm.com> <435fe4ff-aa22-aa09-a1e0-3e3116decdce@arm.com> In-Reply-To: <435fe4ff-aa22-aa09-a1e0-3e3116decdce@arm.com> 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_|SA1PR12MB7125:EE_ x-ms-office365-filtering-correlation-id: 85b7ce11-42ab-4ae0-885f-08db060505a7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 5+4BchrqyaJ9ek1LdReO+bx8e13Fa7qMSwJzhSDSLQrTRZ4NsgZHEU7JGuqDPqEJyPFfmW2teU+2IbdkfkVdEMU4FUC5qBeLv4+VJ7Sk/f91hRiJD6m9OoxqRy7N8y9eeAke7hkqsRbTN7wIsIkxjsSi8trkvugvW8QxuowGHVTVtIpFQuENoGi1bUV7L1cs0hFJiAbe02AdLA5/HXb5UauoOfrNY8wxfgY3QKqMvR1GTkm430rvDFwHXAecBq/puxDvONCI4Ogu0eNBWU/MgKqHY0inhqxlDa1JhaS7wrTj57Ls0T/L7fGnOQY7Bi/X4bLnqm8A+nSTY1+Et3ALhR53EE2KFpxFm9JiXhiR0PO92j32JS8y5ggdbePppo2iAzgXwZBWg4M2XS0kjrV4ZbJTqUzibj2vpOUVg4uEP3Y+mBYpGvNKzRQrtXyjaYJJnj3fxAAMR7ETdpDxaK/KdDQ5Z9b5v6ZWYMgvjvXqk+R0Wy7UsAVgv5gq5PWikVs8VjUmtcx8j+P5rBgG2pCe3m2glm5Rce9q26IzwF9/Gs+izCYLoMK//SoeSB+nZLR0t5Q+mhCE/DXRvl62wmhFwa5yauHYCqDqFUMh1623VnmWf0AYbDMZ5lF09GBScPVsDeyQa3EjeHjxx67XwdioTEVDnHTbnr7ZXcShGdkiYKxHolXwtAXzRcLGN6YNfedKdFvv1q9j9F0Q30Dres+xPLm+p36pGSuL7DkYnux4F6U= 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)(39860400002)(376002)(346002)(136003)(396003)(366004)(451199018)(110136005)(64756008)(66946007)(66476007)(66556008)(7696005)(76116006)(71200400001)(66446008)(38100700002)(86362001)(33656002)(38070700005)(8676002)(122000001)(83380400001)(966005)(53546011)(6506007)(9686003)(26005)(186003)(41300700001)(5660300002)(52536014)(316002)(54906003)(8936002)(4326008)(2906002)(30864003)(478600001)(55016003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Vk5sUXArOFFtOFNUVHVwVUs5cUE2OVQ0WFROUFQyT1NrMXNpYnRQc0ZIeVNS?= =?utf-8?B?aWV4dVZUNEVQeGZTdnhnUVN0aG5WTmVzdDRYbldVKy90WTM1cmd1OFpxQ0Jl?= =?utf-8?B?RTZTRFpCVTNpMUptaEk4aDFyY0FQOTNvcVhlQk9udnJOWTI0Sm5HT0p3b29j?= =?utf-8?B?NkdhVUVRV2ZQcldvdlk5VVMxZlYwZDU3OStPR2dxeTl6MjlBRzlLaVFHYXlX?= =?utf-8?B?dXI3RE9Ldkh3cDJSTGpoOXdNaVNBck5ZRGt3TklGblhDQzRHdjEyZk9UaklC?= =?utf-8?B?WVZIMGtlTVRtSHViRmFsWDVJeTZlMkhHcG1meDBUekE0aGFNcUhuTTdtNE5U?= =?utf-8?B?WWJYdG4xd3pRV1FWVHpHSkxkK0g4VEtrWVh5T01BcDhhVUErdTREUXVybzdI?= =?utf-8?B?bXN4Wjdac2s4bHY2SU8rRXA3UFFuTnVLenhBUVZKL1JjYkpHK2NUcWJQaEVZ?= =?utf-8?B?MFNtRVdBV1h1RTZWNEczekExUXkxT2laQ00zdHRjMzZVV2V1aHVxN0tad3Vx?= =?utf-8?B?YWorNEVyNGQ1M21CbmU2T0hUT1Jrbkw0VnVZak41cm5JTmVWMUg0VjFhcTQz?= =?utf-8?B?ZGhJblFldHJrZjhOOFlpbldGbFZ2UHdTMWtFL0tZMjIraVh5QnZhZExwWVFZ?= =?utf-8?B?NG5qQk51UzI2eU0xZnZQRlc5dElHeHlaOE93QVM3K1VHM1NERVF3MCtFaUFk?= =?utf-8?B?U0JjbHZvcEM2R2VsNDdCVEdDMmpJOUZlVmtsTk40UFBoWTNCRXlORjhGN0lG?= =?utf-8?B?UFEvdjZnR0ovNTljMm5NdGo0RzhESjVzMVcwQVgrMWd3eWhnT3p4ejNpZVp6?= =?utf-8?B?czM5VzhqeUdEWWFhTUpaaDc3S051YW9lTWFabjk2UFRDZkJhUFd1VjlId2l4?= =?utf-8?B?bFNwdmU1eUtrMnMwQ3lWZzZ0Yk1xMG56VGovTEFNbFV6TTNlL0hHdVk1N1Vj?= =?utf-8?B?UDVkZTMvbE01eCtUalkyblZZbmdWcHIrWUFhMG5lS3ltcHRKTnF0UEJvSG5V?= =?utf-8?B?eG1CR2dxdEN0UkIwTlAvZFZSdGU4MEkzNFpXWTNTQmpXbU9DRURjVE9KRkhj?= =?utf-8?B?bWRzaWZtWkJ1bXlod250ZVNpM3NmeFd1dGlCRncwbGNEMWpudjZ3Y0tUa1JH?= =?utf-8?B?VHFreXpIc2JGUWk5WXM5eTlUc1NFNmp3a2VFZ2dEU3pWMVB6VTJqN28yZnFm?= =?utf-8?B?SUZsWUtXMDB0akFuMlVvYVRMNkZKTWxLelkraUR5cXpYUVArcVJkSDlxL3R1?= =?utf-8?B?KzdlWDZMSTZ4cmZ4YVVoOW9STkNUZUg2aXhGemNFNTdmS1VNQTZCYVBXSTJK?= =?utf-8?B?bmNyR2pVUjY2QXR2OWhUVngwNWp4TkRiZThGK2ViYll3YzFSN0VBMEJXRmFl?= =?utf-8?B?YTFzbmk5cUNBc2pFeUY1bnROMFhoa1VOYnVLU3B2WE13aHRCdnMrK2NXeXhV?= =?utf-8?B?MGtxSVM5N2owMWY4RWI4Z3VFQ0ljN1E5aXI3WnBIS2xmZ2UvVUlLeWNEcUlW?= =?utf-8?B?clRBVU9rWlJIVTEwU2ZraWVZcFNpSGVFME4wMm1vS1IxZzFpMEF1M05uVWZt?= =?utf-8?B?aGQxclIvQk4vZjlHcUZWSnlFamtxc09pMWlPa29MTFVVMnBCNWxuNU5pSyty?= =?utf-8?B?RDg1b29vT2xiRmZjUjdzMEwzOGd4NUJ0NmJmZDdKc3pjWFNxTFBYUlBQbVEz?= =?utf-8?B?ZkpwT0FSU3ZtdWxvTzIwZ3dwWUtwKzgySy8xZlhEQm1SSGlTeXJGKzYzUyt3?= =?utf-8?B?a1BCR1NUb0xCbGluaTZMWEQ4YjFvRHhKVEpHOTRUOU1rZzB5a1VOTWRkN3hs?= =?utf-8?B?cjhlVEJ0SFRUa2o3Nms2QXY0VCtCQ0RrRmtWUkp1emp2dG1FMHBlcGhVMjNj?= =?utf-8?B?Nmt2K0ozeWtSL1FUN0g0WS9SbXBXQmRxS3dGNHlLZ3MrL1I5aHFzZUs4ZGVG?= =?utf-8?B?STBqWmVjdUtpZjYxQzZOc3ErdkJyUytvcUI1OG9XME5UaXpjRy92b3Z5eEdh?= =?utf-8?B?MDFYRWlCTFlJSldSYUtOcFlmaHNPcS8rNCtzcERONGpaWEV4UHBhQXBWbzZW?= =?utf-8?B?aWIraGIrOWxYeUk5SVZyODluRmpHZ29xZDMrMzVYcDVPc29iYUpkWFpxM1lO?= =?utf-8?Q?imSH/qeK1sYvbQRJuiBAzLpuF?= 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: 85b7ce11-42ab-4ae0-885f-08db060505a7 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Feb 2023 16:38:04.1900 (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: GcwEKxe9Zd+ymGcc1jhgOlFCv1pZQU3lYqAyLTmAX4BwT+drzMZPzZHto8v/mUndgdO3jS4bmWlZkmbw2Tvn4A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB7125 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VG8gc29sdmUgdGhhdCBwcm9ibGVtIEkgaGFkIGFkZGVkIHN1cHBvcnQgZm9yIGFsbG93aW5nIHRo ZSBVSUQvTmFtZSB0byBjb21lIGZyb20gdGhlIG5vZGUNCg0KaHR0cHM6Ly9naXRodWIuY29tL3Rp YW5vY29yZS9lZGsyL2NvbW1pdC81ZmIzZjU3MjNhMWVhOWQ5YTkzZTMxNzE4MWUxYzExNDY4YTll YjQ1DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGllcnJlIEdvbmRv aXMgPHBpZXJyZS5nb25kb2lzQGFybS5jb20+DQo+IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMywg MjAyMyA5OjI4IEFNDQo+IFRvOiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPjsgZGV2 ZWxAZWRrMi5ncm91cHMuaW8NCj4gQ2M6IFNhbWkuTXVqYXdhckBhcm0uY29tOyBBbGV4ZWkuRmVk b3JvdkBhcm0uY29tOw0KPiBxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tOyBhcmRiK3RpYW5vY29y ZUBrZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdIER5bmFtaWNUYWJsZXNQa2c6IEFs bG93IG11bHRpcGxlIHRvcCBsZXZlbCBwaHlzaWNhbCBub2Rlcw0KPiANCj4gRXh0ZXJuYWwgZW1h aWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gDQo+IA0KPiBP biAyLzMvMjMgMTc6MDAsIEplZmYgQnJhc2VuIHdyb3RlOg0KPiA+IEknbGwgb24gYW4gdXBkYXRl ZCBwYXRjaCB0aGlzIG1vcm5pbmcgdGhhdCBvbmx5IGRvZXMgdGhlIG5ldyBiZWhhdmlvci4gV2UN Cj4gY2FuJ3QgcmVzZXQgdGhlIHByb2NpbmRleCBhcyBpdCBpcyB1c2VkIGZvciB0aGUgX1VJRCBh cyB3ZWxsIGFuZCB3ZSB3b3VsZCBlbmQgdXANCj4gd2l0aCB0aGUgc2FtZSB2YWx1ZSBpbiB0d28g bm9kZXMuDQo+IA0KPiBZZXMgaW5kZWVkLCB0aGVuIG1heWJlIHRoZSBuYW1lL3VpZCBzZWxlY3Rp b24gc2hvdWxkIG5vdCBiZSBkb25lIGluDQo+IENyZWF0ZUFtbENwdVRvcG9sb2d5VHJlZSgpIGJ1 dCBpbg0KPiBDcmVhdGVBbWxQcm9jZXNzb3JDb250YWluZXIoKS9DcmVhdGVBbWxDcHVGcm9tUHJv Y0hpZXJhcmNoeSgpLg0KPiBUaGlzIHdvdWxkIGFsbG93IHRvIGhhdmUgYSBzdGF0aWMgY291bnRl ciBmb3IgdGhlIFVpZCBpbg0KPiBDcmVhdGVBbWxQcm9jZXNzb3JDb250YWluZXIoKSBhbmQgYWx3 YXlzIGhhdmUgaW5jcmVtZW50aW5nIG5hbWVzIGZvcg0KPiBwYWNrYWdlcy9jbHVzdGVyLiBPdGhl cndpc2UgdGhlIGdlbmVyYXRlZCBuYW1lIHdpbGwgYmU6DQo+IEMwMDAgICAgICAgIDwtIFBhY2th Z2UNCj4gXC1DMDAwMSAgICAgPC0gQ2x1c3Rlcg0KPiAgICBcLUMwMDAwICAgPC0gQ1BVDQo+IEMw MDIgICAgICAgIDwtIHNlY29uZCBQYWNrYWdlDQo+IFwtQzAwMDMgICAgIDwtIHNlY29uZCBDbHVz dGVyDQo+ICAgIFwtQzAwMDEgICA8LSBzZWNvbmQgQ1BVDQo+IA0KPiBpbnN0ZWFkIG9mOg0KPiBD MDAwICAgICAgICA8LSBQYWNrYWdlDQo+IFwtQzAwMDEgICAgIDwtIENsdXN0ZXINCj4gICAgXC1D MDAwMCAgIDwtIENQVQ0KPiBDMDAxICAgICAgICA8LSBzZWNvbmQgUGFja2FnZQ0KPiBcLUMwMDAw ICAgICA8LSBzZWNvbmQgQ2x1c3Rlcg0KPiAgICBcLUMwMDAxICAgPC0gc2Vjb25kIENQVQ0KPiAN Cj4gUmVnYXJkcywNCj4gUGllcnJlDQo+IA0KPiA+DQo+ID4gLUplZmYNCj4gPg0KPiA+DQo+ID4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFBpZXJyZSBHb25kb2lzIDxw aWVycmUuZ29uZG9pc0Bhcm0uY29tPg0KPiA+PiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDMsIDIw MjMgNjoxMSBBTQ0KPiA+PiBUbzogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4+IENjOiBTYW1pLk11amF3YXJAYXJtLmNvbTsgQWxleGVp LkZlZG9yb3ZAYXJtLmNvbTsNCj4gPj4gcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsgYXJkYit0 aWFub2NvcmVAa2VybmVsLm9yZw0KPiA+PiBTdWJqZWN0OiBSZTogW1BBVENIXSBEeW5hbWljVGFi bGVzUGtnOiBBbGxvdyBtdWx0aXBsZSB0b3AgbGV2ZWwNCj4gPj4gcGh5c2ljYWwgbm9kZXMNCj4g Pj4NCj4gPj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0 YWNobWVudHMNCj4gPj4NCj4gPj4NCj4gPj4gT24gMi8yLzIzIDE4OjUzLCBKZWZmIEJyYXNlbiB3 cm90ZToNCj4gPj4+IFRoZXJlIGFyZSBzb21lIGNhc2VzIChmb3IgZXhhbXBsZSB0aGUgX1BTTCBs aXN0IGluIHRoZXJtYWwgem9uZXMpDQo+ID4+PiB3aGVyZSB3ZSBuZWVkIHRvIGhhdmUgYSByZWZl cmVuY2UgdG8gdGhlIG5vZGUgYW5kIHdlIGhhdmUgYmVlbiBkb2luZw0KPiA+Pj4gdGhhdCB2aWEg YW4gRXh0ZXJuIGFuZCBhIHJlZmVyZW5jZSB0byB0aGUgbm9kZSBwYXRoLiBJIGFtIHB1c2ggYQ0K PiA+Pj4gcGF0Y2ggd2hlcmUgdGhlIGVmZmVjdGl2ZWx5IHRoZSBQQ0QgSSBhZGRlZCB3YXMgZml4 ZWQgdHJ1ZSBidXQgd2FzDQo+ID4+PiB1bnN1cmUgaWYgdGhhdCB3b3VsZCBoYXZlIHVuZXhwZWN0 ZWQgaXNzdWVzIHdpdGggb3RoZXIgdmVuZG9ycw0KPiA+Pj4gcGxhdGZvcm1zDQo+ID4+DQo+ID4+ IFRoZSBjdXJyZW50IFNzZHRDcHVUb3BvbG9neUdlbmVyYXRvciBkb2Vzbid0IGdlbmVyYXRlIGFu IEFNTCBub2RlIGZvcg0KPiA+PiB0aGUgdG9wIGxldmVsIHBhY2thZ2UuIEV2ZW4gdGhvdWdoIHRo aXMgc2VlbSBjb21wbGlhbnQgdG8gdGhlIEFDUEkNCj4gPj4gc3BlYywgdGhpcyBpbmR1Y2VzIGEg ZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBBU0wgdG9wb2xvZ3kgZGVzY3JpcHRpb24NCj4gPj4gYW5k IHRoZSBQUFRUIHRvcG9sb2d5IGRlc2NyaXB0aW9uLiBGb3IgaW5zdGFuY2UsIGZvciB0aGUgSnVu bywgdGhlDQo+ID4+IHRvcG9sb2d5IGdlbmVyYXRlZCBmb3IgdGhlIEFDUEkgdGFibGVzIGFyZToN Cj4gPj4gUFBUVDoNCj4gPj4gKFBBQ0tBR0UpDQo+ID4+IFwtTGl0dGxlIENsdXN0ZXINCj4gPj4g ICAgIFwtQ1BVWzAsMy01XQ0KPiA+PiBcLUJpZyBDbHVzdGVyDQo+ID4+ICAgICBcLUNQVVsxLTJd DQo+ID4+DQo+ID4+IFNTRFQ6DQo+ID4+IExpdHRsZSBDbHVzdGVyDQo+ID4+IFwtQ1BVWzAsMy01 XQ0KPiA+PiBCaWcgQ2x1c3Rlcg0KPiA+PiBcLUNQVVsxLTJdDQo+ID4+DQo+ID4+IFRvIHNvbHZl IHlvdXIgaXNzdWUsIHRvIGhhdmUgbWF0Y2hpbmcgdG9wb2xvZ3kgZGVzY3JpcHRpb25zLCBhbmQN Cj4gPj4gYWZ0ZXIgZGlzY3Vzc2luZyB3aXRoIFNhbWksIGl0IHdvdWxkIGJlIGJldHRlciB0byBo YXZlOg0KPiA+PiBTU0RUOg0KPiA+PiAoUEFDS0FHRSkNCj4gPj4gXC1MaXR0bGUgQ2x1c3Rlcg0K PiA+PiAgICAgXC1DUFVbMCwzLTVdDQo+ID4+IFwtQmlnIENsdXN0ZXINCj4gPj4gICAgIFwtQ1BV WzEtMl0NCj4gPj4NCj4gPj4gVGhlIEp1bm8gaXMgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBwdWJs aWNseSB1c2VzIHRoZQ0KPiA+PiBTc2R0Q3B1VG9wb2xvZ3lHZW5lcmF0b3IsIHNvIEkgYW0gbm90 IHN1cmUgaG93IG90aGVyIHBsYXRmb3JtcyBzdXBwb3J0DQo+IHNob3VsZCBiZSBoYW5kbGVkLg0K PiA+Pg0KPiA+PiBBYm91dCB0aGUgY29kZSBpdHNlbGYsIEkgdGhpbmsgdGhlIFByb2NDb250YWlu ZXJJbmRleCBzaG91bGQgYWxzbyBiZQ0KPiA+PiByZXNldCBpbg0KPiA+PiBDcmVhdGVBbWxDcHVU b3BvbG9neVRyZWUoKSB3aGVuIGdlbmVyYXRpbmcgYSBuZXcgbGV2ZWwgb2YgY29udGFpbmVycw0K PiA+PiAoaWYgaXQgaXMgZGVjaWRlZCB0byBnbyB0aGlzIHdheSkuDQo+ID4+DQo+ID4+IFJlZ2Fy ZHMsDQo+ID4+IFBpZXJyZQ0KPiA+Pg0KPiA+Pj4NCj4gPj4+IC1KZWZmDQo+ID4+Pg0KPiA+Pj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+Pj4gRnJvbTogUGllcnJlIEdvbmRvaXMg PHBpZXJyZS5nb25kb2lzQGFybS5jb20+DQo+ID4+Pj4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5 IDIsIDIwMjMgMTA6NDkgQU0NCj4gPj4+PiBUbzogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlh LmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4+Pj4gQ2M6IFNhbWkuTXVqYXdhckBhcm0u Y29tOyBBbGV4ZWkuRmVkb3JvdkBhcm0uY29tOw0KPiA+Pj4+IHF1aWNfbGxpbmRob2xAcXVpY2lu Yy5jb207IGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmcNCj4gPj4+PiBTdWJqZWN0OiBSZTogW1BB VENIXSBEeW5hbWljVGFibGVzUGtnOiBBbGxvdyBtdWx0aXBsZSB0b3AgbGV2ZWwNCj4gPj4+PiBw aHlzaWNhbCBub2Rlcw0KPiA+Pj4+DQo+ID4+Pj4gRXh0ZXJuYWwgZW1haWw6IFVzZSBjYXV0aW9u IG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gSGVs bG8gSmVmZiwNCj4gPj4+PiBJIHdhcyBhc3N1bWluZyB0aGF0IG5vIG90aGVyIG1vZHVsZSB3b3Vs ZCByZWx5IG9uIHRoZSBBTUwgcGF0aCB0bw0KPiA+Pj4+IGFjY2VzcyBhbiBBTUwgbm9kZSBhbmQg dGhhdCBub2RlcyBzaG91bGQgYmUgcmV0cmlldmVkIHRocm91Z2ggdGhlaXINCj4gPj4+PiBjaGFy YWN0ZXJpc3RpY3MgaW5zdGVhZCwgaS5lLiBpbnRlcm5hbCBwcm9wZXJ0aWVzL05hbWUvVWlkLg0K PiA+Pj4+IFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gcHVibGljIEFQSSBhbGxvd2luZyB0byBkbyBz bywgYnV0IHRoZXJlIGFyZQ0KPiA+Pj4+IGludGVybmFsIEFQSXMgdGhhdCBjb3VsZCBiZSByZWxp ZWQgb24gdG8gY3JlYXRlIHRoZW0uDQo+ID4+Pj4NCj4gPj4+PiBJJ20gbm90IHN1cmUgd2hhdCBT YW1pIGlzIHRoaW5raW5nLA0KPiA+Pj4+DQo+ID4+Pj4gUmVnYXJkcywNCj4gPj4+PiBQaWVycmUN Cj4gPj4+Pg0KPiA+Pj4+IE9uIDIvMi8yMyAxNzo0OCwgSmVmZiBCcmFzZW4gd3JvdGU6DQo+ID4+ Pj4+IEp1c3QgdG8gY2xhcmlmeSB5b3UgYXJlIHN1Z2dlc3RpbmcgdGhhdCBhbGwgQ1BVIG5vZGVz IGdlbmVyYXRlZA0KPiA+Pj4+PiB2aWEgdGhpcyB3aXRoIGhhdmUgYW4gb3V0ZXIgcHJvY2Vzc29y IGNvbnRhaW5lcj8gSSBhbSBmaW5lIHdpdGgNCj4gPj4+Pj4gdGhhdCBidXQgd2FzIGNvbmNlcm5l ZCB3aXRoIGEgY2hhbmdlIGluIGJlaGF2aW9yIHRvIG90aGVyDQo+ID4+Pj4+IHBsYXRmb3JtcyBp biBjYXNlIHRoZXkgYXJlIGV4cGVjdGluZyB0aGUgQ1BVcyB0byBqdXN0IGJlIHVuZGVyDQo+ID4+ Pj4+IFxTQi5DMDB4IGluc3RlYWQgb2YgXFNCLkMwMDAuQzAweA0KPiA+Pj4+Pg0KPiA+Pj4+PiAt SmVmZg0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4+Pj4+IEZyb206IFBpZXJyZSBHb25kb2lzIDxwaWVycmUuZ29uZG9pc0Bhcm0uY29t Pg0KPiA+Pj4+Pj4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5IDIsIDIwMjMgNTowMyBBTQ0KPiA+ Pj4+Pj4gVG86IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBkZXZlbEBlZGsyLmdy b3Vwcy5pbw0KPiA+Pj4+Pj4gQ2M6IFNhbWkuTXVqYXdhckBhcm0uY29tOyBBbGV4ZWkuRmVkb3Jv dkBhcm0uY29tOw0KPiA+Pj4+Pj4gcXVpY19sbGluZGhvbEBxdWljaW5jLmNvbTsgYXJkYit0aWFu b2NvcmVAa2VybmVsLm9yZw0KPiA+Pj4+Pj4gU3ViamVjdDogUmU6IFtQQVRDSF0gRHluYW1pY1Rh Ymxlc1BrZzogQWxsb3cgbXVsdGlwbGUgdG9wIGxldmVsDQo+ID4+Pj4+PiBwaHlzaWNhbCBub2Rl cw0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5n IGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEhlbGxv IEplZmYsDQo+ID4+Pj4+PiBJIHRoaW5rIGl0J3Mgb2sgdG8gbWFrZSB0aGlzIHRoZSBnZW5lcmlj IGNhc2UgYW5kIHJlbW92ZSB0aGUgUGNkDQo+ID4+Pj4+PiB0byBlbmFibGUNCj4gPj4+PiBpdC4N Cj4gPj4+Pj4+IENmIEFDUEkgNi41LCA1LjIuMzAuMSBQcm9jZXNzb3IgaGllcmFyY2h5IG5vZGUg c3RydWN0dXJlIChUeXBlIDApOg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+ICJNdWx0aXBsZSB0cmVlcyBt YXkgYmUgZGVzY3JpYmVkLCBjb3ZlcmluZyBmb3IgZXhhbXBsZSBtdWx0aXBsZQ0KPiA+Pj4+IHBh Y2thZ2VzLg0KPiA+Pj4+Pj4gRm9yIHRoZSByb290IG9mIGEgdHJlZSwgdGhlIHBhcmVudCBwb2lu dGVyIHNob3VsZCBiZSAwLiINCj4gPj4+Pj4+IGFuZA0KPiA+Pj4+Pj4gIkVhY2ggdmFsaWQgcHJv Y2Vzc29yIG11c3QgYmVsb25nIHRvIGV4YWN0bHkgb25lIHBhY2thZ2UuIFRoYXQNCj4gPj4+Pj4+ IGlzLCB0aGUgbGVhZiBtdXN0IGl0c2VsZiBiZSBhIHBoeXNpY2FsIHBhY2thZ2Ugb3IgaGF2ZSBh bg0KPiA+Pj4+Pj4gYW5jZXN0b3IgbWFya2VkIGFzIGEgcGh5c2ljYWwgcGFja2FnZS4iDQo+ID4+ Pj4+Pg0KPiA+Pj4+Pj4gc28gdGhpcyBvcmlnaW5hbCBjb21tZW50IGlzIGluY29ycmVjdDoNCj4g Pj4+Pj4+ICIiIg0KPiA+Pj4+Pj4gLy8gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZXJlIGlzIG9uZSB1 bmlxdWUNCj4gPj4+PiBDTV9BUk1fUFJPQ19ISUVSQVJDSFlfSU5GTw0KPiA+Pj4+Pj4gLy8gc3Ry dWN0dXJlIHdpdGggbm8gUGFyZW50VG9rZW4gYW5kIHRoZQ0KPiA+Pj4+Pj4gRUZJX0FDUElfNl8z X1BQVFRfUEFDS0FHRV9QSFlTSUNBTA0KPiA+Pj4+Pj4gLy8gZmxhZyBzZXQuIEFsbCBvdGhlciBD TV9BUk1fUFJPQ19ISUVSQVJDSFlfSU5GTyBhcmUNCj4gPj4+Pj4+IG5vbi1waHlzaWNhbCBhbmQg Ly8gaGF2ZSBhIFBhcmVudFRva2VuLg0KPiA+Pj4+Pj4gIiIiDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4g T24gMi8xLzIzIDE3OjQyLCBKZWZmIEJyYXNlbiB3cm90ZToNCj4gPj4+Pj4+PiBJbiBTU0RUIENQ VSB0b3BvbG9neSBnZW5lcmF0b3IgYWxsb3cgZm9yIG11bHRpcGxlIHRvcCBsZXZlbA0KPiA+Pj4+ Pj4+IHBoeXNpY2FsIG5vZGVzIGFzIHdvdWxkIGJlIHNlZW4gd2l0aCBhIG11bHRpLXNvY2tldCBz eXN0ZW0uIFRoaXMNCj4gPj4+Pj4+PiB3aWxsIGJlIGF1dG8gZGV0ZWN0ZWQgaWYgdGhlcmUgYXJl IG1vcmUgdGhlbiBvbmUgcGh5c2ljYWwgZGV2aWNlDQo+ID4+Pj4+Pj4gYW5kIHRoZXJlIGlzIGEg bmV3IFBDRCB0byBlbmFibGUgZm9yY2luZyBvZiBhIHRvcCBsZXZlbA0KPiA+Pj4+Pj4+IHByb2Nl c3NvciBjb250YWluZXIgdG8gYWxsb3cgZm9yIGNvbnNpc3RlbmN5IGZvciBzeXN0ZW1zIHRoYXQN Cj4gPj4+Pj4+PiBjYW4gYmUgZWl0aGVyIHNpbmdsZSBvciBtdWx0aQ0KPiA+Pj4+IHNvY2tldC4N Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEplZmYgQnJhc2VuIDxqYnJhc2Vu QG52aWRpYS5jb20+DQo+ID4+Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4gICAgICBEeW5hbWljVGFibGVz UGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjICAgICAgICAgfCAgMyArDQo+ID4+Pj4+Pj4gICAgICAu Li4vU3NkdENwdVRvcG9sb2d5R2VuZXJhdG9yLmMgICAgICAgICAgICAgICAgfCA2NiArKysrKysr KysrLS0tLS0tLS0tDQo+ID4+Pj4+Pj4gICAgICAuLi4vU3NkdENwdVRvcG9sb2d5TGliQXJtLmlu ZiAgICAgICAgICAgICAgICAgfCAgNCArKw0KPiA+Pj4+Pj4+ICAgICAgMyBmaWxlcyBjaGFuZ2Vk LCA0MSBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ IGRpZmYgLS1naXQgYS9EeW5hbWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ID4+ Pj4+Pj4gYi9EeW5hbWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ID4+Pj4+Pj4g aW5kZXggYWRjMmU2N2NiZi4uYTA2MWI3MDMyMiAxMDA2NDQNCj4gPj4+Pj4+PiAtLS0gYS9EeW5h bWljVGFibGVzUGtnL0R5bmFtaWNUYWJsZXNQa2cuZGVjDQo+ID4+Pj4+Pj4gKysrIGIvRHluYW1p Y1RhYmxlc1BrZy9EeW5hbWljVGFibGVzUGtnLmRlYw0KPiA+Pj4+Pj4+IEBAIC02Myw1ICs2Myw4 IEBADQo+ID4+Pj4+Pj4gICAgICAgICMgVXNlIFBDSSBzZWdtZW50IG51bWJlcnMgYXMgVUlEDQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+Pg0KPiBnRWRraWlEeW5hbWljVGFi bGVzUGtnVG9rZW5TcGFjZUd1aWQuUGNkUGNpVXNlU2VnbWVudEFzVWlkfEZBTFNFfEINCj4gPj4+ Pj4+IE9PTEUNCj4gPj4+Pj4+PiBBTnwweDQwMDAwMDA5DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAr ICAjIEZvcmNlIHRvcCBsZXZlbCBjb250YWluZXIgZm9yIHNpbmdsZSBzb2NrZXQgZGV2aWNlcw0K PiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+DQo+ID4+Pj4NCj4gZ0Vka2lpRHluYW1pY1RhYmxlc1BrZ1Rv a2VuU3BhY2VHdWlkLlBjZEZvcmNlVG9wTGV2ZWxQcm9jZXNzb3JDb250YQ0KPiA+Pj4+IGkNCj4g Pj4+Pj4+PiArIG5lcnxGQUxTRXxCT09MRUFOfDB4NDAwMDAwMEENCj4gPj4+Pj4+PiArDQo+ID4+ Pj4+Pj4gICAgICBbR3VpZHNdDQo+ID4+Pj4+Pj4gICAgICAgIGdFZGtpaUR5bmFtaWNUYWJsZXNQ a2dUb2tlblNwYWNlR3VpZCA9IHsgMHhhYjIyNmU2NiwNCj4gPj4+Pj4+PiAweDMxZDgsIDB4NDYx MywgeyAweDg3LCAweDlkLCAweGQyLCAweGZhLCAweGI2LCAweDEwLCAweDI2LCAweDNjDQo+ID4+ Pj4+Pj4gfSB9IGRpZmYgLS1naXQNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+PiBhL0R5bmFt aWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdENwdVRvcG9sb2d5TGliQXJtL1Nz ZHRDDQo+ID4+Pj4gcA0KPiA+Pj4+Pj4gdVQNCj4gPj4+Pj4+PiBvcG9sb2d5R2VuZXJhdG9yLmMN Cj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+PiBiL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9B Y3BpL0FybS9BY3BpU3NkdENwdVRvcG9sb2d5TGliQXJtL1NzZHRDDQo+ID4+Pj4gcA0KPiA+Pj4+ Pj4gdVQNCj4gPj4+Pj4+PiBvcG9sb2d5R2VuZXJhdG9yLmMNCj4gPj4+Pj4+PiBpbmRleCBjMjRk YThlYzcxLi41OGY4NmZmNTA4IDEwMDY0NA0KPiA+Pj4+Pj4+IC0tLQ0KPiA+Pj4+Pj4+DQo+ID4+ Pj4+Pg0KPiA+Pj4+IGEvRHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5L0FjcGkvQXJtL0FjcGlTc2R0 Q3B1VG9wb2xvZ3lMaWJBcm0vU3NkdEMNCj4gPj4+PiBwDQo+ID4+Pj4+PiB1VA0KPiA+Pj4+Pj4+ IG9wb2xvZ3lHZW5lcmF0b3IuYw0KPiA+Pj4+Pj4+ICsrKw0KPiA+Pj4+Pj4NCj4gYi9EeW5hbWlj VGFibGVzUGtnL0xpYnJhcnkvQWNwaS9Bcm0vQWNwaVNzZHRDcHVUb3BvbG9neUxpYkFybS9Tc2QN Cj4gPj4+Pj4+IHQNCj4gPj4+Pj4+PiArKysgQ3B1VG9wb2xvZ3lHZW5lcmF0b3IuYw0KPiA+Pj4+ Pj4+IEBAIC0yMiw2ICsyMiw3IEBADQo+ID4+Pj4+Pj4gICAgICAjaW5jbHVkZSA8TGlicmFyeS9B Y3BpSGVscGVyTGliLmg+DQo+ID4+Pj4+Pj4gICAgICAjaW5jbHVkZSA8TGlicmFyeS9UYWJsZUhl bHBlckxpYi5oPg0KPiA+Pj4+Pj4+ICAgICAgI2luY2x1ZGUgPExpYnJhcnkvQW1sTGliL0FtbExp Yi5oPg0KPiA+Pj4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4gPj4+Pj4+PiAg ICAgICNpbmNsdWRlIDxQcm90b2NvbC9Db25maWd1cmF0aW9uTWFuYWdlclByb3RvY29sLmg+DQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAgICAgICNpbmNsdWRlICJTc2R0Q3B1VG9wb2xvZ3lHZW5lcmF0 b3IuaCINCj4gPj4+Pj4+PiBAQCAtODE0LDcgKzgxNSw4IEBAIENyZWF0ZUFtbFByb2Nlc3NvckNv bnRhaW5lciAoDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFByb3RvY29sIEludGVyZmFjZS4NCj4gPj4+Pj4+PiAgICAgICAgQHBhcmFtIFtpbl0g Tm9kZVRva2VuICAgICAgICAgICAgICAgVG9rZW4gb2YgdGhlDQo+ID4+Pj4+PiBDTV9BUk1fUFJP Q19ISUVSQVJDSFlfSU5GTw0KPiA+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjdXJyZW50bHkgaGFuZGxlZC4NCj4gPj4+Pj4+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDYW5ub3QgYmUgQ01fTlVMTF9UT0tFTi4NCj4gPj4+ Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTV9OVUxMX1RPS0VO IGlmIHRvcCBsZXZlbCBjb250YWluZXINCj4gPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaG91bGQgYmUgY3JlYXRlZC4NCj4gPj4+Pj4+PiAgICAgICAgQHBh cmFtIFtpbl0gUGFyZW50Tm9kZSAgICAgICAgICAgICAgUGFyZW50IG5vZGUgdG8gYXR0YWNoIHRo ZSBjcmVhdGVkDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5vZGUgdG8uDQo+ID4+Pj4+Pj4gICAgICAgIEBwYXJhbSBbaW4sb3V0XSBQcm9jQ29u dGFpbmVySW5kZXggIFBvaW50ZXIgdG8gdGhlDQo+ID4+Pj4+Pj4gY3VycmVudCBwcm9jZXNzb3Ig Y29udGFpbmVyIEBAIC04NDEsMTIgKzg0MywxMiBAQA0KPiA+Pj4+IENyZWF0ZUFtbENwdVRvcG9s b2d5VHJlZQ0KPiA+Pj4+Pj4gKA0KPiA+Pj4+Pj4+ICAgICAgICBBTUxfT0JKRUNUX05PREVfSEFO RExFICBQcm9jQ29udGFpbmVyTm9kZTsNCj4gPj4+Pj4+PiAgICAgICAgVUlOVDMyICAgICAgICAg ICAgICAgICAgVWlkOw0KPiA+Pj4+Pj4+ICAgICAgICBVSU5UMTYgICAgICAgICAgICAgICAgICBO YW1lOw0KPiA+Pj4+Pj4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgIE5vZGVGbGFnczsNCj4g Pj4+Pj4+Pg0KPiA+Pj4+Pj4+ICAgICAgICBBU1NFUlQgKEdlbmVyYXRvciAhPSBOVUxMKTsNCj4g Pj4+Pj4+PiAgICAgICAgQVNTRVJUIChHZW5lcmF0b3ItPlByb2NOb2RlTGlzdCAhPSBOVUxMKTsN Cj4gPj4+Pj4+PiAgICAgICAgQVNTRVJUIChHZW5lcmF0b3ItPlByb2NOb2RlQ291bnQgIT0gMCk7 DQo+ID4+Pj4+Pj4gICAgICAgIEFTU0VSVCAoQ2ZnTWdyUHJvdG9jb2wgIT0gTlVMTCk7DQo+ID4+ Pj4+Pj4gLSAgQVNTRVJUIChOb2RlVG9rZW4gIT0gQ01fTlVMTF9UT0tFTik7DQo+ID4+Pj4+Pj4g ICAgICAgIEFTU0VSVCAoUGFyZW50Tm9kZSAhPSBOVUxMKTsNCj4gPj4+Pj4+PiAgICAgICAgQVNT RVJUIChQcm9jQ29udGFpbmVySW5kZXggIT0gTlVMTCk7DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBA QCAtODkzLDggKzg5NSwxNCBAQCBDcmVhdGVBbWxDcHVUb3BvbG9neVRyZWUgKA0KPiA+Pj4+Pj4+ ICAgICAgICAgICAgfSBlbHNlIHsNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgLy8gSWYgdGhpcyBp cyBub3QgYSBDcHUsIHRoZW4gdGhpcyBpcyBhIHByb2Nlc3NvciBjb250YWluZXIuDQo+ID4+Pj4+ Pj4NCj4gPj4+Pj4+PiArICAgICAgICBOb2RlRmxhZ3MgPSBHZW5lcmF0b3ItPlByb2NOb2RlTGlz dFtJbmRleF0uRmxhZ3M7DQo+ID4+Pj4+Pj4gKyAgICAgICAgLy8gQWxsb3cgcGh5c2ljYWwgcHJv cGVydHkgZm9yIHRvcCBsZXZlbCBub2Rlcw0KPiA+Pj4+Pj4+ICsgICAgICAgIGlmIChOb2RlVG9r ZW4gPT0gQ01fTlVMTF9UT0tFTikgew0KPiA+Pj4+Pj4+ICsgICAgICAgICAgTm9kZUZsYWdzICY9 IH5FRklfQUNQSV82XzNfUFBUVF9QQUNLQUdFX1BIWVNJQ0FMOw0KPiA+Pj4+Pj4+ICsgICAgICAg IH0NCj4gPj4+Pj4+PiArDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gRXZlbiB0aG91Z2ggaXQgd2FzIG5l dmVyIGVuY291bnRlcmVkIHNvIGZhciwgaXQgc2hvdWxkIGFsc28gYmUNCj4gPj4+Pj4+IHBvc3Np YmxlIHRvIGhhdmUgYSBwaHlzaWNhbCBwYWNrYWdlIGNvbnNpc3Rpbmcgb2Ygb25seSBvbmUgQ1BV Lg0KPiA+Pj4+Pj4gU28gSSBndWVzcyBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gY3JlYXRlIGEgZnVu Y3Rpb24gdG8gY2hlY2sgdGhlDQo+ID4+Pj4+PiBmbGFncywgd2hldGhlciB0aGUgUHJvY05vZGUg aXMgYSBDUFUgb3IgYSBjbHVzdGVyLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+IEkgYXR0YWNoZWQgYSBX aXAgcGF0Y2ggYmFzZSBvbiB5b3VyIHdvcmsgd2hlcmUgc3VjaCBmdW5jdGlvbiBpcw0KPiBjcmVh dGVkLg0KPiA+Pj4+Pj4gRmVlbCBmcmVlIHRvIHRha2UgaXQvbW9kaWZ5IGl0IGF0IHlvdXIgd2ls bC4NCj4gPj4+Pj4+DQo+ID4+Pj4+Pj4gICAgICAgICAgICAgIC8vIEFjcGkgcHJvY2Vzc29yIElk IGZvciBjbHVzdGVycyBpcyBub3QgaGFuZGxlZC4NCj4gPj4+Pj4+PiAtICAgICAgICBpZiAoKEdl bmVyYXRvci0+UHJvY05vZGVMaXN0W0luZGV4XS5GbGFncyAmDQo+ID4+Pj4+PiBQUFRUX1BST0NF U1NPUl9NQVNLKSAhPQ0KPiA+Pj4+Pj4+ICsgICAgICAgIGlmICgoTm9kZUZsYWdzICYgUFBUVF9Q Uk9DRVNTT1JfTUFTSykgIT0NCj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgIFBQVFRfQ0xVU1RF Ul9QUk9DRVNTT1JfTUFTSykNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgew0KPiA+Pj4+Pj4+ICAg ICAgICAgICAgICAgIERFQlVHICgoDQo+ID4+Pj4+Pj4gQEAgLTk3MywxMCArOTgxLDEwIEBAIENy ZWF0ZVRvcG9sb2d5RnJvbVByb2NIaWVyYXJjaHkgKA0KPiA+Pj4+Pj4+ICAgICAgICBJTiAgICAg ICAgQU1MX09CSkVDVF9OT0RFX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgIFNjb3BlTm9k ZQ0KPiA+Pj4+Pj4+ICAgICAgICApDQo+ID4+Pj4+Pj4gICAgICB7DQo+ID4+Pj4+Pj4gLSAgRUZJ X1NUQVRVUyAgU3RhdHVzOw0KPiA+Pj4+Pj4+IC0gIFVJTlQzMiAgICAgIEluZGV4Ow0KPiA+Pj4+ Pj4+IC0gIFVJTlQzMiAgICAgIFRvcExldmVsUHJvY05vZGVJbmRleDsNCj4gPj4+Pj4+PiAtICBV SU5UMzIgICAgICBQcm9jQ29udGFpbmVySW5kZXg7DQo+ID4+Pj4+Pj4gKyAgRUZJX1NUQVRVUyAg ICAgICBTdGF0dXM7DQo+ID4+Pj4+Pj4gKyAgVUlOVDMyICAgICAgICAgICBJbmRleDsNCj4gPj4+ Pj4+PiArICBDTV9PQkpFQ1RfVE9LRU4gIFRvcExldmVsVG9rZW47DQo+ID4+Pj4+Pj4gKyAgVUlO VDMyICAgICAgICAgICBQcm9jQ29udGFpbmVySW5kZXg7DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAg ICAgICAgQVNTRVJUIChHZW5lcmF0b3IgIT0gTlVMTCk7DQo+ID4+Pj4+Pj4gICAgICAgIEFTU0VS VCAoR2VuZXJhdG9yLT5Qcm9jTm9kZUNvdW50ICE9IDApOyBAQCAtOTg0LDggKzk5Miw4DQo+ID4+ Pj4+Pj4gQEAgQ3JlYXRlVG9wb2xvZ3lGcm9tUHJvY0hpZXJhcmNoeSAoDQo+ID4+Pj4+Pj4gICAg ICAgIEFTU0VSVCAoQ2ZnTWdyUHJvdG9jb2wgIT0gTlVMTCk7DQo+ID4+Pj4+Pj4gICAgICAgIEFT U0VSVCAoU2NvcGVOb2RlICE9IE5VTEwpOw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gLSAgVG9wTGV2 ZWxQcm9jTm9kZUluZGV4ID0gTUFYX1VJTlQzMjsNCj4gPj4+Pj4+PiAtICBQcm9jQ29udGFpbmVy SW5kZXggICAgPSAwOw0KPiA+Pj4+Pj4+ICsgIFRvcExldmVsVG9rZW4gICAgICA9IENNX05VTExf VE9LRU47DQo+ID4+Pj4+Pj4gKyAgUHJvY0NvbnRhaW5lckluZGV4ID0gMDsNCj4gPj4+Pj4+Pg0K PiA+Pj4+Pj4+ICAgICAgICBTdGF0dXMgPSBUb2tlblRhYmxlSW5pdGlhbGl6ZSAoR2VuZXJhdG9y LCBHZW5lcmF0b3ItDQo+ID4+Pj4+IFByb2NOb2RlQ291bnQpOw0KPiA+Pj4+Pj4+ICAgICAgICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7IEBAIC05OTMsMzMgKzEwMDEsMjcgQEANCj4gPj4+Pj4+ PiBDcmVhdGVUb3BvbG9neUZyb21Qcm9jSGllcmFyY2h5ICgNCj4gPj4+Pj4+PiAgICAgICAgICBy ZXR1cm4gU3RhdHVzOw0KPiA+Pj4+Pj4+ICAgICAgICB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAt ICAvLyBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlcmUgaXMgb25lIHVuaXF1ZQ0KPiA+Pj4+Pj4+IENN X0FSTV9QUk9DX0hJRVJBUkNIWV9JTkZPDQo+ID4+Pj4+Pj4gLSAgLy8gc3RydWN0dXJlIHdpdGgg bm8gUGFyZW50VG9rZW4gYW5kIHRoZQ0KPiA+Pj4+Pj4+IEVGSV9BQ1BJXzZfM19QUFRUX1BBQ0tB R0VfUEhZU0lDQUwNCj4gPj4+Pj4+PiAtICAvLyBmbGFnIHNldC4gQWxsIG90aGVyIENNX0FSTV9Q Uk9DX0hJRVJBUkNIWV9JTkZPIGFyZQ0KPiA+Pj4+Pj4+IG5vbi1waHlzaWNhbCBhbmQNCj4gPj4+ Pj4+PiAtICAvLyBoYXZlIGEgUGFyZW50VG9rZW4uDQo+ID4+Pj4+Pj4gLSAgZm9yIChJbmRleCA9 IDA7IEluZGV4IDwgR2VuZXJhdG9yLT5Qcm9jTm9kZUNvdW50OyBJbmRleCsrKSB7DQo+ID4+Pj4+ Pj4gLSAgICBpZiAoKEdlbmVyYXRvci0+UHJvY05vZGVMaXN0W0luZGV4XS5QYXJlbnRUb2tlbiA9 PQ0KPiA+Pj4+Pj4gQ01fTlVMTF9UT0tFTikgJiYNCj4gPj4+Pj4+PiAtICAgICAgICAoR2VuZXJh dG9yLT5Qcm9jTm9kZUxpc3RbSW5kZXhdLkZsYWdzICYNCj4gPj4+Pj4+PiAtICAgICAgICAgRUZJ X0FDUElfNl8zX1BQVFRfUEFDS0FHRV9QSFlTSUNBTCkpDQo+ID4+Pj4+Pj4gLSAgICB7DQo+ID4+ Pj4+Pj4gLSAgICAgIGlmIChUb3BMZXZlbFByb2NOb2RlSW5kZXggIT0gTUFYX1VJTlQzMikgew0K PiA+Pj4+Pj4+IC0gICAgICAgIERFQlVHICgoDQo+ID4+Pj4+Pj4gLSAgICAgICAgICBERUJVR19F UlJPUiwNCj4gPj4+Pj4+PiAtICAgICAgICAgICJFUlJPUjogU1NEVC1DUFUtVE9QT0xPR1k6IFRv cCBsZXZlbA0KPiA+Pj4+Pj4gQ01fQVJNX1BST0NfSElFUkFSQ0hZX0lORk8gIg0KPiA+Pj4+Pj4+ IC0gICAgICAgICAgIm11c3QgYmUgdW5pcXVlXG4iDQo+ID4+Pj4+Pj4gLSAgICAgICAgICApKTsN Cj4gPj4+Pj4+PiAtICAgICAgICBBU1NFUlQgKDApOw0KPiA+Pj4+Pj4+IC0gICAgICAgIGdvdG8g ZXhpdF9oYW5kbGVyOw0KPiA+Pj4+Pj4+IC0gICAgICB9DQo+ID4+Pj4+Pj4gKyAgaWYgKCFQY2RH ZXRCb29sIChQY2RGb3JjZVRvcExldmVsUHJvY2Vzc29yQ29udGFpbmVyKSkgew0KPiA+Pj4+Pj4+ ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgR2VuZXJhdG9yLT5Qcm9jTm9kZUNvdW50OyBJ bmRleCsrKSB7DQo+ID4+Pj4+Pj4gKyAgICAgIGlmICgoR2VuZXJhdG9yLT5Qcm9jTm9kZUxpc3Rb SW5kZXhdLlBhcmVudFRva2VuID09DQo+ID4+Pj4+PiBDTV9OVUxMX1RPS0VOKSAmJg0KPiA+Pj4+ Pj4+ICsgICAgICAgICAgKEdlbmVyYXRvci0+UHJvY05vZGVMaXN0W0luZGV4XS5GbGFncyAmDQo+ ID4+Pj4+Pj4gKyAgICAgICAgICAgRUZJX0FDUElfNl8zX1BQVFRfUEFDS0FHRV9QSFlTSUNBTCkp DQo+ID4+Pj4+Pj4gKyAgICAgIHsNCj4gPj4+Pj4+PiArICAgICAgICAvLyBNdWx0aS1zb2NrZXQg ZGV0ZWN0ZWQsIHVzaW5nIHRvcCBsZXZlbCBjb250YWluZXJzDQo+ID4+Pj4+Pj4gKyAgICAgICAg aWYgKFRvcExldmVsVG9rZW4gIT0gQ01fTlVMTF9UT0tFTikgew0KPiA+Pj4+Pj4+ICsgICAgICAg ICAgVG9wTGV2ZWxUb2tlbiA9IENNX05VTExfVE9LRU47DQo+ID4+Pj4+Pj4gKyAgICAgICAgICBi cmVhazsNCj4gPj4+Pj4+PiArICAgICAgICB9DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiAtICAgICAg VG9wTGV2ZWxQcm9jTm9kZUluZGV4ID0gSW5kZXg7DQo+ID4+Pj4+Pj4gLSAgICB9DQo+ID4+Pj4+ Pj4gLSAgfSAvLyBmb3INCj4gPj4+Pj4+PiArICAgICAgICBUb3BMZXZlbFRva2VuID0gR2VuZXJh dG9yLT5Qcm9jTm9kZUxpc3RbSW5kZXhdLlRva2VuOw0KPiA+Pj4+Pj4+ICsgICAgICB9DQo+ID4+ Pj4+Pj4gKyAgICB9IC8vIGZvcg0KPiA+Pj4+Pj4+ICsgIH0NCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+ ICAgICAgICBTdGF0dXMgPSBDcmVhdGVBbWxDcHVUb3BvbG9neVRyZWUgKA0KPiA+Pj4+Pj4+ICAg ICAgICAgICAgICAgICAgIEdlbmVyYXRvciwNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgICBD ZmdNZ3JQcm90b2NvbCwNCj4gPj4+Pj4+PiAtICAgICAgICAgICAgIEdlbmVyYXRvci0+UHJvY05v ZGVMaXN0W1RvcExldmVsUHJvY05vZGVJbmRleF0uVG9rZW4sDQo+ID4+Pj4+Pj4gKyAgICAgICAg ICAgICBUb3BMZXZlbFRva2VuLA0KPiA+Pj4+Pj4+ICAgICAgICAgICAgICAgICAgIFNjb3BlTm9k ZSwNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgICAmUHJvY0NvbnRhaW5lckluZGV4DQo+ID4+ Pj4+Pj4gICAgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4+PiBAQCAtMTEwNiw3ICsxMTA4LDcg QEAgQ3JlYXRlVG9wb2xvZ3lGcm9tR2ljQyAoDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgIGJyZWFr Ow0KPiA+Pj4+Pj4+ICAgICAgICAgICAgfQ0KPiA+Pj4+Pj4+ICAgICAgICAgIH0NCj4gPj4+Pj4+ PiAtICB9IC8vIGZvcg0KPiA+Pj4+Pj4+ICsgIH0gICAvLyBmb3INCj4gPj4+Pj4+DQo+ID4+Pj4+ PiBJcyBpdCBwb3NzaWJsZSB0byByZW1vdmUgdGhpcyBjaGFuZ2UgPw0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+Pg0KPiA+Pj4+Pj4+ICAgICAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+Pj4+ICAgICAgfQ0K PiA+Pj4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+PiBhL0R5bmFt aWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdENwdVRvcG9sb2d5TGliQXJtL1Nz ZHRDDQo+ID4+Pj4gcA0KPiA+Pj4+Pj4gdVQNCj4gPj4+Pj4+PiBvcG9sb2d5TGliQXJtLmluZg0K PiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+IGIvRHluYW1pY1RhYmxlc1BrZy9MaWJyYXJ5L0Fj cGkvQXJtL0FjcGlTc2R0Q3B1VG9wb2xvZ3lMaWJBcm0vU3NkdEMNCj4gPj4+PiBwDQo+ID4+Pj4+ PiB1VA0KPiA+Pj4+Pj4+IG9wb2xvZ3lMaWJBcm0uaW5mDQo+ID4+Pj4+Pj4gaW5kZXggM2UyZDE1 NDc0OS4uMDBhZGZlOTg2ZiAxMDA2NDQNCj4gPj4+Pj4+PiAtLS0NCj4gPj4+Pj4+Pg0KPiA+Pj4+ Pj4NCj4gPj4+PiBhL0R5bmFtaWNUYWJsZXNQa2cvTGlicmFyeS9BY3BpL0FybS9BY3BpU3NkdENw dVRvcG9sb2d5TGliQXJtL1NzZHRDDQo+ID4+Pj4gcA0KPiA+Pj4+Pj4gdVQNCj4gPj4+Pj4+PiBv cG9sb2d5TGliQXJtLmluZg0KPiA+Pj4+Pj4+ICsrKw0KPiA+Pj4+Pj4NCj4gYi9EeW5hbWljVGFi bGVzUGtnL0xpYnJhcnkvQWNwaS9Bcm0vQWNwaVNzZHRDcHVUb3BvbG9neUxpYkFybS9Tc2QNCj4g Pj4+Pj4+IHQNCj4gPj4+Pj4+PiArKysgQ3B1VG9wb2xvZ3lMaWJBcm0uaW5mDQo+ID4+Pj4+Pj4g QEAgLTMxLDMgKzMxLDcgQEANCj4gPj4+Pj4+PiAgICAgICAgQWNwaUhlbHBlckxpYg0KPiA+Pj4+ Pj4+ICAgICAgICBBbWxMaWINCj4gPj4+Pj4+PiAgICAgICAgQmFzZUxpYg0KPiA+Pj4+Pj4+ICsg IFBjZExpYg0KPiA+Pj4+Pj4+ICsNCj4gPj4+Pj4+PiArW1BjZF0NCj4gPj4+Pj4+PiArDQo+ID4+ Pj4+Pj4NCj4gPj4+Pj4+DQo+ID4+Pj4NCj4gK2dFZGtpaUR5bmFtaWNUYWJsZXNQa2dUb2tlblNw YWNlR3VpZC5QY2RGb3JjZVRvcExldmVsUHJvY2Vzc29yQ29udA0KPiA+Pj4+ICthDQo+ID4+Pj4+ PiBpbg0KPiA+Pj4+Pj4+ICtlcg0K