From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.33544.1629996028313968606 for ; Thu, 26 Aug 2021 09:40:28 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=oFP72+wH; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: jiewen.yao@intel.com) X-IronPort-AV: E=McAfee;i="6200,9189,10088"; a="278798055" X-IronPort-AV: E=Sophos;i="5.84,354,1620716400"; d="scan'208";a="278798055" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Aug 2021 09:40:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,354,1620716400"; d="scan'208";a="684995401" Received: from fmsmsx605.amr.corp.intel.com ([10.18.126.85]) by fmsmga006.fm.intel.com with ESMTP; 26 Aug 2021 09:40:26 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Thu, 26 Aug 2021 09:40:26 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Thu, 26 Aug 2021 09:40:25 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) 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.2242.10 via Frontend Transport; Thu, 26 Aug 2021 09:40:25 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) 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.2242.10; Thu, 26 Aug 2021 09:40:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kXMDW5atHldkdcda/yQJgPnKVD8T/HYAC/EPA1Iay8BnUw7jKmPmYRf7N6byyBhoMotirg4gVawNyLjVP05vq4S/PoaFcLqZEJSySrhG+ifxoagQ7dz64vzy8FT4XK0QU8g9T3H5Z8aKed31yRCL/0w8AFnbMRgy9R78Mv6PSVGzbj9HZM8ohY6Vi9XFOxEsaAy41HdPtykIIoieE7P53GR8Jdil/5mHFw/i11d/MwV7Jv2nqMg4ZHPKKfkwtNaWwzveUmAsBCwLFGuR/YdV+nMxceB7mr5u5RtUzXBtwMrL/7Z54oV/uICI+QRFzhMsO8gZH6fV8BYdOXZhXOnDKQ== 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-SenderADCheck; bh=92svw6oYLcd2rCgMXGBIO8iG74IjYVj7hD7KQab5lM0=; b=hBCgqs4qxavsOZ4L+1nQQVem8F6tEg7QnJyqunoKxO0qcXK5NOUu6iXSqb630ZHPWBpmg3nkFkJmQ1ItQljVPCn8kSoZ4WMuEBEkg0F8AE5B0MPezfxWMBVMuPzGKNy52RQQLv6komN38dYhZKlrENFO5wNWidcJYBr08XsGfA3A1UJPAjYtokgxFmIVvC2GCL/5GBORiW0y4HEaHd+pa45Y4evG2mNSDBYhKL1fa3YmcsCulq/HPv+eaFOB4ztzm7RQoaJmGHaMOgyuqVehu6CSYubcTo2p8ZDQflVUiDzm9jASWv1RDzDjezqlIs+E290D7dyTRR0GBU+G1YyO7A== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=92svw6oYLcd2rCgMXGBIO8iG74IjYVj7hD7KQab5lM0=; b=oFP72+wHngttwrmUgENAk/tWF1Iw/IvJVnKLqTh+ILURw8u6Op1rDDoPWwIBz6eWsZtXn5UUoVFwiBLlnnYKFinrGeLvyBCcV0i11Q+0u6CZKgy7S9g8UbqsuJ8pXMqvmMr+LXQ1njeZ9rQGwf2tG/WJXTSVWDXTWEzm2nM2SRE= Received: from PH0PR11MB4885.namprd11.prod.outlook.com (2603:10b6:510:35::14) by PH0PR11MB4807.namprd11.prod.outlook.com (2603:10b6:510:3a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Thu, 26 Aug 2021 16:40:23 +0000 Received: from PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::e97b:e466:268f:fb79]) by PH0PR11MB4885.namprd11.prod.outlook.com ([fe80::e97b:e466:268f:fb79%6]) with mapi id 15.20.4436.024; Thu, 26 Aug 2021 16:40:23 +0000 From: "Yao, Jiewen" To: Ard Biesheuvel , Gerd Hoffmann CC: edk2-devel-groups-io , Ard Biesheuvel , "Justen, Jordan L" , Philippe Mathieu-Daude , "Yao, Jiewen" Subject: Re: [PATCH v2 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection Thread-Topic: [PATCH v2 3/3] RFC: OvmfPkg/PlatformPei: stop using cmos for memory detection Thread-Index: AQHXmmuv7EDqBnKAWU6odWwqpAo8jKuF/LnQ Date: Thu, 26 Aug 2021 16:40:23 +0000 Message-ID: References: <20210826095540.3798609-1-kraxel@redhat.com> <20210826095540.3798609-4-kraxel@redhat.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.5.1.3 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 29bd2ed4-b67b-4bd7-69fe-08d968b0338f x-ms-traffictypediagnostic: PH0PR11MB4807: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XFHF/NLyglbA70ipl62T03DeQq6LZAOB/Gl/4vkSstARYXAvZwxvKfD6Nn4z8R0lFEOX/IvZvkvUzUCchWynj+IDm6to9jUyZL2427nD4nGpOxVdAT+tLcDSsfnrmu/2CZW+8dHoTn/+phvJIGkyJ2LQeNn3zXIvuArcB82ENiVdEc7PBsTa/rE1/G5dIOhqkOceQzMKYQmGEM4fHvn4+G7OxVXR0RNVOGwwXsmys/AabPgS80jykSl9gkLy3GkscXxM6bQbfzqPwEKzPzDRWhkfSrus/d01ZcIErKhrTtomcz5rKxQ/axa+UULsLgoG9sh/BvT2FyN5cPL6mIo51h5mlfYOmmJ3kiMQUCgDheEroaWJL0wvtJ+gyq/FcVdeONDgsc4wRJE6xwGeuENGzr6f30RqoO5onV8i/EcnRtEAGEnziYb10LSzEdHIwzJfEHjpOjYUYKkE9S5DWtofuiTZgFV3OaZxA1ZMzXvm2S+nb6DgWwWe2j8dTQbUK5RU/9bGO1RsKwxxqwK+mbac1oNHfyY0hTrJFu3nbpuLA970WV3jmOEe6LYOlZzuBdM+vm8J18R/LPHsmaG7QYB1iQiIQb+2GgGuTJA7+vffJAN9RQVjInSpbtOavKPf3T9E2kVEnO4azARdLgs8BQBw1B53lMR8/tlqzehNi4MRclFpcXpTvc5XYsMLRegVMuAO/4VxN9GLAe69sf3Rd/yF4xMOyCt5gddQXSEJ52+7PtimogzuCag0OzAJPU0j7ktqHaZYab+7s1tvnH1MjesDUkGf4VoC29GS54Y+eMbF+zs= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4885.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(366004)(136003)(346002)(376002)(39860400002)(8936002)(53546011)(186003)(38070700005)(6506007)(83380400001)(76116006)(2906002)(38100700002)(26005)(122000001)(86362001)(9686003)(66476007)(8676002)(107886003)(54906003)(966005)(66946007)(478600001)(64756008)(71200400001)(4326008)(66446008)(66556008)(55016002)(110136005)(7696005)(33656002)(316002)(19627235002)(52536014)(5660300002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WUVoeHpKZzdybXc2NExoeWNMMVhiUmFBTnNFQ0lxeTJBYXNLSzRQaFJOWklu?= =?utf-8?B?ano5RzkyNDJIYnFXT2NJM1F2Z1dHZTUxYjRFS01KMGRtV09HR3BUL1FIbzFD?= =?utf-8?B?THVIajFUSGNpQS9hZlZUYzZYbzdsdjQyTXd4emF5Q2xzVWpHcXozSTh1SFFS?= =?utf-8?B?Y1RZUHNXNXVxRTdtR2J0bVM0dFo4ZVUvQzdqQnJRdXJOM2E5MWNwK3pCTkor?= =?utf-8?B?M0o0cVh1RWk1QTlJMDRnMGJOOC9sQkpYdGpPcTF5ODlKaENGVHRQVEdyU2ZM?= =?utf-8?B?clRwcE5vUUcwZXRGNlZOUm5MbjdPODdnUXBYUGxRTE55eVluZTVXRW0vQUs2?= =?utf-8?B?MCtxMlhxejE2QzA0NlprMnpmUkxET1VFY3dFMzBzMnV4K1Y0ZHoxUGpoL215?= =?utf-8?B?MDRBL3lRWkxERGZMQUljL0VFQ2YveE1LcUtxcEJ4eVNQV2dGd0hRYyt2N3p6?= =?utf-8?B?ZkszS0diOTZvTTNCZi8rTmhoemljUlZYYVM0cnNNYTU2ZDYvd29vek82alVv?= =?utf-8?B?c0h0bVFXazdRUkxXdElRdVVJY2xsamt0ZUZUcWhHb0VVWGQzMWtkYnZKTFo0?= =?utf-8?B?SDZ1MXpsbjVGTFh5ekJpT1ZxQ2s4ZWR2b3U4cDM5MW5HMmFzcXFuWTMvd1Qv?= =?utf-8?B?Z3d3ODdlRGY1c0plZkQ5N3lNZ2MwSytMWE5VdkRmaG13QXQ2b0U0UXRFcVVn?= =?utf-8?B?YnNFT1kyS0pzRlEzcG1iaGxEV2hSN3hqWXFkSUFIVXdleFM5aVVYV3NZV1Bl?= =?utf-8?B?dnBWcTMxbm94azdzQXBHbjMvTTBFK1hoQ21GZXhTY05Fc05rbS9IbkZpV0RK?= =?utf-8?B?UnNYU25pa0tuekk1Wm16aVZuM2hsYWZCdjlDNlVxN2tvLzdOak14dFRKL1R1?= =?utf-8?B?NFFPQktnQU1qK3MxODdBTVRsdEh6c3NqZWwzOFhGMnphQURYZnVZSTU3eHlW?= =?utf-8?B?SDBqdGZwaXc5WExYYWhacHZpRnJvak5CNG5uS01kdVBMWG5TWUwyeXAvYm5h?= =?utf-8?B?WG9MOG1jclZXcDB0ZjdkWDRtZmZTL1lyRHc2dnFXQjBPdjhqT1JHSGxTNkJy?= =?utf-8?B?ZUprbVlmb3BhMHQyTU5ENEFCY0hhY2VJUjBQNUF1cXpXTk1tcG5FNGdaMTVY?= =?utf-8?B?Q3FQbHpETTl2Rys4SzNWQmU3bzdraFAxMDcwbE5rQkNXYlAybUVZY3RQRFUr?= =?utf-8?B?d1hoM2F1RTFDYUZJZFMrek91QUliUFBZYUd3STZyYk1wYm0wWktjSHU2NTBL?= =?utf-8?B?MkxlcGNKdmFaRTRxZVp5K1IvQzdtWUthQ0tTb0VkUXhoVUMyT2lTMkRoc1or?= =?utf-8?B?MERnSkZaY1JyQjlrWkJUUnI0ZklwcklkVGZiY042OEtvOUpYTDkxY2dydCt6?= =?utf-8?B?elVYWTdlRHRucHFXdnRQVGJGc1daOUtYa3ZCOGI5L3l1M1F3TXorZkZOU1VG?= =?utf-8?B?YXA0NVNvdkk0ZzdsOG1zbVlxTlBVS2szRkJPb1grVXFVMXY1YitpM3gyV1lL?= =?utf-8?B?V2lzQ0VOaGsyVTVwcFFIVmRyaFR4RCtDL2pXcVpmWUtuVmg5UVRlWFBaZlpI?= =?utf-8?B?WDhWWlV5dWxsQ1E3Tm9maFkxQVc4Nkh4WG0zdEtEZXk2THJFaTk2WVloaUJq?= =?utf-8?B?cXdiMmUzQlhpWWlQbWNOVmNsZXhxS2lZTjZUQk9WOERMdjFEZFlCZkt4RTRM?= =?utf-8?B?YkpIOVBzWEJ4b04zdU0vV0p4eUV6amx6ZnN2WFd3dFM1L3BaanVwYjJJMnZm?= =?utf-8?Q?8UvhYd+dbXm/BARaUTmqgJkpxQS5qF/kFDsVqmw?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4885.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29bd2ed4-b67b-4bd7-69fe-08d968b0338f X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Aug 2021 16:40:23.6781 (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: Q5ZKIBL9lNrrpKGIGL4M+qG1sSaMxN+0Rqv6FB2yWtYHvKW5sZZ0hxLybeRocZ0KznrgTidU3AfmYEUQ7zXV7w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB4807 Return-Path: jiewen.yao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 R29vZCBpZGVhLCBBcmQuDQoNCj4gQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gQVNTRVJU IChMb3dlck1lbW9yeVNpemUgPiAwKTsNCg0KSSBsaWtlIHRoaXMgc3VnZ2VzdGlvbi4NCg0KDQpU aGFuayB5b3UNCllhbyBKaWV3ZW4NCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IEFyZCBCaWVzaGV1dmVsIDxhcmRiQGtlcm5lbC5vcmc+DQo+IFNlbnQ6IFRodXJzZGF5 LCBBdWd1c3QgMjYsIDIwMjEgNzoxNSBQTQ0KPiBUbzogR2VyZCBIb2ZmbWFubiA8a3JheGVsQHJl ZGhhdC5jb20+DQo+IENjOiBlZGsyLWRldmVsLWdyb3Vwcy1pbyA8ZGV2ZWxAZWRrMi5ncm91cHMu aW8+OyBBcmQgQmllc2hldXZlbA0KPiA8YXJkYit0aWFub2NvcmVAa2VybmVsLm9yZz47IFlhbywg Smlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IEp1c3RlbiwNCj4gSm9yZGFuIEwgPGpvcmRh bi5sLmp1c3RlbkBpbnRlbC5jb20+OyBQaGlsaXBwZSBNYXRoaWV1LURhdWRlDQo+IDxwaGlsbWRA cmVkaGF0LmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAzLzNdIFJGQzogT3ZtZlBrZy9Q bGF0Zm9ybVBlaTogc3RvcCB1c2luZyBjbW9zIGZvcg0KPiBtZW1vcnkgZGV0ZWN0aW9uDQo+IA0K PiBPbiBUaHUsIDI2IEF1ZyAyMDIxIGF0IDExOjU1LCBHZXJkIEhvZmZtYW5uIDxrcmF4ZWxAcmVk aGF0LmNvbT4gd3JvdGU6DQo+ID4NCj4gPiBSZWY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3Jl Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5Mw0KPiA+DQo+ID4gTm90IG5lZWRlZCBmb3IgcWVtdSAx LjcgKHJlbGVhc2VkIGluIDIwMTMpIGFuZCBuZXdlci4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6 IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiA+IC0tLQ0KPiA+ICBPdm1mUGtn L1BsYXRmb3JtUGVpL01lbURldGVjdC5jIHwgNTggKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9u cygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL092bWZQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0 LmMNCj4gYi9Pdm1mUGtnL1BsYXRmb3JtUGVpL01lbURldGVjdC5jDQo+ID4gaW5kZXggMjAxNTQy NTUzMjRiLi44ZDJjN2Y0MzI0NzIgMTAwNjQ0DQo+ID4gLS0tIGEvT3ZtZlBrZy9QbGF0Zm9ybVBl aS9NZW1EZXRlY3QuYw0KPiA+ICsrKyBiL092bWZQa2cvUGxhdGZvcm1QZWkvTWVtRGV0ZWN0LmMN Cj4gPiBAQCAtMzcsNyArMzcsNiBAQCBNb2R1bGUgTmFtZToNCj4gPiAgI2luY2x1ZGUgPExpYnJh cnkvUWVtdUZ3Q2ZnU2ltcGxlUGFyc2VyTGliLmg+DQo+ID4NCj4gPiAgI2luY2x1ZGUgIlBsYXRm b3JtLmgiDQo+ID4gLSNpbmNsdWRlICJDbW9zLmgiDQo+ID4NCj4gPiAgVUlOVDggbVBoeXNNZW1B ZGRyZXNzV2lkdGg7DQo+ID4NCj4gPiBAQCAtMjk1LDUyICsyOTQsMTEgQEAgR2V0U3lzdGVtTWVt b3J5U2l6ZUJlbG93NGdiICgNCj4gPiAgew0KPiA+ICAgIEVGSV9TVEFUVVMgU3RhdHVzOw0KPiA+ ICAgIFVJTlQ2NCBMb3dlck1lbW9yeVNpemUgPSAwOw0KPiA+IC0gIFVJTlQ4IENtb3MweDM0Ow0K PiA+IC0gIFVJTlQ4IENtb3MweDM1Ow0KPiA+DQo+ID4gICAgU3RhdHVzID0gU2Nhbk9yQWRkNjRC aXRFODIwUmFtIChGQUxTRSwgJkxvd2VyTWVtb3J5U2l6ZSwgTlVMTCk7DQo+ID4gLSAgaWYgKFN0 YXR1cyA9PSBFRklfU1VDQ0VTUyAmJiBMb3dlck1lbW9yeVNpemUgPiAwKSB7DQo+ID4gLSAgICBy ZXR1cm4gTG93ZXJNZW1vcnlTaXplOw0KPiA+IC0gIH0NCj4gPiArICBBU1NFUlQgKFN0YXR1cyA9 PSBFRklfU1VDQ0VTUyAmJiBMb3dlck1lbW9yeVNpemUgPiAwKTsNCj4gDQo+IE5pdDogYmV0dGVy IHRvIGRvDQo+IA0KPiBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiBBU1NFUlQgKExvd2Vy TWVtb3J5U2l6ZSA+IDApOw0KPiANCj4gc28gdGhhdCB5b3UgY2FuIHRlbGwgZnJvbSB0aGUgZGVi dWcgbG9nIHdoaWNoIGNvbmRpdGlvbiB0cmlnZ2VyZWQsIGFuZA0KPiBpZiBpdCBpcyB0aGUgZmly c3Qgb25lLCB3aGF0IHRoZSBhY3R1YWwgZXJyb3IgY29kZSB3YXMuDQo+IA0KPiANCj4gPiArICBy ZXR1cm4gTG93ZXJNZW1vcnlTaXplOw0KPiA+DQo+ID4gLSAgLy8NCj4gPiAtICAvLyBDTU9TIDB4 MzQvMHgzNSBzcGVjaWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUgMTYgTUIuDQo+ID4gLSAg Ly8gKiBDTU9TKDB4MzUpIGlzIHRoZSBoaWdoIGJ5dGUNCj4gPiAtICAvLyAqIENNT1MoMHgzNCkg aXMgdGhlIGxvdyBieXRlDQo+ID4gLSAgLy8gKiBUaGUgc2l6ZSBpcyBzcGVjaWZpZWQgaW4gNjRr YiBjaHVua3MNCj4gPiAtICAvLyAqIFNpbmNlIHRoaXMgaXMgbWVtb3J5IGFib3ZlIDE2TUIsIHRo ZSAxNk1CIG11c3QgYmUgYWRkZWQNCj4gPiAtICAvLyAgIGludG8gdGhlIGNhbGN1bGF0aW9uIHRv IGdldCB0aGUgdG90YWwgbWVtb3J5IHNpemUuDQo+ID4gLSAgLy8NCj4gPiAtDQo+ID4gLSAgQ21v czB4MzQgPSAoVUlOVDgpIENtb3NSZWFkOCAoMHgzNCk7DQo+ID4gLSAgQ21vczB4MzUgPSAoVUlO VDgpIENtb3NSZWFkOCAoMHgzNSk7DQo+ID4gLQ0KPiA+IC0gIHJldHVybiAoVUlOVDMyKSAoKChV SU5UTikoKENtb3MweDM1IDw8IDgpICsgQ21vczB4MzQpIDw8IDE2KSArDQo+IFNJWkVfMTZNQik7 DQo+ID4gLX0NCj4gPiAtDQo+ID4gLQ0KPiA+IC1TVEFUSUMNCj4gPiAtVUlOVDY0DQo+ID4gLUdl dFN5c3RlbU1lbW9yeVNpemVBYm92ZTRnYiAoDQo+ID4gLSAgKQ0KPiA+IC17DQo+ID4gLSAgVUlO VDMyIFNpemU7DQo+ID4gLSAgVUlOVE4gIENtb3NJbmRleDsNCj4gPiAtDQo+ID4gLSAgLy8NCj4g PiAtICAvLyBDTU9TIDB4NWItMHg1ZCBzcGVjaWZpZXMgdGhlIHN5c3RlbSBtZW1vcnkgYWJvdmUg NEdCIE1CLg0KPiA+IC0gIC8vICogQ01PUygweDVkKSBpcyB0aGUgbW9zdCBzaWduaWZpY2FudCBz aXplIGJ5dGUNCj4gPiAtICAvLyAqIENNT1MoMHg1YykgaXMgdGhlIG1pZGRsZSBzaXplIGJ5dGUN Cj4gPiAtICAvLyAqIENNT1MoMHg1YikgaXMgdGhlIGxlYXN0IHNpZ25pZmljYW50IHNpemUgYnl0 ZQ0KPiA+IC0gIC8vICogVGhlIHNpemUgaXMgc3BlY2lmaWVkIGluIDY0a2IgY2h1bmtzDQo+ID4g LSAgLy8NCj4gPiAtDQo+ID4gLSAgU2l6ZSA9IDA7DQo+ID4gLSAgZm9yIChDbW9zSW5kZXggPSAw eDVkOyBDbW9zSW5kZXggPj0gMHg1YjsgQ21vc0luZGV4LS0pIHsNCj4gPiAtICAgIFNpemUgPSAo VUlOVDMyKSAoU2l6ZSA8PCA4KSArIChVSU5UMzIpIENtb3NSZWFkOCAoQ21vc0luZGV4KTsNCj4g PiAtICB9DQo+ID4gLQ0KPiA+IC0gIHJldHVybiBMU2hpZnRVNjQgKFNpemUsIDE2KTsNCj4gPiAg fQ0KPiA+DQo+ID4NCj4gPiBAQCAtMzcxLDEyICszMjksOSBAQCBHZXRGaXJzdE5vbkFkZHJlc3Mg KA0KPiA+ICAgIC8vIElmIFFFTVUgcHJlc2VudHMgYW4gRTgyMCBtYXAsIHRoZW4gZ2V0IHRoZSBo aWdoZXN0IGV4Y2x1c2l2ZSA+PTRHQiBSQU0NCj4gPiAgICAvLyBhZGRyZXNzIGZyb20gaXQuIFRo aXMgY2FuIGV4cHJlc3MgYW4gYWRkcmVzcyA+PSA0R0IrMVRCLg0KPiA+ICAgIC8vDQo+ID4gLSAg Ly8gT3RoZXJ3aXNlLCBnZXQgdGhlIGZsYXQgc2l6ZSBvZiB0aGUgbWVtb3J5IGFib3ZlIDRHQiBm cm9tIHRoZSBDTU9TDQo+ICh3aGljaA0KPiA+IC0gIC8vIGNhbiBvbmx5IGV4cHJlc3MgYSBzaXpl IHNtYWxsZXIgdGhhbiAxVEIpLCBhbmQgYWRkIGl0IHRvIDRHQi4NCj4gPiAtICAvLw0KPiA+ICAg IFN0YXR1cyA9IFNjYW5PckFkZDY0Qml0RTgyMFJhbSAoRkFMU0UsIE5VTEwsICZGaXJzdE5vbkFk ZHJlc3MpOw0KPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiAtICAgIEZpcnN0 Tm9uQWRkcmVzcyA9IEJBU0VfNEdCICsgR2V0U3lzdGVtTWVtb3J5U2l6ZUFib3ZlNGdiICgpOw0K PiA+ICsgICAgRmlyc3ROb25BZGRyZXNzID0gQkFTRV80R0I7DQo+ID4gICAgfQ0KPiA+DQo+ID4g ICAgLy8NCj4gPiBAQCAtNzE5LDcgKzY3NCw2IEBAIFFlbXVJbml0aWFsaXplUmFtICgNCj4gPiAg ICApDQo+ID4gIHsNCj4gPiAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgICAgTG93ZXJNZW1v cnlTaXplOw0KPiA+IC0gIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICBVcHBlck1lbW9yeVNp emU7DQo+ID4gICAgTVRSUl9TRVRUSU5HUyAgICAgICAgICAgICAgIE10cnJTZXR0aW5nczsNCj4g PiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+DQo+ID4gQEAgLTc3 NSwxMiArNzI5LDYgQEAgUWVtdUluaXRpYWxpemVSYW0gKA0KPiA+ICAgICAgLy8gbWVtb3J5IHNp emUgcmVhZCBmcm9tIHRoZSBDTU9TLg0KPiA+ICAgICAgLy8NCj4gPiAgICAgIFN0YXR1cyA9IFNj YW5PckFkZDY0Qml0RTgyMFJhbSAoVFJVRSwgTlVMTCwgTlVMTCk7DQo+ID4gLSAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gLSAgICAgIFVwcGVyTWVtb3J5U2l6ZSA9IEdldFN5c3Rl bU1lbW9yeVNpemVBYm92ZTRnYiAoKTsNCj4gPiAtICAgICAgaWYgKFVwcGVyTWVtb3J5U2l6ZSAh PSAwKSB7DQo+ID4gLSAgICAgICAgQWRkTWVtb3J5QmFzZVNpemVIb2IgKEJBU0VfNEdCLCBVcHBl ck1lbW9yeVNpemUpOw0KPiA+IC0gICAgICB9DQo+ID4gLSAgICB9DQo+ID4gICAgfQ0KPiA+DQo+ ID4gICAgLy8NCj4gPiAtLQ0KPiA+IDIuMzEuMQ0KPiA+DQo=