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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4D87C5B578 for ; Thu, 4 Jul 2019 03:01:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 648702189E for ; Thu, 4 Jul 2019 03:01:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="l8Mz0oia" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727205AbfGDDBE (ORCPT ); Wed, 3 Jul 2019 23:01:04 -0400 Received: from mail-eopbgr80078.outbound.protection.outlook.com ([40.107.8.78]:41870 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726736AbfGDDBE (ORCPT ); Wed, 3 Jul 2019 23:01:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iszrOT35j64WZvex1POuuUI2gOHwuUkLYuNMOG4hO9U=; b=l8Mz0oiaLkc2sK1I5AZd8L9YJtXy1mRn6UOiFzUqtShkNQNSr8HNKcNWngWDwYsZlsgieK52HVNbzo2gobIwtrjTbGn+Lddiwz2Ni61ay6BBu8/PNmpj9AUFwT/ZBeC3u3IkdRkOUERwZpOac2hIUHbWQAw5fWVIJKW9K3kootw= Received: from DB8PR04MB6747.eurprd04.prod.outlook.com (20.179.250.159) by DB8PR04MB5643.eurprd04.prod.outlook.com (20.179.10.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2032.20; Thu, 4 Jul 2019 03:00:37 +0000 Received: from DB8PR04MB6747.eurprd04.prod.outlook.com ([fe80::93a:4344:1120:4ca0]) by DB8PR04MB6747.eurprd04.prod.outlook.com ([fe80::93a:4344:1120:4ca0%6]) with mapi id 15.20.2032.019; Thu, 4 Jul 2019 03:00:37 +0000 From: "Z.q. Hou" To: Lorenzo Pieralisi CC: "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "bhelgaas@google.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "l.subrahmanya@mobiveil.co.in" , "shawnguo@kernel.org" , Leo Li , "catalin.marinas@arm.com" , "will.deacon@arm.com" , Mingkai Hu , "M.h. Lian" , Xiaowei Bao Subject: RE: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Topic: [PATCHv5 02/20] PCI: mobiveil: Format the code without functionality change Thread-Index: AQHU8Qqsskjg5i2JJUOtSWDylHX9tqa5gziAgAC/goA= Date: Thu, 4 Jul 2019 03:00:37 +0000 Message-ID: References: <20190412083635.33626-1-Zhiqiang.Hou@nxp.com> <20190412083635.33626-3-Zhiqiang.Hou@nxp.com> <20190703151905.GD26804@e121166-lin.cambridge.arm.com> In-Reply-To: <20190703151905.GD26804@e121166-lin.cambridge.arm.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=zhiqiang.hou@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 36e95b01-1709-457e-e498-08d7002bca57 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB8PR04MB5643; x-ms-traffictypediagnostic: DB8PR04MB5643: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-forefront-prvs: 0088C92887 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(39860400002)(136003)(366004)(376002)(346002)(199004)(189003)(13464003)(53946003)(86362001)(316002)(478600001)(2906002)(55016002)(9686003)(6246003)(5660300002)(33656002)(229853002)(6436002)(52536014)(54906003)(30864003)(53936002)(66066001)(3846002)(6116002)(53546011)(305945005)(476003)(25786009)(8936002)(71190400001)(186003)(14444005)(11346002)(6506007)(71200400001)(8676002)(256004)(7416002)(99286004)(102836004)(66946007)(81166006)(81156014)(73956011)(66446008)(7736002)(7696005)(76176011)(486006)(4326008)(26005)(446003)(64756008)(14454004)(6916009)(66556008)(66476007)(68736007)(74316002)(76116006)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DB8PR04MB5643;H:DB8PR04MB6747.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: cnppBavjibYW+eaqvdlPmd/Q/D+SrZ+pTWA8uWUSRNvdjhOG8LO4d7j6G8XRS5QUpXlyR/6WEOMbgxIgp/gIgxbthl2lLbTq/khja2eDAgvdgYuI+gPXp+Qyl9aPmYkTZMaxNivLSFlsX2G/416eknTe+cWYqglGhv3fUYuVQBJZZtNwfsJR2bMswRt4dLXW/gWt+TTPXtaIvMWAPQKtX6Y7R5WsYKdrOyNlEQk7P6rS54pY4WQcVTMPHsG65adOxmbNK/2rm7Z2+yWCmMfuPDYeIk4nAzZvlYdf6/+WyidUR22L3dDLrG+ZaBR5JCtknsmOS0/EPHershfdp0G4TRaO0c01t8MNXWZXebJ9CIjJYULRVNbyEiJj8vatuZlokvZo0l1vSTZ3aMVV/P0xR1GLJ++UAs+M14UXxS48d9s= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36e95b01-1709-457e-e498-08d7002bca57 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2019 03:00:37.2906 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: zhiqiang.hou@nxp.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR04MB5643 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org SGkgTG9yZW56bywNCg0KVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzIQ0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBpZXJh bGlzaUBhcm0uY29tPg0KPiBTZW50OiAyMDE5xOo31MIzyNUgMjM6MTkNCj4gVG86IFoucS4gSG91 IDx6aGlxaWFuZy5ob3VAbnhwLmNvbT4NCj4gQ2M6IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7 IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZzsNCj4gZGV2aWNldHJlZUB2Z2Vy Lmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7DQo+IGJoZWxnYWFzQGdv b2dsZS5jb207IHJvYmgrZHRAa2VybmVsLm9yZzsgbWFyay5ydXRsYW5kQGFybS5jb207DQo+IGwu c3VicmFobWFueWFAbW9iaXZlaWwuY28uaW47IHNoYXduZ3VvQGtlcm5lbC5vcmc7IExlbyBMaQ0K PiA8bGVveWFuZy5saUBueHAuY29tPjsgY2F0YWxpbi5tYXJpbmFzQGFybS5jb207IHdpbGwuZGVh Y29uQGFybS5jb207DQo+IE1pbmdrYWkgSHUgPG1pbmdrYWkuaHVAbnhwLmNvbT47IE0uaC4gTGlh biA8bWluZ2h1YW4ubGlhbkBueHAuY29tPjsNCj4gWGlhb3dlaSBCYW8gPHhpYW93ZWkuYmFvQG54 cC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0h2NSAwMi8yMF0gUENJOiBtb2JpdmVpbDogRm9y bWF0IHRoZSBjb2RlIHdpdGhvdXQNCj4gZnVuY3Rpb25hbGl0eSBjaGFuZ2UNCj4gDQo+IE9uIEZy aSwgQXByIDEyLCAyMDE5IGF0IDA4OjM1OjI0QU0gKzAwMDAsIFoucS4gSG91IHdyb3RlOg0KPiA+ IEZyb206IEhvdSBaaGlxaWFuZyA8WmhpcWlhbmcuSG91QG54cC5jb20+DQo+ID4NCj4gPiBKdXN0 IGZvcm1hdCB0aGUgY29kZSB3aXRob3V0IGZ1bmN0aW9uYWxpdHkgY2hhbmdlLg0KPiA+DQo+ID4g U2lnbmVkLW9mZi1ieTogSG91IFpoaXFpYW5nIDxaaGlxaWFuZy5Ib3VAbnhwLmNvbT4NCj4gPiBS ZXZpZXdlZC1ieTogTWluZ2h1YW4gTGlhbiA8TWluZ2h1YW4uTGlhbkBueHAuY29tPg0KPiA+IC0t LQ0KPiA+IFY1Og0KPiA+ICAtIFJldG91Y2hlZCB0aGUgc3ViamVjdC4NCj4gPg0KPiA+ICBkcml2 ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9iaXZlaWwuYyB8IDI2MQ0KPiA+ICsrKysrKysrKysr KystLS0tLS0tLS0tLS0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDEzNyBpbnNlcnRpb25zKCspLCAx MjQgZGVsZXRpb25zKC0pDQo+IA0KPiBPaywgZHJvcHBpbmcgdGhpcyBwYXRjaCBtZWFucyB0aGF0 IGV2ZXJ5dGhpbmcgZWxzZSBzaG91bGQgYmUgcmViYXNlZC4gU28NCj4gd2hhdCBJIGFtIGdvaW5n IHRvIGRvOg0KPiANCj4gLSBJIHdpbGwgcHVibGlzaCBhIGJyYW5jaCAocGNpL21vYml2ZWlsKSB3 aGVyZSBJIGFkZGVkIHRoZSBwYXRjaGVzDQo+ICAgdGhhdCBhcmUgcmVhZHkgdG8gYmUgbWVyZ2Vk IHdpdGggY29tbWl0IGxvZ3MgcmV3cml0dGVuOyB0aGlzIHBhdGNoDQo+ICAgaXMgcGFydCBvZiBp dCBidXQgaW4gdGhlIGZpbmFsIHZlcnNpb24gaXQgbXVzdCBiZSBzcGxpdCBhcyByZXF1ZXN0ZWQu DQo+IC0gWW91IGhhdmUgdG8gc3BsaXQgdGhpcyBwYXRjaCBhbmQgdGhlIG90aGVyIHBhdGNoZXMg SSByZXF1ZXN0ZWQNCj4gICB5b3UgdG8gc3BsaXQgYnV0IGRvIE5PVCBtb2RpZnkgdGhlIHBhdGNo ZXMgd2l0aCBteSBjb21taXQgbG9ncw0KPiAgIHJld3JpdHRlbiBpbiBwY2kvbW9iaXZlaWwsIGl0 IHRvb2sgbWUgdGltZSB0byByZXdyaXRlIHRoZW0uDQoNClllcywgd2lsbCBzcGxpdCB0aGVtIGFu ZCB3b24ndCBtb2RpZnkgdGhlIGNvbW1pdCBsb2dzLCBhbmQgdGhhbmtzIGEgbG90DQpmb3IgeW91 ciBoZWxwIQ0KDQo+IA0KPiBJZiB5b3UgY2FuIG1hbmFnZSB0byByZWJhc2UgcGF0Y2hlcyBvbiBw Y2kvbW9iaXZlaWwgb24gdG9wIG9mIHY1LjItcmMxLA0KPiBzZW5kIHRoZW0gc2VwYXJhdGVseSBz byB0aGF0IEkgY2FuIG1lcmdlIHRoZW0gYXMgYSBiYXNlIGZvciB0aGUgc3Vic2VxdWVudA0KPiBw YXRjaGVzIHRvIGJlIGFwcGxpZWQuDQoNCllvdSBtZWFudCBzZW5kIHRoZSBwYXRjaGVzIG9uZSBi eSBvbmUsIHdoaWNoIHlvdSByZXF1ZXN0ZWQgdG8gc3BsaXQsIGFuZA0Kb3RoZXIgcGF0Y2hlcyB3 aXRob3V0IGFueSBjaGFuZ2VzIGNhbiBiZSBzZW5kIHRvZ2V0aGVyLCByaWdodD8NCg0KPiANCj4g SWYgeW91IGhhdmUgYW55IHF1ZXN0aW9ucyBwbGVhc2UgYXNrLCBkbyBub3QgcG9zdCBwYXRjaGVz IGlmIHRoZXJlIGlzDQo+IHNvbWV0aGluZyB0aGF0IGlzIG5vdCBjbGVhci4NCg0KWWVzLCBJJ2xs LCB0aGFua3MgZm9yIHlvdXIgZ3VpZGUgYWdhaW4hDQoNCkIuUiwNClpoaXFpYW5nDQoNCj4gDQo+ IExvcmVuem8NCj4gDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNp ZS1tb2JpdmVpbC5jDQo+ID4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtbW9iaXZlaWwu Yw0KPiA+IGluZGV4IGQ1NWM3ZTc4MGM2ZS4uYjg3NDcxZjA4YTQwIDEwMDY0NA0KPiA+IC0tLSBh L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1tb2JpdmVpbC5jDQo+ID4gKysrIGIvZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2llLW1vYml2ZWlsLmMNCj4gPiBAQCAtMzEsMzggKzMxLDQwIEBA DQo+ID4gICAqIHRyYW5zbGF0aW9uIHRhYmxlcyBhcmUgZ3JvdXBlZCBpbnRvIHdpbmRvd3MsIGVh Y2ggd2luZG93IHJlZ2lzdGVycw0KPiBhcmUNCj4gPiAgICogZ3JvdXBlZCBpbnRvIGJsb2NrcyBv ZiA0IG9yIDE2IHJlZ2lzdGVycyBlYWNoDQo+ID4gICAqLw0KPiA+IC0jZGVmaW5lIFBBQl9SRUdf QkxPQ0tfU0laRQkxNg0KPiA+IC0jZGVmaW5lIFBBQl9FWFRfUkVHX0JMT0NLX1NJWkUJNA0KPiA+ ICsjZGVmaW5lIFBBQl9SRUdfQkxPQ0tfU0laRQkJMTYNCj4gPiArI2RlZmluZSBQQUJfRVhUX1JF R19CTE9DS19TSVpFCQk0DQo+ID4NCj4gPiAtI2RlZmluZSBQQUJfUkVHX0FERFIob2Zmc2V0LCB3 aW4pIChvZmZzZXQgKyAod2luICoNCj4gPiBQQUJfUkVHX0JMT0NLX1NJWkUpKSAtI2RlZmluZSBQ QUJfRVhUX1JFR19BRERSKG9mZnNldCwgd2luKSAob2Zmc2V0DQo+ICsNCj4gPiAod2luICogUEFC X0VYVF9SRUdfQkxPQ0tfU0laRSkpDQo+ID4gKyNkZWZpbmUgUEFCX1JFR19BRERSKG9mZnNldCwg d2luKQlcDQo+ID4gKwkob2Zmc2V0ICsgKHdpbiAqIFBBQl9SRUdfQkxPQ0tfU0laRSkpDQo+ID4g KyNkZWZpbmUgUEFCX0VYVF9SRUdfQUREUihvZmZzZXQsIHdpbikJXA0KPiA+ICsJKG9mZnNldCAr ICh3aW4gKiBQQUJfRVhUX1JFR19CTE9DS19TSVpFKSkNCj4gPg0KPiA+IC0jZGVmaW5lIExUU1NN X1NUQVRVUwkJMHgwNDA0DQo+ID4gLSNkZWZpbmUgIExUU1NNX1NUQVRVU19MMF9NQVNLCTB4M2YN Cj4gPiAtI2RlZmluZSAgTFRTU01fU1RBVFVTX0wwCTB4MmQNCj4gPiArI2RlZmluZSBMVFNTTV9T VEFUVVMJCQkweDA0MDQNCj4gPiArI2RlZmluZSAgTFRTU01fU1RBVFVTX0wwX01BU0sJCTB4M2YN Cj4gPiArI2RlZmluZSAgTFRTU01fU1RBVFVTX0wwCQkweDJkDQo+ID4NCj4gPiAtI2RlZmluZSBQ QUJfQ1RSTAkJMHgwODA4DQo+ID4gLSNkZWZpbmUgIEFNQkFfUElPX0VOQUJMRV9TSElGVAkwDQo+ ID4gLSNkZWZpbmUgIFBFWF9QSU9fRU5BQkxFX1NISUZUCTENCj4gPiAtI2RlZmluZSAgUEFHRV9T RUxfU0hJRlQJMTMNCj4gPiAtI2RlZmluZSAgUEFHRV9TRUxfTUFTSwkJMHgzZg0KPiA+IC0jZGVm aW5lICBQQUdFX0xPX01BU0sJCTB4M2ZmDQo+ID4gLSNkZWZpbmUgIFBBR0VfU0VMX09GRlNFVF9T SElGVAkxMA0KPiA+ICsjZGVmaW5lIFBBQl9DVFJMCQkJMHgwODA4DQo+ID4gKyNkZWZpbmUgIEFN QkFfUElPX0VOQUJMRV9TSElGVAkJMA0KPiA+ICsjZGVmaW5lICBQRVhfUElPX0VOQUJMRV9TSElG VAkJMQ0KPiA+ICsjZGVmaW5lICBQQUdFX1NFTF9TSElGVAkJCTEzDQo+ID4gKyNkZWZpbmUgIFBB R0VfU0VMX01BU0sJCQkweDNmDQo+ID4gKyNkZWZpbmUgIFBBR0VfTE9fTUFTSwkJCTB4M2ZmDQo+ ID4gKyNkZWZpbmUgIFBBR0VfU0VMX09GRlNFVF9TSElGVAkJMTANCj4gPg0KPiA+IC0jZGVmaW5l IFBBQl9BWElfUElPX0NUUkwJMHgwODQwDQo+ID4gLSNkZWZpbmUgIEFQSU9fRU5fTUFTSwkJMHhm DQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9QSU9fQ1RSTAkJMHgwODQwDQo+ID4gKyNkZWZpbmUgIEFQ SU9fRU5fTUFTSwkJCTB4Zg0KPiA+DQo+ID4gLSNkZWZpbmUgUEFCX1BFWF9QSU9fQ1RSTAkweDA4 YzANCj4gPiAtI2RlZmluZSAgUElPX0VOQUJMRV9TSElGVAkwDQo+ID4gKyNkZWZpbmUgUEFCX1BF WF9QSU9fQ1RSTAkJMHgwOGMwDQo+ID4gKyNkZWZpbmUgIFBJT19FTkFCTEVfU0hJRlQJCTANCj4g Pg0KPiA+ICAjZGVmaW5lIFBBQl9JTlRQX0FNQkFfTUlTQ19FTkIJCTB4MGIwYw0KPiA+IC0jZGVm aW5lIFBBQl9JTlRQX0FNQkFfTUlTQ19TVEFUCTB4MGIxYw0KPiA+ICsjZGVmaW5lIFBBQl9JTlRQ X0FNQkFfTUlTQ19TVEFUCQkweDBiMWMNCj4gPiAgI2RlZmluZSAgUEFCX0lOVFBfSU5UWF9NQVNL CQkweDAxZTANCj4gPiAgI2RlZmluZSAgUEFCX0lOVFBfTVNJX01BU0sJCTB4OA0KPiA+DQo+ID4g LSNkZWZpbmUgUEFCX0FYSV9BTUFQX0NUUkwod2luKQlQQUJfUkVHX0FERFIoMHgwYmEwLCB3aW4p DQo+ID4gLSNkZWZpbmUgIFdJTl9FTkFCTEVfU0hJRlQJMA0KPiA+IC0jZGVmaW5lICBXSU5fVFlQ RV9TSElGVAkxDQo+ID4gKyNkZWZpbmUgUEFCX0FYSV9BTUFQX0NUUkwod2luKQkJUEFCX1JFR19B RERSKDB4MGJhMCwgd2luKQ0KPiA+ICsjZGVmaW5lICBXSU5fRU5BQkxFX1NISUZUCQkwDQo+ID4g KyNkZWZpbmUgIFdJTl9UWVBFX1NISUZUCQkJMQ0KPiA+DQo+ID4gICNkZWZpbmUgUEFCX0VYVF9B WElfQU1BUF9TSVpFKHdpbikJUEFCX0VYVF9SRUdfQUREUigweGJhZjAsDQo+IHdpbikNCj4gPg0K PiA+IEBAIC03MCwxNiArNzIsMTYgQEANCj4gPiAgI2RlZmluZSAgQVhJX1dJTkRPV19BTElHTl9N QVNLCQkzDQo+ID4NCj4gPiAgI2RlZmluZSBQQUJfQVhJX0FNQVBfUEVYX1dJTl9MKHdpbikJUEFC X1JFR19BRERSKDB4MGJhOCwNCj4gd2luKQ0KPiA+IC0jZGVmaW5lICBQQUJfQlVTX1NISUZUCQky NA0KPiA+IC0jZGVmaW5lICBQQUJfREVWSUNFX1NISUZUCTE5DQo+ID4gLSNkZWZpbmUgIFBBQl9G VU5DVElPTl9TSElGVAkxNg0KPiA+ICsjZGVmaW5lICBQQUJfQlVTX1NISUZUCQkJMjQNCj4gPiAr I2RlZmluZSAgUEFCX0RFVklDRV9TSElGVAkJMTkNCj4gPiArI2RlZmluZSAgUEFCX0ZVTkNUSU9O X1NISUZUCQkxNg0KPiA+DQo+ID4gICNkZWZpbmUgUEFCX0FYSV9BTUFQX1BFWF9XSU5fSCh3aW4p CVBBQl9SRUdfQUREUigweDBiYWMsDQo+IHdpbikNCj4gPiAgI2RlZmluZSBQQUJfSU5UUF9BWElf UElPX0NMQVNTCQkweDQ3NA0KPiA+DQo+ID4gLSNkZWZpbmUgUEFCX1BFWF9BTUFQX0NUUkwod2lu KQlQQUJfUkVHX0FERFIoMHg0YmEwLCB3aW4pDQo+ID4gLSNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9T SElGVAkwDQo+ID4gLSNkZWZpbmUgIEFNQVBfQ1RSTF9UWVBFX1NISUZUCTENCj4gPiArI2RlZmlu ZSBQQUJfUEVYX0FNQVBfQ1RSTCh3aW4pCQlQQUJfUkVHX0FERFIoMHg0YmEwLA0KPiB3aW4pDQo+ ID4gKyNkZWZpbmUgIEFNQVBfQ1RSTF9FTl9TSElGVAkJMA0KPiA+ICsjZGVmaW5lICBBTUFQX0NU UkxfVFlQRV9TSElGVAkJMQ0KPiA+DQo+ID4gICNkZWZpbmUgUEFCX0VYVF9QRVhfQU1BUF9TSVpF Tih3aW4pCVBBQl9FWFRfUkVHX0FERFIoMHhiZWYwLA0KPiB3aW4pDQo+ID4gICNkZWZpbmUgUEFC X1BFWF9BTUFQX0FYSV9XSU4od2luKQlQQUJfUkVHX0FERFIoMHg0YmE0LA0KPiB3aW4pDQo+ID4g QEAgLTg3LDM5ICs4OSwzOSBAQA0KPiA+ICAjZGVmaW5lIFBBQl9QRVhfQU1BUF9QRVhfV0lOX0go d2luKQlQQUJfUkVHX0FERFIoMHg0YmFjLA0KPiB3aW4pDQo+ID4NCj4gPiAgLyogc3RhcnRpbmcg b2Zmc2V0IG9mIElOVFggYml0cyBpbiBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4gPiAtI2RlZmluZSBQ QUJfSU5UWF9TVEFSVAk1DQo+ID4gKyNkZWZpbmUgUEFCX0lOVFhfU1RBUlQJCQk1DQo+ID4NCj4g PiAgLyogc3VwcG9ydGVkIG51bWJlciBvZiBNU0kgaW50ZXJydXB0cyAqLw0KPiA+IC0jZGVmaW5l IFBDSV9OVU1fTVNJCTE2DQo+ID4gKyNkZWZpbmUgUENJX05VTV9NU0kJCQkxNg0KPiA+DQo+ID4g IC8qIE1TSSByZWdpc3RlcnMgKi8NCj4gPiAtI2RlZmluZSBNU0lfQkFTRV9MT19PRkZTRVQJMHgw NA0KPiA+IC0jZGVmaW5lIE1TSV9CQVNFX0hJX09GRlNFVAkweDA4DQo+ID4gLSNkZWZpbmUgTVNJ X1NJWkVfT0ZGU0VUCTB4MGMNCj4gPiAtI2RlZmluZSBNU0lfRU5BQkxFX09GRlNFVAkweDE0DQo+ ID4gLSNkZWZpbmUgTVNJX1NUQVRVU19PRkZTRVQJMHgxOA0KPiA+IC0jZGVmaW5lIE1TSV9EQVRB X09GRlNFVAkweDIwDQo+ID4gLSNkZWZpbmUgTVNJX0FERFJfTF9PRkZTRVQJMHgyNA0KPiA+IC0j ZGVmaW5lIE1TSV9BRERSX0hfT0ZGU0VUCTB4MjgNCj4gPiArI2RlZmluZSBNU0lfQkFTRV9MT19P RkZTRVQJCTB4MDQNCj4gPiArI2RlZmluZSBNU0lfQkFTRV9ISV9PRkZTRVQJCTB4MDgNCj4gPiAr I2RlZmluZSBNU0lfU0laRV9PRkZTRVQJCQkweDBjDQo+ID4gKyNkZWZpbmUgTVNJX0VOQUJMRV9P RkZTRVQJCTB4MTQNCj4gPiArI2RlZmluZSBNU0lfU1RBVFVTX09GRlNFVAkJMHgxOA0KPiA+ICsj ZGVmaW5lIE1TSV9EQVRBX09GRlNFVAkJCTB4MjANCj4gPiArI2RlZmluZSBNU0lfQUREUl9MX09G RlNFVAkJMHgyNA0KPiA+ICsjZGVmaW5lIE1TSV9BRERSX0hfT0ZGU0VUCQkweDI4DQo+ID4NCj4g PiAgLyogb3V0Ym91bmQgYW5kIGluYm91bmQgd2luZG93IGRlZmluaXRpb25zICovDQo+ID4gLSNk ZWZpbmUgV0lOX05VTV8wCQkwDQo+ID4gLSNkZWZpbmUgV0lOX05VTV8xCQkxDQo+ID4gLSNkZWZp bmUgQ0ZHX1dJTkRPV19UWVBFCTANCj4gPiAtI2RlZmluZSBJT19XSU5ET1dfVFlQRQkJMQ0KPiA+ IC0jZGVmaW5lIE1FTV9XSU5ET1dfVFlQRQkyDQo+ID4gLSNkZWZpbmUgSUJfV0lOX1NJWkUJCSgo dTY0KTI1NiAqIDEwMjQgKiAxMDI0ICogMTAyNCkNCj4gPiAtI2RlZmluZSBNQVhfUElPX1dJTkRP V1MJOA0KPiA+ICsjZGVmaW5lIFdJTl9OVU1fMAkJCTANCj4gPiArI2RlZmluZSBXSU5fTlVNXzEJ CQkxDQo+ID4gKyNkZWZpbmUgQ0ZHX1dJTkRPV19UWVBFCQkJMA0KPiA+ICsjZGVmaW5lIElPX1dJ TkRPV19UWVBFCQkJMQ0KPiA+ICsjZGVmaW5lIE1FTV9XSU5ET1dfVFlQRQkJCTINCj4gPiArI2Rl ZmluZSBJQl9XSU5fU0laRQkJCSgodTY0KTI1NiAqIDEwMjQgKiAxMDI0ICogMTAyNCkNCj4gPiAr I2RlZmluZSBNQVhfUElPX1dJTkRPV1MJCQk4DQo+ID4NCj4gPiAgLyogUGFyYW1ldGVycyBmb3Ig dGhlIHdhaXRpbmcgZm9yIGxpbmsgdXAgcm91dGluZSAqLw0KPiA+IC0jZGVmaW5lIExJTktfV0FJ VF9NQVhfUkVUUklFUwkxMA0KPiA+IC0jZGVmaW5lIExJTktfV0FJVF9NSU4JOTAwMDANCj4gPiAt I2RlZmluZSBMSU5LX1dBSVRfTUFYCTEwMDAwMA0KPiA+ICsjZGVmaW5lIExJTktfV0FJVF9NQVhf UkVUUklFUwkJMTANCj4gPiArI2RlZmluZSBMSU5LX1dBSVRfTUlOCQkJOTAwMDANCj4gPiArI2Rl ZmluZSBMSU5LX1dBSVRfTUFYCQkJMTAwMDAwDQo+ID4NCj4gPiAtI2RlZmluZSBQQUdFRF9BRERS X0JORFJZCQkJMHhjMDANCj4gPiAtI2RlZmluZSBPRkZTRVRfVE9fUEFHRV9BRERSKG9mZikJCVwN Cj4gPiArI2RlZmluZSBQQUdFRF9BRERSX0JORFJZCQkweGMwMA0KPiA+ICsjZGVmaW5lIE9GRlNF VF9UT19QQUdFX0FERFIob2ZmKQlcDQo+ID4gIAkoKG9mZiAmIFBBR0VfTE9fTUFTSykgfCBQQUdF RF9BRERSX0JORFJZKQ0KPiA+IC0jZGVmaW5lIE9GRlNFVF9UT19QQUdFX0lEWChvZmYpCQkJXA0K PiA+ICsjZGVmaW5lIE9GRlNFVF9UT19QQUdFX0lEWChvZmYpCQlcDQo+ID4gIAkoKG9mZiA+PiBQ QUdFX1NFTF9PRkZTRVRfU0hJRlQpICYgUEFHRV9TRUxfTUFTSykNCj4gPg0KPiA+ICBzdHJ1Y3Qg bW9iaXZlaWxfbXNpIHsJCQkvKiBNU0kgaW5mb3JtYXRpb24gKi8NCj4gPiBAQCAtMjk3LDE0ICsy OTksMTQgQEAgc3RhdGljIHZvaWQgX19pb21lbQ0KPiAqbW9iaXZlaWxfcGNpZV9tYXBfYnVzKHN0 cnVjdCBwY2lfYnVzICpidXMsDQo+ID4gIAkJCQkJdW5zaWduZWQgaW50IGRldmZuLCBpbnQgd2hl cmUpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0gYnVzLT5zeXNk YXRhOw0KPiA+ICsJdTMyIHZhbHVlOw0KPiA+DQo+ID4gIAlpZiAoIW1vYml2ZWlsX3BjaWVfdmFs aWRfZGV2aWNlKGJ1cywgZGV2Zm4pKQ0KPiA+ICAJCXJldHVybiBOVUxMOw0KPiA+DQo+ID4gLQlp ZiAoYnVzLT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpIHsNCj4gPiAtCQkvKiBSQyBjb25m aWcgYWNjZXNzICovDQo+ID4gKwkvKiBSQyBjb25maWcgYWNjZXNzICovDQo+ID4gKwlpZiAoYnVz LT5udW1iZXIgPT0gcGNpZS0+cm9vdF9idXNfbnIpDQo+ID4gIAkJcmV0dXJuIHBjaWUtPmNzcl9h eGlfc2xhdmVfYmFzZSArIHdoZXJlOw0KPiA+IC0JfQ0KPiA+DQo+ID4gIAkvKg0KPiA+ICAJICog RVAgY29uZmlnIGFjY2VzcyAoaW4gQ29uZmlnL0FQSU8gc3BhY2UpIEBAIC0zMTIsMTAgKzMxNCwx MiBAQA0KPiA+IHN0YXRpYyB2b2lkIF9faW9tZW0gKm1vYml2ZWlsX3BjaWVfbWFwX2J1cyhzdHJ1 Y3QgcGNpX2J1cyAqYnVzLA0KPiA+ICAJICogKEJERikgaW4gUEFCX0FYSV9BTUFQX1BFWF9XSU5f TDAgUmVnaXN0ZXIuDQo+ID4gIAkgKiBSZWxpZXMgb24gcGNpX2xvY2sgc2VyaWFsaXphdGlvbg0K PiA+ICAJICovDQo+ID4gLQljc3Jfd3JpdGVsKHBjaWUsIGJ1cy0+bnVtYmVyIDw8IFBBQl9CVVNf U0hJRlQgfA0KPiA+IC0JCQlQQ0lfU0xPVChkZXZmbikgPDwgUEFCX0RFVklDRV9TSElGVCB8DQo+ ID4gLQkJCVBDSV9GVU5DKGRldmZuKSA8PCBQQUJfRlVOQ1RJT05fU0hJRlQsDQo+ID4gLQkJCVBB Ql9BWElfQU1BUF9QRVhfV0lOX0woV0lOX05VTV8wKSk7DQo+ID4gKwl2YWx1ZSA9IGJ1cy0+bnVt YmVyIDw8IFBBQl9CVVNfU0hJRlQgfA0KPiA+ICsJCVBDSV9TTE9UKGRldmZuKSA8PCBQQUJfREVW SUNFX1NISUZUIHwNCj4gPiArCQlQQ0lfRlVOQyhkZXZmbikgPDwgUEFCX0ZVTkNUSU9OX1NISUZU Ow0KPiA+ICsNCj4gPiArCWNzcl93cml0ZWwocGNpZSwgdmFsdWUsIFBBQl9BWElfQU1BUF9QRVhf V0lOX0woV0lOX05VTV8wKSk7DQo+ID4gKw0KPiA+ICAJcmV0dXJuIHBjaWUtPmNvbmZpZ19heGlf c2xhdmVfYmFzZSArIHdoZXJlOyAgfQ0KPiA+DQo+ID4gQEAgLTM1MCwyMiArMzU0LDIyIEBAIHN0 YXRpYyB2b2lkIG1vYml2ZWlsX3BjaWVfaXNyKHN0cnVjdCBpcnFfZGVzYw0KPiA+ICpkZXNjKQ0K PiA+DQo+ID4gIAkvKiBIYW5kbGUgSU5UeCAqLw0KPiA+ICAJaWYgKGludHJfc3RhdHVzICYgUEFC X0lOVFBfSU5UWF9NQVNLKSB7DQo+ID4gLQkJc2hpZnRlZF9zdGF0dXMgPSBjc3JfcmVhZGwocGNp ZSwgUEFCX0lOVFBfQU1CQV9NSVNDX1NUQVQpID4+DQo+ID4gLQkJCVBBQl9JTlRYX1NUQVJUOw0K PiA+ICsJCXNoaWZ0ZWRfc3RhdHVzID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9JTlRQX0FNQkFfTUlT Q19TVEFUKTsNCj4gPiArCQlzaGlmdGVkX3N0YXR1cyA+Pj0gUEFCX0lOVFhfU1RBUlQ7DQo+ID4g IAkJZG8gew0KPiA+ICAJCQlmb3JfZWFjaF9zZXRfYml0KGJpdCwgJnNoaWZ0ZWRfc3RhdHVzLCBQ Q0lfTlVNX0lOVFgpIHsNCj4gPiAgCQkJCXZpcnEgPSBpcnFfZmluZF9tYXBwaW5nKHBjaWUtPmlu dHhfZG9tYWluLA0KPiA+IC0JCQkJCQliaXQgKyAxKTsNCj4gPiArCQkJCQkJCWJpdCArIDEpOw0K PiA+ICAJCQkJaWYgKHZpcnEpDQo+ID4gIAkJCQkJZ2VuZXJpY19oYW5kbGVfaXJxKHZpcnEpOw0K PiA+ICAJCQkJZWxzZQ0KPiA+IC0JCQkJCWRldl9lcnJfcmF0ZWxpbWl0ZWQoZGV2LA0KPiA+IC0J CQkJCQkidW5leHBlY3RlZCBJUlEsIElOVCVkXG4iLCBiaXQpOw0KPiA+ICsJCQkJCWRldl9lcnJf cmF0ZWxpbWl0ZWQoZGV2LCAidW5leHBlY3RlZCBJUlEsDQo+IElOVCVkXG4iLA0KPiA+ICsJCQkJ CQkJICAgIGJpdCk7DQo+ID4NCj4gPiAgCQkJCS8qIGNsZWFyIGludGVycnVwdCAqLw0KPiA+ICAJ CQkJY3NyX3dyaXRlbChwY2llLA0KPiA+IC0JCQkJCXNoaWZ0ZWRfc3RhdHVzIDw8IFBBQl9JTlRY X1NUQVJULA0KPiA+IC0JCQkJCVBBQl9JTlRQX0FNQkFfTUlTQ19TVEFUKTsNCj4gPiArCQkJCQkg ICBzaGlmdGVkX3N0YXR1cyA8PCBQQUJfSU5UWF9TVEFSVCwNCj4gPiArCQkJCQkgICBQQUJfSU5U UF9BTUJBX01JU0NfU1RBVCk7DQo+ID4gIAkJCX0NCj4gPiAgCQl9IHdoaWxlICgoc2hpZnRlZF9z dGF0dXMgPj4gUEFCX0lOVFhfU1RBUlQpICE9IDApOw0KPiA+ICAJfQ0KPiA+IEBAIC0zNzUsOCAr Mzc5LDcgQEAgc3RhdGljIHZvaWQgbW9iaXZlaWxfcGNpZV9pc3Ioc3RydWN0IGlycV9kZXNjDQo+ ID4gKmRlc2MpDQo+ID4NCj4gPiAgCS8qIGhhbmRsZSBNU0kgaW50ZXJydXB0cyAqLw0KPiA+ICAJ d2hpbGUgKG1zaV9zdGF0dXMgJiAxKSB7DQo+ID4gLQkJbXNpX2RhdGEgPSByZWFkbF9yZWxheGVk KHBjaWUtPmFwYl9jc3JfYmFzZQ0KPiA+IC0JCQkJKyBNU0lfREFUQV9PRkZTRVQpOw0KPiA+ICsJ CW1zaV9kYXRhID0gcmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2UgKw0KPiBNU0lfREFU QV9PRkZTRVQpOw0KPiA+DQo+ID4gIAkJLyoNCj4gPiAgCQkgKiBNU0lfU1RBVFVTX09GRlNFVCBy ZWdpc3RlciBnZXRzIHVwZGF0ZWQgdG8gemVybyBAQCAtMzg1LDE4DQo+ID4gKzM4OCwxOCBAQCBz dGF0aWMgdm9pZCBtb2JpdmVpbF9wY2llX2lzcihzdHJ1Y3QgaXJxX2Rlc2MgKmRlc2MpDQo+ID4g IAkJICogdHdvIGR1bW15IHJlYWRzLg0KPiA+ICAJCSAqLw0KPiA+ICAJCW1zaV9hZGRyX2xvID0g cmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2UgKw0KPiA+IC0JCQkJTVNJX0FERFJfTF9P RkZTRVQpOw0KPiA+ICsJCQkJCSAgICBNU0lfQUREUl9MX09GRlNFVCk7DQo+ID4gIAkJbXNpX2Fk ZHJfaGkgPSByZWFkbF9yZWxheGVkKHBjaWUtPmFwYl9jc3JfYmFzZSArDQo+ID4gLQkJCQlNU0lf QUREUl9IX09GRlNFVCk7DQo+ID4gKwkJCQkJICAgIE1TSV9BRERSX0hfT0ZGU0VUKTsNCj4gPiAg CQlkZXZfZGJnKGRldiwgIk1TSSByZWdpc3RlcnMsIGRhdGE6ICUwOHgsIGFkZHI6ICUwOHg6JTA4 eFxuIiwNCj4gPiAtCQkJCW1zaV9kYXRhLCBtc2lfYWRkcl9oaSwgbXNpX2FkZHJfbG8pOw0KPiA+ ICsJCQltc2lfZGF0YSwgbXNpX2FkZHJfaGksIG1zaV9hZGRyX2xvKTsNCj4gPg0KPiA+ICAJCXZp cnEgPSBpcnFfZmluZF9tYXBwaW5nKG1zaS0+ZGV2X2RvbWFpbiwgbXNpX2RhdGEpOw0KPiA+ICAJ CWlmICh2aXJxKQ0KPiA+ICAJCQlnZW5lcmljX2hhbmRsZV9pcnEodmlycSk7DQo+ID4NCj4gPiAg CQltc2lfc3RhdHVzID0gcmVhZGxfcmVsYXhlZChwY2llLT5hcGJfY3NyX2Jhc2UgKw0KPiA+IC0J CQkJTVNJX1NUQVRVU19PRkZTRVQpOw0KPiA+ICsJCQkJCSAgIE1TSV9TVEFUVVNfT0ZGU0VUKTsN Cj4gPiAgCX0NCj4gPg0KPiA+ICAJLyogQ2xlYXIgdGhlIGludGVycnVwdCBzdGF0dXMgKi8NCj4g PiBAQCAtNDEzLDcgKzQxNiw3IEBAIHN0YXRpYyBpbnQgbW9iaXZlaWxfcGNpZV9wYXJzZV9kdChz dHJ1Y3QNCj4gPiBtb2JpdmVpbF9wY2llICpwY2llKQ0KPiA+DQo+ID4gIAkvKiBtYXAgY29uZmln IHJlc291cmNlICovDQo+ID4gIAlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2VfYnluYW1lKHBk ZXYsIElPUkVTT1VSQ0VfTUVNLA0KPiA+IC0JCQkiY29uZmlnX2F4aV9zbGF2ZSIpOw0KPiA+ICsJ CQkJCSAgICJjb25maWdfYXhpX3NsYXZlIik7DQo+ID4gIAlwY2llLT5jb25maWdfYXhpX3NsYXZl X2Jhc2UgPSBkZXZtX3BjaV9yZW1hcF9jZmdfcmVzb3VyY2UoZGV2LA0KPiByZXMpOw0KPiA+ICAJ aWYgKElTX0VSUihwY2llLT5jb25maWdfYXhpX3NsYXZlX2Jhc2UpKQ0KPiA+ICAJCXJldHVybiBQ VFJfRVJSKHBjaWUtPmNvbmZpZ19heGlfc2xhdmVfYmFzZSk7DQo+ID4gQEAgLTQyMSw3ICs0MjQs NyBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfcGFyc2VfZHQoc3RydWN0DQo+ID4gbW9iaXZl aWxfcGNpZSAqcGNpZSkNCj4gPg0KPiA+ICAJLyogbWFwIGNzciByZXNvdXJjZSAqLw0KPiA+ICAJ cmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFtZShwZGV2LCBJT1JFU09VUkNFX01FTSwN Cj4gPiAtCQkJImNzcl9heGlfc2xhdmUiKTsNCj4gPiArCQkJCQkgICAiY3NyX2F4aV9zbGF2ZSIp Ow0KPiA+ICAJcGNpZS0+Y3NyX2F4aV9zbGF2ZV9iYXNlID0gZGV2bV9wY2lfcmVtYXBfY2ZnX3Jl c291cmNlKGRldiwgcmVzKTsNCj4gPiAgCWlmIChJU19FUlIocGNpZS0+Y3NyX2F4aV9zbGF2ZV9i YXNlKSkNCj4gPiAgCQlyZXR1cm4gUFRSX0VSUihwY2llLT5jc3JfYXhpX3NsYXZlX2Jhc2UpOw0K PiA+IEBAIC00NTIsNyArNDU1LDcgQEAgc3RhdGljIGludCBtb2JpdmVpbF9wY2llX3BhcnNlX2R0 KHN0cnVjdA0KPiA+IG1vYml2ZWlsX3BjaWUgKnBjaWUpICB9DQo+ID4NCj4gPiAgc3RhdGljIHZv aWQgcHJvZ3JhbV9pYl93aW5kb3dzKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llLCBpbnQNCj4g d2luX251bSwNCj4gPiAtCQlpbnQgcGNpX2FkZHIsIHUzMiB0eXBlLCB1NjQgc2l6ZSkNCj4gPiAr CQkJICAgICAgIGludCBwY2lfYWRkciwgdTMyIHR5cGUsIHU2NCBzaXplKQ0KPiA+ICB7DQo+ID4g IAlpbnQgcGlvX2N0cmxfdmFsOw0KPiA+ICAJaW50IGFtYXBfY3RybF9kdzsNCj4gPiBAQCAtNDY1 LDE5ICs0NjgsMjAgQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9pYl93aW5kb3dzKHN0cnVjdA0KPiBt b2JpdmVpbF9wY2llICpwY2llLCBpbnQgd2luX251bSwNCj4gPiAgCX0NCj4gPg0KPiA+ICAJcGlv X2N0cmxfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9QRVhfUElPX0NUUkwpOw0KPiA+IC0JY3Ny X3dyaXRlbChwY2llLA0KPiA+IC0JCXBpb19jdHJsX3ZhbCB8ICgxIDw8IFBJT19FTkFCTEVfU0hJ RlQpLCBQQUJfUEVYX1BJT19DVFJMKTsNCj4gPiAtCWFtYXBfY3RybF9kdyA9IGNzcl9yZWFkbChw Y2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQo+ID4gLQlhbWFwX2N0cmxfZHcgPSAo YW1hcF9jdHJsX2R3IHwgKHR5cGUgPDwgQU1BUF9DVFJMX1RZUEVfU0hJRlQpKTsNCj4gPiAtCWFt YXBfY3RybF9kdyA9IChhbWFwX2N0cmxfZHcgfCAoMSA8PCBBTUFQX0NUUkxfRU5fU0hJRlQpKTsN Cj4gPiArCXBpb19jdHJsX3ZhbCB8PSAxIDw8IFBJT19FTkFCTEVfU0hJRlQ7DQo+ID4gKwljc3Jf d3JpdGVsKHBjaWUsIHBpb19jdHJsX3ZhbCwgUEFCX1BFWF9QSU9fQ1RSTCk7DQo+ID4NCj4gPiAt CWNzcl93cml0ZWwocGNpZSwgYW1hcF9jdHJsX2R3IHwgbG93ZXJfMzJfYml0cyhzaXplNjQpLA0K PiA+IC0JCSAgIFBBQl9QRVhfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4gPiArCWFtYXBfY3RybF9k dyA9IGNzcl9yZWFkbChwY2llLCBQQUJfUEVYX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQo+ID4gKwlh bWFwX2N0cmxfZHcgfD0gKHR5cGUgPDwgQU1BUF9DVFJMX1RZUEVfU0hJRlQpIHwNCj4gPiArCQkJ KDEgPDwgQU1BUF9DVFJMX0VOX1NISUZUKSB8DQo+ID4gKwkJCWxvd2VyXzMyX2JpdHMoc2l6ZTY0 KTsNCj4gPiArCWNzcl93cml0ZWwocGNpZSwgYW1hcF9jdHJsX2R3LCBQQUJfUEVYX0FNQVBfQ1RS TCh3aW5fbnVtKSk7DQo+ID4NCj4gPiAgCWNzcl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhz aXplNjQpLA0KPiA+ICAJCSAgIFBBQl9FWFRfUEVYX0FNQVBfU0laRU4od2luX251bSkpOw0KPiA+ DQo+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIHBjaV9hZGRyLCBQQUJfUEVYX0FNQVBfQVhJX1dJTih3 aW5fbnVtKSk7DQo+ID4gKw0KPiA+ICAJY3NyX3dyaXRlbChwY2llLCBwY2lfYWRkciwgUEFCX1BF WF9BTUFQX1BFWF9XSU5fTCh3aW5fbnVtKSk7DQo+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIDAsIFBB Ql9QRVhfQU1BUF9QRVhfV0lOX0god2luX251bSkpOyAgfSBAQA0KPiAtNDg2LDcNCj4gPiArNDkw LDggQEAgc3RhdGljIHZvaWQgcHJvZ3JhbV9pYl93aW5kb3dzKHN0cnVjdCBtb2JpdmVpbF9wY2ll ICpwY2llLA0KPiBpbnQgd2luX251bSwNCj4gPiAgICogcm91dGluZSB0byBwcm9ncmFtIHRoZSBv dXRib3VuZCB3aW5kb3dzDQo+ID4gICAqLw0KPiA+ICBzdGF0aWMgdm9pZCBwcm9ncmFtX29iX3dp bmRvd3Moc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsIGludA0KPiB3aW5fbnVtLA0KPiA+IC0J CXU2NCBjcHVfYWRkciwgdTY0IHBjaV9hZGRyLCB1MzIgY29uZmlnX2lvX2JpdCwgdTY0IHNpemUp DQo+ID4gKwkJCSAgICAgICB1NjQgY3B1X2FkZHIsIHU2NCBwY2lfYWRkciwNCj4gPiArCQkJICAg ICAgIHUzMiBjb25maWdfaW9fYml0LCB1NjQgc2l6ZSkNCj4gPiAgew0KPiA+DQo+ID4gIAl1MzIg dmFsdWUsIHR5cGU7DQo+ID4gQEAgLTUwNSw3ICs1MTAsNyBAQCBzdGF0aWMgdm9pZCBwcm9ncmFt X29iX3dpbmRvd3Moc3RydWN0DQo+IG1vYml2ZWlsX3BjaWUgKnBjaWUsIGludCB3aW5fbnVtLA0K PiA+ICAJdHlwZSA9IGNvbmZpZ19pb19iaXQ7DQo+ID4gIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2ll LCBQQUJfQVhJX0FNQVBfQ1RSTCh3aW5fbnVtKSk7DQo+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIDEg PDwgV0lOX0VOQUJMRV9TSElGVCB8IHR5cGUgPDwgV0lOX1RZUEVfU0hJRlQgfA0KPiA+IC0JCQls b3dlcl8zMl9iaXRzKHNpemU2NCksIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4gPiAr CQkgICBsb3dlcl8zMl9iaXRzKHNpemU2NCksIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsN Cj4gPg0KPiA+ICAJY3NyX3dyaXRlbChwY2llLCB1cHBlcl8zMl9iaXRzKHNpemU2NCksDQo+ID4g UEFCX0VYVF9BWElfQU1BUF9TSVpFKHdpbl9udW0pKTsNCj4gPg0KPiA+IEBAIC01MTUsMTQgKzUy MCwxNCBAQCBzdGF0aWMgdm9pZCBwcm9ncmFtX29iX3dpbmRvd3Moc3RydWN0DQo+IG1vYml2ZWls X3BjaWUgKnBjaWUsIGludCB3aW5fbnVtLA0KPiA+ICAJICovDQo+ID4gIAl2YWx1ZSA9IGNzcl9y ZWFkbChwY2llLCBQQUJfQVhJX0FNQVBfQVhJX1dJTih3aW5fbnVtKSk7DQo+ID4gIAljc3Jfd3Jp dGVsKHBjaWUsIGNwdV9hZGRyICYgKH5BWElfV0lORE9XX0FMSUdOX01BU0spLA0KPiA+IC0JCQlQ QUJfQVhJX0FNQVBfQVhJX1dJTih3aW5fbnVtKSk7DQo+ID4gKwkJICAgUEFCX0FYSV9BTUFQX0FY SV9XSU4od2luX251bSkpOw0KPiA+DQo+ID4gIAl2YWx1ZSA9IGNzcl9yZWFkbChwY2llLCBQQUJf QVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCj4gPg0KPiA+ICAJY3NyX3dyaXRlbChwY2ll LCBsb3dlcl8zMl9iaXRzKHBjaV9hZGRyKSwNCj4gPiAtCQkJUEFCX0FYSV9BTUFQX1BFWF9XSU5f TCh3aW5fbnVtKSk7DQo+ID4gKwkJICAgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCh3aW5fbnVtKSk7 DQo+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIHVwcGVyXzMyX2JpdHMocGNpX2FkZHIpLA0KPiA+IC0J CQlQQUJfQVhJX0FNQVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCj4gPiArCQkgICBQQUJfQVhJX0FN QVBfUEVYX1dJTl9IKHdpbl9udW0pKTsNCj4gPg0KPiA+ICAJcGNpZS0+b2Jfd2luc19jb25maWd1 cmVkKys7DQo+ID4gIH0NCj4gPiBAQCAtNTM4LDcgKzU0Myw5IEBAIHN0YXRpYyBpbnQgbW9iaXZl aWxfYnJpbmd1cF9saW5rKHN0cnVjdA0KPiA+IG1vYml2ZWlsX3BjaWUgKnBjaWUpDQo+ID4NCj4g PiAgCQl1c2xlZXBfcmFuZ2UoTElOS19XQUlUX01JTiwgTElOS19XQUlUX01BWCk7DQo+ID4gIAl9 DQo+ID4gKw0KPiA+ICAJZGV2X2VycigmcGNpZS0+cGRldi0+ZGV2LCAibGluayBuZXZlciBjYW1l IHVwXG4iKTsNCj4gPiArDQo+ID4gIAlyZXR1cm4gLUVUSU1FRE9VVDsNCj4gPiAgfQ0KPiA+DQo+ ID4gQEAgLTU1MSwxNiArNTU4LDE2IEBAIHN0YXRpYyB2b2lkIG1vYml2ZWlsX3BjaWVfZW5hYmxl X21zaShzdHJ1Y3QNCj4gbW9iaXZlaWxfcGNpZSAqcGNpZSkNCj4gPiAgCW1zaS0+bXNpX3BhZ2Vz X3BoeXMgPSAocGh5c19hZGRyX3QpbXNnX2FkZHI7DQo+ID4NCj4gPiAgCXdyaXRlbF9yZWxheGVk KGxvd2VyXzMyX2JpdHMobXNnX2FkZHIpLA0KPiA+IC0JCXBjaWUtPmFwYl9jc3JfYmFzZSArIE1T SV9CQVNFX0xPX09GRlNFVCk7DQo+ID4gKwkJICAgICAgIHBjaWUtPmFwYl9jc3JfYmFzZSArIE1T SV9CQVNFX0xPX09GRlNFVCk7DQo+ID4gIAl3cml0ZWxfcmVsYXhlZCh1cHBlcl8zMl9iaXRzKG1z Z19hZGRyKSwNCj4gPiAtCQlwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9ISV9PRkZTRVQp Ow0KPiA+ICsJCSAgICAgICBwY2llLT5hcGJfY3NyX2Jhc2UgKyBNU0lfQkFTRV9ISV9PRkZTRVQp Ow0KPiA+ICAJd3JpdGVsX3JlbGF4ZWQoNDA5NiwgcGNpZS0+YXBiX2Nzcl9iYXNlICsgTVNJX1NJ WkVfT0ZGU0VUKTsNCj4gPiAgCXdyaXRlbF9yZWxheGVkKDEsIHBjaWUtPmFwYl9jc3JfYmFzZSAr IE1TSV9FTkFCTEVfT0ZGU0VUKTsgIH0NCj4gPg0KPiA+ICBzdGF0aWMgaW50IG1vYml2ZWlsX2hv c3RfaW5pdChzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkgIHsNCj4gPiAtCXUzMiB2YWx1ZSwg cGFiX2N0cmwsIHR5cGUgPSAwOw0KPiA+ICsJdTMyIHZhbHVlLCBwYWJfY3RybCwgdHlwZTsNCj4g PiAgCWludCBlcnI7DQo+ID4gIAlzdHJ1Y3QgcmVzb3VyY2VfZW50cnkgKndpbiwgKnRtcDsNCj4g Pg0KPiA+IEBAIC01NzUsMjYgKzU4MiwyNyBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX2hvc3RfaW5p dChzdHJ1Y3QNCj4gbW9iaXZlaWxfcGNpZSAqcGNpZSkNCj4gPiAgCSAqIFNwYWNlDQo+ID4gIAkg Ki8NCj4gPiAgCXZhbHVlID0gY3NyX3JlYWRsKHBjaWUsIFBDSV9DT01NQU5EKTsNCj4gPiAtCWNz cl93cml0ZWwocGNpZSwgdmFsdWUgfCBQQ0lfQ09NTUFORF9JTyB8DQo+IFBDSV9DT01NQU5EX01F TU9SWSB8DQo+ID4gLQkJUENJX0NPTU1BTkRfTUFTVEVSLCBQQ0lfQ09NTUFORCk7DQo+ID4gKwl2 YWx1ZSB8PSBQQ0lfQ09NTUFORF9JTyB8IFBDSV9DT01NQU5EX01FTU9SWSB8DQo+IFBDSV9DT01N QU5EX01BU1RFUjsNCj4gPiArCWNzcl93cml0ZWwocGNpZSwgdmFsdWUsIFBDSV9DT01NQU5EKTsN Cj4gPg0KPiA+ICAJLyoNCj4gPiAgCSAqIHByb2dyYW0gUElPIEVuYWJsZSBCaXQgdG8gMSAoYW5k IFBFWCBQSU8gRW5hYmxlIHRvIDEpIGluIFBBQl9DVFJMDQo+ID4gIAkgKiByZWdpc3Rlcg0KPiA+ ICAJICovDQo+ID4gIAlwYWJfY3RybCA9IGNzcl9yZWFkbChwY2llLCBQQUJfQ1RSTCk7DQo+ID4g LQljc3Jfd3JpdGVsKHBjaWUsIHBhYl9jdHJsIHwgKDEgPDwgQU1CQV9QSU9fRU5BQkxFX1NISUZU KSB8DQo+ID4gLQkJKDEgPDwgUEVYX1BJT19FTkFCTEVfU0hJRlQpLCBQQUJfQ1RSTCk7DQo+ID4g KwlwYWJfY3RybCB8PSAoMSA8PCBBTUJBX1BJT19FTkFCTEVfU0hJRlQpIHwgKDEgPDwNCj4gUEVY X1BJT19FTkFCTEVfU0hJRlQpOw0KPiA+ICsJY3NyX3dyaXRlbChwY2llLCBwYWJfY3RybCwgUEFC X0NUUkwpOw0KPiA+DQo+ID4gIAljc3Jfd3JpdGVsKHBjaWUsIChQQUJfSU5UUF9JTlRYX01BU0sg fCBQQUJfSU5UUF9NU0lfTUFTSyksDQo+ID4gLQkJUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQo+ ID4gKwkJICAgUEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQo+ID4NCj4gPiAgCS8qDQo+ID4gIAkg KiBwcm9ncmFtIFBJTyBFbmFibGUgQml0IHRvIDEgYW5kIENvbmZpZyBXaW5kb3cgRW5hYmxlIEJp dCB0byAxIGluDQo+ID4gIAkgKiBQQUJfQVhJX1BJT19DVFJMIFJlZ2lzdGVyDQo+ID4gIAkgKi8N Cj4gPiAgCXZhbHVlID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfUElPX0NUUkwpOw0KPiA+IC0J Y3NyX3dyaXRlbChwY2llLCB2YWx1ZSB8IEFQSU9fRU5fTUFTSywgUEFCX0FYSV9QSU9fQ1RSTCk7 DQo+ID4gKwl2YWx1ZSB8PSBBUElPX0VOX01BU0s7DQo+ID4gKwljc3Jfd3JpdGVsKHBjaWUsIHZh bHVlLCBQQUJfQVhJX1BJT19DVFJMKTsNCj4gPg0KPiA+ICAJLyoNCj4gPiAgCSAqIHdlJ2xsIHBy b2dyYW0gb25lIG91dGJvdW5kIHdpbmRvdyBmb3IgY29uZmlnIHJlYWRzIGFuZCBAQA0KPiAtNjA1 LDI1DQo+ID4gKzYxMywyNSBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX2hvc3RfaW5pdChzdHJ1Y3Qg bW9iaXZlaWxfcGNpZSAqcGNpZSkNCj4gPg0KPiA+ICAJLyogY29uZmlnIG91dGJvdW5kIHRyYW5z bGF0aW9uIHdpbmRvdyAqLw0KPiA+ICAJcHJvZ3JhbV9vYl93aW5kb3dzKHBjaWUsIHBjaWUtPm9i X3dpbnNfY29uZmlndXJlZCwNCj4gPiAtCQkJcGNpZS0+b2JfaW9fcmVzLT5zdGFydCwgMCwgQ0ZH X1dJTkRPV19UWVBFLA0KPiA+IC0JCQlyZXNvdXJjZV9zaXplKHBjaWUtPm9iX2lvX3JlcykpOw0K PiA+ICsJCQkgICBwY2llLT5vYl9pb19yZXMtPnN0YXJ0LCAwLCBDRkdfV0lORE9XX1RZUEUsDQo+ ID4gKwkJCSAgIHJlc291cmNlX3NpemUocGNpZS0+b2JfaW9fcmVzKSk7DQo+ID4NCj4gPiAgCS8q IG1lbW9yeSBpbmJvdW5kIHRyYW5zbGF0aW9uIHdpbmRvdyAqLw0KPiA+ICAJcHJvZ3JhbV9pYl93 aW5kb3dzKHBjaWUsIFdJTl9OVU1fMSwgMCwgTUVNX1dJTkRPV19UWVBFLA0KPiA+IElCX1dJTl9T SVpFKTsNCj4gPg0KPiA+ICAJLyogR2V0IHRoZSBJL08gYW5kIG1lbW9yeSByYW5nZXMgZnJvbSBE VCAqLw0KPiA+ICAJcmVzb3VyY2VfbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHdpbiwgdG1wLCAm cGNpZS0+cmVzb3VyY2VzKSB7DQo+ID4gLQkJdHlwZSA9IDA7DQo+ID4gIAkJaWYgKHJlc291cmNl X3R5cGUod2luLT5yZXMpID09IElPUkVTT1VSQ0VfTUVNKQ0KPiA+ICAJCQl0eXBlID0gTUVNX1dJ TkRPV19UWVBFOw0KPiA+IC0JCWlmIChyZXNvdXJjZV90eXBlKHdpbi0+cmVzKSA9PSBJT1JFU09V UkNFX0lPKQ0KPiA+ICsJCWVsc2UgaWYgKHJlc291cmNlX3R5cGUod2luLT5yZXMpID09IElPUkVT T1VSQ0VfSU8pDQo+ID4gIAkJCXR5cGUgPSBJT19XSU5ET1dfVFlQRTsNCj4gPiAtCQlpZiAodHlw ZSkgew0KPiA+IC0JCQkvKiBjb25maWd1cmUgb3V0Ym91bmQgdHJhbnNsYXRpb24gd2luZG93ICov DQo+ID4gLQkJCXByb2dyYW1fb2Jfd2luZG93cyhwY2llLCBwY2llLT5vYl93aW5zX2NvbmZpZ3Vy ZWQsDQo+ID4gLQkJCQl3aW4tPnJlcy0+c3RhcnQsIDAsIHR5cGUsDQo+ID4gLQkJCQlyZXNvdXJj ZV9zaXplKHdpbi0+cmVzKSk7DQo+ID4gLQkJfQ0KPiA+ICsJCWVsc2UNCj4gPiArCQkJY29udGlu dWU7DQo+ID4gKw0KPiA+ICsJCS8qIGNvbmZpZ3VyZSBvdXRib3VuZCB0cmFuc2xhdGlvbiB3aW5k b3cgKi8NCj4gPiArCQlwcm9ncmFtX29iX3dpbmRvd3MocGNpZSwgcGNpZS0+b2Jfd2luc19jb25m aWd1cmVkLA0KPiA+ICsJCQkJICAgd2luLT5yZXMtPnN0YXJ0LCAwLCB0eXBlLA0KPiA+ICsJCQkJ ICAgcmVzb3VyY2Vfc2l6ZSh3aW4tPnJlcykpOw0KPiA+ICAJfQ0KPiA+DQo+ID4gIAkvKiBzZXR1 cCBNU0kgaGFyZHdhcmUgcmVnaXN0ZXJzICovDQo+ID4gQEAgLTY0Myw3ICs2NTEsOCBAQCBzdGF0 aWMgdm9pZCBtb2JpdmVpbF9tYXNrX2ludHhfaXJxKHN0cnVjdCBpcnFfZGF0YQ0KPiAqZGF0YSkN Cj4gPiAgCW1hc2sgPSAxIDw8ICgoZGF0YS0+aHdpcnEgKyBQQUJfSU5UWF9TVEFSVCkgLSAxKTsN Cj4gPiAgCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcGNpZS0+aW50eF9tYXNrX2xvY2ssIGZsYWdz KTsNCj4gPiAgCXNoaWZ0ZWRfdmFsID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9JTlRQX0FNQkFfTUlT Q19FTkIpOw0KPiA+IC0JY3NyX3dyaXRlbChwY2llLCAoc2hpZnRlZF92YWwgJiAofm1hc2spKSwg UEFCX0lOVFBfQU1CQV9NSVNDX0VOQik7DQo+ID4gKwlzaGlmdGVkX3ZhbCAmPSB+bWFzazsNCj4g PiArCWNzcl93cml0ZWwocGNpZSwgc2hpZnRlZF92YWwsIFBBQl9JTlRQX0FNQkFfTUlTQ19FTkIp Ow0KPiA+ICAJcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBjaWUtPmludHhfbWFza19sb2Nr LCBmbGFncyk7ICB9DQo+ID4NCj4gPiBAQCAtNjU4LDcgKzY2Nyw4IEBAIHN0YXRpYyB2b2lkIG1v Yml2ZWlsX3VubWFza19pbnR4X2lycShzdHJ1Y3QNCj4gaXJxX2RhdGEgKmRhdGEpDQo+ID4gIAlt YXNrID0gMSA8PCAoKGRhdGEtPmh3aXJxICsgUEFCX0lOVFhfU1RBUlQpIC0gMSk7DQo+ID4gIAly YXdfc3Bpbl9sb2NrX2lycXNhdmUoJnBjaWUtPmludHhfbWFza19sb2NrLCBmbGFncyk7DQo+ID4g IAlzaGlmdGVkX3ZhbCA9IGNzcl9yZWFkbChwY2llLCBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsN Cj4gPiAtCWNzcl93cml0ZWwocGNpZSwgKHNoaWZ0ZWRfdmFsIHwgbWFzayksIFBBQl9JTlRQX0FN QkFfTUlTQ19FTkIpOw0KPiA+ICsJc2hpZnRlZF92YWwgfD0gbWFzazsNCj4gPiArCWNzcl93cml0 ZWwocGNpZSwgc2hpZnRlZF92YWwsIFBBQl9JTlRQX0FNQkFfTUlTQ19FTkIpOw0KPiA+ICAJcmF3 X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnBjaWUtPmludHhfbWFza19sb2NrLCBmbGFncyk7ICB9 DQo+ID4NCj4gPiBAQCAtNjcyLDEwICs2ODIsMTEgQEAgc3RhdGljIHN0cnVjdCBpcnFfY2hpcCBp bnR4X2lycV9jaGlwID0gew0KPiA+DQo+ID4gIC8qIHJvdXRpbmUgdG8gc2V0dXAgdGhlIElOVHgg cmVsYXRlZCBkYXRhICovICBzdGF0aWMgaW50DQo+ID4gbW9iaXZlaWxfcGNpZV9pbnR4X21hcChz dHJ1Y3QgaXJxX2RvbWFpbiAqZG9tYWluLCB1bnNpZ25lZCBpbnQgaXJxLA0KPiA+IC0JCWlycV9o d19udW1iZXJfdCBod2lycSkNCj4gPiArCQkJCSAgaXJxX2h3X251bWJlcl90IGh3aXJxKQ0KPiA+ ICB7DQo+ID4gIAlpcnFfc2V0X2NoaXBfYW5kX2hhbmRsZXIoaXJxLCAmaW50eF9pcnFfY2hpcCwg aGFuZGxlX2xldmVsX2lycSk7DQo+ID4gIAlpcnFfc2V0X2NoaXBfZGF0YShpcnEsIGRvbWFpbi0+ aG9zdF9kYXRhKTsNCj4gPiArDQo+ID4gIAlyZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gQEAg LTY5Miw3ICs3MDMsNyBAQCBzdGF0aWMgc3RydWN0IGlycV9jaGlwIG1vYml2ZWlsX21zaV9pcnFf Y2hpcCA9IHsNCj4gPg0KPiA+ICBzdGF0aWMgc3RydWN0IG1zaV9kb21haW5faW5mbyBtb2JpdmVp bF9tc2lfZG9tYWluX2luZm8gPSB7DQo+ID4gIAkuZmxhZ3MJPSAoTVNJX0ZMQUdfVVNFX0RFRl9E T01fT1BTIHwNCj4gTVNJX0ZMQUdfVVNFX0RFRl9DSElQX09QUyB8DQo+ID4gLQkJTVNJX0ZMQUdf TVVMVElfUENJX01TSSB8IE1TSV9GTEFHX1BDSV9NU0lYKSwNCj4gPiArCQkgICBNU0lfRkxBR19N VUxUSV9QQ0lfTVNJIHwgTVNJX0ZMQUdfUENJX01TSVgpLA0KPiA+ICAJLmNoaXAJPSAmbW9iaXZl aWxfbXNpX2lycV9jaGlwLA0KPiA+ICB9Ow0KPiA+DQo+ID4gQEAgLTcxMCw3ICs3MjEsNyBAQCBz dGF0aWMgdm9pZCBtb2JpdmVpbF9jb21wb3NlX21zaV9tc2coc3RydWN0DQo+ID4gaXJxX2RhdGEg KmRhdGEsIHN0cnVjdCBtc2lfbXNnICptc2cpICB9DQo+ID4NCj4gPiAgc3RhdGljIGludCBtb2Jp dmVpbF9tc2lfc2V0X2FmZmluaXR5KHN0cnVjdCBpcnFfZGF0YSAqaXJxX2RhdGEsDQo+ID4gLQkJ Y29uc3Qgc3RydWN0IGNwdW1hc2sgKm1hc2ssIGJvb2wgZm9yY2UpDQo+ID4gKwkJCQkgICAgIGNv bnN0IHN0cnVjdCBjcHVtYXNrICptYXNrLCBib29sIGZvcmNlKQ0KPiA+ICB7DQo+ID4gIAlyZXR1 cm4gLUVJTlZBTDsNCj4gPiAgfQ0KPiA+IEBAIC03MjIsNyArNzMzLDggQEAgc3RhdGljIHN0cnVj dCBpcnFfY2hpcA0KPiA+IG1vYml2ZWlsX21zaV9ib3R0b21faXJxX2NoaXAgPSB7ICB9Ow0KPiA+ DQo+ID4gIHN0YXRpYyBpbnQgbW9iaXZlaWxfaXJxX21zaV9kb21haW5fYWxsb2Moc3RydWN0IGly cV9kb21haW4gKmRvbWFpbiwNCj4gPiAtCQl1bnNpZ25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50 IG5yX2lycXMsIHZvaWQgKmFyZ3MpDQo+ID4gKwkJCQkJIHVuc2lnbmVkIGludCB2aXJxLA0KPiA+ ICsJCQkJCSB1bnNpZ25lZCBpbnQgbnJfaXJxcywgdm9pZCAqYXJncykNCj4gPiAgew0KPiA+ICAJ c3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSBkb21haW4tPmhvc3RfZGF0YTsNCj4gPiAgCXN0 cnVjdCBtb2JpdmVpbF9tc2kgKm1zaSA9ICZwY2llLT5tc2k7IEBAIC03NDIsMTMgKzc1NCwxMyBA QCBzdGF0aWMNCj4gPiBpbnQgbW9iaXZlaWxfaXJxX21zaV9kb21haW5fYWxsb2Moc3RydWN0IGly cV9kb21haW4gKmRvbWFpbiwNCj4gPiAgCW11dGV4X3VubG9jaygmbXNpLT5sb2NrKTsNCj4gPg0K PiA+ICAJaXJxX2RvbWFpbl9zZXRfaW5mbyhkb21haW4sIHZpcnEsIGJpdCwNCj4gJm1vYml2ZWls X21zaV9ib3R0b21faXJxX2NoaXAsDQo+ID4gLQkJCQlkb21haW4tPmhvc3RfZGF0YSwgaGFuZGxl X2xldmVsX2lycSwNCj4gPiAtCQkJCU5VTEwsIE5VTEwpOw0KPiA+ICsJCQkgICAgZG9tYWluLT5o b3N0X2RhdGEsIGhhbmRsZV9sZXZlbF9pcnEsIE5VTEwsIE5VTEwpOw0KPiA+ICAJcmV0dXJuIDA7 DQo+ID4gIH0NCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBtb2JpdmVpbF9pcnFfbXNpX2RvbWFpbl9m cmVlKHN0cnVjdCBpcnFfZG9tYWluICpkb21haW4sDQo+ID4gLQkJdW5zaWduZWQgaW50IHZpcnEs IHVuc2lnbmVkIGludCBucl9pcnFzKQ0KPiA+ICsJCQkJCSB1bnNpZ25lZCBpbnQgdmlycSwNCj4g PiArCQkJCQkgdW5zaWduZWQgaW50IG5yX2lycXMpDQo+ID4gIHsNCj4gPiAgCXN0cnVjdCBpcnFf ZGF0YSAqZCA9IGlycV9kb21haW5fZ2V0X2lycV9kYXRhKGRvbWFpbiwgdmlycSk7DQo+ID4gIAlz dHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IGlycV9kYXRhX2dldF9pcnFfY2hpcF9kYXRhKGQp OyBAQA0KPiA+IC03NTYsMTIgKzc2OCwxMSBAQCBzdGF0aWMgdm9pZCBtb2JpdmVpbF9pcnFfbXNp X2RvbWFpbl9mcmVlKHN0cnVjdA0KPiA+IGlycV9kb21haW4gKmRvbWFpbiwNCj4gPg0KPiA+ICAJ bXV0ZXhfbG9jaygmbXNpLT5sb2NrKTsNCj4gPg0KPiA+IC0JaWYgKCF0ZXN0X2JpdChkLT5od2ly cSwgbXNpLT5tc2lfaXJxX2luX3VzZSkpIHsNCj4gPiArCWlmICghdGVzdF9iaXQoZC0+aHdpcnEs IG1zaS0+bXNpX2lycV9pbl91c2UpKQ0KPiA+ICAJCWRldl9lcnIoJnBjaWUtPnBkZXYtPmRldiwg InRyeWluZyB0byBmcmVlIHVudXNlZCBNU0kjJWx1XG4iLA0KPiA+ICAJCQlkLT5od2lycSk7DQo+ ID4gLQl9IGVsc2Ugew0KPiA+ICsJZWxzZQ0KPiA+ICAJCV9fY2xlYXJfYml0KGQtPmh3aXJxLCBt c2ktPm1zaV9pcnFfaW5fdXNlKTsNCj4gPiAtCX0NCj4gPg0KPiA+ICAJbXV0ZXhfdW5sb2NrKCZt c2ktPmxvY2spOw0KPiA+ICB9DQo+ID4gQEAgLTc4NSwxMiArNzk2LDE0IEBAIHN0YXRpYyBpbnQg bW9iaXZlaWxfYWxsb2NhdGVfbXNpX2RvbWFpbnMoc3RydWN0DQo+IG1vYml2ZWlsX3BjaWUgKnBj aWUpDQo+ID4gIAl9DQo+ID4NCj4gPiAgCW1zaS0+bXNpX2RvbWFpbiA9IHBjaV9tc2lfY3JlYXRl X2lycV9kb21haW4oZndub2RlLA0KPiA+IC0JCQkJJm1vYml2ZWlsX21zaV9kb21haW5faW5mbywg bXNpLT5kZXZfZG9tYWluKTsNCj4gPiArCQkJCQkJICAgICZtb2JpdmVpbF9tc2lfZG9tYWluX2lu Zm8sDQo+ID4gKwkJCQkJCSAgICBtc2ktPmRldl9kb21haW4pOw0KPiA+ICAJaWYgKCFtc2ktPm1z aV9kb21haW4pIHsNCj4gPiAgCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBjcmVhdGUgTVNJIGRv bWFpblxuIik7DQo+ID4gIAkJaXJxX2RvbWFpbl9yZW1vdmUobXNpLT5kZXZfZG9tYWluKTsNCj4g PiAgCQlyZXR1cm4gLUVOT01FTTsNCj4gPiAgCX0NCj4gPiArDQo+ID4gIAlyZXR1cm4gMDsNCj4g PiAgfQ0KPiA+DQo+ID4gQEAgLTgwMSw4ICs4MTQsOCBAQCBzdGF0aWMgaW50IG1vYml2ZWlsX3Bj aWVfaW5pdF9pcnFfZG9tYWluKHN0cnVjdA0KPiBtb2JpdmVpbF9wY2llICpwY2llKQ0KPiA+ICAJ aW50IHJldDsNCj4gPg0KPiA+ICAJLyogc2V0dXAgSU5UeCAqLw0KPiA+IC0JcGNpZS0+aW50eF9k b21haW4gPSBpcnFfZG9tYWluX2FkZF9saW5lYXIobm9kZSwNCj4gPiAtCQkJCVBDSV9OVU1fSU5U WCwgJmludHhfZG9tYWluX29wcywgcGNpZSk7DQo+ID4gKwlwY2llLT5pbnR4X2RvbWFpbiA9IGly cV9kb21haW5fYWRkX2xpbmVhcihub2RlLCBQQ0lfTlVNX0lOVFgsDQo+ID4gKwkJCQkJCSAgJmlu dHhfZG9tYWluX29wcywgcGNpZSk7DQo+ID4NCj4gPiAgCWlmICghcGNpZS0+aW50eF9kb21haW4p IHsNCj4gPiAgCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBnZXQgYSBJTlR4IElSUSBkb21haW5c biIpOyBAQCAtOTE3LDEwDQo+ID4gKzkzMCwxMCBAQCBNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBt b2JpdmVpbF9wY2llX29mX21hdGNoKTsNCj4gc3RhdGljDQo+ID4gc3RydWN0IHBsYXRmb3JtX2Ry aXZlciBtb2JpdmVpbF9wY2llX2RyaXZlciA9IHsNCj4gPiAgCS5wcm9iZSA9IG1vYml2ZWlsX3Bj aWVfcHJvYmUsDQo+ID4gIAkuZHJpdmVyID0gew0KPiA+IC0JCQkubmFtZSA9ICJtb2JpdmVpbC1w Y2llIiwNCj4gPiAtCQkJLm9mX21hdGNoX3RhYmxlID0gbW9iaXZlaWxfcGNpZV9vZl9tYXRjaCwN Cj4gPiAtCQkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KPiA+IC0JCX0sDQo+ID4gKwkJ Lm5hbWUgPSAibW9iaXZlaWwtcGNpZSIsDQo+ID4gKwkJLm9mX21hdGNoX3RhYmxlID0gbW9iaXZl aWxfcGNpZV9vZl9tYXRjaCwNCj4gPiArCQkuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsDQo+ ID4gKwl9LA0KPiA+ICB9Ow0KPiA+DQo+ID4gIGJ1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKG1vYml2 ZWlsX3BjaWVfZHJpdmVyKTsNCj4gPiAtLQ0KPiA+IDIuMTcuMQ0KPiA+DQo=