From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mx.groups.io with SMTP id smtpd.web11.3612.1676418630494081963 for ; Tue, 14 Feb 2023 15:50:30 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Phpk5gG5; spf=pass (domain: intel.com, ip: 134.134.136.126, 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=1676418630; x=1707954630; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=baAcuy8zZn7XCCW6G1k0lCFs66bN0Oq+Kgu8VE9KP9o=; b=Phpk5gG5Ql8iCVD+em2NNC+4I31wyPhKcFw0D1TYyfmuRgEuI/dFl6xA 9We7mCaioOehLgk7l4gSSZRDK3OXH7KuLDfptjCscdGY48O8W+cl48xtT YgCUZlSKN6CdGRSi3yxv7Erv9n5Cd71DCFPD8KAnihxpw/XjSSXToMZBp Jexb0i7q7xqxgDU4W0qkF0D+8+cHFqN6Ucgcl2g+xDbSuqENISQj+ucw0 AcPj5ZK+Ve5wDPBNOkGgflPF+/hNgKUFlyOUUkX8d+sW8Vu7WLyQCuSoF KJG6yZPM+VPuvRHUSLZ509c5zJyYYYcptrlVQYefI1pHycnIcp/uSKj00 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="314954785" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="314954785" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Feb 2023 15:50:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10621"; a="646954170" X-IronPort-AV: E=Sophos;i="5.97,298,1669104000"; d="scan'208";a="646954170" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga006.jf.intel.com with ESMTP; 14 Feb 2023 15:50:29 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Tue, 14 Feb 2023 15:50:29 -0800 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16 via Frontend Transport; Tue, 14 Feb 2023 15:50:29 -0800 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.109) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Tue, 14 Feb 2023 15:50:29 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TVhXwWoB0irkWNxWsfsndkHSRagOII/6Ug8IKBBt7gpi+/SDTx2337l+YH4O8K3itP1LoV//sqZrKr3Q7kzAOe08Rn8Pa2t1Q5fNEb7TebybifRbElh0/pZPOU7sdGXjenTO3Td1Lx5p7xmE7jET3VhLfxfLNwIz1RxKCDmiXoEN8wRElSV9uFkBTMNbnTJZGA5ls6V74YNNZZwWYyUXgFWiwl0IXOPof0diMRSMOtzCY1f6yhxHXUYh6YdPc78xyKvWkvYHF1y4Rse+WfZBVXaGvkp65ghgOFU12icaYVYoi3XsrbmQIvtMn6/8bNWU1fg716jokkL2YaY04oldZw== 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=baAcuy8zZn7XCCW6G1k0lCFs66bN0Oq+Kgu8VE9KP9o=; b=X2QpnRnwnUUqZ4ZB6DIk9QRTsnX/K4noOeYYuZqRH9jURtrqcgqGapgl78WSeFjJoHpFuPqUMmzcvcaTmkNGXLM0gGQVFb+xVRB4MHkO+bxNeFLEp3KzWoRF6shAA9N3UktYbIA3bMOZN6GuTmw+7x4IQUlzCE6di1t2l/33OSfJ+N/OBo+RHBC5EB3TZX9eq6cGs9TkmWfbUDZfp6npQmwSxDZlX9MkXg4WNqNLx+T8twhWfjoNWx7XykX1fCeGsUtzyP7iFqCctlQf4x6hk7Qvk4Yu4FQn8re9ksEVBk/gQjF/XmHd7X6Cp3nFfupL1mkIsVLsdm4J9MkkwQwqCg== 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 SJ1PR11MB6179.namprd11.prod.outlook.com (2603:10b6:a03:45a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.24; Tue, 14 Feb 2023 23:50:24 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::c4d0:989a:e319:fe68%5]) with mapi id 15.20.6086.026; Tue, 14 Feb 2023 23:50:24 +0000 From: "Michael D Kinney" To: Jeff Brasen , "devel@edk2.groups.io" , "Demeter, Miki" CC: "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Topic: [edk2-devel] [PATCH v2] MdeModulePkg/EsrtFmpDxe: Support multiple devices with 0 HardwareInstance Thread-Index: AQHZPNI9XDWuAdgB7UmVem2cryIULq7Hhj7wgADeEgCAADLksIAAD8EAgAAJS7CAAAEtAIAGb5Dg Date: Tue, 14 Feb 2023 23:50:23 +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_|SJ1PR11MB6179:EE_ x-ms-office365-filtering-correlation-id: 9fce14a7-923d-4334-063e-08db0ee63d72 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Q8n4zUvY+bLehFu4wfkqVdRRYDfcb6aHF+u5vgEY6TFM4OlwfgvNFxosZDQtdGJsiMZUFgFJ7RQT5sYiDz1qOvZBKC9D0DH19d3lATNWnQ3x7BFgf2cid03vdtb8V2FYfHD/VYjSSaznqcvzizgvOR9mCxvJ0m0+P91UB0xSE2lqUpoCwE48ol0PyNcAaBi7Gv5586dO3NRzgmIzZLZLHoX+udnplTrFe9n3386/P2Ylfz/Ngy1q3MxRl/0jJL2v4OUoje3aqBHLrUle/HWwWIQD7uVNGLZs2RV2KY2I5XJDx/Jt/a89kxAOlpfWBTB5yHJ/QpPPo5Ulm0V/tutYGhZewqOlasQe5ueH4skANhJUYApPYFbWYcSVe//tfVosrNl2DqF+mrfcpA3ymyORk7B4zcxevhnUJBILfkp0D0CJqyIKbVL7eKVFTy7S9re0+AZrMECXqc0/ltBQjjeQf9GIpqM4fg5zu/6bUsfFl4BufA5wpp6rjg8c5lfPU6W8Qh9IUzlHvDzUh98LRriWAWSHhbU1Lw7IYkYLG+yFWCffnL4XSZnLtpvuRzxDLvMeEAT0toKZLwJmoaNv560BYB78sLNraycirHpvxcISExpJqOgViihO+Xda+80IJtnqvqbOd1qJbVNVmZfu6Ue7HLLjecn1f7S236JRVv2d4/d93xUe/Ia0EJ2nKqKtZE+JFEsRPovxQxDmalXgfgmS4rBbX5rIFKAENvzLE5OI3TA= 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)(396003)(366004)(136003)(39860400002)(346002)(376002)(451199018)(66446008)(110136005)(83380400001)(316002)(2906002)(6636002)(6506007)(53546011)(122000001)(30864003)(86362001)(9686003)(186003)(26005)(66899018)(52536014)(66476007)(5660300002)(107886003)(33656002)(66946007)(82960400001)(76116006)(38100700002)(4326008)(8936002)(66556008)(8676002)(71200400001)(64756008)(478600001)(38070700005)(55016003)(41300700001)(7696005)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Uy9OVkVEZWQxRXRaa21mcGlnN0FLZDBUd0VvY2hZakhlaXk1b1lWNjl1SDhj?= =?utf-8?B?cTRPVTRQTDI3NW5OcWJ2QjEwdkc5cGd2Y0huVmdBS0RYMDRSNXJLOEhMcjEx?= =?utf-8?B?TXJmREZMWmJsaEVnOGx4Z2hiYjZya0NGeDBLMlVIQUl4ZmNQRFlpNUhnR0c0?= =?utf-8?B?T1o2aVBOWDA0cks0dHY0WWxkM0dQMTR6OFZjTytuZDgyYU9MZVV2S1BOYmNi?= =?utf-8?B?VzE1MUVzRW9WaHFhU3Q0UWkwa3pYS3lsNENPaXowUzRTRzVSN2t1TGNxUzVP?= =?utf-8?B?c3Q3dEU0L25MM2xIMWFWYlh1SVBseEN3MUdqcHAxbFFHNHdYSTg2VEZoa2Rn?= =?utf-8?B?NHo2cEhwTVZ3TVhNR2tJQi9HWnZTczZCNkppeXQ5a1RBcDVTb3k0dzVkSDJl?= =?utf-8?B?UlhndDJ0RjVhZVBSUElsZlJwTDFsRGYxa05VR1hnTzVjaFNFTlZUMVMrMDhG?= =?utf-8?B?bEJKRkRrMExUM3EyMENKTitBQVF4YnBNdHNrVDYrMW5VTmlmeUdRMzh4SnBw?= =?utf-8?B?OVFpNTB1QVBiV1hwaVdJY3hlSDVBM296TktMNy9SdVkwZWtMV1NNbTROT3RF?= =?utf-8?B?VFRtNUhyTHNsRUxCbG16YUVMN09zbndnZlozVUwzdzgrYi9LYmp6QzZtNzht?= =?utf-8?B?Ym9KUFVDOWRlbnBEaDRZb2sxendWWE44RzlGc1VSZzNCdjhrRHFmRWFEbWJF?= =?utf-8?B?bkY2RjJEREhJYXN5Vlp3Qk9ERjc4VC9oRHNsSU5vb3dZWU44TUNjWFllcGhn?= =?utf-8?B?eGlNNVJFdTRydHhGUjEzN1ppdjE0NUpjeW9NWUVFTUZjWnRGa1cyNENvSWFt?= =?utf-8?B?a0dManVGMmdKS0sxSkwrejVVUjFCdVVudUlYSkZ3Q093V0drZXNIdGVPandG?= =?utf-8?B?bFdCQ3pFb1ZVdDdXSGg4d05LVldsTzBZdkcxUUlacDcraFczRXJHd2g2Zlhh?= =?utf-8?B?VUxYekZsU2tXOFlTZFI5dVV2QkFTQ2RxMUNrSXJnbm9FWDA2WnZOMU9OR1BZ?= =?utf-8?B?ZExZdTJvTUtCR2dMclZoWGJaNUNkSi9HTXdHc25ocnFPNTlIYVQ0NTZiUDlR?= =?utf-8?B?WEh2N1I2aGM5WXdmSWR6VWRBeCtTNU9KSnU2cUhRbFNLVEpyaERCMzkxMG9Y?= =?utf-8?B?aUIrNmdrbDR6UDM4YS9zUDkwcGRTbGpiVkdZemkvbXRGRDZuc3l0MlVScHB3?= =?utf-8?B?LzJWdFJTRkJZODcyZnpXQzZYTTlJbVc2VlJoKzVqckRqMWZJTTBiUXljZ1VT?= =?utf-8?B?L1RocGFuby9hWmtJSkNyemdxWEt5MGc4N1dyWllGYmJGZDBjQ3NNREN1UHg5?= =?utf-8?B?MEx3eWM1UXkyd2tITHNYWkZPcVNCR01vVU1NY3A3Y01mTFA2VDVCOTVNWHg2?= =?utf-8?B?bkFiNDE5UjdLckk0K1FDSWZ0UlNHcXNlcFdrU25YVEJnRnRVSzFuYytOOTdC?= =?utf-8?B?TFFvZ29RRGE5bWUxT3M0MCtNR3dnOU1FT20zaDAxT0VyTTIzSmx5N0ZZdlIr?= =?utf-8?B?QW96TXM4V2IvbzZVdURwcXRvdHo5OTRJeTJuOXMzblMvYzExcDRFZnZpMTZD?= =?utf-8?B?Z3lDWHJWSEpCNUJFWUtEV3Ixa3IzQ1VxVXB5K3doK2lSaUorTG1wckhYWVp3?= =?utf-8?B?cnFDVnpTRkFHKy9OTThreWZCcE9NVWVmQXg3VnNPS1NON1EwSnR3S3JLYmU4?= =?utf-8?B?dVhXMnlnS0JwRHRZRVpFQks2TjllZHlFTnk1NFVEak5oTTgvSjc3c2hMNXo0?= =?utf-8?B?UGZDTGNlNlB3azZKS1JYSUk4N2RwRmJzT0xoSGYvWk1CZk1kaUlGdXlZNjJC?= =?utf-8?B?dHJvYVhGb3NIOCsyU2wyOFZnN1lEQVduZmRBdDFVaFcydHVzMzlINXdmWkdV?= =?utf-8?B?SjZpbEwyajlLTEloa2U3QUp4L0lnazFuZmJzS2JseTh6Vmc0REJ0aGxRSmhm?= =?utf-8?B?bUJTRE5XaDZ3anBzSWJJT1VZUnBOaGI4cG96YlB4S1hKWWZweG5la2pLNlJC?= =?utf-8?B?dlRQT0dneVNib2hHWHZnMms4RVRGUEJEY3BkeVA0Sy9tcDhVaVJGT2xuaENF?= =?utf-8?B?ckF5SFNiOUpudkFkZHYydGNzODVQckYrRzhnZHdPbUw5Y25kSkZ6YktvcktV?= =?utf-8?B?T05DNy91dFREbk0vcWUzNXBuU3QxUm9ZaFIrMGttM2VUMzNiM0s3dklub2No?= =?utf-8?B?UUE9PQ==?= 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: 9fce14a7-923d-4334-063e-08db0ee63d72 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Feb 2023 23:50:23.8582 (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: pqsxkDKB6fQW9Ai3pH0AGFqswYzmARmUPABJfztYYaNmlM08rw3KAHuHs+c9bfRrhlhMg0Y7Y6S4XvZF6RgJZ5CRxTfpBX3J5DUJ76YaC68= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ1PR11MB6179 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 SGkgSmVmZiwNCg0KSSBoYXZlIGJlZW4gc3R1ZHlpbmcgdGhlIGNvZGUgZm9yIHNpZGUgZWZmZWN0 cyBmcm9tIFZlcnNpb24gPj0gMyBhbmQgSGFyZHdhcmVJbnN0YW5jZSA9IDAuDQoNCkkgdGhpbmsg dGhlIG9ubHkgc2lkZSBlZmZlY3Qgd2l0aCB5b3VyIHBhdGNoIGlzIGV4dHJhIGVudHJpZXMgaW4g SGFyZHdhcmVJbnRhbmNlcyB3aXRoIHRoZQ0Kc2FtZSBHVUlEIHZhbHVlIGFuZCBIYXJkd2FyZUlu c3RhbmNlIHZhbHVlIG9mIDAuDQoNCiAgSU4gT1VUIEdVSURfSEFSRFdBUkVJTlNUQU5DRV9QQUlS ICAgICAqSGFyZHdhcmVJbnN0YW5jZXMsDQogIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgICAg ICAgICAgICAgKk51bWJlck9mRGVzY3JpcHRvcnMsDQoNClRoaXMgdGFibGUgaXMgb25seSB1c2Vk IHRvIGxvb2sgZm9yIGR1cGxpY2F0ZSBHVUlEL0hhcmR3YXJlSW5zdGFuY2UgcGFpcnMgYW5kIGlz IG5vdCB1c2VkDQphbnl3aGVyZSBlbHNlIGFuZCBpcyBmcmVlZCBhZnRlciBFU1JUIGVudHJpZXMg YXJlIGRldGVybWluZWQuICBUaGUgc2FtZSBudW1iZXIgb2YgRVNSVCBlbnRyaWVzDQphcmUgYmUg Y3JlYXRlZCBldmVuIGlmIHRoZXNlIGV4dHJhIEhhcmR3YXJlSW5zdGFuY2VzIGVudHJpZXMgYXJl IHByZXNlbnQuDQoNCkkgaGF2ZSBhbHNvIG5vdCBzZWVuIGFueSBjb21tZW50cyBvciBjb25jZXJu cyBmcm9tIGFueW9uZSBlbHNlIG9uIHRoaXMgdG9waWMuDQoNCg0KDQpSZXZpZXdlZC1ieTogTWlj aGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQoNCg0KDQpCZXN0IHJl Z2FyZHMsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBK ZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPg0KPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5 IDEwLCAyMDIzIDE6MjEgUE0NCj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBEZW1ldGVyLCBNaWtpIDxtaWtp LmRlbWV0ZXJAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2 Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQgbXVsdGlwbGUgZGV2aWNlcyB3aXRo IDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiANCj4gVGhpcyBpcyB1bmNsZWFyIGluIG15IG9waW5pb24u IFRoZSBzcGVjIGRvZXMgaGF2ZQ0KPiBUaGlzIG51bWJlciBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4g dGhlIG5hbWVzcGFjZSBvZiB0aGUgSW1hZ2VUeXBlSWQgR1VJRCBhbmQgSW1hZ2VJbmRleC4gQW5k DQo+IEZvciBpbXBsZW1lbnRhdGlvbnMgdGhhdCB3aWxsIG5ldmVyIGhhdmUgbW9yZSB0aGFuIG9u ZSBpbnN0YW5jZSBhIHplcm8gY2FuIGJlIHVzZWQuDQo+IA0KPiBCdXQgaXQgYWxzbyBzdGF0ZXMg dGhlIHBhcmFtZXRlciBpcyBvcHRpb25hbCBhbmQgc3RhdGVzIHRoYXQgemVybyBjYW4gYmUgdXNl ZCB3aGVuIGlmIGl0IGlzIG5vdCBhYmxlIHRvIGRldGVybWluZSBhIHVuaXF1ZQ0KPiBoYXJkd2Fy ZSBpbnN0YW5jZSBudW1iZXIgb3IgYSBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgaXMgbm90IG5l ZWRlZC4NCj4gDQo+IEkgY291bGQgc2VlIHJlYXNvbmFibGUgYXJndW1lbnRzIG9uIGJvdGggc2lk ZXMuDQo+IA0KPiAtSmVmZg0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4g PiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDEwLCAyMDIzIDI6MTcgUE0NCj4gPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+OyBEZW1ldGVy LA0KPiA+IE1pa2kgPG1pa2kuZGVtZXRlckBpbnRlbC5jb20+DQo+ID4gQ2M6IEtpbm5leSwgTWlj aGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTogW2Vk azItZGV2ZWxdIFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQNCj4g PiBtdWx0aXBsZSBkZXZpY2VzIHdpdGggMCBIYXJkd2FyZUluc3RhbmNlDQo+ID4NCj4gPiBFeHRl cm5hbCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ DQo+ID4NCj4gPiBCYXNlZCBvbiBVRUZJIFNwZWMsIHdvdWxkIHlvdSBjb25zaWRlciB0aG9zZSBv cHRpb24gcm9tcyB0byBiZSBub24tDQo+ID4gY29uZm9ybWFudD8NCj4gPg0KPiA+IE1pa2UNCj4g Pg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IGRldmVsQGVk azIuZ3JvdXBzLmlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mIEplZmYNCj4g PiA+IEJyYXNlbiB2aWEgZ3JvdXBzLmlvDQo+ID4gPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDEw LCAyMDIzIDEyOjQzIFBNDQo+ID4gPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsNCj4gPiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBEZW1ldGVyLCBN aWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Fc3J0Rm1wRHhlOg0KPiA+IFN1cHBvcnQNCj4g PiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+DQo+ID4g PiBJdCB3YXMgbm90IGFzIHdlIHdlcmUgc2VlaW5nIGRldmljZXMgZXhwb3NlIEZNUCB2aWEgYW4g b3B0aW9uIHJvbQ0KPiA+ID4gZHJpdmVyIHdpdGggVmVyc2lvbiA9PSAzIGFuZCBIYXJkd2FyZUlu c3RhbmNlID0gMC4gSWYgdGhlcmUgYXJlIG11bHRpcGxlIG9mDQo+ID4gdGhlc2UgZGV2aWNlIGl0 IHdvdWxkIGhpdCB0aGUgZXJyb3IgaW4gdGhlIEVzcnRDb2RlLiBUaGUgcGF0Y2ggaW5jbHVkZWQg ZG9lcw0KPiA+IHJlc29sdmUgdGhlIGlzc3VlcyB3ZSB3ZXJlIHNlZWluZy4NCj4gPiA+DQo+ID4g PiAtSmVmZg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVs LmNvbT4NCj4gPiA+ID4gU2VudDogRnJpZGF5LCBGZWJydWFyeSAxMCwgMjAyMyAxMjo0OCBQTQ0K PiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52 aWRpYS5jb20+OyBEZW1ldGVyLA0KPiA+ID4gPiBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29t Pg0KPiA+ID4gPiBDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPg0KPiA+ID4gPiBTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtQQVRDSCB2Ml0gTWRlTW9k dWxlUGtnL0VzcnRGbXBEeGU6DQo+ID4gPiA+IFN1cHBvcnQgbXVsdGlwbGUgZGV2aWNlcyB3aXRo IDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4gPg0KPiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNl IGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4gPg0KPiA+ID4gPg0K PiA+ID4gPiBEaWQgeW91ciBvcmlnaW5hbCBhcHByb2FjaCB3b3JrIGZvciBhbGwgeW91ciB1c2Ug Y2FzZXM/DQo+ID4gPiA+DQo+ID4gPiA+IE1pa2UNCj4gPiA+ID4NCj4gPiA+ID4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlv IDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz4gT24gQmVoYWxmIE9mDQo+ID4gPiA+ID4gSmVmZiBCcmFz ZW4gdmlhIGdyb3Vwcy5pbw0KPiA+ID4gPiA+IFNlbnQ6IEZyaWRheSwgRmVicnVhcnkgMTAsIDIw MjMgODo0NSBBTQ0KPiA+ID4gPiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+Ow0KPiA+ID4gPiA+IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBEZW1ldGVy LCBNaWtpIDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFN1YmplY3Q6IFJlOiBb ZWRrMi1kZXZlbF0gW1BBVENIIHYyXSBNZGVNb2R1bGVQa2cvRXNydEZtcER4ZToNCj4gPiA+ID4g U3VwcG9ydA0KPiA+ID4gPiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFu Y2UNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoYXQgd2FzIG15IG9yaWdpbmFsIGFwcHJvYWNoIHdo ZW4gSSBzYXcgdGhpcyBidXQgSSB3YXMgc2VlaW5nDQo+ID4gPiA+ID4gdGhpcyBvY2N1ciBvbiBh IGRldmljZSB3aXRoIEZtcFZlcnNpb24gPT0gMy4gVGhlIFVFRkkgc3BlYyBpc24ndA0KPiA+ID4g PiA+IGNvbXBsZXRlbHkNCj4gPiA+ID4gY2xlYXIgYnV0IGNvdWxkIGJlIHJlYWQgdGhhdCAwIGlz IGxlZ2FsIGlmIHRoaXMgcGFydCBpc24ndCBiZWluZyB1c2VkLg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4NCj4gPiA+ID4NCj4gPiBodHRwczovL3VlZmkub3JnL3NwZWNzL1VFRkkvMi4xMC8yM19GaXJt d2FyZV9VcGRhdGVfYW5kX1JlcG9ydGluZy5odA0KPiA+ID4gPiBtDQo+ID4gPiA+IGwNCj4gPiA+ ID4gPiAjZWZpLWZpcm13YXJlLW1hbmFnZW1lbnQtcHJvdG9jb2wtZ2V0aW1hZ2VpbmZvDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiBJdCBkb2VzIHN0YXRlIHRoYXQgdGhpcyBpcyBPcHRpb25hbCwgYW5k IGhhcyBhIHN0YXRlbWVudCAiQSB6ZXJvDQo+ID4gPiA+ID4gbWVhbnMgdGhlIEZNUCBwcm92aWRl ciBpcyBub3QgYWJsZSB0byBkZXRlcm1pbmUgYSB1bmlxdWUgaGFyZHdhcmUNCj4gPiA+ID4gPiBp bnN0YW5jZQ0KPiA+ID4gPiBudW1iZXIgb3IgYSBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgaXMg bm90IG5lZWRlZC4iDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBBbHNvLCBvdXIgRVNSVCBpbXBsZW1l bnRhdGlvbiBqdXN0IG1lcmdlcyBhbGwgaW5zdGFuY2VzIHRvIG9uZQ0KPiA+ID4gPiA+IGFueXdh eXMgc28gaXQgZG9lc24ndCBjdXJyZW50bHkgY29uc3VtZSB0aGUgaGFyZHdhcmUgaW5zdGFuY2UN Cj4gPiA+ID4gPiBleGNlcHQgZm9yIHRoaXMNCj4gPiA+ID4gY2hlY2suDQo+ID4gPiA+ID4NCj4g PiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4gSmVmZg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gRnJvbTogS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gU2VudDogVGh1 cnNkYXksIEZlYnJ1YXJ5IDksIDIwMjMgODo0MyBQTQ0KPiA+ID4gPiA+ID4gVG86IGRldmVsQGVk azIuZ3JvdXBzLmlvOyBKZWZmIEJyYXNlbiA8amJyYXNlbkBudmlkaWEuY29tPjsNCj4gPiA+ID4g PiA+IERlbWV0ZXIsIE1pa2kgPG1pa2kuZGVtZXRlckBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiBD YzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4g PiA+ID4gU3ViamVjdDogUkU6IFtQQVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1 cHBvcnQNCj4gPiA+ID4gPiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFu Y2UNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBFeHRlcm5hbCBlbWFpbDogVXNlIGNhdXRpb24g b3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiBIaSBKZWZmLA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoYW5rIHlvdSBm b3IgdGhlIHJlbWluZGVyLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkgYW0gd29uZGVyaW5n IGlmIHRoZSBjaGVjayBzaG91bGQgYmUgZm9yIEZtcFZlcnNpb24gPCAzIGFuZCBub3QNCj4gPiA+ ID4gPiA+IEZtcEhhcmR3YXJlSW5zdGFuY2UgIT0gMC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiBJdCBpcyBwb3NzaWJsZSBmb3IgYW4gRm1wSW5mb0J1ZmZlciB0byBoYXZlIGFuIEZtcFZlcnNp b24gPj0gMw0KPiA+ID4gPiA+ID4gYW5kIGEgSGFyZHdhcmVJbnN0YW5jZSBvZiAwLiAgSWYgbW9y ZSB0aGFuIG9uZSBvZiB0aGVzZSBpdA0KPiA+ID4gPiA+ID4gZm91bmQsIHRoZW4gdGhhdCB3b3Vs ZCBiZSBhbiBFRklfVU5TVVBQT1JURUQgY29uZGl0aW9uLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IElmIEZtcFZlcnNpb24gPj0gMywgdGhlbiB0aGUgSGFyZHdhcmVJbnN0YW5jZSBtdXN0IGJl IGZpbGxlZCBpbg0KPiA+ID4gPiA+ID4gd2l0aCBhIHVuaXF1ZSB2YWx1ZS4gIDAgY2FuIGJlIHVz ZWQgaWYgdGhlcmUgaXMgYXQgbW9zdCAxDQo+ID4gPiA+ID4gPiBpbnN0YW5jZSwgc28gdGhlIGR1 cGxpY2F0ZSBjaGVjayB3b3VsZCBuZXZlciBiZSB0cmlnZ2VyZWQuICBJZg0KPiA+ID4gPiA+ID4g Rm1wVmVyc2lvbiA+PSAzIGFuZCB0aGVyZSBjYW4gYmUgbW9yZSB0aGVuIG9uZSBpbnN0YW5jZSwg dGhlbg0KPiA+ID4gPiA+ID4gdGhlIEhhcmR3YXJlSW5zdGFuY2UgbXVzdCBiZSBhIG5vbi16ZXJv IHVuaXF1ZSB2YWx1ZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gTWlrZQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91 cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YNCj4gPiA+ID4gPiA+ID4g SmVmZiBCcmFzZW4gdmlhIGdyb3Vwcy5pbw0KPiA+ID4gPiA+ID4gPiBTZW50OiBUaHVyc2RheSwg RmVicnVhcnkgOSwgMjAyMyAyOjAzIFBNDQo+ID4gPiA+ID4gPiA+IFRvOiBEZW1ldGVyLCBNaWtp IDxtaWtpLmRlbWV0ZXJAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiBDYzogZGV2ZWxAZWRrMi5n cm91cHMuaW8NCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogW2VkazItZGV2ZWxdIEZXOiBbUEFUQ0gg djJdDQo+ID4gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6DQo+ID4gPiA+ID4gPiBTdXBwb3J0DQo+ ID4gPiA+ID4gPiA+IG11bHRpcGxlIGRldmljZXMgd2l0aCAwIEhhcmR3YXJlSW5zdGFuY2UNCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSGVyZSBpcyBhIHBhdGNoIHRoYXQgaGFzIGJlZW4g cGVuZGluZyBmb3IgYSBiaXQNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhhbmtzLA0K PiA+ID4gPiA+ID4gPiBKZWZmDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+IEZyb206IEplZmYgQnJhc2VuDQo+ID4g PiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgRmVicnVhcnkgMSwgMjAyMyA5OjIxIEFNDQo+ID4g PiA+ID4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4gPiA+ID4gPiBDYzogamlh bi5qLndhbmdAaW50ZWwuY29tOyBnYW9saW1pbmdAYnlvc29mdC5jb20uY247DQo+ID4gPiA+ID4g PiA+IGd1b21pbi5qaWFuZ0BpbnRlbC5jb20NCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogUkU6IFtQ QVRDSCB2Ml0gTWRlTW9kdWxlUGtnL0VzcnRGbXBEeGU6IFN1cHBvcnQNCj4gPiA+ID4gPiA+ID4g bXVsdGlwbGUgZGV2aWNlcyB3aXRoIDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiBBbnkgdXBkYXRlcyBvbiB0aGlzIHdvdWxkIGJlIGdyZWF0IHRvIGdldCB0 aGlzIGluIGZvciB0aGUgbmV4dA0KPiA+ID4gPiA+ID4gPiBzdGFibGUgcmVsZWFzZQ0KPiA+ID4g PiA+ID4gaWYgcG9zc2libGUuDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiBGcm9tOiBKZWZmIEJyYXNlbiA8 amJyYXNlbkBudmlkaWEuY29tPg0KPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IE1vbmRheSwgRGVjZW1i ZXIgMTIsIDIwMjIgMTI6MjcgUE0NCj4gPiA+ID4gPiA+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPiA+ID4gPiA+ID4gPiBDYzogamlhbi5qLndhbmdAaW50ZWwuY29tOyBnYW9saW1p bmdAYnlvc29mdC5jb20uY247DQo+ID4gPiA+ID4gPiA+ID4gZ3VvbWluLmppYW5nQGludGVsLmNv bTsgSmVmZiBCcmFzZW4gPGpicmFzZW5AbnZpZGlhLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiBTdWJq ZWN0OiBbUEFUQ0ggdjJdIE1kZU1vZHVsZVBrZy9Fc3J0Rm1wRHhlOiBTdXBwb3J0DQo+ID4gPiA+ ID4gPiA+ID4gbXVsdGlwbGUgZGV2aWNlcyB3aXRoIDAgSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gU2tpcCBlcnJvciBjaGVjayBpZiBIYXJkd2FyZUlu c3RhbmNlIGlzIDAgYXMgdGhpcyBlaXRoZXINCj4gPiA+ID4gPiA+ID4gPiBtZWFucyB0aGF0IEZt cFZlcnNpb24gPCAzIGFuZCBub3Qgc3VwcG9ydGVkIG9yLCAiQSB6ZXJvDQo+ID4gPiA+ID4gPiA+ ID4gbWVhbnMgdGhlIEZNUCBwcm92aWRlciBpcyBub3QgYWJsZSB0byBkZXRlcm1pbmUgYSB1bmlx dWUNCj4gPiA+ID4gPiA+ID4gPiBoYXJkd2FyZSBpbnN0YW5jZSBudW1iZXIgb3IgYSBoYXJkd2Fy ZSBpbnN0YW5jZSBudW1iZXIgaXMNCj4gPiA+ID4gPiA+ID4gPiBub3QgbmVlZGVkLiIgcGVyIFVF RkkNCj4gPiA+ID4gc3BlY2lmaWNhdGlvbi4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+IEFzIHRoZSBGbXBJbnN0YW5jZXMgYXJlIG1lcmdlZCBhbmQgSGFyZHdhcmVJbnN0YW5jZSBp cyBub3QNCj4gPiA+ID4gPiA+ID4gPiB1c2VkIHJlbW92ZSBlcnJvciBjaGVjayBpbiB0aGlzIGNh c2UuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFNp Z25lZC1vZmYtYnk6IEplZmYgQnJhc2VuIDxqYnJhc2VuQG52aWRpYS5jb20+DQo+ID4gPiA+ID4g PiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+ID4gIE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvRXNydEZt cER4ZS9Fc3J0Rm1wLmMgfCAyMg0KPiA+ID4gPiArKysrKysrKysrKystLQ0KPiA+ID4gPiA+ID4g LS0tLQ0KPiA+ID4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+ICAxIGZpbGUgY2hhbmdl ZCwgMTMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0VzcnRGbXBE eGUvRXNydEZtcC5jDQo+ID4gPiA+ID4gPiA+ID4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0Vz cnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiA+ID4gPiA+ID4gaW5kZXggNGY0N2M1NWNjZS4uNWJj NjI3NDYxZCAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVy c2FsL0VzcnRGbXBEeGUvRXNydEZtcC5jDQo+ID4gPiA+ID4gPiA+ID4gKysrIGIvTWRlTW9kdWxl UGtnL1VuaXZlcnNhbC9Fc3J0Rm1wRHhlL0VzcnRGbXAuYw0KPiA+ID4gPiA+ID4gPiA+IEBAIC0x NTMsMTYgKzE1MywyMCBAQCBDcmVhdGVFc3J0RW50cnkgKA0KPiA+ID4gPiA+ID4gPiA+DQo+ID4g PiA+ID4gPiA+ID4gICAgLy8NCj4gPiA+ID4gPiA+ID4gPiAgICAvLyBDaGVjayB0byBzZWUgb2Yg Rm1wSW1hZ2VJbmZvQnVmIEdVSUQvSGFyZHdhcmVJbnN0YW5jZQ0KPiA+ID4gPiA+ID4gPiA+IGlz IHVuaXF1ZQ0KPiA+ID4gPiA+ID4gPiA+ICsgIC8vIFNraXAgaWYgSGFyZHdhcmVJbnN0YW5jZSBp cyAwIGFzIHRoaXMgaXMgdGhlIGNhc2UgaWYNCj4gPiA+ID4gPiA+ID4gPiArIEZtcFZlcnNpb24g PA0KPiA+ID4gPiA+ID4gPiA+ICsgMyAgLy8gb3IgdGhlIGRldmljZSBjYW4gbm90IGNyZWF0ZSBh IHVuaXF1ZSBJRCBwZXIgVUVGSQ0KPiA+ID4gPiA+ID4gPiA+ICsgc3BlY2lmaWNhdGlvbg0KPiA+ ID4gPiA+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ID4gPiA+ID4gLSAgZm9yIChJbmRleCA9IDA7IElu ZGV4IDwgKk51bWJlck9mRGVzY3JpcHRvcnM7IEluZGV4KyspIHsNCj4gPiA+ID4gPiA+ID4gPiAt ICAgIGlmIChDb21wYXJlR3VpZCAoJkhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5JbWFnZVR5cGVH dWlkLA0KPiA+ID4gPiA+ID4gPiA+ICZGbXBJbWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSkgew0K PiA+ID4gPiA+ID4gPiA+IC0gICAgICBpZiAoSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkhhcmR3 YXJlSW5zdGFuY2UgPT0NCj4gPiA+ID4gPiA+ID4gPiBGbXBIYXJkd2FyZUluc3RhbmNlKSB7DQo+ ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVzcnRGbXBEeGU6 IER1cGxpY2F0ZSBmaXJtd2FyZQ0KPiA+ID4gPiBpbWFnZQ0KPiA+ID4gPiA+ID4gPiA+IGRlc2Ny aXB0b3Igd2l0aCBHVUlEICVnIEhhcmR3YXJlSW5zdGFuY2U6MHgleFxuIiwNCj4gPiA+ID4gPiA+ ICZGbXBJbWFnZUluZm9CdWYtDQo+ID4gPiA+ID4gPiA+ID4gPkltYWdlVHlwZUlkLCBGbXBIYXJk d2FyZUluc3RhbmNlKSk7DQo+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgQVNTRVJUICgNCj4gPiA+ ID4gPiA+ID4gPiAtICAgICAgICAgICFDb21wYXJlR3VpZA0KPiA+ICgmSGFyZHdhcmVJbnN0YW5j ZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiA+ID4gPiA+ID4gJkZtcEltYWdlSW5mb0J1 Zi0+SW1hZ2VUeXBlSWQpIHx8DQo+ID4gPiA+ID4gPiA+ID4gLSAgICAgICAgICBIYXJkd2FyZUlu c3RhbmNlc1tJbmRleF0uSGFyZHdhcmVJbnN0YW5jZSAhPQ0KPiA+ID4gPiA+ID4gPiA+IEZtcEhh cmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4gPiA+ID4gPiAtICAgICAgICAgICk7DQo+ID4gPiA+ID4g PiA+ID4gLSAgICAgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPiA+ID4gPiA+ID4gPiAr ICBpZiAoRm1wSGFyZHdhcmVJbnN0YW5jZSAhPSAwKSB7DQo+ID4gPiA+ID4gPiA+ID4gKyAgICBm b3IgKEluZGV4ID0gMDsgSW5kZXggPCAqTnVtYmVyT2ZEZXNjcmlwdG9yczsgSW5kZXgrKykgew0K PiA+ID4gPiA+ID4gPiA+ICsgICAgICBpZiAoQ29tcGFyZUd1aWQNCj4gPiA+ID4gPiA+ID4gPiAr ICgmSGFyZHdhcmVJbnN0YW5jZXNbSW5kZXhdLkltYWdlVHlwZUd1aWQsDQo+ID4gPiA+ID4gPiA+ ID4gJkZtcEltYWdlSW5mb0J1Zi0+SW1hZ2VUeXBlSWQpKSB7DQo+ID4gPiA+ID4gPiA+ID4gKyAg ICAgICAgaWYgKEhhcmR3YXJlSW5zdGFuY2VzW0luZGV4XS5IYXJkd2FyZUluc3RhbmNlID09DQo+ ID4gPiA+ID4gPiA+ID4gRm1wSGFyZHdhcmVJbnN0YW5jZSkgew0KPiA+ID4gPiA+ID4gPiA+ICsg ICAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVzcnRGbXBEeGU6IER1cGxpY2F0ZQ0KPiA+ ID4gPiA+ID4gPiA+ICsgZmlybXdhcmUgaW1hZ2UNCj4gPiA+ID4gPiA+ID4gPiBkZXNjcmlwdG9y IHdpdGggR1VJRCAlZyBIYXJkd2FyZUluc3RhbmNlOjB4JXhcbiIsDQo+ID4gPiA+ID4gPiAmRm1w SW1hZ2VJbmZvQnVmLQ0KPiA+ID4gPiA+ID4gPiA+ID5JbWFnZVR5cGVJZCwgRm1wSGFyZHdhcmVJ bnN0YW5jZSkpOw0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICAgICAgQVNTRVJUICgNCj4gPiA+ID4g PiA+ID4gPiArICAgICAgICAgICAgIUNvbXBhcmVHdWlkDQo+ID4gPiA+ID4gPiA+ID4gKyAoJkhh cmR3YXJlSW5zdGFuY2VzW0luZGV4XS5JbWFnZVR5cGVHdWlkLA0KPiA+ID4gPiA+ID4gPiA+ICZG bXBJbWFnZUluZm9CdWYtPkltYWdlVHlwZUlkKSB8fA0KPiA+ID4gPiA+ID4gPiA+ICsgICAgICAg ICAgICBIYXJkd2FyZUluc3RhbmNlc1tJbmRleF0uSGFyZHdhcmVJbnN0YW5jZSAhPQ0KPiA+ID4g PiA+ID4gPiA+IEZtcEhhcmR3YXJlSW5zdGFuY2UNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgKTsNCj4gPiA+ID4gPiA+ID4gPiArICAgICAgICAgIHJldHVybiBFRklfVU5TVVBQT1JURUQ7 DQo+ID4gPiA+ID4gPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gPiA+ID4gPiA+ICAgICAgICB9DQo+ ID4gPiA+ID4gPiA+ID4gICAgICB9DQo+ID4gPiA+ID4gPiA+ID4gICAgfQ0KPiA+ID4gPiA+ID4g PiA+IC0tDQo+ID4gPiA+ID4gPiA+ID4gMi4yNS4xDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4NCj4g PiA+DQo+ID4gPg0KPiA+ID4gDQo+ID4gPg0KDQo=