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_PASS 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 F2922C43218 for ; Mon, 29 Apr 2019 02:38:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 9526C20843 for ; Mon, 29 Apr 2019 02:38:54 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="MN4ir2D9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726995AbfD2Cix (ORCPT ); Sun, 28 Apr 2019 22:38:53 -0400 Received: from mail-eopbgr70052.outbound.protection.outlook.com ([40.107.7.52]:51742 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726819AbfD2Cix (ORCPT ); Sun, 28 Apr 2019 22:38:53 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8MazRWtMmIDXXZKNak57DKoafdXaKYHaWhJGKCFxwKU=; b=MN4ir2D97ctsel/YV1uj9WJUjvuj2RD55VBm/J5dQ/fawhhZpEIm322Lcqmjobt1pK622HIx8uiEq0xYBuaRb+IjmdHFJhtZNmrn6GzR7Khml4rmi/7ngu/paDJtKVqKVr2Fqht2/2phY2K+cW+TO0zJnDLaWEei3te97ZKKDy8= Received: from AM5PR04MB3299.eurprd04.prod.outlook.com (10.173.255.158) by AM5PR04MB2962.eurprd04.prod.outlook.com (10.173.254.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1835.13; Mon, 29 Apr 2019 02:38:37 +0000 Received: from AM5PR04MB3299.eurprd04.prod.outlook.com ([fe80::7405:508b:e792:307d]) by AM5PR04MB3299.eurprd04.prod.outlook.com ([fe80::7405:508b:e792:307d%3]) with mapi id 15.20.1835.018; Mon, 29 Apr 2019 02:38:37 +0000 From: Xiaowei Bao To: Lorenzo Pieralisi CC: "bhelgaas@google.com" , "Z.q. Hou" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "shawnguo@kernel.org" , Leo Li , "kishon@ti.com" , "gregkh@linuxfoundation.org" , "l.subrahmanya@mobiveil.co.in" , "arnd@arndb.de" , "M.h. Lian" , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [EXT] Re: [PATCH 1/6] PCI: mobiveil: Add the EP mode support Thread-Topic: [EXT] Re: [PATCH 1/6] PCI: mobiveil: Add the EP mode support Thread-Index: AQHUx2+3DnIqhcKED0awzdzidSt8lqZNJiKAgAWy3cA= Date: Mon, 29 Apr 2019 02:38:36 +0000 Message-ID: References: <20190218094643.2692-1-xiaowei.bao@nxp.com> <20190425113203.GD10833@e121166-lin.cambridge.arm.com> In-Reply-To: <20190425113203.GD10833@e121166-lin.cambridge.arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=xiaowei.bao@nxp.com; x-originating-ip: [119.31.174.73] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4e431d1a-98fe-4aee-3245-08d6cc4bc812 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:AM5PR04MB2962; x-ms-traffictypediagnostic: AM5PR04MB2962: x-ms-exchange-purlcount: 4 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6790; x-forefront-prvs: 0022134A87 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(396003)(346002)(366004)(376002)(136003)(199004)(189003)(13464003)(478600001)(6506007)(66066001)(53546011)(52536014)(30864003)(6436002)(76176011)(6116002)(8676002)(102836004)(25786009)(81166006)(81156014)(3846002)(55016002)(86362001)(4326008)(68736007)(6246003)(229853002)(9686003)(5660300002)(6306002)(53936002)(53946003)(8936002)(7696005)(73956011)(71190400001)(71200400001)(6916009)(76116006)(45080400002)(66556008)(256004)(54906003)(14444005)(66946007)(33656002)(14454004)(64756008)(66446008)(316002)(66476007)(305945005)(97736004)(74316002)(7736002)(44832011)(476003)(7416002)(446003)(11346002)(186003)(99286004)(26005)(486006)(2906002)(966005)(461764006)(559001)(579004)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM5PR04MB2962;H:AM5PR04MB3299.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: cetx2/gmCPG3LhcxYntd6MViwxYmAe6efvYnIE2YULfIcbQx9ZvwtLmkJdhbfkM1mLW9Xr4kTgqd9355vK9J6Rge6UjQat7L6cn2/Qn8tGZU3dQaFxv8z63b/A7u2ijSXI7sSlKo7vjurVnFhgzGQafdQ+2WJ16hYYUyNjl9gKkKVpzIdDW2fjPHXsX6dQgOC/Q3Y4fi/EBoDHNd67SMUaa2QYb3h9Jfsny5DsOHrOxeWIShTJKf3rnVcWoDVNliQ2qamOB7XjLYeBju1vRQhLXY+3dgvesdL79KK39Vtwtlaho94RvP713KUMdaygOyXF3gshrUwv4x3oUa91sOD21z6gNbL6QaMZ1V3EORU2zVKN8QOLh3H5rk2ecr5XFtFO1KVKDCiMtnac//g5zxhs8bQrW74MLqu3eDslRAJP4= 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: 4e431d1a-98fe-4aee-3245-08d6cc4bc812 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Apr 2019 02:38:36.8881 (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-Transport-CrossTenantHeadersStamped: AM5PR04MB2962 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org SGkgTG9yZW56bywNCg0KVGhhbmtzIGEgbG90IGZvciB5b3VyIGNvbW1lbnRzLCBJIGFtIHdhaXRp bmcgZm9yIHRoaXMgcGF0Y2hlcyBhcHByb3ZlIG9mIGh0dHA6Ly9wYXRjaHdvcmsub3psYWJzLm9y Zy9wcm9qZWN0L2xpbnV4LXBjaS9saXN0Lz9zZXJpZXM9MTAyMzc4LCBhbmQgb25jZSB0aGVzZSBw YXRjaGVzIGFwcHJvdmVkLCBJIHdpbGwgcmVzZW50IHRoZSBwYXRjaGVzIGJhc2Ugb24gdGhlIGxh dGVzdCBiYXNlLg0KDQpCZXN0IHJlZ2FyZHMNClhpYW93ZWkNCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBpZXJhbGlzaUBhcm0u Y29tPiANClNlbnQ6IDIwMTnE6jTUwjI1yNUgMTk6MzINClRvOiBYaWFvd2VpIEJhbyA8eGlhb3dl aS5iYW9AbnhwLmNvbT4NCkNjOiBiaGVsZ2Fhc0Bnb29nbGUuY29tOyBaLnEuIEhvdSA8emhpcWlh bmcuaG91QG54cC5jb20+OyByb2JoK2R0QGtlcm5lbC5vcmc7IG1hcmsucnV0bGFuZEBhcm0uY29t OyBzaGF3bmd1b0BrZXJuZWwub3JnOyBMZW8gTGkgPGxlb3lhbmcubGlAbnhwLmNvbT47IGtpc2hv bkB0aS5jb207IGdyZWdraEBsaW51eGZvdW5kYXRpb24ub3JnOyBsLnN1YnJhaG1hbnlhQG1vYml2 ZWlsLmNvLmluOyBhcm5kQGFybmRiLmRlOyBNLmguIExpYW4gPG1pbmdodWFuLmxpYW5AbnhwLmNv bT47IGxpbnV4LXBjaUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZzsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmcNClN1YmplY3Q6IFtFWFRdIFJlOiBbUEFUQ0ggMS82XSBQQ0k6IG1vYml2ZWls OiBBZGQgdGhlIEVQIG1vZGUgc3VwcG9ydA0KDQpDYXV0aW9uOiBFWFQgRW1haWwNCg0KT24gTW9u LCBGZWIgMTgsIDIwMTkgYXQgMDU6NDY6MzhQTSArMDgwMCwgWGlhb3dlaSBCYW8gd3JvdGU6DQo+ IEFkZCB0aGUgRVAgbW9kZSBzdXBwb3J0IGZvciBNb2JpdmVpbCBiYXNlIG9uIGVuZHBvaW50IGZy YW1ld29yay4NCj4NCj4gU2lnbmVkLW9mZi1ieTogWGlhb3dlaSBCYW8gPHhpYW93ZWkuYmFvQG54 cC5jb20+DQo+IC0tLQ0KPiBkZXBlbmRzIG9uOiANCj4gaHR0cHM6Ly9ldXIwMS5zYWZlbGlua3Mu cHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAlM0ElMkYlMkZwYXRjaA0KPiB3b3JrLm96 bGFicy5vcmclMkZwcm9qZWN0JTJGbGludXgtcGNpJTJGbGlzdCUyRiUzRnNlcmllcyUzRDg4NzU0 JmFtcDtkDQo+IGF0YT0wMiU3QzAxJTdDeGlhb3dlaS5iYW8lNDBueHAuY29tJTdDNTI3NTVhYWJh ZTNhNGNjYTY1YmEwOGQ2Yzk3MWE3ZGUNCj4gJTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljNWMz MDE2MzUlN0MwJTdDMCU3QzYzNjkxNzg4NzM2MDI3OTkwMyZhbXA7cw0KPiBkYXRhPTludyUyQndW S3gxMTkzN1ZoNVNod1FOWDk3UXpDM3E5UEpWVENRc2JGYmZqYyUzRCZhbXA7cmVzZXJ2ZWQ9MA0K DQpZb3Ugd2lsbCBoYXZlIHRvIHJlYmFzZSBpdCBvbiB0b3Agb2YgdGhlIHVwZGF0ZWQgc2VyaWVz Og0KDQpodHRwczovL2V1cjAxLnNhZmVsaW5rcy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9 aHR0cHMlM0ElMkYlMkZwYXRjaHdvcmsub3psYWJzLm9yZyUyRnVzZXIlMkZ0b2RvJTJGbGludXgt cGNpJTJGJTNGc2VyaWVzJTNEMTAyMzc4JmFtcDtkYXRhPTAyJTdDMDElN0N4aWFvd2VpLmJhbyU0 MG54cC5jb20lN0M1Mjc1NWFhYmFlM2E0Y2NhNjViYTA4ZDZjOTcxYTdkZSU3QzY4NmVhMWQzYmMy YjRjNmZhOTJjZDk5YzVjMzAxNjM1JTdDMCU3QzAlN0M2MzY5MTc4ODczNjAyNzk5MDMmYW1wO3Nk YXRhPXZxcHdkWE16VHRjNFVmMnZ0M3ZIeE9MNVBsSEhZWSUyRjNEc2ZqN0NJc0pmYyUzRCZhbXA7 cmVzZXJ2ZWQ9MA0KaHR0cHM6Ly9ldXIwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNv bS8/dXJsPWh0dHBzJTNBJTJGJTJGcGF0Y2h3b3JrLm96bGFicy5vcmclMkZ1c2VyJTJGdG9kbyUy RmxpbnV4LXBjaSUyRiUzRnNlcmllcyUzRDEwMjM5NiZhbXA7ZGF0YT0wMiU3QzAxJTdDeGlhb3dl aS5iYW8lNDBueHAuY29tJTdDNTI3NTVhYWJhZTNhNGNjYTY1YmEwOGQ2Yzk3MWE3ZGUlN0M2ODZl YTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDNjM2OTE3ODg3MzYwMjc5OTAz JmFtcDtzZGF0YT1EJTJGNWNUSWlCeTVDSFU0SzdLN242R0hjRmxydDZSViUyRmY5anNqeDhibWFZ NCUzRCZhbXA7cmVzZXJ2ZWQ9MA0KDQpJIHdpbGwgbWFyayBpdCBhcyBzdXBlcnNlZGVkIGluIHBh dGNod29yaywgdGhhbmtzLg0KDQpMb3JlbnpvDQoNCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIv bW9iaXZlaWwvS2NvbmZpZyAgICAgICAgICAgIHwgICAgNSArDQo+ICBkcml2ZXJzL3BjaS9jb250 cm9sbGVyL21vYml2ZWlsL01ha2VmaWxlICAgICAgICAgICB8ICAgIDEgKw0KPiAgZHJpdmVycy9w Y2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWVwLmMgfCAgNTI3ICsrKysrKysr KysrKysrKysrKysrDQo+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL3BjaWUtbW9i aXZlaWwuYyAgICB8ICAxMDAgKysrKy0NCj4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZl aWwvcGNpZS1tb2JpdmVpbC5oICAgIHwgICA2NCArKysNCj4gIDUgZmlsZXMgY2hhbmdlZCwgNjkx IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pICBjcmVhdGUgbW9kZSANCj4gMTAwNjQ0IGRy aXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC1lcC5jDQo+DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL0tjb25maWcgDQo+IGIv ZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9LY29uZmlnDQo+IGluZGV4IDNkZGI3ZDYu LmMwMzdkYjYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwv S2NvbmZpZw0KPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL21vYml2ZWlsL0tjb25maWcN Cj4gQEAgLTExLDYgKzExLDExIEBAIGNvbmZpZyBQQ0lFX01PQklWRUlMX0hPU1QNCj4gICAgICAg ZGVwZW5kcyBvbiBQQ0lfTVNJX0lSUV9ET01BSU4NCj4gICAgICAgICAgc2VsZWN0IFBDSUVfTU9C SVZFSUwNCj4NCj4gK2NvbmZpZyBQQ0lFX01PQklWRUlMX0VQDQo+ICsgICAgIGJvb2wNCj4gKyAg ICAgZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlQNCj4gKyAgICAgc2VsZWN0IFBDSUVfTU9CSVZFSUwN Cj4gKw0KPiAgY29uZmlnIFBDSUVfTU9CSVZFSUxfUExBVA0KPiAgICAgICBib29sICJNb2JpdmVp bCBBWEkgUENJZSBjb250cm9sbGVyIg0KPiAgICAgICBkZXBlbmRzIG9uIEFSQ0hfWllOUU1QIHx8 IENPTVBJTEVfVEVTVCBkaWZmIC0tZ2l0IA0KPiBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9i aXZlaWwvTWFrZWZpbGUgDQo+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9NYWtl ZmlsZQ0KPiBpbmRleCBmZjY2Nzc0Li40ZjUyMGI3IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL21vYml2ZWlsL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvbW9iaXZlaWwvTWFrZWZpbGUNCj4gQEAgLTEsNSArMSw2IEBADQo+ICAjIFNQRFgtTGlj ZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICBvYmotJChDT05GSUdfUENJRV9NT0JJVkVJTCkg Kz0gcGNpZS1tb2JpdmVpbC5vDQo+ICBvYmotJChDT05GSUdfUENJRV9NT0JJVkVJTF9IT1NUKSAr PSBwY2llLW1vYml2ZWlsLWhvc3Qubw0KPiArb2JqLSQoQ09ORklHX1BDSUVfTU9CSVZFSUxfRVAp ICs9IHBjaWUtbW9iaXZlaWwtZXAubw0KPiAgb2JqLSQoQ09ORklHX1BDSUVfTU9CSVZFSUxfUExB VCkgKz0gcGNpZS1tb2JpdmVpbC1wbGF0Lm8NCj4gIG9iai0kKENPTkZJR19QQ0lfTEFZRVJTQ0FQ RV9HRU40KSArPSBwY2ktbGF5ZXJzY2FwZS1nZW40Lm8gZGlmZiAtLWdpdCANCj4gYS9kcml2ZXJz L3BjaS9jb250cm9sbGVyL21vYml2ZWlsL3BjaWUtbW9iaXZlaWwtZXAuYyANCj4gYi9kcml2ZXJz L3BjaS9jb250cm9sbGVyL21vYml2ZWlsL3BjaWUtbW9iaXZlaWwtZXAuYw0KPiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi4xNmNhN2ZiDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9tb2JpdmVpbC9wY2llLW1vYml2ZWlsLWVwLmMN Cj4gQEAgLTAsMCArMSw1MjcgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+ICsvKioNCj4gKyAqIE1vYml2ZWlsIFBDSWUgRW5kcG9pbnQgY29udHJvbGxlciBkcml2 ZXINCj4gKyAqDQo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTggTlhQIFNlbWljb25kdWN0b3IuDQo+ ICsgKiBBdXRob3I6IFhpYW93ZWkgQmFvIDx4aWFvd2VpLmJhb0BueHAuY29tPiAgKi8NCj4gKw0K PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcGNpLWVwYy5oPg0K PiArI2luY2x1ZGUgPGxpbnV4L3BjaS1lcGYuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9y bV9kZXZpY2UuaD4NCj4gKyNpbmNsdWRlICJwY2llLW1vYml2ZWlsLmgiDQo+ICsNCj4gK3ZvaWQg bW9iaXZlaWxfcGNpZV9lcF9saW5rdXAoc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwKSB7DQo+ ICsgICAgIHN0cnVjdCBwY2lfZXBjICplcGMgPSBlcC0+ZXBjOw0KPiArDQo+ICsgICAgIHBjaV9l cGNfbGlua3VwKGVwYyk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIF9fbW9iaXZlaWxfcGNp ZV9lcF9yZXNldF9iYXIoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcGNpX2Jhcm5vIGJhcikgew0KPiArICAg ICBjc3Jfd3JpdGVsKHBjaWUsIGJhciwgR1BFWF9CQVJfU0VMRUNUKTsNCj4gKyAgICAgY3NyX3dy aXRlbChwY2llLCAwLCBHUEVYX0JBUl9TSVpFX0xEVyk7DQo+ICsgICAgIGNzcl93cml0ZWwocGNp ZSwgMCwgR1BFWF9CQVJfU0laRV9VRFcpOyB9DQo+ICsNCj4gK3ZvaWQgbW9iaXZlaWxfcGNpZV9l cF9yZXNldF9iYXIoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsDQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gcGNpX2Jhcm5vIGJhcikgew0KPiArICAgICBfX21vYml2ZWls X3BjaWVfZXBfcmVzZXRfYmFyKHBjaWUsIGJhcik7IH0NCj4gKw0KPiArc3RhdGljIHU4IF9fbW9i aXZlaWxfcGNpZV9lcF9maW5kX25leHRfY2FwKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IGNhcF9wdHIsIHU4 IGNhcCkgew0KPiArICAgICB1OCBjYXBfaWQsIG5leHRfY2FwX3B0cjsNCj4gKyAgICAgdTE2IHJl ZzsNCj4gKw0KPiArICAgICByZWcgPSBjc3JfcmVhZHcocGNpZSwgY2FwX3B0cik7DQo+ICsgICAg IG5leHRfY2FwX3B0ciA9IChyZWcgJiAweGZmMDApID4+IDg7DQo+ICsgICAgIGNhcF9pZCA9IChy ZWcgJiAweDAwZmYpOw0KPiArDQo+ICsgICAgIGlmIChjYXBfaWQgPT0gY2FwKQ0KPiArICAgICAg ICAgICAgIHJldHVybiBjYXBfcHRyOw0KPiArDQo+ICsgICAgIGlmICghbmV4dF9jYXBfcHRyIHx8 IGNhcF9pZCA+IFBDSV9DQVBfSURfTUFYKQ0KPiArICAgICAgICAgICAgIHJldHVybiAwOw0KPiAr DQo+ICsgICAgIHJldHVybiBfX21vYml2ZWlsX3BjaWVfZXBfZmluZF9uZXh0X2NhcChwY2llLCBu ZXh0X2NhcF9wdHIsIA0KPiArY2FwKTsgfQ0KPiArDQo+ICtzdGF0aWMgdTggbW9iaXZlaWxfcGNp ZV9lcF9maW5kX2NhcGFiaWxpdHkoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggY2FwKSB7DQo+ICsgICAgIHU4 IG5leHRfY2FwX3B0cjsNCj4gKyAgICAgdTE2IHJlZzsNCj4gKw0KPiArICAgICByZWcgPSBjc3Jf cmVhZHcocGNpZSwgUENJX0NBUEFCSUxJVFlfTElTVCk7DQo+ICsgICAgIG5leHRfY2FwX3B0ciA9 IChyZWcgJiAweDAwZmYpOw0KPiArDQo+ICsgICAgIGlmICghbmV4dF9jYXBfcHRyKQ0KPiArICAg ICAgICAgICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgIHJldHVybiBfX21vYml2ZWlsX3BjaWVf ZXBfZmluZF9uZXh0X2NhcChwY2llLCBuZXh0X2NhcF9wdHIsIA0KPiArY2FwKTsgfQ0KPiArDQo+ ICtzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfZXBfd3JpdGVfaGVhZGVyKHN0cnVjdCBwY2lfZXBj ICplcGMsIHU4IGZ1bmNfbm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBwY2lfZXBmX2hlYWRlciAqaGRyKSB7DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVp bF9wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOw0KPiArICAgICBzdHJ1Y3QgbW9i aXZlaWxfcGNpZSAqcGNpZSA9IHRvX21vYml2ZWlsX3BjaWVfZnJvbV9lcChlcCk7DQo+ICsNCj4g KyAgICAgY3NyX3dyaXRldyhwY2llLCBoZHItPnZlbmRvcmlkLCBQQ0lfVkVORE9SX0lEKTsNCj4g KyAgICAgY3NyX3dyaXRldyhwY2llLCBoZHItPmRldmljZWlkLCBQQ0lfREVWSUNFX0lEKTsNCj4g KyAgICAgY3NyX3dyaXRlYihwY2llLCBoZHItPnJldmlkLCBQQ0lfUkVWSVNJT05fSUQpOw0KPiAr ICAgICBjc3Jfd3JpdGViKHBjaWUsIGhkci0+cHJvZ2lmX2NvZGUsIFBDSV9DTEFTU19QUk9HKTsN Cj4gKyAgICAgY3NyX3dyaXRldyhwY2llLCBoZHItPnN1YmNsYXNzX2NvZGUgfCBoZHItPmJhc2Vj bGFzc19jb2RlIDw8IDgsDQo+ICsgICAgICAgICAgICAgICAgUENJX0NMQVNTX0RFVklDRSk7DQo+ ICsgICAgIGNzcl93cml0ZWIocGNpZSwgaGRyLT5jYWNoZV9saW5lX3NpemUsIFBDSV9DQUNIRV9M SU5FX1NJWkUpOw0KPiArICAgICBjc3Jfd3JpdGV3KHBjaWUsIGhkci0+c3Vic3lzX3ZlbmRvcl9p ZCwgUENJX1NVQlNZU1RFTV9WRU5ET1JfSUQpOw0KPiArICAgICBjc3Jfd3JpdGV3KHBjaWUsIGhk ci0+c3Vic3lzX2lkLCBQQ0lfU1VCU1lTVEVNX0lEKTsNCj4gKyAgICAgY3NyX3dyaXRlYihwY2ll LCBoZHItPmludGVycnVwdF9waW4sIFBDSV9JTlRFUlJVUFRfUElOKTsNCj4gKw0KPiArICAgICBy ZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtb2JpdmVpbF9wY2llX2VwX2luYm91 bmRfYXR1KHN0cnVjdCBtb2JpdmVpbF9wY2llX2VwICplcCwNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1OCBmdW5jX25vLCBlbnVtIHBjaV9iYXJubyBiYXIsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG1hX2FkZHJfdCBjcHVfYWRkcikg ew0KPiArICAgICBzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSA9IHRvX21vYml2ZWlsX3BjaWVf ZnJvbV9lcChlcCk7DQo+ICsNCj4gKyAgICAgcHJvZ3JhbV9pYl93aW5kb3dzX2VwKHBjaWUsIGZ1 bmNfbm8sIGJhciwgY3B1X2FkZHIpOw0KPiArDQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0KPiAr DQo+ICtzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfZXBfb3V0Ym91bmRfYXR1KHN0cnVjdCBtb2Jp dmVpbF9wY2llX2VwICplcCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGh5c19hZGRyX3QgcGh5c19hZGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1NjQgcGNpX2FkZHIsIHU4IGZ1bmNfbm8sDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzaXplKSB7DQo+ICsgICAgIGludCByZXQ7DQo+ ICsgICAgIHUzMiBmcmVlX3dpbjsNCj4gKyAgICAgc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUg PSB0b19tb2JpdmVpbF9wY2llX2Zyb21fZXAoZXApOw0KPiArDQo+ICsgICAgIGZyZWVfd2luID0g ZmluZF9maXJzdF96ZXJvX2JpdChlcC0+b2Jfd2luZG93X21hcCwgZXAtPm51bV9vYl93aW5kb3dz KTsNCj4gKyAgICAgaWYgKGZyZWVfd2luID49IGVwLT5udW1fb2Jfd2luZG93cykgew0KPiArICAg ICAgICAgICAgIGRldl9lcnIoJnBjaWUtPnBkZXYtPmRldiwgIk5vIGZyZWUgb3V0Ym91bmQgd2lu ZG93XG4iKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgfQ0KPiAr DQo+ICsgICAgIHJldCA9IHByb2dyYW1fb2Jfd2luZG93c19lcChwY2llLCBmcmVlX3dpbiwgTUVN X1dJTkRPV19UWVBFLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19h ZGRyLCBwY2lfYWRkciwgZnVuY19ubywgc2l6ZSk7DQo+ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+ ICsgICAgICAgICAgICAgZGV2X2VycigmcGNpZS0+cGRldi0+ZGV2LCAiRmFpbGVkIHRvIHByb2dy YW0gSUIgd2luZG93XG4iKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICB9 DQo+ICsNCj4gKyAgICAgc2V0X2JpdChmcmVlX3dpbiwgZXAtPm9iX3dpbmRvd19tYXApOw0KPiAr ICAgICBlcC0+b3V0Ym91bmRfYWRkcltmcmVlX3dpbl0gPSBwaHlzX2FkZHI7DQo+ICsNCj4gKyAg ICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIG1vYml2ZWlsX3BjaWVfZXBf Y2xlYXJfYmFyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGNpX2VwZl9iYXIgKmVwZl9iYXIpIHsN Cj4gKyAgICAgc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVw Yyk7DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0gdG9fbW9iaXZlaWxfcGNp ZV9mcm9tX2VwKGVwKTsNCj4gKyAgICAgZW51bSBwY2lfYmFybm8gYmFyID0gZXBmX2Jhci0+YmFy bm87DQo+ICsNCj4gKyAgICAgaWYgKGJhciA8IGVwLT5iYXJfbnVtKSB7DQo+ICsgICAgICAgICAg ICAgX19tb2JpdmVpbF9wY2llX2VwX3Jlc2V0X2JhcihwY2llLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19ubyAqIGVwLT5iYXJfbnVtICsgDQo+ICsg YmFyKTsNCj4gKw0KPiArICAgICAgICAgICAgIG1vYml2ZWlsX3BjaWVfZGlzYWJsZV9pYl93aW5f ZXAocGNpZSwgZnVuY19ubywgYmFyKTsNCj4gKyAgICAgfQ0KPiArfQ0KPiArDQo+ICtzdGF0aWMg aW50IG1vYml2ZWlsX3BjaWVfZXBfc2V0X2JhcihzdHJ1Y3QgcGNpX2VwYyAqZXBjLCB1OCBmdW5j X25vLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHBjaV9lcGZf YmFyICplcGZfYmFyKSB7DQo+ICsgICAgIGludCByZXQ7DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVp bF9wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMpOw0KPiArICAgICBzdHJ1Y3QgbW9i aXZlaWxfcGNpZSAqcGNpZSA9IHRvX21vYml2ZWlsX3BjaWVfZnJvbV9lcChlcCk7DQo+ICsgICAg IGVudW0gcGNpX2Jhcm5vIGJhciA9IGVwZl9iYXItPmJhcm5vOw0KPiArICAgICBzaXplX3Qgc2l6 ZSA9IGVwZl9iYXItPnNpemU7DQo+ICsNCj4gKyAgICAgaWYgKGJhciA8IGVwLT5iYXJfbnVtKSB7 DQo+ICsgICAgICAgICAgICAgcmV0ID0gbW9iaXZlaWxfcGNpZV9lcF9pbmJvdW5kX2F0dShlcCwg ZnVuY19ubywgYmFyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXBmX2Jhci0+cGh5c19hZGRyKTsNCj4gKyAgICAgICAgICAgICBpZiAocmV0KQ0K PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiArICAgICAgICAgICAg IGNzcl93cml0ZWwocGNpZSwgZnVuY19ubyAqIGVwLT5iYXJfbnVtICsgYmFyLA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgR1BFWF9CQVJfU0VMRUNUKTsNCj4gKyAgICAgICAgICAgICBjc3Jf d3JpdGVsKHBjaWUsIGxvd2VyXzMyX2JpdHMofihzaXplIC0gMSkpLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgR1BFWF9CQVJfU0laRV9MRFcpOw0KPiArICAgICAgICAgICAgIGNzcl93cml0 ZWwocGNpZSwgdXBwZXJfMzJfYml0cyh+KHNpemUgLSAxKSksDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICBHUEVYX0JBUl9TSVpFX1VEVyk7DQo+ICsgICAgIH0NCj4gKw0KPiArICAgICByZXR1 cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtb2JpdmVpbF9wY2llX2ZpbmRfaW5kZXgo c3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcGh5c19hZGRyX3QgYWRkciwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHUzMiAqYXR1X2luZGV4KSB7DQo+ICsgICAgIHUzMiBpbmRleDsNCj4gKw0KPiArICAg ICBmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBlcC0+bnVtX29iX3dpbmRvd3M7IGluZGV4KyspIHsN Cj4gKyAgICAgICAgICAgICBpZiAoZXAtPm91dGJvdW5kX2FkZHJbaW5kZXhdICE9IGFkZHIpDQo+ ICsgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4gKyAgICAgICAgICAgICAqYXR1X2lu ZGV4ID0gaW5kZXg7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIDA7DQo+ICsgICAgIH0NCj4gKw0K PiArICAgICByZXR1cm4gLUVJTlZBTDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbW9iaXZl aWxfcGNpZV9lcF91bm1hcF9hZGRyKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8sDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGh5c19hZGRyX3QgYWRkcikg ew0KPiArICAgICBpbnQgcmV0Ow0KPiArICAgICB1MzIgYXR1X2luZGV4Ow0KPiArICAgICBzdHJ1 Y3QgbW9iaXZlaWxfcGNpZV9lcCAqZXAgPSBlcGNfZ2V0X2RydmRhdGEoZXBjKTsNCj4gKyAgICAg c3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSB0b19tb2JpdmVpbF9wY2llX2Zyb21fZXAoZXAp Ow0KPiArDQo+ICsgICAgIHJldCA9IG1vYml2ZWlsX3BjaWVfZmluZF9pbmRleChlcCwgYWRkciwg JmF0dV9pbmRleCk7DQo+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgIHJldHVy bjsNCj4gKw0KPiArICAgICBtb2JpdmVpbF9wY2llX2Rpc2FibGVfb2Jfd2luKHBjaWUsIGF0dV9p bmRleCk7DQo+ICsgICAgIGNsZWFyX2JpdChhdHVfaW5kZXgsIGVwLT5vYl93aW5kb3dfbWFwKTsg fQ0KPiArDQo+ICtzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfZXBfbWFwX2FkZHIoc3RydWN0IHBj aV9lcGMgKmVwYywgdTggZnVuY19ubywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwaHlzX2FkZHJfdCBhZGRyLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHU2NCBwY2lfYWRkciwgc2l6ZV90IHNpemUpIHsNCj4gKyAgICAgaW50IHJldDsNCj4gKyAg ICAgc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7DQo+ ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0gdG9fbW9iaXZlaWxfcGNpZV9mcm9t X2VwKGVwKTsNCj4gKw0KPiArICAgICByZXQgPSBtb2JpdmVpbF9wY2llX2VwX291dGJvdW5kX2F0 dShlcCwgYWRkciwgcGNpX2FkZHIsIGZ1bmNfbm8sIHNpemUpOw0KPiArICAgICBpZiAocmV0KSB7 DQo+ICsgICAgICAgICAgICAgZGV2X2VycigmcGNpZS0+cGRldi0+ZGV2LCAiRmFpbGVkIHRvIGVu YWJsZSBhZGRyZXNzXG4iKTsNCj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArICAgICB9 DQo+ICsNCj4gKyAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbW9iaXZl aWxfcGNpZV9lcF9nZXRfbXNpKHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNfbm8pIA0KPiAr ew0KPiArICAgICBzdHJ1Y3QgbW9iaXZlaWxfcGNpZV9lcCAqZXAgPSBlcGNfZ2V0X2RydmRhdGEo ZXBjKTsNCj4gKyAgICAgc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSB0b19tb2JpdmVpbF9w Y2llX2Zyb21fZXAoZXApOw0KPiArICAgICB1MzIgdmFsLCByZWc7DQo+ICsNCj4gKyAgICAgaWYg KCFlcC0+bXNpX2NhcCkNCj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiAr ICAgICByZWcgPSBlcC0+bXNpX2NhcCArIFBDSV9NU0lfRkxBR1M7DQo+ICsgICAgIHZhbCA9IGNz cl9yZWFkdyhwY2llLCByZWcpOw0KPiArICAgICBpZiAoISh2YWwgJiBQQ0lfTVNJX0ZMQUdTX0VO QUJMRSkpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgdmFs ID0gKHZhbCAmIFBDSV9NU0lfRkxBR1NfUVNJWkUpID4+IDQ7DQo+ICsNCj4gKyAgICAgcmV0dXJu IHZhbDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtb2JpdmVpbF9wY2llX2VwX3NldF9tc2ko c3RydWN0IHBjaV9lcGMgKmVwYywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHU4IGZ1bmNfbm8sIHU4IGludGVycnVwdHMpIHsNCj4gKyAgICAgc3RydWN0IG1vYml2ZWlsX3Bj aWVfZXAgKmVwID0gZXBjX2dldF9kcnZkYXRhKGVwYyk7DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVp bF9wY2llICpwY2llID0gdG9fbW9iaXZlaWxfcGNpZV9mcm9tX2VwKGVwKTsNCj4gKyAgICAgdTMy IHZhbCwgcmVnOw0KPiArDQo+ICsgICAgIGlmICghZXAtPm1zaV9jYXApDQo+ICsgICAgICAgICAg ICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lf TVNJX0ZMQUdTOw0KPiArICAgICB2YWwgPSBjc3JfcmVhZHcocGNpZSwgcmVnKTsNCj4gKyAgICAg dmFsICY9IH5QQ0lfTVNJX0ZMQUdTX1FNQVNLOw0KPiArICAgICB2YWwgfD0gKGludGVycnVwdHMg PDwgMSkgJiBQQ0lfTVNJX0ZMQUdTX1FNQVNLOw0KPiArICAgICBjc3Jfd3JpdGV3KHBjaWUsIHZh bCwgcmVnKTsNCj4gKw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGlu dCBtb2JpdmVpbF9wY2llX2VwX2dldF9tc2l4KHN0cnVjdCBwY2lfZXBjICplcGMsIHU4IGZ1bmNf bm8pIA0KPiArew0KPiArICAgICBzdHJ1Y3QgbW9iaXZlaWxfcGNpZV9lcCAqZXAgPSBlcGNfZ2V0 X2RydmRhdGEoZXBjKTsNCj4gKyAgICAgc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSB0b19t b2JpdmVpbF9wY2llX2Zyb21fZXAoZXApOw0KPiArICAgICB1MzIgdmFsLCByZWc7DQo+ICsNCj4g KyAgICAgaWYgKCFlcC0+bXNpeF9jYXApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ICsNCj4gKyAgICAgcmVnID0gZXAtPm1zaXhfY2FwICsgUENJX01TSVhfRkxBR1M7DQo+ICsg ICAgIHZhbCA9IGNzcl9yZWFkdyhwY2llLCByZWcpOw0KPiArICAgICBpZiAoISh2YWwgJiBQQ0lf TVNJWF9GTEFHU19FTkFCTEUpKQ0KPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiAr DQo+ICsgICAgIHZhbCAmPSBQQ0lfTVNJWF9GTEFHU19RU0laRTsNCj4gKw0KPiArICAgICByZXR1 cm4gdmFsOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IG1vYml2ZWlsX3BjaWVfZXBfc2V0X21z aXgoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1MTYgaW50ZXJydXB0cykgew0KPiArICAgICBzdHJ1Y3QgbW9iaXZl aWxfcGNpZV9lcCAqZXAgPSBlcGNfZ2V0X2RydmRhdGEoZXBjKTsNCj4gKyAgICAgc3RydWN0IG1v Yml2ZWlsX3BjaWUgKnBjaWUgPSB0b19tb2JpdmVpbF9wY2llX2Zyb21fZXAoZXApOw0KPiArICAg ICB1MzIgdmFsLCByZWc7DQo+ICsNCj4gKyAgICAgaWYgKCFlcC0+bXNpeF9jYXApDQo+ICsgICAg ICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgcmVnID0gZXAtPm1zaXhfY2Fw ICsgUENJX01TSVhfRkxBR1M7DQo+ICsgICAgIHZhbCA9IGNzcl9yZWFkdyhwY2llLCByZWcpOw0K PiArICAgICB2YWwgJj0gflBDSV9NU0lYX0ZMQUdTX1FTSVpFOw0KPiArICAgICB2YWwgfD0gaW50 ZXJydXB0czsNCj4gKyAgICAgY3NyX3dyaXRldyhwY2llLCB2YWwsIHJlZyk7DQo+ICsNCj4gKyAg ICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgbW9iaXZlaWxfcGNpZV9lcF9y YWlzZV9pcnEoc3RydWN0IHBjaV9lcGMgKmVwYywgdTggZnVuY19ubywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBwY2lfZXBjX2lycV90eXBlIHR5cGUsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiBpbnRlcnJ1cHRfbnVtKSB7DQo+ ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llX2VwICplcCA9IGVwY19nZXRfZHJ2ZGF0YShlcGMp Ow0KPiArDQo+ICsgICAgIGlmICghZXAtPm9wcy0+cmFpc2VfaXJxKQ0KPiArICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOw0KPiArDQo+ICsgICAgIHJldHVybiBlcC0+b3BzLT5yYWlzZV9pcnEo ZXAsIGZ1bmNfbm8sIHR5cGUsIGludGVycnVwdF9udW0pOyB9DQo+ICsNCj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgcGNpX2VwY19vcHMgZXBjX29wcyA9IHsNCj4gKyAgICAgLndyaXRlX2hlYWRlciAg ICAgICAgICAgPSBtb2JpdmVpbF9wY2llX2VwX3dyaXRlX2hlYWRlciwNCj4gKyAgICAgLnNldF9i YXIgICAgICAgICAgICAgICAgPSBtb2JpdmVpbF9wY2llX2VwX3NldF9iYXIsDQo+ICsgICAgIC5j bGVhcl9iYXIgICAgICAgICAgICAgID0gbW9iaXZlaWxfcGNpZV9lcF9jbGVhcl9iYXIsDQo+ICsg ICAgIC5tYXBfYWRkciAgICAgICAgICAgICAgID0gbW9iaXZlaWxfcGNpZV9lcF9tYXBfYWRkciwN Cj4gKyAgICAgLnVubWFwX2FkZHIgICAgICAgICAgICAgPSBtb2JpdmVpbF9wY2llX2VwX3VubWFw X2FkZHIsDQo+ICsgICAgIC5zZXRfbXNpICAgICAgICAgICAgICAgID0gbW9iaXZlaWxfcGNpZV9l cF9zZXRfbXNpLA0KPiArICAgICAuZ2V0X21zaSAgICAgICAgICAgICAgICA9IG1vYml2ZWlsX3Bj aWVfZXBfZ2V0X21zaSwNCj4gKyAgICAgLnNldF9tc2l4ICAgICAgICAgICAgICAgPSBtb2JpdmVp bF9wY2llX2VwX3NldF9tc2l4LA0KPiArICAgICAuZ2V0X21zaXggICAgICAgICAgICAgICA9IG1v Yml2ZWlsX3BjaWVfZXBfZ2V0X21zaXgsDQo+ICsgICAgIC5yYWlzZV9pcnEgICAgICAgICAgICAg ID0gbW9iaXZlaWxfcGNpZV9lcF9yYWlzZV9pcnEsDQo+ICt9Ow0KPiArDQo+ICtpbnQgbW9iaXZl aWxfcGNpZV9lcF9yYWlzZV9sZWdhY3lfaXJxKHN0cnVjdCBtb2JpdmVpbF9wY2llX2VwICplcCwg dTggDQo+ICtmdW5jX25vKSB7DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0g dG9fbW9iaXZlaWxfcGNpZV9mcm9tX2VwKGVwKTsNCj4gKw0KPiArICAgICBkZXZfZXJyKCZwY2ll LT5wZGV2LT5kZXYsICJFUCBjYW5ub3QgdHJpZ2dlciBsZWdhY3kgSVJRc1xuIik7DQo+ICsNCj4g KyAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICt9DQo+ICsNCj4gK2ludCBtb2JpdmVpbF9wY2llX2Vw X3JhaXNlX21zaV9pcnEoc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBpbnRlcnJ1cHRfbnVtKSB7DQo+ ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2llID0gdG9fbW9iaXZlaWxfcGNpZV9mcm9t X2VwKGVwKTsNCj4gKyAgICAgc3RydWN0IHBjaV9lcGMgKmVwYyA9IGVwLT5lcGM7DQo+ICsgICAg IHUxNiBtc2dfY3RybCwgbXNnX2RhdGE7DQo+ICsgICAgIHUzMiBtc2dfYWRkcl9sb3dlciwgbXNn X2FkZHJfdXBwZXIsIHJlZzsNCj4gKyAgICAgdTY0IG1zZ19hZGRyOw0KPiArICAgICB1MzIgZnVu Y19udW07DQo+ICsgICAgIGJvb2wgaGFzX3VwcGVyOw0KPiArICAgICBpbnQgcmV0Ow0KPiArDQo+ ICsgICAgIGlmICghZXAtPm1zaV9jYXApDQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 DQo+ICsNCj4gKyAgICAgLyoNCj4gKyAgICAgICogSW4gb3JkZXIgb3QgZ2V0IHRoZSBQRidzIE1T SSBjYXBhYmlsaXR5IHJlZ2lzdGVyIHZhbHVlIGZyb20gY29uZmlnDQo+ICsgICAgICAqIHNwYWNl IHdlIG5lZWQgdG8gc2V0IHRoZSBQRiBudW1iZXIgdG8gdGhlIFBBQl9DVFJMIHJlZ2lzdGVyLg0K PiArICAgICAgKi8NCj4gKyAgICAgZnVuY19udW0gPSBjc3JfcmVhZGwocGNpZSwgUEFCX0NUUkwp Ow0KPiArICAgICBmdW5jX251bSAmPSB+KEZVTkNfU0VMX01BU0sgPDwgRlVOQ19TRUxfU0hJRlQp Ow0KPiArICAgICBmdW5jX251bSB8PSAoZnVuY19ubyAmIEZVTkNfU0VMX01BU0spIDw8IEZVTkNf U0VMX1NISUZUOw0KPiArICAgICBjc3Jfd3JpdGVsKHBjaWUsIGZ1bmNfbnVtLCBQQUJfQ1RSTCk7 DQo+ICsNCj4gKyAgICAgcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0ZMQUdTOw0KPiArICAg ICBtc2dfY3RybCA9IGNzcl9yZWFkdyhwY2llLCByZWcpOw0KPiArICAgICBoYXNfdXBwZXIgPSAh IShtc2dfY3RybCAmIFBDSV9NU0lfRkxBR1NfNjRCSVQpOw0KPiArICAgICByZWcgPSBlcC0+bXNp X2NhcCArIFBDSV9NU0lfQUREUkVTU19MTzsNCj4gKyAgICAgbXNnX2FkZHJfbG93ZXIgPSBjc3Jf cmVhZGwocGNpZSwgcmVnKTsNCj4gKyAgICAgaWYgKGhhc191cHBlcikgew0KPiArICAgICAgICAg ICAgIHJlZyA9IGVwLT5tc2lfY2FwICsgUENJX01TSV9BRERSRVNTX0hJOw0KPiArICAgICAgICAg ICAgIG1zZ19hZGRyX3VwcGVyID0gY3NyX3JlYWRsKHBjaWUsIHJlZyk7DQo+ICsgICAgICAgICAg ICAgcmVnID0gZXAtPm1zaV9jYXAgKyBQQ0lfTVNJX0RBVEFfNjQ7DQo+ICsgICAgICAgICAgICAg bXNnX2RhdGEgPSBjc3JfcmVhZHcocGNpZSwgcmVnKTsNCj4gKyAgICAgfSBlbHNlIHsNCj4gKyAg ICAgICAgICAgICBtc2dfYWRkcl91cHBlciA9IDA7DQo+ICsgICAgICAgICAgICAgcmVnID0gZXAt Pm1zaV9jYXAgKyBQQ0lfTVNJX0RBVEFfMzI7DQo+ICsgICAgICAgICAgICAgbXNnX2RhdGEgPSBj c3JfcmVhZHcocGNpZSwgcmVnKTsNCj4gKyAgICAgfQ0KPiArICAgICBtc2dfYWRkciA9ICgodTY0 KSBtc2dfYWRkcl91cHBlcikgPDwgMzIgfCBtc2dfYWRkcl9sb3dlcjsNCj4gKw0KPiArICAgICAv Kg0KPiArICAgICAgKiBjbGVhciB0aGUgRlVOQ19TRUxfU0hJRlQgYml0cyB3aGVuIGFjY2VzcyBv dGhlciByZWdpc3RlcnMgZXhjZXB0DQo+ICsgICAgICAqIGNvbmZpZyBzcGFjZSByZWdpc3Rlci4N Cj4gKyAgICAgICovDQo+ICsgICAgIGZ1bmNfbnVtID0gY3NyX3JlYWRsKHBjaWUsIFBBQl9DVFJM KTsNCj4gKyAgICAgZnVuY19udW0gJj0gfihGVU5DX1NFTF9NQVNLIDw8IEZVTkNfU0VMX1NISUZU KTsNCj4gKyAgICAgY3NyX3dyaXRlbChwY2llLCBmdW5jX251bSwgUEFCX0NUUkwpOw0KPiArDQo+ ICsgICAgIHJldCA9IG1vYml2ZWlsX3BjaWVfZXBfbWFwX2FkZHIoZXBjLCBmdW5jX25vLCBlcC0+ bXNpX21lbV9waHlzLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1z Z19hZGRyLCBlcGMtPm1lbS0+cGFnZV9zaXplKTsNCj4gKyAgICAgaWYgKHJldCkNCj4gKyAgICAg ICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgIHdyaXRlbChtc2dfZGF0YSB8IChpbnRl cnJ1cHRfbnVtIC0gMSksIGVwLT5tc2lfbWVtKTsNCj4gKw0KPiArICAgICBtb2JpdmVpbF9wY2ll X2VwX3VubWFwX2FkZHIoZXBjLCBmdW5jX25vLCBlcC0+bXNpX21lbV9waHlzKTsNCj4gKw0KPiAr ICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiAraW50IG1vYml2ZWlsX3BjaWVfZXBfcmFpc2Vf bXNpeF9pcnEoc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwLCB1OCBmdW5jX25vLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTE2IGludGVycnVwdF9udW0pIHsNCj4gKyAg ICAgc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUgPSB0b19tb2JpdmVpbF9wY2llX2Zyb21fZXAo ZXApOw0KPiArICAgICBzdHJ1Y3QgcGNpX2VwYyAqZXBjID0gZXAtPmVwYzsNCj4gKyAgICAgdTMy IG1zZ19hZGRyX3VwcGVyLCBtc2dfYWRkcl9sb3dlcjsNCj4gKyAgICAgdTMyIG1zZ19kYXRhOw0K PiArICAgICB1NjQgbXNnX2FkZHI7DQo+ICsgICAgIHUzMiBmdW5jX251bTsNCj4gKyAgICAgaW50 IHJldDsNCj4gKw0KPiArICAgICAvKg0KPiArICAgICAgKiBJbiBvcmRlciBvdCBnZXQgdGhlIFBG J3MgTVNJIGNhcGFiaWxpdHkgcmVnaXN0ZXIgdmFsdWUgZnJvbSBjb25maWcNCj4gKyAgICAgICog c3BhY2Ugd2UgbmVlZCB0byBzZXQgdGhlIFBGIG51bWJlciB0byB0aGUgUEFCX0NUUkwgcmVnaXN0 ZXIuDQo+ICsgICAgICAqLw0KPiArICAgICBmdW5jX251bSA9IGNzcl9yZWFkbChwY2llLCBQQUJf Q1RSTCk7DQo+ICsgICAgIGZ1bmNfbnVtICY9IH4oRlVOQ19TRUxfTUFTSyA8PCBGVU5DX1NFTF9T SElGVCk7DQo+ICsgICAgIGZ1bmNfbnVtIHw9IChmdW5jX25vICYgRlVOQ19TRUxfTUFTSykgPDwg RlVOQ19TRUxfU0hJRlQ7DQo+ICsgICAgIGNzcl93cml0ZWwocGNpZSwgZnVuY19udW0sIFBBQl9D VFJMKTsNCj4gKw0KPiArICAgICBtc2dfYWRkcl9sb3dlciA9IGNzcl9yZWFkbChwY2llLCBQQUJf TVNJWF9UQUJMRV9QQkFfQUNDRVNTICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUENJX01TSVhfRU5UUllfTE9XRVJfQUREUiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChpbnRlcnJ1cHRfbnVtIC0gMSkgKiBQQ0lfTVNJWF9FTlRSWV9TSVpFKTsNCj4g KyAgICAgbXNnX2FkZHJfdXBwZXIgPSBjc3JfcmVhZGwocGNpZSwgUEFCX01TSVhfVEFCTEVfUEJB X0FDQ0VTUyArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9NU0lYX0VO VFJZX1VQUEVSX0FERFIgKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50 ZXJydXB0X251bSAtIDEpICogUENJX01TSVhfRU5UUllfU0laRSk7DQo+ICsgICAgIG1zZ19hZGRy ID0gKCh1NjQpIG1zZ19hZGRyX3VwcGVyKSA8PCAzMiB8IG1zZ19hZGRyX2xvd2VyOw0KPiArICAg ICBtc2dfZGF0YSA9IGNzcl9yZWFkbChwY2llLCBQQUJfTVNJWF9UQUJMRV9QQkFfQUNDRVNTICsN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX01TSVhfRU5UUllfREFUQSArDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIChpbnRlcnJ1cHRfbnVtIC0gMSkgKiBQQ0lfTVNJWF9F TlRSWV9TSVpFKTsNCj4gKw0KPiArICAgICAvKg0KPiArICAgICAgKiBjbGVhciB0aGUgRlVOQ19T RUxfU0hJRlQgYml0cyB3aGVuIGFjY2VzcyBvdGhlciByZWdpc3RlcnMgZXhjZXB0DQo+ICsgICAg ICAqIGNvbmZpZyBzcGFjZSByZWdpc3RlcnMuDQo+ICsgICAgICAqLw0KPiArICAgICBmdW5jX251 bSA9IGNzcl9yZWFkbChwY2llLCBQQUJfQ1RSTCk7DQo+ICsgICAgIGZ1bmNfbnVtICY9IH4oRlVO Q19TRUxfTUFTSyA8PCBGVU5DX1NFTF9TSElGVCk7DQo+ICsgICAgIGNzcl93cml0ZWwocGNpZSwg ZnVuY19udW0sIFBBQl9DVFJMKTsNCj4gKw0KPiArICAgICByZXQgPSBtb2JpdmVpbF9wY2llX2Vw X21hcF9hZGRyKGVwYywgZnVuY19ubywgZXAtPm1zaV9tZW1fcGh5cywNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtc2dfYWRkciwgZXBjLT5tZW0tPnBhZ2Vfc2l6ZSk7 DQo+ICsgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiAr ICAgICB3cml0ZWwobXNnX2RhdGEsIGVwLT5tc2lfbWVtKTsNCj4gKw0KPiArICAgICBtb2JpdmVp bF9wY2llX2VwX3VubWFwX2FkZHIoZXBjLCBmdW5jX25vLCBlcC0+bXNpX21lbV9waHlzKTsNCj4g Kw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArdm9pZCBtb2JpdmVpbF9wY2llX2Vw X2V4aXQoc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwKSB7DQo+ICsgICAgIHN0cnVjdCBwY2lf ZXBjICplcGMgPSBlcC0+ZXBjOw0KPiArDQo+ICsgICAgIHBjaV9lcGNfbWVtX2ZyZWVfYWRkcihl cGMsIGVwLT5tc2lfbWVtX3BoeXMsIGVwLT5tc2lfbWVtLA0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgZXBjLT5tZW0tPnBhZ2Vfc2l6ZSk7DQo+ICsNCj4gKyAgICAgcGNpX2VwY19tZW1f ZXhpdChlcGMpOw0KPiArfQ0KPiArDQo+ICtpbnQgbW9iaXZlaWxfcGNpZV9lcF9pbml0KHN0cnVj dCBtb2JpdmVpbF9wY2llX2VwICplcCkgew0KPiArICAgICBpbnQgcmV0Ow0KPiArICAgICB2b2lk ICphZGRyOw0KPiArICAgICBzdHJ1Y3QgcGNpX2VwYyAqZXBjOw0KPiArICAgICBzdHJ1Y3QgbW9i aXZlaWxfcGNpZSAqcGNpZSA9IHRvX21vYml2ZWlsX3BjaWVfZnJvbV9lcChlcCk7DQo+ICsgICAg IHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwY2llLT5wZGV2LT5kZXY7DQo+ICsgICAgIHN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7DQo+ICsNCj4gKyAgICAgaWYgKCFwY2llLT5j c3JfYXhpX3NsYXZlX2Jhc2UpIHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgImNzcl9i YXNlIGlzIG5vdCBwb3B1bGF0ZWRcbiIpOw0KPiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFM Ow0KPiArICAgICB9DQo+ICsNCj4gKyAgICAgcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobnAs ICJudW0tb2Itd2luZG93cyIsICZlcC0+bnVtX29iX3dpbmRvd3MpOw0KPiArICAgICBpZiAocmV0 IDwgMCkgew0KPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiVW5hYmxlIHRvIHJlYWQgKm51 bS1vYi13aW5kb3dzKiBwcm9wZXJ0eVxuIik7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsN Cj4gKyAgICAgfQ0KPiArDQo+ICsgICAgIGlmIChlcC0+bnVtX29iX3dpbmRvd3MgPiBNQVhfSUFU VV9PVVQpIHsNCj4gKyAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkludmFsaWQgKm51bS1vYi13 aW5kb3dzKlxuIik7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ICsgICAgIH0N Cj4gKyAgICAgZXAtPm9iX3dpbmRvd19tYXAgPSBkZXZtX2tjYWxsb2MoZGV2LA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCSVRTX1RPX0xPTkdTKGVwLT5udW1fb2Jf d2luZG93cyksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv Zihsb25nKSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0ZQX0tF Uk5FTCk7DQo+ICsgICAgIGlmICghZXAtPm9iX3dpbmRvd19tYXApDQo+ICsgICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07DQo+ICsNCj4gKyAgICAgYWRkciA9IGRldm1fa2NhbGxvYyhkZXYsIGVw LT5udW1fb2Jfd2luZG93cywgc2l6ZW9mKHBoeXNfYWRkcl90KSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICBHRlBfS0VSTkVMKTsNCj4gKyAgICAgaWYgKCFhZGRyKQ0KPiArICAgICAgICAg ICAgIHJldHVybiAtRU5PTUVNOw0KPiArICAgICBlcC0+b3V0Ym91bmRfYWRkciA9IGFkZHI7DQo+ ICsNCj4gKyAgICAgbW9iaXZlaWxfcGNpZV9lbmFibGVfYnJpZGdlX3BpbyhwY2llKTsNCj4gKyAg ICAgbW9iaXZlaWxfcGNpZV9lbmFibGVfZW5naW5lX2FwaW8ocGNpZSk7DQo+ICsgICAgIG1vYml2 ZWlsX3BjaWVfZW5hYmxlX2VuZ2luZV9wcGlvKHBjaWUpOw0KPiArICAgICBtb2JpdmVpbF9wY2ll X2VuYWJsZV9tc2lfZXAocGNpZSk7DQo+ICsNCj4gKyAgICAgZXBjID0gZGV2bV9wY2lfZXBjX2Ny ZWF0ZShkZXYsICZlcGNfb3BzKTsNCj4gKyAgICAgaWYgKElTX0VSUihlcGMpKSB7DQo+ICsgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gY3JlYXRlIGVwYyBkZXZpY2VcbiIpOw0K PiArICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGVwYyk7DQo+ICsgICAgIH0NCj4gKw0KPiAr ICAgICBlcC0+ZXBjID0gZXBjOw0KPiArICAgICBlcGNfc2V0X2RydmRhdGEoZXBjLCBlcCk7DQo+ ICsNCj4gKyAgICAgZXAtPm1zaV9jYXAgPSBtb2JpdmVpbF9wY2llX2VwX2ZpbmRfY2FwYWJpbGl0 eShwY2llLCANCj4gKyBQQ0lfQ0FQX0lEX01TSSk7DQo+ICsNCj4gKyAgICAgZXAtPm1zaXhfY2Fw ID0gbW9iaXZlaWxfcGNpZV9lcF9maW5kX2NhcGFiaWxpdHkocGNpZSwNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQo+ICsgUENJX0NBUF9J RF9NU0lYKTsNCj4gKw0KPiArICAgICBpZiAoZXAtPm9wcy0+ZXBfaW5pdCkNCj4gKyAgICAgICAg ICAgICBlcC0+b3BzLT5lcF9pbml0KGVwKTsNCj4gKw0KPiArICAgICBlcGMtPm1heF9mdW5jdGlv bnMgPSBlcC0+cGZfbnVtOw0KPiArDQo+ICsgICAgIHJldCA9IF9fcGNpX2VwY19tZW1faW5pdChl cGMsIGVwLT5waHlzX2Jhc2UsIGVwLT5hZGRyX3NpemUsDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBlcC0+cGFnZV9zaXplKTsNCj4gKyAgICAgaWYgKHJldCA8IDApIHsNCj4gKyAg ICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBpbml0aWFsaXplIGFkZHJlc3Mgc3Bh Y2VcbiIpOw0KPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgIH0NCj4gKw0KPiAr ICAgICBlcC0+bXNpX21lbSA9IHBjaV9lcGNfbWVtX2FsbG9jX2FkZHIoZXBjLCAmZXAtPm1zaV9t ZW1fcGh5cywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVw Yy0+bWVtLT5wYWdlX3NpemUpOw0KPiArICAgICBpZiAoIWVwLT5tc2lfbWVtKSB7DQo+ICsgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcmVzZXJ2ZSBtZW1vcnkgZm9yIE1TSS9N U0ktWFxuIik7DQo+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ICsgICAgIH0NCj4g Kw0KPiArICAgICByZXR1cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5jIA0KPiBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5jDQo+IGluZGV4IDQ5ZDQ3MWIuLmQxZmRmZWQg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2Jp dmVpbC5jDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2Jp dmVpbC5jDQo+IEBAIC0yMTAsNiArMjEwLDU3IEBAIHZvaWQgcHJvZ3JhbV9vYl93aW5kb3dzKHN0 cnVjdCBtb2JpdmVpbF9wY2llICpwY2llLCBpbnQgd2luX251bSwgdTY0IGNwdV9hZGRyLA0KPiAg ICAgICBwY2llLT5vYl93aW5zX2NvbmZpZ3VyZWQrKzsNCj4gIH0NCj4NCj4gK2ludCBwcm9ncmFt X29iX3dpbmRvd3NfZXAoc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsIGludCB3aW5fbnVtLCBp bnQgdHlwZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdTY0IHBoeXMsIHU2NCBidXNfYWRk ciwgdTggZnVuYywgdTY0IHNpemUpIHsNCj4gKyAgICAgdTMyIHZhbDsNCj4gKyAgICAgdTMyIHNp emVfaCwgc2l6ZV9sOw0KPiArDQo+ICsgICAgIGlmIChzaXplICYgKHNpemUgLSAxKSkNCj4gKyAg ICAgICAgICAgICBzaXplID0gMSA8PCAoMSArIGlsb2cyKHNpemUpKTsNCj4gKw0KPiArICAgICBz aXplX2ggPSB1cHBlcl8zMl9iaXRzKH4oc2l6ZSAtIDEpKTsNCj4gKyAgICAgc2l6ZV9sID0gbG93 ZXJfMzJfYml0cyh+KHNpemUgLSAxKSk7DQo+ICsNCj4gKyAgICAgdmFsID0gY3NyX3JlYWRsKHBj aWUsIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4gKyAgICAgdmFsICY9IH4oV0lOX1RZ UEVfTUFTSyA8PCBXSU5fVFlQRV9TSElGVCB8DQo+ICsgICAgICAgICAgICAgIFdJTl9TSVpFX01B U0sgPDwgV0lOX1NJWkVfU0hJRlQpOw0KPiArICAgICB2YWwgfD0gMSA8PCBXSU5fRU5BQkxFX1NI SUZUIHwgdHlwZSA8PCBXSU5fVFlQRV9TSElGVCB8DQo+ICsgICAgICAgICAgICAgIChzaXplX2wg JiAoV0lOX1NJWkVfTUFTSyA8PCBXSU5fU0laRV9TSElGVCkpOw0KPiArICAgICBjc3Jfd3JpdGVs KHBjaWUsIHZhbCwgUEFCX0FYSV9BTUFQX0NUUkwod2luX251bSkpOw0KPiArDQo+ICsgICAgIGNz cl93cml0ZWwocGNpZSwgZnVuYywgUEFCX0FYSV9BTUFQX1BDSV9IRFJfUEFSQU0od2luX251bSkp Ow0KPiArICAgICBjc3Jfd3JpdGVsKHBjaWUsIGxvd2VyXzMyX2JpdHMocGh5cyksIFBBQl9BWElf QU1BUF9BWElfV0lOKHdpbl9udW0pKTsNCj4gKyAgICAgY3NyX3dyaXRlbChwY2llLCB1cHBlcl8z Ml9iaXRzKHBoeXMpLA0KPiArICAgICAgICAgICAgICAgIFBBQl9FWFRfQVhJX0FNQVBfQVhJX1dJ Tih3aW5fbnVtKSk7DQo+ICsgICAgIGNzcl93cml0ZWwocGNpZSwgbG93ZXJfMzJfYml0cyhidXNf YWRkciksDQo+ICsgICAgICAgICAgICAgICAgUEFCX0FYSV9BTUFQX1BFWF9XSU5fTCh3aW5fbnVt KSk7DQo+ICsgICAgIGNzcl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhidXNfYWRkciksDQo+ ICsgICAgICAgICAgICAgICAgUEFCX0FYSV9BTUFQX1BFWF9XSU5fSCh3aW5fbnVtKSk7DQo+ICsg ICAgIGNzcl93cml0ZWwocGNpZSwgc2l6ZV9oLCBQQUJfRVhUX0FYSV9BTUFQX1NJWkUod2luX251 bSkpOw0KPiArDQo+ICsgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICt2b2lkIHByb2dyYW1f aWJfd2luZG93c19lcChzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwgdTggZnVuY19ubywNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgIGludCBiYXIsIHU2NCBwaHlzKSB7DQo+ICsgICAgIGNz cl93cml0ZWwocGNpZSwgdXBwZXJfMzJfYml0cyhwaHlzKSwNCj4gKyAgICAgICAgICAgICAgICBQ QUJfRVhUX1BFWF9CQVJfQU1BUChmdW5jX25vLCBiYXIpKTsNCj4gKyAgICAgY3NyX3dyaXRlbChw Y2llLCBsb3dlcl8zMl9iaXRzKHBoeXMpIHwgUEVYX0JBUl9BTUFQX0VOLA0KPiArICAgICAgICAg ICAgICAgIFBBQl9QRVhfQkFSX0FNQVAoZnVuY19ubywgYmFyKSk7IH0NCj4gKw0KPiArdm9pZCBt b2JpdmVpbF9wY2llX2Rpc2FibGVfaWJfd2luX2VwKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2ll LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHU4IGZ1bmNfbm8sIHU4IGJh cikgew0KPiArICAgICB1MzIgdmFsOw0KPiArDQo+ICsgICAgIHZhbCA9IGNzcl9yZWFkbChwY2ll LCBQQUJfUEVYX0JBUl9BTUFQKGZ1bmNfbm8sIGJhcikpOw0KPiArICAgICB2YWwgJj0gfigxIDw8 IDApOw0KPiArICAgICBjc3Jfd3JpdGVsKHBjaWUsIHZhbCwgUEFCX1BFWF9CQVJfQU1BUChmdW5j X25vLCBiYXIpKTsgfQ0KPiArDQo+ICBpbnQgbW9iaXZlaWxfYnJpbmd1cF9saW5rKHN0cnVjdCBt b2JpdmVpbF9wY2llICpwY2llKSAgew0KPiAgICAgICBpbnQgcmV0cmllczsNCj4gQEAgLTIyNywy MCArMjc4LDU3IEBAIGludCBtb2JpdmVpbF9icmluZ3VwX2xpbmsoc3RydWN0IG1vYml2ZWlsX3Bj aWUgKnBjaWUpDQo+ICAgICAgIHJldHVybiAtRVRJTUVET1VUOw0KPiAgfQ0KPg0KPiAtdm9pZCBt b2JpdmVpbF9wY2llX2Rpc2FibGVfaWJfd2luKHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2ksIGlu dCANCj4gd2luX251bSkNCj4gK3ZvaWQgbW9iaXZlaWxfcGNpZV9kaXNhYmxlX2liX3dpbihzdHJ1 Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwgaW50IA0KPiArd2luX251bSkNCj4gIHsNCj4gICAgICAg dTMyIHZhbDsNCj4NCj4gLSAgICAgdmFsID0gY3NyX3JlYWRsKHBjaSwgUEFCX1BFWF9BTUFQX0NU Ukwod2luX251bSkpOw0KPiArICAgICB2YWwgPSBjc3JfcmVhZGwocGNpZSwgUEFCX1BFWF9BTUFQ X0NUUkwod2luX251bSkpOw0KPiAgICAgICB2YWwgJj0gfigxIDw8IEFNQVBfQ1RSTF9FTl9TSElG VCk7DQo+IC0gICAgIGNzcl93cml0ZWwocGNpLCB2YWwsIFBBQl9QRVhfQU1BUF9DVFJMKHdpbl9u dW0pKTsNCj4gKyAgICAgY3NyX3dyaXRlbChwY2llLCB2YWwsIFBBQl9QRVhfQU1BUF9DVFJMKHdp bl9udW0pKTsNCj4gIH0NCj4NCj4gLXZvaWQgbW9iaXZlaWxfcGNpZV9kaXNhYmxlX29iX3dpbihz dHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpLCBpbnQgDQo+IHdpbl9udW0pDQo+ICt2b2lkIG1vYml2 ZWlsX3BjaWVfZGlzYWJsZV9vYl93aW4oc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUsIGludCAN Cj4gK3dpbl9udW0pDQo+ICB7DQo+ICAgICAgIHUzMiB2YWw7DQo+DQo+IC0gICAgIHZhbCA9IGNz cl9yZWFkbChwY2ksIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4gKyAgICAgdmFsID0g Y3NyX3JlYWRsKHBjaWUsIFBBQl9BWElfQU1BUF9DVFJMKHdpbl9udW0pKTsNCj4gICAgICAgdmFs ICY9IH4oMSA8PCBXSU5fRU5BQkxFX1NISUZUKTsNCj4gLSAgICAgY3NyX3dyaXRlbChwY2ksIHZh bCwgUEFCX0FYSV9BTUFQX0NUUkwod2luX251bSkpOw0KPiArICAgICBjc3Jfd3JpdGVsKHBjaWUs IHZhbCwgUEFCX0FYSV9BTUFQX0NUUkwod2luX251bSkpOyB9DQo+ICsNCj4gK3ZvaWQgbW9iaXZl aWxfcGNpZV9lbmFibGVfYnJpZGdlX3BpbyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkgew0K PiArICAgICB1MzIgdmFsOw0KPiArDQo+ICsgICAgIHZhbCA9IGNzcl9yZWFkbChwY2llLCBQQUJf Q1RSTCk7DQo+ICsgICAgIHZhbCB8PSAxIDw8IEFNQkFfUElPX0VOQUJMRV9TSElGVDsNCj4gKyAg ICAgdmFsIHw9IDEgPDwgUEVYX1BJT19FTkFCTEVfU0hJRlQ7DQo+ICsgICAgIGNzcl93cml0ZWwo cGNpZSwgdmFsLCBQQUJfQ1RSTCk7IH0NCj4gKw0KPiArdm9pZCBtb2JpdmVpbF9wY2llX2VuYWJs ZV9lbmdpbmVfYXBpbyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkgew0KPiArICAgICB1MzIg dmFsOw0KPiArDQo+ICsgICAgIHZhbCA9IGNzcl9yZWFkbChwY2llLCBQQUJfQVhJX1BJT19DVFJM KTsNCj4gKyAgICAgdmFsIHw9IEFQSU9fRU5fTUFTSzsNCj4gKyAgICAgY3NyX3dyaXRlbChwY2ll LCB2YWwsIFBBQl9BWElfUElPX0NUUkwpOyB9DQo+ICsNCj4gK3ZvaWQgbW9iaXZlaWxfcGNpZV9l bmFibGVfZW5naW5lX3BwaW8oc3RydWN0IG1vYml2ZWlsX3BjaWUgKnBjaWUpIHsNCj4gKyAgICAg dTMyIHZhbDsNCj4gKw0KPiArICAgICB2YWwgPSBjc3JfcmVhZGwocGNpZSwgUEFCX1BFWF9QSU9f Q1RSTCk7DQo+ICsgICAgIHZhbCB8PSAxIDw8IFBJT19FTkFCTEVfU0hJRlQ7DQo+ICsgICAgIGNz cl93cml0ZWwocGNpZSwgdmFsLCBQQUJfUEVYX1BJT19DVFJMKTsgfQ0KPiArDQo+ICt2b2lkIG1v Yml2ZWlsX3BjaWVfZW5hYmxlX21zaV9lcChzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSkgew0K PiArICAgICB1MzIgdmFsOw0KPiArDQo+ICsgICAgIHZhbCA9ICBjc3JfcmVhZGwocGNpZSwgUEFC X0lOVFBfQU1CQV9NSVNDX0VOQik7DQo+ICsgICAgIHZhbCB8PSAxIDw8IDA7DQo+ICsgICAgIGNz cl93cml0ZWwocGNpZSwgdmFsLCBQQUJfSU5UUF9BTUJBX01JU0NfRU5CKTsNCj4gIH0NCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5o IA0KPiBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5oDQo+ IGluZGV4IGYwZTJlNGEuLjI3NWM2OGYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5oDQo+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRy b2xsZXIvbW9iaXZlaWwvcGNpZS1tb2JpdmVpbC5oDQo+IEBAIC0xNSw2ICsxNSwxMCBAQA0KPiAg I2luY2x1ZGUgPGxpbnV4L21zaS5oPg0KPiAgI2luY2x1ZGUgIi4uLy4uL3BjaS5oIg0KPg0KPiAr I2luY2x1ZGUgPGxpbnV4L3BjaS1lcGMuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9wY2ktZXBmLmg+ DQo+ICsNCj4gKyNkZWZpbmUgTUFYX0lBVFVfT1VUICAgICAgICAgICAgICAgICAyNTYNCj4gIC8q IHJlZ2lzdGVyIG9mZnNldHMgYW5kIGJpdCBwb3NpdGlvbnMgKi8NCj4NCj4gIC8qDQo+IEBAIC00 MCw2ICs0NCw5IEBADQo+ICAjZGVmaW5lICBQQUdFX1NFTF9NQVNLICAgICAgICAgICAgICAgICAg ICAgICAweDNmDQo+ICAjZGVmaW5lICBQQUdFX0xPX01BU0sgICAgICAgICAgICAgICAgICAgICAg ICAweDNmZg0KPiAgI2RlZmluZSAgUEFHRV9TRUxfT0ZGU0VUX1NISUZUICAgICAgICAgICAgICAg MTANCj4gKyNkZWZpbmUgIEZVTkNfU0VMX1NISUZUICAgICAgMTkNCj4gKyNkZWZpbmUgIEZVTkNf U0VMX01BU0sgICAgICAgICAgICAgICAweDFmZg0KPiArI2RlZmluZSAgTVNJX1NXX0NUUkxfRU4g ICAgICAoMSA8PCAyOSkNCj4NCj4gICNkZWZpbmUgUEFCX0FDVElWSVRZX1NUQVQgICAgICAgICAg ICAweDgxYw0KPg0KPiBAQCAtMTAwLDYgKzEwNywxOSBAQA0KPiAgI2RlZmluZSBQQUJfUEVYX0FN QVBfUEVYX1dJTl9MKHdpbikgIFBBQl9SRUdfQUREUigweDRiYTgsIHdpbikgIA0KPiAjZGVmaW5l IFBBQl9QRVhfQU1BUF9QRVhfV0lOX0god2luKSAgUEFCX1JFR19BRERSKDB4NGJhYywgd2luKQ0K Pg0KPiArLyogUFBJTyBXSU5zIEVQIG1vZGUgKi8NCj4gKyNkZWZpbmUgUEFCX1BFWF9CQVJfQU1B UChmdW5jLCBiYXIpICAgICAgICAgICgweDFiYTAgKyAweDIwICogZnVuYyArIDQgKiBiYXIpDQo+ ICsjZGVmaW5lIFBBQl9FWFRfUEVYX0JBUl9BTUFQKGZ1bmMsIGJhcikgICAgICAgICAgICAgICgw eDg0YTAgKyAweDIwICogZnVuYyArIDQgKiBiYXIpDQo+ICsjZGVmaW5lIFBFWF9CQVJfQU1BUF9F TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDApDQo+ICsNCj4gKyNkZWZpbmUg UEFCX0FYSV9BTUFQX1BDSV9IRFJfUEFSQU0oaWR4KSAgICAgICAgICAgICAgKDB4NWJhMCArIDB4 MDQgKiBpZHgpDQo+ICsjZGVmaW5lIFBBQl9NU0lYX1RBQkxFX1BCQV9BQ0NFU1MgICAgICAgICAg ICAweEQwMDANCj4gKw0KPiArI2RlZmluZSBHUEVYX0JBUl9FTkFCTEUgICAgICAgICAgICAgICAg ICAgICAgICAgMHg0RDQNCj4gKyNkZWZpbmUgR1BFWF9CQVJfU0laRV9MRFcgICAgICAgICAgICAg ICAgICAgICAgIDB4NEQ4DQo+ICsjZGVmaW5lIEdQRVhfQkFSX1NJWkVfVURXICAgICAgICAgICAg ICAgICAgICAgICAweDREQw0KPiArI2RlZmluZSBHUEVYX0JBUl9TRUxFQ1QgICAgICAgICAgICAg ICAgICAgICAgICAgMHg0RTANCj4gKw0KPiAgLyogc3RhcnRpbmcgb2Zmc2V0IG9mIElOVFggYml0 cyBpbiBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4gICNkZWZpbmUgUEFCX0lOVFhfU1RBUlQgICAgICAg ICAgICAgICAgICAgICAgIDUNCj4NCj4gQEAgLTEzNyw2ICsxNTcsNyBAQA0KPiAgICAgICAoKG9m ZiA+PiBQQUdFX1NFTF9PRkZTRVRfU0hJRlQpICYgUEFHRV9TRUxfTUFTSykNCj4NCj4gIHN0cnVj dCBtb2JpdmVpbF9wY2llOw0KPiArc3RydWN0IG1vYml2ZWlsX3BjaWVfZXA7DQo+DQo+ICBzdHJ1 Y3QgbW9iaXZlaWxfbXNpIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiBNU0kgaW5mb3JtYXRp b24gKi8NCj4gICAgICAgc3RydWN0IG11dGV4IGxvY2s7ICAgICAgICAgICAgICAvKiBwcm90ZWN0 IGJpdG1hcCB2YXJpYWJsZSAqLw0KPiBAQCAtMTY5LDYgKzE5MCwyOSBAQCBzdHJ1Y3QgbW9iaXZl aWxfcGFiX29wcyB7DQo+ICAgICAgIGludCAoKmhvc3RfaW5pdCkoc3RydWN0IG1vYml2ZWlsX3Bj aWUgKnBjaWUpOyAgfTsNCj4NCj4gK3N0cnVjdCBtb2JpdmVpbF9wY2llX2VwX29wcyB7DQo+ICsg ICAgIHZvaWQgKCplcF9pbml0KShzdHJ1Y3QgbW9iaXZlaWxfcGNpZV9lcCAqZXApOw0KPiArICAg ICBpbnQgKCpyYWlzZV9pcnEpKHN0cnVjdCBtb2JpdmVpbF9wY2llX2VwICplcCwgdTggZnVuY19u bywNCj4gKyAgICAgICAgICAgICAgICAgICAgICBlbnVtIHBjaV9lcGNfaXJxX3R5cGUgdHlwZSwg dTE2IGludGVycnVwdF9udW0pOyANCj4gK307DQo+ICsNCj4gK3N0cnVjdCBtb2JpdmVpbF9wY2ll X2VwIHsNCj4gKyAgICAgc3RydWN0IHBjaV9lcGMgKmVwYzsNCj4gKyAgICAgc3RydWN0IG1vYml2 ZWlsX3BjaWVfZXBfb3BzICpvcHM7DQo+ICsgICAgIHBoeXNfYWRkcl90IHBoeXNfYmFzZTsNCj4g KyAgICAgc2l6ZV90IGFkZHJfc2l6ZTsNCj4gKyAgICAgc2l6ZV90IHBhZ2Vfc2l6ZTsNCj4gKyAg ICAgcGh5c19hZGRyX3QgKm91dGJvdW5kX2FkZHI7DQo+ICsgICAgIHVuc2lnbmVkIGxvbmcgKm9i X3dpbmRvd19tYXA7DQo+ICsgICAgIHUzMiBudW1fb2Jfd2luZG93czsNCj4gKyAgICAgdm9pZCBf X2lvbWVtICptc2lfbWVtOw0KPiArICAgICBwaHlzX2FkZHJfdCBtc2lfbWVtX3BoeXM7DQo+ICsg ICAgIHU4IG1zaV9jYXA7ICAgICAvKiBNU0kgY2FwYWJpbGl0eSBvZmZzZXQgKi8NCj4gKyAgICAg dTggbXNpeF9jYXA7ICAgIC8qIE1TSS1YIGNhcGFiaWxpdHkgb2Zmc2V0ICovDQo+ICsgICAgIHU4 IGJhcl9udW07DQo+ICsgICAgIHUzMiBwZl9udW07DQo+ICt9Ow0KPiArDQo+ICBzdHJ1Y3QgbW9i aXZlaWxfcGNpZSB7DQo+ICAgICAgIHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXY7DQo+ICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKnJlc291cmNlczsNCj4gQEAgLTE4MSw3ICsyMjUsMTAgQEAg c3RydWN0IG1vYml2ZWlsX3BjaWUgew0KPiAgICAgICB1MzIgaWJfd2luc19jb25maWd1cmVkOyAg ICAgICAgIC8qIGNvbmZpZ3VyZWQgaW5ib3VuZCB3aW5kb3dzICovDQo+ICAgICAgIGNvbnN0IHN0 cnVjdCBtb2JpdmVpbF9wYWJfb3BzICpvcHM7DQo+ICAgICAgIHN0cnVjdCByb290X3BvcnQgcnA7 DQo+ICsgICAgIHN0cnVjdCBtb2JpdmVpbF9wY2llX2VwIGVwOw0KPiAgfTsNCj4gKyNkZWZpbmUg dG9fbW9iaXZlaWxfcGNpZV9mcm9tX2VwKGVuZHBvaW50KSAgIFwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICBjb250YWluZXJfb2YoKGVuZHBvaW50KSwgc3RydWN0IA0KPiArbW9iaXZlaWxf cGNpZSwgZXApDQo+DQo+ICBpbnQgbW9iaXZlaWxfcGNpZV9ob3N0X3Byb2JlKHN0cnVjdCBtb2Jp dmVpbF9wY2llICpwY2llKTsgIGludCANCj4gbW9iaXZlaWxfaG9zdF9pbml0KHN0cnVjdCBtb2Jp dmVpbF9wY2llICpwY2llLCBib29sIHJlaW5pdCk7IEBAIC0yMjYsNCANCj4gKzI3MywyMSBAQCBz dGF0aWMgaW5saW5lIHZvaWQgY3NyX3dyaXRlYihzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpZSwg dTMyIHZhbCwgdTMyIG9mZikNCj4gICAgICAgY3NyX3dyaXRlKHBjaWUsIHZhbCwgb2ZmLCAweDEp Ow0KPiAgfQ0KPg0KPiArdm9pZCBwcm9ncmFtX2liX3dpbmRvd3NfZXAoc3RydWN0IG1vYml2ZWls X3BjaWUgKnBjaWUsIHU4IGZ1bmNfbm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpbnQg YmFyLCB1NjQgcGh5cyk7IGludCANCj4gK3Byb2dyYW1fb2Jfd2luZG93c19lcChzdHJ1Y3QgbW9i aXZlaWxfcGNpZSAqcGNpZSwgaW50IHdpbl9udW0sIGludCB0eXBlLA0KPiArICAgICAgICAgICAg ICAgICAgICAgICB1NjQgcGh5cywgdTY0IGJ1c19hZGRyLCB1OCBmdW5jLCB1NjQgc2l6ZSk7IA0K PiArdm9pZCBtb2JpdmVpbF9wY2llX2Rpc2FibGVfaWJfd2luX2VwKHN0cnVjdCBtb2JpdmVpbF9w Y2llICpwY2ksDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTggZnVuY19u bywgdTggYmFyKTsgaW50IA0KPiArbW9iaXZlaWxfcGNpZV9lcF9pbml0KHN0cnVjdCBtb2JpdmVp bF9wY2llX2VwICplcCk7IGludCANCj4gK21vYml2ZWlsX3BjaWVfZXBfcmFpc2VfbGVnYWN5X2ly cShzdHJ1Y3QgbW9iaXZlaWxfcGNpZV9lcCAqZXAsIHU4IA0KPiArZnVuY19ubyk7IGludCBtb2Jp dmVpbF9wY2llX2VwX3JhaXNlX21zaV9pcnEoc3RydWN0IG1vYml2ZWlsX3BjaWVfZXAgKmVwLCB1 OCBmdW5jX25vLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBpbnRlcnJ1cHRfbnVt KTsgaW50IA0KPiArbW9iaXZlaWxfcGNpZV9lcF9yYWlzZV9tc2l4X2lycShzdHJ1Y3QgbW9iaXZl aWxfcGNpZV9lcCAqZXAsIHU4IGZ1bmNfbm8sDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg IHUxNiBpbnRlcnJ1cHRfbnVtKTsgdm9pZCANCj4gK21vYml2ZWlsX3BjaWVfZXBfcmVzZXRfYmFy KHN0cnVjdCBtb2JpdmVpbF9wY2llICpwY2ksIGVudW0gcGNpX2Jhcm5vIA0KPiArYmFyKTsgdm9p ZCBtb2JpdmVpbF9wY2llX2VuYWJsZV9icmlkZ2VfcGlvKHN0cnVjdCBtb2JpdmVpbF9wY2llIA0K PiArKnBjaSk7IHZvaWQgbW9iaXZlaWxfcGNpZV9lbmFibGVfZW5naW5lX2FwaW8oc3RydWN0IG1v Yml2ZWlsX3BjaWUgDQo+ICsqcGNpKTsgdm9pZCBtb2JpdmVpbF9wY2llX2VuYWJsZV9lbmdpbmVf cHBpbyhzdHJ1Y3QgbW9iaXZlaWxfcGNpZSANCj4gKypwY2kpOyB2b2lkIG1vYml2ZWlsX3BjaWVf ZW5hYmxlX21zaV9lcChzdHJ1Y3QgbW9iaXZlaWxfcGNpZSAqcGNpKTsNCj4gICNlbmRpZiAvKiBf UENJRV9NT0JJVkVJTF9IICovDQo+IC0tDQo+IDEuNy4xDQo+DQo=