From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 7A8AE22620E68 for ; Fri, 6 Apr 2018 08:29:08 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Apr 2018 08:29:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,415,1517904000"; d="scan'208";a="218212053" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga005.fm.intel.com with ESMTP; 06 Apr 2018 08:29:07 -0700 Received: from orsmsx111.amr.corp.intel.com (10.22.240.12) by ORSMSX102.amr.corp.intel.com (10.22.225.129) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 6 Apr 2018 08:29:06 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.67]) by ORSMSX111.amr.corp.intel.com ([169.254.12.250]) with mapi id 14.03.0319.002; Fri, 6 Apr 2018 08:29:06 -0700 From: "Kinney, Michael D" To: Ard Biesheuvel , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Yao, Jiewen" Thread-Topic: [edk2] [Patch 9/9] SignedCapsulePkg/SystemFirmwareUpdateDxe: Use progress API Thread-Index: AQHTzFMxT4/S2O0tJEmOKjBkmRjpWaP0OoYA//+kLYA= Date: Fri, 6 Apr 2018 15:29:06 +0000 Message-ID: References: <20180404202554.9568-1-michael.d.kinney@intel.com> <20180404202554.9568-10-michael.d.kinney@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Subject: Re: [Patch 9/9] SignedCapsulePkg/SystemFirmwareUpdateDxe: Use progress API X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 06 Apr 2018 15:29:08 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkLA0KDQpZZXMuICBJIG5lZWQgdG8gZG8gYW4gZWRrMi1wbGF0Zm9ybXMgcGF0Y2ggdG8NCmdv IHdpdGggdGhpcyBvbmUuDQoNClRoZSBjdXJyZW50IEFQSSBjYW4gYmUgaW1wbGVtZW50ZWQgb24g dG9wIG9mDQp0aGUgbmV3IEFQSSB3aXRoIG5vIHVzZSBvZiBwcm9ncmVzcy4gVGhhdCBpcyB0aGUN CnNpbXBsZSBwYXRjaC4gIEVhY2ggcGxhdGZvcm0gY2FuIGNob29zZSB0byB1c2UNCnByb2dyZXNz IGZvciBwb3J0aW9ucyBvZiBmbGFzaCB1cGRhdGUgaWYgbmVlZGVkLg0KDQpNaWtlDQoNCj4gLS0t LS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzph cmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDYsIDIwMTgg Njo1NSBBTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwu Y29tPg0KPiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7IFlhbywgSmlld2VuDQo+IDxqaWV3 ZW4ueWFvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUGF0Y2ggOS85XQ0KPiBT aWduZWRDYXBzdWxlUGtnL1N5c3RlbUZpcm13YXJlVXBkYXRlRHhlOiBVc2UgcHJvZ3Jlc3MNCj4g QVBJDQo+IA0KPiBPbiA0IEFwcmlsIDIwMTggYXQgMjI6MjUsIE1pY2hhZWwgRCBLaW5uZXkNCj4g PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPiB3cm90ZToNCj4gPiBGcm9tOiAiS2lubmV5LCBN aWNoYWVsIEQiDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPg0KPiA+IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODAxDQo+ID4NCj4gPiBV c2UgUGxhdGZvcm1GbGFzaFdyaXRlV2l0aFByb2dyZXNzKCkgaW5zdGVhZCBvZg0KPiBQbGF0Zm9y bUZMYXNoV3JpdGUoKQ0KPiA+IHNvIHRoZSB1c2VyIGNhbiBiZSBpbmZvcm1lZCBvZiB0aGUgcHJv Z3Jlc3MgYXMgYQ0KPiBjYXBzdWxlIGlzIHVzZWQNCj4gPiB0byB1cGRhdGUgYSBmaXJtd2FyZSBp bWFnZSBpbiBhIGZpcm13YXJlIGRldmljZS4NCj4gPg0KPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEQgS2lubmV5DQo+ IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlh bm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQNCj4gMS4xDQo+IA0KPiBEb2Vzbid0IHRoaXMg YnJlYWsgZXhpc3RpbmcgcGxhdGZvcm1zIHRoYXQgZG8gbm90DQo+IGltcGxlbWVudCB0aGlzIGlu DQo+IHRoZWlyIFBsYXRmb3JtRmxhc2hBY2Nlc3NMaWI/DQo+IA0KPiA+IC0tLQ0KPiA+ICAuLi4v U3lzdGVtRmlybXdhcmVVcGRhdGUvU3lzdGVtRmlybXdhcmVVcGRhdGVEeGUuYyB8DQo+IDkyICsr KysrKysrKysrKysrKystLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDY4IGluc2VydGlvbnMo KyksIDI0IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdA0KPiBhL1NpZ25lZENhcHN1 bGVQa2cvVW5pdmVyc2FsL1N5c3RlbUZpcm13YXJlVXBkYXRlL1N5c3RlDQo+IG1GaXJtd2FyZVVw ZGF0ZUR4ZS5jDQo+IGIvU2lnbmVkQ2Fwc3VsZVBrZy9Vbml2ZXJzYWwvU3lzdGVtRmlybXdhcmVV cGRhdGUvU3lzdGUNCj4gbUZpcm13YXJlVXBkYXRlRHhlLmMNCj4gPiBpbmRleCBmZDY2NDFlYjNl Li44ZDJlMGRmODFjIDEwMDY0NA0KPiA+IC0tLQ0KPiBhL1NpZ25lZENhcHN1bGVQa2cvVW5pdmVy c2FsL1N5c3RlbUZpcm13YXJlVXBkYXRlL1N5c3RlDQo+IG1GaXJtd2FyZVVwZGF0ZUR4ZS5jDQo+ ID4gKysrDQo+IGIvU2lnbmVkQ2Fwc3VsZVBrZy9Vbml2ZXJzYWwvU3lzdGVtRmlybXdhcmVVcGRh dGUvU3lzdGUNCj4gbUZpcm13YXJlVXBkYXRlRHhlLmMNCj4gPiBAQCAtOCw3ICs4LDcgQEANCj4g Pg0KPiA+ICAgIEZtcFNldEltYWdlKCkgd2lsbCByZWNlaXZlIHVudHJ1c3RlZCBpbnB1dCBhbmQg ZG8NCj4gYmFzaWMgdmFsaWRhdGlvbi4NCj4gPg0KPiA+IC0gIENvcHlyaWdodCAoYykgMjAxNiwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgIENv cHlyaWdodCAoYykgMjAxNiAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPiAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcg bWF0ZXJpYWxzDQo+ID4gICAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0 aGUgdGVybXMNCj4gYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlDQo+ID4gICAgd2hp Y2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbA0KPiB0ZXh0IG9mIHRo ZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdA0KPiA+IEBAIC02NSwxMSArNjUsMTQgQEAgUGFyc2VV cGRhdGVEYXRhRmlsZSAoDQo+ID4gICoqLw0KPiA+ICBFRklfU1RBVFVTDQo+ID4gIFBlcmZvcm1V cGRhdGUgKA0KPiA+IC0gIElOIFZPSUQNCj4gKlN5c3RlbUZpcm13YXJlSW1hZ2UsDQo+ID4gLSAg SU4gVUlOVE4NCj4gU3lzdGVtRmlybXdhcmVJbWFnZVNpemUsDQo+ID4gLSAgSU4gVVBEQVRFX0NP TkZJR19EQVRBICAgICAgICAgICAqQ29uZmlnRGF0YSwNCj4gPiAtICBPVVQgVUlOVDMyDQo+ICpM YXN0QXR0ZW1wdFZlcnNpb24sDQo+ID4gLSAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAg ICAqTGFzdEF0dGVtcHRTdGF0dXMNCj4gPiArICBJTiBWT0lEDQo+ICpTeXN0ZW1GaXJtd2FyZUlt YWdlLA0KPiA+ICsgIElOIFVJTlRODQo+IFN5c3RlbUZpcm13YXJlSW1hZ2VTaXplLA0KPiA+ICsg IElOIFVQREFURV9DT05GSUdfREFUQQ0KPiAqQ29uZmlnRGF0YSwNCj4gPiArICBPVVQgVUlOVDMy DQo+ICpMYXN0QXR0ZW1wdFZlcnNpb24sDQo+ID4gKyAgT1VUIFVJTlQzMg0KPiAqTGFzdEF0dGVt cHRTdGF0dXMsDQo+ID4gKyAgSU4gRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfVVBEQVRFX0lNQUdF X1BST0dSRVNTDQo+IFByb2dyZXNzLA0KPiA+ICsgIElOIFVJTlRODQo+IFN0YXJ0UGVyY2VudGFn ZSwNCj4gPiArICBJTiBVSU5UTg0KPiBFbmRQZXJjZW50YWdlDQo+ID4gICAgKQ0KPiA+ICB7DQo+ ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gQEAgLTc4LDEy ICs4MSwxNSBAQCBQZXJmb3JtVXBkYXRlICgNCj4gPiAgICBERUJVRygoREVCVUdfSU5GTywgIiAg QmFzZUFkZHJlc3MgLSAweCVseCwiLA0KPiBDb25maWdEYXRhLT5CYXNlQWRkcmVzcykpOw0KPiA+ ICAgIERFQlVHKChERUJVR19JTkZPLCAiICBJbWFnZU9mZnNldCAtIDB4JXgsIiwNCj4gQ29uZmln RGF0YS0+SW1hZ2VPZmZzZXQpKTsNCj4gPiAgICBERUJVRygoREVCVUdfSU5GTywgIiAgTGVnbnRo IC0gMHgleFxuIiwNCj4gQ29uZmlnRGF0YS0+TGVuZ3RoKSk7DQo+ID4gLSAgU3RhdHVzID0gUGVy Zm9ybUZsYXNoV3JpdGUgKA0KPiA+ICsgIFN0YXR1cyA9IFBlcmZvcm1GbGFzaFdyaXRlV2l0aFBy b2dyZXNzICgNCj4gPiAgICAgICAgICAgICAgIENvbmZpZ0RhdGEtPkZpcm13YXJlVHlwZSwNCj4g PiAgICAgICAgICAgICAgIENvbmZpZ0RhdGEtPkJhc2VBZGRyZXNzLA0KPiA+ICAgICAgICAgICAg ICAgQ29uZmlnRGF0YS0+QWRkcmVzc1R5cGUsDQo+ID4gICAgICAgICAgICAgICAoVk9JRCAqKSgo VUlOVE4pU3lzdGVtRmlybXdhcmVJbWFnZSArDQo+IChVSU5UTilDb25maWdEYXRhLT5JbWFnZU9m ZnNldCksDQo+ID4gLSAgICAgICAgICAgICBDb25maWdEYXRhLT5MZW5ndGgNCj4gPiArICAgICAg ICAgICAgIENvbmZpZ0RhdGEtPkxlbmd0aCwNCj4gPiArICAgICAgICAgICAgIFByb2dyZXNzLA0K PiA+ICsgICAgICAgICAgICAgU3RhcnRQZXJjZW50YWdlLA0KPiA+ICsgICAgICAgICAgICAgRW5k UGVyY2VudGFnZQ0KPiA+ICAgICAgICAgICAgICAgKTsNCj4gPiAgICBpZiAoIUVGSV9FUlJPUihT dGF0dXMpKSB7DQo+ID4gICAgICAqTGFzdEF0dGVtcHRTdGF0dXMgPQ0KPiBMQVNUX0FUVEVNUFRf U1RBVFVTX1NVQ0NFU1M7DQo+ID4gQEAgLTExMSwxMiArMTE3LDEzIEBAIFBlcmZvcm1VcGRhdGUg KA0KPiA+ICAqKi8NCj4gPiAgRUZJX1NUQVRVUw0KPiA+ICBVcGRhdGVJbWFnZSAoDQo+ID4gLSAg SU4gVk9JRA0KPiAqU3lzdGVtRmlybXdhcmVJbWFnZSwNCj4gPiAtICBJTiBVSU5UTg0KPiBTeXN0 ZW1GaXJtd2FyZUltYWdlU2l6ZSwNCj4gPiAtICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAg ICAgICpDb25maWdJbWFnZSwNCj4gPiAtICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAg IENvbmZpZ0ltYWdlU2l6ZSwNCj4gPiAtICBPVVQgVUlOVDMyDQo+ICpMYXN0QXR0ZW1wdFZlcnNp b24sDQo+ID4gLSAgT1VUIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAqTGFzdEF0dGVtcHRT dGF0dXMNCj4gPiArICBJTiBWT0lEDQo+ICpTeXN0ZW1GaXJtd2FyZUltYWdlLA0KPiA+ICsgIElO IFVJTlRODQo+IFN5c3RlbUZpcm13YXJlSW1hZ2VTaXplLA0KPiA+ICsgIElOIFZPSUQNCj4gKkNv bmZpZ0ltYWdlLA0KPiA+ICsgIElOIFVJTlRODQo+IENvbmZpZ0ltYWdlU2l6ZSwNCj4gPiArICBP VVQgVUlOVDMyDQo+ICpMYXN0QXR0ZW1wdFZlcnNpb24sDQo+ID4gKyAgT1VUIFVJTlQzMg0KPiAq TGFzdEF0dGVtcHRTdGF0dXMsDQo+ID4gKyAgSU4gRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfVVBE QVRFX0lNQUdFX1BST0dSRVNTDQo+IFByb2dyZXNzDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gICAg RUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4gQEAgLTEy NCwxOSArMTMxLDM0IEBAIFVwZGF0ZUltYWdlICgNCj4gPiAgICBVUERBVEVfQ09ORklHX0RBVEEN Cj4gKlVwZGF0ZUNvbmZpZ0RhdGE7DQo+ID4gICAgQ09ORklHX0hFQURFUg0KPiBDb25maWdIZWFk ZXI7DQo+ID4gICAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbmRleDsN Cj4gPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsU2l6ZTsN Cj4gPiArICBVSU5UTg0KPiBCeXRlc1dyaXR0ZW47DQo+ID4gKyAgVUlOVE4NCj4gU3RhcnRQZXJj ZW50YWdlOw0KPiA+ICsgIFVJTlRODQo+IEVuZFBlcmNlbnRhZ2U7DQo+ID4NCj4gPiAgICBpZiAo Q29uZmlnSW1hZ2UgPT0gTlVMTCkgew0KPiA+ICAgICAgREVCVUcoKERFQlVHX0lORk8sICJQbGF0 Zm9ybVVwZGF0ZQ0KPiAoTm9Db25maWcpOiIpKTsNCj4gPiAgICAgIERFQlVHKChERUJVR19JTkZP LCAiICBCYXNlQWRkcmVzcyAtIDB4JXgsIiwgMCkpOw0KPiA+ICAgICAgREVCVUcoKERFQlVHX0lO Rk8sICIgIExlbmd0aCAtIDB4JXhcbiIsDQo+IFN5c3RlbUZpcm13YXJlSW1hZ2VTaXplKSk7DQo+ ID4gICAgICAvLyBBU1NVTUUgdGhlIHdob2xlIFN5c3RlbSBGaXJtd2FyZSBpbmNsdWRlDQo+IE5W UkFNIHJlZ2lvbi4NCj4gPiAtICAgIFN0YXR1cyA9IFBlcmZvcm1GbGFzaFdyaXRlICgNCj4gPiAr ICAgIFN0YXJ0UGVyY2VudGFnZSA9IDA7DQo+ID4gKyAgICBFbmRQZXJjZW50YWdlID0gMTAwOw0K PiA+ICsgICAgaWYgKFByb2dyZXNzICE9IE5VTEwpIHsNCj4gPiArICAgICAgUHJvZ3Jlc3MgKFN0 YXJ0UGVyY2VudGFnZSk7DQo+ID4gKyAgICB9DQo+ID4gKyAgICBTdGF0dXMgPSBQZXJmb3JtRmxh c2hXcml0ZVdpdGhQcm9ncmVzcyAoDQo+ID4gICAgICAgICAgICAgICAgIFBsYXRmb3JtRmlybXdh cmVUeXBlTnZSYW0sDQo+ID4gICAgICAgICAgICAgICAgIDAsDQo+ID4gICAgICAgICAgICAgICAg IEZsYXNoQWRkcmVzc1R5cGVSZWxhdGl2ZUFkZHJlc3MsDQo+ID4gICAgICAgICAgICAgICAgIFN5 c3RlbUZpcm13YXJlSW1hZ2UsDQo+ID4gLSAgICAgICAgICAgICAgIFN5c3RlbUZpcm13YXJlSW1h Z2VTaXplDQo+ID4gKyAgICAgICAgICAgICAgIFN5c3RlbUZpcm13YXJlSW1hZ2VTaXplLA0KPiA+ ICsgICAgICAgICAgICAgICBQcm9ncmVzcywNCj4gPiArICAgICAgICAgICAgICAgU3RhcnRQZXJj ZW50YWdlLA0KPiA+ICsgICAgICAgICAgICAgICBFbmRQZXJjZW50YWdlDQo+ID4gICAgICAgICAg ICAgICAgICk7DQo+ID4gKyAgICBpZiAoUHJvZ3Jlc3MgIT0gTlVMTCkgew0KPiA+ICsgICAgICBQ cm9ncmVzcyAoRW5kUGVyY2VudGFnZSk7DQo+ID4gKyAgICB9DQo+ID4gICAgICBpZiAoIUVGSV9F UlJPUihTdGF0dXMpKSB7DQo+ID4gICAgICAgICpMYXN0QXR0ZW1wdFN0YXR1cyA9DQo+IExBU1Rf QVRURU1QVF9TVEFUVVNfU1VDQ0VTUzsNCj4gPiAgICAgICAgbU52UmFtVXBkYXRlZCA9IFRSVUU7 DQo+ID4gQEAgLTE2MywxOCArMTg1LDM3IEBAIFVwZGF0ZUltYWdlICgNCj4gPiAgICBERUJVRygo REVCVUdfSU5GTywgIkNvbmZpZ0hlYWRlci5OdW1PZlVwZGF0ZXMgLQ0KPiAweCV4XG4iLCBDb25m aWdIZWFkZXIuTnVtT2ZVcGRhdGVzKSk7DQo+ID4gICAgREVCVUcoKERFQlVHX0lORk8sICJQY2RF ZGtpaVN5c3RlbUZpcm13YXJlRmlsZUd1aWQNCj4gLSAlZ1xuIiwgUGNkR2V0UHRyKFBjZEVka2lp U3lzdGVtRmlybXdhcmVGaWxlR3VpZCkpKTsNCj4gPg0KPiA+ICsgIFRvdGFsU2l6ZSA9IDA7DQo+ ID4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQ29uZmlnSGVhZGVyLk51bU9mVXBkYXRlczsN Cj4gSW5kZXgrKykgew0KPiA+ICsgICAgaWYgKENvbXBhcmVHdWlkKCZDb25maWdEYXRhW0luZGV4 XS5GaWxlR3VpZCwNCj4gUGNkR2V0UHRyKFBjZEVka2lpU3lzdGVtRmlybXdhcmVGaWxlR3VpZCkp KSB7DQo+ID4gKyAgICAgIFRvdGFsU2l6ZSA9IFRvdGFsU2l6ZSArDQo+IENvbmZpZ0RhdGFbSW5k ZXhdLkxlbmd0aDsNCj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIEJ5dGVzV3Jp dHRlbiA9IDA7DQo+ID4gICAgSW5kZXggPSAwOw0KPiA+ICAgIFVwZGF0ZUNvbmZpZ0RhdGEgPSBD b25maWdEYXRhOw0KPiA+ICAgIHdoaWxlIChJbmRleCA8IENvbmZpZ0hlYWRlci5OdW1PZlVwZGF0 ZXMpIHsNCj4gPiAgICAgIGlmIChDb21wYXJlR3VpZCgmVXBkYXRlQ29uZmlnRGF0YS0+RmlsZUd1 aWQsDQo+IFBjZEdldFB0cihQY2RFZGtpaVN5c3RlbUZpcm13YXJlRmlsZUd1aWQpKSkgew0KPiA+ ICAgICAgICBERUJVRygoREVCVUdfSU5GTywgIkZpbGVHdWlkIC0gJWcNCj4gKHByb2Nlc3Npbmcp XG4iLCAmVXBkYXRlQ29uZmlnRGF0YS0+RmlsZUd1aWQpKTsNCj4gPiArICAgICAgU3RhcnRQZXJj ZW50YWdlID0gKEJ5dGVzV3JpdHRlbiAqIDEwMCkgLw0KPiBUb3RhbFNpemU7DQo+ID4gKyAgICAg IEVuZFBlcmNlbnRhZ2UgICA9ICgoQnl0ZXNXcml0dGVuICsNCj4gVXBkYXRlQ29uZmlnRGF0YS0+ TGVuZ3RoKSAqIDEwMCkgLyBUb3RhbFNpemU7DQo+ID4gKyAgICAgIGlmIChQcm9ncmVzcyAhPSBO VUxMKSB7DQo+ID4gKyAgICAgICAgUHJvZ3Jlc3MgKFN0YXJ0UGVyY2VudGFnZSk7DQo+ID4gKyAg ICAgIH0NCj4gPiAgICAgICAgU3RhdHVzID0gUGVyZm9ybVVwZGF0ZSAoDQo+ID4gICAgICAgICAg ICAgICAgICAgU3lzdGVtRmlybXdhcmVJbWFnZSwNCj4gPiAgICAgICAgICAgICAgICAgICBTeXN0 ZW1GaXJtd2FyZUltYWdlU2l6ZSwNCj4gPiAgICAgICAgICAgICAgICAgICBVcGRhdGVDb25maWdE YXRhLA0KPiA+ICAgICAgICAgICAgICAgICAgIExhc3RBdHRlbXB0VmVyc2lvbiwNCj4gPiAtICAg ICAgICAgICAgICAgICBMYXN0QXR0ZW1wdFN0YXR1cw0KPiA+ICsgICAgICAgICAgICAgICAgIExh c3RBdHRlbXB0U3RhdHVzLA0KPiA+ICsgICAgICAgICAgICAgICAgIFByb2dyZXNzLA0KPiA+ICsg ICAgICAgICAgICAgICAgIFN0YXJ0UGVyY2VudGFnZSwNCj4gPiArICAgICAgICAgICAgICAgICBF bmRQZXJjZW50YWdlDQo+ID4gICAgICAgICAgICAgICAgICAgKTsNCj4gPiArICAgICAgaWYgKFBy b2dyZXNzICE9IE5VTEwpIHsNCj4gPiArICAgICAgICBQcm9ncmVzcyAoRW5kUGVyY2VudGFnZSk7 DQo+ID4gKyAgICAgIH0NCj4gPiAgICAgICAgLy8NCj4gPiAgICAgICAgLy8gU2hhbGwgdXBkYXRl cyBiZSBzZXJpYWxpemVkIHNvIHRoYXQgaWYgYW4NCj4gdXBkYXRlIGlzIG5vdCBzdWNjZXNzZnVs bHkgY29tcGxldGVkLA0KPiA+ICAgICAgICAvLyB0aGUgcmVtYWluaW5nIHVwZGF0ZXMgd29uJ3Qg YmUgcGVyZm9ybWVkLg0KPiA+IEBAIC0xODYsNiArMjI3LDggQEAgVXBkYXRlSW1hZ2UgKA0KPiA+ ICAgICAgICBERUJVRygoREVCVUdfSU5GTywgIkZpbGVHdWlkIC0gJWcNCj4gKGlnbm9yZWQpXG4i LCAmVXBkYXRlQ29uZmlnRGF0YS0+RmlsZUd1aWQpKTsNCj4gPiAgICAgIH0NCj4gPg0KPiA+ICsg ICAgQnl0ZXNXcml0dGVuICs9IFVwZGF0ZUNvbmZpZ0RhdGEtPkxlbmd0aDsNCj4gPiArDQo+ID4g ICAgICBJbmRleCsrOw0KPiA+ICAgICAgVXBkYXRlQ29uZmlnRGF0YSsrOw0KPiA+ICAgIH0NCj4g PiBAQCAtMjA5LDEwICsyNTIsMTEgQEAgVXBkYXRlSW1hZ2UgKA0KPiA+ICAqKi8NCj4gPiAgRUZJ X1NUQVRVUw0KPiA+ICBTeXN0ZW1GaXJtd2FyZUF1dGhlbnRpY2F0ZWRVcGRhdGUgKA0KPiA+IC0g IElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkltYWdlLA0KPiA+IC0gIElOIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgICAgSW1hZ2VTaXplLA0KPiA+IC0gIE9VVCBVSU5UMzINCj4g Kkxhc3RBdHRlbXB0VmVyc2lvbiwNCj4gPiAtICBPVVQgVUlOVDMyICAgICAgICAgICAgICAgICAg ICAgICpMYXN0QXR0ZW1wdFN0YXR1cw0KPiA+ICsgIElOIFZPSUQNCj4gKkltYWdlLA0KPiA+ICsg IElOIFVJTlRODQo+IEltYWdlU2l6ZSwNCj4gPiArICBPVVQgVUlOVDMyDQo+ICpMYXN0QXR0ZW1w dFZlcnNpb24sDQo+ID4gKyAgT1VUIFVJTlQzMg0KPiAqTGFzdEF0dGVtcHRTdGF0dXMsDQo+ID4g KyAgSU4gRUZJX0ZJUk1XQVJFX01BTkFHRU1FTlRfVVBEQVRFX0lNQUdFX1BST0dSRVNTDQo+IFBy b2dyZXNzDQo+ID4gICAgKQ0KPiA+ICB7DQo+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgIFN0YXR1czsNCj4gPiBAQCAtMjQwLDcgKzI4NCw3IEBAIFN5c3RlbUZpcm13YXJlQXV0aGVu dGljYXRlZFVwZGF0ZQ0KPiAoDQo+ID4gICAgRXh0cmFjdENvbmZpZ0ltYWdlKEF1dGhlbnRpY2F0 ZWRJbWFnZSwNCj4gQXV0aGVudGljYXRlZEltYWdlU2l6ZSwgJkNvbmZpZ0ltYWdlLA0KPiAmQ29u ZmlnSW1hZ2VTaXplKTsNCj4gPg0KPiA+ICAgIERFQlVHKChERUJVR19JTkZPLCAiVXBkYXRlSW1h Z2UgLi4uXG4iKSk7DQo+ID4gLSAgU3RhdHVzID0gVXBkYXRlSW1hZ2UoU3lzdGVtRmlybXdhcmVJ bWFnZSwNCj4gU3lzdGVtRmlybXdhcmVJbWFnZVNpemUsIENvbmZpZ0ltYWdlLCBDb25maWdJbWFn ZVNpemUsDQo+IExhc3RBdHRlbXB0VmVyc2lvbiwgTGFzdEF0dGVtcHRTdGF0dXMpOw0KPiA+ICsg IFN0YXR1cyA9IFVwZGF0ZUltYWdlKFN5c3RlbUZpcm13YXJlSW1hZ2UsDQo+IFN5c3RlbUZpcm13 YXJlSW1hZ2VTaXplLCBDb25maWdJbWFnZSwgQ29uZmlnSW1hZ2VTaXplLA0KPiBMYXN0QXR0ZW1w dFZlcnNpb24sIExhc3RBdHRlbXB0U3RhdHVzLCBQcm9ncmVzcyk7DQo+ID4gICAgaWYgKEVGSV9F UlJPUihTdGF0dXMpKSB7DQo+ID4gICAgICBERUJVRygoREVCVUdfSU5GTywgIlVwZGF0ZUltYWdl IC0gJXJcbiIsDQo+IFN0YXR1cykpOw0KPiA+ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiBAQCAt NDQyLDggKzQ4Niw4IEBAIEZtcFNldEltYWdlICgNCj4gPiAgICAgIHJldHVybiBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ID4gICAgfQ0KPiA+DQo+ID4gLSAgU3RhdHVzID0gU3lzdGVtRmlybXdh cmVBdXRoZW50aWNhdGVkVXBkYXRlKChWT0lEDQo+ICopSW1hZ2UsIEltYWdlU2l6ZSwgJlN5c3Rl bUZtcFByaXZhdGUtDQo+ID5MYXN0QXR0ZW1wdC5MYXN0QXR0ZW1wdFZlcnNpb24sICZTeXN0ZW1G bXBQcml2YXRlLQ0KPiA+TGFzdEF0dGVtcHQuTGFzdEF0dGVtcHRTdGF0dXMpOw0KPiA+IC0gIERF QlVHKChERUJVR19JTkZPLCAiU2V0SW1hZ2UgLSBMYXN0QXR0ZW1wIFZlcnNpb24NCj4gLSAweCV4 LCBTdGF0ZSAtIDB4JXhcbiIsIFN5c3RlbUZtcFByaXZhdGUtDQo+ID5MYXN0QXR0ZW1wdC5MYXN0 QXR0ZW1wdFZlcnNpb24sIFN5c3RlbUZtcFByaXZhdGUtDQo+ID5MYXN0QXR0ZW1wdC5MYXN0QXR0 ZW1wdFN0YXR1cykpOw0KPiA+ICsgIFN0YXR1cyA9IFN5c3RlbUZpcm13YXJlQXV0aGVudGljYXRl ZFVwZGF0ZSgoVk9JRA0KPiAqKUltYWdlLCBJbWFnZVNpemUsICZTeXN0ZW1GbXBQcml2YXRlLQ0K PiA+TGFzdEF0dGVtcHQuTGFzdEF0dGVtcHRWZXJzaW9uLCAmU3lzdGVtRm1wUHJpdmF0ZS0NCj4g Pkxhc3RBdHRlbXB0Lkxhc3RBdHRlbXB0U3RhdHVzLCBQcm9ncmVzcyk7DQo+ID4gKyAgREVCVUco KERFQlVHX0lORk8sICJTZXRJbWFnZSAtIExhc3RBdHRlbXB0IFZlcnNpb24NCj4gLSAweCV4LCBT dGF0ZSAtIDB4JXhcbiIsIFN5c3RlbUZtcFByaXZhdGUtDQo+ID5MYXN0QXR0ZW1wdC5MYXN0QXR0 ZW1wdFZlcnNpb24sIFN5c3RlbUZtcFByaXZhdGUtDQo+ID5MYXN0QXR0ZW1wdC5MYXN0QXR0ZW1w dFN0YXR1cykpOw0KPiA+DQo+ID4gICAgLy8NCj4gPiAgICAvLyBJZiBOVlJBTSBpcyB1cGRhdGVk LCB3ZSBzaG91bGQgbm8gbG9uZ2VyIHRvdWNoDQo+IHZhcmlhYmxlIHNlcnZpY2VzLCBiZWNhdXNl DQo+ID4gLS0NCj4gPiAyLjE0LjIud2luZG93cy4zDQo+ID4NCj4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+IGVkazItZGV2ZWwgbWFpbGluZyBs aXN0DQo+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiBodHRwczovL2xpc3RzLjAxLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg==