From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by mx.groups.io with SMTP id smtpd.web10.1999.1617764755686432880 for ; Tue, 06 Apr 2021 20:05:55 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=R65uOLkK; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: nathaniel.l.desimone@intel.com) IronPort-SDR: gb1h3rNHUw4/aMOBEOdOPVlRKSSgd4rK6e+biA5j1U8ILYr17gWxAZeCw/raxKIR4YpkU7sZ2p l1w20ANvypFw== X-IronPort-AV: E=McAfee;i="6000,8403,9946"; a="172683018" X-IronPort-AV: E=Sophos;i="5.82,201,1613462400"; d="scan'208";a="172683018" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Apr 2021 20:05:39 -0700 IronPort-SDR: Hw186DcOyWibXBmijtkkyw5gDbOMsQChzUYIpTPzltLPCxhIzYAIcz1rAeIaXCoWW0wg+HzR5d Y69uzXxpHtCw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,201,1613462400"; d="scan'208";a="379653776" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga003.jf.intel.com with ESMTP; 06 Apr 2021 20:05:37 -0700 Received: from orsmsx609.amr.corp.intel.com (10.22.229.22) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 6 Apr 2021 20:05:36 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx609.amr.corp.intel.com (10.22.229.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Tue, 6 Apr 2021 20:05:36 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.172) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Tue, 6 Apr 2021 20:05:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gptQpwv+jIibXL4y275K3MxpfxnPOw35MEK/vshTxoRuqTmyM/ia/DuRW+8Hh1gbt6/uMdUmb/bf480vfc4It/6LDCior8qRzUTyPFu2Sq8sOtrt6uaMpYt2lozdoEMYIr3FfUSfAwMCpichJGBx0t8WurvRkavaNvPB1FN4r2Ftkr26AkyEiWttwldaROfR0uKfpdPndUypGdej/4DQls8RoglIRiitK+PkRcfAyAS/YWRB7+iQwW8fv6/CqKYQmAQQuDNRAwQNl9o8WWbQh1MzIGYA2ZVoH8tXou3F+VHTwsnwd6+dx4Ju+HWebuXe1fWFzG9d0Ck9WxHInsNHfg== 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=mFHL+IjQTFvljzsNMItRTSoutLbibVct9JX85V/oy5k=; b=bANvQcbe3ef2Els8H7j8UnTj+1bZKy/pJoMTHXqsynClT98tUGRpJd9uJJpYuCFObEyLtr5XvhIzGS+hvuMtU+1C/NF96SCZT7awvHBx1YykjdsqISibfwaApBsRZ1p6BTr2b0Ye8+ZF/Z8bPdZaYZ/+lIKur0yPQBDC0eg3ogOOG0k1CEtCbcI06TPxQoHXJGuumz5ZCaPNTeEDt1bu+6DcWYh3ioKM/+v5bL2ku7xQMwkFkpURzN0xwwXAQDyU1T+xIxODv6w5t7rsku5c+CQCPegAWohimVzIkaT/sfX1RHOWch6J5UuuOKiXa9FmyGr+yFX7QUtraq5ZoMaJPA== 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=mFHL+IjQTFvljzsNMItRTSoutLbibVct9JX85V/oy5k=; b=R65uOLkK5Jh2dqaHW/jhyY9nkVSZJJoiGI0yTTBhOaVE5OcEk0k2vqaE7P4MJhjMbguoZiu/dHeoOaWgBYDXvuUfeIdt0pZYDPBzORcR3Rev+hk0mSxdk8e7zsgN4AoMJkfaEW7xLh5y4TyS10CtUKp7kRlF2BfTO7fa8Uh5GUY= Received: from MWHPR1101MB2160.namprd11.prod.outlook.com (2603:10b6:301:5b::12) by MWHPR1101MB2157.namprd11.prod.outlook.com (2603:10b6:301:51::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Wed, 7 Apr 2021 03:05:32 +0000 Received: from MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788]) by MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788%5]) with mapi id 15.20.3999.033; Wed, 7 Apr 2021 03:05:32 +0000 From: "Nate DeSimone" To: "devel@edk2.groups.io" , "mikuback@linux.microsoft.com" CC: "Chiu, Chasel" , Liming Gao , "Dong, Eric" , "Michael Kubacki" , "Oram, Isaac W" Subject: Re: [edk2-devel] [edk2-platforms] [PATCH v3 3/4] MinPlatformPkg: Add LargeVariableReadLib Thread-Topic: [edk2-devel] [edk2-platforms] [PATCH v3 3/4] MinPlatformPkg: Add LargeVariableReadLib Thread-Index: AQHXKzBVpdqCFmUAc06G08OUUiMOi6qoXx5A Date: Wed, 7 Apr 2021 03:05:31 +0000 Message-ID: References: <20210406192411.6888-1-nathaniel.l.desimone@intel.com> <20210406192411.6888-4-nathaniel.l.desimone@intel.com> <88afacdc-4b7c-bf0f-dd88-591ef640330e@linux.microsoft.com> In-Reply-To: <88afacdc-4b7c-bf0f-dd88-591ef640330e@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [50.53.190.176] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9580c78e-f470-47f4-9276-08d8f97201a2 x-ms-traffictypediagnostic: MWHPR1101MB2157: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Qz7iTJiFx7ysRy0CjL0opLbBahcW1p8aiGp7cumUqrIZIHiCQX5PnF4scvdZ5JVJ6RkfZeemuC4DXN7yE/ZoExBZBB2540TVYQYmphvNuTslm0HXjCYn5v+90LWn7zr0k8qOZ4mtnf/NVAQUbhi0gKLl+qwZP4vpkgzl9r3WKKl6Nf7Lh8kxJHW3CVG+XcloPLDyqFFIxRqpE1Ut6tlKzGcV3ILcur3+0fCGmSzHd4R6QgKkYZCTl/6PN86rm1f3gq57QDkMP1QBzImduzr4j7JdOzbslOZTcYFHXX+7Ag6wZd0XU/gEO7a4RmD8rzzIhj7rFDFDE8J5c8ZSe7eKKmK0Qror0XyxCXvv2Vc60EqfDNqxqtvdpmZOBfT5ao1PTWj8EEN/cHyeBBGGC1krAYnxqYb4+IclXdWkQxDhXS5ZProC+hmJaiXBqtA+HzSEBr+jkiLHCI+WULxh/DR4q4BBj2EKauFURHGGu7S2VZzGYcgkTt+6DS644FOGGbZJ55xT8Pi35iNajRfSHKefPhkWNZ3zEXtYKbNSBJwU3Car/jOmUh3rFsSnAstaYRl9/S80MS8UpVNDoqqfUZpjkkYSn4p7b7xlRqNsMcKqrOdyDYZDLaUNzXyJz6QoMmGlrVELpiROWQtYmTPb3VIzJYpguIFwQZOHgFiF2hvvTVIeMtLAaMeDuNU9AFQupmVPmSI5Qnvhyz/pTta2UoJLsYC55RvwFvENoLv7Nza2UhqtjFmopJppaJbDyE2FEkaO x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(396003)(136003)(39860400002)(366004)(376002)(83380400001)(38100700001)(478600001)(86362001)(55016002)(33656002)(7696005)(107886003)(6506007)(966005)(53546011)(71200400001)(5660300002)(30864003)(9686003)(2906002)(8676002)(26005)(316002)(66476007)(66556008)(64756008)(66446008)(4326008)(52536014)(54906003)(110136005)(66946007)(76116006)(8936002)(186003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?am1lYlJVaFliNTNJYm1qK1NIRjNkOXBLN1pvZFd6MklGNExlSVgxNzQ1a1lG?= =?utf-8?B?ZWxnUWlyN2N0SDJTbEI3RldFWC9kQVhqQXFKdGFjdTNycjdmbGRyTTlieUlT?= =?utf-8?B?Q0ZUcWpWcEk4YWxGbUI0Wms5VitkT09sU2ZlTkExOWliOTBvclNoQjl0VlIw?= =?utf-8?B?cDB5M0hUUU1IRStGc3FweXZySTA3QjBCNTE2SGZNekFOWldSTmM0N3lLaXor?= =?utf-8?B?TDB0MWlWNWNJbHRwbWMxYzFxeFhHTExWeXV2eGdNSHVOeldGOGRVTzFWRXpM?= =?utf-8?B?MlBRN1JROEtIUzBkeWtwRHpQckNwNjlFLzJBQ0MrQzdhenRyWEhoa25tRUF2?= =?utf-8?B?dTVxOW9HVUFORFphMGdmcVBVWlMrTEgwZ3dvbzZ0MC8wZnpHL09meURqc0VZ?= =?utf-8?B?eStodlFNMnhRazFDcVB0TlcwcFdhK1d2SGdHRUVTbEFFdmZYckxvUmErU0Iw?= =?utf-8?B?YmRiOTRJSUVTemozSkdGZ2czSmxKZUxoNVNyV3BqNXhkcnp5dFFEK29sMjlP?= =?utf-8?B?M2hUQ0RWMlFheHRaOCs2eFJUS2JybWdhYkxZaTQzT1Nwb1hOamlSLzZZcm1w?= =?utf-8?B?KzIyQ09INGtKRmlQWFJxTnREblQ2MlVmKzlVbTg5SUkvOW9ra1VlSUNFcTg3?= =?utf-8?B?YTZIN1FzdGlnamNSVFpta0I0Zmw3TVZmeHEzVzZ4TDErMGx3bWhDZjU5L0sz?= =?utf-8?B?TjFLZEphMnpUSmhwUnEzQXF4NDl3dFNnNDk1ZDZiaE5kZTFrOEJJVFB5dXYr?= =?utf-8?B?U2I1S1BZWU1lTEtBaDNYdGpzQXpuUzltSkhMb2xPcklqWEM5UVFpWXp0TlBR?= =?utf-8?B?Tk1GY1lqVEZTdjhZTnNLam4za0dDeVFrc1RhT0w4eHZlenJGTmIrRkExKzFx?= =?utf-8?B?bVo0WDVIU0tkT1IzOElmYStwSlpLQ3pkekZ4YTNESS9ja3NsMGNOVXlRMzl0?= =?utf-8?B?dDdTcndjUHRBVFlRYmVheG9tV3l5NUszV25GaW9UOCsrMlpmYk1LWUJsbHFp?= =?utf-8?B?Unh2NDNHeDdacG5jcmVtZE11YXpVeS9wVFFVN0tqR1VBRDZyYlRGa3FZakRw?= =?utf-8?B?aXRDbEpZQmZIVnZFTG8xTnQ5WnhpeEZHZXhwdnlnWHd5c0tsNndFR3pjRjJT?= =?utf-8?B?eWVoVXVHZ1RyL0hvRWpqTVhNOFQ1QitZQ1NiVVZkZHNKZHVmWjlnb3htRDRm?= =?utf-8?B?OFVOY05rYWs4OFNsTGxpMXdBbmdCbHM0SGl0NVZzRUZJdThXTHd1T25pakdT?= =?utf-8?B?VDBxOFB2WmJ0QlBLNzdyUUcxL3pOL2FTTWlldHdVSW9LVTdCOEJXcVVtaVF4?= =?utf-8?B?Z3ZUclZIZ1ZKaXJGMFJJU09uVkxaOTg4SGRDNzZIaFZlS0NGSTR1V0hkYVo4?= =?utf-8?B?bS9Wcll3WmNMZWE0U3dETG1jcm9DVVYxS1ZNcmY0L3JjZkhCNERXRkxpVHdU?= =?utf-8?B?VmtBbkRBcmN2VElpUGVQVjNmYjVkV1VYZ2hrRXZCb01Cb1V0YUY0WXE3TzNO?= =?utf-8?B?RXBvOUNVbk1Ib1czSGVLdm5icUVUWjQ1cVg4ZjdSRzFNNWtMcjM0RkxGaExD?= =?utf-8?B?V1g2dERkdmlLOEYrazI1Z0ovNmJxNlhYcFBMOWpPWmpPZElzS1huZXpDMThR?= =?utf-8?B?Z2hQdUJkV3hGUENjVXFXYVVqV2pvWVJzL2oyanhrbWl6NERmdnFCWHNIMjdZ?= =?utf-8?B?Q3htZ3lBM2xEZ0tLdG1yMnlIZHFINktSV1lwajVwZkpoZmtITm9IY0pYR1dr?= =?utf-8?Q?uaAEF3Fly7iazhyJElJxuG4sjga35mCv2nnw5ra?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9580c78e-f470-47f4-9276-08d8f97201a2 X-MS-Exchange-CrossTenant-originalarrivaltime: 07 Apr 2021 03:05:31.9935 (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: T6jEMwfVEd7DU7R5+hFW/q0zRN1e8OfrvzEeOZo+hn21V6YSpBmhjqTWe8MX+NXirna2/ZaCnk7lGdWxwvueXFfz5tgvxSoc1RyQJJ28rgU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR1101MB2157 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWljaGFlbCwNCg0KVGhhbmsgeW91IGZvciB0aGUgZ3JlYXQgZmVlZGJhY2shIEkgYmVsaWV2 ZSBJIGhhdmUgYWxsIG9mIGl0IGFkZHJlc3NlZCBpbiBWNC4NCg0KVGhhbmtzLA0KTmF0ZQ0KDQot LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRl dmVsQGVkazIuZ3JvdXBzLmlvPiBPbiBCZWhhbGYgT2YgTWljaGFlbCBLdWJhY2tpDQpTZW50OiBU dWVzZGF5LCBBcHJpbCA2LCAyMDIxIDM6MDEgUE0NClRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsg RGVzaW1vbmUsIE5hdGhhbmllbCBMIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+DQpD YzogQ2hpdSwgQ2hhc2VsIDxjaGFzZWwuY2hpdUBpbnRlbC5jb20+OyBMaW1pbmcgR2FvIDxnYW9s aW1pbmdAYnlvc29mdC5jb20uY24+OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsg TWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9zb2Z0LmNvbT47IE9yYW0sIElz YWFjIFcgPGlzYWFjLncub3JhbUBpbnRlbC5jb20+DQpTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxd IFtlZGsyLXBsYXRmb3Jtc10gW1BBVENIIHYzIDMvNF0gTWluUGxhdGZvcm1Qa2c6IEFkZCBMYXJn ZVZhcmlhYmxlUmVhZExpYg0KDQpIaSBOYXRlLA0KDQpGZWVkYmFjayBpcyBpbmxpbmUuDQoNClBs ZWFzZSBjYXJyeSBvdmVyIGFwcGxpY2FibGUgZmVlZGJhY2sgdG8gTGFyZ2VWYXJpYWJsZVdyaXRl TGliLCBJIGRpZCBub3QgZHVwbGljYXRlIHRoZSByZXNwb25zZSB0aGVyZS4NCg0KVGhhbmtzLA0K TWljaGFlbA0KDQpPbiA0LzYvMjAyMSAxMjoyNCBQTSwgTmF0ZSBEZVNpbW9uZSB3cm90ZToNCj4g TGFyZ2VWYXJpYWJsZVJlYWRMaWIgaXMgdXNlZCB0byByZXRyaWV2ZSBsYXJnZSBkYXRhIHNldHMg dXNpbmcgdGhlIA0KPiBVRUZJIFZhcmlhYmxlIFNlcnZpY2VzLiBBdCB0aW1lIG9mIHdyaXR0aW5n LCBtb3N0IFVFRkkgVmFyaWFibGUgDQo+IFNlcnZpY2VzIGltcGxlbWVudGF0aW9ucyB0byBub3Qg YWxsb3cgbW9yZSB0aGFuIDY0S0Igb2YgZGF0YSB0byBiZSANCj4gc3RvcmVkIGluIGEgc2luZ2xl IFVFRkkgdmFyaWFibGUuIFRoaXMgbGlicmFyeSB3aWxsIHNwbGl0IGRhdGEgc2V0cyANCj4gYWNy b3NzIG11bHRpcGxlIHZhcmlhYmxlcyBhcyBuZWVkZWQuDQo+IA0KPiBJdCBhZGRzIHRoZSBHZXRM YXJnZVZhcmlhYmxlKCkgQVBJIHRvIHByb3ZpZGUgdGhpcyBzZXJ2aWNlLg0KPiANCj4gVGhlIHBy aW1hcnkgdXNlIGZvciB0aGlzIGxpYnJhcnkgaXMgdG8gY3JlYXRlIGJpbmFyeSBjb21wYXRpYmxl IA0KPiBkcml2ZXJzIGFuZCBPcFJPTXMgd2hpY2ggbmVlZCB0byB3b3JrIGJvdGggd2l0aCBUaWFu b0NvcmUgYW5kIG90aGVyIA0KPiBVRUZJIFBJIGltcGxlbWVudGF0aW9ucy4gV2hlbiBjdXN0b21p emluZyBhbmQgcmVjb21waWxpbmcgdGhlIHBsYXRmb3JtIA0KPiBmaXJtd2FyZSBpbWFnZSBpcyBw b3NzaWJsZSwgYWRqdXN0aW5nIHRoZSB2YWx1ZSBvZiBQY2RNYXhWYXJpYWJsZVNpemUgDQo+IG1h eSBwcm92aWRlIGEgc2ltcGxlciBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uDQo+IA0KPiBDYzog Q2hhc2VsIENoaXUgPGNoYXNlbC5jaGl1QGludGVsLmNvbT4NCj4gQ2M6IExpbWluZyBHYW8gPGdh b2xpbWluZ0BieW9zb2Z0LmNvbS5jbj4NCj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVs LmNvbT4NCj4gQ2M6IE1pY2hhZWwgS3ViYWNraSA8bWljaGFlbC5rdWJhY2tpQG1pY3Jvc29mdC5j b20+DQo+IENjOiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPg0KPiBTaWduZWQt b2ZmLWJ5OiBOYXRlIERlU2ltb25lIDxuYXRoYW5pZWwubC5kZXNpbW9uZUBpbnRlbC5jb20+DQo+ IFJldmlld2VkLWJ5OiBJc2FhYyBPcmFtIDxpc2FhYy53Lm9yYW1AaW50ZWwuY29tPg0KPiAtLS0N Cj4gICAuLi4vSW5jbHVkZS9Ec2MvQ29yZUNvbW1vbkxpYi5kc2MgICAgICAgICAgICAgfCAgIDUg Ky0NCj4gICAuLi4vSW5jbHVkZS9MaWJyYXJ5L0xhcmdlVmFyaWFibGVSZWFkTGliLmggICAgfCAg NTYgKysrKysNCj4gICAuLi4vQmFzZUxhcmdlVmFyaWFibGVSZWFkTGliLmluZiAgICAgICAgICAg ICAgfCAgNTAgKysrKysNCj4gICAuLi4vTGFyZ2VWYXJpYWJsZVJlYWRMaWIuYyAgICAgICAgICAg ICAgICAgICAgfCAxOTkgKysrKysrKysrKysrKysrKysrDQo+ICAgNCBmaWxlcyBjaGFuZ2VkLCAz MDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg UGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L0xhcmdlVmFyaWFi bGVSZWFkTGliLmgNCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgUGxhdGZvcm0vSW50ZWwvTWluUGxh dGZvcm1Qa2cvTGlicmFyeS9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIvQmFzZUxhcmdlVmFyaWFi bGVSZWFkTGliLmluZg0KPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCANCj4gUGxhdGZvcm0vSW50ZWwv TWluUGxhdGZvcm1Qa2cvTGlicmFyeS9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIvTGFyZ2VWYQ0K PiByaWFibGVSZWFkTGliLmMNCj4gDQo+IGRpZmYgLS1naXQgDQo+IGEvUGxhdGZvcm0vSW50ZWwv TWluUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ec2MvQ29yZUNvbW1vbkxpYi5kc2MgDQo+IGIvUGxhdGZv cm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ec2MvQ29yZUNvbW1vbkxpYi5kc2MNCj4g aW5kZXggY2YyOTQwY2YwMi4uNWYyYWQzZjBmMCAxMDA2NDQNCj4gLS0tIGEvUGxhdGZvcm0vSW50 ZWwvTWluUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ec2MvQ29yZUNvbW1vbkxpYi5kc2MNCj4gKysrIGIv UGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvSW5jbHVkZS9Ec2MvQ29yZUNvbW1vbkxpYi5k c2MNCj4gQEAgLTEzNSwxMyArMTM1LDE0IEBADQo+ICAgICBWYXJDaGVja0xpYnxNZGVNb2R1bGVQ a2cvTGlicmFyeS9WYXJDaGVja0xpYi9WYXJDaGVja0xpYi5pbmYNCj4gICAgIFBsYXRmb3JtU2Vj dXJlTGlifFNlY3VyaXR5UGtnL0xpYnJhcnkvUGxhdGZvcm1TZWN1cmVMaWJOdWxsL1BsYXRmb3Jt U2VjdXJlTGliTnVsbC5pbmYNCj4gICAgIA0KPiBBdXRoVmFyaWFibGVMaWJ8TWRlTW9kdWxlUGtn L0xpYnJhcnkvQXV0aFZhcmlhYmxlTGliTnVsbC9BdXRoVmFyaWFibGVMDQo+IGliTnVsbC5pbmYN Cj4gLQ0KPiArDQo+ICAgIWlmIGdNaW5QbGF0Zm9ybVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFVlZmlT ZWN1cmVCb290RW5hYmxlID09IFRSVUUNCj4gICAgIEF1dGhWYXJpYWJsZUxpYnxTZWN1cml0eVBr Zy9MaWJyYXJ5L0F1dGhWYXJpYWJsZUxpYi9BdXRoVmFyaWFibGVMaWIuaW5mDQo+ICAgIWVuZGlm DQo+ICAgDQo+ICAgICBTYWZlSW50TGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VTYWZlSW50TGliL0Jh c2VTYWZlSW50TGliLmluZg0KPiAgICAgDQo+IEJtcFN1cHBvcnRMaWJ8TWRlTW9kdWxlUGtnL0xp YnJhcnkvQmFzZUJtcFN1cHBvcnRMaWIvQmFzZUJtcFN1cHBvcnRMaWINCj4gLmluZg0KPiArICAN Cj4gKyBMYXJnZVZhcmlhYmxlUmVhZExpYnxNaW5QbGF0Zm9ybVBrZy9MaWJyYXJ5L0Jhc2VMYXJn ZVZhcmlhYmxlUmVhZExpYg0KPiArIC9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIuaW5mDQo+ICAg DQo+ICAgICAjDQo+ICAgICAjIENyeXB0TGliDQo+IEBAIC0xNjUsNCArMTY2LDQgQEANCj4gICAN Cj4gICAgIFNtYnVzTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VTbWJ1c0xpYk51bGwvQmFzZVNtYnVz TGliTnVsbC5pbmYNCj4gICAgIA0KPiBWYXJpYWJsZVBvbGljeUxpYnxNZGVNb2R1bGVQa2cvTGli cmFyeS9WYXJpYWJsZVBvbGljeUxpYi9WYXJpYWJsZVBvbGljDQo+IHlMaWIuaW5mDQo+IC0gIA0K PiBWYXJpYWJsZVBvbGljeUhlbHBlckxpYnxNZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJpYWJsZVBv bGljeUhlbHBlckxpYi9WDQo+IGFyaWFibGVQb2xpY3lIZWxwZXJMaWIuaW5mDQo+IFwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQ0KPiArICANCj4gKyBWYXJpYWJsZVBvbGljeUhlbHBlckxpYnxN ZGVNb2R1bGVQa2cvTGlicmFyeS9WYXJpYWJsZVBvbGljeUhlbHBlckxpYg0KPiArIC9WYXJpYWJs ZVBvbGljeUhlbHBlckxpYi5pbmYNCj4gZGlmZiAtLWdpdCANCj4gYS9QbGF0Zm9ybS9JbnRlbC9N aW5QbGF0Zm9ybVBrZy9JbmNsdWRlL0xpYnJhcnkvTGFyZ2VWYXJpYWJsZVJlYWRMaWIuaCANCj4g Yi9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9JbmNsdWRlL0xpYnJhcnkvTGFyZ2VWYXJp YWJsZVJlYWRMaWIuaA0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAw Li41NTc5NDkyNzI3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvTWlu UGxhdGZvcm1Qa2cvSW5jbHVkZS9MaWJyYXJ5L0xhcmdlVmFyaWFibGVSZWFkTA0KPiArKysgaWIu aA0KPiBAQCAtMCwwICsxLDU2IEBADQo+ICsvKiogQGZpbGUNCj4gKyAgTGFyZ2UgVmFyaWFibGUg UmVhZCBMaWINCj4gKw0KPiArICBUaGlzIGxpYnJhcnkgaXMgdXNlZCB0byByZXRyaWV2ZSBsYXJn ZSBkYXRhIHNldHMgdXNpbmcgdGhlIFVFRkkgDQo+ICsgVmFyaWFibGUgIFNlcnZpY2VzLiBBdCB0 aW1lIG9mIHdyaXRpbmcsIG1vc3QgVUVGSSBWYXJpYWJsZSBTZXJ2aWNlcyANCj4gKyBpbXBsZW1l bnRhdGlvbnMgdG8gIG5vdCBhbGxvdyBtb3JlIHRoYW4gNjRLQiBvZiBkYXRhIHRvIGJlIHN0b3Jl ZCBpbiANCj4gKyBhIHNpbmdsZSBVRUZJIHZhcmlhYmxlLiBUaGlzICBsaWJyYXJ5IHdpbGwgc3Bs aXQgZGF0YSBzZXRzIGFjcm9zcyBtdWx0aXBsZSB2YXJpYWJsZXMgYXMgbmVlZGVkLg0KPiArDQo+ ICsgIEluIHRoZSBjYXNlIHdoZXJlIG1vcmUgdGhhbiBvbmUgdmFyaWFibGUgaXMgbmVlZGVkIHRv IHN0b3JlIHRoZSANCj4gKyBkYXRhLCBhbiAgaW50ZWdlciBudW1iZXIgd2lsbCBiZSBhZGRlZCB0 byB0aGUgZW5kIG9mIHRoZSB2YXJpYWJsZSANCj4gKyBuYW1lLiBUaGlzIG51bWJlciAgd2lsbCBi ZSBpbmNyZW1lbnRlZCBmb3IgZWFjaCB2YXJpYWJsZSBhcyBuZWVkZWQgDQo+ICsgdG8gcmV0cmll dmUgdGhlIGVudGlyZSBkYXRhICBzZXQuDQo+ICsNCj4gKyAgVGhlIHByaW1hcnkgdXNlIGZvciB0 aGlzIGxpYnJhcnkgaXMgdG8gY3JlYXRlIGJpbmFyeSBjb21wYXRpYmxlIA0KPiArIGRyaXZlcnMg IGFuZCBPcFJPTXMgd2hpY2ggbmVlZCB0byB3b3JrIGJvdGggd2l0aCBUaWFub0NvcmUgYW5kIG90 aGVyIA0KPiArIFVFRkkgUEkgIGltcGxlbWVudGF0aW9ucy4gV2hlbiBjdXN0b21pemluZyBhbmQg cmVjb21waWxpbmcgdGhlIA0KPiArIHBsYXRmb3JtIGZpcm13YXJlIGltYWdlICBpcyBwb3NzaWJs ZSwgYWRqdXN0aW5nIHRoZSB2YWx1ZSBvZiANCj4gKyBQY2RNYXhWYXJpYWJsZVNpemUgbWF5IHBy b3ZpZGUgYSBzaW1wbGVyICBzb2x1dGlvbiB0byB0aGlzIHByb2JsZW0uDQo+ICsNCj4gKyAgQ29w eXJpZ2h0IChjKSAyMDIxLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ICsNCj4gKyoqLw0KPiArDQoNClNpbWlsYXIgY29tbWVudCB0byBWYXJpYWJsZVJlYWRMaWIvVmFy aWFibGVXcml0ZUxpYiwgaGVhZGVyIGd1YXJkIGlzIG1pc3NpbmcuDQoNCj4gKyNpbmNsdWRlIDxV ZWZpL1VlZmlCYXNlVHlwZS5oPg0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB0aGUgdmFsdWUg b2YgYSBsYXJnZSB2YXJpYWJsZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICAgIFZhcmlhYmxl TmFtZSAgQSBOdWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgaXMgdGhlIG5hbWUgb2YgdGhlIHZl bmRvcidzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4NCj4g KyAgQHBhcmFtW2luXSAgICAgICBWZW5kb3JHdWlkICAgIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9y IHRoZSB2ZW5kb3IuDQo+ICsgIEBwYXJhbVtpbiwgb3V0XSAgRGF0YVNpemUgICAgICBPbiBpbnB1 dCwgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHJldHVybiBEYXRhIGJ1ZmZlci4NCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCB0aGUgc2l6ZSBvZiBkYXRhIHJl dHVybmVkIGluIERhdGEuDQo+ICsgIEBwYXJhbVtvdXRdICAgICAgRGF0YSAgICAgICAgICBUaGUg YnVmZmVyIHRvIHJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIHZhcmlhYmxlLiBNYXkgYmUgTlVM TA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHplcm8gRGF0YVNp emUgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHRoZSBzaXplIGJ1ZmZlciBuZWVkZWQuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBjb21wbGV0ZWQg c3VjY2Vzc2Z1bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgVGhlIHZh cmlhYmxlIHdhcyBub3QgZm91bmQuDQo+ICsgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09fU01BTEwg ICBUaGUgRGF0YVNpemUgaXMgdG9vIHNtYWxsIGZvciB0aGUgcmVzdWx0Lg0KPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVmFyaWFibGVOYW1lIGlzIE5VTEwuDQo+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBWZW5kb3JHdWlkIGlzIE5VTEwuDQo+ICsgIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBEYXRhU2l6ZSBpcyBOVUxMLg0KPiArICBAcmV0dmFs IEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgVGhlIERhdGFTaXplIGlzIG5vdCB0b28gc21hbGwgYW5k IERhdGEgaXMgTlVMTC4NCj4gKyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgIFRoZSB2 YXJpYWJsZSBjb3VsZCBub3QgYmUgcmV0cmlldmVkIGR1ZSB0byBhIGhhcmR3YXJlIGVycm9yLg0K PiArICBAcmV0dmFsIEVGSV9TRUNVUklUWV9WSU9MQVRJT04gVGhlIHZhcmlhYmxlIGNvdWxkIG5v dCBiZSByZXRyaWV2ZWQgZHVlIHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+ICsNCj4g KyoqLw0KPiArRUZJX1NUQVRVUw0KPiArRUZJQVBJDQo+ICtHZXRMYXJnZVZhcmlhYmxlICgNCj4g KyAgSU4gICAgIENIQVIxNiAgICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiAr ICBJTiAgICAgRUZJX0dVSUQgICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlkLA0KPiArICBJ TiBPVVQgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICpEYXRhU2l6ZSwNCj4gKyAgT1VUICAg IFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YSAgICAgICAgICAgT1BUSU9OQUwNCj4g KyAgKTsNCj4gZGlmZiAtLWdpdCANCj4gYS9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9M aWJyYXJ5L0Jhc2VMYXJnZVZhcmlhYmxlUmVhZExpYi9CYXNlTA0KPiBhcmdlVmFyaWFibGVSZWFk TGliLmluZiANCj4gYi9QbGF0Zm9ybS9JbnRlbC9NaW5QbGF0Zm9ybVBrZy9MaWJyYXJ5L0Jhc2VM YXJnZVZhcmlhYmxlUmVhZExpYi9CYXNlTA0KPiBhcmdlVmFyaWFibGVSZWFkTGliLmluZg0KPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwLi44MjJmZWJkNjJiDQo+IC0t LSAvZGV2L251bGwNCj4gKysrIGIvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvTGlicmFy eS9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIvQg0KPiArKysgYXNlTGFyZ2VWYXJpYWJsZVJlYWRM aWIuaW5mDQo+IEBAIC0wLDAgKzEsNTAgQEANCj4gKyMjIEBmaWxlDQo+ICsjIENvbXBvbmVudCBk ZXNjcmlwdGlvbiBmaWxlIGZvciBMYXJnZSBWYXJpYWJsZSBSZWFkIExpYnJhcnkgIyAjIFRoaXMg DQo+ICtsaWJyYXJ5IGlzIHVzZWQgdG8gcmV0cmlldmUgbGFyZ2UgZGF0YSBzZXRzIHVzaW5nIHRo ZSBVRUZJIFZhcmlhYmxlICMgDQo+ICtTZXJ2aWNlcy4gQXQgdGltZSBvZiB3cml0aW5nLCBtb3N0 IFVFRkkgVmFyaWFibGUgU2VydmljZXMgDQo+ICtpbXBsZW1lbnRhdGlvbnMgdG8gIyBub3QgYWxs b3cgbW9yZSB0aGFuIDY0S0Igb2YgZGF0YSB0byBiZSBzdG9yZWQgaW4gDQo+ICthIHNpbmdsZSBV RUZJIHZhcmlhYmxlLiBUaGlzICMgbGlicmFyeSB3aWxsIHNwbGl0IGRhdGEgc2V0cyBhY3Jvc3Mg bXVsdGlwbGUgdmFyaWFibGVzIGFzIG5lZWRlZC4NCj4gKyMNCj4gKyMgSW4gdGhlIGNhc2Ugd2hl cmUgbW9yZSB0aGFuIG9uZSB2YXJpYWJsZSBpcyBuZWVkZWQgdG8gc3RvcmUgdGhlIA0KPiArZGF0 YSwgYW4gIyBpbnRlZ2VyIG51bWJlciB3aWxsIGJlIGFkZGVkIHRvIHRoZSBlbmQgb2YgdGhlIHZh cmlhYmxlIA0KPiArbmFtZS4gVGhpcyBudW1iZXIgIyB3aWxsIGJlIGluY3JlbWVudGVkIGZvciBl YWNoIHZhcmlhYmxlIGFzIG5lZWRlZCANCj4gK3RvIHJldHJpZXZlIHRoZSBlbnRpcmUgZGF0YSAj IHNldC4NCj4gKyMNCj4gKyMgVGhlIHByaW1hcnkgdXNlIGZvciB0aGlzIGxpYnJhcnkgaXMgdG8g Y3JlYXRlIGJpbmFyeSBjb21wYXRpYmxlIA0KPiArZHJpdmVycyAjIGFuZCBPcFJPTXMgd2hpY2gg bmVlZCB0byB3b3JrIGJvdGggd2l0aCBUaWFub0NvcmUgYW5kIG90aGVyIA0KPiArVUVGSSBQSSAj IGltcGxlbWVudGF0aW9ucy4gV2hlbiBjdXN0b21pemluZyBhbmQgcmVjb21waWxpbmcgdGhlIA0K PiArcGxhdGZvcm0gZmlybXdhcmUgaW1hZ2UgIyBpcyBwb3NzaWJsZSwgYWRqdXN0aW5nIHRoZSB2 YWx1ZSBvZiANCj4gK1BjZE1heFZhcmlhYmxlU2l6ZSBtYXkgcHJvdmlkZSBhIHNpbXBsZXIgIyBz b2x1dGlvbiB0byB0aGlzIHByb2JsZW0uDQo+ICsjDQo+ICsjIENvcHlyaWdodCAoYykgMjAyMSwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPiAjICMgDQo+ICtTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjICMjDQo+ICsNCj4gK1tE ZWZpbmVzXQ0KPiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1 DQo+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IEJhc2VMYXJnZVZhcmlhYmxl UmVhZExpYg0KPiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA0RTlEN0QzMS1B N0EwLTQwMDQtQUU5My1EMTJGMUFCMDg3MzANCj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAg ICAgICAgID0gQkFTRQ0KPiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjAN Cj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gTGFyZ2VWYXJpYWJsZVJlYWRM aWINCj4gKw0KPiArIw0KPiArIyAgVkFMSURfQVJDSElURUNUVVJFUyAgICAgICAgICAgPSBJQTMy IFg2NCBFQkMNCj4gKyMNCj4gKw0KPiArW1NvdXJjZXNdDQo+ICsgIExhcmdlVmFyaWFibGVSZWFk TGliLmMNCj4gKw0KPiArW1BhY2thZ2VzXQ0KPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiArICBN aW5QbGF0Zm9ybVBrZy9NaW5QbGF0Zm9ybVBrZy5kZWMNCj4gKw0KPiArW0xpYnJhcnlDbGFzc2Vz XQ0KPiArICBCYXNlTGliDQo+ICsgIEJhc2VNZW1vcnlMaWINCj4gKyAgRGVidWdMaWINCj4gKyAg UHJpbnRMaWINCj4gKyAgVmFyaWFibGVSZWFkTGliDQo+IGRpZmYgLS1naXQgDQo+IGEvUGxhdGZv cm0vSW50ZWwvTWluUGxhdGZvcm1Qa2cvTGlicmFyeS9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIv TGFyZ2UNCj4gVmFyaWFibGVSZWFkTGliLmMgDQo+IGIvUGxhdGZvcm0vSW50ZWwvTWluUGxhdGZv cm1Qa2cvTGlicmFyeS9CYXNlTGFyZ2VWYXJpYWJsZVJlYWRMaWIvTGFyZ2UNCj4gVmFyaWFibGVS ZWFkTGliLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMC4uMTE1 ZjNhZWIxNw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL1BsYXRmb3JtL0ludGVsL01pblBsYXRm b3JtUGtnL0xpYnJhcnkvQmFzZUxhcmdlVmFyaWFibGVSZWFkTGliL0wNCj4gKysrIGFyZ2VWYXJp YWJsZVJlYWRMaWIuYw0KPiBAQCAtMCwwICsxLDE5OSBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIExh cmdlIFZhcmlhYmxlIFJlYWQgTGliDQo+ICsNCj4gKyAgVGhpcyBsaWJyYXJ5IGlzIHVzZWQgdG8g cmV0cmlldmUgbGFyZ2UgZGF0YSBzZXRzIHVzaW5nIHRoZSBVRUZJIA0KPiArIFZhcmlhYmxlICBT ZXJ2aWNlcy4gQXQgdGltZSBvZiB3cml0aW5nLCBtb3N0IFVFRkkgVmFyaWFibGUgU2VydmljZXMg DQo+ICsgaW1wbGVtZW50YXRpb25zIHRvICBub3QgYWxsb3cgbW9yZSB0aGFuIDY0S0Igb2YgZGF0 YSB0byBiZSBzdG9yZWQgaW4gDQo+ICsgYSBzaW5nbGUgVUVGSSB2YXJpYWJsZS4gVGhpcyAgbGli cmFyeSB3aWxsIHNwbGl0IGRhdGEgc2V0cyBhY3Jvc3MgbXVsdGlwbGUgdmFyaWFibGVzIGFzIG5l ZWRlZC4NCj4gKw0KPiArICBJbiB0aGUgY2FzZSB3aGVyZSBtb3JlIHRoYW4gb25lIHZhcmlhYmxl IGlzIG5lZWRlZCB0byBzdG9yZSB0aGUgDQo+ICsgZGF0YSwgYW4gIGludGVnZXIgbnVtYmVyIHdp bGwgYmUgYWRkZWQgdG8gdGhlIGVuZCBvZiB0aGUgdmFyaWFibGUgDQo+ICsgbmFtZS4gVGhpcyBu dW1iZXIgIHdpbGwgYmUgaW5jcmVtZW50ZWQgZm9yIGVhY2ggdmFyaWFibGUgYXMgbmVlZGVkIA0K PiArIHRvIHJldHJpZXZlIHRoZSBlbnRpcmUgZGF0YSAgc2V0Lg0KPiArDQo+ICsgIENvcHlyaWdo dCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiArDQo+ ICsqKi8NCj4gKw0KPiArI2luY2x1ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiArI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIu aD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1ByaW50TGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFy eS9WYXJpYWJsZVJlYWRMaWIuaD4NCj4gKw0KPiArLy8NCj4gKy8vIDEwMjQgd2FzIGNob29zZW4g YmVjYXVzZSB0aGlzIGlzIHRoZSBzaXplIG9mIHRoZSBTTU0gY29tbXVuaWNhdGlvbiANCj4gK2J1 ZmZlciAvLyB1c2VkIGJ5IFZhcmlhYmxlRHhlU21tIHRvIHRyYW5zZmVyIHRoZSBWYXJpYWJsZU5h bWUgZnJvbSANCj4gK0RYRSB0byBTTU0uIENob29zaW5nIC8vIHRoZSBzYW1lIHNpemUgd2lsbCBw cmV2ZW50IHRoaXMgbGlicmFyeSBmcm9tIA0KPiArbGltaXRpbmcgdmFyaWFibGUgbmFtZXMgYW55 IC8vIG1vcmUgdGhhbiB0aGUgTWRlTW9kdWxlUGtnIGltcGxlbWVudGF0aW9uIG9mIFVFRkkgVmFy aWFibGUgU2VydmljZXMgZG9lcy4NCj4gKy8vDQo+ICsjZGVmaW5lIE1BWF9WQVJJQUJMRV9OQU1F X1NJWkUgICAgICAxMDI0DQo+ICsNCg0KSXQgd291bGQgYmUgbmljZSB0byBzaGFyZSBhIGRlZmlu aXRpb24gb2YgdGhlc2UgdmFsdWVzIHdpdGggTGFyZ2VWYXJpYWJsZVdyaXRlTGliIHRvIHByZXZl bnQgdGhlIHR3byBmcm9tIHBvdGVudGlhbGx5IGdldHRpbmcgb3V0IG9mIHN5bmMuDQoNCj4gKy8v DQo+ICsvLyBUaGUgMjAxMiBXaW5kb3dzIEhhcmR3YXJlIFJlcXVpcmVtZW50cyBzcGVjaWZpZWQg YSBtaW5pbXVtIA0KPiArdmFyaWFibGUgc2l6ZSBvZiAvLyAzMktCLiBCeSBzZXR0aW5nIHRoZSBt YXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIA0KPiArdmFyaWFibGVzIHRvIDB4MjAwMDAsIHRoaXMg Ly8gYWxsb3dzIHVwIHRvIDRHQiBvZiBkYXRhIHRvIGJlIHN0b3JlZCANCj4gK29uIG1vc3QgVUVG SSBpbXBsZW1lbnRhdGlvbnMgaW4gLy8gZXhpc3RlbmNlLiBPbGRlciBVRUZJIA0KPiAraW1wbGVt ZW50YXRpb25zIHdlcmUga25vd24gdG8gb25seSBwcm92aWRlIDhLQiBwZXIgLy8gdmFyaWFibGUu IEluIA0KPiArdGhpcyBjYXNlLCB1cCB0byAxR0IgY2FuIGJlIHN0b3JlZC4gU2luY2UgMUdCIHZh c3RseSBleGNlZWRzIHRoZSAvLyANCj4gK3NpemUgb2YgYW55IGtub3duIE52U3RvcmFnZSBGViwg Y2hvb3NpbmcgdGhpcyBudW1iZXIgc2hvdWxkIGVmZmVjdGl2ZWx5IC8vIGVuYWJsZSBhbGwgYXZh aWxhYmxlIE52U3RvcmFnZSBzcGFjZSB0byBiZSB1c2VkIHRvIHN0b3JlIHRoZSBnaXZlbiBkYXRh Lg0KPiArLy8NCj4gKyNkZWZpbmUgTUFYX1ZBUklBQkxFX1NQTElUICAgICAgICAgIDEzMTA3MiAg Ly8gMHgyMDAwMA0KPiArDQo+ICsvLw0KPiArLy8gVGhlcmUgYXJlIDYgZGlnaXRzIGluIHRoZSBu dW1iZXIgMTMxMDcyLCB3aGljaCBtZWFucyB0aGUgbGVuZ3RoIG9mIA0KPiArdGhlIHN0cmluZyAv LyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG51bWJlciB3aWxsIGJlIGF0IG1vc3QgNiBjaGFyYWN0 ZXJzIGxvbmcuDQo+ICsvLw0KPiArI2RlZmluZSBNQVhfVkFSSUFCTEVfU1BMSVRfRElHSVRTICAg Ng0KPiArDQo+ICsvKioNCj4gKyAgUmV0dXJucyB0aGUgdmFsdWUgb2YgYSBsYXJnZSB2YXJpYWJs ZS4NCj4gKw0KPiArICBAcGFyYW1baW5dICAgICAgIFZhcmlhYmxlTmFtZSAgQSBOdWxsLXRlcm1p bmF0ZWQgc3RyaW5nIHRoYXQgaXMgdGhlIG5hbWUgb2YgdGhlIHZlbmRvcidzDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4NCj4gKyAgQHBhcmFtW2luXSAgICAg ICBWZW5kb3JHdWlkICAgIEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB2ZW5kb3IuDQo+ICsg IEBwYXJhbVtpbiwgb3V0XSAgRGF0YVNpemUgICAgICBPbiBpbnB1dCwgdGhlIHNpemUgaW4gYnl0 ZXMgb2YgdGhlIHJldHVybiBEYXRhIGJ1ZmZlci4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9uIG91dHB1dCB0aGUgc2l6ZSBvZiBkYXRhIHJldHVybmVkIGluIERhdGEuDQo+ ICsgIEBwYXJhbVtvdXRdICAgICAgRGF0YSAgICAgICAgICBUaGUgYnVmZmVyIHRvIHJldHVybiB0 aGUgY29udGVudHMgb2YgdGhlIHZhcmlhYmxlLiBNYXkgYmUgTlVMTA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgd2l0aCBhIHplcm8gRGF0YVNpemUgaW4gb3JkZXIgdG8gZGV0 ZXJtaW5lIHRoZSBzaXplIGJ1ZmZlciBuZWVkZWQuDQo+ICsNCj4gKyAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICAgICAgIFRoZSBmdW5jdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgVGhlIHZhcmlhYmxlIHdhcyBub3QgZm91 bmQuDQo+ICsgIEByZXR2YWwgRUZJX0JVRkZFUl9UT09fU01BTEwgICBUaGUgRGF0YVNpemUgaXMg dG9vIHNtYWxsIGZvciB0aGUgcmVzdWx0Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiAgVmFyaWFibGVOYW1lIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICBWZW5kb3JHdWlkIGlzIE5VTEwuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICBEYXRhU2l6ZSBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFN RVRFUiAgVGhlIERhdGFTaXplIGlzIG5vdCB0b28gc21hbGwgYW5kIERhdGEgaXMgTlVMTC4NCj4g KyAgQHJldHZhbCBFRklfREVWSUNFX0VSUk9SICAgICAgIFRoZSB2YXJpYWJsZSBjb3VsZCBub3Qg YmUgcmV0cmlldmVkIGR1ZSB0byBhIGhhcmR3YXJlIGVycm9yLg0KPiArICBAcmV0dmFsIEVGSV9T RUNVUklUWV9WSU9MQVRJT04gVGhlIHZhcmlhYmxlIGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQgZHVl IHRvIGFuIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUuDQo+ICsNCj4gKyoqLw0KPiArRUZJX1NUQVRV Uw0KPiArRUZJQVBJDQo+ICtHZXRMYXJnZVZhcmlhYmxlICgNCj4gKyAgSU4gICAgIENIQVIxNiAg ICAgICAgICAgICAgICAgICAgICAqVmFyaWFibGVOYW1lLA0KPiArICBJTiAgICAgRUZJX0dVSUQg ICAgICAgICAgICAgICAgICAgICpWZW5kb3JHdWlkLA0KPiArICBJTiBPVVQgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICpEYXRhU2l6ZSwNCj4gKyAgT1VUICAgIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICAqRGF0YSAgICAgICAgICAgT1BUSU9OQUwNCj4gKyAgKQ0KPiArew0KPiArICBD SEFSMTYgICAgICAgIFRlbXBWYXJpYWJsZU5hbWVbTUFYX1ZBUklBQkxFX05BTUVfU0laRV07DQo+ ICsgIEVGSV9TVEFUVVMgICAgU3RhdHVzOw0KPiArICBVSU5UTiAgICAgICAgIFRvdGFsU2l6ZTsN Cj4gKyAgVUlOVE4gICAgICAgICBWYXJEYXRhU2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICBJbmRl eDsNCj4gKyAgVUlOVE4gICAgICAgICBWYXJpYWJsZVNpemU7DQo+ICsgIFVJTlROICAgICAgICAg Qnl0ZXNSZW1haW5pbmc7DQo+ICsgIFVJTlQ4ICAgICAgICAgKk9mZnNldFB0cjsNCj4gKw0KPiAr ICBWYXJEYXRhU2l6ZSA9IDA7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gRmlyc3QgY2hlY2sgaWYg YSB2YXJpYWJsZSB3aXRoIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyAgLy8gIFN0YXR1cyANCj4gKyA9 IFZhckxpYkdldFZhcmlhYmxlIChWYXJpYWJsZU5hbWUsIFZlbmRvckd1aWQsIE5VTEwsICZWYXJE YXRhU2l6ZSwgDQo+ICsgTlVMTCk7ICBpZiAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxM KSB7DQo+ICsgICAgaWYgKCpEYXRhU2l6ZSA+PSBWYXJEYXRhU2l6ZSkgew0KPiArICAgICAgaWYg KERhdGEgPT0gTlVMTCkgew0KPiArICAgICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9QQVJBTUVU RVI7DQo+ICsgICAgICAgIGdvdG8gRG9uZTsNCj4gKyAgICAgIH0NCj4gKyAgICAgIERFQlVHICgo REVCVUdfSU5GTywgIkdldExhcmdlVmFyaWFibGU6IFNpbmdsZSBWYXJpYWJsZSANCj4gKyBGb3Vu ZFxuIikpOw0KDQpUaGlzIGlzIHNvbWV3aGF0IHN1YmplY3RpdmUgYnV0IGRvIHlvdSB0aGluayB0 aGUgbWVzc2FnZSBhYm92ZSBzaG91bGQgcmVtYWluIERFQlVHX0lORk8/IEl0IHNlZW1zIGxpa2Ug REVCVUdfVkVSQk9TRSBtaWdodCBiZSBhcHByb3ByaWF0ZSAoc2FtZSB0byBjb3VudGVycGFydCBt ZXNzYWdlcyBpbiBvdGhlciBwbGFjZXMpLg0KDQo+ICsgICAgICBTdGF0dXMgPSBWYXJMaWJHZXRW YXJpYWJsZSAoVmFyaWFibGVOYW1lLCBWZW5kb3JHdWlkLCBOVUxMLCBEYXRhU2l6ZSwgRGF0YSk7 DQo+ICsgICAgICBnb3RvIERvbmU7DQo+ICsgICAgfSBlbHNlIHsNCj4gKyAgICAgICpEYXRhU2l6 ZSA9IFZhckRhdGFTaXplOw0KPiArICAgICAgU3RhdHVzID0gRUZJX0JVRkZFUl9UT09fU01BTEw7 DQo+ICsgICAgICBnb3RvIERvbmU7DQo+ICsgICAgfQ0KPiArDQo+ICsgIH0gZWxzZSBpZiAoU3Rh dHVzID09IEVGSV9OT1RfRk9VTkQpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIENoZWNrIGlmIHRo ZSBmaXJzdCB2YXJpYWJsZSBvZiBhIG11bHRpLXZhcmlhYmxlIHNldCBleGlzdHMNCj4gKyAgICAv Lw0KPiArICAgIGlmIChTdHJMZW4gKFZhcmlhYmxlTmFtZSkgPj0gKE1BWF9WQVJJQUJMRV9OQU1F X1NJWkUgLSBNQVhfVkFSSUFCTEVfU1BMSVRfRElHSVRTKSkgew0KPiArICAgICAgREVCVUcgKChE RUJVR19FUlJPUiwgIkdldExhcmdlVmFyaWFibGU6IFZhcmlhYmxlIG5hbWUgdG9vIGxvbmdcbiIp KTsNCj4gKyAgICAgIFN0YXR1cyA9IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiArICAgICAgZ290 byBEb25lOw0KPiArICAgIH0NCj4gKw0KPiArICAgIFZhckRhdGFTaXplID0gMDsNCj4gKyAgICBJ bmRleCAgICAgICA9IDA7DQo+ICsgICAgWmVyb01lbSAoVGVtcFZhcmlhYmxlTmFtZSwgTUFYX1ZB UklBQkxFX05BTUVfU0laRSk7DQo+ICsgICAgVW5pY29kZVNQcmludCAoVGVtcFZhcmlhYmxlTmFt ZSwgTUFYX1ZBUklBQkxFX05BTUVfU0laRSwgTCIlcyVkIiwgVmFyaWFibGVOYW1lLCBJbmRleCk7 DQo+ICsgICAgU3RhdHVzID0gVmFyTGliR2V0VmFyaWFibGUgKFRlbXBWYXJpYWJsZU5hbWUsIFZl bmRvckd1aWQsIE5VTEwsIA0KPiArICZWYXJEYXRhU2l6ZSwgTlVMTCk7DQo+ICsNCj4gKyAgICBp ZiAoU3RhdHVzID09IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7DQo+ICsgICAgICAvLw0KPiArICAg ICAgLy8gVGhlIGZpcnN0IHZhcmlhYmxlIGV4aXN0cy4gQ2FsY3VsYXRlIHRoZSB0b3RhbCBzaXpl IG9mIGFsbCB0aGUgdmFyaWFibGVzLg0KPiArICAgICAgLy8NCj4gKyAgICAgIERFQlVHICgoREVC VUdfSU5GTywgIkdldExhcmdlVmFyaWFibGU6IE11bHRpcGxlIFZhcmlhYmxlcyBGb3VuZFxuIikp Ow0KPiArICAgICAgVG90YWxTaXplID0gMDsNCj4gKyAgICAgIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IE1BWF9WQVJJQUJMRV9TUExJVDsgSW5kZXgrKykgew0KPiArICAgICAgICBWYXJEYXRhU2l6 ZSA9IDA7DQo+ICsgICAgICAgIFplcm9NZW0gKFRlbXBWYXJpYWJsZU5hbWUsIE1BWF9WQVJJQUJM RV9OQU1FX1NJWkUpOw0KPiArICAgICAgICBVbmljb2RlU1ByaW50IChUZW1wVmFyaWFibGVOYW1l LCBNQVhfVkFSSUFCTEVfTkFNRV9TSVpFLCBMIiVzJWQiLCBWYXJpYWJsZU5hbWUsIEluZGV4KTsN Cj4gKyAgICAgICAgU3RhdHVzID0gVmFyTGliR2V0VmFyaWFibGUgKFRlbXBWYXJpYWJsZU5hbWUs IFZlbmRvckd1aWQsIE5VTEwsICZWYXJEYXRhU2l6ZSwgTlVMTCk7DQo+ICsgICAgICAgIGlmIChT dGF0dXMgIT0gRUZJX0JVRkZFUl9UT09fU01BTEwpIHsNCj4gKyAgICAgICAgICBicmVhazsNCj4g KyAgICAgICAgfQ0KPiArICAgICAgICBUb3RhbFNpemUgKz0gVmFyRGF0YVNpemU7DQo+ICsgICAg ICB9DQo+ICsgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJUb3RhbFNpemUgPSAlZCwgTnVtVmFy aWFibGVzID0gJWRcbiIsIA0KPiArIFRvdGFsU2l6ZSwgSW5kZXgpKTsNCj4gKw0KPiArICAgICAg Ly8NCj4gKyAgICAgIC8vIENoZWNrIGlmIHRoZSB1c2VyIHByb3ZpZGVkIGEgbGFyZ2UgZW5vdWdo IGJ1ZmZlcg0KPiArICAgICAgLy8NCj4gKyAgICAgIGlmICgqRGF0YVNpemUgPj0gVG90YWxTaXpl KSB7DQo+ICsgICAgICAgIGlmIChEYXRhID09IE5VTEwpIHsNCj4gKyAgICAgICAgICBTdGF0dXMg PSBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ICsgICAgICAgICAgZ290byBEb25lOw0KPiArICAg ICAgICB9DQo+ICsNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgLy8gUmVhZCB0aGUgZGF0YSBm cm9tIGFsbCB2YXJpYWJsZXMNCj4gKyAgICAgICAgLy8NCj4gKyAgICAgICAgT2Zmc2V0UHRyICAg ICAgID0gKFVJTlQ4ICopIERhdGE7DQo+ICsgICAgICAgIEJ5dGVzUmVtYWluaW5nICA9ICpEYXRh U2l6ZTsNCj4gKyAgICAgICAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTUFYX1ZBUklBQkxFX1NQ TElUOyBJbmRleCsrKSB7DQo+ICsgICAgICAgICAgVmFyRGF0YVNpemUgPSAwOw0KPiArICAgICAg ICAgIFplcm9NZW0gKFRlbXBWYXJpYWJsZU5hbWUsIE1BWF9WQVJJQUJMRV9OQU1FX1NJWkUpOw0K PiArICAgICAgICAgIFVuaWNvZGVTUHJpbnQgKFRlbXBWYXJpYWJsZU5hbWUsIE1BWF9WQVJJQUJM RV9OQU1FX1NJWkUsIEwiJXMlZCIsIFZhcmlhYmxlTmFtZSwgSW5kZXgpOw0KPiArICAgICAgICAg IFZhcmlhYmxlU2l6ZSA9IEJ5dGVzUmVtYWluaW5nOw0KPiArICAgICAgICAgIERFQlVHICgoREVC VUdfSU5GTywgIlJlYWRpbmcgJXMsIEd1aWQgPSAlZywiLCBUZW1wVmFyaWFibGVOYW1lLCBWZW5k b3JHdWlkKSk7DQo+ICsgICAgICAgICAgU3RhdHVzID0gVmFyTGliR2V0VmFyaWFibGUgKFRlbXBW YXJpYWJsZU5hbWUsIFZlbmRvckd1aWQsIE5VTEwsICZWYXJpYWJsZVNpemUsIChWT0lEICopIE9m ZnNldFB0cik7DQo+ICsgICAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiIFNpemUgJWRcbiIs IFZhcmlhYmxlU2l6ZSkpOw0KPiArICAgICAgICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsN Cj4gKyAgICAgICAgICAgIGlmIChTdGF0dXMgPT0gRUZJX05PVF9GT1VORCkgew0KPiArICAgICAg ICAgICAgICBERUJVRyAoKERFQlVHX0lORk8sICJObyBtb3JlIHZhcmlhYmxlcyBmb3VuZFxuIikp Ow0KPiArICAgICAgICAgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsgICAvLyBUaGUgZW5kIGhh cyBiZWVuIHJlYWNoZWQNCj4gKyAgICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgIGdvdG8gRG9u ZTsNCj4gKyAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICBpZiAoVmFyaWFibGVTaXplIDwg Qnl0ZXNSZW1haW5pbmcpIHsNCj4gKyAgICAgICAgICAgIEJ5dGVzUmVtYWluaW5nIC09IFZhcmlh YmxlU2l6ZTsNCj4gKyAgICAgICAgICAgIE9mZnNldFB0ciArPSBWYXJpYWJsZVNpemU7DQo+ICsg ICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgIERFQlVHICgoREVCVUdfSU5GTywgIkFs bCBkYXRhIGhhcyBiZWVuIHJlYWRcbiIpKTsNCj4gKyAgICAgICAgICAgIEJ5dGVzUmVtYWluaW5n ID0gMDsNCj4gKyAgICAgICAgICAgIGJyZWFrOw0KPiArICAgICAgICAgIH0NCj4gKyAgICAgICAg fSAgIC8vRW5kIG9mIGZvciBsb29wDQo+ICsNCj4gKyAgICAgICAgZ290byBEb25lOw0KPiArICAg ICAgfSBlbHNlIHsNCj4gKyAgICAgICAgKkRhdGFTaXplID0gVG90YWxTaXplOw0KPiArICAgICAg ICBTdGF0dXMgPSBFRklfQlVGRkVSX1RPT19TTUFMTDsNCj4gKyAgICAgICAgZ290byBEb25lOw0K PiArICAgICAgfQ0KPiArICAgIH0gZWxzZSB7DQo+ICsgICAgICBTdGF0dXMgPSBFRklfTk9UX0ZP VU5EOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICtEb25lOg0KPiArICBERUJVRyAoKERFQlVH X0VSUk9SLCAiR2V0TGFyZ2VWYXJpYWJsZTogU3RhdHVzID0gJXJcbiIsIFN0YXR1cykpOw0KPiAr ICByZXR1cm4gU3RhdHVzOw0KPiArfQ0KPiANCg0KDQoNCg0KDQo=