From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6FA84C433F5 for ; Fri, 6 May 2022 03:01:15 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1388400AbiEFDEx (ORCPT ); Thu, 5 May 2022 23:04:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234102AbiEFDEv (ORCPT ); Thu, 5 May 2022 23:04:51 -0400 Received: from mg.sunplus.com (mswedge2.sunplus.com [60.248.182.106]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 858C26338A; Thu, 5 May 2022 20:01:04 -0700 (PDT) X-MailGates: (flag:3,DYNAMIC,RELAY,NOHOST:PASS)(compute_score:DELIVER,40 ,3) Received: from 172.17.9.112 by mg02.sunplus.com with MailGates ESMTP Server V5.0(12358:0:AUTH_RELAY) (envelope-from ); Fri, 06 May 2022 11:00:23 +0800 (CST) Received: from sphcmbx02.sunplus.com.tw (172.17.9.112) by sphcmbx02.sunplus.com.tw (172.17.9.112) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Fri, 6 May 2022 11:00:12 +0800 Received: from sphcmbx02.sunplus.com.tw ([fe80::a93a:a45f:41e0:8f93]) by sphcmbx02.sunplus.com.tw ([fe80::a93a:a45f:41e0:8f93%14]) with mapi id 15.00.1497.033; Fri, 6 May 2022 11:00:12 +0800 From: =?utf-8?B?V2VsbHMgTHUg5ZGC6Iqz6aiw?= To: Paolo Abeni , Wells Lu , "davem@davemloft.net" , "kuba@kernel.org" , "robh+dt@kernel.org" , "netdev@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "p.zabel@pengutronix.de" , "krzk+dt@kernel.org" , "roopa@nvidia.com" , "andrew@lunn.ch" , "edumazet@google.com" Subject: RE: [PATCH net-next v10 2/2] net: ethernet: Add driver for Sunplus SP7021 Thread-Topic: [PATCH net-next v10 2/2] net: ethernet: Add driver for Sunplus SP7021 Thread-Index: AQHYXiflXs046G3QdUC/ozn8SXGb860PpkQAgAGGUaA= Date: Fri, 6 May 2022 03:00:12 +0000 Message-ID: <74b62e3850a542cdb7c6ab8782bb4af8@sphcmbx02.sunplus.com.tw> References: <1651497818-25352-1-git-send-email-wellslutw@gmail.com> <1651497818-25352-3-git-send-email-wellslutw@gmail.com> <03b67c37b68d80041ccadd8d010a48dbe3e7e96c.camel@redhat.com> In-Reply-To: <03b67c37b68d80041ccadd8d010a48dbe3e7e96c.camel@redhat.com> Accept-Language: zh-TW, en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [172.25.108.39] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org SGkgUGFvbG8sDQoNCg0KPiAgICAgICAgICAgT24gTW9uLCAyMDIyLTA1LTAyIGF0IDIxOjIzICsw ODAwLCBXZWxscyBMdSB3cm90ZToNCj4gPiBBZGQgZHJpdmVyIGZvciBTdW5wbHVzIFNQNzAyMSBT b0MuDQo+ID4NCj4gPiBSZXZpZXdlZC1ieTogQW5kcmV3IEx1bm4gPGFuZHJld0BsdW5uLmNoPg0K PiA+IFNpZ25lZC1vZmYtYnk6IFdlbGxzIEx1IDx3ZWxsc2x1dHdAZ21haWwuY29tPg0KPiA+IC0t LQ0KPiA+IENoYW5nZXMgaW4gdjEwDQo+ID4gICAtIEFkZHJlc3NlZCBjb21tZW50cyBvZiBNci4g U3RlcGhlbiBIZW1taW5nZXIuDQo+ID4gICAgIC0gVXNlIGRlZmluZSBOQVBJX1BPTExfV0VJR0hU Lg0KPiA+ICAgICAtIFJldHVybiBhbW91bnQgb2YgcHJvY2Vzc2VkIHBhY2tldHMgaW4gc3BsMnN3 X3R4X3BvbGwoKSBhbmQgc3BsMnN3X3J4X3BvbGwoKS4NCj4gPiAgIC0gQWRkcmVzc2VkIGNvbW1l bnRzIG9mIE1yLiBGcmFuY29pcyBSb21pZW4uDQo+ID4gICAgIC0gQWRkZWQgc3BpbiBsb2NrcyBm b3IgInJlYWQtbW9kaWZ5LXdyaXRlIG9mIGludC1tYXNrIHJlZ2lzdGVyIi4NCj4gPg0KPiA+ICBN QUlOVEFJTkVSUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiA+ ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9LY29uZmlnICAgICAgICAgICAgICAgICAgfCAgIDEgKw0K PiA+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEg Kw0KPiA+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL0tjb25maWcgICAgICAgICAgfCAg MzUgKysNCj4gPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9NYWtlZmlsZSAgICAgICAg IHwgICA2ICsNCj4gPiAgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfZGVmaW5l LmggIHwgMjcwICsrKysrKysrDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3Bs MnN3X2Rlc2MuYyAgICB8IDIyOCArKysrKysrDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1 bnBsdXMvc3BsMnN3X2Rlc2MuaCAgICB8ICAxOSArDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0 L3N1bnBsdXMvc3BsMnN3X2RyaXZlci5jICB8IDU3OCArKysrKysrKysrKysrKysrKysNCj4gPiAg ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfaW50LmMgICAgIHwgMjczICsrKysr KysrKw0KPiA+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19pbnQuaCAgICAg fCAgMTMgKw0KPiA+ICBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19tYWMuYyAg ICAgfCAyNzQgKysrKysrKysrDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3Bs MnN3X21hYy5oICAgICB8ICAxOCArDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMv c3BsMnN3X21kaW8uYyAgICB8IDEyNiArKysrDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1 bnBsdXMvc3BsMnN3X21kaW8uaCAgICB8ICAxMiArDQo+ID4gIGRyaXZlcnMvbmV0L2V0aGVybmV0 L3N1bnBsdXMvc3BsMnN3X3BoeS5jICAgICB8ICA5MiArKysNCj4gPiAgZHJpdmVycy9uZXQvZXRo ZXJuZXQvc3VucGx1cy9zcGwyc3dfcGh5LmggICAgIHwgIDEyICsNCj4gPiAgLi4uL25ldC9ldGhl cm5ldC9zdW5wbHVzL3NwbDJzd19yZWdpc3Rlci5oICAgIHwgIDg2ICsrKw0KPiA+ICAxOCBmaWxl cyBjaGFuZ2VkLCAyMDQ1IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvS2NvbmZpZw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9NYWtlZmlsZQ0KPiA+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfZGVmaW5lLmgNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3 X2Rlc2MuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3Vu cGx1cy9zcGwyc3dfZGVzYy5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9l dGhlcm5ldC9zdW5wbHVzL3NwbDJzd19kcml2ZXIuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfaW50LmMNCj4gPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X2ludC5oDQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19t YWMuYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1 cy9zcGwyc3dfbWFjLmgNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVy bmV0L3N1bnBsdXMvc3BsMnN3X21kaW8uYw0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfbWRpby5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19waHkuYw0KPiA+ICBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfcGh5LmgN Cj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3Bs MnN3X3JlZ2lzdGVyLmgNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9NQUlOVEFJTkVSUyBiL01BSU5U QUlORVJTIGluZGV4IDIyYTJmOTY5OS4uMTFhMDYyYzQyDQo+ID4gMTAwNjQ0DQo+ID4gLS0tIGEv TUFJTlRBSU5FUlMNCj4gPiArKysgYi9NQUlOVEFJTkVSUw0KPiA+IEBAIC0xODg5MCw2ICsxODg5 MCw3IEBAIEw6CW5ldGRldkB2Z2VyLmtlcm5lbC5vcmcNCj4gPiAgUzoJTWFpbnRhaW5lZA0KPiA+ ICBXOglodHRwczovL3N1bnBsdXMuYXRsYXNzaWFuLm5ldC93aWtpL3NwYWNlcy9kb2Mvb3ZlcnZp ZXcNCj4gPiAgRjoJRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9zdW5wbHVz LHNwNzAyMS1lbWFjLnlhbWwNCj4gPiArRjoJZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy8N Cj4gPg0KPiA+ICBTVU5QTFVTIE9DT1RQIERSSVZFUg0KPiA+ICBNOglWaW5jZW50IFNoaWggPHZp bmNlbnQuc3VucGx1c0BnbWFpbC5jb20+DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L0tjb25maWcNCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcgaW5kZXgg ODI3OTkzMDIyLi45NTVhYmJjNTQgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJu ZXQvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L0tjb25maWcNCj4gPiBA QCAtMTc5LDYgKzE3OSw3IEBAIHNvdXJjZSAiZHJpdmVycy9uZXQvZXRoZXJuZXQvc21zYy9LY29u ZmlnIg0KPiA+ICBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9LY29uZmln Ig0KPiA+ICBzb3VyY2UgImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vS2NvbmZpZyINCj4g PiAgc291cmNlICJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW4vS2NvbmZpZyINCj4gPiArc291cmNl ICJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL0tjb25maWciDQo+ID4gIHNvdXJjZSAiZHJp dmVycy9uZXQvZXRoZXJuZXQvc3lub3BzeXMvS2NvbmZpZyINCj4gPiAgc291cmNlICJkcml2ZXJz L25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZyINCj4gPiAgc291cmNlICJkcml2ZXJzL25ldC9l dGhlcm5ldC90aS9LY29uZmlnIg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5l dC9NYWtlZmlsZQ0KPiA+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvTWFrZWZpbGUgaW5kZXggOGVm NDNlMGMzLi45ZWIwMTE2OTkgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQv TWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9NYWtlZmlsZQ0KPiA+IEBA IC05MCw2ICs5MCw3IEBAIG9iai0kKENPTkZJR19ORVRfVkVORE9SX1NNU0MpICs9IHNtc2MvDQo+ ID4gIG9iai0kKENPTkZJR19ORVRfVkVORE9SX1NPQ0lPTkVYVCkgKz0gc29jaW9uZXh0Lw0KPiA+ ICBvYmotJChDT05GSUdfTkVUX1ZFTkRPUl9TVE1JQ1JPKSArPSBzdG1pY3JvLw0KPiA+ICBvYmot JChDT05GSUdfTkVUX1ZFTkRPUl9TVU4pICs9IHN1bi8NCj4gPiArb2JqLSQoQ09ORklHX05FVF9W RU5ET1JfU1VOUExVUykgKz0gc3VucGx1cy8NCj4gPiAgb2JqLSQoQ09ORklHX05FVF9WRU5ET1Jf VEVIVVRJKSArPSB0ZWh1dGkvDQo+ID4gIG9iai0kKENPTkZJR19ORVRfVkVORE9SX1RJKSArPSB0 aS8NCj4gPiAgb2JqLSQoQ09ORklHX05FVF9WRU5ET1JfVE9TSElCQSkgKz0gdG9zaGliYS8gZGlm ZiAtLWdpdA0KPiA+IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9LY29uZmlnDQo+ID4g Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL0tjb25maWcNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMC4uZDAxNDRhMmFiDQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvS2NvbmZpZw0KPiA+IEBA IC0wLDAgKzEsMzUgQEANCj4gPiArIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K PiA+ICsjDQo+ID4gKyMgU3VucGx1cyBuZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uICMNCj4g PiArDQo+ID4gK2NvbmZpZyBORVRfVkVORE9SX1NVTlBMVVMNCj4gPiArCWJvb2wgIlN1bnBsdXMg ZGV2aWNlcyINCj4gPiArCWRlZmF1bHQgeQ0KPiA+ICsJZGVwZW5kcyBvbiBBUkNIX1NVTlBMVVMg fHwgQ09NUElMRV9URVNUDQo+ID4gKwloZWxwDQo+ID4gKwkgIElmIHlvdSBoYXZlIGEgbmV0d29y ayAoRXRoZXJuZXQpIGNhcmQgYmVsb25naW5nIHRvIHRoaXMNCj4gPiArCSAgY2xhc3MsIHNheSBZ IGhlcmUuDQo+ID4gKw0KPiA+ICsJICBOb3RlIHRoYXQgdGhlIGFuc3dlciB0byB0aGlzIHF1ZXN0 aW9uIGRvZXNuJ3QgZGlyZWN0bHkNCj4gPiArCSAgYWZmZWN0IHRoZSBrZXJuZWw6IHNheWluZyBO IHdpbGwganVzdCBjYXVzZSB0aGUgY29uZmlndXJhdG9yDQo+ID4gKwkgIHRvIHNraXAgYWxsIHRo ZSBxdWVzdGlvbnMgYWJvdXQgU3VucGx1cyBjYXJkcy4gSWYgeW91IHNheSBZLA0KPiA+ICsJICB5 b3Ugd2lsbCBiZSBhc2tlZCBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcN Cj4gPiArCSAgcXVlc3Rpb25zLg0KPiA+ICsNCj4gPiAraWYgTkVUX1ZFTkRPUl9TVU5QTFVTDQo+ ID4gKw0KPiA+ICtjb25maWcgU1A3MDIxX0VNQUMNCj4gPiArCXRyaXN0YXRlICJTdW5wbHVzIER1 YWwgMTBNLzEwME0gRXRoZXJuZXQgZGV2aWNlcyINCj4gPiArCWRlcGVuZHMgb24gU09DX1NQNzAy MSB8fCBDT01QSUxFX1RFU1QNCj4gPiArCXNlbGVjdCBQSFlMSUINCj4gPiArCXNlbGVjdCBDT01N T05fQ0xLX1NQNzAyMQ0KPiA+ICsJc2VsZWN0IFJFU0VUX1NVTlBMVVMNCj4gPiArCXNlbGVjdCBO Vk1FTV9TVU5QTFVTX09DT1RQDQo+ID4gKwloZWxwDQo+ID4gKwkgIElmIHlvdSBoYXZlIFN1bnBs dXMgZHVhbCAxME0vMTAwTSBFdGhlcm5ldCBkZXZpY2VzLCBzYXkgWS4NCj4gPiArCSAgVGhlIG5l dHdvcmsgZGV2aWNlIGNyZWF0ZXMgdHdvIG5ldC1kZXZpY2UgaW50ZXJmYWNlcy4NCj4gPiArCSAg VG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gVGhlDQo+ ID4gKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBzcDcwMjFfZW1hYy4NCj4gPiArDQo+ID4gK2Vu ZGlmICMgTkVUX1ZFTkRPUl9TVU5QTFVTDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3N1bnBsdXMvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBs dXMvTWFrZWZpbGUNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAw MC4uZWY3ZDdkMGE3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3N1bnBsdXMvTWFrZWZpbGUNCj4gPiBAQCAtMCwwICsxLDYgQEANCj4gPiArIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiA+ICsjDQo+ID4gKyMgTWFrZWZpbGUgZm9y IHRoZSBTdW5wbHVzIG5ldHdvcmsgZGV2aWNlIGRyaXZlcnMuDQo+ID4gKyMNCj4gPiArb2JqLSQo Q09ORklHX1NQNzAyMV9FTUFDKSArPSBzcDcwMjFfZW1hYy5vIHNwNzAyMV9lbWFjLW9ianMgOj0N Cj4gPiArc3BsMnN3X2RyaXZlci5vIHNwbDJzd19pbnQubyBzcGwyc3dfZGVzYy5vIHNwbDJzd19t YWMubyBzcGwyc3dfbWRpby5vDQo+ID4gK3NwbDJzd19waHkubw0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19kZWZpbmUuaA0KPiA+IGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfZGVmaW5lLmgNCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMC4uYWNjNmMxMjI4DQo+ID4gLS0tIC9kZXYvbnVs bA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X2RlZmluZS5o DQo+ID4gQEAgLTAsMCArMSwyNzAgQEANCj4gPiArLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgKi8NCj4gPiArLyogQ29weXJpZ2h0IFN1bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0 ZC4NCj4gPiArICogICAgICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArICovDQo+ID4gKw0K PiA+ICsjaWZuZGVmIF9fU1BMMlNXX0RFRklORV9IX18NCj4gPiArI2RlZmluZSBfX1NQTDJTV19E RUZJTkVfSF9fDQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1BWF9ORVRERVZfTlVNCQkJMgkvKiBNYXhp bXVtICMgb2YgbmV0LWRldmljZSAqLw0KPiA+ICsNCj4gPiArLyogSW50ZXJydXB0IHN0YXR1cyAq Lw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfREFJU1lfTU9ERV9DSEcJCUJJVCgzMSkgLyogRGFpc3kg TW9kZSBDaGFuZ2UgICAgICAgICAgICAgKi8NCj4gPiArI2RlZmluZSBNQUNfSU5UX0lQX0NIS1NV TV9FUlIJCUJJVCgyMykgLyogSVAgQ2hlY2tzdW0gQXBwZW5kIEVycm9yICAgICAgKi8NCj4gPiAr I2RlZmluZSBNQUNfSU5UX1dET0dfVElNRVIxX0VYUAkJQklUKDIyKSAvKiBXYXRjaGRvZyBUaW1l cjEgRXhwaXJlZCAgICAgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfV0RPR19USU1FUjBfRVhQ CQlCSVQoMjEpIC8qIFdhdGNoZG9nIFRpbWVyMCBFeHBpcmVkICAgICAgICovDQo+ID4gKyNkZWZp bmUgTUFDX0lOVF9JTlRSVURFUl9BTEVSVAkJQklUKDIwKSAvKiBBdHJ1ZGVyIEFsZXJ0ICAgICAg ICAgICAgICAgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfUE9SVF9TVF9DSEcJCUJJVCgxOSkg LyogUG9ydCBTdGF0dXMgQ2hhbmdlICAgICAgICAgICAgKi8NCj4gPiArI2RlZmluZSBNQUNfSU5U X0JDX1NUT1JNCQlCSVQoMTgpIC8qIEJyb2FkIENhc3QgU3Rvcm0gICAgICAgICAgICAgICovDQo+ ID4gKyNkZWZpbmUgTUFDX0lOVF9NVVNUX0RST1BfTEFOCQlCSVQoMTcpIC8qIEdsb2JhbCBRdWV1 ZSBFeGhhdXN0ZWQgICAgICAgICovDQo+ID4gKyNkZWZpbmUgTUFDX0lOVF9HTE9CQUxfUVVFX0ZV TEwJCUJJVCgxNikgLyogR2xvYmFsIFF1ZXVlIEZ1bGwgICAgICAgICAgICAgKi8NCj4gPiArI2Rl ZmluZSBNQUNfSU5UX1RYX1NPQ19QQVVTRV9PTgkJQklUKDE1KSAvKiBTb2MgUG9ydCBUWCBQYXVz ZSBPbiAgICAgICAgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfUlhfU09DX1FVRV9GVUxMCQlC SVQoMTQpIC8qIFNvYyBQb3J0IE91dCBRdWV1ZSBGdWxsICAgICAgICovDQo+ID4gKyNkZWZpbmUg TUFDX0lOVF9UWF9MQU4xX1FVRV9GVUxMCUJJVCg5KSAgLyogUG9ydCAxIE91dCBRdWV1ZSBGdWxs ICAgICAgICAgKi8NCj4gPiArI2RlZmluZSBNQUNfSU5UX1RYX0xBTjBfUVVFX0ZVTEwJQklUKDgp ICAvKiBQb3J0IDAgT3V0IFF1ZXVlIEZ1bGwgICAgICAgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19J TlRfUlhfTF9ERVNDRgkJQklUKDcpICAvKiBMb3cgUHJpb3JpdHkgRGVzY3JpcHRvciBGdWxsICAq Lw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfUlhfSF9ERVNDRgkJQklUKDYpICAvKiBIaWdoIFByaW9y aXR5IERlc2NyaXB0b3IgRnVsbCAqLw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfUlhfRE9ORV9MCQlC SVQoNSkgIC8qIFJYIExvdyBQcmlvcml0eSBEb25lICAgICAgICAgICovDQo+ID4gKyNkZWZpbmUg TUFDX0lOVF9SWF9ET05FX0gJCUJJVCg0KSAgLyogUlggSGlnaCBQcmlvcml0eSBEb25lICAgICAg ICAgKi8NCj4gPiArI2RlZmluZSBNQUNfSU5UX1RYX0RPTkVfTAkJQklUKDMpICAvKiBUWCBMb3cg UHJpb3JpdHkgRG9uZSAgICAgICAgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19JTlRfVFhfRE9ORV9I CQlCSVQoMikgIC8qIFRYIEhpZ2ggUHJpb3JpdHkgRG9uZSAgICAgICAgICovDQo+ID4gKyNkZWZp bmUgTUFDX0lOVF9UWF9ERVNfRVJSCQlCSVQoMSkgIC8qIFRYIERlc2NyaXB0b3IgRXJyb3IgICAg ICAgICAgICovDQo+ID4gKyNkZWZpbmUgTUFDX0lOVF9SWF9ERVNfRVJSCQlCSVQoMCkgIC8qIFJ4 IERlc2NyaXB0b3IgRXJyb3IgICAgICAgICAgICovDQo+ID4gKw0KPiA+ICsjZGVmaW5lIE1BQ19J TlRfUlgJCQkoTUFDX0lOVF9SWF9ET05FX0ggfCBNQUNfSU5UX1JYX0RPTkVfTCB8IFwNCj4gPiAr CQkJCQlNQUNfSU5UX1JYX0RFU19FUlIpDQo+ID4gKyNkZWZpbmUgTUFDX0lOVF9UWAkJCShNQUNf SU5UX1RYX0RPTkVfTCB8IE1BQ19JTlRfVFhfRE9ORV9IIHwgXA0KPiA+ICsJCQkJCU1BQ19JTlRf VFhfREVTX0VSUikNCj4gPiArI2RlZmluZSBNQUNfSU5UX01BU0tfREVGCQkoTUFDX0lOVF9EQUlT WV9NT0RFX0NIRyB8IE1BQ19JTlRfSVBfQ0hLU1VNX0VSUiB8IFwNCj4gPiArCQkJCQlNQUNfSU5U X1dET0dfVElNRVIxX0VYUCB8IE1BQ19JTlRfV0RPR19USU1FUjBfRVhQIHwgXA0KPiA+ICsJCQkJ CU1BQ19JTlRfSU5UUlVERVJfQUxFUlQgfCBNQUNfSU5UX1BPUlRfU1RfQ0hHIHwgXA0KPiA+ICsJ CQkJCU1BQ19JTlRfQkNfU1RPUk0gfCBNQUNfSU5UX01VU1RfRFJPUF9MQU4gfCBcDQo+ID4gKwkJ CQkJTUFDX0lOVF9HTE9CQUxfUVVFX0ZVTEwgfCBNQUNfSU5UX1RYX1NPQ19QQVVTRV9PTiB8IFwN Cj4gPiArCQkJCQlNQUNfSU5UX1JYX1NPQ19RVUVfRlVMTCB8IE1BQ19JTlRfVFhfTEFOMV9RVUVf RlVMTCB8IFwNCj4gPiArCQkJCQlNQUNfSU5UX1RYX0xBTjBfUVVFX0ZVTEwgfCBNQUNfSU5UX1JY X0xfREVTQ0YgfCBcDQo+ID4gKwkJCQkJTUFDX0lOVF9SWF9IX0RFU0NGKQ0KPiA+ICsNCj4gPiAr LyogQWRkcmVzcyB0YWJsZSBzZWFyY2ggKi8NCj4gPiArI2RlZmluZSBNQUNfQUREUl9MT09LVVBf SURMRQkJQklUKDIpDQo+ID4gKyNkZWZpbmUgTUFDX1NFQVJDSF9ORVhUX0FERFIJCUJJVCgxKQ0K PiA+ICsjZGVmaW5lIE1BQ19CRUdJTl9TRUFSQ0hfQUREUgkJQklUKDApDQo+ID4gKw0KPiA+ICsv KiBBZGRyZXNzIHRhYmxlIHN0YXR1cyAqLw0KPiA+ICsjZGVmaW5lIE1BQ19IQVNIX0xPT0tVUF9B RERSCQlHRU5NQVNLKDMxLCAyMikNCj4gPiArI2RlZmluZSBNQUNfUl9QT1JUX01BUAkJCUdFTk1B U0soMTMsIDEyKQ0KPiA+ICsjZGVmaW5lIE1BQ19SX0NQVV9QT1JUCQkJR0VOTUFTSygxMSwgMTAp DQo+ID4gKyNkZWZpbmUgTUFDX1JfVklECQkJR0VOTUFTSyg5LCA3KQ0KPiA+ICsjZGVmaW5lIE1B Q19SX0FHRQkJCUdFTk1BU0soNiwgNCkNCj4gPiArI2RlZmluZSBNQUNfUl9QUk9YWQkJCUJJVCgz KQ0KPiA+ICsjZGVmaW5lIE1BQ19SX01DX0lOR1JFU1MJCUJJVCgyKQ0KPiA+ICsjZGVmaW5lIE1B Q19BVF9UQUJMRV9FTkQJCUJJVCgxKQ0KPiA+ICsjZGVmaW5lIE1BQ19BVF9EQVRBX1JFQURZCQlC SVQoMCkNCj4gPiArDQo+ID4gKy8qIFd0IG1hYyBhZDAgKi8NCj4gPiArI2RlZmluZSBNQUNfV19Q T1JUX01BUAkJCUdFTk1BU0soMTMsIDEyKQ0KPiA+ICsjZGVmaW5lIE1BQ19XX0xBTl9QT1JUXzEJ CUJJVCgxMykNCj4gPiArI2RlZmluZSBNQUNfV19MQU5fUE9SVF8wCQlCSVQoMTIpDQo+ID4gKyNk ZWZpbmUgTUFDX1dfQ1BVX1BPUlQJCQlHRU5NQVNLKDExLCAxMCkNCj4gPiArI2RlZmluZSBNQUNf V19DUFVfUE9SVF8xCQlCSVQoMTEpDQo+ID4gKyNkZWZpbmUgTUFDX1dfQ1BVX1BPUlRfMAkJQklU KDEwKQ0KPiA+ICsjZGVmaW5lIE1BQ19XX1ZJRAkJCUdFTk1BU0soOSwgNykNCj4gPiArI2RlZmlu ZSBNQUNfV19BR0UJCQlHRU5NQVNLKDYsIDQpDQo+ID4gKyNkZWZpbmUgTUFDX1dfUFJPWFkJCQlC SVQoMykNCj4gPiArI2RlZmluZSBNQUNfV19NQ19JTkdSRVNTCQlCSVQoMikNCj4gPiArI2RlZmlu ZSBNQUNfV19NQUNfRE9ORQkJCUJJVCgxKQ0KPiA+ICsjZGVmaW5lIE1BQ19XX01BQ19DTUQJCQlC SVQoMCkNCj4gPiArDQo+ID4gKy8qIFcgbWFjIDE1XzAgYnVzICovDQo+ID4gKyNkZWZpbmUgTUFD X1dfTUFDXzE1XzAJCQlHRU5NQVNLKDE1LCAwKQ0KPiA+ICsNCj4gPiArLyogVyBtYWMgNDdfMTYg YnVzICovDQo+ID4gKyNkZWZpbmUgTUFDX1dfTUFDXzQ3XzE2CQkJR0VOTUFTSygzMSwgMCkNCj4g PiArDQo+ID4gKy8qIFBWSUQgY29uZmlnIDAgKi8NCj4gPiArI2RlZmluZSBNQUNfUDFfUFZJRAkJ CUdFTk1BU0soNiwgNCkNCj4gPiArI2RlZmluZSBNQUNfUDBfUFZJRAkJCUdFTk1BU0soMiwgMCkN Cj4gPiArDQo+ID4gKy8qIFZMQU4gbWVtYmVyIGNvbmZpZyAwICovDQo+ID4gKyNkZWZpbmUgTUFD X1ZMQU5fTUVNU0VUXzMJCUdFTk1BU0soMjcsIDI0KQ0KPiA+ICsjZGVmaW5lIE1BQ19WTEFOX01F TVNFVF8yCQlHRU5NQVNLKDE5LCAxNikNCj4gPiArI2RlZmluZSBNQUNfVkxBTl9NRU1TRVRfMQkJ R0VOTUFTSygxMSwgOCkNCj4gPiArI2RlZmluZSBNQUNfVkxBTl9NRU1TRVRfMAkJR0VOTUFTSygz LCAwKQ0KPiA+ICsNCj4gPiArLyogVkxBTiBtZW1iZXIgY29uZmlnIDEgKi8NCj4gPiArI2RlZmlu ZSBNQUNfVkxBTl9NRU1TRVRfNQkJR0VOTUFTSygxMSwgOCkNCj4gPiArI2RlZmluZSBNQUNfVkxB Tl9NRU1TRVRfNAkJR0VOTUFTSygzLCAwKQ0KPiA+ICsNCj4gPiArLyogUG9ydCBhYmlsaXR5ICov DQo+ID4gKyNkZWZpbmUgTUFDX1BPUlRfQUJJTElUWV9MSU5LX1NUCUdFTk1BU0soMjUsIDI0KQ0K PiA+ICsNCj4gPiArLyogQ1BVIGNvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBNQUNfRU5fU09DMV9B R0lORwkJQklUKDE1KQ0KPiA+ICsjZGVmaW5lIE1BQ19FTl9TT0MwX0FHSU5HCQlCSVQoMTQpDQo+ ID4gKyNkZWZpbmUgTUFDX0RJU19MUk5fU09DMQkJQklUKDEzKQ0KPiA+ICsjZGVmaW5lIE1BQ19E SVNfTFJOX1NPQzAJCUJJVCgxMikNCj4gPiArI2RlZmluZSBNQUNfRU5fQ1JDX1NPQzEJCQlCSVQo OSkNCj4gPiArI2RlZmluZSBNQUNfRU5fQ1JDX1NPQzAJCQlCSVQoOCkNCj4gPiArI2RlZmluZSBN QUNfRElTX1NPQzFfQ1BVCQlCSVQoNykNCj4gPiArI2RlZmluZSBNQUNfRElTX1NPQzBfQ1BVCQlC SVQoNikNCj4gPiArI2RlZmluZSBNQUNfRElTX0JDMkNQVV9QMQkJQklUKDUpDQo+ID4gKyNkZWZp bmUgTUFDX0RJU19CQzJDUFVfUDAJCUJJVCg0KQ0KPiA+ICsjZGVmaW5lIE1BQ19ESVNfTUMyQ1BV CQkJR0VOTUFTSygzLCAyKQ0KPiA+ICsjZGVmaW5lIE1BQ19ESVNfTUMyQ1BVX1AxCQlCSVQoMykN Cj4gPiArI2RlZmluZSBNQUNfRElTX01DMkNQVV9QMAkJQklUKDIpDQo+ID4gKyNkZWZpbmUgTUFD X0RJU19VTjJDUFUJCQlHRU5NQVNLKDEsIDApDQo+ID4gKw0KPiA+ICsvKiBQb3J0IGNvbnRyb2wg MCAqLw0KPiA+ICsjZGVmaW5lIE1BQ19ESVNfUE9SVAkJCUdFTk1BU0soMjUsIDI0KQ0KPiA+ICsj ZGVmaW5lIE1BQ19ESVNfUE9SVDEJCQlCSVQoMjUpDQo+ID4gKyNkZWZpbmUgTUFDX0RJU19QT1JU MAkJCUJJVCgyNCkNCj4gPiArI2RlZmluZSBNQUNfRElTX1JNQzJDUFVfUDEJCUJJVCgxNykNCj4g PiArI2RlZmluZSBNQUNfRElTX1JNQzJDUFVfUDAJCUJJVCgxNikNCj4gPiArI2RlZmluZSBNQUNf RU5fRkxPV19DVExfUDEJCUJJVCg5KQ0KPiA+ICsjZGVmaW5lIE1BQ19FTl9GTE9XX0NUTF9QMAkJ QklUKDgpDQo+ID4gKyNkZWZpbmUgTUFDX0VOX0JBQ0tfUFJFU1NfUDEJCUJJVCgxKQ0KPiA+ICsj ZGVmaW5lIE1BQ19FTl9CQUNLX1BSRVNTX1AwCQlCSVQoMCkNCj4gPiArDQo+ID4gKy8qIFBvcnQg Y29udHJvbCAxICovDQo+ID4gKyNkZWZpbmUgTUFDX0RJU19TQV9MUk5fUDEJCUJJVCg5KQ0KPiA+ ICsjZGVmaW5lIE1BQ19ESVNfU0FfTFJOX1AwCQlCSVQoOCkNCj4gPiArDQo+ID4gKy8qIFBvcnQg Y29udHJvbCAyICovDQo+ID4gKyNkZWZpbmUgTUFDX0VOX0FHSU5HX1AxCQkJQklUKDkpDQo+ID4g KyNkZWZpbmUgTUFDX0VOX0FHSU5HX1AwCQkJQklUKDgpDQo+ID4gKw0KPiA+ICsvKiBTd2l0Y2gg R2xvYmFsIGNvbnRyb2wgKi8NCj4gPiArI2RlZmluZSBNQUNfUk1DX1RCX0ZBVUxUX1JVTEUJCUdF Tk1BU0soMjYsIDI1KQ0KPiA+ICsjZGVmaW5lIE1BQ19MRURfRkxBU0hfVElNRQkJR0VOTUFTSygy NCwgMjMpDQo+ID4gKyNkZWZpbmUgTUFDX0JDX1NUT1JNX1BSRVYJCUdFTk1BU0soNSwgNCkNCj4g PiArDQo+ID4gKy8qIExFRCBwb3J0IDAgKi8NCj4gPiArI2RlZmluZSBNQUNfTEVEX0FDVF9ISQkJ CUJJVCgyOCkNCj4gPiArDQo+ID4gKy8qIFBIWSBjb250cm9sIHJlZ2lzdGVyIDAgICovDQo+ID4g KyNkZWZpbmUgTUFDX0NQVV9QSFlfV1RfREFUQQkJR0VOTUFTSygzMSwgMTYpDQo+ID4gKyNkZWZp bmUgTUFDX0NQVV9QSFlfQ01ECQkJR0VOTUFTSygxNCwgMTMpDQo+ID4gKyNkZWZpbmUgTUFDX0NQ VV9QSFlfUkVHX0FERFIJCUdFTk1BU0soMTIsIDgpDQo+ID4gKyNkZWZpbmUgTUFDX0NQVV9QSFlf QUREUgkJR0VOTUFTSyg0LCAwKQ0KPiA+ICsNCj4gPiArLyogUEhZIGNvbnRyb2wgcmVnaXN0ZXIg MSAqLw0KPiA+ICsjZGVmaW5lIE1BQ19DUFVfUEhZX1JEX0RBVEEJCUdFTk1BU0soMzEsIDE2KQ0K PiA+ICsjZGVmaW5lIE1BQ19QSFlfUkRfUkRZCQkJQklUKDEpDQo+ID4gKyNkZWZpbmUgTUFDX1BI WV9XVF9ET05FCQkJQklUKDApDQo+ID4gKw0KPiA+ICsvKiBNQUMgZm9yY2UgbW9kZSAqLw0KPiA+ ICsjZGVmaW5lIE1BQ19FWFRfUEhZMV9BRERSCQlHRU5NQVNLKDI4LCAyNCkNCj4gPiArI2RlZmlu ZSBNQUNfRVhUX1BIWTBfQUREUgkJR0VOTUFTSygyMCwgMTYpDQo+ID4gKyNkZWZpbmUgTUFDX0ZP UkNFX1JNSUlfTElOSwkJR0VOTUFTSyg5LCA4KQ0KPiA+ICsjZGVmaW5lIE1BQ19GT1JDRV9STUlJ X0VOXzEJCUJJVCg3KQ0KPiA+ICsjZGVmaW5lIE1BQ19GT1JDRV9STUlJX0VOXzAJCUJJVCg2KQ0K PiA+ICsjZGVmaW5lIE1BQ19GT1JDRV9STUlJX0ZDCQlHRU5NQVNLKDUsIDQpDQo+ID4gKyNkZWZp bmUgTUFDX0ZPUkNFX1JNSUlfRFBYCQlHRU5NQVNLKDMsIDIpDQo+ID4gKyNkZWZpbmUgTUFDX0ZP UkNFX1JNSUlfU1BECQlHRU5NQVNLKDEsIDApDQo+ID4gKw0KPiA+ICsvKiBDUFUgdHJhbnNtaXQg dHJpZ2dlciAqLw0KPiA+ICsjZGVmaW5lIE1BQ19UUklHX0xfU09DMAkJCUJJVCgxKQ0KPiA+ICsj ZGVmaW5lIE1BQ19UUklHX0hfU09DMAkJCUJJVCgwKQ0KPiA+ICsNCj4gPiArLyogQ29uZmlnIGRl c2NyaXB0b3IgcXVldWUgKi8NCj4gPiArI2RlZmluZSBUWF9ERVNDX05VTQkJCTE2CS8qICMgb2Yg ZGVzY3JpcHRvcnMgaW4gVFggcXVldWUgICAqLw0KPiA+ICsjZGVmaW5lIE1BQ19HVUFSRF9ERVND X05VTQkJMgkvKiAjIG9mIGRlc2NyaXB0b3JzIG9mIGdhcCAgICAgIDAgKi8NCj4gPiArI2RlZmlu ZSBSWF9RVUVVRTBfREVTQ19OVU0JCTE2CS8qICMgb2YgZGVzY3JpcHRvcnMgaW4gUlggcXVldWUg MCAqLw0KPiA+ICsjZGVmaW5lIFJYX1FVRVVFMV9ERVNDX05VTQkJMTYJLyogIyBvZiBkZXNjcmlw dG9ycyBpbiBSWCBxdWV1ZSAxICovDQo+ID4gKyNkZWZpbmUgVFhfREVTQ19RVUVVRV9OVU0JCTEJ LyogIyBvZiBUWCBxdWV1ZSAgICAgICAgICAgICAgICAgICovDQo+ID4gKyNkZWZpbmUgUlhfREVT Q19RVUVVRV9OVU0JCTIJLyogIyBvZiBSWCBxdWV1ZSAgICAgICAgICAgICAgICAgICovDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIE1BQ19SWF9MRU5fTUFYCQkJMjA0NwkvKiBTaXplIG9mIFJYIGJ1ZmZl ciAgICAgICAqLw0KPiA+ICsNCj4gPiArLyogVHggZGVzY3JpcHRvciAqLw0KPiA+ICsvKiBjbWQx ICovDQo+ID4gKyNkZWZpbmUgVFhEX09XTgkJCQlCSVQoMzEpDQo+ID4gKyNkZWZpbmUgVFhEX0VS Ul9DT0RFCQkJR0VOTUFTSygyOSwgMjYpDQo+ID4gKyNkZWZpbmUgVFhEX1NPUAkJCQlCSVQoMjUp CQkvKiBzdGFydCBvZiBhIHBhY2tldCAqLw0KPiA+ICsjZGVmaW5lIFRYRF9FT1AJCQkJQklUKDI0 KQkJLyogZW5kIG9mIGEgcGFja2V0ICovDQo+ID4gKyNkZWZpbmUgVFhEX1ZMQU4JCQlHRU5NQVNL KDE3LCAxMikNCj4gPiArI2RlZmluZSBUWERfUEtUX0xFTgkJCUdFTk1BU0soMTAsIDApCS8qIHBh Y2tldCBsZW5ndGggKi8NCj4gPiArLyogY21kMiAqLw0KPiA+ICsjZGVmaW5lIFRYRF9FT1IJCQkJ QklUKDMxKQkJLyogZW5kIG9mIHJpbmcgKi8NCj4gPiArI2RlZmluZSBUWERfQlVGX0xFTjIJCQlH RU5NQVNLKDIyLCAxMikNCj4gPiArI2RlZmluZSBUWERfQlVGX0xFTjEJCQlHRU5NQVNLKDEwLCAw KQ0KPiA+ICsNCj4gPiArLyogUnggZGVzY3JpcHRvciAqLw0KPiA+ICsvKiBjbWQxICovDQo+ID4g KyNkZWZpbmUgUlhEX09XTgkJCQlCSVQoMzEpDQo+ID4gKyNkZWZpbmUgUlhEX0VSUl9DT0RFCQkJ R0VOTUFTSygyOSwgMjYpDQo+ID4gKyNkZWZpbmUgUlhEX1RDUF9VRFBfQ0hLU1VNCQlCSVQoMjMp DQo+ID4gKyNkZWZpbmUgUlhEX1BST1hZCQkJQklUKDIyKQ0KPiA+ICsjZGVmaW5lIFJYRF9QUk9U T0NPTAkJCUdFTk1BU0soMjEsIDIwKQ0KPiA+ICsjZGVmaW5lIFJYRF9WTEFOX1RBRwkJCUJJVCgx OSkNCj4gPiArI2RlZmluZSBSWERfSVBfQ0hLU1VNCQkJQklUKDE4KQ0KPiA+ICsjZGVmaW5lIFJY RF9ST1VURV9UWVBFCQkJR0VOTUFTSygxNywgMTYpDQo+ID4gKyNkZWZpbmUgUlhEX1BLVF9TUAkJ CUdFTk1BU0soMTQsIDEyKQkvKiBwYWNrZXQgc291cmNlIHBvcnQgKi8NCj4gPiArI2RlZmluZSBS WERfUEtUX0xFTgkJCUdFTk1BU0soMTAsIDApCS8qIHBhY2tldCBsZW5ndGggKi8NCj4gPiArLyog Y21kMiAqLw0KPiA+ICsjZGVmaW5lIFJYRF9FT1IJCQkJQklUKDMxKQkJLyogZW5kIG9mIHJpbmcg Ki8NCj4gPiArI2RlZmluZSBSWERfQlVGX0xFTjIJCQlHRU5NQVNLKDIyLCAxMikNCj4gPiArI2Rl ZmluZSBSWERfQlVGX0xFTjEJCQlHRU5NQVNLKDEwLCAwKQ0KPiA+ICsNCj4gPiArLyogc3RydWN0 dXJlIG9mIGRlc2NyaXB0b3IgKi8NCj4gPiArc3RydWN0IHNwbDJzd19tYWNfZGVzYyB7DQo+ID4g Kwl1MzIgY21kMTsNCj4gPiArCXUzMiBjbWQyOw0KPiA+ICsJdTMyIGFkZHIxOw0KPiA+ICsJdTMy IGFkZHIyOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHNwbDJzd19za2JfaW5mbyB7DQo+ ID4gKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiA+ICsJdTMyIG1hcHBpbmc7DQo+ID4gKwl1MzIg bGVuOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IHNwbDJzd19jb21tb24gew0KPiA+ICsJ dm9pZCBfX2lvbWVtICpsMnN3X3JlZ19iYXNlOw0KPiA+ICsNCj4gPiArCXN0cnVjdCBwbGF0Zm9y bV9kZXZpY2UgKnBkZXY7DQo+ID4gKwlzdHJ1Y3QgcmVzZXRfY29udHJvbCAqcnN0YzsNCj4gPiAr CXN0cnVjdCBjbGsgKmNsazsNCj4gPiArDQo+ID4gKwl2b2lkICpkZXNjX2Jhc2U7DQo+ID4gKwlk bWFfYWRkcl90IGRlc2NfZG1hOw0KPiA+ICsJczMyIGRlc2Nfc2l6ZTsNCj4gPiArCXN0cnVjdCBz cGwyc3dfbWFjX2Rlc2MgKnJ4X2Rlc2NbUlhfREVTQ19RVUVVRV9OVU1dOw0KPiA+ICsJc3RydWN0 IHNwbDJzd19za2JfaW5mbyAqcnhfc2tiX2luZm9bUlhfREVTQ19RVUVVRV9OVU1dOw0KPiA+ICsJ dTMyIHJ4X3Bvc1tSWF9ERVNDX1FVRVVFX05VTV07DQo+ID4gKwl1MzIgcnhfZGVzY19udW1bUlhf REVTQ19RVUVVRV9OVU1dOw0KPiA+ICsJdTMyIHJ4X2Rlc2NfYnVmZl9zaXplOw0KPiA+ICsNCj4g PiArCXN0cnVjdCBzcGwyc3dfbWFjX2Rlc2MgKnR4X2Rlc2M7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3 X3NrYl9pbmZvIHR4X3RlbXBfc2tiX2luZm9bVFhfREVTQ19OVU1dOw0KPiA+ICsJdTMyIHR4X2Rv bmVfcG9zOw0KPiA+ICsJdTMyIHR4X3BvczsNCj4gPiArCXUzMiB0eF9kZXNjX2Z1bGw7DQo+ID4g Kw0KPiA+ICsJc3RydWN0IG5ldF9kZXZpY2UgKm5kZXZbTUFYX05FVERFVl9OVU1dOw0KPiA+ICsJ c3RydWN0IG1paV9idXMgKm1paV9idXM7DQo+ID4gKw0KPiA+ICsJc3RydWN0IG5hcGlfc3RydWN0 IHJ4X25hcGk7DQo+ID4gKwlzdHJ1Y3QgbmFwaV9zdHJ1Y3QgdHhfbmFwaTsNCj4gPiArDQo+ID4g KwlzcGlubG9ja190IHR4X2xvY2s7CQkvKiBzcGlubG9jayBmb3IgYWNjZXNzaW5nIHR4IGJ1ZmZl ciAqLw0KPiA+ICsJc3BpbmxvY2tfdCBtZGlvX2xvY2s7CQkvKiBzcGlubG9jayBmb3IgbWRpbyBj b21tYW5kcyAqLw0KPiA+ICsJc3BpbmxvY2tfdCBpbnRfbWFza19sb2NrOwkvKiBzcGlubG9jayBm b3IgYWNjZXNzaW5nIGludCBtYXNrIHJlZy4gKi8NCj4gPiArDQo+ID4gKwl1OCBlbmFibGU7DQo+ ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qgc3BsMnN3X21hYyB7DQo+ID4gKwlzdHJ1Y3QgbmV0 X2RldmljZSAqbmRldjsNCj4gPiArCXN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21tOw0KPiA+ICsN Cj4gPiArCXU4IG1hY19hZGRyW0VUSF9BTEVOXTsNCj4gPiArCXBoeV9pbnRlcmZhY2VfdCBwaHlf bW9kZTsNCj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqcGh5X25vZGU7DQo+ID4gKw0KPiA+ICsJ dTggbGFuX3BvcnQ7DQo+ID4gKwl1OCB0b192bGFuOw0KPiA+ICsJdTggdmxhbl9pZDsNCj4gPiAr fTsNCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhl cm5ldC9zdW5wbHVzL3NwbDJzd19kZXNjLmMNCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1 bnBsdXMvc3BsMnN3X2Rlc2MuYw0KPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gaW5kZXgg MDAwMDAwMDAwLi4zZjBkOWY3OGINCj4gPiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVy cy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfZGVzYy5jDQo+ID4gQEAgLTAsMCArMSwyMjgg QEANCj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyogQ29w eXJpZ2h0IFN1bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4NCj4gPiArICogICAgICAgQWxsIHJp Z2h0cyByZXNlcnZlZC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxh dGZvcm1fZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2UuaD4NCj4gPiAr I2luY2x1ZGUgPGxpbnV4L29mX21kaW8uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJzcGwyc3df ZGVmaW5lLmgiDQo+ID4gKyNpbmNsdWRlICJzcGwyc3dfZGVzYy5oIg0KPiA+ICsNCj4gPiArdm9p ZCBzcGwyc3dfcnhfZGVzY3NfZmx1c2goc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pIHsNCj4g PiArCXN0cnVjdCBzcGwyc3dfc2tiX2luZm8gKnJ4X3NrYmluZm87DQo+ID4gKwlzdHJ1Y3Qgc3Bs MnN3X21hY19kZXNjICpyeF9kZXNjOw0KPiA+ICsJdTMyIGksIGo7DQo+ID4gKw0KPiA+ICsJZm9y IChpID0gMDsgaSA8IFJYX0RFU0NfUVVFVUVfTlVNOyBpKyspIHsNCj4gPiArCQlyeF9kZXNjID0g Y29tbS0+cnhfZGVzY1tpXTsNCj4gPiArCQlyeF9za2JpbmZvID0gY29tbS0+cnhfc2tiX2luZm9b aV07DQo+ID4gKwkJZm9yIChqID0gMDsgaiA8IGNvbW0tPnJ4X2Rlc2NfbnVtW2ldOyBqKyspIHsN Cj4gPiArCQkJcnhfZGVzY1tqXS5hZGRyMSA9IHJ4X3NrYmluZm9bal0ubWFwcGluZzsNCj4gPiAr CQkJcnhfZGVzY1tqXS5jbWQyID0gKGogPT0gY29tbS0+cnhfZGVzY19udW1baV0gLSAxKSA/DQo+ ID4gKwkJCQkJICBSWERfRU9SIHwgY29tbS0+cnhfZGVzY19idWZmX3NpemUgOg0KPiA+ICsJCQkJ CSAgY29tbS0+cnhfZGVzY19idWZmX3NpemU7DQo+ID4gKwkJCXdtYigpOwkvKiBTZXQgUlhEX09X TiBhZnRlciBvdGhlciBmaWVsZHMgYXJlIHJlYWR5LiAqLw0KPiA+ICsJCQlyeF9kZXNjW2pdLmNt ZDEgPSBSWERfT1dOOw0KPiA+ICsJCX0NCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9p ZCBzcGwyc3dfdHhfZGVzY3NfY2xlYW4oc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pIHsNCj4g PiArCXUzMiBpOw0KPiA+ICsNCj4gPiArCWlmICghY29tbS0+dHhfZGVzYykNCj4gPiArCQlyZXR1 cm47DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IFRYX0RFU0NfTlVNOyBpKyspIHsNCj4g PiArCQljb21tLT50eF9kZXNjW2ldLmNtZDEgPSAwOw0KPiA+ICsJCXdtYigpOwkvKiBDbGVhciBU WERfT1dOIGFuZCB0aGVuIHNldCBvdGhlciBmaWVsZHMuICovDQo+ID4gKwkJY29tbS0+dHhfZGVz Y1tpXS5jbWQyID0gMDsNCj4gPiArCQljb21tLT50eF9kZXNjW2ldLmFkZHIxID0gMDsNCj4gPiAr CQljb21tLT50eF9kZXNjW2ldLmFkZHIyID0gMDsNCj4gPiArDQo+ID4gKwkJaWYgKGNvbW0tPnR4 X3RlbXBfc2tiX2luZm9baV0ubWFwcGluZykgew0KPiA+ICsJCQlkbWFfdW5tYXBfc2luZ2xlKCZj b21tLT5wZGV2LT5kZXYsIGNvbW0tPnR4X3RlbXBfc2tiX2luZm9baV0ubWFwcGluZywNCj4gPiAr CQkJCQkgY29tbS0+dHhfdGVtcF9za2JfaW5mb1tpXS5za2ItPmxlbiwgRE1BX1RPX0RFVklDRSk7 DQo+ID4gKwkJCWNvbW0tPnR4X3RlbXBfc2tiX2luZm9baV0ubWFwcGluZyA9IDA7DQo+ID4gKwkJ fQ0KPiA+ICsNCj4gPiArCQlpZiAoY29tbS0+dHhfdGVtcF9za2JfaW5mb1tpXS5za2IpIHsNCj4g PiArCQkJZGV2X2tmcmVlX3NrYl9hbnkoY29tbS0+dHhfdGVtcF9za2JfaW5mb1tpXS5za2IpOw0K PiA+ICsJCQljb21tLT50eF90ZW1wX3NrYl9pbmZvW2ldLnNrYiA9IE5VTEw7DQo+ID4gKwkJfQ0K PiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICt2b2lkIHNwbDJzd19yeF9kZXNjc19jbGVhbihz dHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSkgew0KPiA+ICsJc3RydWN0IHNwbDJzd19za2JfaW5m byAqcnhfc2tiaW5mbzsNCj4gPiArCXN0cnVjdCBzcGwyc3dfbWFjX2Rlc2MgKnJ4X2Rlc2M7DQo+ ID4gKwl1MzIgaSwgajsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgUlhfREVTQ19RVUVV RV9OVU07IGkrKykgew0KPiA+ICsJCWlmICghY29tbS0+cnhfc2tiX2luZm9baV0pDQo+ID4gKwkJ CWNvbnRpbnVlOw0KPiA+ICsNCj4gPiArCQlyeF9kZXNjID0gY29tbS0+cnhfZGVzY1tpXTsNCj4g PiArCQlyeF9za2JpbmZvID0gY29tbS0+cnhfc2tiX2luZm9baV07DQo+ID4gKwkJZm9yIChqID0g MDsgaiA8IGNvbW0tPnJ4X2Rlc2NfbnVtW2ldOyBqKyspIHsNCj4gPiArCQkJcnhfZGVzY1tqXS5j bWQxID0gMDsNCj4gPiArCQkJd21iKCk7CS8qIENsZWFyIFJYRF9PV04gYW5kIHRoZW4gc2V0IG90 aGVyIGZpZWxkcy4gKi8NCj4gPiArCQkJcnhfZGVzY1tqXS5jbWQyID0gMDsNCj4gPiArCQkJcnhf ZGVzY1tqXS5hZGRyMSA9IDA7DQo+ID4gKw0KPiA+ICsJCQlpZiAocnhfc2tiaW5mb1tqXS5za2Ip IHsNCj4gPiArCQkJCWRtYV91bm1hcF9zaW5nbGUoJmNvbW0tPnBkZXYtPmRldiwgcnhfc2tiaW5m b1tqXS5tYXBwaW5nLA0KPiA+ICsJCQkJCQkgY29tbS0+cnhfZGVzY19idWZmX3NpemUsIERNQV9G Uk9NX0RFVklDRSk7DQo+ID4gKwkJCQlkZXZfa2ZyZWVfc2tiX2FueShyeF9za2JpbmZvW2pdLnNr Yik7DQo+ID4gKwkJCQlyeF9za2JpbmZvW2pdLnNrYiA9IE5VTEw7DQo+ID4gKwkJCQlyeF9za2Jp bmZvW2pdLm1hcHBpbmcgPSAwOw0KPiA+ICsJCQl9DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQlr ZnJlZShyeF9za2JpbmZvKTsNCj4gPiArCQljb21tLT5yeF9za2JfaW5mb1tpXSA9IE5VTEw7DQo+ ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgc3BsMnN3X2Rlc2NzX2NsZWFuKHN0cnVj dCBzcGwyc3dfY29tbW9uICpjb21tKSB7DQo+ID4gKwlzcGwyc3dfcnhfZGVzY3NfY2xlYW4oY29t bSk7DQo+ID4gKwlzcGwyc3dfdHhfZGVzY3NfY2xlYW4oY29tbSk7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3ZvaWQgc3BsMnN3X2Rlc2NzX2ZyZWUoc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pIHsN Cj4gPiArCXUzMiBpOw0KPiA+ICsNCj4gPiArCXNwbDJzd19kZXNjc19jbGVhbihjb21tKTsNCj4g PiArCWNvbW0tPnR4X2Rlc2MgPSBOVUxMOw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IFJYX0RFU0Nf UVVFVUVfTlVNOyBpKyspDQo+ID4gKwkJY29tbS0+cnhfZGVzY1tpXSA9IE5VTEw7DQo+ID4gKw0K PiA+ICsJLyogIEZyZWUgZGVzY3JpcHRvciBhcmVhICAqLw0KPiA+ICsJaWYgKGNvbW0tPmRlc2Nf YmFzZSkgew0KPiA+ICsJCWRtYV9mcmVlX2NvaGVyZW50KCZjb21tLT5wZGV2LT5kZXYsIGNvbW0t PmRlc2Nfc2l6ZSwgY29tbS0+ZGVzY19iYXNlLA0KPiA+ICsJCQkJICBjb21tLT5kZXNjX2RtYSk7 DQo+ID4gKwkJY29tbS0+ZGVzY19iYXNlID0gTlVMTDsNCj4gPiArCQljb21tLT5kZXNjX2RtYSA9 IDA7DQo+ID4gKwkJY29tbS0+ZGVzY19zaXplID0gMDsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsN Cj4gPiArdm9pZCBzcGwyc3dfdHhfZGVzY3NfaW5pdChzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29t bSkgew0KPiA+ICsJbWVtc2V0KGNvbW0tPnR4X2Rlc2MsICdcMCcsIHNpemVvZihzdHJ1Y3Qgc3Bs MnN3X21hY19kZXNjKSAqDQo+ID4gKwkgICAgICAgKFRYX0RFU0NfTlVNICsgTUFDX0dVQVJEX0RF U0NfTlVNKSk7IH0NCj4gPiArDQo+ID4gK2ludCBzcGwyc3dfcnhfZGVzY3NfaW5pdChzdHJ1Y3Qg c3BsMnN3X2NvbW1vbiAqY29tbSkgew0KPiA+ICsJc3RydWN0IHNwbDJzd19za2JfaW5mbyAqcnhf c2tiaW5mbzsNCj4gPiArCXN0cnVjdCBzcGwyc3dfbWFjX2Rlc2MgKnJ4X2Rlc2M7DQo+ID4gKwlz dHJ1Y3Qgc2tfYnVmZiAqc2tiOw0KPiA+ICsJdTMyIG1hcHBpbmc7DQo+ID4gKwl1MzIgaSwgajsN Cj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgUlhfREVTQ19RVUVVRV9OVU07IGkrKykgew0K PiA+ICsJCWNvbW0tPnJ4X3NrYl9pbmZvW2ldID0ga2NhbGxvYyhjb21tLT5yeF9kZXNjX251bVtp XSwgc2l6ZW9mKCpyeF9za2JpbmZvKSwNCj4gPiArCQkJCQkgICAgICAgR0ZQX0tFUk5FTCB8IEdG UF9ETUEpOw0KPiA+ICsJCWlmICghY29tbS0+cnhfc2tiX2luZm9baV0pDQo+ID4gKwkJCWdvdG8g bWVtX2FsbG9jX2ZhaWw7DQo+ID4gKw0KPiA+ICsJCXJ4X3NrYmluZm8gPSBjb21tLT5yeF9za2Jf aW5mb1tpXTsNCj4gPiArCQlyeF9kZXNjID0gY29tbS0+cnhfZGVzY1tpXTsNCj4gPiArCQlmb3Ig KGogPSAwOyBqIDwgY29tbS0+cnhfZGVzY19udW1baV07IGorKykgew0KPiA+ICsJCQlza2IgPSBu ZXRkZXZfYWxsb2Nfc2tiKE5VTEwsIGNvbW0tPnJ4X2Rlc2NfYnVmZl9zaXplKTsNCj4gPiArCQkJ aWYgKCFza2IpDQo+ID4gKwkJCQlnb3RvIG1lbV9hbGxvY19mYWlsOw0KPiA+ICsNCj4gPiArCQkJ cnhfc2tiaW5mb1tqXS5za2IgPSBza2I7DQo+ID4gKwkJCW1hcHBpbmcgPSBkbWFfbWFwX3Npbmds ZSgmY29tbS0+cGRldi0+ZGV2LCBza2ItPmRhdGEsDQo+ID4gKwkJCQkJCSBjb21tLT5yeF9kZXNj X2J1ZmZfc2l6ZSwNCj4gPiArCQkJCQkJIERNQV9GUk9NX0RFVklDRSk7DQo+ID4gKwkJCWlmIChk bWFfbWFwcGluZ19lcnJvcigmY29tbS0+cGRldi0+ZGV2LCBtYXBwaW5nKSkNCj4gPiArCQkJCWdv dG8gbWVtX2FsbG9jX2ZhaWw7DQo+ID4gKw0KPiA+ICsJCQlyeF9za2JpbmZvW2pdLm1hcHBpbmcg PSBtYXBwaW5nOw0KPiA+ICsJCQlyeF9kZXNjW2pdLmFkZHIxID0gbWFwcGluZzsNCj4gPiArCQkJ cnhfZGVzY1tqXS5hZGRyMiA9IDA7DQo+ID4gKwkJCXJ4X2Rlc2Nbal0uY21kMiA9IChqID09IGNv bW0tPnJ4X2Rlc2NfbnVtW2ldIC0gMSkgPw0KPiA+ICsJCQkJCSAgUlhEX0VPUiB8IGNvbW0tPnJ4 X2Rlc2NfYnVmZl9zaXplIDoNCj4gPiArCQkJCQkgIGNvbW0tPnJ4X2Rlc2NfYnVmZl9zaXplOw0K PiA+ICsJCQl3bWIoKTsJLyogU2V0IFJYRF9PV04gYWZ0ZXIgb3RoZXIgZmllbGRzIGFyZSBlZmZl Y3RpdmUuICovDQo+ID4gKwkJCXJ4X2Rlc2Nbal0uY21kMSA9IFJYRF9PV047DQo+ID4gKwkJfQ0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICsNCj4gPiArbWVtX2FsbG9jX2Zh aWw6DQo+ID4gKwlzcGwyc3dfcnhfZGVzY3NfY2xlYW4oY29tbSk7DQo+ID4gKwlyZXR1cm4gLUVO T01FTTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAraW50IHNwbDJzd19kZXNjc19hbGxvYyhzdHJ1Y3Qg c3BsMnN3X2NvbW1vbiAqY29tbSkgew0KPiA+ICsJczMyIGRlc2Nfc2l6ZTsNCj4gPiArCXUzMiBp Ow0KPiA+ICsNCj4gPiArCS8qIEFsbG9jIGRlc2NyaXB0b3IgYXJlYSAgKi8NCj4gPiArCWRlc2Nf c2l6ZSA9IChUWF9ERVNDX05VTSArIE1BQ19HVUFSRF9ERVNDX05VTSkgKiBzaXplb2Yoc3RydWN0 IHNwbDJzd19tYWNfZGVzYyk7DQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgUlhfREVTQ19RVUVVRV9O VU07IGkrKykNCj4gPiArCQlkZXNjX3NpemUgKz0gY29tbS0+cnhfZGVzY19udW1baV0gKiBzaXpl b2Yoc3RydWN0IHNwbDJzd19tYWNfZGVzYyk7DQo+ID4gKw0KPiA+ICsJY29tbS0+ZGVzY19iYXNl ID0gZG1hX2FsbG9jX2NvaGVyZW50KCZjb21tLT5wZGV2LT5kZXYsIGRlc2Nfc2l6ZSwNCj4gJmNv bW0tPmRlc2NfZG1hLA0KPiA+ICsJCQkJCSAgICAgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIWNv bW0tPmRlc2NfYmFzZSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKwljb21t LT5kZXNjX3NpemUgPSBkZXNjX3NpemU7DQo+ID4gKw0KPiA+ICsJLyogU2V0dXAgVHggZGVzY3Jp cHRvciAqLw0KPiA+ICsJY29tbS0+dHhfZGVzYyA9IGNvbW0tPmRlc2NfYmFzZTsNCj4gPiArDQo+ ID4gKwkvKiBTZXR1cCBSeCBkZXNjcmlwdG9yICovDQo+ID4gKwljb21tLT5yeF9kZXNjWzBdID0g JmNvbW0tPnR4X2Rlc2NbVFhfREVTQ19OVU0gKyBNQUNfR1VBUkRfREVTQ19OVU1dOw0KPiA+ICsJ Zm9yIChpID0gMTsgaSA8IFJYX0RFU0NfUVVFVUVfTlVNOyBpKyspDQo+ID4gKwkJY29tbS0+cnhf ZGVzY1tpXSA9IGNvbW0tPnJ4X2Rlc2NbaSAtIDFdICsgY29tbS0+cnhfZGVzY19udW1baSAtIDFd Ow0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgc3BsMnN3 X2Rlc2NzX2luaXQoc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pIHsNCj4gPiArCXUzMiBpLCBy ZXQ7DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlhbGl6ZSByeCBkZXNjcmlwdG9yJ3MgZGF0YSAqLw0K PiA+ICsJY29tbS0+cnhfZGVzY19udW1bMF0gPSBSWF9RVUVVRTBfREVTQ19OVU07DQo+ID4gKwlj b21tLT5yeF9kZXNjX251bVsxXSA9IFJYX1FVRVVFMV9ERVNDX05VTTsNCj4gPiArDQo+ID4gKwlm b3IgKGkgPSAwOyBpIDwgUlhfREVTQ19RVUVVRV9OVU07IGkrKykgew0KPiA+ICsJCWNvbW0tPnJ4 X2Rlc2NbaV0gPSBOVUxMOw0KPiA+ICsJCWNvbW0tPnJ4X3NrYl9pbmZvW2ldID0gTlVMTDsNCj4g PiArCQljb21tLT5yeF9wb3NbaV0gPSAwOw0KPiA+ICsJfQ0KPiA+ICsJY29tbS0+cnhfZGVzY19i dWZmX3NpemUgPSBNQUNfUlhfTEVOX01BWDsNCj4gPiArDQo+ID4gKwkvKiBJbml0aWFsaXplIHR4 IGRlc2NyaXB0b3IncyBkYXRhICovDQo+ID4gKwljb21tLT50eF9kb25lX3BvcyA9IDA7DQo+ID4g Kwljb21tLT50eF9kZXNjID0gTlVMTDsNCj4gPiArCWNvbW0tPnR4X3BvcyA9IDA7DQo+ID4gKwlj b21tLT50eF9kZXNjX2Z1bGwgPSAwOw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IFRYX0RFU0NfTlVN OyBpKyspDQo+ID4gKwkJY29tbS0+dHhfdGVtcF9za2JfaW5mb1tpXS5za2IgPSBOVUxMOw0KPiA+ ICsNCj4gPiArCS8qIEFsbG9jYXRlIHR4ICYgcnggZGVzY3JpcHRvcnMuICovDQo+ID4gKwlyZXQg PSBzcGwyc3dfZGVzY3NfYWxsb2MoY29tbSk7DQo+ID4gKwlpZiAocmV0KQ0KPiA+ICsJCXJldHVy biByZXQ7DQo+ID4gKw0KPiA+ICsJc3BsMnN3X3R4X2Rlc2NzX2luaXQoY29tbSk7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIHNwbDJzd19yeF9kZXNjc19pbml0KGNvbW0pOw0KPiA+ICt9DQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X2Rlc2MuaA0KPiA+ IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwyc3dfZGVzYy5oDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAuLmYwNGUyZDg1Yw0KPiA+IC0tLSAv ZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdW5wbHVzL3NwbDJzd19k ZXNjLmgNCj4gPiBAQCAtMCwwICsxLDE5IEBADQo+ID4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wICovDQo+ID4gKy8qIENvcHlyaWdodCBTdW5wbHVzIFRlY2hub2xvZ3kgQ28u LCBMdGQuDQo+ID4gKyAqICAgICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyAqLw0KPiA+ ICsNCj4gPiArI2lmbmRlZiBfX1NQTDJTV19ERVNDX0hfXw0KPiA+ICsjZGVmaW5lIF9fU1BMMlNX X0RFU0NfSF9fDQo+ID4gKw0KPiA+ICt2b2lkIHNwbDJzd19yeF9kZXNjc19mbHVzaChzdHJ1Y3Qg c3BsMnN3X2NvbW1vbiAqY29tbSk7IHZvaWQNCj4gPiArc3BsMnN3X3R4X2Rlc2NzX2NsZWFuKHN0 cnVjdCBzcGwyc3dfY29tbW9uICpjb21tKTsgdm9pZA0KPiA+ICtzcGwyc3dfcnhfZGVzY3NfY2xl YW4oc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pOyB2b2lkDQo+ID4gK3NwbDJzd19kZXNjc19j bGVhbihzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSk7IHZvaWQNCj4gPiArc3BsMnN3X2Rlc2Nz X2ZyZWUoc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0pOyB2b2lkDQo+ID4gK3NwbDJzd190eF9k ZXNjc19pbml0KHN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21tKTsgaW50DQo+ID4gK3NwbDJzd19y eF9kZXNjc19pbml0KHN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21tKTsgaW50DQo+ID4gK3NwbDJz d19kZXNjc19hbGxvYyhzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSk7IGludA0KPiA+ICtzcGwy c3dfZGVzY3NfaW5pdChzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSk7DQo+ID4gKw0KPiA+ICsj ZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9zcGwy c3dfZHJpdmVyLmMNCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N1bnBsdXMvc3BsMnN3X2Ry aXZlci5jDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAuLjgz MjBmYTgzMw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5l dC9zdW5wbHVzL3NwbDJzd19kcml2ZXIuYw0KPiA+IEBAIC0wLDAgKzEsNTc4IEBADQo+ID4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ID4gKy8qIENvcHlyaWdodCBTdW5w bHVzIFRlY2hub2xvZ3kgQ28uLCBMdGQuDQo+ID4gKyAqICAgICAgIEFsbCByaWdodHMgcmVzZXJ2 ZWQuDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rldmlj ZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbnZtZW0tY29uc3VtZXIuaD4NCj4gPiArI2luY2x1 ZGUgPGxpbnV4L2V0aGVyZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9uZXRkZXZpY2Uu aD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51 eC9vZl9uZXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2V0Lmg+DQo+ID4gKyNpbmNsdWRl IDxsaW51eC9jbGsuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ID4gKw0KPiA+ICsj aW5jbHVkZSAic3BsMnN3X3JlZ2lzdGVyLmgiDQo+ID4gKyNpbmNsdWRlICJzcGwyc3dfZGVmaW5l LmgiDQo+ID4gKyNpbmNsdWRlICJzcGwyc3dfZGVzYy5oIg0KPiA+ICsjaW5jbHVkZSAic3BsMnN3 X21kaW8uaCINCj4gPiArI2luY2x1ZGUgInNwbDJzd19waHkuaCINCj4gPiArI2luY2x1ZGUgInNw bDJzd19pbnQuaCINCj4gPiArI2luY2x1ZGUgInNwbDJzd19tYWMuaCINCj4gPiArDQo+ID4gKy8q IG5ldCBkZXZpY2Ugb3BlcmF0aW9ucyAqLw0KPiA+ICtzdGF0aWMgaW50IHNwbDJzd19ldGhlcm5l dF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KSB7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3X21h YyAqbWFjID0gbmV0ZGV2X3ByaXYobmRldik7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAq Y29tbSA9IG1hYy0+Y29tbTsNCj4gPiArCXUzMiBtYXNrOw0KPiA+ICsNCj4gPiArCW5ldGRldl9k YmcobmRldiwgIk9wZW4gcG9ydCA9ICV4XG4iLCBtYWMtPmxhbl9wb3J0KTsNCj4gPiArDQo+ID4g Kwljb21tLT5lbmFibGUgfD0gbWFjLT5sYW5fcG9ydDsNCj4gPiArDQo+ID4gKwlzcGwyc3dfbWFj X2h3X3N0YXJ0KGNvbW0pOw0KPiA+ICsNCj4gPiArCS8qIEVuYWJsZSBUWCBhbmQgUlggaW50ZXJy dXB0cyAqLw0KPiA+ICsJbWFzayA9IHJlYWRsKGNvbW0tPmwyc3dfcmVnX2Jhc2UgKyBMMlNXX1NX X0lOVF9NQVNLXzApOw0KPiA+ICsJbWFzayAmPSB+KE1BQ19JTlRfVFggfCBNQUNfSU5UX1JYKTsN Cj4gPiArCXdyaXRlbChtYXNrLCBjb21tLT5sMnN3X3JlZ19iYXNlICsgTDJTV19TV19JTlRfTUFT S18wKTsNCj4gPiArDQo+ID4gKwlwaHlfc3RhcnQobmRldi0+cGh5ZGV2KTsNCj4gPiArDQo+ID4g KwluZXRpZl9zdGFydF9xdWV1ZShuZGV2KTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBzcGwyc3dfZXRoZXJuZXRfc3RvcChzdHJ1Y3QgbmV0 X2RldmljZSAqbmRldikgew0KPiA+ICsJc3RydWN0IHNwbDJzd19tYWMgKm1hYyA9IG5ldGRldl9w cml2KG5kZXYpOw0KPiA+ICsJc3RydWN0IHNwbDJzd19jb21tb24gKmNvbW0gPSBtYWMtPmNvbW07 DQo+ID4gKw0KPiA+ICsJbmV0aWZfc3RvcF9xdWV1ZShuZGV2KTsNCj4gPiArDQo+ID4gKwljb21t LT5lbmFibGUgJj0gfm1hYy0+bGFuX3BvcnQ7DQo+ID4gKw0KPiA+ICsJcGh5X3N0b3AobmRldi0+ cGh5ZGV2KTsNCj4gPiArDQo+ID4gKwlzcGwyc3dfbWFjX2h3X3N0b3AoY29tbSk7DQo+ID4gKw0K PiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc3BsMnN3X2V0 aGVybmV0X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0DQo+ID4gK25ldF9k ZXZpY2UgKm5kZXYpIHsNCj4gPiArCXN0cnVjdCBzcGwyc3dfbWFjICptYWMgPSBuZXRkZXZfcHJp dihuZGV2KTsNCj4gPiArCXN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21tID0gbWFjLT5jb21tOw0K PiA+ICsJc3RydWN0IHNwbDJzd19za2JfaW5mbyAqc2tiaW5mbzsNCj4gPiArCXN0cnVjdCBzcGwy c3dfbWFjX2Rlc2MgKnR4ZGVzYzsNCj4gPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ID4gKwl1 MzIgbWFwcGluZzsNCj4gPiArCXUzMiB0eF9wb3M7DQo+ID4gKwl1MzIgY21kMTsNCj4gPiArCXUz MiBjbWQyOw0KPiA+ICsNCj4gPiArCWlmICh1bmxpa2VseShjb21tLT50eF9kZXNjX2Z1bGwgPT0g MSkpIHsNCj4gPiArCQkvKiBObyBUWCBkZXNjcmlwdG9ycyBsZWZ0LiBXYWl0IGZvciB0eCBpbnRl cnJ1cHQuICovDQo+ID4gKwkJbmV0ZGV2X2RiZyhuZGV2LCAiVFggZGVzY3JpcHRvciBxdWV1ZSBm dWxsIHdoZW4geG1pdCFcbiIpOw0KPiA+ICsJCXJldHVybiBORVRERVZfVFhfQlVTWTsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwkvKiBJZiBza2Igc2l6ZSBpcyBzaG9ydGVyIHRoYW4gRVRIX1pMRU4g KDYwKSwgcGFkIGl0IHdpdGggMC4gKi8NCj4gPiArCWlmICh1bmxpa2VseShza2ItPmxlbiA8IEVU SF9aTEVOKSkgew0KPiA+ICsJCWlmIChza2JfcGFkdG8oc2tiLCBFVEhfWkxFTikpDQo+ID4gKwkJ CXJldHVybiBORVRERVZfVFhfT0s7DQo+ID4gKw0KPiA+ICsJCXNrYl9wdXQoc2tiLCBFVEhfWkxF TiAtIHNrYi0+bGVuKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwltYXBwaW5nID0gZG1hX21hcF9z aW5nbGUoJmNvbW0tPnBkZXYtPmRldiwgc2tiLT5kYXRhLA0KPiA+ICsJCQkJIHNrYi0+bGVuLCBE TUFfVE9fREVWSUNFKTsNCj4gPiArCWlmIChkbWFfbWFwcGluZ19lcnJvcigmY29tbS0+cGRldi0+ ZGV2LCBtYXBwaW5nKSkgew0KPiA+ICsJCW5kZXYtPnN0YXRzLnR4X2Vycm9ycysrOw0KPiA+ICsJ CWRldl9rZnJlZV9za2Ioc2tiKTsNCj4gPiArCQlyZXR1cm4gTkVUREVWX1RYX09LOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZjb21tLT50eF9sb2NrLCBmbGFncyk7 DQo+ID4gKw0KPiA+ICsJdHhfcG9zID0gY29tbS0+dHhfcG9zOw0KPiA+ICsJdHhkZXNjID0gJmNv bW0tPnR4X2Rlc2NbdHhfcG9zXTsNCj4gPiArCXNrYmluZm8gPSAmY29tbS0+dHhfdGVtcF9za2Jf aW5mb1t0eF9wb3NdOw0KPiA+ICsJc2tiaW5mby0+bWFwcGluZyA9IG1hcHBpbmc7DQo+ID4gKwlz a2JpbmZvLT5sZW4gPSBza2ItPmxlbjsNCj4gPiArCXNrYmluZm8tPnNrYiA9IHNrYjsNCj4gPiAr DQo+ID4gKwkvKiBTZXQgdXAgYSBUWCBkZXNjcmlwdG9yICovDQo+ID4gKwljbWQxID0gVFhEX09X TiB8IFRYRF9TT1AgfCBUWERfRU9QIHwgKG1hYy0+dG9fdmxhbiA8PCAxMikgfA0KPiA+ICsJICAg ICAgIChza2ItPmxlbiAmIFRYRF9QS1RfTEVOKTsNCj4gPiArCWNtZDIgPSBza2ItPmxlbiAmIFRY RF9CVUZfTEVOMTsNCj4gPiArDQo+ID4gKwlpZiAodHhfcG9zID09IChUWF9ERVNDX05VTSAtIDEp KQ0KPiA+ICsJCWNtZDIgfD0gVFhEX0VPUjsNCj4gPiArDQo+ID4gKwl0eGRlc2MtPmFkZHIxID0g c2tiaW5mby0+bWFwcGluZzsNCj4gPiArCXR4ZGVzYy0+Y21kMiA9IGNtZDI7DQo+ID4gKwl3bWIo KTsJLyogU2V0IFRYRF9PV04gYWZ0ZXIgb3RoZXIgZmllbGRzIGFyZSBlZmZlY3RpdmUuICovDQo+ ID4gKwl0eGRlc2MtPmNtZDEgPSBjbWQxOw0KPiA+ICsNCj4gPiArCS8qIE1vdmUgdHhfcG9zIHRv IG5leHQgcG9zaXRpb24gKi8NCj4gPiArCXR4X3BvcyA9ICgodHhfcG9zICsgMSkgPT0gVFhfREVT Q19OVU0pID8gMCA6IHR4X3BvcyArIDE7DQo+ID4gKw0KPiA+ICsJaWYgKHVubGlrZWx5KHR4X3Bv cyA9PSBjb21tLT50eF9kb25lX3BvcykpIHsNCj4gPiArCQluZXRpZl9zdG9wX3F1ZXVlKG5kZXYp Ow0KPiA+ICsJCWNvbW0tPnR4X2Rlc2NfZnVsbCA9IDE7DQo+ID4gKwl9DQo+ID4gKwljb21tLT50 eF9wb3MgPSB0eF9wb3M7DQo+ID4gKwl3bWIoKTsJCS8qIG1ha2Ugc3VyZSBzZXR0aW5ncyBhcmUg ZWZmZWN0aXZlLiAqLw0KPiA+ICsNCj4gPiArCS8qIFRyaWdnZXIgbWFjIHRvIHRyYW5zbWl0ICov DQo+ID4gKwl3cml0ZWwoTUFDX1RSSUdfTF9TT0MwLCBjb21tLT5sMnN3X3JlZ19iYXNlICsgTDJT V19DUFVfVFhfVFJJRyk7DQo+ID4gKw0KPiA+ICsJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY29t bS0+dHhfbG9jaywgZmxhZ3MpOw0KPiA+ICsJcmV0dXJuIE5FVERFVl9UWF9PSzsNCj4gPiArfQ0K PiA+ICsNCj4gPiArc3RhdGljIHZvaWQgc3BsMnN3X2V0aGVybmV0X3NldF9yeF9tb2RlKHN0cnVj dCBuZXRfZGV2aWNlICpuZGV2KSB7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3X21hYyAqbWFjID0gbmV0 ZGV2X3ByaXYobmRldik7DQo+ID4gKw0KPiA+ICsJc3BsMnN3X21hY19yeF9tb2RlX3NldChtYWMp Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHNwbDJzd19ldGhlcm5ldF9zZXRfbWFj X2FkZHJlc3Moc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsDQo+ID4gK3ZvaWQgKmFkZHIpIHsNCj4g PiArCXN0cnVjdCBzcGwyc3dfbWFjICptYWMgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gPiArCWlu dCBlcnI7DQo+ID4gKw0KPiA+ICsJZXJyID0gZXRoX21hY19hZGRyKG5kZXYsIGFkZHIpOw0KPiA+ ICsJaWYgKGVycikNCj4gPiArCQlyZXR1cm4gZXJyOw0KPiA+ICsNCj4gPiArCS8qIERlbGV0ZSB0 aGUgb2xkIE1BQyBhZGRyZXNzICovDQo+ID4gKwluZXRkZXZfZGJnKG5kZXYsICJPbGQgRXRoZXJu ZXQgKE1BQykgYWRkcmVzcyA9ICVwTVxuIiwgbWFjLT5tYWNfYWRkcik7DQo+ID4gKwlpZiAoaXNf dmFsaWRfZXRoZXJfYWRkcihtYWMtPm1hY19hZGRyKSkgew0KPiA+ICsJCWVyciA9IHNwbDJzd19t YWNfYWRkcl9kZWwobWFjKTsNCj4gPiArCQlpZiAoZXJyKQ0KPiA+ICsJCQlyZXR1cm4gZXJyOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFNldCB0aGUgTUFDIGFkZHJlc3MgKi8NCj4gPiArCWV0 aGVyX2FkZHJfY29weShtYWMtPm1hY19hZGRyLCBuZGV2LT5kZXZfYWRkcik7DQo+ID4gKwlyZXR1 cm4gc3BsMnN3X21hY19hZGRyX2FkZChtYWMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMg dm9pZCBzcGwyc3dfZXRoZXJuZXRfdHhfdGltZW91dChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwN Cj4gPiArdW5zaWduZWQgaW50IHR4cXVldWUpIHsNCj4gPiArCXN0cnVjdCBzcGwyc3dfbWFjICpt YWMgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gPiArCXN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21t ID0gbWFjLT5jb21tOw0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArCWludCBpOw0K PiA+ICsNCj4gPiArCW5ldGRldl9lcnIobmRldiwgIlRYIHRpbWVkIG91dCFcbiIpOw0KPiA+ICsJ bmRldi0+c3RhdHMudHhfZXJyb3JzKys7DQo+ID4gKw0KPiA+ICsJc3Bpbl9sb2NrX2lycXNhdmUo JmNvbW0tPnR4X2xvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFY X05FVERFVl9OVU07IGkrKykNCj4gPiArCQlpZiAoY29tbS0+bmRldltpXSkNCj4gPiArCQkJbmV0 aWZfc3RvcF9xdWV1ZShjb21tLT5uZGV2W2ldKTsNCj4gPiArDQo+ID4gKwlzcGwyc3dfbWFjX3Nv ZnRfcmVzZXQoY29tbSk7DQo+ID4gKw0KPiA+ICsJLyogQWNjZXB0IFRYIHBhY2tldHMgYWdhaW4u ICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX05FVERFVl9OVU07IGkrKykNCj4gPiArCQlp ZiAoY29tbS0+bmRldltpXSkgew0KPiA+ICsJCQluZXRpZl90cmFuc191cGRhdGUoY29tbS0+bmRl dltpXSk7DQo+ID4gKwkJCW5ldGlmX3dha2VfcXVldWUoY29tbS0+bmRldltpXSk7DQo+ID4gKwkJ fQ0KPiA+ICsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbW0tPnR4X2xvY2ssIGZs YWdzKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBu ZXRkZXZfb3BzID0gew0KPiA+ICsJLm5kb19vcGVuID0gc3BsMnN3X2V0aGVybmV0X29wZW4sDQo+ ID4gKwkubmRvX3N0b3AgPSBzcGwyc3dfZXRoZXJuZXRfc3RvcCwNCj4gPiArCS5uZG9fc3RhcnRf eG1pdCA9IHNwbDJzd19ldGhlcm5ldF9zdGFydF94bWl0LA0KPiA+ICsJLm5kb19zZXRfcnhfbW9k ZSA9IHNwbDJzd19ldGhlcm5ldF9zZXRfcnhfbW9kZSwNCj4gPiArCS5uZG9fc2V0X21hY19hZGRy ZXNzID0gc3BsMnN3X2V0aGVybmV0X3NldF9tYWNfYWRkcmVzcywNCj4gPiArCS5uZG9fZG9faW9j dGwgPSBwaHlfZG9faW9jdGwsDQo+ID4gKwkubmRvX3R4X3RpbWVvdXQgPSBzcGwyc3dfZXRoZXJu ZXRfdHhfdGltZW91dCwgfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIHNwbDJzd19jaGVja19t YWNfdmVuZG9yX2lkX2FuZF9jb252ZXJ0KHU4ICptYWNfYWRkcikgew0KPiA+ICsJdTggdG1wOw0K PiA+ICsNCj4gPiArCS8qIEJ5dGUgb3JkZXIgb2YgTUFDIGFkZHJlc3Mgb2Ygc29tZSBzYW1wbGVz IGFyZSByZXZlcnNlZC4NCj4gPiArCSAqIENoZWNrIHZlbmRvciBpZCBhbmQgY29udmVydCBieXRl IG9yZGVyIGlmIGl0IGlzIHdyb25nLg0KPiA+ICsJICogT1VJIG9mIFN1bnBsdXM6IGZjOjRiOmJj DQo+ID4gKwkgKi8NCj4gPiArCWlmIChtYWNfYWRkcls1XSA9PSAweGZjICYmIG1hY19hZGRyWzRd ID09IDB4NGIgJiYgbWFjX2FkZHJbM10gPT0gMHhiYyAmJg0KPiA+ICsJICAgIChtYWNfYWRkclsw XSAhPSAweGZjIHx8IG1hY19hZGRyWzFdICE9IDB4NGIgfHwgbWFjX2FkZHJbMl0gIT0gMHhiYykp IHsNCj4gPiArCQkvKiBTd2FwIG1hY19hZGRyWzBdIGFuZCBtYWNfYWRkcls1XSAqLw0KPiA+ICsJ CXRtcCA9IG1hY19hZGRyWzBdOw0KPiA+ICsJCW1hY19hZGRyWzBdID0gbWFjX2FkZHJbNV07DQo+ ID4gKwkJbWFjX2FkZHJbNV0gPSB0bXA7DQo+ID4gKw0KPiA+ICsJCS8qIFN3YXAgbWFjX2FkZHJb MV0gYW5kIG1hY19hZGRyWzRdICovDQo+ID4gKwkJdG1wID0gbWFjX2FkZHJbMV07DQo+ID4gKwkJ bWFjX2FkZHJbMV0gPSBtYWNfYWRkcls0XTsNCj4gPiArCQltYWNfYWRkcls0XSA9IHRtcDsNCj4g PiArDQo+ID4gKwkJLyogU3dhcCBtYWNfYWRkclsyXSBhbmQgbWFjX2FkZHJbM10gKi8NCj4gPiAr CQl0bXAgPSBtYWNfYWRkclsyXTsNCj4gPiArCQltYWNfYWRkclsyXSA9IG1hY19hZGRyWzNdOw0K PiA+ICsJCW1hY19hZGRyWzNdID0gdG1wOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtz dGF0aWMgaW50IHNwbDJzd19udm1lbV9nZXRfbWFjX2FkZHJlc3Moc3RydWN0IGRldmljZSAqZGV2 LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLA0KPiA+ICsJCQkJCXZvaWQgKmFkZHJidWYpDQo+ID4g K3sNCj4gPiArCXN0cnVjdCBudm1lbV9jZWxsICpjZWxsOw0KPiA+ICsJc3NpemVfdCBsZW47DQo+ ID4gKwl1OCAqbWFjOw0KPiA+ICsNCj4gPiArCS8qIEdldCBudm1lbSBjZWxsIG9mIG1hYy1hZGRy ZXNzIGZyb20gZHRzLiAqLw0KPiA+ICsJY2VsbCA9IG9mX252bWVtX2NlbGxfZ2V0KG5wLCAibWFj LWFkZHJlc3MiKTsNCj4gPiArCWlmIChJU19FUlIoY2VsbCkpDQo+ID4gKwkJcmV0dXJuIFBUUl9F UlIoY2VsbCk7DQo+ID4gKw0KPiA+ICsJLyogUmVhZCBtYWMgYWRkcmVzcyBmcm9tIG52bWVtIGNl bGwuICovDQo+ID4gKwltYWMgPSBudm1lbV9jZWxsX3JlYWQoY2VsbCwgJmxlbik7DQo+ID4gKwlu dm1lbV9jZWxsX3B1dChjZWxsKTsNCj4gPiArCWlmIChJU19FUlIobWFjKSkNCj4gPiArCQlyZXR1 cm4gUFRSX0VSUihtYWMpOw0KPiA+ICsNCj4gPiArCWlmIChsZW4gIT0gRVRIX0FMRU4pIHsNCj4g PiArCQlrZnJlZShtYWMpOw0KPiA+ICsJCWRldl9pbmZvKGRldiwgIkludmFsaWQgbGVuZ3RoIG9m IG1hYyBhZGRyZXNzIGluIG52bWVtIVxuIik7DQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsJLyogQnl0ZSBvcmRlciBvZiBzb21lIHNhbXBsZXMgYXJlIHJldmVy c2VkLg0KPiA+ICsJICogQ29udmVydCBieXRlIG9yZGVyIGhlcmUuDQo+ID4gKwkgKi8NCj4gPiAr CXNwbDJzd19jaGVja19tYWNfdmVuZG9yX2lkX2FuZF9jb252ZXJ0KG1hYyk7DQo+ID4gKw0KPiA+ ICsJLyogQ2hlY2sgaWYgbWFjIGFkZHJlc3MgaXMgdmFsaWQgKi8NCj4gPiArCWlmICghaXNfdmFs aWRfZXRoZXJfYWRkcihtYWMpKSB7DQo+ID4gKwkJa2ZyZWUobWFjKTsNCj4gPiArCQlkZXZfaW5m byhkZXYsICJJbnZhbGlkIG1hYyBhZGRyZXNzIGluIG52bWVtICglcE0pIVxuIiwgbWFjKTsNCj4g PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlldGhlcl9hZGRyX2Nv cHkoYWRkcmJ1ZiwgbWFjKTsNCj4gPiArCWtmcmVlKG1hYyk7DQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBzcGwyc3dfaW5pdF9uZXRkZXYoc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiwgdTggKm1hY19hZGRyLA0KPiA+ICsJCQkgICAgICBzdHJ1Y3Qg bmV0X2RldmljZSAqKnJfbmRldikNCj4gPiArew0KPiA+ICsJc3RydWN0IG5ldF9kZXZpY2UgKm5k ZXY7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3X21hYyAqbWFjOw0KPiA+ICsJaW50IHJldDsNCj4gPiAr DQo+ID4gKwkvKiBBbGxvY2F0ZSB0aGUgZGV2aWNlcywgYW5kIGFsc28gYWxsb2NhdGUgc3BsMnN3 X21hYywNCj4gPiArCSAqIHdlIGNhbiBnZXQgaXQgYnkgbmV0ZGV2X3ByaXYoKS4NCj4gPiArCSAq Lw0KPiA+ICsJbmRldiA9IGRldm1fYWxsb2NfZXRoZXJkZXYoJnBkZXYtPmRldiwgc2l6ZW9mKCpt YWMpKTsNCj4gPiArCWlmICghbmRldikgew0KPiA+ICsJCSpyX25kZXYgPSBOVUxMOw0KPiA+ICsJ CXJldHVybiAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ICsJU0VUX05FVERFVl9ERVYobmRldiwgJnBk ZXYtPmRldik7DQo+ID4gKwluZGV2LT5uZXRkZXZfb3BzID0gJm5ldGRldl9vcHM7DQo+ID4gKwlt YWMgPSBuZXRkZXZfcHJpdihuZGV2KTsNCj4gPiArCW1hYy0+bmRldiA9IG5kZXY7DQo+ID4gKwll dGhlcl9hZGRyX2NvcHkobWFjLT5tYWNfYWRkciwgbWFjX2FkZHIpOw0KPiA+ICsNCj4gPiArCWV0 aF9od19hZGRyX3NldChuZGV2LCBtYWNfYWRkcik7DQo+ID4gKwlkZXZfaW5mbygmcGRldi0+ZGV2 LCAiRXRoZXJuZXQgKE1BQykgYWRkcmVzcyA9ICVwTVxuIiwgbWFjX2FkZHIpOw0KPiA+ICsNCj4g PiArCXJldCA9IHJlZ2lzdGVyX25ldGRldihuZGV2KTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiAr CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVnaXN0ZXIgbmV0IGRldmljZSBcIiVz XCIhXG4iLA0KPiA+ICsJCQluZGV2LT5uYW1lKTsNCj4gPiArCQlmcmVlX25ldGRldihuZGV2KTsN Cj4gPiArCQkqcl9uZGV2ID0gTlVMTDsNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsJfQ0KPiA+ ICsJbmV0ZGV2X2RiZyhuZGV2LCAiUmVnaXN0ZXJlZCBuZXQgZGV2aWNlIFwiJXNcIiBzdWNjZXNz ZnVsbHkuXG4iLA0KPiA+ICtuZGV2LT5uYW1lKTsNCj4gPiArDQo+ID4gKwkqcl9uZGV2ID0gbmRl djsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGRl dmljZV9ub2RlICpzcGwyc3dfZ2V0X2V0aF9jaGlsZF9ub2RlKHN0cnVjdA0KPiA+ICtkZXZpY2Vf bm9kZSAqZXRoZXJfbnAsIGludCBpZCkgew0KPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpwb3J0 X25wOw0KPiA+ICsJaW50IHBvcnRfaWQ7DQo+ID4gKw0KPiA+ICsJZm9yX2VhY2hfY2hpbGRfb2Zf bm9kZShldGhlcl9ucCwgcG9ydF9ucCkgew0KPiA+ICsJCS8qIEl0IGlzIG5vdCBhICdwb3J0JyBu b2RlLCBjb250aW51ZS4gKi8NCj4gPiArCQlpZiAoc3RyY21wKHBvcnRfbnAtPm5hbWUsICJwb3J0 IikpDQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsNCj4gPiArCQlpZiAob2ZfcHJvcGVydHlfcmVh ZF91MzIocG9ydF9ucCwgInJlZyIsICZwb3J0X2lkKSA8IDApDQo+ID4gKwkJCWNvbnRpbnVlOw0K PiA+ICsNCj4gPiArCQlpZiAocG9ydF9pZCA9PSBpZCkNCj4gPiArCQkJcmV0dXJuIHBvcnRfbnA7 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogTm90IGZvdW5kISAqLw0KPiA+ICsJcmV0dXJuIE5V TEw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgc3BsMnN3X3Byb2JlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsNCj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqZXRoX3Bv cnRzX25wOw0KPiA+ICsJc3RydWN0IGRldmljZV9ub2RlICpwb3J0X25wOw0KPiA+ICsJc3RydWN0 IHNwbDJzd19jb21tb24gKmNvbW07DQo+ID4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9ucDsN Cj4gPiArCXBoeV9pbnRlcmZhY2VfdCBwaHlfbW9kZTsNCj4gPiArCXN0cnVjdCBuZXRfZGV2aWNl ICpuZGV2Ow0KPiA+ICsJc3RydWN0IHNwbDJzd19tYWMgKm1hYzsNCj4gPiArCXU4IG1hY19hZGRy W0VUSF9BTEVOXTsNCj4gPiArCWludCBpcnEsIGksIHJldDsNCj4gPiArDQo+ID4gKwlpZiAocGxh dGZvcm1fZ2V0X2RydmRhdGEocGRldikpDQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKw0K PiA+ICsJLyogQWxsb2NhdGUgbWVtb3J5IGZvciAnc3BsMnN3X2NvbW1vbicgYXJlYS4gKi8NCj4g PiArCWNvbW0gPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6ZW9mKCpjb21tKSwgR0ZQX0tF Uk5FTCk7DQo+ID4gKwlpZiAoIWNvbW0pDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0K PiA+ICsJY29tbS0+cGRldiA9IHBkZXY7DQo+ID4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2 LCBjb21tKTsNCj4gPiArDQo+ID4gKwlzcGluX2xvY2tfaW5pdCgmY29tbS0+dHhfbG9jayk7DQo+ ID4gKwlzcGluX2xvY2tfaW5pdCgmY29tbS0+bWRpb19sb2NrKTsNCj4gPiArCXNwaW5fbG9ja19p bml0KCZjb21tLT5pbnRfbWFza19sb2NrKTsNCj4gPiArDQo+ID4gKwkvKiBHZXQgbWVtb3J5IHJl c291cmNlIDAgZnJvbSBkdHMuICovDQo+ID4gKwljb21tLT5sMnN3X3JlZ19iYXNlID0gZGV2bV9w bGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOw0KPiA+ICsJaWYgKElTX0VSUihjb21t LT5sMnN3X3JlZ19iYXNlKSkNCj4gPiArCQlyZXR1cm4gUFRSX0VSUihjb21tLT5sMnN3X3JlZ19i YXNlKTsNCj4gPiArDQo+ID4gKwkvKiBHZXQgaXJxIHJlc291cmNlIGZyb20gZHRzLiAqLw0KPiA+ ICsJcmV0ID0gcGxhdGZvcm1fZ2V0X2lycShwZGV2LCAwKTsNCj4gPiArCWlmIChyZXQgPCAwKQ0K PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gKwlpcnEgPSByZXQ7DQo+ID4gKw0KPiA+ICsJLyogR2V0 IGNsb2NrIGNvbnRyb2xsZXIuICovDQo+ID4gKwljb21tLT5jbGsgPSBkZXZtX2Nsa19nZXQoJnBk ZXYtPmRldiwgTlVMTCk7DQo+ID4gKwlpZiAoSVNfRVJSKGNvbW0tPmNsaykpIHsNCj4gPiArCQlk ZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIoY29tbS0+Y2xrKSwNCj4gPiArCQkJICAg ICAgIkZhaWxlZCB0byByZXRyaWV2ZSBjbG9jayBjb250cm9sbGVyIVxuIik7DQo+ID4gKwkJcmV0 dXJuIFBUUl9FUlIoY29tbS0+Y2xrKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBHZXQgcmVz ZXQgY29udHJvbGxlci4gKi8NCj4gPiArCWNvbW0tPnJzdGMgPSBkZXZtX3Jlc2V0X2NvbnRyb2xf Z2V0X2V4Y2x1c2l2ZSgmcGRldi0+ZGV2LCBOVUxMKTsNCj4gPiArCWlmIChJU19FUlIoY29tbS0+ cnN0YykpIHsNCj4gPiArCQlkZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIoY29tbS0+ cnN0YyksDQo+ID4gKwkJCSAgICAgICJGYWlsZWQgdG8gcmV0cmlldmUgcmVzZXQgY29udHJvbGxl ciFcbiIpOw0KPiA+ICsJCXJldHVybiBQVFJfRVJSKGNvbW0tPnJzdGMpOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCS8qIEVuYWJsZSBjbG9jay4gKi8NCj4gPiArCXJldCA9IGNsa19wcmVwYXJlX2Vu YWJsZShjb21tLT5jbGspOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ ICsJdWRlbGF5KDEpOw0KPiA+ICsNCj4gPiArCS8qIFJlc2V0IE1BQyAqLw0KPiA+ICsJcmVzZXRf Y29udHJvbF9hc3NlcnQoY29tbS0+cnN0Yyk7DQo+ID4gKwl1ZGVsYXkoMSk7DQo+ID4gKwlyZXNl dF9jb250cm9sX2RlYXNzZXJ0KGNvbW0tPnJzdGMpOw0KPiA+ICsJdXNsZWVwX3JhbmdlKDEwMDAs IDIwMDApOw0KPiA+ICsNCj4gPiArCS8qIFJlcXVlc3QgaXJxLiAqLw0KPiA+ICsJcmV0ID0gZGV2 bV9yZXF1ZXN0X2lycSgmcGRldi0+ZGV2LCBpcnEsIHNwbDJzd19ldGhlcm5ldF9pbnRlcnJ1cHQs IDAsDQo+ID4gKwkJCSAgICAgICBkZXZfbmFtZSgmcGRldi0+ZGV2KSwgY29tbSk7DQo+ID4gKwlp ZiAocmV0KSB7DQo+ID4gKwkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbGVkIHRvIHJlcXVlc3Qg aXJxICMlZCFcbiIsIGlycSk7DQo+ID4gKwkJZ290byBvdXRfY2xrX2Rpc2FibGU7DQo+ID4gKwl9 DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlhbGl6ZSBUWCBhbmQgUlggZGVzY3JpcHRvcnMuICovDQo+ ID4gKwlyZXQgPSBzcGwyc3dfZGVzY3NfaW5pdChjb21tKTsNCj4gPiArCWlmIChyZXQpIHsNCj4g PiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsIHRvIGluaXRpYWxpemUgbWFjIGRlc2NyaXB0 b3JzIVxuIik7DQo+ID4gKwkJc3BsMnN3X2Rlc2NzX2ZyZWUoY29tbSk7DQo+ID4gKwkJZ290byBv dXRfY2xrX2Rpc2FibGU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlhbGl6ZSBNQUMu ICovDQo+ID4gKwlzcGwyc3dfbWFjX2luaXQoY29tbSk7DQo+ID4gKw0KPiA+ICsJLyogSW5pdGlh bGl6ZSBtZGlvIGJ1cyAqLw0KPiA+ICsJcmV0ID0gc3BsMnN3X21kaW9faW5pdChjb21tKTsNCj4g PiArCWlmIChyZXQpIHsNCj4gPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gaW5p dGlhbGl6ZSBtZGlvIGJ1cyFcbiIpOw0KPiA+ICsJCWdvdG8gb3V0X2Nsa19kaXNhYmxlOw0KPiA+ ICsJfQ0KPiA+ICsNCj4gPiArCS8qIEdldCBjaGlsZCBub2RlIGV0aGVybmV0LXBvcnRzLiAqLw0K PiA+ICsJZXRoX3BvcnRzX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocGRldi0+ZGV2Lm9mX25v ZGUsICJldGhlcm5ldC1wb3J0cyIpOw0KPiA+ICsJaWYgKCFldGhfcG9ydHNfbnApIHsNCj4gPiAr CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJObyBldGhlcm5ldC1wb3J0cyBjaGlsZCBub2RlIGZvdW5k IVxuIik7DQo+ID4gKwkJcmV0ID0gLUVOT0RFVjsNCj4gPiArCQlnb3RvIG91dF9mcmVlX21kaW87 DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9ORVRERVZfTlVNOyBp KyspIHsNCj4gPiArCQkvKiBHZXQgcG9ydEBpIG9mIG5vZGUgZXRoZXJuZXQtcG9ydHMuICovDQo+ ID4gKwkJcG9ydF9ucCA9IHNwbDJzd19nZXRfZXRoX2NoaWxkX25vZGUoZXRoX3BvcnRzX25wLCBp KTsNCj4gPiArCQlpZiAoIXBvcnRfbnApDQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsNCj4gPiAr CQkvKiBHZXQgcGh5LW1vZGUuICovDQo+ID4gKwkJaWYgKG9mX2dldF9waHlfbW9kZShwb3J0X25w LCAmcGh5X21vZGUpKSB7DQo+ID4gKwkJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBn ZXQgcGh5LW1vZGUgcHJvcGVydHkgb2YgcG9ydEAlZCFcbiIsDQo+ID4gKwkJCQlpKTsNCj4gPiAr CQkJY29udGludWU7DQo+ID4gKwkJfQ0KPiA+ICsNCj4gPiArCQkvKiBHZXQgcGh5LWhhbmRsZS4g Ki8NCj4gPiArCQlwaHlfbnAgPSBvZl9wYXJzZV9waGFuZGxlKHBvcnRfbnAsICJwaHktaGFuZGxl IiwgMCk7DQo+ID4gKwkJaWYgKCFwaHlfbnApIHsNCj4gPiArCQkJZGV2X2VycigmcGRldi0+ZGV2 LCAiRmFpbGVkIHRvIGdldCBwaHktaGFuZGxlIHByb3BlcnR5IG9mIHBvcnRAJWQhXG4iLA0KPiA+ ICsJCQkJaSk7DQo+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJLyog R2V0IG1hYy1hZGRyZXNzIGZyb20gbnZtZW0uICovDQo+ID4gKwkJcmV0ID0gc3BsMnN3X252bWVt X2dldF9tYWNfYWRkcmVzcygmcGRldi0+ZGV2LCBwb3J0X25wLCBtYWNfYWRkcik7DQo+ID4gKwkJ aWYgKHJldCA9PSAtRVBST0JFX0RFRkVSKSB7DQo+ID4gKwkJCWdvdG8gb3V0X3VucmVnaXN0ZXJf ZGV2Ow0KPiA+ICsJCX0gZWxzZSBpZiAocmV0KSB7DQo+ID4gKwkJCWRldl9pbmZvKCZwZGV2LT5k ZXYsICJHZW5lcmF0ZSBhIHJhbmRvbSBtYWMgYWRkcmVzcyFcbiIpOw0KPiA+ICsJCQlldGhfcmFu ZG9tX2FkZHIobWFjX2FkZHIpOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJLyogSW5pdGlhbGl6 ZSB0aGUgbmV0IGRldmljZS4gKi8NCj4gPiArCQlyZXQgPSBzcGwyc3dfaW5pdF9uZXRkZXYocGRl diwgbWFjX2FkZHIsICZuZGV2KTsNCj4gPiArCQlpZiAocmV0KQ0KPiA+ICsJCQlnb3RvIG91dF91 bnJlZ2lzdGVyX2RldjsNCj4gPiArDQo+ID4gKwkJbmRldi0+aXJxID0gaXJxOw0KPiA+ICsJCWNv bW0tPm5kZXZbaV0gPSBuZGV2Ow0KPiA+ICsJCW1hYyA9IG5ldGRldl9wcml2KG5kZXYpOw0KPiA+ ICsJCW1hYy0+cGh5X25vZGUgPSBwaHlfbnA7DQo+ID4gKwkJbWFjLT5waHlfbW9kZSA9IHBoeV9t b2RlOw0KPiA+ICsJCW1hYy0+Y29tbSA9IGNvbW07DQo+ID4gKw0KPiA+ICsJCW1hYy0+bGFuX3Bv cnQgPSAweDEgPDwgaTsJLyogZm9yd2FyZCB0byBwb3J0IGkgKi8NCj4gPiArCQltYWMtPnRvX3Zs YW4gPSAweDEgPDwgaTsJLyogdmxhbiBncm91cDogaSAgICAgKi8NCj4gPiArCQltYWMtPnZsYW5f aWQgPSBpOwkJLyogdmxhbiBncm91cDogaSAgICAgKi8NCj4gPiArDQo+ID4gKwkJLyogU2V0IE1B QyBhZGRyZXNzICovDQo+ID4gKwkJcmV0ID0gc3BsMnN3X21hY19hZGRyX2FkZChtYWMpOw0KPiA+ ICsJCWlmIChyZXQpDQo+ID4gKwkJCWdvdG8gb3V0X3VucmVnaXN0ZXJfZGV2Ow0KPiA+ICsNCj4g PiArCQlzcGwyc3dfbWFjX3J4X21vZGVfc2V0KG1hYyk7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ LyogRmluZCBmaXJzdCB2YWxpZCBuZXQgZGV2aWNlLiAqLw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IE1BWF9ORVRERVZfTlVNOyBpKyspIHsNCj4gPiArCQlpZiAoY29tbS0+bmRldltpXSkNCj4gPiAr CQkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKwlpZiAoaSA+PSBNQVhfTkVUREVWX05VTSkgew0KPiA+ ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIk5vIHZhbGlkIGV0aGVybmV0IHBvcnQhXG4iKTsNCj4g PiArCQlyZXQgPSAtRU5PREVWOw0KPiA+ICsJCWdvdG8gb3V0X2ZyZWVfbWRpbzsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwkvKiBTYXZlIGZpcnN0IHZhbGlkIG5ldCBkZXZpY2UgKi8NCj4gPiArCW5k ZXYgPSBjb21tLT5uZGV2W2ldOw0KPiA+ICsNCj4gPiArCXJldCA9IHNwbDJzd19waHlfY29ubmVj dChjb21tKTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQluZXRkZXZfZXJyKG5kZXYsICJGYWls ZWQgdG8gY29ubmVjdCBwaHkhXG4iKTsNCj4gPiArCQlnb3RvIG91dF91bnJlZ2lzdGVyX2RldjsN Cj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBBZGQgYW5kIGVuYWJsZSBuYXBpLiAqLw0KPiA+ICsJ bmV0aWZfbmFwaV9hZGQobmRldiwgJmNvbW0tPnJ4X25hcGksIHNwbDJzd19yeF9wb2xsLCBOQVBJ X1BPTExfV0VJR0hUKTsNCj4gPiArCW5hcGlfZW5hYmxlKCZjb21tLT5yeF9uYXBpKTsNCj4gPiAr CW5ldGlmX25hcGlfYWRkKG5kZXYsICZjb21tLT50eF9uYXBpLCBzcGwyc3dfdHhfcG9sbCwgTkFQ SV9QT0xMX1dFSUdIVCk7DQo+ID4gKwluYXBpX2VuYWJsZSgmY29tbS0+dHhfbmFwaSk7DQo+ID4g KwlyZXR1cm4gMDsNCj4gPiArDQo+ID4gK291dF91bnJlZ2lzdGVyX2RldjoNCj4gPiArCWZvciAo aSA9IDA7IGkgPCBNQVhfTkVUREVWX05VTTsgaSsrKQ0KPiA+ICsJCWlmIChjb21tLT5uZGV2W2ld KQ0KPiA+ICsJCQl1bnJlZ2lzdGVyX25ldGRldihjb21tLT5uZGV2W2ldKTsNCj4gPiArDQo+ID4g K291dF9mcmVlX21kaW86DQo+ID4gKwlzcGwyc3dfbWRpb19yZW1vdmUoY29tbSk7DQo+ID4gKw0K PiA+ICtvdXRfY2xrX2Rpc2FibGU6DQo+ID4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoY29tbS0+ Y2xrKTsNCj4gPiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQg c3BsMnN3X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKwlzdHJ1 Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbTsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCWNvbW0g PSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArDQo+ID4gKwlzcGwyc3dfcGh5X3Jl bW92ZShjb21tKTsNCj4gPiArDQo+ID4gKwkvKiBVbnJlZ2lzdGVyIGFuZCBmcmVlIG5ldCBkZXZp Y2UuICovDQo+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTUFYX05FVERFVl9OVU07IGkrKykNCj4gPiAr CQlpZiAoY29tbS0+bmRldltpXSkNCj4gPiArCQkJdW5yZWdpc3Rlcl9uZXRkZXYoY29tbS0+bmRl dltpXSk7DQo+ID4gKw0KPiA+ICsJY29tbS0+ZW5hYmxlID0gMDsNCj4gPiArCXNwbDJzd19tYWNf aHdfc3RvcChjb21tKTsNCj4gPiArCXNwbDJzd19kZXNjc19mcmVlKGNvbW0pOw0KPiA+ICsNCj4g PiArCS8qIERpc2FibGUgYW5kIGRlbGV0ZSBuYXBpLiAqLw0KPiA+ICsJbmFwaV9kaXNhYmxlKCZj b21tLT5yeF9uYXBpKTsNCj4gPiArCW5ldGlmX25hcGlfZGVsKCZjb21tLT5yeF9uYXBpKTsNCj4g PiArCW5hcGlfZGlzYWJsZSgmY29tbS0+dHhfbmFwaSk7DQo+ID4gKwluZXRpZl9uYXBpX2RlbCgm Y29tbS0+dHhfbmFwaSk7DQo+ID4gKw0KPiA+ICsJc3BsMnN3X21kaW9fcmVtb3ZlKGNvbW0pOw0K PiA+ICsNCj4gPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShjb21tLT5jbGspOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCBzcGwyc3dfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArCXsuY29tcGF0aWJsZSA9ICJz dW5wbHVzLHNwNzAyMS1lbWFjIn0sDQo+ID4gKwl7IC8qIHNlbnRpbmVsICovIH0NCj4gPiArfTsN Cj4gPiArDQo+ID4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHNwbDJzd19vZl9tYXRjaCk7DQo+ ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBzcGwyc3dfZHJpdmVyID0g ew0KPiA+ICsJLnByb2JlID0gc3BsMnN3X3Byb2JlLA0KPiA+ICsJLnJlbW92ZSA9IHNwbDJzd19y ZW1vdmUsDQo+ID4gKwkuZHJpdmVyID0gew0KPiA+ICsJCS5uYW1lID0gInNwNzAyMV9lbWFjIiwN Cj4gPiArCQkub3duZXIgPSBUSElTX01PRFVMRSwNCj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBz cGwyc3dfb2ZfbWF0Y2gsDQo+ID4gKwl9LA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArbW9kdWxlX3Bs YXRmb3JtX2RyaXZlcihzcGwyc3dfZHJpdmVyKTsNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRIT1Io IldlbGxzIEx1IDx3ZWxsc2x1dHdAZ21haWwuY29tPiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJ T04oIlN1bnBsdXMgRHVhbCAxME0vMTAwTSBFdGhlcm5ldCBkcml2ZXIiKTsNCj4gPiArTU9EVUxF X0xJQ0VOU0UoIkdQTCIpOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9z dW5wbHVzL3NwbDJzd19pbnQuYw0KPiA+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3VucGx1cy9z cGwyc3dfaW50LmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAw MC4uZThlYjMwYzQ0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0 aGVybmV0L3N1bnBsdXMvc3BsMnN3X2ludC5jDQo+ID4gQEAgLTAsMCArMSwyNzMgQEANCj4gPiAr Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gPiArLyogQ29weXJpZ2h0IFN1 bnBsdXMgVGVjaG5vbG9neSBDby4sIEx0ZC4NCj4gPiArICogICAgICAgQWxsIHJpZ2h0cyByZXNl cnZlZC4NCj4gPiArICovDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2 aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9ldGhlcmRldmljZS5oPg0KPiA+ICsjaW5jbHVk ZSA8bGludXgvbmV0ZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvc3BpbmxvY2suaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L29m X21kaW8uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJzcGwyc3dfcmVnaXN0ZXIuaCINCj4gPiAr I2luY2x1ZGUgInNwbDJzd19kZWZpbmUuaCINCj4gPiArI2luY2x1ZGUgInNwbDJzd19pbnQuaCIN Cj4gPiArDQo+ID4gK2ludCBzcGwyc3dfcnhfcG9sbChzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGks IGludCBidWRnZXQpIHsNCj4gPiArCXN0cnVjdCBzcGwyc3dfY29tbW9uICpjb21tID0gY29udGFp bmVyX29mKG5hcGksIHN0cnVjdCBzcGwyc3dfY29tbW9uLCByeF9uYXBpKTsNCj4gPiArCXN0cnVj dCBzcGwyc3dfbWFjX2Rlc2MgKmRlc2MsICpoX2Rlc2M7DQo+ID4gKwlzdHJ1Y3QgbmV0X2Rldmlj ZV9zdGF0cyAqc3RhdHM7DQo+ID4gKwlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3X3NrYjsNCj4g PiArCXN0cnVjdCBzcGwyc3dfc2tiX2luZm8gKnNpbmZvOw0KPiA+ICsJaW50IGJ1ZGdldF9sZWZ0 ID0gYnVkZ2V0Ow0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiArCXUzMiByeF9wb3Ms IHBrZ19sZW47DQo+ID4gKwl1MzIgbnVtLCByeF9jb3VudDsNCj4gPiArCXMzMiBxdWV1ZTsNCj4g PiArCXUzMiBtYXNrOw0KPiA+ICsJaW50IHBvcnQ7DQo+ID4gKwl1MzIgY21kOw0KPiA+ICsNCj4g PiArCS8qIFByb2Nlc3MgaGlnaC1wcmlvcml0eSBxdWV1ZSBhbmQgdGhlbiBsb3ctcHJpb3JpdHkg cXVldWUuICovDQo+ID4gKwlmb3IgKHF1ZXVlID0gMDsgcXVldWUgPCBSWF9ERVNDX1FVRVVFX05V TTsgcXVldWUrKykgew0KPiA+ICsJCXJ4X3BvcyA9IGNvbW0tPnJ4X3Bvc1txdWV1ZV07DQo+ID4g KwkJcnhfY291bnQgPSBjb21tLT5yeF9kZXNjX251bVtxdWV1ZV07DQo+ID4gKw0KPiA+ICsJCWZv ciAobnVtID0gMDsgbnVtIDwgcnhfY291bnQgJiYgYnVkZ2V0X2xlZnQ7IG51bSsrKSB7DQo+ID4g KwkJCXNpbmZvID0gY29tbS0+cnhfc2tiX2luZm9bcXVldWVdICsgcnhfcG9zOw0KPiA+ICsJCQlk ZXNjID0gY29tbS0+cnhfZGVzY1txdWV1ZV0gKyByeF9wb3M7DQo+ID4gKwkJCWNtZCA9IGRlc2Mt PmNtZDE7DQo+ID4gKw0KPiA+ICsJCQlpZiAoY21kICYgUlhEX09XTikNCj4gPiArCQkJCWJyZWFr Ow0KPiA+ICsNCj4gPiArCQkJcG9ydCA9IEZJRUxEX0dFVChSWERfUEtUX1NQLCBjbWQpOw0KPiA+ ICsJCQlpZiAocG9ydCA8IE1BWF9ORVRERVZfTlVNICYmIGNvbW0tPm5kZXZbcG9ydF0pDQo+ID4g KwkJCQlzdGF0cyA9ICZjb21tLT5uZGV2W3BvcnRdLT5zdGF0czsNCj4gPiArCQkJZWxzZQ0KPiA+ ICsJCQkJZ290byBzcGwyc3dfcnhfcG9sbF9yZWNfZXJyOw0KPiA+ICsNCj4gPiArCQkJcGtnX2xl biA9IEZJRUxEX0dFVChSWERfUEtUX0xFTiwgY21kKTsNCj4gPiArCQkJaWYgKHVubGlrZWx5KChj bWQgJiBSWERfRVJSX0NPREUpIHx8IHBrZ19sZW4gPCBFVEhfWkxFTiArIDQpKSB7DQo+ID4gKwkJ CQlzdGF0cy0+cnhfbGVuZ3RoX2Vycm9ycysrOw0KPiA+ICsJCQkJc3RhdHMtPnJ4X2Ryb3BwZWQr KzsNCj4gPiArCQkJCWdvdG8gc3BsMnN3X3J4X3BvbGxfcmVjX2VycjsNCj4gPiArCQkJfQ0KPiA+ ICsNCj4gPiArCQkJZG1hX3VubWFwX3NpbmdsZSgmY29tbS0+cGRldi0+ZGV2LCBzaW5mby0+bWFw cGluZywNCj4gPiArCQkJCQkgY29tbS0+cnhfZGVzY19idWZmX3NpemUsIERNQV9GUk9NX0RFVklD RSk7DQo+ID4gKw0KPiA+ICsJCQlza2IgPSBzaW5mby0+c2tiOw0KPiA+ICsJCQlza2JfcHV0KHNr YiwgcGtnX2xlbiAtIDQpOyAvKiBNaW51cyBGQ1MgKi8NCj4gPiArCQkJc2tiLT5pcF9zdW1tZWQg PSBDSEVDS1NVTV9OT05FOw0KPiA+ICsJCQlza2ItPnByb3RvY29sID0gZXRoX3R5cGVfdHJhbnMo c2tiLCBjb21tLT5uZGV2W3BvcnRdKTsNCj4gPiArCQkJbmV0aWZfcmVjZWl2ZV9za2Ioc2tiKTsN Cj4gPiArDQo+ID4gKwkJCXN0YXRzLT5yeF9wYWNrZXRzKys7DQo+ID4gKwkJCXN0YXRzLT5yeF9i eXRlcyArPSBza2ItPmxlbjsNCj4gPiArDQo+ID4gKwkJCS8qIEFsbG9jYXRlIGEgbmV3IHNrYiBm b3IgcmVjZWl2aW5nLiAqLw0KPiA+ICsJCQluZXdfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihOVUxM LCBjb21tLT5yeF9kZXNjX2J1ZmZfc2l6ZSk7DQo+ID4gKwkJCWlmICh1bmxpa2VseSghbmV3X3Nr YikpIHsNCj4gPiArCQkJCWRlc2MtPmNtZDIgPSAocnhfcG9zID09IGNvbW0tPnJ4X2Rlc2NfbnVt W3F1ZXVlXSAtIDEpID8NCj4gPiArCQkJCQkgICAgIFJYRF9FT1IgOiAwOw0KPiA+ICsJCQkJc2lu Zm8tPnNrYiA9IE5VTEw7DQo+ID4gKwkJCQlzaW5mby0+bWFwcGluZyA9IDA7DQo+ID4gKwkJCQlk ZXNjLT5hZGRyMSA9IDA7DQo+ID4gKwkJCQlnb3RvIHNwbDJzd19yeF9wb2xsX2FsbG9jX2VycjsN Cj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJc2luZm8tPm1hcHBpbmcgPSBkbWFfbWFwX3Npbmds ZSgmY29tbS0+cGRldi0+ZGV2LCBuZXdfc2tiLT5kYXRhLA0KPiA+ICsJCQkJCQkJY29tbS0+cnhf ZGVzY19idWZmX3NpemUsDQo+ID4gKwkJCQkJCQlETUFfRlJPTV9ERVZJQ0UpOw0KPiA+ICsJCQlp ZiAoZG1hX21hcHBpbmdfZXJyb3IoJmNvbW0tPnBkZXYtPmRldiwgc2luZm8tPm1hcHBpbmcpKSB7 DQo+ID4gKwkJCQlkZXZfa2ZyZWVfc2tiX2lycShuZXdfc2tiKTsNCj4gPiArCQkJCWRlc2MtPmNt ZDIgPSAocnhfcG9zID09IGNvbW0tPnJ4X2Rlc2NfbnVtW3F1ZXVlXSAtIDEpID8NCj4gPiArCQkJ CQkgICAgIFJYRF9FT1IgOiAwOw0KPiA+ICsJCQkJc2luZm8tPnNrYiA9IE5VTEw7DQo+ID4gKwkJ CQlzaW5mby0+bWFwcGluZyA9IDA7DQo+ID4gKwkJCQlkZXNjLT5hZGRyMSA9IDA7DQo+ID4gKwkJ CQlnb3RvIHNwbDJzd19yeF9wb2xsX2FsbG9jX2VycjsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiAr CQkJc2luZm8tPnNrYiA9IG5ld19za2I7DQo+ID4gKwkJCWRlc2MtPmFkZHIxID0gc2luZm8tPm1h cHBpbmc7DQo+ID4gKw0KPiA+ICtzcGwyc3dfcnhfcG9sbF9yZWNfZXJyOg0KPiA+ICsJCQlkZXNj LT5jbWQyID0gKHJ4X3BvcyA9PSBjb21tLT5yeF9kZXNjX251bVtxdWV1ZV0gLSAxKSA/DQo+ID4g KwkJCQkgICAgIFJYRF9FT1IgfCBjb21tLT5yeF9kZXNjX2J1ZmZfc2l6ZSA6DQo+ID4gKwkJCQkg ICAgIGNvbW0tPnJ4X2Rlc2NfYnVmZl9zaXplOw0KPiA+ICsNCj4gPiArCQkJd21iKCk7CS8qIFNl dCBSWERfT1dOIGFmdGVyIG90aGVyIGZpZWxkcyBhcmUgZWZmZWN0aXZlLiAqLw0KPiA+ICsJCQlk ZXNjLT5jbWQxID0gUlhEX09XTjsNCj4gPiArDQo+ID4gK3NwbDJzd19yeF9wb2xsX2FsbG9jX2Vy cjoNCj4gPiArCQkJLyogTW92ZSByeF9wb3MgdG8gbmV4dCBwb3NpdGlvbiAqLw0KPiA+ICsJCQly eF9wb3MgPSAoKHJ4X3BvcyArIDEpID09IGNvbW0tPnJ4X2Rlc2NfbnVtW3F1ZXVlXSkgPyAwIDog cnhfcG9zICsNCj4gPiArMTsNCj4gPiArDQo+ID4gKwkJCWJ1ZGdldF9sZWZ0LS07DQo+ID4gKw0K PiA+ICsJCQkvKiBJZiB0aGVyZSBhcmUgcGFja2V0cyBpbiBoaWdoLXByaW9yaXR5IHF1ZXVlLA0K PiA+ICsJCQkgKiBzdG9wIHByb2Nlc3NpbmcgbG93LXByaW9yaXR5IHF1ZXVlLg0KPiA+ICsJCQkg Ki8NCj4gPiArCQkJaWYgKHF1ZXVlID09IDEgJiYgIShoX2Rlc2MtPmNtZDEgJiBSWERfT1dOKSkN Cj4gPiArCQkJCWJyZWFrOw0KPiA+ICsJCX0NCj4gPiArDQo+ID4gKwkJY29tbS0+cnhfcG9zW3F1 ZXVlXSA9IHJ4X3BvczsNCj4gPiArDQo+ID4gKwkJLyogU2F2ZSBwb2ludGVyIHRvIGxhc3Qgcngg ZGVzY3JpcHRvciBvZiBoaWdoLXByaW9yaXR5IHF1ZXVlLiAqLw0KPiA+ICsJCWlmIChxdWV1ZSA9 PSAwKQ0KPiA+ICsJCQloX2Rlc2MgPSBjb21tLT5yeF9kZXNjW3F1ZXVlXSArIHJ4X3BvczsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwl3bWIoKTsJLyogbWFrZSBzdXJlIHNldHRpbmdzIGFyZSBlZmZl Y3RpdmUuICovDQo+IA0KPiBJdCdzIHVuY2xlYXIgdG8gbWUgd2h5IGEgbWVtb3J5IGJhcnJpZXIg aXMgbmVlZGVkIGhlcmUuIFdoaWNoIHdyaXRlcyBzaG91bGQgYmUgdmlzaWJpbGUNCj4gYmVmb3Jl IHRoZSBmb2xsb3dpbmc/IEFsc28gdGhlIHNwaW4gbG9jay91bmxvY2sgcGFpciBiZWxvdyBpbXBs aWVzIGEgZnVsbCBtZW1vcnkgYmFycmllci4NCj4gDQo+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgm Y29tbS0+aW50X21hc2tfbG9jaywgZmxhZ3MpOw0KPiA+ICsJbWFzayA9IHJlYWRsKGNvbW0tPmwy c3dfcmVnX2Jhc2UgKyBMMlNXX1NXX0lOVF9NQVNLXzApOw0KPiA+ICsJbWFzayAmPSB+TUFDX0lO VF9SWDsNCj4gPiArCXdyaXRlbChtYXNrLCBjb21tLT5sMnN3X3JlZ19iYXNlICsgTDJTV19TV19J TlRfTUFTS18wKTsNCj4gPiArCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmNvbW0tPmludF9tYXNr X2xvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKwluYXBpX2NvbXBsZXRlKG5hcGkpOw0KPiA+ICsJ cmV0dXJuIGJ1ZGdldCAtIGJ1ZGdldF9sZWZ0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtpbnQgc3Bs MnN3X3R4X3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpLCBpbnQgYnVkZ2V0KSB7DQo+ID4g KwlzdHJ1Y3Qgc3BsMnN3X2NvbW1vbiAqY29tbSA9IGNvbnRhaW5lcl9vZihuYXBpLCBzdHJ1Y3Qg c3BsMnN3X2NvbW1vbiwgdHhfbmFwaSk7DQo+ID4gKwlzdHJ1Y3Qgc3BsMnN3X3NrYl9pbmZvICpz a2JpbmZvOw0KPiA+ICsJc3RydWN0IG5ldF9kZXZpY2Vfc3RhdHMgKnN0YXRzOw0KPiA+ICsJaW50 IGJ1ZGdldF9sZWZ0ID0gYnVkZ2V0Ow0KPiA+ICsJdW5zaWduZWQgbG9uZyBmbGFnczsNCj4gPiAr CXUzMiB0eF9kb25lX3BvczsNCj4gPiArCXUzMiBtYXNrOw0KPiA+ICsJdTMyIGNtZDsNCj4gPiAr CWludCBpOw0KPiA+ICsNCj4gPiArCXNwaW5fbG9jaygmY29tbS0+dHhfbG9jayk7DQo+ID4gKw0K PiA+ICsJdHhfZG9uZV9wb3MgPSBjb21tLT50eF9kb25lX3BvczsNCj4gPiArCXdoaWxlICgoKHR4 X2RvbmVfcG9zICE9IGNvbW0tPnR4X3BvcykgfHwgKGNvbW0tPnR4X2Rlc2NfZnVsbCA9PSAxKSkg JiYgYnVkZ2V0X2xlZnQpDQo+IHsNCj4gPiArCQljbWQgPSBjb21tLT50eF9kZXNjW3R4X2RvbmVf cG9zXS5jbWQxOw0KPiA+ICsJCWlmIChjbWQgJiBUWERfT1dOKQ0KPiA+ICsJCQlicmVhazsNCj4g PiArDQo+ID4gKwkJc2tiaW5mbyA9ICZjb21tLT50eF90ZW1wX3NrYl9pbmZvW3R4X2RvbmVfcG9z XTsNCj4gPiArCQlpZiAodW5saWtlbHkoIXNrYmluZm8tPnNrYikpDQo+ID4gKwkJCWdvdG8gc3Bs MnN3X3R4X3BvbGxfbmV4dDsNCj4gPiArDQo+ID4gKwkJaSA9IGZmcyhGSUVMRF9HRVQoVFhEX1ZM QU4sIGNtZCkpIC0gMTsNCj4gPiArCQlpZiAoaSA8IE1BWF9ORVRERVZfTlVNICYmIGNvbW0tPm5k ZXZbaV0pDQo+ID4gKwkJCXN0YXRzID0gJmNvbW0tPm5kZXZbaV0tPnN0YXRzOw0KPiA+ICsJCWVs c2UNCj4gPiArCQkJZ290byBzcGwyc3dfdHhfcG9sbF91bm1hcDsNCj4gPiArDQo+ID4gKwkJaWYg KHVubGlrZWx5KGNtZCAmIChUWERfRVJSX0NPREUpKSkgew0KPiA+ICsJCQlzdGF0cy0+dHhfZXJy b3JzKys7DQo+ID4gKwkJfSBlbHNlIHsNCj4gPiArCQkJc3RhdHMtPnR4X3BhY2tldHMrKzsNCj4g PiArCQkJc3RhdHMtPnR4X2J5dGVzICs9IHNrYmluZm8tPmxlbjsNCj4gPiArCQl9DQo+ID4gKw0K PiA+ICtzcGwyc3dfdHhfcG9sbF91bm1hcDoNCj4gPiArCQlkbWFfdW5tYXBfc2luZ2xlKCZjb21t LT5wZGV2LT5kZXYsIHNrYmluZm8tPm1hcHBpbmcsIHNrYmluZm8tPmxlbiwNCj4gPiArCQkJCSBE TUFfVE9fREVWSUNFKTsNCj4gPiArCQlza2JpbmZvLT5tYXBwaW5nID0gMDsNCj4gPiArCQlkZXZf a2ZyZWVfc2tiX2lycShza2JpbmZvLT5za2IpOw0KPiA+ICsJCXNrYmluZm8tPnNrYiA9IE5VTEw7 DQo+ID4gKw0KPiA+ICtzcGwyc3dfdHhfcG9sbF9uZXh0Og0KPiA+ICsJCS8qIE1vdmUgdHhfZG9u ZV9wb3MgdG8gbmV4dCBwb3NpdGlvbiAqLw0KPiA+ICsJCXR4X2RvbmVfcG9zID0gKCh0eF9kb25l X3BvcyArIDEpID09IFRYX0RFU0NfTlVNKSA/IDAgOiB0eF9kb25lX3Bvcw0KPiA+ICsrIDE7DQo+ ID4gKw0KPiA+ICsJCWlmIChjb21tLT50eF9kZXNjX2Z1bGwgPT0gMSkNCj4gPiArCQkJY29tbS0+ dHhfZGVzY19mdWxsID0gMDsNCj4gPiArDQo+ID4gKwkJYnVkZ2V0X2xlZnQtLTsNCj4gPiArCX0N Cj4gPiArDQo+ID4gKwljb21tLT50eF9kb25lX3BvcyA9IHR4X2RvbmVfcG9zOw0KPiA+ICsJaWYg KCFjb21tLT50eF9kZXNjX2Z1bGwpDQo+ID4gKwkJZm9yIChpID0gMDsgaSA8IE1BWF9ORVRERVZf TlVNOyBpKyspDQo+ID4gKwkJCWlmIChjb21tLT5uZGV2W2ldKQ0KPiA+ICsJCQkJaWYgKG5ldGlm X3F1ZXVlX3N0b3BwZWQoY29tbS0+bmRldltpXSkpDQo+ID4gKwkJCQkJbmV0aWZfd2FrZV9xdWV1 ZShjb21tLT5uZGV2W2ldKTsNCj4gPiArDQo+ID4gKwlzcGluX3VubG9jaygmY29tbS0+dHhfbG9j ayk7DQo+ID4gKw0KPiA+ICsJd21iKCk7CQkJLyogbWFrZSBzdXJlIHNldHRpbmdzIGFyZSBlZmZl Y3RpdmUuICovDQo+IA0KPiBTYW1lIGhlcmUuDQo+IA0KPiBUaGFua3MsDQo+IA0KPiBQYW9sbw0K DQpJJ2xsIHJlbW92ZSB0aGUgdW5uZWNlc3NhcnkgbWVtb3J5IGJhcnJpZXJzLg0KDQpUaGFuayB5 b3UgZm9yIHlvdXIgcmV2aWV3Lg0KDQoNCkJlc3QgcmVnYXJkcywNCldlbGxzDQo=