Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp3380632ybf; Tue, 3 Mar 2020 05:03:59 -0800 (PST) X-Google-Smtp-Source: ADFU+vtiyS69Jx8e5gP00vc9urEfKZMYN8jf5OxMI6qRps0yBsTsJ+OugEI2vZKoQ3USNlsx3zGR X-Received: by 2002:a9d:6a43:: with SMTP id h3mr3378706otn.55.1583240639634; Tue, 03 Mar 2020 05:03:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583240639; cv=none; d=google.com; s=arc-20160816; b=hS+fbgt3c6FimgKWQPoNV1zBmd6Sn4Ze3l6UCMevJtOhqQ+p5NY4+KmGEYjV9FnEyD s6sRuAKnKisphoSg1oqQ/csKamvwzfVnOEFeEu9LGK6txTRZ7kKhxmJw5awLCIR7xCsW O6tqx8vlyhypju0D8gN8zw+qeySj2+z9euHdC6fPgWhjU2Gf2N9VgsFth5RPMg9TO0Qu jogquuhz2xZY4EgJzJSlpyKNU8+BVgHrOWBiKimivb8lmF3JhJyvbkcLKinE5TnC0pK8 9DI3t76bFfG7DvQYtN4o5HA/Q+JwEhdSVzyQuVJByVCmPmIqYD0DyACyMLnjgLSKMoHp uvwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ChvhZXZs85dkAH9BtKdzlxDldyBMinLO5TbE8HLAl+0=; b=BLttNUZpjHA15LDIgkzYm4MRQg48n+GciaVvU7zHI3HiPn0jQT9xF2nx8uDoKfcH6Z maMx14oLope2QxyVRyxzQyAter4gZDXMfrdwRXsvZy/4L/jxGL16sHQb+YsBTk7mOjNs IlrHDgw60sWh4fXnTbdnCX5OvSLlqBH5IwDjBIFkL6bVdzX1OT3/EAajo3Am5p/cFe+D +I5odnhA5HcXIivfq3ffdGkapSjih7FTpouatLlif1yh38wpcsIrHEBbZZSfFjffvblD QqUv26mcWs9+xoUuRZ4UG5bWxEF9DzQx9vimcxQ03dE5R7lDMj1OADAs+MJS4I2stQ0K Nxsw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=pQ1bczbE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a5si7344465oti.22.2020.03.03.05.03.37; Tue, 03 Mar 2020 05:03:59 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=pQ1bczbE; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729466AbgCCMf3 (ORCPT + 99 others); Tue, 3 Mar 2020 07:35:29 -0500 Received: from mailgw02.mediatek.com ([210.61.82.184]:50203 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1729391AbgCCMf2 (ORCPT ); Tue, 3 Mar 2020 07:35:28 -0500 X-UUID: 34337eacc0724be699542e4a5f73e6db-20200303 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=ChvhZXZs85dkAH9BtKdzlxDldyBMinLO5TbE8HLAl+0=; b=pQ1bczbEr8V/HZuExMJpEPZxKSLZK9KA7KLRSJDJ5V0G1HijovCLR4IWg17VAVforyf/aJvmOzANWBmJ6SwzpEfDHRmXKsHHPtllmbuaZt7ZmsdQsTelmvRscLvYLg/ogNrvNJPvnk9cfiWlHjns9DkRyKvTtUsTtR+BLD7w6+0=; X-UUID: 34337eacc0724be699542e4a5f73e6db-20200303 Received: from mtkcas08.mediatek.inc [(172.21.101.126)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 1445239135; Tue, 03 Mar 2020 20:35:08 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 3 Mar 2020 20:34:14 +0800 Received: from localhost.localdomain (10.17.3.153) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 3 Mar 2020 20:35:47 +0800 From: Xia Jiang To: Hans Verkuil , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Rick Chang CC: , , , , , Marek Szyprowski , Tomasz Figa , , Xia Jiang Subject: [PATCH v7 11/11] media: platform: Add jpeg dec/enc feature Date: Tue, 3 Mar 2020 20:34:46 +0800 Message-ID: <20200303123446.20095-12-xia.jiang@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20200303123446.20095-1-xia.jiang@mediatek.com> References: <20200303123446.20095-1-xia.jiang@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org QWRkIG10ayBqcGVnIGVuY29kZSB2NGwyIGRyaXZlciBiYXNlZCBvbiBqcGVnIGRlY29kZSwgYmVj YXVzZSB0aGF0IGpwZWcNCmRlY29kZSBhbmQgZW5jb2RlIGhhdmUgZ3JlYXQgc2ltaWxhcml0aWVz IHdpdGggZnVuY3Rpb24gb3BlcmF0aW9uLg0KDQpTaWduZWQtb2ZmLWJ5OiBYaWEgSmlhbmcgPHhp YS5qaWFuZ0BtZWRpYXRlay5jb20+DQotLS0NCnY3OiByZXZlcnNlIHNwaW4gbG9jayBhbmQgdW5s b2NrIG9wZXJhdGlvbiBpbiBkZXZpY2UgcnVuIGZ1bmN0aW9uIGZvcg0KICAgIG11bHRpLWluc3Rh bmNlLg0KDQp2NjogYWRkIHNwYWNlIHRvIGFyb3VuZGluZyAnKycuDQogICAgYWxpZ25tZW50ICdz dHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQnIG1hdGNoIG9wZW4gcGFyZW50aGVzaXMuDQogICAgY2hh bmdlICdtdGtfanBlZ19lbmNfc2V0X2VuY0Zvcm1hdCcgdG8gJ210a19qcGVnX2VuY19zZXRfZW5j X2Zvcm1hdCcuDQogICAgbWFrZSAnbXRrX2pwZWdfY3RybHNfc2V0dXAnIHRvIHN0YXRpYyBwcm90 b3R5cGUuDQogICAgZGVsZXRlIHVudXNlZCB2YXJpYWJsZXMgJ2pwZWcnLydhbGlnbl9oJy8nYWxp Z25fdycvJ2ZsYWdzJy4NCiAgICBpbml0aWFsaXplICd5dXZfZm9ybWF0Jy8nZW5jX3F1YWxpdHkn IHZhcmlhYmxlcy4NCiAgICANCnY1OiBzdXBwb3J0IGNyb3AgZm9yIGVuY29kZXIgYW5kIGNvbXBv c2UgZm9yIGRlY29kZXIgaW4gc19zZWxlY3Rpb24gYW5kDQogICAgZ19zZWxlY3Rpb24gZnVuY3Rp b24uDQogICAgdXNlIGNsYW1wKCkgdG8gcmVwbGFjZSBtdGtfanBlZ19ib3VuZF9hbGlnbl9pbWFn ZSgpIGFuZCByb3VuZF91cCgpDQogICAgdG8gcmVwbGFjZSBtdGtfanBlZ19hbGlnbigpLg0KICAg IGRlbGV0ZSBqcGVnX2VuY19wYXJhbS9tdGtfanBlZ19lbmNfcGFyYW0gc3RydWN0dXJlIGFuZA0K ICAgIG10a19qcGVnX3NldF9wYXJhbSgpLCBwcm9ncmFtIHRoZSByZWdpc3RlcnMgZGlyZWN0bHkg YmFzZWQgb24NCiAgICB0aGUgb3JpZ2luYWwgVjRMMiB2YWx1ZXMuDQogICAgbW92ZSBtYWNybyBk ZWZpbml0aW9uIGFib3V0IGh3IHRvIG10a19qcGVnX2VuY19yZWcuaC4NCiAgICBkZWxldGUgdW5u ZWNlc3NhcnkgVjRMMiBsb2dzIGluIGRyaXZlci4NCiAgICBjYW5jZWwgc3BpbiBsb2NrIGFuZCB1 bmxvY2sgb3BlcmF0aW9uIGluIGRldmllYyBydW4gZnVuY3Rpb24uDQogICAgY2hhbmdlIGpwZWcg ZW5jIHJlZ2lzdGVyIG9mZnNldCBoZXggbnVtYmVyYWxzIGZyb20gdXBlcmNhc2UgdG8gbG93ZXJj YXNlLg0KDQp2NDogc3BsaXQgbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoKSB0byB0d28gZnVuY3Rp b25zLCBvbmUgZm9yIGVuY29kZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgDQogICAgb25lIGZvciBkZWNvZGVyLiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBzcGxpdCBtdGtf anBlZ19zZXRfZGVmYXVsdF9wYXJhbXMoKSB0byB0d28gZnVuY3Rpb25zLCBvbmUgZm9yICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAg IGVuY29kZXIsIG9uZSBmb3IgZGVjb2Rlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgYWRkIGNyb3BwaW5nIHN1cHBvcnQgZm9y IGVuY29kZXIgaW4gZy9zX3NlbGVjdGlvbiBpb2N0bHMuICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGNoYW5nZSBleGlmIG1vZGUg c3VwcG9ydCBieSB1c2luZyBWNEwyX0pQRUdfQUNUSVZFX01BUktFUl9BUFAxLiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGNoYW5n ZSBNVEtfSlBFR19NQVhfV0lEVEgvTVRLX0pQRUdfTUFYX0hFSUdIIGZyb20gODE5MiB0byA2NTUz NSBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA0KICAgIHNwZWNpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KICAgIG1vdmUgd2lkdGggc2hpZnRpbmcgb3BlcmF0aW9u IGJlaGluZCBhbGlnbmluZyBvcGVyYXRpb24gaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgbXRrX2pwZWdfdHJ5X2VuY19mbXRf bXBsYW5lKCkgZm9yIGJ1ZyBmaXguICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGZpeCB1c2VyIGFidXNlaW5nIGRhdGFfb2Zmc2V0 IGlzc3VlIGZvciBETUFCVUYgaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgDQogICAgbXRrX2pwZWdfc2V0X2VuY19zcmMoKS4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAg Zml4IGtidWlsZCB3YXJpbmdzOiBjaGFuZ2UgTVRLX0pQRUdfTUlOX0hFSUdIVC9NVEtfSlBFR19N QVhfSEVJR0hUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICBhbmQgTVRLX0pQRUdfTUlOX1dJRFRIL01U S19KUEVHX01BWF9XSURUSCBmcm9tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAnaW50JyB0eXBlIHRv ICd1bnNpZ25lZCBpbnQnIHR5cGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgZml4IG1zbGVh ZGluZ2x5IGluZGVudGVkIG9mICdlbHNlJy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIA0KdjM6IGRlbGV0ZSBDaGFuZ2UtSWQuICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIG9ubHkg dGVzdCBvbmNlIGhhbmRsZXItPmVycm9yIGFmdGVyIHRoZSBsYXN0IHY0bDJfY3RybF9uZXdfc3Rk KCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IA0KICAgIHNlcGVyYXRlIGNoYW5nZXMgb2YgdjRsMi1jdHJscy5jIGFuZCB2NGwyLWNvbnRyb2xz LmggdG8gbmV3IHBhdGNoLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIA0KdjI6IGZpeCBjb21wbGlhbmNlIHRlc3QgZmFpbCwgY2hlY2sgY3JlYXRl ZCBidWZmZXIgc2l6ZSBpbiBkcml2ZXIuIA0KLS0tDQogZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9t dGstanBlZy9NYWtlZmlsZSAgICAgIHwgICA1ICstDQogLi4uL21lZGlhL3BsYXRmb3JtL210ay1q cGVnL210a19qcGVnX2NvcmUuYyAgIHwgNjg0ICsrKysrKysrKysrKysrLS0tLQ0KIC4uLi9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmggICB8ICAzOSArLQ0KIC4uLi9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19kZWNfaHcuaCB8ICAgNyArLQ0KIC4uLi9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuYyB8IDI3MyArKysrKysrDQogLi4u L21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5oIHwgIDg2ICsrKw0KIC4u Li9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfcmVnLmggICAgICB8ICA3OCArKw0KIDcg ZmlsZXMgY2hhbmdlZCwgMTAwNyBpbnNlcnRpb25zKCspLCAxNjUgZGVsZXRpb25zKC0pDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdf ZW5jX2h3LmMNCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst anBlZy9tdGtfanBlZ19lbmNfaHcuaA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL21lZGlh L3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19yZWcuaA0KDQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvcGxh dGZvcm0vbXRrLWpwZWcvTWFrZWZpbGUNCmluZGV4IDQ4NTE2ZGNmOTZlNi4uNzZjMzNhYWQwZjNm IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0K KysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9NYWtlZmlsZQ0KQEAgLTEsMyAr MSw2IEBADQogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQotbXRrX2pw ZWctb2JqcyA6PSBtdGtfanBlZ19jb3JlLm8gbXRrX2pwZWdfZGVjX2h3Lm8gbXRrX2pwZWdfZGVj X3BhcnNlLm8NCittdGtfanBlZy1vYmpzIDo9IG10a19qcGVnX2NvcmUubyBcDQorCQkgbXRrX2pw ZWdfZGVjX2h3Lm8gXA0KKwkJIG10a19qcGVnX2RlY19wYXJzZS5vIFwNCisJCSBtdGtfanBlZ19l bmNfaHcubw0KIG9iai0kKENPTkZJR19WSURFT19NRURJQVRFS19KUEVHKSArPSBtdGtfanBlZy5v DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19j b3JlLmMgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0K aW5kZXggY2NkYmE4N2VmODA2Li5mZDkyMDJmYTY3OTMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL21l ZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2NvcmUuYw0KKysrIGIvZHJpdmVycy9tZWRp YS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmMNCkBAIC0zLDYgKzMsNyBAQA0KICAq IENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuDQogICogQXV0aG9yOiBNaW5nIEhzaXUg VHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5jb20+DQogICogICAgICAgICBSaWNrIENoYW5n IDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisgKiAgICAgICAgIFhpYSBKaWFuZyA8eGlhLmpp YW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCiAjaW5jbHVkZSA8bGludXgvY2xrLmg+DQpAQCAt MjMsNiArMjQsNyBAQA0KICNpbmNsdWRlIDxtZWRpYS92aWRlb2J1ZjItZG1hLWNvbnRpZy5oPg0K ICNpbmNsdWRlIDxzb2MvbWVkaWF0ZWsvc21pLmg+DQogDQorI2luY2x1ZGUgIm10a19qcGVnX2Vu Y19ody5oIg0KICNpbmNsdWRlICJtdGtfanBlZ19kZWNfaHcuaCINCiAjaW5jbHVkZSAibXRrX2pw ZWdfY29yZS5oIg0KICNpbmNsdWRlICJtdGtfanBlZ19kZWNfcGFyc2UuaCINCkBAIC0zMSw3ICsz Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfZm10IG10a19qcGVnX2Zvcm1hdHNbXSA9IHsN CiAJew0KIAkJLmZvdXJjYwkJPSBWNEwyX1BJWF9GTVRfSlBFRywNCiAJCS5jb2xwbGFuZXMJPSAx LA0KLQkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0RFQ19PVVRQVVQsDQorCQkuZmxhZ3MJ CT0gTVRLX0pQRUdfRk1UX0ZMQUdfREVDX09VVFBVVCB8DQorCQkJCSAgTVRLX0pQRUdfRk1UX0ZM QUdfRU5DX0NBUFRVUkUsDQogCX0sDQogCXsNCiAJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lV VjQyME0sDQpAQCAtNTEsNiArNTQsNDIgQEAgc3RhdGljIHN0cnVjdCBtdGtfanBlZ19mbXQgbXRr X2pwZWdfZm9ybWF0c1tdID0gew0KIAkJLnZfYWxpZ24JPSAzLA0KIAkJLmZsYWdzCQk9IE1US19K UEVHX0ZNVF9GTEFHX0RFQ19DQVBUVVJFLA0KIAl9LA0KKwl7DQorCQkuZm91cmNjCQk9IFY0TDJf UElYX0ZNVF9OVjEyTSwNCisJCS5oX3NhbXBsZQk9IHs0LCAyLCAyfSwNCisJCS52X3NhbXBsZQk9 IHs0LCAyLCAyfSwNCisJCS5jb2xwbGFuZXMJPSAyLA0KKwkJLmhfYWxpZ24JPSA0LA0KKwkJLnZf YWxpZ24JPSA0LA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQsDQor CX0sDQorCXsNCisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX05WMjFNLA0KKwkJLmhfc2FtcGxl CT0gezQsIDIsIDJ9LA0KKwkJLnZfc2FtcGxlCT0gezQsIDIsIDJ9LA0KKwkJLmNvbHBsYW5lcwk9 IDIsDQorCQkuaF9hbGlnbgk9IDQsDQorCQkudl9hbGlnbgk9IDQsDQorCQkuZmxhZ3MJCT0gTVRL X0pQRUdfRk1UX0ZMQUdfRU5DX09VVFBVVCwNCisJfSwNCisJew0KKwkJLmZvdXJjYwkJPSBWNEwy X1BJWF9GTVRfWVVZViwNCisJCS5oX3NhbXBsZQk9IHs0LCAyLCAyfSwNCisJCS52X3NhbXBsZQk9 IHs0LCA0LCA0fSwNCisJCS5jb2xwbGFuZXMJPSAxLA0KKwkJLmhfYWxpZ24JPSA0LA0KKwkJLnZf YWxpZ24JPSAzLA0KKwkJLmZsYWdzCQk9IE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQsDQor CX0sDQorCXsNCisJCS5mb3VyY2MJCT0gVjRMMl9QSVhfRk1UX1lWWVUsDQorCQkuaF9zYW1wbGUJ PSB7NCwgMiwgMn0sDQorCQkudl9zYW1wbGUJPSB7NCwgNCwgNH0sDQorCQkuY29scGxhbmVzCT0g MSwNCisJCS5oX2FsaWduCT0gNCwNCisJCS52X2FsaWduCT0gMywNCisJCS5mbGFncwkJPSBNVEtf SlBFR19GTVRfRkxBR19FTkNfT1VUUFVULA0KKwl9LA0KIH07DQogDQogI2RlZmluZSBNVEtfSlBF R19OVU1fRk9STUFUUyBBUlJBWV9TSVpFKG10a19qcGVnX2Zvcm1hdHMpDQpAQCAtNzAsNiArMTA5 LDExIEBAIHN0cnVjdCBtdGtfanBlZ19zcmNfYnVmIHsNCiBzdGF0aWMgaW50IGRlYnVnOw0KIG1v ZHVsZV9wYXJhbShkZWJ1ZywgaW50LCAwNjQ0KTsNCiANCitzdGF0aWMgaW5saW5lIHN0cnVjdCBt dGtfanBlZ19jdHggKmN0cmxfdG9fY3R4KHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQorew0KKwly ZXR1cm4gY29udGFpbmVyX29mKGN0cmwtPmhhbmRsZXIsIHN0cnVjdCBtdGtfanBlZ19jdHgsIGN0 cmxfaGRsKTsNCit9DQorDQogc3RhdGljIGlubGluZSBzdHJ1Y3QgbXRrX2pwZWdfY3R4ICptdGtf anBlZ19maF90b19jdHgoc3RydWN0IHY0bDJfZmggKmZoKQ0KIHsNCiAJcmV0dXJuIGNvbnRhaW5l cl9vZihmaCwgc3RydWN0IG10a19qcGVnX2N0eCwgZmgpOw0KQEAgLTg2LDE0ICsxMzAsNjkgQEAg c3RhdGljIGludCBtdGtfanBlZ19xdWVyeWNhcChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqcHJp diwNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcgPSB2aWRlb19kcnZkYXRhKGZpbGUp Ow0KIA0KLQlzdHJzY3B5KGNhcC0+ZHJpdmVyLCBNVEtfSlBFR19OQU1FICIgZGVjb2RlciIsIHNp emVvZihjYXAtPmRyaXZlcikpOw0KLQlzdHJzY3B5KGNhcC0+Y2FyZCwgTVRLX0pQRUdfTkFNRSAi IGRlY29kZXIiLCBzaXplb2YoY2FwLT5jYXJkKSk7DQorCXN0cnNjcHkoY2FwLT5kcml2ZXIsIE1U S19KUEVHX05BTUUsIHNpemVvZihjYXAtPmRyaXZlcikpOw0KKwlpZiAoanBlZy0+bW9kZSA9PSAg TVRLX0pQRUdfRU5DKQ0KKwkJc3Ryc2NweShjYXAtPmNhcmQsIE1US19KUEVHX05BTUUgIiBlbmNv ZGVyIiwgc2l6ZW9mKGNhcC0+Y2FyZCkpOw0KKwllbHNlDQorCQlzdHJzY3B5KGNhcC0+Y2FyZCwg TVRLX0pQRUdfTkFNRSAiIGRlY29kZXIiLCBzaXplb2YoY2FwLT5jYXJkKSk7DQogCXNucHJpbnRm KGNhcC0+YnVzX2luZm8sIHNpemVvZihjYXAtPmJ1c19pbmZvKSwgInBsYXRmb3JtOiVzIiwNCiAJ CSBkZXZfbmFtZShqcGVnLT5kZXYpKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBp bnQgdmlkaW9jX2pwZWdfc19jdHJsKHN0cnVjdCB2NGwyX2N0cmwgKmN0cmwpDQorew0KKwlzdHJ1 Y3QgbXRrX2pwZWdfY3R4ICpjdHggPSBjdHJsX3RvX2N0eChjdHJsKTsNCisJaW50IHJldCA9IDA7 DQorDQorCXN3aXRjaCAoY3RybC0+aWQpIHsNCisJY2FzZSBWNEwyX0NJRF9KUEVHX1JFU1RBUlRf SU5URVJWQUw6DQorCQljdHgtPnJlc3RhcnRfaW50ZXJ2YWwgPSBjdHJsLT52YWw7DQorCQlicmVh azsNCisJY2FzZSBWNEwyX0NJRF9KUEVHX0NPTVBSRVNTSU9OX1FVQUxJVFk6DQorCQljdHgtPmVu Y19xdWFsaXR5ID0gY3RybC0+dmFsOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRMMl9DSURfSlBFR19B Q1RJVkVfTUFSS0VSOg0KKwkJY3R4LT5lbmFibGVfZXhpZiA9IGN0cmwtPnZhbCAmIFY0TDJfSlBF R19BQ1RJVkVfTUFSS0VSX0FQUDE7DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gcmV0Ow0K K30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IHY0bDJfY3RybF9vcHMgbXRrX2pwZWdfY3RybF9v cHMgPSB7DQorCS5zX2N0cmwgPSB2aWRpb2NfanBlZ19zX2N0cmwsDQorfTsNCisNCitzdGF0aWMg aW50IG10a19qcGVnX2N0cmxzX3NldHVwKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCkNCit7DQor CWNvbnN0IHN0cnVjdCB2NGwyX2N0cmxfb3BzICpvcHMgPSAmbXRrX2pwZWdfY3RybF9vcHM7DQor CXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlciAqaGFuZGxlciA9ICZjdHgtPmN0cmxfaGRsOw0KKwlz dHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KKw0KKwl2NGwyX2N0cmxfaGFu ZGxlcl9pbml0KGhhbmRsZXIsIDMpOw0KKw0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19F TkMpIHsNCisJCXY0bDJfY3RybF9uZXdfc3RkKGhhbmRsZXIsIG9wcywgVjRMMl9DSURfSlBFR19S RVNUQVJUX0lOVEVSVkFMLA0KKwkJCQkgIDAsIDEwMCwgMSwgMCk7DQorCQl2NGwyX2N0cmxfbmV3 X3N0ZChoYW5kbGVyLCBvcHMsDQorCQkJCSAgVjRMMl9DSURfSlBFR19DT01QUkVTU0lPTl9RVUFM SVRZLCA0OCwgMTAwLCAxLA0KKwkJCQkgIDkwKTsNCisJCXY0bDJfY3RybF9uZXdfc3RkKGhhbmRs ZXIsIG9wcywgVjRMMl9DSURfSlBFR19BQ1RJVkVfTUFSS0VSLCAwLA0KKwkJCQkgIFY0TDJfSlBF R19BQ1RJVkVfTUFSS0VSX0FQUDEsIDAsIDApOw0KKw0KKwkJaWYgKGhhbmRsZXItPmVycm9yKSB7 DQorCQkJdjRsMl9jdHJsX2hhbmRsZXJfZnJlZSgmY3R4LT5jdHJsX2hkbCk7DQorCQkJcmV0dXJu IGhhbmRsZXItPmVycm9yOw0KKwkJfQ0KKwl9DQorDQorCXY0bDJfY3RybF9oYW5kbGVyX3NldHVw KCZjdHgtPmN0cmxfaGRsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXRr X2pwZWdfZW51bV9mbXQoc3RydWN0IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZm9ybWF0cywgaW50 IG4sDQogCQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmLCB1MzIgdHlwZSkNCiB7DQpAQCAt MTE4LDE5ICsyMTcsMjcgQEAgc3RhdGljIGludCBtdGtfanBlZ19lbnVtX2ZtdChzdHJ1Y3QgbXRr X2pwZWdfZm10ICptdGtfanBlZ19mb3JtYXRzLCBpbnQgbiwNCiBzdGF0aWMgaW50IG10a19qcGVn X2VudW1fZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkJCSAg ICAgc3RydWN0IHY0bDJfZm10ZGVzYyAqZikNCiB7DQorCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0 eCA9IG10a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCisNCiAJcmV0dXJuIG10a19qcGVnX2VudW1f Zm10KG10a19qcGVnX2Zvcm1hdHMsIE1US19KUEVHX05VTV9GT1JNQVRTLCBmLA0KKwkJCQkgY3R4 LT5qcGVnLT5tb2RlID09IE1US19KUEVHX0VOQyA/DQorCQkJCSBNVEtfSlBFR19GTVRfRkxBR19F TkNfQ0FQVFVSRSA6DQogCQkJCSBNVEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQVFVSRSk7DQogfQ0K IA0KIHN0YXRpYyBpbnQgbXRrX2pwZWdfZW51bV9mbXRfdmlkX291dChzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCiAJCQkJICAgICBzdHJ1Y3QgdjRsMl9mbXRkZXNjICpmKQ0KIHsNCisJ c3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKw0K IAlyZXR1cm4gbXRrX2pwZWdfZW51bV9mbXQobXRrX2pwZWdfZm9ybWF0cywgTVRLX0pQRUdfTlVN X0ZPUk1BVFMsIGYsDQorCQkJCSBjdHgtPmpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8NCisJ CQkJIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19PVVRQVVQgOg0KIAkJCQkgTVRLX0pQRUdfRk1UX0ZM QUdfREVDX09VVFBVVCk7DQogfQ0KIA0KLXN0YXRpYyBzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhICpt dGtfanBlZ19nZXRfcV9kYXRhKHN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCwNCi0JCQkJCQkgICBl bnVtIHY0bDJfYnVmX3R5cGUgdHlwZSkNCitzdGF0aWMgc3RydWN0IG10a19qcGVnX3FfZGF0YSAq DQorbXRrX2pwZWdfZ2V0X3FfZGF0YShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsIGVudW0gdjRs Ml9idWZfdHlwZSB0eXBlKQ0KIHsNCiAJaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQodHlwZSkpDQog CQlyZXR1cm4gJmN0eC0+b3V0X3E7DQpAQCAtMTQzLDkgKzI1MCwxNCBAQCBzdGF0aWMgc3RydWN0 IG10a19qcGVnX2ZtdCAqbXRrX2pwZWdfZmluZF9mb3JtYXQoc3RydWN0IG10a19qcGVnX2N0eCAq Y3R4LA0KIHsNCiAJdW5zaWduZWQgaW50IGssIGZtdF9mbGFnOw0KIA0KLQlmbXRfZmxhZyA9IChm bXRfdHlwZSA9PSBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQpID8NCi0JCSAgIE1US19KUEVHX0ZN VF9GTEFHX0RFQ19PVVRQVVQgOg0KLQkJICAgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkU7 DQorCWlmIChjdHgtPmpwZWctPm1vZGUgPT0gIE1US19KUEVHX0VOQykNCisJCWZtdF9mbGFnID0g KGZtdF90eXBlID09IE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCkgPw0KKwkJCSAgIE1US19KUEVH X0ZNVF9GTEFHX0VOQ19PVVRQVVQgOg0KKwkJCSAgIE1US19KUEVHX0ZNVF9GTEFHX0VOQ19DQVBU VVJFOw0KKwllbHNlDQorCQlmbXRfZmxhZyA9IChmbXRfdHlwZSA9PSBNVEtfSlBFR19GTVRfVFlQ RV9PVVRQVVQpID8NCisJCQkgICBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUIDoNCisJCQkg ICBNVEtfSlBFR19GTVRfRkxBR19ERUNfQ0FQVFVSRTsNCiANCiAJZm9yIChrID0gMDsgayA8IE1U S19KUEVHX05VTV9GT1JNQVRTOyBrKyspIHsNCiAJCXN0cnVjdCBtdGtfanBlZ19mbXQgKmZtdCA9 ICZtdGtfanBlZ19mb3JtYXRzW2tdOw0KQEAgLTE3Nyw5ICsyODksNzMgQEAgc3RhdGljIHZvaWQg bXRrX2pwZWdfYWRqdXN0X2ZtdF9tcGxhbmUoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LA0KIAl9 DQogfQ0KIA0KLXN0YXRpYyBpbnQgbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoc3RydWN0IHY0bDJf Zm9ybWF0ICpmLA0KLQkJCQkgICBzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQsDQotCQkJCSAgIHN0 cnVjdCBtdGtfanBlZ19jdHggKmN0eCwgaW50IHFfdHlwZSkNCitzdGF0aWMgaW50IG10a19qcGVn X3RyeV9lbmNfZm10X21wbGFuZShzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsDQorCQkJCSAgICAgICBz dHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQsDQorCQkJCSAgICAgICBzdHJ1Y3QgbXRrX2pwZWdfY3R4 ICpjdHgsIGludCBxX3R5cGUpDQorew0KKwlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAq cGl4X21wID0gJmYtPmZtdC5waXhfbXA7DQorCWludCBpOw0KKw0KKwltZW1zZXQocGl4X21wLT5y ZXNlcnZlZCwgMCwgc2l6ZW9mKHBpeF9tcC0+cmVzZXJ2ZWQpKTsNCisJcGl4X21wLT5maWVsZCA9 IFY0TDJfRklFTERfTk9ORTsNCisNCisJaWYgKGN0eC0+c3RhdGUgIT0gTVRLX0pQRUdfSU5JVCkg ew0KKwkJbXRrX2pwZWdfYWRqdXN0X2ZtdF9tcGxhbmUoY3R4LCBmKTsNCisJCXJldHVybiAwOw0K Kwl9DQorDQorCXBpeF9tcC0+bnVtX3BsYW5lcyA9IGZtdC0+Y29scGxhbmVzOw0KKwlwaXhfbXAt PnBpeGVsZm9ybWF0ID0gZm10LT5mb3VyY2M7DQorDQorCWlmIChxX3R5cGUgPT0gTVRLX0pQRUdf Rk1UX1RZUEVfT1VUUFVUKSB7DQorCQlpZiAocGl4X21wLT5udW1fcGxhbmVzID09IDFVKSB7DQor CQkJcGl4X21wLT5oZWlnaHQgPSBjbGFtcChyb3VuZF91cChwaXhfbXAtPmhlaWdodCwgOCksDQor CQkJCQkgICAgICAgTVRLX0pQRUdfTUlOX0hFSUdIVCwNCisJCQkJCSAgICAgICBNVEtfSlBFR19N QVhfSEVJR0hUKTsNCisJCQlwaXhfbXAtPndpZHRoID0gY2xhbXAocm91bmRfdXAocGl4X21wLT53 aWR0aCwgMzIpLA0KKwkJCQkJICAgICAgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJCQkJICAgICAg TVRLX0pQRUdfTUFYX1dJRFRIKTsNCisJCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5ieXRlc3Blcmxp bmUgPSBwaXhfbXAtPndpZHRoICogMjsNCisJCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5zaXplaW1h Z2UgPQ0KKwkJCQlwaXhfbXAtPndpZHRoICogcGl4X21wLT5oZWlnaHQgKiAyOw0KKwkJfQ0KKwkJ aWYgKHBpeF9tcC0+bnVtX3BsYW5lcyA9PSAyVSkgew0KKwkJCXBpeF9tcC0+aGVpZ2h0ID0gY2xh bXAocm91bmRfdXAocGl4X21wLT5oZWlnaHQsIDE2KSwNCisJCQkJCSAgICAgICBNVEtfSlBFR19N SU5fSEVJR0hULA0KKwkJCQkJICAgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKwkJCXBpeF9t cC0+d2lkdGggPSBjbGFtcChyb3VuZF91cChwaXhfbXAtPndpZHRoLCAxNiksDQorCQkJCQkgICAg ICBNVEtfSlBFR19NSU5fV0lEVEgsDQorCQkJCQkgICAgICBNVEtfSlBFR19NQVhfV0lEVEgpOw0K KwkJCWZvciAoaSA9IDA7IGkgPCBwaXhfbXAtPm51bV9wbGFuZXM7IGkrKykgew0KKwkJCQlwaXhf bXAtPnBsYW5lX2ZtdFtpXS5ieXRlc3BlcmxpbmUgPQ0KKwkJCQkJcGl4X21wLT53aWR0aDsNCisJ CQkJcGl4X21wLT5wbGFuZV9mbXRbaV0uc2l6ZWltYWdlID0NCisJCQkJCXBpeF9tcC0+d2lkdGgg KiBwaXhfbXAtPmhlaWdodCAvDQorCQkJCQkoaSArIDEpOw0KKwkJCX0NCisJCX0NCisJfSBlbHNl IHsNCisJCXBpeF9tcC0+aGVpZ2h0ID0gY2xhbXAocGl4X21wLT5oZWlnaHQsIE1US19KUEVHX01J Tl9IRUlHSFQsDQorCQkJCSAgICAgICBNVEtfSlBFR19NQVhfSEVJR0hUKTsNCisJCXBpeF9tcC0+ d2lkdGggPSBjbGFtcChwaXhfbXAtPndpZHRoLCBNVEtfSlBFR19NSU5fV0lEVEgsDQorCQkJCSAg ICAgIE1US19KUEVHX01BWF9XSURUSCk7DQorDQorCQlpZiAoZm10LT5mb3VyY2MgPT0gVjRMMl9Q SVhfRk1UX0pQRUcpIHsNCisJCQlwaXhfbXAtPnBsYW5lX2ZtdFswXS5ieXRlc3BlcmxpbmUgPSAw Ow0KKwkJCXBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSA9DQorCQkJCXJvdW5kX3VwKHBp eF9tcC0+cGxhbmVfZm10WzBdLnNpemVpbWFnZSwgMTI4KTsNCisJCQlpZiAocGl4X21wLT5wbGFu ZV9mbXRbMF0uc2l6ZWltYWdlID09IDApDQorCQkJCXBpeF9tcC0+cGxhbmVfZm10WzBdLnNpemVp bWFnZSA9DQorCQkJCQlNVEtfSlBFR19ERUZBVUxUX1NJWkVJTUFHRTsNCisJCX0NCisJfQ0KKw0K KwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCBtdGtfanBlZ190cnlfZGVjX2ZtdF9tcGxh bmUoc3RydWN0IHY0bDJfZm9ybWF0ICpmLA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2Zt dCAqZm10LA0KKwkJCQkgICAgICAgc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCBpbnQgcV90eXBl KQ0KIHsNCiAJc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQu cGl4X21wOw0KIAlpbnQgaTsNCkBAIC0yODYsNiArNDYyLDcgQEAgc3RhdGljIGludCBtdGtfanBl Z190cnlfZm10X3ZpZF9jYXBfbXBsYW5lKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpwcml2LA0K IHsNCiAJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYp Ow0KIAlzdHJ1Y3QgbXRrX2pwZWdfZm10ICpmbXQ7DQorCXN0cnVjdCBtdGtfanBlZ19kZXYgKmpw ZWcgPSBjdHgtPmpwZWc7DQogDQogCWZtdCA9IG10a19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgZi0+ Zm10LnBpeF9tcC5waXhlbGZvcm1hdCwNCiAJCQkJICAgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVS RSk7DQpAQCAtMjk5LDcgKzQ3NiwxMiBAQCBzdGF0aWMgaW50IG10a19qcGVnX3RyeV9mbXRfdmlk X2NhcF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQogCQkgKGZtdC0+Zm91 cmNjID4+IDE2ICYgMHhmZiksDQogCQkgKGZtdC0+Zm91cmNjID4+IDI0ICYgMHhmZikpOw0KIA0K LQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoZiwgZm10LCBjdHgsIE1US19KUEVHX0ZN VF9UWVBFX0NBUFRVUkUpOw0KKwlpZiAoanBlZy0+bW9kZSA9PSBNVEtfSlBFR19FTkMpDQorCQly ZXR1cm4gbXRrX2pwZWdfdHJ5X2VuY19mbXRfbXBsYW5lKGYsIGZtdCwgY3R4LA0KKwkJCQkJCSAg IE1US19KUEVHX0ZNVF9UWVBFX0NBUFRVUkUpOw0KKwllbHNlDQorCQlyZXR1cm4gbXRrX2pwZWdf dHJ5X2RlY19mbXRfbXBsYW5lKGYsIGZtdCwgY3R4LA0KKwkJCQkJCSAgIE1US19KUEVHX0ZNVF9U WVBFX0NBUFRVUkUpOw0KIH0NCiANCiBzdGF0aWMgaW50IG10a19qcGVnX3RyeV9mbXRfdmlkX291 dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQpAQCAtMzA3LDYgKzQ4OSw3 IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfdHJ5X2ZtdF92aWRfb3V0X21wbGFuZShzdHJ1Y3QgZmls ZSAqZmlsZSwgdm9pZCAqcHJpdiwNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eCA9IG10 a19qcGVnX2ZoX3RvX2N0eChwcml2KTsNCiAJc3RydWN0IG10a19qcGVnX2ZtdCAqZm10Ow0KKwlz dHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KIA0KIAlmbXQgPSBtdGtfanBl Z19maW5kX2Zvcm1hdChjdHgsIGYtPmZtdC5waXhfbXAucGl4ZWxmb3JtYXQsDQogCQkJCSAgIE1U S19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQpAQCAtMzIwLDcgKzUwMywxMiBAQCBzdGF0aWMgaW50 IG10a19qcGVnX3RyeV9mbXRfdmlkX291dF9tcGxhbmUoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQg KnByaXYsDQogCQkgKGZtdC0+Zm91cmNjID4+IDE2ICYgMHhmZiksDQogCQkgKGZtdC0+Zm91cmNj ID4+IDI0ICYgMHhmZikpOw0KIA0KLQlyZXR1cm4gbXRrX2pwZWdfdHJ5X2ZtdF9tcGxhbmUoZiwg Zm10LCBjdHgsIE1US19KUEVHX0ZNVF9UWVBFX09VVFBVVCk7DQorCWlmIChqcGVnLT5tb2RlID09 IE1US19KUEVHX0VOQykNCisJCXJldHVybiBtdGtfanBlZ190cnlfZW5jX2ZtdF9tcGxhbmUoZiwg Zm10LCBjdHgsDQorCQkJCQkJICAgTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCisJZWxzZQ0K KwkJcmV0dXJuIG10a19qcGVnX3RyeV9kZWNfZm10X21wbGFuZShmLCBmbXQsIGN0eCwNCisJCQkJ CQkgICBNVEtfSlBFR19GTVRfVFlQRV9PVVRQVVQpOw0KIH0NCiANCiBzdGF0aWMgaW50IG10a19q cGVnX3NfZm10X21wbGFuZShzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQpAQCAtNDI1LDI4ICs2 MTMsNDggQEAgc3RhdGljIGludCBtdGtfanBlZ19nX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCiAJCQkJc3RydWN0IHY0bDJfc2VsZWN0aW9uICpzKQ0KIHsNCiAJc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKwlzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KIA0KLQlpZiAocy0+dHlwZSAhPSBW NEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpDQotCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYgKGpw ZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9U WVBFX1ZJREVPX09VVFBVVCkNCisJCQlyZXR1cm4gLUVJTlZBTDsNCiANCi0Jc3dpdGNoIChzLT50 YXJnZXQpIHsNCi0JY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRToNCi0JY2FzZSBWNEwyX1NFTF9U R1RfQ09NUE9TRV9ERUZBVUxUOg0KLQkJcy0+ci53aWR0aCA9IGN0eC0+b3V0X3EudzsNCi0JCXMt PnIuaGVpZ2h0ID0gY3R4LT5vdXRfcS5oOw0KLQkJcy0+ci5sZWZ0ID0gMDsNCi0JCXMtPnIudG9w ID0gMDsNCi0JCWJyZWFrOw0KLQljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX0JPVU5EUzoNCi0J Y2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9QQURERUQ6DQotCQlzLT5yLndpZHRoID0gY3R4LT5j YXBfcS53Ow0KLQkJcy0+ci5oZWlnaHQgPSBjdHgtPmNhcF9xLmg7DQotCQlzLT5yLmxlZnQgPSAw Ow0KLQkJcy0+ci50b3AgPSAwOw0KLQkJYnJlYWs7DQotCWRlZmF1bHQ6DQotCQlyZXR1cm4gLUVJ TlZBTDsNCisJCXN3aXRjaCAocy0+dGFyZ2V0KSB7DQorCQljYXNlIFY0TDJfU0VMX1RHVF9DUk9Q Og0KKwkJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUF9CT1VORFM6DQorCQljYXNlIFY0TDJfU0VMX1RH VF9DUk9QX0RFRkFVTFQ6DQorCQkJcy0+ci53aWR0aCA9IGN0eC0+b3V0X3EudzsNCisJCQlzLT5y LmhlaWdodCA9IGN0eC0+b3V0X3EuaDsNCisJCQlzLT5yLmxlZnQgPSAwOw0KKwkJCXMtPnIudG9w ID0gMDsNCisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9 DQorCX0gZWxzZSB7DQorCQlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRV UkUpDQorCQkJcmV0dXJuIC1FSU5WQUw7DQorDQorCQlzd2l0Y2ggKHMtPnRhcmdldCkgew0KKwkJ Y2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRToNCisJCWNhc2UgVjRMMl9TRUxfVEdUX0NPTVBPU0Vf REVGQVVMVDoNCisJCQlzLT5yLndpZHRoID0gY3R4LT5vdXRfcS53Ow0KKwkJCXMtPnIuaGVpZ2h0 ID0gY3R4LT5vdXRfcS5oOw0KKwkJCXMtPnIubGVmdCA9IDA7DQorCQkJcy0+ci50b3AgPSAwOw0K KwkJCWJyZWFrOw0KKwkJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFM6DQorCQljYXNl IFY0TDJfU0VMX1RHVF9DT01QT1NFX1BBRERFRDoNCisJCQlzLT5yLndpZHRoID0gY3R4LT5jYXBf cS53Ow0KKwkJCXMtPnIuaGVpZ2h0ID0gY3R4LT5jYXBfcS5oOw0KKwkJCXMtPnIubGVmdCA9IDA7 DQorCQkJcy0+ci50b3AgPSAwOw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlyZXR1cm4g LUVJTlZBTDsNCisJCX0NCiAJfQ0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAtNDU0LDIwICs2 NjIsMzggQEAgc3RhdGljIGludCBtdGtfanBlZ19zX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCiAJCQkJc3RydWN0IHY0bDJfc2VsZWN0aW9uICpzKQ0KIHsNCiAJc3Ry dWN0IG10a19qcGVnX2N0eCAqY3R4ID0gbXRrX2pwZWdfZmhfdG9fY3R4KHByaXYpOw0KKwlzdHJ1 Y3QgbXRrX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5qcGVnOw0KIA0KLQlpZiAocy0+dHlwZSAhPSBW NEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpDQotCQlyZXR1cm4gLUVJTlZBTDsNCisJaWYgKGpw ZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9U WVBFX1ZJREVPX09VVFBVVCkNCisJCQlyZXR1cm4gLUVJTlZBTDsNCiANCi0Jc3dpdGNoIChzLT50 YXJnZXQpIHsNCi0JY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRToNCi0JCXMtPnIubGVmdCA9IDA7 DQotCQlzLT5yLnRvcCA9IDA7DQotCQljdHgtPm91dF9xLncgPSBzLT5yLndpZHRoOw0KLQkJY3R4 LT5vdXRfcS5oID0gcy0+ci5oZWlnaHQ7DQotCQlicmVhazsNCi0JZGVmYXVsdDoNCi0JCXJldHVy biAtRUlOVkFMOw0KKwkJc3dpdGNoIChzLT50YXJnZXQpIHsNCisJCWNhc2UgVjRMMl9TRUxfVEdU X0NST1A6DQorCQkJcy0+ci5sZWZ0ID0gMDsNCisJCQlzLT5yLnRvcCA9IDA7DQorCQkJY3R4LT5v dXRfcS53ID0gcy0+ci53aWR0aDsNCisJCQljdHgtPm91dF9xLmggPSBzLT5yLmhlaWdodDsNCisJ CQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJcmV0dXJuIC1FSU5WQUw7DQorCQl9DQorCX0gZWxz ZSB7DQorCQlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkUpDQorCQkJ cmV0dXJuIC1FSU5WQUw7DQorDQorCQlzd2l0Y2ggKHMtPnRhcmdldCkgew0KKwkJY2FzZSBWNEwy X1NFTF9UR1RfQ09NUE9TRToNCisJCQlzLT5yLmxlZnQgPSAwOw0KKwkJCXMtPnIudG9wID0gMDsN CisJCQljdHgtPm91dF9xLncgPSBzLT5yLndpZHRoOw0KKwkJCWN0eC0+b3V0X3EuaCA9IHMtPnIu aGVpZ2h0Ow0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlyZXR1cm4gLUVJTlZBTDsNCisJ CX0NCiAJfQ0KKw0KIAlyZXR1cm4gMDsNCiB9DQogDQpAQCAtNjQzLDI5ICs4NjksNDIgQEAgc3Rh dGljIHZvaWQgbXRrX2pwZWdfYnVmX3F1ZXVlKHN0cnVjdCB2YjJfYnVmZmVyICp2YikNCiAJCWdv dG8gZW5kOw0KIA0KIAlqcGVnX3NyY19idWYgPSBtdGtfanBlZ192YjJfdG9fc3JjYnVmKHZiKTsN Ci0JcGFyYW0gPSAmanBlZ19zcmNfYnVmLT5kZWNfcGFyYW07DQotCW1lbXNldChwYXJhbSwgMCwg c2l6ZW9mKCpwYXJhbSkpOw0KLQ0KLQlpZiAoanBlZ19zcmNfYnVmLT5mbGFncyAmIE1US19KUEVH X0JVRl9GTEFHU19MQVNUX0ZSQU1FKSB7DQotCQl2NGwyX2RiZygxLCBkZWJ1ZywgJmpwZWctPnY0 bDJfZGV2LCAiR290IGVvc1xuIik7DQotCQlnb3RvIGVuZDsNCi0JfQ0KLQloZWFkZXJfdmFsaWQg PSBtdGtfanBlZ19wYXJzZShwYXJhbSwgKHU4ICopdmIyX3BsYW5lX3ZhZGRyKHZiLCAwKSwNCi0J CQkJICAgICAgdmIyX2dldF9wbGFuZV9wYXlsb2FkKHZiLCAwKSk7DQotCWlmICghaGVhZGVyX3Zh bGlkKSB7DQotCQl2NGwyX2VycigmanBlZy0+djRsMl9kZXYsICJIZWFkZXIgaW52YWxpZC5cbiIp Ow0KLQkJdmIyX2J1ZmZlcl9kb25lKHZiLCBWQjJfQlVGX1NUQVRFX0VSUk9SKTsNCi0JCXJldHVy bjsNCi0JfQ0KLQ0KLQlpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfSlBFR19JTklUKSB7DQotCQlzdHJ1 Y3QgdmIyX3F1ZXVlICpkc3RfdnEgPSB2NGwyX20ybV9nZXRfdnEoDQotCQkJY3R4LT5maC5tMm1f Y3R4LCBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKTsNCisJaWYgKGpwZWctPm1v ZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQlpZiAoanBlZ19zcmNfYnVmLT5mbGFncyAmIE1US19K UEVHX0JVRl9GTEFHU19MQVNUX0ZSQU1FKSB7DQorCQkJdjRsMl9kYmcoMSwgZGVidWcsICZqcGVn LT52NGwyX2RldiwgIkdvdCBlb3MiKTsNCisJCQlnb3RvIGVuZDsNCisJCX0NCisJCWlmIChjdHgt PnN0YXRlID09IE1US19KUEVHX0lOSVQpDQorCQkJY3R4LT5zdGF0ZSA9IE1US19KUEVHX1JVTk5J Tkc7DQorCX0gZWxzZSB7DQorCQlwYXJhbSA9ICZqcGVnX3NyY19idWYtPmRlY19wYXJhbTsNCisJ CW1lbXNldChwYXJhbSwgMCwgc2l6ZW9mKCpwYXJhbSkpOw0KKw0KKwkJaWYgKGpwZWdfc3JjX2J1 Zi0+ZmxhZ3MgJiBNVEtfSlBFR19CVUZfRkxBR1NfTEFTVF9GUkFNRSkgew0KKwkJCXY0bDJfZGJn KDEsIGRlYnVnLCAmanBlZy0+djRsMl9kZXYsICJHb3QgZW9zXG4iKTsNCisJCQlnb3RvIGVuZDsN CisJCX0NCisJCWhlYWRlcl92YWxpZCA9IG10a19qcGVnX3BhcnNlKHBhcmFtLA0KKwkJCQkJICAg ICAgKHU4ICopdmIyX3BsYW5lX3ZhZGRyKHZiLCAwKSwNCisJCQkJCSAgICAgIHZiMl9nZXRfcGxh bmVfcGF5bG9hZCh2YiwgMCkpOw0KKwkJaWYgKCFoZWFkZXJfdmFsaWQpIHsNCisJCQl2NGwyX2Vy cigmanBlZy0+djRsMl9kZXYsICJIZWFkZXIgaW52YWxpZC5cbiIpOw0KKwkJCXZiMl9idWZmZXJf ZG9uZSh2YiwgVkIyX0JVRl9TVEFURV9FUlJPUik7DQorCQkJcmV0dXJuOw0KKwkJfQ0KIA0KLQkJ bXRrX2pwZWdfcXVldWVfc3JjX2NoZ19ldmVudChjdHgpOw0KLQkJbXRrX2pwZWdfc2V0X3F1ZXVl X2RhdGEoY3R4LCBwYXJhbSk7DQotCQljdHgtPnN0YXRlID0gdmIyX2lzX3N0cmVhbWluZyhkc3Rf dnEpID8NCi0JCQkJTVRLX0pQRUdfU09VUkNFX0NIQU5HRSA6IE1US19KUEVHX1JVTk5JTkc7DQor CQlpZiAoY3R4LT5zdGF0ZSA9PSBNVEtfSlBFR19JTklUKSB7DQorCQkJc3RydWN0IHZiMl9xdWV1 ZSAqZHN0X3ZxOw0KKw0KKwkJCWRzdF92cSA9IHY0bDJfbTJtX2dldF92cQ0KKwkJCQkJKGN0eC0+ ZmgubTJtX2N0eCwNCisJCQkJCSBWNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5FKTsN CisJCQltdGtfanBlZ19xdWV1ZV9zcmNfY2hnX2V2ZW50KGN0eCk7DQorCQkJbXRrX2pwZWdfc2V0 X3F1ZXVlX2RhdGEoY3R4LCBwYXJhbSk7DQorCQkJY3R4LT5zdGF0ZSA9IHZiMl9pc19zdHJlYW1p bmcoZHN0X3ZxKSA/DQorCQkJCQlNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFIDoNCisJCQkJCU1US19K UEVHX1JVTk5JTkc7DQorCQl9DQogCX0NCiBlbmQ6DQogCXY0bDJfbTJtX2J1Zl9xdWV1ZShjdHgt PmZoLm0ybV9jdHgsIHRvX3ZiMl92NGwyX2J1ZmZlcih2YikpOw0KQEAgLTcwOCwxNiArOTQ3LDE2 IEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX3N0b3Bfc3RyZWFtaW5nKHN0cnVjdCB2YjJfcXVldWUg KnEpDQogCSAqIHN1YnNhbXBsaW5nLiBVcGRhdGUgY2FwdHVyZSBxdWV1ZSB3aGVuIHRoZSBzdHJl YW0gaXMgb2ZmLg0KIAkgKi8NCiAJaWYgKGN0eC0+c3RhdGUgPT0gTVRLX0pQRUdfU09VUkNFX0NI QU5HRSAmJg0KLQkgICAgIVY0TDJfVFlQRV9JU19PVVRQVVQocS0+dHlwZSkpIHsNCisJICAgICFW NEwyX1RZUEVfSVNfT1VUUFVUKHEtPnR5cGUpICYmDQorCSAgICBjdHgtPmpwZWctPm1vZGUgPT0g TVRLX0pQRUdfREVDKSB7DQogCQlzdHJ1Y3QgbXRrX2pwZWdfc3JjX2J1ZiAqc3JjX2J1ZjsNCiAN CiAJCXZiID0gdjRsMl9tMm1fbmV4dF9zcmNfYnVmKGN0eC0+ZmgubTJtX2N0eCk7DQogCQlzcmNf YnVmID0gbXRrX2pwZWdfdmIyX3RvX3NyY2J1ZigmdmItPnZiMl9idWYpOw0KIAkJbXRrX2pwZWdf c2V0X3F1ZXVlX2RhdGEoY3R4LCAmc3JjX2J1Zi0+ZGVjX3BhcmFtKTsNCiAJCWN0eC0+c3RhdGUg PSBNVEtfSlBFR19SVU5OSU5HOw0KLQl9IGVsc2UgaWYgKFY0TDJfVFlQRV9JU19PVVRQVVQocS0+ dHlwZSkpIHsNCisJfSBlbHNlIGlmIChWNEwyX1RZUEVfSVNfT1VUUFVUKHEtPnR5cGUpKQ0KIAkJ Y3R4LT5zdGF0ZSA9IE1US19KUEVHX0lOSVQ7DQotCX0NCiANCiAJd2hpbGUgKCh2YiA9IG10a19q cGVnX2J1Zl9yZW1vdmUoY3R4LCBxLT50eXBlKSkpDQogCQl2NGwyX20ybV9idWZfZG9uZSh2Yiwg VkIyX0JVRl9TVEFURV9FUlJPUik7DQpAQCAtNzcyLDYgKzEwMTEsNDUgQEAgc3RhdGljIGludCBt dGtfanBlZ19zZXRfZGVjX2RzdChzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgsDQogCXJldHVybiAw Ow0KIH0NCiANCitzdGF0aWMgdm9pZCBtdGtfanBlZ19zZXRfZW5jX2RzdChzdHJ1Y3QgbXRrX2pw ZWdfY3R4ICpjdHgsIHZvaWQgX19pb21lbSAqYmFzZSwNCisJCQkJIHN0cnVjdCB2YjJfYnVmZmVy ICpkc3RfYnVmLA0KKwkJCQkgc3RydWN0IG10a19qcGVnX2VuY19icyAqYnMpDQorew0KKwlicy0+ ZG1hX2FkZHIgPSB2YjJfZG1hX2NvbnRpZ19wbGFuZV9kbWFfYWRkcihkc3RfYnVmLCAwKTsNCisJ YnMtPmRtYV9hZGRyX29mZnNldCA9IGN0eC0+ZW5hYmxlX2V4aWYgPyBNVEtfSlBFR19ERUZBVUxU X0VYSUZfU0laRSA6IDA7DQorCWJzLT5kbWFfYWRkcl9vZmZzZXRtYXNrID0gYnMtPmRtYV9hZGRy ICYgSlBFR19FTkNfRFNUX0FERFJfT0ZGU0VUX01BU0s7DQorCWJzLT5zaXplID0gcm91bmRfdXAo dmIyX3BsYW5lX3NpemUoZHN0X2J1ZiwgMCksIDEyOCk7DQorDQorCW10a19qcGVnX2VuY19zZXRf ZHN0X2FkZHIoYmFzZSwgYnMtPmRtYV9hZGRyLCBicy0+c2l6ZSwNCisJCQkJICBicy0+ZG1hX2Fk ZHJfb2Zmc2V0LA0KKwkJCQkgIGJzLT5kbWFfYWRkcl9vZmZzZXRtYXNrKTsNCit9DQorDQorc3Rh dGljIHZvaWQgbXRrX2pwZWdfc2V0X2VuY19zcmMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4LCB2 b2lkIF9faW9tZW0gKmJhc2UsDQorCQkJCSBzdHJ1Y3QgdmIyX2J1ZmZlciAqc3JjX2J1ZiwNCisJ CQkJIHN0cnVjdCBtdGtfanBlZ19lbmNfZmIgKmZiKQ0KK3sNCisJaW50IGk7DQorDQorCW10a19q cGVnX2VuY19zZXRfaW1nX3NpemUoYmFzZSwgY3R4LT5vdXRfcS53LCBjdHgtPm91dF9xLmgpOw0K KwltdGtfanBlZ19lbmNfc2V0X2VuY19mb3JtYXQoYmFzZSwgY3R4LT5vdXRfcS5mbXQtPmZvdXJj Yyk7DQorCW10a19qcGVnX2VuY19zZXRfYmxrX251bShiYXNlLCBjdHgtPm91dF9xLmZtdC0+Zm91 cmNjLCBjdHgtPm91dF9xLncsDQorCQkJCSBjdHgtPm91dF9xLmgpOw0KKwltdGtfanBlZ19lbmNf c2V0X3N0cmlkZShiYXNlLCBjdHgtPm91dF9xLmZtdC0+Zm91cmNjLCBjdHgtPm91dF9xLncsDQor CQkJCWN0eC0+b3V0X3EuaCwgY3R4LT5vdXRfcS5ieXRlc3BlcmxpbmVbMF0pOw0KKw0KKwlmb3Ig KGkgPSAwOyBpIDwgc3JjX2J1Zi0+bnVtX3BsYW5lczsgaSsrKSB7DQorCQlmYi0+ZmJfYWRkcltp XS5kbWFfYWRkciA9DQorCQkJdmIyX2RtYV9jb250aWdfcGxhbmVfZG1hX2FkZHIoc3JjX2J1Ziwg aSkgKw0KKwkJCXNyY19idWYtPnBsYW5lc1tpXS5kYXRhX29mZnNldDsNCisJCWZiLT5mYl9hZGRy W2ldLnNpemUgPSB2YjJfcGxhbmVfc2l6ZShzcmNfYnVmLCBpKSAtDQorCQkJCSAgICAgIHNyY19i dWYtPnBsYW5lc1tpXS5kYXRhX29mZnNldDsNCisJfQ0KKw0KKwltdGtfanBlZ19lbmNfc2V0X3Ny Y19hZGRyKGJhc2UsIGZiLT5mYl9hZGRyWzBdLmRtYV9hZGRyLA0KKwkJCQkgIGZiLT5mYl9hZGRy WzFdLmRtYV9hZGRyKTsNCit9DQorDQogc3RhdGljIHZvaWQgbXRrX2pwZWdfZGV2aWNlX3J1bih2 b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2N0eCAqY3R4ID0gcHJpdjsNCkBAIC03 ODIsNiArMTA2MCw4IEBAIHN0YXRpYyB2b2lkIG10a19qcGVnX2RldmljZV9ydW4odm9pZCAqcHJp dikNCiAJc3RydWN0IG10a19qcGVnX3NyY19idWYgKmpwZWdfc3JjX2J1ZjsNCiAJc3RydWN0IG10 a19qcGVnX2JzIGJzOw0KIAlzdHJ1Y3QgbXRrX2pwZWdfZmIgZmI7DQorCXN0cnVjdCBtdGtfanBl Z19lbmNfYnMgZW5jX2JzOw0KKwlzdHJ1Y3QgbXRrX2pwZWdfZW5jX2ZiIGVuY19mYjsNCiAJaW50 IGk7DQogDQogCXNyY19idWYgPSB2NGwyX20ybV9uZXh0X3NyY19idWYoY3R4LT5maC5tMm1fY3R4 KTsNCkBAIC03OTIsMzAgKzEwNzIsNDcgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfZGV2aWNlX3J1 bih2b2lkICpwcml2KQ0KIAkJZm9yIChpID0gMDsgaSA8IGRzdF9idWYtPnZiMl9idWYubnVtX3Bs YW5lczsgaSsrKQ0KIAkJCXZiMl9zZXRfcGxhbmVfcGF5bG9hZCgmZHN0X2J1Zi0+dmIyX2J1Ziwg aSwgMCk7DQogCQlidWZfc3RhdGUgPSBWQjJfQlVGX1NUQVRFX0RPTkU7DQotCQlnb3RvIGRlY19l bmQ7DQorCQlnb3RvIGRldmljZV9ydW5fZW5kOw0KIAl9DQogDQotCWlmIChtdGtfanBlZ19jaGVj a19yZXNvbHV0aW9uX2NoYW5nZShjdHgsICZqcGVnX3NyY19idWYtPmRlY19wYXJhbSkpIHsNCi0J CW10a19qcGVnX3F1ZXVlX3NyY19jaGdfZXZlbnQoY3R4KTsNCi0JCWN0eC0+c3RhdGUgPSBNVEtf SlBFR19TT1VSQ0VfQ0hBTkdFOw0KLQkJdjRsMl9tMm1fam9iX2ZpbmlzaChqcGVnLT5tMm1fZGV2 LCBjdHgtPmZoLm0ybV9jdHgpOw0KLQkJcmV0dXJuOw0KLQl9DQorCWlmIChqcGVnLT5tb2RlID09 IE1US19KUEVHX0VOQykgew0KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmpwZWctPmh3X2xvY2ssIGZs YWdzKTsNCisJCW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQorCQltdGtf anBlZ19zZXRfZW5jX2RzdChjdHgsIGpwZWctPnJlZ19iYXNlLCAmZHN0X2J1Zi0+dmIyX2J1ZiwN CisJCQkJICAgICAmZW5jX2JzKTsNCisJCW10a19qcGVnX3NldF9lbmNfc3JjKGN0eCwganBlZy0+ cmVnX2Jhc2UsICZzcmNfYnVmLT52YjJfYnVmLA0KKwkJCQkgICAgICZlbmNfZmIpOw0KKwkJbXRr X2pwZWdfZW5jX3NldF9jdHJsX2NmZyhqcGVnLT5yZWdfYmFzZSwgY3R4LT5lbmFibGVfZXhpZiwN CisJCQkJCSAgY3R4LT5lbmNfcXVhbGl0eSwNCisJCQkJCSAgY3R4LT5yZXN0YXJ0X2ludGVydmFs KTsNCisNCisJCW10a19qcGVnX2VuY19zdGFydChqcGVnLT5yZWdfYmFzZSk7DQorCX0gZWxzZSB7 DQorCQlpZiAobXRrX2pwZWdfY2hlY2tfcmVzb2x1dGlvbl9jaGFuZ2UNCisJCQkoY3R4LCAmanBl Z19zcmNfYnVmLT5kZWNfcGFyYW0pKSB7DQorCQkJbXRrX2pwZWdfcXVldWVfc3JjX2NoZ19ldmVu dChjdHgpOw0KKwkJCWN0eC0+c3RhdGUgPSBNVEtfSlBFR19TT1VSQ0VfQ0hBTkdFOw0KKwkJCXY0 bDJfbTJtX2pvYl9maW5pc2goanBlZy0+bTJtX2RldiwgY3R4LT5maC5tMm1fY3R4KTsNCisJCQly ZXR1cm47DQorCQl9DQogDQotCW10a19qcGVnX3NldF9kZWNfc3JjKGN0eCwgJnNyY19idWYtPnZi Ml9idWYsICZicyk7DQotCWlmIChtdGtfanBlZ19zZXRfZGVjX2RzdChjdHgsICZqcGVnX3NyY19i dWYtPmRlY19wYXJhbSwgJmRzdF9idWYtPnZiMl9idWYsICZmYikpDQotCQlnb3RvIGRlY19lbmQ7 DQorCQltdGtfanBlZ19zZXRfZGVjX3NyYyhjdHgsICZzcmNfYnVmLT52YjJfYnVmLCAmYnMpOw0K KwkJaWYgKG10a19qcGVnX3NldF9kZWNfZHN0KGN0eCwgJmpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFt LA0KKwkJCQkJICZkc3RfYnVmLT52YjJfYnVmLCAmZmIpKQ0KKwkJCWdvdG8gZGV2aWNlX3J1bl9l bmQ7DQogDQotCXNwaW5fbG9ja19pcnFzYXZlKCZqcGVnLT5od19sb2NrLCBmbGFncyk7DQotCW10 a19qcGVnX2RlY19yZXNldChqcGVnLT5kZWNfcmVnX2Jhc2UpOw0KLQltdGtfanBlZ19kZWNfc2V0 X2NvbmZpZyhqcGVnLT5kZWNfcmVnX2Jhc2UsDQotCQkJCSZqcGVnX3NyY19idWYtPmRlY19wYXJh bSwgJmJzLCAmZmIpOw0KKwkJc3Bpbl9sb2NrX2lycXNhdmUoJmpwZWctPmh3X2xvY2ssIGZsYWdz KTsNCisJCW10a19qcGVnX2RlY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorCQltdGtfanBlZ19k ZWNfc2V0X2NvbmZpZyhqcGVnLT5yZWdfYmFzZSwNCisJCQkJCSZqcGVnX3NyY19idWYtPmRlY19w YXJhbSwgJmJzLCAmZmIpOw0KIA0KLQltdGtfanBlZ19kZWNfc3RhcnQoanBlZy0+ZGVjX3JlZ19i YXNlKTsNCisJCW10a19qcGVnX2RlY19zdGFydChqcGVnLT5yZWdfYmFzZSk7DQorCX0NCiAJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmanBlZy0+aHdfbG9jaywgZmxhZ3MpOw0KIAlyZXR1cm47DQog DQotZGVjX2VuZDoNCitkZXZpY2VfcnVuX2VuZDoNCiAJdjRsMl9tMm1fc3JjX2J1Zl9yZW1vdmUo Y3R4LT5maC5tMm1fY3R4KTsNCiAJdjRsMl9tMm1fZHN0X2J1Zl9yZW1vdmUoY3R4LT5maC5tMm1f Y3R4KTsNCiAJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0YXRlKTsNCkBAIC04NzUs MzAgKzExNzIsMzAgQEAgc3RhdGljIHZvaWQgbXRrX2pwZWdfY2xrX29uKHN0cnVjdCBtdGtfanBl Z19kZXYgKmpwZWcpDQogCXJldCA9IG10a19zbWlfbGFyYl9nZXQoanBlZy0+bGFyYik7DQogCWlm IChyZXQpDQogCQlkZXZfZXJyKGpwZWctPmRldiwgIm10a19zbWlfbGFyYl9nZXQgbGFyYnZkZWMg ZmFpbCAlZFxuIiwgcmV0KTsNCi0JY2xrX3ByZXBhcmVfZW5hYmxlKGpwZWctPmNsa19qZGVjX3Nt aSk7DQotCWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfamRlYyk7DQorCWlmIChqcGVnLT5t b2RlID09IE1US19KUEVHX0RFQykNCisJCWNsa19wcmVwYXJlX2VuYWJsZShqcGVnLT5jbGtfanBl Z19zbWkpOw0KKwljbGtfcHJlcGFyZV9lbmFibGUoanBlZy0+Y2xrX2pwZWcpOw0KIH0NCiANCiBz dGF0aWMgdm9pZCBtdGtfanBlZ19jbGtfb2ZmKHN0cnVjdCBtdGtfanBlZ19kZXYgKmpwZWcpDQog ew0KLQljbGtfZGlzYWJsZV91bnByZXBhcmUoanBlZy0+Y2xrX2pkZWMpOw0KLQljbGtfZGlzYWJs ZV91bnByZXBhcmUoanBlZy0+Y2xrX2pkZWNfc21pKTsNCisJY2xrX2Rpc2FibGVfdW5wcmVwYXJl KGpwZWctPmNsa19qcGVnKTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfREVDKQ0KKwkJ Y2xrX2Rpc2FibGVfdW5wcmVwYXJlKGpwZWctPmNsa19qcGVnX3NtaSk7DQogCW10a19zbWlfbGFy Yl9wdXQoanBlZy0+bGFyYik7DQogfQ0KIA0KLXN0YXRpYyBpcnFyZXR1cm5fdCBtdGtfanBlZ19k ZWNfaXJxKGludCBpcnEsIHZvaWQgKnByaXYpDQorc3RhdGljIGlycXJldHVybl90IG10a19qcGVn X2lycShpbnQgaXJxLCB2b2lkICpwcml2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBl ZyA9IHByaXY7DQogCXN0cnVjdCBtdGtfanBlZ19jdHggKmN0eDsNCiAJc3RydWN0IHZiMl92NGwy X2J1ZmZlciAqc3JjX2J1ZiwgKmRzdF9idWY7DQogCXN0cnVjdCBtdGtfanBlZ19zcmNfYnVmICpq cGVnX3NyY19idWY7DQogCWVudW0gdmIyX2J1ZmZlcl9zdGF0ZSBidWZfc3RhdGUgPSBWQjJfQlVG X1NUQVRFX0VSUk9SOw0KLQl1MzIJZGVjX2lycV9yZXQ7DQotCXUzMiBkZWNfcmV0Ow0KKwl1MzIg aXJxX3JldDsNCisJdTMyIHJldCwgcmVzdWx0X3NpemU7DQogCWludCBpOw0KIA0KLQlkZWNfcmV0 ID0gbXRrX2pwZWdfZGVjX2dldF9pbnRfc3RhdHVzKGpwZWctPmRlY19yZWdfYmFzZSk7DQotCWRl Y19pcnFfcmV0ID0gbXRrX2pwZWdfZGVjX2VudW1fcmVzdWx0KGRlY19yZXQpOw0KIAljdHggPSB2 NGwyX20ybV9nZXRfY3Vycl9wcml2KGpwZWctPm0ybV9kZXYpOw0KIAlpZiAoIWN0eCkgew0KIAkJ djRsMl9lcnIoJmpwZWctPnY0bDJfZGV2LCAiQ29udGV4dCBpcyBOVUxMXG4iKTsNCkBAIC05MDks MzIgKzEyMDYsODkgQEAgc3RhdGljIGlycXJldHVybl90IG10a19qcGVnX2RlY19pcnEoaW50IGly cSwgdm9pZCAqcHJpdikNCiAJZHN0X2J1ZiA9IHY0bDJfbTJtX2RzdF9idWZfcmVtb3ZlKGN0eC0+ ZmgubTJtX2N0eCk7DQogCWpwZWdfc3JjX2J1ZiA9IG10a19qcGVnX3ZiMl90b19zcmNidWYoJnNy Y19idWYtPnZiMl9idWYpOw0KIA0KLQlpZiAoZGVjX2lycV9yZXQgPj0gTVRLX0pQRUdfREVDX1JF U1VMVF9VTkRFUkZMT1cpDQotCQltdGtfanBlZ19kZWNfcmVzZXQoanBlZy0+ZGVjX3JlZ19iYXNl KTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKSB7DQorCQlyZXQgPSBtdGtfanBl Z19lbmNfZ2V0X2ludF9zdGF0dXMoanBlZy0+cmVnX2Jhc2UpOw0KKwkJaXJxX3JldCA9IG10a19q cGVnX2VuY19lbnVtX3Jlc3VsdChqcGVnLT5yZWdfYmFzZSwgcmV0KTsNCiANCi0JaWYgKGRlY19p cnFfcmV0ICE9IE1US19KUEVHX0RFQ19SRVNVTFRfRU9GX0RPTkUpIHsNCi0JCWRldl9lcnIoanBl Zy0+ZGV2LCAiZGVjb2RlIGZhaWxlZFxuIik7DQotCQlnb3RvIGRlY19lbmQ7DQotCX0NCisJCWlm IChpcnFfcmV0ID49IE1US19KUEVHX0VOQ19SRVNVTFRfU1RBTEwpDQorCQkJbXRrX2pwZWdfZW5j X3Jlc2V0KGpwZWctPnJlZ19iYXNlKTsNCisNCisJCWlmIChpcnFfcmV0ICE9IE1US19KUEVHX0VO Q19SRVNVTFRfRE9ORSkgew0KKwkJCWRldl9lcnIoanBlZy0+ZGV2LCAiZW5jb2RlIGZhaWxlZFxu Iik7DQorCQkJZ290byBpcnFfZW5kOw0KKwkJfQ0KKw0KKwkJcmVzdWx0X3NpemUgPSBtdGtfanBl Z19lbmNfZ2V0X2ZpbGVfc2l6ZShqcGVnLT5yZWdfYmFzZSk7DQorCQl2YjJfc2V0X3BsYW5lX3Bh eWxvYWQoJmRzdF9idWYtPnZiMl9idWYsIDAsDQorCQkJCSAgICAgIHJlc3VsdF9zaXplKTsNCisJ fSBlbHNlIHsNCisJCXJldCA9IG10a19qcGVnX2RlY19nZXRfaW50X3N0YXR1cyhqcGVnLT5yZWdf YmFzZSk7DQorCQlpcnFfcmV0ID0gbXRrX2pwZWdfZGVjX2VudW1fcmVzdWx0KHJldCk7DQorDQor CQlpZiAoaXJxX3JldCA+PSBNVEtfSlBFR19ERUNfUkVTVUxUX1VOREVSRkxPVykNCisJCQltdGtf anBlZ19kZWNfcmVzZXQoanBlZy0+cmVnX2Jhc2UpOw0KIA0KLQlmb3IgKGkgPSAwOyBpIDwgZHN0 X2J1Zi0+dmIyX2J1Zi5udW1fcGxhbmVzOyBpKyspDQotCQl2YjJfc2V0X3BsYW5lX3BheWxvYWQo JmRzdF9idWYtPnZiMl9idWYsIGksDQotCQkJCSAgICAgIGpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFt LmNvbXBfc2l6ZVtpXSk7DQorCQlpZiAoaXJxX3JldCAhPSBNVEtfSlBFR19ERUNfUkVTVUxUX0VP Rl9ET05FKSB7DQorCQkJZGV2X2VycihqcGVnLT5kZXYsICJkZWNvZGUgZmFpbGVkXG4iKTsNCisJ CQlnb3RvIGlycV9lbmQ7DQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgZHN0X2J1Zi0+dmIy X2J1Zi5udW1fcGxhbmVzOyBpKyspDQorCQkJdmIyX3NldF9wbGFuZV9wYXlsb2FkDQorCQkJCSgm ZHN0X2J1Zi0+dmIyX2J1ZiwgaSwNCisJCQkJIGpwZWdfc3JjX2J1Zi0+ZGVjX3BhcmFtLmNvbXBf c2l6ZVtpXSk7DQorCX0NCiANCiAJYnVmX3N0YXRlID0gVkIyX0JVRl9TVEFURV9ET05FOw0KIA0K LWRlY19lbmQ6DQoraXJxX2VuZDoNCiAJdjRsMl9tMm1fYnVmX2RvbmUoc3JjX2J1ZiwgYnVmX3N0 YXRlKTsNCiAJdjRsMl9tMm1fYnVmX2RvbmUoZHN0X2J1ZiwgYnVmX3N0YXRlKTsNCiAJdjRsMl9t Mm1fam9iX2ZpbmlzaChqcGVnLT5tMm1fZGV2LCBjdHgtPmZoLm0ybV9jdHgpOw0KIAlyZXR1cm4g SVJRX0hBTkRMRUQ7DQogfQ0KIA0KLXN0YXRpYyB2b2lkIG10a19qcGVnX3NldF9kZWZhdWx0X3Bh cmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorc3RhdGljIHZvaWQgbXRrX2pwZWdfc2V0 X2VuY19kZWZhdWx0X3BhcmFtcyhzdHJ1Y3QgbXRrX2pwZWdfY3R4ICpjdHgpDQorew0KKwlzdHJ1 Y3QgbXRrX2pwZWdfcV9kYXRhICpxID0gJmN0eC0+b3V0X3E7DQorDQorCWN0eC0+ZmguY3RybF9o YW5kbGVyID0gJmN0eC0+Y3RybF9oZGw7DQorDQorCWN0eC0+Y29sb3JzcGFjZSA9IFY0TDJfQ09M T1JTUEFDRV9KUEVHLA0KKwljdHgtPnljYmNyX2VuYyA9IFY0TDJfWUNCQ1JfRU5DX0RFRkFVTFQ7 DQorCWN0eC0+cXVhbnRpemF0aW9uID0gVjRMMl9RVUFOVElaQVRJT05fREVGQVVMVDsNCisJY3R4 LT54ZmVyX2Z1bmMgPSBWNEwyX1hGRVJfRlVOQ19ERUZBVUxUOw0KKw0KKwlxLT53ID0gTVRLX0pQ RUdfTUlOX1dJRFRIOw0KKwlxLT5oID0gTVRLX0pQRUdfTUlOX0hFSUdIVDsNCisNCisJcS0+Zm10 ID0gbXRrX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBWNEwyX1BJWF9GTVRfWVVZViwNCisJCQkJICAg ICAgTVRLX0pQRUdfRk1UX1RZUEVfT1VUUFVUKTsNCisNCisJcS0+dyA9IGNsYW1wKHJvdW5kX3Vw KHEtPncsIDMyKSwgTVRLX0pQRUdfTUlOX1dJRFRILA0KKwkJICAgICBNVEtfSlBFR19NQVhfV0lE VEgpOw0KKwlxLT5oID0gY2xhbXAocm91bmRfdXAocS0+aCwgOCksIE1US19KUEVHX01JTl9IRUlH SFQsDQorCQkgICAgIE1US19KUEVHX01BWF9IRUlHSFQpOw0KKw0KKwlxLT5zaXplaW1hZ2VbMF0g PSBxLT53ICogcS0+aCAqIDI7DQorCXEtPmJ5dGVzcGVybGluZVswXSA9IHEtPncgKiAyOw0KKw0K KwlxID0gJmN0eC0+Y2FwX3E7DQorCXEtPncgPSBNVEtfSlBFR19NSU5fV0lEVEg7DQorCXEtPmgg PSBNVEtfSlBFR19NSU5fSEVJR0hUOw0KKwlxLT5mbXQgPSBtdGtfanBlZ19maW5kX2Zvcm1hdChj dHgsIFY0TDJfUElYX0ZNVF9KUEVHLA0KKwkJCQkgICAgICBNVEtfSlBFR19GTVRfVFlQRV9DQVBU VVJFKTsNCisJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gMDsNCisJcS0+c2l6ZWltYWdlWzBdID0gTVRL X0pQRUdfREVGQVVMVF9TSVpFSU1BR0U7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIG10a19qcGVnX3Nl dF9kZWNfZGVmYXVsdF9wYXJhbXMoc3RydWN0IG10a19qcGVnX2N0eCAqY3R4KQ0KIHsNCiAJc3Ry dWN0IG10a19qcGVnX3FfZGF0YSAqcSA9ICZjdHgtPm91dF9xOw0KIAlpbnQgaTsNCiANCisJY3R4 LT5maC5jdHJsX2hhbmRsZXIgPSAmY3R4LT5jdHJsX2hkbDsNCisNCiAJY3R4LT5jb2xvcnNwYWNl ID0gVjRMMl9DT0xPUlNQQUNFX0pQRUcsDQogCWN0eC0+eWNiY3JfZW5jID0gVjRMMl9ZQ0JDUl9F TkNfREVGQVVMVDsNCiAJY3R4LT5xdWFudGl6YXRpb24gPSBWNEwyX1FVQU5USVpBVElPTl9ERUZB VUxUOw0KQEAgLTk5MCw3ICsxMzQ0LDE4IEBAIHN0YXRpYyBpbnQgbXRrX2pwZWdfb3BlbihzdHJ1 Y3QgZmlsZSAqZmlsZSkNCiAJCWdvdG8gZXJyb3I7DQogCX0NCiANCi0JbXRrX2pwZWdfc2V0X2Rl ZmF1bHRfcGFyYW1zKGN0eCk7DQorCXJldCA9IG10a19qcGVnX2N0cmxzX3NldHVwKGN0eCk7DQor CWlmIChyZXQpIHsNCisJCXY0bDJfZXJyKCZqcGVnLT52NGwyX2RldiwgIkZhaWxlZCB0byBzZXR1 cCBjb250cm9scygpICglZClcbiIsDQorCQkJIHJldCk7DQorCQlnb3RvIGVycm9yOw0KKwl9DQor DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykNCisJCW10a19qcGVnX3NldF9lbmNf ZGVmYXVsdF9wYXJhbXMoY3R4KTsNCisJZWxzZQ0KKwkJbXRrX2pwZWdfc2V0X2RlY19kZWZhdWx0 X3BhcmFtcyhjdHgpOw0KKw0KIAltdXRleF91bmxvY2soJmpwZWctPmxvY2spOw0KIAlyZXR1cm4g MDsNCiANCkBAIC0xMDEwLDYgKzEzNzUsNyBAQCBzdGF0aWMgaW50IG10a19qcGVnX3JlbGVhc2Uo c3RydWN0IGZpbGUgKmZpbGUpDQogDQogCW11dGV4X2xvY2soJmpwZWctPmxvY2spOw0KIAl2NGwy X20ybV9jdHhfcmVsZWFzZShjdHgtPmZoLm0ybV9jdHgpOw0KKwl2NGwyX2N0cmxfaGFuZGxlcl9m cmVlKCZjdHgtPmN0cmxfaGRsKTsNCiAJdjRsMl9maF9kZWwoJmN0eC0+ZmgpOw0KIAl2NGwyX2Zo X2V4aXQoJmN0eC0+ZmgpOw0KIAlrZnJlZShjdHgpOw0KQEAgLTEwNDMsMTkgKzE0MDksMjQgQEAg c3RhdGljIGludCBtdGtfanBlZ19jbGtfaW5pdChzdHJ1Y3QgbXRrX2pwZWdfZGV2ICpqcGVnKQ0K IA0KIAlqcGVnLT5sYXJiID0gJnBkZXYtPmRldjsNCiANCi0JanBlZy0+Y2xrX2pkZWMgPSBkZXZt X2Nsa19nZXQoanBlZy0+ZGV2LCAianBnZGVjIik7DQotCWlmIChJU19FUlIoanBlZy0+Y2xrX2pk ZWMpKQ0KLQkJcmV0dXJuIFBUUl9FUlIoanBlZy0+Y2xrX2pkZWMpOw0KKwlpZiAoanBlZy0+bW9k ZSA9PSBNVEtfSlBFR19FTkMpIHsNCisJCWpwZWctPmNsa19qcGVnID0gZGV2bV9jbGtfZ2V0KGpw ZWctPmRldiwgImpwZ2VuYyIpOw0KKwkJcmV0dXJuIFBUUl9FUlJfT1JfWkVSTyhqcGVnLT5jbGtf anBlZyk7DQorCX0NCisNCisJanBlZy0+Y2xrX2pwZWcgPSBkZXZtX2Nsa19nZXQoanBlZy0+ZGV2 LCAianBnZGVjIik7DQorCWlmIChJU19FUlIoanBlZy0+Y2xrX2pwZWcpKQ0KKwkJcmV0dXJuIFBU Ul9FUlIoanBlZy0+Y2xrX2pwZWcpOw0KIA0KLQlqcGVnLT5jbGtfamRlY19zbWkgPSBkZXZtX2Ns a19nZXQoanBlZy0+ZGV2LCAianBnZGVjLXNtaSIpOw0KLQlyZXR1cm4gUFRSX0VSUl9PUl9aRVJP KGpwZWctPmNsa19qZGVjX3NtaSk7DQorCWpwZWctPmNsa19qcGVnX3NtaSA9IGRldm1fY2xrX2dl dChqcGVnLT5kZXYsICJqcGdkZWMtc21pIik7DQorCXJldHVybiBQVFJfRVJSX09SX1pFUk8oanBl Zy0+Y2xrX2pwZWdfc21pKTsNCiB9DQogDQogc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KIHsNCiAJc3RydWN0IG10a19qcGVnX2RldiAqanBl ZzsNCiAJc3RydWN0IHJlc291cmNlICpyZXM7DQotCWludCBkZWNfaXJxOw0KKwlpbnQganBlZ19p cnE7DQogCWludCByZXQ7DQogDQogCWpwZWcgPSBkZXZtX2t6YWxsb2MoJnBkZXYtPmRldiwgc2l6 ZW9mKCpqcGVnKSwgR0ZQX0tFUk5FTCk7DQpAQCAtMTA2NSwyOCArMTQzNiwyNiBAQCBzdGF0aWMg aW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCW11dGV4 X2luaXQoJmpwZWctPmxvY2spOw0KIAlzcGluX2xvY2tfaW5pdCgmanBlZy0+aHdfbG9jayk7DQog CWpwZWctPmRldiA9ICZwZGV2LT5kZXY7DQorCWpwZWctPm1vZGUgPSAoZW51bSBtdGtfanBlZ19t b2RlKW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShqcGVnLT5kZXYpOw0KIA0KIAlyZXMgPSBwbGF0 Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDApOw0KLQlqcGVnLT5kZWNf cmVnX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCi0JaWYg KElTX0VSUihqcGVnLT5kZWNfcmVnX2Jhc2UpKSB7DQotCQlyZXQgPSBQVFJfRVJSKGpwZWctPmRl Y19yZWdfYmFzZSk7DQorCWpwZWctPnJlZ19iYXNlID0gZGV2bV9pb3JlbWFwX3Jlc291cmNlKCZw ZGV2LT5kZXYsIHJlcyk7DQorCWlmIChJU19FUlIoanBlZy0+cmVnX2Jhc2UpKSB7DQorCQlyZXQg PSBQVFJfRVJSKGpwZWctPnJlZ19iYXNlKTsNCiAJCXJldHVybiByZXQ7DQogCX0NCiANCi0JcmVz ID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfSVJRLCAwKTsNCi0JZGVj X2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQotCWlmICghcmVzIHx8IGRlY19pcnEg PCAwKSB7DQotCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gZ2V0IGRlY19pcnEgJWQu XG4iLCBkZWNfaXJxKTsNCi0JCXJldCA9IC1FSU5WQUw7DQotCQlyZXR1cm4gcmV0Ow0KKwlqcGVn X2lycSA9IHBsYXRmb3JtX2dldF9pcnEocGRldiwgMCk7DQorCWlmIChqcGVnX2lycSA8IDApIHsN CisJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWxlZCB0byBnZXQganBlZ19pcnEgJWQuXG4iLCBq cGVnX2lycSk7DQorCQlyZXR1cm4ganBlZ19pcnE7DQogCX0NCiANCi0JcmV0ID0gZGV2bV9yZXF1 ZXN0X2lycSgmcGRldi0+ZGV2LCBkZWNfaXJxLCBtdGtfanBlZ19kZWNfaXJxLCAwLA0KKwlyZXQg PSBkZXZtX3JlcXVlc3RfaXJxKCZwZGV2LT5kZXYsIGpwZWdfaXJxLCBtdGtfanBlZ19pcnEsIDAs DQogCQkJICAgICAgIHBkZXYtPm5hbWUsIGpwZWcpOw0KIAlpZiAocmV0KSB7DQotCQlkZXZfZXJy KCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gcmVxdWVzdCBkZWNfaXJxICVkICglZClcbiIsDQotCQkJ ZGVjX2lycSwgcmV0KTsNCi0JCXJldCA9IC1FSU5WQUw7DQorCQlkZXZfZXJyKCZwZGV2LT5kZXYs ICJGYWlsZWQgdG8gcmVxdWVzdCBqcGVnX2lycSAlZCAoJWQpXG4iLA0KKwkJCWpwZWdfaXJxLCBy ZXQpOw0KIAkJZ290byBlcnJfcmVxX2lycTsNCiAJfQ0KIA0KQEAgLTExMTAsMzMgKzE0NzksMzUg QEAgc3RhdGljIGludCBtdGtfanBlZ19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KIAkJZ290byBlcnJfbTJtX2luaXQ7DQogCX0NCiANCi0JanBlZy0+ZGVjX3ZkZXYgPSB2aWRl b19kZXZpY2VfYWxsb2MoKTsNCi0JaWYgKCFqcGVnLT5kZWNfdmRldikgew0KKwlqcGVnLT52ZmRf anBlZyA9IHZpZGVvX2RldmljZV9hbGxvYygpOw0KKwlpZiAoIWpwZWctPnZmZF9qcGVnKSB7DQog CQlyZXQgPSAtRU5PTUVNOw0KLQkJZ290byBlcnJfZGVjX3ZkZXZfYWxsb2M7DQorCQlnb3RvIGVy cl92ZmRfanBlZ19hbGxvYzsNCiAJfQ0KLQlzbnByaW50ZihqcGVnLT5kZWNfdmRldi0+bmFtZSwg c2l6ZW9mKGpwZWctPmRlY192ZGV2LT5uYW1lKSwNCi0JCSAiJXMtZGVjIiwgTVRLX0pQRUdfTkFN RSk7DQotCWpwZWctPmRlY192ZGV2LT5mb3BzID0gJm10a19qcGVnX2ZvcHM7DQotCWpwZWctPmRl Y192ZGV2LT5pb2N0bF9vcHMgPSAmbXRrX2pwZWdfaW9jdGxfb3BzOw0KLQlqcGVnLT5kZWNfdmRl di0+bWlub3IgPSAtMTsNCi0JanBlZy0+ZGVjX3ZkZXYtPnJlbGVhc2UgPSB2aWRlb19kZXZpY2Vf cmVsZWFzZTsNCi0JanBlZy0+ZGVjX3ZkZXYtPmxvY2sgPSAmanBlZy0+bG9jazsNCi0JanBlZy0+ ZGVjX3ZkZXYtPnY0bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0KLQlqcGVnLT5kZWNfdmRldi0+ dmZsX2RpciA9IFZGTF9ESVJfTTJNOw0KLQlqcGVnLT5kZWNfdmRldi0+ZGV2aWNlX2NhcHMgPSBW NEwyX0NBUF9TVFJFQU1JTkcgfA0KKwlzbnByaW50ZihqcGVnLT52ZmRfanBlZy0+bmFtZSwgc2l6 ZW9mKGpwZWctPnZmZF9qcGVnLT5uYW1lKSwNCisJCSAiJXMtJXMiLCBNVEtfSlBFR19OQU1FLA0K KwkJIGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DID8gImVuYyIgOiAiZGVjIik7DQorCWpwZWct PnZmZF9qcGVnLT5mb3BzID0gJm10a19qcGVnX2ZvcHM7DQorCWpwZWctPnZmZF9qcGVnLT5pb2N0 bF9vcHMgPSAmbXRrX2pwZWdfaW9jdGxfb3BzOw0KKwlqcGVnLT52ZmRfanBlZy0+bWlub3IgPSAt MTsNCisJanBlZy0+dmZkX2pwZWctPnJlbGVhc2UgPSB2aWRlb19kZXZpY2VfcmVsZWFzZTsNCisJ anBlZy0+dmZkX2pwZWctPmxvY2sgPSAmanBlZy0+bG9jazsNCisJanBlZy0+dmZkX2pwZWctPnY0 bDJfZGV2ID0gJmpwZWctPnY0bDJfZGV2Ow0KKwlqcGVnLT52ZmRfanBlZy0+dmZsX2RpciA9IFZG TF9ESVJfTTJNOw0KKwlqcGVnLT52ZmRfanBlZy0+ZGV2aWNlX2NhcHMgPSBWNEwyX0NBUF9TVFJF QU1JTkcgfA0KIAkJCQkgICAgICBWNEwyX0NBUF9WSURFT19NMk1fTVBMQU5FOw0KIA0KLQlyZXQg PSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoanBlZy0+ZGVjX3ZkZXYsIFZGTF9UWVBFX0dSQUJCRVIs IDMpOw0KKwlyZXQgPSB2aWRlb19yZWdpc3Rlcl9kZXZpY2UoanBlZy0+dmZkX2pwZWcsIFZGTF9U WVBFX0dSQUJCRVIsIC0xKTsNCiAJaWYgKHJldCkgew0KIAkJdjRsMl9lcnIoJmpwZWctPnY0bDJf ZGV2LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHZpZGVvIGRldmljZVxuIik7DQotCQlnb3RvIGVycl9k ZWNfdmRldl9yZWdpc3RlcjsNCisJCWdvdG8gZXJyX3ZmZF9qcGVnX3JlZ2lzdGVyOw0KIAl9DQog DQotCXZpZGVvX3NldF9kcnZkYXRhKGpwZWctPmRlY192ZGV2LCBqcGVnKTsNCisJdmlkZW9fc2V0 X2RydmRhdGEoanBlZy0+dmZkX2pwZWcsIGpwZWcpOw0KIAl2NGwyX2luZm8oJmpwZWctPnY0bDJf ZGV2LA0KLQkJICAiZGVjb2RlciBkZXZpY2UgcmVnaXN0ZXJlZCBhcyAvZGV2L3ZpZGVvJWQgKCVk LCVkKVxuIiwNCi0JCSAganBlZy0+ZGVjX3ZkZXYtPm51bSwgVklERU9fTUFKT1IsIGpwZWctPmRl Y192ZGV2LT5taW5vcik7DQorCQkgICJqcGVnIGRldmljZSAlZCByZWdpc3RlcmVkIGFzIC9kZXYv dmlkZW8lZCAoJWQsJWQpXG4iLA0KKwkJICBqcGVnLT5tb2RlLCBqcGVnLT52ZmRfanBlZy0+bnVt LCBWSURFT19NQUpPUiwNCisJCSAganBlZy0+dmZkX2pwZWctPm1pbm9yKTsNCiANCiAJcGxhdGZv cm1fc2V0X2RydmRhdGEocGRldiwganBlZyk7DQogDQpAQCAtMTE0NCwxMCArMTUxNSwxMCBAQCBz dGF0aWMgaW50IG10a19qcGVnX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQog DQogCXJldHVybiAwOw0KIA0KLWVycl9kZWNfdmRldl9yZWdpc3RlcjoNCi0JdmlkZW9fZGV2aWNl X3JlbGVhc2UoanBlZy0+ZGVjX3ZkZXYpOw0KK2Vycl92ZmRfanBlZ19yZWdpc3RlcjoNCisJdmlk ZW9fZGV2aWNlX3JlbGVhc2UoanBlZy0+dmZkX2pwZWcpOw0KIA0KLWVycl9kZWNfdmRldl9hbGxv YzoNCitlcnJfdmZkX2pwZWdfYWxsb2M6DQogCXY0bDJfbTJtX3JlbGVhc2UoanBlZy0+bTJtX2Rl dik7DQogDQogZXJyX20ybV9pbml0Og0KQEAgLTExNjcsOCArMTUzOCw4IEBAIHN0YXRpYyBpbnQg bXRrX2pwZWdfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQogCXN0cnVjdCBt dGtfanBlZ19kZXYgKmpwZWcgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCiANCiAJcG1f cnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KLQl2aWRlb191bnJlZ2lzdGVyX2RldmljZShq cGVnLT5kZWNfdmRldik7DQotCXZpZGVvX2RldmljZV9yZWxlYXNlKGpwZWctPmRlY192ZGV2KTsN CisJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoanBlZy0+dmZkX2pwZWcpOw0KKwl2aWRlb19kZXZp Y2VfcmVsZWFzZShqcGVnLT52ZmRfanBlZyk7DQogCXY0bDJfbTJtX3JlbGVhc2UoanBlZy0+bTJt X2Rldik7DQogCXY0bDJfZGV2aWNlX3VucmVnaXN0ZXIoJmpwZWctPnY0bDJfZGV2KTsNCiANCkBA IC0xMTc5LDcgKzE1NTAsMTEgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBtdGtfanBlZ19w bV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCiB7DQogCXN0cnVjdCBtdGtfanBlZ19kZXYg KmpwZWcgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCiANCi0JbXRrX2pwZWdfZGVjX3Jlc2V0KGpw ZWctPmRlY19yZWdfYmFzZSk7DQorCWlmIChqcGVnLT5tb2RlID09IE1US19KUEVHX0VOQykNCisJ CW10a19qcGVnX2VuY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorCWVsc2UNCisJCW10a19qcGVn X2RlY19yZXNldChqcGVnLT5yZWdfYmFzZSk7DQorDQogCW10a19qcGVnX2Nsa19vZmYoanBlZyk7 DQogDQogCXJldHVybiAwOw0KQEAgLTExOTAsNyArMTU2NSwxMCBAQCBzdGF0aWMgX19tYXliZV91 bnVzZWQgaW50IG10a19qcGVnX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpDQogCXN0cnVj dCBtdGtfanBlZ19kZXYgKmpwZWcgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCiANCiAJbXRrX2pw ZWdfY2xrX29uKGpwZWcpOw0KLQltdGtfanBlZ19kZWNfcmVzZXQoanBlZy0+ZGVjX3JlZ19iYXNl KTsNCisJaWYgKGpwZWctPm1vZGUgPT0gTVRLX0pQRUdfRU5DKQ0KKwkJbXRrX2pwZWdfZW5jX3Jl c2V0KGpwZWctPnJlZ19iYXNlKTsNCisJZWxzZQ0KKwkJbXRrX2pwZWdfZGVjX3Jlc2V0KGpwZWct PnJlZ19iYXNlKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KQEAgLTEyMjYsMTEgKzE2MDQsMTUgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIG10a19qcGVnX3BtX29wcyA9IHsNCiBzdGF0 aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtdGtfanBlZ19tYXRjaFtdID0gew0KIAl7DQog CQkuY29tcGF0aWJsZSA9ICJtZWRpYXRlayxtdDgxNzMtanBnZGVjIiwNCi0JCS5kYXRhICAgICAg ID0gTlVMTCwNCisJCS5kYXRhICAgICAgID0gKHZvaWQgKilNVEtfSlBFR19ERUMsDQogCX0sDQog CXsNCiAJCS5jb21wYXRpYmxlID0gIm1lZGlhdGVrLG10MjcwMS1qcGdkZWMiLA0KLQkJLmRhdGEg ICAgICAgPSBOVUxMLA0KKwkJLmRhdGEgICAgICAgPSAodm9pZCAqKU1US19KUEVHX0RFQywNCisJ fSwNCisJew0KKwkJLmNvbXBhdGlibGUgPSAibWVkaWF0ZWssbXRrLWpwZ2VuYyIsDQorCQkuZGF0 YSAgICAgICA9ICh2b2lkICopTVRLX0pQRUdfRU5DLA0KIAl9LA0KIAl7fSwNCiB9Ow0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oIGIv ZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCmluZGV4IDli YmQ2MTViMTA2Ny4uMDJhMzg3ZDhiZTVkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19jb3JlLmgNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vbXRrLWpwZWcvbXRrX2pwZWdfY29yZS5oDQpAQCAtMyw2ICszLDcgQEANCiAgKiBDb3B5cmln aHQgKGMpIDIwMTYgTWVkaWFUZWsgSW5jLg0KICAqIEF1dGhvcjogTWluZyBIc2l1IFRzYWkgPG1p bmdoc2l1LnRzYWlAbWVkaWF0ZWsuY29tPg0KICAqICAgICAgICAgUmljayBDaGFuZyA8cmljay5j aGFuZ0BtZWRpYXRlay5jb20+DQorICogICAgICAgICBYaWEgSmlhbmcgPHhpYS5qaWFuZ0BtZWRp YXRlay5jb20+DQogICovDQogDQogI2lmbmRlZiBfTVRLX0pQRUdfQ09SRV9IDQpAQCAtMTksMTYg KzIwLDE5IEBADQogDQogI2RlZmluZSBNVEtfSlBFR19GTVRfRkxBR19ERUNfT1VUUFVUCUJJVCgw KQ0KICNkZWZpbmUgTVRLX0pQRUdfRk1UX0ZMQUdfREVDX0NBUFRVUkUJQklUKDEpDQorI2RlZmlu ZSBNVEtfSlBFR19GTVRfRkxBR19FTkNfT1VUUFVUCUJJVCgyKQ0KKyNkZWZpbmUgTVRLX0pQRUdf Rk1UX0ZMQUdfRU5DX0NBUFRVUkUJQklUKDMpDQogDQogI2RlZmluZSBNVEtfSlBFR19GTVRfVFlQ RV9PVVRQVVQJMQ0KICNkZWZpbmUgTVRLX0pQRUdfRk1UX1RZUEVfQ0FQVFVSRQkyDQogDQogI2Rl ZmluZSBNVEtfSlBFR19NSU5fV0lEVEgJMzJVDQogI2RlZmluZSBNVEtfSlBFR19NSU5fSEVJR0hU CTMyVQ0KLSNkZWZpbmUgTVRLX0pQRUdfTUFYX1dJRFRICTgxOTJVDQotI2RlZmluZSBNVEtfSlBF R19NQVhfSEVJR0hUCTgxOTJVDQorI2RlZmluZSBNVEtfSlBFR19NQVhfV0lEVEgJNjU1MzVVDQor I2RlZmluZSBNVEtfSlBFR19NQVhfSEVJR0hUCTY1NTM1VQ0KIA0KICNkZWZpbmUgTVRLX0pQRUdf REVGQVVMVF9TSVpFSU1BR0UJKDEgKiAxMDI0ICogMTAyNCkNCisjZGVmaW5lIE1US19KUEVHX0RF RkFVTFRfRVhJRl9TSVpFCSg2NCAqIDEwMjQpDQogDQogLyoqDQogICogZW51bSBtdGtfanBlZ19j dHhfc3RhdGUgLSBjb250ZXggc3RhdGUgb2YganBlZw0KQEAgLTM5LDYgKzQzLDE0IEBAIGVudW0g bXRrX2pwZWdfY3R4X3N0YXRlIHsNCiAJTVRLX0pQRUdfU09VUkNFX0NIQU5HRSwNCiB9Ow0KIA0K Ky8qKg0KKyAqIGVudW0gbXRrX2pwZWdfbW9kZSAtIG1vZGUgb2YganBlZw0KKyAqLw0KK2VudW0g bXRrX2pwZWdfbW9kZSB7DQorCU1US19KUEVHX0VOQywNCisJTVRLX0pQRUdfREVDLA0KK307DQor DQogLyoqDQogICogc3RydWN0IG10X2pwZWcgLSBKUEVHIElQIGFic3RyYWN0aW9uDQogICogQGxv Y2s6CQl0aGUgbXV0ZXggcHJvdGVjdGluZyB0aGlzIHN0cnVjdHVyZQ0KQEAgLTQ4LDExICs2MCwx MiBAQCBlbnVtIG10a19qcGVnX2N0eF9zdGF0ZSB7DQogICogQHY0bDJfZGV2OgkJdjRsMiBkZXZp Y2UgZm9yIG1lbTJtZW0gbW9kZQ0KICAqIEBtMm1fZGV2OgkJdjRsMiBtZW0ybWVtIGRldmljZSBk YXRhDQogICogQGFsbG9jX2N0eDoJCXZpZGVvYnVmMiBtZW1vcnkgYWxsb2NhdG9yJ3MgY29udGV4 dA0KLSAqIEBkZWNfdmRldjoJCXZpZGVvIGRldmljZSBub2RlIGZvciBkZWNvZGVyIG1lbTJtZW0g bW9kZQ0KLSAqIEBkZWNfcmVnX2Jhc2U6CUpQRUcgcmVnaXN0ZXJzIG1hcHBpbmcNCi0gKiBAY2xr X2pkZWM6CQlKUEVHIGh3IHdvcmtpbmcgY2xvY2sNCi0gKiBAY2xrX2pkZWNfc21pOglKUEVHIFNN SSBidXMgY2xvY2sNCisgKiBAdmZkX2pwZWc6CQl2aWRlbyBkZXZpY2Ugbm9kZSBmb3IganBlZyBt ZW0ybWVtIG1vZGUNCisgKiBAcmVnX2Jhc2U6CQlKUEVHIHJlZ2lzdGVycyBtYXBwaW5nDQorICog QGNsa19qcGVnOgkJSlBFRyBodyB3b3JraW5nIGNsb2NrDQorICogQGNsa19qcGVnX3NtaToJSlBF RyBTTUkgYnVzIGNsb2NrDQogICogQGxhcmI6CQlTTUkgZGV2aWNlDQorICogQG1vZGU6CQljb21w cmVzc2lvbiAoZW5jb2RlKSBvcGVyYXRpb24gb3IgZGVjb21wcmVzc2lvbiAoZGVjb2RlKQ0KICAq Lw0KIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIAlzdHJ1Y3QgbXV0ZXgJCWxvY2s7DQpAQCAtNjIs MTEgKzc1LDEyIEBAIHN0cnVjdCBtdGtfanBlZ19kZXYgew0KIAlzdHJ1Y3QgdjRsMl9kZXZpY2UJ djRsMl9kZXY7DQogCXN0cnVjdCB2NGwyX20ybV9kZXYJKm0ybV9kZXY7DQogCXZvaWQJCQkqYWxs b2NfY3R4Ow0KLQlzdHJ1Y3QgdmlkZW9fZGV2aWNlCSpkZWNfdmRldjsNCi0Jdm9pZCBfX2lvbWVt CQkqZGVjX3JlZ19iYXNlOw0KLQlzdHJ1Y3QgY2xrCQkqY2xrX2pkZWM7DQotCXN0cnVjdCBjbGsJ CSpjbGtfamRlY19zbWk7DQorCXN0cnVjdCB2aWRlb19kZXZpY2UJKnZmZF9qcGVnOw0KKwl2b2lk IF9faW9tZW0JCSpyZWdfYmFzZTsNCisJc3RydWN0IGNsawkJKmNsa19qcGVnOw0KKwlzdHJ1Y3Qg Y2xrCQkqY2xrX2pwZWdfc21pOw0KIAlzdHJ1Y3QgZGV2aWNlCQkqbGFyYjsNCisJZW51bSBtdGtf anBlZ19tb2RlCW1vZGU7DQogfTsNCiANCiAvKioNCkBAIC0xMTMsNiArMTI3LDcgQEAgc3RydWN0 IG10a19qcGVnX3FfZGF0YSB7DQogICogQGNhcF9xOgkJZGVzdGluYXRpb24gKGNhcHR1cmUpIHF1 ZXVlIHF1ZXVlIGluZm9ybWF0aW9uDQogICogQGZoOgkJCVY0TDIgZmlsZSBoYW5kbGUNCiAgKiBA c3RhdGU6CQlzdGF0ZSBvZiB0aGUgY29udGV4dA0KKyAqIEBjdHJsX2hkbDoJCWNvbnRyb2xzIGhh bmRsZXINCiAgKiBAY29sb3JzcGFjZTogZW51bSB2NGwyX2NvbG9yc3BhY2U7IHN1cHBsZW1lbnRh bCB0byBwaXhlbGZvcm1hdA0KICAqIEB5Y2Jjcl9lbmM6IGVudW0gdjRsMl95Y2Jjcl9lbmNvZGlu ZywgWSdDYkNyIGVuY29kaW5nDQogICogQHF1YW50aXphdGlvbjogZW51bSB2NGwyX3F1YW50aXph dGlvbiwgY29sb3JzcGFjZSBxdWFudGl6YXRpb24NCkBAIC0xMjQsNiArMTM5LDEwIEBAIHN0cnVj dCBtdGtfanBlZ19jdHggew0KIAlzdHJ1Y3QgbXRrX2pwZWdfcV9kYXRhCQljYXBfcTsNCiAJc3Ry dWN0IHY0bDJfZmgJCQlmaDsNCiAJZW51bSBtdGtfanBlZ19jdHhfc3RhdGUJCXN0YXRlOw0KKwl1 OAkJCQllbmFibGVfZXhpZjsNCisJdTgJCQkJZW5jX3F1YWxpdHk7DQorCXU4CQkJCXJlc3RhcnRf aW50ZXJ2YWw7DQorCXN0cnVjdCB2NGwyX2N0cmxfaGFuZGxlcgljdHJsX2hkbDsNCiANCiAJZW51 bSB2NGwyX2NvbG9yc3BhY2UgY29sb3JzcGFjZTsNCiAJZW51bSB2NGwyX3ljYmNyX2VuY29kaW5n IHljYmNyX2VuYzsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVn L210a19qcGVnX2RlY19ody5oIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGstanBlZy9tdGtf anBlZ19kZWNfaHcuaA0KaW5kZXggMWNjMzdkYmZjOGU3Li5jZTI2M2RiNWYzMGEgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2RlY19ody5oDQor KysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2RlY19ody5oDQpA QCAtMywxMCArMywxMSBAQA0KICAqIENvcHlyaWdodCAoYykgMjAxNiBNZWRpYVRlayBJbmMuDQog ICogQXV0aG9yOiBNaW5nIEhzaXUgVHNhaSA8bWluZ2hzaXUudHNhaUBtZWRpYXRlay5jb20+DQog ICogICAgICAgICBSaWNrIENoYW5nIDxyaWNrLmNoYW5nQG1lZGlhdGVrLmNvbT4NCisgKiAgICAg ICAgIFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCiAgKi8NCiANCi0jaWZuZGVm IF9NVEtfSlBFR19IV19IDQotI2RlZmluZSBfTVRLX0pQRUdfSFdfSA0KKyNpZm5kZWYgX01US19K UEVHX0RFQ19IV19IDQorI2RlZmluZSBfTVRLX0pQRUdfREVDX0hXX0gNCiANCiAjaW5jbHVkZSA8 bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4NCiANCkBAIC03NSw0ICs3Niw0IEBAIHZvaWQgbXRrX2pw ZWdfZGVjX3NldF9jb25maWcodm9pZCBfX2lvbWVtICpiYXNlLA0KIHZvaWQgbXRrX2pwZWdfZGVj X3Jlc2V0KHZvaWQgX19pb21lbSAqZGVjX3JlZ19iYXNlKTsNCiB2b2lkIG10a19qcGVnX2RlY19z dGFydCh2b2lkIF9faW9tZW0gKmRlY19yZWdfYmFzZSk7DQogDQotI2VuZGlmIC8qIF9NVEtfSlBF R19IV19IICovDQorI2VuZGlmIC8qIF9NVEtfSlBFR19ERUNfSFdfSCAqLw0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3LmMgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19ody5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kYTNlN2E4M2E4MGENCi0tLSAvZGV2L251 bGwNCisrKyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcvbXRrX2pwZWdfZW5jX2h3 LmMNCkBAIC0wLDAgKzEsMjczIEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAtb25seQ0KKy8qDQorICogQ29weXJpZ2h0IChjKSAyMDE5IE1lZGlhVGVrIEluYy4NCisgKiBB dXRob3I6IFhpYSBKaWFuZyA8eGlhLmppYW5nQG1lZGlhdGVrLmNvbT4NCisgKg0KKyAqLw0KKw0K KyNpbmNsdWRlIDxsaW51eC9pby5oPg0KKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4NCisjaW5j bHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUuaD4NCisNCisjaW5jbHVkZSAibXRrX2pwZWdfZW5j X2h3LmgiDQorDQorc3RhdGljIHN0cnVjdCBtdGtfanBlZ19lbmNfcWx0IG10a19qcGVnX2VuY19x dWFsaXR5W10gPSB7DQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDk3LA0KKwkJLmhhcmR3YXJl X3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTcsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3Bh cmFtCQk9IDk1LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTUsDQor CX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDkyLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0g SlBFR19FTkNfUVVBTElUWV9ROTIsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDkw LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9ROTAsDQorCX0sDQorCXsN CisJCS5xdWFsaXR5X3BhcmFtCQk9IDg3LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNf UVVBTElUWV9RODcsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDg0LA0KKwkJLmhh cmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODQsDQorCX0sDQorCXsNCisJCS5xdWFs aXR5X3BhcmFtCQk9IDgyLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9R ODIsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDgwLA0KKwkJLmhhcmR3YXJlX3Zh bHVlCT0gSlBFR19FTkNfUVVBTElUWV9RODAsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFt CQk9IDc0LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNzQsDQorCX0s DQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDY4LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBF R19FTkNfUVVBTElUWV9RNjgsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDY0LA0K KwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNjQsDQorCX0sDQorCXsNCisJ CS5xdWFsaXR5X3BhcmFtCQk9IDYwLA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVB TElUWV9RNjAsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDQ4LA0KKwkJLmhhcmR3 YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RNDgsDQorCX0sDQorCXsNCisJCS5xdWFsaXR5 X3BhcmFtCQk9IDM5LA0KKwkJLmhhcmR3YXJlX3ZhbHVlCT0gSlBFR19FTkNfUVVBTElUWV9RMzks DQorCX0sDQorCXsNCisJCS5xdWFsaXR5X3BhcmFtCQk9IDM0LA0KKwkJLmhhcmR3YXJlX3ZhbHVl CT0gSlBFR19FTkNfUVVBTElUWV9RMzQsDQorCX0sDQorfTsNCisNCisjZGVmaW5lIE1US19KUEVH X0VOQ19OVU1fUVVBTElUWSBBUlJBWV9TSVpFKG10a19qcGVnX2VuY19xdWFsaXR5KQ0KKw0KK3Zv aWQgbXRrX2pwZWdfZW5jX3Jlc2V0KHZvaWQgX19pb21lbSAqYmFzZSkNCit7DQorCXdyaXRlbCgw eDAwLCBiYXNlICsgSlBFR19FTkNfUlNUQik7DQorCXdyaXRlbChKUEVHX0VOQ19SRVNFVF9CSVQs IGJhc2UgKyBKUEVHX0VOQ19SU1RCKTsNCisJd3JpdGVsKDB4MDAsIGJhc2UgKyBKUEVHX0VOQ19D T0RFQ19TRUwpOw0KK30NCisNCit1MzIgbXRrX2pwZWdfZW5jX2dldF9pbnRfc3RhdHVzKHZvaWQg X19pb21lbSAqYmFzZSkNCit7DQorCXUzMiByZXQ7DQorDQorCXJldCA9IHJlYWRsKGJhc2UgKyBK UEVHX0VOQ19JTlRfU1RTKSAmDQorCQkgICAgSlBFR19FTkNfSU5UX1NUQVRVU19NQVNLX0FMTElS UTsNCisJaWYgKHJldCkNCisJCXdyaXRlbCgwLCBiYXNlICsgSlBFR19FTkNfSU5UX1NUUyk7DQor DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ZpbGVfc2l6ZSh2 b2lkIF9faW9tZW0gKmJhc2UpDQorew0KKwlyZXR1cm4gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RN QV9BRERSMCkgLQ0KKwkgICAgICAgcmVhZGwoYmFzZSArIEpQRUdfRU5DX0RTVF9BRERSMCk7DQor fQ0KKw0KK3UzMiBtdGtfanBlZ19lbmNfZW51bV9yZXN1bHQodm9pZCBfX2lvbWVtICpiYXNlLCB1 MzIgaXJxX3N0YXR1cykNCit7DQorCWlmIChpcnFfc3RhdHVzICYgSlBFR19FTkNfSU5UX1NUQVRV U19ET05FKQ0KKwkJcmV0dXJuIE1US19KUEVHX0VOQ19SRVNVTFRfRE9ORTsNCisJZWxzZSBpZiAo aXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lOVF9TVEFUVVNfU1RBTEwpDQorCQlyZXR1cm4gTVRLX0pQ RUdfRU5DX1JFU1VMVF9TVEFMTDsNCisJZWxzZSBpZiAoaXJxX3N0YXR1cyAmIEpQRUdfRU5DX0lO VF9TVEFUVVNfVkNPREVDX0lSUSkNCisJCXJldHVybiBNVEtfSlBFR19FTkNfUkVTVUxUX1ZDT0RF Q19JUlE7DQorCXJldHVybiBNVEtfSlBFR19FTkNfUkVTVUxUX0VSUk9SX1VOS05PV047DQorfQ0K Kw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZSh2b2lkIF9faW9tZW0gKmJhc2UsIHUz MiB3aWR0aCwgdTMyIGhlaWdodCkNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSBKUEVH X0VOQ19XSURUSF9IRUlHSFQod2lkdGgsIGhlaWdodCk7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSAr IEpQRUdfRU5DX0lNR19TSVpFKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2VuY19m b3JtYXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCkNCit7DQorCXUzMiB5dXZf Zm9ybWF0LCB2YWx1ZTsNCisNCisJeXV2X2Zvcm1hdCA9IEpQRUdfRU5DX1lVVl9GT1JNQVRfWVVZ VjsNCisJc3dpdGNoIChlbmNfZm9ybWF0KSB7DQorCWNhc2UgVjRMMl9QSVhfRk1UX1lVWVY6DQor CQl5dXZfZm9ybWF0ID0gSlBFR19FTkNfWVVWX0ZPUk1BVF9ZVVlWOw0KKwkJYnJlYWs7DQorCWNh c2UgVjRMMl9QSVhfRk1UX1lWWVU6DQorCQl5dXZfZm9ybWF0ID0gSlBFR19FTkNfWVVWX0ZPUk1B VF9ZVllVOw0KKwkJYnJlYWs7DQorCWNhc2UgVjRMMl9QSVhfRk1UX05WMTJNOg0KKwkJeXV2X2Zv cm1hdCA9IEpQRUdfRU5DX1lVVl9GT1JNQVRfTlYxMjsNCisJCWJyZWFrOw0KKwljYXNlIFY0TDJf UElYX0ZNVF9OVjIxTToNCisJCXl1dl9mb3JtYXQgPSBKUEVHX0VOQ19ZVVZfRk9STUFUX05WMTI7 DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXZhbHVlID0gcmVh ZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwpOw0KKwl2YWx1ZSAmPSB+SlBFR19FTkNfQ1RSTF9ZVVZf Rk9STUFUX01BU0s7DQorCXZhbHVlIHw9IEpQRUdfRU5DX0ZPUk1BVCh5dXZfZm9ybWF0KTsNCisJ d3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorfQ0KKw0KK3ZvaWQgbXRrX2pw ZWdfZW5jX3NldF9ibGtfbnVtKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGVuY19mb3JtYXQsIHUz MiB3aWR0aCwNCisJCQkgICAgICB1MzIgaGVpZ2h0KQ0KK3sNCisJdTMyIGJsa19udW07DQorCXUz MiBpc180MjA7DQorCXUzMiBwYWRkaW5nX3dpZHRoOw0KKwl1MzIgcGFkZGluZ19oZWlnaHQ7DQor DQorCWlzXzQyMCA9IChlbmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjEyTSB8fA0KKwkJICBl bmNfZm9ybWF0ID09IFY0TDJfUElYX0ZNVF9OVjIxTSkgPyAxIDogMDsNCisJcGFkZGluZ193aWR0 aCA9IHJvdW5kX3VwKHdpZHRoLCAxNik7DQorCXBhZGRpbmdfaGVpZ2h0ID0gcm91bmRfdXAoaGVp Z2h0LCBpc180MjAgPyAxNiA6IDgpOw0KKw0KKwlibGtfbnVtID0gKHBhZGRpbmdfd2lkdGggPj4g NCkgKiAocGFkZGluZ19oZWlnaHQgPj4gKGlzXzQyMCA/IDQgOiAzKSkgKg0KKwkJICAoaXNfNDIw ID8gNiA6IDQpIC0gMTsNCisNCisJd3JpdGVsKGJsa19udW0sIGJhc2UgKyBKUEVHX0VOQ19CTEtf TlVNKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc2V0X3N0cmlkZSh2b2lkIF9faW9tZW0g KmJhc2UsIHUzMiBlbmNfZm9ybWF0LCB1MzIgd2lkdGgsDQorCQkJICAgICB1MzIgaGVpZ2h0LCB1 MzIgYnl0ZXNwZXJsaW5lKQ0KK3sNCisJdTMyIHdpZHRoX2V2ZW47DQorCXUzMiBpc180MjA7DQor CXUzMiBpbWdfc3RyaWRlOw0KKwl1MzIgbWVtX3N0cmlkZTsNCisNCisJd2lkdGhfZXZlbiA9IHJv dW5kX3VwKHdpZHRoLCAyKTsNCisJaXNfNDIwID0gKGVuY19mb3JtYXQgPT0gVjRMMl9QSVhfRk1U X05WMTJNIHx8DQorCQkgIGVuY19mb3JtYXQgPT0gVjRMMl9QSVhfRk1UX05WMjFNKSA/IDEgOiAw Ow0KKwlpZiAoIWlzXzQyMCkNCisJCXdpZHRoX2V2ZW4gPSB3aWR0aF9ldmVuIDw8IDE7DQorCWlt Z19zdHJpZGUgPSByb3VuZF91cCh3aWR0aF9ldmVuLCAoaXNfNDIwID8gMTYgOiAzMikpOw0KKwlt ZW1fc3RyaWRlID0gaXNfNDIwID8gYnl0ZXNwZXJsaW5lIDogcm91bmRfdXAod2lkdGhfZXZlbiwg MzIpOw0KKw0KKwl3cml0ZWwoaW1nX3N0cmlkZSwgYmFzZSArIEpQRUdfRU5DX0lNR19TVFJJREUp Ow0KKwl3cml0ZWwobWVtX3N0cmlkZSwgYmFzZSArIEpQRUdfRU5DX1NUUklERSk7DQorfQ0KKw0K K3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9zcmNfYWRkcih2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBz cmNfYWRkciwNCisJCQkgICAgICAgdTMyIHNyY19hZGRyX2MpDQorew0KKwl3cml0ZWwoc3JjX2Fk ZHIsIGJhc2UgKyBKUEVHX0VOQ19TUkNfTFVNQV9BRERSKTsNCisJd3JpdGVsKHNyY19hZGRyX2Ms IGJhc2UgKyBKUEVHX0VOQ19TUkNfQ0hST01BX0FERFIpOw0KK30NCisNCit2b2lkIG10a19qcGVn X2VuY19zZXRfZHN0X2FkZHIodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZHN0X2FkZHIsDQorCQkJ ICAgICAgIHUzMiBzdGFsbF9zaXplLCB1MzIgaW5pdF9vZmZzZXQsDQorCQkJICAgICAgIHUzMiBv ZmZzZXRfbWFzaykNCit7DQorCXdyaXRlbChKUEVHX0VOQ19JTklUX09GRlNFVChpbml0X29mZnNl dCksIGJhc2UgKyBKUEVHX0VOQ19PRkZTRVRfQUREUik7DQorCXdyaXRlbChKUEVHX0VOQ19PRkZT RVRfTUFTSyhvZmZzZXRfbWFzayksDQorCSAgICAgICBiYXNlICsgSlBFR19FTkNfQllURV9PRkZT RVRfTUFTSyk7DQorCXdyaXRlbChKUEVHX0VOQ19EU1RfQUREUihkc3RfYWRkciksIGJhc2UgKyBK UEVHX0VOQ19EU1RfQUREUjApOw0KKwl3cml0ZWwoSlBFR19FTkNfU1RBTExfQUREUihkc3RfYWRk ciwgc3RhbGxfc2l6ZSksDQorCSAgICAgICBiYXNlICsgSlBFR19FTkNfU1RBTExfQUREUjApOw0K K30NCisNCitzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfc2V0X3F1YWxpdHkodm9pZCBfX2lvbWVt ICpiYXNlLCB1MzIgcXVhbGl0eSkNCit7DQorCXUzMiB2YWx1ZTsNCisJdTMyIGksIGVuY19xdWFs aXR5Ow0KKw0KKwllbmNfcXVhbGl0eSA9IG10a19qcGVnX2VuY19xdWFsaXR5WzBdLmhhcmR3YXJl X3ZhbHVlOw0KKwlmb3IgKGkgPSAwOyBpIDwgTVRLX0pQRUdfRU5DX05VTV9RVUFMSVRZOyBpKysp IHsNCisJCWlmIChxdWFsaXR5ID49IG10a19qcGVnX2VuY19xdWFsaXR5W2ldLnF1YWxpdHlfcGFy YW0pIHsNCisJCQllbmNfcXVhbGl0eSA9IG10a19qcGVnX2VuY19xdWFsaXR5W2ldLmhhcmR3YXJl X3ZhbHVlOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQorDQorCXZhbHVlID0gcmVhZGwoYmFzZSAr IEpQRUdfRU5DX1FVQUxJVFkpOw0KKwl2YWx1ZSA9IEpQRUdfRU5DX1NFVF9RVUFMSVRZKHZhbHVl LCBlbmNfcXVhbGl0eSk7DQorCXdyaXRlbCh2YWx1ZSwgYmFzZSArIEpQRUdfRU5DX1FVQUxJVFkp Ow0KK30NCisNCitzdGF0aWMgdm9pZCBtdGtfanBlZ19lbmNfc2V0X3Jlc3RhcnRfaW50ZXJ2YWwo dm9pZCBfX2lvbWVtICpiYXNlLA0KKwkJCQkJICAgICAgdTMyIHJlc3RhcnRfaW50ZXJ2YWwpDQor ew0KKwl1MzIgdmFsdWU7DQorDQorCXZhbHVlID0gcmVhZGwoYmFzZSArIEpQRUdfRU5DX0NUUkwp Ow0KKwlpZiAocmVzdGFydF9pbnRlcnZhbCkNCisJCXZhbHVlIHw9IEpQRUdfRU5DX0NUUkxfUkVT VEFSVF9FTl9CSVQ7DQorCWVsc2UNCisJCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX1JFU1RBUlRf RU5fQklUOw0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJd3JpdGVs KHJlc3RhcnRfaW50ZXJ2YWwsIGJhc2UgKyBKUEVHX0VOQ19SU1RfTUNVX05VTSk7DQorfQ0KKw0K K3N0YXRpYyB2b2lkIG10a19qcGVnX2VuY19zZXRfZW5jb2RlX21vZGUodm9pZCBfX2lvbWVtICpi YXNlLCB1MzIgZXhpZl9lbikNCit7DQorCXUzMiB2YWx1ZTsNCisNCisJdmFsdWUgPSByZWFkbChi YXNlICsgSlBFR19FTkNfQ1RSTCk7DQorCXZhbHVlICY9IH5KUEVHX0VOQ19DVFJMX0ZJTEVfRk9S TUFUX0JJVDsNCisJd3JpdGVsKHZhbHVlLCBiYXNlICsgSlBFR19FTkNfQ1RSTCk7DQorDQorCWlm IChleGlmX2VuKSB7DQorCQl2YWx1ZSA9IHJlYWRsKGJhc2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJ CXZhbHVlIHw9IEpQRUdfRU5DX0VOX0pGSUZfRVhJRjsNCisJCXdyaXRlbCh2YWx1ZSwgYmFzZSAr IEpQRUdfRU5DX0NUUkwpOw0KKwl9DQorfQ0KKw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9jdHJs X2NmZyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBleGlmX2VuLCB1MzIgcXVhbGl0eSwNCisJCQkg ICAgICAgdTMyIHJlc3RhcnRfaW50ZXJ2YWwpDQorew0KKwltdGtfanBlZ19lbmNfc2V0X3F1YWxp dHkoYmFzZSwgcXVhbGl0eSk7DQorDQorCW10a19qcGVnX2VuY19zZXRfcmVzdGFydF9pbnRlcnZh bChiYXNlLCByZXN0YXJ0X2ludGVydmFsKTsNCisNCisJbXRrX2pwZWdfZW5jX3NldF9lbmNvZGVf bW9kZShiYXNlLCBleGlmX2VuKTsNCit9DQorDQordm9pZCBtdGtfanBlZ19lbmNfc3RhcnQodm9p ZCBfX2lvbWVtICpiYXNlKQ0KK3sNCisJdTMyIHZhbHVlOw0KKw0KKwl2YWx1ZSA9IHJlYWRsKGJh c2UgKyBKUEVHX0VOQ19DVFJMKTsNCisJdmFsdWUgfD0gSlBFR19FTkNfQ1RSTF9JTlRfRU5fQklU IHwgSlBFR19FTkNfQ1RSTF9FTkFCTEVfQklUOw0KKwl3cml0ZWwodmFsdWUsIGJhc2UgKyBKUEVH X0VOQ19DVFJMKTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9tdGst anBlZy9tdGtfanBlZ19lbmNfaHcuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vbXRrLWpwZWcv bXRrX2pwZWdfZW5jX2h3LmgNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw MDAuLmQwZDdkMjE4YTBjMg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfaHcuaA0KQEAgLTAsMCArMSw4NiBAQA0KKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKg0KKyAqIENvcHlyaWdo dCAoYykgMjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBYaWEgSmlhbmcgPHhpYS5qaWFu Z0BtZWRpYXRlay5jb20+DQorICoNCisgKi8NCisNCisjaWZuZGVmIF9NVEtfSlBFR19FTkNfSFdf SA0KKyNkZWZpbmUgX01US19KUEVHX0VOQ19IV19IDQorDQorI2luY2x1ZGUgPG1lZGlhL3ZpZGVv YnVmMi1jb3JlLmg+DQorDQorI2luY2x1ZGUgIm10a19qcGVnX2NvcmUuaCINCisjaW5jbHVkZSAi bXRrX2pwZWdfZW5jX3JlZy5oIg0KKw0KK2VudW0gew0KKwlNVEtfSlBFR19FTkNfUkVTVUxUX0RP TkUJCT0gMCwNCisJTVRLX0pQRUdfRU5DX1JFU1VMVF9TVEFMTCwNCisJTVRLX0pQRUdfRU5DX1JF U1VMVF9WQ09ERUNfSVJRLA0KKwlNVEtfSlBFR19FTkNfUkVTVUxUX0VSUk9SX1VOS05PV04NCit9 Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBtdGtfanBlZ19lbmNfcWx0IC0gSlBFRyBlbmNvZGVyIHF1 YWxpdHkgZGF0YQ0KKyAqIEBxdWFsaXR5X3BhcmFtOglxdWFsaXR5IHZhbHVlDQorICogQGhhcmR3 YXJlX3ZhbHVlOmhhcmR3YXJlIHZhbHVlIG9mIHF1YWxpdHkNCisgKi8NCitzdHJ1Y3QgbXRrX2pw ZWdfZW5jX3FsdCB7DQorCXU4CXF1YWxpdHlfcGFyYW07DQorCXU4CWhhcmR3YXJlX3ZhbHVlOw0K K307DQorDQorLyoqDQorICogc3RydWN0IG10X2pwZWdfZW5jX2JzIC0gSlBFRyBlbmNvZGVyIGJp dHN0cmVhbSAgYnVmZmVyDQorICogQGRtYV9hZGRyOgkJCUpQRUcgZW5jb2RlciBkZXN0aW5hdGlv biBhZGRyZXNzDQorICogQHNpemU6CQkJSlBFRyBlbmNvZGVyIGJpc3RyZWFtIHNpemUNCisgKiBA ZG1hX2FkZHJfb2Zmc2V0OgkJSlBFRyBlbmNvZGVyIG9mZnNldCBhZGRyZXNzDQorICogQGRtYV9h ZGRyX29mZnNldG1hc2s6CUpQRUcgZW5jb2RlciBkZXN0aW5hdGlvbiBhZGRyZXNzIG9mZnNldCBt YXNrDQorICovDQorc3RydWN0IG10a19qcGVnX2VuY19icyB7DQorCWRtYV9hZGRyX3QJZG1hX2Fk ZHI7DQorCXNpemVfdAkJc2l6ZTsNCisJdTMyCQkJZG1hX2FkZHJfb2Zmc2V0Ow0KKwl1MzIJCQlk bWFfYWRkcl9vZmZzZXRtYXNrOw0KK307DQorDQorLyoqDQorICogc3RydWN0IG10a19qcGVnX21l bSAtIEpQRUcgbWVtb3J5DQorICogQGRtYV9hZGRyOgkJbWVtb3J5IGFkZHJlc3MNCisgKiBAc2l6 ZToJCW1lbW9yeSBzaXplDQorICovDQorc3RydWN0IG10a19qcGVnX21lbSB7DQorCWRtYV9hZGRy X3QJZG1hX2FkZHI7DQorCXNpemVfdAkJc2l6ZTsNCit9Ow0KKw0KKy8qKg0KKyAqIHN0cnVjdCBt dGtfanBlZ19lbmNfZmIgLSBKUEVHIGVuY29kZXIgZnJhbWUgYnVmZmVyDQorICogQGZiX2FkZHI6 CQlmcm1hZSBidWZmZXIgbWVtb3J5IGluZm9ybWF0aW9uDQorICogQG51bV9wbGFuZXM6CQludW1i ZXIgb2YgcGxhbmVzDQorICovDQorc3RydWN0IG10a19qcGVnX2VuY19mYiB7DQorCXN0cnVjdCBt dGtfanBlZ19tZW0JZmJfYWRkcltNVEtfSlBFR19DT01QX01BWF07DQorCXUzMgkJCW51bV9wbGFu ZXM7DQorfTsNCisNCit2b2lkIG10a19qcGVnX2VuY19yZXNldCh2b2lkIF9faW9tZW0gKmJhc2Up Ow0KK3UzMiBtdGtfanBlZ19lbmNfZ2V0X2ludF9zdGF0dXModm9pZCBfX2lvbWVtICpiYXNlKTsN Cit1MzIgbXRrX2pwZWdfZW5jX2dldF9maWxlX3NpemUodm9pZCBfX2lvbWVtICpiYXNlKTsNCit1 MzIgbXRrX2pwZWdfZW5jX2VudW1fcmVzdWx0KHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIGlycV9z dGF0dXMpOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9pbWdfc2l6ZSh2b2lkIF9faW9tZW0gKmJh c2UsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2VuY19m b3JtYXQodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCk7DQordm9pZCBtdGtfanBl Z19lbmNfc2V0X2Jsa19udW0odm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCwgdTMy IHdpZHRoLA0KKwkJCSAgICAgIHUzMiBoZWlnaHQpOw0KK3ZvaWQgbXRrX2pwZWdfZW5jX3NldF9z dHJpZGUodm9pZCBfX2lvbWVtICpiYXNlLCB1MzIgZW5jX2Zvcm1hdCwgdTMyIHdpZHRoLA0KKwkJ CSAgICAgdTMyIGhlaWdodCwgdTMyIGJ5dGVzcGVybGluZSk7DQordm9pZCBtdGtfanBlZ19lbmNf c2V0X3NyY19hZGRyKHZvaWQgX19pb21lbSAqYmFzZSwgdTMyIHNyY19hZGRyLA0KKwkJCSAgICAg ICB1MzIgc3JjX2FkZHJfYyk7DQordm9pZCBtdGtfanBlZ19lbmNfc2V0X2RzdF9hZGRyKHZvaWQg X19pb21lbSAqYmFzZSwgdTMyIGRzdF9hZGRyLA0KKwkJCSAgICAgICB1MzIgc3RhbGxfc2l6ZSwg dTMyIGluaXRfb2Zmc2V0LA0KKwkJCSAgICAgICB1MzIgb2Zmc2V0X21hc2spOw0KK3ZvaWQgbXRr X2pwZWdfZW5jX3NldF9jdHJsX2NmZyh2b2lkIF9faW9tZW0gKmJhc2UsIHUzMiBleGlmX2VuLCB1 MzIgcXVhbGl0eSwNCisJCQkgICAgICAgdTMyIHJlc3RhcnRfaW50ZXJ2YWwpOw0KK3ZvaWQgbXRr X2pwZWdfZW5jX3N0YXJ0KHZvaWQgX19pb21lbSAqZW5jX3JlZ19iYXNlKTsNCisNCisjZW5kaWYg LyogX01US19KUEVHX0VOQ19IV19IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9tdGstanBlZy9tdGtfanBlZ19lbmNfcmVnLmggYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L210ay1qcGVnL210a19qcGVnX2VuY19yZWcuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4 IDAwMDAwMDAwMDAwMC4uY2VjMzYzMWFkZGM1DQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL210ay1qcGVnL210a19qcGVnX2VuY19yZWcuaA0KQEAgLTAsMCArMSw3 OCBAQA0KKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCisvKg0K KyAqIENvcHlyaWdodCAoYykgMjAxOSBNZWRpYVRlayBJbmMuDQorICogQXV0aG9yOiBYaWEgSmlh bmcgPHhpYS5qaWFuZ0BtZWRpYXRlay5jb20+DQorICoNCisgKi8NCisjaWZuZGVmIF9NVEtfSlBF R19FTkNfUkVHX0gNCisjZGVmaW5lIF9NVEtfSlBFR19FTkNfUkVHX0gNCisNCisjZGVmaW5lIEpQ RUdfRU5DX0lOVF9TVEFUVVNfRE9ORQkJCUJJVCgwKQ0KKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NU QVRVU19TVEFMTAkJCUJJVCgxKQ0KKyNkZWZpbmUgSlBFR19FTkNfSU5UX1NUQVRVU19WQ09ERUNf SVJRCQlCSVQoNCkNCisjZGVmaW5lIEpQRUdfRU5DX0lOVF9TVEFUVVNfTUFTS19BTExJUlEJCTB4 MTMNCisNCisjZGVmaW5lIEpQRUdfRU5DX0RTVF9BRERSX09GRlNFVF9NQVNLIEdFTk1BU0soMywg MCkNCisNCisjZGVmaW5lIEpQRUdfRU5DX0NUUkxfWVVWX0ZPUk1BVF9NQVNLIDB4MTgNCisjZGVm aW5lIEpQRUdfRU5DX0NUUkxfUkVTVEFSVF9FTl9CSVQgICAgICAgICAgICBCSVQoMTApDQorI2Rl ZmluZSBKUEVHX0VOQ19DVFJMX0ZJTEVfRk9STUFUX0JJVCAgICAgICAgICAgQklUKDUpDQorI2Rl ZmluZSBKUEVHX0VOQ19FTl9KRklGX0VYSUYgICAgICAgICAgICAgICAgICAgQklUKDUpDQorI2Rl ZmluZSBKUEVHX0VOQ19DVFJMX0lOVF9FTl9CSVQgICAgICAgICAgICAgICAgQklUKDIpDQorI2Rl ZmluZSBKUEVHX0VOQ19DVFJMX0VOQUJMRV9CSVQgICAgICAgICAgICAgICAgQklUKDApDQorI2Rl ZmluZSBKUEVHX0VOQ19SRVNFVF9CSVQgICAgICAgICAgICAgICAgICAgICAgQklUKDApDQorDQor I2RlZmluZSBKUEVHX0VOQ19ZVVZfRk9STUFUX1lVWVYgMA0KKyNkZWZpbmUgSlBFR19FTkNfWVVW X0ZPUk1BVF9ZVllVIDENCisjZGVmaW5lIEpQRUdfRU5DX1lVVl9GT1JNQVRfTlYxMiAyDQorI2Rl ZmluZSBKRVBHX0VOQ19ZVVZfRk9STUFUX05WMjEgMw0KKw0KKyNkZWZpbmUgSlBFR19FTkNfUVVB TElUWV9RNjAgMHgwDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E4MCAweDENCisjZGVmaW5l IEpQRUdfRU5DX1FVQUxJVFlfUTkwIDB4Mg0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9ROTUg MHgzDQorI2RlZmluZSBKUEVHX0VOQ19RVUFMSVRZX1EzOSAweDQNCisjZGVmaW5lIEpQRUdfRU5D X1FVQUxJVFlfUTY4IDB4NQ0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RODQgMHg2DQorI2Rl ZmluZSBKUEVHX0VOQ19RVUFMSVRZX1E5MiAweDcNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlf UTQ4IDB4OA0KKyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNzQgMHhhDQorI2RlZmluZSBKUEVH X0VOQ19RVUFMSVRZX1E4NyAweGINCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTM0IDB4Yw0K KyNkZWZpbmUgSlBFR19FTkNfUVVBTElUWV9RNjQgMHhlDQorI2RlZmluZSBKUEVHX0VOQ19RVUFM SVRZX1E4MiAweGYNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFlfUTk3IDB4MTANCisNCisjZGVm aW5lIEpQRUdfRU5DX1JTVEIJCQkJMHgxMDANCisjZGVmaW5lIEpQRUdfRU5DX0NUUkwJCQkJMHgx MDQNCisjZGVmaW5lIEpQRUdfRU5DX1FVQUxJVFkJCQkweDEwOA0KKyNkZWZpbmUgSlBFR19FTkNf QkxLX05VTQkJCTB4MTBDDQorI2RlZmluZSBKUEVHX0VOQ19CTEtfQ05UCQkJMHgxMTANCisjZGVm aW5lIEpQRUdfRU5DX0lOVF9TVFMJCQkweDExYw0KKyNkZWZpbmUgSlBFR19FTkNfRFNUX0FERFIw CQkJMHgxMjANCisjZGVmaW5lIEpQRUdfRU5DX0RNQV9BRERSMAkJCTB4MTI0DQorI2RlZmluZSBK UEVHX0VOQ19TVEFMTF9BRERSMAkJMHgxMjgNCisjZGVmaW5lIEpQRUdfRU5DX09GRlNFVF9BRERS CQkweDEzOA0KKyNkZWZpbmUgSlBFR19FTkNfUlNUX01DVV9OVU0JCTB4MTUwDQorI2RlZmluZSBK UEVHX0VOQ19JTUdfU0laRQkJCTB4MTU0DQorI2RlZmluZSBKUEVHX0VOQ19ERUJVR19JTkZPMAkJ MHgxNjANCisjZGVmaW5lIEpQRUdfRU5DX0RFQlVHX0lORk8xCQkweDE2NA0KKyNkZWZpbmUgSlBF R19FTkNfVE9UQUxfQ1lDTEUJCTB4MTY4DQorI2RlZmluZSBKUEVHX0VOQ19CWVRFX09GRlNFVF9N QVNLCTB4MTZjDQorI2RlZmluZSBKUEVHX0VOQ19TUkNfTFVNQV9BRERSCQkweDE3MA0KKyNkZWZp bmUgSlBFR19FTkNfU1JDX0NIUk9NQV9BRERSCTB4MTc0DQorI2RlZmluZSBKUEVHX0VOQ19TVFJJ REUJCQkJMHgxNzgNCisjZGVmaW5lIEpQRUdfRU5DX0lNR19TVFJJREUJCQkweDE3Yw0KKyNkZWZp bmUgSlBFR19FTkNfRENNX0NUUkwJCQkweDMwMA0KKyNkZWZpbmUgSlBFR19FTkNfQ09ERUNfU0VM CQkJMHgzMTQNCisjZGVmaW5lIEpQRUdfRU5DX1VMVFJBX1RIUkVTCQkweDMxOA0KKw0KKyNkZWZp bmUgSlBFR19FTkNfRk9STUFUKHgpCQkoKCh4KSAmIDMpIDw8IDMpDQorI2RlZmluZSBKUEVHX0VO Q19XSURUSF9IRUlHSFQodywgaCkJKCgodykgPDwgMTYpIHwgKGgpKQ0KKyNkZWZpbmUgSlBFR19F TkNfSU5JVF9PRkZTRVQoeCkJCSgoeCkgJiAofjB4ZikpDQorI2RlZmluZSBKUEVHX0VOQ19PRkZT RVRfTUFTSyh4KQkJKCh4KSAmIDB4ZikNCisjZGVmaW5lIEpQRUdfRU5DX0RTVF9BRERSKHgpCQko KHgpICYgKH4weGYpKQ0KKyNkZWZpbmUgSlBFR19FTkNfU1RBTExfQUREUih4LCB5KQkJKCgoeCkg KyAoeSkpICYgKH4weGYpKQ0KKyNkZWZpbmUgSlBFR19FTkNfU0VUX1FVQUxJVFkoeCwgeSkJKCgo eCkgJiAweGZmZmYwMDAwKSB8ICh5KSkNCisNCisjZW5kaWYgLyogX01US19KUEVHX0VOQ19SRUdf SCAqLw0KLS0gDQoyLjE4LjANCg==