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=-10.9 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 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 41584C433E0 for ; Mon, 8 Mar 2021 13:12:02 +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 DBBC4651A2 for ; Mon, 8 Mar 2021 13:12:01 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DBBC4651A2 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 6A82189FC9; Mon, 8 Mar 2021 13:12:01 +0000 (UTC) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 043F889FC9 for ; Mon, 8 Mar 2021 13:12:00 +0000 (UTC) IronPort-SDR: SOy5FWYh0XxpOHs2MMowlEry0wfJnEwW05izlL/QNzka/YuUcYqU2T1FvZiEWYWHucabULZsPS GQgippmeM4Qw== X-IronPort-AV: E=McAfee;i="6000,8403,9916"; a="184660347" X-IronPort-AV: E=Sophos;i="5.81,232,1610438400"; d="scan'208";a="184660347" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Mar 2021 05:12:00 -0800 IronPort-SDR: OQf+Um3CM3hzg9dr4AZVl9VzXjQcpdbC1zmGlDoNo5RNf0/MoI001zs96dJ5Zyr4rv9ebLlXHd vM3JpGqSTt6w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,232,1610438400"; d="scan'208";a="402818197" Received: from irsmsx606.ger.corp.intel.com ([163.33.146.139]) by fmsmga008.fm.intel.com with ESMTP; 08 Mar 2021 05:11:59 -0800 Received: from irsmsx605.ger.corp.intel.com (163.33.146.138) by IRSMSX606.ger.corp.intel.com (163.33.146.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 8 Mar 2021 13:11:58 +0000 Received: from irsmsx605.ger.corp.intel.com ([163.33.146.138]) by IRSMSX605.ger.corp.intel.com ([163.33.146.138]) with mapi id 15.01.2106.013; Mon, 8 Mar 2021 13:11:58 +0000 From: "Kahola, Mika" To: Ville Syrjala , "intel-gfx@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH 4/6] drm/i915: Move DDI clock readout to encoder->get_config() Thread-Index: AQHXCrtRtKlXmbT2rkuBIaeop+OO9Kp6I45A Date: Mon, 8 Mar 2021 13:11:58 +0000 Message-ID: <4406b15594344faf98c9888614633317@intel.com> References: <20210224144214.24803-1-ville.syrjala@linux.intel.com> <20210224144214.24803-5-ville.syrjala@linux.intel.com> In-Reply-To: <20210224144214.24803-5-ville.syrjala@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-version: 11.6.0.76 dlp-product: dlpe-windows dlp-reaction: no-action x-originating-ip: [163.33.253.164] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH 4/6] drm/i915: Move DDI clock readout to encoder->get_config() 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: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBJbnRlbC1nZnggPGludGVsLWdm eC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4gT24gQmVoYWxmIE9mIFZpbGxlDQo+IFN5 cmphbGENCj4gU2VudDogV2VkbmVzZGF5LCBGZWJydWFyeSAyNCwgMjAyMSA0OjQyIFBNDQo+IFRv OiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IFN1YmplY3Q6IFtJbnRlbC1nZnhd IFtQQVRDSCA0LzZdIGRybS9pOTE1OiBNb3ZlIERESSBjbG9jayByZWFkb3V0IHRvDQo+IGVuY29k ZXItPmdldF9jb25maWcoKQ0KPiANCj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4NCj4gDQo+IE1vdmUgdGhlICpfZ2V0X2RkaV9wbGwoKSBzdHVm ZiBpbnRvIHRoZSBlbmNvZGV0LT5nZXRfY29uZmlnKCkgaG9vay4NCj4gVGhlcmUgaXQgbmVhdGx5 IHNpdHMgbmV4dCB0byB0aGUgbWF0Y2hpbmcgLntlbmFibGUsZGlzYWJsZX1fY2xvY2soKSBmdW5j dGlvbnMuDQo+IA0KPiBJbiBvcmRlciB0byBhdm9pZCBleGNlc3NpdmUgYm9pbGVycGxhdGUgSSBj aGFuZ2VkIHRoZSBiZWhhdmlvdXIgc3VjaCB0aGF0IGFsbA0KPiBwbGF0Zm9ybXMgbm93IGRvIHRo ZSByZWFkb3V0IHZpYSBjcnRjX3N0YXRlLT5wb3J0X2RwbGxbXS4NCj4gDQo+IElDTCsgVEMgaXMg c3RpbGwgYSBiaXQgc3BlY2lhbCBkdWUgdG8gVEJUUExMIG5vdCBoYXZpbmcgYSBmdW5jdGlvbmFs DQo+IC5nZXRfZnJlcSgpLiBTaG91bGQgcHJvYmFibHkgY2hhbmdlIHRoYXQgYnkgYWRvcHRpbmcg dGhlIExDUExMIGFwcHJvYWNoLA0KPiBidXQgdGhhdCB3b3VsZCByZXF1aXJlIGEgZmFpcmx5IHN1 YnN0YW50aWFsIHJld29yayBvZiB0aGUgRFBMTCBJRCBoYW5kbGluZy4gU28NCj4gbGVhdmUgaXQg Zm9yIGxhdGVyLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4NCg0KUmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxtaWth LmthaG9sYUBpbnRlbC5jb20+DQoNCj4gLS0tDQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ljbF9kc2kuYyAgICAgICB8ICAgNiArLQ0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9jcnQuYyAgICAgfCAgIDIgKy0NCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGRpLmMgICAgIHwgMzIxICsrKysrKysrKysrKysrKysrLS0NCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmggICAgIHwgICA4ICstDQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyB8IDIxOSAtLS0tLS0tLS0t LS0tDQo+ICA1IGZpbGVzIGNoYW5nZWQsIDMwNiBpbnNlcnRpb25zKCspLCAyNTAgZGVsZXRpb25z KC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xf ZHNpLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYw0KPiBpbmRl eCAwNWQ1NzA5YWU1MzcuLjI5ZmU0OTE5MzkyYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pY2xfZHNpLmMNCj4gQEAgLTE0OTAsMTQgKzE0OTAsMTAgQEAgc3RhdGljIHZvaWQN Cj4gZ2VuMTFfZHNpX2dldF9jbWRfbW9kZV9jb25maWcoc3RydWN0IGludGVsX2RzaSAqaW50ZWxf ZHNpLCAgc3RhdGljIHZvaWQNCj4gZ2VuMTFfZHNpX2dldF9jb25maWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsDQo+ICAJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykgIHsNCj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5j b2Rlci0+YmFzZS5kZXYpOw0KPiAgCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhwaXBlX2NvbmZpZy0+dWFwaS5jcnRjKTsNCj4gIAlzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKGVuY29kZXIpOw0KPiANCj4gLQkvKiBGSVhNRTogYWRh cHQgaWNsX2RkaV9jbG9ja19nZXQoKSBmb3IgRFNJIGFuZCB1c2UgdGhhdD8gKi8NCj4gLQlwaXBl X2NvbmZpZy0+cG9ydF9jbG9jayA9IGludGVsX2RwbGxfZ2V0X2ZyZXEoaTkxNSwNCj4gLQkJCQkJ CSAgICAgIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCwNCj4gLQkJCQkJCSAgICAgICZwaXBlX2Nv bmZpZy0NCj4gPmRwbGxfaHdfc3RhdGUpOw0KPiArCWludGVsX2RkaV9nZXRfY2xvY2soZW5jb2Rl ciwgcGlwZV9jb25maWcsDQo+ICtpY2xfZGRpX2NvbWJvX2dldF9wbGwoZW5jb2RlcikpOw0KPiAN Cj4gIAlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrID0gaW50ZWxfZHNp LT5wY2xrOw0KPiAgCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykNCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMNCj4gYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2NydC5jDQo+IGluZGV4IDkxYThhNDJiNGFhMi4uYjAzZjc0 MDc2ZjY0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2NydC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfY3J0LmMN Cj4gQEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCBoc3dfY3J0X2dldF9jb25maWcoc3Ry dWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsICB7DQo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+IA0KPiAtCWlu dGVsX2RkaV9nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKTsNCj4gKwloc3dfZGRpX2dl dF9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOw0KPiANCj4gIAlwaXBlX2NvbmZpZy0+aHcu YWRqdXN0ZWRfbW9kZS5mbGFncyAmPQ0KPiB+KERSTV9NT0RFX0ZMQUdfUEhTWU5DIHwNCj4gIAkJ CQkJICAgICAgRFJNX01PREVfRkxBR19OSFNZTkMgfA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGRpLmMNCj4gaW5kZXggZWVhZTc4MDk3YTIwLi41NmY1ZjU1YTdjOGYg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMN Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYw0KPiBAQCAt MzA0LDI1ICszMDQsNiBAQCBzdGF0aWMgdm9pZCBkZGlfZG90Y2xvY2tfZ2V0KHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlDQo+ICpwaXBlX2NvbmZpZykNCj4gIAlwaXBlX2NvbmZpZy0+aHcuYWRqdXN0 ZWRfbW9kZS5jcnRjX2Nsb2NrID0gZG90Y2xvY2s7ICB9DQo+IA0KPiAtc3RhdGljIHZvaWQgaW50 ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gLQkJCQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpDQo+IC17DQo+IC0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ IC0JZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoZGV2X3ByaXYsIGVuY29kZXItPnBv cnQpOw0KPiAtDQo+IC0JaWYgKGludGVsX3BoeV9pc190YyhkZXZfcHJpdiwgcGh5KSAmJg0KPiAt CSAgICBpbnRlbF9nZXRfc2hhcmVkX2RwbGxfaWQoZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFy ZWRfZHBsbCkgPT0NCj4gLQkgICAgRFBMTF9JRF9JQ0xfVEJUUExMKQ0KPiAtCQlwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jayA9IGljbF9jYWxjX3RidF9wbGxfbGluayhkZXZfcHJpdiwNCj4gLQkJCQkJ CQkJZW5jb2Rlci0NCj4gPnBvcnQpOw0KPiAtCWVsc2UNCj4gLQkJcGlwZV9jb25maWctPnBvcnRf Y2xvY2sgPQ0KPiAtCQkJaW50ZWxfZHBsbF9nZXRfZnJlcShkZXZfcHJpdiwgcGlwZV9jb25maWct DQo+ID5zaGFyZWRfZHBsbCwNCj4gLQkJCQkJICAgICZwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0 ZSk7DQo+IC0NCj4gLQlkZGlfZG90Y2xvY2tfZ2V0KHBpcGVfY29uZmlnKTsNCj4gLX0NCj4gLQ0K PiAgdm9pZCBpbnRlbF9kZGlfc2V0X2RwX21zYShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwNCj4gIAkJCSAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUpICB7DQo+IEBAIC0xNjA4LDYgKzE1ODksMTcgQEAgc3RhdGljIHZvaWQgX2Nu bF9kZGlfZGlzYWJsZV9jbG9jayhzdHJ1Y3QNCj4gZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaTkx NV9yZWdfdCByZWcNCj4gIAltdXRleF91bmxvY2soJmk5MTUtPmRwbGwubG9jayk7DQo+ICB9DQo+ IA0KPiArc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqDQo+ICtfY25sX2RkaV9nZXRf cGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpOTE1X3JlZ190IHJlZywNCj4gKwkJ IHUzMiBjbGtfc2VsX21hc2ssIHUzMiBjbGtfc2VsX3NoaWZ0KSB7DQo+ICsJZW51bSBpbnRlbF9k cGxsX2lkIGlkOw0KPiArDQo+ICsJaWQgPSAoaW50ZWxfZGVfcmVhZChpOTE1LCByZWcpICYgY2xr X3NlbF9tYXNrKSA+PiBjbGtfc2VsX3NoaWZ0Ow0KPiArDQo+ICsJcmV0dXJuIGludGVsX2dldF9z aGFyZWRfZHBsbF9ieV9pZChpOTE1LCBpZCk7IH0NCj4gKw0KPiAgc3RhdGljIHZvaWQgYWRsc19k ZGlfZW5hYmxlX2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiAgCQkJCSAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpICB7DQo+IEBAIC0xNjMz LDYgKzE2MjUsMTYgQEAgc3RhdGljIHZvaWQgYWRsc19kZGlfZGlzYWJsZV9jbG9jayhzdHJ1Y3QN Cj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gIAkJCSAgICAgICBJQ0xfRFBDTEtBX0NGR0NS MF9ERElfQ0xLX09GRihwaHkpKTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgc3RydWN0IGludGVsX3No YXJlZF9kcGxsICphZGxzX2RkaV9nZXRfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICsqZW5j b2Rlcikgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShlbmNv ZGVyLT5iYXNlLmRldik7DQo+ICsJZW51bSBwaHkgcGh5ID0gaW50ZWxfcG9ydF90b19waHkoaTkx NSwgZW5jb2Rlci0+cG9ydCk7DQo+ICsNCj4gKwlyZXR1cm4gX2NubF9kZGlfZ2V0X3BsbChpOTE1 LCBBRExTX0RQQ0xLQV9DRkdDUihwaHkpLA0KPiArDQo+IAlBRExTX0RQQ0xLQV9DRkdDUl9ERElf Q0xLX1NFTF9NQVNLKHBoeSksDQo+ICsJCQkJQURMU19EUENMS0FfQ0ZHQ1JfRERJX1NISUZUKHBo eSkpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBya2xfZGRpX2VuYWJsZV9jbG9jayhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gIAkJCQkgY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUpICB7DQo+IEBAIC0xNjU4LDYgKzE2NjAsMTYgQEAgc3RhdGlj IHZvaWQgcmtsX2RkaV9kaXNhYmxlX2Nsb2NrKHN0cnVjdA0KPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKQ0KPiAgCQkJICAgICAgIFJLTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSkpOw0K PiAgfQ0KPiANCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnJrbF9kZGlfZ2V0 X3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiArKmVuY29kZXIpIHsNCj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOw0KPiArCWVu dW0gcGh5IHBoeSA9IGludGVsX3BvcnRfdG9fcGh5KGk5MTUsIGVuY29kZXItPnBvcnQpOw0KPiAr DQo+ICsJcmV0dXJuIF9jbmxfZGRpX2dldF9wbGwoaTkxNSwgSUNMX0RQQ0xLQV9DRkdDUjAsDQo+ ICsNCj4gCVJLTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfU0VMX01BU0socGh5KSwNCj4gKw0KPiAJ UktMX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfU0hJRlQocGh5KSk7DQo+ICt9DQo+ICsNCj4g IHN0YXRpYyB2b2lkIGRnMV9kZGlfZW5hYmxlX2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLA0KPiAgCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSkgIHsNCj4gQEAgLTE2OTIsNiArMTcwNCwxNiBAQCBzdGF0aWMgdm9pZCBkZzFfZGRpX2Rpc2Fi bGVfY2xvY2soc3RydWN0DQo+IGludGVsX2VuY29kZXIgKmVuY29kZXIpDQo+ICAJCQkgICAgICAg REcxX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19PRkYocGh5KSk7DQo+ICB9DQo+IA0KPiArc3RhdGlj IHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqZGcxX2RkaV9nZXRfcGxsKHN0cnVjdCBpbnRlbF9l bmNvZGVyDQo+ICsqZW5jb2Rlcikgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ICsJZW51bSBwaHkgcGh5ID0gaW50ZWxf cG9ydF90b19waHkoaTkxNSwgZW5jb2Rlci0+cG9ydCk7DQo+ICsNCj4gKwlyZXR1cm4gX2NubF9k ZGlfZ2V0X3BsbChpOTE1LCBERzFfRFBDTEtBX0NGR0NSMChwaHkpLA0KPiArDQo+IAlERzFfRFBD TEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9NQVNLKHBoeSksDQo+ICsNCj4gCURHMV9EUENMS0FfQ0ZH Q1IwX0RESV9DTEtfU0VMX1NISUZUKHBoeSkpOw0KPiArfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBp Y2xfZGRpX2NvbWJvX2VuYWJsZV9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwN Cj4gIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp ICB7DQo+IEBAIC0xNzE3LDYgKzE3MzksMTYgQEAgc3RhdGljIHZvaWQgaWNsX2RkaV9jb21ib19k aXNhYmxlX2Nsb2NrKHN0cnVjdA0KPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQ0KPiAgCQkJICAg ICAgIElDTF9EUENMS0FfQ0ZHQ1IwX0RESV9DTEtfT0ZGKHBoeSkpOw0KPiAgfQ0KPiANCj4gK3N0 cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaWNsX2RkaV9jb21ib19nZXRfcGxsKHN0cnVjdCBpbnRl bF9lbmNvZGVyDQo+ICsqZW5jb2Rlcikgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ICsJZW51bSBwaHkgcGh5ID0gaW50 ZWxfcG9ydF90b19waHkoaTkxNSwgZW5jb2Rlci0+cG9ydCk7DQo+ICsNCj4gKwlyZXR1cm4gX2Nu bF9kZGlfZ2V0X3BsbChpOTE1LCBJQ0xfRFBDTEtBX0NGR0NSMCwNCj4gKw0KPiAJSUNMX0RQQ0xL QV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwaHkpLA0KPiArDQo+IAlJQ0xfRFBDTEtBX0NGR0NS MF9ERElfQ0xLX1NFTF9TSElGVChwaHkpKTsNCj4gK30NCj4gKw0KPiAgc3RhdGljIHZvaWQganNs X2RkaV90Y19lbmFibGVfY2xvY2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJ CQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0KPiBA QCAtMTc4NCw2ICsxODE2LDM2IEBAIHN0YXRpYyB2b2lkIGljbF9kZGlfdGNfZGlzYWJsZV9jbG9j ayhzdHJ1Y3QNCj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gIAlpbnRlbF9kZV93cml0ZShp OTE1LCBERElfQ0xLX1NFTChwb3J0KSwgRERJX0NMS19TRUxfTk9ORSk7ICB9DQo+IA0KPiArc3Rh dGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaWNsX2RkaV90Y19nZXRfcGxsKHN0cnVjdA0K PiAraW50ZWxfZW5jb2RlciAqZW5jb2Rlcikgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ICsJZW51bSB0Y19wb3J0IHRj X3BvcnQgPSBpbnRlbF9wb3J0X3RvX3RjKGk5MTUsIGVuY29kZXItPnBvcnQpOw0KPiArCWVudW0g cG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsNCj4gKwllbnVtIGludGVsX2RwbGxfaWQgaWQ7DQo+ ICsJdTMyIHRtcDsNCj4gKw0KPiArCXRtcCA9IGludGVsX2RlX3JlYWQoaTkxNSwgRERJX0NMS19T RUwocG9ydCkpOw0KPiArDQo+ICsJc3dpdGNoICh0bXAgJiBERElfQ0xLX1NFTF9NQVNLKSB7DQo+ ICsJY2FzZSBERElfQ0xLX1NFTF9UQlRfMTYyOg0KPiArCWNhc2UgRERJX0NMS19TRUxfVEJUXzI3 MDoNCj4gKwljYXNlIERESV9DTEtfU0VMX1RCVF81NDA6DQo+ICsJY2FzZSBERElfQ0xLX1NFTF9U QlRfODEwOg0KPiArCQlpZCA9IERQTExfSURfSUNMX1RCVFBMTDsNCj4gKwkJYnJlYWs7DQo+ICsJ Y2FzZSBERElfQ0xLX1NFTF9NRzoNCj4gKwkJaWQgPSBpY2xfdGNfcG9ydF90b19wbGxfaWQodGNf cG9ydCk7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCU1JU1NJTkdfQ0FTRSh0bXAp Ow0KPiArCQlmYWxsdGhyb3VnaDsNCj4gKwljYXNlIERESV9DTEtfU0VMX05PTkU6DQo+ICsJCXJl dHVybiBOVUxMOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBpbnRlbF9nZXRfc2hhcmVkX2RwbGxf YnlfaWQoaTkxNSwgaWQpOyB9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIGNubF9kZGlfZW5hYmxlX2Ns b2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiAgCQkJCSBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgIHsNCj4gQEAgLTE4MDksNiArMTg3MSwzOSBA QCBzdGF0aWMgdm9pZCBjbmxfZGRpX2Rpc2FibGVfY2xvY2soc3RydWN0DQo+IGludGVsX2VuY29k ZXIgKmVuY29kZXIpDQo+ICAJCQkgICAgICAgRFBDTEtBX0NGR0NSMF9ERElfQ0xLX09GRihwb3J0 KSk7ICB9DQo+IA0KPiArc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqY25sX2RkaV9n ZXRfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICsqZW5jb2Rlcikgew0KPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ICsJ ZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Ow0KPiArDQo+ICsJcmV0dXJuIF9jbmxfZGRp X2dldF9wbGwoaTkxNSwgRFBDTEtBX0NGR0NSMCwNCj4gKwkJCQlEUENMS0FfQ0ZHQ1IwX0RESV9D TEtfU0VMX01BU0socG9ydCksDQo+ICsJCQkJRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9TSElG VChwb3J0KSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KmJ4dF9kZGlfZ2V0X3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiArKmVuY29kZXIpIHsNCj4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOw0KPiArCWVudW0gaW50ZWxfZHBsbF9pZCBpZDsNCj4gKw0KPiArCXN3aXRjaCAoZW5jb2Rl ci0+cG9ydCkgew0KPiArCWNhc2UgUE9SVF9BOg0KPiArCQlpZCA9IERQTExfSURfU0tMX0RQTEww Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIFBPUlRfQjoNCj4gKwkJaWQgPSBEUExMX0lEX1NLTF9E UExMMTsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQT1JUX0M6DQo+ICsJCWlkID0gRFBMTF9JRF9T S0xfRFBMTDI7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCU1JU1NJTkdfQ0FTRShl bmNvZGVyLT5wb3J0KTsNCj4gKwkJcmV0dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJu IGludGVsX2dldF9zaGFyZWRfZHBsbF9ieV9pZChpOTE1LCBpZCk7IH0NCj4gKw0KPiAgc3RhdGlj IHZvaWQgc2tsX2RkaV9lbmFibGVfY2xvY2soc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs DQo+ICAJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0K PiBAQCAtMTg0Myw2ICsxOTM4LDI4IEBAIHN0YXRpYyB2b2lkIHNrbF9kZGlfZGlzYWJsZV9jbG9j ayhzdHJ1Y3QNCj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gIAltdXRleF91bmxvY2soJmk5 MTUtPmRwbGwubG9jayk7DQo+ICB9DQo+IA0KPiArc3RhdGljIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqc2tsX2RkaV9nZXRfcGxsKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ICsqZW5jb2Rlcikg ew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShlbmNvZGVyLT5i YXNlLmRldik7DQo+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Ow0KPiArCWVudW0g aW50ZWxfZHBsbF9pZCBpZDsNCj4gKwl1MzIgdG1wOw0KPiArDQo+ICsJdG1wID0gaW50ZWxfZGVf cmVhZChpOTE1LCBEUExMX0NUUkwyKTsNCj4gKw0KPiArCS8qDQo+ICsJICogRklYTUUgTm90IHN1 cmUgaWYgdGhlIG92ZXJyaWRlIGFmZmVjdHMgYm90aA0KPiArCSAqIHRoZSBQTEwgc2VsZWN0aW9u IGFuZCB0aGUgQ0xLX09GRiBiaXQuDQo+ICsJICovDQo+ICsJaWYgKCh0bXAgJiBEUExMX0NUUkwy X0RESV9TRUxfT1ZFUlJJREUocG9ydCkpID09IDApDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ ICsJaWQgPSAodG1wICYgRFBMTF9DVFJMMl9ERElfQ0xLX1NFTF9NQVNLKHBvcnQpKSA+Pg0KPiAr CQlEUExMX0NUUkwyX0RESV9DTEtfU0VMX1NISUZUKHBvcnQpOw0KPiArDQo+ICsJcmV0dXJuIGlu dGVsX2dldF9zaGFyZWRfZHBsbF9ieV9pZChpOTE1LCBpZCk7IH0NCj4gKw0KPiAgdm9pZCBoc3df ZGRpX2VuYWJsZV9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gIAkJCSAg Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpICB7IEBAIC0NCj4gMTg2 NCw2ICsxOTgxLDQ0IEBAIHZvaWQgaHN3X2RkaV9kaXNhYmxlX2Nsb2NrKHN0cnVjdCBpbnRlbF9l bmNvZGVyDQo+ICplbmNvZGVyKQ0KPiAgCWludGVsX2RlX3dyaXRlKGk5MTUsIFBPUlRfQ0xLX1NF TChwb3J0KSwgUE9SVF9DTEtfU0VMX05PTkUpOyAgfQ0KPiANCj4gK3N0YXRpYyBzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKmhzd19kZGlfZ2V0X3BsbChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiAr KmVuY29kZXIpIHsNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUo ZW5jb2Rlci0+YmFzZS5kZXYpOw0KPiArCWVudW0gcG9ydCBwb3J0ID0gZW5jb2Rlci0+cG9ydDsN Cj4gKwllbnVtIGludGVsX2RwbGxfaWQgaWQ7DQo+ICsJdTMyIHRtcDsNCj4gKw0KPiArCXRtcCA9 IGludGVsX2RlX3JlYWQoaTkxNSwgUE9SVF9DTEtfU0VMKHBvcnQpKTsNCj4gKw0KPiArCXN3aXRj aCAodG1wICYgUE9SVF9DTEtfU0VMX01BU0spIHsNCj4gKwljYXNlIFBPUlRfQ0xLX1NFTF9XUlBM TDE6DQo+ICsJCWlkID0gRFBMTF9JRF9XUlBMTDE7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgUE9S VF9DTEtfU0VMX1dSUExMMjoNCj4gKwkJaWQgPSBEUExMX0lEX1dSUExMMjsNCj4gKwkJYnJlYWs7 DQo+ICsJY2FzZSBQT1JUX0NMS19TRUxfU1BMTDoNCj4gKwkJaWQgPSBEUExMX0lEX1NQTEw7DQo+ ICsJCWJyZWFrOw0KPiArCWNhc2UgUE9SVF9DTEtfU0VMX0xDUExMXzgxMDoNCj4gKwkJaWQgPSBE UExMX0lEX0xDUExMXzgxMDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBQT1JUX0NMS19TRUxfTENQ TExfMTM1MDoNCj4gKwkJaWQgPSBEUExMX0lEX0xDUExMXzEzNTA7DQo+ICsJCWJyZWFrOw0KPiAr CWNhc2UgUE9SVF9DTEtfU0VMX0xDUExMXzI3MDA6DQo+ICsJCWlkID0gRFBMTF9JRF9MQ1BMTF8y NzAwOw0KPiArCQlicmVhazsNCj4gKwlkZWZhdWx0Og0KPiArCQlNSVNTSU5HX0NBU0UodG1wKTsN Cj4gKwkJZmFsbHRocm91Z2g7DQo+ICsJY2FzZSBQT1JUX0NMS19TRUxfTk9ORToNCj4gKwkJcmV0 dXJuIE5VTEw7DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGludGVsX2dldF9zaGFyZWRfZHBsbF9i eV9pZChpOTE1LCBpZCk7IH0NCj4gKw0KPiAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX2Nsb2NrKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgeyBAQCAtDQo+IDMyOTMsOCArMzQ0OCw4IEBAIHN0 YXRpYyB2b2lkIGludGVsX2RkaV9yZWFkX2Z1bmNfY3RsKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ ICplbmNvZGVyLA0KPiAgCX0NCj4gIH0NCj4gDQo+IC12b2lkIGludGVsX2RkaV9nZXRfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiAtCQkJICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpDQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kZGlfZ2V0X2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gKwkJCQkgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQ0KPiAgew0KPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOw0KPiAgCWVudW0gdHJhbnNj b2RlciBjcHVfdHJhbnNjb2RlciA9IHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlcjsNCj4gQEAg LTMzNDEsNyArMzQ5Niw3IEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25maWcoc3RydWN0IGludGVs X2VuY29kZXINCj4gKmVuY29kZXIsDQo+ICAJfQ0KPiANCj4gIAlpZiAoIXBpcGVfY29uZmlnLT5i aWdqb2luZXJfc2xhdmUpDQo+IC0JCWludGVsX2RkaV9jbG9ja19nZXQoZW5jb2RlciwgcGlwZV9j b25maWcpOw0KPiArCQlkZGlfZG90Y2xvY2tfZ2V0KHBpcGVfY29uZmlnKTsNCj4gDQo+ICAJaWYg KElTX0dFTjlfTFAoZGV2X3ByaXYpKQ0KPiAgCQlwaXBlX2NvbmZpZy0+bGFuZV9sYXRfb3B0aW1f bWFzayA9DQo+IEBAIC0zMzcxLDYgKzM1MjYsMTE0IEBAIHZvaWQgaW50ZWxfZGRpX2dldF9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsDQo+ICAJaW50ZWxfcmVhZF9kcF9z ZHAoZW5jb2RlciwgcGlwZV9jb25maWcsIERQX1NEUF9WU0MpOyAgfQ0KPiANCj4gK3ZvaWQgaW50 ZWxfZGRpX2dldF9jbG9jayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gKwkJCSBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwNCj4gKwkJCSBzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCkNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOw0KPiArCWVudW0gaWNsX3BvcnRfZHBsbF9p ZCBwb3J0X2RwbGxfaWQgPSBJQ0xfUE9SVF9EUExMX0RFRkFVTFQ7DQo+ICsJc3RydWN0IGljbF9w b3J0X2RwbGwgKnBvcnRfZHBsbCA9ICZjcnRjX3N0YXRlLQ0KPiA+aWNsX3BvcnRfZHBsbHNbcG9y dF9kcGxsX2lkXTsNCj4gKwlib29sIHBsbF9hY3RpdmU7DQo+ICsNCj4gKwlwb3J0X2RwbGwtPnBs bCA9IHBsbDsNCj4gKwlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9nZXRfaHdfc3RhdGUoaTkxNSwg cGxsLCAmcG9ydF9kcGxsLT5od19zdGF0ZSk7DQo+ICsJZHJtX1dBUk5fT04oJmk5MTUtPmRybSwg IXBsbF9hY3RpdmUpOw0KPiArDQo+ICsJaWNsX3NldF9hY3RpdmVfcG9ydF9kcGxsKGNydGNfc3Rh dGUsIHBvcnRfZHBsbF9pZCk7DQo+ICsNCj4gKwljcnRjX3N0YXRlLT5wb3J0X2Nsb2NrID0gaW50 ZWxfZHBsbF9nZXRfZnJlcShpOTE1LCBjcnRjX3N0YXRlLQ0KPiA+c2hhcmVkX2RwbGwsDQo+ICsJ CQkJCQkgICAgICZjcnRjX3N0YXRlLQ0KPiA+ZHBsbF9od19zdGF0ZSk7IH0NCj4gKw0KPiArc3Rh dGljIHZvaWQgYWRsc19kZGlfZ2V0X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwNCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgew0KPiArCWlu dGVsX2RkaV9nZXRfY2xvY2soZW5jb2RlciwgY3J0Y19zdGF0ZSwgYWRsc19kZGlfZ2V0X3BsbChl bmNvZGVyKSk7DQo+ICsJaW50ZWxfZGRpX2dldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7 IH0NCj4gKw0KPiArc3RhdGljIHZvaWQgcmtsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLA0KPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlKSB7DQo+ICsJaW50ZWxfZGRpX2dldF9jbG9jayhlbmNvZGVyLCBjcnRjX3N0YXRl LCBya2xfZGRpX2dldF9wbGwoZW5jb2RlcikpOw0KPiArCWludGVsX2RkaV9nZXRfY29uZmlnKGVu Y29kZXIsIGNydGNfc3RhdGUpOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGRnMV9kZGlfZ2V0X2Nv bmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gKwkJCSAgICAgICBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgew0KPiArCWludGVsX2RkaV9nZXRfY2xvY2so ZW5jb2RlciwgY3J0Y19zdGF0ZSwgZGcxX2RkaV9nZXRfcGxsKGVuY29kZXIpKTsNCj4gKwlpbnRl bF9kZGlfZ2V0X2NvbmZpZyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsgfQ0KPiArDQo+ICtzdGF0aWMg dm9pZCBpY2xfZGRpX2NvbWJvX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsDQo+ICsJCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgew0K PiArCWludGVsX2RkaV9nZXRfY2xvY2soZW5jb2RlciwgY3J0Y19zdGF0ZSwNCj4gaWNsX2RkaV9j b21ib19nZXRfcGxsKGVuY29kZXIpKTsNCj4gKwlpbnRlbF9kZGlfZ2V0X2NvbmZpZyhlbmNvZGVy LCBjcnRjX3N0YXRlKTsgfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBpY2xfZGRpX3RjX2dldF9jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICsJCQkJICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgew0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7DQo+ICsJZW51bSBpY2xfcG9ydF9kcGxs X2lkIHBvcnRfZHBsbF9pZDsNCj4gKwlzdHJ1Y3QgaWNsX3BvcnRfZHBsbCAqcG9ydF9kcGxsOw0K PiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOw0KPiArCWJvb2wgcGxsX2FjdGl2ZTsN Cj4gKw0KPiArCXBsbCA9IGljbF9kZGlfdGNfZ2V0X3BsbChlbmNvZGVyKTsNCj4gKw0KPiArCWlm IChpbnRlbF9nZXRfc2hhcmVkX2RwbGxfaWQoaTkxNSwgcGxsKSA9PSBEUExMX0lEX0lDTF9UQlRQ TEwpDQo+ICsJCXBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfREVGQVVMVDsNCj4gKwllbHNl DQo+ICsJCXBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfTUdfUEhZOw0KPiArDQo+ICsJcG9y dF9kcGxsID0gJmNydGNfc3RhdGUtPmljbF9wb3J0X2RwbGxzW3BvcnRfZHBsbF9pZF07DQo+ICsN Cj4gKwlwb3J0X2RwbGwtPnBsbCA9IHBsbDsNCj4gKwlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9n ZXRfaHdfc3RhdGUoaTkxNSwgcGxsLCAmcG9ydF9kcGxsLT5od19zdGF0ZSk7DQo+ICsJZHJtX1dB Uk5fT04oJmk5MTUtPmRybSwgIXBsbF9hY3RpdmUpOw0KPiArDQo+ICsJaWNsX3NldF9hY3RpdmVf cG9ydF9kcGxsKGNydGNfc3RhdGUsIHBvcnRfZHBsbF9pZCk7DQo+ICsNCj4gKwlpZiAoaW50ZWxf Z2V0X3NoYXJlZF9kcGxsX2lkKGk5MTUsIGNydGNfc3RhdGUtPnNoYXJlZF9kcGxsKSA9PQ0KPiBE UExMX0lEX0lDTF9UQlRQTEwpDQo+ICsJCWNydGNfc3RhdGUtPnBvcnRfY2xvY2sgPSBpY2xfY2Fs Y190YnRfcGxsX2xpbmsoaTkxNSwgZW5jb2Rlci0NCj4gPnBvcnQpOw0KPiArCWVsc2UNCj4gKwkJ Y3J0Y19zdGF0ZS0+cG9ydF9jbG9jayA9IGludGVsX2RwbGxfZ2V0X2ZyZXEoaTkxNSwgY3J0Y19z dGF0ZS0NCj4gPnNoYXJlZF9kcGxsLA0KPiArCQkJCQkJCSAgICAgJmNydGNfc3RhdGUtDQo+ID5k cGxsX2h3X3N0YXRlKTsNCj4gKw0KPiArCWludGVsX2RkaV9nZXRfY29uZmlnKGVuY29kZXIsIGNy dGNfc3RhdGUpOyB9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIGNubF9kZGlfZ2V0X2NvbmZpZyhzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSkgew0KPiArCWludGVsX2RkaV9nZXRfY2xvY2soZW5jb2Rlciwg Y3J0Y19zdGF0ZSwgY25sX2RkaV9nZXRfcGxsKGVuY29kZXIpKTsNCj4gKwlpbnRlbF9kZGlfZ2V0 X2NvbmZpZyhlbmNvZGVyLCBjcnRjX3N0YXRlKTsgfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBieHRf ZGRpX2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICsJCQkgICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpIHsNCj4gKwlpbnRlbF9kZGlf Z2V0X2Nsb2NrKGVuY29kZXIsIGNydGNfc3RhdGUsIGJ4dF9kZGlfZ2V0X3BsbChlbmNvZGVyKSk7 DQo+ICsJaW50ZWxfZGRpX2dldF9jb25maWcoZW5jb2RlciwgY3J0Y19zdGF0ZSk7IH0NCj4gKw0K PiArc3RhdGljIHZvaWQgc2tsX2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLA0KPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl KSB7DQo+ICsJaW50ZWxfZGRpX2dldF9jbG9jayhlbmNvZGVyLCBjcnRjX3N0YXRlLCBza2xfZGRp X2dldF9wbGwoZW5jb2RlcikpOw0KPiArCWludGVsX2RkaV9nZXRfY29uZmlnKGVuY29kZXIsIGNy dGNfc3RhdGUpOyB9DQo+ICsNCj4gK3ZvaWQgaHN3X2RkaV9nZXRfY29uZmlnKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLA0KPiArCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpIHsNCj4gKwlpbnRlbF9kZGlfZ2V0X2Nsb2NrKGVuY29kZXIsIGNydGNfc3RhdGUsIGhz d19kZGlfZ2V0X3BsbChlbmNvZGVyKSk7DQo+ICsJaW50ZWxfZGRpX2dldF9jb25maWcoZW5jb2Rl ciwgY3J0Y19zdGF0ZSk7IH0NCj4gKw0KPiAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3N5bmNfc3Rh dGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJCQkJIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKSAgew0KPiBAQCAtNDA1Nyw3ICs0MzIwLDYgQEAg dm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPiAqZGV2X3ByaXYs IGVudW0gcG9ydCBwb3J0KQ0KPiAgCWVuY29kZXItPnBvc3RfZGlzYWJsZSA9IGludGVsX2RkaV9w b3N0X2Rpc2FibGU7DQo+ICAJZW5jb2Rlci0+dXBkYXRlX3BpcGUgPSBpbnRlbF9kZGlfdXBkYXRl X3BpcGU7DQo+ICAJZW5jb2Rlci0+Z2V0X2h3X3N0YXRlID0gaW50ZWxfZGRpX2dldF9od19zdGF0 ZTsNCj4gLQllbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZGRpX2dldF9jb25maWc7DQo+ICAJ ZW5jb2Rlci0+c3luY19zdGF0ZSA9IGludGVsX2RkaV9zeW5jX3N0YXRlOw0KPiAgCWVuY29kZXIt PmluaXRpYWxfZmFzdHNldF9jaGVjayA9IGludGVsX2RkaV9pbml0aWFsX2Zhc3RzZXRfY2hlY2s7 DQo+ICAJZW5jb2Rlci0+c3VzcGVuZCA9IGludGVsX2RwX2VuY29kZXJfc3VzcGVuZDsgQEAgLTQw NzMsMzcNCj4gKzQzMzUsNTAgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0NCj4gcG9ydCBwb3J0KQ0KPiAgCWlmIChJU19BTERFUkxB S0VfUyhkZXZfcHJpdikpIHsNCj4gIAkJZW5jb2Rlci0+ZW5hYmxlX2Nsb2NrID0gYWRsc19kZGlf ZW5hYmxlX2Nsb2NrOw0KPiAgCQllbmNvZGVyLT5kaXNhYmxlX2Nsb2NrID0gYWRsc19kZGlfZGlz YWJsZV9jbG9jazsNCj4gKwkJZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGFkbHNfZGRpX2dldF9jb25m aWc7DQo+ICAJfSBlbHNlIGlmIChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgew0KPiAgCQllbmNv ZGVyLT5lbmFibGVfY2xvY2sgPSBya2xfZGRpX2VuYWJsZV9jbG9jazsNCj4gIAkJZW5jb2Rlci0+ ZGlzYWJsZV9jbG9jayA9IHJrbF9kZGlfZGlzYWJsZV9jbG9jazsNCj4gKwkJZW5jb2Rlci0+Z2V0 X2NvbmZpZyA9IHJrbF9kZGlfZ2V0X2NvbmZpZzsNCj4gIAl9IGVsc2UgaWYgKElTX0RHMShkZXZf cHJpdikpIHsNCj4gIAkJZW5jb2Rlci0+ZW5hYmxlX2Nsb2NrID0gZGcxX2RkaV9lbmFibGVfY2xv Y2s7DQo+ICAJCWVuY29kZXItPmRpc2FibGVfY2xvY2sgPSBkZzFfZGRpX2Rpc2FibGVfY2xvY2s7 DQo+ICsJCWVuY29kZXItPmdldF9jb25maWcgPSBkZzFfZGRpX2dldF9jb25maWc7DQo+ICAJfSBl bHNlIGlmIChJU19KU0xfRUhMKGRldl9wcml2KSkgew0KPiAgCQlpZiAoaW50ZWxfZGRpX2lzX3Rj KGRldl9wcml2LCBwb3J0KSkgew0KPiAgCQkJZW5jb2Rlci0+ZW5hYmxlX2Nsb2NrID0ganNsX2Rk aV90Y19lbmFibGVfY2xvY2s7DQo+ICAJCQllbmNvZGVyLT5kaXNhYmxlX2Nsb2NrID0ganNsX2Rk aV90Y19kaXNhYmxlX2Nsb2NrOw0KPiArCQkJZW5jb2Rlci0+Z2V0X2NvbmZpZyA9IGljbF9kZGlf Y29tYm9fZ2V0X2NvbmZpZzsNCj4gIAkJfSBlbHNlIHsNCj4gIAkJCWVuY29kZXItPmVuYWJsZV9j bG9jayA9DQo+IGljbF9kZGlfY29tYm9fZW5hYmxlX2Nsb2NrOw0KPiAgCQkJZW5jb2Rlci0+ZGlz YWJsZV9jbG9jayA9DQo+IGljbF9kZGlfY29tYm9fZGlzYWJsZV9jbG9jazsNCj4gKwkJCWVuY29k ZXItPmdldF9jb25maWcgPSBpY2xfZGRpX2NvbWJvX2dldF9jb25maWc7DQo+ICAJCX0NCj4gIAl9 IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsNCj4gIAkJaWYgKGludGVsX2Rk aV9pc190YyhkZXZfcHJpdiwgcG9ydCkpIHsNCj4gIAkJCWVuY29kZXItPmVuYWJsZV9jbG9jayA9 IGljbF9kZGlfdGNfZW5hYmxlX2Nsb2NrOw0KPiAgCQkJZW5jb2Rlci0+ZGlzYWJsZV9jbG9jayA9 IGljbF9kZGlfdGNfZGlzYWJsZV9jbG9jazsNCj4gKwkJCWVuY29kZXItPmdldF9jb25maWcgPSBp Y2xfZGRpX3RjX2dldF9jb25maWc7DQo+ICAJCX0gZWxzZSB7DQo+ICAJCQllbmNvZGVyLT5lbmFi bGVfY2xvY2sgPQ0KPiBpY2xfZGRpX2NvbWJvX2VuYWJsZV9jbG9jazsNCj4gIAkJCWVuY29kZXIt PmRpc2FibGVfY2xvY2sgPQ0KPiBpY2xfZGRpX2NvbWJvX2Rpc2FibGVfY2xvY2s7DQo+ICsJCQll bmNvZGVyLT5nZXRfY29uZmlnID0gaWNsX2RkaV9jb21ib19nZXRfY29uZmlnOw0KPiAgCQl9DQo+ ICAJfSBlbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgew0KPiAgCQllbmNvZGVyLT5l bmFibGVfY2xvY2sgPSBjbmxfZGRpX2VuYWJsZV9jbG9jazsNCj4gIAkJZW5jb2Rlci0+ZGlzYWJs ZV9jbG9jayA9IGNubF9kZGlfZGlzYWJsZV9jbG9jazsNCj4gKwkJZW5jb2Rlci0+Z2V0X2NvbmZp ZyA9IGNubF9kZGlfZ2V0X2NvbmZpZzsNCj4gKwl9IGVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3By aXYpKSB7DQo+ICsJCS8qIEJYVC9HTEsgaGF2ZSBmaXhlZCBQTEwtPnBvcnQgbWFwcGluZyAqLw0K PiArCQllbmNvZGVyLT5nZXRfY29uZmlnID0gYnh0X2RkaV9nZXRfY29uZmlnOw0KPiAgCX0gZWxz ZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpIHsNCj4gIAkJZW5jb2Rlci0+ZW5hYmxlX2Nsb2Nr ID0gc2tsX2RkaV9lbmFibGVfY2xvY2s7DQo+ICAJCWVuY29kZXItPmRpc2FibGVfY2xvY2sgPSBz a2xfZGRpX2Rpc2FibGVfY2xvY2s7DQo+ICsJCWVuY29kZXItPmdldF9jb25maWcgPSBza2xfZGRp X2dldF9jb25maWc7DQo+ICAJfSBlbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElT X0hBU1dFTEwoZGV2X3ByaXYpKSB7DQo+ICAJCWVuY29kZXItPmVuYWJsZV9jbG9jayA9IGhzd19k ZGlfZW5hYmxlX2Nsb2NrOw0KPiAgCQllbmNvZGVyLT5kaXNhYmxlX2Nsb2NrID0gaHN3X2RkaV9k aXNhYmxlX2Nsb2NrOw0KPiArCQllbmNvZGVyLT5nZXRfY29uZmlnID0gaHN3X2RkaV9nZXRfY29u ZmlnOw0KPiAgCX0NCj4gDQo+ICAJaWYgKElTX0RHMShkZXZfcHJpdikpDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5oDQo+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuaA0KPiBpbmRleCA0YTBjMWQ1Yzg1ZTcuLjA3 ODBjNDdlZmUwZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGkuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aS5oDQo+IEBAIC0zMCw5ICszMCwxNSBAQCB2b2lkIGludGVsX2RkaV9mZGlfcG9zdF9kaXNhYmxl KHN0cnVjdA0KPiBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLA0KPiAgCQkJCWNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlDQo+ICpvbGRfY29ubl9zdGF0ZSk7ICB2b2lkIGludGVsX2Rk aV9lbmFibGVfY2xvY2soc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVuY29kZXIsDQo+ICAJCQkg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOw0KPiArdm9pZCBp bnRlbF9kZGlfZ2V0X2Nsb2NrKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiArCQkJ IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLA0KPiArCQkJIHN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqcGxsKTsNCj4gIHZvaWQgaHN3X2RkaV9lbmFibGVfY2xvY2soc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+ICAJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKTsgIHZvaWQNCj4gaHN3X2RkaV9kaXNhYmxlX2Nsb2NrKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKTsNCj4gK3ZvaWQgaHN3X2RkaV9nZXRfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLA0KPiArCQkJc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpOyBzdHJ1Y3QNCj4gaW50ZWxfc2hhcmVkX2RwbGwNCj4gKyppY2xfZGRp X2NvbWJvX2dldF9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpOw0KPiAgdm9pZCBp bnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LA0KPiAgCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOw0K PiB2b2lkIGludGVsX3dhaXRfZGRpX2J1Zl9pZGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgQEAgLTQ4LDgNCj4gKzU0LDYgQEAgdm9pZCBpbnRlbF9kZGlfZGlzYWJsZV9waXBl X2Nsb2NrKGNvbnN0ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZQ0KPiAqY3J0Y19zdGF0ZSk7ICB2 b2lkIGludGVsX2RkaV9zZXRfZHBfbXNhKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlDQo+ ICpjcnRjX3N0YXRlLA0KPiAgCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSk7DQo+IGJvb2wgaW50ZWxfZGRpX2Nvbm5lY3Rvcl9nZXRfaHdfc3RhdGUoc3Ry dWN0IGludGVsX2Nvbm5lY3Rvcg0KPiAqaW50ZWxfY29ubmVjdG9yKTsgLXZvaWQgaW50ZWxfZGRp X2dldF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsDQo+IC0JCQkgIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7DQo+ICB2b2lkIGludGVsX2RkaV9zZXRf dmNfcGF5bG9hZF9hbGxvYyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwNCj4gIAkJCQkgICAgYm9vbCBzdGF0ZSk7DQo+ICB2b2lkIGludGVsX2RkaV9jb21wdXRlX21p bl92b2x0YWdlX2xldmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlDQo+ICpkZXZfcHJpdiwgZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMNCj4gaW5kZXgg OTU4YzJhNzk2YmFlLi44YjVjYjgxNGI2NzkgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jDQo+IEBAIC02NTIzLDIxMiArNjUyMyw2IEBAIHN0 YXRpYyBib29sIGlsa19nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMNCj4gKmNydGMs DQo+ICAJcmV0dXJuIHJldDsNCj4gIH0NCj4gDQo+IC1zdGF0aWMgdm9pZCBkZzFfZ2V0X2RkaV9w bGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQNCj4gcG9ydCwN Cj4gLQkJCSAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpDQo+IC17DQo+ IC0JZW51bSBpY2xfcG9ydF9kcGxsX2lkIHBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfREVG QVVMVDsNCj4gLQllbnVtIHBoeSBwaHkgPSBpbnRlbF9wb3J0X3RvX3BoeShkZXZfcHJpdiwgcG9y dCk7DQo+IC0Jc3RydWN0IGljbF9wb3J0X2RwbGwgKnBvcnRfZHBsbDsNCj4gLQlzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKnBsbDsNCj4gLQllbnVtIGludGVsX2RwbGxfaWQgaWQ7DQo+IC0JYm9v bCBwbGxfYWN0aXZlOw0KPiAtCXUzMiBjbGtfc2VsOw0KPiAtDQo+IC0JY2xrX3NlbCA9IGludGVs X2RlX3JlYWQoZGV2X3ByaXYsIERHMV9EUENMS0FfQ0ZHQ1IwKHBoeSkpICYNCj4gREcxX0RQQ0xL QV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwaHkpOw0KPiAtCWlkID0gREcxX0RQQ0xLQV9DRkdD UjBfRERJX0NMS19TRUxfRFBMTF9NQVAoY2xrX3NlbCwgcGh5KTsNCj4gLQ0KPiAtCWlmIChXQVJO X09OKGlkID4gRFBMTF9JRF9ERzFfRFBMTDMpKQ0KPiAtCQlyZXR1cm47DQo+IC0NCj4gLQlwbGwg PSBpbnRlbF9nZXRfc2hhcmVkX2RwbGxfYnlfaWQoZGV2X3ByaXYsIGlkKTsNCj4gLQlwb3J0X2Rw bGwgPSAmcGlwZV9jb25maWctPmljbF9wb3J0X2RwbGxzW3BvcnRfZHBsbF9pZF07DQo+IC0NCj4g LQlwb3J0X2RwbGwtPnBsbCA9IHBsbDsNCj4gLQlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9nZXRf aHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwNCj4gLQkJCQkJICAgICAmcG9ydF9kcGxsLT5od19zdGF0 ZSk7DQo+IC0JZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFwbGxfYWN0aXZlKTsNCj4gLQ0K PiAtCWljbF9zZXRfYWN0aXZlX3BvcnRfZHBsbChwaXBlX2NvbmZpZywgcG9ydF9kcGxsX2lkKTsN Cj4gLX0NCj4gLQ0KPiAtc3RhdGljIHZvaWQgaWNsX2dldF9kZGlfcGxsKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0DQo+IHBvcnQsDQo+IC0JCQkgICAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQ0KPiAtew0KPiAtCWVudW0gcGh5IHBoeSA9 IGludGVsX3BvcnRfdG9fcGh5KGRldl9wcml2LCBwb3J0KTsNCj4gLQllbnVtIGljbF9wb3J0X2Rw bGxfaWQgcG9ydF9kcGxsX2lkOw0KPiAtCXN0cnVjdCBpY2xfcG9ydF9kcGxsICpwb3J0X2RwbGw7 DQo+IC0Jc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7DQo+IC0JZW51bSBpbnRlbF9kcGxs X2lkIGlkOw0KPiAtCWJvb2wgcGxsX2FjdGl2ZTsNCj4gLQlpOTE1X3JlZ190IHJlZzsNCj4gLQl1 MzIgdGVtcDsNCj4gLQ0KPiAtCWlmIChpbnRlbF9waHlfaXNfY29tYm8oZGV2X3ByaXYsIHBoeSkp IHsNCj4gLQkJdTMyIG1hc2ssIHNoaWZ0Ow0KPiAtDQo+IC0JCWlmIChJU19BTERFUkxBS0VfUyhk ZXZfcHJpdikpIHsNCj4gLQkJCXJlZyA9IEFETFNfRFBDTEtBX0NGR0NSKHBoeSk7DQo+IC0JCQlt YXNrID0NCj4gQURMU19EUENMS0FfQ0ZHQ1JfRERJX0NMS19TRUxfTUFTSyhwaHkpOw0KPiAtCQkJ c2hpZnQgPSBBRExTX0RQQ0xLQV9DRkdDUl9ERElfU0hJRlQocGh5KTsNCj4gLQkJfSBlbHNlIGlm IChJU19ST0NLRVRMQUtFKGRldl9wcml2KSkgew0KPiAtCQkJcmVnID0gSUNMX0RQQ0xLQV9DRkdD UjA7DQo+IC0JCQltYXNrID0NCj4gUktMX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhw aHkpOw0KPiAtCQkJc2hpZnQgPQ0KPiBSS0xfRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9TSElG VChwaHkpOw0KPiAtCQl9IGVsc2Ugew0KPiAtCQkJcmVnID0gSUNMX0RQQ0xLQV9DRkdDUjA7DQo+ IC0JCQltYXNrID0NCj4gSUNMX0RQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwaHkpOw0K PiAtCQkJc2hpZnQgPQ0KPiBJQ0xfRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9TSElGVChwaHkp Ow0KPiAtCQl9DQo+IC0NCj4gLQkJdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYsIHJlZykg JiBtYXNrOw0KPiAtCQlpZCA9IHRlbXAgPj4gc2hpZnQ7DQo+IC0JCXBvcnRfZHBsbF9pZCA9IElD TF9QT1JUX0RQTExfREVGQVVMVDsNCj4gLQl9IGVsc2UgaWYgKGludGVsX3BoeV9pc190YyhkZXZf cHJpdiwgcGh5KSkgew0KPiAtCQl1MzIgY2xrX3NlbCA9IGludGVsX2RlX3JlYWQoZGV2X3ByaXYs IERESV9DTEtfU0VMKHBvcnQpKSAmDQo+IERESV9DTEtfU0VMX01BU0s7DQo+IC0NCj4gLQkJaWYg KGNsa19zZWwgPT0gRERJX0NMS19TRUxfTUcpIHsNCj4gLQkJCWlkID0gaWNsX3RjX3BvcnRfdG9f cGxsX2lkKGludGVsX3BvcnRfdG9fdGMoZGV2X3ByaXYsDQo+IC0JCQkJCQkJCSAgICBwb3J0KSk7 DQo+IC0JCQlwb3J0X2RwbGxfaWQgPSBJQ0xfUE9SVF9EUExMX01HX1BIWTsNCj4gLQkJfSBlbHNl IHsNCj4gLQkJCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLA0KPiAtCQkJCSAgICBjbGtfc2Vs IDwgRERJX0NMS19TRUxfVEJUXzE2Mik7DQo+IC0JCQlpZCA9IERQTExfSURfSUNMX1RCVFBMTDsN Cj4gLQkJCXBvcnRfZHBsbF9pZCA9IElDTF9QT1JUX0RQTExfREVGQVVMVDsNCj4gLQkJfQ0KPiAt CX0gZWxzZSB7DQo+IC0JCWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLCAxLCAiSW52YWxpZCBwb3J0 ICV4XG4iLCBwb3J0KTsNCj4gLQkJcmV0dXJuOw0KPiAtCX0NCj4gLQ0KPiAtCXBsbCA9IGludGVs X2dldF9zaGFyZWRfZHBsbF9ieV9pZChkZXZfcHJpdiwgaWQpOw0KPiAtCXBvcnRfZHBsbCA9ICZw aXBlX2NvbmZpZy0+aWNsX3BvcnRfZHBsbHNbcG9ydF9kcGxsX2lkXTsNCj4gLQ0KPiAtCXBvcnRf ZHBsbC0+cGxsID0gcGxsOw0KPiAtCXBsbF9hY3RpdmUgPSBpbnRlbF9kcGxsX2dldF9od19zdGF0 ZShkZXZfcHJpdiwgcGxsLA0KPiAtCQkJCQkgICAgICZwb3J0X2RwbGwtPmh3X3N0YXRlKTsNCj4g LQlkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgIXBsbF9hY3RpdmUpOw0KPiAtDQo+IC0JaWNs X3NldF9hY3RpdmVfcG9ydF9kcGxsKHBpcGVfY29uZmlnLCBwb3J0X2RwbGxfaWQpOw0KPiAtfQ0K PiAtDQo+IC1zdGF0aWMgdm9pZCBjbmxfZ2V0X2RkaV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCBlbnVtIHBvcnQNCj4gcG9ydCwNCj4gLQkJCSAgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpDQo+IC17DQo+IC0Jc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGw7DQo+IC0JZW51bSBpbnRlbF9kcGxsX2lkIGlkOw0KPiAtCWJvb2wgcGxsX2FjdGl2 ZTsNCj4gLQl1MzIgdGVtcDsNCj4gLQ0KPiAtCXRlbXAgPSBpbnRlbF9kZV9yZWFkKGRldl9wcml2 LCBEUENMS0FfQ0ZHQ1IwKSAmDQo+IERQQ0xLQV9DRkdDUjBfRERJX0NMS19TRUxfTUFTSyhwb3J0 KTsNCj4gLQlpZCA9IHRlbXAgPj4gRFBDTEtBX0NGR0NSMF9ERElfQ0xLX1NFTF9TSElGVChwb3J0 KTsNCj4gLQ0KPiAtCWlmIChkcm1fV0FSTl9PTigmZGV2X3ByaXYtPmRybSwgaWQgPCBTS0xfRFBM TDAgfHwgaWQgPg0KPiBTS0xfRFBMTDIpKQ0KPiAtCQlyZXR1cm47DQo+IC0NCj4gLQlwbGwgPSBp bnRlbF9nZXRfc2hhcmVkX2RwbGxfYnlfaWQoZGV2X3ByaXYsIGlkKTsNCj4gLQ0KPiAtCXBpcGVf Y29uZmlnLT5zaGFyZWRfZHBsbCA9IHBsbDsNCj4gLQlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9n ZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwNCj4gLQkJCQkJICAgICAmcGlwZV9jb25maWctPmRw bGxfaHdfc3RhdGUpOw0KPiAtCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhcGxsX2FjdGl2 ZSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGJ4dF9nZXRfZGRpX3BsbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsDQo+IC0JCQkJZW51bSBwb3J0IHBvcnQsDQo+IC0JCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQ0KPiAtew0KPiAtCXN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbCAqcGxsOw0KPiAtCWVudW0gaW50ZWxfZHBsbF9pZCBpZDsNCj4gLQli b29sIHBsbF9hY3RpdmU7DQo+IC0NCj4gLQlzd2l0Y2ggKHBvcnQpIHsNCj4gLQljYXNlIFBPUlRf QToNCj4gLQkJaWQgPSBEUExMX0lEX1NLTF9EUExMMDsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSBQ T1JUX0I6DQo+IC0JCWlkID0gRFBMTF9JRF9TS0xfRFBMTDE7DQo+IC0JCWJyZWFrOw0KPiAtCWNh c2UgUE9SVF9DOg0KPiAtCQlpZCA9IERQTExfSURfU0tMX0RQTEwyOw0KPiAtCQlicmVhazsNCj4g LQlkZWZhdWx0Og0KPiAtCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLCAiSW5jb3JyZWN0IHBvcnQg dHlwZVxuIik7DQo+IC0JCXJldHVybjsNCj4gLQl9DQo+IC0NCj4gLQlwbGwgPSBpbnRlbF9nZXRf c2hhcmVkX2RwbGxfYnlfaWQoZGV2X3ByaXYsIGlkKTsNCj4gLQ0KPiAtCXBpcGVfY29uZmlnLT5z aGFyZWRfZHBsbCA9IHBsbDsNCj4gLQlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9nZXRfaHdfc3Rh dGUoZGV2X3ByaXYsIHBsbCwNCj4gLQkJCQkJICAgICAmcGlwZV9jb25maWctPmRwbGxfaHdfc3Rh dGUpOw0KPiAtCWRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLCAhcGxsX2FjdGl2ZSk7DQo+IC19 DQo+IC0NCj4gLXN0YXRpYyB2b2lkIHNrbF9nZXRfZGRpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydA0KPiBwb3J0LA0KPiAtCQkJICAgIHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykNCj4gLXsNCj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGwgKnBsbDsNCj4gLQllbnVtIGludGVsX2RwbGxfaWQgaWQ7DQo+IC0JYm9vbCBwbGxfYWN0 aXZlOw0KPiAtCXUzMiB0ZW1wOw0KPiAtDQo+IC0JdGVtcCA9IGludGVsX2RlX3JlYWQoZGV2X3By aXYsIERQTExfQ1RSTDIpICYNCj4gRFBMTF9DVFJMMl9ERElfQ0xLX1NFTF9NQVNLKHBvcnQpOw0K PiAtCWlkID0gdGVtcCA+PiAocG9ydCAqIDMgKyAxKTsNCj4gLQ0KPiAtCWlmIChkcm1fV0FSTl9P TigmZGV2X3ByaXYtPmRybSwgaWQgPCBTS0xfRFBMTDAgfHwgaWQgPg0KPiBTS0xfRFBMTDMpKQ0K PiAtCQlyZXR1cm47DQo+IC0NCj4gLQlwbGwgPSBpbnRlbF9nZXRfc2hhcmVkX2RwbGxfYnlfaWQo ZGV2X3ByaXYsIGlkKTsNCj4gLQ0KPiAtCXBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCA9IHBsbDsN Cj4gLQlwbGxfYWN0aXZlID0gaW50ZWxfZHBsbF9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwN Cj4gLQkJCQkJICAgICAmcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUpOw0KPiAtCWRybV9XQVJO X09OKCZkZXZfcHJpdi0+ZHJtLCAhcGxsX2FjdGl2ZSk7DQo+IC19DQo+IC0NCj4gLXN0YXRpYyB2 b2lkIGhzd19nZXRfZGRpX3BsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVu dW0gcG9ydA0KPiBwb3J0LA0KPiAtCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZykNCj4gLXsNCj4gLQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsNCj4gLQll bnVtIGludGVsX2RwbGxfaWQgaWQ7DQo+IC0JdTMyIGRkaV9wbGxfc2VsID0gaW50ZWxfZGVfcmVh ZChkZXZfcHJpdiwgUE9SVF9DTEtfU0VMKHBvcnQpKTsNCj4gLQlib29sIHBsbF9hY3RpdmU7DQo+ IC0NCj4gLQlzd2l0Y2ggKGRkaV9wbGxfc2VsKSB7DQo+IC0JY2FzZSBQT1JUX0NMS19TRUxfV1JQ TEwxOg0KPiAtCQlpZCA9IERQTExfSURfV1JQTEwxOw0KPiAtCQlicmVhazsNCj4gLQljYXNlIFBP UlRfQ0xLX1NFTF9XUlBMTDI6DQo+IC0JCWlkID0gRFBMTF9JRF9XUlBMTDI7DQo+IC0JCWJyZWFr Ow0KPiAtCWNhc2UgUE9SVF9DTEtfU0VMX1NQTEw6DQo+IC0JCWlkID0gRFBMTF9JRF9TUExMOw0K PiAtCQlicmVhazsNCj4gLQljYXNlIFBPUlRfQ0xLX1NFTF9MQ1BMTF84MTA6DQo+IC0JCWlkID0g RFBMTF9JRF9MQ1BMTF84MTA7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgUE9SVF9DTEtfU0VMX0xD UExMXzEzNTA6DQo+IC0JCWlkID0gRFBMTF9JRF9MQ1BMTF8xMzUwOw0KPiAtCQlicmVhazsNCj4g LQljYXNlIFBPUlRfQ0xLX1NFTF9MQ1BMTF8yNzAwOg0KPiAtCQlpZCA9IERQTExfSURfTENQTExf MjcwMDsNCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVsdDoNCj4gLQkJTUlTU0lOR19DQVNFKGRkaV9w bGxfc2VsKTsNCj4gLQkJZmFsbHRocm91Z2g7DQo+IC0JY2FzZSBQT1JUX0NMS19TRUxfTk9ORToN Cj4gLQkJcmV0dXJuOw0KPiAtCX0NCj4gLQ0KPiAtCXBsbCA9IGludGVsX2dldF9zaGFyZWRfZHBs bF9ieV9pZChkZXZfcHJpdiwgaWQpOw0KPiAtDQo+IC0JcGlwZV9jb25maWctPnNoYXJlZF9kcGxs ID0gcGxsOw0KPiAtCXBsbF9hY3RpdmUgPSBpbnRlbF9kcGxsX2dldF9od19zdGF0ZShkZXZfcHJp diwgcGxsLA0KPiAtCQkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZHBsbF9od19zdGF0ZSk7DQo+IC0J ZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFwbGxfYWN0aXZlKTsNCj4gLX0NCj4gLQ0KPiAg c3RhdGljIGJvb2wgaHN3X2dldF90cmFuc2NvZGVyX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLA0KPiAgCQkJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLA0K PiAgCQkJCSAgICAgc3RydWN0IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3NldA0KPiAqcG93 ZXJfZG9tYWluX3NldCkgQEAgLTY4ODUsMTkgKzY2NzksNiBAQCBzdGF0aWMgdm9pZA0KPiBoc3df Z2V0X2RkaV9wb3J0X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLA0KPiAgCQkJcG9ydCA9 IFRSQU5TX0RESV9GVU5DX0NUTF9WQUxfVE9fUE9SVCh0bXApOw0KPiAgCX0NCj4gDQo+IC0JaWYg KElTX0RHMShkZXZfcHJpdikpDQo+IC0JCWRnMV9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwg cGlwZV9jb25maWcpOw0KPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpDQo+ IC0JCWljbF9nZXRfZGRpX3BsbChkZXZfcHJpdiwgcG9ydCwgcGlwZV9jb25maWcpOw0KPiAtCWVs c2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQ0KPiAtCQljbmxfZ2V0X2RkaV9wbGwoZGV2 X3ByaXYsIHBvcnQsIHBpcGVfY29uZmlnKTsNCj4gLQllbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkNCj4gLQkJYnh0X2dldF9kZGlfcGxsKGRldl9wcml2LCBwb3J0LCBwaXBlX2NvbmZpZyk7 DQo+IC0JZWxzZSBpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpDQo+IC0JCXNrbF9nZXRfZGRpX3Bs bChkZXZfcHJpdiwgcG9ydCwgcGlwZV9jb25maWcpOw0KPiAtCWVsc2UNCj4gLQkJaHN3X2dldF9k ZGlfcGxsKGRldl9wcml2LCBwb3J0LCBwaXBlX2NvbmZpZyk7DQo+IC0NCj4gIAkvKg0KPiAgCSAq IEhhc3dlbGwgaGFzIG9ubHkgRkRJL1BDSCB0cmFuc2NvZGVyIEEuIEl0IGlzIHdoaWNoIGlzIGNv bm5lY3RlZCB0bw0KPiAgCSAqIERESSBFLiBTbyBqdXN0IGNoZWNrIHdoZXRoZXIgdGhpcyBwaXBl IGlzIHdpcmVkIHRvIERESSBFIGFuZA0KPiB3aGV0aGVyDQo+IC0tDQo+IDIuMjYuMg0KPiANCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdA0KPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK