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 68A55C4361B for ; Wed, 16 Dec 2020 13:39:22 +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 1E33723105 for ; Wed, 16 Dec 2020 13:39:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1E33723105 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 812906E165; Wed, 16 Dec 2020 13:39:21 +0000 (UTC) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4C0326E165 for ; Wed, 16 Dec 2020 13:39:20 +0000 (UTC) IronPort-SDR: DWxwwMyE3Q3FbdrtHV77i6hLxg6w44v2axu3fL6MWuwy4I3yZSQbhDEWM8cc1bF1yntMamF9xi ufl1c3nQ3scQ== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="259787897" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="259787897" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 05:39:19 -0800 IronPort-SDR: l7uh+nDlS5PZU4zkQ6He1Jluh9hUcHoz4GyeUViSSPCI5u8F52NgaJBdwjIVo3yaSGfsZpLa1s Bab07Q+Ikv4Q== X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="412629446" Received: from genxfsim-desktop.iind.intel.com (HELO intel.com) ([10.223.74.178]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 05:39:17 -0800 Date: Wed, 16 Dec 2020 18:56:01 +0530 From: Anshuman Gupta To: Gwan-gyeong Mun Message-ID: <20201216132600.GL9309@intel.com> References: <20201216124743.431148-1-gwan-gyeong.mun@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20201216124743.431148-1-gwan-gyeong.mun@intel.com> User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [Intel-gfx] [PATCH v7 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: jani.nikula@intel.com, 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" T24gMjAyMC0xMi0xNiBhdCAxNDo0Nzo0MiArMDIwMCwgR3dhbi1neWVvbmcgTXVuIHdyb3RlOgo+ IEl0IGlzIGEgcHJlbGltaW5hcnkgd29yayBmb3Igc3VwcG9ydGluZyBtdWx0aXBsZSBFRFAgUFNS IGFuZAo+IERQIFBhbmVsUmVwbGF5LiBBbmQgaXQgcmVmYWN0b3JzIHNpbmdsZXRvbiBQU1IgdG8g TXVsdGkgVHJhbnNjb2Rlcgo+IHN1cHBvcnRhYmxlIFBTUi4KPiBBbmQgdGhpcyBtb3ZlcyBhbmQg cmVuYW1lcyB0aGUgaTkxNV9wc3Igc3RydWN0dXJlIG9mIGRybV9pOTE1X3ByaXZhdGUncyB0bwo+ IGludGVsX2RwJ3MgaW50ZWxfcHNyIHN0cnVjdHVyZS4KPiBJdCBhbHNvIGNhdXNlcyBjaGFuZ2Vz IGluIFBTUiBpbnRlcnJ1cHQgaGFuZGxpbmcgcm91dGluZSBmb3Igc3VwcG9ydGluZwo+IG11bHRp cGxlIHRyYW5zY29kZXJzLiBCdXQgaXQgZG9lcyBub3QgY2hhbmdlIHRoZSBzY2VuYXJpbyBhbmQg dGltaW5nIG9mCj4gZW5hYmxpbmcgYW5kIGRpc2FibGluZyBQU1IuIEFuZCBpdCBub3Qgc3VwcG9y dCBtdWx0aXBsZSBwaXBlcyB3aXRoCj4gYSBzaW5nbGUgdHJhbnNjb2RlciBQU1IgY2FzZSB5ZXQu Cj4gCj4gdjI6IEZpeCBpbmRlbnRhdGlvbiBhbmQgYWRkIGNvbW1lbnRzCj4gdjM6IFJlbW92ZSBC bGFuayBsaW5lCj4gdjQ6IFJlYmFzZWQKPiB2NTogUmViYXNlZCBhbmQgQWRkcmVzc2VkIEFuc2h1 bWFuJ3MgcmV2aWV3IGNvbW1lbnQuCj4gICAgIC0gTW92ZSBjYWxsaW5nIG9mIGludGVsX3Bzcl9p bml0KCkgdG8gaW50ZWxfZHBfaW5pdF9jb25uZWN0b3IoKQo+IHY2OiBBZGRyZXNzIEFuc2h1bWFu J3MgcmV2aWV3IGNvbW1lbnRzCj4gICAgLSBSZW1vdmUgd3JvbmcgY29tbWVudHMgYW5kIGFkZCBj b21tZW50cyBmb3IgYSBsaW1pdCBvZiBzdXBwb3J0aW5nIG9mCj4gICAgICBhIHNpbmdsZSBwaXBl IFBTUgpZb3UgbWlzc2VkIHNvbWUgY29tbWVudCB0byBhZGRyZXNzIHByb3ZpZGVkIG9uIHY1LgpJ cyBkZWJ1Z2ZzIHByaW50IGluIGRycnNfc3RhdHVzX3Blcl9jcnRjIGlzIG5vdCByZXF1aXJlZCBh bnltb3JlID8KQWxzbyBwbGVhc2UgdXNlIGRybV97ZGJnLHdhcm59IGF0IGV2ZXJ5IHBsYWNlIGlu IHRoaXMgcGF0Y2guCj4gdjc6IFVwZGF0ZSBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoKSBmb3Ig c3VwcG9ydGluZyBtdWx0aXBsZSB0cmFuc2NvZGVyCj4gICAgIFBTUiBvbiBCRFcrCkNvdWxkIHlv dSBwbGVhc2Ugc2VuZCB0aGlzIGluIGEgc2VwYXJhdGUgcGF0Y2gsIHJlbW92ZSB0aGUgUE9SVF9B IApyZXN0cmljdGlvbiBzbyB0aGF0IHdlIGNhbiBzdXBwb3J0IG11bHRpcGxlIHBzciBpbnN0YW5j ZXMuCgpUaGFua3MsCkFuc2h1bWFuIEd1cHRhLiAKPiAKPiBTaWduZWQtb2ZmLWJ5OiBHd2FuLWd5 ZW9uZyBNdW4gPGd3YW4tZ3llb25nLm11bkBpbnRlbC5jb20+Cj4gQ2M6IEpvc8OpIFJvYmVydG8g ZGUgU291emEgPGpvc2Uuc291emFAaW50ZWwuY29tPgo+IENjOiBKdWhhLVBla2thIEhlaWtraWxh IDxqdWhhcGVra2EuaGVpa2tpbGFAZ21haWwuY29tPgo+IENjOiBBbnNodW1hbiBHdXB0YSA8YW5z aHVtYW4uZ3VwdGFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RkaS5jICAgICAgfCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYyAgfCAgIDQgLQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5X2RlYnVnZnMuYyAgfCAxMTEgKystLQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5X3R5cGVzLmggICAgfCAgMzggKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kcC5jICAgICAgIHwgIDIzICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfcHNyLmMgICAgICB8IDU4OCArKysrKysrKystLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaCAgICAgIHwgIDE0ICstCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMgICB8ICAgNiArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMzggLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgICAgIHwgIDQ5ICstCj4g IDEwIGZpbGVzIGNoYW5nZWQsIDQ5MCBpbnNlcnRpb25zKCspLCAzODQgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gaW5kZXggNjg2MzIz NmRmMWQwLi40Yjg3ZjcyY2I5YzAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZGRpLmMKPiBAQCAtNDMyMCw3ICs0MzIwLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2Rk aV91cGRhdGVfcGlwZV9kcChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCj4g IAlpbnRlbF9kZGlfc2V0X2RwX21zYShjcnRjX3N0YXRlLCBjb25uX3N0YXRlKTsKPiAgCj4gKwkv L1RPRE86IG1vdmUgUFNSIHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gaW50ZWxfcHNyX3VwZGF0ZSgp Cj4gKwlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwoaW50ZWxfZHAsIGNydGNf c3RhdGUpOwo+ICAJaW50ZWxfcHNyX3VwZGF0ZShpbnRlbF9kcCwgY3J0Y19zdGF0ZSwgY29ubl9z dGF0ZSk7Cj4gKwo+ICAJaW50ZWxfZHBfc2V0X2luZm9mcmFtZXMoZW5jb2RlciwgdHJ1ZSwgY3J0 Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4gIAlpbnRlbF9lZHBfZHJyc191cGRhdGUoaW50ZWxfZHAs IGNydGNfc3RhdGUpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXkuYwo+IGluZGV4IDc4NDUyZGU1ZTEyZi4uYTc1MzY0N2IwYmNiIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMTU4Njks OCArMTU4NjksNiBAQCBzdGF0aWMgdm9pZCBjb21taXRfcGlwZV9jb25maWcoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gIAo+ICAJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUpCj4gIAkJCWludGVsX3BpcGVfZmFzdHNldChvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNf c3RhdGUpOwo+IC0KPiAtCQlpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwobmV3 X2NydGNfc3RhdGUpOwo+ICAJfQo+ICAKPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNf dXBkYXRlX3dhdGVybWFya3MpCj4gQEAgLTE3ODI5LDggKzE3ODI3LDYgQEAgc3RhdGljIHZvaWQg aW50ZWxfc2V0dXBfb3V0cHV0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAkJaW50ZWxfZHZvX2luaXQoZGV2X3ByaXYpOwo+ICAJfQo+ICAKPiAtCWludGVsX3Bzcl9pbml0 KGRldl9wcml2KTsKPiAtCj4gIAlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKCZkZXZfcHJpdi0+ZHJt LCBlbmNvZGVyKSB7Cj4gIAkJZW5jb2Rlci0+YmFzZS5wb3NzaWJsZV9jcnRjcyA9Cj4gIAkJCWlu dGVsX2VuY29kZXJfcG9zc2libGVfY3J0Y3MoZW5jb2Rlcik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCj4gaW5kZXggY2Q3 ZTU1MTllZTdkLi4wNDEwNTMxNjdkN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKPiBAQCAtMjQ5LDE4ICsyNDks MTcgQEAgc3RhdGljIGludCBpOTE1X3Bzcl9zaW5rX3N0YXR1c19zaG93KHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiAgCQkic2luayBpbnRlcm5hbCBlcnJvciIsCj4gIAl9Owo+ICAJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IG0tPnByaXZhdGU7Cj4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KTsKPiAg CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ICAJCWludGVsX2F0dGFjaGVkX2RwKHRvX2lu dGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKCFDQU5f UFNSKGRldl9wcml2KSkgewo+IC0JCXNlcV9wdXRzKG0sICJQU1IgVW5zdXBwb3J0ZWRcbiIpOwo+ ICsJaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ ICAJCXJldHVybiAtRU5PREVWOwo+IC0JfQo+ICAKPiAtCWlmIChjb25uZWN0b3ItPnN0YXR1cyAh PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkp IHsKPiArCQlzZXFfcHV0cyhtLCAiUFNSIFVuc3VwcG9ydGVkXG4iKTsKPiAgCQlyZXR1cm4gLUVO T0RFVjsKPiArCX0KPiAgCj4gIAlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1 eCwgRFBfUFNSX1NUQVRVUywgJnZhbCk7Cj4gIAo+IEBAIC0yODAsMTIgKzI3OSwxMyBAQCBzdGF0 aWMgaW50IGk5MTVfcHNyX3Npbmtfc3RhdHVzX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQo+ICBERUZJTkVfU0hPV19BVFRSSUJVVEUoaTkxNV9wc3Jfc2lua19zdGF0dXMpOwo+ ICAKPiAgc3RhdGljIHZvaWQKPiAtcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gK3Bzcl9zb3VyY2Vfc3RhdHVz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgewo+ICAJ dTMyIHZhbCwgc3RhdHVzX3ZhbDsKPiAgCWNvbnN0IGNoYXIgKnN0YXR1cyA9ICJ1bmtub3duIjsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxf ZHApOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJaWYgKGlu dGVsX2RwLT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gIAkJc3RhdGljIGNvbnN0IGNoYXIgKiBjb25z dCBsaXZlX3N0YXR1c1tdID0gewo+ICAJCQkiSURMRSIsCj4gIAkJCSJDQVBUVVJFIiwKPiBAQCAt MzAwLDcgKzMwMCw3IEBAIHBzcl9zb3VyY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgc3RydWN0IHNlcV9maWxlICptKQo+ICAJCQkiVEdfT04iCj4gIAkJfTsKPiAg CQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVEUF9QU1IyX1NUQVRV UyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAgICBFRFBfUFNSMl9TVEFUVVMo aW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJc3RhdHVzX3ZhbCA9ICh2YWwgJiBFRFBf UFNSMl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KPiAgCQkJICAgICAgRURQX1BTUjJfU1RBVFVTX1NU QVRFX1NISUZUOwo+ICAJCWlmIChzdGF0dXNfdmFsIDwgQVJSQVlfU0laRShsaXZlX3N0YXR1cykp Cj4gQEAgLTMxNyw3ICszMTcsNyBAQCBwc3Jfc291cmNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHN0cnVjdCBzZXFfZmlsZSAqbSkKPiAgCQkJIlNSREVOVF9PTiIs Cj4gIAkJfTsKPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVE UF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwo+ICsJCQkJICAgIEVEUF9Q U1JfU1RBVFVTKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwo+ICAJCXN0YXR1c192YWwgPSAo dmFsICYgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSykgPj4KPiAgCQkJICAgICAgRURQX1BTUl9T VEFUVVNfU1RBVEVfU0hJRlQ7Cj4gIAkJaWYgKHN0YXR1c192YWwgPCBBUlJBWV9TSVpFKGxpdmVf c3RhdHVzKSkKPiBAQCAtMzI3LDIxICszMjcsMTggQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4gIAlzZXFf cHJpbnRmKG0sICJTb3VyY2UgUFNSIHN0YXR1czogJXMgWzB4JTA4eF1cbiIsIHN0YXR1cywgdmFs KTsKPiAgfQo+ICAKPiAtc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiArc3RhdGljIGludCBpbnRlbF9wc3Jfc3RhdHVzKHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0Jc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICsJc3RydWN0 IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAgCWNvbnN0IGNoYXIgKnN0YXR1czsKPiAgCWJvb2wgZW5hYmxlZDsKPiAgCXUzMiB2 YWw7Cj4gIAo+IC0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiAtCQlyZXR1cm4gLUVOT0RFVjsK PiAtCj4gIAlzZXFfcHJpbnRmKG0sICJTaW5rIHN1cHBvcnQ6ICVzIiwgeWVzbm8ocHNyLT5zaW5r X3N1cHBvcnQpKTsKPiAtCWlmIChwc3ItPmRwKQo+IC0JCXNlcV9wcmludGYobSwgIiBbMHglMDJ4 XSIsIHBzci0+ZHAtPnBzcl9kcGNkWzBdKTsKPiArCWlmIChwc3ItPnNpbmtfc3VwcG9ydCkKPiAr CQlzZXFfcHJpbnRmKG0sICIgWzB4JTAyeF0iLCBpbnRlbF9kcC0+cHNyX2RwY2RbMF0pOwo+ICAJ c2VxX3B1dHMobSwgIlxuIik7Cj4gIAo+ICAJaWYgKCFwc3ItPnNpbmtfc3VwcG9ydCkKPiBAQCAt MzY1LDE2ICszNjIsMTYgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCj4gIAlpZiAocHNyLT5wc3IyX2VuYWJsZWQpIHsK PiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJICAgIEVEUF9QU1IyX0NU TChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAgICBFRFBfUFNSMl9DVEwoaW50 ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJZW5hYmxlZCA9IHZhbCAmIEVEUF9QU1IyX0VO QUJMRTsKPiAgCX0gZWxzZSB7Cj4gIAkJdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwKPiAt CQkJCSAgICBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCQkJCSAg ICBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCQllbmFibGVkID0g dmFsICYgRURQX1BTUl9FTkFCTEU7Cj4gIAl9Cj4gIAlzZXFfcHJpbnRmKG0sICJTb3VyY2UgUFNS IGN0bDogJXMgWzB4JTA4eF1cbiIsCj4gIAkJICAgZW5hYmxlZGRpc2FibGVkKGVuYWJsZWQpLCB2 YWwpOwo+IC0JcHNyX3NvdXJjZV9zdGF0dXMoZGV2X3ByaXYsIG0pOwo+ICsJcHNyX3NvdXJjZV9z dGF0dXMoaW50ZWxfZHAsIG0pOwo+ICAJc2VxX3ByaW50ZihtLCAiQnVzeSBmcm9udGJ1ZmZlciBi aXRzOiAweCUwOHhcbiIsCj4gIAkJICAgcHNyLT5idXN5X2Zyb250YnVmZmVyX2JpdHMpOwo+ICAK PiBAQCAtMzgzLDcgKzM4MCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkgKi8KPiAgCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7Cj4gIAkJdmFsID0gaW50ZWxfZGVf cmVhZChkZXZfcHJpdiwKPiAtCQkJCSAgICBFRFBfUFNSX1BFUkZfQ05UKGRldl9wcml2LT5wc3Iu dHJhbnNjb2RlcikpOwo+ICsJCQkJICAgIEVEUF9QU1JfUEVSRl9DTlQoaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyKSk7Cj4gIAkJdmFsICY9IEVEUF9QU1JfUEVSRl9DTlRfTUFTSzsKPiAgCQlzZXFf cHJpbnRmKG0sICJQZXJmb3JtYW5jZSBjb3VudGVyOiAldVxuIiwgdmFsKTsKPiAgCX0KPiBAQCAt NDA0LDcgKzQwMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAkJICovCj4gIAkJZm9yIChmcmFtZSA9IDA7IGZyYW1l IDwgUFNSMl9TVV9TVEFUVVNfRlJBTUVTOyBmcmFtZSArPSAzKSB7Cj4gIAkJCXZhbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsCj4gLQkJCQkJICAgIFBTUjJfU1VfU1RBVFVTKGRldl9wcml2LT5w c3IudHJhbnNjb2RlciwgZnJhbWUpKTsKPiArCQkJCQkgICAgUFNSMl9TVV9TVEFUVVMoaW50ZWxf ZHAtPnBzci50cmFuc2NvZGVyLCBmcmFtZSkpOwo+ICAJCQlzdV9mcmFtZXNfdmFsW2ZyYW1lIC8g M10gPSB2YWw7Cj4gIAkJfQo+ICAKPiBAQCAtNDMwLDIzICs0MjcsNTcgQEAgc3RhdGljIGludCBp OTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0 IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBOVUxMOwo+ ICsKPiArCWlmICghSEFTX1BTUihkZXZfcHJpdikpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ ICsJLyogRmluZCB0aGUgZmlyc3QgRURQICovCj4gKwlmb3JfZWFjaF9pbnRlbF9kcCgmZGV2X3By aXYtPmRybSwgZW5jb2Rlcikgewo+ICsJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9FRFApIHsKPiArCQkJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoIWludGVsX2RwKQo+ICsJCXJldHVybiAt RU5PREVWOwo+ICsKPiArCXJldHVybiBpbnRlbF9wc3Jfc3RhdHVzKG0sIGludGVsX2RwKTsKPiAr fQo+ICsKPiAgc3RhdGljIGludAo+ICBpOTE1X2VkcF9wc3JfZGVidWdfc2V0KHZvaWQgKmRhdGEs IHU2NCB2YWwpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRh dGE7Cj4gIAlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAtCWludCByZXQ7Cj4gKwlpbnQgcmV0 ID0gLUVOT0RFVjsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAKPiAtCWlm ICghQ0FOX1BTUihkZXZfcHJpdikpCj4gLQkJcmV0dXJuIC1FTk9ERVY7Cj4gKwlpZiAoIUhBU19Q U1IoZGV2X3ByaXYpKQo+ICsJCXJldHVybiByZXQ7Cj4gIAo+IC0JZHJtX2RiZ19rbXMoJmRldl9w cml2LT5kcm0sICJTZXR0aW5nIFBTUiBkZWJ1ZyB0byAlbGx4XG4iLCB2YWwpOwo+ICsJZm9yX2Vh Y2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICAKPiAtCXdha2VyZWYg PSBpbnRlbF9ydW50aW1lX3BtX2dldCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0pOwo+ICsJCWlmICgh Q0FOX1BTUihpbnRlbF9kcCkpCj4gKwkJCWNvbnRpbnVlOwo+ICAKPiAtCXJldCA9IGludGVsX3Bz cl9kZWJ1Z19zZXQoZGV2X3ByaXYsIHZhbCk7Cj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0gSU5U RUxfT1VUUFVUX0VEUCkgewo+ICsJCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlNldHRp bmcgUFNSIGRlYnVnIHRvICVsbHhcbiIsIHZhbCk7Cj4gIAo+IC0JaW50ZWxfcnVudGltZV9wbV9w dXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCB3YWtlcmVmKTsKPiArCQkJd2FrZXJlZiA9IGludGVs X3J1bnRpbWVfcG1fZ2V0KCZkZXZfcHJpdi0+cnVudGltZV9wbSk7Cj4gKwo+ICsJCQkvLyBUT0RP OiBzcGxpdCB0byBlYWNoIHRyYW5zY29kZXIncyBQU1IgZGVidWcgc3RhdGUKPiArCQkJcmV0ID0g aW50ZWxfcHNyX2RlYnVnX3NldChpbnRlbF9kcCwgdmFsKTsKPiArCj4gKwkJCWludGVsX3J1bnRp bWVfcG1fcHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgd2FrZXJlZik7Cj4gKwkJfQo+ICsJfQo+ ICAKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtNDU1LDEyICs0ODYsMjUgQEAgc3RhdGljIGlu dAo+ICBpOTE1X2VkcF9wc3JfZGVidWdfZ2V0KHZvaWQgKmRhdGEsIHU2NCAqdmFsKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICsJc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gIAo+IC0JaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKPiAr CWlmICghSEFTX1BTUihkZXZfcHJpdikpCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JKnZh bCA9IFJFQURfT05DRShkZXZfcHJpdi0+cHNyLmRlYnVnKTsKPiAtCXJldHVybiAwOwo+ICsJZm9y X2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCQlpZiAo IUNBTl9QU1IoaW50ZWxfZHApKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLy8gVE9ETzogc3Bs aXQgdG8gZWFjaCB0cmFuc2NvZGVyJ3MgUFNSIGRlYnVnIHN0YXRlCj4gKwkJaWYgKGVuY29kZXIt PnR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ICsJCQkqdmFsID0gUkVBRF9PTkNFKGludGVs X2RwLT5wc3IuZGVidWcpOwo+ICsJCQlyZXR1cm4gMDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0 dXJuIC1FTk9ERVY7Cj4gIH0KPiAgCj4gIERFRklORV9TSU1QTEVfQVRUUklCVVRFKGk5MTVfZWRw X3Bzcl9kZWJ1Z19mb3BzLAo+IEBAIC0xMjM0LDkgKzEyNzgsNiBAQCBzdGF0aWMgdm9pZCBkcnJz X3N0YXR1c19wZXJfY3J0YyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCj4gIAkJLyogZGlzYWJsZV9kcnJz KCkgd2lsbCBtYWtlIGRycnMtPmRwIE5VTEwgKi8KPiAgCQlpZiAoIWRycnMtPmRwKSB7Cj4gIAkJ CXNlcV9wdXRzKG0sICJJZGxlbmVzcyBEUlJTOiBEaXNhYmxlZFxuIik7Cj4gLQkJCWlmIChkZXZf cHJpdi0+cHNyLmVuYWJsZWQpCj4gLQkJCQlzZXFfcHV0cyhtLAo+IC0JCQkJIlx0QXMgUFNSIGlz IGVuYWJsZWQsIERSUlMgaXMgbm90IGVuYWJsZWRcbiIpOwo+ICAJCQltdXRleF91bmxvY2soJmRy cnMtPm11dGV4KTsKPiAgCQkJcmV0dXJuOwo+ICAJCX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaAo+IGluZGV4IDViYzViZmJjNDU1 MS4uOTg5OWZkZGY0Yzk5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5X3R5cGVzLmgKPiBAQCAtMTMzOSw2ICsxMzM5LDQyIEBAIHN0cnVj dCBpbnRlbF9kcF9jb21wbGlhbmNlIHsKPiAgCXU4IHRlc3RfbGFuZV9jb3VudDsKPiAgfTsKPiAg Cj4gK3N0cnVjdCBpbnRlbF9wc3Igewo+ICsJLyogTXV0ZXggZm9yIFBTUiBzdGF0ZSBvZiB0aGUg dHJhbnNjb2RlciAqLwo+ICsJc3RydWN0IG11dGV4IGxvY2s7Cj4gKwo+ICsjZGVmaW5lIEk5MTVf UFNSX0RFQlVHX01PREVfTUFTSwkweDBmCj4gKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfREVGQVVM VAkJMHgwMAo+ICsjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJCTB4MDEKPiArI2RlZmlu ZSBJOTE1X1BTUl9ERUJVR19FTkFCTEUJCTB4MDIKPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19G T1JDRV9QU1IxCTB4MDMKPiArI2RlZmluZSBJOTE1X1BTUl9ERUJVR19JUlEJCTB4MTAKPiArCj4g Kwl1MzIgZGVidWc7Cj4gKwlib29sIHNpbmtfc3VwcG9ydDsKPiArCWJvb2wgZW5hYmxlZDsKPiAr CWVudW0gcGlwZSBwaXBlOwo+ICsJZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7Cj4gKwlib29s IGFjdGl2ZTsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+ICsJdW5zaWduZWQgaW50IGJ1 c3lfZnJvbnRidWZmZXJfYml0czsKPiArCWJvb2wgc2lua19wc3IyX3N1cHBvcnQ7Cj4gKwlib29s IGxpbmtfc3RhbmRieTsKPiArCWJvb2wgY29sb3JpbWV0cnlfc3VwcG9ydDsKPiArCWJvb2wgcHNy Ml9lbmFibGVkOwo+ICsJYm9vbCBwc3IyX3NlbF9mZXRjaF9lbmFibGVkOwo+ICsJdTggc2lua19z eW5jX2xhdGVuY3k7Cj4gKwlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKPiArCWt0aW1lX3Qg bGFzdF9leGl0Owo+ICsJYm9vbCBzaW5rX25vdF9yZWxpYWJsZTsKPiArCWJvb2wgaXJxX2F1eF9l cnJvcjsKPiArCXUxNiBzdV94X2dyYW51bGFyaXR5Owo+ICsJYm9vbCBkYzNjb19lbmFibGVkOwo+ ICsJdTMyIGRjM2NvX2V4aXRfZGVsYXk7Cj4gKwlzdHJ1Y3QgZGVsYXllZF93b3JrIGRjM2NvX3dv cms7Cj4gKwlzdHJ1Y3QgZHJtX2RwX3ZzY19zZHAgdnNjOwo+ICt9Owo+ICsKPiAgc3RydWN0IGlu dGVsX2RwIHsKPiAgCWk5MTVfcmVnX3Qgb3V0cHV0X3JlZzsKPiAgCXUzMiBEUDsKPiBAQCAtMTQ2 MCw2ICsxNDk2LDggQEAgc3RydWN0IGludGVsX2RwIHsKPiAgCj4gIAlib29sIGhvYmxfZmFpbGVk Owo+ICAJYm9vbCBob2JsX2FjdGl2ZTsKPiArCj4gKwlzdHJ1Y3QgaW50ZWxfcHNyIHBzcjsKPiAg fTsKPiAgCj4gIGVudW0gbHNwY29uX3ZlbmRvciB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZHAuYwo+IGluZGV4IGIyYmMwYzhjMzljNy4uNTczMGNhZDdiNmFjIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYwo+IEBAIC0yNzAyLDEyICsyNzAy LDEwIEBAIHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9wc3JfdnNjX3NkcChzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ICAJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZSwKPiAgCQkJCSAgc3RydWN0IGRybV9kcF92c2Nfc2RwICp2c2MpCj4gIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ IC0KPiAgCXZzYy0+c2RwX3R5cGUgPSBEUF9TRFBfVlNDOwo+ICAKPiAtCWlmIChkZXZfcHJpdi0+ cHNyLnBzcjJfZW5hYmxlZCkgewo+IC0JCWlmIChkZXZfcHJpdi0+cHNyLmNvbG9yaW1ldHJ5X3N1 cHBvcnQgJiYKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJCWlmIChp bnRlbF9kcC0+cHNyLmNvbG9yaW1ldHJ5X3N1cHBvcnQgJiYKPiAgCQkgICAgaW50ZWxfZHBfbmVl ZHNfdnNjX3NkcChjcnRjX3N0YXRlLCBjb25uX3N0YXRlKSkgewo+ICAJCQkvKiBbUFNSMiwgK0Nv bG9yaW1ldHJ5XSAqLwo+ICAJCQlpbnRlbF9kcF9jb21wdXRlX3ZzY19jb2xvcmltZXRyeShjcnRj X3N0YXRlLCBjb25uX3N0YXRlLAo+IEBAIC0zODQ0LDcgKzM4NDIsNyBAQCBib29sIGludGVsX2Rw X2luaXRpYWxfZmFzdHNldF9jaGVjayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAg CQlyZXR1cm4gZmFsc2U7Cj4gIAl9Cj4gIAo+IC0JaWYgKENBTl9QU1IoaTkxNSkgJiYgaW50ZWxf ZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ICsJaWYgKENBTl9QU1IoaW50ZWxfZHApICYmIGludGVs X2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKPiAgCQlkcm1fZGJnX2ttcygmaTkxNS0+ZHJtLCAiRm9y Y2luZyBmdWxsIG1vZGVzZXQgdG8gY29tcHV0ZSBQU1Igc3RhdGVcbiIpOwo+ICAJCWNydGNfc3Rh dGUtPnVhcGkubW9kZV9jaGFuZ2VkID0gdHJ1ZTsKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gQEAgLTgw NzAsNiArODA2OCwxNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9tb2Rlc2V0X3JldHJ5X3dvcmtf Zm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICAJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChjb25uZWN0b3ItPmRldik7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX3Vw ZGF0ZV9waXBlKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ICsJCQkJIHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5j X3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCWludGVsX3BhbmVsX3VwZGF0ZV9iYWNrbGln aHQoc3RhdGUsIGVuY29kZXIsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ICsJaW50ZWxfcHNy Ml9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiArfQo+ ICsKPiAgYm9vbAo+ICBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkaWdfcG9ydCwKPiAgCQkJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yKQo+IEBAIC04MTg0LDYgKzgxOTMsOCBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCwKPiAgCQkJICAgICAgICh0ZW1wICYg fjB4ZikgfCAweGQpOwo+ICAJfQo+ICAKPiArCWludGVsX3Bzcl9pbml0KGludGVsX2RwKTsKPiAr Cj4gIAlyZXR1cm4gdHJ1ZTsKPiAgCj4gIGZhaWw6Cj4gQEAgLTgyMjUsNyArODIzNiw3IEBAIGJv b2wgaW50ZWxfZHBfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlp bnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZHBfZ2V0X2NvbmZpZzsKPiAgCWludGVs X2VuY29kZXItPnN5bmNfc3RhdGUgPSBpbnRlbF9kcF9zeW5jX3N0YXRlOwo+ICAJaW50ZWxfZW5j b2Rlci0+aW5pdGlhbF9mYXN0c2V0X2NoZWNrID0gaW50ZWxfZHBfaW5pdGlhbF9mYXN0c2V0X2No ZWNrOwo+IC0JaW50ZWxfZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9wYW5lbF91cGRhdGVf YmFja2xpZ2h0Owo+ICsJaW50ZWxfZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9kcF91cGRh dGVfcGlwZTsKPiAgCWludGVsX2VuY29kZXItPnN1c3BlbmQgPSBpbnRlbF9kcF9lbmNvZGVyX3N1 c3BlbmQ7Cj4gIAlpbnRlbF9lbmNvZGVyLT5zaHV0ZG93biA9IGludGVsX2RwX2VuY29kZXJfc2h1 dGRvd247Cj4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKPiBpbmRleCBkOWEzOTVjNDg2ZDMuLmVlZDc3NTRj MmY3NCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuYwo+IEBA IC03OSwxMSArNzksMTMgQEAKPiAgICogdXNlIHBhZ2UgZmxpcHMuCj4gICAqLwo+ICAKPiAtc3Rh dGljIGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KQo+ICtzdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiAgewo+IC0Jc3dpdGNoIChpOTE1LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19N T0RFX01BU0spIHsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3Rv X2k5MTUoaW50ZWxfZHApOwo+ICsKPiArCXN3aXRjaCAoaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5 MTVfUFNSX0RFQlVHX01PREVfTUFTSykgewo+ICAJY2FzZSBJOTE1X1BTUl9ERUJVR19ERUZBVUxU Ogo+IC0JCXJldHVybiBpOTE1LT5wYXJhbXMuZW5hYmxlX3BzcjsKPiArCQlyZXR1cm4gZGV2X3By aXYtPnBhcmFtcy5lbmFibGVfcHNyOwo+ICAJY2FzZSBJOTE1X1BTUl9ERUJVR19ESVNBQkxFOgo+ ICAJCXJldHVybiBmYWxzZTsKPiAgCWRlZmF1bHQ6Cj4gQEAgLTkxLDkgKzkzLDkgQEAgc3RhdGlj IGJvb2wgcHNyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQo+ ICAJfQo+ICB9Cj4gIAo+IC1zdGF0aWMgYm9vbCBwc3IyX2dsb2JhbF9lbmFibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArc3RhdGljIGJvb2wgcHNyMl9nbG9iYWxfZW5h YmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlzd2l0Y2ggKGRldl9wcml2 LT5wc3IuZGVidWcgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spIHsKPiArCXN3aXRjaCAoaW50 ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgewo+ICAJY2FzZSBJ OTE1X1BTUl9ERUJVR19ESVNBQkxFOgo+ICAJY2FzZSBJOTE1X1BTUl9ERUJVR19GT1JDRV9QU1Ix Ogo+ICAJCXJldHVybiBmYWxzZTsKPiBAQCAtMTAyLDExICsxMDQsMTIgQEAgc3RhdGljIGJvb2wg cHNyMl9nbG9iYWxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIHBzcl9pcnFfY29udHJvbChzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gIAllbnVtIHRyYW5zY29kZXIgdHJhbnNfc2hp ZnQ7Cj4gIAl1MzIgbWFzaywgdmFsOwo+ICAJaTkxNV9yZWdfdCBpbXJfcmVnOwo+ICsJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gIAo+ ICAJLyoKPiAgCSAqIGdlbjEyKyBoYXMgcmVnaXN0ZXJzIHJlbGF0aXZlIHRvIHRyYW5zY29kZXIg YW5kIG9uZSBwZXIgdHJhbnNjb2Rlcgo+IEBAIC0xMTUsMTQgKzExOCwxNCBAQCBzdGF0aWMgdm9p ZCBwc3JfaXJxX2NvbnRyb2woc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ ICovCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewo+ICAJCXRyYW5zX3NoaWZ0 ID0gMDsKPiAtCQlpbXJfcmVnID0gVFJBTlNfUFNSX0lNUihkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpOwo+ICsJCWltcl9yZWcgPSBUUkFOU19QU1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rl cik7Cj4gIAl9IGVsc2Ugewo+IC0JCXRyYW5zX3NoaWZ0ID0gZGV2X3ByaXYtPnBzci50cmFuc2Nv ZGVyOwo+ICsJCXRyYW5zX3NoaWZ0ID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOwo+ICAJCWlt cl9yZWcgPSBFRFBfUFNSX0lNUjsKPiAgCX0KPiAgCj4gIAltYXNrID0gRURQX1BTUl9FUlJPUih0 cmFuc19zaGlmdCk7Cj4gLQlpZiAoZGV2X3ByaXYtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVH X0lSUSkKPiArCWlmIChpbnRlbF9kcC0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfSVJRKQo+ ICAJCW1hc2sgfD0gRURQX1BTUl9QT1NUX0VYSVQodHJhbnNfc2hpZnQpIHwKPiAgCQkJRURQX1BT Ul9QUkVfRU5UUlkodHJhbnNfc2hpZnQpOwo+ICAKPiBAQCAtMTcxLDM4ICsxNzQsMzcgQEAgc3Rh dGljIHZvaWQgcHNyX2V2ZW50X3ByaW50KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ ICAJCWRybV9kYmdfa21zKCZpOTE1LT5kcm0sICJcdFBTUiBkaXNhYmxlZFxuIik7Cj4gIH0KPiAg Cj4gLXZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTMyIHBzcl9paXIpCj4gK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKQo+ICB7Cj4gLQllbnVtIHRyYW5zY29k ZXIgY3B1X3RyYW5zY29kZXIgPSBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXI7Cj4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiArCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2RwLT5wc3IudHJhbnNjb2RlcjsK PiAgCWVudW0gdHJhbnNjb2RlciB0cmFuc19zaGlmdDsKPiAgCWk5MTVfcmVnX3QgaW1yX3JlZzsK PiAgCWt0aW1lX3QgdGltZV9ucyA9ICBrdGltZV9nZXQoKTsKPiAgCj4gIAlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMikgewo+ICAJCXRyYW5zX3NoaWZ0ID0gMDsKPiAtCQlpbXJfcmVnID0g VFJBTlNfUFNSX0lNUihkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwo+ICsJCWltcl9yZWcgPSBU UkFOU19QU1JfSU1SKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcik7Cj4gIAl9IGVsc2Ugewo+IC0J CXRyYW5zX3NoaWZ0ID0gZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyOwo+ICsJCXRyYW5zX3NoaWZ0 ID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOwo+ICAJCWltcl9yZWcgPSBFRFBfUFNSX0lNUjsK PiAgCX0KPiAgCj4gIAlpZiAocHNyX2lpciAmIEVEUF9QU1JfUFJFX0VOVFJZKHRyYW5zX3NoaWZ0 KSkgewo+IC0JCWRldl9wcml2LT5wc3IubGFzdF9lbnRyeV9hdHRlbXB0ID0gdGltZV9uczsKPiAt CQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKPiAtCQkJICAgICJbdHJhbnNjb2RlciAlc10g UFNSIGVudHJ5IGF0dGVtcHQgaW4gMiB2YmxhbmtzXG4iLAo+IC0JCQkgICAgdHJhbnNjb2Rlcl9u YW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gKwkJaW50ZWxfZHAtPnBzci5sYXN0X2VudHJ5X2F0dGVt cHQgPSB0aW1lX25zOwo+ICsJCURSTV9ERUJVR19LTVMoIlt0cmFuc2NvZGVyICVzXSBQU1IgZW50 cnkgYXR0ZW1wdCBpbiAyIHZibGFua3NcbiIsCj4gKwkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShj cHVfdHJhbnNjb2RlcikpOwo+ICAJfQo+ICAKPiAgCWlmIChwc3JfaWlyICYgRURQX1BTUl9QT1NU X0VYSVQodHJhbnNfc2hpZnQpKSB7Cj4gLQkJZGV2X3ByaXYtPnBzci5sYXN0X2V4aXQgPSB0aW1l X25zOwo+IC0JCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkgICAgIlt0cmFuc2Nv ZGVyICVzXSBQU1IgZXhpdCBjb21wbGV0ZWRcbiIsCj4gLQkJCSAgICB0cmFuc2NvZGVyX25hbWUo Y3B1X3RyYW5zY29kZXIpKTsKPiArCQlpbnRlbF9kcC0+cHNyLmxhc3RfZXhpdCA9IHRpbWVfbnM7 Cj4gKwkJRFJNX0RFQlVHX0tNUygiW3RyYW5zY29kZXIgJXNdIFBTUiBleGl0IGNvbXBsZXRlZFxu IiwKPiArCQkJICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gIAo+ICAJ CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAgCQkJdTMyIHZhbCA9IGludGVsX2Rl X3JlYWQoZGV2X3ByaXYsCj4gIAkJCQkJCVBTUl9FVkVOVChjcHVfdHJhbnNjb2RlcikpOwo+IC0J CQlib29sIHBzcjJfZW5hYmxlZCA9IGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkOwo+ICsJCQli b29sIHBzcjJfZW5hYmxlZCA9IGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkOwo+ICAKPiAgCQkJ aW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIFBTUl9FVkVOVChjcHVfdHJhbnNjb2RlciksCj4gIAkJ CQkgICAgICAgdmFsKTsKPiBAQCAtMjEzLDEwICsyMTUsMTAgQEAgdm9pZCBpbnRlbF9wc3JfaXJx X2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcHNyX2lpcikK PiAgCWlmIChwc3JfaWlyICYgRURQX1BTUl9FUlJPUih0cmFuc19zaGlmdCkpIHsKPiAgCQl1MzIg dmFsOwo+ICAKPiAtCQlkcm1fd2FybigmZGV2X3ByaXYtPmRybSwgIlt0cmFuc2NvZGVyICVzXSBQ U1IgYXV4IGVycm9yXG4iLAo+ICsJCURSTV9XQVJOKCJbdHJhbnNjb2RlciAlc10gUFNSIGF1eCBl cnJvclxuIiwKPiAgCQkJIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+ICAKPiAt CQlkZXZfcHJpdi0+cHNyLmlycV9hdXhfZXJyb3IgPSB0cnVlOwo+ICsJCWludGVsX2RwLT5wc3Iu aXJxX2F1eF9lcnJvciA9IHRydWU7Cj4gIAo+ICAJCS8qCj4gIAkJICogSWYgdGhpcyBpbnRlcnJ1 cHRpb24gaXMgbm90IG1hc2tlZCBpdCB3aWxsIGtlZXAKPiBAQCAtMjMwLDcgKzIzMiw3IEBAIHZv aWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIHBzcl9paXIpCj4gIAkJdmFsIHw9IEVEUF9QU1JfRVJST1IodHJhbnNfc2hpZnQpOwo+ ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBpbXJfcmVnLCB2YWwpOwo+ICAKPiAtCQlzY2hl ZHVsZV93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmspOwo+ICsJCXNjaGVkdWxlX3dvcmsoJmludGVs X2RwLT5wc3Iud29yayk7Cj4gIAl9Cj4gIH0KPiAgCj4gQEAgLTI5MSwxMiArMjkzLDYgQEAgdm9p ZCBpbnRlbF9wc3JfaW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+ICAJCXRvX2k5MTUoZHBfdG9fZGlnX3Bv cnQoaW50ZWxfZHApLT5iYXNlLmJhc2UuZGV2KTsKPiAgCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5k cCkgewo+IC0JCWRybV93YXJuKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkgIk1vcmUgdGhhbiBvbmUg ZURQIHBhbmVsIGZvdW5kLCBQU1Igc3VwcG9ydCBzaG91bGQgYmUgZXh0ZW5kZWRcbiIpOwo+IC0J CXJldHVybjsKPiAtCX0KPiAtCj4gIAlkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kcC0+YXV4LCBE UF9QU1JfU1VQUE9SVCwgaW50ZWxfZHAtPnBzcl9kcGNkLAo+ICAJCQkgc2l6ZW9mKGludGVsX2Rw LT5wc3JfZHBjZCkpOwo+ICAKPiBAQCAtMzE3LDEyICszMTMsMTAgQEAgdm9pZCBpbnRlbF9wc3Jf aW5pdF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJcmV0dXJuOwo+ICAJfQo+ ICAKPiAtCWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0ID0gdHJ1ZTsKPiAtCWRldl9wcml2LT5w c3Iuc2lua19zeW5jX2xhdGVuY3kgPQo+ICsJaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQgPSB0 cnVlOwo+ICsJaW50ZWxfZHAtPnBzci5zaW5rX3N5bmNfbGF0ZW5jeSA9Cj4gIAkJaW50ZWxfZHBf Z2V0X3Npbmtfc3luY19sYXRlbmN5KGludGVsX2RwKTsKPiAgCj4gLQlkZXZfcHJpdi0+cHNyLmRw ID0gaW50ZWxfZHA7Cj4gLQo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJgo+ICAJ ICAgIChpbnRlbF9kcC0+cHNyX2RwY2RbMF0gPT0gRFBfUFNSMl9XSVRIX1lfQ09PUkRfSVNfU1VQ UE9SVEVEKSkgewo+ICAJCWJvb2wgeV9yZXEgPSBpbnRlbF9kcC0+cHNyX2RwY2RbMV0gJgo+IEBA IC0zNDAsMTQgKzMzNCwxNCBAQCB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiAgCQkgKiBZLWNvb3JkaW5hdGUgcmVxdWlyZW1lbnQgcGFuZWxzIHdl IHdvdWxkIG5lZWQgdG8gZW5hYmxlCj4gIAkJICogR1RDIGZpcnN0Lgo+ICAJCSAqLwo+IC0JCWRl dl9wcml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPSB5X3JlcSAmJiBhbHBtOwo+ICsJCWludGVs X2RwLT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPSB5X3JlcSAmJiBhbHBtOwo+ICAJCWRybV9kYmdf a21zKCZkZXZfcHJpdi0+ZHJtLCAiUFNSMiAlc3N1cHBvcnRlZFxuIiwKPiAtCQkJICAgIGRldl9w cml2LT5wc3Iuc2lua19wc3IyX3N1cHBvcnQgPyAiIiA6ICJub3QgIik7Cj4gKwkJCSAgICBpbnRl bF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBwb3J0ID8gIiIgOiAibm90ICIpOwo+ICAKPiAtCQlpZiAo ZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkgewo+IC0JCQlkZXZfcHJpdi0+cHNyLmNv bG9yaW1ldHJ5X3N1cHBvcnQgPQo+ICsJCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtfcHNyMl9zdXBw b3J0KSB7Cj4gKwkJCWludGVsX2RwLT5wc3IuY29sb3JpbWV0cnlfc3VwcG9ydCA9Cj4gIAkJCQlp bnRlbF9kcF9nZXRfY29sb3JpbWV0cnlfc3RhdHVzKGludGVsX2RwKTsKPiAtCQkJZGV2X3ByaXYt PnBzci5zdV94X2dyYW51bGFyaXR5ID0KPiArCQkJaW50ZWxfZHAtPnBzci5zdV94X2dyYW51bGFy aXR5ID0KPiAgCQkJCWludGVsX2RwX2dldF9zdV94X2dyYW51bGFydGl5KGludGVsX2RwKTsKPiAg CQl9Cj4gIAl9Cj4gQEAgLTM3Myw3ICszNjcsNyBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX3NldHVw X2F1eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJQlVJTERfQlVHX09OKHNpemVvZihh dXhfbXNnKSA+IDIwKTsKPiAgCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYXV4X21zZyk7IGkgKz0g NCkKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwKPiAtCQkJICAgICAgIEVEUF9QU1JfQVVY X0RBVEEoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyLCBpID4+IDIpLAo+ICsJCQkgICAgICAgRURQ X1BTUl9BVVhfREFUQShpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIsIGkgPj4gMiksCj4gIAkJCSAg ICAgICBpbnRlbF9kcF9wYWNrX2F1eCgmYXV4X21zZ1tpXSwgc2l6ZW9mKGF1eF9tc2cpIC0gaSkp Owo+ICAKPiAgCWF1eF9jbG9ja19kaXZpZGVyID0gaW50ZWxfZHAtPmdldF9hdXhfY2xvY2tfZGl2 aWRlcihpbnRlbF9kcCwgMCk7Cj4gQEAgLTM4NCw3ICszNzgsNyBAQCBzdGF0aWMgdm9pZCBoc3df cHNyX3NldHVwX2F1eChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAKPiAgCS8qIFNlbGVj dCBvbmx5IHZhbGlkIGJpdHMgZm9yIFNSRF9BVVhfQ1RMICovCj4gIAlhdXhfY3RsICY9IHBzcl9h dXhfbWFzazsKPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0FVWF9DVEwoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKSwKPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBf UFNSX0FVWF9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSwKPiAgCQkgICAgICAgYXV4X2N0 bCk7Cj4gIH0KPiAgCj4gQEAgLTM5NCwxNCArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bz cl9lbmFibGVfc2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJdTggZHBjZF92YWwg PSBEUF9QU1JfRU5BQkxFOwo+ICAKPiAgCS8qIEVuYWJsZSBBTFBNIGF0IHNpbmsgZm9yIHBzcjIg Ki8KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJaWYgKGludGVsX2Rw LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gIAkJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+ YXV4LCBEUF9SRUNFSVZFUl9BTFBNX0NPTkZJRywKPiAgCQkJCSAgIERQX0FMUE1fRU5BQkxFIHwK PiAgCQkJCSAgIERQX0FMUE1fTE9DS19FUlJPUl9JUlFfSFBEX0VOQUJMRSk7Cj4gIAo+ICAJCWRw Y2RfdmFsIHw9IERQX1BTUl9FTkFCTEVfUFNSMiB8IERQX1BTUl9JUlFfSFBEX1dJVEhfQ1JDX0VS Uk9SUzsKPiAgCX0gZWxzZSB7Cj4gLQkJaWYgKGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5KQo+ ICsJCWlmIChpbnRlbF9kcC0+cHNyLmxpbmtfc3RhbmRieSkKPiAgCQkJZHBjZF92YWwgfD0gRFBf UFNSX01BSU5fTElOS19BQ1RJVkU7Cj4gIAo+ICAJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDgpCj4gQEAgLTQ2NCw3ICs0NTgsNyBAQCBzdGF0aWMgdTggcHNyX2NvbXB1dGVfaWRsZV9mcmFt ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCSAqIG9mZi1ieS1vbmUgaXNzdWUgdGhh dCBIVyBoYXMgaW4gc29tZSBjYXNlcy4KPiAgCSAqLwo+ICAJaWRsZV9mcmFtZXMgPSBtYXgoNiwg ZGV2X3ByaXYtPnZidC5wc3IuaWRsZV9mcmFtZXMpOwo+IC0JaWRsZV9mcmFtZXMgPSBtYXgoaWRs ZV9mcmFtZXMsIGRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsKPiArCWlkbGVf ZnJhbWVzID0gbWF4KGlkbGVfZnJhbWVzLCBpbnRlbF9kcC0+cHNyLnNpbmtfc3luY19sYXRlbmN5 ICsgMSk7Cj4gIAo+ICAJaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBpZGxlX2ZyYW1l cyA+IDB4ZikpCj4gIAkJaWRsZV9mcmFtZXMgPSAweGY7Cj4gQEAgLTQ4NCw3ICs0NzgsNyBAQCBz dGF0aWMgdm9pZCBoc3dfYWN0aXZhdGVfcHNyMShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+ICAJCXZhbCB8PSBFRFBfUFNSX01JTl9MSU5L X0VOVFJZX1RJTUVfOF9MSU5FUzsKPiAgCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5saW5rX3N0YW5k YnkpCj4gKwlpZiAoaW50ZWxfZHAtPnBzci5saW5rX3N0YW5kYnkpCj4gIAkJdmFsIHw9IEVEUF9Q U1JfTElOS19TVEFOREJZOwo+ICAKPiAgCXZhbCB8PSBpbnRlbF9wc3IxX2dldF90cF90aW1lKGlu dGVsX2RwKTsKPiBAQCAtNDkyLDkgKzQ4Niw5IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9w c3IxKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA4KQo+ICAJCXZhbCB8PSBFRFBfUFNSX0NSQ19FTkFCTEU7Cj4gIAo+IC0JdmFsIHw9IChp bnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpKSAmCj4gKwl2YWwgfD0gKGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1JfQ1RMKGlu dGVsX2RwLT5wc3IudHJhbnNjb2RlcikpICYKPiAgCQlFRFBfUFNSX1JFU1RPUkVfUFNSX0FDVElW RV9DVFhfTUFTSyk7Cj4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUl9DVEwoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKPiArCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgdTMyIGludGVsX3BzcjJfZ2V0X3RwX3RpbWUoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiBAQCAtNTI5LDcgKzUyMyw3IEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3Iy KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiAgCQl2YWwgfD0gRURQX1lfQ09PUkRJ TkFURV9FTkFCTEU7Cj4gIAo+IC0JdmFsIHw9IEVEUF9QU1IyX0ZSQU1FX0JFRk9SRV9TVShkZXZf cHJpdi0+cHNyLnNpbmtfc3luY19sYXRlbmN5ICsgMSk7Cj4gKwl2YWwgfD0gRURQX1BTUjJfRlJB TUVfQkVGT1JFX1NVKGludGVsX2RwLT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgKyAxKTsKPiAgCXZh bCB8PSBpbnRlbF9wc3IyX2dldF90cF90aW1lKGludGVsX2RwKTsKPiAgCj4gIAlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMikgewo+IEBAIC01NDgsNyArNTQyLDcgQEAgc3RhdGljIHZvaWQg aHN3X2FjdGl2YXRlX3BzcjIoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQl2YWwgfD0g RURQX1BTUjJfRkFTVF9XQUtFKDcpOwo+ICAJfQo+ICAKPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBz cjJfc2VsX2ZldGNoX2VuYWJsZWQpIHsKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2Zl dGNoX2VuYWJsZWQpIHsKPiAgCQkvKiBXQSAxNDA4MzMwODQ3ICovCj4gIAkJaWYgKElTX1RHTF9E SVNQX1JFVklEKGRldl9wcml2LCBUR0xfUkVWSURfQTAsIFRHTF9SRVZJRF9BMCkgfHwKPiAgCQkg ICAgSVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJLTF9SRVZJRF9BMCkpCj4g QEAgLTU1NywyMCArNTUxLDIwIEBAIHN0YXRpYyB2b2lkIGhzd19hY3RpdmF0ZV9wc3IyKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCQkgICAgIERJU19SQU1fQllQQVNTX1BTUjJfTUFO X1RSQUNLKTsKPiAgCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsCj4gLQkJCSAgICAgICBQ U1IyX01BTl9UUktfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksCj4gKwkJCSAgICAgICBQ U1IyX01BTl9UUktfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksCj4gIAkJCSAgICAgICBQ U1IyX01BTl9UUktfQ1RMX0VOQUJMRSk7Cj4gIAl9IGVsc2UgaWYgKEhBU19QU1IyX1NFTF9GRVRD SChkZXZfcHJpdikpIHsKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwKPiAtCQkJICAgICAg IFBTUjJfTUFOX1RSS19DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgMCk7Cj4gKwkJCSAg ICAgICBQU1IyX01BTl9UUktfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIDApOwo+ICAJ fQo+ICAKPiAgCS8qCj4gIAkgKiBQU1IyIEhXIGlzIGluY29ycmVjdGx5IHVzaW5nIEVEUF9QU1Jf VFAxX1RQM19TRUwgYW5kIEJTcGVjIGlzCj4gIAkgKiByZWNvbW1lbmRpbmcga2VlcCB0aGlzIGJp dCB1bnNldCB3aGlsZSBQU1IyIGlzIGVuYWJsZWQuCj4gIAkgKi8KPiAtCWludGVsX2RlX3dyaXRl KGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCAwKTsKPiAr CWludGVsX2RlX3dyaXRlKGRldl9wcml2LCBFRFBfUFNSX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXIpLCAwKTsKPiAgCj4gLQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgRURQX1BTUjJfQ1RM KGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4gKwlpbnRlbF9kZV93cml0ZShkZXZf cHJpdiwgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4gIH0K PiAgCj4gIHN0YXRpYyBib29sCj4gQEAgLTU5Myw1NSArNTg3LDU4IEBAIHN0YXRpYyB1MzIgaW50 ZWxfZ2V0X2ZyYW1lX3RpbWVfdXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSkKPiAgCQkJICAgIGRybV9tb2RlX3ZyZWZyZXNoKCZjc3RhdGUtPmh3LmFkanVzdGVkX21vZGUp KTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArc3RhdGljIHZvaWQgcHNyMl9wcm9ncmFt X2lkbGVfZnJhbWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkgICAgIHUzMiBp ZGxlX2ZyYW1lcykKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gIAl1MzIgdmFsOwo+ICAKPiAgCWlkbGVfZnJhbWVzIDw8 PSAgRURQX1BTUjJfSURMRV9GUkFNRV9TSElGVDsKPiAtCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKTsKPiArCXZhbCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5z Y29kZXIpKTsKPiAgCXZhbCAmPSB+RURQX1BTUjJfSURMRV9GUkFNRV9NQVNLOwo+ICAJdmFsIHw9 IGlkbGVfZnJhbWVzOwo+IC0JaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTChk ZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ICsJaW50ZWxfZGVfd3JpdGUoZGV2X3By aXYsIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLCB2YWwpOwo+ICB9Cj4g IAo+IC1zdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMzY28oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCB0Z2xfcHNyMl9lbmFibGVfZGMzY28oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0JcHNyMl9wcm9ncmFtX2lkbGVfZnJhbWVz KGRldl9wcml2LCAwKTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRw X3RvX2k5MTUoaW50ZWxfZHApOwo+ICsKPiArCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1lcyhpbnRl bF9kcCwgMCk7Cj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRfZGNfc3RhdGUoZGV2 X3ByaXYsIERDX1NUQVRFX0VOX0RDM0NPKTsKPiAgfQo+ICAKPiAtc3RhdGljIHZvaWQgdGdsX3Bz cjJfZGlzYWJsZV9kYzNjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0 YXRpYyB2b2lkIHRnbF9wc3IyX2Rpc2FibGVfZGMzY28oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCkKPiAgewo+IC0Jc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGRldl9wcml2LT5wc3IuZHA7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVs X2RwKTsKPiAgCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3NldF90YXJnZXRfZGNfc3RhdGUoZGV2 X3ByaXYsIERDX1NUQVRFX0VOX1VQVE9fREM2KTsKPiAtCXBzcjJfcHJvZ3JhbV9pZGxlX2ZyYW1l cyhkZXZfcHJpdiwgcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50ZWxfZHApKTsKPiArCXBzcjJf cHJvZ3JhbV9pZGxlX2ZyYW1lcyhpbnRlbF9kcCwgcHNyX2NvbXB1dGVfaWRsZV9mcmFtZXMoaW50 ZWxfZHApKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgdGdsX2RjM2NvX2Rpc2FibGVfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIHsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9Cj4gLQkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLCBw c3IuZGMzY29fd29yay53b3JrKTsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ICsJ CWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2RwKSwgcHNyLmRjM2NvX3dvcmsud29y ayk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4X2xv Y2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAkvKiBJZiBkZWxheWVkIHdvcmsgaXMgcGVuZGlu ZywgaXQgaXMgbm90IGlkbGUgKi8KPiAtCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmZGV2X3By aXYtPnBzci5kYzNjb193b3JrKSkKPiArCWlmIChkZWxheWVkX3dvcmtfcGVuZGluZygmaW50ZWxf ZHAtPnBzci5kYzNjb193b3JrKSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gLQl0Z2xfcHNyMl9k aXNhYmxlX2RjM2NvKGRldl9wcml2KTsKPiArCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oaW50ZWxf ZHApOwo+ICB1bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4g KwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIHRnbF9kaXNhbGxvd19kYzNjb19vbl9wc3IyX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCB0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9l eGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAtCWlmICghZGV2X3ByaXYtPnBz ci5kYzNjb19lbmFibGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQpCj4g IAkJcmV0dXJuOwo+ICAKPiAtCWNhbmNlbF9kZWxheWVkX3dvcmsoJmRldl9wcml2LT5wc3IuZGMz Y29fd29yayk7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrKCZpbnRlbF9kcC0+cHNyLmRjM2NvX3dv cmspOwo+ICAJLyogQmVmb3JlIFBTUjIgZXhpdCBkaXNhbGxvdyBkYzNjbyovCj4gLQl0Z2xfcHNy Ml9kaXNhYmxlX2RjM2NvKGRldl9wcml2KTsKPiArCXRnbF9wc3IyX2Rpc2FibGVfZGMzY28oaW50 ZWxfZHApOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IEBAIC03MTQsNyArNzExLDcgQEAgc3Rh dGljIGJvb2wgaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPiAgCWludCBjcnRjX3ZkaXNwbGF5ID0gY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZS5j cnRjX3ZkaXNwbGF5Owo+ICAJaW50IHBzcl9tYXhfaCA9IDAsIHBzcl9tYXhfdiA9IDAsIG1heF9i cHAgPSAwOwo+ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkKPiAr CWlmICghaW50ZWxfZHAtPnBzci5zaW5rX3BzcjJfc3VwcG9ydCkKPiAgCQlyZXR1cm4gZmFsc2U7 Cj4gIAo+ICAJaWYgKCF0cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBjcnRjX3N0YXRlLT5j cHVfdHJhbnNjb2RlcikpIHsKPiBAQCAtNzI0LDcgKzcyMSw3IEBAIHN0YXRpYyBib29sIGludGVs X3BzcjJfY29uZmlnX3ZhbGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJcmV0dXJu IGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdikp IHsKPiArCWlmICghcHNyMl9nbG9iYWxfZW5hYmxlZChpbnRlbF9kcCkpIHsKPiAgCQlkcm1fZGJn X2ttcygmZGV2X3ByaXYtPmRybSwgIlBTUjIgZGlzYWJsZWQgYnkgZmxhZ1xuIik7Cj4gIAkJcmV0 dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC03NzMsMTAgKzc3MCwxMCBAQCBzdGF0aWMgYm9vbCBpbnRl bF9wc3IyX2NvbmZpZ192YWxpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJICogb25s eSBuZWVkIHRvIHZhbGlkYXRlIHRoZSBTVSBibG9jayB3aWR0aCBpcyBhIG11bHRpcGxlIG9mCj4g IAkgKiB4IGdyYW51bGFyaXR5Lgo+ICAJICovCj4gLQlpZiAoY3J0Y19oZGlzcGxheSAlIGRldl9w cml2LT5wc3Iuc3VfeF9ncmFudWxhcml0eSkgewo+ICsJaWYgKGNydGNfaGRpc3BsYXkgJSBpbnRl bF9kcC0+cHNyLnN1X3hfZ3JhbnVsYXJpdHkpIHsKPiAgCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYt PmRybSwKPiAgCQkJICAgICJQU1IyIG5vdCBlbmFibGVkLCBoZGlzcGxheSglZCkgbm90IG11bHRp cGxlIG9mICVkXG4iLAo+IC0JCQkgICAgY3J0Y19oZGlzcGxheSwgZGV2X3ByaXYtPnBzci5zdV94 X2dyYW51bGFyaXR5KTsKPiArCQkJICAgIGNydGNfaGRpc3BsYXksIGludGVsX2RwLT5wc3Iuc3Vf eF9ncmFudWxhcml0eSk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiBAQCAtODExLDMw ICs4MDgsMjUgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiAgCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBw c3Jfc2V0dXBfdGltZTsKPiAgCj4gLQlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+IC0JCXJldHVy bjsKPiAtCj4gLQlpZiAoaW50ZWxfZHAgIT0gZGV2X3ByaXYtPnBzci5kcCkKPiArCWlmICghQ0FO X1BTUihpbnRlbF9kcCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmICghcHNyX2dsb2JhbF9lbmFi bGVkKGRldl9wcml2KSkgewo+ICsJaWYgKCFwc3JfZ2xvYmFsX2VuYWJsZWQoaW50ZWxfZHApKSB7 Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJQU1IgZGlzYWJsZWQgYnkgZmxhZ1xu Iik7Cj4gIAkJcmV0dXJuOwo+ICAJfQo+ICAKPiAgCS8qCj4gIAkgKiBIU1cgc3BlYyBleHBsaWNp dGx5IHNheXMgUFNSIGlzIHRpZWQgdG8gcG9ydCBBLgo+IC0JICogQkRXKyBwbGF0Zm9ybXMgaGF2 ZSBhIGluc3RhbmNlIG9mIFBTUiByZWdpc3RlcnMgcGVyIHRyYW5zY29kZXIgYnV0Cj4gLQkgKiBm b3Igbm93IGl0IG9ubHkgc3VwcG9ydHMgb25lIGluc3RhbmNlIG9mIFBTUiwgc28gbGV0cyBrZWVw IGl0Cj4gLQkgKiBoYXJkY29kZWQgdG8gUE9SVF9BCj4gKwkgKiBCRFcrIHBsYXRmb3JtcyBoYXZl IGEgaW5zdGFuY2Ugb2YgUFNSIHJlZ2lzdGVycyBwZXIgdHJhbnNjb2Rlci4KPiAgCSAqLwo+IC0J aWYgKGRpZ19wb3J0LT5iYXNlLnBvcnQgIT0gUE9SVF9BKSB7Cj4gKwlpZiAoSVNfSEFTV0VMTChk ZXZfcHJpdikgJiYgZGlnX3BvcnQtPmJhc2UucG9ydCAhPSBQT1JUX0EpIHsKPiAgCQlkcm1fZGJn X2ttcygmZGV2X3ByaXYtPmRybSwKPiAgCQkJICAgICJQU1IgY29uZGl0aW9uIGZhaWxlZDogUG9y dCBub3Qgc3VwcG9ydGVkXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JaWYgKGRldl9w cml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUpIHsKPiArCWlmIChpbnRlbF9kcC0+cHNyLnNpbmtf bm90X3JlbGlhYmxlKSB7Cj4gIAkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCj4gIAkJCSAg ICAiUFNSIHNpbmsgaW1wbGVtZW50YXRpb24gaXMgbm90IHJlbGlhYmxlXG4iKTsKPiAgCQlyZXR1 cm47Cj4gQEAgLTg3MCwyMyArODYyLDI0IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9hY3Rp dmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiArCWVudW0gdHJhbnNj b2RlciB0cmFuc2NvZGVyID0gaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyOwo+ICAKPiAtCWlmICh0 cmFuc2NvZGVyX2hhc19wc3IyKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpKQo+ ICsJaWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIHRyYW5zY29kZXIpKQo+ICAJCWRy bV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLAo+IC0JCQkgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJp diwgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpICYgRURQX1BTUjJfRU5B QkxFKTsKPiArCQkJICAgIGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEVEUF9QU1IyX0NUTCh0cmFu c2NvZGVyKSkgJiBFRFBfUFNSMl9FTkFCTEUpOwo+ICAKPiAgCWRybV9XQVJOX09OKCZkZXZfcHJp di0+ZHJtLAo+IC0JCSAgICBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0NUTChkZXZf cHJpdi0+cHNyLnRyYW5zY29kZXIpKSAmIEVEUF9QU1JfRU5BQkxFKTsKPiAtCWRybV9XQVJOX09O KCZkZXZfcHJpdi0+ZHJtLCBkZXZfcHJpdi0+cHNyLmFjdGl2ZSk7Cj4gLQlsb2NrZGVwX2Fzc2Vy dF9oZWxkKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsJCSAgICBpbnRlbF9kZV9yZWFkKGRldl9w cml2LCBFRFBfUFNSX0NUTCh0cmFuc2NvZGVyKSkgJiBFRFBfUFNSX0VOQUJMRSk7Cj4gKwlkcm1f V0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaW50ZWxfZHAtPnBzci5hY3RpdmUpOwo+ICsJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAgCj4gIAkvKiBwc3IxIGFuZCBw c3IyIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuKi8KPiAtCWlmIChkZXZfcHJpdi0+cHNyLnBzcjJf ZW5hYmxlZCkKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkKPiAgCQloc3dfYWN0 aXZhdGVfcHNyMihpbnRlbF9kcCk7Cj4gIAllbHNlCj4gIAkJaHN3X2FjdGl2YXRlX3BzcjEoaW50 ZWxfZHApOwo+ICAKPiAtCWRldl9wcml2LT5wc3IuYWN0aXZlID0gdHJ1ZTsKPiArCWludGVsX2Rw LT5wc3IuYWN0aXZlID0gdHJ1ZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Vu YWJsZV9zb3VyY2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiBAQCAtOTAyLDcgKzg5NSw3 IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRl dl9wcml2KSkKPiAgCQloc3dfcHNyX3NldHVwX2F1eChpbnRlbF9kcCk7Cj4gIAo+IC0JaWYgKGRl dl9wcml2LT5wc3IucHNyMl9lbmFibGVkICYmIChJU19HRU4oZGV2X3ByaXYsIDkpICYmCj4gKwlp ZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQgJiYgKElTX0dFTihkZXZfcHJpdiwgOSkgJiYK PiAgCQkJCQkgICAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpKSB7Cj4gIAkJaTkxNV9yZWdfdCBy ZWcgPSBDSElDS0VOX1RSQU5TKGNwdV90cmFuc2NvZGVyKTsKPiAgCQl1MzIgY2hpY2tlbiA9IGlu dGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gQEAgLTkyNiwxMCArOTE5LDEwIEBAIHN0YXRp YyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+ICAJCW1hc2sgfD0gRURQX1BTUl9E RUJVR19NQVNLX0RJU1BfUkVHX1dSSVRFOwo+ICAKPiAtCWludGVsX2RlX3dyaXRlKGRldl9wcml2 LCBFRFBfUFNSX0RFQlVHKGRldl9wcml2LT5wc3IudHJhbnNjb2RlciksCj4gKwlpbnRlbF9kZV93 cml0ZShkZXZfcHJpdiwgRURQX1BTUl9ERUJVRyhpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpLAo+ ICAJCSAgICAgICBtYXNrKTsKPiAgCj4gLQlwc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYpOwo+ICsJ cHNyX2lycV9jb250cm9sKGludGVsX2RwKTsKPiAgCj4gIAlpZiAoY3J0Y19zdGF0ZS0+ZGMzY29f ZXhpdGxpbmUpIHsKPiAgCQl1MzIgdmFsOwo+IEBAIC05NDcsMzAgKzk0MCwzMCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ICAKPiAgCWlmIChIQVNfUFNSX0hXX1RSQUNLSU5HKGRldl9wcml2KSAmJiBIQVNfUFNSMl9TRUxf RkVUQ0goZGV2X3ByaXYpKQo+ICAJCWludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIx XzEsIElHTk9SRV9QU1IyX0hXX1RSQUNLSU5HLAo+IC0JCQkgICAgIGRldl9wcml2LT5wc3IucHNy Ml9zZWxfZmV0Y2hfZW5hYmxlZCA/Cj4gKwkJCSAgICAgaW50ZWxfZHAtPnBzci5wc3IyX3NlbF9m ZXRjaF9lbmFibGVkID8KPiAgCQkJICAgICBJR05PUkVfUFNSMl9IV19UUkFDS0lORyA6IDApOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gK3N0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVf bG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAkJCQkgICAgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRpZ19wb3J0LT5iYXNlOwo+ICAJdTMyIHZhbDsKPiAg Cj4gLQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsK PiArCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCBpbnRlbF9kcC0+cHNyLmVuYWJsZWQpOwo+ ICAKPiAtCWRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7 Cj4gLQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7Cj4gLQlkZXZfcHJp di0+cHNyLnBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0YyktPnBpcGU7 Cj4gLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2VuYWJsZWQgPSAhIWNydGNfc3RhdGUtPmRjM2NvX2V4 aXRsaW5lOwo+IC0JZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3Ry YW5zY29kZXI7Cj4gKwlpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA9IGNydGNfc3RhdGUtPmhh c19wc3IyOwo+ICsJaW50ZWxfZHAtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwo+ICsJ aW50ZWxfZHAtPnBzci5waXBlID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMp LT5waXBlOwo+ICsJaW50ZWxfZHAtPnBzci5kYzNjb19lbmFibGVkID0gISFjcnRjX3N0YXRlLT5k YzNjb19leGl0bGluZTsKPiArCWludGVsX2RwLT5wc3IudHJhbnNjb2RlciA9IGNydGNfc3RhdGUt PmNwdV90cmFuc2NvZGVyOwo+ICAJLyogREM1L0RDNiByZXF1aXJlcyBhdCBsZWFzdCA2IGlkbGUg ZnJhbWVzICovCj4gIAl2YWwgPSB1c2Vjc190b19qaWZmaWVzKGludGVsX2dldF9mcmFtZV90aW1l X3VzKGNydGNfc3RhdGUpICogNik7Cj4gLQlkZXZfcHJpdi0+cHNyLmRjM2NvX2V4aXRfZGVsYXkg PSB2YWw7Cj4gLQlkZXZfcHJpdi0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBjcnRjX3N0 YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7Cj4gKwlpbnRlbF9kcC0+cHNyLmRjM2NvX2V4aXRf ZGVsYXkgPSB2YWw7Cj4gKwlpbnRlbF9kcC0+cHNyLnBzcjJfc2VsX2ZldGNoX2VuYWJsZWQgPSBj cnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2g7Cj4gIAo+ICAJLyoKPiAgCSAqIElmIGEg UFNSIGVycm9yIGhhcHBlbmVkIGFuZCB0aGUgZHJpdmVyIGlzIHJlbG9hZGVkLCB0aGUgRURQX1BT Ul9JSVIKPiBAQCAtOTgyLDI3ICs5NzUsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2VuYWJs ZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICovCj4gIAlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMikgewo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQo ZGV2X3ByaXYsCj4gLQkJCQkgICAgVFJBTlNfUFNSX0lJUihkZXZfcHJpdi0+cHNyLnRyYW5zY29k ZXIpKTsKPiArCQkJCSAgICBUUkFOU19QU1JfSUlSKGludGVsX2RwLT5wc3IudHJhbnNjb2Rlcikp Owo+ICAJCXZhbCAmPSBFRFBfUFNSX0VSUk9SKDApOwo+ICAJfSBlbHNlIHsKPiAgCQl2YWwgPSBp bnRlbF9kZV9yZWFkKGRldl9wcml2LCBFRFBfUFNSX0lJUik7Cj4gLQkJdmFsICY9IEVEUF9QU1Jf RVJST1IoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiArCQl2YWwgJj0gRURQX1BTUl9FUlJP UihpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwo+ICAJfQo+ICAJaWYgKHZhbCkgewo+IC0JCWRl dl9wcml2LT5wc3Iuc2lua19ub3RfcmVsaWFibGUgPSB0cnVlOwo+ICsJCWludGVsX2RwLT5wc3Iu c2lua19ub3RfcmVsaWFibGUgPSB0cnVlOwo+ICAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJt LAo+ICAJCQkgICAgIlBTUiBpbnRlcnJ1cHRpb24gZXJyb3Igc2V0LCBub3QgZW5hYmxpbmcgUFNS XG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gIAo+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sICJFbmFibGluZyBQU1Ilc1xuIiwKPiAtCQkgICAgZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJs ZWQgPyAiMiIgOiAiMSIpOwo+ICsJCSAgICBpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCA/ICIy IiA6ICIxIik7Cj4gIAlpbnRlbF9kcF9jb21wdXRlX3Bzcl92c2Nfc2RwKGludGVsX2RwLCBjcnRj X3N0YXRlLCBjb25uX3N0YXRlLAo+IC0JCQkJICAgICAmZGV2X3ByaXYtPnBzci52c2MpOwo+IC0J aW50ZWxfd3JpdGVfZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmZGV2X3ByaXYtPnBz ci52c2MpOwo+ICsJCQkJICAgICAmaW50ZWxfZHAtPnBzci52c2MpOwo+ICsJaW50ZWxfd3JpdGVf ZHBfdnNjX3NkcChlbmNvZGVyLCBjcnRjX3N0YXRlLCAmaW50ZWxfZHAtPnBzci52c2MpOwo+ICAJ aW50ZWxfcHNyX2VuYWJsZV9zaW5rKGludGVsX2RwKTsKPiAgCWludGVsX3Bzcl9lbmFibGVfc291 cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IHRy dWU7Cj4gKwlpbnRlbF9kcC0+cHNyLmVuYWJsZWQgPSB0cnVlOwo+ICAKPiAgCWludGVsX3Bzcl9h Y3RpdmF0ZShpbnRlbF9kcCk7Cj4gIH0KPiBAQCAtMTAyMSw3ICsxMDE0LDcgQEAgdm9pZCBpbnRl bF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIHsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAKPiAt CWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgZGV2X3ByaXYtPnBzci5kcCAhPSBpbnRlbF9kcCkK PiArCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAgCWlmICghY3J0 Y19zdGF0ZS0+aGFzX3BzcikKPiBAQCAtMTAyOSw0NiArMTAyMiw0NyBAQCB2b2lkIGludGVsX3Bz cl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCj4gIAlkcm1fV0FSTl9PTigm ZGV2X3ByaXYtPmRybSwgZGV2X3ByaXYtPmRycnMuZHApOwo+ICAKPiAtCW11dGV4X2xvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gLQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwg Y3J0Y19zdGF0ZSwgY29ubl9zdGF0ZSk7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICsJaW50ZWxfcHNy X2VuYWJsZV9sb2NrZWQoaW50ZWxfZHAsIGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBp bnRlbF9wc3JfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRp YyB2b2lkIGludGVsX3Bzcl9leGl0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHsKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp Owo+ICAJdTMyIHZhbDsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT5wc3IuYWN0aXZlKSB7Cj4gLQkJ aWYgKHRyYW5zY29kZXJfaGFzX3BzcjIoZGV2X3ByaXYsIGRldl9wcml2LT5wc3IudHJhbnNjb2Rl cikpIHsKPiArCWlmICghaW50ZWxfZHAtPnBzci5hY3RpdmUpIHsKPiArCQlpZiAodHJhbnNjb2Rl cl9oYXNfcHNyMihkZXZfcHJpdiwgaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSkgewo+ICAJCQl2 YWwgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LAo+IC0JCQkJCSAgICBFRFBfUFNSMl9DVEwoZGV2 X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7Cj4gKwkJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9k cC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCQkJZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sIHZh bCAmIEVEUF9QU1IyX0VOQUJMRSk7Cj4gIAkJfQo+ICAKPiAgCQl2YWwgPSBpbnRlbF9kZV9yZWFk KGRldl9wcml2LAo+IC0JCQkJICAgIEVEUF9QU1JfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2Rl cikpOwo+ICsJCQkJICAgIEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlcikpOwo+ ICAJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCB2YWwgJiBFRFBfUFNSX0VOQUJMRSk7Cj4g IAo+ICAJCXJldHVybjsKPiAgCX0KPiAgCj4gLQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJs ZWQpIHsKPiAtCQl0Z2xfZGlzYWxsb3dfZGMzY29fb25fcHNyMl9leGl0KGRldl9wcml2KTsKPiAr CWlmIChpbnRlbF9kcC0+cHNyLnBzcjJfZW5hYmxlZCkgewo+ICsJCXRnbF9kaXNhbGxvd19kYzNj b19vbl9wc3IyX2V4aXQoaW50ZWxfZHApOwo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsCj4gLQkJCQkgICAgRURQX1BTUjJfQ1RMKGRldl9wcml2LT5wc3IudHJhbnNjb2RlcikpOwo+ ICsJCQkJICAgIEVEUF9QU1IyX0NUTChpbnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpKTsKPiAgCQlk cm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgISh2YWwgJiBFRFBfUFNSMl9FTkFCTEUpKTsKPiAg CQl2YWwgJj0gfkVEUF9QU1IyX0VOQUJMRTsKPiAgCQlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwK PiAtCQkJICAgICAgIEVEUF9QU1IyX0NUTChkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpLCB2YWwp Owo+ICsJCQkgICAgICAgRURQX1BTUjJfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZh bCk7Cj4gIAl9IGVsc2Ugewo+ICAJCXZhbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsCj4gLQkJ CQkgICAgRURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSk7Cj4gKwkJCQkgICAg RURQX1BTUl9DVEwoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKSk7Cj4gIAkJZHJtX1dBUk5fT04o JmRldl9wcml2LT5kcm0sICEodmFsICYgRURQX1BTUl9FTkFCTEUpKTsKPiAgCQl2YWwgJj0gfkVE UF9QU1JfRU5BQkxFOwo+ICAJCWludGVsX2RlX3dyaXRlKGRldl9wcml2LAo+IC0JCQkgICAgICAg RURQX1BTUl9DVEwoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKSwgdmFsKTsKPiArCQkJICAgICAg IEVEUF9QU1JfQ1RMKGludGVsX2RwLT5wc3IudHJhbnNjb2RlciksIHZhbCk7Cj4gIAl9Cj4gLQlk ZXZfcHJpdi0+cHNyLmFjdGl2ZSA9IGZhbHNlOwo+ICsJaW50ZWxfZHAtPnBzci5hY3RpdmUgPSBm YWxzZTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gQEAgLTEwNzcsMjEgKzEwNzEsMjEgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIAlpOTE1X3JlZ190IHBzcl9zdGF0dXM7Cj4gIAl1MzIgcHNyX3N0YXR1c19tYXNrOwo+ICAK PiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlsb2NrZGVw X2Fzc2VydF9oZWxkKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAtCWlmICghZGV2X3ByaXYt PnBzci5lbmFibGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpCj4gIAkJcmV0dXJu Owo+ICAKPiAgCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLCAiRGlzYWJsaW5nIFBTUiVzXG4i LAo+IC0JCSAgICBkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCA/ICIyIiA6ICIxIik7Cj4gKwkJ ICAgIGludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKPiAgCj4gLQlpbnRl bF9wc3JfZXhpdChkZXZfcHJpdik7Cj4gKwlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7Cj4gIAo+ IC0JaWYgKGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gLQkJcHNyX3N0YXR1cyA9IEVE UF9QU1IyX1NUQVRVUyhkZXZfcHJpdi0+cHNyLnRyYW5zY29kZXIpOwo+ICsJaWYgKGludGVsX2Rw LT5wc3IucHNyMl9lbmFibGVkKSB7Cj4gKwkJcHNyX3N0YXR1cyA9IEVEUF9QU1IyX1NUQVRVUyhp bnRlbF9kcC0+cHNyLnRyYW5zY29kZXIpOwo+ICAJCXBzcl9zdGF0dXNfbWFzayA9IEVEUF9QU1Iy X1NUQVRVU19TVEFURV9NQVNLOwo+ICAJfSBlbHNlIHsKPiAtCQlwc3Jfc3RhdHVzID0gRURQX1BT Ul9TVEFUVVMoZGV2X3ByaXYtPnBzci50cmFuc2NvZGVyKTsKPiArCQlwc3Jfc3RhdHVzID0gRURQ X1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKPiAgCQlwc3Jfc3RhdHVzX21h c2sgPSBFRFBfUFNSX1NUQVRVU19TVEFURV9NQVNLOwo+ICAJfQo+ICAKPiBAQCAtMTEwMSw3ICsx MDk1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIlRpbWVkIG91dCB3 YWl0aW5nIFBTUiBpZGxlIHN0YXRlXG4iKTsKPiAgCj4gIAkvKiBXQSAxNDA4MzMwODQ3ICovCj4g LQlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCj4gKwlpZiAoaW50 ZWxfZHAtPnBzci5wc3IyX3NlbF9mZXRjaF9lbmFibGVkICYmCj4gIAkgICAgKElTX1RHTF9ESVNQ X1JFVklEKGRldl9wcml2LCBUR0xfUkVWSURfQTAsIFRHTF9SRVZJRF9BMCkgfHwKPiAgCSAgICAg SVNfUktMX1JFVklEKGRldl9wcml2LCBSS0xfUkVWSURfQTAsIFJLTF9SRVZJRF9BMCkpKQo+ICAJ CWludGVsX2RlX3JtdyhkZXZfcHJpdiwgQ0hJQ0tFTl9QQVIxXzEsCj4gQEAgLTExMTAsMTAgKzEx MDQsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCj4gIAlkcm1fZHBf ZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOwo+ICAKPiAtCWlm IChkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCkKPiArCWlmIChpbnRlbF9kcC0+cHNyLnBzcjJf ZW5hYmxlZCkKPiAgCQlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1JFQ0VJ VkVSX0FMUE1fQ09ORklHLCAwKTsKPiAgCj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBmYWxz ZTsKPiArCWludGVsX2RwLT5wc3IuZW5hYmxlZCA9IGZhbHNlOwo+ICB9Cj4gIAo+ICAvKioKPiBA QCAtMTEzMSwyMCArMTEyNSwyMiBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gIAlpZiAoIW9sZF9jcnRjX3N0YXRlLT5oYXNfcHNyKQo+ICAJCXJl dHVybjsKPiAgCj4gLQlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGRl dl9wcml2KSkpCj4gKwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFDQU5fUFNSKGlu dGVsX2RwKSkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4gKwltdXRleF9sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAgCWludGVs X3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cHNyLmxvY2spOwo+IC0JY2FuY2VsX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci53b3Jr KTsKPiAtCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmZGV2X3ByaXYtPnBzci5kYzNjb193b3Jr KTsKPiArCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiArCWNhbmNlbF93b3Jr X3N5bmMoJmludGVsX2RwLT5wc3Iud29yayk7Cj4gKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMo JmludGVsX2RwLT5wc3IuZGMzY29fd29yayk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIHBzcl9m b3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiArc3RhdGljIHZvaWQgcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gKwo+ICAJaWYgKElTX1RJR0VSTEFLRShkZXZfcHJpdikp Cj4gIAkJLyoKPiAgCQkgKiBXcml0ZXMgdG8gQ1VSU1VSRkxJVkUgaW4gVEdMIGFyZSBjYXVzaW5n IElPTU1VIGVycm9ycyBhbmQKPiBAQCAtMTE1OCw3ICsxMTU0LDcgQEAgc3RhdGljIHZvaWQgcHNy X2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJCSAqIFNvIHVzaW5nIHRoaXMgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlzc3VlIGlzIHJv b3QgY2F1c2VkCj4gIAkJICogYW5kIGEgYmV0dGVyIGZpeCBpcyBmb3VuZC4KPiAgCQkgKi8KPiAt CQlpbnRlbF9wc3JfZXhpdChkZXZfcHJpdik7Cj4gKwkJaW50ZWxfcHNyX2V4aXQoaW50ZWxfZHAp Owo+ICAJZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAJCS8qCj4gIAkJICog RGlzcGxheSBXQSAjMDg4NDogc2tsKwo+IEBAIC0xMTY5LDEzICsxMTY1LDEzIEBAIHN0YXRpYyB2 b2lkIHBzcl9mb3JjZV9od190cmFja2luZ19leGl0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgCQkgKiBidXQgaXQgbWFrZXMgbW9yZSBzZW5zZSB3cml0ZSB0byB0aGUgY3Vy cmVudCBhY3RpdmUKPiAgCQkgKiBwaXBlLgo+ICAJCSAqLwo+IC0JCWludGVsX2RlX3dyaXRlKGRl dl9wcml2LCBDVVJTVVJGTElWRShkZXZfcHJpdi0+cHNyLnBpcGUpLCAwKTsKPiArCQlpbnRlbF9k ZV93cml0ZShkZXZfcHJpdiwgQ1VSU1VSRkxJVkUoaW50ZWxfZHAtPnBzci5waXBlKSwgMCk7Cj4g IAllbHNlCj4gIAkJLyoKPiAgCQkgKiBBIHdyaXRlIHRvIENVUlNVUkZMSVZFIGRvIG5vdCBjYXVz ZSBIVyB0cmFja2luZyB0byBleGl0IFBTUgo+ICAJCSAqIG9uIG9sZGVyIGdlbnMgc28gZG9pbmcg dGhlIG1hbnVhbCBleGl0IGluc3RlYWQuCj4gIAkJICovCj4gLQkJaW50ZWxfcHNyX2V4aXQoZGV2 X3ByaXYpOwo+ICsJCWludGVsX3Bzcl9leGl0KGludGVsX2RwKTsKPiAgfQo+ICAKPiAgdm9pZCBp bnRlbF9wc3IyX3Byb2dyYW1fcGxhbmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUsCj4gQEAgLTEyMTUsMTEgKzEyMTEsMTEgQEAgdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fcGxh bmVfc2VsX2ZldGNoKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAlpbnRlbF9kZV93cml0 ZV9mdyhkZXZfcHJpdiwgUExBTkVfU0VMX0ZFVENIX1NJWkUocGlwZSwgcGxhbmUtPmlkKSwgdmFs KTsKPiAgfQo+ICAKPiAtdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJhbnNfbWFuX3Rya19jdGwo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gK3ZvaWQgaW50ZWxf cHNyMl9wcm9ncmFtX3RyYW5zX21hbl90cmtfY3RsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg ewo+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUt PnVhcGkuY3J0Yyk7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNydGMtPmJhc2UuZGV2KTsKPiAtCXN0cnVjdCBpOTE1X3BzciAqcHNyID0gJmRldl9wcml2 LT5wc3I7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1 KGludGVsX2RwKTsKPiArCXN0cnVjdCBpbnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ ICAKPiAgCWlmICghSEFTX1BTUjJfU0VMX0ZFVENIKGRldl9wcml2KSB8fAo+ICAJICAgICFjcnRj X3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0Y2gpCj4gQEAgLTEzMzYsMTMgKzEzMzIsMTMgQEAg dm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJICAg ICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHAp Owo+IC0Jc3RydWN0IGk5MTVfcHNyICpwc3IgPSAmZGV2X3ByaXYtPnBzcjsKPiArCXN0cnVjdCBp bnRlbF9wc3IgKnBzciA9ICZpbnRlbF9kcC0+cHNyOwo+ICAJYm9vbCBlbmFibGUsIHBzcjJfZW5h YmxlOwo+ICAKPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikgfHwgUkVBRF9PTkNFKHBzci0+ZHAp ICE9IGludGVsX2RwKQo+ICsJaWYgKCFDQU5fUFNSKGludGVsX2RwKSkKPiAgCQlyZXR1cm47Cj4g IAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4X2xvY2soJmlu dGVsX2RwLT5wc3IubG9jayk7Cj4gIAo+ICAJZW5hYmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjsK PiAgCXBzcjJfZW5hYmxlID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7Cj4gQEAgLTEzNTAsMTUgKzEz NDYsMTUgQEAgdm9pZCBpbnRlbF9wc3JfdXBkYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs Cj4gIAlpZiAoZW5hYmxlID09IHBzci0+ZW5hYmxlZCAmJiBwc3IyX2VuYWJsZSA9PSBwc3ItPnBz cjJfZW5hYmxlZCkgewo+ICAJCS8qIEZvcmNlIGEgUFNSIGV4aXQgd2hlbiBlbmFibGluZyBDUkMg dG8gYXZvaWQgQ1JDIHRpbWVvdXRzICovCj4gIAkJaWYgKGNydGNfc3RhdGUtPmNyY19lbmFibGVk ICYmIHBzci0+ZW5hYmxlZCkKPiAtCQkJcHNyX2ZvcmNlX2h3X3RyYWNraW5nX2V4aXQoZGV2X3By aXYpOwo+ICsJCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChpbnRlbF9kcCk7Cj4gIAkJZWxz ZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkgJiYgcHNyLT5lbmFibGVkKSB7Cj4gIAkJCS8q Cj4gIAkJCSAqIEFjdGl2YXRlIFBTUiBhZ2FpbiBhZnRlciBhIGZvcmNlIGV4aXQgd2hlbiBlbmFi bGluZwo+ICAJCQkgKiBDUkMgaW4gb2xkZXIgZ2Vucwo+ICAJCQkgKi8KPiAtCQkJaWYgKCFkZXZf cHJpdi0+cHNyLmFjdGl2ZSAmJgo+IC0JCQkgICAgIWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1 ZmZlcl9iaXRzKQo+IC0JCQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsKPiAr CQkJaWYgKCFpbnRlbF9kcC0+cHNyLmFjdGl2ZSAmJgo+ICsJCQkgICAgIWludGVsX2RwLT5wc3Iu YnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQo+ICsJCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfZHAtPnBz ci53b3JrKTsKPiAgCQl9Cj4gIAo+ICAJCWdvdG8gdW5sb2NrOwo+IEBAIC0xMzY4LDM0ICsxMzY0 LDIzIEBAIHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ICAJCWludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4gIAo+ICAJaWYgKGVuYWJs ZSkKPiAtCQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJpdiwgY3J0Y19zdGF0ZSwgY29u bl9zdGF0ZSk7Cj4gKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoaW50ZWxfZHAsIGNydGNfc3Rh dGUsIGNvbm5fc3RhdGUpOwo+ICAKPiAgdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICB9 Cj4gIAo+ICAvKioKPiAtICogaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUgLSB3YWl0IGZvciBQU1Ix IHRvIGlkbGUKPiAtICogQG5ld19jcnRjX3N0YXRlOiBuZXcgQ1JUQyBzdGF0ZQo+ICsgKiBwc3Jf d2FpdF9mb3JfaWRsZSAtIHdhaXQgZm9yIFBTUjEgdG8gaWRsZQo+ICsgKiBAaW50ZWxfZHA6IElu dGVsIERQCj4gICAqIEBvdXRfdmFsdWU6IFBTUiBzdGF0dXMgaW4gY2FzZSBvZiBmYWlsdXJlCj4g ICAqCj4gLSAqIFRoaXMgZnVuY3Rpb24gaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZyb20gcGlw ZV91cGRhdGVfc3RhcnQoKSB3aGVyZSBpdCBpcwo+IC0gKiBub3QgZXhwZWN0ZWQgdG8gcmFjZSB3 aXRoIFBTUiBlbmFibGUgb3IgZGlzYWJsZS4KPiAtICoKPiAgICogUmV0dXJuczogMCBvbiBzdWNj ZXNzIG9yIC1FVElNRU9VVCBpZiBQU1Igc3RhdHVzIGRvZXMgbm90IGlkbGUuCj4gKyAqCj4gICAq Lwo+IC1pbnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlLAo+IC0JCQkgICAgdTMyICpvdXRfdmFsdWUpCj4gK3N0YXRp YyBpbnQgcHNyX3dhaXRfZm9yX2lkbGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTMyICpv dXRfdmFsdWUpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0 YyhuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+IC0KPiAtCWlmICghZGV2X3By aXYtPnBzci5lbmFibGVkIHx8ICFuZXdfY3J0Y19zdGF0ZS0+aGFzX3BzcikKPiAtCQlyZXR1cm4g MDsKPiAtCj4gLQkvKiBGSVhNRTogVXBkYXRlIHRoaXMgZm9yIFBTUjIgaWYgd2UgbmVlZCB0byB3 YWl0IGZvciBpZGxlICovCj4gLQlpZiAoUkVBRF9PTkNFKGRldl9wcml2LT5wc3IucHNyMl9lbmFi bGVkKSkKPiAtCQlyZXR1cm4gMDsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAKPiAgCS8qCj4gIAkgKiBGcm9tIGJzcGVjOiBQ YW5lbCBTZWxmIFJlZnJlc2ggKEJEVyspCj4gQEAgLTE0MDMsMzIgKzEzODgsNjQgQEAgaW50IGlu dGVsX3Bzcl93YWl0X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdf Y3J0Y19zdGF0ZSwKPiAgCSAqIGV4aXQgdHJhaW5pbmcgdGltZSArIDEuNSBtcyBvZiBhdXggY2hh bm5lbCBoYW5kc2hha2UuIDUwIG1zIGlzCj4gIAkgKiBkZWZlbnNpdmUgZW5vdWdoIHRvIGNvdmVy IGV2ZXJ5dGhpbmcuCj4gIAkgKi8KPiAtCj4gIAlyZXR1cm4gX19pbnRlbF93YWl0X2Zvcl9yZWdp c3RlcigmZGV2X3ByaXYtPnVuY29yZSwKPiAtCQkJCQkgRURQX1BTUl9TVEFUVVMoZGV2X3ByaXYt PnBzci50cmFuc2NvZGVyKSwKPiArCQkJCQkgRURQX1BTUl9TVEFUVVMoaW50ZWxfZHAtPnBzci50 cmFuc2NvZGVyKSwKPiAgCQkJCQkgRURQX1BTUl9TVEFUVVNfU1RBVEVfTUFTSywKPiAgCQkJCQkg RURQX1BTUl9TVEFUVVNfU1RBVEVfSURMRSwgMiwgNTAsCj4gIAkJCQkJIG91dF92YWx1ZSk7Cj4g IH0KPiAgCj4gLXN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArLyoqCj4gKyAqIGludGVsX3Bzcl93YWl0X2Zv cl9pZGxlIC0gd2FpdCBmb3IgUFNSMSB0byBpZGxlCj4gKyAqIEBuZXdfY3J0Y19zdGF0ZTogbmV3 IENSVEMgc3RhdGUKPiArICoKPiArICogVGhpcyBmdW5jdGlvbiBpcyBleHBlY3RlZCB0byBiZSBj YWxsZWQgZnJvbSBwaXBlX3VwZGF0ZV9zdGFydCgpIHdoZXJlIGl0IGlzCj4gKyAqIG5vdCBleHBl Y3RlZCB0byByYWNlIHdpdGggUFNSIGVuYWJsZSBvciBkaXNhYmxlLgo+ICsgKi8KPiArdm9pZCBp bnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUobmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyOwo+ICsJdTMyIHBzcl9zdGF0dXM7Cj4gKwo+ICsJaWYgKCFuZXdf Y3J0Y19zdGF0ZS0+aGFzX3BzcikKPiArCQlyZXR1cm47Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxf ZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwo+ICsKPiArCQlpZiAoZW5jb2Rlci0+dHlw ZSAhPSBJTlRFTF9PVVRQVVRfRURQKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJLyogd2hlbiB0 aGUgUFNSMSBpcyBlbmFibGVkICovCj4gKwkJaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCAmJiAh aW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiArCQkJaWYgKHBzcl93YWl0X2Zvcl9pZGxl KGludGVsX2RwLCAmcHNyX3N0YXR1cykpCj4gKwkJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLAo+ ICsJCQkJCSJQU1IgaWRsZSB0aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxu IiwKPiArCQkJCQlwc3Jfc3RhdHVzKTsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyBi b29sIF9fcHNyX3dhaXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIHsKPiAgCWk5MTVfcmVnX3QgcmVnOwo+ICAJdTMyIG1hc2s7Cj4gIAlpbnQgZXJyOwo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7 Cj4gIAo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4gKwlpZiAoIWludGVsX2RwLT5w c3IuZW5hYmxlZCkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+IC0JaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9lbmFibGVkKSB7Cj4gLQkJcmVnID0gRURQX1BTUjJfU1RBVFVTKGRldl9wcml2LT5wc3Iu dHJhbnNjb2Rlcik7Cj4gKwlpZiAoaW50ZWxfZHAtPnBzci5wc3IyX2VuYWJsZWQpIHsKPiArCQly ZWcgPSBFRFBfUFNSMl9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKPiAgCQltYXNr ID0gRURQX1BTUjJfU1RBVFVTX1NUQVRFX01BU0s7Cj4gIAl9IGVsc2Ugewo+IC0JCXJlZyA9IEVE UF9QU1JfU1RBVFVTKGRldl9wcml2LT5wc3IudHJhbnNjb2Rlcik7Cj4gKwkJcmVnID0gRURQX1BT Ul9TVEFUVVMoaW50ZWxfZHAtPnBzci50cmFuc2NvZGVyKTsKPiAgCQltYXNrID0gRURQX1BTUl9T VEFUVVNfU1RBVEVfTUFTSzsKPiAgCX0KPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5w c3IubG9jayk7Cj4gKwltdXRleF91bmxvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAo+ICAJ ZXJyID0gaW50ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIHJlZywgbWFzaywgNTApOwo+ ICAJaWYgKGVycikKPiBAQCAtMTQzNiw4ICsxNDUzLDggQEAgc3RhdGljIGJvb2wgX19wc3Jfd2Fp dF9mb3JfaWRsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ CQkiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFBTUiBJZGxlIGZvciByZS1lbmFibGVcbiIpOwo+ICAK PiAgCS8qIEFmdGVyIHRoZSB1bmxvY2tlZCB3YWl0LCB2ZXJpZnkgdGhhdCBQU1IgaXMgc3RpbGwg d2FudGVkISAqLwo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCXJldHVy biBlcnIgPT0gMCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Cj4gKwltdXRleF9sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOwo+ICsJcmV0dXJuIGVyciA9PSAwICYmIGludGVsX2RwLT5wc3IuZW5h YmxlZDsKPiAgfQo+ICAKPiAgc3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gQEAgLTE1MDMsMTEgKzE1MjAsMTIgQEAg c3RhdGljIGludCBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4gIAo+IC1pbnQgaW50ZWxfcHNyX2Rl YnVnX3NldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCB2YWwpCj4gK2lu dCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU2NCB2YWwp Cj4gIHsKPiAgCWNvbnN0IHUzMiBtb2RlID0gdmFsICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNL Owo+ICAJdTMyIG9sZF9tb2RlOwo+ICAJaW50IHJldDsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ICAKPiAgCWlmICh2YWwgJiB+ KEk5MTVfUFNSX0RFQlVHX0lSUSB8IEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgfHwKPiAgCSAg ICBtb2RlID4gSTkxNV9QU1JfREVCVUdfRk9SQ0VfUFNSMSkgewo+IEBAIC0xNTE1LDIxICsxNTMz LDIxIEBAIGludCBpbnRlbF9wc3JfZGVidWdfc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTY0IHZhbCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAgCj4gLQlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAlpZiAo cmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC0Jb2xkX21vZGUgPSBkZXZfcHJpdi0+cHNyLmRl YnVnICYgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLOwo+IC0JZGV2X3ByaXYtPnBzci5kZWJ1ZyA9 IHZhbDsKPiArCW9sZF9tb2RlID0gaW50ZWxfZHAtPnBzci5kZWJ1ZyAmIEk5MTVfUFNSX0RFQlVH X01PREVfTUFTSzsKPiArCWludGVsX2RwLT5wc3IuZGVidWcgPSB2YWw7Cj4gIAo+ICAJLyoKPiAg CSAqIERvIGl0IHJpZ2h0IGF3YXkgaWYgaXQncyBhbHJlYWR5IGVuYWJsZWQsIG90aGVyd2lzZSBp dCB3aWxsIGJlIGRvbmUKPiAgCSAqIHdoZW4gZW5hYmxpbmcgdGhlIHNvdXJjZS4KPiAgCSAqLwo+ IC0JaWYgKGRldl9wcml2LT5wc3IuZW5hYmxlZCkKPiAtCQlwc3JfaXJxX2NvbnRyb2woZGV2X3By aXYpOwo+ICsJaWYgKGludGVsX2RwLT5wc3IuZW5hYmxlZCkKPiArCQlwc3JfaXJxX2NvbnRyb2wo aW50ZWxfZHApOwo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAr CW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAgCj4gIAlpZiAob2xkX21vZGUg IT0gbW9kZSkKPiAgCQlyZXQgPSBpbnRlbF9wc3JfZmFzdHNldF9mb3JjZShkZXZfcHJpdik7Cj4g QEAgLTE1MzcsMjggKzE1NTUsMjggQEAgaW50IGludGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgdmFsKQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ ICAKPiAtc3RhdGljIHZvaWQgaW50ZWxfcHNyX2hhbmRsZV9pcnEoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9wc3JfaGFuZGxlX2lycShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZk ZXZfcHJpdi0+cHNyOwo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7 Cj4gIAo+IC0JaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHBzci0+ZHApOwo+ICsJaW50ZWxfcHNy X2Rpc2FibGVfbG9ja2VkKGludGVsX2RwKTsKPiAgCXBzci0+c2lua19ub3RfcmVsaWFibGUgPSB0 cnVlOwo+ICAJLyogbGV0J3MgbWFrZSBzdXJlIHRoYXQgc2luayBpcyBhd2FrZW4gKi8KPiAtCWRy bV9kcF9kcGNkX3dyaXRlYigmcHNyLT5kcC0+YXV4LCBEUF9TRVRfUE9XRVIsIERQX1NFVF9QT1dF Ul9EMCk7Cj4gKwlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2RwLT5hdXgsIERQX1NFVF9QT1dF UiwgRFBfU0VUX1BPV0VSX0QwKTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dv cmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPQo+IC0JCWNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmRldl9wcml2 KSwgcHNyLndvcmspOwo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9Cj4gKwkJY29udGFp bmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfZHApLCBwc3Iud29yayk7Cj4gIAo+IC0JbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3Iu bG9jayk7Cj4gIAo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4gKwlpZiAoIWludGVs X2RwLT5wc3IuZW5hYmxlZCkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gLQlpZiAoUkVBRF9PTkNF KGRldl9wcml2LT5wc3IuaXJxX2F1eF9lcnJvcikpCj4gLQkJaW50ZWxfcHNyX2hhbmRsZV9pcnEo ZGV2X3ByaXYpOwo+ICsJaWYgKFJFQURfT05DRShpbnRlbF9kcC0+cHNyLmlycV9hdXhfZXJyb3Ip KQo+ICsJCWludGVsX3Bzcl9oYW5kbGVfaXJxKGludGVsX2RwKTsKPiAgCj4gIAkvKgo+ICAJICog V2UgaGF2ZSB0byBtYWtlIHN1cmUgUFNSIGlzIHJlYWR5IGZvciByZS1lbmFibGUKPiBAQCAtMTU2 Niw3ICsxNTg0LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ICAJICogUFNSIG1pZ2h0IHRha2Ugc29tZSB0aW1lIHRvIGdldCBmdWxseSBk aXNhYmxlZAo+ICAJICogYW5kIGJlIHJlYWR5IGZvciByZS1lbmFibGUuCj4gIAkgKi8KPiAtCWlm ICghX19wc3Jfd2FpdF9mb3JfaWRsZV9sb2NrZWQoZGV2X3ByaXYpKQo+ICsJaWYgKCFfX3Bzcl93 YWl0X2Zvcl9pZGxlX2xvY2tlZChpbnRlbF9kcCkpCj4gIAkJZ290byB1bmxvY2s7Cj4gIAo+ICAJ LyoKPiBAQCAtMTU3NCwxMiArMTU5MiwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wc3Jfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gIAkgKiByZWNoZWNrLiBTaW5jZSBwc3JfZmx1c2gg Zmlyc3QgY2xlYXJzIHRoaXMgYW5kIHRoZW4gcmVzY2hlZHVsZXMgd2UKPiAgCSAqIHdvbid0IGV2 ZXIgbWlzcyBhIGZsdXNoIHdoZW4gYmFpbGluZyBvdXQgaGVyZS4KPiAgCSAqLwo+IC0JaWYgKGRl dl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9wcml2LT5wc3IuYWN0aXZl KQo+ICsJaWYgKGludGVsX2RwLT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGludGVsX2Rw LT5wc3IuYWN0aXZlKQo+ICAJCWdvdG8gdW5sb2NrOwo+ICAKPiAtCWludGVsX3Bzcl9hY3RpdmF0 ZShkZXZfcHJpdi0+cHNyLmRwKTsKPiArCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4g IHVubG9jazoKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4 X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAgfQo+ICAKPiAgLyoqCj4gQEAgLTE1OTgs MjcgKzE2MTYsMzUgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ICB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVt IGZiX29wX29yaWdpbiBvcmlnaW4pCj4gIHsKPiAtCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCj4g LQkJcmV0dXJuOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwOwo+ICAKPiAtCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVApCj4g LQkJcmV0dXJuOwo+ICsJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIp IHsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IC0JaWYgKCFkZXZf cHJpdi0+cHNyLmVuYWJsZWQpIHsKPiAtCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9j ayk7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+ICsJCWludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOwo+ICsJCWlmIChlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApCj4gKwkJ CWNvbnRpbnVlOwo+ICsJCWlmICghQ0FOX1BTUihpbnRlbF9kcCkpCj4gKwkJCWNvbnRpbnVlOwo+ ICAKPiAtCWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soZGV2 X3ByaXYtPnBzci5waXBlKTsKPiAtCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz IHw9IGZyb250YnVmZmVyX2JpdHM7Cj4gKwkJaWYgKG9yaWdpbiA9PSBPUklHSU5fRkxJUCkKPiAr CQkJY29udGludWU7Cj4gKwo+ICsJCW11dGV4X2xvY2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4g KwkJaWYgKCFpbnRlbF9kcC0+cHNyLmVuYWJsZWQpIHsKPiArCQkJbXV0ZXhfdW5sb2NrKCZpbnRl bF9kcC0+cHNyLmxvY2spOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gIAo+IC0JaWYgKGZyb250 YnVmZmVyX2JpdHMpCj4gLQkJaW50ZWxfcHNyX2V4aXQoZGV2X3ByaXYpOwo+ICsJCWZyb250YnVm ZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0soaW50ZWxfZHAtPnBzci5waXBl KTsKPiArCQlpbnRlbF9kcC0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyB8PSBmcm9udGJ1ZmZl cl9iaXRzOwo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtfQo+ ICsJCWlmIChmcm9udGJ1ZmZlcl9iaXRzKQo+ICsJCQlpbnRlbF9wc3JfZXhpdChpbnRlbF9kcCk7 Cj4gIAo+ICsJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiArCX0KPiArfQo+ ICAvKgo+ICAgKiBXaGVuIHdlIHdpbGwgYmUgY29tcGxldGVseSByZWx5IG9uIFBTUjIgUy9XIHRy YWNraW5nIGluIGZ1dHVyZSwKPiAgICogaW50ZWxfcHNyX2ZsdXNoKCkgd2lsbCBpbnZhbGlkYXRl IGFuZCBmbHVzaCB0aGUgUFNSIGZvciBPUklHSU5fRkxJUAo+IEBAIC0xNjI2LDE1ICsxNjUyLDE1 IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAgKiBhY2NvcmRpbmdseSBpbiBmdXR1cmUuCj4gICAqLwo+ICBzdGF0aWMgdm9p ZAo+IC10Z2xfZGMzY29fZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IC0JCXVuc2lnbmVkIGludCBmcm9udGJ1ZmZlcl9iaXRzLCBlbnVtIGZiX29wX29yaWdpbiBvcmln aW4pCj4gK3RnbF9kYzNjb19mbHVzaChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1bnNpZ25l ZCBpbnQgZnJvbnRidWZmZXJfYml0cywKPiArCQllbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pCj4g IHsKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwltdXRleF9sb2NrKCZp bnRlbF9kcC0+cHNyLmxvY2spOwo+ICAKPiAtCWlmICghZGV2X3ByaXYtPnBzci5kYzNjb19lbmFi bGVkKQo+ICsJaWYgKCFpbnRlbF9kcC0+cHNyLmRjM2NvX2VuYWJsZWQpCj4gIAkJZ290byB1bmxv Y2s7Cj4gIAo+IC0JaWYgKCFkZXZfcHJpdi0+cHNyLnBzcjJfZW5hYmxlZCB8fCAhZGV2X3ByaXYt PnBzci5hY3RpdmUpCj4gKwlpZiAoIWludGVsX2RwLT5wc3IucHNyMl9lbmFibGVkIHx8ICFpbnRl bF9kcC0+cHNyLmFjdGl2ZSkKPiAgCQlnb3RvIHVubG9jazsKPiAgCj4gIAkvKgo+IEBAIC0xNjQy LDE1ICsxNjY4LDE1IEBAIHRnbF9kYzNjb19mbHVzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gIAkgKiB3aGVuIGRlbGF5ZWQgd29yayBzY2hlZHVsZXMgdGhhdCBtZWFucyBk aXNwbGF5IGhhcyBiZWVuIGlkbGUuCj4gIAkgKi8KPiAgCWlmICghKGZyb250YnVmZmVyX2JpdHMg Jgo+IC0JICAgIElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGRldl9wcml2LT5wc3IucGlwZSkp KQo+ICsJICAgIElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSkp KQo+ICAJCWdvdG8gdW5sb2NrOwo+ICAKPiAtCXRnbF9wc3IyX2VuYWJsZV9kYzNjbyhkZXZfcHJp dik7Cj4gLQltb2RfZGVsYXllZF93b3JrKHN5c3RlbV93cSwgJmRldl9wcml2LT5wc3IuZGMzY29f d29yaywKPiAtCQkJIGRldl9wcml2LT5wc3IuZGMzY29fZXhpdF9kZWxheSk7Cj4gKwl0Z2xfcHNy Ml9lbmFibGVfZGMzY28oaW50ZWxfZHApOwo+ICsJbW9kX2RlbGF5ZWRfd29yayhzeXN0ZW1fd3Es ICZpbnRlbF9kcC0+cHNyLmRjM2NvX3dvcmssCj4gKwkJCSBpbnRlbF9kcC0+cHNyLmRjM2NvX2V4 aXRfZGVsYXkpOwo+ICAKPiAgdW5sb2NrOgo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ICB9Cj4gIAo+ ICAvKioKPiBAQCAtMTY2OSw0NSArMTY5NSw1NCBAQCB0Z2xfZGMzY29fZmx1c2goc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICAgICB1bnNpZ25lZCBmcm9udGJ1ZmZl cl9iaXRzLCBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pCj4gIHsKPiAtCWlmICghQ0FOX1BTUihk ZXZfcHJpdikpCj4gLQkJcmV0dXJuOwo+IC0KPiAtCWlmIChvcmlnaW4gPT0gT1JJR0lOX0ZMSVAp IHsKPiAtCQl0Z2xfZGMzY29fZmx1c2goZGV2X3ByaXYsIGZyb250YnVmZmVyX2JpdHMsIG9yaWdp bik7Cj4gLQkJcmV0dXJuOwo+IC0JfQo+IC0KPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3Iu bG9jayk7Cj4gLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkgewo+IC0JCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCQlyZXR1cm47Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcjsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHA7Cj4gKwo+ICsJZm9y X2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQlpbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKPiArCj4gKwkJaWYgKGVuY29kZXItPnR5cGUgPT0g SU5URUxfT1VUUFVUX0VEUCAmJiBDQU5fUFNSKGludGVsX2RwKSkgewo+ICsJCQlpZiAob3JpZ2lu ID09IE9SSUdJTl9GTElQKSB7Cj4gKwkJCQl0Z2xfZGMzY29fZmx1c2goaW50ZWxfZHAsIGZyb250 YnVmZmVyX2JpdHMsIG9yaWdpbik7Cj4gKwkJCQljb250aW51ZTsKPiArCQkJfQo+ICsKPiArCQkJ bXV0ZXhfbG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiArCQkJaWYgKCFpbnRlbF9kcC0+cHNy LmVuYWJsZWQpIHsKPiArCQkJCW11dGV4X3VubG9jaygmaW50ZWxfZHAtPnBzci5sb2NrKTsKPiAr CQkJCWNvbnRpbnVlOwo+ICsJCQl9Cj4gKwo+ICsJCQlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVM X0ZST05UQlVGRkVSX0FMTF9NQVNLKGludGVsX2RwLT5wc3IucGlwZSk7Cj4gKwkJCWludGVsX2Rw LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzICY9IH5mcm9udGJ1ZmZlcl9iaXRzOwo+ICsKPiAr CQkJLyogQnkgZGVmaW5pdGlvbiBmbHVzaCA9IGludmFsaWRhdGUgKyBmbHVzaCAqLwo+ICsJCQlp ZiAoZnJvbnRidWZmZXJfYml0cykKPiArCQkJCXBzcl9mb3JjZV9od190cmFja2luZ19leGl0KGlu dGVsX2RwKTsKPiArCj4gKwkJCWlmICghaW50ZWxfZHAtPnBzci5hY3RpdmUgJiYgIWludGVsX2Rw LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzKQo+ICsJCQkJc2NoZWR1bGVfd29yaygmaW50ZWxf ZHAtPnBzci53b3JrKTsKPiArCQkJbXV0ZXhfdW5sb2NrKCZpbnRlbF9kcC0+cHNyLmxvY2spOwo+ ICsJCX0KPiAgCX0KPiAtCj4gLQlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVS X0FMTF9NQVNLKGRldl9wcml2LT5wc3IucGlwZSk7Cj4gLQlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJv bnRidWZmZXJfYml0cyAmPSB+ZnJvbnRidWZmZXJfYml0czsKPiAtCj4gLQkvKiBCeSBkZWZpbml0 aW9uIGZsdXNoID0gaW52YWxpZGF0ZSArIGZsdXNoICovCj4gLQlpZiAoZnJvbnRidWZmZXJfYml0 cykKPiAtCQlwc3JfZm9yY2VfaHdfdHJhY2tpbmdfZXhpdChkZXZfcHJpdik7Cj4gLQo+IC0JaWYg KCFkZXZfcHJpdi0+cHNyLmFjdGl2ZSAmJiAhZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVy X2JpdHMpCj4gLQkJc2NoZWR1bGVfd29yaygmZGV2X3ByaXYtPnBzci53b3JrKTsKPiAtCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAgfQo+ICAKPiAgLyoqCj4gICAqIGludGVs X3Bzcl9pbml0IC0gSW5pdCBiYXNpYyBQU1Igd29yayBhbmQgbXV0ZXguCj4gLSAqIEBkZXZfcHJp djogaTkxNSBkZXZpY2UgcHJpdmF0ZQo+ICsgKiBAaW50ZWxfZHA6IEludGVsIERQCj4gICAqCj4g LSAqIFRoaXMgZnVuY3Rpb24gaXMgIGNhbGxlZCBvbmx5IG9uY2UgYXQgZHJpdmVyIGxvYWQgdG8g aW5pdGlhbGl6ZSBiYXNpYwo+IC0gKiBQU1Igc3R1ZmYuCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGFmdGVyIHRoZSBpbml0aWFsaXppbmcgY29ubmVjdG9yLgo+ICsgKiAodGhlIGluaXRp YWxpemluZyBvZiBjb25uZWN0b3IgdHJlYXRzIHRoZSBoYW5kbGluZyBvZiBjb25uZWN0b3IgY2Fw YWJpbGl0aWVzKQo+ICsgKiBBbmQgaXQgaW5pdGlhbGl6ZXMgYmFzaWMgUFNSIHN0dWZmIGZvciBl YWNoIERQIEVuY29kZXIuCj4gICAqLwo+IC12b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArdm9pZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiArCj4gIAlpZiAoIUhBU19QU1IoZGV2X3ByaXYp KQo+ICAJCXJldHVybjsKPiAgCj4gLQlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQo+ ICsJaWYgKCFpbnRlbF9kcC0+cHNyLnNpbmtfc3VwcG9ydCkKPiAgCQlyZXR1cm47Cj4gIAo+ICAJ aWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKQo+IEBAIC0xNzI1LDE0ICsxNzYwLDE0IEBAIHZvaWQg aW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJLyog U2V0IGxpbmtfc3RhbmRieSB4IGxpbmtfb2ZmIGRlZmF1bHRzICovCj4gIAlpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiAgCQkvKiBIU1cgYW5kIEJE VyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50LiAqLwo+IC0JCWRl dl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZmFsc2U7Cj4gKwkJaW50ZWxfZHAtPnBzci5saW5r X3N0YW5kYnkgPSBmYWxzZTsKPiAgCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMikK PiAgCQkvKiBGb3IgbmV3IHBsYXRmb3JtcyB1cCB0byBUR0wgbGV0J3MgcmVzcGVjdCBWQlQgYmFj ayBhZ2FpbiAqLwo+IC0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3ByaXYtPnZi dC5wc3IuZnVsbF9saW5rOwo+ICsJCWludGVsX2RwLT5wc3IubGlua19zdGFuZGJ5ID0gZGV2X3By aXYtPnZidC5wc3IuZnVsbF9saW5rOwo+ICAKPiAtCUlOSVRfV09SSygmZGV2X3ByaXYtPnBzci53 b3JrLCBpbnRlbF9wc3Jfd29yayk7Cj4gLQlJTklUX0RFTEFZRURfV09SSygmZGV2X3ByaXYtPnBz ci5kYzNjb193b3JrLCB0Z2xfZGMzY29fZGlzYWJsZV93b3JrKTsKPiAtCW11dGV4X2luaXQoJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gKwlJTklUX1dPUksoJmludGVsX2RwLT5wc3Iud29yaywgaW50 ZWxfcHNyX3dvcmspOwo+ICsJSU5JVF9ERUxBWUVEX1dPUksoJmludGVsX2RwLT5wc3IuZGMzY29f d29yaywgdGdsX2RjM2NvX2Rpc2FibGVfd29yayk7Cj4gKwltdXRleF9pbml0KCZpbnRlbF9kcC0+ cHNyLmxvY2spOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW50IHBzcl9nZXRfc3RhdHVzX2FuZF9lcnJv cl9zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiBAQCAtMTc1OCw3ICsxNzkzLDcg QEAgc3RhdGljIHZvaWQgcHNyX2FscG1fY2hlY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShp bnRlbF9kcCk7Cj4gIAlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4ID0gJmludGVsX2RwLT5hdXg7Cj4g LQlzdHJ1Y3QgaTkxNV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOwo+ICsJc3RydWN0IGludGVs X3BzciAqcHNyID0gJmludGVsX2RwLT5wc3I7Cj4gIAl1OCB2YWw7Cj4gIAlpbnQgcjsKPiAgCj4g QEAgLTE3ODUsNyArMTgyMCw3IEBAIHN0YXRpYyB2b2lkIHBzcl9hbHBtX2NoZWNrKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIHN0YXRpYyB2b2lkIHBzcl9jYXBhYmlsaXR5X2NoYW5nZWRf Y2hlY2soc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZHBfdG9faTkxNShpbnRlbF9kcCk7Cj4gLQlzdHJ1Y3QgaTkx NV9wc3IgKnBzciA9ICZkZXZfcHJpdi0+cHNyOwo+ICsJc3RydWN0IGludGVsX3BzciAqcHNyID0g JmludGVsX2RwLT5wc3I7Cj4gIAl1OCB2YWw7Cj4gIAlpbnQgcjsKPiAgCj4gQEAgLTE4MDksMTgg KzE4NDQsMTggQEAgc3RhdGljIHZvaWQgcHNyX2NhcGFiaWxpdHlfY2hhbmdlZF9jaGVjayhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiAtCXN0cnVjdCBpOTE1X3BzciAqcHNy ID0gJmRldl9wcml2LT5wc3I7Cj4gKwlzdHJ1Y3QgaW50ZWxfcHNyICpwc3IgPSAmaW50ZWxfZHAt PnBzcjsKPiAgCXU4IHN0YXR1cywgZXJyb3Jfc3RhdHVzOwo+ICAJY29uc3QgdTggZXJyb3JzID0g RFBfUFNSX1JGQl9TVE9SQUdFX0VSUk9SIHwKPiAgCQkJICBEUF9QU1JfVlNDX1NEUF9VTkNPUlJF Q1RBQkxFX0VSUk9SIHwKPiAgCQkJICBEUF9QU1JfTElOS19DUkNfRVJST1I7Cj4gIAo+IC0JaWYg KCFDQU5fUFNSKGRldl9wcml2KSB8fCAhaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiArCWlm ICghQ0FOX1BTUihpbnRlbF9kcCkgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCj4gIAkJ cmV0dXJuOwo+ICAKPiAgCW11dGV4X2xvY2soJnBzci0+bG9jayk7Cj4gIAo+IC0JaWYgKCFwc3It PmVuYWJsZWQgfHwgcHNyLT5kcCAhPSBpbnRlbF9kcCkKPiArCWlmICghcHNyLT5lbmFibGVkKQo+ ICAJCWdvdG8gZXhpdDsKPiAgCj4gIAlpZiAocHNyX2dldF9zdGF0dXNfYW5kX2Vycm9yX3N0YXR1 cyhpbnRlbF9kcCwgJnN0YXR1cywgJmVycm9yX3N0YXR1cykpIHsKPiBAQCAtMTg2MywxNSArMTg5 OCwxNCBAQCB2b2lkIGludGVsX3Bzcl9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAKPiAgYm9vbCBpbnRlbF9wc3JfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19p OTE1KGludGVsX2RwKTsKPiAgCWJvb2wgcmV0Owo+ICAKPiAtCWlmICghQ0FOX1BTUihkZXZfcHJp dikgfHwgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCj4gKwlpZiAoIUNBTl9QU1IoaW50ZWxf ZHApIHx8ICFpbnRlbF9kcF9pc19lZHAoaW50ZWxfZHApKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IC0JcmV0ID0gKGRldl9wcml2 LT5wc3IuZHAgPT0gaW50ZWxfZHAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkKTsKPiAtCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiArCW11dGV4X2xvY2soJmludGVsX2RwLT5w c3IubG9jayk7Cj4gKwlyZXQgPSBpbnRlbF9kcC0+cHNyLmVuYWJsZWQ7Cj4gKwltdXRleF91bmxv Y2soJmludGVsX2RwLT5wc3IubG9jayk7Cj4gIAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bzci5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wc3IuaAo+IGluZGV4IDBhNTE3OTc4ZThhZi4u MDNlYjE5NTQ3ZDA5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfcHNyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Bz ci5oCj4gQEAgLTE4LDcgKzE4LDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKPiAgc3Ry dWN0IGludGVsX3BsYW5lX3N0YXRlOwo+ICBzdHJ1Y3QgaW50ZWxfcGxhbmU7Cj4gIAo+IC0jZGVm aW5lIENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNy LnNpbmtfc3VwcG9ydCkKPiArI2RlZmluZSBDQU5fUFNSKGludGVsX2RwKSAoSEFTX1BTUihkcF90 b19pOTE1KGludGVsX2RwKSkgJiYgaW50ZWxfZHAtPnBzci5zaW5rX3N1cHBvcnQpCj4gIHZvaWQg aW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBp bnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJICAgICAgY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gQEAgLTI4LDI0ICsyOCwy NCBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IHZvaWQgaW50ZWxfcHNyX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCSAg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgICAg IGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKTsKPiAtaW50IGlu dGVsX3Bzcl9kZWJ1Z19zZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQg dmFsdWUpOwo+ICtpbnQgaW50ZWxfcHNyX2RlYnVnX3NldChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCB1NjQgdmFsdWUpOwo+ICB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICB1bnNpZ25lZCBmcm9udGJ1ZmZlcl9iaXRz LAo+ICAJCQkgIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7Cj4gIHZvaWQgaW50ZWxfcHNyX2Zs dXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkgICAgIHVuc2lnbmVk IGZyb250YnVmZmVyX2JpdHMsCj4gIAkJICAgICBlbnVtIGZiX29wX29yaWdpbiBvcmlnaW4pOwo+ IC12b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gK3ZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIHZv aWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g IAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAtdm9pZCBp bnRlbF9wc3JfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgcHNyX2lpcik7Cj4gK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIHUzMiBwc3JfaWlyKTsKPiAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gLWludCBpbnRlbF9wc3Jfd2FpdF9mb3JfaWRs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUsCj4gLQkJCSAg ICB1MzIgKm91dF92YWx1ZSk7Cj4gK3ZvaWQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKTsKPiAgYm9vbCBpbnRlbF9w c3JfZW5hYmxlZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgaW50IGludGVsX3BzcjJf c2VsX2ZldGNoX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPiAgCQkJ CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKTsKPiAtdm9pZCBpbnRlbF9wc3IyX3Byb2dyYW1fdHJh bnNfbWFuX3Rya19jdGwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Owo+ICt2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV90cmFuc19tYW5fdHJrX2N0bChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpOwo+ICB2b2lkIGludGVsX3BzcjJfcHJvZ3JhbV9wbGFuZV9zZWxfZmV0Y2go c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9z cHJpdGUuYwo+IGluZGV4IGI3ZTIwODgxNjA3NC4uOTQ4MjM0YzYwNjQ4IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTg0LDcgKzg0LDYg QEAgdm9pZCBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4gIAlib29sIG5lZWRfdmx2X2RzaV93YSA9IChJU19WQUxM RVlWSUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgJiYKPiAgCQlpbnRl bF9jcnRjX2hhc190eXBlKG5ld19jcnRjX3N0YXRlLCBJTlRFTF9PVVRQVVRfRFNJKTsKPiAgCURF RklORV9XQUlUKHdhaXQpOwo+IC0JdTMyIHBzcl9zdGF0dXM7Cj4gIAo+ICAJaWYgKG5ld19jcnRj X3N0YXRlLT51YXBpLmFzeW5jX2ZsaXApCj4gIAkJcmV0dXJuOwo+IEBAIC0xMDksMTAgKzEwOCw3 IEBAIHZvaWQgaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ICAJICogVkJMIGludGVycnVwdHMgd2lsbCBzdGFydCB0 aGUgUFNSIGV4aXQgYW5kIHByZXZlbnQgYSBQU1IKPiAgCSAqIHJlLWVudHJ5IGFzIHdlbGwuCj4g IAkgKi8KPiAtCWlmIChpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShuZXdfY3J0Y19zdGF0ZSwgJnBz cl9zdGF0dXMpKQo+IC0JCWRybV9lcnIoJmRldl9wcml2LT5kcm0sCj4gLQkJCSJQU1IgaWRsZSB0 aW1lZCBvdXQgMHgleCwgYXRvbWljIHVwZGF0ZSBtYXkgZmFpbFxuIiwKPiAtCQkJcHNyX3N0YXR1 cyk7Cj4gKwlpbnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShuZXdfY3J0Y19zdGF0ZSk7Cj4gIAo+ICAJ bG9jYWxfaXJxX2Rpc2FibGUoKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXgg NWQwNGIyODJjMDYwLi5hMmUzOWU4YWRjYmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK PiBAQCAtNDc1LDQyICs0NzUsNiBAQCBzdHJ1Y3QgaTkxNV9kcnJzIHsKPiAgCWVudW0gZHJyc19z dXBwb3J0X3R5cGUgdHlwZTsKPiAgfTsKPiAgCj4gLXN0cnVjdCBpOTE1X3BzciB7Cj4gLQlzdHJ1 Y3QgbXV0ZXggbG9jazsKPiAtCj4gLSNkZWZpbmUgSTkxNV9QU1JfREVCVUdfTU9ERV9NQVNLCTB4 MGYKPiAtI2RlZmluZSBJOTE1X1BTUl9ERUJVR19ERUZBVUxUCQkweDAwCj4gLSNkZWZpbmUgSTkx NV9QU1JfREVCVUdfRElTQUJMRQkJMHgwMQo+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0VOQUJM RQkJMHgwMgo+IC0jZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0ZPUkNFX1BTUjEJMHgwMwo+IC0jZGVm aW5lIEk5MTVfUFNSX0RFQlVHX0lSUQkJMHgxMAo+IC0KPiAtCXUzMiBkZWJ1ZzsKPiAtCWJvb2wg c2lua19zdXBwb3J0Owo+IC0JYm9vbCBlbmFibGVkOwo+IC0Jc3RydWN0IGludGVsX2RwICpkcDsK PiAtCWVudW0gcGlwZSBwaXBlOwo+IC0JZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXI7Cj4gLQli b29sIGFjdGl2ZTsKPiAtCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+IC0JdW5zaWduZWQgYnVz eV9mcm9udGJ1ZmZlcl9iaXRzOwo+IC0JYm9vbCBzaW5rX3BzcjJfc3VwcG9ydDsKPiAtCWJvb2wg bGlua19zdGFuZGJ5Owo+IC0JYm9vbCBjb2xvcmltZXRyeV9zdXBwb3J0Owo+IC0JYm9vbCBwc3Iy X2VuYWJsZWQ7Cj4gLQlib29sIHBzcjJfc2VsX2ZldGNoX2VuYWJsZWQ7Cj4gLQl1OCBzaW5rX3N5 bmNfbGF0ZW5jeTsKPiAtCWt0aW1lX3QgbGFzdF9lbnRyeV9hdHRlbXB0Owo+IC0Ja3RpbWVfdCBs YXN0X2V4aXQ7Cj4gLQlib29sIHNpbmtfbm90X3JlbGlhYmxlOwo+IC0JYm9vbCBpcnFfYXV4X2Vy cm9yOwo+IC0JdTE2IHN1X3hfZ3JhbnVsYXJpdHk7Cj4gLQlib29sIGRjM2NvX2VuYWJsZWQ7Cj4g LQl1MzIgZGMzY29fZXhpdF9kZWxheTsKPiAtCXN0cnVjdCBkZWxheWVkX3dvcmsgZGMzY29fd29y azsKPiAtCXN0cnVjdCBkcm1fZHBfdnNjX3NkcCB2c2M7Cj4gLX07Cj4gLQo+ICAjZGVmaW5lIFFV SVJLX0xWRFNfU1NDX0RJU0FCTEUgKDE8PDEpCj4gICNkZWZpbmUgUVVJUktfSU5WRVJUX0JSSUdI VE5FU1MgKDE8PDIpCj4gICNkZWZpbmUgUVVJUktfQkFDS0xJR0hUX1BSRVNFTlQgKDE8PDMpCj4g QEAgLTEwNDEsOCArMTAwNSw2IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCj4gIAlz dHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zIHBvd2VyX2RvbWFpbnM7Cj4gIAo+IC0Jc3RydWN0IGk5 MTVfcHNyIHBzcjsKPiAtCj4gIAlzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgZ3B1X2Vycm9yOwo+ICAK PiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp2bHZfcGN0eDsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMKPiBpbmRleCA0OTFmODI1MDBkNjguLjg1NDY3ODY1MjFiNSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0yMDQ0LDEwICsyMDQ0LDIyIEBAIHN0YXRpYyB2b2lkIGl2 Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK PiAgCQlpdmJfZXJyX2ludF9oYW5kbGVyKGRldl9wcml2KTsKPiAgCj4gIAlpZiAoZGVfaWlyICYg REVfRURQX1BTUl9JTlRfSFNXKSB7Cj4gLQkJdTMyIHBzcl9paXIgPSBpbnRlbF91bmNvcmVfcmVh ZCgmZGV2X3ByaXYtPnVuY29yZSwgRURQX1BTUl9JSVIpOwo+ICsJCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyOwo+ICAKPiAtCQlpbnRlbF9wc3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBz cl9paXIpOwo+IC0JCWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwgRURQX1BT Ul9JSVIsIHBzcl9paXIpOwo+ICsJCWZvcl9lYWNoX2ludGVsX2RwKCZkZXZfcHJpdi0+ZHJtLCBl bmNvZGVyKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxf ZHAoZW5jb2Rlcik7Cj4gKwo+ICsJCQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRf RURQICYmCj4gKwkJCSAgICBDQU5fUFNSKGludGVsX2RwKSkgewo+ICsJCQkJdTMyIHBzcl9paXIg PSBpbnRlbF91bmNvcmVfcmVhZCgmZGV2X3ByaXYtPnVuY29yZSwKPiArCQkJCQkJCQlFRFBfUFNS X0lJUik7Cj4gKwo+ICsJCQkJaW50ZWxfcHNyX2lycV9oYW5kbGVyKGludGVsX2RwLCBwc3JfaWly KTsKPiArCQkJCWludGVsX3VuY29yZV93cml0ZSgmZGV2X3ByaXYtPnVuY29yZSwKPiArCQkJCQkJ ICAgRURQX1BTUl9JSVIsIHBzcl9paXIpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4g IAl9Cj4gIAo+ICAJaWYgKGRlX2lpciAmIERFX0FVWF9DSEFOTkVMX0FfSVZCKQo+IEBAIC0yMjU1 LDIxICsyMjY3LDM0IEBAIGdlbjhfZGVfbWlzY19pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBpaXIpCj4gIAl9Cj4gIAo+ICAJaWYgKGlpciAmIEdFTjhf REVfRURQX1BTUikgewo+ICsJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwo+ICAJCXUz MiBwc3JfaWlyOwo+ICAJCWk5MTVfcmVnX3QgaWlyX3JlZzsKPiAgCj4gLQkJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gMTIpCj4gLQkJCWlpcl9yZWcgPSBUUkFOU19QU1JfSUlSKGRldl9wcml2 LT5wc3IudHJhbnNjb2Rlcik7Cj4gLQkJZWxzZQo+IC0JCQlpaXJfcmVnID0gRURQX1BTUl9JSVI7 Cj4gKwkJZm9yX2VhY2hfaW50ZWxfZHAoJmRldl9wcml2LT5kcm0sIGVuY29kZXIpIHsKPiArCQkJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKPiAg Cj4gLQkJcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBpaXJf cmVnKTsKPiAtCQlpbnRlbF91bmNvcmVfd3JpdGUoJmRldl9wcml2LT51bmNvcmUsIGlpcl9yZWcs IHBzcl9paXIpOwo+ICsJCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiAmJiBDQU5fUFNS KGludGVsX2RwKSkgewo+ICsJCQkJaWlyX3JlZyA9IFRSQU5TX1BTUl9JSVIoaW50ZWxfZHAtPnBz ci50cmFuc2NvZGVyKTsKPiArCQkJfSBlbHNlIGlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9FRFAgJiYKPiArCQkJCSAgIENBTl9QU1IoaW50ZWxfZHApKSB7Cj4gKwkJCQlpaXJfcmVn ID0gRURQX1BTUl9JSVI7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQljb250aW51ZTsKPiArCQkJfQo+ ICsKPiArCQkJcHNyX2lpciA9IGludGVsX3VuY29yZV9yZWFkKCZkZXZfcHJpdi0+dW5jb3JlLCBp aXJfcmVnKTsKPiArCQkJaW50ZWxfdW5jb3JlX3dyaXRlKCZkZXZfcHJpdi0+dW5jb3JlLCBpaXJf cmVnLCBwc3JfaWlyKTsKPiArCj4gKwkJCWlmIChwc3JfaWlyKQo+ICsJCQkJZm91bmQgPSB0cnVl Owo+ICAKPiAtCQlpZiAocHNyX2lpcikKPiAtCQkJZm91bmQgPSB0cnVlOwo+ICsJCQlpbnRlbF9w c3JfaXJxX2hhbmRsZXIoaW50ZWxfZHAsIHBzcl9paXIpOwo+ICAKPiAtCQlpbnRlbF9wc3JfaXJx X2hhbmRsZXIoZGV2X3ByaXYsIHBzcl9paXIpOwo+ICsJCQkvKiBwcmlvciBHRU4xMiBvbmx5IGhh dmUgb25lIEVEUCBQU1IgKi8KPiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMikKPiAr CQkJCWJyZWFrOwo+ICsJCX0KPiAgCX0KPiAgCj4gIAlpZiAoIWZvdW5kKQo+IC0tIAo+IDIuMjUu MAo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK