From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web11.5679.1676000564007081802 for ; Thu, 09 Feb 2023 19:42:44 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=cyZm1rN7; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676000564; x=1707536564; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=cRbZnYpI7Bh3IdQdKzE/4mES+3PBomKvrEwWa5/OgVs=; b=cyZm1rN78i9nPCwU085pOyxGZI6Hu3b7NvwZBtLGct9BA3u+vciblM5W Mnr9ru7DRHnwKH3x5PYntMFdfPHD1XUwskn+WwkWFTN2RJ7geijxoeLAm hzAv14QGuLIAIqydTtbeJmVrO6ymfXvl+XZJrDBnSh5vVr8wjysuX0ee4 AD+ihfjqPIDqulKiAVwXqXYVQN8F33JPS+sgjBEgWIkd/wAbAnYdc1xcf 7r2ExGz4b2RkhoFNxyPO0Dmp4tmrmVbrP9jpXhZgQjin43k9XvidqRnyf 9weenNW+h1B+kxQDiAnHldI66/CGy2NkFC5h0dqytijXwm71AvELO87Pm Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10616"; a="332469721" X-IronPort-AV: E=Sophos;i="5.97,285,1669104000"; d="scan'208";a="332469721" Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Feb 2023 19:42:43 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10616"; a="776748910" X-IronPort-AV: E=Sophos;i="5.97,285,1669104000"; d="scan'208";a="776748910" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga002.fm.intel.com with ESMTP; 09 Feb 2023 19:42:42 -0800 Received: from fmsmsx603.amr.corp.intel.com (10.18.126.83) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Thu, 9 Feb 2023 19:42:42 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Thu, 9 Feb 2023 19:42:42 -0800 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.108) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Thu, 9 Feb 2023 19:42:41 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YnmoIWSKHTYTghNRvKVGxdqLlUv7a2mdxCsiK1mz8afwO4EPQBdn3wC8HMxti30ggjHV21nARJp9HASLjWS/57mXxmtpreO8zGI2cZDW+bXCCffKodHgzhduYDYS2Jdi+sbOVxb2KcRDhufUTCB0CB7uPvkaurhuUHTwxIgVYXiCO54pW2TOa1L21vhXD6J7/JIdvLp2KWlOMxbkltxYhvvBH/fSVQuF0ezoDKhjO3NGYJ5h0YK9INkWu4NGgdUeNjgzdV8WAcc1RWUY9vL8S+EZND4YPApEmFzZC1WGM3f0o729aAJuy3noB8gpWUhqga8PmIoiep53ElGP8b1bnw== 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=cRbZnYpI7Bh3IdQdKzE/4mES+3PBomKvrEwWa5/OgVs=; b=iTSHGlr6foPNnVESRVA1YzPCK/zqblYEHD5+Lt5WmedJdOHl0AZ/jlD/b/6xAoH0SdHK0TUiq5PGovaGA0k2O+JEMzaRtP1SKoj+I4sAGGdOwFUiyQBojFU+cGkTEpuWccGUMhXCuvqN+4ODjA+H9HhgwiSB4SUfIDwy/NFYwGEkrYjS1vysnBBB66LT6dXNTuolKHmoF8xhhct9boyCRSm2uWN+gSooa2SK0dwNS0AmfOOT6bVQIvvTOzTiyn4h/ROxnWRMZaWUfrwcQHUR79Tcozo7cxLGR8Z3Ire8rmji1o8ntIUgHomwiAXGMhr8Seiw01D4NPAyy+XQv1SL3w== 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 Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by CH0PR11MB8192.namprd11.prod.outlook.com (2603:10b6:610:191::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.36; Fri, 10 Feb 2023 03:42:33 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68%7]) with mapi id 15.20.6086.019; Fri, 10 Feb 2023 03:42:33 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "jbrasen@nvidia.com" , "Demeter, Miki" CC: "Kinney, Michael D" 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: AQHZPNI9XDWuAdgB7UmVem2cryIULq7Hhj7w Date: Fri, 10 Feb 2023 03:42:33 +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=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|CH0PR11MB8192:EE_ x-ms-office365-filtering-correlation-id: cceed1f8-b71b-48a7-1083-08db0b18d83d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jJa50216Wg6VKZM03Zb20vQtHwNd6rCSymeOPCFZFm2d0xi34VZrBTsq4ZFqcH7pJ/sroZnKk9Cb+OFKLSgbmeeB26b2+JgB7IuvHJz5fBYx+sxdLVzVo7rSRKAo8qqfEqLFkWX6fgNb+7wcozndNg0OaGKRJtbqZOIFsGNfxX2seTLq74aqXdVl5RB6H/ggZ3wDRVOnq0B0TtXPUAY/WXtGEXU1qNTW79SXR99EYrRn2sdbQwJ3GnL23GiBTi92aQ6NENIrkQ6G2qrbVjsQdVj4YHJjtsUemNolO24BP0ZZ8muuACn/dqKtMj2MeptpjiU3DtNedDIwJKUGfM7vY9gfBQCGtRocqxgI9fnGB8YOaMhqN6EV0bwrhgOImiO0aXcbM8pamIZJykw4P5uDZxRdFYYw9MCI18B8YLFZQKKNwUEVtRK9S/C4iA4VmZFrUOtSKFzzjZBL4WBfUYcm9IlQPMg8/t1MxiC1VmGXdfn+41pzNynGR781lHLf5Z9FxvX6VVZsWTFtHGPyHYNUYu7ziaPHotVKUSVAqvCoJL/e8F2PoNR3b0X9wDqcj0uMqhy7MezdpU7vNgtwBmIjKz1wZbMxRErP6THXdkBxk+h14IOI8ASkANzoj6OkZh7XnHnn3jT03vgA2Lp9x8zb62z/31r9jgPQR/ZhvreS3gSKq9sU6oMsSAZ69bJOXwXqqyrE2/D7EU68Nd9WoAW7SWm4v/K/ANHYP7SbBYkRaxasHQpebiXbb3MnhOajY3h7UP2wtBLTScfEFtw7jCRgAw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(366004)(396003)(376002)(39860400002)(346002)(136003)(451199018)(9686003)(966005)(66899018)(26005)(316002)(186003)(107886003)(6506007)(478600001)(38070700005)(53546011)(71200400001)(7696005)(55016003)(83380400001)(110136005)(6636002)(33656002)(122000001)(66446008)(66946007)(76116006)(66556008)(4326008)(8936002)(66476007)(52536014)(64756008)(8676002)(38100700002)(5660300002)(82960400001)(86362001)(41300700001)(2906002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UXQ1cnNJQUs4UkFTNEx6L01GYWM4R093NUx6aWxYWlVPclBqR3Zrc1ZnaXlR?= =?utf-8?B?VGVlY0ZjcHFnS2htczYvbmZKcnhwd0t5c3NISXNCcnBnbkFZQTJCbUtrTU5q?= =?utf-8?B?eUQ0RVJIV0VEK0hOZ2w3Zkh1UWJ6VHlXd1E2bGVFcmk5cWNCZ0xnVVdSSENE?= =?utf-8?B?OE9vVUhZenY2OEdNUmhsaTlOVGlObUdiYXJhYWo5ajNuRVAvNDR4eE53TS9C?= =?utf-8?B?aHBqWkRMblkycHA4M3FrR2tXU1M4RlNTZVF3YVhsNThPYjRvei9wR0E0ajVL?= =?utf-8?B?Rmx6WEhUVUFsR0JmUTkvMnh1Wk9MMnJyRXNTWGdFSW8xTVd2RVM4ZWQwUXdK?= =?utf-8?B?ck9zMkNxSTIrQ2lTN3dEWGpwRCtZVFR4QXgyK2piRWxGemQ2Zlg4bmVrSWRP?= =?utf-8?B?Y2VpdUpvL2VqZVpjWnhMWUVrUittQlRIeVZlZkQxWndVbk94dnlpUUFRaStZ?= =?utf-8?B?dklmSFdWUDQ1dFJMSmlJYWNiZGRkV3hOSHBIa2V5MkthNEgrSldDU04vcFFh?= =?utf-8?B?ZzV3NitYWVZDNVMwZmNFTG5FSzFqeHpRUWdPVHlldXU5RGJGWU9ndndvUkZE?= =?utf-8?B?U2RBd3l3Z0dxeThzUmxWOXNsbElWQXo4RmVaWGpYYTE5VkFxSmJVY3ExeTFV?= =?utf-8?B?WXluSWUxRXNpcDEwdWpRc3Fwa3RpbmdwY1ppWGJxbWozV0FXNFNkR04zWC9k?= =?utf-8?B?V21BWGJUQ1pWdDJicHVlUEllWGgySy9NV3Q1dlRKNDBJMlBHZ2lTTGN1STNM?= =?utf-8?B?dCtMUnZJa3Vjb3ZScWRlSjNmSWtJaDROby9EU2NYa3MzSHdlSGJVRlVFYnNS?= =?utf-8?B?OE15VStsZFFtT2NDenlQQ3E4RWljK29RZmNpbm1NMWs5L1ZlaVpuRUJhN3RQ?= =?utf-8?B?MllpS2FnTDVIdWI3cm55VUJHcG5rZytXK1JJMVJvOS82Q2hqeURQTVhma3dp?= =?utf-8?B?eHNEa0QxQStQR1FJOUY5bDhFOEhzbGVHdE1OWXFsdFNpeG90Mm5TL2E4N2N2?= =?utf-8?B?Mmh5ejQvaXNHOHFyRkppT3ZkTlg2eEM3aTNKR1ZuOW1sZ0J4YVBpUk9nc0ls?= =?utf-8?B?bWZSaXVTc3dQNGxGQ3lYZURIVEdkV3BSUHlFQWhtSEtnSnJMemVhYmJyb1ZN?= =?utf-8?B?ajA1RGJlTGpRTXpvSTFCbWVsU3l4Ry9lV2J4VXpiR0k3YVhwcnRXTm01eStz?= =?utf-8?B?TjlTVFpiWEYveEpURnVoeTVaUFZWalV1NXloOTh5VUxFdk1qQng3QS9wdnVV?= =?utf-8?B?emQ0Y1YwZXBRamIxS1RkYmNZV2dKYmNPc0lEbTN6Q0xLM0hUaDZOWjYzYlU2?= =?utf-8?B?NHJ2eHgwMFE3Q2dyeTdKdE90UzFhem5qcEJyaXVlSEYzRXJrQ0FFTHFRR3Z6?= =?utf-8?B?NHJKeklYaTFKUmZrOG41VEZoNmt5bGEwS25ZSzBUbDc0TjY1OVVUMWNuSVN4?= =?utf-8?B?bjk4Zit3QjdtdDNMd1RGYktQd0xVb09tZFFjQzRUQXd3QnJ0M0o1b2dRNUk2?= =?utf-8?B?S0d3K0g3dkVDMUtYaGJWbTBqOVVYNlhCQ0V2MnBudUI2d1dIaUhXOXhpV2NM?= =?utf-8?B?THdRM3hmWkxjMGcrdTNRWDQxWXRkVUxscThwa3E0cXh1MkhMeHIrK29oaTFM?= =?utf-8?B?OEhQT0lmRHpZTnBaY254ZE5ZRGFHWW11Q3A5Q25WTU5JaG03VGhNK1dFZ2pK?= =?utf-8?B?QzV2ODFGQ1JaTVUyYmJaaFF6Y3dEUTk3TzlUZFJQYitKOGFJNkRDNWNsUGtN?= =?utf-8?B?SWlWZWNBVVpJZm5TclVLaE1sZllISUVnK3JaUUpjYldKL21kdnlJcnFhM3B4?= =?utf-8?B?ays0OW0yVjJCZ0dvVUoybyt0TWd3WWsxVEQwWHdZWjBSQmhFeno3WGpWMk1p?= =?utf-8?B?VENIbHEwRVkrZUdabmd3clFVbmlNQVE2K0lPRjdvR0dzRVFXTWVEa01SbWkv?= =?utf-8?B?Z2pDSDBRcWxzaHlkVnQ3RnRiN0g5a0NEanJEdm9TUjhqaTR5dWpIVVdwRWFr?= =?utf-8?B?bHRQWEpDTGJXUU0xNmthaFZheWFEWmUwbm5JZi9NOE9KOWZ6blMybmQzdFVC?= =?utf-8?B?N3NwMm9lNFpCbTNhUlhERCtZdHBiQ0VsbVZzYnFaSFozRHoxOE9XNm5NeERN?= =?utf-8?B?ZFppUUhsU1ZqeXNpVjhpWlF2V3FMazNwT0g2YS9qbGxpY1c3STFhWWd6aWJZ?= =?utf-8?B?RWc9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cceed1f8-b71b-48a7-1083-08db0b18d83d X-MS-Exchange-CrossTenant-originalarrivaltime: 10 Feb 2023 03:42:33.7902 (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: pE6eNrGKcijaMmk4jQf3b8SLSWOgG2SqyhtJTEW9MJG1iBgusnXmfhQH4ziJfgj6QcMHGr5eq3qVR6YKeQPWpVRcjYEaYB3yfK+G4NFnykE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR11MB8192 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgSmVmZiwNCg0KVGhhbmsgeW91IGZvciB0aGUgcmVtaW5kZXIuDQoNCkkgYW0gd29uZGVyaW5n IGlmIHRoZSBjaGVjayBzaG91bGQgYmUgZm9yIEZtcFZlcnNpb24gPCAzIGFuZCBub3QNCkZtcEhh cmR3YXJlSW5zdGFuY2UgIT0gMC4NCg0KSXQgaXMgcG9zc2libGUgZm9yIGFuIEZtcEluZm9CdWZm ZXIgdG8gaGF2ZSBhbiBGbXBWZXJzaW9uID49IDMgYW5kDQphIEhhcmR3YXJlSW5zdGFuY2Ugb2Yg MC4gIElmIG1vcmUgdGhhbiBvbmUgb2YgdGhlc2UgaXQgZm91bmQsIHRoZW4NCnRoYXQgd291bGQg YmUgYW4gRUZJX1VOU1VQUE9SVEVEIGNvbmRpdGlvbi4NCg0KSWYgRm1wVmVyc2lvbiA+PSAzLCB0 aGVuIHRoZSBIYXJkd2FyZUluc3RhbmNlIG11c3QgYmUgZmlsbGVkIGluDQp3aXRoIGEgdW5pcXVl IHZhbHVlLiAgMCBjYW4gYmUgdXNlZCBpZiB0aGVyZSBpcyBhdCBtb3N0IDEgaW5zdGFuY2UsDQpz byB0aGUgZHVwbGljYXRlIGNoZWNrIHdvdWxkIG5ldmVyIGJlIHRyaWdnZXJlZC4gIElmIEZtcFZl cnNpb24gPj0gMw0KYW5kIHRoZXJlIGNhbiBiZSBtb3JlIHRoZW4gb25lIGluc3RhbmNlLCB0aGVu IHRoZSBIYXJkd2FyZUluc3RhbmNlIA0KbXVzdCBiZSBhIG5vbi16ZXJvIHVuaXF1ZSB2YWx1ZS4N Cg0KVGhhbmtzLA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJv bTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYg T2YgSmVmZiBCcmFzZW4gdmlhIGdyb3Vwcy5pbw0KPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkg OSwgMjAyMyAyOjAzIFBNDQo+IFRvOiBEZW1ldGVyLCBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwu Y29tPg0KPiBDYzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gU3ViamVjdDogW2VkazItZGV2ZWxd IEZXOiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Fc3J0Rm1wRHhlOiBTdXBwb3J0IG11bHRpcGxl IGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4gDQo+IEhlcmUgaXMgYSBwYXRjaCB0 aGF0IGhhcyBiZWVuIHBlbmRpbmcgZm9yIGEgYml0DQo+IA0KPiBUaGFua3MsDQo+IEplZmYNCj4g DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEplZmYgQnJhc2VuDQo+IFNl bnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMSwgMjAyMyA5OjIxIEFNDQo+IFRvOiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPiBDYzogamlhbi5qLndhbmdAaW50ZWwuY29tOyBnYW9saW1pbmdAYnlvc29m dC5jb20uY247IGd1b21pbi5qaWFuZ0BpbnRlbC5jb20NCj4gU3ViamVjdDogUkU6IFtQQVRDSCB2 Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQgbXVsdGlwbGUgZGV2aWNlcyB3aXRo IDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiANCj4gQW55IHVwZGF0ZXMgb24gdGhpcyB3b3VsZCBiZSBn cmVhdCB0byBnZXQgdGhpcyBpbiBmb3IgdGhlIG5leHQgc3RhYmxlIHJlbGVhc2UgaWYgcG9zc2li bGUuDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogSmVmZiBC cmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiBTZW50OiBNb25kYXksIERlY2VtYmVyIDEy LCAyMDIyIDEyOjI3IFBNDQo+ID4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4gQ2M6IGpp YW4uai53YW5nQGludGVsLmNvbTsgZ2FvbGltaW5nQGJ5b3NvZnQuY29tLmNuOw0KPiA+IGd1b21p bi5qaWFuZ0BpbnRlbC5jb207IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4g U3ViamVjdDogW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZTogU3VwcG9ydCBtdWx0 aXBsZSBkZXZpY2VzDQo+ID4gd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4gPg0KPiA+IFNraXAg ZXJyb3IgY2hlY2sgaWYgSGFyZHdhcmVJbnN0YW5jZSBpcyAwIGFzIHRoaXMgZWl0aGVyIG1lYW5z IHRoYXQNCj4gPiBGbXBWZXJzaW9uIDwgMyBhbmQgbm90IHN1cHBvcnRlZCBvciwgIkEgemVybyBt ZWFucyB0aGUgRk1QIHByb3ZpZGVyIGlzDQo+ID4gbm90IGFibGUgdG8gZGV0ZXJtaW5lIGEgdW5p cXVlIGhhcmR3YXJlIGluc3RhbmNlIG51bWJlciBvciBhIGhhcmR3YXJlDQo+ID4gaW5zdGFuY2Ug bnVtYmVyIGlzIG5vdCBuZWVkZWQuIiBwZXIgVUVGSSBzcGVjaWZpY2F0aW9uLg0KPiA+DQo+ID4g QXMgdGhlIEZtcEluc3RhbmNlcyBhcmUgbWVyZ2VkIGFuZCBIYXJkd2FyZUluc3RhbmNlIGlzIG5v dCB1c2VkIHJlbW92ZQ0KPiA+IGVycm9yIGNoZWNrIGluIHRoaXMgY2FzZS4NCj4gPg0KPiA+DQo+ ID4gU2lnbmVkLW9mZi1ieTogSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiAt LS0NCj4gPiAgTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Fc3J0Rm1wRHhlL0VzcnRGbXAuYyB8IDIy ICsrKysrKysrKysrKy0tLS0tLQ0KPiA+IC0tLQ0KPiA+ICAxIGZpbGUgY2hhbmdlZCwgMTMgaW5z ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1 bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gYi9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gaW5kZXggNGY0N2M1NWNjZS4uNWJj NjI3NDYxZCAxMDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBE eGUvRXNydEZtcC5jDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9Fc3J0Rm1wRHhl L0VzcnRGbXAuYw0KPiA+IEBAIC0xNTMsMTYgKzE1MywyMCBAQCBDcmVhdGVFc3J0RW50cnkgKA0K PiA+DQo+ID4gICAgLy8NCj4gPiAgICAvLyBDaGVjayB0byBzZWUgb2YgRm1wSW1hZ2VJbmZvQnVm IEdVSUQvSGFyZHdhcmVJbnN0YW5jZSBpcyB1bmlxdWUNCj4gPiArICAvLyBTa2lwIGlmIEhhcmR3 YXJlSW5zdGFuY2UgaXMgMCBhcyB0aGlzIGlzIHRoZSBjYXNlIGlmIEZtcFZlcnNpb24NCj4gPiAr IDwNCj4gPiArIDMgIC8vIG9yIHRoZSBkZXZpY2UgY2FuIG5vdCBjcmVhdGUgYSB1bmlxdWUgSUQg cGVyIFVFRkkNCj4gPiArIHNwZWNpZmljYXRpb24NCj4gPiAgICAvLw0KPiA+IC0gIGZvciAoSW5k ZXggPSAwOyBJbmRleCA8ICpOdW1iZXJPZkRlc2NyaXB0b3JzOyBJbmRleCsrKSB7DQo+ID4gLSAg ICBpZiAoQ29tcGFyZUd1aWQgKCZIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSW1hZ2VUeXBlR3Vp ZCwNCj4gPiAmRm1wSW1hZ2VJbmZvQnVmLT5JbWFnZVR5cGVJZCkpIHsNCj4gPiAtICAgICAgaWYg KEhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5IYXJkd2FyZUluc3RhbmNlID09DQo+ID4gRm1wSGFy ZHdhcmVJbnN0YW5jZSkgew0KPiA+IC0gICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsICJFc3J0 Rm1wRHhlOiBEdXBsaWNhdGUgZmlybXdhcmUgaW1hZ2UNCj4gPiBkZXNjcmlwdG9yIHdpdGggR1VJ RCAlZyBIYXJkd2FyZUluc3RhbmNlOjB4JXhcbiIsICZGbXBJbWFnZUluZm9CdWYtDQo+ID4gPklt YWdlVHlwZUlkLCBGbXBIYXJkd2FyZUluc3RhbmNlKSk7DQo+ID4gLSAgICAgICAgQVNTRVJUICgN Cj4gPiAtICAgICAgICAgICFDb21wYXJlR3VpZCAoJkhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5J bWFnZVR5cGVHdWlkLA0KPiA+ICZGbXBJbWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ IC0gICAgICAgICAgSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkhhcmR3YXJlSW5zdGFuY2UgIT0N Cj4gPiBGbXBIYXJkd2FyZUluc3RhbmNlDQo+ID4gLSAgICAgICAgICApOw0KPiA+IC0gICAgICAg IHJldHVybiBFRklfVU5TVVBQT1JURUQ7DQo+ID4gKyAgaWYgKEZtcEhhcmR3YXJlSW5zdGFuY2Ug IT0gMCkgew0KPiA+ICsgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgKk51bWJlck9mRGVzY3Jp cHRvcnM7IEluZGV4KyspIHsNCj4gPiArICAgICAgaWYgKENvbXBhcmVHdWlkICgmSGFyZHdhcmVJ bnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gJkZtcEltYWdlSW5mb0J1Zi0+SW1h Z2VUeXBlSWQpKSB7DQo+ID4gKyAgICAgICAgaWYgKEhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5I YXJkd2FyZUluc3RhbmNlID09DQo+ID4gRm1wSGFyZHdhcmVJbnN0YW5jZSkgew0KPiA+ICsgICAg ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVzcnRGbXBEeGU6IER1cGxpY2F0ZSBmaXJtd2Fy ZSBpbWFnZQ0KPiA+IGRlc2NyaXB0b3Igd2l0aCBHVUlEICVnIEhhcmR3YXJlSW5zdGFuY2U6MHgl eFxuIiwgJkZtcEltYWdlSW5mb0J1Zi0NCj4gPiA+SW1hZ2VUeXBlSWQsIEZtcEhhcmR3YXJlSW5z dGFuY2UpKTsNCj4gPiArICAgICAgICAgIEFTU0VSVCAoDQo+ID4gKyAgICAgICAgICAgICFDb21w YXJlR3VpZCAoJkhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5JbWFnZVR5cGVHdWlkLA0KPiA+ICZG bXBJbWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ICsgICAgICAgICAgICBIYXJkd2Fy ZUluc3RhbmNlc1tJbmRleF0uSGFyZHdhcmVJbnN0YW5jZSAhPQ0KPiA+IEZtcEhhcmR3YXJlSW5z dGFuY2UNCj4gPiArICAgICAgICAgICAgKTsNCj4gPiArICAgICAgICAgIHJldHVybiBFRklfVU5T VVBQT1JURUQ7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICAgICAgICB9DQo+ID4gICAgICB9DQo+ID4g ICAgfQ0KPiA+IC0tDQo+ID4gMi4yNS4xDQo+IA0KPiANCj4gDQo+IA0KPiANCg0K