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=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED 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 90803C433ED for ; Wed, 7 Apr 2021 20:13:59 +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 4BC05611C9 for ; Wed, 7 Apr 2021 20:13:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4BC05611C9 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 C6D97897AC; Wed, 7 Apr 2021 20:13:58 +0000 (UTC) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 942A9897AC for ; Wed, 7 Apr 2021 20:13:56 +0000 (UTC) IronPort-SDR: 2ikZc1h7iK5wAO+z2+k+JK+gdlDCITQaxFILiybhVa7hM4MVn392Yx6MIH/rSCu501BZjoH4BX e68Z2huQYhyg== X-IronPort-AV: E=McAfee;i="6000,8403,9947"; a="213786680" X-IronPort-AV: E=Sophos;i="5.82,204,1613462400"; d="scan'208";a="213786680" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Apr 2021 13:13:37 -0700 IronPort-SDR: /VG6PMBHzSSt1tIQEJZVNlsKAOfTzfkQf9RhbU6UVuMhrX2slDyyKVCVqgtX+60iF9S5+y7wqa sRxQSopodHlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,204,1613462400"; d="scan'208";a="415425624" Received: from orsmsx604.amr.corp.intel.com ([10.22.229.17]) by fmsmga008.fm.intel.com with ESMTP; 07 Apr 2021 13:13:36 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX604.amr.corp.intel.com (10.22.229.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 7 Apr 2021 13:13:36 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Wed, 7 Apr 2021 13:13:35 -0700 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2106.013; Wed, 7 Apr 2021 13:13:35 -0700 From: "Sripada, Radhakrishna" To: "Roper, Matthew D" , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH v2] drm/i915/display: Eliminate IS_GEN9_{BC, LP} Thread-Index: AQHXJMz4sjP7OKorBE6iRciwUBz00qqnzUXg Date: Wed, 7 Apr 2021 20:13:35 +0000 Message-ID: References: <20210326021718.486622-1-matthew.d.roper@intel.com> <20210329185416.604826-1-matthew.d.roper@intel.com> In-Reply-To: <20210329185416.604826-1-matthew.d.roper@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.6.0.76 dlp-reaction: no-action x-originating-ip: [10.22.254.132] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v2] drm/i915/display: Eliminate IS_GEN9_{BC, LP} 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: "De Marchi, Lucas" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJbnRlbC1nZnggPGludGVsLWdm eC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mIE1hdHQNCj4gUm9w ZXINCj4gU2VudDogTW9uZGF5LCBNYXJjaCAyOSwgMjAyMSAxMTo1NCBBTQ0KPiBUbzogaW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogRGUgTWFyY2hpLCBMdWNhcyA8bHVjYXMu ZGVtYXJjaGlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjJdIGRy bS9pOTE1L2Rpc3BsYXk6IEVsaW1pbmF0ZSBJU19HRU45X3tCQywgTFB9DQo+IA0KPiBOb3cgdGhh dCB3ZSd2ZSBlbGltaW5hdGVkIElOVEVMX0dFTigpLCBJU19HRU5fUkFOR0UoKSwgZXRjLiBmcm9t IHRoZQ0KPiBkaXNwbGF5IGNvZGUsIHdlIHNob3VsZCBhbHNvIGtpbGwgb2ZmIG91ciB1c2Ugb2Yg dGhlIElTX0dFTjlfKiBtYWNyb3MNCj4gdG9vLiAgV2UnbGwgZG8gdGhlIGNvbnZlcnNpb24gbWFu dWFsbHkgdGhpcyB0aW1lIGluc3RlYWQgb2YgdXNpbmcNCj4gQ29jY2luZWxsZSBzaW5jZSB0aGUg bW9zdCBsb2dpY2FsIHN1YnN0aXR1dGlvbiBjYW4gZGVwZW5kIGhlYXZpbHkgb24gdGhlDQo+IGNv ZGUgY29udGV4dCwgYW5kIHNvbWV0aW1lcyB3ZSBjYW4ga2VlcCB0aGUgY29kZSBzaW1wbGVyIGlm IHdlIG1ha2UNCj4gYWRkaXRpb25hbCBhZGp1c3RtZW50cyBzdWNoIGFzIHN3YXBwaW5nIHRoZSBv cmRlciBvZiBpZi9lbHNlIGFybXMuDQo+IA0KPiB2MjoNCj4gIC0gUmVzdG9yZSBhIGxvc3QgbmVn YXRpb24gaW4gaW50ZWxfcGxsX2lzX3ZhbGlkKCkuDQo+IA0KUmV2aWV3ZWQtYnk6IFJhZGhha3Jp c2huYSBTcmlwYWRhIDxyYWRoYWtyaXNobmEuc3JpcGFkYUBpbnRlbC5jb20+DQo+IENjOiBWaWxs ZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiBDYzogTHVjYXMg RGUgTWFyY2hpIDxsdWNhcy5kZW1hcmNoaUBpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IE1h dHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9zLmMgICAgIHwgIDcgKy0tDQo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMgICAgfCAzNCArKysrKysrLS0tLS0t LQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jc3IuYyAgICAgIHwgIDIg Ky0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMgICAgICB8IDM3 ICsrKysrKysrLS0tLS0tLQ0KPiAgLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpX2J1Zl90 cmFucy5jICAgIHwgIDggKystLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5LmMgIHwgMTEgKysrLS0NCj4gIC4uLi9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfZGVidWdmcy5jICB8ICAyICstDQo+ICAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X3Bvd2VyLmMgICAgfCA0MyArKysrKysrKystLS0tLS0tLQ0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jICAgICAgIHwgIDQgKy0NCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMgICB8ICAyICstDQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGwuYyAgICAgfCAgNiArLS0NCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbF9tZ3IuYyB8ICA2ICstLQ0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYyAgICAgIHwgIDcgKy0tDQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2dtYnVzLmMgICAgfCAxMiArKy0tLQ0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNwLmMgICAgIHwgIDkgKystLQ0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZG1pLmMgICAgIHwgIDcgKy0t DQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMgICAgfCAgMiAr LQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcHMuYyAgICAgIHwgMTQg KysrLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2kuYyAgICAgICAg fCA0NiArKysrKysrKysrLS0tLS0tLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jICAgICAgICAgICAgICAgfCAxMyArKystLS0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgICAgICAgICAgICAgICB8ICA4ICsrLS0NCj4gIDIxIGZpbGVzIGNoYW5nZWQsIDE0 NiBpbnNlcnRpb25zKCspLCAxMzQgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9zLmMNCj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2Jpb3MuYw0KPiBpbmRleCAzZDBjMDM1YjVlMzguLmVhNDgz N2Q0ODVhMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9iaW9zLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9iaW9z LmMNCj4gQEAgLTkxNyw3ICs5MTcsNyBAQCBwYXJzZV9wc3Ioc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsIGNvbnN0IHN0cnVjdA0KPiBiZGJfaGVhZGVyICpiZGIpDQo+ICAJICogT2xkIGRl Y2ltYWwgdmFsdWUgaXMgd2FrZSB1cCB0aW1lIGluIG11bHRpcGxlcyBvZiAxMDAgdXMuDQo+ICAJ ICovDQo+ICAJaWYgKGJkYi0+dmVyc2lvbiA+PSAyMDUgJiYNCj4gLQkgICAgKElTX0dFTjlfQkMo aTkxNSkgfHwgRElTUExBWV9WRVIoaTkxNSkgPj0gMTApKSB7DQo+ICsJICAgIChESVNQTEFZX1ZF UihpOTE1KSA+PSA5ICYmICFJU19CUk9YVE9OKGk5MTUpKSkgew0KPiAgCQlzd2l0Y2ggKHBzcl90 YWJsZS0+dHAxX3dha2V1cF90aW1lKSB7DQo+ICAJCWNhc2UgMDoNCj4gIAkJCWk5MTUtPnZidC5w c3IudHAxX3dha2V1cF90aW1lX3VzID0gNTAwOw0KPiBAQCAtMTY1OSw3ICsxNjU5LDcgQEAgc3Rh dGljIHU4IG1hcF9kZGNfcGluKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LA0KPiB1OCB2 YnRfcGluKQ0KPiAgCX0gZWxzZSBpZiAoSVNfUk9DS0VUTEFLRShpOTE1KSAmJiBJTlRFTF9QQ0hf VFlQRShpOTE1KSA9PSBQQ0hfVEdQKQ0KPiB7DQo+ICAJCWRkY19waW5fbWFwID0gcmtsX3BjaF90 Z3BfZGRjX3Bpbl9tYXA7DQo+ICAJCW5fZW50cmllcyA9IEFSUkFZX1NJWkUocmtsX3BjaF90Z3Bf ZGRjX3Bpbl9tYXApOw0KPiAtCX0gZWxzZSBpZiAoSEFTX1BDSF9UR1AoaTkxNSkgJiYgSVNfR0VO OV9CQyhpOTE1KSkgew0KPiArCX0gZWxzZSBpZiAoSEFTX1BDSF9UR1AoaTkxNSkgJiYgSVNfRElT UExBWV9WRVIoaTkxNSwgOSkpIHsNCj4gIAkJZGRjX3Bpbl9tYXAgPSBnZW45YmNfdGdwX2RkY19w aW5fbWFwOw0KPiAgCQluX2VudHJpZXMgPSBBUlJBWV9TSVpFKGdlbjliY190Z3BfZGRjX3Bpbl9t YXApOw0KPiAgCX0gZWxzZSBpZiAoSU5URUxfUENIX1RZUEUoaTkxNSkgPj0gUENIX0lDUCkgew0K PiBAQCAtMjc3MCw3ICsyNzcwLDggQEAgaW50ZWxfYmlvc19pc19wb3J0X2hwZF9pbnZlcnRlZChj b25zdCBzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwNCj4gIAljb25zdCBzdHJ1Y3Qg aW50ZWxfYmlvc19lbmNvZGVyX2RhdGEgKmRldmRhdGEgPQ0KPiAgCQlpOTE1LT52YnQuZGRpX3Bv cnRfaW5mb1twb3J0XS5kZXZkYXRhOw0KPiANCj4gLQlpZiAoZHJtX1dBUk5fT05fT05DRSgmaTkx NS0+ZHJtLCAhSVNfR0VOOV9MUChpOTE1KSkpDQo+ICsJaWYgKGRybV9XQVJOX09OX09OQ0UoJmk5 MTUtPmRybSwNCj4gKwkJCSAgICAgIUlTX0dFTUlOSUxBS0UoaTkxNSkgJiYgIUlTX0JST1hUT04o aTkxNSkpKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAgCXJldHVybiBkZXZkYXRhICYmIGRl dmRhdGEtPmNoaWxkLmhwZF9pbnZlcnQ7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2NkY2xrLmMNCj4gaW5kZXggM2Y0M2FkNGQ3MzYyLi40ODlhY2Y2YjVjZjEgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY2RjbGsuYw0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2NkY2xrLmMNCj4gQEAg LTE2MzEsNyArMTYzMSw4IEBAIHN0YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiAgCSAqIERpc2FibGUgU1NBIFByZWNoYXJnZSB3 aGVuIENEIGNsb2NrIGZyZXF1ZW5jeSA8IDUwMCBNSHosDQo+ICAJICogZW5hYmxlIG90aGVyd2lz ZS4NCj4gIAkgKi8NCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikgJiYgY2RjbGsgPj0gNTAw MDAwKQ0KPiArCWlmICgoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZf cHJpdikpICYmDQo+ICsJICAgIGNkY2xrID49IDUwMDAwMCkNCj4gIAkJdmFsIHw9IEJYVF9DRENM S19TU0FfUFJFQ0hBUkdFX0VOQUJMRTsNCj4gIAlpbnRlbF9kZV93cml0ZShkZXZfcHJpdiwgQ0RD TEtfQ1RMLCB2YWwpOw0KPiANCj4gQEAgLTE3MzIsNyArMTczMyw4IEBAIHN0YXRpYyB2b2lkIGJ4 dF9zYW5pdGl6ZV9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ ICAJICogRGlzYWJsZSBTU0EgUHJlY2hhcmdlIHdoZW4gQ0QgY2xvY2sgZnJlcXVlbmN5IDwgNTAw IE1IeiwNCj4gIAkgKiBlbmFibGUgb3RoZXJ3aXNlLg0KPiAgCSAqLw0KPiAtCWlmIChJU19HRU45 X0xQKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+Y2RjbGsuaHcuY2RjbGsgPj0gNTAwMDAwKQ0KPiAr CWlmICgoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpICYm DQo+ICsJICAgIGRldl9wcml2LT5jZGNsay5ody5jZGNsayA+PSA1MDAwMDApDQo+ICAJCWV4cGVj dGVkIHw9IEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRTsNCj4gDQo+ICAJaWYgKGNkY3Rs ID09IGV4cGVjdGVkKQ0KPiBAQCAtMTc5Nyw5ICsxNzk5LDkgQEAgc3RhdGljIHZvaWQgYnh0X2Nk Y2xrX3VuaW5pdF9odyhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAg Ki8NCj4gIHZvaWQgaW50ZWxfY2RjbGtfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkNCj4gIHsNCj4gLQlpZiAoSVNfR0VOOV9MUChpOTE1KSB8fCBESVNQTEFZX1ZFUihpOTE1 KSA+PSAxMCkNCj4gKwlpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gMTAgfHwgSVNfQlJPWFRPTihp OTE1KSkNCj4gIAkJYnh0X2NkY2xrX2luaXRfaHcoaTkxNSk7DQo+IC0JZWxzZSBpZiAoSVNfR0VO OV9CQyhpOTE1KSkNCj4gKwllbHNlIGlmIChJU19ESVNQTEFZX1ZFUihpOTE1LCA5KSkNCj4gIAkJ c2tsX2NkY2xrX2luaXRfaHcoaTkxNSk7DQo+ICB9DQo+IA0KPiBAQCAtMTgxMiw5ICsxODE0LDkg QEAgdm9pZCBpbnRlbF9jZGNsa19pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpp OTE1KQ0KPiAgICovDQo+ICB2b2lkIGludGVsX2NkY2xrX3VuaW5pdF9odyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkNCj4gIHsNCj4gLQlpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gMTAg fHwgSVNfR0VOOV9MUChpOTE1KSkNCj4gKwlpZiAoRElTUExBWV9WRVIoaTkxNSkgPj0gMTAgfHwg SVNfQlJPWFRPTihpOTE1KSkNCj4gIAkJYnh0X2NkY2xrX3VuaW5pdF9odyhpOTE1KTsNCj4gLQll bHNlIGlmIChJU19HRU45X0JDKGk5MTUpKQ0KPiArCWVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGk5 MTUsIDkpKQ0KPiAgCQlza2xfY2RjbGtfdW5pbml0X2h3KGk5MTUpOw0KPiAgfQ0KPiANCj4gQEAg LTE4NTIsNyArMTg1NCw3IEBAIHN0YXRpYyBib29sIGludGVsX2NkY2xrX2Nhbl9jZDJ4X3VwZGF0 ZShzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCQkJCWNvbnN0IHN0 cnVjdCBpbnRlbF9jZGNsa19jb25maWcgKmIpDQo+ICB7DQo+ICAJLyogT2xkZXIgaHcgZG9lc24n dCBoYXZlIHRoZSBjYXBhYmlsaXR5ICovDQo+IC0JaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA8 IDEwICYmICFJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwlpZiAoRElTUExBWV9WRVIoZGV2X3By aXYpIDwgMTAgJiYgIUlTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiAgCQlyZXR1cm4gZmFsc2U7DQo+ IA0KPiAgCXJldHVybiBhLT5jZGNsayAhPSBiLT5jZGNsayAmJg0KPiBAQCAtMjYyNSw3ICsyNjI3 LDExIEBAIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpDQo+ICAJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA2NTI4MDA7 DQo+ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgew0KPiAgCQlkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEgPSA1MjgwMDA7DQo+IC0JfSBlbHNlIGlmIChJU19HRU45X0JDKGRl dl9wcml2KSkgew0KPiArCX0gZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsNCj4g KwkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gMzE2ODAwOw0KPiArCX0gZWxzZSBpZiAoSVNf QlJPWFRPTihkZXZfcHJpdikpIHsNCj4gKwkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gNjI0 MDAwOw0KPiArCX0gZWxzZSBpZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYsIDkpKSB7DQo+ICAJ CXUzMiBsaW1pdCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIFNLTF9ERlNNKSAmDQo+IFNLTF9E RlNNX0NEQ0xLX0xJTUlUX01BU0s7DQo+ICAJCWludCBtYXhfY2RjbGssIHZjbzsNCj4gDQo+IEBA IC0yNjQ3LDEwICsyNjUzLDYgQEAgdm9pZCBpbnRlbF91cGRhdGVfbWF4X2NkY2xrKHN0cnVjdA0K PiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAkJCW1heF9jZGNsayA9IDMwODU3MTsN Cj4gDQo+ICAJCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IHNrbF9jYWxjX2NkY2xrKG1heF9j ZGNsaywgdmNvKTsNCj4gLQl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7DQo+ IC0JCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDMxNjgwMDsNCj4gLQl9IGVsc2UgaWYgKElT X0JST1hUT04oZGV2X3ByaXYpKSB7DQo+IC0JCWRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSA9IDYy NDAwMDsNCj4gIAl9IGVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpICB7DQo+ICAJCS8q DQo+ICAJCSAqIEZJWE1FIHdpdGggZXh0cmEgY29vbGluZyB3ZSBjYW4gYWxsb3cNCj4gQEAgLTI4 NzgsNyArMjg4MCw3IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRf Y2FsY19jZGNsayA9DQo+IGJ4dF9tb2Rlc2V0X2NhbGNfY2RjbGs7DQo+ICAJCWRldl9wcml2LT5k aXNwbGF5LmNhbGNfdm9sdGFnZV9sZXZlbCA9IGNubF9jYWxjX3ZvbHRhZ2VfbGV2ZWw7DQo+ICAJ CWRldl9wcml2LT5jZGNsay50YWJsZSA9IGNubF9jZGNsa190YWJsZTsNCj4gLQl9IGVsc2UgaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGRl dl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQlkZXZfcHJpdi0+ZGlzcGxh eS5id19jYWxjX21pbl9jZGNsayA9IHNrbF9id19jYWxjX21pbl9jZGNsazsNCj4gIAkJZGV2X3By aXYtPmRpc3BsYXkuc2V0X2NkY2xrID0gYnh0X3NldF9jZGNsazsNCj4gIAkJZGV2X3ByaXYtPmRp c3BsYXkubW9kZXNldF9jYWxjX2NkY2xrID0NCj4gYnh0X21vZGVzZXRfY2FsY19jZGNsazsNCj4g QEAgLTI4ODcsNyArMjg4OSw3IEBAIHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ICAJCQlkZXZfcHJpdi0+Y2RjbGsudGFi bGUgPSBnbGtfY2RjbGtfdGFibGU7DQo+ICAJCWVsc2UNCj4gIAkJCWRldl9wcml2LT5jZGNsay50 YWJsZSA9IGJ4dF9jZGNsa190YWJsZTsNCj4gLQl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkpIHsNCj4g IAkJZGV2X3ByaXYtPmRpc3BsYXkuYndfY2FsY19taW5fY2RjbGsgPSBza2xfYndfY2FsY19taW5f Y2RjbGs7DQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayA9IHNrbF9zZXRfY2RjbGs7 DQo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19jZGNsayA9DQo+IHNrbF9tb2Rl c2V0X2NhbGNfY2RjbGs7DQo+IEBAIC0yOTA4LDkgKzI5MTAsOSBAQCB2b2lkIGludGVsX2luaXRf Y2RjbGtfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2KQ0KPiAgCQlk ZXZfcHJpdi0+ZGlzcGxheS5tb2Rlc2V0X2NhbGNfY2RjbGsgPQ0KPiBmaXhlZF9tb2Rlc2V0X2Nh bGNfY2RjbGs7DQo+ICAJfQ0KPiANCj4gLQlpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDEw IHx8IElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikg Pj0gMTAgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCWRldl9wcml2LT5kaXNwbGF5Lmdl dF9jZGNsayA9IGJ4dF9nZXRfY2RjbGs7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJp dikpDQo+ICsJZWxzZSBpZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYsIDkpKQ0KPiAgCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfY2RjbGsgPSBza2xfZ2V0X2NkY2xrOw0KPiAgCWVsc2UgaWYgKElT X0JST0FEV0VMTChkZXZfcHJpdikpDQo+ICAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9jZGNsayA9 IGJkd19nZXRfY2RjbGs7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Nzci5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9j c3IuYw0KPiBpbmRleCA3OTRlZmNjM2NhMDguLmU1NDUyMWQ3YjkzMSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9jc3IuYw0KPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Nzci5jDQo+IEBAIC0yODQsNyArMjg0LDcgQEAg c3RhdGljIHZvaWQgZ2VuOV9zZXRfZGNfc3RhdGVfZGVidWdtYXNrKHN0cnVjdA0KPiBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikNCj4gDQo+ICAJbWFzayA9IERDX1NUQVRFX0RFQlVHX01BU0tf TUVNT1JZX1VQOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJaWYgKElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiAgCQltYXNr IHw9IERDX1NUQVRFX0RFQlVHX01BU0tfQ09SRVM7DQo+IA0KPiAgCS8qIFRoZSBiZWxvdyBiaXQg ZG9lc24ndCBuZWVkIHRvIGJlIGNsZWFyZWQgZXZlciBhZnRlcndhcmRzICovDQo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jDQo+IGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiBpbmRleCA5NTNkZTQyZTI3N2Mu LmRlZWYyNGRhMDBiNSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2RkaS5jDQo+IEBAIC0xMTMsNyArMTEzLDggQEAgdm9pZCBpbnRlbF9wcmVwYXJlX2RwX2RkaV9i dWZmZXJzKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICplbmNvZGVyLA0KPiAgCQkJCQkJCSAgICAg ICZuX2VudHJpZXMpOw0KPiANCj4gIAkvKiBJZiB3ZSdyZSBib29zdGluZyB0aGUgY3VycmVudCwg c2V0IGJpdCAzMSBvZiB0cmFuczEgKi8NCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgJiYN Cj4gaW50ZWxfYmlvc19lbmNvZGVyX2RwX2Jvb3N0X2xldmVsKGVuY29kZXItPmRldmRhdGEpKQ0K PiArCWlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkgJiYgIUlTX0JST1hUT04oZGV2X3By aXYpICYmDQo+ICsJICAgIGludGVsX2Jpb3NfZW5jb2Rlcl9kcF9ib29zdF9sZXZlbChlbmNvZGVy LT5kZXZkYXRhKSkNCj4gIAkJaWJvb3N0X2JpdCA9IERESV9CVUZfQkFMQU5DRV9MRUdfRU5BQkxF Ow0KPiANCj4gIAlmb3IgKGkgPSAwOyBpIDwgbl9lbnRyaWVzOyBpKyspIHsNCj4gQEAgLTE0Niw3 ICsxNDcsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX2hkbWlfZGRpX2J1ZmZlcnMoc3Ry dWN0DQo+IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJCWxldmVsID0gbl9lbnRyaWVzIC0g MTsNCj4gDQo+ICAJLyogSWYgd2UncmUgYm9vc3RpbmcgdGhlIGN1cnJlbnQsIHNldCBiaXQgMzEg b2YgdHJhbnMxICovDQo+IC0JaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpICYmDQo+IGludGVsX2Jp b3NfZW5jb2Rlcl9oZG1pX2Jvb3N0X2xldmVsKGVuY29kZXItPmRldmRhdGEpKQ0KPiArCWlmIChJ U19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkgJiYgIUlTX0JST1hUT04oZGV2X3ByaXYpICYmDQo+ ICsJICAgIGludGVsX2Jpb3NfZW5jb2Rlcl9oZG1pX2Jvb3N0X2xldmVsKGVuY29kZXItPmRldmRh dGEpKQ0KPiAgCQlpYm9vc3RfYml0ID0gRERJX0JVRl9CQUxBTkNFX0xFR19FTkFCTEU7DQo+IA0K PiAgCS8qIEVudHJ5IDkgaXMgZm9yIEhETUk6ICovDQo+IEBAIC03NTksNyArNzYxLDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BpcGVzKHN0cnVjdA0KPiBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLA0KPiAgCQkqaXNfZHBfbXN0ID0gbXN0X3BpcGVfbWFzazsNCj4gDQo+ICBv dXQ6DQo+IC0JaWYgKCpwaXBlX21hc2sgJiYgSVNfR0VOOV9MUChkZXZfcHJpdikpIHsNCj4gKwlp ZiAoKnBpcGVfbWFzayAmJiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwNCj4gSVNfQlJPWFRP TihkZXZfcHJpdikpKSB7DQo+ICAJCXRtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIEJYVF9Q SFlfQ1RMKHBvcnQpKTsNCj4gIAkJaWYgKCh0bXAgJiAoQlhUX1BIWV9DTU5MQU5FX1BPV0VSRE9X Tl9BQ0sgfA0KPiAgCQkJICAgIEJYVF9QSFlfTEFORV9QT1dFUkRPV05fQUNLIHwNCj4gQEAgLTk4 Nyw3ICs5ODksNyBAQCBzdGF0aWMgdTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBp bnRlbF9kcA0KPiAqaW50ZWxfZHAsDQo+ICAJCQlpY2xfZ2V0X21nX2J1Zl90cmFucyhlbmNvZGVy LCBjcnRjX3N0YXRlLCAmbl9lbnRyaWVzKTsNCj4gIAl9IGVsc2UgaWYgKElTX0NBTk5PTkxBS0Uo ZGV2X3ByaXYpKSB7DQo+ICAJCWNubF9nZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUs ICZuX2VudHJpZXMpOw0KPiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsNCj4g Kwl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3By aXYpKSB7DQo+ICAJCWJ4dF9nZXRfYnVmX3RyYW5zKGVuY29kZXIsIGNydGNfc3RhdGUsICZuX2Vu dHJpZXMpOw0KPiAgCX0gZWxzZSB7DQo+ICAJCWlmIChpbnRlbF9jcnRjX2hhc190eXBlKGNydGNf c3RhdGUsIElOVEVMX09VVFBVVF9FRFApKQ0KPiBAQCAtMTU1NSw3ICsxNTU3LDcgQEAgaHN3X3Nl dF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsDQo+ICAJaW50ZWxfZHAt PkRQICY9IH5ERElfQlVGX0VNUF9NQVNLOw0KPiAgCWludGVsX2RwLT5EUCB8PSBzaWduYWxfbGV2 ZWxzOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpDQo+ICsJaWYgKElTX0RJU1BM QVlfVkVSKGRldl9wcml2LCA5KSAmJiAhSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCXNrbF9k ZGlfc2V0X2lib29zdChlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7DQo+IA0KPiAgCWludGVs X2RlX3dyaXRlKGRldl9wcml2LCBERElfQlVGX0NUTChwb3J0KSwgaW50ZWxfZHAtPkRQKTsNCj4g QEAgLTI2NDgsNyArMjY1MCw3IEBAIHN0YXRpYyB2b2lkIGhzd19kZGlfcHJlX2VuYWJsZV9kcChz dHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwNCj4gIAkJaWNsX2RkaV92c3dpbmdf c2VxdWVuY2UoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbGV2ZWwpOw0KPiAgCWVsc2UgaWYgKElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpKQ0KPiAgCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVy LCBjcnRjX3N0YXRlLCBsZXZlbCk7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikp DQo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZf cHJpdikpDQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGNydGNfc3RhdGUs IGxldmVsKTsNCj4gIAllbHNlDQo+ICAJCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoZW5j b2RlciwgY3J0Y19zdGF0ZSk7DQo+IEBAIC0zMDk2LDE2ICszMDk4LDE2IEBAIHN0YXRpYyB2b2lk IGludGVsX2VuYWJsZV9kZGlfaGRtaShzdHJ1Y3QNCj4gaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSwNCj4gIAkJaWNsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgY3J0Y19zdGF0ZSwgbGV2 ZWwpOw0KPiAgCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQ0KPiAgCQljbmxfZGRp X3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBjcnRjX3N0YXRlLCBsZXZlbCk7DQo+IC0JZWxzZSBp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZf cHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVl bmNlKGVuY29kZXIsIGNydGNfc3RhdGUsIGxldmVsKTsNCj4gIAllbHNlDQo+ICAJCWludGVsX3By ZXBhcmVfaGRtaV9kZGlfYnVmZmVycyhlbmNvZGVyLCBsZXZlbCk7DQo+IA0KPiAtCWlmIChJU19H RU45X0JDKGRldl9wcml2KSkNCj4gKwlpZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYsIDkpICYm ICFJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJc2tsX2RkaV9zZXRfaWJvb3N0KGVuY29kZXIs IGNydGNfc3RhdGUsIGxldmVsKTsNCj4gDQo+ICAJLyogRGlzcGxheSBXQSAjMTE0Mzogc2tsLGti bCxjZmwgKi8NCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsNCj4gKwlpZiAoSVNfRElT UExBWV9WRVIoZGV2X3ByaXYsIDkpICYmICFJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQkv Kg0KPiAgCQkgKiBGb3Igc29tZSByZWFzb24gdGhlc2UgY2hpY2tlbiBiaXRzIGhhdmUgYmVlbg0K PiAgCQkgKiBzdHVmZmVkIGludG8gYSB0cmFuc2NvZGVyIHJlZ2lzdGVyLCBldmVudCB0aG91Z2gN Cj4gQEAgLTMzMjEsNyArMzMyMyw3IEBAIGludGVsX2RkaV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlDQo+ICpzdGF0ZSwNCj4gIAkJICogVHlwZS1DIHBvcnRzLiAgU2tp cCB0aGlzIHN0ZXAgZm9yIFRCVC4NCj4gIAkJICovDQo+ICAJCWludGVsX3RjX3BvcnRfc2V0X2Zp YV9sYW5lX2NvdW50KGRpZ19wb3J0LCBjcnRjX3N0YXRlLQ0KPiA+bGFuZV9jb3VudCk7DQo+IC0J ZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFL RShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCWJ4dF9kZGlfcGh5X3Nl dF9sYW5lX29wdGltX21hc2soZW5jb2RlciwNCj4gIAkJCQkJCWNydGNfc3RhdGUtDQo+ID5sYW5l X2xhdF9vcHRpbV9tYXNrKTsNCj4gIH0NCj4gQEAgLTM2NzksNyArMzY4MSw3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICplbmNvZGVy LA0KPiAgCWlmICghcGlwZV9jb25maWctPmJpZ2pvaW5lcl9zbGF2ZSkNCj4gIAkJZGRpX2RvdGNs b2NrX2dldChwaXBlX2NvbmZpZyk7DQo+IA0KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkN Cj4gKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikp DQo+ICAJCXBpcGVfY29uZmlnLT5sYW5lX2xhdF9vcHRpbV9tYXNrID0NCj4gIAkJCWJ4dF9kZGlf cGh5X2dldF9sYW5lX2xhdF9vcHRpbV9tYXNrKGVuY29kZXIpOw0KPiANCj4gQEAgLTM4ODUsNyAr Mzg4Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZGRpX2NvbXB1dGVfY29uZmlnKHN0cnVjdA0KPiBp bnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiAgCQkJcGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJs ZWQgfHwNCj4gIAkJCXBpcGVfY29uZmlnLT5jcmNfZW5hYmxlZDsNCj4gDQo+IC0JaWYgKElTX0dF TjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19C Uk9YVE9OKGRldl9wcml2KSkNCj4gIAkJcGlwZV9jb25maWctPmxhbmVfbGF0X29wdGltX21hc2sg PQ0KPiAgCQkJYnh0X2RkaV9waHlfY2FsY19sYW5lX2xhdF9vcHRpbV9tYXNrKHBpcGVfY29uZmln LQ0KPiA+bGFuZV9jb3VudCk7DQo+IA0KPiBAQCAtNDA1Myw3ICs0MDU1LDcgQEAgaW50ZWxfZGRp X2luaXRfZHBfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQNCj4gKmRpZ19wb3J0 KQ0KPiAgCQlkaWdfcG9ydC0+ZHAuc2V0X3NpZ25hbF9sZXZlbHMgPSBpY2xfc2V0X3NpZ25hbF9s ZXZlbHM7DQo+ICAJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpDQo+ICAJCWRpZ19w b3J0LT5kcC5zZXRfc2lnbmFsX2xldmVscyA9IGNubF9zZXRfc2lnbmFsX2xldmVsczsNCj4gLQll bHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwllbHNlIGlmIChJU19HRU1JTklMQUtF KGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJZGlnX3BvcnQtPmRwLnNl dF9zaWduYWxfbGV2ZWxzID0gYnh0X3NldF9zaWduYWxfbGV2ZWxzOw0KPiAgCWVsc2UNCj4gIAkJ ZGlnX3BvcnQtPmRwLnNldF9zaWduYWxfbGV2ZWxzID0gaHN3X3NldF9zaWduYWxfbGV2ZWxzOw0K PiBAQCAtNDI5Niw3ICs0Mjk4LDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGRpX2FfZm9yY2VfNF9s YW5lcyhzdHJ1Y3QNCj4gaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCkNCj4gIAkvKiBCcm94 dG9uL0dlbWluaWxha2U6IEJzcGVjIHNheXMgdGhhdCBERElfQV80X0xBTkVTIGlzIHRoZSBvbmx5 DQo+ICAJICogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbg0KPiAg CSAqLw0KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwlpZiAoSVNfR0VNSU5JTEFL RShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCXJldHVybiB0cnVlOw0K PiANCj4gIAkvKiBDYW5ub25sYWtlOiBNb3N0IG9mIFNLVXMgZG9uJ3Qgc3VwcG9ydCBERElfRSwg YW5kIHRoZSBvbmx5DQo+IEBAIC00NTg1LDEwICs0NTg3LDEwIEBAIHZvaWQgaW50ZWxfZGRpX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkN Cj4gIAkJZW5jb2Rlci0+ZGlzYWJsZV9jbG9jayA9IGNubF9kZGlfZGlzYWJsZV9jbG9jazsNCj4g IAkJZW5jb2Rlci0+aXNfY2xvY2tfZW5hYmxlZCA9IGNubF9kZGlfaXNfY2xvY2tfZW5hYmxlZDsN Cj4gIAkJZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGNubF9kZGlfZ2V0X2NvbmZpZzsNCj4gLQl9IGVs c2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19HRU1JTklM QUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQkvKiBCWFQvR0xL IGhhdmUgZml4ZWQgUExMLT5wb3J0IG1hcHBpbmcgKi8NCj4gIAkJZW5jb2Rlci0+Z2V0X2NvbmZp ZyA9IGJ4dF9kZGlfZ2V0X2NvbmZpZzsNCj4gLQl9IGVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkpIHsNCj4g IAkJZW5jb2Rlci0+ZW5hYmxlX2Nsb2NrID0gc2tsX2RkaV9lbmFibGVfY2xvY2s7DQo+ICAJCWVu Y29kZXItPmRpc2FibGVfY2xvY2sgPSBza2xfZGRpX2Rpc2FibGVfY2xvY2s7DQo+ICAJCWVuY29k ZXItPmlzX2Nsb2NrX2VuYWJsZWQgPSBza2xfZGRpX2lzX2Nsb2NrX2VuYWJsZWQ7DQo+IEBAIC00 NjcyLDcgKzQ2NzQsOCBAQCB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwNCj4gZW51bSBwb3J0IHBvcnQpDQo+ICAJCWVsc2UNCj4gIAkJCWRpZ19w b3J0LT5jb25uZWN0ZWQgPSBscHRfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZDsNCj4gIAl9IGVsc2Ug aWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSA4KSB7DQo+IC0JCWlmIChwb3J0ID09IFBPUlRf QSB8fCBJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwkJaWYgKHBvcnQgPT0gUE9SVF9BIHx8IElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8DQo+ICsJCSAgICBJU19CUk9YVE9OKGRldl9wcml2KSkN Cj4gIAkJCWRpZ19wb3J0LT5jb25uZWN0ZWQgPSBiZHdfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZDsN Cj4gIAkJZWxzZQ0KPiAgCQkJZGlnX3BvcnQtPmNvbm5lY3RlZCA9IGxwdF9kaWdpdGFsX3BvcnRf Y29ubmVjdGVkOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGlfYnVmX3RyYW5zLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2RkaV9idWZfdHJhbnMuYw0KPiBpbmRleCA1ZDljZTYwNDJlODcuLmZkZDI1ODYxZWRkNSAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlfYnVm X3RyYW5zLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGlf YnVmX3RyYW5zLmMNCj4gQEAgLTg4MSw3ICs4ODEsNyBAQCBpbnRlbF9kZGlfZ2V0X2J1Zl90cmFu c19lZHAoc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsIGludCAqbl9lbnRyaWVzKQ0K PiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsNCj4g KwlpZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYsIDkpICYmICFJU19CUk9YVE9OKGRldl9wcml2 KSkgew0KPiAgCQljb25zdCBzdHJ1Y3QgZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9 DQo+ICAJCQlza2xfZ2V0X2J1Zl90cmFuc19lZHAoZW5jb2Rlciwgbl9lbnRyaWVzKTsNCj4gIAkJ Km5fZW50cmllcyA9IHNrbF9idWZfdHJhbnNfbnVtX2VudHJpZXMoZW5jb2Rlci0+cG9ydCwNCj4g Km5fZW50cmllcyk7DQo+IEBAIC05MTksNyArOTE5LDcgQEAgaW50ZWxfZGRpX2dldF9idWZfdHJh bnNfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiAqZW5jb2RlciwNCj4gIHsNCj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsNCj4gDQo+IC0JaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKElTX0RJU1BM QVlfVkVSKGRldl9wcml2LCA5KSAmJiAhSVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJcmV0 dXJuIHNrbF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2X3ByaXYsIG5fZW50cmllcyk7DQo+ICAJfSBl bHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7DQo+ICAJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGJkd19kZGlfdHJhbnNsYXRpb25zX2hkbWkpOw0KPiBAQCAtMTM3MCwxMCArMTM3MCwx MCBAQCBpbnQgaW50ZWxfZGRpX2hkbWlfbnVtX2VudHJpZXMoc3RydWN0DQo+IGludGVsX2VuY29k ZXIgKmVuY29kZXIsDQo+ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgew0K PiAgCQljbmxfZ2V0X2J1Zl90cmFuc19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOw0KPiAgCQkq ZGVmYXVsdF9lbnRyeSA9IG5fZW50cmllcyAtIDE7DQo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQ KGRldl9wcml2KSkgew0KPiArCX0gZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwg SVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJYnh0X2dldF9idWZfdHJhbnNfaGRtaShlbmNv ZGVyLCAmbl9lbnRyaWVzKTsNCj4gIAkJKmRlZmF1bHRfZW50cnkgPSBuX2VudHJpZXMgLSAxOw0K PiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsNCj4gKwl9IGVsc2UgaWYgKElT X0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSkgew0KPiAgCQlpbnRlbF9kZGlfZ2V0X2J1Zl90cmFu c19oZG1pKGVuY29kZXIsICZuX2VudHJpZXMpOw0KPiAgCQkqZGVmYXVsdF9lbnRyeSA9IDg7DQo+ ICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKSB7DQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYw0KPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IGluZGV4IDIzMDBkNThiYTQ3 Zi4uZDBjMDhjMTJmODZiIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYw0KPiBAQCAtNjc3Miw3ICs2NzcyLDcgQEAgc3RhdGljIGJvb2wgaHN3 X2dldF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Yw0KPiAqY3J0YywNCj4gDQo+ICAJYWN0 aXZlID0gaHN3X2dldF90cmFuc2NvZGVyX3N0YXRlKGNydGMsIHBpcGVfY29uZmlnLA0KPiAmcG93 ZXJfZG9tYWluX3NldCk7DQo+IA0KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSAmJg0KPiAr CWlmICgoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpICYm DQo+ICAJICAgIGJ4dF9nZXRfZHNpX3RyYW5zY29kZXJfc3RhdGUoY3J0YywgcGlwZV9jb25maWcs DQo+ICZwb3dlcl9kb21haW5fc2V0KSkgew0KPiAgCQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRy bSwgYWN0aXZlKTsNCj4gIAkJYWN0aXZlID0gdHJ1ZTsNCj4gQEAgLTc2OTIsNyArNzY5Miw4IEBA IHN0YXRpYyB1MTYgc2tsX2xpbmV0aW1lX3dtKGNvbnN0IHN0cnVjdA0KPiBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQ0KPiAgCQkJCSAgIGNydGNfc3RhdGUtPnBpeGVsX3JhdGUpOw0KPiAN Cj4gIAkvKiBEaXNwbGF5IFdBICMxMTM1OiBCWFQ6QUxMIEdMSzpBTEwgKi8NCj4gLQlpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikgJiYgZGV2X3ByaXYtPmlwY19lbmFibGVkKQ0KPiArCWlmICgoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpICYmDQo+ICsJICAg IGRldl9wcml2LT5pcGNfZW5hYmxlZCkNCj4gIAkJbGluZXRpbWVfd20gLz0gMjsNCj4gDQo+ICAJ cmV0dXJuIG1pbihsaW5ldGltZV93bSwgMHgxZmYpOw0KPiBAQCAtMTE2OTQsNyArMTE2OTUsNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRzKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikNCj4gIAkJCWludGVsX2RkaV9pbml0KGRldl9wcml2LCBQT1JUX0YpOw0K PiANCj4gIAkJaWNsX2RzaV9pbml0KGRldl9wcml2KTsNCj4gLQl9IGVsc2UgaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8 fCBJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQkvKg0KPiAgCQkgKiBGSVhNRTogQnJveHRv biBkb2Vzbid0IHN1cHBvcnQgcG9ydCBkZXRlY3Rpb24gdmlhIHRoZQ0KPiAgCQkgKiBERElfQlVG X0NUTF9BIG9yIFNGVVNFX1NUUkFQIHJlZ2lzdGVycywgZmluZCBhbm90aGVyIHdheQ0KPiB0bw0K PiBAQCAtMTE3MTksNyArMTE3MjAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXR1cF9vdXRwdXRz KHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAkJICovDQo+ICAJCWZv dW5kID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgRERJX0JVRl9DVEwoUE9SVF9BKSkgJg0KPiBE RElfSU5JVF9ESVNQTEFZX0RFVEVDVEVEOw0KPiAgCQkvKiBXYUlnbm9yZURESUFTdHJhcDogc2ts ICovDQo+IC0JCWlmIChmb3VuZCB8fCBJU19HRU45X0JDKGRldl9wcml2KSkNCj4gKwkJaWYgKGZv dW5kIHx8IElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSkNCj4gIAkJCWludGVsX2RkaV9pbml0 KGRldl9wcml2LCBQT1JUX0EpOw0KPiANCj4gIAkJLyogRERJIEIsIEMsIEQsIGFuZCBGIGRldGVj dGlvbiBpcyBpbmRpY2F0ZWQgYnkgdGhlIFNGVVNFX1NUUkFQDQo+IEBAIC0xMTc0NCw3ICsxMTc0 NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldHVwX291dHB1dHMoc3RydWN0DQo+IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCQkvKg0KPiAgCQkgKiBPbiBTS0wgd2UgZG9uJ3QgaGF2 ZSBhIHdheSB0byBkZXRlY3QgRERJLUUgc28gd2UgcmVseSBvbg0KPiBWQlQuDQo+ICAJCSAqLw0K PiAtCQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgJiYNCj4gKwkJaWYgKElTX0RJU1BMQVlfVkVS KGRldl9wcml2LCA5KSAmJg0KPiAgCQkgICAgaW50ZWxfYmlvc19pc19wb3J0X3ByZXNlbnQoZGV2 X3ByaXYsIFBPUlRfRSkpDQo+ICAJCQlpbnRlbF9kZGlfaW5pdChkZXZfcHJpdiwgUE9SVF9FKTsN Cj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfZGVidWdmcy5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5X2RlYnVnZnMuYw0KPiBpbmRleCA1NjQ1MDlhNGU2NjYuLjE4M2M0MTRkNTU0YSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2Rl YnVnZnMuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3Bs YXlfZGVidWdmcy5jDQo+IEBAIC01NjksNyArNTY5LDcgQEAgc3RhdGljIGludCBpOTE1X2RtY19p bmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZA0KPiAqdW51c2VkKQ0KPiAgCX0gZWxzZSB7DQo+ ICAJCWRjNV9yZWcgPSBJU19CUk9YVE9OKGRldl9wcml2KSA/IEJYVF9DU1JfREMzX0RDNV9DT1VO VA0KPiA6DQo+ICAJCQkJCQkgU0tMX0NTUl9EQzNfREM1X0NPVU5UOw0KPiAtCQlpZiAoIUlTX0dF TjlfTFAoZGV2X3ByaXYpKQ0KPiArCQlpZiAoIUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpICYmICFJ U19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJCWRjNl9yZWcgPSBTS0xfQ1NSX0RDNV9EQzZfQ09V TlQ7DQo+ICAJfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV9wb3dlci5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMNCj4gaW5kZXggOTkxMjZjYWY1NzQ3Li45NDE5YWU4YzYx MTEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV9wb3dlci5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheV9wb3dlci5jDQo+IEBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIGJvb2wgaHN3X3Bv d2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ ICAJICogQklPUydzIG93biByZXF1ZXN0IGJpdHMsIHdoaWNoIGFyZSBmb3JjZWQtb24gZm9yIHRo ZXNlIHBvd2VyIHdlbGxzDQo+ICAJICogd2hlbiBleGl0aW5nIERDNS82Lg0KPiAgCSAqLw0KPiAt CWlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkgJiYgIUlTX0dFTjlfTFAoZGV2X3ByaXYp ICYmDQo+ICsJaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSAmJiAhSVNfQlJPWFRPTihk ZXZfcHJpdikgJiYNCj4gIAkgICAgKGlkID09IFNLTF9ESVNQX1BXXzEgfHwgaWQgPT0gU0tMX0RJ U1BfUFdfTUlTQ19JTykpDQo+ICAJCXZhbCB8PSBpbnRlbF9kZV9yZWFkKGRldl9wcml2LCByZWdz LT5iaW9zKTsNCj4gDQo+IEBAIC04MDksNyArODA5LDcgQEAgc3RhdGljIHUzMiBnZW45X2RjX21h c2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2KQ0KPiAgCQkJCQkgIHwgRENf U1RBVEVfRU5fREM5Ow0KPiAgCWVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCAxMSkp DQo+ICAJCW1hc2sgfD0gRENfU1RBVEVfRU5fVVBUT19EQzYgfCBEQ19TVEFURV9FTl9EQzk7DQo+ IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJZWxzZSBpZiAoSVNfR0VNSU5J TEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCW1hc2sgfD0gRENf U1RBVEVfRU5fREM5Ow0KPiAgCWVsc2UNCj4gIAkJbWFzayB8PSBEQ19TVEFURV9FTl9VUFRPX0RD NjsNCj4gQEAgLTEwNjAsNyArMTA2MCw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZW5hYmxlX2RjNShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ICAJZHJtX2RiZ19rbXMoJmRl dl9wcml2LT5kcm0sICJFbmFibGluZyBEQzVcbiIpOw0KPiANCj4gIAkvKiBXYSBEaXNwbGF5ICMx MTgzOiBza2wsa2JsLGNmbCAqLw0KPiAtCWlmIChJU19HRU45X0JDKGRldl9wcml2KSkNCj4gKwlp ZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYsIDkpICYmICFJU19CUk9YVE9OKGRldl9wcml2KSkN Cj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIEdFTjhfQ0hJQ0tFTl9EQ1BSXzEsDQo+ICAJ CQkgICAgICAgaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgR0VOOF9DSElDS0VOX0RDUFJfMSkgfA0K PiBTS0xfU0VMRUNUX0FMVEVSTkFURV9EQ19FWElUKTsNCj4gDQo+IEBAIC0xMDg3LDcgKzEwODcs NyBAQCBzdGF0aWMgdm9pZCBza2xfZW5hYmxlX2RjNihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0K PiAqZGV2X3ByaXYpDQo+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJFbmFibGluZyBE QzZcbiIpOw0KPiANCj4gIAkvKiBXYSBEaXNwbGF5ICMxMTgzOiBza2wsa2JsLGNmbCAqLw0KPiAt CWlmIChJU19HRU45X0JDKGRldl9wcml2KSkNCj4gKwlpZiAoSVNfRElTUExBWV9WRVIoZGV2X3By aXYsIDkpICYmICFJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2 X3ByaXYsIEdFTjhfQ0hJQ0tFTl9EQ1BSXzEsDQo+ICAJCQkgICAgICAgaW50ZWxfZGVfcmVhZChk ZXZfcHJpdiwgR0VOOF9DSElDS0VOX0RDUFJfMSkgfA0KPiBTS0xfU0VMRUNUX0FMVEVSTkFURV9E Q19FWElUKTsNCj4gDQo+IEBAIC0xMTg5LDcgKzExODksNyBAQCBzdGF0aWMgdm9pZCBnZW45X2Rp c2FibGVfZGNfc3RhdGVzKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4g DQo+ICAJZ2VuOV9hc3NlcnRfZGJ1Zl9lbmFibGVkKGRldl9wcml2KTsNCj4gDQo+IC0JaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJ U19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJYnh0X3ZlcmlmeV9kZGlfcGh5X3Bvd2VyX3dlbGxz KGRldl9wcml2KTsNCj4gDQo+ICAJaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSAxMSkNCj4g QEAgLTQ1MzcsMTAgKzQ1MzcsMTAgQEAgc3RhdGljIHUzMiBnZXRfYWxsb3dlZF9kY19tYXNrKGNv bnN0IHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gIAkJbWF4X2RjID0g MzsNCj4gIAllbHNlIGlmIChESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0gMTIpDQo+ICAJCW1heF9k YyA9IDQ7DQo+IC0JZWxzZSBpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExIHx8IElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpIHx8DQo+IElTX0dFTjlfQkMoZGV2X3ByaXYpKQ0KPiAtCQltYXhf ZGMgPSAyOw0KPiAtCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWVsc2UgaWYg KElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiAgCQlt YXhfZGMgPSAxOw0KPiArCWVsc2UgaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSA5KQ0KPiAr CQltYXhfZGMgPSAyOw0KPiAgCWVsc2UNCj4gIAkJbWF4X2RjID0gMDsNCj4gDQo+IEBAIC00NTQ5 LDcgKzQ1NDksOCBAQCBzdGF0aWMgdTMyIGdldF9hbGxvd2VkX2RjX21hc2soY29uc3Qgc3RydWN0 DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiAgCSAqIG5vdCBkZXBlbmRpbmcgb24g dGhlIERNQyBmaXJtd2FyZS4gSXQncyBuZWVkZWQgYnkgc3lzdGVtDQo+ICAJICogc3VzcGVuZC9y ZXN1bWUsIHNvIGFsbG93IGl0IHVuY29uZGl0aW9uYWxseS4NCj4gIAkgKi8NCj4gLQltYXNrID0g SVNfR0VOOV9MUChkZXZfcHJpdikgfHwgRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExID8NCj4g KwltYXNrID0gSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikg fHwNCj4gKwkJRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExID8NCj4gIAkgICAgICAgRENfU1RB VEVfRU5fREM5IDogMDsNCj4gDQo+ICAJaWYgKCFkZXZfcHJpdi0+cGFyYW1zLmRpc2FibGVfcG93 ZXJfd2VsbCkNCj4gQEAgLTQ2OTIsNyArNDY5Myw3IEBAIGludCBpbnRlbF9wb3dlcl9kb21haW5z X2luaXQoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgCQllcnIgPSBz ZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgZ2xrX3Bvd2VyX3dlbGxzKTsNCj4gIAl9IGVs c2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7DQo+ICAJCWVyciA9IHNldF9wb3dlcl93ZWxs cyhwb3dlcl9kb21haW5zLCBieHRfcG93ZXJfd2VsbHMpOw0KPiAtCX0gZWxzZSBpZiAoSVNfR0VO OV9CQyhkZXZfcHJpdikpIHsNCj4gKwl9IGVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2 LCA5KSkgew0KPiAgCQllcnIgPSBzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgc2tsX3Bv d2VyX3dlbGxzKTsNCj4gIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7DQo+ ICAJCWVyciA9IHNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBjaHZfcG93ZXJfd2VsbHMp Ow0KPiBAQCAtNTYyMywxMCArNTYyNCwxMCBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfaW5p dF9odyhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgYm9vbCByZXN1bWUpDQo+ICAJ CWljbF9kaXNwbGF5X2NvcmVfaW5pdChpOTE1LCByZXN1bWUpOw0KPiAgCX0gZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShpOTE1KSkgew0KPiAgCQljbmxfZGlzcGxheV9jb3JlX2luaXQoaTkxNSwgcmVz dW1lKTsNCj4gLQl9IGVsc2UgaWYgKElTX0dFTjlfQkMoaTkxNSkpIHsNCj4gLQkJc2tsX2Rpc3Bs YXlfY29yZV9pbml0KGk5MTUsIHJlc3VtZSk7DQo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGk5 MTUpKSB7DQo+ICsJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGk5MTUpIHx8IElTX0JST1hUT04o aTkxNSkpIHsNCj4gIAkJYnh0X2Rpc3BsYXlfY29yZV9pbml0KGk5MTUsIHJlc3VtZSk7DQo+ICsJ fSBlbHNlIGlmIChJU19ESVNQTEFZX1ZFUihpOTE1LCA5KSkgew0KPiArCQlza2xfZGlzcGxheV9j b3JlX2luaXQoaTkxNSwgcmVzdW1lKTsNCj4gIAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoaTkx NSkpIHsNCj4gIAkJbXV0ZXhfbG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7DQo+ICAJCWNodl9w aHlfY29udHJvbF9pbml0KGk5MTUpOw0KPiBAQCAtNTc4NCwxMCArNTc4NSwxMCBAQCB2b2lkIGlu dGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwNCj4gIAkJaWNsX2Rpc3BsYXlfY29yZV91bmluaXQoaTkxNSk7DQo+ICAJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShpOTE1KSkNCj4gIAkJY25sX2Rpc3BsYXlfY29yZV91bmluaXQoaTkxNSk7DQo+ IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhpOTE1KSkNCj4gLQkJc2tsX2Rpc3BsYXlfY29yZV91bmlu aXQoaTkxNSk7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChpOTE1KSkNCj4gKwllbHNlIGlmIChJ U19HRU1JTklMQUtFKGk5MTUpIHx8IElTX0JST1hUT04oaTkxNSkpDQo+ICAJCWJ4dF9kaXNwbGF5 X2NvcmVfdW5pbml0KGk5MTUpOw0KPiArCWVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGk5MTUsIDkp KQ0KPiArCQlza2xfZGlzcGxheV9jb3JlX3VuaW5pdChpOTE1KTsNCj4gDQo+ICAJcG93ZXJfZG9t YWlucy0+ZGlzcGxheV9jb3JlX3N1c3BlbmRlZCA9IHRydWU7DQo+ICB9DQo+IEBAIC01OTA4LDcg KzU5MDksOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3ZlcmlmeV9zdGF0ZShz dHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkNCj4gDQo+ICB2b2lkIGludGVsX2Rpc3Bs YXlfcG93ZXJfc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQ0KPiAg ew0KPiAtCWlmIChESVNQTEFZX1ZFUihpOTE1KSA+PSAxMSB8fCBJU19HRU45X0xQKGk5MTUpKSB7 DQo+ICsJaWYgKERJU1BMQVlfVkVSKGk5MTUpID49IDExIHx8IElTX0dFTUlOSUxBS0UoaTkxNSkg fHwNCj4gKwkgICAgSVNfQlJPWFRPTihpOTE1KSkgew0KPiAgCQlieHRfZW5hYmxlX2RjOShpOTE1 KTsNCj4gIAkJLyogVHdlYWtlZCBXYV8xNDAxMDY4NTMzMjppY3AsanNwLG1jYyAqLw0KPiAgCQlp ZiAoSU5URUxfUENIX1RZUEUoaTkxNSkgPj0gUENIX0lDUCAmJg0KPiBJTlRFTF9QQ0hfVFlQRShp OTE1KSA8PSBQQ0hfTUNDKQ0KPiBAQCAtNTkyMSw3ICs1OTIzLDggQEAgdm9pZCBpbnRlbF9kaXNw bGF5X3Bvd2VyX3N1c3BlbmRfbGF0ZShzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkN Cj4gDQo+ICB2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcmVzdW1lX2Vhcmx5KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQ0KPiAgew0KPiAtCWlmIChESVNQTEFZX1ZFUihpOTE1KSA+PSAx MSB8fCBJU19HRU45X0xQKGk5MTUpKSB7DQo+ICsJaWYgKERJU1BMQVlfVkVSKGk5MTUpID49IDEx IHx8IElTX0dFTUlOSUxBS0UoaTkxNSkgfHwNCj4gKwkgICAgSVNfQlJPWFRPTihpOTE1KSkgew0K PiAgCQlnZW45X3Nhbml0aXplX2RjX3N0YXRlKGk5MTUpOw0KPiAgCQlieHRfZGlzYWJsZV9kYzko aTkxNSk7DQo+ICAJCS8qIFR3ZWFrZWQgV2FfMTQwMTA2ODUzMzI6aWNwLGpzcCxtY2MgKi8NCj4g QEAgLTU5MzgsNyArNTk0MSw3IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9zdXNwZW5kKHN0 cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICppOTE1KQ0KPiAgCWlmIChESVNQTEFZX1ZFUihpOTE1 KSA+PSAxMSkgew0KPiAgCQlpY2xfZGlzcGxheV9jb3JlX3VuaW5pdChpOTE1KTsNCj4gIAkJYnh0 X2VuYWJsZV9kYzkoaTkxNSk7DQo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGk5MTUpKSB7DQo+ ICsJfSBlbHNlIGlmIChJU19HRU1JTklMQUtFKGk5MTUpIHx8IElTX0JST1hUT04oaTkxNSkpIHsN Cj4gIAkJYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoaTkxNSk7DQo+ICAJCWJ4dF9lbmFibGVfZGM5 KGk5MTUpOw0KPiAgCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChpOTE1KSB8fCBJU19CUk9BRFdFTEwo aTkxNSkpIHsNCj4gQEAgLTU5NTksNyArNTk2Miw3IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dl cl9yZXN1bWUoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ICAJCQkJIERDX1NU QVRFX0VOX1VQVE9fREM1KQ0KPiAgCQkJCWdlbjlfZW5hYmxlX2RjNShpOTE1KTsNCj4gIAkJfQ0K PiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9MUChpOTE1KSkgew0KPiArCX0gZWxzZSBpZiAoSVNfR0VN SU5JTEFLRShpOTE1KSB8fCBJU19CUk9YVE9OKGk5MTUpKSB7DQo+ICAJCWJ4dF9kaXNhYmxlX2Rj OShpOTE1KTsNCj4gIAkJYnh0X2Rpc3BsYXlfY29yZV9pbml0KGk5MTUsIHRydWUpOw0KPiAgCQlp ZiAoaTkxNS0+Y3NyLmRtY19wYXlsb2FkICYmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2RwLmMNCj4gaW5kZXggZDgxYjhkMjM4MTYzLi42MTk0YTcwOTI0ZGIgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuYw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMNCj4gQEAgLTMwMSwxMCAr MzAxLDEwIEBAIGludGVsX2RwX3NldF9zb3VyY2VfcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkNCj4gIAkJCW1heF9yYXRlID0gZWhsX21heF9zb3VyY2VfcmF0ZShpbnRlbF9kcCk7DQo+ ICAJCWVsc2UNCj4gIAkJCW1heF9yYXRlID0gaWNsX21heF9zb3VyY2VfcmF0ZShpbnRlbF9kcCk7 DQo+IC0JfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkgew0KPiArCX0gZWxzZSBpZiAo SVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJ c291cmNlX3JhdGVzID0gYnh0X3JhdGVzOw0KPiAgCQlzaXplID0gQVJSQVlfU0laRShieHRfcmF0 ZXMpOw0KPiAtCX0gZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsNCj4gKwl9IGVsc2Ug aWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSkgew0KPiAgCQlzb3VyY2VfcmF0ZXMgPSBz a2xfcmF0ZXM7DQo+ICAJCXNpemUgPSBBUlJBWV9TSVpFKHNrbF9yYXRlcyk7DQo+ICAJfSBlbHNl IGlmICgoSVNfSEFTV0VMTChkZXZfcHJpdikgJiYgIUlTX0hTV19VTFgoZGV2X3ByaXYpKSB8fA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3Qu Yw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMNCj4gaW5k ZXggMmRhYTNmNjc3OTFlLi4xODBmOTdjZDc0Y2IgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBfbXN0LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYw0KPiBAQCAtMTU0LDcgKzE1NCw3IEBAIHN0YXRp YyBpbnQgaW50ZWxfZHBfbXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdA0KPiBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLA0KPiAgCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlID0NCj4gIAkJ aW50ZWxfZHBfbGltaXRlZF9jb2xvcl9yYW5nZShwaXBlX2NvbmZpZywgY29ubl9zdGF0ZSk7DQo+ IA0KPiAtCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwlpZiAoSVNfR0VNSU5JTEFLRShk ZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCXBpcGVfY29uZmlnLT5sYW5l X2xhdF9vcHRpbV9tYXNrID0NCj4gIAkJCWJ4dF9kZGlfcGh5X2NhbGNfbGFuZV9sYXRfb3B0aW1f bWFzayhwaXBlX2NvbmZpZy0NCj4gPmxhbmVfY291bnQpOw0KPiANCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBsbC5jDQo+IGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsLmMNCj4gaW5kZXggM2UzYzVlZWQxNjAwLi4xNThm MjcxMjk5YTQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHBsbC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHBs bC5jDQo+IEBAIC0zNjYsMTMgKzM2NiwxMSBAQCBzdGF0aWMgYm9vbCBpbnRlbF9wbGxfaXNfdmFs aWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRldl9wcml2LA0KPiAgCWlmIChjbG9jay0+ bTEgPCBsaW1pdC0+bTEubWluIHx8IGxpbWl0LT5tMS5tYXggPCBjbG9jay0+bTEpDQo+ICAJCXJl dHVybiBmYWxzZTsNCj4gDQo+IC0JaWYgKCFJU19QSU5FVklFVyhkZXZfcHJpdikgJiYgIUlTX1ZB TExFWVZJRVcoZGV2X3ByaXYpICYmDQo+IC0JICAgICFJU19DSEVSUllWSUVXKGRldl9wcml2KSAm JiAhSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJaWYgKCFJU19QSU5FVklFVyhkZXZfcHJpdikg JiYgIUlTX0xQKGRldl9wcml2KSkNCj4gIAkJaWYgKGNsb2NrLT5tMSA8PSBjbG9jay0+bTIpDQo+ ICAJCQlyZXR1cm4gZmFsc2U7DQo+IA0KPiAtCWlmICghSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg JiYgIUlTX0NIRVJSWVZJRVcoZGV2X3ByaXYpICYmDQo+IC0JICAgICFJU19HRU45X0xQKGRldl9w cml2KSkgew0KPiArCWlmICghSVNfTFAoZGV2X3ByaXYpKSB7DQo+ICAJCWlmIChjbG9jay0+cCA8 IGxpbWl0LT5wLm1pbiB8fCBsaW1pdC0+cC5tYXggPCBjbG9jay0+cCkNCj4gIAkJCXJldHVybiBm YWxzZTsNCj4gIAkJaWYgKGNsb2NrLT5tIDwgbGltaXQtPm0ubWluIHx8IGxpbWl0LT5tLm1heCA8 IGNsb2NrLT5tKQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kcGxsX21nci5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k cGxsX21nci5jDQo+IGluZGV4IDFhZTE1OGQxMmMwNy4uZTMyZGU3Yzg0OGU5IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwbGxfbWdyLmMNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcGxsX21nci5jDQo+IEBAIC00 NDQxLDEwICs0NDQxLDEwIEBAIHZvaWQgaW50ZWxfc2hhcmVkX2RwbGxfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQ0KPiAgCQlkcGxsX21nciA9ICZpY2xfcGxsX21ncjsNCj4gIAllbHNlIGlm IChJU19DQU5OT05MQUtFKGRldl9wcml2KSkNCj4gIAkJZHBsbF9tZ3IgPSAmY25sX3BsbF9tZ3I7 DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpDQo+IC0JCWRwbGxfbWdyID0gJnNr bF9wbGxfbWdyOw0KPiAtCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWVsc2Ug aWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiAg CQlkcGxsX21nciA9ICZieHRfcGxsX21ncjsNCj4gKwllbHNlIGlmIChJU19ESVNQTEFZX1ZFUihk ZXZfcHJpdiwgOSkpDQo+ICsJCWRwbGxfbWdyID0gJnNrbF9wbGxfbWdyOw0KPiAgCWVsc2UgaWYg KEhBU19EREkoZGV2X3ByaXYpKQ0KPiAgCQlkcGxsX21nciA9ICZoc3dfcGxsX21ncjsNCj4gIAll bHNlIGlmIChIQVNfUENIX0lCWChkZXZfcHJpdikgfHwgSEFTX1BDSF9DUFQoZGV2X3ByaXYpKQ0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYmMuYw0K PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMNCj4gaW5kZXggODhl MDJlZTNhNjMxLi41YmU2YjA3Y2E4NTQgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZmJjLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9mYmMuYw0KPiBAQCAtMzAyLDcgKzMwMiw3IEBAIHN0YXRpYyB2b2lkIGdlbjdf ZmJjX2FjdGl2YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdikNCj4gIAlp bnQgdGhyZXNob2xkID0gZGV2X3ByaXYtPmZiYy50aHJlc2hvbGQ7DQo+IA0KPiAgCS8qIERpc3Bs YXkgV0EgIzA1Mjk6IHNrbCwga2JsLCBieHQuICovDQo+IC0JaWYgKElTX0dFTjlfQkMoZGV2X3By aXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKSB7DQo+ICsJaWYgKElTX0RJU1BMQVlfVkVSKGRl dl9wcml2LCA5KSkgew0KPiAgCQl1MzIgdmFsID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgQ0hJ Q0tFTl9NSVNDXzQpOw0KPiANCj4gIAkJdmFsICY9IH4oRkJDX1NUUklERV9PVkVSUklERSB8IEZC Q19TVFJJREVfTUFTSyk7DQo+IEBAIC00NDUsNyArNDQ1LDggQEAgc3RhdGljIGludCBmaW5kX2Nv bXByZXNzaW9uX3RocmVzaG9sZChzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs DQo+ICAJICogcmVzZXJ2ZWQgcmFuZ2Ugc2l6ZSwgc28gaXQgYWx3YXlzIGFzc3VtZXMgdGhlIG1h eGltdW0gKDhtYikgaXMgdXNlZC4NCj4gIAkgKiBJZiB3ZSBlbmFibGUgRkJDIHVzaW5nIGEgQ0ZC IG9uIHRoYXQgbWVtb3J5IHJhbmdlIHdlJ2xsIGdldCBGSUZPDQo+ICAJICogdW5kZXJydW5zLCBl dmVuIGlmIHRoYXQgcmFuZ2UgaXMgbm90IHJlc2VydmVkIGJ5IHRoZSBCSU9TLiAqLw0KPiAtCWlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElTX0dFTjlfQkMoZGV2X3ByaXYpKQ0KPiArCWlm IChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkg JiYNCj4gKwkJCQkgICAgICAgIUlTX0JST1hUT04oZGV2X3ByaXYpKSkNCj4gIAkJZW5kID0gcmVz b3VyY2Vfc2l6ZSgmZGV2X3ByaXYtPmRzbSkgLSA4ICogMTAyNCAqIDEwMjQ7DQo+ICAJZWxzZQ0K PiAgCQllbmQgPSBVNjRfTUFYOw0KPiBAQCAtNzU5LDcgKzc2MCw3IEBAIHN0YXRpYyB1MTYgaW50 ZWxfZmJjX2dlbjlfd2FfY2ZiX3N0cmlkZShzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpDQo+ICAJc3RydWN0IGludGVsX2ZiYyAqZmJjID0gJmRldl9wcml2LT5mYmM7DQo+ICAJ c3RydWN0IGludGVsX2ZiY19zdGF0ZV9jYWNoZSAqY2FjaGUgPSAmZmJjLT5zdGF0ZV9jYWNoZTsN Cj4gDQo+IC0JaWYgKChJU19HRU45X0JDKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2 KSkgJiYNCj4gKwlpZiAoKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSkgJiYNCj4gIAkgICAg Y2FjaGUtPmZiLm1vZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEKQ0KPiAgCQlyZXR1 cm4gRElWX1JPVU5EX1VQKGNhY2hlLT5wbGFuZS5zcmNfdywgMzIgKiBmYmMtDQo+ID50aHJlc2hv bGQpICogODsNCj4gIAllbHNlDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2dtYnVzLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2dtYnVzLmMNCj4gaW5kZXggOGRkYzIwZGFlZjY0Li4xM2JhMjgwZDAyMjggMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZ21idXMuYw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2dtYnVzLmMNCj4gQEAgLTEwNyw5 ICsxMDcsOSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGdtYnVzX3BpbiAqZ2V0X2dtYnVzX3Bpbihz dHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJCXJldHVybiAmZ21idXNf cGluc19pY3BbcGluXTsNCj4gIAllbHNlIGlmIChIQVNfUENIX0NOUChkZXZfcHJpdikpDQo+ICAJ CXJldHVybiAmZ21idXNfcGluc19jbnBbcGluXTsNCj4gLQllbHNlIGlmIChJU19HRU45X0xQKGRl dl9wcml2KSkNCj4gKwllbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9Y VE9OKGRldl9wcml2KSkNCj4gIAkJcmV0dXJuICZnbWJ1c19waW5zX2J4dFtwaW5dOw0KPiAtCWVs c2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQ0KPiArCWVsc2UgaWYgKElTX0RJU1BMQVlfVkVS KGRldl9wcml2LCA5KSkNCj4gIAkJcmV0dXJuICZnbWJ1c19waW5zX3NrbFtwaW5dOw0KPiAgCWVs c2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+ICAJCXJldHVybiAmZ21idXNfcGluc19i ZHdbcGluXTsNCj4gQEAgLTEyOCw5ICsxMjgsOSBAQCBib29sIGludGVsX2dtYnVzX2lzX3ZhbGlk X3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYsDQo+ICAJCXNpemUgPSBB UlJBWV9TSVpFKGdtYnVzX3BpbnNfaWNwKTsNCj4gIAllbHNlIGlmIChIQVNfUENIX0NOUChkZXZf cHJpdikpDQo+ICAJCXNpemUgPSBBUlJBWV9TSVpFKGdtYnVzX3BpbnNfY25wKTsNCj4gLQllbHNl IGlmIChJU19HRU45X0xQKGRldl9wcml2KSkNCj4gKwllbHNlIGlmIChJU19HRU1JTklMQUtFKGRl dl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJc2l6ZSA9IEFSUkFZX1NJWkUo Z21idXNfcGluc19ieHQpOw0KPiAtCWVsc2UgaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQ0KPiAr CWVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSkNCj4gIAkJc2l6ZSA9IEFSUkFZ X1NJWkUoZ21idXNfcGluc19za2wpOw0KPiAgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJp dikpDQo+ICAJCXNpemUgPSBBUlJBWV9TSVpFKGdtYnVzX3BpbnNfYmR3KTsNCj4gQEAgLTYwMCw3 ICs2MDAsNyBAQCBkb19nbWJ1c194ZmVyKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgc3Ry dWN0DQo+IGkyY19tc2cgKm1zZ3MsIGludCBudW0sDQo+ICAJaW50IHJldCA9IDA7DQo+IA0KPiAg CS8qIERpc3BsYXkgV0EgIzA4Njg6IHNrbCxieHQsa2JsLGNmbCxnbGssY25sICovDQo+IC0JaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8 fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJYnh0X2dtYnVzX2Nsb2NrX2dhdGluZyhkZXZf cHJpdiwgZmFsc2UpOw0KPiAgCWVsc2UgaWYgKEhBU19QQ0hfU1BUKGRldl9wcml2KSB8fCBIQVNf UENIX0NOUChkZXZfcHJpdikpDQo+ICAJCXBjaF9nbWJ1c19jbG9ja19nYXRpbmcoZGV2X3ByaXYs IGZhbHNlKTsNCj4gQEAgLTcxMyw3ICs3MTMsNyBAQCBkb19nbWJ1c194ZmVyKHN0cnVjdCBpMmNf YWRhcHRlciAqYWRhcHRlciwgc3RydWN0DQo+IGkyY19tc2cgKm1zZ3MsIGludCBudW0sDQo+IA0K PiAgb3V0Og0KPiAgCS8qIERpc3BsYXkgV0EgIzA4Njg6IHNrbCxieHQsa2JsLGNmbCxnbGssY25s ICovDQo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlmIChJU19HRU1JTklMQUtF KGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJYnh0X2dtYnVzX2Nsb2Nr X2dhdGluZyhkZXZfcHJpdiwgdHJ1ZSk7DQo+ICAJZWxzZSBpZiAoSEFTX1BDSF9TUFQoZGV2X3By aXYpIHx8IEhBU19QQ0hfQ05QKGRldl9wcml2KSkNCj4gIAkJcGNoX2dtYnVzX2Nsb2NrX2dhdGlu ZyhkZXZfcHJpdiwgdHJ1ZSk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2hkY3AuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfaGRjcC5jDQo+IGluZGV4IGQ4NTcwZTE0ZmU2MC4uNzUwNTBhMDQwNTc3IDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYw0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkY3AuYw0KPiBAQCAtMjg2LDExICsy ODYsMTIgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2xvYWRfa2V5cyhzdHJ1Y3QNCj4gZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICAJLyoNCj4gIAkgKiBJbml0aWF0ZSBsb2FkaW5nIHRo ZSBIRENQIGtleSBmcm9tIGZ1c2VzLg0KPiAgCSAqDQo+IC0JICogQlhUKyBwbGF0Zm9ybXMsIEhE Q1Aga2V5IG5lZWRzIHRvIGJlIGxvYWRlZCBieSBTVy4gT25seSBHZW4gOQ0KPiAtCSAqIHBsYXRm b3JtcyBleGNlcHQgQlhUIGFuZCBHTEssIGRpZmZlciBpbiB0aGUga2V5IGxvYWQgdHJpZ2dlciBw cm9jZXNzDQo+IC0JICogZnJvbSBvdGhlciBwbGF0Zm9ybXMuIFNvIEdFTjlfQkMgdXNlcyB0aGUg R1QgRHJpdmVyIE1haWxib3ggaS9mLg0KPiArCSAqIEJYVCsgcGxhdGZvcm1zLCBIRENQIGtleSBu ZWVkcyB0byBiZSBsb2FkZWQgYnkgU1cuIE9ubHkgZGlzcGxheQ0KPiArCSAqIHZlcnNpb24gOSBw bGF0Zm9ybXMgKG1pbnVzIEJYVCkgZGlmZmVyIGluIHRoZSBrZXkgbG9hZCB0cmlnZ2VyDQo+ICsJ ICogcHJvY2VzcyBmcm9tIG90aGVyIHBsYXRmb3Jtcy4gVGhlc2UgcGxhdGZvcm1zIHVzZSB0aGUg R1QgRHJpdmVyDQo+ICsJICogTWFpbGJveCBpbnRlcmZhY2UuDQo+ICAJICovDQo+IC0JaWYgKElT X0dFTjlfQkMoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5 KSAmJiAhSVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJcmV0ID0gc2FuZHlicmlkZ2VfcGNv ZGVfd3JpdGUoZGV2X3ByaXYsDQo+ICAJCQkJCSAgICAgIFNLTF9QQ09ERV9MT0FEX0hEQ1BfS0VZ UywgMSk7DQo+ICAJCWlmIChyZXQpIHsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9oZG1pLmMNCj4gaW5kZXggZDY5ZjBhNmRjMjZkLi5mMmQxZmVmOGJkOWQgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jDQo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5jDQo+IEBAIC0xODQx LDcgKzE4NDEsOCBAQCBoZG1pX3BvcnRfY2xvY2tfdmFsaWQoc3RydWN0IGludGVsX2hkbWkgKmhk bWksDQo+ICAJCXJldHVybiBNT0RFX0NMT0NLX1JBTkdFOw0KPiANCj4gIAkvKiBCWFQvR0xLIERQ TEwgY2FuJ3QgZ2VuZXJhdGUgMjIzLTI0MCBNSHogKi8NCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikgJiYgY2xvY2sgPiAyMjMzMzMgJiYgY2xvY2sgPCAyNDAwMDApDQo+ICsJaWYgKChJU19H RU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgJiYNCj4gKwkgICAg Y2xvY2sgPiAyMjMzMzMgJiYgY2xvY2sgPCAyNDAwMDApDQo+ICAJCXJldHVybiBNT0RFX0NMT0NL X1JBTkdFOw0KPiANCj4gIAkvKiBDSFYgRFBMTCBjYW4ndCBnZW5lcmF0ZSAyMTYtMjQwIE1IeiAq Lw0KPiBAQCAtMjcxNCw3ICsyNzE1LDcgQEAgc3RhdGljIHU4IGludGVsX2hkbWlfZGRjX3Bpbihz dHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiAqZW5jb2RlcikNCj4gIAkJZGRjX3BpbiA9IGRnMV9wb3J0 X3RvX2RkY19waW4oZGV2X3ByaXYsIHBvcnQpOw0KPiAgCWVsc2UgaWYgKElTX1JPQ0tFVExBS0Uo ZGV2X3ByaXYpKQ0KPiAgCQlkZGNfcGluID0gcmtsX3BvcnRfdG9fZGRjX3BpbihkZXZfcHJpdiwg cG9ydCk7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgJiYgSEFTX1BDSF9UR1Ao ZGV2X3ByaXYpKQ0KPiArCWVsc2UgaWYgKElTX0RJU1BMQVlfVkVSKGRldl9wcml2LCA5KSAmJiBI QVNfUENIX1RHUChkZXZfcHJpdikpDQo+ICAJCWRkY19waW4gPSBnZW45YmNfdGdwX3BvcnRfdG9f ZGRjX3BpbihkZXZfcHJpdiwgcG9ydCk7DQo+ICAJZWxzZSBpZiAoSEFTX1BDSF9NQ0MoZGV2X3By aXYpKQ0KPiAgCQlkZGNfcGluID0gbWNjX3BvcnRfdG9fZGRjX3BpbihkZXZfcHJpdiwgcG9ydCk7 DQo+IEBAIC0yNzIyLDcgKzI3MjMsNyBAQCBzdGF0aWMgdTggaW50ZWxfaGRtaV9kZGNfcGluKHN0 cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICplbmNvZGVyKQ0KPiAgCQlkZGNfcGluID0gaWNsX3BvcnRf dG9fZGRjX3BpbihkZXZfcHJpdiwgcG9ydCk7DQo+ICAJZWxzZSBpZiAoSEFTX1BDSF9DTlAoZGV2 X3ByaXYpKQ0KPiAgCQlkZGNfcGluID0gY25wX3BvcnRfdG9fZGRjX3BpbihkZXZfcHJpdiwgcG9y dCk7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJZWxzZSBpZiAoSVNf R0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpDQo+ICAJCWRkY19w aW4gPSBieHRfcG9ydF90b19kZGNfcGluKGRldl9wcml2LCBwb3J0KTsNCj4gIAllbHNlIGlmIChJ U19DSEVSUllWSUVXKGRldl9wcml2KSkNCj4gIAkJZGRjX3BpbiA9IGNodl9wb3J0X3RvX2RkY19w aW4oZGV2X3ByaXYsIHBvcnQpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wYW5lbC5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9wYW5lbC5jDQo+IGluZGV4IDEwMDIyZDE1NzVlMS4uMmZjYmIyYmEyZDc4IDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3BhbmVsLmMNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wYW5lbC5jDQo+IEBAIC0yMTYx LDcgKzIxNjEsNyBAQCBpbnRlbF9wYW5lbF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50 ZWxfcGFuZWwNCj4gKnBhbmVsKQ0KPiAgCSAgICBpbnRlbF9kc2lfZGNzX2luaXRfYmFja2xpZ2h0 X2Z1bmNzKGNvbm5lY3RvcikgPT0gMCkNCj4gIAkJcmV0dXJuOw0KPiANCj4gLQlpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikpIHsNCj4gKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNf QlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJcGFuZWwtPmJhY2tsaWdodC5wd21fZnVuY3MgPSAm Ynh0X3B3bV9mdW5jczsNCj4gIAl9IGVsc2UgaWYgKElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA+ PSBQQ0hfQ05QKSB7DQo+ICAJCXBhbmVsLT5iYWNrbGlnaHQucHdtX2Z1bmNzID0gJmNucF9wd21f ZnVuY3M7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X3Bwcy5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcHMuYw0KPiBp bmRleCBjNTVkYTEzMDc3M2IuLjNhMDk4NWYxZjUzMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9wcHMuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX3Bwcy5jDQo+IEBAIC0zMTMsMTAgKzMxMyw3IEBAIHZvaWQgaW50 ZWxfcHBzX3Jlc2V0X2FsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYpDQo+ ICB7DQo+ICAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7DQo+IA0KPiAtCWlmIChkcm1f V0FSTl9PTigmZGV2X3ByaXYtPmRybSwNCj4gLQkJCSEoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikg fHwNCj4gLQkJCSAgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwNCj4gLQkJCSAgSVNfR0VOOV9M UChkZXZfcHJpdikpKSkNCj4gKwlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFJU19M UChkZXZfcHJpdikpKQ0KPiAgCQlyZXR1cm47DQo+IA0KPiAgCS8qDQo+IEBAIC0zMzgsNyArMzM1 LDcgQEAgdm9pZCBpbnRlbF9wcHNfcmVzZXRfYWxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ ICpkZXZfcHJpdikNCj4gIAkJaWYgKGVuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkN Cj4gIAkJCWNvbnRpbnVlOw0KPiANCj4gLQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiAr CQlpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDkpDQo+ICAJCQlpbnRlbF9kcC0+cHBzLnBw c19yZXNldCA9IHRydWU7DQo+ICAJCWVsc2UNCj4gIAkJCWludGVsX2RwLT5wcHMucHBzX3BpcGUg PSBJTlZBTElEX1BJUEU7DQo+IEBAIC0zNjEsNyArMzU4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxf cHBzX2dldF9yZWdpc3RlcnMoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCwNCj4gDQo+ICAJ bWVtc2V0KHJlZ3MsIDAsIHNpemVvZigqcmVncykpOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9MUChk ZXZfcHJpdikpDQo+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04o ZGV2X3ByaXYpKQ0KPiAgCQlwcHNfaWR4ID0gYnh0X3Bvd2VyX3NlcXVlbmNlcl9pZHgoaW50ZWxf ZHApOw0KPiAgCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKQ0KPiAgCQlwcHNfaWR4ID0gdmx2X3Bvd2VyX3NlcXVlbmNlcl9waXBlKGlu dGVsX2RwKTsNCj4gQEAgLTM3Miw3ICszNjksOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wcHNfZ2V0 X3JlZ2lzdGVycyhzdHJ1Y3QgaW50ZWxfZHANCj4gKmludGVsX2RwLA0KPiAgCXJlZ3MtPnBwX29m ZiA9IFBQX09GRl9ERUxBWVMocHBzX2lkeCk7DQo+IA0KPiAgCS8qIEN5Y2xlIGRlbGF5IG1vdmVk IGZyb20gUFBfRElWSVNPUiB0byBQUF9DT05UUk9MICovDQo+IC0JaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpIHx8IElOVEVMX1BDSF9UWVBFKGRldl9wcml2KSA+PSBQQ0hfQ05QKQ0KPiArCWlmIChJ U19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSB8fA0KPiArCSAg ICBJTlRFTF9QQ0hfVFlQRShkZXZfcHJpdikgPj0gUENIX0NOUCkNCj4gIAkJcmVncy0+cHBfZGl2 ID0gSU5WQUxJRF9NTUlPX1JFRzsNCj4gIAllbHNlDQo+ICAJCXJlZ3MtPnBwX2RpdiA9IFBQX0RJ VklTT1IocHBzX2lkeCk7DQo+IEBAIC0xMzk5LDcgKzEzOTcsNyBAQCB2b2lkIGludGVsX3Bwc191 bmxvY2tfcmVnc193YShzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+IA0K PiAgdm9pZCBpbnRlbF9wcHNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpDQo+ ICB7DQo+IC0JaWYgKEhBU19QQ0hfU1BMSVQoaTkxNSkgfHwgSVNfR0VOOV9MUChpOTE1KSkNCj4g KwlpZiAoSEFTX1BDSF9TUExJVChpOTE1KSB8fCBJU19HRU1JTklMQUtFKGk5MTUpIHx8IElTX0JS T1hUT04oaTkxNSkpDQo+ICAJCWk5MTUtPnBwc19tbWlvX2Jhc2UgPSBQQ0hfUFBTX0JBU0U7DQo+ ICAJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJU19DSEVSUllWSUVXKGk5MTUpKQ0K PiAgCQlpOTE1LT5wcHNfbW1pb19iYXNlID0gVkxWX1BQU19CQVNFOw0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMNCj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2kuYw0KPiBpbmRleCAxMDU5YTI2YzFmNTguLmIxYmI3ODk3 NjMwOSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNp LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMNCj4gQEAg LTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgaW50IGludGVsX2RzaV9jb21wdXRlX2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2Rlcg0KPiAqZW5jb2RlciwNCj4gIAllbHNlDQo+ICAJCXBpcGVfY29uZmln LT5waXBlX2JwcCA9IDE4Ow0KPiANCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsNCj4g KwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsN Cj4gIAkJLyogRW5hYmxlIEZyYW1lIHRpbWUgc3RhbXAgYmFzZWQgc2NhbmxpbmUgcmVwb3J0aW5n ICovDQo+ICAJCXBpcGVfY29uZmlnLT5tb2RlX2ZsYWdzIHw9DQo+IA0KPiAJSTkxNV9NT0RFX0ZM QUdfR0VUX1NDQU5MSU5FX0ZST01fVElNRVNUQU1QOw0KPiBAQCAtNTIyLDcgKzUyMiw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2RzaV9kZXZpY2VfcmVhZHkoc3RydWN0IGludGVsX2VuY29kZXINCj4g KmVuY29kZXIpDQo+IA0KPiAgCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkNCj4gIAkJZ2xr X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpDQo+ICsJZWxzZSBpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRP TihkZXZfcHJpdikpDQo+ICAJCWJ4dF9kc2lfZGV2aWNlX3JlYWR5KGVuY29kZXIpOw0KPiAgCWVs c2UNCj4gIAkJdmx2X2RzaV9kZXZpY2VfcmVhZHkoZW5jb2Rlcik7DQo+IEBAIC02MDEsNyArNjAx LDcgQEAgc3RhdGljIHZvaWQgdmx2X2RzaV9jbGVhcl9kZXZpY2VfcmVhZHkoc3RydWN0DQo+IGlu dGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICAJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJc biIpOw0KPiAgCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsNCj4g IAkJLyogQ29tbW9uIGJpdCBmb3IgYm90aCBNSVBJIFBvcnQgQSAmIE1JUEkgUG9ydCBDIG9uIFZM Vi9DSFYNCj4gKi8NCj4gLQkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19HRU45X0xQKGRldl9w cml2KSA/DQo+ICsJCWk5MTVfcmVnX3QgcG9ydF9jdHJsID0gSVNfR0VNSU5JTEFLRShkZXZfcHJp dikgfHwNCj4gSVNfQlJPWFRPTihkZXZfcHJpdikgPw0KPiAgCQkJQlhUX01JUElfUE9SVF9DVFJM KHBvcnQpIDoNCj4gTUlQSV9QT1JUX0NUUkwoUE9SVF9BKTsNCj4gIAkJdTMyIHZhbDsNCj4gDQo+ IEBAIC02MjEsNyArNjIxLDcgQEAgc3RhdGljIHZvaWQgdmx2X2RzaV9jbGVhcl9kZXZpY2VfcmVh ZHkoc3RydWN0DQo+IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICAJCSAqIE9uIFZMVi9DSFYs IHdhaXQgdGlsbCBDbG9jayBsYW5lcyBhcmUgaW4gTFAtMDAgc3RhdGUgZm9yIE1JUEkNCj4gIAkJ ICogUG9ydCBBIG9ubHkuIE1JUEkgUG9ydCBDIGhhcyBubyBzaW1pbGFyIGJpdCBmb3IgY2hlY2tp bmcuDQo+ICAJCSAqLw0KPiAtCQlpZiAoKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IHBvcnQgPT0g UE9SVF9BKSAmJg0KPiArCQlpZiAoKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hU T04oZGV2X3ByaXYpIHx8IHBvcnQNCj4gPT0gUE9SVF9BKSAmJg0KPiAgCQkgICAgaW50ZWxfZGVf d2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIHBvcnRfY3RybCwNCj4gIAkJCQkJICAgIEFGRV9MQVRD SE9VVCwgMzApKQ0KPiAgCQkJZHJtX2VycigmZGV2X3ByaXYtPmRybSwgIkRTSSBMUCBub3QgZ29p bmcgTG93XG4iKTsNCj4gQEAgLTY0Niw3ICs2NDYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lf cG9ydF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsDQo+IA0KPiAgCWlm IChpbnRlbF9kc2ktPmR1YWxfbGluayA9PSBEU0lfRFVBTF9MSU5LX0ZST05UX0JBQ0spIHsNCj4g IAkJdTMyIHRlbXA7DQo+IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgew0KPiArCQlpZiAo SVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gIAkJ CWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsNCj4gIAkJCQl0ZW1w ID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwNCj4gIAkJCQkJCSAgICAgTUlQSV9DVFJMKHBvcnQp KTsNCj4gQEAgLTY2Niw3ICs2NjYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9ydF9lbmFi bGUoc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsDQo+ICAJfQ0KPiANCj4gIAlmb3Jf ZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7DQo+IC0JCWk5MTVfcmVnX3Qg cG9ydF9jdHJsID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPw0KPiArCQlpOTE1X3JlZ190IHBvcnRf Y3RybCA9IElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8DQo+IElTX0JST1hUT04oZGV2X3ByaXYp ID8NCj4gIAkJCUJYVF9NSVBJX1BPUlRfQ1RSTChwb3J0KSA6IE1JUElfUE9SVF9DVFJMKHBvcnQp Ow0KPiAgCQl1MzIgdGVtcDsNCj4gDQo+IEBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIHZvaWQg aW50ZWxfZHNpX3BvcnRfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiAqZW5jb2RlcikN Cj4gIAllbnVtIHBvcnQgcG9ydDsNCj4gDQo+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50 ZWxfZHNpLT5wb3J0cykgew0KPiAtCQlpOTE1X3JlZ190IHBvcnRfY3RybCA9IElTX0dFTjlfTFAo ZGV2X3ByaXYpID8NCj4gKwkJaTkxNV9yZWdfdCBwb3J0X2N0cmwgPSBJU19HRU1JTklMQUtFKGRl dl9wcml2KSB8fA0KPiBJU19CUk9YVE9OKGRldl9wcml2KSA/DQo+ICAJCQlCWFRfTUlQSV9QT1JU X0NUUkwocG9ydCkgOiBNSVBJX1BPUlRfQ1RSTChwb3J0KTsNCj4gIAkJdTMyIHRlbXA7DQo+IA0K PiBAQCAtNzgxLDcgKzc4MSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0 cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiAgCSAqIFRoZSBCSU9TIG1heSBs ZWF2ZSB0aGUgUExMIGluIGEgd29ua3kgc3RhdGUgd2hlcmUgaXQgZG9lc24ndA0KPiAgCSAqIGxv Y2suIEl0IG5lZWRzIHRvIGJlIGZ1bGx5IHBvd2VyZWQgZG93biB0byBmaXggaXQuDQo+ICAJICov DQo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKElTX0dFTUlOSUxBS0Uo ZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKSB7DQo+ICAJCWJ4dF9kc2lfcGxsX2Rp c2FibGUoZW5jb2Rlcik7DQo+ICAJCWJ4dF9kc2lfcGxsX2VuYWJsZShlbmNvZGVyLCBwaXBlX2Nv bmZpZyk7DQo+ICAJfSBlbHNlIHsNCj4gQEAgLTkzMiw3ICs5MzIsNyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kc2lfcG9zdF9kaXNhYmxlKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LA0KPiANCj4gIAlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgIlxuIik7DQo+IA0KPiAtCWlm IChJU19HRU45X0xQKGRldl9wcml2KSkgew0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2 KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQlpbnRlbF9jcnRjX3ZibGFua19vZmYo b2xkX2NydGNfc3RhdGUpOw0KPiANCj4gIAkJc2tsX3NjYWxlcl9kaXNhYmxlKG9sZF9jcnRjX3N0 YXRlKTsNCj4gQEAgLTk3MSw3ICs5NzEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcG9zdF9k aXNhYmxlKHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiAgCQkJICAgICAg IHZhbCAmIH5NSVBJT19SU1RfQ1RSTCk7DQo+ICAJfQ0KPiANCj4gLQlpZiAoSVNfR0VOOV9MUChk ZXZfcHJpdikpIHsNCj4gKwlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRP TihkZXZfcHJpdikpIHsNCj4gIAkJYnh0X2RzaV9wbGxfZGlzYWJsZShlbmNvZGVyKTsNCj4gIAl9 IGVsc2Ugew0KPiAgCQl1MzIgdmFsOw0KPiBAQCAtMTAyNCwxMiArMTAyNCwxMyBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9kc2lfZ2V0X2h3X3N0YXRlKHN0cnVjdA0KPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLA0KPiAgCSAqIGNvbmZpZ3VyYXRpb24sIG90aGVyd2lzZSBhY2Nlc3NpbmcgRFNJIHJlZ2lz dGVycyB3aWxsIGhhbmcgdGhlDQo+ICAJICogbWFjaGluZS4gU2VlIEJTcGVjIE5vcnRoIERpc3Bs YXkgRW5naW5lIHJlZ2lzdGVycy9NSVBJW0JYVF0uDQo+ICAJICovDQo+IC0JaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpICYmICFieHRfZHNpX3BsbF9pc19lbmFibGVkKGRldl9wcml2KSkNCj4gKwlp ZiAoKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKSAmJg0K PiArCSAgICAhYnh0X2RzaV9wbGxfaXNfZW5hYmxlZChkZXZfcHJpdikpDQo+ICAJCWdvdG8gb3V0 X3B1dF9wb3dlcjsNCj4gDQo+ICAJLyogWFhYOiB0aGlzIG9ubHkgd29ya3MgZm9yIG9uZSBEU0kg b3V0cHV0ICovDQo+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykg ew0KPiAtCQlpOTE1X3JlZ190IGN0cmxfcmVnID0gSVNfR0VOOV9MUChkZXZfcHJpdikgPw0KPiAr CQlpOTE1X3JlZ190IGN0cmxfcmVnID0gSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwNCj4gSVNf QlJPWFRPTihkZXZfcHJpdikgPw0KPiAgCQkJQlhUX01JUElfUE9SVF9DVFJMKHBvcnQpIDogTUlQ SV9QT1JUX0NUUkwocG9ydCk7DQo+ICAJCWJvb2wgZW5hYmxlZCA9IGludGVsX2RlX3JlYWQoZGV2 X3ByaXYsIGN0cmxfcmVnKSAmIERQSV9FTkFCTEU7DQo+IA0KPiBAQCAtMTA1NSw3ICsxMDU2LDcg QEAgc3RhdGljIGJvb2wgaW50ZWxfZHNpX2dldF9od19zdGF0ZShzdHJ1Y3QNCj4gaW50ZWxfZW5j b2RlciAqZW5jb2RlciwNCj4gIAkJaWYgKCEoaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgTUlQSV9E RVZJQ0VfUkVBRFkocG9ydCkpICYNCj4gREVWSUNFX1JFQURZKSkNCj4gIAkJCWNvbnRpbnVlOw0K PiANCj4gLQkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKSB7DQo+ICsJCWlmIChJU19HRU1JTklM QUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQkJdTMyIHRtcCA9 IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIE1JUElfQ1RSTChwb3J0KSk7DQo+ICAJCQl0bXAgJj0g QlhUX1BJUEVfU0VMRUNUX01BU0s7DQo+ICAJCQl0bXAgPj49IEJYVF9QSVBFX1NFTEVDVF9TSElG VDsNCj4gQEAgLTEyNTEsNyArMTI1Miw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9nZXRfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICplbmNvZGVyLA0KPiANCj4gIAlwaXBlX2NvbmZp Zy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRFNJKTsNCj4gDQo+IC0JaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKSB7DQo+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8 IElTX0JST1hUT04oZGV2X3ByaXYpKSB7DQo+ICAJCWJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKGVu Y29kZXIsIHBpcGVfY29uZmlnKTsNCj4gIAkJcGNsayA9IGJ4dF9kc2lfZ2V0X3BjbGsoZW5jb2Rl ciwgcGlwZV9jb25maWcpOw0KPiAgCX0gZWxzZSB7DQo+IEBAIC0xMzE3LDcgKzEzMTgsNyBAQCBz dGF0aWMgdm9pZCBzZXRfZHNpX3RpbWluZ3Moc3RydWN0IGRybV9lbmNvZGVyDQo+ICplbmNvZGVy LA0KPiAgCWhicCA9IHR4Ynl0ZWNsa2hzKGhicCwgYnBwLCBsYW5lX2NvdW50LCBpbnRlbF9kc2kt PmJ1cnN0X21vZGVfcmF0aW8pOw0KPiANCj4gIAlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRl bF9kc2ktPnBvcnRzKSB7DQo+IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgew0KPiArCQlp ZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4g IAkJCS8qDQo+ICAJCQkgKiBQcm9ncmFtIGhkaXNwbGF5IGFuZCB2ZGlzcGxheSBvbiBNSVBJIHRy YW5zY29kZXIuDQo+ICAJCQkgKiBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIGNhbGN1bGF0ZWQgaGFj dGl2ZSBhbmQNCj4gQEAgLTE0MDcsNyArMTQwOCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9w cmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICppbnRlbF9lbmNvZGVyLA0KPiAgCQkJdG1w ICY9IH5SRUFEX1JFUVVFU1RfUFJJT1JJVFlfTUFTSzsNCj4gIAkJCWludGVsX2RlX3dyaXRlKGRl dl9wcml2LCBNSVBJX0NUUkwocG9ydCksDQo+ICAJCQkJICAgICAgIHRtcCB8IFJFQURfUkVRVUVT VF9QUklPUklUWV9ISUdIKTsNCj4gLQkJfSBlbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkg ew0KPiArCQl9IGVsc2UgaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04o ZGV2X3ByaXYpKSB7DQo+ICAJCQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7DQo+ IA0KPiAgCQkJdG1wID0gaW50ZWxfZGVfcmVhZChkZXZfcHJpdiwgTUlQSV9DVFJMKHBvcnQpKTsN Cj4gQEAgLTE0NDUsNyArMTQ0Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVwYXJlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICppbnRlbF9lbmNvZGVyLA0KPiAgCWlmIChpbnRlbF9kc2kt PmNsb2NrX3N0b3ApDQo+ICAJCXRtcCB8PSBDTE9DS1NUT1A7DQo+IA0KPiAtCWlmIChJU19HRU45 X0xQKGRldl9wcml2KSkgew0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19C Uk9YVE9OKGRldl9wcml2KSkgew0KPiAgCQl0bXAgfD0gQlhUX0RQSFlfREVGRUFUVVJFX0VOOw0K PiAgCQlpZiAoIWlzX2NtZF9tb2RlKGludGVsX2RzaSkpDQo+ICAJCQl0bXAgfD0gQlhUX0RFRkVB VFVSRV9EUElfRklGT19DVFI7DQo+IEBAIC0xNDkyLDcgKzE0OTMsOCBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kc2lfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiAqaW50ZWxfZW5jb2RlciwN Cj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1JUElfSU5JVF9DT1VOVChwb3J0KSwNCj4g IAkJCSAgICAgICB0eGNsa2VzYyhpbnRlbF9kc2ktPmVzY2FwZV9jbGtfZGl2LCAxMDApKTsNCj4g DQo+IC0JCWlmIChJU19HRU45X0xQKGRldl9wcml2KSAmJiAoIWludGVsX2RzaS0+ZHVhbF9saW5r KSkgew0KPiArCQlpZiAoKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2 X3ByaXYpKSAmJg0KPiArCQkgICAgKCFpbnRlbF9kc2ktPmR1YWxfbGluaykpIHsNCj4gIAkJCS8q DQo+ICAJCQkgKiBCWFQgc3BlYyBzYXlzIHdyaXRlIE1JUElfSU5JVF9DT1VOVCBmb3INCj4gIAkJ CSAqIGJvdGggdGhlIHBvcnRzLCBldmVuIGlmIG9ubHkgb25lIGlzDQo+IEBAIC0xNTcwLDcgKzE1 NzIsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfdW5wcmVwYXJlKHN0cnVjdCBpbnRlbF9lbmNv ZGVyDQo+ICplbmNvZGVyKQ0KPiAgCQkvKiBQYW5lbCBjb21tYW5kcyBjYW4gYmUgc2VudCB3aGVu IGNsb2NrIGlzIGluIExQMTEgKi8NCj4gIAkJaW50ZWxfZGVfd3JpdGUoZGV2X3ByaXYsIE1JUElf REVWSUNFX1JFQURZKHBvcnQpLCAweDApOw0KPiANCj4gLQkJaWYgKElTX0dFTjlfTFAoZGV2X3By aXYpKQ0KPiArCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZf cHJpdikpDQo+ICAJCQlieHRfZHNpX3Jlc2V0X2Nsb2NrcyhlbmNvZGVyLCBwb3J0KTsNCj4gIAkJ ZWxzZQ0KPiAgCQkJdmx2X2RzaV9yZXNldF9jbG9ja3MoZW5jb2RlciwgcG9ydCk7DQo+IEBAIC0x ODI4LDcgKzE4MzAsNyBAQCB2b2lkIHZsdl9kc2lfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpDQo+ICAJaWYgKCFpbnRlbF9iaW9zX2lzX2RzaV9wcmVzZW50KGRldl9wcml2 LCAmcG9ydCkpDQo+ICAJCXJldHVybjsNCj4gDQo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYp KQ0KPiArCWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2 KSkNCj4gIAkJZGV2X3ByaXYtPm1pcGlfbW1pb19iYXNlID0gQlhUX01JUElfQkFTRTsNCj4gIAll bHNlDQo+ICAJCWRldl9wcml2LT5taXBpX21taW9fYmFzZSA9IFZMVl9NSVBJX0JBU0U7DQo+IEBA IC0xODU0LDcgKzE4NTYsNyBAQCB2b2lkIHZsdl9kc2lfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpDQo+IA0KPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmlnID0g aW50ZWxfZHNpX2NvbXB1dGVfY29uZmlnOw0KPiAgCWludGVsX2VuY29kZXItPnByZV9lbmFibGUg PSBpbnRlbF9kc2lfcHJlX2VuYWJsZTsNCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0K PiAgCQlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBieHRfZHNpX2VuYWJsZTsNCj4gIAlpbnRlbF9l bmNvZGVyLT5kaXNhYmxlID0gaW50ZWxfZHNpX2Rpc2FibGU7DQo+ICAJaW50ZWxfZW5jb2Rlci0+ cG9zdF9kaXNhYmxlID0gaW50ZWxfZHNpX3Bvc3RfZGlzYWJsZTsNCj4gQEAgLTE4NzQsNyArMTg3 Niw3IEBAIHZvaWQgdmx2X2RzaV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikNCj4gIAkgKiBPbiBCWVQvQ0hWLCBwaXBlIEEgbWFwcyB0byBNSVBJIERTSSBwb3J0IEEsIHBp cGUgQiBtYXBzIHRvIE1JUEkgRFNJDQo+ICAJICogcG9ydCBDLiBCWFQgaXNuJ3QgbGltaXRlZCBs aWtlIHRoaXMuDQo+ICAJICovDQo+IC0JaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCWlm IChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJ aW50ZWxfZW5jb2Rlci0+cGlwZV9tYXNrID0gfjA7DQo+ICAJZWxzZSBpZiAocG9ydCA9PSBQT1JU X0EpDQo+ICAJCWludGVsX2VuY29kZXItPnBpcGVfbWFzayA9IEJJVChQSVBFX0EpOw0KPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMNCj4gaW5kZXggN2VlZmJkZWMyNWEyLi45YWZmNzkwODE3YzAgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYw0KPiBAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2hwZF9pbml0X3BpbnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4gKmRl dl9wcml2KQ0KPiANCj4gIAlpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExKQ0KPiAgCQlo cGQtPmhwZCA9IGhwZF9nZW4xMTsNCj4gLQllbHNlIGlmIChJU19HRU45X0xQKGRldl9wcml2KSkN Cj4gKwllbHNlIGlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9w cml2KSkNCj4gIAkJaHBkLT5ocGQgPSBocGRfYnh0Ow0KPiAgCWVsc2UgaWYgKERJU1BMQVlfVkVS KGRldl9wcml2KSA+PSA4KQ0KPiAgCQlocGQtPmhwZCA9IGhwZF9iZHc7DQo+IEBAIC0yNDU4LDcg KzI0NTgsNyBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ ICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpDQo+ICAJCQkJZm91bmQgPSB0cnVlOw0KPiAgCQkJ fQ0KPiANCj4gLQkJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSkgew0KPiArCQkJaWYgKElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiB7DQo+ICAJCQkJ dTMyIGhvdHBsdWdfdHJpZ2dlciA9IGlpciAmDQo+IEJYVF9ERV9QT1JUX0hPVFBMVUdfTUFTSzsN Cj4gDQo+ICAJCQkJaWYgKGhvdHBsdWdfdHJpZ2dlcikgew0KPiBAQCAtMjQ3NCw3ICsyNDc0LDgg QEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3By aXYsIHUzMiBtYXN0ZXJfY3RsKQ0KPiAgCQkJCX0NCj4gIAkJCX0NCj4gDQo+IC0JCQlpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikgJiYgKGlpciAmDQo+IEJYVF9ERV9QT1JUX0dNQlVTKSkgew0KPiAr CQkJaWYgKChJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkN Cj4gJiYNCj4gKwkJCSAgICAoaWlyICYgQlhUX0RFX1BPUlRfR01CVVMpKSB7DQo+ICAJCQkJZ21i dXNfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOw0KPiAgCQkJCWZvdW5kID0gdHJ1ZTsNCj4gIAkJCX0N Cj4gQEAgLTM3MTcsNyArMzcxOCw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZGVfaXJxX3Bvc3RpbnN0 YWxsKHN0cnVjdA0KPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4gIAlpZiAoRElTUExB WV9WRVIoZGV2X3ByaXYpIDw9IDEwKQ0KPiAgCQlkZV9taXNjX21hc2tlZCB8PSBHRU44X0RFX01J U0NfR1NFOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ICsJaWYgKElTX0dF TUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2X3ByaXYpKQ0KPiAgCQlkZV9wb3J0 X21hc2tlZCB8PSBCWFRfREVfUE9SVF9HTUJVUzsNCj4gDQo+ICAJaWYgKERJU1BMQVlfVkVSKGRl dl9wcml2KSA+PSAxMSkgew0KPiBAQCAtMzczMiw3ICszNzMzLDcgQEAgc3RhdGljIHZvaWQgZ2Vu OF9kZV9pcnFfcG9zdGluc3RhbGwoc3RydWN0DQo+IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQ0KPiAgCQlnZW44X2RlX3BpcGVfZmxpcF9kb25lX21hc2soZGV2X3ByaXYpOw0KPiANCj4gIAlk ZV9wb3J0X2VuYWJsZXMgPSBkZV9wb3J0X21hc2tlZDsNCj4gLQlpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpDQo+ICsJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8IElTX0JST1hUT04oZGV2 X3ByaXYpKQ0KPiAgCQlkZV9wb3J0X2VuYWJsZXMgfD0gQlhUX0RFX1BPUlRfSE9UUExVR19NQVNL Ow0KPiAgCWVsc2UgaWYgKElTX0JST0FEV0VMTChkZXZfcHJpdikpDQo+ICAJCWRlX3BvcnRfZW5h YmxlcyB8PSBCRFdfREVfUE9SVF9IT1RQTFVHX01BU0s7DQo+IEBAIC00MzE3LDcgKzQzMTgsNyBA QCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikN Cj4gIAkJCWRldl9wcml2LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBkZzFfaHBkX2lycV9zZXR1 cDsNCj4gIAkJZWxzZSBpZiAoRElTUExBWV9WRVIoZGV2X3ByaXYpID49IDExKQ0KPiAgCQkJZGV2 X3ByaXYtPmRpc3BsYXkuaHBkX2lycV9zZXR1cCA9DQo+IGdlbjExX2hwZF9pcnFfc2V0dXA7DQo+ IC0JCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiArCQllbHNlIGlmIChJU19HRU1J TklMQUtFKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KSkNCj4gIAkJCWRldl9wcml2 LT5kaXNwbGF5LmhwZF9pcnFfc2V0dXAgPSBieHRfaHBkX2lycV9zZXR1cDsNCj4gIAkJZWxzZSBp ZiAoSU5URUxfUENIX1RZUEUoZGV2X3ByaXYpID49IFBDSF9JQ1ApDQo+ICAJCQlkZXZfcHJpdi0+ ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaWNwX2hwZF9pcnFfc2V0dXA7DQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYw0KPiBpbmRleCAwNjZhYmFhNzNhMDYuLjMyZjMwMWNhM2FiMCAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYw0KPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jDQo+IEBAIC0zNjU0LDEzICszNjU0LDEzIEBAIHU4IGludGVs X2VuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpDQo+ICAgKi8NCj4gIHN0YXRpYyBib29sIHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPiAgew0KPiAtCXJldHVybiBJU19HRU45 X0JDKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KTsNCj4gKwlyZXR1cm4gSVNfRElT UExBWV9WRVIoZGV2X3ByaXYsIDkpOw0KPiAgfQ0KPiANCj4gIHN0YXRpYyBib29sDQo+ICBpbnRl bF9oYXNfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpDQo+ICB7DQo+IC0J cmV0dXJuIChJU19HRU45X0JDKGRldl9wcml2KSB8fCBESVNQTEFZX1ZFUihkZXZfcHJpdikgPj0g MTEgfHwNCj4gSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpICYmDQo+ICsJcmV0dXJuIERJU1BMQVlf VkVSKGRldl9wcml2KSA+PSA5ICYmICFJU19MUChkZXZfcHJpdikgJiYNCj4gIAkJZGV2X3ByaXYt PnNhZ3Zfc3RhdHVzICE9IEk5MTVfU0FHVl9OT1RfQ09OVFJPTExFRDsNCj4gIH0NCj4gDQo+IEBA IC01MjU4LDcgKzUyNTgsNyBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25z dCBzdHJ1Y3QNCj4gaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gIAlsaW5lcyA9IGRp dl9yb3VuZF91cF9maXhlZDE2KHNlbGVjdGVkX3Jlc3VsdCwNCj4gIAkJCQkgICAgIHdwLT5wbGFu ZV9ibG9ja3NfcGVyX2xpbmUpOw0KPiANCj4gLQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikgfHwg SVNfQlJPWFRPTihkZXZfcHJpdikpIHsNCj4gKwlpZiAoSVNfRElTUExBWV9WRVIoZGV2X3ByaXYs IDkpKSB7DQo+ICAJCS8qIERpc3BsYXkgV0EgIzExMjU6IHNrbCxieHQsa2JsICovDQo+ICAJCWlm IChsZXZlbCA9PSAwICYmIHdwLT5yY19zdXJmYWNlKQ0KPiAgCQkJYmxvY2tzICs9IGZpeGVkMTZf dG9fdTMyX3JvdW5kX3VwKHdwLQ0KPiA+eV90aWxlX21pbmltdW0pOw0KPiBAQCAtNTM3NSw3ICs1 Mzc1LDcgQEAgc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShzdHJ1Y3QNCj4g ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+ICAJICogV2FEaXNhYmxlVFdNOnNrbCxrYmws Y2ZsLGJ4dA0KPiAgCSAqIFRyYW5zaXRpb24gV00gYXJlIG5vdCByZWNvbW1lbmRlZCBieSBIVyB0 ZWFtIGZvciBHRU45DQo+ICAJICovDQo+IC0JaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpIHx8IElT X0JST1hUT04oZGV2X3ByaXYpKQ0KPiArCWlmIChJU19ESVNQTEFZX1ZFUihkZXZfcHJpdiwgOSkp DQo+ICAJCXJldHVybjsNCj4gDQo+ICAJaWYgKERJU1BMQVlfVkVSKGRldl9wcml2KSA+PSAxMSkN Cj4gLS0NCj4gMi4yNS40DQo+IA0KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXw0KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+IEludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcNCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=