From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.120; helo=mga04.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) (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 B87ED226EAC76 for ; Wed, 11 Apr 2018 23:55:00 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Apr 2018 23:55:00 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,440,1517904000"; d="scan'208";a="41393315" Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by FMSMGA003.fm.intel.com with ESMTP; 11 Apr 2018 23:55:00 -0700 Received: from orsmsx112.amr.corp.intel.com (10.22.240.13) by ORSMSX101.amr.corp.intel.com (10.22.225.128) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 11 Apr 2018 23:54:59 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.55]) by ORSMSX112.amr.corp.intel.com ([169.254.3.141]) with mapi id 14.03.0319.002; Wed, 11 Apr 2018 23:54:59 -0700 From: "Kinney, Michael D" To: Ard Biesheuvel , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , Leif Lindholm Thread-Topic: [edk2-platforms Patch V2 3/6] SynQuacer/PlatformFlashAccessLib: Add progress API Thread-Index: AQHT0fnQY/vDKMqeYk2x1XsGveQ7q6P9HWSA//+Ud8A= Date: Thu, 12 Apr 2018 06:54:59 +0000 Message-ID: References: <20180412010131.21848-1-michael.d.kinney@intel.com> <20180412010131.21848-4-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.140] MIME-Version: 1.0 Subject: Re: [edk2-platforms Patch V2 3/6] SynQuacer/PlatformFlashAccessLib: Add 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: Thu, 12 Apr 2018 06:55:00 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkLA0KDQpJIGFncmVlLiAgSSBtZW50aW9uZWQgaXQgaW4gdGhlIHBhdGNoIHN1bW1hcnkuICBJ IHdpbGwNCmFkZCBpdCB0byB0aGUgY29tbWl0IGxvZyBmb3IgZWFjaCBwYXRjaC4NCg0KVGhhbmtz LA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQXJkIEJp ZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0KPiBTZW50OiBXZWRu ZXNkYXksIEFwcmlsIDExLCAyMDE4IDExOjE4IFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9y ZzsgTGVpZiBMaW5kaG9sbQ0KPiA8bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnPg0KPiBTdWJqZWN0 OiBSZTogW2VkazItcGxhdGZvcm1zIFBhdGNoIFYyIDMvNl0NCj4gU3luUXVhY2VyL1BsYXRmb3Jt Rmxhc2hBY2Nlc3NMaWI6IEFkZCBwcm9ncmVzcyBBUEkNCj4gDQo+IE9uIDEyIEFwcmlsIDIwMTgg YXQgMDM6MDEsIEtpbm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT4gd3JvdGU6DQo+ID4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD04MDENCj4gPg0KPiA+IEFkZCBQZXJmb3JtRmxhc2hXcml0ZVdpdGhQcm9ncmVzcygpIHRv IHRoZQ0KPiBQbGF0Zm9ybUZsYXNoQWNjZXNzTGliLg0KPiA+IFRoaXMgYWxsb3dzIHRoZSBwbGF0 Zm9ybSB0byBpbmZvcm0gdGhlIHVzZXIgb2YNCj4gcHJvZ3Jlc3Mgd2hlbiBhDQo+ID4gZmlybXdh cmUgc3RvcmFnZSBkZXZpY2UgaXMgYmVpbmcgdXBkYXRlZCB3aXRoIGEgbmV3DQo+IGZpcm13YXJl DQo+ID4gaW1hZ2UuDQo+ID4NCj4gPiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVs QGxpbmFyby5vcmc+DQo+ID4gQ2M6IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJv Lm9yZz4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEQgS2lubmV5DQo+IDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRy aWJ1dGlvbiBBZ3JlZW1lbnQNCj4gMS4xDQo+IA0KPiBJSVVDLCB0aGlzIGlzIHRoZSBiYXJlIG1p bmltdW0gdG8gZ2V0IGl0IGJ1aWxkaW5nIGFnYWluLA0KPiBhbmQgd2UnbGwNCj4gbmVlZCB0byBy ZXBsYWNlIHRoZSBleGlzdGluZyBwcm9ncmVzcyBpbmRpY2F0b3INCj4gaW1wbGVtZW50YXRpb24g d2l0aA0KPiBjYWxscyBpbnRvIHRoZSBnZW5lcmljIG9uLCByaWdodD8gVGhhdCdzIGZpbmUsIGJ1 dCBpdA0KPiB3b3VsZCBiZSB1c2VmdWwNCj4gdG8gbWVudGlvbiB0aGlzIGluIHRoZSBjb21taXQg bG9nLg0KPiANCj4gDQo+ID4gLS0tDQo+ID4gIC4uLi9TeW5RdWFjZXJQbGF0Zm9ybUZsYXNoQWNj ZXNzTGliLmMgICAgICAgICAgICAgIHwNCj4gNzggKysrKysrKysrKysrKysrKysrKy0tLQ0KPiA+ ICAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0DQo+IGEvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0xpYnJhcnkv U3luUXVhY2VyUGxhdGZvcm1GDQo+IGxhc2hBY2Nlc3NMaWIvU3luUXVhY2VyUGxhdGZvcm1GbGFz aEFjY2Vzc0xpYi5jDQo+IGIvU2lsaWNvbi9Tb2Npb25leHQvU3luUXVhY2VyL0xpYnJhcnkvU3lu UXVhY2VyUGxhdGZvcm1GDQo+IGxhc2hBY2Nlc3NMaWIvU3luUXVhY2VyUGxhdGZvcm1GbGFzaEFj Y2Vzc0xpYi5jDQo+ID4gaW5kZXggZmJiOGYxZjllNC4uNGNmODMxOGE5MyAxMDA2NDQNCj4gPiAt LS0NCj4gYS9TaWxpY29uL1NvY2lvbmV4dC9TeW5RdWFjZXIvTGlicmFyeS9TeW5RdWFjZXJQbGF0 Zm9ybUYNCj4gbGFzaEFjY2Vzc0xpYi9TeW5RdWFjZXJQbGF0Zm9ybUZsYXNoQWNjZXNzTGliLmMN Cj4gPiArKysNCj4gYi9TaWxpY29uL1NvY2lvbmV4dC9TeW5RdWFjZXIvTGlicmFyeS9TeW5RdWFj ZXJQbGF0Zm9ybUYNCj4gbGFzaEFjY2Vzc0xpYi9TeW5RdWFjZXJQbGF0Zm9ybUZsYXNoQWNjZXNz TGliLmMNCj4gPiBAQCAtMiw2ICsyLDcgQEANCj4gPiAgICBQbGF0Zm9ybSBmbGFzaCBkZXZpY2Ug YWNjZXNzIGxpYnJhcnkgZm9yIFNvY2lvbmV4dA0KPiBTeW5RdWFjZXINCj4gPg0KPiA+ICAgIENv cHlyaWdodCAoYykgMjAxNiwgTGluYXJvLCBMdGQuIEFsbCByaWdodHMNCj4gcmVzZXJ2ZWQuPEJS Pg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo dHMNCj4gcmVzZXJ2ZWQuPEJSPg0KPiA+DQo+ID4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNj b21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICAgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZA0KPiBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZQ0K PiA+IEBAIC0xMTcsMTMgKzExOCwyOSBAQCBHZXRGdmJCeUFkZHJlc3MgKA0KPiA+ICB9DQo+ID4N Cj4gPiAgLyoqDQo+ID4gLSAgUGVyZm9ybSBmbGFzaCB3cml0ZSBvcGVyYXRpb24uDQo+ID4gKyAg UGVyZm9ybSBmbGFzaCB3cml0ZSBvcGVyYXRpb24gd2l0aCBwcm9ncmVzcw0KPiBpbmRpY2F0b3Iu ICBUaGUgc3RhcnQgYW5kIGVuZA0KPiA+ICsgIGNvbXBsZXRpb24gcGVyY2VudGFnZSB2YWx1ZXMg YXJlIHBhc3NlZCBpbnRvIHRoaXMNCj4gZnVuY3Rpb24uICBJZiB0aGUgcmVxdWVzdGVkDQo+ID4g KyAgZmxhc2ggd3JpdGUgb3BlcmF0aW9uIGlzIGJyb2tlbiB1cCwgdGhlbiBjb21wbGV0aW9uDQo+ IHBlcmNlbnRhZ2UgYmV0d2VlbiB0aGUNCj4gPiArICBzdGFydCBhbmQgZW5kIHZhbHVlcyBtYXkg YmUgcGFzc2VkIHRvIHRoZSBwcm92aWRlZA0KPiBQcm9ncmVzcyBmdW5jdGlvbi4gIFRoZQ0KPiA+ ICsgIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGlzIHJlcXVpcmVkIHRvIGNhbGwgdGhlDQo+IFBy b2dyZXNzIGZ1bmN0aW9uIGZvciB0aGUNCj4gPiArICBzdGFydCBhbmQgZW5kIGNvbXBsZXRpb24g cGVyY2VudGFnZSB2YWx1ZXMuICBUaGlzDQo+IGFsbG93cyB0aGUgUHJvZ3Jlc3MsDQo+ID4gKyAg U3RhcnRQZXJjZW50YWdlLCBhbmQgRW5kUGVyY2VudGFnZSBwYXJhbWV0ZXJzIHRvIGJlDQo+IGln bm9yZWQgaWYgdGhlIHJlcXVlc3RlZA0KPiA+ICsgIGZsYXNoIHdyaXRlIG9wZXJhdGlvbiBjYW4g bm90IGJlIGJyb2tlbiB1cA0KPiA+DQo+ID4gICAgQHBhcmFtW2luXSBGaXJtd2FyZVR5cGUgICAg ICBUaGUgdHlwZSBvZiBmaXJtd2FyZS4NCj4gPiAgICBAcGFyYW1baW5dIEZsYXNoQWRkcmVzcyAg ICAgIFRoZSBhZGRyZXNzIG9mIGZsYXNoDQo+IGRldmljZSB0byBiZSBhY2Nlc3NlZC4NCj4gPiAg ICBAcGFyYW1baW5dIEZsYXNoQWRkcmVzc1R5cGUgIFRoZSB0eXBlIG9mIGZsYXNoDQo+IGRldmlj ZSBhZGRyZXNzLg0KPiA+ICAgIEBwYXJhbVtpbl0gQnVmZmVyICAgICAgICAgICAgVGhlIHBvaW50 ZXIgdG8gdGhlDQo+IGRhdGEgYnVmZmVyLg0KPiA+ICAgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAg ICAgICAgVGhlIGxlbmd0aCBvZiBkYXRhDQo+IGJ1ZmZlciBpbiBieXRlcy4NCj4gPiArICBAcGFy YW1baW5dIFByb2dyZXNzICAgICAgICAgIEEgZnVuY3Rpb24gdXNlZCByZXBvcnQNCj4gdGhlIHBy b2dyZXNzIG9mIHRoZQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlybXdh cmUgdXBkYXRlLiAgVGhpcw0KPiBpcyBhbiBvcHRpb25hbCBwYXJhbWV0ZXINCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgbWF5IGJlIE5VTEwuDQo+ID4gKyAgQHBhcmFt W2luXSBTdGFydFBlcmNlbnRhZ2UgICBUaGUgc3RhcnQgY29tcGxldGlvbg0KPiBwZXJjZW50YWdl IHZhbHVlIHRoYXQgbWF5DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB1 c2VkIHRvIHJlcG9ydA0KPiBwcm9ncmVzcyBkdXJpbmcgdGhlIGZsYXNoDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZSBvcGVyYXRpb24uDQo+ID4gKyAgQHBhcmFtW2lu XSBFbmRQZXJjZW50YWdlICAgICBUaGUgZW5kIGNvbXBsZXRpb24NCj4gcGVyY2VudGFnZSB2YWx1 ZSB0aGF0IG1heQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdXNlZCB0 byByZXBvcnQNCj4gcHJvZ3Jlc3MgZHVyaW5nIHRoZSBmbGFzaA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgd3JpdGUgb3BlcmF0aW9uLg0KPiA+DQo+ID4gICAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICAgICAgVGhlIG9wZXJhdGlvbiByZXR1cm5zDQo+IHN1Y2Nlc3NmdWxs eS4NCj4gPiAgICBAcmV0dmFsIEVGSV9XUklURV9QUk9URUNURUQgICBUaGUgZmxhc2ggZGV2aWNl IGlzDQo+IHJlYWQgb25seS4NCj4gPiBAQCAtMTMyLDEyICsxNDksMTUgQEAgR2V0RnZiQnlBZGRy ZXNzICgNCj4gPiAgKiovDQo+ID4gIEVGSV9TVEFUVVMNCj4gPiAgRUZJQVBJDQo+ID4gLVBlcmZv cm1GbGFzaFdyaXRlICgNCj4gPiAtICBJTiBQTEFURk9STV9GSVJNV0FSRV9UWVBFICAgICAgIEZp cm13YXJlVHlwZSwNCj4gPiAtICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgIEZsYXNo QWRkcmVzcywNCj4gPiAtICBJTiBGTEFTSF9BRERSRVNTX1RZUEUgICAgICAgICAgIEZsYXNoQWRk cmVzc1R5cGUsDQo+ID4gLSAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAgICAgICAqQnVmZmVy LA0KPiA+IC0gIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoDQo+ID4gK1Bl cmZvcm1GbGFzaFdyaXRlV2l0aFByb2dyZXNzICgNCj4gPiArICBJTiBQTEFURk9STV9GSVJNV0FS RV9UWVBFDQo+IEZpcm13YXJlVHlwZSwNCj4gPiArICBJTiBFRklfUEhZU0lDQUxfQUREUkVTUw0K PiBGbGFzaEFkZHJlc3MsDQo+ID4gKyAgSU4gRkxBU0hfQUREUkVTU19UWVBFDQo+IEZsYXNoQWRk cmVzc1R5cGUsDQo+ID4gKyAgSU4gVk9JRA0KPiAqQnVmZmVyLA0KPiA+ICsgIElOIFVJTlRODQo+ IExlbmd0aCwNCj4gPiArICBJTiBFRklfRklSTVdBUkVfTUFOQUdFTUVOVF9VUERBVEVfSU1BR0Vf UFJPR1JFU1MNCj4gUHJvZ3Jlc3MsICAgICAgICBPUFRJT05BTA0KPiA+ICsgIElOIFVJTlRODQo+ IFN0YXJ0UGVyY2VudGFnZSwNCj4gPiArICBJTiBVSU5UTg0KPiBFbmRQZXJjZW50YWdlDQo+ID4g ICAgKQ0KPiA+ICB7DQo+ID4gICAgRUZJX0ZJUk1XQVJFX1ZPTFVNRV9CTE9DS19QUk9UT0NPTCAg KkZ2YjsNCj4gPiBAQCAtMTUwLDcgKzE3MCw3IEBAIFBlcmZvcm1GbGFzaFdyaXRlICgNCj4gPiAg ICBFRklfR1JBUEhJQ1NfT1VUUFVUX0JMVF9QSVhFTF9VTklPTiBCbGFjazsNCj4gPiAgICBFRklf R1JBUEhJQ1NfT1VUUFVUX0JMVF9QSVhFTF9VTklPTiBXaGl0ZTsNCj4gPiAgICBVSU5UTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHV0aW9uOw0KPiA+IC0gIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFByb2dyZXNzOw0KPiA+ICsgIFVJTlRODQo+IEN1cnJl bnRQcm9ncmVzczsNCj4gPiAgICBCT09MRUFODQo+IEhhdmVCb290R3JhcGhpY3M7DQo+ID4NCj4g PiAgICBCbGFjay5SYXcgPSAweDAwMDAwMDAwOw0KPiA+IEBAIC0yMjgsNyArMjQ4LDcgQEAgUGVy Zm9ybUZsYXNoV3JpdGUgKA0KPiA+DQo+ID4gICAgaWYgKEhhdmVCb290R3JhcGhpY3MpIHsNCj4g PiAgICAgIFJlc29sdXRpb24gPSAoQmxvY2tTaXplICogMTAwKSAvIExlbmd0aCArIDE7DQo+ID4g LSAgICBQcm9ncmVzcyA9IDA7DQo+ID4gKyAgICBDdXJyZW50UHJvZ3Jlc3MgPSAwOw0KPiA+DQo+ ID4gICAgICBTdGF0dXMgPSBCb290TG9nb1VwZGF0ZVByb2dyZXNzIChXaGl0ZS5QaXhlbCwNCj4g QmxhY2suUGl4ZWwsDQo+ID4gICAgICAgICAgICAgICAgIEwiVXBkYXRpbmcgZmlybXdhcmUgLSBw bGVhc2Ugd2FpdCIsDQo+IEJsYWNrLlBpeGVsLCAxMDAsIDApOw0KPiA+IEBAIC0yNjgsOCArMjg4 LDggQEAgUGVyZm9ybUZsYXNoV3JpdGUgKA0KPiA+ICAgICAgaWYgKEhhdmVCb290R3JhcGhpY3Mp IHsNCj4gPiAgICAgICAgU3RhdHVzID0gQm9vdExvZ29VcGRhdGVQcm9ncmVzcyAoV2hpdGUuUGl4 ZWwsDQo+IEJsYWNrLlBpeGVsLA0KPiA+ICAgICAgICAgICAgICAgICAgTCJVcGRhdGluZyBmaXJt d2FyZSAtIHBsZWFzZSB3YWl0IiwNCj4gV2hpdGUuUGl4ZWwsDQo+ID4gLSAgICAgICAgICAgICAg ICBQcm9ncmVzcyArIFJlc29sdXRpb24sIFByb2dyZXNzKTsNCj4gPiAtICAgICAgUHJvZ3Jlc3Mg Kz0gUmVzb2x1dGlvbjsNCj4gPiArICAgICAgICAgICAgICAgIEN1cnJlbnRQcm9ncmVzcyArIFJl c29sdXRpb24sDQo+IEN1cnJlbnRQcm9ncmVzcyk7DQo+ID4gKyAgICAgIEN1cnJlbnRQcm9ncmVz cyArPSBSZXNvbHV0aW9uOw0KPiA+ICAgICAgfSBlbHNlIHsNCj4gPiAgICAgICAgUHJpbnQgKEwi LiIpOw0KPiA+ICAgICAgfQ0KPiA+IEBAIC0yODQsMyArMzA0LDM5IEBAIFBlcmZvcm1GbGFzaFdy aXRlICgNCj4gPg0KPiA+ICAgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPiAgfQ0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUGVyZm9ybSBmbGFzaCB3cml0ZSBvcGVyYXRpb24uDQo+ID4gKw0KPiA+ ICsgIEBwYXJhbVtpbl0gRmlybXdhcmVUeXBlICAgICAgVGhlIHR5cGUgb2YgZmlybXdhcmUuDQo+ ID4gKyAgQHBhcmFtW2luXSBGbGFzaEFkZHJlc3MgICAgICBUaGUgYWRkcmVzcyBvZiBmbGFzaA0K PiBkZXZpY2UgdG8gYmUgYWNjZXNzZWQuDQo+ID4gKyAgQHBhcmFtW2luXSBGbGFzaEFkZHJlc3NU eXBlICBUaGUgdHlwZSBvZiBmbGFzaA0KPiBkZXZpY2UgYWRkcmVzcy4NCj4gPiArICBAcGFyYW1b aW5dIEJ1ZmZlciAgICAgICAgICAgIFRoZSBwb2ludGVyIHRvIHRoZQ0KPiBkYXRhIGJ1ZmZlci4N Cj4gPiArICBAcGFyYW1baW5dIExlbmd0aCAgICAgICAgICAgIFRoZSBsZW5ndGggb2YgZGF0YQ0K PiBidWZmZXIgaW4gYnl0ZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAg ICAgICAgIFRoZSBvcGVyYXRpb24gcmV0dXJucw0KPiBzdWNjZXNzZnVsbHkuDQo+ID4gKyAgQHJl dHZhbCBFRklfV1JJVEVfUFJPVEVDVEVEICAgVGhlIGZsYXNoIGRldmljZSBpcw0KPiByZWFkIG9u bHkuDQo+ID4gKyAgQHJldHZhbCBFRklfVU5TVVBQT1JURUQgICAgICAgVGhlIGZsYXNoIGRldmlj ZQ0KPiBhY2Nlc3MgaXMgdW5zdXBwb3J0ZWQuDQo+ID4gKyAgQHJldHZhbCBFRklfSU5WQUxJRF9Q QVJBTUVURVIgVGhlIGlucHV0IHBhcmFtZXRlcg0KPiBpcyBub3QgdmFsaWQuDQo+ID4gKyoqLw0K PiA+ICtFRklfU1RBVFVTDQo+ID4gK0VGSUFQSQ0KPiA+ICtQZXJmb3JtRmxhc2hXcml0ZSAoDQo+ ID4gKyAgSU4gUExBVEZPUk1fRklSTVdBUkVfVFlQRSAgICAgICBGaXJtd2FyZVR5cGUsDQo+ID4g KyAgSU4gRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAgICAgICBGbGFzaEFkZHJlc3MsDQo+ID4gKyAg SU4gRkxBU0hfQUREUkVTU19UWVBFICAgICAgICAgICBGbGFzaEFkZHJlc3NUeXBlLA0KPiA+ICsg IElOIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlciwNCj4gPiArICBJTiBVSU5U TiAgICAgICAgICAgICAgICAgICAgICAgIExlbmd0aA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsg IHJldHVybiBQZXJmb3JtRmxhc2hXcml0ZVdpdGhQcm9ncmVzcyAoDQo+ID4gKyAgICAgICAgICAg RmlybXdhcmVUeXBlLA0KPiA+ICsgICAgICAgICAgIEZsYXNoQWRkcmVzcywNCj4gPiArICAgICAg ICAgICBGbGFzaEFkZHJlc3NUeXBlLA0KPiA+ICsgICAgICAgICAgIEJ1ZmZlciwNCj4gPiArICAg ICAgICAgICBMZW5ndGgsDQo+ID4gKyAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAgICAgICAw LA0KPiA+ICsgICAgICAgICAgIDANCj4gPiArICAgICAgICAgICApOw0KPiA+ICt9DQo+ID4gLS0N Cj4gPiAyLjE0LjIud2luZG93cy4zDQo+ID4NCg==