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.web10.167582.1673879275979696690 for ; Mon, 16 Jan 2023 06:27:57 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=OmAHh0bo; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: jiewen.yao@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1673879276; x=1705415276; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=rZM+nsi0QuG5Hx8WE3PZbp0hHzbisb+td2xrsJ1+9LY=; b=OmAHh0bo2+WYFvl9xKqagnB+EeobDv6GlXgwP8i+4s8KUlPjN/9VC5kW BeYWC1mwjFvjuGmFSojE8XOA45RCmIwoSENiXr70Fvuy7HWmVOs0J5ApG i7VJ2o0F3gI4DStC34k6dKp2X+lPEhK//FJX8i7QsNwXfGHqYvUuw1aK7 YaWkRYeGmWHDFjsWh7/mJYa5TvuYvgLQxowkCvFOxnf5EXnqbT2RUXT4w ZovkOfV2O3gIswCnQFgygjCfVyt94Kj/kWxaPouB4WlOBR4PL2PIQH14I vtHVyzGAzqck536tQ3S/DtfXgBQLSfNVg9lEBf+kZUI8kAaOuF4giJIi5 g==; X-IronPort-AV: E=McAfee;i="6500,9779,10592"; a="326531169" X-IronPort-AV: E=Sophos;i="5.97,221,1669104000"; d="scan'208";a="326531169" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jan 2023 06:27:55 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10592"; a="689498271" X-IronPort-AV: E=Sophos;i="5.97,221,1669104000"; d="scan'208";a="689498271" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga008.jf.intel.com with ESMTP; 16 Jan 2023 06:27:55 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.16; Mon, 16 Jan 2023 06:27:54 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) 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.2507.16 via Frontend Transport; Mon, 16 Jan 2023 06:27:54 -0800 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.48) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.16; Mon, 16 Jan 2023 06:27:53 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A6EpWl97Ur4M26NJSxwnb9k7ZKljChnGGmPbbg+ymbDdJkahIVtY0yzWCyuhhORoJuR498zCUIBTt1ojyYRtfuCwUOSWp9tf+HldqikQudHxkQk/yoojPd2Kn+b9aHXUgCVJV5d/Kdgha95Vc4VAQyiQgzy1vpvgDQHElwCozXWhklaeZM4zOyq01GTYoQtNekvyxVDyYxaWee25cmPYOc37zaSks4+2GC5BGvadMReCFyiQ69idLr3KtQfcmbr7GO4mm7mCZ3Ovanfww6RTRcb31GRpENwOEP8o7Ar/G47EiXpcEzSXoKrj0Wu+x3Evyd1vX+PPK29NuZv51t5WSw== 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=rZM+nsi0QuG5Hx8WE3PZbp0hHzbisb+td2xrsJ1+9LY=; b=Ao+cBj0QQkaz+r83zfKNNCxJ/dRUw32SIVYSrq2/pqcR52X9h0jDguTVrLsKyhTJLhCVpBg99zV+Bjy0FWxKyCgrpZOy6avSPafTHcmK3NFMuJvYRivLvMfAELsLiZOj0G60LaPuf4c7265T1gsbb+phAwrj4JNVpZnIjtMU/0DjzNco1zF/RWdZw3SxypG3/fX0aIv505NAEjJJCtamaTEZ0doTfOMncp3NR12wv/oulGU+EjPWW/ZmZZ/5lKeMhHHI08AvWAvjCQ3IDFnG2EcelgpuvkVblqzgdpih6NATvT2kiIZhbNu38SPrg/DUQb0tlMygWGeIhWN/IaovtA== 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 MW4PR11MB5872.namprd11.prod.outlook.com (2603:10b6:303:169::14) by PH7PR11MB7148.namprd11.prod.outlook.com (2603:10b6:510:1ef::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5986.23; Mon, 16 Jan 2023 14:27:48 +0000 Received: from MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::5f56:1bdc:2eae:c041]) by MW4PR11MB5872.namprd11.prod.outlook.com ([fe80::5f56:1bdc:2eae:c041%7]) with mapi id 15.20.6002.013; Mon, 16 Jan 2023 14:27:48 +0000 From: "Yao, Jiewen" To: "devel@edk2.groups.io" , "ardb@kernel.org" CC: "Xu, Min M" , "Aktas, Erdem" , James Bottomley , Gerd Hoffmann , "Tom Lendacky" , Michael Roth Subject: Re: [edk2-devel] [PATCH V1 1/1] OvmfPkg/AcpiPlatformDxe: Measure ACPI table from QEMU in TDVF Thread-Topic: [edk2-devel] [PATCH V1 1/1] OvmfPkg/AcpiPlatformDxe: Measure ACPI table from QEMU in TDVF Thread-Index: AQHZKU3eGyGpegw6rEOjkv3NNLPyJ66gVKNAgACGAACAADapUIAABdOAgAABw7A= Date: Mon, 16 Jan 2023 14:27:48 +0000 Message-ID: References: <20230116015658.194-1-min.m.xu@intel.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: MW4PR11MB5872:EE_|PH7PR11MB7148:EE_ x-ms-office365-filtering-correlation-id: a62915ce-cb4a-4a09-9f6f-08daf7cdd788 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: rZuYEJOWHudnDKetzXVcevYR3Fv099xQIzGnZZjZ5yO5Dk3AeDt48KELFZZ2sxbQv98mdT2dnKrDpiTBogFAOEppm66eb9qDoZDmoIMwwmyZgYhvwrsj/t2JIiQpxrXsVA5riT2QQBKASVtS5r9RBVWnzgeTyQl5aQNmn8r6rOrshjEzKIInXmpDfb67ZEneirCJgsKhTAfZS/5sOqC9am7+PQebp2MkOzytDknhF7BuMkF/q/d4scrKHmm7oqMpzB1RwfGWdDAgPh3nX+ED0jfozJatQkdaJvHDRGePuVxYBbhk/IVja6fFHrC8gcqsNKe9LV2DBxetE1UGJS8VQEKLcRV1Bm5xhJujztqNfU0DfW9rQP/Ot/txHhIWqpvr9fiSTRHhWLrDMBhFUMkdYJ5GJFi4LR8mOhouJaoJ6+kekKRSB6tV+jIGR0ZKGm5vw1OeEa2qLn8CJd0CQfbkgK2YscSci6TJYtpGFX4av5FU3BAe4ucHWtbqfwNKNTYJNEIcGqfu3+M5WwpYqwKx/YQtUGbuvT2YxNW9z3b8FKSGGzbcL9a7Tg9LqubkhnKWCtul+s/9PLrB38pg71mDHTQL4WsxqwkNy/cwDdcIyQAW94d/dNjnWJs9wzc0WofYwpMynR57VonqkhM1uo1rxV40/S3pHxEa6I4CHJuCx/qNrVs22NjyTpfh++xWys6TptUXqIezj2JkAETdJz8MG4fqlU7bnAT+ERssyH4kJgV88v90yWacJ9ytd1KtUw+W8UO0v8P7MW7tfm8mr+3qwA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW4PR11MB5872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(136003)(346002)(396003)(39860400002)(376002)(451199015)(66899015)(33656002)(26005)(76116006)(66946007)(8676002)(41300700001)(66476007)(55016003)(66556008)(53546011)(64756008)(4326008)(9686003)(186003)(66446008)(86362001)(83380400001)(5660300002)(82960400001)(52536014)(8936002)(110136005)(54906003)(6506007)(478600001)(71200400001)(316002)(7696005)(966005)(30864003)(2906002)(38070700005)(122000001)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UlFZUTEvOGdvNExaenJHcU5BMWg0TSt0SWQyc3kvbHlGS3BGaDFSUVJYdEF3?= =?utf-8?B?bUhLYmZvZUhtdmJPd0FSY01ZQnBXTXFmY2kxVDM5dVBVYjdXTENZQUwzTzJ6?= =?utf-8?B?dUtVb3NSa2E0UlVnM0FpNGxDdHlDT21OeVNzSGJOaXo2Z1lpTDBmSkVOU0ZH?= =?utf-8?B?WDUvZ2UrTkF2RzBrZGNMZnlhK29UTUJCa2MvZHEyMmlBY0FUdllrUDNpb05S?= =?utf-8?B?aE5Kd3I5UE9HbTRDU3hjQzNDYk5pZGFTLyt3aFV5ZkVHTGZqN0JUTHByOHpy?= =?utf-8?B?czNWakFGdnMyblU2ZzlrcXFSZVhjVnJNS0VrNDdxcWhraHVuM2tEZFpNMCs1?= =?utf-8?B?UEVTWmhrYWRoK3lINXBBU1A5SlZRelpibDFXazhPWWJZMG1hUW1zL25UeW9r?= =?utf-8?B?Z1RzS1V5YTI0dWFUaWdOanBYUVgyY1FMQWhLR0U3a0M4RzQ4cVpRck9qdkgx?= =?utf-8?B?Y2hVeTRrcWlpdStsZUEvcUdZME1rU0pENnZMYzBtby9sNlU4VjhOSjNadTdD?= =?utf-8?B?MC9qUFNOdjA5REVRTENrbERVQ1FBUFQzQTRwbnUxUjZXTkt6aDFEUnd4SGww?= =?utf-8?B?NTR0SWVZbkdScEdCMWR2b3poRkJEMERTcmFwRHVMVDNSd245cE93a0pudnUr?= =?utf-8?B?SFMxdmN0aTZ1bWJRQVRGWU5uNGM2eUVQMDRLemhqN25qTUM4aGNzMHE0NXFG?= =?utf-8?B?VkdobDBjcUc5U0FNYTZxVU1RSUMxOEV1Y2c0emxjUmpMQ0FhdzhxT2U0ajdJ?= =?utf-8?B?RHY5OWErbUxMS0Q3SnVtRVowRWNWNUhLb0VmdzF5NERhK2l3TVRNWUJvd2dk?= =?utf-8?B?c3JHd0kvVEZmM2EwZG1ZSjhnS0t5WGM4Y29wNm5ucWIvYjFqcHF5RkpEa3FY?= =?utf-8?B?bkZKdm9zWG9tSnNBblpacys3WXJJSWszTHdQV3NDbFpkRWdlVXZleXErZ282?= =?utf-8?B?YW42VWxrTnYwMWdtZlRndlBlRW1uUmFXcDNvVnJzcGpZV2prOHBQbktxT1lt?= =?utf-8?B?K0plbnUwUFhCU0dLWU0rbFF4eGxDTnZzRXQ2WER5aDZCRmhMUWg3OUdpOVVt?= =?utf-8?B?Q24xTGFOTVRaSVFRNnNSQ2tJN1J2ZHJ5aU14T25zYURVSjFwRHJyYjZ0cENr?= =?utf-8?B?OEZRT2trWFhTR3BVMU0xMExSZmp4ZGtlYnJLT2wwaEMzMjlGUU8vWnd6aTYw?= =?utf-8?B?Zmc5UFBvdkIwTVFqS0xvZTFuUEhzZ2hPeVcwWFdMdXdpaFJpMVFmdlRVUURP?= =?utf-8?B?QzYvbnVaZTRKb0lCQlZCWDZmNVdjOGdTV0ZrMDZ2aGdpc0FQVS9qcGFhaXVT?= =?utf-8?B?Z0JrRnVaQjREN09VQkRKZWhYY1NEZllwWUxJS0NoUklmelZPNnBpR0c3cmU2?= =?utf-8?B?YXlpaGxUSm9qdUQ2aWxIdzJQVklmQmExZ2hvTEJ5TWc5ZGIzY0VQbmRsbjFz?= =?utf-8?B?WnVFWTBQT2ZKMmNrUml3TFJrelo0ZS84eUNiZlFyZVhEc0FyRnJRMW40TVJP?= =?utf-8?B?clRTUU5pcWkxWERoUkJKdk5RM0Nnd1ZvRUh6eXIvVzhOV1R2a1hYUDVUVXll?= =?utf-8?B?cm9hdHFNNC9tcXdNOXU0ako5WkNKNWgrMDhwTyt0QktXV0JKRkJGUHd6SlEx?= =?utf-8?B?U1hhOWFSM2ZGKzkrdEpUbzNYZ05aZ3lyRVJPOXRpcDc3THA1dVNBL08zV1c2?= =?utf-8?B?TEtPMkFIWE8xbDVWVlNPTEtoV2hKVlZQYmFNbXlsbFJZY2V1VEkyOTFBbkNt?= =?utf-8?B?R0hmT3dhUTlzK09CSUxVYXNrUExaeFpqLytZc1RyOWNmQWwzb01LaWd4VTk0?= =?utf-8?B?NHN3TzR6U2ZLNGM0RHhubmc5ejRld1hialprc3Jsd2VVZ2cxcjF3c2RSd0I1?= =?utf-8?B?UURQdllxSzJ5Ymk1VEdIak1YOVJMTlY5YUUxb3Rsc2xvVWVWZWFXQ3JRbDNM?= =?utf-8?B?MHdrMWtxcm5xb2dqaDJkRjF0ZFBNaXN3eDFWV2RvOVVDb2Rrdk5zQlhTSVp5?= =?utf-8?B?QjBhb21SbHd4b1RFSTJraWF3TGNlSHhVWHR3TWw0MHdZU2ZuVlBVeHBSeEFE?= =?utf-8?B?Q0JTTjZ4blVnOUt3U1dUWHd5eHEzQlJrQTVoYy9pUFNpQTI0NWFBQzU4M2JH?= =?utf-8?Q?PEsghLjlfln97lihDk+Lkmg85?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW4PR11MB5872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a62915ce-cb4a-4a09-9f6f-08daf7cdd788 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Jan 2023 14:27:48.2133 (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: 2vI/Q8y74UzuKSSIXE4SkZGC5d+NAVdqdhFQQJzM3CkrVP5TAKa4ShtxpUT8gaL+hvdzhgRVgg0uzdDg/aYbwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7148 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 RWFjaCBtb2R1bGUsIHdoaWNoIHdhbnRzIHRvIGxvYWQgQUNQSSB0YWJsZS4NCg0KTW9zdCBjb2Rl cyBhcmUgZnJvbSBjbG9zZSBzb3VyY2UgcGxhdGZvcm0uDQoNCk9uZSBleGFtcGxlIGluIEVES0lJ IFNlY3VyaXR5UGtnIGlzIFRQTTIuDQpodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIv YmxvYi9tYXN0ZXIvU2VjdXJpdHlQa2cvVGNnL1RjZzJBY3BpL1RjZzJBY3BpLmMjTDY5MA0KDQpo dHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9tYXN0ZXIvU2VjdXJpdHlQa2cv VGNnL1RjZzJBY3BpL1RjZzJBY3BpLmMjTDc5NA0KDQpKdXN0IHNlYXJjaCAiVHBtTWVhc3VyZUFu ZExvZ0RhdGEiIC4uLg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog ZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2Yg QXJkDQo+IEJpZXNoZXV2ZWwNCj4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDE2LCAyMDIzIDEwOjE1 IFBNDQo+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9A aW50ZWwuY29tPg0KPiBDYzogWHUsIE1pbiBNIDxtaW4ubS54dUBpbnRlbC5jb20+OyBBa3Rhcywg RXJkZW0NCj4gPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IEphbWVzIEJvdHRvbWxleSA8amVqYkBs aW51eC5pYm0uY29tPjsgR2VyZA0KPiBIb2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+OyBUb20g TGVuZGFja3kNCj4gPHRob21hcy5sZW5kYWNreUBhbWQuY29tPjsgTWljaGFlbCBSb3RoIDxtaWNo YWVsLnJvdGhAYW1kLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjEg MS8xXSBPdm1mUGtnL0FjcGlQbGF0Zm9ybUR4ZToNCj4gTWVhc3VyZSBBQ1BJIHRhYmxlIGZyb20g UUVNVSBpbiBURFZGDQo+IA0KPiBPbiBNb24sIDE2IEphbiAyMDIzIGF0IDE0OjU3LCBZYW8sIEpp ZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+IHdyb3RlOg0KPiA+DQo+ID4gRG8geW91IG1lYW4g cmVhbCBwbGF0Zm9ybSBCSU9TPw0KPiA+DQo+IA0KPiBZZXMNCj4gDQo+ID4gVGhlIHJ1bGVzIGFy ZToNCj4gPiAxKSBUaGUgQUNQSSB0YWJsZSBvbiB0aGUgZmxhc2ggbG9hZGVkIGJ5IHRoZSBCSU9T IGlzIG1lYXN1cmVkICpiZWZvcmUqIGFueQ0KPiBtb2RpZmljYXRpb24gYW5kICpiZWZvcmUqIGlu c3RhbGxhdGlvbi4gRm9yIGV4YW1wbGUsIERTRFQsIFNTRFQuDQo+ID4gMikgVGhlIEFDUEkgdGFi bGUgY29uc3RydWN0ZWQgYnkgdGhlIEJJT1MgZHluYW1pY2FsbHkgZG9lcyBub3QgbmVlZCB0byBi ZQ0KPiBtZWFzdXJlZC4gRm9yIGV4YW1wbGUgTUFEVC4NCj4gPg0KPiANCj4gT0sgc28gd2hpY2gg RURLMiBjb21wb25lbnQgaXMgbm9ybWFsbHkgaW4gY2hhcmdlIG9mIHRoaXM/DQo+IA0KPiANCj4g DQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogQXJkIEJpZXNo ZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4NCj4gPiA+IFNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNiwg MjAyMyA2OjM4IFBNDQo+ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IFlhbywgSmlld2Vu IDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+IENjOiBYdSwgTWluIE0gPG1pbi5tLnh1QGlu dGVsLmNvbT47IEFrdGFzLCBFcmRlbQ0KPiA+ID4gPGVyZGVtYWt0YXNAZ29vZ2xlLmNvbT47IEph bWVzIEJvdHRvbWxleSA8amVqYkBsaW51eC5pYm0uY29tPjsNCj4gR2VyZA0KPiA+ID4gSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPjsgVG9tIExlbmRhY2t5DQo+ID4gPiA8dGhvbWFzLmxlbmRh Y2t5QGFtZC5jb20+OyBNaWNoYWVsIFJvdGggPG1pY2hhZWwucm90aEBhbWQuY29tPg0KPiA+ID4g U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjEgMS8xXSBPdm1mUGtnL0FjcGlQbGF0 Zm9ybUR4ZToNCj4gPiA+IE1lYXN1cmUgQUNQSSB0YWJsZSBmcm9tIFFFTVUgaW4gVERWRg0KPiA+ ID4NCj4gPiA+IEFub3RoZXIgcXVlc3Rpb246IGhvdyBkb2VzIHRoaXMgZGV2aWF0ZSBmcm9tIG9y ZGluYXJ5IG1lYXN1cmVkIGJvb3Q/DQo+ID4gPiBIb3cgYW5kIHdoZW4gYXJlIEFDUEkgdGFibGVz IG1lYXN1cmVkIG9uIHN1Y2ggc3lzdGVtcz8NCj4gPiA+DQo+ID4gPg0KPiA+ID4gT24gTW9uLCAx NiBKYW4gMjAyMyBhdCAwMzo0MiwgWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0K PiB3cm90ZToNCj4gPiA+ID4NCj4gPiA+ID4gSGkNCj4gPiA+ID4gSSBoYXZlIHR3byBmZWVkYmFj azoNCj4gPiA+ID4NCj4gPiA+ID4gMSkgV2hhdCB3ZSBuZWVkIG1lYXN1cmUgaXMgdGhlIGlucHV0 IGZyb20gVk1NICpiZWZvcmUqIGFueQ0KPiA+ID4gbW9kaWZpY2F0aW9uIGFuZCAqYmVmb3JlKiBp bnN0YWxsYXRpb24uDQo+ID4gPiA+IFBsZWFzZSBkb24ndCB1c2UgQUNQSSBTRFQgcHJvdG9jb2wg dG8gZ2V0IHRoZSB0YWJsZSAqYWZ0ZXIqIG1vZGlmaWNhdGlvbi4NCj4gPiA+ID4NCj4gPiA+ID4g MikgV2h5IG5vdCB1c2UgVHBtTWVhc3VyZUFuZExvZ0RhdGEoKSBpbg0KPiA+ID4NCj4gaHR0cHM6 Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvbWFzdGVyL01kZU1vZHVsZVBrZy9JbmNs dWRlL0xpDQo+ID4gPiBicmFyeS9UcG1NZWFzdXJlbWVudExpYi5oID8NCj4gPiA+ID4gUGxlYXNl IGRvbid0IHVzZSBsb2NhdGUgcHJvdG9jb2wuDQo+ID4gPiA+DQo+ID4gPiA+IFRoYW5rIHlvdQ0K PiA+ID4gPiBZYW8sIEppZXdlbg0KPiA+ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogWHUsIE1pbiBNIDxtaW4ubS54dUBpbnRlbC5jb20+ DQo+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBKYW51YXJ5IDE2LCAyMDIzIDk6NTcgQU0NCj4gPiA+ ID4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gPiA+ID4gPiBDYzogWHUsIE1pbiBNIDxt aW4ubS54dUBpbnRlbC5jb20+OyBBa3RhcywgRXJkZW0NCj4gPiA+ID4gPiA8ZXJkZW1ha3Rhc0Bn b29nbGUuY29tPjsgSmFtZXMgQm90dG9tbGV5IDxqZWpiQGxpbnV4LmlibS5jb20+Ow0KPiA+ID4g WWFvLA0KPiA+ID4gPiA+IEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBHZXJkIEhvZmZt YW5uDQo+IDxrcmF4ZWxAcmVkaGF0LmNvbT47DQo+ID4gPiA+ID4gVG9tIExlbmRhY2t5IDx0aG9t YXMubGVuZGFja3lAYW1kLmNvbT47IE1pY2hhZWwgUm90aA0KPiA+ID4gPiA+IDxtaWNoYWVsLnJv dGhAYW1kLmNvbT4NCj4gPiA+ID4gPiBTdWJqZWN0OiBbUEFUQ0ggVjEgMS8xXSBPdm1mUGtnL0Fj cGlQbGF0Zm9ybUR4ZTogTWVhc3VyZSBBQ1BJDQo+IHRhYmxlDQo+ID4gPiBmcm9tDQo+ID4gPiA+ ID4gUUVNVSBpbiBURFZGDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBGcm9tOiBNaW4gTSBYdSA8bWlu Lm0ueHVAaW50ZWwuY29tPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gaHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00MjQ1DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBU aGUgQUNQSSB0YWJsZXMgYXJlIGRvd25sb2FkZWQgZnJvbSBRRU1VLiBRRU1VL1ZNTSBpcyB0cmVh dGVkDQo+IGFzDQo+ID4gPiA+ID4gdW4tdHJ1c3RlZCBpbiBhIHRkLWd1ZXN0LiBGcm9tIHRoZSBz ZWN1cml0eSBwZXJzcGVjdGl2ZSB0aGV5IHNob3VsZA0KPiA+ID4gPiA+IGJlIG1lYXN1cmVkIGFu ZCBleHRlbmRlZCBpZiBwb3NzaWJsZS4gU28gdGhhdCB0aGV5IGNhbiBiZSBhdWRpdGVkDQo+ID4g PiA+ID4gbGF0ZXIuIFRoZSBtZWFzdXJlbWVudCBwcm90b2NvbCBtYXkgYmUgbm90IGluc3RhbGxl ZC4gSW4gdGhpcyBjYXNlDQo+ID4gPiA+ID4gaXQgc3RpbGwgcmV0dXJucyBFRklfU1VDQ0VTUy4N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IENjOiBFcmRlbSBBa3RhcyA8ZXJkZW1ha3Rhc0Bnb29nbGUu Y29tPg0KPiA+ID4gPiA+IENjOiBKYW1lcyBCb3R0b21sZXkgPGplamJAbGludXguaWJtLmNvbT4N Cj4gPiA+ID4gPiBDYzogSmlld2VuIFlhbyA8amlld2VuLnlhb0BpbnRlbC5jb20+DQo+ID4gPiA+ ID4gQ2M6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQuY29tPg0KPiA+ID4gPiA+IENjOiBU b20gTGVuZGFja3kgPHRob21hcy5sZW5kYWNreUBhbWQuY29tPg0KPiA+ID4gPiA+IENjOiBNaWNo YWVsIFJvdGggPG1pY2hhZWwucm90aEBhbWQuY29tPg0KPiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6 IE1pbiBYdSA8bWluLm0ueHVAaW50ZWwuY29tPg0KPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ICBP dm1mUGtnL0FjcGlQbGF0Zm9ybUR4ZS9BY3BpUGxhdGZvcm1EeGUuaW5mIHwgICAyICsNCj4gPiA+ ID4gPiAgT3ZtZlBrZy9BY3BpUGxhdGZvcm1EeGUvUWVtdUZ3Q2ZnQWNwaS5jICAgICB8IDE2OA0K PiA+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdl ZCwgMTcwIGluc2VydGlvbnMoKykNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9P dm1mUGtnL0FjcGlQbGF0Zm9ybUR4ZS9BY3BpUGxhdGZvcm1EeGUuaW5mDQo+ID4gPiA+ID4gYi9P dm1mUGtnL0FjcGlQbGF0Zm9ybUR4ZS9BY3BpUGxhdGZvcm1EeGUuaW5mDQo+ID4gPiA+ID4gaW5k ZXggODkzOWRkZTQyNTQ5Li5hZTIyYmFiMzhjZjkgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvT3Zt ZlBrZy9BY3BpUGxhdGZvcm1EeGUvQWNwaVBsYXRmb3JtRHhlLmluZg0KPiA+ID4gPiA+ICsrKyBi L092bWZQa2cvQWNwaVBsYXRmb3JtRHhlL0FjcGlQbGF0Zm9ybUR4ZS5pbmYNCj4gPiA+ID4gPiBA QCAtNTEsNiArNTEsOCBAQA0KPiA+ID4gPiA+ICAgIGdFZmlBY3BpVGFibGVQcm90b2NvbEd1aWQg ICAgICAgICAgICAgICAgICAgICAjIFBST1RPQ09MDQo+ID4gPiBBTFdBWVNfQ09OU1VNRUQNCj4g PiA+ID4gPiAgICBnRWZpUGNpSW9Qcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICAg IyBQUk9UT0NPTA0KPiA+ID4gU09NRVRJTUVTX0NPTlNVTUVEDQo+ID4gPiA+ID4gICAgZ1FlbXVB Y3BpVGFibGVOb3RpZnlQcm90b2NvbEd1aWQgICAgICAgICAgICAgICMgUFJPVE9DT0wgUFJPRFVD RVMNCj4gPiA+ID4gPiArICBnRWZpQ2NNZWFzdXJlbWVudFByb3RvY29sR3VpZCAgICAgICAgICAg ICAgICAgIyBQUk9UT0NPTA0KPiA+ID4gPiA+IFNPTUVUSU1FU19DT05TVU1FRA0KPiA+ID4gPiA+ ICsgIGdFZmlBY3BpU2R0UHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgICAgICAjIFBST1RP Q09MDQo+ID4gPiA+ID4gU09NRVRJTUVTX0NPTlNVTUVEDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAg W0d1aWRzXQ0KPiA+ID4gPiA+ICAgIGdSb290QnJpZGdlc0Nvbm5lY3RlZEV2ZW50R3JvdXBHdWlk DQo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL092bWZQa2cvQWNwaVBsYXRmb3JtRHhlL1FlbXVGd0Nm Z0FjcGkuYw0KPiA+ID4gPiA+IGIvT3ZtZlBrZy9BY3BpUGxhdGZvcm1EeGUvUWVtdUZ3Q2ZnQWNw aS5jDQo+ID4gPiA+ID4gaW5kZXggZjBkODFkNmZkNzNkLi5mNDQyODUwYzJlMDAgMTAwNjQ0DQo+ ID4gPiA+ID4gLS0tIGEvT3ZtZlBrZy9BY3BpUGxhdGZvcm1EeGUvUWVtdUZ3Q2ZnQWNwaS5jDQo+ ID4gPiA+ID4gKysrIGIvT3ZtZlBrZy9BY3BpUGxhdGZvcm1EeGUvUWVtdUZ3Q2ZnQWNwaS5jDQo+ ID4gPiA+ID4gQEAgLTE4LDYgKzE4LDggQEANCj4gPiA+ID4gPiAgI2luY2x1ZGUgPExpYnJhcnkv UWVtdUZ3Q2ZnTGliLmg+ICAgICAgICAgICAgIC8vIFFlbXVGd0NmZ0ZpbmRGaWxlKCkNCj4gPiA+ ID4gPiAgI2luY2x1ZGUgPExpYnJhcnkvUWVtdUZ3Q2ZnUzNMaWIuaD4gICAgICAgICAgIC8vDQo+ IFFlbXVGd0NmZ1MzRW5hYmxlZCgpDQo+ID4gPiA+ID4gICNpbmNsdWRlIDxMaWJyYXJ5L1VlZmlC b290U2VydmljZXNUYWJsZUxpYi5oPiAvLyBnQlMNCj4gPiA+ID4gPiArI2luY2x1ZGUgPFByb3Rv Y29sL0FjcGlTeXN0ZW1EZXNjcmlwdGlvblRhYmxlLmg+DQo+ID4gPiA+ID4gKyNpbmNsdWRlIDxQ cm90b2NvbC9DY01lYXN1cmVtZW50Lmg+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgI2luY2x1ZGUg IkFjcGlQbGF0Zm9ybS5oIg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQEAgLTgxMiwxMiArODE0LDE2 OCBAQCBVbmRvQ21kV3JpdGVQb2ludGVyICgNCj4gPiA+ID4gPiAgICAgICkpOw0KPiA+ID4gPiA+ ICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAgTWVzdXJlIGZpcm13 YXJlIEFDUEkgdGFibGUgd2l0aCBDY01lYXN1cmVtZW50IFByb3RvY29sDQo+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQ2NQcm90b2NvbCAgIFBvaW50ZXIgdG8gdGhlIENjTWVh c3VybWVudCBQcm90b2NvbA0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gRXZlbnREYXRhICAgIFBv aW50ZXIgdG8gdGhlIGV2ZW50IGRhdGEuDQo+ID4gPiA+ID4gKyAgQHBhcmFtW2luXSBFdmVudFNp emUgICAgU2l6ZSBvZiBldmVudCBkYXRhLg0KPiA+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQ2ZnRGF0 YUJhc2UgIENvbmZpZ3VyYXRpb24gZGF0YSBiYXNlIGFkZHJlc3MuDQo+ID4gPiA+ID4gKyAgQHBh cmFtW2luXSBFdmVudFNpemUgICAgU2l6ZSBvZiBjb25maWd1cmF0aW9uIGRhdGEgLg0KPiA+ID4g PiA+ICsgIEByZXR2YWwgIEVGSV9OT1RfRk9VTkQgICAgICAgICAgIENhbm5vdCBsb2NhdGUgcHJv dG9jb2wuDQo+ID4gPiA+ID4gKyAgQHJldHZhbCAgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgQWxs b2NhdGUgemVybyBwb29sIGZhaWx1cmUuDQo+ID4gPiA+ID4gKyAgQHJldHVybiAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzIGNvZGVzIHJldHVybmVkIGJ5DQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRjZzJQcm90b2NvbC0+SGFzaExvZ0V4dGVu ZEV2ZW50Lg0KPiA+ID4gPiA+ICsqKi8NCj4gPiA+ID4gPiArU1RBVElDDQo+ID4gPiA+ID4gK0VG SV9TVEFUVVMNCj4gPiA+ID4gPiArRUZJQVBJDQo+ID4gPiA+ID4gK0NjTWVhc3VyZUFjcGlUYWJs ZSAoDQo+ID4gPiA+ID4gKyAgSU4gRUZJX0NDX01FQVNVUkVNRU5UX1BST1RPQ09MICAqQ2NQcm90 b2NvbCwNCj4gPiA+ID4gPiArICBJTiBDSEFSOCAgICAgICAgICAgICAgICAgICAgICAgICpFdmVu dERhdGEsDQo+ID4gPiA+ID4gKyAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICBFdmVu dFNpemUsDQo+ID4gPiA+ID4gKyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICBDZmdE YXRhQmFzZSwNCj4gPiA+ID4gPiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgIENm Z0RhdGFMZW5ndGgNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBF RklfU1RBVFVTICAgIFN0YXR1czsNCj4gPiA+ID4gPiArICBFRklfQ0NfRVZFTlQgICpDY0V2ZW50 Ow0KPiA+ID4gPiA+ICsgIFVJTlQzMiAgICAgICAgTXJJbmRleDsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKyAgaWYgKENjUHJvdG9jb2wgPT0gTlVMTCkgew0KPiA+ID4gPiA+ICsgICAgcmV0dXJu IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ICsgIFN0YXR1cyA9IENjUHJvdG9jb2wtPk1hcFBjclRvTXJJbmRleCAoQ2NQcm90b2Nv bCwgMSwgJk1ySW5kZXgpOw0KPiA+ID4gPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gPiA+ID4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gPiA+ID4g KyAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICBDY0V2ZW50ID0gQWxsb2NhdGVaZXJvUG9v bCAoRXZlbnRTaXplICsgc2l6ZW9mIChFRklfQ0NfRVZFTlQpIC0NCj4gc2l6ZW9mDQo+ID4gPiA+ ID4gKENjRXZlbnQtPkV2ZW50KSk7DQo+ID4gPiA+ID4gKyAgaWYgKENjRXZlbnQgPT0gTlVMTCkg ew0KPiA+ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgQ2NFdmVudC0+U2l6ZSAgICAgICAgICAg ICAgICAgPSBFdmVudFNpemUgKyBzaXplb2YgKEVGSV9DQ19FVkVOVCkgLSBzaXplb2YNCj4gPiA+ ID4gPiAoQ2NFdmVudC0+RXZlbnQpOw0KPiA+ID4gPiA+ICsgIENjRXZlbnQtPkhlYWRlci5FdmVu dFR5cGUgICAgID0gRVZfUExBVEZPUk1fQ09ORklHX0ZMQUdTOw0KPiA+ID4gPiA+ICsgIENjRXZl bnQtPkhlYWRlci5NckluZGV4ICAgICAgID0gTXJJbmRleDsNCj4gPiA+ID4gPiArICBDY0V2ZW50 LT5IZWFkZXIuSGVhZGVyU2l6ZSAgICA9IHNpemVvZiAoRUZJX0NDX0VWRU5UX0hFQURFUik7DQo+ ID4gPiA+ID4gKyAgQ2NFdmVudC0+SGVhZGVyLkhlYWRlclZlcnNpb24gPQ0KPiBFRklfQ0NfRVZF TlRfSEVBREVSX1ZFUlNJT047DQo+ID4gPiA+ID4gKyAgQ29weU1lbSAoJkNjRXZlbnQtPkV2ZW50 WzBdLCBFdmVudERhdGEsIEV2ZW50U2l6ZSk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0 YXR1cyA9IENjUHJvdG9jb2wtPkhhc2hMb2dFeHRlbmRFdmVudCAoDQo+ID4gPiA+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICBDY1Byb3RvY29sLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgMCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIENmZ0Rh dGFCYXNlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgQ2ZnRGF0YUxlbmd0 aCwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgIENjRXZlbnQNCj4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICk7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsg IEZyZWVQb29sIChDY0V2ZW50KTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgcmV0dXJuIFN0 YXR1czsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgLy8NCj4gPiA+ID4g PiAgLy8gV2UnbGwgYmUgc2F2aW5nIHRoZSBrZXlzIG9mIGluc3RhbGxlZCB0YWJsZXMgc28gdGhh dCB3ZSBjYW4gcm9sbCB0aGVtDQo+ID4gPiBiYWNrDQo+ID4gPiA+ID4gIC8vIGluIGNhc2Ugb2Yg ZmFpbHVyZS4gMTI4IHRhYmxlcyBzaG91bGQgYmUgZW5vdWdoIGZvciBhbnlvbmUgKFRNKS4NCj4g PiA+ID4gPiAgLy8NCj4gPiA+ID4gPiAgI2RlZmluZSBJTlNUQUxMRURfVEFCTEVTX01BWCAgMTI4 DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gKyAqIFRoZSBBQ1BJIHRhYmxl cyBhcmUgZG93bmxvYWRlZCBmcm9tIFFFTVUuIEZyb20gdGhlIHNlY3VyaXR5DQo+ID4gPiA+ID4g cGVyc3BlY3RpdmUgdGhlc2UgYXJlDQo+ID4gPiA+ID4gKyAqIGV4dGVybmFsIGlucHV0cyBhbmQg c2hvdWxkIGJlIG1lYXN1cmVkIGFuZCBleHRlbmRlZCBpZiBwb3NzaWJsZS4NCj4gU28NCj4gPiA+ IHRoYXQNCj4gPiA+ID4gPiB0aGV5IGNhbg0KPiA+ID4gPiA+ICsgKiBiZSBhdWRpdGVkIGxhdGVy LiBUaGUgbWVhc3VyZW1lbnQgcHJvdG9jb2wgbWF5IGJlIG5vdCBpbnN0YWxsZWQuDQo+IEluDQo+ ID4gPiB0aGlzDQo+ID4gPiA+ID4gY2FzZSBpdA0KPiA+ID4gPiA+ICsgKiBzdGlsbCByZXR1cm5z IEVGSV9TVUNDRVNTLg0KPiA+ID4gPiA+ICsgKg0KPiA+ID4gPiA+ICsgKiBAcGFyYW0gSW5zdGFs bGVkS2V5IFBvaW50ZXIgdG8gYW4gYXJyYXkgd2hpY2ggY29udGFpbnMgdGhlIGtleXMNCj4gb2YN Cj4gPiA+IHRoZQ0KPiA+ID4gPiA+IGluc3RhbGxlZCBBQ1BJIHRhYmxlcw0KPiA+ID4gPiA+ICsg KiBAcGFyYW0gTGVuZ3RoICAgICAgIExlbmd0aCBvZiB0aGUgYXJyYXkNCj4gPiA+ID4gPiArICog QHJldHZhbCBFRklfU1VDQ0VTUyBTdWNjZXNzZnVsbHkgbWVhc3VyZSB0aGUgQUNQSSB0YWJsZXMN Cj4gPiA+ID4gPiArICogQHJldHZhbCBPdGhlcnMgICAgICBPdGhlciBlcnJvcnMgYXMgaW5kaWNh dGVkDQo+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ICtTVEFUSUMNCj4gPiA+ID4gPiArRUZJX1NU QVRVUw0KPiA+ID4gPiA+ICtNZWFzdXJlSW5zdGFsbGVkVGFibGVzRnJvbVFlbXUgKA0KPiA+ID4g PiA+ICsgIElOIFVJTlROICAqSW5zdGFsbGVkS2V5LA0KPiA+ID4gPiA+ICsgIElOIElOVDMyICBM ZW5ndGgNCj4gPiA+ID4gPiArICApDQo+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiArICBFRklfU1RB VFVTICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPiA+ID4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgIEluZGV4MTsNCj4gPiA+ID4gPiArICBJTlQzMiAgICAgICAgICAgICAg ICAgICAgICAgIEluZGV4MjsNCj4gPiA+ID4gPiArICBFRklfQUNQSV9TRFRfSEVBREVSICAgICAg ICAgICpUYWJsZTsNCj4gPiA+ID4gPiArICBFRklfQUNQSV9UQUJMRV9WRVJTSU9OICAgICAgIFZl cnNpb247DQo+ID4gPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICBUYWJsZUtl eTsNCj4gPiA+ID4gPiArICBFRklfQUNQSV9TRFRfUFJPVE9DT0wgICAgICAgICpBY3BpU2R0UHJv dG9jb2w7DQo+ID4gPiA+ID4gKyAgRUZJX0NDX01FQVNVUkVNRU5UX1BST1RPQ09MICAqQ2NQcm90 b2NvbCA9IE5VTEw7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIFN0YXR1cyA9IGdCUy0+TG9j YXRlUHJvdG9jb2wgKCZnRWZpQ2NNZWFzdXJlbWVudFByb3RvY29sR3VpZCwNCj4gTlVMTCwNCj4g PiA+ID4gPiAoVk9JRCAqKikmQ2NQcm90b2NvbCk7DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgLy8NCj4gPiA+ID4gPiArICAgIC8vIENjTWVh c3VyZW1lbnQgcHJvdG9jb2wgaXMgbm90IGluc3RhbGxlZC4NCj4gPiA+ID4gPiArICAgIC8vDQo+ ID4gPiA+ID4gKyAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4gKyAgfQ0KPiA+ID4g PiA+ICsNCj4gPiA+ID4gPiArICBTdGF0dXMgPSBnQlMtPkxvY2F0ZVByb3RvY29sICgmZ0VmaUFj cGlTZHRQcm90b2NvbEd1aWQsIE5VTEwsDQo+ICh2b2lkDQo+ID4gPiA+ID4gKiopJkFjcGlTZHRQ cm90b2NvbCk7DQo+ID4gPiA+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ID4g PiA+ICsgICAgREVCVUcgKChERUJVR19FUlJPUiwgIlVuYWJsZSB0byBsb2NhdGUgQUNQSSBTRFQg cHJvdG9jb2wuXG4iKSk7DQo+ID4gPiA+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ID4gPiA+ ICsgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgSW5kZXgxID0gMDsNCj4gPiA+ID4gPiAr ICBkbyB7DQo+ID4gPiA+ID4gKyAgICBTdGF0dXMgPSBBY3BpU2R0UHJvdG9jb2wtPkdldEFjcGlU YWJsZSAoSW5kZXgxLCAmVGFibGUsICZWZXJzaW9uLA0KPiA+ID4gPiA+ICZUYWJsZUtleSk7DQo+ ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4gPiA+ID4gKyAgICAg IGlmIChTdGF0dXMgPT0gRUZJX05PVF9GT1VORCkgew0KPiA+ID4gPiA+ICsgICAgICAgIC8vDQo+ ID4gPiA+ID4gKyAgICAgICAgLy8gVGhlcmUgaXMgbm8gbW9yZSBBQ1BJIHRhYmxlcyBmb3VuZC4g U28gd2UgcmV0dXJuIHdpdGgNCj4gPiA+IEVGSV9TVUNDRVNTLg0KPiA+ID4gPiA+ICsgICAgICAg IC8vDQo+ID4gPiA+ID4gKyAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gPiA+ID4g KyAgICAgIH0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKyAgICAgIGJyZWFrOw0KPiA+ID4gPiA+ ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArICAgIGZvciAoSW5kZXgyID0gMDsgSW5k ZXgyIDwgTGVuZ3RoOyBJbmRleDIrKykgew0KPiA+ID4gPiA+ICsgICAgICBpZiAoVGFibGVLZXkg PT0gSW5zdGFsbGVkS2V5W0luZGV4Ml0pIHsNCj4gPiA+ID4gPiArICAgICAgICBicmVhazsNCj4g PiA+ID4gPiArICAgICAgfQ0KPiA+ID4gPiA+ICsgICAgfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiArICAgIGlmIChJbmRleDIgPCBMZW5ndGgpIHsNCj4gPiA+ID4gPiArICAgICAgU3RhdHVzID0g Q2NNZWFzdXJlQWNwaVRhYmxlICgNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBDY1Byb3Rv Y29sLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIChDSEFSOCAqKSZUYWJsZS0+U2lnbmF0 dXJlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgIHNpemVvZiAoVGFibGUtPlNpZ25hdHVy ZSksDQo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKEVGSV9QSFlTSUNBTF9BRERSRVNTKShV SU5UTilUYWJsZSwNCj4gPiA+ID4gPiArICAgICAgICAgICAgICAgICBUYWJsZS0+TGVuZ3RoDQo+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgKTsNCj4gPiA+ID4gPiArICAgICAgaWYgKEVGSV9F UlJPUiAoU3RhdHVzKSkgew0KPiA+ID4gPiA+ICsgICAgICAgIERFQlVHICgoDQo+ID4gPiA+ID4g KyAgICAgICAgICBERUJVR19FUlJPUiwNCj4gPiA+ID4gPiArICAgICAgICAgICJNZWFzdXJlIEFD UEkgdGFibGUgWyUtNC40YV0gd2l0aCBTaXplID0gMHgleCBmYWlsZWQhIFN0YXR1cw0KPiA+ID4g PSAlclxuIiwNCj4gPiA+ID4gPiArICAgICAgICAgIChDT05TVCBDSEFSOCAqKSZUYWJsZS0+U2ln bmF0dXJlLA0KPiA+ID4gPiA+ICsgICAgICAgICAgVGFibGUtPkxlbmd0aCwNCj4gPiA+ID4gPiAr ICAgICAgICAgIFN0YXR1cw0KPiA+ID4gPiA+ICsgICAgICAgICAgKSk7DQo+ID4gPiA+ID4gKyAg ICAgICAgYnJlYWs7DQo+ID4gPiA+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gPiA+ID4gKyAgICAg ICAgREVCVUcgKCgNCj4gPiA+ID4gPiArICAgICAgICAgIERFQlVHX0lORk8sDQo+ID4gPiA+ID4g KyAgICAgICAgICAiTWVhc3VyZSBBQ1BJIHRhYmxlIFslLTQuNGFdIHdpdGggU2l6ZSA9IDB4JXhc biIsDQo+ID4gPiA+ID4gKyAgICAgICAgICAoQ09OU1QgQ0hBUjggKikmVGFibGUtPlNpZ25hdHVy ZSwNCj4gPiA+ID4gPiArICAgICAgICAgIFRhYmxlLT5MZW5ndGgNCj4gPiA+ID4gPiArICAgICAg ICAgICkpOw0KPiA+ID4gPiA+ICsgICAgICB9DQo+ID4gPiA+ID4gKyAgICB9DQo+ID4gPiA+ID4g Kw0KPiA+ID4gPiA+ICsgICAgSW5kZXgxKys7DQo+ID4gPiA+ID4gKyAgfSB3aGlsZSAoVFJVRSk7 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gPiA+ID4gK30N Cj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4gPiA+ICAgIFByb2Nlc3MgYSBRRU1V X0xPQURFUl9BRERfUE9JTlRFUiBjb21tYW5kIGluIG9yZGVyIHRvIHNlZQ0KPiBpZiBpdHMNCj4g PiA+ID4gPiB0YXJnZXQgYnl0ZQ0KPiA+ID4gPiA+ICAgIGFycmF5IGlzIGFuIEFDUEkgdGFibGUs IGFuZCBpZiBzbywgaW5zdGFsbCBpdC4NCj4gPiA+ID4gPiBAQCAtMTI0Nyw2ICsxNDA1LDE2IEBA IEluc3RhbGxRZW11RndDZmdUYWJsZXMgKA0KPiA+ID4gPiA+ICAgICAgfQ0KPiA+ID4gPiA+ICAg IH0NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICsgIC8vDQo+ID4gPiA+ID4gKyAgLy8gTWVhc3VyZSB0 aGUgQUNQSSB0YWJsZXMgd2hpY2ggYXJlIGRvd25sb2FkZWQgZnJvbSBRRU1VDQo+ID4gPiA+ID4g KyAgLy8NCj4gPiA+ID4gPiArICBpZiAoSW5zdGFsbGVkID4gMCkgew0KPiA+ID4gPiA+ICsgICAg U3RhdHVzID0gTWVhc3VyZUluc3RhbGxlZFRhYmxlc0Zyb21RZW11IChJbnN0YWxsZWRLZXksDQo+ IEluc3RhbGxlZCk7DQo+ID4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ ID4gPiA+ID4gKyAgICAgIGdvdG8gVW5pbnN0YWxsQWNwaVRhYmxlczsNCj4gPiA+ID4gPiArICAg IH0NCj4gPiA+ID4gPiArICB9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICAgIC8vDQo+ID4gPiA+ ID4gICAgLy8gSW5zdGFsbCBhIHByb3RvY29sIHRvIG5vdGlmeSB0aGF0IHRoZSBBQ1BJIHRhYmxl IHByb3ZpZGVkIGJ5IFFlbXUNCj4gaXMNCj4gPiA+ID4gPiAgICAvLyByZWFkeS4NCj4gPiA+ID4g PiAtLQ0KPiA+ID4gPiA+IDIuMjkuMi53aW5kb3dzLjINCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ID4NCj4gPg0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ IA0KPiANCj4gDQo+IA0KDQo=