Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp9054030imu; Tue, 4 Dec 2018 20:28:01 -0800 (PST) X-Google-Smtp-Source: AFSGD/XEt02N53mBDP9jGEF4iLRqiYU7lWsMFo1gLPQq3xOX/9JNEyRwmZCfiJXcHRjvRt0ca2J0 X-Received: by 2002:a63:d547:: with SMTP id v7mr17751825pgi.339.1543984081774; Tue, 04 Dec 2018 20:28:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1543984081; cv=none; d=google.com; s=arc-20160816; b=SIy0DTGjxqgP/+evk8Jh6BLPS+wYscDeuGLocA1xJmwDpW4EMh9hGiVSO2/18fCPhQ 0m8iXTm+ylGUGTFzc4i54+DWMlVpnwbQRYtdetJPE227WgM/qFuB+M/BPO5PG5BD15A7 iDU0iEOeL0hvkqG2jFvPCSXgSBxPrQ3gwN+rRuAW05T2JZGSXFCFyCdSLI/t9WHJEI+e km0DpWgN5ujD8dIM9JwFFw1e2iGjSrQF1uOeDVFoDluD2LNp220p9v/FsQ5IWHWuDVG/ od+xX0aTXqQ75P97d12HfWzzif8CB9oI7t/WulU8XPDb8myVXQ1e6LzLw+v7nKLMq9zd si3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:spamdiagnosticmetadata:spamdiagnosticoutput :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=R3wDnYQsB01myUd/gUYVZJsZpMhoV0ChvvwwyaTRcuQ=; b=EFh6G2dNCVked46Xfbnd2LJk43EOFweXWI3KaZru3QTgSkFdxi7FnjYZkMmF3qwIUc 4bWOpe49dgWfwXmgb927jOC6Q6VFW2LL7Qb1h4rXXAkA3OHEuOlE1PUMH1ADWFl6/kfZ /DrGj3UIaoz53izozIwTJDwmIDC2zpMCrW0ezHnDLLjgX9KdkmX5mHyW3vi0I6Q38vbE N8yqqAHhW7MIvJ7o4ua7WzaQ8kXi6eBOOUaPkdigfbTUOlYlIRFnBEAqUC2M54kShcbA 8h91g7Z/i9V9JpVqwUvCH+OzkxLUH6LxDyWKQZcu1bl7iOyrBZvRZmuRutbU5G1Jv7XO n/Ow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=L8FAb2p8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l33si19402743pld.142.2018.12.04.20.27.46; Tue, 04 Dec 2018 20:28:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector1-amd-com header.b=L8FAb2p8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726861AbeLEE0z (ORCPT + 99 others); Tue, 4 Dec 2018 23:26:55 -0500 Received: from mail-eopbgr700060.outbound.protection.outlook.com ([40.107.70.60]:30256 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725864AbeLEE0y (ORCPT ); Tue, 4 Dec 2018 23:26:54 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R3wDnYQsB01myUd/gUYVZJsZpMhoV0ChvvwwyaTRcuQ=; b=L8FAb2p8ejjHVVcCllJbewTrZRsONVZqZR1QH9KQo2gKnzejYVsUSO9uduUAuCnR5wsnWYohP4MwDNwKMtsjMzNNeaGKKwDsVKpigVytsLADvQGqYE6pqebjsrfW7uHuqW1VyMSemaHz+/fRmts01UvAHZ/Hjuv7rhjMKwkR36Q= Received: from BL0PR12MB2355.namprd12.prod.outlook.com (52.132.10.161) by BL0PR12MB2562.namprd12.prod.outlook.com (52.132.27.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Wed, 5 Dec 2018 04:26:44 +0000 Received: from BL0PR12MB2355.namprd12.prod.outlook.com ([fe80::6d6b:9a9e:71b6:1c0e]) by BL0PR12MB2355.namprd12.prod.outlook.com ([fe80::6d6b:9a9e:71b6:1c0e%3]) with mapi id 15.20.1382.023; Wed, 5 Dec 2018 04:26:44 +0000 From: "Agrawal, Akshu" To: Adam Thomson CC: "djkurtz@chromium.org" , "Deucher, Alexander" , Support Opensource , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , "moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..." , open list Subject: Re: [PATCH 2/2] ASoC: DA7219: Implement error check on reg read and write Thread-Topic: [PATCH 2/2] ASoC: DA7219: Implement error check on reg read and write Thread-Index: AQHUjAA1pkprxJ5jBUexKsgFP0xI0aVvFSGAgAB4RAA= Date: Wed, 5 Dec 2018 04:26:44 +0000 Message-ID: <50cffd9e-74f4-b0af-5eed-3dad5f32d8f9@amd.com> References: <1543948103-20752-1-git-send-email-akshu.agrawal@amd.com> <1543948103-20752-2-git-send-email-akshu.agrawal@amd.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0026.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::12) To BL0PR12MB2355.namprd12.prod.outlook.com (2603:10b6:207:4c::33) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Akshu.Agrawal@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [202.56.249.162] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;BL0PR12MB2562;20:8nqm7QceuIblPUfjzrb0BOudSuH6/FgNVzo3szb/wJuFzCeF591t0H5yeJKq6j/TvGtW0uVy1ch6TPaCqZZaLLccSanrurVAZTSyTuWYkC2phKHGf+IeKaPCYeptDYqaBXKrTvAKIppAEROBYWv70u6Ifcm0jjdZlAoTPws0lgcw6jyjXIqyw3JCiSYAIFkkJloW+ck0X0Ox75dysxGfBEkRDGbOaDs0MSfIcYpEFkvPK1kNXuYmGCVqH6JVXh9f x-ms-office365-filtering-correlation-id: c4ace665-4fad-4b97-5fb0-08d65a69dca0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020);SRVR:BL0PR12MB2562; x-ms-traffictypediagnostic: BL0PR12MB2562: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(93006095)(93001095)(10201501046)(3231455)(999002)(944501520)(52105112)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123564045)(20161123560045)(201708071742011)(7699051)(76991095);SRVR:BL0PR12MB2562;BCL:0;PCL:0;RULEID:;SRVR:BL0PR12MB2562; x-forefront-prvs: 08770259B4 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(396003)(366004)(136003)(376002)(39860400002)(199004)(189003)(53946003)(4326008)(105586002)(53936002)(6246003)(6512007)(186003)(39060400002)(106356001)(26005)(25786009)(68736007)(2616005)(6506007)(53546011)(72206003)(478600001)(386003)(2906002)(476003)(6116002)(3846002)(11346002)(54906003)(446003)(99286004)(316002)(31686004)(8676002)(76176011)(5660300001)(52116002)(14444005)(486006)(81156014)(6486002)(66066001)(31696002)(4744004)(6436002)(81166006)(229853002)(551934003)(71190400001)(305945005)(86362001)(102836004)(256004)(71200400001)(97736004)(7736002)(6916009)(36756003)(8936002)(14454004)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:BL0PR12MB2562;H:BL0PR12MB2355.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: I/h5+d8IpVbzf9MBWW4oRlG7UV49LzBBaPuT7MMUDG9hoVwllunpAhAVW8zN8f+2AyRqo5OReK+E3oNeIYQgT4VZaux1tX8i2JJZUZxVCGs2X5MFkv/WSMY7VtDhoKcr/CnanTE+zqw+BIAmQHf2FlLTU1kFBh3Q3EbdpwnrxpkfmBirZ/qzBAcJ7AQwYh/Mivb34+C9IHsa7ZUmwQo+szoiQ8aJTHKDV2PxOmY4OtNNju38quqDKdmQHIaisQgS7GQUnk4FIg9vxaS4PsaizDzc6CsjiqRLv0Xybim+JhzSTeDEXr4mWUUTzkzsjfxDuIdoRDmNSIerf4gwad4GkrKrtlQJkJR/MCElR2cKDgU= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: text/plain; charset="utf-8" Content-ID: <0798DBBC339EE84E9FDC2B3F9E751415@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4ace665-4fad-4b97-5fb0-08d65a69dca0 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Dec 2018 04:26:44.5031 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2562 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org DQoNCk9uIDEyLzUvMjAxOCAyOjQ2IEFNLCBBZGFtIFRob21zb24gd3JvdGU6DQo+IE9uIDA0IERl Y2VtYmVyIDIwMTggMTg6MzYsIEFrc2h1IEFncmF3YWwgd3JvdGU6DQo+IA0KPj4gRmFpbGVkIGky YyB0cmFuc2FjdGlvbiBjYW4gbGVhZCB0byBmYWlsdXJlIGluIHJlZyByZWFkIG9yIHdyaXRlLg0K Pj4gTmVlZCB0byBoYXZlIGVycm9yIGNoZWNrIGZvciBlYWNoIHJlYWQgd3JpdGUgb3BlcmF0aW9u Lg0KPj4NCj4gDQo+IEknbSBub3QgcmVhbGx5IGNsZWFyIHdoYXQgdGhpcyBnYWlucyB5b3UuIElm IEkyQyBpcyBicm9rZW4gdGhpcyB3b24ndCBzb2x2ZQ0KPiBhbnl0aGluZywgYW5kIHlvdSBoYXZl IGZhciBkZWVwZXIgcHJvYmxlbXMuIFNlZW1zIHRvIG1lIGxpa2UgYSBsb3Qgb2YgY29kZSB3aGlj aA0KPiBhZGRzIGFsbW9zdCBub3RoaW5nLg0KPiAgDQoNCkkgYWdyZWUgQWRhbSB0aGF0IGlmIEky QyBpcyBicm9rZW4sIHN5c3RlbSBpcyBpbiBiYWQgc3RhdGUuIEJ1dCBzbyBpcw0KdGhlIGNhc2Ug d2l0aCBtb3N0IG9mIHRoZSBlcnJvciBzaXR1YXRpb25zLiBFcnJvciBoYW5kbGluZyBpcyBhbnl3 YXkgbmVlZGVkLg0KV2UgaGF2ZSBzZWVuIGNhc2Ugd2hlcmUgcmVhZDMyIHJldHVybmVkIC0xLCB1 bnNpZ25lZCBpbnQgY2FzdCBhbmQgdGhlDQp3cml0ZSBiYWNrIG9mIHRoZSBlcnJvciB2YWx1ZSBl bmRzIHVwIGluIHVwZGF0aW5nIHRoZSByZWdpc3RlciB3aXRoIDB4ZmYuDQpOZWVkIHRvIGF2b2lk IHNjZW5hcmlvcyBsaWtlIHRoaXMuDQoNClRoYW5rcywNCkFrc2h1DQo+PiBTaWduZWQtb2ZmLWJ5 OiBBa3NodSBBZ3Jhd2FsIDxha3NodS5hZ3Jhd2FsQGFtZC5jb20+DQo+PiAtLS0NCj4+ICBzb3Vu ZC9zb2MvY29kZWNzL2RhNzIxOS5jIHwgMzIzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQ0KPj4gLS0tLS0tLS0tLQ0KPj4gIHNvdW5kL3NvYy9jb2RlY3MvZGE3MjE5LmggfCAg IDIgKy0NCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDI0NyBpbnNlcnRpb25zKCspLCA3OCBkZWxldGlv bnMoLSkNCj4+DQo+PiBkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9kYTcyMTkuYyBiL3Nv dW5kL3NvYy9jb2RlY3MvZGE3MjE5LmMgaW5kZXgNCj4+IGU0NmU5ZjQuLjY3NTcxMjkgMTAwNjQ0 DQo+PiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL2RhNzIxOS5jDQo+PiArKysgYi9zb3VuZC9zb2Mv Y29kZWNzL2RhNzIxOS5jDQo+PiBAQCAtMzEyLDY5ICszMTIsMTAzIEBAIHN0YXRpYyBpbnQgZGE3 MjE5X2VudW1fbG9ja2VkX3B1dChzdHJ1Y3QNCj4+IHNuZF9rY29udHJvbCAqa2NvbnRyb2wsICB9 DQo+Pg0KPj4gIC8qIEFMQyAqLw0KPj4gLXN0YXRpYyB2b2lkIGRhNzIxOV9hbGNfY2FsaWIoc3Ry dWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpDQo+PiArc3RhdGljIGludCBkYTcyMTlf YWxjX2NhbGliKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KQ0KPj4gIHsNCj4+ IC0JdTggbWljX2N0cmwsIG1peGluX2N0cmwsIGFkY19jdHJsLCBjYWxpYl9jdHJsOw0KPj4gKwlp bnQgbWljX2N0cmwsIG1peGluX2N0cmwsIGFkY19jdHJsLCBjYWxpYl9jdHJsOw0KPj4gKwlpbnQg cmV0Ow0KPj4NCj4+ICAJLyogU2F2ZSBjdXJyZW50IHN0YXRlIG9mIG1pYyBjb250cm9sIHJlZ2lz dGVyICovDQo+PiAgCW1pY19jdHJsID0gc25kX3NvY19jb21wb25lbnRfcmVhZDMyKGNvbXBvbmVu dCwNCj4+IERBNzIxOV9NSUNfMV9DVFJMKTsNCj4+ICsJaWYgKG1pY19jdHJsIDwgMCkNCj4+ICsJ CXJldHVybiBtaWNfY3RybDsNCj4+DQo+PiAgCS8qIFNhdmUgY3VycmVudCBzdGF0ZSBvZiBpbnB1 dCBtaXhlciBjb250cm9sIHJlZ2lzdGVyICovDQo+PiAgCW1peGluX2N0cmwgPSBzbmRfc29jX2Nv bXBvbmVudF9yZWFkMzIoY29tcG9uZW50LA0KPj4gREE3MjE5X01JWElOX0xfQ1RSTCk7DQo+PiAr CWlmIChtaXhpbl9jdHJsIDwgMCkNCj4+ICsJCXJldHVybiBtaXhpbl9jdHJsOw0KPj4NCj4+ICAJ LyogU2F2ZSBjdXJyZW50IHN0YXRlIG9mIGlucHV0IEFEQyBjb250cm9sIHJlZ2lzdGVyICovDQo+ PiAgCWFkY19jdHJsID0gc25kX3NvY19jb21wb25lbnRfcmVhZDMyKGNvbXBvbmVudCwNCj4+IERB NzIxOV9BRENfTF9DVFJMKTsNCj4+ICsJaWYgKGFkY19jdHJsIDwgMCkNCj4+ICsJCXJldHVybiBh ZGNfY3RybDsNCj4+DQo+PiAgCS8qIEVuYWJsZSB0aGVuIE11dGUgTUlDIFBHQXMgKi8NCj4+IC0J c25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlfTUlDXzFfQ1RS TCwNCj4+IERBNzIxOV9NSUNfMV9BTVBfRU5fTUFTSywNCj4+ICsJcmV0ID0gc25kX3NvY19jb21w b25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X01JQ18xX0NUUkwsDQo+PiAr CQkJICAgIERBNzIxOV9NSUNfMV9BTVBfRU5fTUFTSywNCj4+ICAJCQkgICAgREE3MjE5X01JQ18x X0FNUF9FTl9NQVNLKTsNCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9u ZW50LCBEQTcyMTlfTUlDXzFfQ1RSTCwNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4g cmV0Ow0KPj4gKw0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21w b25lbnQsDQo+PiBEQTcyMTlfTUlDXzFfQ1RSTCwNCj4+ICAJCQkgICAgREE3MjE5X01JQ18xX0FN UF9NVVRFX0VOX01BU0ssDQo+PiAgCQkJICAgIERBNzIxOV9NSUNfMV9BTVBfTVVURV9FTl9NQVNL KTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJLyogRW5h YmxlIGlucHV0IG1peGVycyB1bm11dGVkICovDQo+PiAtCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0 ZV9iaXRzKGNvbXBvbmVudCwgREE3MjE5X01JWElOX0xfQ1RSTCwNCj4+ICsJcmV0ID0gc25kX3Nv Y19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X01JWElOX0xfQ1RS TCwNCj4+ICAJCQkgICAgREE3MjE5X01JWElOX0xfQU1QX0VOX01BU0sgfA0KPj4gIAkJCSAgICBE QTcyMTlfTUlYSU5fTF9BTVBfTVVURV9FTl9NQVNLLA0KPj4gIAkJCSAgICBEQTcyMTlfTUlYSU5f TF9BTVBfRU5fTUFTSyk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ DQo+PiAgCS8qIEVuYWJsZSBpbnB1dCBmaWx0ZXJzIHVubXV0ZWQgKi8NCj4+IC0Jc25kX3NvY19j b21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlfQURDX0xfQ1RSTCwNCj4+ICsJ cmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5 X0FEQ19MX0NUUkwsDQo+PiAgCQkJICAgIERBNzIxOV9BRENfTF9NVVRFX0VOX01BU0sgfA0KPj4g REE3MjE5X0FEQ19MX0VOX01BU0ssDQo+PiAgCQkJICAgIERBNzIxOV9BRENfTF9FTl9NQVNLKTsN Cj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJLyogUGVyZm9y bSBhdXRvIGNhbGlicmF0aW9uICovDQo+PiAtCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRz KGNvbXBvbmVudCwgREE3MjE5X0FMQ19DVFJMMSwNCj4+ICsJcmV0ID0gc25kX3NvY19jb21wb25l bnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0FMQ19DVFJMMSwNCj4+ICAJCQkg ICAgREE3MjE5X0FMQ19BVVRPX0NBTElCX0VOX01BU0ssDQo+PiAgCQkJICAgIERBNzIxOV9BTENf QVVUT19DQUxJQl9FTl9NQVNLKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0 Ow0KPj4gIAlkbyB7DQo+PiAgCQljYWxpYl9jdHJsID0gc25kX3NvY19jb21wb25lbnRfcmVhZDMy KGNvbXBvbmVudCwNCj4+IERBNzIxOV9BTENfQ1RSTDEpOw0KPj4gKwkJaWYgKGNhbGliX2N0cmwg PCAwKQ0KPj4gKwkJCXJldHVybiBjYWxpYl9jdHJsOw0KPj4gIAl9IHdoaWxlIChjYWxpYl9jdHJs ICYgREE3MjE5X0FMQ19BVVRPX0NBTElCX0VOX01BU0spOw0KPj4NCj4+ICAJLyogSWYgYXV0byBj YWxpYnJhdGlvbiBmYWlscywgZGlzYWJsZSBEQyBvZmZzZXQsIGh5YnJpZCBBTEMgKi8NCj4+ICAJ aWYgKGNhbGliX2N0cmwgJiBEQTcyMTlfQUxDX0NBTElCX09WRVJGTE9XX01BU0spIHsNCj4+ICAJ CWRldl93YXJuKGNvbXBvbmVudC0+ZGV2LA0KPj4gIAkJCSAiQUxDIGF1dG8gY2FsaWJyYXRpb24g ZmFpbGVkIHdpdGggb3ZlcmZsb3dcbiIpOw0KPj4gLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRl X2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0FMQ19DVFJMMSwNCj4+ICsJCXJldCA9IHNuZF9z b2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9BTENfQ1RSTDEs DQo+PiAgCQkJCSAgICBEQTcyMTlfQUxDX09GRlNFVF9FTl9NQVNLIHwNCj4+ICAJCQkJICAgIERB NzIxOV9BTENfU1lOQ19NT0RFX01BU0ssIDApOw0KPj4gKwkJaWYgKHJldCA8IDApDQo+PiArCQkJ cmV0dXJuIHJldDsNCj4+ICAJfSBlbHNlIHsNCj4+ICAJCS8qIEVuYWJsZSBEQyBvZmZzZXQgY2Fu Y2VsbGF0aW9uLCBoeWJyaWQgbW9kZSAqLw0KPj4gLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRl X2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0FMQ19DVFJMMSwNCj4+ICsJCXJldCA9IHNuZF9z b2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9BTENfQ1RSTDEs DQo+PiAgCQkJCSAgICBEQTcyMTlfQUxDX09GRlNFVF9FTl9NQVNLIHwNCj4+ICAJCQkJICAgIERB NzIxOV9BTENfU1lOQ19NT0RFX01BU0ssDQo+PiAgCQkJCSAgICBEQTcyMTlfQUxDX09GRlNFVF9F Tl9NQVNLIHwNCj4+ICAJCQkJICAgIERBNzIxOV9BTENfU1lOQ19NT0RFX01BU0spOw0KPj4gKwkJ aWYgKHJldCA8IDApDQo+PiArCQkJcmV0dXJuIHJldDsNCj4+ICAJfQ0KPj4NCj4+ICAJLyogUmVz dG9yZSBpbnB1dCBmaWx0ZXIgY29udHJvbCByZWdpc3RlciB0byBvcmlnaW5hbCBzdGF0ZSAqLw0K Pj4gLQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIxOV9BRENfTF9DVFJM LCBhZGNfY3RybCk7DQo+PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVu dCwgREE3MjE5X0FEQ19MX0NUUkwsDQo+PiBhZGNfY3RybCk7DQo+PiArCWlmIChyZXQgPCAwKQ0K Pj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAgCS8qIFJlc3RvcmUgaW5wdXQgbWl4ZXIgY29udHJv bCByZWdpc3RlcnMgdG8gb3JpZ2luYWwgc3RhdGUgKi8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRf d3JpdGUoY29tcG9uZW50LCBEQTcyMTlfTUlYSU5fTF9DVFJMLA0KPj4gbWl4aW5fY3RybCk7DQo+ PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwgREE3MjE5X01JWElO X0xfQ1RSTCwNCj4+ICsJCQkJbWl4aW5fY3RybCk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJ cmV0dXJuIHJldDsNCj4+DQo+PiAgCS8qIFJlc3RvcmUgTUlDIGNvbnRyb2wgcmVnaXN0ZXJzIHRv IG9yaWdpbmFsIHN0YXRlcyAqLw0KPj4gLQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25l bnQsIERBNzIxOV9NSUNfMV9DVFJMLCBtaWNfY3RybCk7DQo+PiArCXJldCA9IHNuZF9zb2NfY29t cG9uZW50X3dyaXRlKGNvbXBvbmVudCwgREE3MjE5X01JQ18xX0NUUkwsDQo+PiBtaWNfY3RybCk7 DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsJcmV0dXJu IDA7DQo+PiAgfQ0KPj4NCj4+ICBzdGF0aWMgaW50IGRhNzIxOV9taXhpbl9nYWluX3B1dChzdHJ1 Y3Qgc25kX2tjb250cm9sICprY29udHJvbCwgQEAgLTM5MSw3DQo+PiArNDI1LDcgQEAgc3RhdGlj IGludCBkYTcyMTlfbWl4aW5fZ2Fpbl9wdXQoc3RydWN0IHNuZF9rY29udHJvbCAqa2NvbnRyb2ws DQo+PiAgCSAqIG1ha2Ugc3VyZSBjYWxpYnJhdGVkIG9mZnNldHMgYXJlIHVwZGF0ZWQuDQo+PiAg CSAqLw0KPj4gIAlpZiAoKHJldCA9PSAxKSAmJiAoZGE3MjE5LT5hbGNfZW4pKQ0KPj4gLQkJZGE3 MjE5X2FsY19jYWxpYihjb21wb25lbnQpOw0KPj4gKwkJcmV0ID0gZGE3MjE5X2FsY19jYWxpYihj b21wb25lbnQpOw0KPj4NCj4+ICAJcmV0dXJuIHJldDsNCj4+ICB9DQo+PiBAQCAtNDAxLDExICs0 MzUsMTQgQEAgc3RhdGljIGludCBkYTcyMTlfYWxjX3N3X3B1dChzdHJ1Y3Qgc25kX2tjb250cm9s DQo+PiAqa2NvbnRyb2wsICB7DQo+PiAgCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9u ZW50ID0NCj4+IHNuZF9zb2Nfa2NvbnRyb2xfY29tcG9uZW50KGtjb250cm9sKTsNCj4+ICAJc3Ry dWN0IGRhNzIxOV9wcml2ICpkYTcyMTkgPQ0KPj4gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRh dGEoY29tcG9uZW50KTsNCj4+ICsJaW50IHJldDsNCj4+DQo+Pg0KPj4gIAkvKiBGb3JjZSBBTEMg b2Zmc2V0IGNhbGlicmF0aW9uIGlmIGVuYWJsaW5nIEFMQyAqLw0KPj4gIAlpZiAoKHVjb250cm9s LT52YWx1ZS5pbnRlZ2VyLnZhbHVlWzBdKSAmJiAoIWRhNzIxOS0+YWxjX2VuKSkgew0KPj4gLQkJ ZGE3MjE5X2FsY19jYWxpYihjb21wb25lbnQpOw0KPj4gKwkJcmV0ID0gZGE3MjE5X2FsY19jYWxp Yihjb21wb25lbnQpOw0KPj4gKwkJaWYgKHJldCA8IDApDQo+PiArCQkJcmV0dXJuIHJldDsNCj4+ ICAJCWRhNzIxOS0+YWxjX2VuID0gdHJ1ZTsNCj4+ICAJfSBlbHNlIHsNCj4+ICAJCWRhNzIxOS0+ YWxjX2VuID0gZmFsc2U7DQo+PiBAQCAtODEzLDE2ICs4NTAsMjAgQEAgc3RhdGljIGludCBkYTcy MTlfZGFpX2V2ZW50KHN0cnVjdA0KPj4gc25kX3NvY19kYXBtX3dpZGdldCAqdywNCj4+ICAJCQkJ CXJldHVybiByZXQ7DQo+PiAgCQkJCX0NCj4+ICAJCQl9IGVsc2Ugew0KPj4gLQkJCQlzbmRfc29j X2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiArCQkJCXJldCA9DQo+PiBzbmRf c29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+Pg0KPj4gREE3MjE5X0RBSV9D TEtfTU9ERSwNCj4+DQo+PiBEQTcyMTlfREFJX0NMS19FTl9NQVNLLA0KPj4NCj4+IERBNzIxOV9E QUlfQ0xLX0VOX01BU0spOw0KPj4gKwkJCQlpZiAocmV0IDwgMCkNCj4+ICsJCQkJCXJldHVybiBy ZXQ7DQo+PiAgCQkJfQ0KPj4gIAkJfQ0KPj4NCj4+ICAJCS8qIFBDIHN5bmNocm9uaXNlZCB0byBE QUkgKi8NCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+ IERBNzIxOV9QQ19DT1VOVCwNCj4+ICsJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9i aXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9QQ19DT1VOVCwNCj4+ICAJCQkJICAgIERBNzIxOV9Q Q19GUkVFUlVOX01BU0ssIDApOw0KPj4gKwkJaWYgKHJldCA8IDApDQo+PiArCQkJcmV0dXJuIHJl dDsNCj4+DQo+PiAgCQkvKiBTbGF2ZSBtb2RlLCBpZiBTUk0gbm90IGVuYWJsZWQgbm8gbmVlZCBm b3Igc3RhdHVzIGNoZWNrcyAqLw0KPj4gIAkJcGxsX2N0cmwgPSBzbmRfc29jX2NvbXBvbmVudF9y ZWFkMzIoY29tcG9uZW50LA0KPj4gREE3MjE5X1BMTF9DVFJMKTsgQEAgLTg0NiwxOSArODg3LDIz IEBAIHN0YXRpYyBpbnQgZGE3MjE5X2RhaV9ldmVudChzdHJ1Y3QNCj4+IHNuZF9zb2NfZGFwbV93 aWRnZXQgKncsDQo+PiAgCQlyZXR1cm4gMDsNCj4+ICAJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9Q TUQ6DQo+PiAgCQkvKiBQQyBmcmVlLXJ1bm5pbmcgKi8NCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50 X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9QQ19DT1VOVCwNCj4+ICsJCXJldCA9 IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9QQ19D T1VOVCwNCj4+ICAJCQkJICAgIERBNzIxOV9QQ19GUkVFUlVOX01BU0ssDQo+PiAgCQkJCSAgICBE QTcyMTlfUENfRlJFRVJVTl9NQVNLKTsNCj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVy biByZXQ7DQo+Pg0KPj4gIAkJLyogRGlzYWJsZSBEQUkgY2xrcyBpZiBpbiBtYXN0ZXIgbW9kZSAq Lw0KPj4gIAkJaWYgKGRhNzIxOS0+bWFzdGVyKSB7DQo+PiAgCQkJaWYgKGRhNzIxOS0+ZGFpX2Ns a3MpDQo+PiAgCQkJCWNsa19kaXNhYmxlX3VucHJlcGFyZShkYTcyMTktPmRhaV9jbGtzKTsNCj4+ ICAJCQllbHNlDQo+PiAtCQkJCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVu dCwNCj4+ICsJCQkJcmV0ID0NCj4+IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBv bmVudCwNCj4+DQo+PiBEQTcyMTlfREFJX0NMS19NT0RFLA0KPj4NCj4+IERBNzIxOV9EQUlfQ0xL X0VOX01BU0ssDQo+PiAgCQkJCQkJCSAgICAgIDApOw0KPj4gKwkJCQlpZiAocmV0IDwgMCkNCj4+ ICsJCQkJCXJldHVybiByZXQ7DQo+PiAgCQl9DQo+Pg0KPj4gIAkJcmV0dXJuIDA7DQo+PiBAQCAt ODg3LDYgKzkzMiw3IEBAIHN0YXRpYyBpbnQgZGE3MjE5X21peG91dF9ldmVudChzdHJ1Y3QNCj4+ IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsICB7DQo+PiAgCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50ID0NCj4+IHNuZF9zb2NfZGFwbV90b19jb21wb25lbnQody0+ZGFwbSk7DQo+ PiAgCXU4IGhwX2N0cmwsIG1pbl9nYWluX21hc2s7DQo+PiArCWludCByZXQ7DQo+Pg0KPj4gIAlz d2l0Y2ggKHctPnJlZykgew0KPj4gIAljYXNlIERBNzIxOV9NSVhPVVRfTF9DVFJMOg0KPj4gQEAg LTkwNCwxNSArOTUwLDIwIEBAIHN0YXRpYyBpbnQgZGE3MjE5X21peG91dF9ldmVudChzdHJ1Y3QN Cj4+IHNuZF9zb2NfZGFwbV93aWRnZXQgKncsDQo+PiAgCXN3aXRjaCAoZXZlbnQpIHsNCj4+ICAJ Y2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoNCj4+ICAJCS8qIEVuYWJsZSBtaW5pbXVtIGdhaW4g b24gSFAgdG8gYXZvaWQgcG9wcyAqLw0KPj4gLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2Jp dHMoY29tcG9uZW50LCBocF9jdHJsLA0KPj4gbWluX2dhaW5fbWFzaywNCj4+IC0JCQkJICAgIG1p bl9nYWluX21hc2spOw0KPj4gKwkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMo Y29tcG9uZW50LCBocF9jdHJsLA0KPj4gKwkJCQkgICAgbWluX2dhaW5fbWFzaywgbWluX2dhaW5f bWFzayk7DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJ CW1zbGVlcChEQTcyMTlfTUlOX0dBSU5fREVMQVkpOw0KPj4NCj4+ICAJCWJyZWFrOw0KPj4gIAlj YXNlIFNORF9TT0NfREFQTV9QT1NUX1BNVToNCj4+ICAJCS8qIFJlbW92ZSBtaW5pbXVtIGdhaW4g b24gSFAgKi8NCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwg aHBfY3RybCwNCj4+IG1pbl9nYWluX21hc2ssIDApOw0KPj4gKwkJcmV0ID0gc25kX3NvY19jb21w b25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBocF9jdHJsLA0KPj4gKwkJCQkgICAgbWluX2dh aW5fbWFzaywgMCk7DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4N Cj4+ICAJCWJyZWFrOw0KPj4gIAl9DQo+PiBAQCAtOTI1LDIxICs5NzYsMjkgQEAgc3RhdGljIGlu dCBkYTcyMTlfZ2Fpbl9yYW1wX2V2ZW50KHN0cnVjdA0KPj4gc25kX3NvY19kYXBtX3dpZGdldCAq dywgIHsNCj4+ICAJc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPQ0KPj4gc25k X3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsNCj4+ICAJc3RydWN0IGRhNzIxOV9wcml2 ICpkYTcyMTkgPQ0KPj4gc25kX3NvY19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsN Cj4+ICsJaW50IHJldDsNCj4+DQo+PiAgCXN3aXRjaCAoZXZlbnQpIHsNCj4+ICAJY2FzZSBTTkRf U09DX0RBUE1fUFJFX1BNVToNCj4+ICAJY2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoNCj4+ICAJ CS8qIEVuc3VyZSBub21pbmFsIGdhaW4gcmFtcGluZyBmb3IgREFQTSBzZXF1ZW5jZSAqLw0KPj4g LQkJZGE3MjE5LT5nYWluX3JhbXBfY3RybCA9DQo+PiAtCQkJc25kX3NvY19jb21wb25lbnRfcmVh ZDMyKGNvbXBvbmVudCwNCj4+IERBNzIxOV9HQUlOX1JBTVBfQ1RSTCk7DQo+PiAtCQlzbmRfc29j X2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsDQo+PiBEQTcyMTlfR0FJTl9SQU1QX0NUUkwsDQo+ PiAtCQkJICAgICAgREE3MjE5X0dBSU5fUkFNUF9SQVRFX05PTUlOQUwpOw0KPj4gKwkJZGE3MjE5 LT5nYWluX3JhbXBfY3RybCA9DQo+PiBzbmRfc29jX2NvbXBvbmVudF9yZWFkMzIoY29tcG9uZW50 LA0KPj4gKwkJCQkJCURBNzIxOV9HQUlOX1JBTVBfQ1RSTCk7DQo+PiArCQlpZiAoZGE3MjE5LT5n YWluX3JhbXBfY3RybCA8IDApDQo+PiArCQkJcmV0dXJuIGRhNzIxOS0+Z2Fpbl9yYW1wX2N0cmw7 DQo+PiArCQkgcmV0ID0gc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LA0KPj4gKwkJ CQlEQTcyMTlfR0FJTl9SQU1QX0NUUkwsDQo+PiArCQkJCURBNzIxOV9HQUlOX1JBTVBfUkFURV9O T01JTkFMKTsNCj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiAgCQli cmVhazsNCj4+ICAJY2FzZSBTTkRfU09DX0RBUE1fUE9TVF9QTVU6DQo+PiAgCWNhc2UgU05EX1NP Q19EQVBNX1BPU1RfUE1EOg0KPj4gIAkJLyogUmVzdG9yZSBwcmV2aW91cyBnYWluIHJhbXAgc2V0 dGluZ3MgKi8NCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwNCj4+IERB NzIxOV9HQUlOX1JBTVBfQ1RSTCwNCj4+ICsJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3dyaXRl KGNvbXBvbmVudCwNCj4+IERBNzIxOV9HQUlOX1JBTVBfQ1RSTCwNCj4+ICAJCQkgICAgICBkYTcy MTktPmdhaW5fcmFtcF9jdHJsKTsNCj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVybiBy ZXQ7DQo+PiAgCQlicmVhazsNCj4+ICAJfQ0KPj4NCj4+IEBAIC0xMTc3LDEzICsxMjM2LDE3IEBA IHN0YXRpYyBpbnQgZGE3MjE5X3NldF9kYWlfc3lzY2xrKHN0cnVjdCBzbmRfc29jX2RhaQ0KPj4g KmNvZGVjX2RhaSwNCj4+DQo+PiAgCXN3aXRjaCAoY2xrX2lkKSB7DQo+PiAgCWNhc2UgREE3MjE5 X0NMS1NSQ19NQ0xLX1NRUjoNCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNv bXBvbmVudCwNCj4+IERBNzIxOV9QTExfQ1RSTCwNCj4+ICsJCXJldCA9IHNuZF9zb2NfY29tcG9u ZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9QTExfQ1RSTCwNCj4+ICAJCQkJ ICAgIERBNzIxOV9QTExfTUNMS19TUVJfRU5fTUFTSywNCj4+ICAJCQkJICAgIERBNzIxOV9QTExf TUNMS19TUVJfRU5fTUFTSyk7DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0 Ow0KPj4gIAkJYnJlYWs7DQo+PiAgCWNhc2UgREE3MjE5X0NMS1NSQ19NQ0xLOg0KPj4gLQkJc25k X3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X1BMTF9DVFJM LA0KPj4gKwkJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0K Pj4gREE3MjE5X1BMTF9DVFJMLA0KPj4gIAkJCQkgICAgREE3MjE5X1BMTF9NQ0xLX1NRUl9FTl9N QVNLLCAwKTsNCj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiAgCQli cmVhazsNCj4+ICAJZGVmYXVsdDoNCj4+ICAJCWRldl9lcnIoY29kZWNfZGFpLT5kZXYsICJVbmtu b3duIGNsb2NrIHNvdXJjZSAlZFxuIiwgY2xrX2lkKTsNCj4+IEBAIC0xMjE5LDYgKzEyODIsNyBA QCBpbnQgZGE3MjE5X3NldF9wbGwoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50DQo+PiAqY29tcG9u ZW50LCBpbnQgc291cmNlLCB1bnNpZ25lZCBpbnQNCj4+ICAJdTggcGxsX2ZyYWNfdG9wLCBwbGxf ZnJhY19ib3QsIHBsbF9pbnRlZ2VyOw0KPj4gIAl1MzIgZnJlcV9yZWY7DQo+PiAgCXU2NCBmcmFj X2RpdjsNCj4+ICsJaW50IHJldDsNCj4+DQo+PiAgCS8qIFZlcmlmeSAyTUh6IC0gNTRNSHogTUNM SyBwcm92aWRlZCwgYW5kIHNldCBpbnB1dCBkaXZpZGVyICovDQo+PiAgCWlmIChkYTcyMTktPm1j bGtfcmF0ZSA8IDIwMDAwMDApIHsNCj4+IEBAIC0xMjUyLDkgKzEzMTYsMTEgQEAgaW50IGRhNzIx OV9zZXRfcGxsKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudA0KPj4gKmNvbXBvbmVudCwgaW50IHNv dXJjZSwgdW5zaWduZWQgaW50DQo+PiAgCXN3aXRjaCAoc291cmNlKSB7DQo+PiAgCWNhc2UgREE3 MjE5X1NZU0NMS19NQ0xLOg0KPj4gIAkJcGxsX2N0cmwgfD0gREE3MjE5X1BMTF9NT0RFX0JZUEFT UzsNCj4+IC0JCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERB NzIxOV9QTExfQ1RSTCwNCj4+ICsJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRz KGNvbXBvbmVudCwNCj4+IERBNzIxOV9QTExfQ1RSTCwNCj4+ICAJCQkJICAgIERBNzIxOV9QTExf SU5ESVZfTUFTSyB8DQo+PiAgCQkJCSAgICBEQTcyMTlfUExMX01PREVfTUFTSywgcGxsX2N0cmwp Ow0KPj4gKwkJaWYgKHJldCA8IDApDQo+PiArCQkJcmV0dXJuIHJldDsNCj4+ICAJCXJldHVybiAw Ow0KPj4gIAljYXNlIERBNzIxOV9TWVNDTEtfUExMOg0KPj4gIAkJcGxsX2N0cmwgfD0gREE3MjE5 X1BMTF9NT0RFX05PUk1BTDsNCj4+IEBAIC0xMjc1LDEyICsxMzQxLDIzIEBAIGludCBkYTcyMTlf c2V0X3BsbChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQNCj4+ICpjb21wb25lbnQsIGludCBzb3Vy Y2UsIHVuc2lnbmVkIGludA0KPj4gIAlwbGxfZnJhY19ib3QgPSAoZnJhY19kaXYpICYgREE3MjE5 X0JZVEVfTUFTSzsNCj4+DQo+PiAgCS8qIFdyaXRlIFBMTCBjb25maWcgJiBkaXZpZGVycyAqLw0K Pj4gLQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIxOV9QTExfRlJBQ19U T1AsDQo+PiBwbGxfZnJhY190b3ApOw0KPj4gLQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21w b25lbnQsIERBNzIxOV9QTExfRlJBQ19CT1QsDQo+PiBwbGxfZnJhY19ib3QpOw0KPj4gLQlzbmRf c29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIxOV9QTExfSU5URUdFUiwNCj4+IHBs bF9pbnRlZ2VyKTsNCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50 LCBEQTcyMTlfUExMX0NUUkwsDQo+PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNv bXBvbmVudCwgREE3MjE5X1BMTF9GUkFDX1RPUCwNCj4+ICsJCQkJcGxsX2ZyYWNfdG9wKTsNCj4+ ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlyZXQgPSBzbmRfc29jX2Nv bXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIxOV9QTExfRlJBQ19CT1QsDQo+PiArCQkJCXBs bF9mcmFjX2JvdCk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJ cmV0ID0gc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LCBEQTcyMTlfUExMX0lOVEVH RVIsDQo+PiArCQkJCXBsbF9pbnRlZ2VyKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1 cm4gcmV0Ow0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25l bnQsIERBNzIxOV9QTExfQ1RSTCwNCj4+ICAJCQkgICAgREE3MjE5X1BMTF9JTkRJVl9NQVNLIHwN Cj4+IERBNzIxOV9QTExfTU9ERV9NQVNLLA0KPj4gIAkJCSAgICBwbGxfY3RybCk7DQo+PiArCWlm IChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAgCXJldHVybiAwOw0KPj4gIH0N Cj4+IEBAIC0xMzA0LDYgKzEzODEsNyBAQCBzdGF0aWMgaW50IGRhNzIxOV9zZXRfZGFpX2ZtdChz dHJ1Y3Qgc25kX3NvY19kYWkNCj4+ICpjb2RlY19kYWksIHVuc2lnbmVkIGludCBmbXQpDQo+PiAg CXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gY29kZWNfZGFpLT5jb21wb25l bnQ7DQo+PiAgCXN0cnVjdCBkYTcyMTlfcHJpdiAqZGE3MjE5ID0NCj4+IHNuZF9zb2NfY29tcG9u ZW50X2dldF9kcnZkYXRhKGNvbXBvbmVudCk7DQo+PiAgCXU4IGRhaV9jbGtfbW9kZSA9IDAsIGRh aV9jdHJsID0gMDsNCj4+ICsJaW50IHJldDsNCj4+DQo+PiAgCXN3aXRjaCAoZm10ICYgU05EX1NP Q19EQUlGTVRfTUFTVEVSX01BU0spIHsNCj4+ICAJY2FzZSBTTkRfU09DX0RBSUZNVF9DQk1fQ0ZN Og0KPj4gQEAgLTEzNzksMTIgKzE0NTcsMTYgQEAgc3RhdGljIGludCBkYTcyMTlfc2V0X2RhaV9m bXQoc3RydWN0IHNuZF9zb2NfZGFpDQo+PiAqY29kZWNfZGFpLCB1bnNpZ25lZCBpbnQgZm10KQ0K Pj4gIAkvKiBCeSBkZWZhdWx0IDY0IEJDTEtzIHBlciBXQ0xLIGlzIHN1cHBvcnRlZCAqLw0KPj4g IAlkYWlfY2xrX21vZGUgfD0gREE3MjE5X0RBSV9CQ0xLU19QRVJfV0NMS182NDsNCj4+DQo+PiAt CXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9EQUlf Q0xLX01PREUsDQo+PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBv bmVudCwNCj4+IERBNzIxOV9EQUlfQ0xLX01PREUsDQo+PiAgCQkJICAgIERBNzIxOV9EQUlfQkNM S1NfUEVSX1dDTEtfTUFTSyB8DQo+PiAgCQkJICAgIERBNzIxOV9EQUlfQ0xLX1BPTF9NQVNLIHwN Cj4+IERBNzIxOV9EQUlfV0NMS19QT0xfTUFTSywNCj4+ICAJCQkgICAgZGFpX2Nsa19tb2RlKTsN Cj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlfREFJ X0NUUkwsDQo+PiBEQTcyMTlfREFJX0ZPUk1BVF9NQVNLLA0KPj4gLQkJCSAgICBkYWlfY3RybCk7 DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gc25kX3Nv Y19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlfREFJX0NUUkwsDQo+PiAr CQkJICAgIERBNzIxOV9EQUlfRk9STUFUX01BU0ssIGRhaV9jdHJsKTsNCj4+ICsJaWYgKHJldCA8 IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJcmV0dXJuIDA7DQo+PiAgfQ0KPj4gQEAg LTEzOTgsMTUgKzE0ODAsMjIgQEAgc3RhdGljIGludCBkYTcyMTlfc2V0X2RhaV90ZG1fc2xvdChz dHJ1Y3QNCj4+IHNuZF9zb2NfZGFpICpkYWksDQo+PiAgCXU4IGRhaV9iY2xrc19wZXJfd2NsazsN Cj4+ICAJdTE2IG9mZnNldDsNCj4+ICAJdTMyIGZyYW1lX3NpemU7DQo+PiArCWludCByZXQ7DQo+ Pg0KPj4gIAkvKiBObyBjaGFubmVscyBlbmFibGVkIHNvIGRpc2FibGUgVERNLCByZXZlcnQgdG8g NjQtYml0IGZyYW1lcyAqLw0KPj4gIAlpZiAoIXR4X21hc2spIHsNCj4+IC0JCXNuZF9zb2NfY29t cG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9EQUlfVERNX0NUUkwsDQo+ PiArCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiAr CQkJCSAgICBEQTcyMTlfREFJX1RETV9DVFJMLA0KPj4gIAkJCQkgICAgREE3MjE5X0RBSV9URE1f Q0hfRU5fTUFTSyB8DQo+PiAgCQkJCSAgICBEQTcyMTlfREFJX1RETV9NT0RFX0VOX01BU0ssIDAp Ow0KPj4gLQkJc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3 MjE5X0RBSV9DTEtfTU9ERSwNCj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVybiByZXQ7 DQo+PiArCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+ PiArCQkJCSAgICBEQTcyMTlfREFJX0NMS19NT0RFLA0KPj4gIAkJCQkgICAgREE3MjE5X0RBSV9C Q0xLU19QRVJfV0NMS19NQVNLLA0KPj4gIAkJCQkgICAgREE3MjE5X0RBSV9CQ0xLU19QRVJfV0NM S182NCk7DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4gIAkJcmV0 dXJuIDA7DQo+PiAgCX0NCj4+DQo+PiBAQCAtMTQ0NCwxOSArMTUzMywyNSBAQCBzdGF0aWMgaW50 IGRhNzIxOV9zZXRfZGFpX3RkbV9zbG90KHN0cnVjdA0KPj4gc25kX3NvY19kYWkgKmRhaSwNCj4+ ICAJCXJldHVybiAtRUlOVkFMOw0KPj4gIAl9DQo+Pg0KPj4gLQlzbmRfc29jX2NvbXBvbmVudF91 cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiBEQTcyMTlfREFJX0NMS19NT0RFLA0KPj4gKwlyZXQg PSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiBEQTcyMTlfREFJ X0NMS19NT0RFLA0KPj4gIAkJCSAgICBEQTcyMTlfREFJX0JDTEtTX1BFUl9XQ0xLX01BU0ssDQo+ PiAgCQkJICAgIGRhaV9iY2xrc19wZXJfd2Nsayk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJ cmV0dXJuIHJldDsNCj4+DQo+PiAgCW9mZnNldCA9IGNwdV90b19sZTE2KHJ4X21hc2spOw0KPj4g LQlyZWdtYXBfYnVsa193cml0ZShkYTcyMTktPnJlZ21hcCwgREE3MjE5X0RBSV9PRkZTRVRfTE9X RVIsDQo+PiArCXJldCA9IHJlZ21hcF9idWxrX3dyaXRlKGRhNzIxOS0+cmVnbWFwLA0KPj4gREE3 MjE5X0RBSV9PRkZTRVRfTE9XRVIsDQo+PiAgCQkJICAmb2Zmc2V0LCBzaXplb2Yob2Zmc2V0KSk7 DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAtCXNuZF9zb2Nf Y29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgREE3MjE5X0RBSV9URE1fQ1RSTCwNCj4+ ICsJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3 MjE5X0RBSV9URE1fQ1RSTCwNCj4+ICAJCQkgICAgREE3MjE5X0RBSV9URE1fQ0hfRU5fTUFTSyB8 DQo+PiAgCQkJICAgIERBNzIxOV9EQUlfVERNX01PREVfRU5fTUFTSywNCj4+ICAJCQkgICAgKHR4 X21hc2sgPDwgREE3MjE5X0RBSV9URE1fQ0hfRU5fU0hJRlQpIHwNCj4+ICAJCQkgICAgREE3MjE5 X0RBSV9URE1fTU9ERV9FTl9NQVNLKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4g cmV0Ow0KPj4NCj4+ICAJcmV0dXJuIDA7DQo+PiAgfQ0KPj4gQEAgLTE0NjgsNiArMTU2Myw3IEBA IHN0YXRpYyBpbnQgZGE3MjE5X2h3X3BhcmFtcyhzdHJ1Y3QNCj4+IHNuZF9wY21fc3Vic3RyZWFt ICpzdWJzdHJlYW0sDQo+PiAgCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0g ZGFpLT5jb21wb25lbnQ7DQo+PiAgCXU4IGRhaV9jdHJsID0gMCwgZnM7DQo+PiAgCXVuc2lnbmVk IGludCBjaGFubmVsczsNCj4+ICsJaW50IHJldDsNCj4+DQo+PiAgCXN3aXRjaCAocGFyYW1zX3dp ZHRoKHBhcmFtcykpIHsNCj4+ICAJY2FzZSAxNjoNCj4+IEBAIC0xNTMzLDExICsxNjI5LDE1IEBA IHN0YXRpYyBpbnQgZGE3MjE5X2h3X3BhcmFtcyhzdHJ1Y3QNCj4+IHNuZF9wY21fc3Vic3RyZWFt ICpzdWJzdHJlYW0sDQo+PiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICAJfQ0KPj4NCj4+IC0Jc25k X3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlfREFJX0NUUkwsDQo+ PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgREE3MjE5 X0RBSV9DVFJMLA0KPj4gIAkJCSAgICBEQTcyMTlfREFJX1dPUkRfTEVOR1RIX01BU0sgfA0KPj4g IAkJCSAgICBEQTcyMTlfREFJX0NIX05VTV9NQVNLLA0KPj4gIAkJCSAgICBkYWlfY3RybCk7DQo+ PiAtCXNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwgREE3MjE5X1NSLCBmcyk7DQo+ PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gc25kX3NvY19j b21wb25lbnRfd3JpdGUoY29tcG9uZW50LCBEQTcyMTlfU1IsIGZzKTsNCj4+ICsJaWYgKHJldCA8 IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJcmV0dXJuIDA7DQo+PiAgfQ0KPj4gQEAg LTE2OTIsOSArMTc5MiwxMiBAQCBzdGF0aWMgaW50IGRhNzIxOV9zZXRfYmlhc19sZXZlbChzdHJ1 Y3QNCj4+IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsDQo+PiAgCWNhc2UgU05EX1NPQ19C SUFTX1NUQU5EQlk6DQo+PiAgCQlpZiAoc25kX3NvY19jb21wb25lbnRfZ2V0X2JpYXNfbGV2ZWwo Y29tcG9uZW50KSA9PQ0KPj4gU05EX1NPQ19CSUFTX09GRikNCj4+ICAJCQkvKiBNYXN0ZXIgYmlh cyAqLw0KPj4gLQkJCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+ IERBNzIxOV9SRUZFUkVOQ0VTLA0KPj4gKwkJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0 ZV9iaXRzKGNvbXBvbmVudCwNCj4+ICsJCQkJCSAgICBEQTcyMTlfUkVGRVJFTkNFUywNCj4+ICAJ CQkJCSAgICBEQTcyMTlfQklBU19FTl9NQVNLLA0KPj4gIAkJCQkJICAgIERBNzIxOV9CSUFTX0VO X01BU0spOw0KPj4gKwkJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ ICAJCWlmIChzbmRfc29jX2NvbXBvbmVudF9nZXRfYmlhc19sZXZlbChjb21wb25lbnQpID09DQo+ PiBTTkRfU09DX0JJQVNfUFJFUEFSRSkgew0KPj4gIAkJCS8qIFJlbW92ZSBNQ0xLICovDQo+PiBA QCAtMTcwNSw4ICsxODA4LDExIEBAIHN0YXRpYyBpbnQgZGE3MjE5X3NldF9iaWFzX2xldmVsKHN0 cnVjdA0KPj4gc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwNCj4+ICAJY2FzZSBTTkRfU09D X0JJQVNfT0ZGOg0KPj4gIAkJLyogT25seSBkaXNhYmxlIG1hc3RlciBiaWFzIGlmIHdlJ3JlIG5v dCBhIHdha2UtdXAgc291cmNlICovDQo+PiAgCQlpZiAoIWRhNzIxOS0+d2FrZXVwX3NvdXJjZSkN Cj4+IC0JCQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiBEQTcy MTlfUkVGRVJFTkNFUywNCj4+ICsJCQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0 cyhjb21wb25lbnQsDQo+PiArCQkJCQkgICAgREE3MjE5X1JFRkVSRU5DRVMsDQo+PiAgCQkJCQkg ICAgREE3MjE5X0JJQVNfRU5fTUFTSywgMCk7DQo+PiArCQkJaWYgKHJldCA8IDApDQo+PiArCQkJ CXJldHVybiByZXQ7DQo+Pg0KPj4gIAkJYnJlYWs7DQo+PiAgCX0NCj4+IEBAIC0xNzU0LDEwICsx ODYwLDE2IEBAIHN0YXRpYyBpbnQgZGE3MjE5X2hhbmRsZV9zdXBwbGllcyhzdHJ1Y3QNCj4+IHNu ZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpDQo+PiAgCX0NCj4+DQo+PiAgCS8qIEVuc3VyZSBk ZXZpY2UgaW4gYWN0aXZlIG1vZGUgKi8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29t cG9uZW50LCBEQTcyMTlfU1lTVEVNX0FDVElWRSwNCj4+IERBNzIxOV9TWVNURU1fQUNUSVZFX01B U0spOw0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIx OV9TWVNURU1fQUNUSVZFLA0KPj4gKwkJCQlEQTcyMTlfU1lTVEVNX0FDVElWRV9NQVNLKTsNCj4+ ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJLyogVXBkYXRlIElP IHZvbHRhZ2UgbGV2ZWwgcmFuZ2UgKi8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29t cG9uZW50LCBEQTcyMTlfSU9fQ1RSTCwNCj4+IGlvX3ZvbHRhZ2VfbHZsKTsNCj4+ICsJcmV0ID0g c25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LCBEQTcyMTlfSU9fQ1RSTCwNCj4+ICsJ CQkJaW9fdm9sdGFnZV9sdmwpOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCXJldHVybiByZXQ7 DQo+Pg0KPj4gIAlyZXR1cm4gMDsNCj4+ICB9DQo+PiBAQCAtMTc2OCwxMCArMTg4MCwxMyBAQCBz dGF0aWMgaW50IGRhNzIxOV9kYWlfY2xrc19wcmVwYXJlKHN0cnVjdCBjbGtfaHcNCj4+ICpodykN Cj4+ICAJc3RydWN0IGRhNzIxOV9wcml2ICpkYTcyMTkgPQ0KPj4gIAkJY29udGFpbmVyX29mKGh3 LCBzdHJ1Y3QgZGE3MjE5X3ByaXYsIGRhaV9jbGtzX2h3KTsNCj4+ICAJc3RydWN0IHNuZF9zb2Nf Y29tcG9uZW50ICpjb21wb25lbnQgPSBkYTcyMTktPmFhZC0+Y29tcG9uZW50Ow0KPj4gKwlpbnQg cmV0Ow0KPj4NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0K Pj4gREE3MjE5X0RBSV9DTEtfTU9ERSwNCj4+ICsJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBk YXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0RBSV9DTEtfTU9ERSwNCj4+ICAJCQkJICAg ICAgREE3MjE5X0RBSV9DTEtfRU5fTUFTSywNCj4+ICAJCQkJICAgICAgREE3MjE5X0RBSV9DTEtf RU5fTUFTSyk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAg CXJldHVybiAwOw0KPj4gIH0NCj4+IEBAIC0xNzgxLDkgKzE4OTYsMTIgQEAgc3RhdGljIHZvaWQg ZGE3MjE5X2RhaV9jbGtzX3VucHJlcGFyZShzdHJ1Y3QgY2xrX2h3DQo+PiAqaHcpDQo+PiAgCXN0 cnVjdCBkYTcyMTlfcHJpdiAqZGE3MjE5ID0NCj4+ICAJCWNvbnRhaW5lcl9vZihodywgc3RydWN0 IGRhNzIxOV9wcml2LCBkYWlfY2xrc19odyk7DQo+PiAgCXN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dCAqY29tcG9uZW50ID0gZGE3MjE5LT5hYWQtPmNvbXBvbmVudDsNCj4+ICsJaW50IHJldDsNCj4+ DQo+PiAtCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIx OV9EQUlfQ0xLX01PREUsDQo+PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRz KGNvbXBvbmVudCwNCj4+IERBNzIxOV9EQUlfQ0xLX01PREUsDQo+PiAgCQkJCSAgICAgIERBNzIx OV9EQUlfQ0xLX0VOX01BU0ssIDApOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCWRldl9lcnIo Y29tcG9uZW50LT5kZXYsICJGYWlsZWQgdG8gZGlzYWJsZSBjbGs6ICVkXG4iLCByZXQpOw0KPj4g IH0NCj4+DQo+PiAgc3RhdGljIGludCBkYTcyMTlfZGFpX2Nsa3NfaXNfcHJlcGFyZWQoc3RydWN0 IGNsa19odyAqaHcpIEBAIC0xNzkxLDkgKzE5MDksMTENCj4+IEBAIHN0YXRpYyBpbnQgZGE3MjE5 X2RhaV9jbGtzX2lzX3ByZXBhcmVkKHN0cnVjdCBjbGtfaHcgKmh3KQ0KPj4gIAlzdHJ1Y3QgZGE3 MjE5X3ByaXYgKmRhNzIxOSA9DQo+PiAgCQljb250YWluZXJfb2YoaHcsIHN0cnVjdCBkYTcyMTlf cHJpdiwgZGFpX2Nsa3NfaHcpOw0KPj4gIAlzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBv bmVudCA9IGRhNzIxOS0+YWFkLT5jb21wb25lbnQ7DQo+PiAtCXU4IGNsa19yZWc7DQo+PiArCWlu dCBjbGtfcmVnOw0KPj4NCj4+ICAJY2xrX3JlZyA9IHNuZF9zb2NfY29tcG9uZW50X3JlYWQzMihj b21wb25lbnQsDQo+PiBEQTcyMTlfREFJX0NMS19NT0RFKTsNCj4+ICsJaWYgKGNsa19yZWcgPCAw KQ0KPj4gKwkJcmV0dXJuIGNsa19yZWc7DQo+Pg0KPj4gIAlyZXR1cm4gISEoY2xrX3JlZyAmIERB NzIxOV9EQUlfQ0xLX0VOX01BU0spOyAgfSBAQCAtMTg0NCwxMA0KPj4gKzE5NjQsMTEgQEAgc3Rh dGljIHZvaWQgZGE3MjE5X3JlZ2lzdGVyX2RhaV9jbGtzKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVu dA0KPj4gKmNvbXBvbmVudCkgIHN0YXRpYyBpbmxpbmUgdm9pZCBkYTcyMTlfcmVnaXN0ZXJfZGFp X2Nsa3Moc3RydWN0DQo+PiBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50KSB7fSAgI2VuZGlm IC8qIENPTkZJR19DT01NT05fQ0xLICovDQo+Pg0KPj4gLXN0YXRpYyB2b2lkIGRhNzIxOV9oYW5k bGVfcGRhdGEoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpDQo+PiArc3RhdGlj IGludCBkYTcyMTlfaGFuZGxlX3BkYXRhKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9u ZW50KQ0KPj4gIHsNCj4+ICAJc3RydWN0IGRhNzIxOV9wcml2ICpkYTcyMTkgPQ0KPj4gc25kX3Nv Y19jb21wb25lbnRfZ2V0X2RydmRhdGEoY29tcG9uZW50KTsNCj4+ICAJc3RydWN0IGRhNzIxOV9w ZGF0YSAqcGRhdGEgPSBkYTcyMTktPnBkYXRhOw0KPj4gKwlpbnQgcmV0Ow0KPj4NCj4+ICAJaWYg KHBkYXRhKSB7DQo+PiAgCQl1OCBtaWNiaWFzX2x2bCA9IDA7DQo+PiBAQCAtMTg2OSw3ICsxOTkw LDEwIEBAIHN0YXRpYyB2b2lkIGRhNzIxOV9oYW5kbGVfcGRhdGEoc3RydWN0DQo+PiBzbmRfc29j X2NvbXBvbmVudCAqY29tcG9uZW50KQ0KPj4gIAkJCWJyZWFrOw0KPj4gIAkJfQ0KPj4NCj4+IC0J CXNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwgREE3MjE5X01JQ0JJQVNfQ1RSTCwN Cj4+IG1pY2JpYXNfbHZsKTsNCj4+ICsJCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3dyaXRlKGNv bXBvbmVudCwNCj4+IERBNzIxOV9NSUNCSUFTX0NUUkwsDQo+PiArCQkJCQltaWNiaWFzX2x2bCk7 DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJCS8qDQo+ PiAgCQkgKiBDYWxjdWxhdGUgZGVsYXkgcmVxdWlyZWQgdG8gY29tcGVuc2F0ZSBmb3IgREMgb2Zm c2V0IGluIEBAIC0NCj4+IDE4ODQsMTEgKzIwMDgsMTUgQEAgc3RhdGljIHZvaWQgZGE3MjE5X2hh bmRsZV9wZGF0YShzdHJ1Y3QNCj4+IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQpDQo+PiAg CQljYXNlIERBNzIxOV9NSUNfQU1QX0lOX1NFTF9ESUZGOg0KPj4gIAkJY2FzZSBEQTcyMTlfTUlD X0FNUF9JTl9TRUxfU0VfUDoNCj4+ICAJCWNhc2UgREE3MjE5X01JQ19BTVBfSU5fU0VMX1NFX046 DQo+PiAtCQkJc25kX3NvY19jb21wb25lbnRfd3JpdGUoY29tcG9uZW50LA0KPj4gREE3MjE5X01J Q18xX1NFTEVDVCwNCj4+IC0JCQkJICAgICAgcGRhdGEtPm1pY19hbXBfaW5fc2VsKTsNCj4+ICsJ CQlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsDQo+PiArCQkJCQlEQTcy MTlfTUlDXzFfU0VMRUNULA0KPj4gKwkJCQkJcGRhdGEtPm1pY19hbXBfaW5fc2VsKTsNCj4+ICsJ CQlpZiAocmV0IDwgMCkNCj4+ICsJCQkJcmV0dXJuIHJldDsNCj4+ICAJCQlicmVhazsNCj4+ICAJ CX0NCj4+ICAJfQ0KPj4gKwlyZXR1cm4gMDsNCj4+ICB9DQo+Pg0KPj4gIHN0YXRpYyBzdHJ1Y3Qg cmVnX3NlcXVlbmNlIGRhNzIxOV9yZXZfYWFfcGF0Y2hbXSA9IHsgQEAgLTE5MzQsNyArMjA2Miw5 IEBADQo+PiBzdGF0aWMgaW50IGRhNzIxOV9wcm9iZShzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQg KmNvbXBvbmVudCkNCj4+ICAJaWYgKCFkYTcyMTktPnBkYXRhKQ0KPj4gIAkJZGE3MjE5LT5wZGF0 YSA9IGRhNzIxOV9md190b19wZGF0YShjb21wb25lbnQpOw0KPj4NCj4+IC0JZGE3MjE5X2hhbmRs ZV9wZGF0YShjb21wb25lbnQpOw0KPj4gKwlyZXQgPSBkYTcyMTlfaGFuZGxlX3BkYXRhKGNvbXBv bmVudCk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAgCS8q IENoZWNrIGlmIE1DTEsgcHJvdmlkZWQgKi8NCj4+ICAJZGE3MjE5LT5tY2xrID0gZGV2bV9jbGtf Z2V0KGNvbXBvbmVudC0+ZGV2LCAibWNsayIpOyBAQCAtMTk0OCwzNg0KPj4gKzIwNzgsNTcgQEAg c3RhdGljIGludCBkYTcyMTlfcHJvYmUoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25l bnQpDQo+PiAgCX0NCj4+DQo+PiAgCS8qIERlZmF1bHQgUEMgY291bnRlciB0byBmcmVlLXJ1bm5p bmcgKi8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcy MTlfUENfQ09VTlQsDQo+PiBEQTcyMTlfUENfRlJFRVJVTl9NQVNLLA0KPj4gLQkJCSAgICBEQTcy MTlfUENfRlJFRVJVTl9NQVNLKTsNCj4+ICsJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRl X2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X1BDX0NPVU5ULA0KPj4gKwkJCURBNzIxOV9QQ19G UkVFUlVOX01BU0ssDQo+PiBEQTcyMTlfUENfRlJFRVJVTl9NQVNLKTsNCj4+ICsJaWYgKHJldCA8 IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJLyogRGVmYXVsdCBnYWluIHJhbXBpbmcg Ki8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBEQTcyMTlf TUlYSU5fTF9DVFJMLA0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhj b21wb25lbnQsDQo+PiBEQTcyMTlfTUlYSU5fTF9DVFJMLA0KPj4gIAkJCSAgICBEQTcyMTlfTUlY SU5fTF9BTVBfUkFNUF9FTl9NQVNLLA0KPj4gIAkJCSAgICBEQTcyMTlfTUlYSU5fTF9BTVBfUkFN UF9FTl9NQVNLKTsNCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50 LCBEQTcyMTlfQURDX0xfQ1RSTCwNCj4+IERBNzIxOV9BRENfTF9SQU1QX0VOX01BU0ssDQo+PiAt CQkJICAgIERBNzIxOV9BRENfTF9SQU1QX0VOX01BU0spOw0KPj4gLQlzbmRfc29jX2NvbXBvbmVu dF91cGRhdGVfYml0cyhjb21wb25lbnQsIERBNzIxOV9EQUNfTF9DVFJMLA0KPj4gREE3MjE5X0RB Q19MX1JBTVBfRU5fTUFTSywNCj4+IC0JCQkgICAgREE3MjE5X0RBQ19MX1JBTVBfRU5fTUFTSyk7 DQo+PiAtCXNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwgREE3MjE5X0RB Q19SX0NUUkwsDQo+PiBEQTcyMTlfREFDX1JfUkFNUF9FTl9NQVNLLA0KPj4gLQkJCSAgICBEQTcy MTlfREFDX1JfUkFNUF9FTl9NQVNLKTsNCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2Jp dHMoY29tcG9uZW50LCBEQTcyMTlfSFBfTF9DVFJMLA0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJ CXJldHVybiByZXQ7DQo+PiArCXJldCA9IHNuZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNv bXBvbmVudCwNCj4+IERBNzIxOV9BRENfTF9DVFJMLA0KPj4gKwkJCURBNzIxOV9BRENfTF9SQU1Q X0VOX01BU0ssDQo+PiBEQTcyMTlfQURDX0xfUkFNUF9FTl9NQVNLKTsNCj4+ICsJaWYgKHJldCA8 IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91cGRh dGVfYml0cyhjb21wb25lbnQsDQo+PiBEQTcyMTlfREFDX0xfQ1RSTCwNCj4+ICsJCQlEQTcyMTlf REFDX0xfUkFNUF9FTl9NQVNLLA0KPj4gREE3MjE5X0RBQ19MX1JBTVBfRU5fTUFTSyk7DQo+PiAr CWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gc25kX3NvY19jb21w b25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0RBQ19SX0NUUkwsDQo+PiAr CQkJREE3MjE5X0RBQ19SX1JBTVBfRU5fTUFTSywNCj4+IERBNzIxOV9EQUNfUl9SQU1QX0VOX01B U0spOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJCXJldHVybiByZXQ7DQo+PiArCXJldCA9IHNu ZF9zb2NfY29tcG9uZW50X3VwZGF0ZV9iaXRzKGNvbXBvbmVudCwNCj4+IERBNzIxOV9IUF9MX0NU UkwsDQo+PiAgCQkJICAgIERBNzIxOV9IUF9MX0FNUF9SQU1QX0VOX01BU0ssDQo+PiAgCQkJICAg IERBNzIxOV9IUF9MX0FNUF9SQU1QX0VOX01BU0spOw0KPj4gLQlzbmRfc29jX2NvbXBvbmVudF91 cGRhdGVfYml0cyhjb21wb25lbnQsIERBNzIxOV9IUF9SX0NUUkwsDQo+PiArCWlmIChyZXQgPCAw KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRl X2JpdHMoY29tcG9uZW50LA0KPj4gREE3MjE5X0hQX1JfQ1RSTCwNCj4+ICAJCQkgICAgREE3MjE5 X0hQX1JfQU1QX1JBTVBfRU5fTUFTSywNCj4+ICAJCQkgICAgREE3MjE5X0hQX1JfQU1QX1JBTVBf RU5fTUFTSyk7DQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+DQo+PiAg CS8qIERlZmF1bHQgbWluaW11bSBnYWluIG9uIEhQIHRvIGF2b2lkIHBvcHMgZHVyaW5nIERBUE0g c2VxdWVuY2luZw0KPj4gKi8NCj4+IC0Jc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29t cG9uZW50LCBEQTcyMTlfSFBfTF9DVFJMLA0KPj4gKwlyZXQgPSBzbmRfc29jX2NvbXBvbmVudF91 cGRhdGVfYml0cyhjb21wb25lbnQsDQo+PiBEQTcyMTlfSFBfTF9DVFJMLA0KPj4gIAkJCSAgICBE QTcyMTlfSFBfTF9BTVBfTUlOX0dBSU5fRU5fTUFTSywNCj4+ICAJCQkgICAgREE3MjE5X0hQX0xf QU1QX01JTl9HQUlOX0VOX01BU0spOw0KPj4gLQlzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0 cyhjb21wb25lbnQsIERBNzIxOV9IUF9SX0NUUkwsDQo+PiArCWlmIChyZXQgPCAwKQ0KPj4gKwkJ cmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gc25kX3NvY19jb21wb25lbnRfdXBkYXRlX2JpdHMoY29t cG9uZW50LA0KPj4gREE3MjE5X0hQX1JfQ1RSTCwNCj4+ICAJCQkgICAgREE3MjE5X0hQX1JfQU1Q X01JTl9HQUlOX0VOX01BU0ssDQo+PiAgCQkJICAgIERBNzIxOV9IUF9SX0FNUF9NSU5fR0FJTl9F Tl9NQVNLKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJ LyogRGVmYXVsdCBpbmZpbml0ZSB0b25lIGdlbiwgc3RhcnQvc3RvcCBieSBLY29udHJvbCAqLw0K Pj4gLQlzbmRfc29jX2NvbXBvbmVudF93cml0ZShjb21wb25lbnQsIERBNzIxOV9UT05FX0dFTl9D WUNMRVMsDQo+PiBEQTcyMTlfQkVFUF9DWUNMRVNfTUFTSyk7DQo+PiArCXJldCA9IHNuZF9zb2Nf Y29tcG9uZW50X3dyaXRlKGNvbXBvbmVudCwNCj4+IERBNzIxOV9UT05FX0dFTl9DWUNMRVMsDQo+ PiArCQkJREE3MjE5X0JFRVBfQ1lDTEVTX01BU0spOw0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ICsJ CXJldHVybiByZXQ7DQo+Pg0KPj4gIAkvKiBJbml0aWFsaXNlIEFBRCBibG9jayAqLw0KPj4gIAly ZXQgPSBkYTcyMTlfYWFkX2luaXQoY29tcG9uZW50KTsNCj4+IEBAIC0yMjIxLDE2ICsyMzcyLDI4 IEBAIHN0YXRpYyBpbnQgZGE3MjE5X2kyY19wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqaTJjLA0K Pj4gIAlyZWdjYWNoZV9jYWNoZV9ieXBhc3MoZGE3MjE5LT5yZWdtYXAsIHRydWUpOw0KPj4NCj4+ ICAJLyogRGlzYWJsZSBhdWRpbyBwYXRocyBpZiBzdGlsbCBhY3RpdmUgZnJvbSBwcmV2aW91cyBz dGFydCAqLw0KPj4gLQlyZWdtYXBfcmVhZChkYTcyMTktPnJlZ21hcCwgREE3MjE5X1NZU1RFTV9B Q1RJVkUsDQo+PiAmc3lzdGVtX2FjdGl2ZSk7DQo+PiArCXJldCA9IHJlZ21hcF9yZWFkKGRhNzIx OS0+cmVnbWFwLCBEQTcyMTlfU1lTVEVNX0FDVElWRSwNCj4+ICZzeXN0ZW1fYWN0aXZlKTsNCj4+ ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gIAlpZiAoc3lzdGVtX2FjdGl2 ZSkgew0KPj4gLQkJcmVnbWFwX3dyaXRlKGRhNzIxOS0+cmVnbWFwLCBEQTcyMTlfR0FJTl9SQU1Q X0NUUkwsDQo+PiArCQlyZXQgPSByZWdtYXBfd3JpdGUoZGE3MjE5LT5yZWdtYXAsDQo+PiBEQTcy MTlfR0FJTl9SQU1QX0NUUkwsDQo+PiAgCQkJICAgICBEQTcyMTlfR0FJTl9SQU1QX1JBVEVfTk9N SU5BTCk7DQo+PiAtCQlyZWdtYXBfd3JpdGUoZGE3MjE5LT5yZWdtYXAsDQo+PiBEQTcyMTlfU1lT VEVNX01PREVTX0lOUFVULCAweDAwKTsNCj4+IC0JCXJlZ21hcF93cml0ZShkYTcyMTktPnJlZ21h cCwNCj4+IERBNzIxOV9TWVNURU1fTU9ERVNfT1VUUFVULCAweDAxKTsNCj4+ICsJCWlmIChyZXQg PCAwKQ0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiArCQlyZXQgPSByZWdtYXBfd3JpdGUoZGE3MjE5 LT5yZWdtYXAsDQo+PiBEQTcyMTlfU1lTVEVNX01PREVTX0lOUFVULA0KPj4gKwkJCQkweDAwKTsN Cj4+ICsJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCXJldHVybiByZXQ7DQo+PiArCQlyZXQgPSByZWdt YXBfd3JpdGUoZGE3MjE5LT5yZWdtYXAsDQo+PiBEQTcyMTlfU1lTVEVNX01PREVTX09VVFBVVCwN Cj4+ICsJCQkJMHgwMSk7DQo+PiArCQlpZiAocmV0IDwgMCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0K Pj4NCj4+ICAJCWZvciAoaSA9IDA7IGkgPCBEQTcyMTlfU1lTX1NUQVRfQ0hFQ0tfUkVUUklFUzsg KytpKSB7DQo+PiAtCQkJcmVnbWFwX3JlYWQoZGE3MjE5LT5yZWdtYXAsDQo+PiBEQTcyMTlfU1lT VEVNX1NUQVRVUywNCj4+ICsJCQlyZXQgPSByZWdtYXBfcmVhZChkYTcyMTktPnJlZ21hcCwNCj4+ IERBNzIxOV9TWVNURU1fU1RBVFVTLA0KPj4gIAkJCQkgICAgJnN5c3RlbV9zdGF0dXMpOw0KPj4g KwkJCWlmIChyZXQgPCAwKQ0KPj4gKwkJCQlyZXR1cm4gcmV0Ow0KPj4gIAkJCWlmICghc3lzdGVt X3N0YXR1cykNCj4+ICAJCQkJYnJlYWs7DQo+Pg0KPj4gQEAgLTIyMzksMTMgKzI0MDIsMTkgQEAg c3RhdGljIGludCBkYTcyMTlfaTJjX3Byb2JlKHN0cnVjdCBpMmNfY2xpZW50ICppMmMsDQo+PiAg CX0NCj4+DQo+PiAgCS8qIFNvZnQgcmVzZXQgY29tcG9uZW50ICovDQo+PiAtCXJlZ21hcF93cml0 ZV9iaXRzKGRhNzIxOS0+cmVnbWFwLCBEQTcyMTlfQUNDREVUX0NPTkZJR18xLA0KPj4gKwlyZXQg PSByZWdtYXBfd3JpdGVfYml0cyhkYTcyMTktPnJlZ21hcCwgREE3MjE5X0FDQ0RFVF9DT05GSUdf MSwNCj4+ICAJCQkgIERBNzIxOV9BQ0NERVRfRU5fTUFTSywgMCk7DQo+PiAtCXJlZ21hcF93cml0 ZV9iaXRzKGRhNzIxOS0+cmVnbWFwLCBEQTcyMTlfQ0lGX0NUUkwsDQo+PiArCWlmIChyZXQgPCAw KQ0KPj4gKwkJcmV0dXJuIHJldDsNCj4+ICsJcmV0ID0gcmVnbWFwX3dyaXRlX2JpdHMoZGE3MjE5 LT5yZWdtYXAsIERBNzIxOV9DSUZfQ1RSTCwNCj4+ICAJCQkgIERBNzIxOV9DSUZfUkVHX1NPRlRf UkVTRVRfTUFTSywNCj4+ICAJCQkgIERBNzIxOV9DSUZfUkVHX1NPRlRfUkVTRVRfTUFTSyk7DQo+ PiAtCXJlZ21hcF93cml0ZV9iaXRzKGRhNzIxOS0+cmVnbWFwLCBEQTcyMTlfU1lTVEVNX0FDVElW RSwNCj4+ICsJaWYgKHJldCA8IDApDQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwlyZXQgPSByZWdt YXBfd3JpdGVfYml0cyhkYTcyMTktPnJlZ21hcCwgREE3MjE5X1NZU1RFTV9BQ1RJVkUsDQo+PiAg CQkJICBEQTcyMTlfU1lTVEVNX0FDVElWRV9NQVNLLCAwKTsNCj4+ICsJaWYgKHJldCA8IDApDQo+ PiArCQlyZXR1cm4gcmV0Ow0KPj4NCj4+ICAJcmVnY2FjaGVfY2FjaGVfYnlwYXNzKGRhNzIxOS0+ cmVnbWFwLCBmYWxzZSk7DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvZGE3 MjE5LmggYi9zb3VuZC9zb2MvY29kZWNzL2RhNzIxOS5oIGluZGV4DQo+PiAzYTAwNjg2Li4wY2Y3 OGE3IDEwMDY0NA0KPj4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9kYTcyMTkuaA0KPj4gKysrIGIv c291bmQvc29jL2NvZGVjcy9kYTcyMTkuaA0KPj4gQEAgLTgzMiw3ICs4MzIsNyBAQCBzdHJ1Y3Qg ZGE3MjE5X3ByaXYgew0KPj4gIAlib29sIGFsY19lbjsNCj4+ICAJYm9vbCBtaWNiaWFzX29uX2V2 ZW50Ow0KPj4gIAl1bnNpZ25lZCBpbnQgbWljX3BnYV9kZWxheTsNCj4+IC0JdTggZ2Fpbl9yYW1w X2N0cmw7DQo+PiArCWludCBnYWluX3JhbXBfY3RybDsNCj4+ICB9Ow0KPj4NCj4+ICBpbnQgZGE3 MjE5X3NldF9wbGwoc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsIGludCBzb3Vy Y2UsDQo+PiB1bnNpZ25lZCBpbnQgZm91dCk7DQo+PiAtLQ0KPj4gMS45LjENCg==