From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.11223.1680128629125115378 for ; Wed, 29 Mar 2023 15:23:49 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=Ftn82Qcf; spf=pass (domain: intel.com, ip: 134.134.136.20, 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=1680128629; x=1711664629; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=IRPbVh+E7QrHStO+uYPooYzgiPjJN1thg94p0zvPmnU=; b=Ftn82QcflTRyXjKA/VVGqQD6rDsct8K85mVdcipYh7C1eEbcfGcpqWpR NJakSTdZ90yDDRvvk/3XxpGpT9opNazL1mY0GpvBKMKgUgHPZDYSlwRWi s4gR09Vl82Ahsg+rGptBsVcz19f825P41fYXatMHOtUf1j8yz+XcGjPW+ sDUAE/pNw8PoLvtKLyk9BhHPpeFZOY/avusul6OYGAkcTic6S+IBOPgh1 IOoka2YKBfRQ4+Qb2fGATRYfN5Sguu1EKTcGWgm49gB7vFd/qsq11OEFp DS6OPzgFyHoHT9ICCaV71QVqieS1O0P94J+rn3NLglMAcUPwoZBwUguoz A==; X-IronPort-AV: E=McAfee;i="6600,9927,10664"; a="329501328" X-IronPort-AV: E=Sophos;i="5.98,301,1673942400"; d="scan'208";a="329501328" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 29 Mar 2023 15:23:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10664"; a="1014200602" X-IronPort-AV: E=Sophos;i="5.98,301,1673942400"; d="scan'208";a="1014200602" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga005.fm.intel.com with ESMTP; 29 Mar 2023 15:23:48 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) 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.2507.21; Wed, 29 Mar 2023 15:23:47 -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.21; Wed, 29 Mar 2023 15:23:46 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) 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.21 via Frontend Transport; Wed, 29 Mar 2023 15:23:46 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.101) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.21; Wed, 29 Mar 2023 15:23:46 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TQIXRFBM1z391h+xmGkTy8IIXB7oDTnUfj+7g9P8BSUx+EQcba4xn19IYm66/Pw7zrGH4U1OD96KFx6/idvox7xMYLXQg7QXtHrD/Ih72tA7KPWmk/eqd405cYfsz/osixuVwoioK+SWj2fokx5fpaayLhRNTLENaUtW2DDdy/YvEbPEWwVeZLNAl0ALAGCLQf4jEceF8wUMtnyQ0ofdY6Cwm+lC7I8P8hbUcT8iT3nTqvkk4Lqd5pyAx23V95I6WbZTEhCZt028PzY8Y5gEJf8Qqfqf0b+3D70OQoQz9bHSGRbQGlZ5b64uvJ8nLyW3B5qErQp7Ebo5o1bMdyHKYg== 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=IRPbVh+E7QrHStO+uYPooYzgiPjJN1thg94p0zvPmnU=; b=TgqFvoRy/oGpm05xr6wbw2WD+MVGYfGon4Dx9bMfEWq5i5blY/EQHBfHXAMGP6/ogy7zQKwCDOvBiziAyGF40Mau2BVJTMCZ309d5lcXpxS9CEkY0ANxa+uNRU5FoJu5WtYxKnejbgANTjnrbk3pFTrOk3+Sxy958tW3a2ZArwGNKTsgUi7ROI4dzRpT9fsEUB6+OadjyOUTHF12TlSIUqJv9PB191Yiy0rStJ502/DdZPy9X8PuzzW9xprWAUCktj1eE3T/n0Q9dQtO0TxoKtuDN+8VUrDFHZgc7j5YGiP+PUopKyp2kPayqMNDl4u6ddfPJ7+xDQViBNH6cRcl2A== 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 LV2PR11MB6048.namprd11.prod.outlook.com (2603:10b6:408:178::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6222.33; Wed, 29 Mar 2023 22:23:44 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::76be:1164:2c1f:90a5%7]) with mapi id 15.20.6222.033; Wed, 29 Mar 2023 22:23:44 +0000 From: "Michael D Kinney" To: "Ni, Ray" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul R" , Gerd Hoffmann , "Anadani, Ahmad" , "Kinney, Michael D" Subject: Re: [PATCH 6/6] UefiCpuPkg/MtrrTest: Add test cases for TME-MK enable case Thread-Topic: [PATCH 6/6] UefiCpuPkg/MtrrTest: Add test cases for TME-MK enable case Thread-Index: AQHZXFDlZ/hwvujmcUeNxwiKbxv1yK8SYZWg Date: Wed, 29 Mar 2023 22:23:43 +0000 Message-ID: References: <20230321235650.675-1-ray.ni@intel.com> <20230321235650.675-7-ray.ni@intel.com> In-Reply-To: <20230321235650.675-7-ray.ni@intel.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_|LV2PR11MB6048:EE_ x-ms-office365-filtering-correlation-id: 11aac4f1-e412-4e00-b3c2-08db30a441b8 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Bo9t4aNXM4Sgwz4WErHolUXAoKHGxVsfElykPYR4fSALfJAab4DOw72DpNSTH+4QCfAqxOZly7AfyGHsi6agihL0ZqHGsC6b0QUE5z+aSuuAh0LrXzNu1pmOZoscsdQG01zs4Vbqdb/UYA/jUaLiK8Wt46OLvMBenoPYAam/lGNxVi0yvdpwA7Vtk+75LMLZONqt8QGH7EjcfE1Yg5WCKXYIOSt7ZX0g50Jj+O8nYvFxYD5CM7oHIr4kx9ue9ZKqE5fHJf/mAsB7eq8/O/V6dMSH4nsIvmrT+MzOvCC8EqlXsWflafmCXY2pHjQ+lj+xWXypLKOGj0+XJ+lfQzLqJPfAeoDA5hOoBJpjtddIhUr2GwldPe8jn8gemLFAC1dVxzXMqkcjNBTO6mUDQQRXJMFehOOEwp6ju/LK/0ZohqcVtEaLuqj3Y5TsnvYXnoopNUS/c/K/nsie+D6UjesY3jv+J54RujTE7egCDcHtj6IP+vBef8xmE+7IC1SJbSjgrtcYqFP+L4xfpwv2VarBB+ZUmpiITU536a2cQMfKuhW7+LvvFSpQsvHy8NLTCA5TVEQrNma3USHv48fO8xv8j9Mr/0liG/6w02ZMiJtjDKINhbxj3uojhfAKI3Ntb1UQ 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)(376002)(346002)(366004)(396003)(451199021)(7696005)(55016003)(71200400001)(4326008)(41300700001)(19627235002)(76116006)(316002)(110136005)(66446008)(8676002)(478600001)(66556008)(64756008)(66476007)(38100700002)(66946007)(54906003)(30864003)(53546011)(186003)(5660300002)(33656002)(86362001)(38070700005)(9686003)(107886003)(2906002)(83380400001)(52536014)(122000001)(82960400001)(6506007)(26005)(8936002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?UXRibW1XbncranFHaFQvVW9VbkI1a2xsNWFmSWVDbjRuYjVneGxyMk9RK3hr?= =?utf-8?B?cFhLRFhKNGpIWEJxMEIyTFluTDlVbUpJWjNMd1k1d2Q5bmJ6cVNHNnkycWMv?= =?utf-8?B?S3gvWU5TMEZQK2ZlVEE1UDd0WmRYS1JkOEFVNGRveG44MXEyQXA2WWlWU3NY?= =?utf-8?B?L0l4NTg3ZSszVWNteFBMaEJhNHFjQVovbUZVajRtTDBGRkhhbnZWSG5OTWMy?= =?utf-8?B?STFsdHVCUlRORzBqSFNiQkllQ2RnblVxYnN4b0QyS2wyalcwbEk5YlFmVlhM?= =?utf-8?B?bVZpOWx5SU96TmlkdGlOSXhabnR1NkNkWmZPdHRPb2xHcXlRejdkVG5MOHdN?= =?utf-8?B?TEpQMm5hc0pwazFkRVZaNDhOVGlONXJNU0tZR3c3emVPdC9OMm9Hd2hud2hW?= =?utf-8?B?UFhyR0swNzIwRnE0WVg3eEFIczFvaGE4T1VSM2U2cWN2MzlNTUpRclhtWUxV?= =?utf-8?B?OWcvamN1aW1XaHhIc1RQUXU3cUFKWVR6VExWYjNRRGFaL2FPbzlYaXZFOWc1?= =?utf-8?B?bVF2WUdMVW9MYzJvMnU5R3pteWhMWHpuOC8zN292K0dZVmFPM204NWtuaWZx?= =?utf-8?B?S05YeEVNYzh2bWhGMTNjZk53MnhPc0NjL0NGQ3lXdWJJczdlMWFmNUR5eTJk?= =?utf-8?B?ZDBnQTA0eVdiczdVWktlMTAxZS9yRCtYeS9Oa2xFVkJCRU1ZalZwTTZBWkoz?= =?utf-8?B?MU9rdFNJY2graTh0ZkNLcEhLRHFTMmJwSEp4emNLSEtXVG15c1NPQzNoNEQr?= =?utf-8?B?ZzJLYkszSU4vR21pVkh6em5jT0w3cy9IVVhOZmFqYm9zNDhSODBLRGpZa3lu?= =?utf-8?B?Z1hhTThBUUNHcHRkTXM0Q1pvcXNtQ244ekFnQ1h4eXdTMFFaV1NINkMxalUv?= =?utf-8?B?WXF5emxGaUlIUGVXKzcvN2I5MVZPT1htbFpCNW5vMldGVGFmM21Wby8rQjYx?= =?utf-8?B?RmJhU3dhR2xmL0JhazIza3pBTWMxc2UyR0Z3ME85VDlvQjhoTDRIQVlYR05z?= =?utf-8?B?aFFtUmNrcEdPcitzMFdOQWZacSs2S3FlNy9FSWJjUS9hZXhsaVpyZE9CQVV5?= =?utf-8?B?eVFjYmUwY1ZRL251VnZJS3pCTzhGVGNZSVRDcWZ5S2Z5RTJrTGg3clFrZHZw?= =?utf-8?B?WWFDbzZXY1lFY0tiRHZOeWRSSXBZMlJ5TnUwYko4bE9Ua0ptLzl4S3FSWnd2?= =?utf-8?B?Nlhhbk9tb29neWVUZGFob1ZTK1RHTDFTNnJQeWhSODlDbWdMWjZla2FNM0Nk?= =?utf-8?B?c2JHWjkrM1ZzSkhyZ2RxMGlublZrdE4rZ2hXMjllTlpCSXpLN2pPeHU2UEtU?= =?utf-8?B?bnRBRDllSDY5Y0VRYjdnUmpDWlphME1NeFIzU3MrWklicjB3UUFLdElZR2Nw?= =?utf-8?B?eGtQOGM1Mkpla0tFRTNkVnkvUEtVMGtONmNnOEZSV2djc1JxaDdtUGI0MTVa?= =?utf-8?B?S2RzUXVreWpmcks5TmFsWFU5aGt5cWlPQVhzZ2FaSjVPS09kN0txYW1QNWlQ?= =?utf-8?B?OGxJTkZaQlhnWDh3N1BzVmpxNXJJcDR1NFViV1d4YTdmTHBvZ2NGK3B0WFhU?= =?utf-8?B?S0tjZ1lueFZIVkJIZXl0U0NuM0xiWjJ4a2xXdExoRm1rTjBLVTZ0MXE3amMx?= =?utf-8?B?T1ByY0NIbkg4cmtXV0xTTGREUlJHOVNEVFQ0d1FtcEttUTEwVXJqdXlSeko1?= =?utf-8?B?SlJoODMrbzJQNHk2My9pU2dUUnp2NVlISGZET3k4eG9LWTZpQ2NybTVnZ1dY?= =?utf-8?B?RE5VMWgyWkh5emVNUEVkWUZsZjlZLzRiRWZHZmJJK2xSTklTQXl3MnNNTm4y?= =?utf-8?B?RGN6bXVjcjFZUVpVS05sV3haVjdLRkJDUGxhK2xjckhDeWRYNnhhZ1hCR1lq?= =?utf-8?B?d2t5UmZITXZXWjBXd2JxeE1FQlJvRWwxbjh6MFpuamFWOFk3d0E4dzRPQ3pS?= =?utf-8?B?Q05ZclBkVXVHT3NDbTNKc2V5VnVsVzNqZ3dQRHZsL05pR2tiMmx5a3M0UGly?= =?utf-8?B?RnJKTENyQ3YvN1d1M2tjNkE2NVBndXBDeHVQUGNHNmxZVUYxbmRieEVabzBJ?= =?utf-8?B?MmVlVEt6VlYwbTI0TmVJS2dxUnk3eUdCL2J6Rk00a2ZNMW5DR0RWdURVRHgv?= =?utf-8?B?dEJTeWdkZ0h0M2tGRU9uank1d3F0YXBGRzJ6ckUwUHZqZTNYdmkvcFRha1Fl?= =?utf-8?B?cmc9PQ==?= 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: 11aac4f1-e412-4e00-b3c2-08db30a441b8 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Mar 2023 22:23:43.8092 (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: 0KDTfUY+o7jfBLMs/cScVLerU9M6XcmzxMG7WPtJ5vfhjxw34I9jSEXryqAVGMFMtj6d0AlqTQ8bH/beRuFkJZyt5FHa1dqajm5XdUKP04Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR11MB6048 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 UmV2aWV3ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE5pLCBSYXkgPHJheS5u aUBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDIxLCAyMDIzIDQ6NTcgUE0NCj4g VG86IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50 ZWwuY29tPjsgS3VtYXIsIFJhaHVsIFIgPHJhaHVsLnIua3VtYXJAaW50ZWwuY29tPjsgR2VyZCBI b2ZmbWFubiA8a3JheGVsQHJlZGhhdC5jb20+OyBLaW5uZXksDQo+IE1pY2hhZWwgRCA8bWljaGFl bC5kLmtpbm5leUBpbnRlbC5jb20+OyBBbmFkYW5pLCBBaG1hZCA8YWhtYWQuYW5hZGFuaUBpbnRl bC5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSCA2LzZdIFVlZmlDcHVQa2cvTXRyclRlc3Q6IEFkZCB0 ZXN0IGNhc2VzIGZvciBUTUUtTUsgZW5hYmxlIGNhc2UNCj4gDQo+IFdoZW4gVE1FLU1LIGlzIGVu YWJsZWQsIHRoZSBNdHJyTGliIHNob3VsZCBzdWJzdHJhY3QgdGhlIFRNRS1NSw0KPiByZXNlcnZl ZCBiaXRzIGZyb20gdGhlIG1heCBQQSByZXR1cm5lZCBmcm9tIENQVUlEIGluc3RydWN0aW9uLg0K PiANCj4gVGhlIG5ldyB0ZXN0IGNhc2UgZ3VhcmFudGVlcyBzdWNoIGJlaGF2aW9yIGluIE10cnJM aWIuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+IENj OiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+IENjOiBSYWh1bCBLdW1hciA8cmFo dWwxLmt1bWFyQGludGVsLmNvbT4NCj4gQ2M6IEdlcmQgSG9mZm1hbm4gPGtyYXhlbEByZWRoYXQu Y29tPg0KPiBDYzogTWljaGFlbCBEIEtpbm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+IENjOiBBaG1hZCBBbmFkYW5pIDxhaG1hZC5hbmFkYW5pQGludGVsLmNvbT4NCj4gLS0tDQo+ ICAuLi4vTXRyckxpYi9Vbml0VGVzdC9NdHJyTGliVW5pdFRlc3QuYyAgICAgICAgfCAgMTggKy0t DQo+ICAuLi4vTXRyckxpYi9Vbml0VGVzdC9NdHJyTGliVW5pdFRlc3QuaCAgICAgICAgfCAgIDMg Ky0NCj4gIFVlZmlDcHVQa2cvTGlicmFyeS9NdHJyTGliL1VuaXRUZXN0L1N1cHBvcnQuYyB8IDEx OSArKysrKysrKysrKysrKy0tLS0NCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMo KyksIDMzIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFy eS9NdHJyTGliL1VuaXRUZXN0L010cnJMaWJVbml0VGVzdC5jIGIvVWVmaUNwdVBrZy9MaWJyYXJ5 L010cnJMaWIvVW5pdFRlc3QvTXRyckxpYlVuaXRUZXN0LmMNCj4gaW5kZXggYjlhOTdkZWUwOS4u MTQwOWFlMjdiYiAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L010cnJMaWIvVW5p dFRlc3QvTXRyckxpYlVuaXRUZXN0LmMNCj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L010cnJM aWIvVW5pdFRlc3QvTXRyckxpYlVuaXRUZXN0LmMNCj4gQEAgLTEsNyArMSw3IEBADQo+ICAvKiog QGZpbGUNCj4gDQo+ICAgIFVuaXQgdGVzdHMgb2YgdGhlIE10cnJMaWIgaW5zdGFuY2Ugb2YgdGhl IE10cnJMaWIgY2xhc3MNCj4gDQo+IA0KPiANCj4gLSAgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRl bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+IA0KPiArICBDb3B5cmln aHQgKGMpIDIwMjAgLSAyMDIzLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl ZC48QlI+DQo+IA0KPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBh dGVudA0KPiANCj4gDQo+IA0KPiAgKiovDQo+IA0KPiBAQCAtMzAsNiArMzAsOCBAQCBTVEFUSUMg TVRSUl9MSUJfU1lTVEVNX1BBUkFNRVRFUiAgbVN5c3RlbVBhcmFtZXRlcnNbXSA9IHsNCj4gICAg eyA0OCwgVFJVRSwgVFJVRSwgQ2FjaGVXcml0ZVRocm91Z2gsICAgMTIgfSwNCj4gDQo+ICAgIHsg NDgsIFRSVUUsIFRSVUUsIENhY2hlV3JpdGVQcm90ZWN0ZWQsIDEyIH0sDQo+IA0KPiAgICB7IDQ4 LCBUUlVFLCBUUlVFLCBDYWNoZVdyaXRlQ29tYmluaW5nLCAxMiB9LA0KPiANCj4gKw0KPiANCj4g KyAgeyA0OCwgVFJVRSwgVFJVRSwgQ2FjaGVXcml0ZUJhY2ssICAgICAgMTIsIDd9LCAvLyA3IGJp dHMgZm9yIE1LVE1FDQo+IA0KPiAgfTsNCj4gDQo+IA0KPiANCj4gIFVJTlQzMiAgbUZpeGVkTXRy cnNJbmRleFtdID0gew0KPiANCj4gQEAgLTIxOSw3ICsyMjEsNyBAQCBVbml0VGVzdE10cnJTZXRN ZW1vcnlBdHRyaWJ1dGVzSW5NdHJyU2V0dGluZ3MgKA0KPiAgICAgICZXY0NvdW50DQo+IA0KPiAg ICAgICk7DQo+IA0KPiAgICBHZW5lcmF0ZVZhbGlkQW5kQ29uZmlndXJhYmxlTXRyclBhaXJzICgN Cj4gDQo+IC0gICAgU3lzdGVtUGFyYW1ldGVyLT5QaHlzaWNhbEFkZHJlc3NCaXRzLA0KPiANCj4g KyAgICBTeXN0ZW1QYXJhbWV0ZXItPlBoeXNpY2FsQWRkcmVzc0JpdHMgLSBTeXN0ZW1QYXJhbWV0 ZXItPk1rVG1lS2V5aWRCaXRzLA0KPiANCj4gICAgICBSYXdNdHJyUmFuZ2UsDQo+IA0KPiAgICAg IFVjQ291bnQsDQo+IA0KPiAgICAgIFd0Q291bnQsDQo+IA0KPiBAQCAtMjMyLDcgKzIzNCw3IEBA IFVuaXRUZXN0TXRyclNldE1lbW9yeUF0dHJpYnV0ZXNJbk10cnJTZXR0aW5ncyAoDQo+ICAgIEV4 cGVjdGVkTWVtb3J5UmFuZ2VzQ291bnQgPSBBUlJBWV9TSVpFIChFeHBlY3RlZE1lbW9yeVJhbmdl cyk7DQo+IA0KPiAgICBHZXRFZmZlY3RpdmVNZW1vcnlSYW5nZXMgKA0KPiANCj4gICAgICBTeXN0 ZW1QYXJhbWV0ZXItPkRlZmF1bHRDYWNoZVR5cGUsDQo+IA0KPiAtICAgIFN5c3RlbVBhcmFtZXRl ci0+UGh5c2ljYWxBZGRyZXNzQml0cywNCj4gDQo+ICsgICAgU3lzdGVtUGFyYW1ldGVyLT5QaHlz aWNhbEFkZHJlc3NCaXRzIC0gU3lzdGVtUGFyYW1ldGVyLT5Na1RtZUtleWlkQml0cywNCj4gDQo+ ICAgICAgUmF3TXRyclJhbmdlLA0KPiANCj4gICAgICBFeHBlY3RlZFZhcmlhYmxlTXRyclVzYWdl LA0KPiANCj4gICAgICBFeHBlY3RlZE1lbW9yeVJhbmdlcywNCj4gDQo+IEBAIC0yNzgsNyArMjgw LDcgQEAgVW5pdFRlc3RNdHJyU2V0TWVtb3J5QXR0cmlidXRlc0luTXRyclNldHRpbmdzICgNCj4g ICAgICBBY3R1YWxNZW1vcnlSYW5nZXNDb3VudCA9IEFSUkFZX1NJWkUgKEFjdHVhbE1lbW9yeVJh bmdlcyk7DQo+IA0KPiAgICAgIENvbGxlY3RUZXN0UmVzdWx0ICgNCj4gDQo+ICAgICAgICBTeXN0 ZW1QYXJhbWV0ZXItPkRlZmF1bHRDYWNoZVR5cGUsDQo+IA0KPiAtICAgICAgU3lzdGVtUGFyYW1l dGVyLT5QaHlzaWNhbEFkZHJlc3NCaXRzLA0KPiANCj4gKyAgICAgIFN5c3RlbVBhcmFtZXRlci0+ UGh5c2ljYWxBZGRyZXNzQml0cyAtIFN5c3RlbVBhcmFtZXRlci0+TWtUbWVLZXlpZEJpdHMsDQo+ IA0KPiAgICAgICAgU3lzdGVtUGFyYW1ldGVyLT5WYXJpYWJsZU10cnJDb3VudCwNCj4gDQo+ICAg ICAgICAmTG9jYWxNdHJycywNCj4gDQo+ICAgICAgICBBY3R1YWxNZW1vcnlSYW5nZXMsDQo+IA0K PiBAQCAtMzI1LDcgKzMyNyw3IEBAIFVuaXRUZXN0SW52YWxpZE1lbW9yeUxheW91dHMgKA0KPiAg ICBTeXN0ZW1QYXJhbWV0ZXIgPSAoTVRSUl9MSUJfU1lTVEVNX1BBUkFNRVRFUiAqKUNvbnRleHQ7 DQo+IA0KPiANCj4gDQo+ICAgIFJhbmdlQ291bnQgPSBSYW5kb20zMiAoMSwgQVJSQVlfU0laRSAo UmFuZ2VzKSk7DQo+IA0KPiAtICBNYXhBZGRyZXNzID0gMXVsbCA8PCBTeXN0ZW1QYXJhbWV0ZXIt PlBoeXNpY2FsQWRkcmVzc0JpdHM7DQo+IA0KPiArICBNYXhBZGRyZXNzID0gMXVsbCA8PCAoU3lz dGVtUGFyYW1ldGVyLT5QaHlzaWNhbEFkZHJlc3NCaXRzIC0gU3lzdGVtUGFyYW1ldGVyLT5Na1Rt ZUtleWlkQml0cyk7DQo+IA0KPiANCj4gDQo+ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IFJh bmdlQ291bnQ7IEluZGV4KyspIHsNCj4gDQo+ICAgICAgZG8gew0KPiANCj4gQEAgLTk2Nyw3ICs5 NjksNyBAQCBVbml0VGVzdE10cnJTZXRNZW1vcnlBdHRyaWJ1dGVJbk10cnJTZXR0aW5ncyAoDQo+ ICAgICAgJldjQ291bnQNCj4gDQo+ICAgICAgKTsNCj4gDQo+ICAgIEdlbmVyYXRlVmFsaWRBbmRD b25maWd1cmFibGVNdHJyUGFpcnMgKA0KPiANCj4gLSAgICBTeXN0ZW1QYXJhbWV0ZXItPlBoeXNp Y2FsQWRkcmVzc0JpdHMsDQo+IA0KPiArICAgIFN5c3RlbVBhcmFtZXRlci0+UGh5c2ljYWxBZGRy ZXNzQml0cyAtIFN5c3RlbVBhcmFtZXRlci0+TWtUbWVLZXlpZEJpdHMsDQo+IA0KPiAgICAgIFJh d010cnJSYW5nZSwNCj4gDQo+ICAgICAgVWNDb3VudCwNCj4gDQo+ICAgICAgV3RDb3VudCwNCj4g DQo+IEBAIC05ODAsNyArOTgyLDcgQEAgVW5pdFRlc3RNdHJyU2V0TWVtb3J5QXR0cmlidXRlSW5N dHJyU2V0dGluZ3MgKA0KPiAgICBFeHBlY3RlZE1lbW9yeVJhbmdlc0NvdW50ID0gQVJSQVlfU0la RSAoRXhwZWN0ZWRNZW1vcnlSYW5nZXMpOw0KPiANCj4gICAgR2V0RWZmZWN0aXZlTWVtb3J5UmFu Z2VzICgNCj4gDQo+ICAgICAgU3lzdGVtUGFyYW1ldGVyLT5EZWZhdWx0Q2FjaGVUeXBlLA0KPiAN Cj4gLSAgICBTeXN0ZW1QYXJhbWV0ZXItPlBoeXNpY2FsQWRkcmVzc0JpdHMsDQo+IA0KPiArICAg IFN5c3RlbVBhcmFtZXRlci0+UGh5c2ljYWxBZGRyZXNzQml0cyAtIFN5c3RlbVBhcmFtZXRlci0+ TWtUbWVLZXlpZEJpdHMsDQo+IA0KPiAgICAgIFJhd010cnJSYW5nZSwNCj4gDQo+ICAgICAgRXhw ZWN0ZWRWYXJpYWJsZU10cnJVc2FnZSwNCj4gDQo+ICAgICAgRXhwZWN0ZWRNZW1vcnlSYW5nZXMs DQo+IA0KPiBAQCAtMTAxOSw3ICsxMDIxLDcgQEAgVW5pdFRlc3RNdHJyU2V0TWVtb3J5QXR0cmli dXRlSW5NdHJyU2V0dGluZ3MgKA0KPiAgICAgIEFjdHVhbE1lbW9yeVJhbmdlc0NvdW50ID0gQVJS QVlfU0laRSAoQWN0dWFsTWVtb3J5UmFuZ2VzKTsNCj4gDQo+ICAgICAgQ29sbGVjdFRlc3RSZXN1 bHQgKA0KPiANCj4gICAgICAgIFN5c3RlbVBhcmFtZXRlci0+RGVmYXVsdENhY2hlVHlwZSwNCj4g DQo+IC0gICAgICBTeXN0ZW1QYXJhbWV0ZXItPlBoeXNpY2FsQWRkcmVzc0JpdHMsDQo+IA0KPiAr ICAgICAgU3lzdGVtUGFyYW1ldGVyLT5QaHlzaWNhbEFkZHJlc3NCaXRzIC0gU3lzdGVtUGFyYW1l dGVyLT5Na1RtZUtleWlkQml0cywNCj4gDQo+ICAgICAgICBTeXN0ZW1QYXJhbWV0ZXItPlZhcmlh YmxlTXRyckNvdW50LA0KPiANCj4gICAgICAgICZMb2NhbE10cnJzLA0KPiANCj4gICAgICAgIEFj dHVhbE1lbW9yeVJhbmdlcywNCj4gDQo+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkv TXRyckxpYi9Vbml0VGVzdC9NdHJyTGliVW5pdFRlc3QuaCBiL1VlZmlDcHVQa2cvTGlicmFyeS9N dHJyTGliL1VuaXRUZXN0L010cnJMaWJVbml0VGVzdC5oDQo+IGluZGV4IDU3ZTY1NmM1NTUuLjQ0 NzFjMWRjZjcgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9NdHJyTGliL1VuaXRU ZXN0L010cnJMaWJVbml0VGVzdC5oDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9NdHJyTGli L1VuaXRUZXN0L010cnJMaWJVbml0VGVzdC5oDQo+IEBAIC0xLDYgKzEsNiBAQA0KPiAgLyoqIEBm aWxlDQo+IA0KPiANCj4gDQo+IC0gIENvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiANCj4gKyAgQ29weXJpZ2h0IChjKSAyMDIw IC0gMjAyMywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiAN Cj4gICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gDQo+ IA0KPiANCj4gICoqLw0KPiANCj4gQEAgLTQwLDYgKzQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0K PiAgICBCT09MRUFOICAgICAgICAgICAgICAgICAgIEZpeGVkTXRyclN1cHBvcnRlZDsNCj4gDQo+ ICAgIE1UUlJfTUVNT1JZX0NBQ0hFX1RZUEUgICAgRGVmYXVsdENhY2hlVHlwZTsNCj4gDQo+ICAg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVNdHJyQ291bnQ7DQo+IA0KPiArICBV SU5UOCAgICAgICAgICAgICAgICAgICAgIE1rVG1lS2V5aWRCaXRzOw0KPiANCj4gIH0gTVRSUl9M SUJfU1lTVEVNX1BBUkFNRVRFUjsNCj4gDQo+IA0KPiANCj4gIGV4dGVybiBVSU5UMzIgICBtRml4 ZWRNdHJyc0luZGV4W107DQo+IA0KPiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L010 cnJMaWIvVW5pdFRlc3QvU3VwcG9ydC5jIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L010cnJMaWIvVW5p dFRlc3QvU3VwcG9ydC5jDQo+IGluZGV4IDI2MDk2NmU3YjYuLmJhMWRlMTAwMzQgMTAwNjQ0DQo+ IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9NdHJyTGliL1VuaXRUZXN0L1N1cHBvcnQuYw0KPiAr KysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXRyckxpYi9Vbml0VGVzdC9TdXBwb3J0LmMNCj4gQEAg LTEyLDEzICsxMiwxNSBAQCBNVFJSX01FTU9SWV9DQUNIRV9UWVBFICBtTWVtb3J5Q2FjaGVUeXBl c1tdID0gew0KPiAgICBDYWNoZVVuY2FjaGVhYmxlLCBDYWNoZVdyaXRlQ29tYmluaW5nLCBDYWNo ZVdyaXRlVGhyb3VnaCwgQ2FjaGVXcml0ZVByb3RlY3RlZCwgQ2FjaGVXcml0ZUJhY2sNCj4gDQo+ ICB9Ow0KPiANCj4gDQo+IA0KPiAtVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZp eGVkTXRycnNWYWx1ZVtNVFJSX05VTUJFUl9PRl9GSVhFRF9NVFJSXTsNCj4gDQo+IC1NU1JfSUEz Ml9NVFJSX1BIWVNCQVNFX1JFR0lTVEVSICBtVmFyaWFibGVNdHJyc1BoeXNCYXNlW01UUlJfTlVN QkVSX09GX1ZBUklBQkxFX01UUlJdOw0KPiANCj4gLU1TUl9JQTMyX01UUlJfUEhZU01BU0tfUkVH SVNURVIgIG1WYXJpYWJsZU10cnJzUGh5c01hc2tbTVRSUl9OVU1CRVJfT0ZfVkFSSUFCTEVfTVRS Ul07DQo+IA0KPiAtTVNSX0lBMzJfTVRSUl9ERUZfVFlQRV9SRUdJU1RFUiAgbURlZlR5cGVNc3I7 DQo+IA0KPiAtTVNSX0lBMzJfTVRSUkNBUF9SRUdJU1RFUiAgICAgICAgbU10cnJDYXBNc3I7DQo+ IA0KPiAtQ1BVSURfVkVSU0lPTl9JTkZPX0VEWCAgICAgICAgICAgbUNwdWlkVmVyc2lvbkluZm9F ZHg7DQo+IA0KPiAtQ1BVSURfVklSX1BIWV9BRERSRVNTX1NJWkVfRUFYICAgbUNwdWlkVmlyUGh5 QWRkcmVzc1NpemVFYXg7DQo+IA0KPiArVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbUZpeGVkTXRycnNWYWx1ZVtNVFJSX05VTUJFUl9PRl9GSVhFRF9NVFJSXTsN Cj4gDQo+ICtNU1JfSUEzMl9NVFJSX1BIWVNCQVNFX1JFR0lTVEVSICAgICAgICAgICAgICBtVmFy aWFibGVNdHJyc1BoeXNCYXNlW01UUlJfTlVNQkVSX09GX1ZBUklBQkxFX01UUlJdOw0KPiANCj4g K01TUl9JQTMyX01UUlJfUEhZU01BU0tfUkVHSVNURVIgICAgICAgICAgICAgIG1WYXJpYWJsZU10 cnJzUGh5c01hc2tbTVRSUl9OVU1CRVJfT0ZfVkFSSUFCTEVfTVRSUl07DQo+IA0KPiArTVNSX0lB MzJfTVRSUl9ERUZfVFlQRV9SRUdJU1RFUiAgICAgICAgICAgICAgbURlZlR5cGVNc3I7DQo+IA0K PiArTVNSX0lBMzJfTVRSUkNBUF9SRUdJU1RFUiAgICAgICAgICAgICAgICAgICAgbU10cnJDYXBN c3I7DQo+IA0KPiArTVNSX0lBMzJfVE1FX0FDVElWQVRFX1JFR0lTVEVSICAgICAgICAgICAgICAg bVRtZUFjdGl2YXRlTXNyOw0KPiANCj4gK0NQVUlEX1ZFUlNJT05fSU5GT19FRFggICAgICAgICAg ICAgICAgICAgICAgIG1DcHVpZFZlcnNpb25JbmZvRWR4Ow0KPiANCj4gK0NQVUlEX1NUUlVDVFVS RURfRVhURU5ERURfRkVBVFVSRV9GTEFHU19FQ1ggIG1DcHVpZEV4dGVuZGVkRmVhdHVyZUZsYWdz RWN4Ow0KPiANCj4gK0NQVUlEX1ZJUl9QSFlfQUREUkVTU19TSVpFX0VBWCAgICAgICAgICAgICAg IG1DcHVpZFZpclBoeUFkZHJlc3NTaXplRWF4Ow0KPiANCj4gDQo+IA0KPiAgQk9PTEVBTiAgICAg ICBtUmFuZG9tSW5wdXQ7DQo+IA0KPiAgVUlOVE4gICAgICAgICBtTnVtYmVySW5kZXggPSAwOw0K PiANCj4gQEAgLTg3LDM0ICs4OSw0MiBAQCBHZW5lcmF0ZVJhbmRvbU51bWJlcnMgKA0KPiAgfQ0K PiANCj4gDQo+IA0KPiAgLyoqDQo+IA0KPiAtICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRpb24u DQo+IA0KPiArICBSZXRyaWV2ZXMgQ1BVSUQgaW5mb3JtYXRpb24gdXNpbmcgYW4gZXh0ZW5kZWQg bGVhZiBpZGVudGlmaWVyLg0KPiANCj4gKw0KPiANCj4gKyAgRXhlY3V0ZXMgdGhlIENQVUlEIGlu c3RydWN0aW9uIHdpdGggRUFYIHNldCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IEluZGV4DQo+ IA0KPiArICBhbmQgRUNYIHNldCB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IFN1YkluZGV4LiBU aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5zDQo+IA0KPiArICBJbmRleC4gVGhpcyBmdW5jdGlv biBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQgeDY0Lg0KPiANCj4gDQo+IA0KPiAtICBF eGVjdXRlcyB0aGUgQ1BVSUQgaW5zdHJ1Y3Rpb24gd2l0aCBFQVggc2V0IHRvIHRoZSB2YWx1ZSBz cGVjaWZpZWQgYnkgSW5kZXguDQo+IA0KPiAtICBUaGlzIGZ1bmN0aW9uIGFsd2F5cyByZXR1cm5z IEluZGV4Lg0KPiANCj4gICAgSWYgRWF4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBF QVggYWZ0ZXIgQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWF4Lg0KPiANCj4gICAgSWYgRWJ4IGlzIG5v dCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQlggYWZ0ZXIgQ1BVSUQgaXMgcmV0dXJuZWQgaW4g RWJ4Lg0KPiANCj4gICAgSWYgRWN4IGlzIG5vdCBOVUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFQ1gg YWZ0ZXIgQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWN4Lg0KPiANCj4gICAgSWYgRWR4IGlzIG5vdCBO VUxMLCB0aGVuIHRoZSB2YWx1ZSBvZiBFRFggYWZ0ZXIgQ1BVSUQgaXMgcmV0dXJuZWQgaW4gRWR4 Lg0KPiANCj4gLSAgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBvbiBJQS0zMiBhbmQg eDY0Lg0KPiANCj4gDQo+IA0KPiAtICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgdmFsdWUgdG8g bG9hZCBpbnRvIEVBWCBwcmlvciB0byBpbnZva2luZyB0aGUgQ1BVSUQNCj4gDQo+IC0gICAgICAg ICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+IA0KPiAtICBAcGFyYW0gIEVheCAgIFRoZSBwb2ludGVy IHRvIHRoZSAzMi1iaXQgRUFYIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiANCj4gLSAg ICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIg dGhhdCBtYXkgYmUgTlVMTC4NCj4gDQo+IC0gIEBwYXJhbSAgRWJ4ICAgVGhlIHBvaW50ZXIgdG8g dGhlIDMyLWJpdCBFQlggdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+IA0KPiAtICAgICAg ICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0 IG1heSBiZSBOVUxMLg0KPiANCj4gLSAgQHBhcmFtICBFY3ggICBUaGUgcG9pbnRlciB0byB0aGUg MzItYml0IEVDWCB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gDQo+IC0gICAgICAgICAg ICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQgbWF5 IGJlIE5VTEwuDQo+IA0KPiAtICBAcGFyYW0gIEVkeCAgIFRoZSBwb2ludGVyIHRvIHRoZSAzMi1i aXQgRURYIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiANCj4gLSAgICAgICAgICAgICAg ICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUg TlVMTC4NCj4gDQo+ICsgIEBwYXJhbSAgSW5kZXggICAgIFRoZSAzMi1iaXQgdmFsdWUgdG8gbG9h ZCBpbnRvIEVBWCBwcmlvciB0byBpbnZva2luZyB0aGUNCj4gDQo+ICsgICAgICAgICAgICAgICAg ICAgIENQVUlEIGluc3RydWN0aW9uLg0KPiANCj4gKyAgQHBhcmFtICBTdWJJbmRleCAgVGhlIDMy LWJpdCB2YWx1ZSB0byBsb2FkIGludG8gRUNYIHByaW9yIHRvIGludm9raW5nIHRoZQ0KPiANCj4g KyAgICAgICAgICAgICAgICAgICAgQ1BVSUQgaW5zdHJ1Y3Rpb24uDQo+IA0KPiArICBAcGFyYW0g IEVheCAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgMzItYml0IEVBWCB2YWx1ZSByZXR1cm5lZCBi eSB0aGUgQ1BVSUQNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlz IGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IG1heSBiZQ0KPiANCj4gKyAgICAgICAgICAg ICAgICAgICAgTlVMTC4NCj4gDQo+ICsgIEBwYXJhbSAgRWJ4ICAgICAgIFRoZSBwb2ludGVyIHRv IHRoZSAzMi1iaXQgRUJYIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiANCj4gKyAgICAg ICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVy IHRoYXQgbWF5IGJlDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBOVUxMLg0KPiANCj4gKyAg QHBhcmFtICBFY3ggICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIDMyLWJpdCBFQ1ggdmFsdWUgcmV0 dXJuZWQgYnkgdGhlIENQVUlEDQo+IA0KPiArICAgICAgICAgICAgICAgICAgICBpbnN0cnVjdGlv bi4gVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkgYmUNCj4gDQo+ICsgICAg ICAgICAgICAgICAgICAgIE5VTEwuDQo+IA0KPiArICBAcGFyYW0gIEVkeCAgICAgICBUaGUgcG9p bnRlciB0byB0aGUgMzItYml0IEVEWCB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gDQo+ ICsgICAgICAgICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsIHBh cmFtZXRlciB0aGF0IG1heSBiZQ0KPiANCj4gKyAgICAgICAgICAgICAgICAgICAgTlVMTC4NCj4g DQo+IA0KPiANCj4gICAgQHJldHVybiBJbmRleC4NCj4gDQo+IA0KPiANCj4gICoqLw0KPiANCj4g IFVJTlQzMg0KPiANCj4gIEVGSUFQSQ0KPiANCj4gLVVuaXRUZXN0TXRyckxpYkFzbUNwdWlkICgN Cj4gDQo+ICtVbml0VGVzdE10cnJMaWJBc21DcHVpZEV4ICgNCj4gDQo+ICAgIElOICAgICAgVUlO VDMyICBJbmRleCwNCj4gDQo+ICsgIElOICAgICAgVUlOVDMyICBTdWJJbmRleCwNCj4gDQo+ICAg IE9VVCAgICAgVUlOVDMyICAqRWF4ICAgT1BUSU9OQUwsDQo+IA0KPiAgICBPVVQgICAgIFVJTlQz MiAgKkVieCAgIE9QVElPTkFMLA0KPiANCj4gICAgT1VUICAgICBVSU5UMzIgICpFY3ggICBPUFRJ T05BTCwNCj4gDQo+IEBAIC0xMjQsNyArMTM0LDcgQEAgVW5pdFRlc3RNdHJyTGliQXNtQ3B1aWQg KA0KPiAgICBzd2l0Y2ggKEluZGV4KSB7DQo+IA0KPiAgICAgIGNhc2UgQ1BVSURfU0lHTkFUVVJF Og0KPiANCj4gICAgICAgIGlmIChFYXggIT0gTlVMTCkgew0KPiANCj4gLSAgICAgICAgKkVheCA9 IENQVUlEX1ZFUlNJT05fSU5GTzsNCj4gDQo+ICsgICAgICAgICpFYXggPSBDUFVJRF9TVFJVQ1RV UkVEX0VYVEVOREVEX0ZFQVRVUkVfRkxBR1M7DQo+IA0KPiAgICAgICAgfQ0KPiANCj4gDQo+IA0K PiAgICAgICAgcmV0dXJuIEluZGV4Ow0KPiANCj4gQEAgLTEzNCw2ICsxNDQsMTMgQEAgVW5pdFRl c3RNdHJyTGliQXNtQ3B1aWQgKA0KPiAgICAgICAgICAqRWR4ID0gbUNwdWlkVmVyc2lvbkluZm9F ZHguVWludDMyOw0KPiANCj4gICAgICAgIH0NCj4gDQo+IA0KPiANCj4gKyAgICAgIHJldHVybiBJ bmRleDsNCj4gDQo+ICsgICAgICBicmVhazsNCj4gDQo+ICsgICAgY2FzZSBDUFVJRF9TVFJVQ1RV UkVEX0VYVEVOREVEX0ZFQVRVUkVfRkxBR1M6DQo+IA0KPiArICAgICAgaWYgKEVjeCAhPSBOVUxM KSB7DQo+IA0KPiArICAgICAgICAqRWN4ID0gbUNwdWlkRXh0ZW5kZWRGZWF0dXJlRmxhZ3NFY3gu VWludDMyOw0KPiANCj4gKyAgICAgIH0NCj4gDQo+ICsNCj4gDQo+ICAgICAgICByZXR1cm4gSW5k ZXg7DQo+IA0KPiAgICAgICAgYnJlYWs7DQo+IA0KPiAgICAgIGNhc2UgQ1BVSURfRVhURU5ERURf RlVOQ1RJT046DQo+IA0KPiBAQCAtMTU5LDYgKzE3Niw0NCBAQCBVbml0VGVzdE10cnJMaWJBc21D cHVpZCAoDQo+ICAgIHJldHVybiBJbmRleDsNCj4gDQo+ICB9DQo+IA0KPiANCj4gDQo+ICsvKioN Cj4gDQo+ICsgIFJldHJpZXZlcyBDUFVJRCBpbmZvcm1hdGlvbi4NCj4gDQo+ICsNCj4gDQo+ICsg IEV4ZWN1dGVzIHRoZSBDUFVJRCBpbnN0cnVjdGlvbiB3aXRoIEVBWCBzZXQgdG8gdGhlIHZhbHVl IHNwZWNpZmllZCBieSBJbmRleC4NCj4gDQo+ICsgIFRoaXMgZnVuY3Rpb24gYWx3YXlzIHJldHVy bnMgSW5kZXguDQo+IA0KPiArICBJZiBFYXggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9m IEVBWCBhZnRlciBDUFVJRCBpcyByZXR1cm5lZCBpbiBFYXguDQo+IA0KPiArICBJZiBFYnggaXMg bm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVCWCBhZnRlciBDUFVJRCBpcyByZXR1cm5lZCBp biBFYnguDQo+IA0KPiArICBJZiBFY3ggaXMgbm90IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVD WCBhZnRlciBDUFVJRCBpcyByZXR1cm5lZCBpbiBFY3guDQo+IA0KPiArICBJZiBFZHggaXMgbm90 IE5VTEwsIHRoZW4gdGhlIHZhbHVlIG9mIEVEWCBhZnRlciBDUFVJRCBpcyByZXR1cm5lZCBpbiBF ZHguDQo+IA0KPiArICBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIG9uIElBLTMyIGFu ZCB4NjQuDQo+IA0KPiArDQo+IA0KPiArICBAcGFyYW0gIEluZGV4IFRoZSAzMi1iaXQgdmFsdWUg dG8gbG9hZCBpbnRvIEVBWCBwcmlvciB0byBpbnZva2luZyB0aGUgQ1BVSUQNCj4gDQo+ICsgICAg ICAgICAgICAgICAgaW5zdHJ1Y3Rpb24uDQo+IA0KPiArICBAcGFyYW0gIEVheCAgIFRoZSBwb2lu dGVyIHRvIHRoZSAzMi1iaXQgRUFYIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiANCj4g KyAgICAgICAgICAgICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0 ZXIgdGhhdCBtYXkgYmUgTlVMTC4NCj4gDQo+ICsgIEBwYXJhbSAgRWJ4ICAgVGhlIHBvaW50ZXIg dG8gdGhlIDMyLWJpdCBFQlggdmFsdWUgcmV0dXJuZWQgYnkgdGhlIENQVUlEDQo+IA0KPiArICAg ICAgICAgICAgICAgIGluc3RydWN0aW9uLiBUaGlzIGlzIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0 aGF0IG1heSBiZSBOVUxMLg0KPiANCj4gKyAgQHBhcmFtICBFY3ggICBUaGUgcG9pbnRlciB0byB0 aGUgMzItYml0IEVDWCB2YWx1ZSByZXR1cm5lZCBieSB0aGUgQ1BVSUQNCj4gDQo+ICsgICAgICAg ICAgICAgICAgaW5zdHJ1Y3Rpb24uIFRoaXMgaXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyIHRoYXQg bWF5IGJlIE5VTEwuDQo+IA0KPiArICBAcGFyYW0gIEVkeCAgIFRoZSBwb2ludGVyIHRvIHRoZSAz Mi1iaXQgRURYIHZhbHVlIHJldHVybmVkIGJ5IHRoZSBDUFVJRA0KPiANCj4gKyAgICAgICAgICAg ICAgICBpbnN0cnVjdGlvbi4gVGhpcyBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBtYXkg YmUgTlVMTC4NCj4gDQo+ICsNCj4gDQo+ICsgIEByZXR1cm4gSW5kZXguDQo+IA0KPiArDQo+IA0K PiArKiovDQo+IA0KPiArVUlOVDMyDQo+IA0KPiArRUZJQVBJDQo+IA0KPiArVW5pdFRlc3RNdHJy TGliQXNtQ3B1aWQgKA0KPiANCj4gKyAgSU4gICAgICBVSU5UMzIgIEluZGV4LA0KPiANCj4gKyAg T1VUICAgICBVSU5UMzIgICpFYXggICBPUFRJT05BTCwNCj4gDQo+ICsgIE9VVCAgICAgVUlOVDMy ICAqRWJ4ICAgT1BUSU9OQUwsDQo+IA0KPiArICBPVVQgICAgIFVJTlQzMiAgKkVjeCAgIE9QVElP TkFMLA0KPiANCj4gKyAgT1VUICAgICBVSU5UMzIgICpFZHggICBPUFRJT05BTA0KPiANCj4gKyAg KQ0KPiANCj4gK3sNCj4gDQo+ICsgIHJldHVybiBVbml0VGVzdE10cnJMaWJBc21DcHVpZEV4IChJ bmRleCwgMCwgRWF4LCBFYngsIEVjeCwgRWR4KTsNCj4gDQo+ICt9DQo+IA0KPiArDQo+IA0KPiAg LyoqDQo+IA0KPiAgICBSZXR1cm5zIGEgNjQtYml0IE1hY2hpbmUgU3BlY2lmaWMgUmVnaXN0ZXIo TVNSKS4NCj4gDQo+IA0KPiANCj4gQEAgLTIwNyw2ICsyNjIsMTAgQEAgVW5pdFRlc3RNdHJyTGli QXNtUmVhZE1zcjY0ICgNCj4gICAgICByZXR1cm4gbU10cnJDYXBNc3IuVWludDY0Ow0KPiANCj4g ICAgfQ0KPiANCj4gDQo+IA0KPiArICBpZiAoTXNySW5kZXggPT0gTVNSX0lBMzJfVE1FX0FDVElW QVRFKSB7DQo+IA0KPiArICAgIHJldHVybiBtVG1lQWN0aXZhdGVNc3IuVWludDY0Ow0KPiANCj4g KyAgfQ0KPiANCj4gKw0KPiANCj4gICAgLy8NCj4gDQo+ICAgIC8vIFNob3VsZCBuZXZlciBmYWxs IHRocm91Z2ggdG8gaGVyZQ0KPiANCj4gICAgLy8NCj4gDQo+IEBAIC0zMjQsMTAgKzM4MywyMiBA QCBJbml0aWFsaXplTXRyclJlZ3MgKA0KPiAgICAvLw0KPiANCj4gICAgLy8gSG9vayBCYXNlTGli IGZ1bmN0aW9ucyB1c2VkIGJ5IE10cnJMaWIgdGhhdCByZXF1aXJlIHNvbWUgZW11bGF0aW9uLg0K PiANCj4gICAgLy8NCj4gDQo+IC0gIGdVbml0VGVzdEhvc3RCYXNlTGliLlg4Ni0+QXNtQ3B1aWQg ICAgICA9IFVuaXRUZXN0TXRyckxpYkFzbUNwdWlkOw0KPiANCj4gKyAgZ1VuaXRUZXN0SG9zdEJh c2VMaWIuWDg2LT5Bc21DcHVpZCAgID0gVW5pdFRlc3RNdHJyTGliQXNtQ3B1aWQ7DQo+IA0KPiAr ICBnVW5pdFRlc3RIb3N0QmFzZUxpYi5YODYtPkFzbUNwdWlkRXggPSBVbml0VGVzdE10cnJMaWJB c21DcHVpZEV4Ow0KPiANCj4gKw0KPiANCj4gICAgZ1VuaXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5B c21SZWFkTXNyNjQgID0gVW5pdFRlc3RNdHJyTGliQXNtUmVhZE1zcjY0Ow0KPiANCj4gICAgZ1Vu aXRUZXN0SG9zdEJhc2VMaWIuWDg2LT5Bc21Xcml0ZU1zcjY0ID0gVW5pdFRlc3RNdHJyTGliQXNt V3JpdGVNc3I2NDsNCj4gDQo+IA0KPiANCj4gKyAgaWYgKFN5c3RlbVBhcmFtZXRlci0+TWtUbWVL ZXlpZEJpdHMgIT0gMCkgew0KPiANCj4gKyAgICBtQ3B1aWRFeHRlbmRlZEZlYXR1cmVGbGFnc0Vj eC5CaXRzLlRNRV9FTiA9IDE7DQo+IA0KPiArICAgIG1UbWVBY3RpdmF0ZU1zci5CaXRzLlRtZUVu YWJsZSAgICAgICAgICAgID0gMTsNCj4gDQo+ICsgICAgbVRtZUFjdGl2YXRlTXNyLkJpdHMuTWtU bWVLZXlpZEJpdHMgICAgICAgPSBTeXN0ZW1QYXJhbWV0ZXItPk1rVG1lS2V5aWRCaXRzOw0KPiAN Cj4gKyAgfSBlbHNlIHsNCj4gDQo+ICsgICAgbUNwdWlkRXh0ZW5kZWRGZWF0dXJlRmxhZ3NFY3gu Qml0cy5UTUVfRU4gPSAwOw0KPiANCj4gKyAgICBtVG1lQWN0aXZhdGVNc3IuQml0cy5UbWVFbmFi bGUgICAgICAgICAgICA9IDA7DQo+IA0KPiArICAgIG1UbWVBY3RpdmF0ZU1zci5CaXRzLk1rVG1l S2V5aWRCaXRzICAgICAgID0gMDsNCj4gDQo+ICsgIH0NCj4gDQo+ICsNCj4gDQo+ICAgIHJldHVy biBVTklUX1RFU1RfUEFTU0VEOw0KPiANCj4gIH0NCj4gDQo+IA0KPiANCj4gLS0NCj4gMi4zOS4x LndpbmRvd3MuMQ0KDQo=