From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by mx.groups.io with SMTP id smtpd.web10.101645.1682963345556503443 for ; Mon, 01 May 2023 10:49:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Ygd9ei/P; spf=pass (domain: intel.com, ip: 134.134.136.100, 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=1682963345; x=1714499345; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=/lD1OKPlvczSFuNPgKYIEiRsfkU8EfZ6WveRyS4khu0=; b=Ygd9ei/P/sPBW+K4lTEhPFz7OoJcT4LQOo/L5DoXzxcpdSw4husXKRp7 dbOps3HLbLAM0hr+5ZntrEIg12nyP9d/Z0Itt8ji8IWtnxlzYDKonDM2F /Wr0xNu2F2s1YsXEkOnnIsI8UwM7vI1kS25akwNdES0XGXMLWx5lFuzKA ozkwlAE7BLn4xWAXdp01LyMqlkxvplUjwzrfcrg1JgotodedT983jOu+B 3alGgZpM2+iL4XG+nosH7ccljc++qTirEfcIhoo4TSVMSoZFxAbj0h2is 2ikWlZwWkMx/5ZaEjBEas8DV8QtXREcyzDiUE21njeuAEZm4URNRbq2Nr w==; X-IronPort-AV: E=McAfee;i="6600,9927,10697"; a="413638060" X-IronPort-AV: E=Sophos;i="5.99,241,1677571200"; d="scan'208";a="413638060" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 May 2023 10:49:04 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10697"; a="728614818" X-IronPort-AV: E=Sophos;i="5.99,241,1677571200"; d="scan'208";a="728614818" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga001.jf.intel.com with ESMTP; 01 May 2023 10:49:04 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 1 May 2023 10:49:04 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Mon, 1 May 2023 10:49:04 -0700 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.23 via Frontend Transport; Mon, 1 May 2023 10:49:04 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.103) 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.23; Mon, 1 May 2023 10:49:03 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VdiqadY3UWiC65SLFeBzuhC94x34ReBZpO4zNLxQqPYsI4tJVgAUpr9Uq1tES1/N67nSMtrlN2MmHxKnct2dVp0DHVIb7+hhFUv5mKvuLouBfnrBeZYC/QQ10zr2EVEHM0b3I0+QZmmEcwvG2FtHmkBEOz8/mJgYLieZR2Z94FR0V6CP39ppK1l1UhggyYzGXDAbypPPR1Xshhd+sgKKu7p4sDPfEFPM9cKXTpVI1pgPRKyS6bPvmNvm0mceeHQq9NOY8dVK/E/kDHKF32Dhm2Zsyw9WdXMpEK6o1nA1LATPgVYcZ1DZw60VQsEYSVGxwIm2TWeBD7J43J5Xb+TDag== 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=/lD1OKPlvczSFuNPgKYIEiRsfkU8EfZ6WveRyS4khu0=; b=GUnXBti8m2DSopdKyxSaCEQGkhHLK8WZKpiMLoHMczcM1jpxvq1oylyz1w3vZxLbmgCRsgPaiMVFVMXxBAHPL8XoDDCTHDEYpAiLnAmgfMefiMpyTxUYLNEMT+R43KZSchThHwsEUs5+cdJkLyMEpoyy09F1Xc5TkhW7V4h+7FovgdsgsT2xaBPDAvUPmxzLxtGInJtNk3f2k4daXnURzYOdD25UZj60diP6xRdSET5fFqEAMvEzC57PL/Pk5Fa9iF7/u/qDS7nobg3CkWFY6zsMpEjHo+qUTaBvlz0MqpRzaQey2jjGAp2dbIc3SdoG9shkr8Pe3ckyIt/9QYTzWQ== 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 BL3PR11MB6531.namprd11.prod.outlook.com (2603:10b6:208:38e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.29; Mon, 1 May 2023 17:49:02 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::9b1e:23e9:53e:291]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::9b1e:23e9:53e:291%6]) with mapi id 15.20.6340.030; Mon, 1 May 2023 17:49:01 +0000 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "osde@linux.microsoft.com" , Ard Biesheuvel , "Ni, Ray" CC: Leif Lindholm , Ard Biesheuvel , Sami Mujawar , "Michael Kubacki" , Sean Brogan , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes Thread-Topic: [edk2-devel] [PATCH v1 1/1] ArmPkg: CpuDxe: Sync GCD Capabilities With Page Table Attributes Thread-Index: AQHZfC03wHtemeZln0yqM7pJvsCfba9FpW0AgAALugA= Date: Mon, 1 May 2023 17:49:01 +0000 Message-ID: References: <20230426000930.5748-1-osde@linux.microsoft.com> <04e4ae2c-2e2b-b8b1-b8c9-fe069cbb7ae4@linux.microsoft.com> In-Reply-To: <04e4ae2c-2e2b-b8b1-b8c9-fe069cbb7ae4@linux.microsoft.com> 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_|BL3PR11MB6531:EE_ x-ms-office365-filtering-correlation-id: 1d02592b-b30f-4e01-b209-08db4a6c5956 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hna9vwwsuuzYr2AXvAQVV5U458dF0Rm/SCbuapiPYwPfADy5/m2Z18QYSZOcEdrJLBrYW9sGJg/c2A3D61uXLXibqy6OXJiqM6yPXTnBLm2dTCAVypfG9/5xf2OtOuCfdxrXY7vEjneztgL5O2TmGiPl+LK31etjcCdX+eHw6euxUHxKCWQ5vlRgraeC869uDA+SQRQNXBjBvEKnb/qqdnWrDdJlOiWb1n4hZF46ZvPonU1ctn9Mn+NPBCNBrfTCv/tKvGAJgGRkT7eMOLgHoM1qPNMV8l1Jd91Dvs1IBuohUDcpY1iWSm0Vn5SBAufQmzl1yvPPysZPVbv+eMwXRhsJEZF7eGfd6R41zX1Ye+SA6Y52zaMN04yrjnfeixUCBNIl9CGfrAz3sNPGmV4G2TzPsk7IEIriSUyaQ5peW9UTdtqteNleUG05QEBmauOE06w/ovxlJ3PUaVyjnzWuCG0ud+xGPgcUewBgCr5z1B/wnT3jMEp3dL1pw1GBMTHMDg5x7FUt6vMbmGXw1Eb1AMh+MWgoeBB1XEXbMXaIGXU1/3cDWq+2UE1PNCSwyCocYNVpA74bD3xx5iHHDkdr0Qp/c93+YcYS9UHH96+IR/SpzI5robHfz7eKhD501trpGSIjLVTEJs1R1abrpI454BEoEfpo7g0L/Wd7/s69GlgM56PwVh2oIZGDObVg0F6s 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:(13230028)(39860400002)(136003)(396003)(346002)(366004)(376002)(451199021)(38070700005)(8936002)(8676002)(107886003)(26005)(66899021)(53546011)(9686003)(38100700002)(6506007)(33656002)(478600001)(55016003)(5660300002)(186003)(52536014)(30864003)(316002)(2906002)(71200400001)(54906003)(82960400001)(86362001)(83380400001)(7696005)(66476007)(66556008)(64756008)(66446008)(4326008)(6636002)(66946007)(110136005)(76116006)(41300700001)(122000001)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c2EzK081YlBqc2kyTU9aa05PMmhjTGVhbXFZSFF1OHV4YjUvQzlRWWZSRVBW?= =?utf-8?B?SnBwcWJjQjBWSDJSNHkwRDZPWXgxRmE3VWxnV3B2dXVVUkNyMG9XdHNWYWpQ?= =?utf-8?B?dWw0YTN4Z0ROcE1jTnloZ3FMd3dSZ2pRNmdqWjlXbXlxMWgzVnN2NlA5a0dn?= =?utf-8?B?dG4wMjVOcHhVbE1Bc2MwRGVGVTBSM292NmdNZFA4b1hucWEyNlpoWlZDdXRG?= =?utf-8?B?bzFTMmdaVlExbjVmNGtBbXRnNXFZakgycXpTWjdKeWxLR1h2bW5mYkZkMUZE?= =?utf-8?B?VW5PcmVjUVg3NytEbEtkZXN0RmJjUWhjbkgveDRya3VueVRBdmlyYmwzQkNu?= =?utf-8?B?SjlXd2sra0RYTzBFNFI0YVpTbHRlb25hNjQ3M1ljY0x6WnM0UHVxT2JFOEN0?= =?utf-8?B?S1R2aFVaNlJibDJaSUFLemRHUXkxSGdJdTEzRlBOSlc5Qk1TdWo2YVNxN202?= =?utf-8?B?ZlpHamMvUEx4Y21tUzZiakVrdTMyNk9qVXBDL1hZSThvZWhYdnY1cklKRnd0?= =?utf-8?B?RmV3c2pRRi9tMnl6TlZaUUxXbGVSMUV0TUJkaEtObnBjNkFLWHMyVU1Sc0Vt?= =?utf-8?B?VFRpbDhaLzRHakUyUThvcGVaN1lmajFneGcwcmw1c2FkMzV0UFpSZkc5aDdO?= =?utf-8?B?aENYMTNTWXJyR1ZsOVVDa2t3aVNIM0JjVlB1b2UvZDlBWWxvM3VZZDlRQVdK?= =?utf-8?B?MnVRWmdoOUZPM3JGdDBEQS9XQnlxeEptUXN4WXd6eDRPQ3ZsVDJFYk5Yc1gw?= =?utf-8?B?UXgzNjRjemJtUEt5TTZjdlBOUkNoL0ZIMlloZ0Mrc1UraGdCOUFKVXVxVDJh?= =?utf-8?B?bWd2elZPaURYeWZ1WXBsczJzQ3FQMjJiK2U2SDNTY2FPWjVlQzNaYWd0MTRa?= =?utf-8?B?K1EvZCtUWmVISDhmQyt5cVpnM2pwekpsSUlYdDF2ZGtzZlcvMTk5ZE5oT29z?= =?utf-8?B?L2VYdzFRMHNhOU9JdUZ4a1pINUhnd2lrL25zWUU2dXBvL3UyamhkaXBwTm84?= =?utf-8?B?YkxCUXlCTTFUNEI1cVR2NlFaNmIrTVdSL3Qyb2Izc1BJU0hZQkpMUm51Z3M0?= =?utf-8?B?b20rRjBXYThWOEFJcFU3cmZ0V1VPSjFkTkNwL0tyWjdaRGxaazZuWWZlK2Ix?= =?utf-8?B?OEs2YUN4WDFkc0p3TVVlVXVFTFcwMkl6TjJXQTdJK3VjcTFvREFCQUQ0a0Rk?= =?utf-8?B?YUVRbVlnQUdPT01sNHFQZCtGZnV6Nk1zS0VBM3FYK1IzVzNKRTl6cjR1a205?= =?utf-8?B?cno5UEtnMjg1cGk0T0Fkd0UweEp0RHY2NVhia0NrUUgxSzYwbVVsTnM3N0ky?= =?utf-8?B?dW51N05hUnNaZGRsK2pXZnlkZy9Pb3duVXExSEk4V3FnaUdoTFBPU1JvUEha?= =?utf-8?B?aEV2R1VmcVVjNmE3OEFGcmVneXVqZUc1NGFWZHJ1STRmQk1LTXVRZWdHbTFi?= =?utf-8?B?R3BGV1VwdXBiKzkzSzVkcERXd0pWUzdISDhxakVuSDZWV3pvZFY5VkVTZ0tv?= =?utf-8?B?b0hiZ0lJZkFuNjBtWTFaSWxSblRQbUVrUUFYblM0VXFqOGZoN3huQ2pHOVhR?= =?utf-8?B?WTlsOXdHZlhEclF0VVFwZDlXMkYrb1p2OUY0TU83eDFQVmxsSXlkaWhabEhO?= =?utf-8?B?VHRMQy9pcFN2WUthRHY5RnN2Z3l4UjZOL2tZNGtZenY1Q0xXR2h3RUt3Wmt0?= =?utf-8?B?TVdtM0FuK1ZXbkUwYitDNTZMeUFrenFlUWp0ZGNqdzNMb3RPWGc4Y09VMVZC?= =?utf-8?B?WVp3U3RBM1AxdjZpYnVDT0xuYUhibHF6c2VpMkc2VVo4M3ZIU2JDNCtsTTls?= =?utf-8?B?Q2VJRmZCWFVybGUwVHNQRm9UeVBXQWhOQTMyNW1DaDhaTmVLWWdmZC9pMnEy?= =?utf-8?B?bDJDWC9XOEtsTTRnY1JUb0VxVGNUU0tSNldZcGlYQm1LMmtSYktZQnN1Ty94?= =?utf-8?B?aGpCNGp3M2taRkc4aUl0Yy9aSE10WHJVc296b1hMTFlmRGlINXErdGI1U255?= =?utf-8?B?UWsyU3UrVTl6WCt1ck9leWtZTFN0RnFITVlFejdOZldMN29sOUJnbTJwaDcw?= =?utf-8?B?S1JmVDV1cTYyRFI0SXdSTlNQOFpzaFR0THNRbk93RCt5UUN3MDRvRldBWStu?= =?utf-8?B?S3NxRlVOYTBpUk9kNmRoM0VOc251a2VkMlpCTVh3UGFPbklzZGVwN3BHNnJk?= =?utf-8?B?QkE9PQ==?= 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: 1d02592b-b30f-4e01-b209-08db4a6c5956 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 May 2023 17:49:01.8695 (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: 2Z8KggXpX+jRI7UwHzbvLL8Z40rmNxkq3vi11Kil4TJEHbDQ6I/u6BlTPPE7jsektMzmTSPY0EZw7FPdoQjRvd4NioJ542PR2IeeIlr5Vxs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR11MB6531 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 SGksDQoNClRoZXNlIFVFRkkgTWVtb3J5IE1hcCwgR0NELCBhbmQgUGFnZSBUYWJsZSBpbnRlcmFj dGlvbnMgY2FuIGJlIGNvbXBsZXggYW5kIEkNCmFncmVlIHRoZXJlIGFyZSBzb21lIFVFRkkvUEkg c3BlYyBjbGFyaWZpY2F0aW9ucyB0aGF0IG1heSBoZWxwLg0KDQpSYXkgaG9zdHMgYSBUaWFub0Nv cmUgZGVzaWduIG1lZXRpbmcgd2hlbiBuZWVkZWQuICBEbyB5b3UgdGhpbmsgYSBtZWV0aW5nIHdp dGgNCmFuIG9wZW4gZGlzY3Vzc2lvbiBvbiB0aGVzZSB0b3BpY3Mgd291bGQgaGVscCwgb3IgZG8g d2UgcHJlZmVyIHRvIGNvbnRpbnVlIHdpdGgNCmVtYWlsIGRpc2N1c3Npb25zPw0KDQpUaGFua3Ms DQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBkZXZlbEBl ZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiBPbGl2ZXIN Cj4gU21pdGgtRGVubnkNCj4gU2VudDogTW9uZGF5LCBNYXkgMSwgMjAyMyAxMDowNCBBTQ0KPiBU bzogQXJkIEJpZXNoZXV2ZWwgPGFyZGJAa2VybmVsLm9yZz4NCj4gQ2M6IGRldmVsQGVkazIuZ3Jv dXBzLmlvOyBMZWlmIExpbmRob2xtIDxxdWljX2xsaW5kaG9sQHF1aWNpbmMuY29tPjsgQXJkDQo+ IEJpZXNoZXV2ZWwgPGFyZGIrdGlhbm9jb3JlQGtlcm5lbC5vcmc+OyBTYW1pIE11amF3YXINCj4g PHNhbWkubXVqYXdhckBhcm0uY29tPjsgTWljaGFlbCBLdWJhY2tpDQo+IDxtaWt1YmFja0BsaW51 eC5taWNyb3NvZnQuY29tPjsgU2VhbiBCcm9nYW4NCj4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5j b20+DQo+IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYxIDEvMV0gQXJtUGtnOiBD cHVEeGU6IFN5bmMgR0NEDQo+IENhcGFiaWxpdGllcyBXaXRoIFBhZ2UgVGFibGUgQXR0cmlidXRl cw0KPiANCj4gT24gNS8xLzIwMjMgNjowMiBBTSwgQXJkIEJpZXNoZXV2ZWwgd3JvdGU6DQo+ID4g T24gV2VkLCAyNiBBcHIgMjAyMyBhdCAwMjowOSwgT2xpdmVyIFNtaXRoLURlbm55DQo+ID4gPG9z ZGVAbGludXgubWljcm9zb2Z0LmNvbT4gd3JvdGU6DQo+ID4+DQo+ID4+IFdoZW4gQXJtUGtnJ3Mg Q3B1RHhlIGRyaXZlciBpbml0aWFsaXplcywgaXQgYXR0ZW1wdHMgdG8gc3luYyB0aGUNCj4gPj4g R0NEIHdpdGggdGhlIHBhZ2UgdGFibGUuIEhvd2V2ZXIsIHVubGlrZSB3aGVuIHRoZSBVZWZpQ3B1 UGtnJ3MNCj4gPj4gQ3B1RHhlIGluaXRpYWxpemVzLCB0aGUgQXJtIHZlcnNpb24gZG9lcyBub3Qg dXBkYXRlIHRoZSBHQ0QNCj4gPj4gY2FwYWJpbGl0aWVzIHdpdGggRUZJX01FTU9SWV9bUk98UlB8 WFBdICh0aGlzIGNvdWxkIGFsc28gc2V0DQo+ID4+IHRoZSBjYXBhYmlsaXRpZXMgdG8gYmUgdGhl IGV4aXN0aW5nIHBhZ2UgdGFibGUgYXR0cmlidXRlcyBmb3INCj4gPj4gdGhpcyByYW5nZSwgYnV0 IHRoZSBVZWZpQ3B1UGtnIENwdUR4ZSBzZXRzIHRoZSBhYm92ZSBhdHRyaWJ1dGVzDQo+ID4+IGFz IHRoZXkgYXJlIHNvZnR3YXJlIGNvbnN0cnVjdHMsIHBvc3NpYmxlIHRvIHNldCBmb3IgYW55IG1l bW9yeQ0KPiA+PiBoYXJkd2FyZSkuDQo+ID4+DQo+ID4+IEFzIGEgcmVzdWx0LCB3aGVuIHRoZSBH Q0QgYXR0cmlidXRlcyBhcmUgYXR0ZW1wdGVkIHRvIGJlIHNldA0KPiA+PiBhZ2FpbnN0IHRoZSBv bGQgR0NEIGNhcGFiaWxpdGllcywgYXR0cmlidXRlcyB0aGF0IGFyZSBzZXQgaW4gdGhlDQo+ID4+ IHBhZ2UgdGFibGUgY2FuIGdldCBsb3N0IGJlY2F1c2UgdGhlIG5ldyBhdHRyaWJ1dGVzIGFyZSBu b3QgaW4gdGhlDQo+ID4+IG9sZCBHQ0QgY2FwYWJpbGl0aWVzIChhbmQgeWV0IHRoZXkgYXJlIGFs cmVhZHkgc2V0IGluIHRoZSBwYWdlDQo+ID4+IHRhYmxlKSBtZWFuaW5nIHRoYXQgdGhlIGF0dGVt cHRlZCBzeW5jIGJldHdlZW4gdGhlIEdDRCBhbmQgdGhlDQo+ID4+IHBhZ2UgdGFibGUgd2FzIGEg ZmFpbHVyZSBhbmQgZHJpdmVycyBxdWVyeWluZyBvbmUgdnMgdGhlIG90aGVyDQo+ID4+IHdpbGwg c2VlIGRpZmZlcmVudCBzdGF0ZS4gVGhpcyBjYW4gbGVhZCB0byBSV1ggbWVtb3J5IHJlZ2lvbnMN Cj4gPj4gZXZlbiB3aXRoIHRoZSBuby1leGVjdXRlIHBvbGljeSBzZXQsIGJlY2F1c2UgY29yZSBk cml2ZXJzIChzdWNoDQo+ID4+IGFzIE5vbkRpc2NvdmVyYWJsZVBjaURldmljZUlvLCB0byBiZSBm aXhlZCB1cCBpbiBhIGxhdGVyIHBhdGNoc2V0KQ0KPiA+PiBhbGxvY2F0ZSBwYWdlcywgcXVlcnkg dGhlIEdDRCBhdHRyaWJ1dGVzLCBhdHRlbXB0IHRvIHNldCBhIG5ldw0KPiA+PiBjYWNoZSBhdHRy aWJ1dGUgYW5kIGVuZCB1cCBjbGVhcmluZyB0aGUgWFAgYml0IGluIHRoZSBwYWdlIHRhYmxlDQo+ ID4+IGJlY2F1c2UgdGhlIEdDRCBhdHRyaWJ1dGVzIGRvIG5vdCBoYXZlIFhQIHNldC4NCj4gPj4N Cj4gPj4gVGhpcyBwYXRjaCBmb2xsb3dzIHRoZSBVZWZpQ3B1UGtnIHBhdHRlcm4gYW5kIGFkZHMN Cj4gPj4gRUZJX01FTU9SWV9bUk98UlB8WFBdIHRvIHRoZSBHQ0QgY2FwYWJpbGl0aWVzIGR1cmlu ZyBDcHVEeGUNCj4gPj4gaW5pdGlhbGl6YXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IG1lbW9yeSBy ZWdpb25zIHdoaWNoIGFscmVhZHkgaGF2ZQ0KPiA+PiB0aGVzZSBhdHRyaWJ1dGVzIHNldCBnZXQg dGhlbSBzZXQgaW4gdGhlIEdDRCBhdHRyaWJ1dGVzLCBwcm9wZXJseQ0KPiA+PiBzeW5jaW5nIGJl dHdlZW4gdGhlIEdDRCBhbmQgdGhlIHBhZ2UgdGFibGUuDQo+ID4+DQo+ID4+IFRoaXMgbWl0aWdh dGVzIHRoZSBpc3N1ZSBzZWVuLCBob3dldmVyLCBhZGRpdGlvbmFsIGludmVzdGlnYXRpb25zDQo+ ID4+IGludG8gc2V0dGluZyB0aGUgR0NEIGF0dHJpYnV0ZXMgZWFybGllciBhbmQgbWFpbnRhaW5p bmcgYSBiZXR0ZXINCj4gPj4gc3luYyBiZXR3ZWVuIHRoZSBHQ0QgYW5kIHRoZSBwYWdlIHRhYmxl IGFyZSBiZWluZyBkb25lLg0KPiA+Pg0KPiA+PiBGZWVkYmFjayBvbiB0aGlzIHByb3Bvc2FsIGlz IGdyZWF0bHkgYXBwcmVjaWF0ZWQsIHBhcnRpY3VsYXJseQ0KPiA+PiBhbnkgcGl0ZmFsbHMgb3Ig bW9yZSBhcmNoaXRlY3R1cmFsIHNvbHV0aW9ucyB0byBpc3N1ZXMgc2Vlbg0KPiA+PiB3aXRoIHN5 bmNpbmcgdGhlIEdDRCBhbmQgdGhlIHBhZ2UgdGFibGUuDQo+ID4+DQo+ID4NCj4gPiBJIHRoaW5r IHRoaXMgaXMgY29uY2VwdHVhbGx5IGNvcnJlY3QuIEhvd2V2ZXIsIEkndmUgcGxheWVkIHdpdGgg dGhpcw0KPiA+IGluIHRoZSBwYXN0LCBhbmQgSUlSQywgdGhlc2UgYXR0cmlidXRlcyBhcmUgaW5o ZXJpdGVkIGJ5IHRoZSBFRkkNCj4gPiBtZW1vcnkgbWFwIHRvbywgYW5kIG5vdCB1cGRhdGVkIHdo ZW4gYWxsb2NhdGlvbnMgYXJlIG1hZGUuIFRoaXMgbWVhbnMNCj4gPiB0aGF0IGFsbCBjb2RlIGFu ZCBkYXRhIHJlZ2lvbnMgd2lsbCBiZSBsaXN0ZWQgYXMgUlAsIFJPIGFuZCBYUCBpbiB0aGUNCj4g PiBFRkkgbWVtb3J5IG1hcCwgd2hpY2ggaXMgZ29pbmcgdG8gY29uZnVzZSBMaW51eCBhdCB0aGUg dmVyeSBsZWFzdCwgYW5kDQo+ID4gcG90ZW50aWFsbHkgb3RoZXIgT1NlcyBhcyB3ZWxsLg0KPiAN Cj4gVGhhbmtzIGZvciB0aGUgZGV0YWlsZWQgcmVzcG9uc2UsIEkgYXBwcmVjaWF0ZSBpdCENCj4g QSBjbGFyaWZpY2F0aW9uIGhlcmU6IG15IHBhdGNoIGZvbGxvd3Mgd2hhdCB0aGUgeDg2IGNvZGUg ZG9lcyAoc2VlDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvZWRrMi9ibG9iLzU2ZTk4 MjgzODBiNzQyNTY3OGEwODBiZDNhMDhlDQo+IDdjNzQxYWY2N2JhL1VlZmlDcHVQa2cvQ3B1RHhl L0NwdVBhZ2VUYWJsZS5jI0xMOTk0QzEtTDEwNzdDMjcpLA0KPiB3aGVyZSB0aGUgY2FwYWJpbGl0 aWVzIG9mIGVhY2ggcmVnaW9uIGFyZSB1cGRhdGVkIHRvIGluY2x1ZGUgUlAsIFJPLCBhbmQNCj4g WFAuIEhvd2V2ZXIsIHRoZSBhdHRyaWJ1dGVzIG9mIGVhY2ggcmVnaW9uIGFyZSBvbmx5IHVwZGF0 ZWQgdG8gaW5jbHVkZQ0KPiB0aGVzZSBmbGFncyBpZiB0aGUgcGFnZSB0YWJsZSBoYXMgdGhlIGF0 dHJpYnV0ZXMgc2V0IGZvciB0aGlzIHJlZ2lvbi4NCj4gSS5lLiB3ZSBhcmUgb25seSBhbGxvd2lu ZyBmb3IgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZXNlIGJpdHMgdG8gYmUNCj4gc2V0LCBidXQgbm90 IGFjdHVhbGx5IHNldHRpbmcgdGhlbSBpbiB0aGUgYXR0cmlidXRlcyB1bmxlc3MgdGhlIHBhZ2UN Cj4gdGFibGUgYWxyZWFkeSBoYXMgdGhlbSBzZXQuIFNvLCBhdCB0aGUgdmVyeSBsZWFzdCwgd2Ug c2hvdWxkIGJlDQo+IG1hdGNoaW5nIHdoYXQgeDg2IGRvZXMgKHNvIE9TJ3Mgc2hvdWxkIG5vdCBi ZSBicm9rZW4pLCB1bmxlc3MNCj4gdGhlIG90aGVyIGRpc2NyZXBhbmNpZXMgaW4gdGhlIHg4NiBh bmQgQXJtIG1lbW9yeSBhdHRyaWJ1dGUgaGFuZGxpbmcNCj4gY2F1c2UgaXNzdWUuDQo+IA0KPiBU aGUgbWFpbiB0aGluZyBteSBjaGFuZ2UgaXMgaW50ZW5kZWQgdG8gYWRkcmVzcyBpcyB0aGUgY2Fz ZSB3aGVyZQ0KPiBjb2RlIHRoYXQgdXNlcyB0aGUgR0NEIGluc3RlYWQgb2YgdGhlIHBhZ2UgdGFi bGUgKHN1Y2ggYXMgdGhlDQo+IE5vbkRpc2NvdmVyYWJsZVBjaURldmljZUlvIGRyaXZlciBJIG1l bnRpb25lZCkgYXR0ZW1wdHMgdG8gc2V0DQo+IGEgQ1BVIG1lbW9yeSBhdHRyaWJ1dGUgKHN1Y2gg YXMgVUMpIGFuZCBlbmRzIHVwIGNsZWFyaW5nIHRoZSBYUCBiaXQNCj4gdGhhdCB3YXMgc2V0IGlu IHRoZSBwYWdlIHRhYmxlLCBidXQgd2Fzbid0IGluIHRoZSBHQ0QgKGJlY2F1c2UgaXQgd2FzDQo+ IG5ldmVyIHByb3Blcmx5IHN5bmNlZCB3aXRoIHRoZSBwYWdlIHRhYmxlKS4gVGhpcyBjb3VsZCBh bHNvIGJlIHNvbHZlZA0KPiBieSBnb2luZyB0byBlYWNoIGNhbGxlciBhbmQgdXBkYXRpbmcgaXQg dG8gc2V0IHRoZSBHQ0QgY2FwYWJpbGl0aWVzDQo+IGJlZm9yZSBpdCBzZXRzIHRoZSBHQ0QgYXR0 cmlidXRlcyAoYW5kIHBlcmhhcHMgdGhleSBzaG91bGQgYmUsIGFscmVhZHkpLg0KPiBIb3dldmVy LCB0aGlzIHB1dHMgdGhlIGJ1cmRlbiBvZiBtYWludGFpbmluZyBtZW1vcnkgcHJvdGVjdGlvbnMg c3VjaA0KPiBhcyBYUCBvbiBlYWNoIGNhbGxlciwgaW5zdGVhZCBvZiBoYW5kbGluZyBpdCBhdCBh IGNvcmUgbGV2ZWwgKG5vdywNCj4gdGhlcmUgYXJlIG9mIGNvdXJzZSBjb21wbGV0ZSBkZXNpZ24g Y2hhbmdlcyB0aGF0IGNvdWxkIG1ha2UgdGhpcyBtb3JlDQo+IGVmZmVjdGl2ZSwgYnV0IHRoaXMg d2FzIGFuIGF0dGVtcHQgYXQgYSBzaW1wbGUgZmlyc3Qgc3RlcCkuDQo+IA0KPiBNeSB1bmRlcnN0 YW5kaW5nIGlzIHRoYXQgdGhlIEVGSSBtZW1vcnkgbWFwIGlzIGJ1aWx0IG9uIGRlbWFuZCBieSBj YWxscw0KPiB0byBHZXRNZW1vcnlNYXAgZnJvbSB0aGUgcGFnZSBkZXNjcmlwdG9yIGxpc3QsIHdo aWNoIGlzIHVwZGF0ZWQNCj4gdGhvdWdob3V0IGJvb3RzZXJ2aWNlcywgaS5lLiB0aGF0IGl0IGlz bid0IHB1bGxpbmcgZnJvbSB0aGUgR0NELiBJIHdpbGwNCj4gZ28gYmFjayBhbmQgdHJhY2UgdGhy b3VnaCB0aGlzIGxvZ2ljIGFnYWluLg0KPiANCj4gPg0KPiA+IEdlbmVyYWxseSwgdGhlIEVGSSBh bmQgUEkgc3BlY3MgYXJlIHZlcnkgdmFndWUgd2hlbiBpdCBjb21lcyB0bw0KPiA+IGRlZmluaW5n IHdoZXRoZXIgbWVtb3J5IHJlZ2lvbiBhdHRyaWJ1dGVzIGFwcGx5IHRvIHRoZSBtZW1vcnkgcmVn aW9uDQo+ID4gaXRzZWxmICgidGhpcyBtZW1vcnkgY2FuIGJlIG1hcHBlZCBhcyByZWFkLW9ubHkg b3Igbm9uLWV4ZWMiKSBvciBpdHMNCj4gPiBjb250ZW50cyAoInRoZXNlIHBhZ2VzIGNhbiBiZSBt YXBwZWQgcmVhZC1vbmx5IGJlY2F1c2UgdGhlIGNvZGUgZG9lcw0KPiA+IG5vdCBleHBlY3QgdG8g YmUgYWJsZSB0byB3cml0ZSB0byBpdCIpLg0KPiA+DQo+ID4gQmVmb3JlIHdlIGhhdmUgc29tZSBj bGFyaWZpY2F0aW9uIGFuZCBzb21lIHJpZ2lkIHdvcmRpbmcgaW4gdGhlIHNwZWMNCj4gPiBhcyB0 byB3aGF0IHRoZXNlIGF0dHJpYnV0ZXMgYWN0dWFsbHkgbWVhbiBmb3Igbm9uLWFsbG9jYXRlZCBy ZWdpb25zIHZzDQo+ID4gYWxsb2NhdGVkIG9uZXMsIEkgZG9uJ3QgdGhpbmsgd2UgY2FuIHVzZSB0 aGVtIGxpa2UgdGhpcy4NCj4gPiBBbHRlcm5hdGl2ZWx5LCB3ZSBjb3VsZCB1cGRhdGUgdGhlIEdD RCBjb3JlIHNvIHRoZXNlIGF0dHJpYnV0ZXMgYXJlDQo+ID4gbm90IGluaGVyaXRlZCBieSB0aGUg RUZJIG1lbW9yeSBtYXAuDQo+ID4NCj4gPiBBbm90aGVyIHBvdGVudGlhbCBjb25jZXJuIGlzIGZy YWdtZW50YXRpb246IHRoZSBHQ0QgbWVtb3J5IG1hcCBoYXMNCj4gPiB2ZXJ5IGZldyBlbnRyaWVz IHVzdWFsbHkgdW5kZXIgdGhlIGN1cnJlbnQgdXNhZ2UgbW9kZWwsIGJ1dCBrZWVwaW5nDQo+ID4g dHJhY2sgb2YgYWxsIG1lbW9yeSBwZXJtaXNzaW9uIGF0dHJpYnV0ZXMgaXMgZ29pbmcgdG8gaW5m bGF0ZSBpdHMgc2l6ZQ0KPiA+IHN1YnN0YW50aWFsbHkuDQo+IA0KPiBJIHRoaW5rIHRoaXMgc2hv dWxkIG5vdCBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIEdDRCwgcmlnaHQ/IEl0IGlzIG5vdA0KPiB0 cmFja2luZyBhbnkgbW9yZSByZWdpb25zIHRoYW4gaXQgYWxyZWFkeSB3YXMuIEl0IHNpbXBseSBp cyB1cGRhdGluZw0KPiB0aGUgY2FwYWJpbGl0aWVzIG9mIGVhY2ggcmVnaW9uIGl0IHdhcyBhbHJl YWR5IHRyYWNraW5nIChhbmQgcG9zc2libHkNCj4gdGhlIGF0dHJpYnV0ZXMgaWYgdGhlIHBhZ2Ug dGFibGUgaGFkIFJPLCBSUCwgb3IgWFAgc2V0KS4gSSBhZ3JlZSB0aGF0DQo+IG5vdCB0cmFja2lu ZyBlYWNoIHJhbmdlIG9mIG1lbW9yeSBpcyBjcml0aWNhbCwgd2UgaGF2ZSBzZWVuIGlzc3VlcyB3 aGVuDQo+IG5vbi1leGlzdGVudCBtZW1vcnkgd2FzIGdldHRpbmcgdHJhY2tlZC4NCj4gDQo+ID4N Cj4gPiBBbHNvLCBpbmNsdWRpbmcgRUZJX01FTU9SWV9SUCBvbmx5IG1ha2VzIHNlbnNlIGlmIHdl IGltcGxlbWVudCBhIHdheQ0KPiA+IHRvIGFwcGx5IGl0LCB3aGljaCBBcm1DcHVEeGUgY3VycmVu dGx5IGRvZXMgbm90IHByb3ZpZGUuDQo+IA0KPiBUaGFua3MgZm9yIHBvaW50aW5nIHRoaXMgb3V0 LCBJIGhhZG4ndCB0cmFjZWQgYW5kIHNlZW4gdGhhdCBSUCBpcyBub3QNCj4gaW1wbGVtZW50ZWQu IElmIHRoaXMgbW92ZXMgZm9yd2FyZCwgSSBjYW4gZHJvcCBpdCAoYW5kIHdpdGggYSBjb21tZW50 DQo+IHdoeSBpdCBpcyBkaWZmZXJlbnQpLg0KPiANCj4gPg0KPiA+DQo+ID4+IFBSOiBodHRwczov L2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvcHVsbC80MzExDQo+ID4+IFBlcnNvbmFsIGJyYW5j aDogaHR0cHM6Ly9naXRodWIuY29tL29zLQ0KPiBkL2VkazIvdHJlZS9vc2RlL3N5bmNfYWFyY2g2 NF9nY2RfY2FwYWJpbGl0aWVzX3YxDQo+ID4+DQo+ID4+IENjOiBMZWlmIExpbmRob2xtIDxxdWlj X2xsaW5kaG9sQHF1aWNpbmMuY29tPg0KPiA+PiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZGIrdGlh bm9jb3JlQGtlcm5lbC5vcmc+DQo+ID4+IENjOiBTYW1pIE11amF3YXIgPHNhbWkubXVqYXdhckBh cm0uY29tPg0KPiA+PiBDYzogTWljaGFlbCBLdWJhY2tpIDxtaWt1YmFja0BsaW51eC5taWNyb3Nv ZnQuY29tPg0KPiA+PiBDYzogU2VhbiBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+ DQo+ID4+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IE9saXZlciBTbWl0aC1EZW5ueSA8b3NkZUBsaW51 eC5taWNyb3NvZnQuY29tPg0KPiA+PiAtLS0NCj4gPj4gICBBcm1Qa2cvRHJpdmVycy9DcHVEeGUv Q3B1TW11Q29tbW9uLmMgfCA1NQ0KPiArKysrKysrKysrKysrKysrKy0tLQ0KPiA+PiAgIDEgZmls ZSBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQ0KPiA+Pg0KPiA+PiBk aWZmIC0tZ2l0IGEvQXJtUGtnL0RyaXZlcnMvQ3B1RHhlL0NwdU1tdUNvbW1vbi5jDQo+IGIvQXJt UGtnL0RyaXZlcnMvQ3B1RHhlL0NwdU1tdUNvbW1vbi5jDQo+ID4+IGluZGV4IDJlNzM3MTlkY2Uw NC4uM2VmMDM4MGUwODRmIDEwMDY0NA0KPiA+PiAtLS0gYS9Bcm1Qa2cvRHJpdmVycy9DcHVEeGUv Q3B1TW11Q29tbW9uLmMNCj4gPj4gKysrIGIvQXJtUGtnL0RyaXZlcnMvQ3B1RHhlL0NwdU1tdUNv bW1vbi5jDQo+ID4+IEBAIC05MCw2ICs5MCw3IEBAIFNldEdjZE1lbW9yeVNwYWNlQXR0cmlidXRl cyAoDQo+ID4+ICAgICBVSU5UTiAgICAgICAgICAgICAgICAgRW5kSW5kZXg7DQo+ID4+ICAgICBF RklfUEhZU0lDQUxfQUREUkVTUyAgUmVnaW9uU3RhcnQ7DQo+ID4+ICAgICBVSU5UNjQgICAgICAg ICAgICAgICAgUmVnaW9uTGVuZ3RoOw0KPiA+PiArICBVSU5UNjQgICAgICAgICAgICAgICAgQ2Fw YWJpbGl0aWVzOw0KPiA+Pg0KPiA+PiAgICAgREVCVUcgKCgNCj4gPj4gICAgICAgREVCVUdfR0NE LA0KPiA+PiBAQCAtMTQ2LDE0ICsxNDcsNTYgQEAgU2V0R2NkTWVtb3J5U3BhY2VBdHRyaWJ1dGVz ICgNCj4gPj4gICAgICAgICBSZWdpb25MZW5ndGggPSBNZW1vcnlTcGFjZU1hcFtJbmRleF0uQmFz ZUFkZHJlc3MgKw0KPiBNZW1vcnlTcGFjZU1hcFtJbmRleF0uTGVuZ3RoIC0gUmVnaW9uU3RhcnQ7 DQo+ID4+ICAgICAgIH0NCj4gPj4NCj4gPj4gKyAgICAvLyBBbHdheXMgYWRkIFJPLCBSUCwgYW5k IFhQIGFzIGFsbCBtZW1vcnkgaXMgY2FwYWJsZSBvZiBzdXBwb3J0aW5nDQo+IHRoZXNlIHR5cGVz ICh0aGV5IGFyZSBzb2Z0d2FyZQ0KPiA+PiArICAgIC8vIGNvbnN0cnVjdHMsIG5vdCBoYXJkd2Fy ZSBmZWF0dXJlcykgYW5kIHRoZXkgYXJlIGNyaXRpY2FsIHRvDQo+IG1haW50YWluaW5nIGEgc2Vj dXJpdHkgYm91bmRhcnkNCj4gPj4gKyAgICBDYXBhYmlsaXRpZXMgPSBNZW1vcnlTcGFjZU1hcFtJ bmRleF0uQ2FwYWJpbGl0aWVzIHwNCj4gRUZJX01FTU9SWV9STyB8IEVGSV9NRU1PUllfUlAgfCBF RklfTUVNT1JZX1hQOw0KPiA+PiArDQo+ID4+ICAgICAgIC8vDQo+ID4+IC0gICAgLy8gU2V0IG1l bW9yeSBhdHRyaWJ1dGVzIGFjY29yZGluZyB0byBNVFJSIGF0dHJpYnV0ZSBhbmQgdGhlIG9yaWdp bmFsDQo+IGF0dHJpYnV0ZSBvZiBkZXNjcmlwdG9yDQo+ID4+ICsgICAgLy8gVXBkYXRlIEdDRCBj YXBhYmlsaXRpZXMgYXMgdGhlc2UgbWF5IGhhdmUgY2hhbmdlZCBpbiB0aGUgcGFnZQ0KPiB0YWJs ZSBzaW5jZSB0aGUgR0NEIHdhcyBjcmVhdGVkDQo+ID4+ICsgICAgLy8gdGhpcyBmb2xsb3dzIHRo ZSBzYW1lIHBhdHRlcm4gYXMgeDg2IEdDRCBhbmQgUGFnZSBUYWJsZSBzeW5jaW5nDQo+ID4+ICAg ICAgIC8vDQo+ID4+IC0gICAgZ0RTLT5TZXRNZW1vcnlTcGFjZUF0dHJpYnV0ZXMgKA0KPiA+PiAt ICAgICAgICAgICBSZWdpb25TdGFydCwNCj4gPj4gLSAgICAgICAgICAgUmVnaW9uTGVuZ3RoLA0K PiA+PiAtICAgICAgICAgICAoTWVtb3J5U3BhY2VNYXBbSW5kZXhdLkF0dHJpYnV0ZXMgJg0KPiB+ RUZJX01FTU9SWV9DQUNIRVRZUEVfTUFTSykgfA0KPiAoTWVtb3J5U3BhY2VNYXBbSW5kZXhdLkNh cGFiaWxpdGllcyAmIEF0dHJpYnV0ZXMpDQo+ID4+IC0gICAgICAgICAgICk7DQo+ID4+ICsgICAg U3RhdHVzID0gZ0RTLT5TZXRNZW1vcnlTcGFjZUNhcGFiaWxpdGllcyAoDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgIFJlZ2lvblN0YXJ0LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICBSZWdp b25MZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIENhcGFiaWxpdGllcw0KPiA+PiAr ICAgICAgICAgICAgICAgICAgICApOw0KPiA+PiArDQo+ID4+ICsgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KPiA+PiArICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgREVCVUdfRVJS T1IsDQo+ID4+ICsgICAgICAgICIlYSAtIGZhaWxlZCB0byB1cGRhdGUgR0NEIGNhcGFiaWxpdGll czogMHglbGx4IG9uIG1lbW9yeSByZWdpb246DQo+IDB4JWxseCBsZW5ndGg6IDB4JWxseCBTdGF0 dXM6ICVyXG4iLA0KPiA+PiArICAgICAgICBfX2Z1bmNfXywNCj4gPj4gKyAgICAgICAgQ2FwYWJp bGl0aWVzLA0KPiA+PiArICAgICAgICBSZWdpb25TdGFydCwNCj4gPj4gKyAgICAgICAgUmVnaW9u TGVuZ3RoLA0KPiA+PiArICAgICAgICBTdGF0dXMNCj4gPj4gKyAgICAgICAgKSk7DQo+ID4+ICsg ICAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+PiArICAgICAgY29udGludWU7DQo+ ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICAvLyBTZXQgbWVtb3J5 IGF0dHJpYnV0ZXMgYWNjb3JkaW5nIHRvIHRoZSBwYWdlIHRhYmxlIGF0dHJpYnV0ZSBhbmQgdGhl DQo+IG9yaWdpbmFsIGF0dHJpYnV0ZSBvZiBkZXNjcmlwdG9yDQo+ID4+ICsgICAgLy8NCj4gPj4g KyAgICBTdGF0dXMgPSBnRFMtPlNldE1lbW9yeVNwYWNlQXR0cmlidXRlcyAoDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgIFJlZ2lvblN0YXJ0LA0KPiA+PiArICAgICAgICAgICAgICAgICAgICBS ZWdpb25MZW5ndGgsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgIChNZW1vcnlTcGFjZU1hcFtJ bmRleF0uQXR0cmlidXRlcyAmDQo+IH5FRklfTUVNT1JZX0NBQ0hFVFlQRV9NQVNLKSB8IChBdHRy aWJ1dGVzICYgQ2FwYWJpbGl0aWVzKQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICApOw0KPiA+ PiArDQo+ID4+ICsgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+PiArICAgICAgREVC VUcgKCgNCj4gPj4gKyAgICAgICAgREVCVUdfRVJST1IsDQo+ID4+ICsgICAgICAgICIlYSAtIGZh aWxlZCB0byB1cGRhdGUgR0NEIGF0dHJpYnV0ZXM6IDB4JWxseCBvbiBtZW1vcnkgcmVnaW9uOg0K PiAweCVsbHggbGVuZ3RoOiAweCVsbHggU3RhdHVzOiAlclxuIiwNCj4gPj4gKyAgICAgICAgX19m dW5jX18sDQo+ID4+ICsgICAgICAgIEF0dHJpYnV0ZXMsDQo+ID4+ICsgICAgICAgIFJlZ2lvblN0 YXJ0LA0KPiA+PiArICAgICAgICBSZWdpb25MZW5ndGgsDQo+ID4+ICsgICAgICAgIFN0YXR1cw0K PiA+PiArICAgICAgICApKTsNCj4gPj4gKyAgICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7 DQo+ID4+ICsgICAgICBjb250aW51ZTsNCj4gPj4gKyAgICB9DQo+ID4+ICAgICB9DQo+ID4+DQo+ ID4+ICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+IC0tDQo+ID4+IDIuNDAuMA0KPiA+Pg0K PiANCj4gDQo+IA0KPiANCg0K