From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web10.2885.1668571150927891914 for ; Tue, 15 Nov 2022 19:59:11 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=U5o9Q7oU; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: jackx.lin@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668571150; x=1700107150; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=gUnns94rVir76YWOYxWthDtZH0vjfopOYT7xl82kCws=; b=U5o9Q7oU8MvDYajfXZrp+3GVa0HKFoesFeFW0d1PppbHPTBPP0iSz0eI ADSkmltH5wa1bwDk+B+KXwHCzsz7IC1FsFLA2uPv0Pay152K9xSN38CE7 6RN9pQe83BTvaQiYtY78gvr1b+Adw1YgD4g72LT+XmTDkvng6Ek5XqGsY phsM35VaKlmg1pZHH38MF4/iv93PS6ZtdTRWLq0wZCFQ6Mm9ggrP7LYGD 0mkOEB/4PlYwCNOEg4Wjvcb/hbgGZBUDvrMl/WPVF6mWSKaltmSiZoSnn xeXyOJUPviocA8G3cJxBKCC/bRDERol/liqhbPpIfZx+GzLm/Wc1t3Cyh g==; X-IronPort-AV: E=McAfee;i="6500,9779,10532"; a="313591078" X-IronPort-AV: E=Sophos;i="5.96,167,1665471600"; d="scan'208";a="313591078" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Nov 2022 19:59:10 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10532"; a="672244260" X-IronPort-AV: E=Sophos;i="5.96,167,1665471600"; d="scan'208";a="672244260" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orsmga001.jf.intel.com with ESMTP; 15 Nov 2022 19:59:10 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 15 Nov 2022 19:59:09 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Tue, 15 Nov 2022 19:59:09 -0800 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Tue, 15 Nov 2022 19:59:09 -0800 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.170) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Tue, 15 Nov 2022 19:59:09 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KLJa7vnKEH3AUMa+XYBZ1ASDlnImtcbZ3tyA3R3S/L4pY2bALVqGTkHp272cbOqj3IzvmHlsnkJuSxYXBYum4Tqkhw8x6a4lb+iMG7KTYVkW5RDkV6PJ7MLDMl9cOFPEQMiZCh8isirJNienDH1n2W/YZdd+cBSmzLU5kTjoTFqznf04AAWFycORE0343d75cJxFkgxCMjQMNh2TzcdkSPon7eiQm6MHTcnZd77V5XGH0mcd1i1ZSXObaplhpjg9X+H3+qRDyTtVsnNGDro3YpHqCLgil60k/zWnWg1sOcpLGTlM+tBbWpjoUmNtXun5iZb02+ac4kY7nV7OEIDURg== 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=gUnns94rVir76YWOYxWthDtZH0vjfopOYT7xl82kCws=; b=lmqtuN3WLLbryhxlIkTqJgWzL3pYdnhhBybWlZh0qLN12yR2/lPuymPrNlIUT4d+Thb5sni0o2Dj1IUZyyNThOFJpfODiXYkuC/N7AXkpnDPFmmJ/OgEC0fezw7k+ye30ZTP+krLTDcYpV9wogEt5Bro3qXerfcfpMAGRb6BZT+9V9k4NYiynC0y5ZsTCyTNQQdqg46WliVtgK23zq+aaO7/HstSo75L1OUCskWnTv7jX+Gb33Vg0CBIVwZ5p3KQEgo1VsSjqMfAAZf+J48v3xsXJp+ggd5fDoduTRiwztVc2CojEwHnwVZbYNH36WqTB+C6SglVUIQod3odQj8DdA== 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 DM6PR11MB3738.namprd11.prod.outlook.com (2603:10b6:5:139::25) by IA0PR11MB7355.namprd11.prod.outlook.com (2603:10b6:208:433::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5813.12; Wed, 16 Nov 2022 03:59:06 +0000 Received: from DM6PR11MB3738.namprd11.prod.outlook.com ([fe80::1415:c1b1:5278:5307]) by DM6PR11MB3738.namprd11.prod.outlook.com ([fe80::1415:c1b1:5278:5307%7]) with mapi id 15.20.5813.013; Wed, 16 Nov 2022 03:59:06 +0000 From: "JackX Lin" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Desimone, Nathaniel L" , "Oram, Isaac W" , "Gao, Liming" , "Dong, Eric" , "Kuo, Donald" , "Kumar, Chandana C" Subject: Re: [edk2-devel] [edk2-platforms: PATCH] BIOS needs to present cores in order of relative performance in MADT Thread-Topic: [edk2-devel] [edk2-platforms: PATCH] BIOS needs to present cores in order of relative performance in MADT Thread-Index: AQHY+WakxIfdj/Sk6EeLFCIO7ILlg65A6m+AgAABWfA= Date: Wed, 16 Nov 2022 03:59:05 +0000 Message-ID: References: <20221116025246.2075-1-jackx.lin@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.6.500.17 dlp-product: dlpe-windows 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: DM6PR11MB3738:EE_|IA0PR11MB7355:EE_ x-ms-office365-filtering-correlation-id: 9dae3987-6d7f-44b6-a4a8-08dac786e811 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0EKTz3WkgCY42hPoSdJgDtIwz8Frl+2NFfoHIZ7RHym/vASR21mpkuXV1Hp5hYOAQ4Eg5KUUy7B0GifRyJi5RH2JR7YvZKCxQhHdYHXYSSHJ0vZG9FcQSh8zVAa3c1cKMH+RcyvEC2+InoYvQkM/SlQPjXUEevOdrJvpoj2kktPXU6xne4xRLDTOy7LbHhSqzOqh2MTuaJ/qS65qjMXaje5BeW/FItoyPzcstCWdv/UPaKwqPyno7llrAk73rIdUSQXwtOEgzxK/SIFkjTRTQEgxorkLaSo2o+UeXXIxuNAWr4IexewgRwRrIeQKkCZrm/aV6lQlbRfkxCFmHMnFWrU488Z4ygr4zrmJuL32eRxcwAVuLwuVi+yhTDnz3A4H6mT5Ch7c79cQphwucixccoDTQWC1h64OkTW8bg2YvBnloLOycMr3+OFyKihDTz4wBCodvY/N/dcGTjD3xcHL1WafHgOvjijA8083o3qqbSpvFIy9keO5klrfxEa10jEsOGXmsGZx+TJBns9zBnr0KFMaK3TIw63yFoI+DtjsYX6w6IgJo0WrNfW89vf2Ni+aIDPmMSc5jrK6YlvLU/RM3ywUIzd3pmAZZx4GTbkfohRx80ixwM5tJcoQVY5+6Csu6h/pEa37bAQ82DXh0aq9HizsrCX63nNe9MvJT1ivX1dqQnnh7TEOjYVlFWf4BesFTo7SMz283VKwTyGGwoeRLTgsDJtLvyf9lPOmE8nwCBv9pveVeaj3CSZu82JuOY/0unBU5eIo8rovPWW2ReCS4yerY91QjbN7Ffo0uPkTCruWLCsWuEFOwklfweDtKyzQqhxZ+3VroDpVbV51u1NNLQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM6PR11MB3738.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(39860400002)(376002)(396003)(136003)(346002)(451199015)(55016003)(186003)(4326008)(86362001)(38070700005)(38100700002)(2906002)(82960400001)(122000001)(83380400001)(76116006)(478600001)(8936002)(8676002)(5660300002)(6506007)(107886003)(41300700001)(7696005)(66946007)(316002)(66476007)(64756008)(66446008)(110136005)(26005)(53546011)(9686003)(966005)(66556008)(71200400001)(52536014)(54906003)(66899015)(33656002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?T2VDRjhWOWRaYmhBVTdFUUFoM0EwNVlPOGwzNkFLZ2hBM2I1TzIyaXpYVDFT?= =?utf-8?B?ekpiUFV5dHdTYWR6ZU9RczQ5VU5ld1dOajdJVVFOUHJmdzBOVzdHZ3IyWFJs?= =?utf-8?B?NnYwQWY4cTRyVGVRVW5RTW9hOHROZVNVaXdxblpWeHB4bm9jME1EREwzRWww?= =?utf-8?B?MkhCZnBUU3lGSUZ3S1lGeE5xRHA5RjVaS2IxRThqU0RteXFkVk91MjZjQmd1?= =?utf-8?B?RjhQREJlaDRTbjNBamx3R0F6OUtWbjVaNU11cmtudW9aZ1N3MHd5Q2FieDlm?= =?utf-8?B?Y0l3WmxEWDM1MEJqN1JlbHUzdW1sdjVYOTRiTUZSWWpDSUZIbTVTZXVoZlA2?= =?utf-8?B?NWRPUmJPV1cwT0JtMFJzb1hmbGoweW9IYU05b2R4VjF4RHdpYUt1ckc4ZG5p?= =?utf-8?B?RUJicmRyUHRGVktvMGJ1bjRWTG94bkhVSWo0VWVGYzVGK3dnaTRrYXVrSDdO?= =?utf-8?B?ZWRteVRKRytoL28zdmxILzhYUnlzeXdiNEw0MkVRTlM0UkQ3V3g5SEQwS0gv?= =?utf-8?B?U0hhdCs0SklDVEVYUSt3eTUzS0U2MDdJclpBQmRqZnV0Q1ZxSVcyMTJsVlU1?= =?utf-8?B?TEV6bHFmL2U3TUJZc2lOVUx5MStEbDBOZGRmSm9LQ3ZjWmtkZ0RsN29Vb0s1?= =?utf-8?B?RjN1N29HMnBweVNtTE5FYlBYdTE1VUJoa1Z6Skd0Y0RHcHFFaG5SL3BEa0lH?= =?utf-8?B?MXB3VVFVUGpRNTVVUmc0MUtDWlRZME5mbmhBSC9GOEduQXE2MDBkNlBLa1lF?= =?utf-8?B?dklMNE5RWmJydEk5b2o5dE9aRXNqMlV1ckdzbHRUTDJwTFc4bUFQRUNxRnND?= =?utf-8?B?NkdFMnhiNU14ams3ck9ncFVaaDRaTzRyampBTUVrV2R1eFB4OVJIY2ZBMlVn?= =?utf-8?B?UUxKcDVtd281RmlnZ2RycmdPaXFWWG52SEVUUUE5eFR5cEJMblY1ME9rWnpm?= =?utf-8?B?anp1NEZGQVlVYTdheUpUMzl1ZmVVOUJ2L2J5b1AzbVJPM0pHOTJVSFB0MVJJ?= =?utf-8?B?NUJNMmIzZUxGVW5kWDVjdGgrQWFhNkFnRFhyQ2xqbmx2VGlMbE8yeW1WRjNk?= =?utf-8?B?NUMvN0M1bUUybnQ2SGg4dWVoMEpETjRkd0RXd1NFVnVGV0wzT2lpMEp2RHNx?= =?utf-8?B?ekxlbXhsWGtsYmN0SVhxNitrQ3dsY0krcVNFQW5yd1lNT1JBZjlUWFhPSkI2?= =?utf-8?B?VVRUTUFjVlFOSmJML2JPcjREMW5DN0l6MVFSOEJlR3FkdERuR05TMmtkck9t?= =?utf-8?B?QUY4UDFvMUd1c2xUVE9oK0dON05zaGtqUWNvK0lTQW9CQldNL2htWThIdnV1?= =?utf-8?B?ek96MW1kYktib2hjUEFlSG8veXQyNE5vMHo3OWxyY2Mxck5VQnZSZk81SkEz?= =?utf-8?B?WlQrd21CWVJWODB2dGVkMnN0SFBvU2Nld2dRV1E3enV6NlRaeE9HK0o1SE92?= =?utf-8?B?TlpLcGFHZ0tFS2JucnpxVkhKaGFCVWZpSi9iWXpBOWZ2bUNHOUM0K2tYaTk1?= =?utf-8?B?R0tXdjNnL0hHdmE1djJyeC9iaWlJWkxhWG5haUVGRlU0dFBiN0k0OTA4eU16?= =?utf-8?B?K3JncU5IM2VmT3dHemF0dlRMeUNFNkVKSldiNTBLV2tSd3RSdFgzeCt2YUJU?= =?utf-8?B?YjRFZFdUWjZHSERzTG9KeW5uaDVDV1htajRUVlcxdjJGMzR5S2xIZEtVaGtB?= =?utf-8?B?OHQxVURlVHFpcDhOZWgyRTBidWFPU1hhbk8yWFQ2OWZ6ZVRsZUczR1UrMk5Z?= =?utf-8?B?WmNSTVJZSDZZaDdDSkVlSnJBZUZhMDZ2SGNkQ3Fhc1BOUE44SnRudjl3TXFO?= =?utf-8?B?YWx0cjdTbFpDaVF1VmVCU05rMkJQb2M2OGVSZVJmOWJFVjY5V2w2dDBTMzNO?= =?utf-8?B?NGtXeEpOc2VnbEVaSG0rMlhRekdLOUl3WEUvL2hMdUZPMEpzcTJkY29YQnRl?= =?utf-8?B?ZllRVmZBQU5FRFpLemZSOUlQQWdBc3NJWlVCVkNsVllRUnNKZTJOSGQ0YUVl?= =?utf-8?B?dHVzdlJTSmZqZmpkaE0xZXoxS2NlVTB0VlQzUjJlTUV2d1ZaT3ExaHBsZm5y?= =?utf-8?B?OHNMYVJTWU1IRFVWTUhFdU00SGVlcGdiaG1pSHVYMXVNTUpLNGRwSXYyVTVj?= =?utf-8?Q?UVxrZfPneispBy5Fr2bTJz40v?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM6PR11MB3738.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9dae3987-6d7f-44b6-a4a8-08dac786e811 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Nov 2022 03:59:05.9205 (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: O4FdEx8WxxfZrWdhYs4yzbbh7junHx2iRu1mPbiOHZ7v5REiW2ocqrUGUCuVLeW9vNh+I162hmcs4FzZRw/ang== X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR11MB7355 Return-Path: jackx.lin@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWljaGFlbCwNCg0KSSB0aGluayBJIHVuZGVyc3RhbmQgd2hhdCB5b3UgbWVudGlvbmVkLCAN Ckkgd2lsbCBwcm92aWRlIGFub3RoZXIgcGF0Y2guDQpUaGFuayB5b3UuDQoNCkphY2sNCg0KLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT4gDQpTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDE2LCAyMDIy IDExOjUxIEFNDQpUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IExpbiwgSmFja1ggPGphY2t4Lmxp bkBpbnRlbC5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQpDYzogQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBEZXNpbW9uZSwg TmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNvbT47IE9yYW0sIElzYWFj IFcgPGlzYWFjLncub3JhbUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8Z2FvbGltaW5nQGJ5b3Nv ZnQuY29tLmNuPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IEt1bywgRG9uYWxk IDxkb25hbGQua3VvQGludGVsLmNvbT47IEt1bWFyLCBDaGFuZGFuYSBDIDxjaGFuZGFuYS5jLmt1 bWFyQGludGVsLmNvbT4NClN1YmplY3Q6IFJFOiBbZWRrMi1kZXZlbF0gW2VkazItcGxhdGZvcm1z OiBQQVRDSF0gQklPUyBuZWVkcyB0byBwcmVzZW50IGNvcmVzIGluIG9yZGVyIG9mIHJlbGF0aXZl IHBlcmZvcm1hbmNlIGluIE1BRFQNCg0KSSBzZWUgdGhlIENvcmVUeXBlIGlzIGFuIDgtYml0IGZp ZWxkLCBidXQgdGhpcyBnZXRzIGZpbHRlcmVkIGRvd24gdG8gSXNCaWdDb3JlIEJPT0xFQU4uDQoN CklmIHRoZXJlIG1heSBiZSBkaWZmZXJlbnQgY29yZSB0eXBlIHZhbHVlcywgd291bGQgaXQgYmUg bW9yZSBmbGV4aWJsZSB0byBjb2xsZWN0IHRoZSA4LWJpdCBjb3JlIHR5cGUgdmFsdWUgZnJvbSBl YWNoIENQVSBhbmQgaGF2ZSBhIGNvbmZpZ3VyYWJsZSBwb2xpY3kgb24gaG93IHRvIHNvcnQgdGhl IENQVXMgaW4gdGhlIE1BRFQgYmFzZWQgb24gdGhlIGNvcmUgdHlwZSB2YWx1ZXM/DQoNCk1pa2UN Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBlZGsyLmdyb3Vw cy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBKYWNrWCANCj4gTGluDQo+ IFNlbnQ6IFR1ZXNkYXksIE5vdmVtYmVyIDE1LCAyMDIyIDY6NTMgUE0NCj4gVG86IGRldmVsQGVk azIuZ3JvdXBzLmlvDQo+IENjOiBMaW4sIEphY2tYIDxqYWNreC5saW5AaW50ZWwuY29tPjsgTGlu LCBKYWNrWCANCj4gPGphY2t4LmxpbkBpbnRlbC5jb20+OyBDaGl1LCBDaGFzZWwgPGNoYXNlbC5j aGl1QGludGVsLmNvbT47IERlc2ltb25lLCANCj4gTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRl c2ltb25lQGludGVsLmNvbT47IE9yYW0sIElzYWFjIFcgDQo+IDxpc2FhYy53Lm9yYW1AaW50ZWwu Y29tPjsgR2FvLCBMaW1pbmcgPGdhb2xpbWluZ0BieW9zb2Z0LmNvbS5jbj47IA0KPiBEb25nLCBF cmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgS3VvLCBEb25hbGQgPGRvbmFsZC5rdW9AaW50ZWwu Y29tPjsgDQo+IEt1bWFyLCBDaGFuZGFuYSBDIDxjaGFuZGFuYS5jLmt1bWFyQGludGVsLmNvbT4N Cj4gU3ViamVjdDogW2VkazItZGV2ZWxdIFtlZGsyLXBsYXRmb3JtczogUEFUQ0hdIEJJT1MgbmVl ZHMgdG8gcHJlc2VudCANCj4gY29yZXMgaW4gb3JkZXIgb2YgcmVsYXRpdmUgcGVyZm9ybWFuY2Ug aW4gTUFEVA0KPiANCj4gQklPUyBzaG91bGQga2VlcCBNQURUIG9yZGVyaW5nIGJ5IGJpZyBjb3Jl IGZpcnN0IHRoZW4gc21hbGwgY29yZQ0KPiANCj4gU2lnbmVkLW9mZi1ieTogSmFja1ggTGluIDxK YWNrWC5MaW5AaW50ZWwuY29tPg0KPiBDYzogQ2hhc2VsIENoaXUgPGNoYXNlbC5jaGl1QGludGVs LmNvbT4NCj4gQ2M6IE5hdGUgRGVTaW1vbmUgPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNv bT4NCj4gQ2M6IElzYWFjIE9yYW0gPGlzYWFjLncub3JhbUBpbnRlbC5jb20+DQo+IENjOiBMaW1p bmcgR2FvIDxnYW9saW1pbmdAYnlvc29mdC5jb20uY24+DQo+IENjOiBFcmljIERvbmcgPGVyaWMu ZG9uZ0BpbnRlbC5jb20+DQo+IENjOiBEb25hbGQgS3VvIDxEb25hbGQuS3VvQGludGVsLmNvbT4N Cj4gQ2M6IENoYW5kYW5hIEMgS3VtYXIgPGNoYW5kYW5hLmMua3VtYXJAaW50ZWwuY29tPg0KPiBD YzogSmFja1ggTGluIDxKYWNrWC5MaW5AaW50ZWwuY29tPg0KPiAtLS0NCj4gIFBsYXRmb3JtL0lu dGVsL01pblBsYXRmb3JtUGtnL0FjcGkvQWNwaVRhYmxlcy9BY3BpUGxhdGZvcm0uYyB8IDE0OQ0K PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiArKysrKysrKysrKysrKy0tLS0tLS0NCj4gIDEgZmlsZSBjaGFu Z2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg DQo+IGEvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvQWNwaS9BY3BpVGFibGVzL0FjcGlQ bGF0Zm9ybS5jDQo+IGIvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvQWNwaS9BY3BpVGFi bGVzL0FjcGlQbGF0Zm9ybS5jDQo+IGluZGV4IDZlNTdiNjM4ZTAuLjAyYzFkZDNhOTEgMTAwNjQ0 DQo+IC0tLSBhL1BsYXRmb3JtL0ludGVsL01pblBsYXRmb3JtUGtnL0FjcGkvQWNwaVRhYmxlcy9B Y3BpUGxhdGZvcm0uYw0KPiArKysgYi9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9BY3Bp L0FjcGlUYWJsZXMvQWNwaVBsYXRmb3JtLmMNCj4gQEAgLTE4LDYgKzE4LDcgQEAgdHlwZWRlZiBz dHJ1Y3Qgew0KPiAgICBVSU5UMzIgICBGbGFnczsNCj4gICAgVUlOVDMyICAgU29ja2V0TnVtOw0K PiAgICBVSU5UMzIgICBUaHJlYWQ7DQo+ICsgIEJPT0xFQU4gIElzQmlnQ29yZTsNCj4gIH0gRUZJ X0NQVV9JRF9PUkRFUl9NQVA7DQo+IA0KPiAgLy8NCj4gQEAgLTEzMSw2ICsxMzIsMTA0IEBAIEFw cGVuZENwdU1hcFRhYmxlRW50cnkgKA0KPiANCj4gIH0NCj4gDQo+ICsvKioNCj4gKyAgRGV0ZWN0 IGlmIEhldGVybyBDb3JlIGlzIHN1cHBvcnRlZC4NCj4gKw0KPiArICBAcmV0dmFsIFRSVUUgLSBQ cm9jZXNzb3Igc3VwcG9ydCBIZXRlcm9Db3JlDQo+ICsgIEByZXR2YWwgRkFMU0UgLSBQcm9jZXNz b3IgZG9lc250IHN1cHBvcnQgSGV0ZXJvQ29yZSAqKi8gQk9PTEVBTiANCj4gK0VGSUFQSSBJc0hl dGVyb0NvcmVTdXBwb3J0ZWQgKA0KPiArICBWT0lEDQo+ICsgICkNCj4gK3sNCj4gKyAgQ1BVSURf U1RSVUNUVVJFRF9FWFRFTkRFRF9GRUFUVVJFX0ZMQUdTX0VEWCBFZHg7DQo+ICsNCj4gKyAgLy8v DQo+ICsgIC8vLyBDaGVjayBIZXRlcm8gZmVhdHVyZSBpcyBzdXBwb3J0ZWQNCj4gKyAgLy8vIHdp dGggQ1BVSUQuKEVBWD03LEVDWD0wKTpFRFhbMTVdPTENCj4gKyAgLy8vDQo+ICsgIEFzbUNwdWlk RXggKENQVUlEX1NUUlVDVFVSRURfRVhURU5ERURfRkVBVFVSRV9GTEFHUywgMCwgTlVMTCwgTlVM TCwgDQo+ICtOVUxMLCAmRWR4LlVpbnQzMik7DQo+ICsgIGlmIChFZHguQml0cy5IeWJyaWQgPT0g MSkgew0KPiArICAgIHJldHVybiBUUlVFOw0KPiArICB9DQo+ICsgIHJldHVybiBGQUxTRTsNCj4g K30NCj4gKw0KPiArLyoqDQo+ICsgIERldGVjdCB0aGUgdHlwZSBvZiBjb3JlLCB3aGV0aGVyIGl0 IGlzIEJpZy9TbWFsbCBDb3JlLg0KPiArDQo+ICsgIEBwYXJhbVtvdXRdICAgIENvcmVUeXBlICAg ICAgT3V0cHV0IHBvaW50ZXIgdGhhdCBnZXQgQ1BVSURfTkFUSVZFX01PREVMX0lEX0lORk8gZGF0 YQ0KPiArICAgICAgICAgICAgICAgICAxMGggLSBRdWFyaw0KPiArICAgICAgICAgICAgICAgICAy MGggLSBBdG9tDQo+ICsgICAgICAgICAgICAgICAgIDMwSCAtIEtuaWdodHMNCj4gKyAgICAgICAg ICAgICAgICAgNDBIIC0gQ29yZQ0KPiArKiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4gK0dldENv cmVUeXBlICgNCj4gKyAgT1VUICBVSU5UOCAgICpDb3JlVHlwZQ0KPiArICApDQo+ICt7DQo+ICsg IFVJTlQzMiAgIEVheDsNCj4gKw0KPiArICBpZiAoSXNIZXRlcm9Db3JlU3VwcG9ydGVkICgpKSB7 DQo+ICsgICAgLy8NCj4gKyAgICAvLyBDaGVjayB3aGljaCBpcyB0aGUgcnVubmluZyBjb3JlIGJ5 IHJlYWRpbmcgQ1BVSUQuKEVBWD0xQUgsIEVDWD0wMEgpOkVBWA0KPiArICAgIC8vDQo+ICsgICAg QXNtQ3B1aWQgKENQVUlEX0hZQlJJRF9JTkZPUk1BVElPTiwgJkVheCwgTlVMTCwgTlVMTCwgTlVM TCk7DQo+ICsgICAgKkNvcmVUeXBlID0gKFVJTlQ4KSgoRWF4ICYgMHhGRjAwMDAwMCkgPj4gMjQp Ow0KPiArICB9IGVsc2Ugew0KPiArICAgICpDb3JlVHlwZSA9IENQVUlEX0NPUkVfVFlQRV9JTlRF TF9DT1JFOw0KPiArICB9DQo+ICt9DQo+ICsNCj4gKy8qKg0KPiArICBGdW5jdGlvbiB3aWxsIGdv IHRocm91Z2ggYWxsIHByb2Nlc3NvcnMgdG8gaWRlbnRpZnkgQ29yZSBvciBBdG9tDQo+ICsgIGJ5 IGNoZWNraW5nIENvcmUgVHlwZSBhbmQgdXBkYXRlIGluIElzQmlnQ29yZS4NCj4gKw0KPiArICBA cGFyYW1baW5dIENwdUFwaWNJZE9yZGVyVGFibGUgICAgICAgICBQb2ludCB0byBhIGJ1ZmZlciB3 aGljaCB3aWxsIGJlIGZpbGxlZCBpbiBDb3JlIHR5cGUgaW5mb3JtYXRpb24uDQo+ICsqKi8NCj4g K1ZPSUQNCj4gK1NUQVRJQw0KPiArRUZJQVBJDQo+ICtDb2xsZWN0Q3B1Q29yZVR5cGUgKA0KPiAr ICBJTiBFRklfQ1BVX0lEX09SREVSX01BUCAgICAgICAgKkNwdUFwaWNJZE9yZGVyVGFibGUNCj4g KyAgKQ0KPiArew0KPiArICBDUFVJRF9TVFJVQ1RVUkVEX0VYVEVOREVEX0ZFQVRVUkVfRkxBR1Nf RURYICAgICBFZHg7DQo+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEVheDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQXBOdW1iZXI7DQo+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ29yZVR5cGU7DQo+ICsNCj4gKyAgU3RhdHVzID0gbU1w U2VydmljZS0+V2hvQW1JICgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBtTXBTZXJ2aWNl LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICZBcE51bWJlcg0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICk7DQo+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ICsNCj4g KyAgLy8vDQo+ICsgIC8vLyBDaGVjayBIZXRlcm8gZmVhdHVyZSBpcyBzdXBwb3J0ZWQgIC8vLyB3 aXRoIA0KPiArIENQVUlELihFQVg9NyxFQ1g9MCk6RURYWzE1XT0xICAvLy8gIEFzbUNwdWlkRXgg DQo+ICsgKENQVUlEX1NUUlVDVFVSRURfRVhURU5ERURfRkVBVFVSRV9GTEFHUywgMCwgTlVMTCwg TlVMTCwgTlVMTCwgDQo+ICsgJkVkeC5VaW50MzIpOyAgaWYgKEVkeC5CaXRzLkh5YnJpZCA9PSAx KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBDaGVjayB3aGljaCBpcyB0aGUgcnVubmluZyBjb3Jl IGJ5IHJlYWRpbmcgQ1BVSUQuKEVBWD0xQUgsIEVDWD0wMEgpOkVBWA0KPiArICAgIC8vDQo+ICsg ICAgQXNtQ3B1aWQgKENQVUlEX0hZQlJJRF9JTkZPUk1BVElPTiwgJkVheCwgTlVMTCwgTlVMTCwg TlVMTCk7DQo+ICsgICAgQ29yZVR5cGUgPSAoVUlOVDgpICgoRWF4ICYgMHhGRjAwMDAwMCkgPj4g MjQpOyAgfSBlbHNlIHsNCj4gKyAgICBDb3JlVHlwZSA9IENQVUlEX0NPUkVfVFlQRV9JTlRFTF9D T1JFOyAgfQ0KPiArDQo+ICsgIGlmIChDb3JlVHlwZSA9PSBDUFVJRF9DT1JFX1RZUEVfSU5URUxf Q09SRSkgew0KPiArICAgIENwdUFwaWNJZE9yZGVyVGFibGVbQXBOdW1iZXJdLklzQmlnQ29yZSA9 IFRSVUU7DQo+ICsgIH0NCj4gK30NCj4gKw0KPiAgLyoqDQo+ICAgIENvbGxlY3QgYWxsIHByb2Nl c3NvcnMgaW5mb3JtYXRpb24gYW5kIGNyZWF0ZSBhIENwdSBBcGljIElkIHRhYmxlLg0KPiANCj4g QEAgLTEzOCw3ICsyMzcsNyBAQCBBcHBlbmRDcHVNYXBUYWJsZUVudHJ5ICggICoqLyAgRUZJX1NU QVRVUyAgDQo+IENyZWF0ZUNwdUxvY2FsQXBpY0luVGFibGUgKA0KPiAtICBJTiBFRklfQ1BVX0lE X09SREVSX01BUCAqQ3B1QXBpY0lkT3JkZXJUYWJsZQ0KPiArICBJTiBFRklfQ1BVX0lEX09SREVS X01BUCAgICAgICAgICAgICAgICAgICAqQ3B1QXBpY0lkT3JkZXJUYWJsZQ0KPiAgICApDQo+ICB7 DQo+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gQEAgLTE0Niw5ICsyNDUsMjQgQEAgQ3JlYXRlQ3B1TG9jYWxBcGljSW5UYWJsZSAoDQo+ICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4Ow0KPiAgICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyUHJvY2Vzc29yOw0K PiAgICBFRklfQ1BVX0lEX09SREVSX01BUCAgICAgICAgICAgICAgICAgICAgICAqQ3B1SWRNYXBQ dHI7DQo+ICsgIEVGSV9DUFVfSURfT1JERVJfTUFQICAgICAgICAgICAgICAgICAgICAgICpUZW1w Q3B1QXBpY0lkT3JkZXJUYWJsZTsNCj4gICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU29ja2V0Ow0KPiANCj4gLSAgU3RhdHVzICAgICA9IEVGSV9TVUNDRVNTOw0K PiArICBUZW1wQ3B1QXBpY0lkT3JkZXJUYWJsZSA9IEFsbG9jYXRlWmVyb1Bvb2wgKG1OdW1iZXJP ZkNwdXMgKiBzaXplb2YgDQo+ICsgKEVGSV9DUFVfSURfT1JERVJfTUFQKSk7ICBpZiAoVGVtcENw dUFwaWNJZE9yZGVyVGFibGUgPT0gTlVMTCkgew0KPiArICAgIHJldHVybiBFRklfVU5TVVBQT1JU RUQ7DQo+ICsgIH0NCj4gKw0KPiArICBDb2xsZWN0Q3B1Q29yZVR5cGUgKFRlbXBDcHVBcGljSWRP cmRlclRhYmxlKTsgIA0KPiArIG1NcFNlcnZpY2UtPlN0YXJ0dXBBbGxBUHMgKA0KPiArICAgICAg ICAgICAgICAgIG1NcFNlcnZpY2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRo aXMNCj4gKyAgICAgICAgICAgICAgICAoRUZJX0FQX1BST0NFRFVSRSkgQ29sbGVjdENwdUNvcmVU eXBlLCAgICAvLyBQcm9jZWR1cmUNCj4gKyAgICAgICAgICAgICAgICBUUlVFLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTaW5nbGVUaHJlYWQNCj4gKyAgICAgICAgICAg ICAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWl0RXZl bnQNCj4gKyAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBUaW1lb3V0SW5NaWNyb3NlY3NvbmQNCj4gKyAgICAgICAgICAgICAgICBUZW1w Q3B1QXBpY0lkT3JkZXJUYWJsZSwgICAgICAgICAgICAgICAgICAvLyBQcm9jZWR1cmVBcmd1bWVu dA0KPiArICAgICAgICAgICAgICAgIE5VTEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8vIEZhaWxlZENwdUxpc3QNCj4gKyAgICAgICAgICAgICAgICApOw0KPiANCj4gICAg Zm9yIChDdXJyUHJvY2Vzc29yID0gMCwgSW5kZXggPSAwOyBDdXJyUHJvY2Vzc29yIDwgbU51bWJl ck9mQ3B1czsgQ3VyclByb2Nlc3NvcisrLCBJbmRleCsrKSB7DQo+ICAgICAgU3RhdHVzID0gbU1w U2VydmljZS0+R2V0UHJvY2Vzc29ySW5mbyAoIEBAIC0xNTcsOSArMjcxLDkgQEAgDQo+IENyZWF0 ZUNwdUxvY2FsQXBpY0luVGFibGUgKA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlBy b2Nlc3NvckluZm9CdWZmZXINCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+IA0K PiAtICAgIENwdUlkTWFwUHRyID0gKEVGSV9DUFVfSURfT1JERVJfTUFQICopICZDcHVBcGljSWRP cmRlclRhYmxlW0luZGV4XTsNCj4gKyAgICBDcHVJZE1hcFB0ciA9IChFRklfQ1BVX0lEX09SREVS X01BUCAqKSANCj4gKyAmVGVtcENwdUFwaWNJZE9yZGVyVGFibGVbSW5kZXhdOw0KPiAgICAgIGlm ICgoUHJvY2Vzc29ySW5mb0J1ZmZlci5TdGF0dXNGbGFnICYgUFJPQ0VTU09SX0VOQUJMRURfQklU KSAhPSAwKSB7DQo+IC0gICAgICBDcHVJZE1hcFB0ci0+QXBpY0lkICA9IChVSU5UMzIpUHJvY2Vz c29ySW5mb0J1ZmZlci5Qcm9jZXNzb3JJZDsNCj4gKyAgICAgIENwdUlkTWFwUHRyLT5BcGljSWQg ID0gKFVJTlQzMikgDQo+ICsgUHJvY2Vzc29ySW5mb0J1ZmZlci5Qcm9jZXNzb3JJZDsNCj4gICAg ICAgIENwdUlkTWFwUHRyLT5UaHJlYWQgID0gUHJvY2Vzc29ySW5mb0J1ZmZlci5Mb2NhdGlvbi5U aHJlYWQ7DQo+ICAgICAgICBDcHVJZE1hcFB0ci0+RmxhZ3MgICA9ICgoUHJvY2Vzc29ySW5mb0J1 ZmZlci5TdGF0dXNGbGFnICYgUFJPQ0VTU09SX0VOQUJMRURfQklUKSAhPSAwKTsNCj4gICAgICAg IENwdUlkTWFwUHRyLT5Tb2NrZXROdW0gPSBQcm9jZXNzb3JJbmZvQnVmZmVyLkxvY2F0aW9uLlBh Y2thZ2U7DQo+IEBAIC0xODQsMjIgKzI5OCw0MyBAQCBDcmVhdGVDcHVMb2NhbEFwaWNJblRhYmxl ICgNCj4gICAgLy8NCj4gICAgREVCVUcgKChERUJVR19JTkZPLCAiQnNwQXBpY0lkIC0gMHgleFxu IiwgR2V0QXBpY0lkICgpKSk7DQo+IA0KPiAtDQo+ICAgIC8vDQo+ICAgIC8vIEZpbGwgaW4gQWNw aVByb2Nlc3NvclVpZC4NCj4gICAgLy8NCj4gICAgZm9yIChTb2NrZXQgPSAwOyBTb2NrZXQgPCBG aXhlZFBjZEdldDMyIChQY2RNYXhDcHVTb2NrZXRDb3VudCk7IFNvY2tldCsrKSB7DQo+ICAgICAg Zm9yIChDdXJyUHJvY2Vzc29yID0gMCwgSW5kZXggPSAwOyBDdXJyUHJvY2Vzc29yIDwgbU51bWJl ck9mQ3B1czsgQ3VyclByb2Nlc3NvcisrKSB7DQo+IC0gICAgICBpZiAoQ3B1QXBpY0lkT3JkZXJU YWJsZVtDdXJyUHJvY2Vzc29yXS5GbGFncyAmJiAoQ3B1QXBpY0lkT3JkZXJUYWJsZVtDdXJyUHJv Y2Vzc29yXS5Tb2NrZXROdW0gPT0gU29ja2V0KSkgew0KPiAtICAgICAgICBDcHVBcGljSWRPcmRl clRhYmxlW0N1cnJQcm9jZXNzb3JdLkFjcGlQcm9jZXNzb3JVaWQgPSAoQ3B1QXBpY0lkT3JkZXJU YWJsZVtDdXJyUHJvY2Vzc29yXS5Tb2NrZXROdW0gPDwgbU51bU9mQml0U2hpZnQpDQo+ICsgSW5k ZXg7DQo+ICsgICAgICBpZiAoVGVtcENwdUFwaWNJZE9yZGVyVGFibGVbQ3VyclByb2Nlc3Nvcl0u RmxhZ3MgJiYgKFRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0N1cnJQcm9jZXNzb3JdLlNvY2tldE51 bSA9PSBTb2NrZXQpKSB7DQo+ICsgICAgICAgIFRlbXBDcHVBcGljSWRPcmRlclRhYmxlW0N1cnJQ cm9jZXNzb3JdLkFjcGlQcm9jZXNzb3JVaWQgPSANCj4gKyAoVGVtcENwdUFwaWNJZE9yZGVyVGFi bGVbQ3VyclByb2Nlc3Nvcl0uU29ja2V0TnVtIDw8DQo+IG1OdW1PZkJpdFNoaWZ0KSArIEluZGV4 Ow0KPiAgICAgICAgICBJbmRleCsrOw0KPiAgICAgICAgfQ0KPiAgICAgIH0NCj4gICAgfQ0KPiAN Cj4gKyAgLy8NCj4gKyAgLy8gUmUtb3JkZXJpbmcgQ3B1IGNvcmVzIGluZm9ybWF0aW9uIHRvIENw dUFwaWNJZE9yZGVyVGFibGUgIC8vIGJ5IA0KPiArIGJpZyBjb3JlIGZpcnN0LCB0aGVuIHNtYWxs IGNvcmUuDQo+ICsgIC8vDQo+ICsgIGZvciAoSW5kZXggPSAwLCBDdXJyUHJvY2Vzc29yID0gMDsg SW5kZXggPCBtTnVtYmVyT2ZDcHVzOyBJbmRleCsrKSB7DQo+ICsgICAgaWYgKFRlbXBDcHVBcGlj SWRPcmRlclRhYmxlW0luZGV4XS5Jc0JpZ0NvcmUpIHsNCj4gKyAgICAgIENvcHlNZW0gKCZDcHVB cGljSWRPcmRlclRhYmxlW0N1cnJQcm9jZXNzb3JdLCAmVGVtcENwdUFwaWNJZE9yZGVyVGFibGVb SW5kZXhdLCBzaXplb2YgKEVGSV9DUFVfSURfT1JERVJfTUFQKSk7DQo+ICsgICAgICBDdXJyUHJv Y2Vzc29yKys7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gKyAgZm9yIChJbmRleCA9IDA7IElu ZGV4IDwgbU51bWJlck9mQ3B1czsgSW5kZXgrKykgew0KPiArICAgIGlmICghKFRlbXBDcHVBcGlj SWRPcmRlclRhYmxlW0luZGV4XS5Jc0JpZ0NvcmUpKSB7DQo+ICsgICAgICBDb3B5TWVtICgmQ3B1 QXBpY0lkT3JkZXJUYWJsZVtDdXJyUHJvY2Vzc29yXSwgJlRlbXBDcHVBcGljSWRPcmRlclRhYmxl W0luZGV4XSwgc2l6ZW9mIChFRklfQ1BVX0lEX09SREVSX01BUCkpOw0KPiArICAgICAgQ3VyclBy b2Nlc3NvcisrOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICAgIERFQlVHICgoREVCVUdfSU5G TywgIjo6QUNQSTo6ICBBUElDIElEIE9yZGVyIFRhYmxlIEluaXQuICAgbU51bU9mQml0U2hpZnQg PSAleFxuIiwgbU51bU9mQml0U2hpZnQpKTsNCj4gICAgRGVidWdEaXNwbGF5UmVPcmRlclRhYmxl IChDcHVBcGljSWRPcmRlclRhYmxlKTsNCj4gDQo+ICsgIGlmIChUZW1wQ3B1QXBpY0lkT3JkZXJU YWJsZSAhPSBOVUxMKSB7DQo+ICsgICAgRnJlZVBvb2wgKFRlbXBDcHVBcGljSWRPcmRlclRhYmxl KTsgIH0NCj4gKw0KPiAgICByZXR1cm4gU3RhdHVzOw0KPiAgfQ0KPiANCj4gLS0NCj4gMi4zMi4w LndpbmRvd3MuMg0KPiANCj4gDQo+IA0KPiANCj4gDQoNCg==