From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zheng, Lv" Subject: RE: [PATCH 1/3] ACPICA: Events: Introduce acpi_block_gpe()/acpi_unblock_gpe()/acpi_control_gpe_handling() to allow administrative GPE enabling/disabling Date: Wed, 8 Jun 2016 07:49:58 +0000 Message-ID: <1AE640813FDE7649BE1B193DEA596E883BBC884D@SHSMSX101.ccr.corp.intel.com> References: <216c54dbfd2be7ab949cd16afffb84c45900f1d9.1463389639.git.lv.zheng@intel.com> <1585140.3ZMjLZu0YQ@vostro.rjw.lan> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com ([134.134.136.65]:3968 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751548AbcFHHuC (ORCPT ); Wed, 8 Jun 2016 03:50:02 -0400 In-Reply-To: <1585140.3ZMjLZu0YQ@vostro.rjw.lan> Content-Language: en-US Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: "Rafael J. Wysocki" Cc: "Wysocki, Rafael J" , "Brown, Len" , Lv Zheng , "linux-kernel@vger.kernel.org" , "linux-acpi@vger.kernel.org" SGksDQoNCj4gRnJvbTogUmFmYWVsIEouIFd5c29ja2kgW21haWx0bzpyandAcmp3eXNvY2tpLm5l dF0NCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzNdIEFDUElDQTogRXZlbnRzOiBJbnRyb2R1Y2UN Cj4gYWNwaV9ibG9ja19ncGUoKS9hY3BpX3VuYmxvY2tfZ3BlKCkvYWNwaV9jb250cm9sX2dwZV9o YW5kbGluZygpIHRvDQo+IGFsbG93IGFkbWluaXN0cmF0aXZlIEdQRSBlbmFibGluZy9kaXNhYmxp bmcNCj4gDQo+IE9uIE1vbmRheSwgTWF5IDE2LCAyMDE2IDA1OjExOjExIFBNIEx2IFpoZW5nIHdy b3RlOg0KPiA+IFRoZXJlIGlzIGEgZmFjaWxpdHkgaW4gTGludXgsIGRldmVsb3BlcnMgY2FuIG1h bmFnZSBHUEUgZW5hYmxpbmcvZGlzYWJsaW5nDQo+ID4gdGhyb3VnaCAvc3lzL2Zpcm13YXJlL2Fj cGkvaW50ZXJydXB0cy9ncGV4eC4gVGhpcyBpcyBtYWlubHkgZm9yDQo+IGRlYnVnZ2luZw0KPiA+ IHB1cnBvc2VzLiBNYW55IHVzZXJzIGV4cGVjdCB0byB1c2UgdGhpcyBmYWNpbGl0eSB0byBpbXBs ZW1lbnQgcXVpcmtzIHRvDQo+ID4gZGlzYWJsZSBzcGVjaWZpYyBHUEVzIHdoZW4gdGhlcmUgaXMg YSBnYXAgaW4gTGludXggY2F1c2luZyBHUEUgZmxvb2QuDQo+ID4gVGhpcyBpcyBub3Qgd29ya2lu ZyBjb3JyZWN0bHkgYmVjYXVzZSBjdXJyZW50bHkgdGhpcyBmYWNpbGl0eSBpbnZva2VzDQo+ID4g ZW5hYmxpbmcvZGlzYWJsaW5nIGNvdW50aW5nIGJhc2VkIEdQRSBkcml2ZXIgQVBJczoNCj4gPiAg YWNwaV9lbmFibGVfZ3BlKCkvYWNwaV9kaXNhYmxlX2dwZSgpDQo+ID4gYW5kIHRoZSBHUEUgZHJp dmVycyBjYW4gc3RpbGwgYWZmZWN0IHRoZSBjb3VudCB0byBtZXNzIHVwIHRoZSBHUEUNCj4gPiBt YW5hZ2VtZW50IHB1cnBvc2VzLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGFjcGlf YmxvY2tfZ3BlKCkvYWNwaV91bmJsb2NrX2dwZSgpIHRvIGJlIHVzZWQgaW4NCj4gc3VjaA0KPiA+ IHNpdHVhdGlvbiBpbnN0ZWFkIG9mIGFjcGlfZW5hYmxlX2dwZSgpL2FjcGlfZGlzYWJsZV9ncGUo KS4NCj4gDQo+IFVwIHRvIHRoaXMgcG9pbnQsIEkgYWdyZWUuDQo+IA0KPiA+IFRoZSBpZGVhIHRv IGltcGxlbWVudCB0aGlzIGlzIHRvIHJlcGxhY2UgdGhlIEdQRSByZWdpc3RlciBFTiBiaXQgd2l0 aCB0aGUNCj4gPiBtYW5hZ2VkIHZhbHVlLCBibG9jayBFTiBzZXQvY2xlYXIgb3BlcmF0aW9ucyBi dXQgcmVjb3JkIHRoZSBvcGVyYXRpb24NCj4gPiByZXN1bHRzIGluIGJsb2NrZWRfZW5hYmxlZCwg c28gdGhhdCBhZnRlciB0aGUgbWFuYWdlZCBzdGF0ZSBpcyByZW1vdmVkLA0KPiA+IHJlc3RvcmUg dGhlIHNhdmVkIGJsb2NrZWRfZW5hYmxlZCBiYWNrIHRvIHRoZSBHUEUgcmVnaXN0ZXIgRU4gYml0 Lg0KPiANCj4gVW5mb3J0dW5hdGVseSwgSSBkb24ndCByZWFsbHkgZm9sbG93IHRoZSBhYm92ZSBw YXJhZ3JhcGgsIHNvIGNoYW5jZXMgYXJlDQo+IHRoYXQNCj4gd2hvZXZlciBpcyBub3QgZmFtaWxp YXIgd2l0aCB0aGUgY29kZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGZvbGxvdyBpdCBlaXRoZXIuDQpb THYgWmhlbmddIA0KSSBzZWUuDQpJIHNob3VsZCBzdG9wIHRhbGtpbmcgdGhpcyB1c2luZyAibWFu YWdlZCIuDQpJdCBpcyBiZXR0ZXIgdG8gdXNlICJtYXNrZWQiLg0KQXMgdGhpcyBmYWNpbGl0eSBp cyBhY3R1YWxseSB0cnlpbmcgdG8gaW1wbGVtZW50IHRoZSBraW5kIG9mIHRoZSBmYWNpbGl0eSB0 aGF0IGNhbiBiZSBzZWVuIGluIG1hbnkgb3RoZXIgSVJRIGNoaXBzIC0gdGhlIElSUSBNQVNLIGJp dC4NCg0KPiANCj4gPiBOb3cgT1NQTXMgc2hvdWxkIGJlIGFibGUgdG8gdXNlIHRoaXMgZmFjaWxp dHkgdG8gZ2VuZXJhdGUgcXVpcmtzLiBBQ1BJQ0ENCj4gPiBCWiAxMTAyLg0KPiA+DQo+ID4gVGhp cyBmYWNpbGl0eSBjYW4gYWxzbyBiZSB1c2VkIGJ5IHRoZSBhZG1pbmlzdHJhdG9yIHRvIGNvbnRy b2wgdGhlIEdQRQ0KPiA+IGhhbmRsaW5nIG1vZGUgZHVyaW5nIHRoZSBydW50aW1lIHdoZW4gdGhl IGRyaXZlciBpcyBjYXBhYmxlIG9mIGhhbmRsaW5nDQo+IHRoZQ0KPiA+IEdQRSBpbiBib3RoIHRo ZSBpbnRlcnJ1cHQgbW9kZSBhbmQgdGhlIHBvbGxpbmcgbW9kZSAoZm9yIGV4YW1wbGUsIHRoZQ0K PiBMaW51eA0KPiA+IEVDIGRyaXZlcikuIGFjcGlfY29udHJvbF9ncGVfaGFuZGxpbmcoKSBpcyBv ZmZlcmVkIGZvciB0aGlzIHB1cnBvc2UuIEx2DQo+IFpoZW5nLg0KPiANCj4gVGhhdCBpcyB0b28g bXVjaC4gIFRoZSBwYXRjaCBzaG91bGQgZm9jdXMgb24gdGhlIGJsb2NrL3VuYmxvY2sNCj4gZnVu Y3Rpb25hbGl0eS4NCj4gQW55dGhpbmcgYmV5b25kIHRoYXQgc2hvdWxkIGJlIGFkZGVkIGxhdGVy IElNTy4NCltMdiBaaGVuZ10gDQpPSy4NClNvIGFmdGVyIGV4YW1pbmluZyBhbGwgb2YgeW91ciBj b21tZW50cy4NCkkgdGhpbmsgd2hhdCBJIG5lZWQgdG8gaW1wcm92ZSBpcyBlbGltaW5hdGluZyB0 aGlzIGZlYXR1cmUuDQpUaGF0IHNob3VsZCBiZSBhYmxlIHRvIG1ha2UgdGhlIGNvZGUgc2ltcGxl ciBhbmQgdGh1cyBlYXNpZXIgZm9yIHRoZSBvdGhlcnMgdG8gZm9sbG93Lg0KDQoNCj4gDQo+ID4g TGluazogaHR0cHM6Ly9idWdzLmFjcGljYS5vcmcvc2hvd19idWcuY2dpP2lkPTExMDINCj4gPiBT aWduZWQtb2ZmLWJ5OiBMdiBaaGVuZyA8bHYuemhlbmdAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ ICBkcml2ZXJzL2FjcGkvYWNwaWNhL2FjZXZlbnRzLmggfCAgICAzICsNCj4gPiAgZHJpdmVycy9h Y3BpL2FjcGljYS9hY2xvY2FsLmggIHwgICAgMSArDQo+ID4gIGRyaXZlcnMvYWNwaS9hY3BpY2Ev ZXZncGUuYyAgICB8ICAgODQgKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGRyaXZlcnMv YWNwaS9hY3BpY2EvZXZ4ZmdwZS5jICB8ICAxNDINCj4gKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKw0KPiA+ICBkcml2ZXJzL2FjcGkvYWNwaWNhL2h3Z3BlLmMgICAgfCAg IDI0ICsrKysrKy0NCj4gPiAgaW5jbHVkZS9hY3BpL2FjcGl4Zi5oICAgICAgICAgIHwgICAyMyAr KysrKy0tDQo+ID4gIGluY2x1ZGUvYWNwaS9hY3R5cGVzLmggICAgICAgICB8ICAgODUgKysrKysr KysrKysrKysrKysrKy0tLS0tDQo+ID4gIDcgZmlsZXMgY2hhbmdlZCwgMzM2IGluc2VydGlvbnMo KyksIDI2IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvYWNwaS9h Y3BpY2EvYWNldmVudHMuaA0KPiBiL2RyaXZlcnMvYWNwaS9hY3BpY2EvYWNldmVudHMuaA0KPiA+ IGluZGV4IDc3YWY5MWMuLjNhNmU0ZGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hY3BpL2Fj cGljYS9hY2V2ZW50cy5oDQo+ID4gKysrIGIvZHJpdmVycy9hY3BpL2FjcGljYS9hY2V2ZW50cy5o DQo+ID4gQEAgLTg2LDYgKzg2LDkgQEAgYWNwaV9ldl91cGRhdGVfZ3BlX2VuYWJsZV9tYXNrKHN0 cnVjdA0KPiBhY3BpX2dwZV9ldmVudF9pbmZvICpncGVfZXZlbnRfaW5mbyk7DQo+ID4gIGFjcGlf c3RhdHVzIGFjcGlfZXZfZW5hYmxlX2dwZShzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbw0KPiAq Z3BlX2V2ZW50X2luZm8pOw0KPiA+DQo+ID4gIGFjcGlfc3RhdHVzDQo+ID4gK2FjcGlfZXZfbWFu YWdlX2dwZShzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbyAqZ3BlX2V2ZW50X2luZm8sIHU4DQo+ IGFjdGlvbik7DQo+ID4gKw0KPiA+ICthY3BpX3N0YXR1cw0KPiA+ICBhY3BpX2V2X2FkZF9ncGVf cmVmZXJlbmNlKHN0cnVjdCBhY3BpX2dwZV9ldmVudF9pbmZvDQo+ICpncGVfZXZlbnRfaW5mbyk7 DQo+ID4NCj4gPiAgYWNwaV9zdGF0dXMNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2Fj cGljYS9hY2xvY2FsLmggYi9kcml2ZXJzL2FjcGkvYWNwaWNhL2FjbG9jYWwuaA0KPiA+IGluZGV4 IDEzMzMxZDcuLjE3YTY4MzQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9hY3BpL2FjcGljYS9h Y2xvY2FsLmgNCj4gPiArKysgYi9kcml2ZXJzL2FjcGkvYWNwaWNhL2FjbG9jYWwuaA0KPiA+IEBA IC00ODQsNiArNDg0LDcgQEAgc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gew0KPiA+ICAJdTgg ZmxhZ3M7CQkvKiBNaXNjIGluZm8gYWJvdXQgdGhpcyBHUEUgKi8NCj4gPiAgCXU4IGdwZV9udW1i ZXI7CQkvKiBUaGlzIEdQRSAqLw0KPiA+ICAJdTggcnVudGltZV9jb3VudDsJLyogUmVmZXJlbmNl cyB0byBhIHJ1biBHUEUgKi8NCj4gPiArCXU4IGJsb2NrZWRfZW5hYmxlZDsJLyogR1BFIHNob3Vs ZCBiZSBlbmFibGVkIGJ1dCBibG9ja2VkICovDQo+IA0KPiBJJ20gbm90IHN1cmUgSSdtIGZvbGxv d2luZyB0aGUgbG9naWMgaGVyZS4NCj4gDQo+IFdoYXQncyBuZWVkZWQgaXMgZGlzYWJsZWQgYW5k IGJsb2NrZWQuICBXaHkgZG8gd2UgbmVlZCBlbmFibGVkIGFuZA0KPiBibG9ja2VkPw0KW0x2IFpo ZW5nXSANCkkganVzdCB1c2VkIHRoaXMgdmFyaWFibGUgdG8gdHJhY2sgdGhlICJleHBlY3RlZCBH UEUgaGFyZHdhcmUgcmVnaXN0ZXIncyBFTiBiaXQgdmFsdWUiIGZyb20gZHJpdmVyJ3MgcG9pbnQg b2Ygdmlldy4NClNvOg0KMS4gSWYgaXQgaXMgVFJVRSwgaXQgbWVhbnMgR1BFIHJlZ2lzdGVyJ3Mg RU4gYml0IHNob3VsZCBiZSBmbGFnZ2VkIGZyb20gdGhlIGRyaXZlcnMnIHBvaW50IG9mIHZpZXcu DQoyLiBJZiBpdCBpcyBGQUxTRSwgaXQgbWVhbnMgR1BFIHJlZ2lzdGVyJ3MgRU4gYml0IHNob3Vs ZCBiZSB1bmZsYWdnZWQgZnJvbSB0aGUgZHJpdmVycycgcG9pbnQgdmlldy4NCg0KV2hlbiBhY3Bp X3VuYmxvY2tfZ3BlKCkgaXMgaW52b2tlZCwgSSBuZWVkIHRoZSB2YWx1ZSBoZXJlIHRvIGJlIHJl c3RvcmVkIHRvIHRoZSAiR1BFIGhhcmR3YXJlIHJlZ2lzdGVyJ3MgRU4gYml0Ii4NClNvIGl0IGxv b2tzIGxpa2UgdGhlIGRyaXZlciBleHBlY3RlZCAiRU4gYml0IHZhbHVlIiB3YXMgYmxvY2tlZCBi eSB0aGlzIGZhY2lsaXR5Lg0KVGhhdCdzIHdoeSBJIHVzZSB0aGUgbmFtZSBvZiAiYmxvY2tlZF9l bmFibGVkIi4NCklzIGl0IGFjY2VwdGFibGUgbm93IHdpdGggdGhlIGp1c3RpZmljYXRpb24/DQoN Cj4gDQo+ID4gIH07DQo+ID4NCj4gPiAgLyogSW5mb3JtYXRpb24gYWJvdXQgYSBHUEUgcmVnaXN0 ZXIgcGFpciwgb25lIHBlciBlYWNoIHN0YXR1cy9lbmFibGUNCj4gcGFpciBpbiBhbiBhcnJheSAq Lw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYWNwaWNhL2V2Z3BlLmMgYi9kcml2ZXJz L2FjcGkvYWNwaWNhL2V2Z3BlLmMNCj4gPiBpbmRleCA0YjQ5NDljLi5mODIxYmRkIDEwMDY0NA0K PiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9hY3BpY2EvZXZncGUuYw0KPiA+ICsrKyBiL2RyaXZlcnMv YWNwaS9hY3BpY2EvZXZncGUuYw0KPiA+IEBAIC0xMzAsNiArMTMwLDkwIEBAIGFjcGlfc3RhdHVz IGFjcGlfZXZfZW5hYmxlX2dwZShzdHJ1Y3QNCj4gYWNwaV9ncGVfZXZlbnRfaW5mbyAqZ3BlX2V2 ZW50X2luZm8pDQo+ID4NCj4gPg0KPiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKioqKioNCj4gPiAg ICoNCj4gPiArICogRlVOQ1RJT046ICAgIGFjcGlfZXZfbWFuYWdlX2dwZQ0KPiA+ICsgKg0KPiA+ ICsgKiBQQVJBTUVURVJTOiAgZ3BlX2V2ZW50X2luZm8gICAgICAgICAgLSBHUEUgdG8gZm9yY2Ug ZW5hYmxpbmcvZGlzYWJsaW5nDQo+ID4gKyAqICAgICAgICAgICAgICBhY3Rpb24gICAgICAgICAg ICAgICAgICAtIEFDUElfR1BFX0VOQUJMRSwgQUNQSV9HUEVfRElTQUJMRSBvcg0KPiA+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ1BJX0dQRV9VTk1BTkFHRQ0K PiA+ICsgKg0KPiA+ICsgKiBSRVRVUk46ICAgICAgU3RhdHVzDQo+ID4gKyAqDQo+ID4gKyAqIERF U0NSSVBUSU9OOiBVbmNvbmRpdGlvbmFsbHkgZW5hYmxlIG9yIGRpc2FibGUgYW4gaW5kaXZpZHVh bCBHUEUgZm9yDQo+IHRoZQ0KPiA+ICsgKiAgICAgICAgICAgICAgYWRtaW5pc3RyYXRpdmUgcHVy cG9zZXMgZHVyaW5nIHRoZSBydW50aW1lLg0KPiA+ICsgKg0KPiA+ICsNCj4gKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KPiAqKioqKioq KioqKioqKioqKioqKi8NCj4gPiArDQo+ID4gK2FjcGlfc3RhdHVzDQo+ID4gK2FjcGlfZXZfbWFu YWdlX2dwZShzdHJ1Y3QgYWNwaV9ncGVfZXZlbnRfaW5mbyAqZ3BlX2V2ZW50X2luZm8sIHU4DQo+ IGFjdGlvbikNCj4gPiArew0KPiA+ICsJYWNwaV9zdGF0dXMgc3RhdHVzOw0KPiA+ICsJYWNwaV9l dmVudF9zdGF0dXMgZXZlbnRfc3RhdHVzOw0KPiA+ICsNCj4gPiArCUFDUElfRlVOQ1RJT05fVFJB Q0UoZXZfbWFuYWdlX2dwZSk7DQo+ID4gKw0KPiA+ICsJLyogUGVyZm9ybSB0aGUgYWN0aW9uICov DQo+ID4gKw0KPiA+ICsJc3dpdGNoIChhY3Rpb24pIHsNCj4gPiArCWNhc2UgQUNQSV9HUEVfRU5B QkxFOg0KPiA+ICsJY2FzZSBBQ1BJX0dQRV9ESVNBQkxFOg0KPiA+ICsNCj4gPiArCQlpZiAoIShn cGVfZXZlbnRfaW5mby0+ZmxhZ3MgJg0KPiBBQ1BJX0dQRV9NQU5BR0VEX0ZMQUdfTUFTSykpIHsN Cj4gPiArCQkJc3RhdHVzID0NCj4gPiArCQkJICAgIGFjcGlfaHdfZ2V0X2dwZV9zdGF0dXMoZ3Bl X2V2ZW50X2luZm8sDQo+ID4gKwkJCQkJCSAgICZldmVudF9zdGF0dXMpOw0KPiA+ICsJCQlpZiAo QUNQSV9GQUlMVVJFKHN0YXR1cykpIHsNCj4gPiArCQkJCXJldHVybl9BQ1BJX1NUQVRVUyhzdGF0 dXMpOw0KPiA+ICsJCQl9DQo+ID4gKwkJCWlmIChldmVudF9zdGF0dXMgJiBBQ1BJX0VWRU5UX0ZM QUdfRU5BQkxFX1NFVCkNCj4gew0KPiA+ICsJCQkJZ3BlX2V2ZW50X2luZm8tPmJsb2NrZWRfZW5h YmxlZCA9IFRSVUU7DQo+ID4gKwkJCX0gZWxzZSB7DQo+ID4gKwkJCQlncGVfZXZlbnRfaW5mby0+ YmxvY2tlZF9lbmFibGVkID0gRkFMU0U7DQo+ID4gKwkJCX0NCj4gPiArCQl9DQo+ID4gKw0KPiA+ ICsJCS8qIFJlc2V0IGZsYWdzIHNvIHRoYXQgYWNwaV9od19sb3dfc2V0X2dwZSgpIGNhbiB0YWtl DQo+IGVmZmVjdGl2ZSAqLw0KPiA+ICsNCj4gPiArCQlncGVfZXZlbnRfaW5mby0+ZmxhZ3MgJj0N Cj4gfkFDUElfR1BFX01BTkFHRURfRkxBR19NQVNLOw0KPiA+ICsJCWlmIChhY3Rpb24gPT0gQUNQ SV9HUEVfRU5BQkxFKSB7DQo+ID4gKwkJCSh2b2lkKWFjcGlfaHdfbG93X3NldF9ncGUoZ3BlX2V2 ZW50X2luZm8sDQo+ID4gKwkJCQkJCSAgQUNQSV9HUEVfRU5BQkxFKTsNCj4gPiArCQkJZ3BlX2V2 ZW50X2luZm8tPmZsYWdzIHw9DQo+IEFDUElfR1BFX01BTkFHRURfRU5BQkxFRDsNCj4gPiArCQl9 IGVsc2Ugew0KPiA+ICsJCQkodm9pZClhY3BpX2h3X2xvd19zZXRfZ3BlKGdwZV9ldmVudF9pbmZv LA0KPiA+ICsJCQkJCQkgIEFDUElfR1BFX0RJU0FCTEUpOw0KPiA+ICsJCQlncGVfZXZlbnRfaW5m by0+ZmxhZ3MgfD0NCj4gQUNQSV9HUEVfTUFOQUdFRF9ESVNBQkxFRDsNCj4gPiArCQl9DQo+ID4g KwkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJY2FzZSBBQ1BJX0dQRV9VTk1BTkFHRToNCj4gPiArDQo+ ID4gKwkJaWYgKCEoZ3BlX2V2ZW50X2luZm8tPmZsYWdzICYNCj4gQUNQSV9HUEVfTUFOQUdFRF9G TEFHX01BU0spKSB7DQo+ID4gKwkJCXJldHVybl9BQ1BJX1NUQVRVUyhBRV9CQURfUEFSQU1FVEVS KTsNCj4gPiArCQl9DQo+ID4gKw0KPiA+ICsJCS8qIFJlc2V0IGZsYWdzIHNvIHRoYXQgYWNwaV9o d19sb3dfc2V0X2dwZSgpIGNhbiB0YWtlDQo+IGVmZmVjdGl2ZSAqLw0KPiA+ICsNCj4gPiArCQln cGVfZXZlbnRfaW5mby0+ZmxhZ3MgJj0NCj4gfkFDUElfR1BFX01BTkFHRURfRkxBR19NQVNLOw0K PiA+ICsJCWlmIChncGVfZXZlbnRfaW5mby0+YmxvY2tlZF9lbmFibGVkKSB7DQo+ID4gKwkJCSh2 b2lkKWFjcGlfaHdfbG93X3NldF9ncGUoZ3BlX2V2ZW50X2luZm8sDQo+ID4gKwkJCQkJCSAgQUNQ SV9HUEVfRU5BQkxFKTsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQkodm9pZClhY3BpX2h3X2xv d19zZXRfZ3BlKGdwZV9ldmVudF9pbmZvLA0KPiA+ICsJCQkJCQkgIEFDUElfR1BFX0RJU0FCTEUp Ow0KPiA+ICsJCX0NCj4gPiArCQlncGVfZXZlbnRfaW5mby0+YmxvY2tlZF9lbmFibGVkID0gRkFM U0U7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKw0KPiANCj4gVGhlIGNvZGUgYWJvdmUgaXMgcmVhbGx5 IGhhcmQgdG8gZm9sbG93Lg0KPiANCj4gTWF5YmUgdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBjb21t ZW50IGFib3ZlIHRoZSBmdW5jdGlvbiBzaG91bGQgYmUgbW9yZSwNCj4gd2VsbCwNCj4gZGVzY3Jp cHRpdmU/DQpbTHYgWmhlbmddIA0KT0ssIEknbGwgaW1wcm92ZSBpdC4NCkFsc28gd2l0aCBhY3Bp X2NvbnRyb2xfZ3BlX2hhbmRsaW5nKCkgZGVsZXRlZCwgY29kZSBoZXJlIHNob3VsZCBiZSBtdWNo IHNpbXBsZXIuDQoNCj4gDQo+ID4gKwlkZWZhdWx0Og0KPiA+ICsNCj4gPiArCQlyZXR1cm5fQUNQ SV9TVEFUVVMoQUVfQkFEX1BBUkFNRVRFUik7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJu X0FDUElfU1RBVFVTKEFFX09LKTsNCj4gPiArfQ0KPiA+ICsNCj4gPg0KPiArLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioq KioqKioqKioqKioqKioqDQo+ID4gKyAqDQo+ID4gICAqIEZVTkNUSU9OOiAgICBhY3BpX2V2X2Fk ZF9ncGVfcmVmZXJlbmNlDQo+ID4gICAqDQo+ID4gICAqIFBBUkFNRVRFUlM6ICBncGVfZXZlbnRf aW5mbyAgICAgICAgICAtIEFkZCBhIHJlZmVyZW5jZSB0byB0aGlzIEdQRQ0KPiA+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2FjcGkvYWNwaWNhL2V2eGZncGUuYyBiL2RyaXZlcnMvYWNwaS9hY3BpY2Ev ZXZ4ZmdwZS5jDQo+ID4gaW5kZXggMTdjZmVmNy4uM2FkOGZhOSAxMDA2NDQNCj4gPiAtLS0gYS9k cml2ZXJzL2FjcGkvYWNwaWNhL2V2eGZncGUuYw0KPiA+ICsrKyBiL2RyaXZlcnMvYWNwaS9hY3Bp Y2EvZXZ4ZmdwZS5jDQo+ID4gQEAgLTI1Nyw2ICsyNTcsMTQ4IEBAIEFDUElfRVhQT1JUX1NZTUJP TChhY3BpX3NldF9ncGUpDQo+ID4NCj4gPg0KPiAvKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKioqKioN Cj4gPiAgICoNCj4gPiArICogRlVOQ1RJT046ICAgIGFjcGlfYmxvY2tfZ3BlDQo+ID4gKyAqDQo+ ID4gKyAqIFBBUkFNRVRFUlM6ICBncGVfZGV2aWNlICAgICAgICAgIC0gUGFyZW50IEdQRSBEZXZp Y2UuIE5VTEwgZm9yDQo+IEdQRTAvR1BFMQ0KPiA+ICsgKiAgICAgICAgICAgICAgZ3BlX251bWJl ciAgICAgICAgICAtIEdQRSBsZXZlbCB3aXRoaW4gdGhlIEdQRSBibG9jaw0KPiA+ICsgKg0KPiA+ ICsgKiBSRVRVUk46ICAgICAgU3RhdHVzDQo+ID4gKyAqDQo+ID4gKyAqIERFU0NSSVBUSU9OOiBV bmNvbmRpdGlvbmFsbHkgZGlzYWJsZSBhbiBpbmRpdmlkdWFsIEdQRS4NCj4gPiArICogICAgICAg ICAgICAgIFRoaXMgQVBJIGlzIHR5cGljYWxseSB1c2VkIGJ5IHRoZSBzeXN0ZW0gYWRtaW5pc3Ry YXRvciB0bw0KPiA+ICsgKiAgICAgICAgICAgICAgYmxvY2sgdGhlIEdQRSBlbmFibGluZywgZXgu LCBwcmV2ZW50IHRoZSBHUEUgZmxvb2RpbmcuDQo+ID4gKyAqDQo+ID4gKw0KPiAqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQo+ICoqKioq KioqKioqKioqKioqKioqLw0KPiA+ICthY3BpX3N0YXR1cyBhY3BpX2Jsb2NrX2dwZShhY3BpX2hh bmRsZSBncGVfZGV2aWNlLCB1MzIgZ3BlX251bWJlcikNCj4gPiArew0KPiA+ICsJc3RydWN0IGFj cGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvOw0KPiA+ICsJYWNwaV9zdGF0dXMgc3Rh dHVzOw0KPiA+ICsJYWNwaV9jcHVfZmxhZ3MgZmxhZ3M7DQo+ID4gKw0KPiA+ICsJQUNQSV9GVU5D VElPTl9UUkFDRShhY3BpX2Jsb2NrX2dwZSk7DQo+ID4gKw0KPiA+ICsJZmxhZ3MgPSBhY3BpX29z X2FjcXVpcmVfbG9jayhhY3BpX2dibF9ncGVfbG9jayk7DQo+ID4gKw0KPiA+ICsJLyogRW5zdXJl IHRoYXQgd2UgaGF2ZSBhIHZhbGlkIEdQRSBudW1iZXIgKi8NCj4gPiArDQo+ID4gKwlncGVfZXZl bnRfaW5mbyA9IGFjcGlfZXZfZ2V0X2dwZV9ldmVudF9pbmZvKGdwZV9kZXZpY2UsDQo+IGdwZV9u dW1iZXIpOw0KPiA+ICsJaWYgKCFncGVfZXZlbnRfaW5mbykgew0KPiA+ICsJCXN0YXR1cyA9IEFF X0JBRF9QQVJBTUVURVI7DQo+ID4gKwkJZ290byB1bmxvY2tfYW5kX2V4aXQ7DQo+ID4gKwl9DQo+ ID4gKw0KPiA+ICsJc3RhdHVzID0gYWNwaV9ldl9tYW5hZ2VfZ3BlKGdwZV9ldmVudF9pbmZvLA0K PiBBQ1BJX0dQRV9ESVNBQkxFKTsNCj4gDQo+IFNvIEkgd291bGQgcHJlZmVyIHRoZSBzZWNvbmQg YXJndW1lbnQgaGVyZSB0byBiZSBzb21ldGhpbmcgbGlrZQ0KPiBBQ1BJX0dQRV9ESVNBQkxFIHwg QUNQSV9HUEVfQkxPQ0sgYXMgdGhlbiB0aGUgY29kZSB3b3VsZCBiZSBxdWl0ZQ0KPiBzdHJhaWdo dGZvcndhcmQgdG8gdW5kZXJzdGFuZC4NCltMdiBaaGVuZ10gDQpPSy4NCg0KPiANCj4gPiArDQo+ ID4gK3VubG9ja19hbmRfZXhpdDoNCj4gPiArCWFjcGlfb3NfcmVsZWFzZV9sb2NrKGFjcGlfZ2Js X2dwZV9sb2NrLCBmbGFncyk7DQo+ID4gKwlyZXR1cm5fQUNQSV9TVEFUVVMoc3RhdHVzKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArQUNQSV9FWFBPUlRfU1lNQk9MKGFjcGlfYmxvY2tfZ3BlKQ0KPiA+ ICsNCj4gPg0KPiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqDQo+ICoqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gKyAqDQo+ID4gKyAq IEZVTkNUSU9OOiAgICBhY3BpX3VuYmxvY2tfZ3BlDQo+ID4gKyAqDQo+ID4gKyAqIFBBUkFNRVRF UlM6ICBncGVfZGV2aWNlICAgICAgICAgIC0gUGFyZW50IEdQRSBEZXZpY2UuIE5VTEwgZm9yDQo+ IEdQRTAvR1BFMQ0KPiA+ICsgKiAgICAgICAgICAgICAgZ3BlX251bWJlciAgICAgICAgICAtIEdQ RSBsZXZlbCB3aXRoaW4gdGhlIEdQRSBibG9jaw0KPiA+ICsgKg0KPiA+ICsgKiBSRVRVUk46ICAg ICAgU3RhdHVzDQo+ID4gKyAqDQo+ID4gKyAqIERFU0NSSVBUSU9OOiBTdG9wIHVuY29uZGl0aW9u YWwgR1BFIGRpc2FibGluZy4NCj4gPiArICogICAgICAgICAgICAgIFRoaXMgQVBJIHJldmVydHMg YWNwaV9ibG9ja19ncGUoKS4NCj4gPiArICoNCj4gPiArDQo+ICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioq KioqKiovDQo+ID4gK2FjcGlfc3RhdHVzIGFjcGlfdW5ibG9ja19ncGUoYWNwaV9oYW5kbGUgZ3Bl X2RldmljZSwgdTMyDQo+IGdwZV9udW1iZXIpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBhY3BpX2dw ZV9ldmVudF9pbmZvICpncGVfZXZlbnRfaW5mbzsNCj4gPiArCWFjcGlfc3RhdHVzIHN0YXR1czsN Cj4gPiArCWFjcGlfY3B1X2ZsYWdzIGZsYWdzOw0KPiA+ICsNCj4gPiArCUFDUElfRlVOQ1RJT05f VFJBQ0UoYWNwaV91bmJsb2NrX2dwZSk7DQo+ID4gKw0KPiA+ICsJZmxhZ3MgPSBhY3BpX29zX2Fj cXVpcmVfbG9jayhhY3BpX2dibF9ncGVfbG9jayk7DQo+ID4gKw0KPiA+ICsJLyogRW5zdXJlIHRo YXQgd2UgaGF2ZSBhIHZhbGlkIEdQRSBudW1iZXIgKi8NCj4gPiArDQo+ID4gKwlncGVfZXZlbnRf aW5mbyA9IGFjcGlfZXZfZ2V0X2dwZV9ldmVudF9pbmZvKGdwZV9kZXZpY2UsDQo+IGdwZV9udW1i ZXIpOw0KPiA+ICsJaWYgKCFncGVfZXZlbnRfaW5mbykgew0KPiA+ICsJCXN0YXR1cyA9IEFFX0JB RF9QQVJBTUVURVI7DQo+ID4gKwkJZ290byB1bmxvY2tfYW5kX2V4aXQ7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJc3RhdHVzID0gYWNwaV9ldl9tYW5hZ2VfZ3BlKGdwZV9ldmVudF9pbmZvLA0KPiBB Q1BJX0dQRV9VTk1BTkFHRSk7DQo+IA0KPiBBbmQgdGhhdCBpcyBjb21wbGV0ZWx5IHVuY2xlYXIg dG8gbWUuDQpbTHYgWmhlbmddIA0KVGhlIG9yaWdpbmFsIGNvZGUgaW1wbGVtZW50ZWQgMyBzdGF0 ZXMuDQpCbG9ja2VkIChHUEUgcmVnaXN0ZXIncyBFTiBiaXQgaXMgbm90IGNoYW5nZWFibGUpIGJ1 dCBkaXNhYmxlZCAoYW5kIGl0IGlzIGFsd2F5cyAwKS4NCkJsb2NrZWQgKEdQRSByZWdpc3Rlcidz IEVOIGJpdCBpcyBub3QgY2hhbmdlYWJsZSkgYnV0IGVuYWJsZWQgKGFuZCBpdCBpcyBhbHdheXMg MSkuDQpVbmJsb2NrZWQgKEdQRSByZWdpc3RlcidzIEVOIGJpdCBpcyBjaGFuZ2VhYmxlKS4NCg0K U28gdGhlIHdvcmRpbmcgIk1BTkFHRSIgaXMgcmVhbGx5IGEgYmFkIGlkZWEsIGNhdXNpbmcgYWxs IGtpbmQgb2YgbWlzdW5kZXJzdGFuZGluZ3MuIDopDQoNCj4gDQo+ID4gKw0KPiA+ICt1bmxvY2tf YW5kX2V4aXQ6DQo+ID4gKwlhY3BpX29zX3JlbGVhc2VfbG9jayhhY3BpX2dibF9ncGVfbG9jaywg ZmxhZ3MpOw0KPiA+ICsJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7DQo+ID4gK30NCj4gPiAr DQo+ID4gK0FDUElfRVhQT1JUX1NZTUJPTChhY3BpX3VuYmxvY2tfZ3BlKQ0KPiA+ICsNCj4gPg0K PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqDQo+ICoqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gKyAqDQo+ID4gKyAqIEZVTkNUSU9O OiAgICBhY3BpX2NvbnRyb2xfZ3BlX2hhbmRsaW5nDQo+ID4gKyAqDQo+ID4gKyAqIFBBUkFNRVRF UlM6ICBncGVfZGV2aWNlICAgICAgICAgIC0gUGFyZW50IEdQRSBEZXZpY2UuIE5VTEwgZm9yDQo+ IEdQRTAvR1BFMQ0KPiA+ICsgKiAgICAgICAgICAgICAgZ3BlX251bWJlciAgICAgICAgICAtIEdQ RSBsZXZlbCB3aXRoaW4gdGhlIEdQRSBibG9jaw0KPiA+ICsgKiAgICAgICAgICAgICAgdXNlX2lu dGVycnVwdF9tb2RlICAtIEFsbG93IHRoZSBHUEUgdG8gYmUgZGlzcGF0Y2hlZCBpbiB0aGUNCj4g PiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHQgbW9kZQ0K PiA+ICsgKiAgICAgICAgICAgICAgdXNlX3BvbGxpbmdfbW9kZSAgICAtIEFsbG93IHRoZSBHUEUg dG8gYmUgZGlzcGF0Y2hlZCBpbiB0aGUNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb2xsaW5nIG1vZGUNCj4gPiArICoNCj4gPiArICogUkVUVVJOOiAgICAgIFN0 YXR1cw0KPiA+ICsgKg0KPiA+ICsgKiBERVNDUklQVElPTjogU3dpdGNoIHRoZSBHUEUgaGFuZGxp bmcgbW9kZSBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHQNCj4gb25seSBtb2RlLA0KPiA+ICsgKiAgICAg ICAgICAgICAgdGhlIHBvbGxpbmcgb25seSBtb2RlIGFuZCB0aGUgaW50ZXJydXB0L3BvbGxpbmcg YWRhcHRpdmUNCj4gbW9kZS4NCj4gPiArICoNCj4gPiArDQo+ICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCj4gKioqKioqKioqKioqKioq KioqKiovDQo+IA0KPiBUaGlzIGlzIGV4dHJhIGZ1bmN0aW9uYWxpdHkgdGhhdCB5b3Ugd2FudCB0 byBwaWdneSBiYWNrIG9uIGEgZml4IGZvciBhIHJlYWwNCj4gaXNzdWUuDQo+IA0KPiBQbGVhc2Ug c2VwYXJhdGUgaXQgZnJvbSB0aGF0IGZpeCwgaXQgZG9lc24ndCBiZWxvbmcgaGVyZS4NCltMdiBa aGVuZ10gDQpPSy4NCg0KPiANCj4gPiArYWNwaV9zdGF0dXMNCj4gPiArYWNwaV9jb250cm9sX2dw ZV9oYW5kbGluZyhhY3BpX2hhbmRsZSBncGVfZGV2aWNlLA0KPiA+ICsJCQkgIHUzMiBncGVfbnVt YmVyLA0KPiA+ICsJCQkgIHU4IHVzZV9pbnRlcnJ1cHRfbW9kZSwgdTggdXNlX3BvbGxpbmdfbW9k ZSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9p bmZvOw0KPiA+ICsJYWNwaV9zdGF0dXMgc3RhdHVzOw0KPiA+ICsJYWNwaV9jcHVfZmxhZ3MgZmxh Z3M7DQo+ID4gKwl1OCBhY3Rpb247DQo+ID4gKw0KPiA+ICsJQUNQSV9GVU5DVElPTl9UUkFDRShh Y3BpX2NvbnRyb2xfZ3BlX2hhbmRsaW5nKTsNCj4gPiArDQo+ID4gKwlpZiAoIXVzZV9pbnRlcnJ1 cHRfbW9kZSAmJiAhdXNlX3BvbGxpbmdfbW9kZSkgew0KPiA+ICsJCXJldHVybl9BQ1BJX1NUQVRV UyhBRV9CQURfUEFSQU1FVEVSKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlmbGFncyA9IGFjcGlf b3NfYWNxdWlyZV9sb2NrKGFjcGlfZ2JsX2dwZV9sb2NrKTsNCj4gPiArDQo+ID4gKwkvKiBFbnN1 cmUgdGhhdCB3ZSBoYXZlIGEgdmFsaWQgR1BFIG51bWJlciAqLw0KPiA+ICsNCj4gPiArCWdwZV9l dmVudF9pbmZvID0gYWNwaV9ldl9nZXRfZ3BlX2V2ZW50X2luZm8oZ3BlX2RldmljZSwNCj4gZ3Bl X251bWJlcik7DQo+ID4gKwlpZiAoIWdwZV9ldmVudF9pbmZvKSB7DQo+ID4gKwkJc3RhdHVzID0g QUVfQkFEX1BBUkFNRVRFUjsNCj4gPiArCQlnb3RvIHVubG9ja19hbmRfZXhpdDsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwkvKiBQaWNrIHVwIGFuZCBwZWZvcm0gdGhlIGNvcnJlY3QgYWN0aW9uICov DQo+ID4gKw0KPiA+ICsJYWN0aW9uID0gQUNQSV9HUEVfVU5NQU5BR0U7DQo+ID4gKwlpZiAoIXVz ZV9pbnRlcnJ1cHRfbW9kZSkgew0KPiA+ICsJCWFjdGlvbiA9IEFDUElfR1BFX0RJU0FCTEU7DQo+ ID4gKwl9DQo+ID4gKwlpZiAoIXVzZV9wb2xsaW5nX21vZGUpIHsNCj4gPiArCQlhY3Rpb24gPSBB Q1BJX0dQRV9FTkFCTEU7DQo+ID4gKwl9DQo+ID4gKwlzdGF0dXMgPSBhY3BpX2V2X21hbmFnZV9n cGUoZ3BlX2V2ZW50X2luZm8sIGFjdGlvbik7DQo+ID4gKw0KPiA+ICt1bmxvY2tfYW5kX2V4aXQ6 DQo+ID4gKwlhY3BpX29zX3JlbGVhc2VfbG9jayhhY3BpX2dibF9ncGVfbG9jaywgZmxhZ3MpOw0K PiA+ICsJcmV0dXJuX0FDUElfU1RBVFVTKHN0YXR1cyk7DQo+ID4gK30NCj4gPiArDQo+ID4gK0FD UElfRVhQT1JUX1NZTUJPTChhY3BpX2NvbnRyb2xfZ3BlX2hhbmRsaW5nKQ0KPiA+ICsNCj4gPg0K PiArLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqDQo+ICoqKioqKioqKioqKioqKioqKioqKioqDQo+ID4gKyAqDQo+ID4gICAqIEZVTkNUSU9O OiAgICBhY3BpX21hcmtfZ3BlX2Zvcl93YWtlDQo+ID4gICAqDQo+ID4gICAqIFBBUkFNRVRFUlM6 ICBncGVfZGV2aWNlICAgICAgICAgIC0gUGFyZW50IEdQRSBEZXZpY2UuIE5VTEwgZm9yDQo+IEdQ RTAvR1BFMQ0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvYWNwaWNhL2h3Z3BlLmMgYi9k cml2ZXJzL2FjcGkvYWNwaWNhL2h3Z3BlLmMNCj4gPiBpbmRleCBiZGVjZDVlLi44Y2RkZGJlIDEw MDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvYWNwaS9hY3BpY2EvaHdncGUuYw0KPiA+ICsrKyBiL2Ry aXZlcnMvYWNwaS9hY3BpY2EvaHdncGUuYw0KPiA+IEBAIC05OCw3ICs5OCw3IEBAIGFjcGlfc3Rh dHVzDQo+ID4gIGFjcGlfaHdfbG93X3NldF9ncGUoc3RydWN0IGFjcGlfZ3BlX2V2ZW50X2luZm8g KmdwZV9ldmVudF9pbmZvLA0KPiB1MzIgYWN0aW9uKQ0KPiA+ICB7DQo+ID4gIAlzdHJ1Y3QgYWNw aV9ncGVfcmVnaXN0ZXJfaW5mbyAqZ3BlX3JlZ2lzdGVyX2luZm87DQo+ID4gLQlhY3BpX3N0YXR1 cyBzdGF0dXM7DQo+ID4gKwlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9PSzsNCj4gPiAgCXUzMiBl bmFibGVfbWFzazsNCj4gPiAgCXUzMiByZWdpc3Rlcl9iaXQ7DQo+ID4NCj4gPiBAQCAtMTQ4LDkg KzE0OCwyMSBAQCBhY3BpX2h3X2xvd19zZXRfZ3BlKHN0cnVjdA0KPiBhY3BpX2dwZV9ldmVudF9p bmZvICpncGVfZXZlbnRfaW5mbywgdTMyIGFjdGlvbikNCj4gPiAgCQlyZXR1cm4gKEFFX0JBRF9Q QVJBTUVURVIpOw0KPiA+ICAJfQ0KPiA+DQo+ID4gLQkvKiBXcml0ZSB0aGUgdXBkYXRlZCBlbmFi bGUgbWFzayAqLw0KPiA+ICsJLyogQ2hlY2sgaWYgdGhlcmUgaXMgYW4gYWRtaW5pc3RyYXRpdmUg R1BFIGVuYWJsaW5nL2Rpc2FibGluZyAqLw0KPiA+DQo+ID4gLQlzdGF0dXMgPSBhY3BpX2h3X3dy aXRlKGVuYWJsZV9tYXNrLCAmZ3BlX3JlZ2lzdGVyX2luZm8tDQo+ID5lbmFibGVfYWRkcmVzcyk7 DQo+ID4gKwlpZiAoZ3BlX2V2ZW50X2luZm8tPmZsYWdzICYgQUNQSV9HUEVfTUFOQUdFRF9GTEFH X01BU0spIHsNCj4gPiArCQlpZiAoZW5hYmxlX21hc2sgJiByZWdpc3Rlcl9iaXQpIHsNCj4gPiAr CQkJZ3BlX2V2ZW50X2luZm8tPmJsb2NrZWRfZW5hYmxlZCA9IFRSVUU7DQo+ID4gKwkJfSBlbHNl IHsNCj4gPiArCQkJZ3BlX2V2ZW50X2luZm8tPmJsb2NrZWRfZW5hYmxlZCA9IEZBTFNFOw0KPiA+ ICsJCX0NCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJLyogV3JpdGUgdGhlIHVwZGF0ZWQgZW5hYmxl IG1hc2sgKi8NCj4gPiArDQo+ID4gKwkJc3RhdHVzID0NCj4gPiArCQkgICAgYWNwaV9od193cml0 ZShlbmFibGVfbWFzaywNCj4gPiArCQkJCSAgJmdwZV9yZWdpc3Rlcl9pbmZvLT5lbmFibGVfYWRk cmVzcyk7DQo+ID4gKwl9DQo+ID4gIAlyZXR1cm4gKHN0YXR1cyk7DQo+ID4gIH0NCj4gPg0KPiA+ IEBAIC0yMjgsNiArMjQwLDEyIEBAIGFjcGlfaHdfZ2V0X2dwZV9zdGF0dXMoc3RydWN0DQo+IGFj cGlfZ3BlX2V2ZW50X2luZm8gKmdwZV9ldmVudF9pbmZvLA0KPiA+ICAJCWxvY2FsX2V2ZW50X3N0 YXR1cyB8PSBBQ1BJX0VWRU5UX0ZMQUdfSEFTX0hBTkRMRVI7DQo+ID4gIAl9DQo+ID4NCj4gPiAr CS8qIEdQRSBjdXJyZW50bHkgbWFuYWdlZD8gKGVuYWJsZWQvZGlzYWJsZWQgYnkgdGhlIHN5c3Rl bQ0KPiBhZG1pbj8pICovDQo+ID4gKw0KPiA+ICsJaWYgKGdwZV9ldmVudF9pbmZvLT5mbGFncyAm IEFDUElfR1BFX01BTkFHRURfRkxBR19NQVNLKSB7DQo+ID4gKwkJbG9jYWxfZXZlbnRfc3RhdHVz IHw9IEFDUElfRVZFTlRfRkxBR19NQU5BR0VEOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAgCS8qIEdl dCB0aGUgaW5mbyBibG9jayBmb3IgdGhlIGVudGlyZSBHUEUgcmVnaXN0ZXIgKi8NCj4gPg0KPiA+ ICAJZ3BlX3JlZ2lzdGVyX2luZm8gPSBncGVfZXZlbnRfaW5mby0+cmVnaXN0ZXJfaW5mbzsNCj4g PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjcGl4Zi5oIGIvaW5jbHVkZS9hY3BpL2FjcGl4 Zi5oDQo+ID4gaW5kZXggNGU0YzIxNC4uYTBhNjU0NCAxMDA2NDQNCj4gPiAtLS0gYS9pbmNsdWRl L2FjcGkvYWNwaXhmLmgNCj4gPiArKysgYi9pbmNsdWRlL2FjcGkvYWNwaXhmLmgNCj4gPiBAQCAt NzMyLDE1ICs3MzIsMjggQEANCj4gQUNQSV9IV19ERVBFTkRFTlRfUkVUVVJOX1NUQVRVUyhhY3Bp X3N0YXR1cw0KPiA+ICAJCQkJCQl1MzIgZ3BlX251bWJlcikpDQo+ID4NCj4gPiAgQUNQSV9IV19E RVBFTkRFTlRfUkVUVVJOX1NUQVRVUyhhY3BpX3N0YXR1cw0KPiA+IC0JCQkJYWNwaV9tYXJrX2dw ZV9mb3Jfd2FrZShhY3BpX2hhbmRsZQ0KPiBncGVfZGV2aWNlLA0KPiA+IC0JCQkJCQkgICAgICAg dTMyIGdwZV9udW1iZXIpKQ0KPiA+ICsJCQkJYWNwaV9ibG9ja19ncGUoYWNwaV9oYW5kbGUgZ3Bl X2RldmljZSwNCj4gPiArCQkJCQkgICAgICAgdTMyIGdwZV9udW1iZXIpKQ0KPiA+ICsNCj4gPiAr QUNQSV9IV19ERVBFTkRFTlRfUkVUVVJOX1NUQVRVUyhhY3BpX3N0YXR1cw0KPiA+ICsJCQkJYWNw aV91bmJsb2NrX2dwZShhY3BpX2hhbmRsZSBncGVfZGV2aWNlLA0KPiA+ICsJCQkJCQkgdTMyIGdw ZV9udW1iZXIpKQ0KPiA+DQo+ID4gIEFDUElfSFdfREVQRU5ERU5UX1JFVFVSTl9TVEFUVVMoYWNw aV9zdGF0dXMNCj4gPiAtCQkJCWFjcGlfc2V0dXBfZ3BlX2Zvcl93YWtlKGFjcGlfaGFuZGxlDQo+ ID4gLQkJCQkJCQlwYXJlbnRfZGV2aWNlLA0KPiA+IC0JCQkJCQkJYWNwaV9oYW5kbGUNCj4gZ3Bl X2RldmljZSwNCj4gPiArCQkJCWFjcGlfY29udHJvbF9ncGVfaGFuZGxpbmcoYWNwaV9oYW5kbGUN Cj4gPiArCQkJCQkJCSAgZ3BlX2RldmljZSwNCj4gPiArCQkJCQkJCSAgdTMyIGdwZV9udW1iZXIs DQo+ID4gKwkJCQkJCQkgIHU4DQo+IHVzZV9pbnRlcnJ1cHRfbW9kZSwNCj4gPiArCQkJCQkJCSAg dTgNCj4gdXNlX3BvbGxpbmdfbW9kZSkpDQo+ID4gK0FDUElfSFdfREVQRU5ERU5UX1JFVFVSTl9T VEFUVVMoYWNwaV9zdGF0dXMNCj4gPiArCQkJCSBhY3BpX21hcmtfZ3BlX2Zvcl93YWtlKGFjcGlf aGFuZGxlDQo+IGdwZV9kZXZpY2UsDQo+ID4gIAkJCQkJCQl1MzIgZ3BlX251bWJlcikpDQo+ID4g IEFDUElfSFdfREVQRU5ERU5UX1JFVFVSTl9TVEFUVVMoYWNwaV9zdGF0dXMNCj4gPiArCQkJCSBh Y3BpX3NldHVwX2dwZV9mb3Jfd2FrZShhY3BpX2hhbmRsZQ0KPiA+ICsJCQkJCQkJIHBhcmVudF9k ZXZpY2UsDQo+ID4gKwkJCQkJCQkgYWNwaV9oYW5kbGUNCj4gZ3BlX2RldmljZSwNCj4gPiArCQkJ CQkJCSB1MzIgZ3BlX251bWJlcikpDQo+ID4gK0FDUElfSFdfREVQRU5ERU5UX1JFVFVSTl9TVEFU VVMoYWNwaV9zdGF0dXMNCj4gPiAgCQkJCSBhY3BpX3NldF9ncGVfd2FrZV9tYXNrKGFjcGlfaGFu ZGxlDQo+IGdwZV9kZXZpY2UsDQo+ID4gIAkJCQkJCQl1MzIgZ3BlX251bWJlciwNCj4gPiAgCQkJ CQkJCXU4IGFjdGlvbikpDQo+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvYWNwaS9hY3R5cGVzLmgg Yi9pbmNsdWRlL2FjcGkvYWN0eXBlcy5oDQo+ID4gaW5kZXggY2IzODllZi4uOWY4NDFmMiAxMDA2 NDQNCj4gPiAtLS0gYS9pbmNsdWRlL2FjcGkvYWN0eXBlcy5oDQo+ID4gKysrIGIvaW5jbHVkZS9h Y3BpL2FjdHlwZXMuaA0KPiA+IEBAIC03MzIsMTYgKzczMiwxNyBAQCB0eXBlZGVmIHUzMiBhY3Bp X2V2ZW50X3R5cGU7DQo+ID4gICAqIFRoZSBlbmNvZGluZyBvZiBhY3BpX2V2ZW50X3N0YXR1cyBp cyBpbGx1c3RyYXRlZCBiZWxvdy4NCj4gPiAgICogTm90ZSB0aGF0IGEgc2V0IGJpdCAoMSkgaW5k aWNhdGVzIHRoZSBwcm9wZXJ0eSBpcyBUUlVFDQo+ID4gICAqIChlLmcuIGlmIGJpdCAwIGlzIHNl dCB0aGVuIHRoZSBldmVudCBpcyBlbmFibGVkKS4NCj4gPiAtICogKy0tLS0tLS0tLS0tLS0rLSst Ky0rLSstKw0KPiA+IC0gKiB8ICAgQml0cyAzMTo1IHw0fDN8MnwxfDB8DQo+ID4gLSAqICstLS0t LS0tLS0tLS0tKy0rLSstKy0rLSsNCj4gPiAtICogICAgICAgICAgfCAgICAgfCB8IHwgfCB8DQo+ ID4gLSAqICAgICAgICAgIHwgICAgIHwgfCB8IHwgKy0gRW5hYmxlZD8NCj4gPiAtICogICAgICAg ICAgfCAgICAgfCB8IHwgKy0tLSBFbmFibGVkIGZvciB3YWtlPw0KPiA+IC0gKiAgICAgICAgICB8 ICAgICB8IHwgKy0tLS0tIFN0YXR1cyBiaXQgc2V0Pw0KPiA+IC0gKiAgICAgICAgICB8ICAgICB8 ICstLS0tLS0tIEVuYWJsZSBiaXQgc2V0Pw0KPiA+IC0gKiAgICAgICAgICB8ICAgICArLS0tLS0t LS0tIEhhcyBhIGhhbmRsZXI/DQo+ID4gLSAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0gPFJl c2VydmVkPg0KPiA+ICsgKiArLS0tLS0tLS0tLS0tLSstKy0rLSstKy0rLSsNCj4gPiArICogfCAg IEJpdHMgMzE6NiB8NXw0fDN8MnwxfDB8DQo+ID4gKyAqICstLS0tLS0tLS0tLS0tKy0rLSstKy0r LSstKw0KPiA+ICsgKiAgICAgICAgICB8ICAgICB8IHwgfCB8IHwgfA0KPiA+ICsgKiAgICAgICAg ICB8ICAgICB8IHwgfCB8IHwgKy0gRW5hYmxlZD8NCj4gPiArICogICAgICAgICAgfCAgICAgfCB8 IHwgfCArLS0tIEVuYWJsZWQgZm9yIHdha2U/DQo+ID4gKyAqICAgICAgICAgIHwgICAgIHwgfCB8 ICstLS0tLSBTdGF0dXMgYml0IHNldD8NCj4gPiArICogICAgICAgICAgfCAgICAgfCB8ICstLS0t LS0tIEVuYWJsZSBiaXQgc2V0Pw0KPiA+ICsgKiAgICAgICAgICB8ICAgICB8ICstLS0tLS0tLS0g SGFzIGEgaGFuZGxlcj8NCj4gPiArICogICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tIEVuYWJs aW5nL2Rpc2FibGluZyBmb3JjZWQ/DQo+ID4gKyAqICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0t LSA8UmVzZXJ2ZWQ+DQo+ID4gICAqLw0KPiA+ICB0eXBlZGVmIHUzMiBhY3BpX2V2ZW50X3N0YXR1 czsNCj4gPg0KPiA+IEBAIC03NTEsNiArNzUyLDcgQEAgdHlwZWRlZiB1MzIgYWNwaV9ldmVudF9z dGF0dXM7DQo+ID4gICNkZWZpbmUgQUNQSV9FVkVOVF9GTEFHX1NUQVRVU19TRVQgICAgICAoYWNw aV9ldmVudF9zdGF0dXMpIDB4MDQNCj4gPiAgI2RlZmluZSBBQ1BJX0VWRU5UX0ZMQUdfRU5BQkxF X1NFVCAgICAgIChhY3BpX2V2ZW50X3N0YXR1cykgMHgwOA0KPiA+ICAjZGVmaW5lIEFDUElfRVZF TlRfRkxBR19IQVNfSEFORExFUiAgICAgKGFjcGlfZXZlbnRfc3RhdHVzKSAweDEwDQo+ID4gKyNk ZWZpbmUgQUNQSV9FVkVOVF9GTEFHX01BTkFHRUQgICAgICAgICAoYWNwaV9ldmVudF9zdGF0dXMp IDB4MjANCj4gDQo+IFRoZSBtZWFuaW5nIG9mIHRoaXMgbmV3IGZsYWcgaXMgdW5jbGVhci4gIEl0 IHByb2JhYmx5IHNob3VsZCBiZSBzb21ldGhpbmcNCj4gbGlrZQ0KPiBBQ1BJX0VWRU5UX0ZMQUdf QkxPQ0tFRCBvciBNQVNLRUQgbWVhbmluZyB0aGF0IGlmIHNldCwgdGhlIEdQRQ0KPiBjYW5ub3Qg YmUNCj4gZGlzYWJsZWQgb3IgZW5hYmxlZCBieSB1c3VhbCBtZWFucyAodW50aWwgdGhhdCBmbGFn IGlzIGNsZWFyZWQpLg0KW0x2IFpoZW5nXSANCk9LLiANCg0KPiANCj4gPiAgI2RlZmluZSBBQ1BJ X0VWRU5UX0ZMQUdfU0VUICAgICAgICAgICAgIEFDUElfRVZFTlRfRkxBR19TVEFUVVNfU0VUDQo+ ID4NCj4gPiAgLyogQWN0aW9ucyBmb3IgYWNwaV9zZXRfZ3BlLCBhY3BpX2dwZV93YWtldXAsIGFj cGlfaHdfbG93X3NldF9ncGUNCj4gKi8NCj4gPiBAQCAtNzU4LDE3ICs3NjAsMjAgQEAgdHlwZWRl ZiB1MzIgYWNwaV9ldmVudF9zdGF0dXM7DQo+ID4gICNkZWZpbmUgQUNQSV9HUEVfRU5BQkxFICAg ICAgICAgICAgICAgICAwDQo+ID4gICNkZWZpbmUgQUNQSV9HUEVfRElTQUJMRSAgICAgICAgICAg ICAgICAxDQo+ID4gICNkZWZpbmUgQUNQSV9HUEVfQ09ORElUSU9OQUxfRU5BQkxFICAgICAyDQo+ ID4gKyNkZWZpbmUgQUNQSV9HUEVfVU5NQU5BR0UgICAgICAgICAgICAgICAzDQo+ID4NCj4gPiAg LyoNCj4gPiAgICogR1BFIGluZm8gZmxhZ3MgLSBQZXIgR1BFDQo+ID4gLSAqICstLS0tLS0tKy0r LSstLS0rDQo+ID4gLSAqIHwgIDc6NSAgfDR8M3wyOjB8DQo+ID4gLSAqICstLS0tLS0tKy0rLSst LS0rDQo+ID4gLSAqICAgICB8ICAgIHwgfCAgfA0KPiA+IC0gKiAgICAgfCAgICB8IHwgICstLSBU eXBlIG9mIGRpc3BhdGNoOnRvIG1ldGhvZCwgaGFuZGxlciwgbm90aWZ5LCBvciBub25lDQo+ID4g LSAqICAgICB8ICAgIHwgKy0tLS0tIEludGVycnVwdCB0eXBlOiBlZGdlIG9yIGxldmVsIHRyaWdn ZXJlZA0KPiA+IC0gKiAgICAgfCAgICArLS0tLS0tLSBJcyBhIFdha2UgR1BFDQo+ID4gLSAqICAg ICArLS0tLS0tLS0tLS0tIDxSZXNlcnZlZD4NCj4gPiArICogKy0rLSstKy0rLSstLS0rDQo+ID4g KyAqIHw3fDZ8NXw0fDN8MjowfA0KPiA+ICsgKiArLSstKy0rLSstKy0tLSsNCj4gPiArICogIHwg fCB8IHwgfCAgfA0KPiA+ICsgKiAgfCB8IHwgfCB8ICArLS0gVHlwZSBvZiBkaXNwYXRjaDp0byBt ZXRob2QsIGhhbmRsZXIsIG5vdGlmeSwgb3Igbm9uZQ0KPiA+ICsgKiAgfCB8IHwgfCArLS0tLS0g SW50ZXJydXB0IHR5cGU6IGVkZ2Ugb3IgbGV2ZWwgdHJpZ2dlcmVkDQo+ID4gKyAqICB8IHwgfCAr LS0tLS0tLSBJcyBhIFdha2UgR1BFDQo+ID4gKyAqICB8IHwgKy0tLS0tLS0tLSBGb3JjZSBHUEUg ZW5hYmxpbmcNCj4gPiArICogIHwgKy0tLS0tLS0tLS0tIEZvcmNlIEdQRSBkaXNhYmxpbmcNCj4g PiArICogICstLS0tLS0tLS0tLS0tIDxSZXNlcnZlZD4NCj4gPiAgICovDQo+ID4gICNkZWZpbmUg QUNQSV9HUEVfRElTUEFUQ0hfTk9ORSAgICAgICAgICAodTgpIDB4MDANCj4gPiAgI2RlZmluZSBB Q1BJX0dQRV9ESVNQQVRDSF9NRVRIT0QgICAgICAgICh1OCkgMHgwMQ0KPiA+IEBAIC03ODUsNiAr NzkwLDUwIEBAIHR5cGVkZWYgdTMyIGFjcGlfZXZlbnRfc3RhdHVzOw0KPiA+ICAjZGVmaW5lIEFD UElfR1BFX0NBTl9XQUtFICAgICAgICAgICAgICAgKHU4KSAweDEwDQo+ID4NCj4gPiAgLyoNCj4g PiArICogRmxhZ3MgdXNlZCBieSB0aGUgR1BFIG1hbmFnZW1lbnQgQVBJcw0KPiA+ICsgKg0KPiA+ ICsgKiBUaGUgR1BFIG1hbmFnZW1lbnQgQVBJcyBhcmUgbm90IGltcGxlbWVudGVkIGZvciB0aGUg R1BFIGRyaXZlcnMuDQo+IEl0IGlzDQo+ID4gKyAqIGRlc2lnbmVkIGZvciBwcm92aWRpbmcgdGhl IG1hbmFnZW1lbnQgcHVycG9zZXMgb3V0IG9mIHRoZSBHUEUNCj4gZHJpdmVycycNCj4gPiArICog YXdhcmVuZXNzLiBUaGUgR1BFIGRyaXZlciBBUElzIHNob3VsZCBzdGlsbCBiZSB3b3JraW5nIGFz IGV4cGVjdGVkDQo+ID4gKyAqIGR1cmluZyB0aGUgcGVyaW9kIHRoZSBHUEUgbWFuYWdlbWVudCBw dXJwb3NlcyBhcmUgYXBwbGllZC4gVGhlcmUNCj4gYXJlIDINCj4gPiArICogdXNlIGNhc2VzIGZv ciB0aGUgZmxhZ3M6DQo+ID4gKyAqDQo+ID4gKyAqIDEuIFByZXZlbnQgdGhlIEdQRSBmbG9vZGlu Zw0KPiA+ICsgKiAgICBUaGVzZSBmbGFncyBjYW4gYmUgdXNlZCB0byBjb250cm9sIGhvdyB0aGUg R1BFIGlzIGRpc3BhdGNoZWQgYnkgdGhlDQo+ID4gKyAqICAgIGV2ZW50IGRpc3BhdGNoZXIuIE5v dGUgdGhhdCB0aGUgQUNQSV9HUEVfTUFOQUdFRF9ESVNBQkxFRA0KPiBjYW4gYWxzbyBiZQ0KPiA+ ICsgKiAgICB1c2VkIHRvIHByZXZlbnQgdGhlIEdQRSBmbG9vZGluZyB0aGF0IGNhbm5vdCBiZSBw cmV2ZW50ZWQgZHVlIHRvDQo+IHRoZQ0KPiA+ICsgKiAgICBBQ1BJX0dQRV9ESVNQQVRDSF9OT05F IHNhbml0eSBjaGVjay4gVGhpcyBraW5kIG9mIHRoZSBHUEUNCj4gZmxvb2RpbmcNCj4gPiArICog ICAgaGFwcGVucyBvbiB0aGUgR1BFIHdoZXJlIHRoZXJlIGlzIGEgX0x4eC9fRXh4IHByZXBhcmVk IGJ5IHRoZQ0KPiBCSU9TDQo+ID4gKyAqICAgIGJ1dCB0aGUgT1NQTSBzdGlsbCBjYW5ub3QgaGFu ZGxlIGl0IGNvcnJlY3RseSBieSBleGVjdXRpbmcgdGhlDQo+ID4gKyAqICAgIG1ldGhvZC4gU3Vj aCBraW5kIG9mIGluY2FwYWJpbGl0eSBpcyBtb3N0bHkgYmVjYXVzZSBvZiB0aGUgZmVhdHVyZQ0K PiA+ICsgKiAgICBnYXBzIGluIHRoZSBPU1BNOg0KPiA+ICsgKiAgICBBQ1BJX0dQRV9NQU5BR0VE X0VOQUJMRUQ6ICBmb3JjZSB0aGUgZXZlbnQgZGlzcGF0Y2hlciB0bw0KPiBhbHdheXMNCj4gPiAr ICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlIHRoZSBHUEUNCj4gPiArICog ICAgQUNQSV9HUEVfTUFOQUdFRF9ESVNBQkxFRDogZm9yY2UgdGhlIGV2ZW50IGRpc3BhdGNoZXIg dG8NCj4gYWx3YXlzDQo+ID4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2Fi bGUgdGhlIEdQRQ0KPiA+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ZW50 IHRoZSBHUEUgZnJvbSBmbG9vZGluZw0KPiA+ICsgKiAgICBhY3BpX2Jsb2NrX2dwZSgpL2FjcGlf dW5ibG9ja19ncGUoKSBhcmUgdGhlIEFQSXMgb2ZmZXJpbmcgdGhlIEdQRQ0KPiA+ICsgKiAgICBm bG9vZGluZyBwcmV2ZW50aW9uIGZlYXR1cmUuDQo+ID4gKyAqDQo+ID4gKyAqIDIuIENvbnRyb2wg dGhlIEdQRSBoYW5kbGluZyBtb2RlDQo+ID4gKyAqICAgIEEgR1BFIGRyaXZlciBtYXkgYmUgYWJs ZSB0byBoYW5kbGUgdGhlIEdQRSBib3RoIGluIHRoZSBpbnRlcnJ1cHQNCj4gbW9kZQ0KPiA+ICsg KiAgICBhbmQgaW4gdGhlIHBvbGxpbmcgbW9kZS4gU2luY2UgdGhlIHBvbGxpbmcgbW9kZSBpcyBh IG1lY2hhbmlzbQ0KPiA+ICsgKiAgICBpbXBsZW1lbnRlZCBieSB0aGUgZHJpdmVyIGl0c2VsZiBh bmQgaXMgbm90IGNvbnRyb2xsZWQgYnkgdGhlIGV2ZW50DQo+ID4gKyAqICAgIGRpc3BhdGNoZXIs IHRoaXMgbWVjaGFuaXNtIGNhbiBiZSB1c2VkIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZQ0KPiA+ICsg KiAgICBpbnRlcnJ1cHQgbW9kZSAoZGlzcGF0Y2hlZCB2aWEgdGhlIGV2ZW50IGRpc3BhdGNoZXIp IGFuZCB0aGUNCj4gcG9sbGluZw0KPiA+ICsgKiAgICBtb2RlIChpbXBsZW1lbnRlZCBieSB0aGUg R1BFIGRyaXZlcnMpOg0KPiA+ICsgKiAgICBBQ1BJX0dQRV9NQU5BR0VEX0VOQUJMRUQ6ICBmb3Jj ZSB0aGUgZHJpdmVyIHRvIHVzZSB0aGUNCj4gaW50ZXJydXB0IG1vZGUNCj4gPiArICogICAgQUNQ SV9HUEVfTUFOQUdFRF9ESVNBQkxFRDogZm9yY2UgdGhlIGRyaXZlciB0byB1c2UgdGhlIHBvbGxp bmcNCj4gbW9kZQ0KPiA+ICsgKiAgICBOb25lOiAgICAgICAgICAgICAgICAgICAgICBhbGxvdyB0 aGUgZHJpdmVyIHRvIHVzZSB0aGUNCj4gPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50ZXJydXB0L3BvbGxpbmcgYWRhcHRpdmUgbW9kZQ0KPiA+ICsgKiAgICBhY3BpX2NvbnRy b2xfZ3BlX2hhbmRsaW5nKCkgaXMgdGhlIEFQSSBvZmZlcmluZyB0aGUgR1BFIGhhbmRsaW5nDQo+ IG1vZGUNCj4gPiArICogICAgc3dpdGNoIGZlYXR1cmUuDQo+ID4gKyAqLw0KPiA+ICsjZGVmaW5l IEFDUElfR1BFX01BTkFHRURfRU5BQkxFRCAgICAgICAgKHU4KSAweDIwDQo+ID4gKyNkZWZpbmUg QUNQSV9HUEVfTUFOQUdFRF9ESVNBQkxFRCAgICAgICAodTgpIDB4NDANCj4gPiArI2RlZmluZSBB Q1BJX0dQRV9NQU5BR0VEX0ZMQUdfTUFTSyAgICAgICh1OCkgMHg2MA0KPiA+ICsNCj4gPiArLyoN Cj4gPiAgICogRmxhZ3MgZm9yIEdQRSBhbmQgTG9jayBpbnRlcmZhY2VzDQo+ID4gICAqLw0KPiA+ ICAjZGVmaW5lIEFDUElfTk9UX0lTUiAgICAgICAgICAgICAgICAgICAgMHgxDQo+IA0KPiBUaGFu a3MsDQo+IFJhZmFlbA0KW0x2IFpoZW5nXSANCg0KVGhhbmtzIGZvciB0aGUgcmV2aWV3Lg0KDQpC ZXN0IHJlZ2FyZHMNCi1Mdg0KDQo=