From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (NAM10-DM6-obe.outbound.protection.outlook.com [40.107.93.85]) by mx.groups.io with SMTP id smtpd.web11.20973.1676047487011103276 for ; Fri, 10 Feb 2023 08:44:47 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@nvidia.com header.s=selector2 header.b=iEhQ04Bc; 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.93.85, mailfrom: jbrasen@nvidia.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fpjecr730eHwjQr7UqVajasuuWUu25mlWzbKfojlH3YlyXaAwGpWN3Ie2+/leVsmN+VN7i1tBIpruB8hAwXKJB8uMUzjpC3SPcTPIh5AOEPUj8xhO1cE62WIQDsy1i3PxwprnQiLl3E6G0dT5vsqLI01ioH79At2VoShqNK4q0I8efQM7jMnwqgC6rlcSoQEXLlWcKyPqaP08EWMisWd2yiGJRlqJKfYRtBkH/eZAZdRpsCICzgySRK3eX2/1lWQYRCroYXsPehjnJtbXTbie60NsY864MAONAzdp1O9nUDUTyzlDWFEOL+h6/xbYPGwY0gl523FoVjEOsHdnXrN1A== 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=XKeDSOSi95LwH08RJa6KawONsZR2gaL0j7LM3I79KEg=; b=mUhZuZN6T1WVCFY+w0ACI7pfSuXWJgJKmqV/sKOQkFfCDYHlqlAp5Sytlg/JT/IrT1er5iTY5opANH+gfrYK2WZiPAwsBT4RilcP7nFUn3X4Ej2rns1qUFXormpg4kMlCnLQn1KaVblDpQjeUpQ2+8viLg9b9GdWM5oYeqXAFOdh0AP5OD4UoTuanG8FHC1IS0DRtErFC5vyZv6NpGjW6j98pErOw962B7gaouMdll9XLpLMzNBJSV4EmEI/WaF7FwwNq5nwaFtu1uJLjHxBFBNdMfG5BMAbE8ISQZo+HL9nKw135K0TZQPXQwNDoOqkT/PVu8cdMayZ1KIlWP/ceA== 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=XKeDSOSi95LwH08RJa6KawONsZR2gaL0j7LM3I79KEg=; b=iEhQ04BcjGXKEszR+2k3eLXUg/kVuUdfSqDR8xSJYNZU76v/6MuEiKg2je9dzh29vyvYEeia6BbDYfhW/2pcWiz4DSlgGLSTq7FIbubK3uvj9qGNDRWGwU4twBQRz23n3+xLEly8gwdBw1QOQx6qqLXRHT2ttTz/uSpf6Tq2Y9kFD1iupHEsbf2223VB8/ng1oir6xBmR8QwgM4hEW4z/75PnXbEvYyDOpJUFIPojJTXUlk/2EvvuLwybWMPu/0Nk4NvN+hk8HOZcHp3e63HgYY0mcAzCmCzXZb7QlKCK0wKjd+wqUVb8Ks2+P0FYU+ert/Gm01sBkv423yo7uXi6g== Received: from DS7PR12MB5789.namprd12.prod.outlook.com (2603:10b6:8:74::21) by SJ2PR12MB8009.namprd12.prod.outlook.com (2603:10b6:a03:4c7::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.21; Fri, 10 Feb 2023 16:44:44 +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.6086.019; Fri, 10 Feb 2023 16:44:44 +0000 From: "Jeff Brasen" To: "Kinney, Michael D" , "devel@edk2.groups.io" , "Demeter, Miki" Subject: Re: [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Topic: [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Index: AQHZDl/QhXMlNj8y/0e/PqccY8bHO666lZ4QgAzxmnCAAF9ygIAA2Vow Date: Fri, 10 Feb 2023 16:44:44 +0000 Message-ID: References: <3c3226e6c05a868f3f88d300181a157998c2786e.1670873141.git.jbrasen@nvidia.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_|SJ2PR12MB8009:EE_ x-ms-office365-filtering-correlation-id: dec402ae-99d2-4ce2-e9a8-08db0b861d12 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MV7n+I92RgK516Aksh2BZ11Lc9aMKNTnKEHlTbNdoXB6QH7LpQzmGgTQdZ+aKjTK6/xMnJ4u4HyxlC1lQrkzr9bi1HBOIr7adzlzplfP/EEG90VzC06YR86/MXNO1fcKDUhmq56fCct3TBtADL60PaCMtIsbXx7e7sLYwgJTMb0Y+E3V3cd+TtmbLGWkZ0yamifHCvQ7wID+/+4DW6IehpA2I2SFsePn01TMtOqBdVitxd0HdYlzIAVXXNiZ/ZINRqlN0FdGaTZTnnj93/HSTLElRaSJBwKYrPa0p4pj1PktticaMwTDTkZL8iPqykcahPYJZJTQIofU+KqHVkhFQGm5cgmiECB6PXP5QNIpHKyAiurQnS4KAWo0tuqXbAMZoIIR4xHZ0mCBZkSMPyATgzw3RueHifXZQak34R4iOAM8KyowADPzbdn8smZWEGGsNPuD/jpduftUdQKSZMCRDqBwh4R5uF2t13mzLyK3t9svwS+n3w3k56kci6S8aO4/Zkli+SOlEyaD9P5nukPjXOd3w/iTtk0/5Val3X7pXrQF9vs+XPDaSyjeEawVYA51Eu5Aqb8LUle3mkl96B+wQ6fSztffYq7sqQWAhNY0y7tmqkOIcS1s6QR1r1CVASKMultMdN21RFm3AxVMwgZEnuu8hOi4IN4U99U6qkKmhkqG5t9cND0upQ3mSrU2rn1UUBb7/cw4uNPztd4mAg050zuzPfJK0Qv060QfnfYUBJM= 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)(136003)(376002)(39860400002)(346002)(366004)(396003)(451199018)(66899018)(38070700005)(86362001)(33656002)(64756008)(8936002)(41300700001)(66556008)(66446008)(66476007)(66946007)(8676002)(52536014)(5660300002)(2906002)(122000001)(38100700002)(83380400001)(966005)(7696005)(71200400001)(478600001)(76116006)(55016003)(110136005)(316002)(53546011)(9686003)(186003)(26005)(6506007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YWZuY3ZPZWlnMndhOVR2L2x4R2h3QjU5SWcwZ2pYb3BKTjd1QUpjalpUMWJz?= =?utf-8?B?aEM2NGxpVlg4ZGd1RVp6UCtvWnhCYWc4MXhVSUZpaSs2MTFFSkwxcnhBeGYz?= =?utf-8?B?d1RUVEFVMmpzbUM2NVJpYVpLdEZqSlI3cS96cEdSR1JtZGtndnJCYmpHZUE4?= =?utf-8?B?OENXeEw4ZVNKeGlYRm5mTVJNV1MyeitSTlpzclU4eXNzZ0pDUU1nZUs5WG16?= =?utf-8?B?dGp4QU8rNWZSQUsyU1NHT0liaG5maSt1NHpZZU13TG5tLzEyTjJKVjFSc1dK?= =?utf-8?B?Y1FUUlhXZnpZRkJsOHFBcWx3QW9RQ2dyTWpEd293OFYvdFVvUTYyUmx2UlE5?= =?utf-8?B?ZlZiUzRnck9ZVzl1enlGWVpLZjZzalRXalkxUzN6OHFtamNLZFREbHNMM3Nz?= =?utf-8?B?ME9haVpUQ2YvOGZTT3RIYjdES1FlRlBOWFhOMWRvc3JPcEFtVUJFcysrRVhx?= =?utf-8?B?c2wwUUVyTmxydTRzZGx0cGNpc3Z0ZkZnSjlyZ0x5OUtMTDJiOFZwZTdvNCs5?= =?utf-8?B?VE1PQ24zM2k1dklsNkE2cHlITXIzUUpYUjlVVjFGK0xwUk1rRmVlcVZ5ZVRo?= =?utf-8?B?bkFONDI1RFVGRERSdFlSdFVpblNMSGNTZVBPanBYVlo5TDQxalVZblRseUVw?= =?utf-8?B?TlFUdnlWeDIzNDNnS0wvZDVlbi9ZQVVySHJYQ3RaQzFYblBKYlFIUkt5WEYy?= =?utf-8?B?MTJVc1MrUzZsVDUzWTcrVkxDWDVsQ21ML1o2cnEvTExFU0V1emljMHNsYytL?= =?utf-8?B?L1ZZRGtXMVB2cnJSZEg5TjNzQzMzL3BqeHdqQVhVeHVZeGJoK0NYZ0k0WEEz?= =?utf-8?B?bWhSYUJMMk1GMVA3UERBNXl4TEhLTWI3ZmVlZnNERHpmTWNqdHpTOVV4UFgz?= =?utf-8?B?TVJOa0RPTzNGem5ZdmptOTlrVjlFTnZLS1Q3eVl1RU1SQldXL2d1NExCQTdk?= =?utf-8?B?QnBDRHZUQ04zV3haSUxMWUVQWDVMRnV2U01TQTM4NTMvMFd4SDF4TEtERWE1?= =?utf-8?B?cmk5UzZnQ0hxTHhMS1M2RGEvWnNKZHJGeWRSdkNvaWluLzRVd080djBoVGI5?= =?utf-8?B?MWZUa25ibzZZWmdlSlVrdkRmMVc1QVFzdWhVckYwaXVOdTR2TmRqREVvdnVa?= =?utf-8?B?MUdaTmZmdGJOOTNqNEtNSVNQSXdpdlNvVTI5ZTlzR1NST3dlc01QSGRkNFM0?= =?utf-8?B?ajBpU3o4d0Fya3A0OFZZMC9uRm9VbE02TjVlZmF1K0RpeGdFajBtVloyVU5u?= =?utf-8?B?S0xIcWdoNXZROTU5a2s0TW44WGdMNzlqL3lqTGhJc0N6azJLek9ZUnVFRFht?= =?utf-8?B?Ynl3cWRKOUc5T0dkSE9YTTJQQ05yaEJhakNYanQ5d0d2ZW5aWVdIYU1zc2JF?= =?utf-8?B?dFI0VVlZQXA2QktmNHArV2lNd004R0R3K3A1akNkTWZLTkx6bFk1KzVLQndu?= =?utf-8?B?SUQ4QzU4Um82by9sR0dIc1UxeEdhS0JkcExFTGVNVSt6Sy9SV1hnVFBLRUJV?= =?utf-8?B?R3drb2RZbzVENzBiNDNUbS9WNVB2MmZnREZmRUw1Tm51NGN1WStCM0EwMzRX?= =?utf-8?B?NXd3b2taV3c4dUdVeDlPOGk1V0FLNlh0YUE5cUxOdlVUWXlTVXo0SFlLdEMw?= =?utf-8?B?aXIydUdlV0RqbEY2T0VpUjU4YUhEdWhBQ1MxZkV5M2pNWnRCdlc2dmJ2RHRp?= =?utf-8?B?MmRnd1BjcTMyWk5PNEo0NUhqN3oxWUFVb3J6a2xpQWZ3MXBXSXVFSHpVdzd3?= =?utf-8?B?QmU1UWV5NVVydnFqeXV3K2tJT1dqVGJCV21ER083Z3lxak9HQzN3RWM3NUsx?= =?utf-8?B?QXFOWVFSblRpdlpVRXdYelFuTCsyZWxMS3VIUDVjMlhCSkRMeDBEaFc2bTE1?= =?utf-8?B?REVtcUVFVlU0L21PMk1vSlNhS1BNZC8xTGIxSGM4dnM1cEw2ZnF5TktuN0dN?= =?utf-8?B?YlRjS2d3MmY2Uzlld2xSNGlNNW8zYWlIendZSWRBMVlrbDZtdThETW10eXdZ?= =?utf-8?B?NEZ5OS9vY1MxNEpTUWZGYkRXeTlrSG15TEZmdTVhc1JVQjd5c1FRdTAwdWIv?= =?utf-8?B?a3JFMXFKdDVBNjJYMm5NWmFjK0ExMWJtdU12RjlJMzdMYjZPclZjdkJWaERj?= =?utf-8?Q?QKDyqbJPcZCgA3gWpXk9+NnBf?= 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: dec402ae-99d2-4ce2-e9a8-08db0b861d12 X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2023 16:44:44.4202 (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: Bp0A24qOs1N5JC3FkHSUJz8qEWfQ1Dk7kPr2wXB4gHIWiAMTYsDz+gdwu8fZAduV3uQ9DmBhfq9lTIfA/ibyOg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8009 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhdCB3YXMgbXkgb3JpZ2luYWwgYXBwcm9hY2ggd2hlbiBJIHNhdyB0aGlzIGJ1dCBJIHdhcyBz ZWVpbmcgdGhpcyBvY2N1ciBvbiBhIGRldmljZSB3aXRoIEZtcFZlcnNpb24gPT0gMy4gVGhlIFVF Rkkgc3BlYyBpc24ndCBjb21wbGV0ZWx5IGNsZWFyIGJ1dCBjb3VsZCBiZSByZWFkIHRoYXQgMCBp cyBsZWdhbCBpZiB0aGlzIHBhcnQgaXNuJ3QgYmVpbmcgdXNlZC4NCg0KaHR0cHM6Ly91ZWZpLm9y Zy9zcGVjcy9VRUZJLzIuMTAvMjNfRmlybXdhcmVfVXBkYXRlX2FuZF9SZXBvcnRpbmcuaHRtbCNl ZmktZmlybXdhcmUtbWFuYWdlbWVudC1wcm90b2NvbC1nZXRpbWFnZWluZm8NCg0KSXQgZG9lcyBz dGF0ZSB0aGF0IHRoaXMgaXMgT3B0aW9uYWwsIGFuZCBoYXMgYSBzdGF0ZW1lbnQgIkEgemVybyBt ZWFucyB0aGUgRk1QIHByb3ZpZGVyIGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZSBo YXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgb3IgYSBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgaXMg bm90IG5lZWRlZC4iDQoNCkFsc28sIG91ciBFU1JUIGltcGxlbWVudGF0aW9uIGp1c3QgbWVyZ2Vz IGFsbCBpbnN0YW5jZXMgdG8gb25lIGFueXdheXMgc28gaXQgZG9lc24ndCBjdXJyZW50bHkgY29u c3VtZSB0aGUgaGFyZHdhcmUgaW5zdGFuY2UgZXhjZXB0IGZvciB0aGlzIGNoZWNrLg0KDQpUaGFu a3MsDQpKZWZmDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTZW50OiBUaHVyc2Rh eSwgRmVicnVhcnkgOSwgMjAyMyA4OjQzIFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg SmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT47IERlbWV0ZXIsDQo+IE1pa2kgPG1pa2ku ZGVtZXRlckBpbnRlbC5jb20+DQo+IENjOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9F c3J0Rm1wRHhlOiBTdXBwb3J0IG11bHRpcGxlDQo+IGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5z dGFuY2UNCj4gDQo+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlvbiBvcGVuaW5nIGxpbmtzIG9y IGF0dGFjaG1lbnRzDQo+IA0KPiANCj4gSGkgSmVmZiwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhl IHJlbWluZGVyLg0KPiANCj4gSSBhbSB3b25kZXJpbmcgaWYgdGhlIGNoZWNrIHNob3VsZCBiZSBm b3IgRm1wVmVyc2lvbiA8IDMgYW5kIG5vdA0KPiBGbXBIYXJkd2FyZUluc3RhbmNlICE9IDAuDQo+ IA0KPiBJdCBpcyBwb3NzaWJsZSBmb3IgYW4gRm1wSW5mb0J1ZmZlciB0byBoYXZlIGFuIEZtcFZl cnNpb24gPj0gMyBhbmQgYQ0KPiBIYXJkd2FyZUluc3RhbmNlIG9mIDAuICBJZiBtb3JlIHRoYW4g b25lIG9mIHRoZXNlIGl0IGZvdW5kLCB0aGVuIHRoYXQgd291bGQNCj4gYmUgYW4gRUZJX1VOU1VQ UE9SVEVEIGNvbmRpdGlvbi4NCj4gDQo+IElmIEZtcFZlcnNpb24gPj0gMywgdGhlbiB0aGUgSGFy ZHdhcmVJbnN0YW5jZSBtdXN0IGJlIGZpbGxlZCBpbiB3aXRoIGENCj4gdW5pcXVlIHZhbHVlLiAg MCBjYW4gYmUgdXNlZCBpZiB0aGVyZSBpcyBhdCBtb3N0IDEgaW5zdGFuY2UsIHNvIHRoZSBkdXBs aWNhdGUNCj4gY2hlY2sgd291bGQgbmV2ZXIgYmUgdHJpZ2dlcmVkLiAgSWYgRm1wVmVyc2lvbiA+ PSAzIGFuZCB0aGVyZSBjYW4gYmUgbW9yZQ0KPiB0aGVuIG9uZSBpbnN0YW5jZSwgdGhlbiB0aGUg SGFyZHdhcmVJbnN0YW5jZSBtdXN0IGJlIGEgbm9uLXplcm8gdW5pcXVlDQo+IHZhbHVlLg0KPiAN Cj4gVGhhbmtzLA0KPiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4g T24gQmVoYWxmIE9mIEplZmYNCj4gPiBCcmFzZW4gdmlhIGdyb3Vwcy5pbw0KPiA+IFNlbnQ6IFRo dXJzZGF5LCBGZWJydWFyeSA5LCAyMDIzIDI6MDMgUE0NCj4gPiBUbzogRGVtZXRlciwgTWlraSA8 bWlraS5kZW1ldGVyQGludGVsLmNvbT4NCj4gPiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g PiBTdWJqZWN0OiBbZWRrMi1kZXZlbF0gRlc6IFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRG bXBEeGU6DQo+IFN1cHBvcnQNCj4gPiBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUlu c3RhbmNlDQo+ID4NCj4gPiBIZXJlIGlzIGEgcGF0Y2ggdGhhdCBoYXMgYmVlbiBwZW5kaW5nIGZv ciBhIGJpdA0KPiA+DQo+ID4gVGhhbmtzLA0KPiA+IEplZmYNCj4gPg0KPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSmVmZiBCcmFzZW4NCj4gPiBTZW50OiBXZWRuZXNk YXksIEZlYnJ1YXJ5IDEsIDIwMjMgOToyMSBBTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiA+IENjOiBqaWFuLmoud2FuZ0BpbnRlbC5jb207IGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5j bjsNCj4gPiBndW9taW4uamlhbmdAaW50ZWwuY29tDQo+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2 Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQgbXVsdGlwbGUNCj4gPiBkZXZpY2Vz IHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+ID4NCj4gPiBBbnkgdXBkYXRlcyBvbiB0aGlzIHdv dWxkIGJlIGdyZWF0IHRvIGdldCB0aGlzIGluIGZvciB0aGUgbmV4dCBzdGFibGUgcmVsZWFzZQ0K PiBpZiBwb3NzaWJsZS4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4g PiA+IEZyb206IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiBTZW50OiBN b25kYXksIERlY2VtYmVyIDEyLCAyMDIyIDEyOjI3IFBNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiA+IENjOiBqaWFuLmoud2FuZ0BpbnRlbC5jb207IGdhb2xpbWluZ0BieW9z b2Z0LmNvbS5jbjsNCj4gPiA+IGd1b21pbi5qaWFuZ0BpbnRlbC5jb207IEplZmYgQnJhc2VuIDxq YnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBr Zy9Fc3J0Rm1wRHhlOiBTdXBwb3J0IG11bHRpcGxlDQo+ID4gPiBkZXZpY2VzIHdpdGggMCBIYXJk d2FyZUluc3RhbmNlDQo+ID4gPg0KPiA+ID4gU2tpcCBlcnJvciBjaGVjayBpZiBIYXJkd2FyZUlu c3RhbmNlIGlzIDAgYXMgdGhpcyBlaXRoZXIgbWVhbnMgdGhhdA0KPiA+ID4gRm1wVmVyc2lvbiA8 IDMgYW5kIG5vdCBzdXBwb3J0ZWQgb3IsICJBIHplcm8gbWVhbnMgdGhlIEZNUCBwcm92aWRlcg0K PiA+ID4gaXMgbm90IGFibGUgdG8gZGV0ZXJtaW5lIGEgdW5pcXVlIGhhcmR3YXJlIGluc3RhbmNl IG51bWJlciBvciBhDQo+ID4gPiBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgaXMgbm90IG5lZWRl ZC4iIHBlciBVRUZJIHNwZWNpZmljYXRpb24uDQo+ID4gPg0KPiA+ID4gQXMgdGhlIEZtcEluc3Rh bmNlcyBhcmUgbWVyZ2VkIGFuZCBIYXJkd2FyZUluc3RhbmNlIGlzIG5vdCB1c2VkDQo+ID4gPiBy ZW1vdmUgZXJyb3IgY2hlY2sgaW4gdGhpcyBjYXNlLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gLS0tDQo+ ID4gPiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Fc3J0Rm1wRHhlL0VzcnRGbXAuYyB8IDIyICsr KysrKysrKysrKy0tDQo+IC0tLS0NCj4gPiA+IC0tLQ0KPiA+ID4gIDEgZmlsZSBjaGFuZ2VkLCAx MyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQ0KPiA+ID4NCj4gPiA+IGRpZmYgLS1naXQg YS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiBiL01k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRXNydEZtcER4ZS9Fc3J0Rm1wLmMNCj4gPiA+IGluZGV4IDRm NDdjNTVjY2UuLjViYzYyNzQ2MWQgMTAwNjQ0DQo+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiBAQCAtMTUzLDE2ICsxNTMsMjAgQEAg Q3JlYXRlRXNydEVudHJ5ICgNCj4gPiA+DQo+ID4gPiAgICAvLw0KPiA+ID4gICAgLy8gQ2hlY2sg dG8gc2VlIG9mIEZtcEltYWdlSW5mb0J1ZiBHVUlEL0hhcmR3YXJlSW5zdGFuY2UgaXMNCj4gPiA+ IHVuaXF1ZQ0KPiA+ID4gKyAgLy8gU2tpcCBpZiBIYXJkd2FyZUluc3RhbmNlIGlzIDAgYXMgdGhp cyBpcyB0aGUgY2FzZSBpZg0KPiA+ID4gKyBGbXBWZXJzaW9uIDwNCj4gPiA+ICsgMyAgLy8gb3Ig dGhlIGRldmljZSBjYW4gbm90IGNyZWF0ZSBhIHVuaXF1ZSBJRCBwZXIgVUVGSQ0KPiA+ID4gKyBz cGVjaWZpY2F0aW9uDQo+ID4gPiAgICAvLw0KPiA+ID4gLSAgZm9yIChJbmRleCA9IDA7IEluZGV4 IDwgKk51bWJlck9mRGVzY3JpcHRvcnM7IEluZGV4KyspIHsNCj4gPiA+IC0gICAgaWYgKENvbXBh cmVHdWlkICgmSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiAm Rm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJZCkpIHsNCj4gPiA+IC0gICAgICBpZiAoSGFyZHdh cmVJbnN0YW5jZXNbSW5kZXhdLkhhcmR3YXJlSW5zdGFuY2UgPT0NCj4gPiA+IEZtcEhhcmR3YXJl SW5zdGFuY2UpIHsNCj4gPiA+IC0gICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFc3J0Rm1w RHhlOiBEdXBsaWNhdGUgZmlybXdhcmUgaW1hZ2UNCj4gPiA+IGRlc2NyaXB0b3Igd2l0aCBHVUlE ICVnIEhhcmR3YXJlSW5zdGFuY2U6MHgleFxuIiwNCj4gJkZtcEltYWdlSW5mb0J1Zi0NCj4gPiA+ ID5JbWFnZVR5cGVJZCwgRm1wSGFyZHdhcmVJbnN0YW5jZSkpOw0KPiA+ID4gLSAgICAgICAgQVNT RVJUICgNCj4gPiA+IC0gICAgICAgICAgIUNvbXBhcmVHdWlkICgmSGFyZHdhcmVJbnN0YW5jZXNb SW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJ ZCkgfHwNCj4gPiA+IC0gICAgICAgICAgSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkhhcmR3YXJl SW5zdGFuY2UgIT0NCj4gPiA+IEZtcEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+IC0gICAgICAgICAg KTsNCj4gPiA+IC0gICAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gPiArICBpZiAo Rm1wSGFyZHdhcmVJbnN0YW5jZSAhPSAwKSB7DQo+ID4gPiArICAgIGZvciAoSW5kZXggPSAwOyBJ bmRleCA8ICpOdW1iZXJPZkRlc2NyaXB0b3JzOyBJbmRleCsrKSB7DQo+ID4gPiArICAgICAgaWYg KENvbXBhcmVHdWlkICgmSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ ID4gPiAmRm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJZCkpIHsNCj4gPiA+ICsgICAgICAgIGlm IChIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSGFyZHdhcmVJbnN0YW5jZSA9PQ0KPiA+ID4gRm1w SGFyZHdhcmVJbnN0YW5jZSkgew0KPiA+ID4gKyAgICAgICAgICBERUJVRyAoKERFQlVHX0VSUk9S LCAiRXNydEZtcER4ZTogRHVwbGljYXRlIGZpcm13YXJlDQo+ID4gPiArIGltYWdlDQo+ID4gPiBk ZXNjcmlwdG9yIHdpdGggR1VJRCAlZyBIYXJkd2FyZUluc3RhbmNlOjB4JXhcbiIsDQo+ICZGbXBJ bWFnZUluZm9CdWYtDQo+ID4gPiA+SW1hZ2VUeXBlSWQsIEZtcEhhcmR3YXJlSW5zdGFuY2UpKTsN Cj4gPiA+ICsgICAgICAgICAgQVNTRVJUICgNCj4gPiA+ICsgICAgICAgICAgICAhQ29tcGFyZUd1 aWQgKCZIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSW1hZ2VUeXBlR3VpZCwNCj4gPiA+ICZGbXBJ bWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ID4gKyAgICAgICAgICAgIEhhcmR3YXJl SW5zdGFuY2VzW0luZGV4XS5IYXJkd2FyZUluc3RhbmNlICE9DQo+ID4gPiBGbXBIYXJkd2FyZUlu c3RhbmNlDQo+ID4gPiArICAgICAgICAgICAgKTsNCj4gPiA+ICsgICAgICAgICAgcmV0dXJuIEVG SV9VTlNVUFBPUlRFRDsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICAgICAgICB9DQo+ID4gPiAg ICAgIH0NCj4gPiA+ICAgIH0NCj4gPiA+IC0tDQo+ID4gPiAyLjI1LjENCj4gPg0KPiA+DQo+ID4N Cj4gPiANCj4gPg0KDQo=