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=-12.4 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=ham 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 AA9A9C2BB48 for ; Mon, 14 Dec 2020 13:31:17 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4C67822571 for ; Mon, 14 Dec 2020 13:31:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4C67822571 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 9D6C96E134; Mon, 14 Dec 2020 13:31:16 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 652D26E134 for ; Mon, 14 Dec 2020 13:31:15 +0000 (UTC) IronPort-SDR: uDXQHQOPz4Ft1b+OIXXvSajaO48lhMPiPoTi4KPH25hxqQckKznmSdBTtQDnEGxF8PIHlVtMI9 V+kJdqzfezwQ== X-IronPort-AV: E=McAfee;i="6000,8403,9834"; a="174814313" X-IronPort-AV: E=Sophos;i="5.78,418,1599548400"; d="scan'208";a="174814313" Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2020 05:31:02 -0800 IronPort-SDR: 44IhwuObA51mum4l+MnF2GFGFz7VGvyL3owW37tP6/skWYIDIDw86O25gQTXM4h0EcpFDWaFWv Vx4AEEGL6FKA== X-IronPort-AV: E=Sophos;i="5.78,418,1599548400"; d="scan'208";a="381656353" Received: from genxfsim-desktop.iind.intel.com (HELO intel.com) ([10.223.74.178]) by fmsmga004-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Dec 2020 05:31:00 -0800 Date: Mon, 14 Dec 2020 18:47:40 +0530 From: Anshuman Gupta To: "Mun, Gwan-gyeong" Message-ID: <20201214131740.GH9309@intel.com> References: <20201211171421.4048499-1-gwan-gyeong.mun@intel.com> <20201214110200.GF9309@intel.com> <10e20daa36762f3167411491b2dd15d1dd69ed63.camel@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <10e20daa36762f3167411491b2dd15d1dd69ed63.camel@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [Intel-gfx] [PATCH v5 1/2] drm/i915/display: Support PSR Multiple Transcoders X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Nikula, Jani" , "intel-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" T24gMjAyMC0xMi0xNCBhdCAxNzoxMjoyNCArMDUzMCwgTXVuLCBHd2FuLWd5ZW9uZyB3cm90ZToK PiBPbiBNb24sIDIwMjAtMTItMTQgYXQgMTY6MzIgKzA1MzAsIEFuc2h1bWFuIEd1cHRhIHdyb3Rl Ogo+ID4gT24gMjAyMC0xMi0xMSBhdCAxOToxNDoyMCArMDIwMCwgR3dhbi1neWVvbmcgTXVuIHdy b3RlOgo+ID4gPiBJdCBpcyBhIHByZWxpbWluYXJ5IHdvcmsgZm9yIHN1cHBvcnRpbmcgbXVsdGlw bGUgRURQIFBTUiBhbmQKPiA+ID4gRFAgUGFuZWxSZXBsYXkuIEFuZCBpdCByZWZhY3RvcnMgc2lu Z2xldG9uIFBTUiB0byBNdWx0aSBUcmFuc2NvZGVyCj4gPiA+IHN1cHBvcnRhYmxlIFBTUi4KPiA+ ID4gQW5kIHRoaXMgbW92ZXMgYW5kIHJlbmFtZXMgdGhlIGk5MTVfcHNyIHN0cnVjdHVyZSBvZgo+ ID4gPiBkcm1faTkxNV9wcml2YXRlJ3MgdG8KPiA+ID4gaW50ZWxfZHAncyBpbnRlbF9wc3Igc3Ry dWN0dXJlLgo+ID4gPiBJdCBhbHNvIGNhdXNlcyBjaGFuZ2VzIGluIFBTUiBpbnRlcnJ1cHQgaGFu ZGxpbmcgcm91dGluZSBmb3IKPiA+ID4gc3VwcG9ydGluZwo+ID4gPiBtdWx0aXBsZSB0cmFuc2Nv ZGVycy4gQnV0IGl0IGRvZXMgbm90IGNoYW5nZSB0aGUgc2NlbmFyaW8gYW5kCj4gPiA+IHRpbWlu ZyBvZgo+ID4gPiBlbmFibGluZyBhbmQgZGlzYWJsaW5nIFBTUi4KPiA+ID4gCj4gPiA+IHYyOiBG aXggaW5kZW50YXRpb24gYW5kIGFkZCBjb21tZW50cwo+ID4gPiB2MzogUmVtb3ZlIEJsYW5rIGxp bmUKPiA+ID4gdjQ6IFJlYmFzZWQKPiA+ID4gdjU6IFJlYmFzZWQgYW5kIEFkZHJlc3NlZCBBbnNo dW1hbidzIHJldmlldyBjb21tZW50Lgo+ID4gPiAgICAgLSBNb3ZlIGNhbGxpbmcgb2YgaW50ZWxf cHNyX2luaXQoKSB0byBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcigpCj4gPiA+IAo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+Cj4g PiA+IENjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXphIDxqb3NlLnNvdXphQGludGVsLmNvbT4KPiA+ ID4gQ2M6IEp1aGEtUGVra2EgSGVpa2tpbGEgPGp1aGFwZWtrYS5oZWlra2lsYUBnbWFpbC5jb20+ Cj4gPiA+IENjOiBBbnNodW1hbiBHdXB0YSA8YW5zaHVtYW4uZ3VwdGFAaW50ZWwuY29tPgo+ID4g PiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAg ICB8ICAgMyArCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXkuYyAgfCAgIDQgLQo+ID4gPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9k ZWJ1Z2ZzLmMgIHwgMTExICsrLS0KPiA+ID4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfdHlwZXMuaCAgICB8ICAzOCArKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kcC5jICAgICAgIHwgIDIzICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Bzci5jICAgICAgfCA1ODUgKysrKysrKysrKy0tCj4gPiA+IC0tLS0t LQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaCAgICAgIHwg IDE0ICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5j ICAgfCAgIDYgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICAgICAgICB8ICAzOCAtLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAg ICAgICAgICAgICAgIHwgIDQ5ICstCj4gPiA+ICAxMCBmaWxlcyBjaGFuZ2VkLCA0OTEgaW5zZXJ0 aW9ucygrKSwgMzgwIGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gPiA+IGluZGV4IDY4NjMyMzZkZjFkMC4uNGI4 N2Y3MmNiOWMwIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2RkaS5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGRpLmMKPiA+ID4gQEAgLTQzMjAsNyArNDMyMCwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k ZGlfdXBkYXRlX3BpcGVfZHAoc3RydWN0Cj4gPiA+IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gPiA+ICAKPiA+ID4gIAlpbnRlbF9kZGlfc2V0X2RwX21zYShjcnRjX3N0YXRlLCBjb25uX3N0 YXRlKTsKPiA+ID4gIAo+ID4gPiArCS8vVE9ETzogbW92ZSBQU1IgcmVsYXRlZCBmdW5jdGlvbnMg aW50byBpbnRlbF9wc3JfdXBkYXRlKCkKPiA+ID4gKwlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNf bWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ID4gPiAgCWludGVsX3Bzcl91cGRh dGUoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4gPiArCj4gPiA+ICAJaW50 ZWxfZHBfc2V0X2luZm9mcmFtZXMoZW5jb2RlciwgdHJ1ZSwgY3J0Y19zdGF0ZSwgY29ubl9zdGF0 ZSk7Cj4gPiA+ICAJaW50ZWxfZWRwX2RycnNfdXBkYXRlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsK PiA+ID4gIAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmMKPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwo+ID4gPiBpbmRleCA3NjFiZThkZWFhOWIuLmYyNmQ5YmNkNzIyYyAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMK PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMK PiA+ID4gQEAgLTE1ODY5LDggKzE1ODY5LDYgQEAgc3RhdGljIHZvaWQgY29tbWl0X3BpcGVfY29u ZmlnKHN0cnVjdAo+ID4gPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gPiAgCj4gPiA+ ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCj4gPiA+ICAJCQlpbnRlbF9waXBl X2Zhc3RzZXQob2xkX2NydGNfc3RhdGUsCj4gPiA+IG5ld19jcnRjX3N0YXRlKTsKPiA+ID4gLQo+ ID4gPiAtCQlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwobmV3X2NydGNfc3Rh dGUpOwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9t aWNfdXBkYXRlX3dhdGVybWFya3MpCj4gPiA+IEBAIC0xNzgzMCw4ICsxNzgyOCw2IEBAIHN0YXRp YyB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gPiAgCQlpbnRlbF9kdm9faW5pdChkZXZfcHJpdik7Cj4gPiA+ICAJfQo+ ID4gPiAgCj4gPiA+IC0JaW50ZWxfcHNyX2luaXQoZGV2X3ByaXYpOwo+ID4gPiAtCj4gPiA+ICAJ Zm9yX2VhY2hfaW50ZWxfZW5jb2RlcigmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgewo+ID4gPiAg CQllbmNvZGVyLT5iYXNlLnBvc3NpYmxlX2NydGNzID0KPiA+ID4gIAkJCWludGVsX2VuY29kZXJf cG9zc2libGVfY3J0Y3MoZW5jb2Rlcik7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCj4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwo+ID4gPiBpbmRleCBj ZDdlNTUxOWVlN2QuLjA0MTA1MzE2N2Q3ZiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCj4gPiA+IEBA IC0yNDksMTggKzI0OSwxNyBAQCBzdGF0aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3co c3RydWN0Cj4gPiA+IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gPiAgCQkic2luayBpbnRl cm5hbCBlcnJvciIsCj4gPiA+ICAJfTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yID0gbS0+cHJpdmF0ZTsKPiA+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KTsKPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0KPiA+ID4gIAkJaW50ZWxfYXR0YWNoZWRfZHAodG9faW50ZWxfY29ubmVjdG9y KGNvbm5lY3RvcikpOwo+ID4gPiAgCWludCByZXQ7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIUNBTl9Q U1IoZGV2X3ByaXYpKSB7Cj4gPiA+IC0JCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRcbiIp Owo+ID4gPiArCWlmIChjb25uZWN0b3ItPnN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5l Y3RlZCkKPiA+ID4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+IC0JfQo+ID4gPiAgCj4gPiA+IC0J aWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ID4g PiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpIHsKPiA+ID4gKwkJc2VxX3B1dHMobSwgIlBTUiBV bnN1cHBvcnRlZFxuIik7Cj4gPiA+ICAJCXJldHVybiAtRU5PREVWOwo+ID4gPiArCX0KPiA+ID4g IAo+ID4gPiAgCXJldCA9IGRybV9kcF9kcGNkX3JlYWRiKCZpbnRlbF9kcC0+YXV4LCBEUF9QU1Jf U1RBVFVTLCAmdmFsKTsKPiA+ID4gIAo+ID4gPiBAQCAtMjgwLDEyICsyNzksMTMgQEAgc3RhdGlj IGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KHN0cnVjdAo+ID4gPiBzZXFfZmlsZSAqbSwg dm9pZCAqZGF0YSkKPiA+ID4gIERFRklORV9TSE9XX0FUVFJJQlVURShpOTE1X3Bzcl9zaW5rX3N0 YXR1cyk7Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyB2b2lkCj4gPiA+IC1wc3Jfc291cmNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdAo+ID4gPiBzZXFfZmls ZSAqbSkKPiA+ID4gK3Bzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs IHN0cnVjdCBzZXFfZmlsZSAqbSkKPiA+ID4gIHsKPiA+ID4gIAl1MzIgdmFsLCBzdGF0dXNfdmFs Owo+ID4gPiAgCWNvbnN0IGNoYXIgKnN0YXR1cyA9ICJ1bmtub3duIjsKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiA+ID4g IAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ID4gPiArCWlmIChp bnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ID4gPiAgCQlzdGF0aWMgY29uc3QgY2hhciAq IGNvbnN0IGxpdmVfc3RhdHVzW10gPSB7Cj4gPiA+ICAJCQkiSURMRSIsCj4gPiA+ICAJCQkiQ0FQ VFVSRSIsCj4gPiA+IEBAIC0zMDAsNyArMzAwLDcgQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4g PiA+ICAJCQkiVEdfT04iCj4gPiA+ICAJCX07Cj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQo ZGV2X3ByaXYsCj4gPiA+IC0JCQkJICAgIEVEUF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0KPiA+ID4g PnBzci50cmFuc2NvZGVyKSk7Cj4gPiA+ICsJCQkJICAgIEVEUF9QU1IyX1NUQVRVUyhpbnRlbF9k cC0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7Cj4gPiA+ICAJCXN0YXR1c192YWwgPSAodmFsICYg RURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0spID4+Cj4gPiA+ICAJCQkgICAgICBFRFBfUFNSMl9T VEFUVVNfU1RBVEVfU0hJRlQ7Cj4gPiA+ICAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShs aXZlX3N0YXR1cykpCj4gPiA+IEBAIC0zMTcsNyArMzE3LDcgQEAgcHNyX3NvdXJjZV9zdGF0dXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUg Km0pCj4gPiA+ICAJCQkiU1JERU5UX09OIiwKPiA+ID4gIAkJfTsKPiA+ID4gIAkJdmFsID0gaW50 ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiA+ID4gLQkJCQkgICAgRURQX1BTUl9TVEFUVVMoZGV2X3By aXYtCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOwo+ID4gPiArCQkJCSAgICBFRFBfUFNSX1NUQVRV UyhpbnRlbF9kcC0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7Cj4gPiA+ICAJCXN0YXR1c192YWwg PSAodmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KPiA+ID4gIAkJCSAgICAgIEVE UF9QU1JfU1RBVFVTX1NUQVRFX1NISUZUOwo+ID4gPiAgCQlpZiAoc3RhdHVzX3ZhbCA8IEFSUkFZ X1NJWkUobGl2ZV9zdGF0dXMpKQo+ID4gPiBAQCAtMzI3LDIxICszMjcsMTggQEAgcHNyX3NvdXJj ZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LCBzdHJ1Y3Qg c2VxX2ZpbGUgKm0pCj4gPiA+ICAJc2VxX3ByaW50ZihtLCAiU291cmNlIFBTUiBzdGF0dXM6ICVz IFsweCUwOHhdXG4iLCBzdGF0dXMsIHZhbCk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRp YyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEp Cj4gPiA+ICtzdGF0aWMgaW50IGludGVsX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCBz dHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwKQo+ID4gPiAgewo+ID4gPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiA+ ID4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOwo+ID4gPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4g PiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ID4gPiAgCWludGVs X3dha2VyZWZfdCB3YWtlcmVmOwo+ID4gPiAgCWNvbnN0IGNoYXIgKnN0YXR1czsKPiA+ID4gIAli b29sIGVuYWJsZWQ7Cj4gPiA+ICAJdTMyIHZhbDsKPiA+ID4gIAo+ID4gPiAtCWlmICghSEFTX1BT UihkZXZfcHJpdikpCj4gPiA+IC0JCXJldHVybiAtRU5PREVWOwo+ID4gPiAtCj4gPiA+ICAJc2Vx X3ByaW50ZihtLCAiU2luayBzdXBwb3J0OiAlcyIsIHllc25vKHBzci0+c2lua19zdXBwb3J0KSk7 Cj4gPiA+IC0JaWYgKHBzci0+ZHApCj4gPiA+IC0JCXNlcV9wcmludGYobSwgIiBbMHglMDJ4XSIs IHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsKPiA+ID4gKwlpZiAocHNyLT5zaW5rX3N1cHBvcnQpCj4g PiA+ICsJCXNlcV9wcmludGYobSwgIiBbMHglMDJ4XSIsIGludGVsX2RwLT5wc3JfZHBjZFswXSk7 Cj4gPiA+ICAJc2VxX3B1dHMobSwgIlxuIik7Cj4gPiA+ICAKPiA+ID4gIAlpZiAoIXBzci0+c2lu a19zdXBwb3J0KQo+ID4gPiBAQCAtMzY1LDE2ICszNjIsMTYgQEAgc3RhdGljIGludCBpOTE1X2Vk cF9wc3Jfc3RhdHVzKHN0cnVjdAo+ID4gPiBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiA+ID4g IAo+ID4gPiAgCWlmIChwc3ItPnBzcjJfZW5hYmxlZCkgewo+ID4gPiAgCQl2YWwgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LAo+ID4gPiAtCQkJCSAgICBFRFBfUFNSMl9DVEwoZGV2X3ByaXYtCj4g PiA+ID5wc3IudHJhbnNjb2RlcikpOwo+ID4gPiArCQkJCSAgICBFRFBfUFNSMl9DVEwoaW50ZWxf ZHAtCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOwo+ID4gPiAgCQllbmFibGVkID0gdmFsICYgRURQ X1BTUjJfRU5BQkxFOwo+ID4gPiAgCX0gZWxzZSB7Cj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsCj4gPiA+IC0JCQkJICAgIEVEUF9QU1JfQ1RMKGRldl9wcml2LQo+ID4gPiA+ cHNyLnRyYW5zY29kZXIpKTsKPiA+ID4gKwkJCQkgICAgRURQX1BTUl9DVEwoaW50ZWxfZHAtCj4g PiA+ID5wc3IudHJhbnNjb2RlcikpOwo+ID4gPiAgCQllbmFibGVkID0gdmFsICYgRURQX1BTUl9F TkFCTEU7Cj4gPiA+ICAJfQo+ID4gPiAgCXNlcV9wcmludGYobSwgIlNvdXJjZSBQU1IgY3RsOiAl cyBbMHglMDh4XVxuIiwKPiA+ID4gIAkJICAgZW5hYmxlZGRpc2FibGVkKGVuYWJsZWQpLCB2YWwp Owo+ID4gPiAtCXBzcl9zb3VyY2Vfc3RhdHVzKGRldl9wcml2LCBtKTsKPiA+ID4gKwlwc3Jfc291 cmNlX3N0YXR1cyhpbnRlbF9kcCwgbSk7Cj4gPiA+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9u dGJ1ZmZlciBiaXRzOiAweCUwOHhcbiIsCj4gPiA+ICAJCSAgIHBzci0+YnVzeV9mcm9udGJ1ZmZl cl9iaXRzKTsKPiA+ID4gIAo+ID4gPiBAQCAtMzgzLDcgKzM4MCw3IEBAIHN0YXRpYyBpbnQgaTkx NV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUKPiA+ID4gKm0sIHZvaWQgKmRhdGEpCj4g PiA+ICAJICovCj4gPiA+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VM TChkZXZfcHJpdikpIHsKPiA+ID4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiA+ ID4gLQkJCQkgICAgRURQX1BTUl9QRVJGX0NOVChkZXZfcHJpdi0KPiA+ID4gPnBzci50cmFuc2Nv ZGVyKSk7Cj4gPiA+ICsJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoaW50ZWxfZHAtCj4gPiA+ID5w c3IudHJhbnNjb2RlcikpOwo+ID4gPiAgCQl2YWwgJj0gRURQX1BTUl9QRVJGX0NOVF9NQVNLOwo+ ID4gPiAgCQlzZXFfcHJpbnRmKG0sICJQZXJmb3JtYW5jZSBjb3VudGVyOiAldVxuIiwgdmFsKTsK PiA+ID4gIAl9Cj4gPiA+IEBAIC00MDQsNyArNDAxLDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9w c3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZQo+ID4gPiAqbSwgdm9pZCAqZGF0YSkKPiA+ID4gIAkJ ICovCj4gPiA+ICAJCWZvciAoZnJhbWUgPSAwOyBmcmFtZSA8IFBTUjJfU1VfU1RBVFVTX0ZSQU1F UzsgZnJhbWUgKz0KPiA+ID4gMykgewo+ID4gPiAgCQkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwKPiA+ID4gLQkJCQkJICAgIFBTUjJfU1VfU1RBVFVTKGRldl9wcml2LQo+ID4gPiA+cHNy LnRyYW5zY29kZXIsIGZyYW1lKSk7Cj4gPiA+ICsJCQkJCSAgICBQU1IyX1NVX1NUQVRVUyhpbnRl bF9kcC0KPiA+ID4gPnBzci50cmFuc2NvZGVyLCBmcmFtZSkpOwo+ID4gPiAgCQkJc3VfZnJhbWVz X3ZhbFtmcmFtZSAvIDNdID0gdmFsOwo+ID4gPiAgCQl9Cj4gPiA+ICAKPiA+ID4gQEAgLTQzMCwy MyArNDI3LDU3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3QKPiA+ID4g c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gPiA+ICAJcmV0dXJuIDA7Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+ID4gK3N0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ID4gPiArCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBO VUxMOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiA+ID4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4gPiA+ICsKPiA+ID4gKwkvKiBGaW5kIHRoZSBmaXJzdCBFRFAgKi8KPiA+ ID4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgewo+ID4gPiAr CQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7Cj4gPiBIb3cgYWJvdXQg aGF2aW5nIGEgbmV3IG1hY3JvIGZvcl9lYWNoX2ludGVsX3Bzcl9lZHAge30gdG8gcmVkdWNlIHRo ZQo+ID4gY29kZT8KPiA+IE11bHRpcGxlIHRpbWVzIHRoaXMgaGFzIGJlZW4gdXNlZCBpbiB0aGlz IHBhdGNoIHRvIGxvb3AgZm9yIGludGVsX2RwLgo+ID4gPiArCQkJaW50ZWxfZHAgPSBlbmNfdG9f aW50ZWxfZHAoZW5jb2Rlcik7Cj4gPiA+ICsJCQlicmVhazsKPiA+ID4gKwkJfQo+ID4gPiArCX0K PiA+ID4gKwo+ID4gPiArCWlmICghaW50ZWxfZHApCj4gPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ ID4gPiArCj4gPiA+ICsJcmV0dXJuIGludGVsX3Bzcl9zdGF0dXMobSwgaW50ZWxfZHApOwo+ID4g PiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgaW50Cj4gPiA+ICBpOTE1X2VkcF9wc3JfZGVidWdf c2V0KHZvaWQgKmRhdGEsIHU2NCB2YWwpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKPiA+ID4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiA+ID4gLQlpbnQgcmV0Owo+ID4gPiArCWludCByZXQgPSAtRU5PREVWOwo+ID4gPiArCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ID4gPiAgCj4gPiA+IC0JaWYgKCFDQU5fUFNS KGRldl9wcml2KSkKPiA+ID4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsJaWYgKCFIQVNfUFNS KGRldl9wcml2KSkKPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gIAo+ID4gPiAtCWRybV9kYmdf a21zKCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGluZyBQU1IgZGVidWcgdG8gJWxseFxuIiwKPiA+ID4g dmFsKTsKPiA+ID4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikg ewo+ID4gPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOwo+ID4gPiAgCj4gPiA+IC0Jd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KCZk ZXZfcHJpdi0+cnVudGltZV9wbSk7Cj4gPiA+ICsJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4g PiA+ICsJCQljb250aW51ZTsKPiA+ID4gIAo+ID4gPiAtCXJldCA9IGludGVsX3Bzcl9kZWJ1Z19z ZXQoZGV2X3ByaXYsIHZhbCk7Cj4gPiA+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9FRFApIHsKPiA+ID4gKwkJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiU2V0dGlu ZyBQU1IgZGVidWcKPiA+ID4gdG8gJWxseFxuIiwgdmFsKTsKPiA+ID4gIAo+ID4gPiAtCWludGVs X3J1bnRpbWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gPiA+ICsJ CQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9wbV9nZXQoJmRldl9wcml2LQo+ID4gPiA+cnVudGlt ZV9wbSk7Cj4gPiA+ICsKPiA+ID4gKwkJCS8vIFRPRE86IHNwbGl0IHRvIGVhY2ggdHJhbnNjb2Rl cidzIFBTUiBkZWJ1Zwo+ID4gPiBzdGF0ZQo+ID4gPiArCQkJcmV0ID0gaW50ZWxfcHNyX2RlYnVn X3NldChpbnRlbF9kcCwgdmFsKTsKPiA+ID4gKwo+ID4gPiArCQkJaW50ZWxfcnVudGltZV9wbV9w dXQoJmRldl9wcml2LT5ydW50aW1lX3BtLAo+ID4gPiB3YWtlcmVmKTsKPiA+ID4gKwkJfQo+ID4g PiArCX0KPiA+ID4gIAo+ID4gPiAgCXJldHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+IEBAIC00NTUs MTIgKzQ4NiwyNSBAQCBzdGF0aWMgaW50Cj4gPiA+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZv aWQgKmRhdGEsIHU2NCAqdmFsKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXI7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+ID4gPiArCWlmICgh SEFTX1BTUihkZXZfcHJpdikpCj4gPiA+ICAJCXJldHVybiAtRU5PREVWOwo+ID4gPiAgCj4gPiA+ IC0JKnZhbCA9IFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmRlYnVnKTsKPiA+ID4gLQlyZXR1cm4g MDsKPiA+ID4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3ByaXYtPmRybSwgZW5jb2Rlcikgewo+ ID4gPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIpOwo+ID4gPiArCj4gPiA+ICsJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4gPiA+ICsJCQlj b250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQkvLyBUT0RPOiBzcGxpdCB0byBlYWNoIHRyYW5zY29k ZXIncyBQU1IgZGVidWcgc3RhdGUKPiA+ID4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxf T1VUUFVUX0VEUCkgewo+ID4gPiArCQkJKnZhbCA9IFJFQURfT05DRShpbnRlbF9kcC0+cHNyLmRl YnVnKTsKPiA+ID4gKwkJCXJldHVybiAwOwo+ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIERFRklORV9TSU1Q TEVfQVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLAo+ID4gPiBAQCAtMTIzNCw5ICsx Mjc4LDYgQEAgc3RhdGljIHZvaWQgZHJyc19zdGF0dXNfcGVyX2NydGMoc3RydWN0Cj4gPiA+IHNl cV9maWxlICptLAo+ID4gPiAgCQkvKiBkaXNhYmxlX2RycnMoKSB3aWxsIG1ha2UgZHJycy0+ZHAg TlVMTCAqLwo+ID4gPiAgCQlpZiAoIWRycnMtPmRwKSB7Cj4gPiA+ICAJCQlzZXFfcHV0cyhtLCAi SWRsZW5lc3MgRFJSUzogRGlzYWJsZWRcbiIpOwo+ID4gPiAtCQkJaWYgKGRldl9wcml2LT5wc3Iu ZW5hYmxlZCkKPiA+ID4gLQkJCQlzZXFfcHV0cyhtLAo+ID4gPiAtCQkJCSJcdEFzIFBTUiBpcyBl bmFibGVkLCBEUlJTIGlzIG5vdAo+ID4gPiBlbmFibGVkXG4iKTsKPiA+IERvbid0IHdlIG5lZWQg dGhpcyBkZWJ1Z2ZzIHByaW50IGFueW1vcmUgPwo+ID4gPiAgCQkJbXV0ZXhfdW5sb2NrKCZkcnJz LT5tdXRleCk7Cj4gPiA+ICAJCQlyZXR1cm47Cj4gPiA+ICAJCX0KPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiA+ ID4gaW5kZXggNWJjNWJmYmM0NTUxLi45ODk5ZmRkZjRjOTkgMTAwNjQ0Cj4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4g PiA+IEBAIC0xMzM5LDYgKzEzMzksNDIgQEAgc3RydWN0IGludGVsX2RwX2NvbXBsaWFuY2Ugewo+ ID4gPiAgCXU4IHRlc3RfbGFuZV9jb3VudDsKPiA+ID4gIH07Cj4gPiA+ICAKPiA+ID4gK3N0cnVj dCBpbnRlbF9wc3Igewo+ID4gPiArCS8qIE11dGV4IGZvciBQU1Igc3RhdGUgb2YgdGhlIHRyYW5z Y29kZXIgKi8KPiA+ID4gKwlzdHJ1Y3QgbXV0ZXggbG9jazsKPiA+ID4gKwo+ID4gPiArI2RlZmlu ZSBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0sJMHgwZgo+ID4gPiArI2RlZmluZSBJOTE1X1BTUl9E RUJVR19ERUZBVUxUCQkweDAwCj4gPiA+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJ CTB4MDEKPiA+ID4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRU5BQkxFCQkweDAyCj4gPiA+ICsj ZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEJMHgwMwo+ID4gPiArI2RlZmluZSBJOTE1 X1BTUl9ERUJVR19JUlEJCTB4MTAKPiA+ID4gKwo+ID4gPiArCXUzMiBkZWJ1ZzsKPiA+ID4gKwli b29sIHNpbmtfc3VwcG9ydDsKPiA+ID4gKwlib29sIGVuYWJsZWQ7Cj4gPiA+ICsJZW51bSBwaXBl IHBpcGU7Cj4gPiA+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7Cj4gPiA+ICsJYm9vbCBh Y3RpdmU7Cj4gPiA+ICsJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4gPiA+ICsJdW5zaWduZWQg aW50IGJ1c3lfZnJvbnRidWZmZXJfYml0czsKPiA+ID4gKwlib29sIHNpbmtfcHNyMl9zdXBwb3J0 Owo+ID4gPiArCWJvb2wgbGlua19zdGFuZGJ5Owo+ID4gPiArCWJvb2wgY29sb3JpbWV0cnlfc3Vw cG9ydDsKPiA+ID4gKwlib29sIHBzcjJfZW5hYmxlZDsKPiA+ID4gKwlib29sIHBzcjJfc2VsX2Zl dGNoX2VuYWJsZWQ7Cj4gPiA+ICsJdTggc2lua19zeW5jX2xhdGVuY3k7Cj4gPiA+ICsJa3RpbWVf dCBsYXN0X2VudHJ5X2F0dGVtcHQ7Cj4gPiA+ICsJa3RpbWVfdCBsYXN0X2V4aXQ7Cj4gPiA+ICsJ Ym9vbCBzaW5rX25vdF9yZWxpYWJsZTsKPiA+ID4gKwlib29sIGlycV9hdXhfZXJyb3I7Cj4gPiA+ ICsJdTE2IHN1X3hfZ3JhbnVsYXJpdHk7Cj4gPiA+ICsJYm9vbCBkYzNjb19lbmFibGVkOwo+ID4g PiArCXUzMiBkYzNjb19leGl0X2RlbGF5Owo+ID4gPiArCXN0cnVjdCBkZWxheWVkX3dvcmsgZGMz Y29fd29yazsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNjOwo+ID4gPiArfTsKPiA+ ID4gKwo+ID4gPiAgc3RydWN0IGludGVsX2RwIHsKPiA+ID4gIAlpOTE1X3JlZ190IG91dHB1dF9y ZWc7Cj4gPiA+ICAJdTMyIERQOwo+ID4gPiBAQCAtMTQ2MCw2ICsxNDk2LDggQEAgc3RydWN0IGlu dGVsX2RwIHsKPiA+ID4gIAo+ID4gPiAgCWJvb2wgaG9ibF9mYWlsZWQ7Cj4gPiA+ICAJYm9vbCBo b2JsX2FjdGl2ZTsKPiA+ID4gKwo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgcHNyOwo+ID4gPiAg fTsKPiA+ID4gIAo+ID4gPiAgZW51bSBsc3Bjb25fdmVuZG9yIHsKPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ID4gPiBpbmRleCBiMmJjMGM4YzM5Yzcu LjU3MzBjYWQ3YjZhYyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuYwo+ID4gPiBAQCAtMjcwMiwxMiArMjcwMiwxMCBAQCB2b2lkIGludGVsX2RwX2Nv bXB1dGVfcHNyX3ZzY19zZHAoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4g IAkJCQkgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlCj4gPiA+ICpjb25uX3N0YXRl LAo+ID4gPiAgCQkJCSAgc3RydWN0IGRybV9kcF92c2Nfc2RwICp2c2MpCj4gPiA+ICB7Cj4gPiA+ IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9k cCk7Cj4gPiA+IC0KPiA+ID4gIAl2c2MtPnNkcF90eXBlID0gRFBfU0RQX1ZTQzsKPiA+ID4gIAo+ ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ID4gPiAtCQlpZiAoZGV2 X3ByaXYtPnBzci5jb2xvcmltZXRyeV9zdXBwb3J0ICYmCj4gPiA+ICsJaWYgKGludGVsX2RwLT5w c3IucHNyMl9lbmFibGVkKSB7Cj4gPiA+ICsJCWlmIChpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5 X3N1cHBvcnQgJiYKPiA+ID4gIAkJICAgIGludGVsX2RwX25lZWRzX3ZzY19zZHAoY3J0Y19zdGF0 ZSwgY29ubl9zdGF0ZSkpIHsKPiA+ID4gIAkJCS8qIFtQU1IyLCArQ29sb3JpbWV0cnldICovCj4g PiA+ICAJCQlpbnRlbF9kcF9jb21wdXRlX3ZzY19jb2xvcmltZXRyeShjcnRjX3N0YXRlLAo+ID4g PiBjb25uX3N0YXRlLAo+ID4gPiBAQCAtMzg0NCw3ICszODQyLDcgQEAgYm9vbCBpbnRlbF9kcF9p bml0aWFsX2Zhc3RzZXRfY2hlY2soc3RydWN0Cj4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gLQlpZiAoQ0FO X1BTUihpOTE1KSAmJiBpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKSB7Cj4gPiA+ICsJaWYgKENB Tl9QU1IoaW50ZWxfZHApICYmIGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKPiA+ID4gIAkJ ZHJtX2RiZ19rbXMoJmk5MTUtPmRybSwgIkZvcmNpbmcgZnVsbCBtb2Rlc2V0IHRvCj4gPiA+IGNv bXB1dGUgUFNSIHN0YXRlXG4iKTsKPiA+ID4gIAkJY3J0Y19zdGF0ZS0+dWFwaS5tb2RlX2NoYW5n ZWQgPSB0cnVlOwo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+IEBAIC04MDcwLDYgKzgwNjgs MTcgQEAgc3RhdGljIHZvaWQKPiA+ID4gaW50ZWxfZHBfbW9kZXNldF9yZXRyeV93b3JrX2ZuKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gIAlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2 ZW50KGNvbm5lY3Rvci0+ZGV2KTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiArc3RhdGljIHZvaWQg aW50ZWxfZHBfdXBkYXRlX3BpcGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4g PiA+ICsJCQkJIHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiArCQkJCSBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqY3J0Y19zdGF0ZSwKPiA+ID4gKwkJCQkg Y29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUKPiA+ID4gKmNvbm5fc3RhdGUpCj4gPiA+ ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChl bmNvZGVyKTsKPiA+ID4gKwo+ID4gPiArCWludGVsX3BhbmVsX3VwZGF0ZV9iYWNrbGlnaHQoc3Rh dGUsIGVuY29kZXIsIGNydGNfc3RhdGUsCj4gPiA+IGNvbm5fc3RhdGUpOwo+ID4gPiArCWludGVs X3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChpbnRlbF9kcCwgY3J0Y19zdGF0ZSk7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gIGJvb2wKPiA+ID4gIGludGVsX2RwX2luaXRfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0LAo+ID4gPiAgCQkJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ID4gPiBAQCAtODE4NCw2ICs4MTkzLDgg QEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0Cj4gPiA+IGludGVsX2RpZ2l0YWxfcG9y dCAqZGlnX3BvcnQsCj4gPiA+ICAJCQkgICAgICAgKHRlbXAgJiB+MHhmKSB8IDB4ZCk7Cj4gPiA+ ICAJfQo+ID4gPiAgCj4gPiA+ICsJaW50ZWxfcHNyX2luaXQoaW50ZWxfZHApOwo+ID4gPiArCj4g PiA+ICAJcmV0dXJuIHRydWU7Cj4gPiA+ICAKPiA+ID4gIGZhaWw6Cj4gPiA+IEBAIC04MjI1LDcg KzgyMzYsNyBAQCBib29sIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ ID4gKmRldl9wcml2LAo+ID4gPiAgCWludGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9k cF9nZXRfY29uZmlnOwo+ID4gPiAgCWludGVsX2VuY29kZXItPnN5bmNfc3RhdGUgPSBpbnRlbF9k cF9zeW5jX3N0YXRlOwo+ID4gPiAgCWludGVsX2VuY29kZXItPmluaXRpYWxfZmFzdHNldF9jaGVj ayA9Cj4gPiA+IGludGVsX2RwX2luaXRpYWxfZmFzdHNldF9jaGVjazsKPiA+ID4gLQlpbnRlbF9l bmNvZGVyLT51cGRhdGVfcGlwZSA9IGludGVsX3BhbmVsX3VwZGF0ZV9iYWNrbGlnaHQ7Cj4gPiA+ ICsJaW50ZWxfZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9kcF91cGRhdGVfcGlwZTsKPiA+ ID4gIAlpbnRlbF9lbmNvZGVyLT5zdXNwZW5kID0gaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kOwo+ ID4gPiAgCWludGVsX2VuY29kZXItPnNodXRkb3duID0gaW50ZWxfZHBfZW5jb2Rlcl9zaHV0ZG93 bjsKPiA+ID4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gPiA+IGluZGV4IGQ5YTM5NWM0 ODZkMy4uYmUyYjEyMzA1MGM5IDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX3Bzci5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfcHNyLmMKPiA+ID4gQEAgLTc5LDExICs3OSwxMyBAQAo+ID4gPiAgICogdXNl IHBhZ2UgZmxpcHMuCj4gPiA+ICAgKi8KPiA+ID4gIAo+ID4gPiAtc3RhdGljIGJvb2wgcHNyX2ds b2JhbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ID4gPiArc3RhdGlj IGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ ICB7Cj4gPiA+IC0Jc3dpdGNoIChpOTE1LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RF X01BU0spIHsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKPiA+ID4gKwo+ID4gPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5k ZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgewo+ID4gPiAgCWNhc2UgSTkxNV9QU1Jf REVCVUdfREVGQVVMVDoKPiA+ID4gLQkJcmV0dXJuIGk5MTUtPnBhcmFtcy5lbmFibGVfcHNyOwo+ ID4gPiArCQlyZXR1cm4gZGV2X3ByaXYtPnBhcmFtcy5lbmFibGVfcHNyOwo+ID4gPiAgCWNhc2Ug STkxNV9QU1JfREVCVUdfRElTQUJMRToKPiA+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gPiAgCWRl ZmF1bHQ6Cj4gPiA+IEBAIC05MSw5ICs5Myw5IEBAIHN0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5h YmxlZChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiA+ID4gIAl9Cj4gPiA+ ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiArc3RhdGljIGJvb2wgcHNyMl9nbG9i YWxfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgewo+ID4gPiAtCXN3 aXRjaCAoZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgewo+ ID4gPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVf TUFTSykgewo+ID4gPiAgCWNhc2UgSTkxNV9QU1JfREVCVUdfRElTQUJMRToKPiA+ID4gIAljYXNl IEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjE6Cj4gPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4g QEAgLTEwMiwxMSArMTA0LDEyIEBAIHN0YXRpYyBib29sIHBzcjJfZ2xvYmFsX2VuYWJsZWQoc3Ry dWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCX0KPiA+ID4gIH0K PiA+ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgcHNyX2lycV9jb250cm9sKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gK3N0YXRpYyB2b2lkIHBzcl9pcnFfY29udHJvbChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgewo+ID4gPiAgCWVudW0gdHJhbnNjb2Rl ciB0cmFuc19zaGlmdDsKPiA+ID4gIAl1MzIgbWFzaywgdmFsOwo+ID4gPiAgCWk5MTVfcmVnX3Qg aW1yX3JlZzsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKPiA+ID4gIAo+ID4gPiAgCS8qCj4gPiA+ICAJICogZ2VuMTIrIGhh cyByZWdpc3RlcnMgcmVsYXRpdmUgdG8gdHJhbnNjb2RlciBhbmQgb25lIHBlcgo+ID4gPiB0cmFu c2NvZGVyCj4gPiA+IEBAIC0xMTUsMTQgKzExOCwxNCBAQCBzdGF0aWMgdm9pZCBwc3JfaXJxX2Nv bnRyb2woc3RydWN0Cj4gPiA+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgCSAq Lwo+ID4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7Cj4gPiA+ICAJCXRyYW5z X3NoaWZ0ID0gMDsKPiA+ID4gLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBz ci50cmFuc2NvZGVyKTsKPiA+ID4gKwkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoaW50ZWxfZHAt PnBzci50cmFuc2NvZGVyKTsKPiA+ID4gIAl9IGVsc2Ugewo+ID4gPiAtCQl0cmFuc19zaGlmdCA9 IGRldl9wcml2LT5wc3IudHJhbnNjb2RlcjsKPiA+ID4gKwkJdHJhbnNfc2hpZnQgPSBpbnRlbF9k cC0+cHNyLnRyYW5zY29kZXI7Cj4gPiA+ICAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKPiA+ID4g IAl9Cj4gPiA+ICAKPiA+ID4gIAltYXNrID0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7Cj4g PiA+IC0JaWYgKGRldl9wcml2LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpCj4gPiA+ ICsJaWYgKGludGVsX2RwLT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19JUlEpCj4gPiA+ICAJ CW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQpIHwKPiA+ID4gIAkJCUVEUF9Q U1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0KTsKPiA+ID4gIAo+ID4gPiBAQCAtMTcxLDM4ICsxNzQs MzcgQEAgc3RhdGljIHZvaWQgcHNyX2V2ZW50X3ByaW50KHN0cnVjdAo+ID4gPiBkcm1faTkxNV9w cml2YXRlICppOTE1LAo+ID4gPiAgCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiXHRQU1IgZGlz YWJsZWRcbiIpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC12b2lkIGludGVsX3Bzcl9pcnFfaGFu ZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMgo+ID4gPiBwc3JfaWly KQo+ID4gPiArdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgdTMyIHBzcl9paXIpCj4gPiA+ICB7Cj4gPiA+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyOwo+ID4gPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiArCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsK PiA+ID4gIAllbnVtIHRyYW5zY29kZXIgdHJhbnNfc2hpZnQ7Cj4gPiA+ICAJaTkxNV9yZWdfdCBp bXJfcmVnOwo+ID4gPiAgCWt0aW1lX3QgdGltZV9ucyA9ICBrdGltZV9nZXQoKTsKPiA+ID4gIAo+ ID4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyKSB7Cj4gPiA+ICAJCXRyYW5zX3No aWZ0ID0gMDsKPiA+ID4gLQkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKTsKPiA+ID4gKwkJaW1yX3JlZyA9IFRSQU5TX1BTUl9JTVIoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsKPiA+ID4gIAl9IGVsc2Ugewo+ID4gPiAtCQl0cmFuc19zaGlmdCA9IGRl dl9wcml2LT5wc3IudHJhbnNjb2RlcjsKPiA+ID4gKwkJdHJhbnNfc2hpZnQgPSBpbnRlbF9kcC0+ cHNyLnRyYW5zY29kZXI7Cj4gPiA+ICAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsKPiA+ID4gIAl9 Cj4gPiA+ICAKPiA+ID4gIAlpZiAocHNyX2lpciAmIEVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3No aWZ0KSkgewo+ID4gPiAtCQlkZXZfcHJpdi0+cHNyLmxhc3RfZW50cnlfYXR0ZW1wdCA9IHRpbWVf bnM7Cj4gPiA+IC0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAo+ID4gPiAtCQkJICAgICJb dHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGF0dGVtcHQgaW4gMgo+ID4gPiB2YmxhbmtzXG4iLAo+ ID4gPiAtCQkJICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ID4gPiArCQlp bnRlbF9kcC0+cHNyLmxhc3RfZW50cnlfYXR0ZW1wdCA9IHRpbWVfbnM7Cj4gPiA+ICsJCURSTV9E RUJVR19LTVMoIlt0cmFuc2NvZGVyICVzXSBQU1IgZW50cnkgYXR0ZW1wdCBpbiAyCj4gPiA+IHZi bGFua3NcbiIsCj4gPiAJCVBsZWFzZSB1c2UgZHJtX3tkYmcsd2Fybn0gYXQgZXZlcnkgcGxhY2Ug dW4gdGhpcyBwYXRjaC4KPiA+ID4gKwkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNj b2RlcikpOwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiAgCWlmIChwc3JfaWlyICYgRURQX1BTUl9Q T1NUX0VYSVQodHJhbnNfc2hpZnQpKSB7Cj4gPiA+IC0JCWRldl9wcml2LT5wc3IubGFzdF9leGl0 ID0gdGltZV9uczsKPiA+ID4gLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gPiA+IC0J CQkgICAgIlt0cmFuc2NvZGVyICVzXSBQU1IgZXhpdCBjb21wbGV0ZWRcbiIsCj4gPiA+IC0JCQkg ICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gPiA+ICsJCWludGVsX2RwLT5w c3IubGFzdF9leGl0ID0gdGltZV9uczsKPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiW3RyYW5zY29k ZXIgJXNdIFBTUiBleGl0IGNvbXBsZXRlZFxuIiwKPiA+ID4gKwkJCSAgICAgIHRyYW5zY29kZXJf bmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ID4gPiAgCj4gPiA+ICAJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKPiA+ID4gIAkJCXUzMiB2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2 LAo+ID4gPiAgCQkJCQkJUFNSX0VWRU5UKGNwdV90cmFuc2NvZGUKPiA+ID4gcikpOwo+ID4gPiAt CQkJYm9vbCBwc3IyX2VuYWJsZWQgPSBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZDsKPiA+ID4g KwkJCWJvb2wgcHNyMl9lbmFibGVkID0gaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQ7Cj4gPiA+ ICAKPiA+ID4gIAkJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAo+ID4gPiBQU1JfRVZFTlQoY3B1 X3RyYW5zY29kZXIpLAo+ID4gPiAgCQkJCSAgICAgICB2YWwpOwo+ID4gPiBAQCAtMjEzLDEwICsy MTUsMTAgQEAgdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0Cj4gPiA+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcHNyX2lpcikKPiA+ID4gIAlpZiAocHNyX2lpciAmIEVE UF9QU1JfRVJST1IodHJhbnNfc2hpZnQpKSB7Cj4gPiA+ICAJCXUzMiB2YWw7Cj4gPiA+ICAKPiA+ ID4gLQkJZHJtX3dhcm4oJmRldl9wcml2LT5kcm0sICJbdHJhbnNjb2RlciAlc10gUFNSIGF1eAo+ ID4gPiBlcnJvclxuIiwKPiA+ID4gKwkJRFJNX1dBUk4oIlt0cmFuc2NvZGVyICVzXSBQU1IgYXV4 IGVycm9yXG4iLAo+ID4gPiAgCQkJIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ ID4gPiAgCj4gPiA+IC0JCWRldl9wcml2LT5wc3IuaXJxX2F1eF9lcnJvciA9IHRydWU7Cj4gPiA+ ICsJCWludGVsX2RwLT5wc3IuaXJxX2F1eF9lcnJvciA9IHRydWU7Cj4gPiA+ICAKPiA+ID4gIAkJ LyoKPiA+ID4gIAkJICogSWYgdGhpcyBpbnRlcnJ1cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxs IGtlZXAKPiA+ID4gQEAgLTIzMCw3ICsyMzIsNyBAQCB2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxl cihzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQo+ ID4gPiAgCQl2YWwgfD0gRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCk7Cj4gPiA+ICAJCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBpbXJfcmVnLCB2YWwpOwo+ID4gPiAgCj4gPiA+IC0JCXNjaGVk dWxlX3dvcmsoJmRldl9wcml2LT5wc3Iud29yayk7Cj4gPiA+ICsJCXNjaGVkdWxlX3dvcmsoJmlu dGVsX2RwLT5wc3Iud29yayk7Cj4gPiA+ICAJfQo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IEBAIC0y OTEsMTIgKzI5Myw2IEBAIHZvaWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAK PiA+ID4gKmludGVsX2RwKQo+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9Cj4gPiA+ICAJCXRvX2k5MTUoZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApLT5iYXNlLmJhc2Uu ZGV2KTsKPiA+ID4gIAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmRwKSB7Cj4gPiA+IC0JCWRy bV93YXJuKCZkZXZfcHJpdi0+ZHJtLAo+ID4gPiAtCQkJICJNb3JlIHRoYW4gb25lIGVEUCBwYW5l bCBmb3VuZCwgUFNSIHN1cHBvcnQKPiA+ID4gc2hvdWxkIGJlIGV4dGVuZGVkXG4iKTsKPiA+ID4g LQkJcmV0dXJuOwo+ID4gPiAtCX0KPiA+ID4gLQo+ID4gPiAgCWRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RwLT5hdXgsIERQX1BTUl9TVVBQT1JULCBpbnRlbF9kcC0KPiA+ID4gPnBzcl9kcGNkLAo+ ID4gPiAgCQkJIHNpemVvZihpbnRlbF9kcC0+cHNyX2RwY2QpKTsKPiA+ID4gIAo+ID4gPiBAQCAt MzE3LDEyICszMTMsMTAgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9k cAo+ID4gPiAqaW50ZWxfZHApCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ ID4gLQlkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCA9IHRydWU7Cj4gPiA+IC0JZGV2X3ByaXYt PnBzci5zaW5rX3N5bmNfbGF0ZW5jeSA9Cj4gPiA+ICsJaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBv cnQgPSB0cnVlOwo+ID4gPiArCWludGVsX2RwLT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQo+ID4g PiAgCQlpbnRlbF9kcF9nZXRfc2lua19zeW5jX2xhdGVuY3koaW50ZWxfZHApOwo+ID4gPiAgCj4g PiA+IC0JZGV2X3ByaXYtPnBzci5kcCA9IGludGVsX2RwOwo+ID4gPiAtCj4gPiA+ICAJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJgo+ID4gPiAgCSAgICAoaW50ZWxfZHAtPnBzcl9kcGNk WzBdID09Cj4gPiA+IERQX1BTUjJfV0lUSF9ZX0NPT1JEX0lTX1NVUFBPUlRFRCkpIHsKPiA+ID4g IAkJYm9vbCB5X3JlcSA9IGludGVsX2RwLT5wc3JfZHBjZFsxXSAmCj4gPiA+IEBAIC0zNDAsMTQg KzMzNCwxNCBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwCj4gPiA+ ICppbnRlbF9kcCkKPiA+ID4gIAkJICogWS1jb29yZGluYXRlIHJlcXVpcmVtZW50IHBhbmVscyB3 ZSB3b3VsZCBuZWVkIHRvCj4gPiA+IGVuYWJsZQo+ID4gPiAgCQkgKiBHVEMgZmlyc3QuCj4gPiA+ ICAJCSAqLwo+ID4gPiAtCQlkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID0geV9yZXEg JiYgYWxwbTsKPiA+ID4gKwkJaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCA9IHlfcmVx ICYmIGFscG07Cj4gPiA+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSMiAlc3N1 cHBvcnRlZFxuIiwKPiA+ID4gLQkJCSAgICBkZXZfcHJpdi0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0 ID8gIiIgOiAibm90Cj4gPiA+ICIpOwo+ID4gPiArCQkJICAgIGludGVsX2RwLT5wc3Iuc2lua19w c3IyX3N1cHBvcnQgPyAiIiA6ICJub3QKPiA+ID4gIik7Cj4gPiA+ICAKPiA+ID4gLQkJaWYgKGRl dl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpIHsKPiA+ID4gLQkJCWRldl9wcml2LT5wc3Iu Y29sb3JpbWV0cnlfc3VwcG9ydCA9Cj4gPiA+ICsJCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtfcHNy Ml9zdXBwb3J0KSB7Cj4gPiA+ICsJCQlpbnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQg PQo+ID4gPiAgCQkJCWludGVsX2RwX2dldF9jb2xvcmltZXRyeV9zdGF0dXMoaW50ZWxfZAo+ID4g PiBwKTsKPiA+ID4gLQkJCWRldl9wcml2LT5wc3Iuc3VfeF9ncmFudWxhcml0eSA9Cj4gPiA+ICsJ CQlpbnRlbF9kcC0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkgPQo+ID4gPiAgCQkJCWludGVsX2RwX2dl dF9zdV94X2dyYW51bGFydGl5KGludGVsX2RwKQo+ID4gPiA7Cj4gPiA+ICAJCX0KPiA+ID4gIAl9 Cj4gPiA+IEBAIC0zNzMsNyArMzY3LDcgQEAgc3RhdGljIHZvaWQgaHN3X3Bzcl9zZXR1cF9hdXgo c3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gIAlCVUlMRF9CVUdfT04oc2l6 ZW9mKGF1eF9tc2cpID4gMjApOwo+ID4gPiAgCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYXV4X21z Zyk7IGkgKz0gNCkKPiA+ID4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsCj4gPiA+IC0JCQkg ICAgICAgRURQX1BTUl9BVVhfREFUQShkZXZfcHJpdi0KPiA+ID4gPnBzci50cmFuc2NvZGVyLCBp ID4+IDIpLAo+ID4gPiArCQkJICAgICAgIEVEUF9QU1JfQVVYX0RBVEEoaW50ZWxfZHAtCj4gPiA+ ID5wc3IudHJhbnNjb2RlciwgaSA+PiAyKSwKPiA+ID4gIAkJCSAgICAgICBpbnRlbF9kcF9wYWNr X2F1eCgmYXV4X21zZ1tpXSwKPiA+ID4gc2l6ZW9mKGF1eF9tc2cpIC0gaSkpOwo+ID4gPiAgCj4g PiA+ICAJYXV4X2Nsb2NrX2RpdmlkZXIgPSBpbnRlbF9kcC0+Z2V0X2F1eF9jbG9ja19kaXZpZGVy KGludGVsX2RwLAo+ID4gPiAwKTsKPiA+ID4gQEAgLTM4NCw3ICszNzgsNyBAQCBzdGF0aWMgdm9p ZCBoc3dfcHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwKQo+ID4g PiAgCj4gPiA+ICAJLyogU2VsZWN0IG9ubHkgdmFsaWQgYml0cyBmb3IgU1JEX0FVWF9DVEwgKi8K PiA+ID4gIAlhdXhfY3RsICY9IHBzcl9hdXhfbWFzazsKPiA+ID4gLQlpbnRlbF9kZV93cml0ZShk ZXZfcHJpdiwgRURQX1BTUl9BVVhfQ1RMKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIp LAo+ID4gPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoaW50ZWxf ZHAtCj4gPiA+ID5wc3IudHJhbnNjb2RlciksCj4gPiA+ICAJCSAgICAgICBhdXhfY3RsKTsKPiA+ ID4gIH0KPiA+ID4gIAo+ID4gPiBAQCAtMzk0LDE0ICszODgsMTQgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX2VuYWJsZV9zaW5rKHN0cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ ICAJdTggZHBjZF92YWwgPSBEUF9QU1JfRU5BQkxFOwo+ID4gPiAgCj4gPiA+ICAJLyogRW5hYmxl IEFMUE0gYXQgc2luayBmb3IgcHNyMiAqLwo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgewo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ID4g PiAgCQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsCj4gPiA+IERQX1JFQ0VJVkVS X0FMUE1fQ09ORklHLAo+ID4gPiAgCQkJCSAgIERQX0FMUE1fRU5BQkxFIHwKPiA+ID4gIAkJCQkg ICBEUF9BTFBNX0xPQ0tfRVJST1JfSVJRX0hQRF9FTkFCTEUpOwo+ID4gPiAgCj4gPiA+ICAJCWRw Y2RfdmFsIHw9IERQX1BTUl9FTkFCTEVfUFNSMiB8Cj4gPiA+IERQX1BTUl9JUlFfSFBEX1dJVEhf Q1JDX0VSUk9SUzsKPiA+ID4gIAl9IGVsc2Ugewo+ID4gPiAtCQlpZiAoZGV2X3ByaXYtPnBzci5s aW5rX3N0YW5kYnkpCj4gPiA+ICsJCWlmIChpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSkKPiA+ ID4gIAkJCWRwY2RfdmFsIHw9IERQX1BTUl9NQUlOX0xJTktfQUNUSVZFOwo+ID4gPiAgCj4gPiA+ ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gPiA+IEBAIC00NjQsNyArNDU4LDcg QEAgc3RhdGljIHU4IHBzcl9jb21wdXRlX2lkbGVfZnJhbWVzKHN0cnVjdAo+ID4gPiBpbnRlbF9k cCAqaW50ZWxfZHApCj4gPiA+ICAJICogb2ZmLWJ5LW9uZSBpc3N1ZSB0aGF0IEhXIGhhcyBpbiBz b21lIGNhc2VzLgo+ID4gPiAgCSAqLwo+ID4gPiAgCWlkbGVfZnJhbWVzID0gbWF4KDYsIGRldl9w cml2LT52YnQucHNyLmlkbGVfZnJhbWVzKTsKPiA+ID4gLQlpZGxlX2ZyYW1lcyA9IG1heChpZGxl X2ZyYW1lcywgZGV2X3ByaXYtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeQo+ID4gPiArIDEpOwo+ID4g PiArCWlkbGVfZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtfc3lu Y19sYXRlbmN5Cj4gPiA+ICsgMSk7Cj4gPiA+ICAKPiA+ID4gIAlpZiAoZHJtX1dBUk5fT04oJmRl dl9wcml2LT5kcm0sIGlkbGVfZnJhbWVzID4gMHhmKSkKPiA+ID4gIAkJaWRsZV9mcmFtZXMgPSAw eGY7Cj4gPiA+IEBAIC00ODQsNyArNDc4LDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3Bz cjEoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gIAlpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikpCj4gPiA+ICAJCXZhbCB8PSBFRFBfUFNSX01JTl9MSU5LX0VOVFJZX1RJTUVf OF9MSU5FUzsKPiA+ID4gIAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkK PiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkpCj4gPiA+ICAJCXZhbCB8PSBF RFBfUFNSX0xJTktfU1RBTkRCWTsKPiA+ID4gIAo+ID4gPiAgCXZhbCB8PSBpbnRlbF9wc3IxX2dl dF90cF90aW1lKGludGVsX2RwKTsKPiA+ID4gQEAgLTQ5Miw5ICs0ODYsOSBAQCBzdGF0aWMgdm9p ZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwKQo+ID4g PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gPiA+ICAJCXZhbCB8PSBFRFBfUFNS X0NSQ19FTkFCTEU7Cj4gPiA+ICAKPiA+ID4gLQl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2X3By aXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKSAmCj4gPiA+ ICsJdmFsIHw9IChpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0K PiA+ID4gPnBzci50cmFuc2NvZGVyKSkgJgo+ID4gPiAgCQlFRFBfUFNSX1JFU1RPUkVfUFNSX0FD VElWRV9DVFhfTUFTSyk7Cj4gPiA+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1Jf Q1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIAo+ID4gPiB2YWwpOwo+ID4gPiArCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIp LCAKPiA+ID4gdmFsKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIHUzMiBpbnRlbF9w c3IyX2dldF90cF90aW1lKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+IEBAIC01Mjks NyArNTIzLDcgQEAgc3RhdGljIHZvaWQgaHN3X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2Rw Cj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMCB8 fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiA+ID4gIAkJdmFsIHw9IEVEUF9ZX0NPT1JESU5B VEVfRU5BQkxFOwo+ID4gPiAgCj4gPiA+IC0JdmFsIHw9IEVEUF9QU1IyX0ZSQU1FX0JFRk9SRV9T VShkZXZfcHJpdi0+cHNyLnNpbmtfc3luY19sYXRlbmN5IAo+ID4gPiArIDEpOwo+ID4gPiArCXZh bCB8PSBFRFBfUFNSMl9GUkFNRV9CRUZPUkVfU1UoaW50ZWxfZHAtPnBzci5zaW5rX3N5bmNfbGF0 ZW5jeSAKPiA+ID4gKyAxKTsKPiA+ID4gIAl2YWwgfD0gaW50ZWxfcHNyMl9nZXRfdHBfdGltZShp bnRlbF9kcCk7Cj4gPiA+ICAKPiA+ID4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikg ewo+ID4gPiBAQCAtNTQ4LDcgKzU0Miw3IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3Iy KHN0cnVjdCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHApCj4gPiA+ICAJCXZhbCB8PSBFRFBfUFNS Ml9GQVNUX1dBS0UoNyk7Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IC0JaWYgKGRldl9wcml2LT5w c3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCkgewo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnBz cjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsKPiA+ID4gIAkJLyogV0EgMTQwODMzMDg0NyAqLwo+ID4g PiAgCQlpZiAoSVNfVEdMX0RJU1BfUkVWSUQoZGV2X3ByaXYsIFRHTF9SRVZJRF9BMCwKPiA+ID4g VEdMX1JFVklEX0EwKSB8fAo+ID4gPiAgCQkgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xf UkVWSURfQTAsIFJLTF9SRVZJRF9BMCkpCj4gPiA+IEBAIC01NTcsMjAgKzU1MSwyMCBAQCBzdGF0 aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMihzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2Rw KQo+ID4gPiAgCQkJCSAgICAgRElTX1JBTV9CWVBBU1NfUFNSMl9NQU5fVFJBQ0spOwo+ID4gPiAg Cj4gPiA+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAo+ID4gPiAtCQkJICAgICAgIFBTUjJf TUFOX1RSS19DVEwoZGV2X3ByaXYtCj4gPiA+ID5wc3IudHJhbnNjb2RlciksCj4gPiA+ICsJCQkg ICAgICAgUFNSMl9NQU5fVFJLX0NUTChpbnRlbF9kcC0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSwK PiA+ID4gIAkJCSAgICAgICBQU1IyX01BTl9UUktfQ1RMX0VOQUJMRSk7Cj4gPiA+ICAJfSBlbHNl IGlmIChIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKSB7Cj4gPiA+ICAJCWludGVsX2RlX3dy aXRlKGRldl9wcml2LAo+ID4gPiAtCQkJICAgICAgIFBTUjJfTUFOX1RSS19DVEwoZGV2X3ByaXYt Cj4gPiA+ID5wc3IudHJhbnNjb2RlciksIDApOwo+ID4gPiArCQkJICAgICAgIFBTUjJfTUFOX1RS S19DVEwoaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNjb2RlciksIDApOwo+ID4gPiAgCX0KPiA+ ID4gIAo+ID4gPiAgCS8qCj4gPiA+ICAJICogUFNSMiBIVyBpcyBpbmNvcnJlY3RseSB1c2luZyBF RFBfUFNSX1RQMV9UUDNfU0VMIGFuZCBCU3BlYwo+ID4gPiBpcwo+ID4gPiAgCSAqIHJlY29tbWVu ZGluZyBrZWVwIHRoaXMgYml0IHVuc2V0IHdoaWxlIFBTUjIgaXMgZW5hYmxlZC4KPiA+ID4gIAkg Ki8KPiA+ID4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyKSwgCj4gPiA+IDApOwo+ID4gPiArCWludGVsX2RlX3dyaXRlKGRldl9w cml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCAKPiA+ID4gMCk7Cj4g PiA+ICAKPiA+ID4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RMKGRldl9w cml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ID4gPiArCWludGVsX2RlX3dyaXRl KGRldl9wcml2LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNjb2Rlciks IHZhbCk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBib29sCj4gPiA+IEBAIC01OTMs NTUgKzU4Nyw1OCBAQCBzdGF0aWMgdTMyIGludGVsX2dldF9mcmFtZV90aW1lX3VzKGNvbnN0Cj4g PiA+IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCj4gPiA+ICAJCQkgICAgZHJtX21v ZGVfdnJlZnJlc2goJmNzdGF0ZS0KPiA+ID4gPmh3LmFkanVzdGVkX21vZGUpKTsKPiA+ID4gIH0K PiA+ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwKPiA+ID4gK3N0YXRpYyB2b2lkIHBz cjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiAg CQkJCSAgICAgdTMyIGlkbGVfZnJhbWVzKQo+ID4gPiAgewo+ID4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAgCXUzMiB2 YWw7Cj4gPiA+ICAKPiA+ID4gIAlpZGxlX2ZyYW1lcyA8PD0gIEVEUF9QU1IyX0lETEVfRlJBTUVf U0hJRlQ7Cj4gPiA+IC0JdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRURQX1BTUjJfQ1RM KGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKTsKPiA+ID4gKwl2YWwgPSBpbnRlbF9k ZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNj b2RlcikpOwo+ID4gPiAgCXZhbCAmPSB+RURQX1BTUjJfSURMRV9GUkFNRV9NQVNLOwo+ID4gPiAg CXZhbCB8PSBpZGxlX2ZyYW1lczsKPiA+ID4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQ X1BTUjJfQ1RMKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ID4gPiAr CWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSMl9DVEwoaW50ZWxfZHAtCj4gPiA+ID5w c3IudHJhbnNjb2RlciksIHZhbCk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRpYyB2b2lk IHRnbF9wc3IyX2VuYWJsZV9kYzNjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2 X3ByaXYpCj4gPiA+ICtzdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMzY28oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIHsKPiA+ID4gLQlwc3IyX3Byb2dyYW1faWRsZV9mcmFt ZXMoZGV2X3ByaXYsIDApOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiArCj4gPiA+ICsJcHNyMl9wcm9ncmFtX2lk bGVfZnJhbWVzKGludGVsX2RwLCAwKTsKPiA+ID4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90 YXJnZXRfZGNfc3RhdGUoZGV2X3ByaXYsCj4gPiA+IERDX1NUQVRFX0VOX0RDM0NPKTsKPiA+ID4g IH0KPiA+ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ICtzdGF0aWMgdm9pZCB0 Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ICB7 Cj4gPiA+IC0Jc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7Cj4g PiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRl bF9kcCk7Cj4gPiA+ICAKPiA+ID4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRfZGNf c3RhdGUoZGV2X3ByaXYsCj4gPiA+IERDX1NUQVRFX0VOX1VQVE9fREM2KTsKPiA+ID4gLQlwc3Iy X3Byb2dyYW1faWRsZV9mcmFtZXMoZGV2X3ByaXYsCj4gPiA+IHBzcl9jb21wdXRlX2lkbGVfZnJh bWVzKGludGVsX2RwKSk7Cj4gPiA+ICsJcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKGludGVsX2Rw LAo+ID4gPiBwc3JfY29tcHV0ZV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCkpOwo+ID4gPiAgfQo+ID4g PiAgCj4gPiA+ICBzdGF0aWMgdm9pZCB0Z2xfZGMzY29fZGlzYWJsZV93b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPQo+ID4gPiAtCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiks Cj4gPiA+IHBzci5kYzNjb193b3JrLndvcmspOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAgPQo+ID4gPiArCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCppbnRlbF9kcCksCj4g PiA+IHBzci5kYzNjb193b3JrLndvcmspOwo+ID4gPiAgCj4gPiA+IC0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2sp Owo+ID4gPiAgCS8qIElmIGRlbGF5ZWQgd29yayBpcyBwZW5kaW5nLCBpdCBpcyBub3QgaWRsZSAq Lwo+ID4gPiAtCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZGV2X3ByaXYtPnBzci5kYzNjb193 b3JrKSkKPiA+ID4gKwlpZiAoZGVsYXllZF93b3JrX3BlbmRpbmcoJmludGVsX2RwLT5wc3IuZGMz Y29fd29yaykpCj4gPiA+ICAJCWdvdG8gdW5sb2NrOwo+ID4gPiAgCj4gPiA+IC0JdGdsX3BzcjJf ZGlzYWJsZV9kYzNjbyhkZXZfcHJpdik7Cj4gPiA+ICsJdGdsX3BzcjJfZGlzYWJsZV9kYzNjbyhp bnRlbF9kcCk7Cj4gPiA+ICB1bmxvY2s6Cj4gPiA+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwo+ID4gPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiA+ ID4gIH0KPiA+ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgdGdsX2Rpc2FsbG93X2RjM2NvX29uX3Bz cjJfZXhpdChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICtz dGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KHN0cnVjdCBpbnRlbF9k cAo+ID4gPiAqaW50ZWxfZHApCj4gPiA+ICB7Cj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmRj M2NvX2VuYWJsZWQpCj4gPiA+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQpCj4g PiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ID4gPiAtCWNhbmNlbF9kZWxheWVkX3dvcmsoJmRldl9w cml2LT5wc3IuZGMzY29fd29yayk7Cj4gPiA+ICsJY2FuY2VsX2RlbGF5ZWRfd29yaygmaW50ZWxf ZHAtPnBzci5kYzNjb193b3JrKTsKPiA+ID4gIAkvKiBCZWZvcmUgUFNSMiBleGl0IGRpc2FsbG93 IGRjM2NvKi8KPiA+ID4gLQl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKPiA+ID4g Kwl0Z2xfcHNyMl9kaXNhYmxlX2RjM2NvKGludGVsX2RwKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4g PiAgc3RhdGljIHZvaWQKPiA+ID4gQEAgLTcxNCw3ICs3MTEsNyBAQCBzdGF0aWMgYm9vbCBpbnRl bF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QKPiA+ID4gaW50ZWxfZHAgKmludGVsX2RwLAo+ID4g PiAgCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRj X3ZkaXNwbGF5Owo+ID4gPiAgCWludCBwc3JfbWF4X2ggPSAwLCBwc3JfbWF4X3YgPSAwLCBtYXhf YnBwID0gMDsKPiA+ID4gIAo+ID4gPiAtCWlmICghZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3Vw cG9ydCkKPiA+ID4gKwlpZiAoIWludGVsX2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQpCj4gPiA+ ICAJCXJldHVybiBmYWxzZTsKPiA+ID4gIAo+ID4gPiAgCWlmICghdHJhbnNjb2Rlcl9oYXNfcHNy MihkZXZfcHJpdiwgY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpKSAKPiA+ID4gewo+ID4gPiBA QCAtNzI0LDcgKzcyMSw3IEBAIHN0YXRpYyBib29sIGludGVsX3BzcjJfY29uZmlnX3ZhbGlkKHN0 cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ ID4gIAl9Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIXBzcjJfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYp KSB7Cj4gPiA+ICsJaWYgKCFwc3IyX2dsb2JhbF9lbmFibGVkKGludGVsX2RwKSkgewo+ID4gPiAg CQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQgYnkgZmxhZ1xuIik7 Cj4gPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ID4gIAl9Cj4gPiA+IEBAIC03NzMsMTAgKzc3MCwx MCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QKPiA+ID4gaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gPiAgCSAqIG9ubHkgbmVlZCB0byB2YWxpZGF0ZSB0aGUgU1Ug YmxvY2sgd2lkdGggaXMgYSBtdWx0aXBsZSBvZgo+ID4gPiAgCSAqIHggZ3JhbnVsYXJpdHkuCj4g PiA+ICAJICovCj4gPiA+IC0JaWYgKGNydGNfaGRpc3BsYXkgJSBkZXZfcHJpdi0+cHNyLnN1X3hf Z3JhbnVsYXJpdHkpIHsKPiA+ID4gKwlpZiAoY3J0Y19oZGlzcGxheSAlIGludGVsX2RwLT5wc3Iu c3VfeF9ncmFudWxhcml0eSkgewo+ID4gPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwK PiA+ID4gIAkJCSAgICAiUFNSMiBub3QgZW5hYmxlZCwgaGRpc3BsYXkoJWQpIG5vdAo+ID4gPiBt dWx0aXBsZSBvZiAlZFxuIiwKPiA+ID4gLQkJCSAgICBjcnRjX2hkaXNwbGF5LCBkZXZfcHJpdi0K PiA+ID4gPnBzci5zdV94X2dyYW51bGFyaXR5KTsKPiA+ID4gKwkJCSAgICBjcnRjX2hkaXNwbGF5 LCBpbnRlbF9kcC0KPiA+ID4gPnBzci5zdV94X2dyYW51bGFyaXR5KTsKPiA+ID4gIAkJcmV0dXJu IGZhbHNlOwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiBAQCAtODExLDEzICs4MDgsMTAgQEAgdm9p ZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9k cCwKPiA+ID4gIAkJJmNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGU7Cj4gPiA+ICAJaW50IHBz cl9zZXR1cF90aW1lOwo+ID4gV2hhdCBpcyB0aGUgcGxhbiB0byBjaGVjayB3aGV0aGVyIGEgdHJh bnNjb2RlciBzdXBwb3J0cyBwc3Igd2l0aCBhCj4gPiBpbnRlbF9kcC4KPiA+IFRoZW9yZXRpY2Fs bHkgdGhlcmUgY2FuIGJlIG11bGlwbGUgY29tYmluYXRpb24gb2YgY3J0YyBhdHRhY2hlZCB0byBh Cj4gPiBjb25uZWN0b3IsICAKPiA+IElmIGl0IGlzIHdpcCwgcGxlc2UgYWRkIFRPRE8gY29tbWVu dCBpbiBjb21taXQgbG9nLgo+ID4gPiAgCj4gPiA+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkK PiA+ID4gLQkJcmV0dXJuOwo+ID4gPiAtCj4gPiA+IC0JaWYgKGludGVsX2RwICE9IGRldl9wcml2 LT5wc3IuZHApCj4gPiA+ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkKPiA+ID4gIAkJcmV0dXJu Owo+ID4gPiAgCj4gPiA+IC0JaWYgKCFwc3JfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYpKSB7Cj4g PiA+ICsJaWYgKCFwc3JfZ2xvYmFsX2VuYWJsZWQoaW50ZWxfZHApKSB7Cj4gPiA+ICAJCWRybV9k Ymdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSIGRpc2FibGVkIGJ5IGZsYWdcbiIpOwo+ID4gPiAg CQlyZXR1cm47Cj4gPiA+ICAJfQo+ID4gPiBAQCAtODM0LDcgKzgyOCw3IEBAIHZvaWQgaW50ZWxf cHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHAsCj4gPiA+ ICAJCXJldHVybjsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gLQlpZiAoZGV2X3ByaXYtPnBzci5z aW5rX25vdF9yZWxpYWJsZSkgewo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtfbm90X3Jl bGlhYmxlKSB7Cj4gPiA+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAo+ID4gPiAgCQkJ ICAgICJQU1Igc2luayBpbXBsZW1lbnRhdGlvbiBpcyBub3QKPiA+ID4gcmVsaWFibGVcbiIpOwo+ ID4gPiAgCQlyZXR1cm47Cj4gPiA+IEBAIC04NzAsMjMgKzg2NCwyNCBAQCB2b2lkIGludGVsX3Bz cl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwLAo+ID4gPiAg c3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBf dG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXI7Cj4gPiA+ICAKPiA+ID4gLQlpZiAodHJhbnNjb2Rlcl9o YXNfcHNyMihkZXZfcHJpdiwgZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSkKPiA+ID4gKwlpZiAo dHJhbnNjb2Rlcl9oYXNfcHNyMihkZXZfcHJpdiwgdHJhbnNjb2RlcikpCj4gPiA+ICAJCWRybV9X QVJOX09OKCZkZXZfcHJpdi0+ZHJtLAo+ID4gPiAtCQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3By aXYsCj4gPiA+IEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKSAmIEVEUF9Q U1IyX0VOQUJMRSk7Cj4gPiA+ICsJCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiA+ID4g RURQX1BTUjJfQ1RMKHRyYW5zY29kZXIpKSAmIEVEUF9QU1IyX0VOQUJMRSk7Cj4gPiA+ICAKPiA+ ID4gIAlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwKPiA+ID4gLQkJICAgIGludGVsX2RlX3Jl YWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIp KSAmIEVEUF9QU1JfRU5BQkxFKTsKPiA+ID4gLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwg ZGV2X3ByaXYtPnBzci5hY3RpdmUpOwo+ID4gPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9w cml2LT5wc3IubG9jayk7Cj4gPiA+ICsJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBf UFNSX0NUTCh0cmFuc2NvZGVyKSkgJgo+ID4gPiBFRFBfUFNSX0VOQUJMRSk7Cj4gPiA+ICsJZHJt X1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGludGVsX2RwLT5wc3IuYWN0aXZlKTsKPiA+ID4gKwls b2NrZGVwX2Fzc2VydF9oZWxkKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ID4gPiAgCj4gPiA+ICAJ LyogcHNyMSBhbmQgcHNyMiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiovCj4gPiA+IC0JaWYgKGRl dl9wcml2LT5wc3IucHNyMl9lbmFibGVkKQo+ID4gPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJf ZW5hYmxlZCkKPiA+ID4gIAkJaHN3X2FjdGl2YXRlX3BzcjIoaW50ZWxfZHApOwo+ID4gPiAgCWVs c2UKPiA+ID4gIAkJaHN3X2FjdGl2YXRlX3BzcjEoaW50ZWxfZHApOwo+ID4gPiAgCj4gPiA+IC0J ZGV2X3ByaXYtPnBzci5hY3RpdmUgPSB0cnVlOwo+ID4gPiArCWludGVsX2RwLT5wc3IuYWN0aXZl ID0gdHJ1ZTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Vu YWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gQEAgLTkwMiw3ICs4 OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QKPiA+ID4g aW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJ U19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ID4gPiAgCQloc3dfcHNyX3NldHVwX2F1eChpbnRlbF9k cCk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgJiYgKElT X0dFTihkZXZfcHJpdiwgOSkgJiYKPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJs ZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYKPiA+ID4gIAkJCQkJICAgIUlTX0dFTUlOSUxB S0UoZGV2X3ByaXYpKSkgewo+ID4gPiAgCQlpOTE1X3JlZ190IHJlZyA9IENISUNLRU5fVFJBTlMo Y3B1X3RyYW5zY29kZXIpOwo+ID4gPiAgCQl1MzIgY2hpY2tlbiA9IGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIHJlZyk7Cj4gPiA+IEBAIC05MjYsMTAgKzkyMSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QKPiA+ID4gaW50ZWxfZHAgKmludGVsX2RwLAo+ID4g PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4gPiA+ICAJCW1hc2sgfD0gRURQX1BT Ul9ERUJVR19NQVNLX0RJU1BfUkVHX1dSSVRFOwo+ID4gPiAgCj4gPiA+IC0JaW50ZWxfZGVfd3Jp dGUoZGV2X3ByaXYsIEVEUF9QU1JfREVCVUcoZGV2X3ByaXYtCj4gPiA+ID5wc3IudHJhbnNjb2Rl ciksCj4gPiA+ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1JfREVCVUcoaW50ZWxf ZHAtCj4gPiA+ID5wc3IudHJhbnNjb2RlciksCj4gPiA+ICAJCSAgICAgICBtYXNrKTsKPiA+ID4g IAo+ID4gPiAtCXBzcl9pcnFfY29udHJvbChkZXZfcHJpdik7Cj4gPiA+ICsJcHNyX2lycV9jb250 cm9sKGludGVsX2RwKTsKPiA+ID4gIAo+ID4gPiAgCWlmIChjcnRjX3N0YXRlLT5kYzNjb19leGl0 bGluZSkgewo+ID4gPiAgCQl1MzIgdmFsOwo+ID4gPiBAQCAtOTQ3LDMwICs5NDIsMzAgQEAgc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9zb3VyY2Uoc3RydWN0Cj4gPiA+IGludGVsX2RwICpp bnRlbF9kcCwKPiA+ID4gIAo+ID4gPiAgCWlmIChIQVNfUFNSX0hXX1RSQUNLSU5HKGRldl9wcml2 KSAmJgo+ID4gPiBIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpKQo+ID4gPiAgCQlpbnRlbF9k ZV9ybXcoZGV2X3ByaXYsIENISUNLRU5fUEFSMV8xLAo+ID4gPiBJR05PUkVfUFNSMl9IV19UUkFD S0lORywKPiA+ID4gLQkJCSAgICAgZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVk ID8KPiA+ID4gKwkJCSAgICAgaW50ZWxfZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkID8K PiA+ID4gIAkJCSAgICAgSUdOT1JFX1BTUjJfSFdfVFJBQ0tJTkcgOiAwKTsKPiA+ID4gIH0KPiA+ ID4gIAo+ID4gPiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2LAo+ID4gPiArc3RhdGljIHZvaWQgaW50ZWxf cHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gIAkJCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUKPiA+ID4gKmNydGNfc3RhdGUsCj4gPiA+ ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlCj4gPiA+ICpjb25uX3N0 YXRlKQo+ID4gPiAgewo+ID4gPiAtCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJp di0+cHNyLmRwOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRw X3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOwo+ID4gPiAgCXUzMiB2YWw7Cj4gPiA+ ICAKPiA+ID4gLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5lbmFi bGVkKTsKPiA+ID4gKwlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5l bmFibGVkKTsKPiA+ID4gIAo+ID4gPiAtCWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID0gY3J0 Y19zdGF0ZS0+aGFzX3BzcjI7Cj4gPiA+IC0JZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMgPSAwOwo+ID4gPiAtCWRldl9wcml2LT5wc3IucGlwZSA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+dWFwaS5jcnRjKS0KPiA+ID4gPnBpcGU7Cj4gPiA+IC0JZGV2X3ByaXYtPnBzci5k YzNjb19lbmFibGVkID0gISFjcnRjX3N0YXRlLT5kYzNjb19leGl0bGluZTsKPiA+ID4gLQlkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIgPSBjcnRjX3N0YXRlLT5jcHVfdHJhbnNjb2RlcjsKPiA+ID4g KwlpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmhhc19wc3IyOwo+ID4g PiArCWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsKPiA+ID4gKwlpbnRl bF9kcC0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktCj4g PiA+ID5waXBlOwo+ID4gPiArCWludGVsX2RwLT5wc3IuZGMzY29fZW5hYmxlZCA9ICEhY3J0Y19z dGF0ZS0+ZGMzY29fZXhpdGxpbmU7Cj4gPiA+ICsJaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyID0g Y3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4gPiA+ICAJLyogREM1L0RDNiByZXF1aXJlcyBh dCBsZWFzdCA2IGlkbGUgZnJhbWVzICovCj4gPiA+ICAJdmFsID0gdXNlY3NfdG9famlmZmllcyhp bnRlbF9nZXRfZnJhbWVfdGltZV91cyhjcnRjX3N0YXRlKSAqCj4gPiA+IDYpOwo+ID4gPiAtCWRl dl9wcml2LT5wc3IuZGMzY29fZXhpdF9kZWxheSA9IHZhbDsKPiA+ID4gLQlkZXZfcHJpdi0+cHNy LnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRlLQo+ID4gPiA+ZW5hYmxlX3BzcjJf c2VsX2ZldGNoOwo+ID4gPiArCWludGVsX2RwLT5wc3IuZGMzY29fZXhpdF9kZWxheSA9IHZhbDsK PiA+ID4gKwlpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0YXRl LQo+ID4gPiA+ZW5hYmxlX3BzcjJfc2VsX2ZldGNoOwo+ID4gPiAgCj4gPiA+ICAJLyoKPiA+ID4g IAkgKiBJZiBhIFBTUiBlcnJvciBoYXBwZW5lZCBhbmQgdGhlIGRyaXZlciBpcyByZWxvYWRlZCwg dGhlCj4gPiA+IEVEUF9QU1JfSUlSCj4gPiA+IEBAIC05ODIsMjcgKzk3NywyNyBAQCBzdGF0aWMg dm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiA+ICAJICovCj4gPiA+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gMTIpIHsKPiA+ID4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiA+ID4gLQkJ CQkgICAgVFJBTlNfUFNSX0lJUihkZXZfcHJpdi0KPiA+ID4gPnBzci50cmFuc2NvZGVyKSk7Cj4g PiA+ICsJCQkJICAgIFRSQU5TX1BTUl9JSVIoaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNjb2Rl cikpOwo+ID4gPiAgCQl2YWwgJj0gRURQX1BTUl9FUlJPUigwKTsKPiA+ID4gIAl9IGVsc2Ugewo+ ID4gPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0lJUik7Cj4gPiA+ IC0JCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7Cj4gPiA+ ICsJCXZhbCAmPSBFRFBfUFNSX0VSUk9SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4gPiA+ ICAJfQo+ID4gPiAgCWlmICh2YWwpIHsKPiA+ID4gLQkJZGV2X3ByaXYtPnBzci5zaW5rX25vdF9y ZWxpYWJsZSA9IHRydWU7Cj4gPiA+ICsJCWludGVsX2RwLT5wc3Iuc2lua19ub3RfcmVsaWFibGUg PSB0cnVlOwo+ID4gPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiA+ID4gIAkJCSAg ICAiUFNSIGludGVycnVwdGlvbiBlcnJvciBzZXQsIG5vdCBlbmFibGluZwo+ID4gPiBQU1JcbiIp Owo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+ICAJZHJtX2RiZ19rbXMo JmRldl9wcml2LT5kcm0sICJFbmFibGluZyBQU1Ilc1xuIiwKPiA+ID4gLQkJICAgIGRldl9wcml2 LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKPiA+ID4gKwkJICAgIGludGVsX2RwLT5w c3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKPiA+ID4gIAlpbnRlbF9kcF9jb21wdXRlX3Bz cl92c2Nfc2RwKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlLAo+ID4gPiAtCQkJCSAg ICAgJmRldl9wcml2LT5wc3IudnNjKTsKPiA+ID4gLQlpbnRlbF93cml0ZV9kcF92c2Nfc2RwKGVu Y29kZXIsIGNydGNfc3RhdGUsICZkZXZfcHJpdi0KPiA+ID4gPnBzci52c2MpOwo+ID4gPiArCQkJ CSAgICAgJmludGVsX2RwLT5wc3IudnNjKTsKPiA+ID4gKwlpbnRlbF93cml0ZV9kcF92c2Nfc2Rw KGVuY29kZXIsIGNydGNfc3RhdGUsICZpbnRlbF9kcC0KPiA+ID4gPnBzci52c2MpOwo+ID4gPiAg CWludGVsX3Bzcl9lbmFibGVfc2luayhpbnRlbF9kcCk7Cj4gPiA+ICAJaW50ZWxfcHNyX2VuYWJs ZV9zb3VyY2UoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ID4gPiAtCWRldl9wcml2LT5wc3IuZW5h YmxlZCA9IHRydWU7Cj4gPiA+ICsJaW50ZWxfZHAtPnBzci5lbmFibGVkID0gdHJ1ZTsKPiA+ID4g IAo+ID4gPiAgCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4gPiA+ICB9Cj4gPiA+IEBA IC0xMDIxLDcgKzEwMTYsNyBAQCB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2Rw Cj4gPiA+ICppbnRlbF9kcCwKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiA+ID4gIAo+ID4gPiAtCWlmICgh Q0FOX1BTUihkZXZfcHJpdikgfHwgZGV2X3ByaXYtPnBzci5kcCAhPSBpbnRlbF9kcCkKPiA+ID4g KwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApKQo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAKPiA+ID4g IAlpZiAoIWNydGNfc3RhdGUtPmhhc19wc3IpCj4gPiA+IEBAIC0xMDI5LDQ2ICsxMDI0LDQ3IEBA IHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwLAo+ ID4gPiAgCj4gPiA+ICAJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIGRldl9wcml2LT5kcnJz LmRwKTsKPiA+ID4gIAo+ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4g PiA+IC0JaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsIGNvbm5f c3RhdGUpOwo+ID4gPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4g KwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ID4gPiArCWludGVsX3Bzcl9lbmFi bGVfbG9ja2VkKGludGVsX2RwLCBjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKPiA+ID4gKwltdXRl eF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0 YXRpYyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCj4gPiA+ICB7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+ICAJdTMyIHZhbDsKPiA+ID4gIAo+ID4gPiAt CWlmICghZGV2X3ByaXYtPnBzci5hY3RpdmUpIHsKPiA+ID4gLQkJaWYgKHRyYW5zY29kZXJfaGFz X3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKSB7Cj4gPiA+ ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSkgewo+ID4gPiArCQlpZiAodHJhbnNjb2Rlcl9o YXNfcHNyMihkZXZfcHJpdiwgaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpIHsKPiA+ ID4gIAkJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4gPiA+IC0JCQkJCSAgICBFRFBf UFNSMl9DVEwoZGV2X3ByaXYtCj4gPiA+ID5wc3IudHJhbnNjb2RlcikpOwo+ID4gPiArCQkJCQkg ICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpKTsKPiA+ID4g IAkJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJgo+ID4gPiBFRFBfUFNSMl9FTkFC TEUpOwo+ID4gPiAgCQl9Cj4gPiA+ICAKPiA+ID4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZf cHJpdiwKPiA+ID4gLQkJCQkgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtCj4gPiA+ID5wc3IudHJh bnNjb2RlcikpOwo+ID4gPiArCQkJCSAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0KPiA+ID4gPnBz ci50cmFuc2NvZGVyKSk7Cj4gPiA+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwg JiBFRFBfUFNSX0VOQUJMRSk7Cj4gPiA+ICAKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCX0KPiA+ ID4gIAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ID4gPiAtCQl0 Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KGRldl9wcml2KTsKPiA+ID4gKwlpZiAoaW50 ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiA+ID4gKwkJdGdsX2Rpc2FsbG93X2RjM2NvX29u X3BzcjJfZXhpdChpbnRlbF9kcCk7Cj4gPiA+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsCj4gPiA+IC0JCQkJICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0KPiA+ID4gPnBzci50cmFu c2NvZGVyKSk7Cj4gPiA+ICsJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0KPiA+ID4gPnBz ci50cmFuc2NvZGVyKSk7Cj4gPiA+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhKHZh bCAmIEVEUF9QU1IyX0VOQUJMRSkpOwo+ID4gPiAgCQl2YWwgJj0gfkVEUF9QU1IyX0VOQUJMRTsK PiA+ID4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsCj4gPiA+IC0JCQkgICAgICAgRURQX1BT UjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksCj4gPiA+IHZhbCk7Cj4gPiA+ICsJCQkg ICAgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksCj4gPiA+IHZhbCk7 Cj4gPiA+ICAJfSBlbHNlIHsKPiA+ID4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwK PiA+ID4gLQkJCQkgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtCj4gPiA+ID5wc3IudHJhbnNjb2Rl cikpOwo+ID4gPiArCQkJCSAgICBFRFBfUFNSX0NUTChpbnRlbF9kcC0KPiA+ID4gPnBzci50cmFu c2NvZGVyKSk7Cj4gPiA+ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhKHZhbCAmIEVE UF9QU1JfRU5BQkxFKSk7Cj4gPiA+ICAJCXZhbCAmPSB+RURQX1BTUl9FTkFCTEU7Cj4gPiA+ICAJ CWludGVsX2RlX3dyaXRlKGRldl9wcml2LAo+ID4gPiAtCQkJICAgICAgIEVEUF9QU1JfQ1RMKGRl dl9wcml2LT5wc3IudHJhbnNjb2RlciksCj4gPiA+IHZhbCk7Cj4gPiA+ICsJCQkgICAgICAgRURQ X1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwKPiA+ID4gdmFsKTsKPiA+ID4gIAl9 Cj4gPiA+IC0JZGV2X3ByaXYtPnBzci5hY3RpdmUgPSBmYWxzZTsKPiA+ID4gKwlpbnRlbF9kcC0+ cHNyLmFjdGl2ZSA9IGZhbHNlOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgdm9pZCBp bnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4g QEAgLTEwNzcsMjEgKzEwNzMsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9j a2VkKHN0cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ICAJaTkxNV9yZWdfdCBw c3Jfc3RhdHVzOwo+ID4gPiAgCXUzMiBwc3Jfc3RhdHVzX21hc2s7Cj4gPiA+ICAKPiA+ID4gLQls b2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiArCWxvY2tkZXBf YXNzZXJ0X2hlbGQoJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIWRl dl9wcml2LT5wc3IuZW5hYmxlZCkKPiA+ID4gKwlpZiAoIWludGVsX2RwLT5wc3IuZW5hYmxlZCkK PiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCj4gPiA+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sICJEaXNhYmxpbmcgUFNSJXNcbiIsCj4gPiA+IC0JCSAgICBkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCA/ICIyIiA6ICIxIik7Cj4gPiA+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5h YmxlZCA/ICIyIiA6ICIxIik7Cj4gPiA+ICAKPiA+ID4gLQlpbnRlbF9wc3JfZXhpdChkZXZfcHJp dik7Cj4gPiA+ICsJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwo+ID4gPiAgCj4gPiA+IC0JaWYg KGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gPiA+IC0JCXBzcl9zdGF0dXMgPSBFRFBf UFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiA+ID4gKwlpZiAoaW50ZWxf ZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiA+ID4gKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NU QVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwo+ID4gPiAgCQlwc3Jfc3RhdHVzX21hc2sg PSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsKPiA+ID4gIAl9IGVsc2Ugewo+ID4gPiAtCQlw c3Jfc3RhdHVzID0gRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiA+ ID4gKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1JfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rl cik7Cj4gPiA+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9QU1JfU1RBVFVTX1NUQVRFX01BU0s7 Cj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+IEBAIC0xMTAxLDcgKzEwOTcsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRlbF9k cCkKPiA+ID4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVkIG91dCB3YWl0aW5nIFBT UiBpZGxlCj4gPiA+IHN0YXRlXG4iKTsKPiA+ID4gIAo+ID4gPiAgCS8qIFdBIDE0MDgzMzA4NDcg Ki8KPiA+ID4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCj4g PiA+ICsJaWYgKGludGVsX2RwLT5wc3IucHNyMl9zZWxfZmV0Y2hfZW5hYmxlZCAmJgo+ID4gPiAg CSAgICAoSVNfVEdMX0RJU1BfUkVWSUQoZGV2X3ByaXYsIFRHTF9SRVZJRF9BMCwgVEdMX1JFVklE X0EwKSB8fAo+ID4gPiAgCSAgICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAs IFJLTF9SRVZJRF9BMCkpKQo+ID4gPiAgCQlpbnRlbF9kZV9ybXcoZGV2X3ByaXYsIENISUNLRU5f UEFSMV8xLAo+ID4gPiBAQCAtMTExMCwxMCArMTEwNiwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w c3JfZGlzYWJsZV9sb2NrZWQoc3RydWN0Cj4gPiA+IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4g IAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCj4gPiA+ICAJZHJtX2RwX2RwY2Rfd3JpdGViKCZp bnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsKPiA+ID4gIAo+ID4gPiAtCWlmIChkZXZf cHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2Vu YWJsZWQpCj4gPiA+ICAJCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwKPiA+ID4g RFBfUkVDRUlWRVJfQUxQTV9DT05GSUcsIDApOwo+ID4gPiAgCj4gPiA+IC0JZGV2X3ByaXYtPnBz ci5lbmFibGVkID0gZmFsc2U7Cj4gPiA+ICsJaW50ZWxfZHAtPnBzci5lbmFibGVkID0gZmFsc2U7 Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBAQCAtMTEzMSwyMCArMTEyNywyMiBA QCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHAs Cj4gPiA+ICAJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+aGFzX3BzcikKPiA+ID4gIAkJcmV0dXJuOwo+ ID4gPiAgCj4gPiA+IC0JaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhQ0FOX1BTUihk ZXZfcHJpdikpKQo+ID4gPiArCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIUNBTl9Q U1IoaW50ZWxfZHApKSkKPiA+ID4gIAkJcmV0dXJuOwo+ID4gPiAgCj4gPiA+IC0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNy LmxvY2spOwo+ID4gPiAgCj4gPiA+ICAJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGludGVsX2Rw KTsKPiA+ID4gIAo+ID4gPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ ID4gLQljYW5jZWxfd29ya19zeW5jKCZkZXZfcHJpdi0+cHNyLndvcmspOwo+ID4gPiAtCWNhbmNl bF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci5kYzNjb193b3JrKTsKPiA+ID4gKwlt dXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICsJY2FuY2VsX3dvcmtfc3lu YygmaW50ZWxfZHAtPnBzci53b3JrKTsKPiA+ID4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JmludGVsX2RwLT5wc3IuZGMzY29fd29yayk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0YXRp YyB2b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gPiA+ICpkZXZfcHJpdikKPiA+ID4gK3N0YXRpYyB2b2lkIHBzcl9mb3JjZV9od190cmFja2lu Z19leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ICB7Cj4gPiA+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+ ICsKPiA+ID4gIAlpZiAoSVNfVElHRVJMQUtFKGRldl9wcml2KSkKPiA+ID4gIAkJLyoKPiA+ID4g IAkJICogV3JpdGVzIHRvIENVUlNVUkZMSVZFIGluIFRHTCBhcmUgY2F1c2luZyBJT01NVQo+ID4g PiBlcnJvcnMgYW5kCj4gPiA+IEBAIC0xMTU4LDcgKzExNTYsNyBAQCBzdGF0aWMgdm9pZCBwc3Jf Zm9yY2VfaHdfdHJhY2tpbmdfZXhpdChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gPiA+ICAJCSAqIFNvIHVzaW5nIHRoaXMgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlz c3VlIGlzIHJvb3QKPiA+ID4gY2F1c2VkCj4gPiA+ICAJCSAqIGFuZCBhIGJldHRlciBmaXggaXMg Zm91bmQuCj4gPiA+ICAJCSAqLwo+ID4gPiAtCQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7Cj4g PiA+ICsJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsKPiA+ID4gIAllbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4gPiA+ICAJCS8qCj4gPiA+ICAJCSAqIERpc3BsYXkgV0EgIzA4 ODQ6IHNrbCsKPiA+ID4gQEAgLTExNjksMTMgKzExNjcsMTMgQEAgc3RhdGljIHZvaWQKPiA+ID4g cHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ID4gPiAgCQkgKiBidXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB3cml0ZSB0byB0aGUgY3Vy cmVudCBhY3RpdmUKPiA+ID4gIAkJICogcGlwZS4KPiA+ID4gIAkJICovCj4gPiA+IC0JCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShkZXZfcHJpdi0KPiA+ID4gPnBzci5waXBl KSwgMCk7Cj4gPiA+ICsJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBDVVJTVVJGTElWRShpbnRl bF9kcC0KPiA+ID4gPnBzci5waXBlKSwgMCk7Cj4gPiA+ICAJZWxzZQo+ID4gPiAgCQkvKgo+ID4g PiAgCQkgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5vdCBjYXVzZSBIVyB0cmFja2luZyB0 bwo+ID4gPiBleGl0IFBTUgo+ID4gPiAgCQkgKiBvbiBvbGRlciBnZW5zIHNvIGRvaW5nIHRoZSBt YW51YWwgZXhpdCBpbnN0ZWFkLgo+ID4gPiAgCQkgKi8KPiA+ID4gLQkJaW50ZWxfcHNyX2V4aXQo ZGV2X3ByaXYpOwo+ID4gPiArCQlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7Cj4gPiA+ICB9Cj4g PiA+ICAKPiA+ID4gIHZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3BsYW5lX3NlbF9mZXRjaChzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ID4gPiBAQCAtMTIxNSwxMSArMTIxMywxMSBAQCB2b2lk Cj4gPiA+IGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiA+ID4gIAlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VM X0ZFVENIX1NJWkUocGlwZSwgcGxhbmUtCj4gPiA+ID5pZCksIHZhbCk7Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+ID4gLXZvaWQgaW50ZWxfcHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGNvbnN0 IHN0cnVjdAo+ID4gPiBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ID4gPiArdm9pZCBp bnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RwCj4gPiA+ ICppbnRlbF9kcCwKPiA+ID4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ ID4gPiAqY3J0Y19zdGF0ZSkKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiA+ID4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+ ID4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOwo+ID4gPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4g PiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ID4gPiAgCj4gPiA+ ICAJaWYgKCFIQVNfUFNSMl9TRUxfRkVUQ0goZGV2X3ByaXYpIHx8Cj4gPiA+ICAJICAgICFjcnRj X3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2gpCj4gPiA+IEBAIC0xMzM2LDEzICsxMzM0LDEz IEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2Rw LAo+ID4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9z dGF0ZSkKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkcF90b19pOTE1KGludGVsX2RwKTsKPiA+ID4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZk ZXZfcHJpdi0+cHNyOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+ cHNyOwo+ID4gPiAgCWJvb2wgZW5hYmxlLCBwc3IyX2VuYWJsZTsKPiA+ID4gIAo+ID4gPiAtCWlm ICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9PTkNFKHBzci0+ZHApICE9IGludGVsX2RwKQo+ ID4gPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsJbXV0ZXhfbG9j aygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiA+ID4gIAo+ID4gPiAgCWVuYWJsZSA9IGNydGNfc3Rh dGUtPmhhc19wc3I7Cj4gPiA+ICAJcHNyMl9lbmFibGUgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsK PiA+ID4gQEAgLTEzNTAsMTUgKzEzNDgsMTUgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVj dCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHAsCj4gPiA+ICAJaWYgKGVuYWJsZSA9PSBwc3ItPmVu YWJsZWQgJiYgcHNyMl9lbmFibGUgPT0gcHNyLT5wc3IyX2VuYWJsZWQpIAo+ID4gPiB7Cj4gPiA+ ICAJCS8qIEZvcmNlIGEgUFNSIGV4aXQgd2hlbiBlbmFibGluZyBDUkMgdG8gYXZvaWQgQ1JDCj4g PiA+IHRpbWVvdXRzICovCj4gPiA+ICAJCWlmIChjcnRjX3N0YXRlLT5jcmNfZW5hYmxlZCAmJiBw c3ItPmVuYWJsZWQpCj4gPiA+IC0JCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChkZXZfcHJp dik7Cj4gPiA+ICsJCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChpbnRlbF9kcCk7Cj4gPiA+ ICAJCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5ICYmIHBzci0+ZW5hYmxlZCkgewo+ ID4gPiAgCQkJLyoKPiA+ID4gIAkJCSAqIEFjdGl2YXRlIFBTUiBhZ2FpbiBhZnRlciBhIGZvcmNl IGV4aXQgd2hlbgo+ID4gPiBlbmFibGluZwo+ID4gPiAgCQkJICogQ1JDIGluIG9sZGVyIGdlbnMK PiA+ID4gIAkJCSAqLwo+ID4gPiAtCQkJaWYgKCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSAmJgo+ID4g PiAtCQkJICAgICFkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cykKPiA+ID4gLQkJ CQlzY2hlZHVsZV93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOwo+ID4gPiArCQkJaWYgKCFpbnRl bF9kcC0+cHNyLmFjdGl2ZSAmJgo+ID4gPiArCQkJICAgICFpbnRlbF9kcC0+cHNyLmJ1c3lfZnJv bnRidWZmZXJfYml0cykKPiA+ID4gKwkJCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9kcC0+cHNyLndv cmspOwo+ID4gPiAgCQl9Cj4gPiA+ICAKPiA+ID4gIAkJZ290byB1bmxvY2s7Cj4gPiA+IEBAIC0x MzY4LDM0ICsxMzY2LDIzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAK PiA+ID4gKmludGVsX2RwLAo+ID4gPiAgCQlpbnRlbF9wc3JfZGlzYWJsZV9sb2NrZWQoaW50ZWxf ZHApOwo+ID4gPiAgCj4gPiA+ICAJaWYgKGVuYWJsZSkKPiA+ID4gLQkJaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUsCj4gPiA+IGNvbm5fc3RhdGUpOwo+ID4gPiAr CQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChpbnRlbF9kcCwgY3J0Y19zdGF0ZSwKPiA+ID4gY29u bl9zdGF0ZSk7Cj4gPiA+ICAKPiA+ID4gIHVubG9jazoKPiA+ID4gLQltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxv Y2spOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gLSAqIGludGVsX3Bzcl93YWl0 X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlCj4gPiA+IC0gKiBAbmV3X2NydGNfc3Rh dGU6IG5ldyBDUlRDIHN0YXRlCj4gPiA+ICsgKiBwc3Jfd2FpdF9mb3JfaWRsZSAtIHdhaXQgZm9y IFBTUjEgdG8gaWRsZQo+ID4gPiArICogQGludGVsX2RwOiBJbnRlbCBEUAo+ID4gPiAgICogQG91 dF92YWx1ZTogUFNSIHN0YXR1cyBpbiBjYXNlIG9mIGZhaWx1cmUKPiA+ID4gICAqCj4gPiA+IC0g KiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBmcm9tIHBpcGVfdXBkYXRl X3N0YXJ0KCkKPiA+ID4gd2hlcmUgaXQgaXMKPiA+ID4gLSAqIG5vdCBleHBlY3RlZCB0byByYWNl IHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLgo+ID4gPiAtICoKPiA+ID4gICAqIFJldHVybnM6 IDAgb24gc3VjY2VzcyBvciAtRVRJTUVPVVQgaWYgUFNSIHN0YXR1cyBkb2VzIG5vdCBpZGxlLgo+ ID4gPiArICoKPiA+ID4gICAqLwo+ID4gPiAtaW50IGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4gPiA+ICpuZXdfY3J0Y19zdGF0ZSwKPiA+ID4g LQkJCSAgICB1MzIgKm91dF92YWx1ZSkKPiA+ID4gK3N0YXRpYyBpbnQgcHNyX3dhaXRfZm9yX2lk bGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyCj4gPiA+ICpvdXRfdmFsdWUpCj4gPiA+ ICB7Cj4gPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19j cnRjX3N0YXRlLQo+ID4gPiA+dWFwaS5jcnRjKTsKPiA+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+ID4gLQo+ID4gPiAt CWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkIHx8ICFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikK PiA+ID4gLQkJcmV0dXJuIDA7Cj4gPiA+IC0KPiA+ID4gLQkvKiBGSVhNRTogVXBkYXRlIHRoaXMg Zm9yIFBTUjIgaWYgd2UgbmVlZCB0byB3YWl0IGZvciBpZGxlICovCj4gPiA+IC0JaWYgKFJFQURf T05DRShkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkpCj4gPiA+IC0JCXJldHVybiAwOwo+ID4g PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwo+ID4gPiAgCj4gPiA+ICAJLyoKPiA+ID4gIAkgKiBGcm9tIGJzcGVjOiBQYW5lbCBTZWxm IFJlZnJlc2ggKEJEVyspCj4gPiA+IEBAIC0xNDAzLDMyICsxMzkwLDY3IEBAIGludCBpbnRlbF9w c3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QKPiA+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUsCj4gPiA+ICAJICogZXhpdCB0cmFpbmluZyB0aW1lICsgMS41IG1zIG9mIGF1 eCBjaGFubmVsIGhhbmRzaGFrZS4gNTAgbXMKPiA+ID4gaXMKPiA+ID4gIAkgKiBkZWZlbnNpdmUg ZW5vdWdoIHRvIGNvdmVyIGV2ZXJ5dGhpbmcuCj4gPiA+ICAJICovCj4gPiA+IC0KPiA+ID4gIAly ZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdpc3RlcigmZGV2X3ByaXYtPnVuY29yZSwKPiA+ID4g LQkJCQkJIEVEUF9QU1JfU1RBVFVTKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpLAo+ ID4gPiArCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtCj4gPiA+ID5wc3IudHJhbnNjb2Rl ciksCj4gPiA+ICAJCQkJCSBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLLAo+ID4gPiAgCQkJCQkg RURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwgMiwKPiA+ID4gNTAsCj4gPiA+ICAJCQkJCSBvdXRf dmFsdWUpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1zdGF0aWMgYm9vbCBfX3Bzcl93YWl0X2Zv cl9pZGxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4g PiA+ICsvKioKPiA+ID4gKyAqIGludGVsX3Bzcl93YWl0X2Zvcl9pZGxlIC0gd2FpdCBmb3IgUFNS MSB0byBpZGxlCj4gPiA+ICsgKiBAbmV3X2NydGNfc3RhdGU6IG5ldyBDUlRDIHN0YXRlCj4gPiA+ ICsgKgo+ID4gPiArICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZnJv bSBwaXBlX3VwZGF0ZV9zdGFydCgpCj4gPiA+IHdoZXJlIGl0IGlzCj4gPiA+ICsgKiBub3QgZXhw ZWN0ZWQgdG8gcmFjZSB3aXRoIFBTUiBlbmFibGUgb3IgZGlzYWJsZS4KPiA+ID4gKyAqLwo+ID4g PiArdm9pZCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZQo+ID4gPiAqbmV3X2NydGNfc3RhdGUpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShuZXdfY3J0Y19zdGF0ZS0KPiA+ID4gPnVh cGkuY3J0Yy0+ZGV2KTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiA+ ID4gKwl1MzIgcHNyX3N0YXR1czsKPiA+ID4gKwo+ID4gPiArCWlmICghbmV3X2NydGNfc3RhdGUt Pmhhc19wc3IpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCWZvcl9lYWNoX2ludGVs X2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7Cj4gPiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gPiA+ICsKPiA+ID4gKwkJaWYg KGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+ID4gKwkJCWNvbnRpbnVlOwo+ ID4gPiArCj4gPiA+ICsJCS8qIHdoZW4gdGhlIFBTUjEgaXMgZW5hYmxlZCAqLwo+ID4gPiArCQlp ZiAoaW50ZWxfZHAtPnBzci5lbmFibGVkICYmICFpbnRlbF9kcC0KPiA+ID4gPnBzci5wc3IyX2Vu YWJsZWQpIHsKPiA+ID4gKwkJCWlmIChwc3Jfd2FpdF9mb3JfaWRsZShpbnRlbF9kcCwgJnBzcl9z dGF0dXMpKQo+ID4gPiArCQkJCWRybV9lcnIoJmRldl9wcml2LT5kcm0sCj4gPiA+ICsJCQkJCSJQ U1IgaWRsZSB0aW1lZCBvdXQgMHgleCwKPiA+ID4gYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwK PiA+ID4gKwkJCQkJcHNyX3N0YXR1cyk7Cj4gPiA+ICsKPiA+ID4gKwkJCS8qIG9ubHkgb25lIHRy YW5jb2RlciBjYW4gZW5hYmxlIFBTUjEgKi8KPiA+IAkJCUFib3ZlIGNvbW1lbnQgaXMgbm90IHRy dWUgZm9yIGR1YWwgZURQLgo+ID4gCQkJU2luY2UgVEdMIERNQyBzdXBwb3J0IGNvbnRleHQgc2F2 ZSBhbmQgcmVzdG9yZQo+ID4gb24KPiA+IAkJCWJvdGggcGlwZSBBIGFuZCBwaXBlIEIuCj4gPiA+ ICsJCQlicmVhazsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr c3RhdGljIGJvb2wgX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiA+ID4gIHsKPiA+ID4gIAlpOTE1X3JlZ190IHJlZzsKPiA+ID4gIAl1MzIgbWFz azsKPiA+ID4gIAlpbnQgZXJyOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAgCj4gPiA+IC0JaWYgKCFkZXZfcHJp di0+cHNyLmVuYWJsZWQpCj4gPiA+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpCj4gPiA+ ICAJCXJldHVybiBmYWxzZTsKPiA+ID4gIAo+ID4gPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkgewo+ID4gPiAtCQlyZWcgPSBFRFBfUFNSMl9TVEFUVVMoZGV2X3ByaXYtPnBzci50 cmFuc2NvZGVyKTsKPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiA+ ID4gKwkJcmVnID0gRURQX1BTUjJfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4g PiA+ICAJCW1hc2sgPSBFRFBfUFNSMl9TVEFUVVNfU1RBVEVfTUFTSzsKPiA+ID4gIAl9IGVsc2Ug ewo+ID4gPiAtCQlyZWcgPSBFRFBfUFNSX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIp Owo+ID4gPiArCQlyZWcgPSBFRFBfUFNSX1NUQVRVUyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIp Owo+ID4gPiAgCQltYXNrID0gRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSzsKPiA+ID4gIAl9Cj4g PiA+ICAKPiA+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsJ bXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ID4gPiAgCj4gPiA+ICAJZXJyID0g aW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIHJlZywgbWFzaywgNTApOwo+ID4gPiAg CWlmIChlcnIpCj4gPiA+IEBAIC0xNDM2LDggKzE0NTgsOCBAQCBzdGF0aWMgYm9vbCBfX3Bzcl93 YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gPiA+ICAJCQkiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS0KPiA+ ID4gZW5hYmxlXG4iKTsKPiA+ID4gIAo+ID4gPiAgCS8qIEFmdGVyIHRoZSB1bmxvY2tlZCB3YWl0 LCB2ZXJpZnkgdGhhdCBQU1IgaXMgc3RpbGwgd2FudGVkISAqLwo+ID4gPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+IC0JcmV0dXJuIGVyciA9PSAwICYmIGRldl9wcml2 LT5wc3IuZW5hYmxlZDsKPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ ID4gPiArCXJldHVybiBlcnIgPT0gMCAmJiBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7Cj4gPiA+ICB9 Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBpbnQgaW50ZWxfcHNyX2Zhc3RzZXRfZm9yY2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRldl9wcml2KQo+ID4gPiBAQCAtMTUwMywxMSArMTUy NSwxMiBAQCBzdGF0aWMgaW50IGludGVsX3Bzcl9mYXN0c2V0X2ZvcmNlKHN0cnVjdAo+ID4gPiBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4gIAlyZXR1cm4gZXJyOwo+ID4gPiAgfQo+ ID4gPiAgCj4gPiA+IC1pbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHU2NAo+ID4gPiB2YWwpCj4gPiA+ICtpbnQgaW50ZWxfcHNyX2RlYnVn X3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1NjQgdmFsKQo+ID4gPiAgewo+ID4gPiAg CWNvbnN0IHUzMiBtb2RlID0gdmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOwo+ID4gPiAg CXUzMiBvbGRfbW9kZTsKPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAgCj4gPiA+ICAJ aWYgKHZhbCAmIH4oSTkxNV9QU1JfREVCVUdfSVJRIHwgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNL KSB8fAo+ID4gPiAgCSAgICBtb2RlID4gSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMSkgewo+ID4g PiBAQCAtMTUxNSwyMSArMTUzOCwyMSBAQCBpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QK PiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCj4gPiA+ICAJCXJldHVy biAtRUlOVkFMOwo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiAtCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwlyZXQgPSBtdXRleF9sb2Nr X2ludGVycnVwdGlibGUoJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICAJaWYgKHJldCkKPiA+ ID4gIAkJcmV0dXJuIHJldDsKPiA+ID4gIAo+ID4gPiAtCW9sZF9tb2RlID0gZGV2X3ByaXYtPnBz ci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKPiA+ID4gLQlkZXZfcHJpdi0+cHNy LmRlYnVnID0gdmFsOwo+ID4gPiArCW9sZF9tb2RlID0gaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5 MTVfUFNSX0RFQlVHX01PREVfTUFTSzsKPiA+ID4gKwlpbnRlbF9kcC0+cHNyLmRlYnVnID0gdmFs Owo+ID4gPiAgCj4gPiA+ICAJLyoKPiA+ID4gIAkgKiBEbyBpdCByaWdodCBhd2F5IGlmIGl0J3Mg YWxyZWFkeSBlbmFibGVkLCBvdGhlcndpc2UgaXQgd2lsbAo+ID4gPiBiZSBkb25lCj4gPiA+ICAJ ICogd2hlbiBlbmFibGluZyB0aGUgc291cmNlLgo+ID4gPiAgCSAqLwo+ID4gPiAtCWlmIChkZXZf cHJpdi0+cHNyLmVuYWJsZWQpCj4gPiA+IC0JCXBzcl9pcnFfY29udHJvbChkZXZfcHJpdik7Cj4g PiA+ICsJaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCkKPiA+ID4gKwkJcHNyX2lycV9jb250cm9s KGludGVsX2RwKTsKPiA+ID4gIAo+ID4gPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKPiA+ID4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICAK PiA+ID4gIAlpZiAob2xkX21vZGUgIT0gbW9kZSkKPiA+ID4gIAkJcmV0ID0gaW50ZWxfcHNyX2Zh c3RzZXRfZm9yY2UoZGV2X3ByaXYpOwo+ID4gPiBAQCAtMTUzNywyOCArMTU2MCwyOCBAQCBpbnQg aW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHU2NCB2YWwpCj4gPiA+ICAJcmV0dXJuIHJldDsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAt c3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUK PiA+ID4gKmRldl9wcml2KQo+ID4gPiArc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIHsKPiA+ID4gLQlzdHJ1Y3QgaTkxNV9w c3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9 ICZpbnRlbF9kcC0+cHNyOwo+ID4gPiAgCj4gPiA+IC0JaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2Vk KHBzci0+ZHApOwo+ID4gPiArCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4g PiA+ICAJcHNyLT5zaW5rX25vdF9yZWxpYWJsZSA9IHRydWU7Cj4gPiA+ICAJLyogbGV0J3MgbWFr ZSBzdXJlIHRoYXQgc2luayBpcyBhd2FrZW4gKi8KPiA+ID4gLQlkcm1fZHBfZHBjZF93cml0ZWIo JnBzci0+ZHAtPmF1eCwgRFBfU0VUX1BPV0VSLAo+ID4gPiBEUF9TRVRfUE9XRVJfRDApOwo+ID4g PiArCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfU0VUX1BPV0VSLAo+ID4g PiBEUF9TRVRfUE9XRVJfRDApOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICBzdGF0aWMgdm9pZCBp bnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gPiA+ICB7Cj4gPiA+IC0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiA+ID4gLQkJY29udGFpbmVyX29m KHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBwc3Iud29yayk7Cj4gPiA+ICsJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9Cj4gPiA+ICsJCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVs X2RwKSwgcHNyLndvcmspOwo+ID4gPiAgCj4gPiA+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsKPiA+ID4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ID4gPiAg Cj4gPiA+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4gPiA+ICsJaWYgKCFpbnRlbF9k cC0+cHNyLmVuYWJsZWQpCj4gPiA+ICAJCWdvdG8gdW5sb2NrOwo+ID4gPiAgCj4gPiA+IC0JaWYg KFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IpKQo+ID4gPiAtCQlpbnRlbF9w c3JfaGFuZGxlX2lycShkZXZfcHJpdik7Cj4gPiA+ICsJaWYgKFJFQURfT05DRShpbnRlbF9kcC0+ cHNyLmlycV9hdXhfZXJyb3IpKQo+ID4gPiArCQlpbnRlbF9wc3JfaGFuZGxlX2lycShpbnRlbF9k cCk7Cj4gPiA+ICAKPiA+ID4gIAkvKgo+ID4gPiAgCSAqIFdlIGhhdmUgdG8gbWFrZSBzdXJlIFBT UiBpcyByZWFkeSBmb3IgcmUtZW5hYmxlCj4gPiA+IEBAIC0xNTY2LDcgKzE1ODksNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QKPiA+ID4gKndvcmspCj4g PiA+ICAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0aW1lIHRvIGdldCBmdWxseSBkaXNhYmxlZAo+ ID4gPiAgCSAqIGFuZCBiZSByZWFkeSBmb3IgcmUtZW5hYmxlLgo+ID4gPiAgCSAqLwo+ID4gPiAt CWlmICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQo+ID4gPiArCWlmICgh X19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoaW50ZWxfZHApKQo+ID4gPiAgCQlnb3RvIHVubG9j azsKPiA+ID4gIAo+ID4gPiAgCS8qCj4gPiA+IEBAIC0xNTc0LDEyICsxNTk3LDEyIEBAIHN0YXRp YyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdAo+ID4gPiB3b3JrX3N0cnVjdCAqd29yaykKPiA+ ID4gIAkgKiByZWNoZWNrLiBTaW5jZSBwc3JfZmx1c2ggZmlyc3QgY2xlYXJzIHRoaXMgYW5kIHRo ZW4KPiA+ID4gcmVzY2hlZHVsZXMgd2UKPiA+ID4gIAkgKiB3b24ndCBldmVyIG1pc3MgYSBmbHVz aCB3aGVuIGJhaWxpbmcgb3V0IGhlcmUuCj4gPiA+ICAJICovCj4gPiA+IC0JaWYgKGRldl9wcml2 LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9wcml2LQo+ID4gPiA+cHNyLmFjdGl2 ZSkKPiA+ID4gKwlpZiAoaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgfHwgaW50 ZWxfZHAtCj4gPiA+ID5wc3IuYWN0aXZlKQo+ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gIAo+ ID4gPiAtCWludGVsX3Bzcl9hY3RpdmF0ZShkZXZfcHJpdi0+cHNyLmRwKTsKPiA+ID4gKwlpbnRl bF9wc3JfYWN0aXZhdGUoaW50ZWxfZHApOwo+ID4gPiAgdW5sb2NrOgo+ID4gPiAtCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwltdXRleF91bmxvY2soJmludGVsX2Rw LT5wc3IubG9jayk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBAQCAtMTU5OCwy NyArMTYyMSwzNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhzdHJ1Y3QKPiA+ID4gd29y a19zdHJ1Y3QgKndvcmspCj4gPiA+ICB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAkJCSAgdW5zaWduZWQgZnJvbnRidWZm ZXJfYml0cywgZW51bSBmYl9vcF9vcmlnaW4KPiA+ID4gb3JpZ2luKQo+ID4gPiAgewo+ID4gPiAt CWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4gPiA+IC0JCXJldHVybjsKPiA+ID4gKwlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw Owo+ID4gPiAgCj4gPiA+IC0JaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCkKPiA+ID4gLQkJcmV0 dXJuOwo+ID4gPiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7 Cj4gPiB3aXRoIG15IHVuZGVyc3RhbmRpbmcgbG9vcGluZyBmb3IgZWFjaCBpbnRlbF9kcCBpbgo+ ID4gaW50ZWxfcHNyX3tpbnZhbGlkYXRlLGZsdXNofQo+ID4gbWF5IG5vdCBiZSBjb3JyZWN0LiBp bnRlbF9wc3Jfe2ludmFsaWRhdGUsZmx1c2h9IHdpbGwgZ2V0IGNhbGxlZCBmb3IKPiA+IGZyb250 YnVmZmVyCj4gPiB1cGRhdGVzIGFzc29jaWF0ZWQgd2l0aCBhIGZyYW1lYnVmZmVyLiBGdW5jdGlv bmFsbHkgaWYgdHdvIGVEUAo+ID4gZGlzcGxheSBoYXZlCj4gPiBkaXN0aW5jdCBmYiwgdGhlcmUg d2lsbCBiZSBkaXN0aW5jdCBjYWxsIHRvCj4gPiBpbnRlbF9wc3Jfe2ludmFsaWRhdGUsZmx1c2h9 LiAKPiBIaSwgQW5zaHVtYW4KPiBUaGFuayB5b3UgZm9yIGNoZWNrIGl0Lgo+ID4gPiAgCj4gPiA+ IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gLQlpZiAoIWRldl9wcml2 LT5wc3IuZW5hYmxlZCkgewo+ID4gPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7Cj4gPiA+IC0JCXJldHVybjsKPiA+ID4gLQl9Cj4gPiA+ICsJCWludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiArCQlpZiAoZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9P VVRQVVRfRURQKQo+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ICsJCWlmICghQ0FOX1BTUihpbnRl bF9kcCkpCj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQlpZiAob3JpZ2luID09 IE9SSUdJTl9GTElQKQo+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ICAKPiA+ID4gLQlmcm9udGJ1 ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LQo+ID4gPiA+ cHNyLnBpcGUpOwo+ID4gPiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHw9 IGZyb250YnVmZmVyX2JpdHM7Cj4gPiA+ICsJCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9j ayk7Cj4gPiA+ICsJCWlmICghaW50ZWxfZHAtPnBzci5lbmFibGVkKSB7Cj4gPiA+ICsJCQltdXRl eF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4g KwkJfQo+ID4gPiAgCj4gPiA+IC0JaWYgKGZyb250YnVmZmVyX2JpdHMpCj4gPiA+IC0JCWludGVs X3Bzcl9leGl0KGRldl9wcml2KTsKPiBFYWNoIGludGVsX2RwIHN0cnVjdHVyZSBtYWludGFpbnMg dGhlaXIgb3duIHBzciBwaXBlIGFuZCByZWxhdGVkCj4gZnJhbWVidWZmZXIgaW5mb3JtYXRpb24u Cj4gQW5kIHRoZSBhZmZlY3RlZCBmcmFtZWJ1ZmZlciBpcyBjYWxjdWxhdGVkIGJ5IHRoaXMgc2Vj dGlvbi4KSGkgR0cgLApUaGFua3MgZm9yIGV4cGxhaW5pbmcgdGhpcy4KQWdyZWUgd2l0aCB5b3Vy IGNvbW1lbnQuClRoYW5rcywKQW5zaHVtYW4uCj4gPiA+ICsJCWZyb250YnVmZmVyX2JpdHMgJj0g Cj4gPiA+IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSk7Cj4g PiA+ICsJCWludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHw9Cj4gPiA+IGZyb250 YnVmZmVyX2JpdHM7Cj4gPiA+ICAKPiA+ID4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4gPiA+IC19Cj4gPiA+ICsJCWlmIChmcm9udGJ1ZmZlcl9iaXRzKQo+ID4gPiArCQkJ aW50ZWxfcHNyX2V4aXQoaW50ZWxfZHApOwo+ID4gPiAgCj4gPiA+ICsJCW11dGV4X3VubG9jaygm aW50ZWxfZHAtPnBzci5sb2NrKTsKPiA+ID4gKwl9Cj4gPiA+ICt9Cj4gPiA+ICAvKgo+ID4gPiAg ICogV2hlbiB3ZSB3aWxsIGJlIGNvbXBsZXRlbHkgcmVseSBvbiBQU1IyIFMvVyB0cmFja2luZyBp biBmdXR1cmUsCj4gPiA+ICAgKiBpbnRlbF9wc3JfZmx1c2goKSB3aWxsIGludmFsaWRhdGUgYW5k IGZsdXNoIHRoZSBQU1IgZm9yCj4gPiA+IE9SSUdJTl9GTElQCj4gPiA+IEBAIC0xNjI2LDE1ICsx NjU3LDE1IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0Cj4gPiA+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgICogYWNjb3JkaW5nbHkgaW4gZnV0dXJlLgo+ID4g PiAgICovCj4gPiA+ICBzdGF0aWMgdm9pZAo+ID4gPiAtdGdsX2RjM2NvX2ZsdXNoKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gLQkJdW5zaWduZWQgaW50IGZyb250YnVm ZmVyX2JpdHMsIGVudW0gZmJfb3Bfb3JpZ2luCj4gPiA+IG9yaWdpbikKPiA+ID4gK3RnbF9kYzNj b19mbHVzaChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1bnNpZ25lZCBpbnQKPiA+ID4gZnJv bnRidWZmZXJfYml0cywKPiA+ID4gKwkJZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKQo+ID4gPiAg ewo+ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+ICsJbXV0ZXhf bG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiA+ID4gIAo+ID4gPiAtCWlmICghZGV2X3ByaXYt PnBzci5kYzNjb19lbmFibGVkKQo+ID4gPiArCWlmICghaW50ZWxfZHAtPnBzci5kYzNjb19lbmFi bGVkKQo+ID4gPiAgCQlnb3RvIHVubG9jazsKPiA+ID4gIAo+ID4gPiAtCWlmICghZGV2X3ByaXYt PnBzci5wc3IyX2VuYWJsZWQgfHwgIWRldl9wcml2LT5wc3IuYWN0aXZlKQo+ID4gPiArCWlmICgh aW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQgfHwgIWludGVsX2RwLT5wc3IuYWN0aXZlKQo+ID4g PiAgCQlnb3RvIHVubG9jazsKPiA+ID4gIAo+ID4gPiAgCS8qCj4gPiA+IEBAIC0xNjQyLDE1ICsx NjczLDE1IEBAIHRnbF9kYzNjb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAq ZGV2X3ByaXYsCj4gPiA+ICAJICogd2hlbiBkZWxheWVkIHdvcmsgc2NoZWR1bGVzIHRoYXQgbWVh bnMgZGlzcGxheSBoYXMgYmVlbgo+ID4gPiBpZGxlLgo+ID4gPiAgCSAqLwo+ID4gPiAgCWlmICgh KGZyb250YnVmZmVyX2JpdHMgJgo+ID4gPiAtCSAgICBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFT SyhkZXZfcHJpdi0+cHNyLnBpcGUpKSkKPiA+ID4gKwkgICAgSU5URUxfRlJPTlRCVUZGRVJfQUxM X01BU0soaW50ZWxfZHAtPnBzci5waXBlKSkpCj4gPiA+ICAJCWdvdG8gdW5sb2NrOwo+ID4gPiAg Cj4gPiA+IC0JdGdsX3BzcjJfZW5hYmxlX2RjM2NvKGRldl9wcml2KTsKPiA+ID4gLQltb2RfZGVs YXllZF93b3JrKHN5c3RlbV93cSwgJmRldl9wcml2LT5wc3IuZGMzY29fd29yaywKPiA+ID4gLQkJ CSBkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkpOwo+ID4gPiArCXRnbF9wc3IyX2VuYWJs ZV9kYzNjbyhpbnRlbF9kcCk7Cj4gPiA+ICsJbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3EsICZp bnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssCj4gPiA+ICsJCQkgaW50ZWxfZHAtPnBzci5kYzNjb19l eGl0X2RlbGF5KTsKPiA+ID4gIAo+ID4gPiAgdW5sb2NrOgo+ID4gPiAtCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3Iu bG9jayk7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBAQCAtMTY2OSw0NSArMTcw MCw1NCBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gKmRl dl9wcml2LAo+ID4gPiAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gPiAgCQkgICAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsIGVu dW0gZmJfb3Bfb3JpZ2luCj4gPiA+IG9yaWdpbikKPiA+ID4gIHsKPiA+ID4gLQlpZiAoIUNBTl9Q U1IoZGV2X3ByaXYpKQo+ID4gPiAtCQlyZXR1cm47Cj4gPiA+IC0KPiA+ID4gLQlpZiAob3JpZ2lu ID09IE9SSUdJTl9GTElQKSB7Cj4gPiA+IC0JCXRnbF9kYzNjb19mbHVzaChkZXZfcHJpdiwgZnJv bnRidWZmZXJfYml0cywgb3JpZ2luKTsKPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiAtCX0KPiA+ID4g LQo+ID4gPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gPiA+IC0JaWYgKCFk ZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKPiA+ID4gLQkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwo+ID4gPiAtCQlyZXR1cm47Cj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7Cj4gPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKPiA+ID4gKwo+ID4g PiArCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7Cj4gPiA+ICsJ CWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiArCj4gPiA+ICsJCWlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYKPiA+ID4gQ0FOX1BTUihpbnRl bF9kcCkpIHsKPiA+ID4gKwkJCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApIHsKPiA+ID4gKwkJ CQl0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAsCj4gPiA+IGZyb250YnVmZmVyX2JpdHMsIG9yaWdp bik7Cj4gPiA+ICsJCQkJY29udGludWU7Cj4gPiA+ICsJCQl9Cj4gPiA+ICsKPiA+ID4gKwkJCW11 dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICsJCQlpZiAoIWludGVsX2RwLT5w c3IuZW5hYmxlZCkgewo+ID4gPiArCQkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2Nr KTsKPiA+ID4gKwkJCQljb250aW51ZTsKPiA+ID4gKwkJCX0KPiA+ID4gKwo+ID4gPiArCQkJZnJv bnRidWZmZXJfYml0cyAmPQo+ID4gPiBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhpbnRlbF9k cC0+cHNyLnBpcGUpOwo+ID4gPiArCQkJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2Jp dHMgJj0KPiA+ID4gfmZyb250YnVmZmVyX2JpdHM7Cj4gPiA+ICsKPiA+ID4gKwkJCS8qIEJ5IGRl ZmluaXRpb24gZmx1c2ggPSBpbnZhbGlkYXRlICsgZmx1c2ggKi8KPiA+ID4gKwkJCWlmIChmcm9u dGJ1ZmZlcl9iaXRzKQo+ID4gPiArCQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGludGVs X2RwKTsKPiA+ID4gKwo+ID4gPiArCQkJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAmJiAhaW50 ZWxfZHAtCj4gPiA+ID5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQo+ID4gPiArCQkJCXNjaGVk dWxlX3dvcmsoJmludGVsX2RwLT5wc3Iud29yayk7Cj4gPiA+ICsJCQltdXRleF91bmxvY2soJmlu dGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICsJCX0KPiA+ID4gIAl9Cj4gPiA+IC0KPiA+ID4gLQlm cm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LQo+ ID4gPiA+cHNyLnBpcGUpOwo+ID4gPiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9i aXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOwo+ID4gPiAtCj4gPiA+IC0JLyogQnkgZGVmaW5pdGlv biBmbHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLwo+ID4gPiAtCWlmIChmcm9udGJ1ZmZlcl9i aXRzKQo+ID4gPiAtCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChkZXZfcHJpdik7Cj4gPiA+ IC0KPiA+ID4gLQlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlICYmICFkZXZfcHJpdi0KPiA+ID4g PnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMpCj4gPiA+IC0JCXNjaGVkdWxlX3dvcmsoJmRldl9w cml2LT5wc3Iud29yayk7Cj4gPiA+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gICAqIGludGVsX3Bzcl9pbml0IC0g SW5pdCBiYXNpYyBQU1Igd29yayBhbmQgbXV0ZXguCj4gPiA+IC0gKiBAZGV2X3ByaXY6IGk5MTUg ZGV2aWNlIHByaXZhdGUKPiA+ID4gKyAqIEBpbnRlbF9kcDogSW50ZWwgRFAKPiA+ID4gICAqCj4g PiA+IC0gKiBUaGlzIGZ1bmN0aW9uIGlzICBjYWxsZWQgb25seSBvbmNlIGF0IGRyaXZlciBsb2Fk IHRvIGluaXRpYWxpemUKPiA+ID4gYmFzaWMKPiA+ID4gLSAqIFBTUiBzdHVmZi4KPiA+ID4gKyAq IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIHRoZSBpbml0aWFsaXppbmcgY29ubmVjdG9y Lgo+ID4gPiArICogKHRoZSBpbml0aWFsaXppbmcgb2YgY29ubmVjdG9yIHRyZWF0cyB0aGUgaGFu ZGxpbmcgb2YgY29ubmVjdG9yCj4gPiA+IGNhcGFiaWxpdGllcykKPiA+ID4gKyAqIEFuZCBpdCBp bml0aWFsaXplcyBiYXNpYyBQU1Igc3R1ZmYgZm9yIGVhY2ggRFAgRW5jb2Rlci4KPiA+ID4gICAq Lwo+ID4gPiAtdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gPiA+ICt2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gPiA+ICB7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+ICsKPiA+ID4gIAlpZiAoIUhBU19QU1IoZGV2X3By aXYpKQo+ID4gPiAgCQlyZXR1cm47Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIWRldl9wcml2LT5wc3Iu c2lua19zdXBwb3J0KQo+ID4gPiArCWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpCj4g PiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ID4gPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkK PiA+ID4gQEAgLTE3MjUsMTQgKzE3NjUsMTQgQEAgdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQo+ID4gPiAqZGV2X3ByaXYpCj4gPiA+ICAJLyogU2V0IGxpbmtfc3Rh bmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovCj4gPiA+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3By aXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gPiA+ICAJCS8qIEhTVyBhbmQgQkRXIHJl cXVpcmUgd29ya2Fyb3VuZHMgdGhhdCB3ZSBkb24ndAo+ID4gPiBpbXBsZW1lbnQuICovCj4gPiA+ IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gPiA+ICsJCWludGVsX2Rw LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gPiA+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDEyKQo+ID4gPiAgCQkvKiBGb3IgbmV3IHBsYXRmb3JtcyB1cCB0byBUR0wgbGV0 J3MgcmVzcGVjdCBWQlQgYmFjawo+ID4gPiBhZ2FpbiAqLwo+ID4gPiAtCQlkZXZfcHJpdi0+cHNy Lmxpbmtfc3RhbmRieSA9IGRldl9wcml2LQo+ID4gPiA+dmJ0LnBzci5mdWxsX2xpbms7Cj4gPiA+ ICsJCWludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtCj4gPiA+ID52YnQucHNy LmZ1bGxfbGluazsKPiA+ID4gIAo+ID4gPiAtCUlOSVRfV09SSygmZGV2X3ByaXYtPnBzci53b3Jr LCBpbnRlbF9wc3Jfd29yayk7Cj4gPiA+IC0JSU5JVF9ERUxBWUVEX1dPUksoJmRldl9wcml2LT5w c3IuZGMzY29fd29yaywKPiA+ID4gdGdsX2RjM2NvX2Rpc2FibGVfd29yayk7Cj4gPiA+IC0JbXV0 ZXhfaW5pdCgmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiA+ID4gKwlJTklUX1dPUksoJmludGVsX2Rw LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwo+ID4gPiArCUlOSVRfREVMQVlFRF9XT1JLKCZp bnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssCj4gPiA+IHRnbF9kYzNjb19kaXNhYmxlX3dvcmspOwo+ ID4gPiArCW11dGV4X2luaXQoJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICB9Cj4gPiA+ICAK PiA+ID4gIHN0YXRpYyBpbnQgcHNyX2dldF9zdGF0dXNfYW5kX2Vycm9yX3N0YXR1cyhzdHJ1Y3Qg aW50ZWxfZHAKPiA+ID4gKmludGVsX2RwLAo+ID4gPiBAQCAtMTc1OCw3ICsxNzk4LDcgQEAgc3Rh dGljIHZvaWQgcHNyX2FscG1fY2hlY2soc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCkK PiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90 b19pOTE1KGludGVsX2RwKTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4ID0gJmludGVs X2RwLT5hdXg7Cj4gPiA+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsK PiA+ID4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsKPiA+ID4gIAl1 OCB2YWw7Cj4gPiA+ICAJaW50IHI7Cj4gPiA+ICAKPiA+ID4gQEAgLTE3ODUsNyArMTgyNSw3IEBA IHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxf ZHApCj4gPiA+ICBzdGF0aWMgdm9pZCBwc3JfY2FwYWJpbGl0eV9jaGFuZ2VkX2NoZWNrKHN0cnVj dCBpbnRlbF9kcAo+ID4gPiAqaW50ZWxfZHApCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gPiA+IC0Jc3Ry dWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxf cHNyICpwc3IgPSAmaW50ZWxfZHAtPnBzcjsKPiA+ID4gIAl1OCB2YWw7Cj4gPiA+ICAJaW50IHI7 Cj4gPiA+ICAKPiA+ID4gQEAgLTE4MDksMTggKzE4NDksMTggQEAgc3RhdGljIHZvaWQKPiA+ID4g cHNyX2NhcGFiaWxpdHlfY2hhbmdlZF9jaGVjayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ID4gPiAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk cF90b19pOTE1KGludGVsX2RwKTsKPiA+ID4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZf cHJpdi0+cHNyOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNy Owo+ID4gPiAgCXU4IHN0YXR1cywgZXJyb3Jfc3RhdHVzOwo+ID4gPiAgCWNvbnN0IHU4IGVycm9y cyA9IERQX1BTUl9SRkJfU1RPUkFHRV9FUlJPUiB8Cj4gPiA+ICAJCQkgIERQX1BTUl9WU0NfU0RQ X1VOQ09SUkVDVEFCTEVfRVJST1IgfAo+ID4gPiAgCQkJICBEUF9QU1JfTElOS19DUkNfRVJST1I7 Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpIHx8ICFpbnRlbF9kcF9pc19l ZHAoaW50ZWxfZHApKQo+ID4gPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkgfHwgIWludGVsX2Rw X2lzX2VkcChpbnRlbF9kcCkpCj4gPiA+ICAJCXJldHVybjsKPiA+ID4gIAo+ID4gPiAgCW11dGV4 X2xvY2soJnBzci0+bG9jayk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoIXBzci0+ZW5hYmxlZCB8fCBw c3ItPmRwICE9IGludGVsX2RwKQo+ID4gPiArCWlmICghcHNyLT5lbmFibGVkKQo+ID4gPiAgCQln b3RvIGV4aXQ7Cj4gPiA+ICAKPiA+ID4gIAlpZiAocHNyX2dldF9zdGF0dXNfYW5kX2Vycm9yX3N0 YXR1cyhpbnRlbF9kcCwgJnN0YXR1cywKPiA+ID4gJmVycm9yX3N0YXR1cykpIHsKPiA+ID4gQEAg LTE4NjMsMTUgKzE5MDMsMTQgQEAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGlu dGVsX2RwCj4gPiA+ICppbnRlbF9kcCkKPiA+ID4gIAo+ID4gPiAgYm9vbCBpbnRlbF9wc3JfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgewo+ID4gPiAtCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gPiAg CWJvb2wgcmV0Owo+ID4gPiAgCj4gPiA+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiA+ID4gKwlpZiAoIUNBTl9QU1IoaW50ZWxfZHApIHx8 ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ID4gPiAgCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ ICAKPiA+ID4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiAtCXJldCA9 IChkZXZfcHJpdi0+cHNyLmRwID09IGludGVsX2RwICYmIGRldl9wcml2LT5wc3IuZW5hYmxlZCk7 Cj4gPiA+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ID4gPiArCW11dGV4 X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gPiA+ICsJcmV0ID0gaW50ZWxfZHAtPnBzci5l bmFibGVkOwo+ID4gPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiA+ID4g IAo+ID4gPiAgCXJldHVybiByZXQ7Cj4gPiA+ICB9Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaAo+ID4gPiBpbmRleCAwYTUxNzk3OGU4YWYuLjAzZWIx OTU0N2QwOSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9wc3IuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3Bzci5oCj4gPiA+IEBAIC0xOCw3ICsxOCw3IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGU7 Cj4gPiA+ICBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGU7Cj4gPiA+ICBzdHJ1Y3QgaW50ZWxfcGxh bmU7Cj4gPiA+ICAKPiA+ID4gLSNkZWZpbmUgQ0FOX1BTUihkZXZfcHJpdikgKEhBU19QU1IoZGV2 X3ByaXYpICYmIGRldl9wcml2LQo+ID4gPiA+cHNyLnNpbmtfc3VwcG9ydCkKPiA+ID4gKyNkZWZp bmUgQ0FOX1BTUihpbnRlbF9kcCkgKEhBU19QU1IoZHBfdG9faTkxNShpbnRlbF9kcCkpICYmCj4g PiA+IGludGVsX2RwLT5wc3Iuc2lua19zdXBwb3J0KQo+ID4gPiAgdm9pZCBpbnRlbF9wc3JfaW5p dF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiAgdm9pZCBpbnRlbF9wc3Jf ZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ICAJCSAgICAgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gPiBAQCAtMjgsMjQgKzI4LDI0 IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9k cCwKPiA+ID4gIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+ID4gPiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiA+ID4gIAkJICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3RhdGUpOwo+ID4gPiAtaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1NjQKPiA+ID4gdmFsdWUpOwo+ID4gPiAraW50IGludGVsX3Bzcl9k ZWJ1Z19zZXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTY0IHZhbHVlKTsKPiA+ID4gIHZv aWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gPiAgCQkJICB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzLAo+ID4gPiAgCQkJICBlbnVt IGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ID4gPiAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiAgCQkgICAgIHVuc2lnbmVkIGZyb250 YnVmZmVyX2JpdHMsCj4gPiA+ICAJCSAgICAgZW51bSBmYl9vcF9vcmlnaW4gb3JpZ2luKTsKPiA+ ID4gLXZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKPiA+ID4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7 Cj4gPiA+ICB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+ID4gPiAgCQkJICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUpOwo+ID4gPiAtdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIKPiA+ID4gcHNyX2lpcik7Cj4gPiA+ICt2b2lkIGludGVsX3Bz cl9pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1MzIKPiA+ID4gcHNyX2lp cik7Cj4gPiA+ICB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiA+ID4gLWludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqbmV3X2NydGNfc3RhdGUsCj4gPiA+IC0JCQkgICAgdTMy ICpvdXRfdmFsdWUpOwo+ID4gPiArdm9pZCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqbmV3X2NydGNfc3RhdGUpOwo+ID4gPiAgYm9v bCBpbnRlbF9wc3JfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gIGlu dCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCj4gPiA+ICAJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gPiAtdm9pZCBp bnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoY29uc3Qgc3RydWN0Cj4gPiA+IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ID4gPiArdm9pZCBpbnRlbF9wc3IyX3Byb2dy YW1fdHJhbnNfbWFuX3Rya19jdGwoc3RydWN0IGludGVsX2RwCj4gPiA+ICppbnRlbF9kcCwKPiA+ ID4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQo+ID4gPiAqY3J0Y19zdGF0 ZSk7Cj4gPiA+ICB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2goc3RydWN0 IGludGVsX3BsYW5lICpwbGFuZSwKPiA+ID4gIAkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUKPiA+ID4gKmNydGNfc3RhdGUsCj4gPiA+ICAJCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZQo+ID4gPiAqcGxhbmVfc3RhdGUsCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gPiA+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwo+ID4gPiBpbmRleCBiN2UyMDg4MTYwNzQu Ljk0ODIzNGM2MDY0OCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9zcHJpdGUuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Nwcml0ZS5jCj4gPiA+IEBAIC04NCw3ICs4NCw2IEBAIHZvaWQgaW50ZWxfcGlw ZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0Cj4gPiA+IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlKQo+ID4gPiAgCWJvb2wgbmVlZF92bHZfZHNpX3dhID0gKElTX1ZBTExFWVZJRVco ZGV2X3ByaXYpIHx8Cj4gPiA+IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSAmJgo+ID4gPiAgCQlp bnRlbF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKTsKPiA+ ID4gIAlERUZJTkVfV0FJVCh3YWl0KTsKPiA+ID4gLQl1MzIgcHNyX3N0YXR1czsKPiA+ID4gIAo+ ID4gPiAgCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5hc3luY19mbGlwKQo+ID4gPiAgCQlyZXR1 cm47Cj4gPiA+IEBAIC0xMDksMTAgKzEwOCw3IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3Rh cnQoY29uc3Qgc3RydWN0Cj4gPiA+IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ ID4gPiAgCSAqIFZCTCBpbnRlcnJ1cHRzIHdpbGwgc3RhcnQgdGhlIFBTUiBleGl0IGFuZCBwcmV2 ZW50IGEgUFNSCj4gPiA+ICAJICogcmUtZW50cnkgYXMgd2VsbC4KPiA+ID4gIAkgKi8KPiA+ID4g LQlpZiAoaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUobmV3X2NydGNfc3RhdGUsICZwc3Jfc3RhdHVz KSkKPiA+ID4gLQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwKPiA+ID4gLQkJCSJQU1IgaWRsZSB0 aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkKPiA+ID4gZmFpbFxuIiwKPiA+ID4gLQkJ CXBzcl9zdGF0dXMpOwo+ID4gPiArCWludGVsX3Bzcl93YWl0X2Zvcl9pZGxlKG5ld19jcnRjX3N0 YXRlKTsKPiA+ID4gIAo+ID4gPiAgCWxvY2FsX2lycV9kaXNhYmxlKCk7Cj4gPiA+ICAKPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGluZGV4IDVkMDRiMjgyYzA2MC4uYTJl MzllOGFkY2JlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAg LTQ3NSw0MiArNDc1LDYgQEAgc3RydWN0IGk5MTVfZHJycyB7Cj4gPiA+ICAJZW51bSBkcnJzX3N1 cHBvcnRfdHlwZSB0eXBlOwo+ID4gPiAgfTsKPiA+ID4gIAo+ID4gPiAtc3RydWN0IGk5MTVfcHNy IHsKPiA+ID4gLQlzdHJ1Y3QgbXV0ZXggbG9jazsKPiA+ID4gLQo+ID4gPiAtI2RlZmluZSBJOTE1 X1BTUl9ERUJVR19NT0RFX01BU0sJMHgwZgo+ID4gPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19E RUZBVUxUCQkweDAwCj4gPiA+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDEK PiA+ID4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRU5BQkxFCQkweDAyCj4gPiA+IC0jZGVmaW5l IEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEJMHgwMwo+ID4gPiAtI2RlZmluZSBJOTE1X1BTUl9E RUJVR19JUlEJCTB4MTAKPiA+ID4gLQo+ID4gPiAtCXUzMiBkZWJ1ZzsKPiA+ID4gLQlib29sIHNp bmtfc3VwcG9ydDsKPiA+ID4gLQlib29sIGVuYWJsZWQ7Cj4gPiA+IC0Jc3RydWN0IGludGVsX2Rw ICpkcDsKPiA+ID4gLQllbnVtIHBpcGUgcGlwZTsKPiA+ID4gLQllbnVtIHRyYW5zY29kZXIgdHJh bnNjb2RlcjsKPiA+ID4gLQlib29sIGFjdGl2ZTsKPiA+ID4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg d29yazsKPiA+ID4gLQl1bnNpZ25lZCBidXN5X2Zyb250YnVmZmVyX2JpdHM7Cj4gPiA+IC0JYm9v bCBzaW5rX3BzcjJfc3VwcG9ydDsKPiA+ID4gLQlib29sIGxpbmtfc3RhbmRieTsKPiA+ID4gLQli b29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7Cj4gPiA+IC0JYm9vbCBwc3IyX2VuYWJsZWQ7Cj4gPiA+ IC0JYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVkOwo+ID4gPiAtCXU4IHNpbmtfc3luY19sYXRl bmN5Owo+ID4gPiAtCWt0aW1lX3QgbGFzdF9lbnRyeV9hdHRlbXB0Owo+ID4gPiAtCWt0aW1lX3Qg bGFzdF9leGl0Owo+ID4gPiAtCWJvb2wgc2lua19ub3RfcmVsaWFibGU7Cj4gPiA+IC0JYm9vbCBp cnFfYXV4X2Vycm9yOwo+ID4gPiAtCXUxNiBzdV94X2dyYW51bGFyaXR5Owo+ID4gPiAtCWJvb2wg ZGMzY29fZW5hYmxlZDsKPiA+ID4gLQl1MzIgZGMzY29fZXhpdF9kZWxheTsKPiA+ID4gLQlzdHJ1 Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dvcms7Cj4gPiA+IC0Jc3RydWN0IGRybV9kcF92c2Nfc2Rw IHZzYzsKPiA+ID4gLX07Cj4gPiA+IC0KPiA+ID4gICNkZWZpbmUgUVVJUktfTFZEU19TU0NfRElT QUJMRSAoMTw8MSkKPiA+ID4gICNkZWZpbmUgUVVJUktfSU5WRVJUX0JSSUdIVE5FU1MgKDE8PDIp Cj4gPiA+ICAjZGVmaW5lIFFVSVJLX0JBQ0tMSUdIVF9QUkVTRU5UICgxPDwzKQo+ID4gPiBAQCAt MTA0MSw4ICsxMDA1LDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ID4gPiAgCj4gPiA+ ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyBwb3dlcl9kb21haW5zOwo+ID4gPiAgCj4gPiA+ IC0Jc3RydWN0IGk5MTVfcHNyIHBzcjsKPiA+ID4gLQo+ID4gPiAgCXN0cnVjdCBpOTE1X2dwdV9l cnJvciBncHVfZXJyb3I7Cj4gPiA+ICAKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqdmx2X3BjdHg7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gPiBpbmRl eCBiMjQ1MTA5ZjczZTMuLmIwYWVlNDdjN2FkNCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gPiA+IEBAIC0yMDU3LDEwICsyMDU3LDIyIEBAIHN0YXRpYyB2b2lkIGl2Yl9k aXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdAo+ID4gPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiA+ID4gIAkJaXZiX2Vycl9pbnRfaGFuZGxlcihkZXZfcHJpdik7Cj4gPiA+ICAKPiA+ID4g IAlpZiAoZGVfaWlyICYgREVfRURQX1BTUl9JTlRfSFNXKSB7Cj4gPiA+IC0JCXUzMiBwc3JfaWly ID0gaW50ZWxfdW5jb3JlX3JlYWQoJmRldl9wcml2LT51bmNvcmUsCj4gPiA+IEVEUF9QU1JfSUlS KTsKPiA+ID4gKwkJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+ICAKPiA+ID4g LQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2LCBwc3JfaWlyKTsKPiA+ID4gLQkJaW50 ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBFRFBfUFNSX0lJUiwKPiA+ID4gcHNy X2lpcik7Cj4gPiA+ICsJCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVy KSB7Cj4gPiA+ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0KPiA+ID4gZW5jX3RvX2lu dGVsX2RwKGVuY29kZXIpOwo+ID4gPiArCj4gPiA+ICsJCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJ TlRFTF9PVVRQVVRfRURQICYmCj4gPiA+ICsJCQkgICAgQ0FOX1BTUihpbnRlbF9kcCkpIHsKPiA+ ID4gKwkJCQl1MzIgcHNyX2lpciA9Cj4gPiA+IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+ dW5jb3JlLAo+ID4gPiArCQkJCQkJCQlFRFBfUFNSCj4gPiA+IF9JSVIpOwo+ID4gPiArCj4gPiA+ ICsJCQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGludGVsX2RwLAo+ID4gPiBwc3JfaWlyKTsKPiA+ ID4gKwkJCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsCj4gPiA+ICsJCQkJ CQkgICBFRFBfUFNSX0lJUiwKPiA+ID4gcHNyX2lpcik7Cj4gPiA+ICsJCQkJYnJlYWs7Cj4gPiA+ ICsJCQl9Cj4gPiA+ICsJCX0KPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gIAlpZiAoZGVfaWlyICYg REVfQVVYX0NIQU5ORUxfQV9JVkIpCj4gPiA+IEBAIC0yMjY4LDIxICsyMjgwLDM0IEBAIGdlbjhf ZGVfbWlzY19pcnFfaGFuZGxlcihzdHJ1Y3QKPiA+ID4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiBpaXIpCj4gPiA+ICAJfQo+ID4gPiAgCj4gPiA+ICAJaWYgKGlpciAmIEdFTjhfREVf RURQX1BTUikgewo+ID4gPiArCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiA+ID4g IAkJdTMyIHBzcl9paXI7Cj4gPiA+ICAJCWk5MTVfcmVnX3QgaWlyX3JlZzsKPiA+ID4gIAo+ID4g PiAtCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikKPiA+ID4gLQkJCWlpcl9yZWcgPSBU UkFOU19QU1JfSUlSKGRldl9wcml2LQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpOwo+ID4gPiAtCQll bHNlCj4gPiA+IC0JCQlpaXJfcmVnID0gRURQX1BTUl9JSVI7Cj4gPiA+ICsJCWZvcl9lYWNoX2lu dGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBlbmNvZGVyKSB7Cj4gPiA+ICsJCQlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0KPiA+ID4gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ID4gPiAgCj4g PiA+IC0JCXBzcl9paXIgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwKPiA+ ID4gaWlyX3JlZyk7Cj4gPiA+IC0JCWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29y ZSwgaWlyX3JlZywKPiA+ID4gcHNyX2lpcik7Cj4gPiA+ICsJCQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMiAmJgo+ID4gPiBDQU5fUFNSKGludGVsX2RwKSkgewo+ID4gPiArCQkJCWlpcl9y ZWcgPSBUUkFOU19QU1JfSUlSKGludGVsX2RwLQo+ID4gPiA+cHNyLnRyYW5zY29kZXIpOwo+ID4g PiArCQkJfSBlbHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYKPiA+ ID4gKwkJCQkgICBDQU5fUFNSKGludGVsX2RwKSkgewo+ID4gPiArCQkJCWlpcl9yZWcgPSBFRFBf UFNSX0lJUjsKPiA+ID4gKwkJCX0gZWxzZSB7Cj4gPiA+ICsJCQkJY29udGludWU7Cj4gPiA+ICsJ CQl9Cj4gPiA+ICsKPiA+ID4gKwkJCXBzcl9paXIgPSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3By aXYtPnVuY29yZSwKPiA+ID4gaWlyX3JlZyk7Cj4gPiA+ICsJCQlpbnRlbF91bmNvcmVfd3JpdGUo JmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcsCj4gPiA+IHBzcl9paXIpOwo+ID4gPiArCj4gPiA+ ICsJCQlpZiAocHNyX2lpcikKPiA+ID4gKwkJCQlmb3VuZCA9IHRydWU7Cj4gPiA+ICAKPiA+ID4g LQkJaWYgKHBzcl9paXIpCj4gPiA+IC0JCQlmb3VuZCA9IHRydWU7Cj4gPiA+ICsJCQlpbnRlbF9w c3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOwo+ID4gPiAgCj4gPiA+IC0JCWludGVs X3Bzcl9pcnFfaGFuZGxlcihkZXZfcHJpdiwgcHNyX2lpcik7Cj4gPiA+ICsJCQkvKiBwcmlvciBH RU4xMiBvbmx5IGhhdmUgb25lIEVEUCBQU1IgKi8KPiA+ID4gKwkJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgMTIpCj4gPiA+ICsJCQkJYnJlYWs7Cj4gPiA+ICsJCX0KPiA+ID4gIAl9Cj4gPiA+ ICAKPiA+ID4gIAlpZiAoIWZvdW5kKQo+ID4gPiAtLSAKPiA+ID4gMi4yNS4wCj4gPiA+IApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK