From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web10.5738.1589290668234371115 for ; Tue, 12 May 2020 06:37:48 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=FexdQDXn; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: liming.gao@intel.com) IronPort-SDR: kQcLRC9ADAkjVY9r/zh9RFOLlBkk6+AUtGpZcQ8dl/1DqjsDDKVt20dnsZdryK2C1auoqNEvzg oP3vRgKMNCXQ== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 May 2020 06:37:47 -0700 IronPort-SDR: G7Svv/h8W6BN7MHG+OjtE5fi3Lm8zOzNWa1LNoiu/GPnVu96TvRAy65lxIg8ikAWJCYMF5T16V iqC5qpRRmeCQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,383,1583222400"; d="scan'208";a="286652213" Received: from orsmsx108.amr.corp.intel.com ([10.22.240.6]) by fmsmga004.fm.intel.com with ESMTP; 12 May 2020 06:37:47 -0700 Received: from orsmsx162.amr.corp.intel.com (10.22.240.85) by ORSMSX108.amr.corp.intel.com (10.22.240.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 12 May 2020 06:37:45 -0700 Received: from ORSEDG002.ED.cps.intel.com (10.7.248.5) by ORSMSX162.amr.corp.intel.com (10.22.240.85) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 12 May 2020 06:37:45 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.172) by edgegateway.intel.com (134.134.137.101) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 12 May 2020 06:37:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=A7m5I2v3HaL/1kU1mMP8vyDuOj1LKuxPDyV6oh1VNpr2jzedPVHzehpynwPRIpF/imiviSnfK2D37beG6DWjjBJuDWB5Q8QmyDUc+otbzLpeRol42GYz5gvt9tVtVGKkY7EiOa7XdjTl/QDVKR2rmPgdMcjzwg7pQ9+2LAg8nDJ47jSYBliPZkYpww4kT5KkR8754lT6xfQBjmh360LRULWobnovTGASKv1DTvNS+PjqGlm/lCkg4Eu4YZhZPxsc0k4OjrbcP8vdqV2w95L/D7Yc3ix+kP/oRT77EXscWqKGDExwwVwY1AW8vUcm0pCQP0qHigT3Q1mzfPNgy7mYoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UiknGHbLPs8I37nDSqU9mIGdnjtx42l+AD4eeZZLOJg=; b=WrEiO2LcIP+jc5yc0jqd+8lEDzACjVJsfozyzwagqB/mB8dhoWuquokvsV5jmnSEY37V7Th45QWz7MPh6naqBTDB8BNYsoqGx8Tr+fmdoDQ37aF3eNdilxzS7b9mYNSbuF3CL7DsNxmn1uDBqBcsK4grRY3LmARo4PwNcmp0L/coYjgcrtYPLNNXrkRS/SUYz4ksZVzfhRHjB4WzGXN9Vdscr8ahEHuVFq7j188Kxb3tqO0yWE5Dl1nGOZhl8zVaAc0rEvY1acEKOJ+UIk4JX6gl2JOp70vLB2zR46EMJnaHc9IHs/vhCEpvK1vCQjamHYV0RILg4mNiUlfL7JxOvg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UiknGHbLPs8I37nDSqU9mIGdnjtx42l+AD4eeZZLOJg=; b=FexdQDXnfE2q8yoE7VdTWnREEQLdcBLSDeDUBsL5SjieTsc+CcuD5XQeoKSGJj9KZlAIdLF+FKsw7WYpK+cISULLbUmprDmSdvTtBt02CV1QW5T1XNr03PIJzyOzUhjITPn8yL4I0L5gyUrR8fej1ydnuNOi9ZSQAqIKRvMTiRA= Received: from BN6PR11MB3972.namprd11.prod.outlook.com (2603:10b6:405:7f::11) by BN6PR11MB4035.namprd11.prod.outlook.com (2603:10b6:405:7a::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2979.29; Tue, 12 May 2020 13:37:41 +0000 Received: from BN6PR11MB3972.namprd11.prod.outlook.com ([fe80::3c03:da06:5345:bfa0]) by BN6PR11MB3972.namprd11.prod.outlook.com ([fe80::3c03:da06:5345:bfa0%7]) with mapi id 15.20.2979.033; Tue, 12 May 2020 13:37:41 +0000 From: "Liming Gao" To: Laszlo Ersek , "devel@edk2.groups.io" , "michael.kubacki@outlook.com" CC: "Wang, Jian J" , "Wu, Hao A" Subject: Re: [edk2-devel] [PATCH v2 04/12] MdeModulePkg: Define the VarCheckPolicyLib and SMM interface Thread-Topic: [edk2-devel] [PATCH v2 04/12] MdeModulePkg: Define the VarCheckPolicyLib and SMM interface Thread-Index: AQHWKClB7KrxLQCCa02n1SBicS9F06ikYNUAgAATdeA= Date: Tue, 12 May 2020 13:37:41 +0000 Message-ID: References: <20200512064635.14640-1-michael.kubacki@outlook.com> <8ff3a619-8c0a-e7e3-9755-fed6adf34675@redhat.com> In-Reply-To: <8ff3a619-8c0a-e7e3-9755-fed6adf34675@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.2.0.6 dlp-product: dlpe-windows dlp-reaction: no-action authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.55.52.200] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0de44ec5-7793-478b-e33d-08d7f679a517 x-ms-traffictypediagnostic: BN6PR11MB4035: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 0401647B7F x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: NVy/wL3C+dhzpL49YjfaPdPzhlnq+4vH/fnmOl4arxvfZEfsQaENqwpCRtMyDpUUIZshxF2hJDAVxdMUnlQ+s/L++bBG3WAsi6yveMdRjtzGlofuYtc7SR01ADfFT8HQOrk8WHkm0Q6Q+odXZ9vLowNhck/6RF+4YXPl+5GpNwYPah524U+3DRzLvdaUAEHZDkzikIE4d1dZ1z6o1+LPXjSB+aO7A29GrFeEKOjgNSPx4kaE0wVnjgIjaUreVnS3RuSFeXCQ6w6sbtjFTXBBQRgyBCDexfmhjIFc+oqrBva4+773bja01esda9uGUcK2uJByXt+At3sy6O4s6WkHEqSbOJuw1U99mVhoTSeTpt4isynR9/MHQn+D5kmXvfXocSTF+bcFtdraIR9HVmHYgCQMg+jsSRPQ0CNuiMESMhzVLOkCDIjSSzkbigo0QCWtkwhcdQC+QmVvot+gfmuT7k1HjKwrz6/ype/zYTuQ0bmWsDftS3PVlJ0fjWAZ3Gs/6pZhVLIm8gDyAVe1XHuJuBu3tGLj7pY+HBkkdCMNkMs/qRCjQGg4MWovq7WhBnQAklmnFYRguSBywQDBU8WY9EOR4C+FWlpZrT9tmcYXS1s= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR11MB3972.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(366004)(346002)(39860400002)(136003)(396003)(376002)(33430700001)(6506007)(55016002)(186003)(966005)(4326008)(26005)(33440700001)(9686003)(107886003)(45080400002)(478600001)(7696005)(53546011)(8676002)(5660300002)(52536014)(2906002)(30864003)(316002)(110136005)(76116006)(66476007)(66556008)(54906003)(86362001)(8936002)(64756008)(66946007)(66446008)(71200400001)(19627235002)(33656002)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: zWmAl5Wd4OtejFwPn5eWQXQhTxyso+h21qTH/bL2fSQ3IHETr+5y22tOAYpR1UCNVQVred6ovE36nxpTUAD9bwDFj8JrxrSMsE+dfnWrZBKq0eH4/R+rTjkvaweTtyLZdvklRa4t4aVmIMMqIyKPqZgZa2reT24FRsHMW6Ucd+zcSztmY8gjrNKGOrkP7FHAujsVonTVdVjcUAU3kYOwVxziPNK/rCI+WaI/IKWlNE2Msusu9z4njNWqtm6lN/jpA0TqUGqkngoO5gtS9CvQi4jkLav/bMIloMUCq10XHZb/N71jowjhgJ9X3gL8bWjs1hnt7iY1XaLmVV8RxP0/Txi8V9XGLr6BGqumAz7//sldMnRa/JdWRSS+siIJRoA2fnh2F8orCE2B7y08BfdNU5odWjtEKB6fIPE0SQiOzI8glhLfP2TQn4E6y1LrKkzFC2Fw13AhvbWTWgzW1B5EH6rnuOTIWH8n+clanp1Z559oH9G2lsbRC9L0TCJA2+b8 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 0de44ec5-7793-478b-e33d-08d7f679a517 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 May 2020 13:37:41.6047 (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: XBVEZxL8jbECzkLqYmpQtcgn/82nBeHtTOWfVljxwlK3eNCBjwfqEWnAHiXjFzNQME81tFfUsd5S4o5lb4RnvQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB4035 Return-Path: liming.gao@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTGFzemxvIEVyc2VrIDxs ZXJzZWtAcmVkaGF0LmNvbT4NCj4gU2VudDogVHVlc2RheSwgTWF5IDEyLCAyMDIwIDg6MjcgUE0N Cj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBtaWNoYWVsLmt1YmFja2lAb3V0bG9vay5jb20N Cj4gQ2M6IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29tPjsgV3UsIEhhbyBBIDxo YW8uYS53dUBpbnRlbC5jb20+OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ IFN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyIDA0LzEyXSBNZGVNb2R1bGVQa2c6 IERlZmluZSB0aGUgVmFyQ2hlY2tQb2xpY3lMaWIgYW5kIFNNTSBpbnRlcmZhY2UNCj4gDQo+IHZl cnkgc3VwZXJmaWNpYWwgY29tbWVudHM6DQo+IA0KPiBPbiAwNS8xMi8yMCAwODo0NiwgTWljaGFl bCBLdWJhY2tpIHdyb3RlOg0KPiA+IEZyb206IEJyZXQgQmFya2VsZXcgPGJyYmFya2VsQG1pY3Jv c29mdC5jb20+DQo+ID4NCj4gPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19i dWcuY2dpP2lkPTI1MjINCj4gPg0KPiA+IFZhcmlhYmxlUG9saWN5IGlzIGFuIHVwZGF0ZWQgaW50 ZXJmYWNlIHRvDQo+ID4gcmVwbGFjZSBWYXJMb2NrIGFuZCBWYXJDaGVja1Byb3RvY29sLg0KPiA+ DQo+ID4gVGhpcyBpcyBhbiBpbnN0YW5jZSBvZiBhIFZhckNoZWNrTGliIHRoYXQgaXMgYmFja2Vk IGJ5IHRoZQ0KPiA+IFZhcmlhYmxlUG9saWN5TGliIGJ1c2luZXNzIGxvZ2ljLiBJdCBhbHNvIHB1 Ymxpc2hlcyB0aGUgU01NDQo+ID4gY2FsbGluZyBpbnRlcmZhY2UgZm9yIG1lc3NhZ2VzIGZyb20g dGhlIERYRSBwcm90b2NvbC4NCj4gPg0KPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5qLndhbmdA aW50ZWwuY29tPg0KPiA+IENjOiBIYW8gQSBXdSA8aGFvLmEud3VAaW50ZWwuY29tPg0KPiA+IENj OiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBN aWNoYWVsIEt1YmFja2kgPG1pY2hhZWwua3ViYWNraUBtaWNyb3NvZnQuY29tPg0KPiA+IC0tLQ0K PiA+ICBNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJDaGVja1BvbGljeUxpYi9WYXJDaGVja1BvbGlj eUxpYi5jICAgfCAzMTggKysrKysrKysrKysrKysrKysrKysNCj4gPiAgTWRlTW9kdWxlUGtnL0lu Y2x1ZGUvR3VpZC9WYXJDaGVja1BvbGljeU1taS5oICAgICAgICAgICAgICAgIHwgIDU0ICsrKysN Cj4gPiAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQb2xpY3lMaWIvVmFyQ2hlY2tQb2xp Y3lMaWIuaW5mIHwgIDQ0ICsrKw0KPiA+ICBNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJDaGVja1Bv bGljeUxpYi9WYXJDaGVja1BvbGljeUxpYi51bmkgfCAgMTIgKw0KPiA+ICBNZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKw0K PiA+ICBNZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRzYyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKw0KPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDQzNCBpbnNlcnRpb25zKCsp DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQb2xp Y3lMaWIvVmFyQ2hlY2tQb2xpY3lMaWIuYw0KPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1ZhckNo ZWNrUG9saWN5TGliL1ZhckNoZWNrUG9saWN5TGliLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uZDU3NzVkN2RkMDY4DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1ZhckNoZWNrUG9saWN5TGliL1ZhckNo ZWNrUG9saWN5TGliLmMNCj4gPiBAQCAtMCwwICsxLDMxOCBAQA0KPiA+ICsvKiogQGZpbGUgLS0g VmFyQ2hlY2tQb2xpY3lMaWIuYw0KPiA+ICtUaGlzIGlzIGFuIGluc3RhbmNlIG9mIGEgVmFyQ2hl Y2sgbGliIHRoYXQgbGV2ZXJhZ2VzIHRoZSBidXNpbmVzcyBsb2dpYyBiZWhpbmQNCj4gPiArdGhl IFZhcmlhYmxlUG9saWN5IGNvZGUgdG8gbWFrZSBpdHMgZGVjaXNpb25zLg0KPiA+ICsNCj4gPiAr Q29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4gK1NQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ZhckNoZWNrTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJy YXJ5L0Jhc2VMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPiAr I2luY2x1ZGUgPExpYnJhcnkvU2FmZUludExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9N bVNlcnZpY2VzVGFibGVMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxp Yi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+DQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8UHJvdG9jb2wvTW1Db21tdW5pY2F0aW9uLmg+DQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8UHJvdG9jb2wvVmFyaWFibGVQb2xpY3kuaD4NCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvVmFyaWFibGVQb2xpY3lMaWIuaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxHdWlkL1Zh ckNoZWNrUG9saWN5TW1pLmg+DQo+ID4gKw0KPiA+ICsvLz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiA+ICsvLyBBcyBhIFZhckNoZWNrIGxpYnJhcnks IHdlJ3JlIGxpbmtlZCBpbnRvIHRoZSBWYXJpYWJsZVNlcnZpY2VzDQo+ID4gKy8vIGFuZCBtYXkg bm90IGJlIGFibGUgdG8gY2FsbCB0aGVtIGluZGlyZWN0bHkuIFRvIGdldCBhcm91bmQgdGhpcywN Cj4gPiArLy8gdXNlIHRoZSBpbnRlcm5hbCBHZXRWYXJpYWJsZSBmdW5jdGlvbiB0byBxdWVyeSB0 aGUgdmFyaWFibGUgc3RvcmUuDQo+ID4gKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQo+ID4gK0VGSV9TVEFUVVMNCj4gPiArRUZJQVBJDQo+ID4gK1Zh cmlhYmxlU2VydmljZUdldFZhcmlhYmxlICgNCj4gPiArICBJTiAgICAgIENIQVIxNiAgICAgICAg ICAgICpWYXJpYWJsZU5hbWUsDQo+ID4gKyAgSU4gICAgICBFRklfR1VJRCAgICAgICAgICAqVmVu ZG9yR3VpZCwNCj4gPiArICBPVVQgICAgIFVJTlQzMiAgICAgICAgICAgICpBdHRyaWJ1dGVzIE9Q VElPTkFMLA0KPiA+ICsgIElOIE9VVCAgVUlOVE4gICAgICAgICAgICAgKkRhdGFTaXplLA0KPiA+ ICsgIE9VVCAgICAgVk9JRCAgICAgICAgICAgICAgKkRhdGENCj4gPiArICApOw0KPiA+ICsNCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgIE1NIENvbW11bmljYXRpb24gSGFuZGxlciB0byByZWNpZXZl IGNvbW1hbmRzIGZyb20gdGhlIERYRSBwcm90b2NvbCBmb3INCj4gPiArICBWYXJpYWJsZSBQb2xp Y2llcy4gVGhpcyBjb21tdW5pY2F0aW9uIGNoYW5uZWwgaXMgdXNlZCB0byByZWdpc3RlciBuZXcg cG9saWNpZXMNCj4gPiArICBhbmQgcG9sbCBhbmQgdG9nZ2xlIHRoZSBlbmZvcmNlbWVudCBvZiB2 YXJpYWJsZSBwb2xpY2llcy4NCj4gPiArDQo+ID4gKyAgQHBhcmFtW2luXSAgICAgIERpc3BhdGNo SGFuZGxlICAgICAgQWxsIHBhcmFtZXRlcnMgc3RhbmRhcmQgdG8gTU0gY29tbXVuaWNhdGlvbnMg Y29udmVudGlvbi4NCj4gPiArICBAcGFyYW1baW5dICAgICAgUmVnaXN0ZXJDb250ZXggICAgICBB bGwgcGFyYW1ldGVycyBzdGFuZGFyZCB0byBNTSBjb21tdW5pY2F0aW9ucyBjb252ZW50aW9uLg0K PiA+ICsgIEBwYXJhbVtpbixvdXRdICBDb21tQnVmZmVyICAgICAgICAgIEFsbCBwYXJhbWV0ZXJz IHN0YW5kYXJkIHRvIE1NIGNvbW11bmljYXRpb25zIGNvbnZlbnRpb24uDQo+ID4gKyAgQHBhcmFt W2luLG91dF0gIENvbW1CdWZmZXJTaXplICAgICAgQWxsIHBhcmFtZXRlcnMgc3RhbmRhcmQgdG8g TU0gY29tbXVuaWNhdGlvbnMgY29udmVudGlvbi4NCj4gPiArDQo+ID4gKyAgQHJldHZhbCAgICAg RUZJX1NVQ0NFU1MNCj4gPiArICBAcmV0dmFsICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBD b21tQnVmZmVyIG9yIENvbW1CdWZmZXJTaXplIGlzIG51bGwgcG9pbnRlci4NCj4gPiArICBAcmV0 dmFsICAgICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBDb21tQnVmZmVyIHNpemUgaXMgd3Jvbmcu DQo+ID4gKyAgQHJldHZhbCAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgUmV2aXNpb24gb3Ig c2lnbmF0dXJlIGRvbid0IG1hdGNoLg0KPiA+ICsNCj4gPiArKiovDQo+ID4gK1NUQVRJQw0KPiA+ ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYXJDaGVja1BvbGljeUxpYk1taUhhbmRs ZXIgKA0KPiA+ICsgIElOICAgICBFRklfSEFORExFICAgICAgICAgICAgICAgICAgIERpc3BhdGNo SGFuZGxlLA0KPiA+ICsgIElOICAgICBDT05TVCBWT0lEICAgICAgICAgICAgICAgICAgICpSZWdp c3RlckNvbnRleHQsDQo+ID4gKyAgSU4gT1VUIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAg KkNvbW1CdWZmZXIsDQo+ID4gKyAgSU4gT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAg KkNvbW1CdWZmZXJTaXplDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4gKyAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ViQ29tbWFuZFN0YXR1 czsNCj4gPiArICBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1fSEVBREVSICAgICAgICAgICAgICAqUG9s aWN5Q29tbW1IZWFkZXI7DQo+ID4gKyAgVkFSX0NIRUNLX1BPTElDWV9DT01NX0lTX0VOQUJMRURf UEFSQU1TICAgKklzRW5hYmxlZFBhcmFtczsNCj4gPiArICBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1f RFVNUF9QQVJBTVMgICAgICAgICAqRHVtcFBhcmFtczsNCj4gPiArICBVSU5UOCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAqRHVtcElucHV0QnVmZmVyOw0KPiA+ICsgIFVJTlQ4 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpEdW1wT3V0cHV0QnVmZmVyOw0K PiA+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER1bXBUb3Rh bFBhZ2VzOw0KPiA+ICsgIFZBUklBQkxFX1BPTElDWV9FTlRSWSAgICAgICAgICAgICAgICAgICAg ICpQb2xpY3lFbnRyeTsNCj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBFeHBlY3RlZFNpemU7DQo+ID4gKyAgLy8gUGFnaW5hdGlvbiBDYWNoZSBWYXJpYWJs ZXMNCj4gDQo+ICgxKSBUaGlzIGNvbW1lbnQgc3R5bGUgaXMgbm90IGlkaW9tYXRpYyBpbiBlZGsy LiBJIHRoaW5rIHdlIHVzZSBlbXB0eQ0KPiAiLy8iIGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIuDQo+ IA0KPiA+ICsgIHN0YXRpYyBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpQYWdp bmF0aW9uQ2FjaGUgPSBOVUxMOw0KPiA+ICsgIHN0YXRpYyBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFBhZ2luYXRpb25DYWNoZVNpemUgPSAwOw0KPiA+ICsgIHN0YXRpYyBVSU5U MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1cnJlbnRQYWdpbmF0aW9uQ29tbWFuZCA9 IDA7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVmFsaWRhdGUgc29tZSBpbnB1dCBwYXJh bWV0ZXJzLg0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gSWYgZWl0aGVyIG9mIHRoZSBwb2ludGVycyBh cmUgTlVMTCwgd2UgY2FuJ3QgcHJvY2VlZC4NCj4gPiArICBpZiAoQ29tbUJ1ZmZlciA9PSBOVUxM IHx8IENvbW1CdWZmZXJTaXplID09IE5VTEwpIHsNCj4gPiArICAgIERFQlVHKCggREVCVUdfSU5G TywgIiVhIC0gSW52YWxpZCBjb21tIGJ1ZmZlciBwb2ludGVycyFcbiIsIF9fRlVOQ1RJT05fXyAp KTsNCj4gDQo+ICgyKSBOb24taWRpb21hdGljIHBhcmVudGhlc2lzIHN0eWxlLg0KPiANCj4gPiAr ICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIElm IHRoZSBzaXplIGRvZXMgbm90IG1lZXQgYSBtaW5pbXVtIHRocmVzaG9sZCwgd2UgY2Fubm90IHBy b2NlZWQuDQo+ID4gKyAgRXhwZWN0ZWRTaXplID0gc2l6ZW9mKFZBUl9DSEVDS19QT0xJQ1lfQ09N TV9IRUFERVIpOw0KPiA+ICsgIGlmICgqQ29tbUJ1ZmZlclNpemUgPCBFeHBlY3RlZFNpemUpIHsN Cj4gPiArICAgIERFQlVHKCggREVCVUdfSU5GTywgIiVhIC0gQmFkIGNvbW0gYnVmZmVyIHNpemUh ICVkIDwgJWRcbiIsIF9fRlVOQ1RJT05fXywgKkNvbW1CdWZmZXJTaXplLCBFeHBlY3RlZFNpemUg KSk7DQo+ID4gKyAgICByZXR1cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgIH0NCj4g PiArICAvLyBDaGVjayB0aGUgcmV2aXNpb24gYW5kIHRoZSBzaWduYXR1cmUgb2YgdGhlIGNvbW0g aGVhZGVyLg0KPiA+ICsgIFBvbGljeUNvbW1tSGVhZGVyID0gQ29tbUJ1ZmZlcjsNCj4gPiArICBp ZiAoUG9saWN5Q29tbW1IZWFkZXItPlNpZ25hdHVyZSAhPSBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1f U0lHIHx8DQo+ID4gKyAgICAgIFBvbGljeUNvbW1tSGVhZGVyLT5SZXZpc2lvbiAhPSBWQVJfQ0hF Q0tfUE9MSUNZX0NPTU1fUkVWSVNJT04pIHsNCj4gPiArICAgIERFQlVHKCggREVCVUdfSU5GTywg IiVhIC0gU2lnbmF0dXJlIG9yIHJldmlzaW9uIGFyZSBpbmNvcnJlY3QhXG4iLCBfX0ZVTkNUSU9O X18gKSk7DQo+ID4gKyAgICAvLyBXZSBoYXZlIHZlcmlmaWVkIHRoZSBidWZmZXIgaXMgbm90IG51 bGwgYW5kIGhhdmUgZW5vdWdoIHNpemUgdG8gaG9sZCBSZXN1bHQgZmllbGQuDQo+ID4gKyAgICBQ b2xpY3lDb21tbUhlYWRlci0+UmVzdWx0ID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsg ICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gSWYgd2Un cmUgaW4gdGhlIG1pZGRsZSBvZiBhIHBhZ2luYXRlZCBkdW1wIGFuZCBhbnkgb3RoZXIgY29tbWFu ZCBpcyBzZW50LA0KPiA+ICsgIC8vIHBhZ2luYXRpb24gY2FjaGUgbXVzdCBiZSBjbGVhcmVkLg0K PiA+ICsgIGlmIChQYWdpbmF0aW9uQ2FjaGUgIT0gTlVMTCAmJiBQb2xpY3lDb21tbUhlYWRlci0+ Q29tbWFuZCAhPSBDdXJyZW50UGFnaW5hdGlvbkNvbW1hbmQpIHsNCj4gPiArICAgIEZyZWVQb29s IChQYWdpbmF0aW9uQ2FjaGUpOw0KPiA+ICsgICAgUGFnaW5hdGlvbkNhY2hlID0gTlVMTDsNCj4g PiArICAgIFBhZ2luYXRpb25DYWNoZVNpemUgPSAwOw0KPiA+ICsgICAgQ3VycmVudFBhZ2luYXRp b25Db21tYW5kID0gMDsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTm93 IHdlIGNhbiBwcm9jZXNzIHRoZSBjb21tYW5kIGFzIGl0IHdhcyBzZW50Lg0KPiA+ICsgIC8vDQo+ ID4gKyAgUG9saWN5Q29tbW1IZWFkZXItPlJlc3VsdCA9IEVGSV9BQk9SVEVEOyAgICAvLyBTZXQg YSBkZWZhdWx0IHJldHVybiBmb3IgaW5jb21wbGV0ZSBjb21tYW5kcy4NCj4gPiArICBzd2l0Y2go UG9saWN5Q29tbW1IZWFkZXItPkNvbW1hbmQpIHsNCj4gPiArICAgIGNhc2UgVkFSX0NIRUNLX1BP TElDWV9DT01NQU5EX0RJU0FCTEU6DQo+ID4gKyAgICAgIFBvbGljeUNvbW1tSGVhZGVyLT5SZXN1 bHQgPSBEaXNhYmxlVmFyaWFibGVQb2xpY3koKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKw0K PiA+ICsgICAgY2FzZSBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1BTkRfSVNfRU5BQkxFRDoNCj4gPiAr ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgcmVhc29uYWJsZSBz aXplLg0KPiA+ICsgICAgICAvLyBUaGlzIGFkZCBzaG91bGQgYmUgc2FmZSBiZWNhdXNlIHRoZXNl IGFyZSBmaXhlZCBzaXplcyBzbyBmYXIuDQo+ID4gKyAgICAgIEV4cGVjdGVkU2l6ZSArPSBzaXpl b2YoVkFSX0NIRUNLX1BPTElDWV9DT01NX0lTX0VOQUJMRURfUEFSQU1TKTsNCj4gPiArICAgICAg aWYgKCpDb21tQnVmZmVyU2l6ZSA8IEV4cGVjdGVkU2l6ZSkgew0KPiA+ICsgICAgICAgIERFQlVH KCggREVCVUdfSU5GTywgIiVhIC0gQmFkIGNvbW0gYnVmZmVyIHNpemUhICVkIDwgJWRcbiIsIF9f RlVOQ1RJT05fXywgKkNvbW1CdWZmZXJTaXplLCBFeHBlY3RlZFNpemUgKSk7DQo+ID4gKyAgICAg ICAgUG9saWN5Q29tbW1IZWFkZXItPlJlc3VsdCA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4g PiArICAgICAgICBicmVhazsNCj4gPiArICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgLy8gTm93 IHRoYXQgd2Uga25vdyB3ZSd2ZSBnb3QgYSB2YWxpZCBzaXplLCB3ZSBjYW4gZmlsbCBpbiB0aGUg cmVzdCBvZiB0aGUgZGF0YS4NCj4gPiArICAgICAgSXNFbmFibGVkUGFyYW1zID0gKFZBUl9DSEVD S19QT0xJQ1lfQ09NTV9JU19FTkFCTEVEX1BBUkFNUyopKChVSU5UOCopQ29tbUJ1ZmZlciArDQo+ IHNpemVvZihWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1fSEVBREVSKSk7DQo+ID4gKyAgICAgIElzRW5h YmxlZFBhcmFtcy0+U3RhdGUgPSBJc1ZhcmlhYmxlUG9saWN5RW5hYmxlZCgpOw0KPiA+ICsgICAg ICBQb2xpY3lDb21tbUhlYWRlci0+UmVzdWx0ID0gRUZJX1NVQ0NFU1M7DQo+ID4gKyAgICAgIGJy ZWFrOw0KPiA+ICsNCj4gPiArICAgIGNhc2UgVkFSX0NIRUNLX1BPTElDWV9DT01NQU5EX1JFR0lT VEVSOg0KPiA+ICsgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYSBy ZWFzb25hYmxlIHNpemUuDQo+ID4gKyAgICAgIC8vIFRoaXMgYWRkIHNob3VsZCBiZSBzYWZlIGJl Y2F1c2UgdGhlc2UgYXJlIGZpeGVkIHNpemVzIHNvIGZhci4NCj4gPiArICAgICAgRXhwZWN0ZWRT aXplICs9IHNpemVvZihWQVJJQUJMRV9QT0xJQ1lfRU5UUlkpOw0KPiA+ICsgICAgICBpZiAoKkNv bW1CdWZmZXJTaXplIDwgRXhwZWN0ZWRTaXplKSB7DQo+ID4gKyAgICAgICAgREVCVUcoKCBERUJV R19JTkZPLCAiJWEgLSBCYWQgY29tbSBidWZmZXIgc2l6ZSEgJWQgPCAlZFxuIiwgX19GVU5DVElP Tl9fLCAqQ29tbUJ1ZmZlclNpemUsIEV4cGVjdGVkU2l6ZSApKTsNCj4gPiArICAgICAgICBQb2xp Y3lDb21tbUhlYWRlci0+UmVzdWx0ID0gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+ICsgICAg ICAgIGJyZWFrOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAvLyBBdCB0aGUgdmVy eSBsZWFzdCwgd2UgY2FuIGFzc3VtZSB0aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBhIHZhbGlkIHBv bGljeSBlbnRyeS4NCj4gPiArICAgICAgLy8gVGltZSB0byBjb21wYXJlIGl0cyBpbnRlcm5hbCBz aXplLg0KPiA+ICsgICAgICBQb2xpY3lFbnRyeSA9IChWQVJJQUJMRV9QT0xJQ1lfRU5UUlkqKSgo VUlOVDgqKUNvbW1CdWZmZXIgKyBzaXplb2YoVkFSX0NIRUNLX1BPTElDWV9DT01NX0hFQURFUikp Ow0KPiA+ICsgICAgICBpZiAoUG9saWN5RW50cnktPlZlcnNpb24gIT0gVkFSSUFCTEVfUE9MSUNZ X0VOVFJZX1JFVklTSU9OIHx8DQo+ID4gKyAgICAgICAgICBQb2xpY3lFbnRyeS0+U2l6ZSA8IHNp emVvZihWQVJJQUJMRV9QT0xJQ1lfRU5UUlkpIHx8DQo+ID4gKyAgICAgICAgICBFRklfRVJST1Io U2FmZVVpbnRuQWRkKHNpemVvZihWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1fSEVBREVSKSwgUG9saWN5 RW50cnktPlNpemUsICZFeHBlY3RlZFNpemUpKSB8fA0KPiA+ICsgICAgICAgICAgKkNvbW1CdWZm ZXJTaXplIDwgRXhwZWN0ZWRTaXplKSB7DQo+ID4gKyAgICAgICAgREVCVUcoKCBERUJVR19JTkZP LCAiJWEgLSBCYWQgcG9saWN5IGVudHJ5IGNvbnRlbnRzIVxuIiwgX19GVU5DVElPTl9fICkpOw0K PiA+ICsgICAgICAgIFBvbGljeUNvbW1tSGVhZGVyLT5SZXN1bHQgPSBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgIFBvbGljeUNvbW1tSGVhZGVyLT5SZXN1bHQgPSBSZWdpc3RlclZhcmlhYmxlUG9saWN5KCBQ b2xpY3lFbnRyeSApOw0KPiA+ICsgICAgICBicmVhazsNCj4gPiArDQo+ID4gKyAgICBjYXNlIFZB Ul9DSEVDS19QT0xJQ1lfQ09NTUFORF9EVU1QOg0KPiA+ICsgICAgICAvLyBNYWtlIHN1cmUgdGhh dCB3ZSdyZSBkZWFsaW5nIHdpdGggYSByZWFzb25hYmxlIHNpemUuDQo+ID4gKyAgICAgIC8vIFRo aXMgYWRkIHNob3VsZCBiZSBzYWZlIGJlY2F1c2UgdGhlc2UgYXJlIGZpeGVkIHNpemVzIHNvIGZh ci4NCj4gPiArICAgICAgRXhwZWN0ZWRTaXplICs9IHNpemVvZihWQVJfQ0hFQ0tfUE9MSUNZX0NP TU1fRFVNUF9QQVJBTVMpICsgVkFSX0NIRUNLX1BPTElDWV9NTV9EVU1QX0JVRkZFUl9TSVpFOw0K PiA+ICsgICAgICBpZiAoKkNvbW1CdWZmZXJTaXplIDwgRXhwZWN0ZWRTaXplKSB7DQo+ID4gKyAg ICAgICAgREVCVUcoKCBERUJVR19JTkZPLCAiJWEgLSBCYWQgY29tbSBidWZmZXIgc2l6ZSEgJWQg PCAlZFxuIiwgX19GVU5DVElPTl9fLCAqQ29tbUJ1ZmZlclNpemUsIEV4cGVjdGVkU2l6ZSApKTsN Cj4gPiArICAgICAgICBQb2xpY3lDb21tbUhlYWRlci0+UmVzdWx0ID0gRUZJX0lOVkFMSURfUEFS QU1FVEVSOw0KPiA+ICsgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHdlJ3ZlIGdvdCBhIHZhbGlkIHNpemUsIHdlIGNhbiBm aWxsIGluIHRoZSByZXN0IG9mIHRoZSBkYXRhLg0KPiA+ICsgICAgICBEdW1wUGFyYW1zID0gKFZB Ul9DSEVDS19QT0xJQ1lfQ09NTV9EVU1QX1BBUkFNUyopKFBvbGljeUNvbW1tSGVhZGVyICsgMSk7 DQo+ID4gKw0KPiA+ICsgICAgICAvLyBJZiB3ZSdyZSByZXF1ZXN0aW5nIHRoZSBmaXJzdCBwYWdl LCBpbml0aWFsaXplIHRoZSBjYWNoZSBhbmQgZ2V0IHRoZSBzaXplcy4NCj4gPiArICAgICAgaWYg KER1bXBQYXJhbXMtPlBhZ2VSZXF1ZXN0ZWQgPT0gMCkgew0KPiA+ICsgICAgICAgIGlmIChQYWdp bmF0aW9uQ2FjaGUgIT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgRnJlZVBvb2wgKFBhZ2luYXRp b25DYWNoZSk7DQo+ID4gKyAgICAgICAgICBQYWdpbmF0aW9uQ2FjaGUgPSBOVUxMOw0KPiA+ICsg ICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIHJlcXVp cmVkIHNpemUgaXMgZ29pbmcgdG8gYmUuDQo+ID4gKyAgICAgICAgRHVtcFBhcmFtcy0+VG90YWxT aXplID0gMDsNCj4gPiArICAgICAgICBEdW1wUGFyYW1zLT5QYWdlU2l6ZSA9IDA7DQo+ID4gKyAg ICAgICAgRHVtcFBhcmFtcy0+SGFzTW9yZSA9IEZBTFNFOw0KPiA+ICsgICAgICAgIFN1YkNvbW1h bmRTdGF0dXMgPSBEdW1wVmFyaWFibGVQb2xpY3kgKE5VTEwsICZEdW1wUGFyYW1zLT5Ub3RhbFNp emUpOw0KPiA+ICsgICAgICAgIGlmIChTdWJDb21tYW5kU3RhdHVzID09IEVGSV9CVUZGRVJfVE9P X1NNQUxMICYmIER1bXBQYXJhbXMtPlRvdGFsU2l6ZSA+IDApIHsNCj4gPiArICAgICAgICAgIEN1 cnJlbnRQYWdpbmF0aW9uQ29tbWFuZCA9IFZBUl9DSEVDS19QT0xJQ1lfQ09NTUFORF9EVU1QOw0K PiA+ICsgICAgICAgICAgUGFnaW5hdGlvbkNhY2hlU2l6ZSA9IER1bXBQYXJhbXMtPlRvdGFsU2l6 ZTsNCj4gPiArICAgICAgICAgIFBhZ2luYXRpb25DYWNoZSA9IEFsbG9jYXRlUG9vbCAoUGFnaW5h dGlvbkNhY2hlU2l6ZSk7DQo+ID4gKyAgICAgICAgICBpZiAoUGFnaW5hdGlvbkNhY2hlID09IE5V TEwpIHsNCj4gPiArICAgICAgICAgICAgU3ViQ29tbWFuZFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVT T1VSQ0VTOw0KPiA+ICsgICAgICAgICAgfQ0KPiA+ICsgICAgICAgIH0NCj4gPiArDQo+ID4gKyAg ICAgICAgLy8gSWYgd2UndmUgYWxsb2NhdGVkIG91ciBwYWdpbmF0aW9uIGNhY2hlLCB3ZSdyZSBn b29kIHRvIGNhY2hlLg0KPiA+ICsgICAgICAgIGlmIChQYWdpbmF0aW9uQ2FjaGUgIT0gTlVMTCkg ew0KPiA+ICsgICAgICAgICAgU3ViQ29tbWFuZFN0YXR1cyA9IER1bXBWYXJpYWJsZVBvbGljeSAo UGFnaW5hdGlvbkNhY2hlLCAmRHVtcFBhcmFtcy0+VG90YWxTaXplKTsNCj4gPiArICAgICAgICB9 DQo+ID4gKw0KPiA+ICsgICAgICAgIC8vIFBvcHVsYXRlIHRoZSByZW1haW5pbmcgZmllbGRzIGFu ZCB3ZSBjYW4gYm9vZ2llLg0KPiA+ICsgICAgICAgIGlmICghRUZJX0VSUk9SIChTdWJDb21tYW5k U3RhdHVzKSAmJiBQYWdpbmF0aW9uQ2FjaGUgIT0gTlVMTCkgew0KPiA+ICsgICAgICAgICAgRHVt cFBhcmFtcy0+SGFzTW9yZSA9IFRSVUU7DQo+ID4gKyAgICAgICAgfQ0KPiA+ICsgICAgICB9DQo+ ID4gKyAgICAgIGVsc2UgaWYgKFBhZ2luYXRpb25DYWNoZSAhPSBOVUxMKSB7DQo+IA0KPiAoMykg VGhlIGVkazIgY29kaW5nIHN0eWxlIGRvZXNuJ3QgYnJlYWsgImVsc2UicyB0byBuZXcgbGluZXMu DQo+IA0KPiA+ICsgICAgICAgIER1bXBQYXJhbXMtPlRvdGFsU2l6ZSA9IChVSU5UMzIpUGFnaW5h dGlvbkNhY2hlU2l6ZTsNCj4gPiArICAgICAgICBEdW1wUGFyYW1zLT5QYWdlU2l6ZSA9IFZBUl9D SEVDS19QT0xJQ1lfTU1fRFVNUF9CVUZGRVJfU0laRTsNCj4gPiArICAgICAgICBEdW1wT3V0cHV0 QnVmZmVyID0gKFVJTlQ4KikoRHVtcFBhcmFtcyArIDEpOw0KPiA+ICsNCj4gPiArICAgICAgICAv LyBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCBvdmVyLWluZGV4IHRoZSBjYWNoZS4NCj4gPiArICAg ICAgICBEdW1wVG90YWxQYWdlcyA9IFBhZ2luYXRpb25DYWNoZVNpemUgLyBEdW1wUGFyYW1zLT5Q YWdlU2l6ZTsNCj4gPiArICAgICAgICBpZiAoUGFnaW5hdGlvbkNhY2hlU2l6ZSAlIER1bXBQYXJh bXMtPlBhZ2VTaXplKSBEdW1wVG90YWxQYWdlcysrOw0KPiA+ICsgICAgICAgIGlmIChEdW1wUGFy YW1zLT5QYWdlUmVxdWVzdGVkID4gRHVtcFRvdGFsUGFnZXMpIHsNCj4gPiArICAgICAgICAgIFN1 YkNvbW1hbmRTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4gKyAgICAgICAgfQ0K PiA+ICsgICAgICAgIGVsc2Ugew0KPiA+ICsgICAgICAgICAgLy8gRmlndXJlIG91dCBob3cgZmFy IGludG8gdGhlIHBhZ2UgY2FjaGUgd2UgbmVlZCB0byBnbyBmb3Igb3VyIG5leHQgcGFnZS4NCj4g PiArICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGJsaW5kIHN1YnRyYWN0aW9uIHdvbid0IGJlIGJh ZCBiZWNhdXNlIHdlIGFscmVhZHkgY2hlY2tlZCBmb3IgcGFnZSAwLg0KPiA+ICsgICAgICAgICAg RHVtcElucHV0QnVmZmVyID0gJlBhZ2luYXRpb25DYWNoZVtEdW1wUGFyYW1zLT5QYWdlU2l6ZSAq IChEdW1wUGFyYW1zLT5QYWdlUmVxdWVzdGVkIC0gMSldOw0KPiA+ICsgICAgICAgICAgLy8gSWYg d2UncmUgZ2V0dGluZyB0aGUgbGFzdCBwYWdlLCBhZGp1c3QgdGhlIFBhZ2VTaXplLg0KPiA+ICsg ICAgICAgICAgaWYgKER1bXBQYXJhbXMtPlBhZ2VSZXF1ZXN0ZWQgPT0gRHVtcFRvdGFsUGFnZXMp IHsNCj4gPiArICAgICAgICAgICAgRHVtcFBhcmFtcy0+UGFnZVNpemUgPSBQYWdpbmF0aW9uQ2Fj aGVTaXplICUgRHVtcFBhcmFtcy0+UGFnZVNpemU7DQo+ID4gKyAgICAgICAgICB9DQo+ID4gKyAg ICAgICAgICBDb3B5TWVtIChEdW1wT3V0cHV0QnVmZmVyLCBEdW1wSW5wdXRCdWZmZXIsIER1bXBQ YXJhbXMtPlBhZ2VTaXplKTsNCj4gPiArICAgICAgICAgIC8vIElmIHdlIGp1c3QgZ290IHRoZSBs YXN0IHBhZ2UsIHNldHRsZSB1cCB0aGUgY2FjaGUuDQo+ID4gKyAgICAgICAgICBpZiAoRHVtcFBh cmFtcy0+UGFnZVJlcXVlc3RlZCA9PSBEdW1wVG90YWxQYWdlcykgew0KPiA+ICsgICAgICAgICAg ICBEdW1wUGFyYW1zLT5IYXNNb3JlID0gRkFMU0U7DQo+ID4gKyAgICAgICAgICAgIEZyZWVQb29s IChQYWdpbmF0aW9uQ2FjaGUpOw0KPiA+ICsgICAgICAgICAgICBQYWdpbmF0aW9uQ2FjaGUgPSBO VUxMOw0KPiA+ICsgICAgICAgICAgICBQYWdpbmF0aW9uQ2FjaGVTaXplID0gMDsNCj4gPiArICAg ICAgICAgICAgQ3VycmVudFBhZ2luYXRpb25Db21tYW5kID0gMDsNCj4gPiArICAgICAgICAgIH0N Cj4gPiArICAgICAgICAgIC8vIE90aGVyd2lzZSwgd2UgY291bGQgZG8gbW9yZSBoZXJlLg0KPiA+ ICsgICAgICAgICAgZWxzZSB7DQo+ID4gKyAgICAgICAgICAgIER1bXBQYXJhbXMtPkhhc01vcmUg PSBUUlVFOw0KPiA+ICsgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgIC8vIElmIHdl IG1hZGUgaXQgdGhpcyBmYXIsIHdlJ3JlIGJhc2ljYWxseSBnb29kLg0KPiA+ICsgICAgICAgICAg U3ViQ29tbWFuZFN0YXR1cyA9IEVGSV9TVUNDRVNTOw0KPiA+ICsgICAgICAgIH0NCj4gPiArICAg ICAgfQ0KPiA+ICsgICAgICAvLyBJZiB3ZSd2ZSByZXF1ZXN0ZWQgYW55IG90aGVyIHBhZ2UgdGhh biAwIGFuZCB0aGUgY2FjaGUgaXMgZW1wdHksIHdlIG11c3QgaGF2ZSB0aW1lZCBvdXQuDQo+ID4g KyAgICAgIGVsc2Ugew0KPiA+ICsgICAgICAgIER1bXBQYXJhbXMtPlRvdGFsU2l6ZSA9IDA7DQo+ ID4gKyAgICAgICAgRHVtcFBhcmFtcy0+UGFnZVNpemUgPSAwOw0KPiA+ICsgICAgICAgIER1bXBQ YXJhbXMtPkhhc01vcmUgPSBGQUxTRTsNCj4gPiArICAgICAgICBTdWJDb21tYW5kU3RhdHVzID0g RUZJX1RJTUVPVVQ7DQo+ID4gKyAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgIC8vIFRoZXJlJ3Mg Y3VycmVudGx5IG5vIHVzZSBmb3IgdGhpcywgYnV0IGl0IHNob3VsZG4ndCBiZSBoYXJkIHRvIGlt cGxlbWVudC4NCj4gPiArICAgICAgUG9saWN5Q29tbW1IZWFkZXItPlJlc3VsdCA9IFN1YkNvbW1h bmRTdGF0dXM7DQo+ID4gKyAgICAgIGJyZWFrOw0KPiA+ICsNCj4gPiArICAgIGNhc2UgVkFSX0NI RUNLX1BPTElDWV9DT01NQU5EX0xPQ0s6DQo+ID4gKyAgICAgIFBvbGljeUNvbW1tSGVhZGVyLT5S ZXN1bHQgPSBMb2NrVmFyaWFibGVQb2xpY3koKTsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKw0K PiA+ICsgICAgZGVmYXVsdDoNCj4gPiArICAgICAgLy8gTWFyayB1bmtub3duIHJlcXVlc3RlZCBj b21tYW5kIGFzIEVGSV9VTlNVUFBPUlRFRC4NCj4gPiArICAgICAgREVCVUcoKCBERUJVR19JTkZP LCAiJWEgLSBJbnZhbGlkIGNvbW1hbmQgcmVxdWVzdGVkISAlZFxuIiwgX19GVU5DVElPTl9fLCBQ b2xpY3lDb21tbUhlYWRlci0+Q29tbWFuZCApKTsNCj4gPiArICAgICAgUG9saWN5Q29tbW1IZWFk ZXItPlJlc3VsdCA9IEVGSV9VTlNVUFBPUlRFRDsNCj4gPiArICAgICAgYnJlYWs7DQo+ID4gKyAg fQ0KPiA+ICsNCj4gPiArICBERUJVRygoIERFQlVHX1ZFUkJPU0UsICIlYSAtIENvbW1hbmQgJWQg cmV0dXJuaW5nICVyLlxuIiwgX19GVU5DVElPTl9fLA0KPiA+ICsgICAgICAgICAgUG9saWN5Q29t bW1IZWFkZXItPkNvbW1hbmQsIFBvbGljeUNvbW1tSGVhZGVyLT5SZXN1bHQgKSk7DQo+IA0KPiAo NCkgVGhlIGluZGVudGF0aW9uIGlzIG5vdCBpZGlvbWF0aWMuDQo+IA0KPiA+ICsNCj4gPiArICBy ZXR1cm4gU3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgQ29u c3RydWN0b3IgZnVuY3Rpb24gb2YgVmFyQ2hlY2tQb2xpY3lMaWIgdG8gcmVnaXN0ZXIgVmFyQ2hl Y2sgaGFuZGxlciBhbmQNCj4gPiArICBTVyBNTUkgaGFuZGxlcnMuDQo+ID4gKw0KPiA+ICsgIEBw YXJhbVtpbl0gSW1hZ2VIYW5kbGUgICAgVGhlIGZpcm13YXJlIGFsbG9jYXRlZCBoYW5kbGUgZm9y IHRoZSBFRkkgaW1hZ2UuDQo+ID4gKyAgQHBhcmFtW2luXSBTeXN0ZW1UYWJsZSAgICBBIHBvaW50 ZXIgdG8gdGhlIEVGSSBTeXN0ZW0gVGFibGUuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NV Q0NFU1MgICAgICAgVGhlIGNvbnN0cnVjdG9yIGV4ZWN1dGVkIGNvcnJlY3RseS4NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtWYXJDaGVja1BvbGlj eUxpYkNvbnN0cnVjdG9yICgNCj4gPiArICBJTiBFRklfSEFORExFICAgICAgICAgICAgIEltYWdl SGFuZGxlLA0KPiA+ICsgIElOIEVGSV9TWVNURU1fVEFCTEUgICAgICAgKlN5c3RlbVRhYmxlDQo+ ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRUZJX1NUQVRVUyAgICBTdGF0dXM7DQo+ID4gKyAgRUZJ X0hBTkRMRSAgICBEaXNjYXJkZWRIYW5kbGU7DQo+ID4gKw0KPiA+ICsgIC8vIEluaXRpYWxpemUg dGhlIGJ1c2luZXNzIGxvZ2ljIHdpdGggdGhlIGludGVybmFsIEdldFZhcmlhYmxlIGhhbmRsZXIu DQo+ID4gKyAgU3RhdHVzID0gSW5pdFZhcmlhYmxlUG9saWN5TGliKCBWYXJpYWJsZVNlcnZpY2VH ZXRWYXJpYWJsZSApOw0KPiA+ICsNCj4gPiArICAvLyBPbmx5IHByb2NlZWQgd2l0aCBpbml0IGlm IHRoZSBidXNpbmVzcyBsb2dpYyBjb3VsZCBiZSBpbml0aWFsaXplZC4NCj4gPiArICBpZiAoIUVG SV9FUlJPUiggU3RhdHVzICkpIHsNCj4gPiArICAgIC8vIFJlZ2lzdGVyIHRoZSBWYXJDaGVjayBo YW5kbGVyIGZvciBTZXRWYXJpYWJsZSBmaWx0ZXJpbmcuDQo+ID4gKyAgICAvLyBGb3J3YXJkIHRo ZSBjaGVjayB0byB0aGUgYnVzaW5lc3MgbG9naWMgb2YgdGhlIGxpYnJhcnkuDQo+ID4gKyAgICBW YXJDaGVja0xpYlJlZ2lzdGVyU2V0VmFyaWFibGVDaGVja0hhbmRsZXIoIFZhbGlkYXRlU2V0VmFy aWFibGUgKTsNCj4gPiArDQo+ID4gKyAgICAvLyBSZWdpc3RlciB0aGUgTU1JIGhhbmRsZXJzIGZv ciByZWNlaXZpbmcgcG9saWN5IGNvbW1hbmRzLg0KPiA+ICsgICAgRGlzY2FyZGVkSGFuZGxlID0g TlVMTDsNCj4gPiArICAgIFN0YXR1cyA9IGdNbXN0LT5NbWlIYW5kbGVyUmVnaXN0ZXIoIFZhckNo ZWNrUG9saWN5TGliTW1pSGFuZGxlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZnVmFyQ2hlY2tQb2xpY3lMaWJNbWlIYW5kbGVyR3VpZCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZEaXNjYXJkZWRIYW5kbGUgKTsN Cj4gPiArICB9DQo+ID4gKyAgLy8gT3RoZXJ3aXNlLCB0aGVyZSdzIG5vdCBtdWNoIHdlIGNhbiBk by4NCj4gPiArICBlbHNlIHsNCj4gPiArICAgIERFQlVHKCggREVCVUdfRVJST1IsICIlYSAtIENh bm5vdCBJbml0aWFsaXplIFZhcmlhYmxlUG9saWN5TGliISAlclxuIiwgX19GVU5DVElPTl9fLCBT dGF0dXMgKSk7DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SKCBTdGF0dXMgKTsNCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEv TWRlTW9kdWxlUGtnL0luY2x1ZGUvR3VpZC9WYXJDaGVja1BvbGljeU1taS5oIGIvTWRlTW9kdWxl UGtnL0luY2x1ZGUvR3VpZC9WYXJDaGVja1BvbGljeU1taS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjc3YmNjNjJmM2NjZg0KPiA+IC0tLSAvZGV2 L251bGwNCj4gPiArKysgYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9HdWlkL1ZhckNoZWNrUG9saWN5 TW1pLmgNCj4gPiBAQCAtMCwwICsxLDU0IEBADQo+ID4gKy8qKiBAZmlsZSAtLSBWYXJDaGVja1Bv bGljeU1taUNvbW1vbi5oDQo+ID4gK1RoaXMgaGVhZGVyIGNvbnRhaW5zIGNvbW11bmljYXRpb24g ZGVmaW5pdGlvbnMgdGhhdCBhcmUgc2hhcmVkIGJldHdlZW4gRFhFDQo+ID4gK2FuZCB0aGUgTU0g Y29tcG9uZW50IG9mIFZhckNoZWNrUG9saWN5Lg0KPiA+ICsNCj4gPiArQ29weXJpZ2h0IChjKSBN aWNyb3NvZnQgQ29ycG9yYXRpb24uDQo+ID4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBfVkFSX0NIRUNL X1BPTElDWV9NTUlfQ09NTU9OX0hfDQo+ID4gKyNkZWZpbmUgX1ZBUl9DSEVDS19QT0xJQ1lfTU1J X0NPTU1PTl9IXw0KPiA+ICsNCj4gPiArI2RlZmluZSAgIFZBUl9DSEVDS19QT0xJQ1lfQ09NTV9T SUcgICAgICAgU0lHTkFUVVJFXzMyKCdWJywgJ0MnLCAnUCcsICdDJykNCj4gPiArI2RlZmluZSAg IFZBUl9DSEVDS19QT0xJQ1lfQ09NTV9SRVZJU0lPTiAgMQ0KPiA+ICsNCj4gPiArI3ByYWdtYSBw YWNrKHB1c2gsIDEpDQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfVkFSX0NIRUNLX1BPTElD WV9DT01NX0hFQURFUiB7DQo+ID4gKyAgVUlOVDMyICAgICAgU2lnbmF0dXJlOw0KPiA+ICsgIFVJ TlQzMiAgICAgIFJldmlzaW9uOw0KPiA+ICsgIFVJTlQzMiAgICAgIENvbW1hbmQ7DQo+ID4gKyAg RUZJX1NUQVRVUyAgUmVzdWx0Ow0KPiA+ICt9IFZBUl9DSEVDS19QT0xJQ1lfQ09NTV9IRUFERVI7 DQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0cnVjdCBfVkFSX0NIRUNLX1BPTElDWV9DT01NX0lTX0VO QUJMRURfUEFSQU1TIHsNCj4gPiArICBCT09MRUFOICAgICBTdGF0ZTsNCj4gPiArfSBWQVJfQ0hF Q0tfUE9MSUNZX0NPTU1fSVNfRU5BQkxFRF9QQVJBTVM7DQo+ID4gKw0KPiA+ICt0eXBlZGVmIHN0 cnVjdCBfVkFSX0NIRUNLX1BPTElDWV9DT01NX0RVTVBfUEFSQU1TIHsNCj4gPiArICBVSU5UMzIg ICAgICBQYWdlUmVxdWVzdGVkOw0KPiA+ICsgIFVJTlQzMiAgICAgIFRvdGFsU2l6ZTsNCj4gPiAr ICBVSU5UMzIgICAgICBQYWdlU2l6ZTsNCj4gPiArICBCT09MRUFOICAgICBIYXNNb3JlOw0KPiA+ ICt9IFZBUl9DSEVDS19QT0xJQ1lfQ09NTV9EVU1QX1BBUkFNUzsNCj4gPiArDQo+ID4gKyNwcmFn bWEgcGFjayhwb3ApDQo+ID4gKw0KPiA+ICsvLyBNYWtlIHN1cmUgdGhhdCB3ZSB3aWxsIGhvbGQg YXQgbGVhc3QgdGhlIGhlYWRlcnMuDQo+ID4gKyNkZWZpbmUgICBWQVJfQ0hFQ0tfUE9MSUNZX01N X0NPTU1fQlVGRkVSX1NJWkUgIE1BWCgoT0ZGU0VUX09GKEVGSV9NTV9DT01NVU5JQ0FURV9IRUFE RVIsIERhdGEpICsgc2l6ZW9mDQo+IChWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1fSEVBREVSKSArIEVG SV9QQUdFU19UT19TSVpFKDEpKSwgRUZJX1BBR0VTX1RPX1NJWkUoNCkpDQo+ID4gKyNkZWZpbmUg ICBWQVJfQ0hFQ0tfUE9MSUNZX01NX0RVTVBfQlVGRkVSX1NJWkUgIChWQVJfQ0hFQ0tfUE9MSUNZ X01NX0NPTU1fQlVGRkVSX1NJWkUgLSBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoT0ZGU0VUX09GKEVGSV9NTV9DT01NVU5JQ0FURV9I RUFERVIsIERhdGEpICsgXA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzaXplb2YoVkFSX0NIRUNLX1BPTElDWV9DT01NX0hFQURFUikg KyBcDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1fRFVNUF9QQVJBTVMpKSkNCj4gPiAr U1RBVElDX0FTU0VSVCAoDQo+ID4gKyAgVkFSX0NIRUNLX1BPTElDWV9NTV9EVU1QX0JVRkZFUl9T SVpFIDwgVkFSX0NIRUNLX1BPTElDWV9NTV9DT01NX0JVRkZFUl9TSVpFLA0KPiA+ICsgICJhbiBp bnRlZ2VyIHVuZGVyZmxvdyBtYXkgaGF2ZSBvY2N1cnJlZCBjYWxjdWxhdGluZyBWQVJfQ0hFQ0tf UE9MSUNZX01NX0RVTVBfQlVGRkVSX1NJWkUiDQo+ID4gKyAgKTsNCj4gPiArDQo+ID4gKyNkZWZp bmUgICBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1BTkRfRElTQUJMRSAgICAgIDB4MDAwMQ0KPiA+ICsj ZGVmaW5lICAgVkFSX0NIRUNLX1BPTElDWV9DT01NQU5EX0lTX0VOQUJMRUQgICAweDAwMDINCj4g PiArI2RlZmluZSAgIFZBUl9DSEVDS19QT0xJQ1lfQ09NTUFORF9SRUdJU1RFUiAgICAgMHgwMDAz DQo+ID4gKyNkZWZpbmUgICBWQVJfQ0hFQ0tfUE9MSUNZX0NPTU1BTkRfRFVNUCAgICAgICAgIDB4 MDAwNA0KPiA+ICsjZGVmaW5lICAgVkFSX0NIRUNLX1BPTElDWV9DT01NQU5EX0xPQ0sgICAgICAg ICAweDAwMDUNCj4gPiArDQo+ID4gKyNlbmRpZiAvLyBfVkFSX0NIRUNLX1BPTElDWV9NTUlfQ09N TU9OX0hfDQo+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1ZhckNoZWNrUG9s aWN5TGliL1ZhckNoZWNrUG9saWN5TGliLmluZg0KPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1Zh ckNoZWNrUG9saWN5TGliL1ZhckNoZWNrUG9saWN5TGliLmluZg0KPiA+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi43YzQwN2UyNTQzMzANCj4gPiAtLS0gL2Rl di9udWxsDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQb2xpY3lMaWIv VmFyQ2hlY2tQb2xpY3lMaWIuaW5mDQo+ID4gQEAgLTAsMCArMSw0NCBAQA0KPiA+ICsjIyBAZmls ZSBWYXJDaGVja1BvbGljeUxpYi5pbmYNCj4gPiArIyBUaGlzIGlzIGFuIGluc3RhbmNlIG9mIGEg VmFyQ2hlY2sgbGliIHRoYXQgbGV2ZXJhZ2VzIHRoZSBidXNpbmVzcyBsb2dpYyBiZWhpbmQNCj4g PiArIyB0aGUgVmFyaWFibGVQb2xpY3kgY29kZSB0byBtYWtlIGl0cyBkZWNpc2lvbnMuDQo+ID4g KyMNCj4gPiArIyMNCj4gPiArIyBDb3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi4N Cj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ ICsjDQo+ID4gKyMjDQo+ID4gKw0KPiA+ICtbRGVmaW5lc10NCj4gPiArICBJTkZfVkVSU0lPTiAg ICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4gKyAgQkFTRV9OQU1FICAgICAgICAg ICAgICAgICAgICAgID0gVmFyQ2hlY2tQb2xpY3lMaWINCj4gPiArICBGSUxFX0dVSUQgICAgICAg ICAgICAgICAgICAgICAgPSA5QzI4QTQ4Ri1DODg0LTRCMUYtOEI5NS1ERUYxMjU0NDgwMjMNCj4g PiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBEWEVfUlVOVElNRV9EUklWRVIN Cj4gPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPiArICBMSUJS QVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBOVUxMfERYRV9SVU5USU1FX0RSSVZFUiBEWEVf U01NX0RSSVZFUg0KPiA+ICsgIENPTlNUUlVDVE9SICAgICAgICAgICAgICAgICAgICA9IFZhckNo ZWNrUG9saWN5TGliQ29uc3RydWN0b3INCj4gPiArDQo+ID4gKw0KPiA+ICtbU291cmNlc10NCj4g PiArICBWYXJDaGVja1BvbGljeUxpYi5jDQo+ID4gKw0KPiA+ICsNCj4gPiArW1BhY2thZ2VzXQ0K PiA+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBr Zy5kZWMNCj4gPiArDQo+ID4gKw0KPiA+ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4gKyAgQmFzZUxp Yg0KPiA+ICsgIERlYnVnTGliDQo+ID4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+ICsgIER4ZVNlcnZp Y2VzTGliDQo+ID4gKyAgTWVtb3J5QWxsb2NhdGlvbkxpYg0KPiA+ICsgIFZhckNoZWNrTGliDQo+ ID4gKyAgVmFyaWFibGVQb2xpY3lMaWINCj4gPiArICBWYXJpYWJsZVBvbGljeUhlbHBlckxpYg0K PiA+ICsgIFNhZmVJbnRMaWINCj4gPiArICBNbVNlcnZpY2VzVGFibGVMaWINCj4gPiArDQo+ID4g Kw0KPiA+ICtbR3VpZHNdDQo+ID4gKyAgZ1ZhckNoZWNrUG9saWN5TGliTW1pSGFuZGxlckd1aWQg ICAgICAgICMjIENPTlNVTUUgIyMgVXNlZCB0byByZWdpc3RlciBmb3IgTU0gQ29tbXVuaWNhdGlv biBldmVudHMuDQo+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9MaWJyYXJ5L1ZhckNoZWNr UG9saWN5TGliL1ZhckNoZWNrUG9saWN5TGliLnVuaQ0KPiBiL01kZU1vZHVsZVBrZy9MaWJyYXJ5 L1ZhckNoZWNrUG9saWN5TGliL1ZhckNoZWNrUG9saWN5TGliLnVuaQ0KPiA+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5lZWRlZWVkMTVkMzENCj4gPiAtLS0g L2Rldi9udWxsDQo+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQb2xpY3lM aWIvVmFyQ2hlY2tQb2xpY3lMaWIudW5pDQo+ID4gQEAgLTAsMCArMSwxMiBAQA0KPiA+ICsvLyAv KiogQGZpbGUNCj4gPiArLy8gVmFyQ2hlY2tQb2xpY3lMaWIudW5pDQo+ID4gKy8vDQo+ID4gKy8v IENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KPiA+ICsvLyBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsvLw0KPiA+ICsvLyAqKi8N Cj4gPiArDQo+ID4gKw0KPiA+ICsjc3RyaW5nIFNUUl9NT0RVTEVfQUJTVFJBQ1QgICAgICAgICAg ICAgI2xhbmd1YWdlIGVuLVVTICJOVUxMIGxpYnJhcnkgaW1wbGVtZW50YXRpb24gdGhhdCBjb25m b3JtcyB0byB0aGUgVmFyQ2hlY2sgaW50ZXJmYWNlIHRvDQo+IGFsbG93IFZhcmlhYmxlUG9saWN5 IGVuZ2luZSB0byBlbmZvcmNlIHBvbGljaWVzIg0KPiA+ICsNCj4gPiArI3N0cmluZyBTVFJfTU9E VUxFX0RFU0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiTlVMTCBsaWJyYXJ5IGlt cGxlbWVudGF0aW9uIHRoYXQgY29uZm9ybXMgdG8gdGhlIFZhckNoZWNrIGludGVyZmFjZQ0KPiB0 byBhbGxvdyBWYXJpYWJsZVBvbGljeSBlbmdpbmUgdG8gZW5mb3JjZSBwb2xpY2llcyINCj4gPiBk aWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMgYi9NZGVNb2R1bGVQa2cv TWRlTW9kdWxlUGtnLmRlYw0KPiA+IGluZGV4IGQ2NjAwMmZjOTY1MS4uZWNmYTg3ZmZhODFkIDEw MDY0NA0KPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4gKysrIGIv TWRlTW9kdWxlUGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiBAQCAtMzg1LDYgKzM4NSwxMCBAQA0K PiA+ICAgICMjIEluY2x1ZGUvR3VpZC9FbmRvZlMzUmVzdW1lLmgNCj4gPiAgICBnRWRraWlFbmRP ZlMzUmVzdW1lR3VpZCA9IHsgMHg5NmY1Mjk2ZCwgMHgwNWY3LCAweDRmM2MsIHsweDg0LCAweDY3 LCAweGU0LCAweDU2LCAweDg5LCAweDBlLCAweDBjLCAweGI1IH0gfQ0KPiA+DQo+ID4gKyAgIyMg VXNlZCAoc2ltaWxhciB0byBWYXJpYWJsZSBTZXJ2aWNlcykgdG8gY29tbXVuaWNhdGUgcG9saWNp ZXMgdG8gdGhlIGVuZm9yY2VtZW50IGVuZ2luZS4NCj4gPiArICAjIHtEQTFCMEQxMS1EMUE3LTQ2 QzQtOURDOS1GMzcxNDg3NUM2RUJ9DQo+ID4gKyAgZ1ZhckNoZWNrUG9saWN5TGliTW1pSGFuZGxl ckd1aWQgPSB7IDB4ZGExYjBkMTEsIDB4ZDFhNywgMHg0NmM0LCB7IDB4OWQsIDB4YzksIDB4ZjMs IDB4NzEsIDB4NDgsIDB4NzUsIDB4YzYsIDB4ZWIgfX0NCj4gPiArDQo+IA0KPiAoNSkgU2hvdWxk IGxpa2VseSBiZSBjYWxsZWQgZ0Vka2lpVmFyQ2hlY2tQb2xpY3lMaWJNbWlIYW5kbGVyR3VpZC4N Cj4gDQo+ID4gICAgIyMgSW5jbHVkZS9HdWlkL1MzU21tSW5pdERvbmUuaA0KPiA+ICAgIGdFZGtp aVMzU21tSW5pdERvbmVHdWlkID0geyAweDhmOWQ0ODI1LCAweDc5N2QsIDB4NDhmYywgeyAweDg0 LCAweDcxLCAweDg0LCAweDUwLCAweDI1LCAweDc5LCAweDJlLCAweGY2IH0gfQ0KPiA+DQo+ID4g ZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZHNjIGIvTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kc2MNCj4gPiBpbmRleCAzNzc5NWI5ZTRmNTguLmYwYTc1YTNiMzM3YiAx MDA2NDQNCj4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRzYw0KPiA+ICsrKyBi L01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZHNjDQo+ID4gQEAgLTMxMyw2ICszMTMsNyBAQA0K PiA+ICAgIE1kZU1vZHVsZVBrZy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYk51bGwvQXV0aFZhcmlh YmxlTGliTnVsbC5pbmYNCj4gPiAgICBNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJpYWJsZVBvbGlj eUxpYi9WYXJpYWJsZVBvbGljeUxpYi5pbmYNCj4gPiAgICBNZGVNb2R1bGVQa2cvTGlicmFyeS9W YXJpYWJsZVBvbGljeUxpYi9WYXJpYWJsZVBvbGljeUxpYlJ1bnRpbWVEeGUuaW5mDQo+ID4gKyAg TWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQb2xpY3lMaWIvVmFyQ2hlY2tQb2xpY3lMaWIu aW5mDQo+ID4gICAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tMaWIvVmFyQ2hlY2tMaWIu aW5mDQo+ID4gICAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tIaWlMaWIvVmFyQ2hlY2tI aWlMaWIuaW5mDQo+ID4gICAgTWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tQY2RMaWIvVmFy Q2hlY2tQY2RMaWIuaW5mDQo+ID4gQEAgLTQ1OCw2ICs0NTksNyBAQA0KPiA+ICAgIE1kZU1vZHVs ZVBrZy9Db3JlL1BpU21tQ29yZS9QaVNtbUNvcmUuaW5mDQo+ID4gICAgTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tLmluZiB7DQo+ID4gICAgICA8 TGlicmFyeUNsYXNzZXM+DQo+ID4gKyAgICAgIE5VTEx8TWRlTW9kdWxlUGtnL0xpYnJhcnkvVmFy Q2hlY2tQb2xpY3lMaWIvVmFyQ2hlY2tQb2xpY3lMaWIuaW5mDQo+ID4gICAgICAgIE5VTEx8TWRl TW9kdWxlUGtnL0xpYnJhcnkvVmFyQ2hlY2tVZWZpTGliL1ZhckNoZWNrVWVmaUxpYi5pbmYNCj4g PiAgICAgICAgTlVMTHxNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJDaGVja0hpaUxpYi9WYXJDaGVj a0hpaUxpYi5pbmYNCj4gPiAgICAgICAgTlVMTHxNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJDaGVj a1BjZExpYi9WYXJDaGVja1BjZExpYi5pbmYNCj4gPg0KPiANCj4gUnVubmluZyB0aGlzIHNlcmll cyB0aHJvdWdoIHRoZSBFQ0MgdG9vbCBjb3VsZCBoZWxwIGltcHJvdmUgY29kaW5nIHN0eWxlDQo+ IGNvbmZvcm1hbmNlLCBJIGJlbGlldmUuIChUaGlzIGlzIG5vdCBhIHN0cm9uZyByZWNvbW1lbmRh dGlvbiBvbiBteSBwYXJ0LA0KPiBhcyBJIGhhdmVuJ3QgcnVuIEVDQyB0b28gbWFueSB0aW1lcyBt eXNlbGYgLS0gSSd2ZSBmb3VuZCBFQ0Mgd2F5IHRvbw0KPiBzdHJpY3QgaW4gc29tZSByZWdhcmRz LikNCj4gDQpIZXJlIGlzIEVDQyB3aWtpIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2NvcmUvdGlh bm9jb3JlLmdpdGh1Yi5pby93aWtpL0VDQy10b29sDQpBbmQsIHdlIGFsc28gcGxhbiB0byBhZGQg RUNDIGNoZWNrZXIgaW4gb3BlbiBDSS4gKEJaIDI2MDYpLg0KDQpUaGFua3MNCkxpbWluZw0KDQo+ IFRoYW5rcw0KPiBMYXN6bG8NCg0K