From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.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,USER_AGENT_GIT 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 6321DC433E0 for ; Fri, 5 Feb 2021 14:49:48 +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 07F57650D9 for ; Fri, 5 Feb 2021 14:49:47 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 07F57650D9 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 837B26F45E; Fri, 5 Feb 2021 14:49:47 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id C06876F45E for ; Fri, 5 Feb 2021 14:49:46 +0000 (UTC) IronPort-SDR: LvAoevXaRKZYvC7RDfjiRXATuo8ZKR2R+9n6SjK2rC9G79Ui2W8ps2Mkdckx5b0t+3dj3nXzR6 6lBjwJbMoeAw== X-IronPort-AV: E=McAfee;i="6000,8403,9885"; a="168556735" X-IronPort-AV: E=Sophos;i="5.81,155,1610438400"; d="scan'208";a="168556735" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Feb 2021 06:49:33 -0800 IronPort-SDR: Xnr/Cdu1gYeHQfhZ1uLh+JIBSZf38296x8Pb8WIZMoDiV88Mc/tt6qjpjeW2nNim6wbba+genZ kwx/Aa0WadqA== X-IronPort-AV: E=Sophos;i="5.81,155,1610438400"; d="scan'208";a="357726021" Received: from fuhrberg-mobl1.ger.corp.intel.com (HELO localhost) ([10.252.33.102]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Feb 2021 06:49:30 -0800 From: Jani Nikula To: intel-gfx@lists.freedesktop.org Date: Fri, 5 Feb 2021 16:48:42 +0200 Message-Id: <2fa703ffc7b96a41c392fd5ebbd2e6e4ffb6fb05.1612536383.git.jani.nikula@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: References: MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v12 7/8] drm/i915: refactor skylake scaler code into new file. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jani.nikula@intel.com, Dave Airlie Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4KClRoaXMgbW92ZXMgdGhlIGNv ZGUgZnJvbSB2YXJpb3VzIHBsYWNlcyBhbmQgY29uc29saWRhdGVzIGl0CmludG8gb25lIG5ldyBm aWxlLgoKdjI6Ci0gcmVuYW1lIHNrbF9wcm9ncmFtX3BsYW5lIC0+IHNrbF9wcm9ncmFtX3BsYW5l X3NjYWxlciAoVmlsbGUpCi0gYWxzbyBtb3ZlIHNrbF9wZml0X2VuYWJsZSwgYW5kIGNvbnNlcXVl bnRseSBtYWtlIHNvbWUgc2tsX3NjYWxlcl8qCiAgZnVuY3Rpb25zIHN0YXRpYyB0byBza2xfc2Nh bGVyLmMgKFZpbGxlKQoKU2lnbmVkLW9mZi1ieTogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0 LmNvbT4KU2lnbmVkLW9mZi1ieTogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pY2xfZHNpLmMgICAgICAgIHwgICAxICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMgICB8ICAgMiArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYyAgICAgIHwgICAxICsKIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8IDQ4OCArLS0tLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oICB8 ICAgNiAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jICAgfCAg IDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYyAgIHwgIDYy IC0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nwcml0ZS5oICAgfCAgIDcg LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfc2NhbGVyLmMgICAgIHwgNTU2ICsr KysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfc2NhbGVy LmggICAgIHwgIDI5ICsKIC4uLi9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2ZXJzYWxfcGxhbmUu YyAgICB8ICAgMyArLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvc2tsX3VuaXZlcnNhbF9wbGFuZS5o ICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvdmx2X2RzaS5jICAgICAg ICB8ICAgMSArCiAxNCBmaWxlcyBjaGFuZ2VkLCA1OTggaW5zZXJ0aW9ucygrKSwgNTY0IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv c2tsX3NjYWxlci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9za2xfc2NhbGVyLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDkzODhlMDkxODRmZS4u MjM1Njc5NjM3ZDFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtMjI2LDYgKzIyNiw3IEBAIGk5 MTUteSArPSBcCiAJZGlzcGxheS9pbnRlbF90Yy5vIFwKIAlkaXNwbGF5L2ludGVsX3ZnYS5vIFwK IAlkaXNwbGF5L2k5eHhfcGxhbmUubyBcCisJZGlzcGxheS9za2xfc2NhbGVyLm8gXAogCWRpc3Bs YXkvc2tsX3VuaXZlcnNhbF9wbGFuZS5vCiBpOTE1LSQoQ09ORklHX0FDUEkpICs9IFwKIAlkaXNw bGF5L2ludGVsX2FjcGkubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ljbF9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaWNsX2RzaS5jCmlu ZGV4IDllZWVjNmZhZGVjNy4uN2VmNmI4OWM3OWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ljbF9kc2kuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ljbF9kc2kuYwpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgImludGVsX2RzaS5oIgog I2luY2x1ZGUgImludGVsX3BhbmVsLmgiCiAjaW5jbHVkZSAiaW50ZWxfdmRzYy5oIgorI2luY2x1 ZGUgInNrbF9zY2FsZXIuaCIKICNpbmNsdWRlICJza2xfdW5pdmVyc2FsX3BsYW5lLmgiCiAKIHN0 YXRpYyBpbnQgaGVhZGVyX2NyZWRpdHNfYXZhaWxhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfYXRvbWljLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5j CmluZGV4IGUwMGZkYzQ3YzBlYi4uMjdmN2Q3MTA5Y2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2F0b21pYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfYXRvbWljLmMKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlICJp bnRlbF9nbG9iYWxfc3RhdGUuaCIKICNpbmNsdWRlICJpbnRlbF9oZGNwLmgiCiAjaW5jbHVkZSAi aW50ZWxfcHNyLmgiCi0jaW5jbHVkZSAiaW50ZWxfc3ByaXRlLmgiCisjaW5jbHVkZSAic2tsX3Vu aXZlcnNhbF9wbGFuZS5oIgogCiAvKioKICAqIGludGVsX2RpZ2l0YWxfY29ubmVjdG9yX2F0b21p Y19nZXRfcHJvcGVydHkgLSBob29rIGZvciBjb25uZWN0b3ItPmF0b21pY19nZXRfcHJvcGVydHku CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kZGkuYwppbmRleCBmNDc0NmMxZWRh YmUuLjNjNDAwMzYwNWY5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kZGkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rk aS5jCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiaW50ZWxfdGMuaCIKICNpbmNsdWRlICJp bnRlbF92ZHNjLmgiCiAjaW5jbHVkZSAiaW50ZWxfdnJyLmgiCisjaW5jbHVkZSAic2tsX3NjYWxl ci5oIgogI2luY2x1ZGUgInNrbF91bml2ZXJzYWxfcGxhbmUuaCIKIAogc3RhdGljIGNvbnN0IHU4 IGluZGV4X3RvX2RwX3NpZ25hbF9sZXZlbHNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggMTgyNmI0ZmM2Y2VjLi5iZWVkMDhjMDBiNmMg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCkBAIC05 NCw2ICs5NCw3IEBACiAjaW5jbHVkZSAiaW50ZWxfdGMuaCIKICNpbmNsdWRlICJpbnRlbF92Z2Eu aCIKICNpbmNsdWRlICJpOXh4X3BsYW5lLmgiCisjaW5jbHVkZSAic2tsX3NjYWxlci5oIgogI2lu Y2x1ZGUgInNrbF91bml2ZXJzYWxfcGxhbmUuaCIKIAogc3RhdGljIHZvaWQgaTl4eF9jcnRjX2Ns b2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKQEAgLTI1MjEsMzggKzI1MjIsNiBAQCBp bnRlbF9wbGFuZV9mZW5jZV95X29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnBsYW5lX3N0YXRlKQogCXJldHVybiB5OwogfQogCi1zdGF0aWMgdm9pZCBza2xfZGV0YWNoX3Nj YWxlcihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywgaW50IGlkKQotewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0JdW5zaWduZWQgbG9uZyBpcnFmbGFn czsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdz KTsKLQotCWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfQ1RSTChpbnRlbF9jcnRj LT5waXBlLCBpZCksIDApOwotCWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfV0lO X1BPUyhpbnRlbF9jcnRjLT5waXBlLCBpZCksIDApOwotCWludGVsX2RlX3dyaXRlX2Z3KGRldl9w cml2LCBTS0xfUFNfV0lOX1NaKGludGVsX2NydGMtPnBpcGUsIGlkKSwgMCk7Ci0KLQlzcGluX3Vu bG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLX0KLQot LyoKLSAqIFRoaXMgZnVuY3Rpb24gZGV0YWNoZXMgKGFrYS4gdW5iaW5kcykgdW51c2VkIHNjYWxl cnMgaW4gaGFyZHdhcmUKLSAqLwotc3RhdGljIHZvaWQgc2tsX2RldGFjaF9zY2FsZXJzKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQotewotCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwot CWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9zdGF0ZSAqc2NhbGVyX3N0YXRlID0KLQkJ JmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKLQlpbnQgaTsKLQotCS8qIGxvb3AgdGhyb3VnaCBh bmQgZGlzYWJsZSBzY2FsZXJzIHRoYXQgYXJlbid0IGluIHVzZSAqLwotCWZvciAoaSA9IDA7IGkg PCBpbnRlbF9jcnRjLT5udW1fc2NhbGVyczsgaSsrKSB7Ci0JCWlmICghc2NhbGVyX3N0YXRlLT5z Y2FsZXJzW2ldLmluX3VzZSkKLQkJCXNrbF9kZXRhY2hfc2NhbGVyKGludGVsX2NydGMsIGkpOwot CX0KLX0KLQogc3RhdGljIGludAogX19pbnRlbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkgICAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLApAQCAt MzExNyw0NjEgKzMwODYsNiBAQCBzdGF0aWMgdm9pZCBjcHRfdmVyaWZ5X21vZGVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIH0KIAotLyoKLSAqIFRoZSBoYXJkd2Fy ZSBwaGFzZSAwLjAgcmVmZXJzIHRvIHRoZSBjZW50ZXIgb2YgdGhlIHBpeGVsLgotICogV2Ugd2Fu dCB0byBzdGFydCBmcm9tIHRoZSB0b3AvbGVmdCBlZGdlIHdoaWNoIGlzIHBoYXNlCi0gKiAtMC41 LiBUaGF0IG1hdGNoZXMgaG93IHRoZSBoYXJkd2FyZSBjYWxjdWxhdGVzIHRoZSBzY2FsaW5nCi0g KiBmYWN0b3JzIChmcm9tIHRvcC1sZWZ0IG9mIHRoZSBmaXJzdCBwaXhlbCB0byBib3R0b20tcmln aHQKLSAqIG9mIHRoZSBsYXN0IHBpeGVsLCBhcyBvcHBvc2VkIHRvIHRoZSBwaXhlbCBjZW50ZXJz KS4KLSAqCi0gKiBGb3IgNDoyOjAgc3Vic2FtcGxlZCBjaHJvbWEgcGxhbmVzIHdlIG9idmlvdXNs eSBoYXZlIHRvCi0gKiBhZGp1c3QgdGhhdCBzbyB0aGF0IHRoZSBjaHJvbWEgc2FtcGxlIHBvc2l0 aW9uIGxhbmRzIGluCi0gKiB0aGUgcmlnaHQgc3BvdC4KLSAqCi0gKiBOb3RlIHRoYXQgZm9yIHBh Y2tlZCBZQ2JDciA0OjI6MiBmb3JtYXRzIHRoZXJlIGlzIG5vIHdheSB0bwotICogY29udHJvbCBj aHJvbWEgc2l0aW5nLiBUaGUgaGFyZHdhcmUgc2ltcGx5IHJlcGxpY2F0ZXMgdGhlCi0gKiBjaHJv bWEgc2FtcGxlcyBmb3IgYm90aCBvZiB0aGUgbHVtYSBzYW1wbGVzLCBhbmQgdGh1cyB3ZSBkb24n dAotICogYWN0dWFsbHkgZ2V0IHRoZSBleHBlY3RlZCBNUEVHMiBjaHJvbWEgc2l0aW5nIGNvbnZl bnRpb24gOigKLSAqIFRoZSBzYW1lIGJlaGF2aW91ciBpcyBvYnNlcnZlZCBvbiBwcmUtU0tMIHBs YXRmb3JtcyBhcyB3ZWxsLgotICoKLSAqIFRoZW9yeSBiZWhpbmQgdGhlIGZvcm11bGEgKG5vdGUg dGhhdCB3ZSBpZ25vcmUgc3ViLXBpeGVsCi0gKiBzb3VyY2UgY29vcmRpbmF0ZXMpOgotICogcyA9 IHNvdXJjZSBzYW1wbGUgcG9zaXRpb24KLSAqIGQgPSBkZXN0aW5hdGlvbiBzYW1wbGUgcG9zaXRp b24KLSAqCi0gKiBEb3duc2NhbGluZyA0OjE6Ci0gKiAtMC41Ci0gKiB8IDAuMAotICogfCB8ICAg ICAxLjUgKGluaXRpYWwgcGhhc2UpCi0gKiB8IHwgICAgIHwKLSAqIHYgdiAgICAgdgotICogfCBz IHwgcyB8IHMgfCBzIHwKLSAqIHwgICAgICAgZCAgICAgICB8Ci0gKgotICogVXBzY2FsaW5nIDE6 NDoKLSAqIC0wLjUKLSAqIHwgLTAuMzc1IChpbml0aWFsIHBoYXNlKQotICogfCB8ICAgICAwLjAK LSAqIHwgfCAgICAgfAotICogdiB2ICAgICB2Ci0gKiB8ICAgICAgIHMgICAgICAgfAotICogfCBk IHwgZCB8IGQgfCBkIHwKLSAqLwotdTE2IHNrbF9zY2FsZXJfY2FsY19waGFzZShpbnQgc3ViLCBp bnQgc2NhbGUsIGJvb2wgY2hyb21hX2Nvc2l0ZWQpCi17Ci0JaW50IHBoYXNlID0gLTB4ODAwMDsK LQl1MTYgdHJpcCA9IDA7Ci0KLQlpZiAoY2hyb21hX2Nvc2l0ZWQpCi0JCXBoYXNlICs9IChzdWIg LSAxKSAqIDB4ODAwMCAvIHN1YjsKLQotCXBoYXNlICs9IHNjYWxlIC8gKDIgKiBzdWIpOwotCi0J LyoKLQkgKiBIYXJkd2FyZSBpbml0aWFsIHBoYXNlIGxpbWl0ZWQgdG8gWy0wLjU6MS41XS4KLQkg KiBTaW5jZSB0aGUgbWF4IGhhcmR3YXJlIHNjYWxlIGZhY3RvciBpcyAzLjAsIHdlCi0JICogc2hv dWxkIG5ldmVyIGFjdHVhbGx5IGV4Y2RlZWQgMS4wIGhlcmUuCi0JICovCi0JV0FSTl9PTihwaGFz ZSA8IC0weDgwMDAgfHwgcGhhc2UgPiAweDE4MDAwKTsKLQotCWlmIChwaGFzZSA8IDApCi0JCXBo YXNlID0gMHgxMDAwMCArIHBoYXNlOwotCWVsc2UKLQkJdHJpcCA9IFBTX1BIQVNFX1RSSVA7Ci0K LQlyZXR1cm4gKChwaGFzZSA+PiAyKSAmIFBTX1BIQVNFX01BU0spIHwgdHJpcDsKLX0KLQotI2Rl ZmluZSBTS0xfTUlOX1NSQ19XIDgKLSNkZWZpbmUgU0tMX01BWF9TUkNfVyA0MDk2Ci0jZGVmaW5l IFNLTF9NSU5fU1JDX0ggOAotI2RlZmluZSBTS0xfTUFYX1NSQ19IIDQwOTYKLSNkZWZpbmUgU0tM X01JTl9EU1RfVyA4Ci0jZGVmaW5lIFNLTF9NQVhfRFNUX1cgNDA5NgotI2RlZmluZSBTS0xfTUlO X0RTVF9IIDgKLSNkZWZpbmUgU0tMX01BWF9EU1RfSCA0MDk2Ci0jZGVmaW5lIElDTF9NQVhfU1JD X1cgNTEyMAotI2RlZmluZSBJQ0xfTUFYX1NSQ19IIDQwOTYKLSNkZWZpbmUgSUNMX01BWF9EU1Rf VyA1MTIwCi0jZGVmaW5lIElDTF9NQVhfRFNUX0ggNDA5NgotI2RlZmluZSBTS0xfTUlOX1lVVl80 MjBfU1JDX1cgMTYKLSNkZWZpbmUgU0tMX01JTl9ZVVZfNDIwX1NSQ19IIDE2Ci0KLXN0YXRpYyBp bnQKLXNrbF91cGRhdGVfc2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LCBib29sIGZvcmNlX2RldGFjaCwKLQkJICB1bnNpZ25lZCBpbnQgc2NhbGVyX3VzZXIsIGludCAq c2NhbGVyX2lkLAotCQkgIGludCBzcmNfdywgaW50IHNyY19oLCBpbnQgZHN0X3csIGludCBkc3Rf aCwKLQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Zvcm1hdF9pbmZvICpmb3JtYXQsCi0JCSAgdTY0IG1v ZGlmaWVyLCBib29sIG5lZWRfc2NhbGVyKQotewotCXN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9z dGF0ZSAqc2NhbGVyX3N0YXRlID0KLQkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9Ci0JCXRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ dWFwaS5jcnRjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGludGVsX2NydGMtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq YWRqdXN0ZWRfbW9kZSA9Ci0JCSZjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlOwotCi0JLyoK LQkgKiBTcmMgY29vcmRpbmF0ZXMgYXJlIGFscmVhZHkgcm90YXRlZCBieSAyNzAgZGVncmVlcyBm b3IKLQkgKiB0aGUgOTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAodG8gbWF0Y2gg dGhlCi0JICogR1RUIG1hcHBpbmcpLCBoZW5jZSBubyBuZWVkIHRvIGFjY291bnQgZm9yIHJvdGF0 aW9uIGhlcmUuCi0JICovCi0JaWYgKHNyY193ICE9IGRzdF93IHx8IHNyY19oICE9IGRzdF9oKQot CQluZWVkX3NjYWxlciA9IHRydWU7Ci0KLQkvKgotCSAqIFNjYWxpbmcvZml0dGluZyBub3Qgc3Vw cG9ydGVkIGluIElGLUlEIG1vZGUgaW4gR0VOOSsKLQkgKiBUT0RPOiBJbnRlcmxhY2UgZmV0Y2gg bW9kZSBkb2Vzbid0IHN1cHBvcnQgWVVWNDIwIHBsYW5hciBmb3JtYXRzLgotCSAqIE9uY2UgTlYx MiBpcyBlbmFibGVkLCBoYW5kbGUgaXQgaGVyZSB3aGlsZSBhbGxvY2F0aW5nIHNjYWxlcgotCSAq IGZvciBOVjEyLgotCSAqLwotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgY3J0Y19z dGF0ZS0+aHcuZW5hYmxlICYmCi0JICAgIG5lZWRfc2NhbGVyICYmIGFkanVzdGVkX21vZGUtPmZs YWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpIHsKLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2 LT5kcm0sCi0JCQkgICAgIlBpcGUvUGxhbmUgc2NhbGluZyBub3Qgc3VwcG9ydGVkIHdpdGggSUYt SUQgbW9kZVxuIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCS8qCi0JICogaWYgcGxhbmUg aXMgYmVpbmcgZGlzYWJsZWQgb3Igc2NhbGVyIGlzIG5vIG1vcmUgcmVxdWlyZWQgb3IgZm9yY2Ug ZGV0YWNoCi0JICogIC0gZnJlZSBzY2FsZXIgYmluZGVkIHRvIHRoaXMgcGxhbmUvY3J0YwotCSAq ICAtIGluIG9yZGVyIHRvIGRvIHRoaXMsIHVwZGF0ZSBjcnRjLT5zY2FsZXJfdXNhZ2UKLQkgKgot CSAqIEhlcmUgc2NhbGVyIHN0YXRlIGluIGNydGNfc3RhdGUgaXMgc2V0IGZyZWUgc28gdGhhdAot CSAqIHNjYWxlciBjYW4gYmUgYXNzaWduZWQgdG8gb3RoZXIgdXNlci4gQWN0dWFsIHJlZ2lzdGVy Ci0JICogdXBkYXRlIHRvIGZyZWUgdGhlIHNjYWxlciBpcyBkb25lIGluIHBsYW5lL3BhbmVsLWZp dCBwcm9ncmFtbWluZy4KLQkgKiBGb3IgdGhpcyBwdXJwb3NlIGNydGMvcGxhbmVfc3RhdGUtPnNj YWxlcl9pZCBpc24ndCByZXNldCBoZXJlLgotCSAqLwotCWlmIChmb3JjZV9kZXRhY2ggfHwgIW5l ZWRfc2NhbGVyKSB7Ci0JCWlmICgqc2NhbGVyX2lkID49IDApIHsKLQkJCXNjYWxlcl9zdGF0ZS0+ c2NhbGVyX3VzZXJzICY9IH4oMSA8PCBzY2FsZXJfdXNlcik7Ci0JCQlzY2FsZXJfc3RhdGUtPnNj YWxlcnNbKnNjYWxlcl9pZF0uaW5fdXNlID0gMDsKLQotCQkJZHJtX2RiZ19rbXMoJmRldl9wcml2 LT5kcm0sCi0JCQkJICAgICJzY2FsZXJfdXNlciBpbmRleCAldS4ldTogIgotCQkJCSAgICAiU3Rh Z2VkIGZyZWVpbmcgc2NhbGVyIGlkICVkIHNjYWxlcl91c2VycyA9IDB4JXhcbiIsCi0JCQkJICAg IGludGVsX2NydGMtPnBpcGUsIHNjYWxlcl91c2VyLCAqc2NhbGVyX2lkLAotCQkJCSAgICBzY2Fs ZXJfc3RhdGUtPnNjYWxlcl91c2Vycyk7Ci0JCQkqc2NhbGVyX2lkID0gLTE7Ci0JCX0KLQkJcmV0 dXJuIDA7Ci0JfQotCi0JaWYgKGZvcm1hdCAmJiBpbnRlbF9mb3JtYXRfaW5mb19pc195dXZfc2Vt aXBsYW5hcihmb3JtYXQsIG1vZGlmaWVyKSAmJgotCSAgICAoc3JjX2ggPCBTS0xfTUlOX1lVVl80 MjBfU1JDX0ggfHwgc3JjX3cgPCBTS0xfTUlOX1lVVl80MjBfU1JDX1cpKSB7Ci0JCWRybV9kYmdf a21zKCZkZXZfcHJpdi0+ZHJtLAotCQkJICAgICJQbGFuYXIgWVVWOiBzcmMgZGltZW5zaW9ucyBu b3QgbWV0XG4iKTsKLQkJcmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JLyogcmFuZ2UgY2hlY2tzICov Ci0JaWYgKHNyY193IDwgU0tMX01JTl9TUkNfVyB8fCBzcmNfaCA8IFNLTF9NSU5fU1JDX0ggfHwK LQkgICAgZHN0X3cgPCBTS0xfTUlOX0RTVF9XIHx8IGRzdF9oIDwgU0tMX01JTl9EU1RfSCB8fAot CSAgICAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAmJgotCSAgICAgKHNyY193ID4gSUNMX01B WF9TUkNfVyB8fCBzcmNfaCA+IElDTF9NQVhfU1JDX0ggfHwKLQkgICAgICBkc3RfdyA+IElDTF9N QVhfRFNUX1cgfHwgZHN0X2ggPiBJQ0xfTUFYX0RTVF9IKSkgfHwKLQkgICAgKElOVEVMX0dFTihk ZXZfcHJpdikgPCAxMSAmJgotCSAgICAgKHNyY193ID4gU0tMX01BWF9TUkNfVyB8fCBzcmNfaCA+ IFNLTF9NQVhfU1JDX0ggfHwKLQkgICAgICBkc3RfdyA+IFNLTF9NQVhfRFNUX1cgfHwgZHN0X2gg PiBTS0xfTUFYX0RTVF9IKSkpCXsKLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCi0JCQkg ICAgInNjYWxlcl91c2VyIGluZGV4ICV1LiV1OiBzcmMgJXV4JXUgZHN0ICV1eCV1ICIKLQkJCSAg ICAic2l6ZSBpcyBvdXQgb2Ygc2NhbGVyIHJhbmdlXG4iLAotCQkJICAgIGludGVsX2NydGMtPnBp cGUsIHNjYWxlcl91c2VyLCBzcmNfdywgc3JjX2gsCi0JCQkgICAgZHN0X3csIGRzdF9oKTsKLQkJ cmV0dXJuIC1FSU5WQUw7Ci0JfQotCi0JLyogbWFyayB0aGlzIHBsYW5lIGFzIGEgc2NhbGVyIHVz ZXIgaW4gY3J0Y19zdGF0ZSAqLwotCXNjYWxlcl9zdGF0ZS0+c2NhbGVyX3VzZXJzIHw9ICgxIDw8 IHNjYWxlcl91c2VyKTsKLQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwgInNjYWxlcl91c2Vy IGluZGV4ICV1LiV1OiAiCi0JCSAgICAic3RhZ2VkIHNjYWxpbmcgcmVxdWVzdCBmb3IgJXV4JXUt PiV1eCV1IHNjYWxlcl91c2VycyA9IDB4JXhcbiIsCi0JCSAgICBpbnRlbF9jcnRjLT5waXBlLCBz Y2FsZXJfdXNlciwgc3JjX3csIHNyY19oLCBkc3RfdywgZHN0X2gsCi0JCSAgICBzY2FsZXJfc3Rh dGUtPnNjYWxlcl91c2Vycyk7Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBza2xfdXBk YXRlX3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQotewot CWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpwaXBlX21vZGUgPSAmY3J0Y19zdGF0ZS0+ aHcucGlwZV9tb2RlOwotCWludCB3aWR0aCwgaGVpZ2h0OwotCi0JaWYgKGNydGNfc3RhdGUtPnBj aF9wZml0LmVuYWJsZWQpIHsKLQkJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmY3J0Y19zdGF0ZS0+ cGNoX3BmaXQuZHN0KTsKLQkJaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcnRjX3N0YXRlLT5w Y2hfcGZpdC5kc3QpOwotCX0gZWxzZSB7Ci0JCXdpZHRoID0gcGlwZV9tb2RlLT5jcnRjX2hkaXNw bGF5OwotCQloZWlnaHQgPSBwaXBlX21vZGUtPmNydGNfdmRpc3BsYXk7Ci0JfQotCXJldHVybiBz a2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCAhY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLAotCQkJ CSBTS0xfQ1JUQ19JTkRFWCwKLQkJCQkgJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2FsZXJf aWQsCi0JCQkJIGNydGNfc3RhdGUtPnBpcGVfc3JjX3csIGNydGNfc3RhdGUtPnBpcGVfc3JjX2gs Ci0JCQkJIHdpZHRoLCBoZWlnaHQsIE5VTEwsIDAsCi0JCQkJIGNydGNfc3RhdGUtPnBjaF9wZml0 LmVuYWJsZWQpOwotfQotCi0vKioKLSAqIHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lIC0gU3RhZ2Vz IHVwZGF0ZSB0byBzY2FsZXIgc3RhdGUgZm9yIGEgZ2l2ZW4gcGxhbmUuCi0gKiBAY3J0Y19zdGF0 ZTogY3J0YydzIHNjYWxlciBzdGF0ZQotICogQHBsYW5lX3N0YXRlOiBhdG9taWMgcGxhbmUgc3Rh dGUgdG8gdXBkYXRlCi0gKgotICogUmV0dXJuCi0gKiAgICAgMCAtIHNjYWxlcl91c2FnZSB1cGRh dGVkIHN1Y2Nlc3NmdWxseQotICogICAgZXJyb3IgLSByZXF1ZXN0ZWQgc2NhbGluZyBjYW5ub3Qg YmUgc3VwcG9ydGVkIG9yIG90aGVyIGVycm9yIGNvbmRpdGlvbgotICovCi1zdGF0aWMgaW50IHNr bF91cGRhdGVfc2NhbGVyX3BsYW5lKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAotCQkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCi17Ci0Jc3Ry dWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9Ci0JCXRvX2ludGVsX3BsYW5lKHBsYW5lX3N0 YXRlLT51YXBpLnBsYW5lKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGludGVsX3BsYW5lLT5iYXNlLmRldik7Ci0Jc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAq ZmIgPSBwbGFuZV9zdGF0ZS0+aHcuZmI7Ci0JaW50IHJldDsKLQlib29sIGZvcmNlX2RldGFjaCA9 ICFmYiB8fCAhcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZTsKLQlib29sIG5lZWRfc2NhbGVyID0g ZmFsc2U7Ci0KLQkvKiBQcmUtZ2VuMTEgYW5kIFNEUiBwbGFuZXMgYWx3YXlzIG5lZWQgYSBzY2Fs ZXIgZm9yIHBsYW5hciBmb3JtYXRzLiAqLwotCWlmICghaWNsX2lzX2hkcl9wbGFuZShkZXZfcHJp diwgaW50ZWxfcGxhbmUtPmlkKSAmJgotCSAgICBmYiAmJiBpbnRlbF9mb3JtYXRfaW5mb19pc195 dXZfc2VtaXBsYW5hcihmYi0+Zm9ybWF0LCBmYi0+bW9kaWZpZXIpKQotCQluZWVkX3NjYWxlciA9 IHRydWU7Ci0KLQlyZXQgPSBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCBmb3JjZV9kZXRh Y2gsCi0JCQkJZHJtX3BsYW5lX2luZGV4KCZpbnRlbF9wbGFuZS0+YmFzZSksCi0JCQkJJnBsYW5l X3N0YXRlLT5zY2FsZXJfaWQsCi0JCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBp LnNyYykgPj4gMTYsCi0JCQkJZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5zcmMp ID4+IDE2LAotCQkJCWRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAotCQkJ CWRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KSwKLQkJCQlmYiA/IGZiLT5m b3JtYXQgOiBOVUxMLAotCQkJCWZiID8gZmItPm1vZGlmaWVyIDogMCwKLQkJCQluZWVkX3NjYWxl cik7Ci0KLQlpZiAocmV0IHx8IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPCAwKQotCQlyZXR1cm4g cmV0OwotCi0JLyogY2hlY2sgY29sb3JrZXkgKi8KLQlpZiAocGxhbmVfc3RhdGUtPmNrZXkuZmxh Z3MpIHsKLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sCi0JCQkgICAgIltQTEFORTolZDol c10gc2NhbGluZyB3aXRoIGNvbG9yIGtleSBub3QgYWxsb3dlZCIsCi0JCQkgICAgaW50ZWxfcGxh bmUtPmJhc2UuYmFzZS5pZCwKLQkJCSAgICBpbnRlbF9wbGFuZS0+YmFzZS5uYW1lKTsKLQkJcmV0 dXJuIC1FSU5WQUw7Ci0JfQotCi0JLyogQ2hlY2sgc3JjIGZvcm1hdCAqLwotCXN3aXRjaCAoZmIt PmZvcm1hdC0+Zm9ybWF0KSB7Ci0JY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKLQljYXNlIERSTV9G T1JNQVRfWEJHUjg4ODg6Ci0JY2FzZSBEUk1fRk9STUFUX1hSR0I4ODg4OgotCWNhc2UgRFJNX0ZP Uk1BVF9BQkdSODg4ODoKLQljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6Ci0JY2FzZSBEUk1fRk9S TUFUX1hSR0IyMTAxMDEwOgotCWNhc2UgRFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKLQljYXNlIERS TV9GT1JNQVRfQVJHQjIxMDEwMTA6Ci0JY2FzZSBEUk1fRk9STUFUX0FCR1IyMTAxMDEwOgotCWNh c2UgRFJNX0ZPUk1BVF9ZVVlWOgotCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgotCWNhc2UgRFJNX0ZP Uk1BVF9VWVZZOgotCWNhc2UgRFJNX0ZPUk1BVF9WWVVZOgotCWNhc2UgRFJNX0ZPUk1BVF9OVjEy OgotCWNhc2UgRFJNX0ZPUk1BVF9YWVVWODg4ODoKLQljYXNlIERSTV9GT1JNQVRfUDAxMDoKLQlj YXNlIERSTV9GT1JNQVRfUDAxMjoKLQljYXNlIERSTV9GT1JNQVRfUDAxNjoKLQljYXNlIERSTV9G T1JNQVRfWTIxMDoKLQljYXNlIERSTV9GT1JNQVRfWTIxMjoKLQljYXNlIERSTV9GT1JNQVRfWTIx NjoKLQljYXNlIERSTV9GT1JNQVRfWFZZVTIxMDEwMTA6Ci0JY2FzZSBEUk1fRk9STUFUX1hWWVUx Ml8xNjE2MTYxNjoKLQljYXNlIERSTV9GT1JNQVRfWFZZVTE2MTYxNjE2OgotCQlicmVhazsKLQlj YXNlIERSTV9GT1JNQVRfWEJHUjE2MTYxNjE2RjoKLQljYXNlIERSTV9GT1JNQVRfQUJHUjE2MTYx NjE2RjoKLQljYXNlIERSTV9GT1JNQVRfWFJHQjE2MTYxNjE2RjoKLQljYXNlIERSTV9GT1JNQVRf QVJHQjE2MTYxNjE2RjoKLQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCi0JCQlicmVh azsKLQkJZmFsbHRocm91Z2g7Ci0JZGVmYXVsdDoKLQkJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5k cm0sCi0JCQkgICAgIltQTEFORTolZDolc10gRkI6JWQgdW5zdXBwb3J0ZWQgc2NhbGluZyBmb3Jt YXQgMHgleFxuIiwKLQkJCSAgICBpbnRlbF9wbGFuZS0+YmFzZS5iYXNlLmlkLCBpbnRlbF9wbGFu ZS0+YmFzZS5uYW1lLAotCQkJICAgIGZiLT5iYXNlLmlkLCBmYi0+Zm9ybWF0LT5mb3JtYXQpOwot CQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0KLQlyZXR1cm4gMDsKLX0KLQotdm9pZCBza2xfc2NhbGVy X2Rpc2FibGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQot ewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhvbGRfY3J0Y19zdGF0 ZS0+dWFwaS5jcnRjKTsKLQlpbnQgaTsKLQotCWZvciAoaSA9IDA7IGkgPCBjcnRjLT5udW1fc2Nh bGVyczsgaSsrKQotCQlza2xfZGV0YWNoX3NjYWxlcihjcnRjLCBpKTsKLX0KLQotc3RhdGljIGlu dCBjbmxfY29lZl90YXAoaW50IGkpCi17Ci0JcmV0dXJuIGkgJSA3OwotfQotCi1zdGF0aWMgdTE2 IGNubF9uZWFyZXN0X2ZpbHRlcl9jb2VmKGludCB0KQotewotCXJldHVybiB0ID09IDMgPyAweDA4 MDAgOiAweDMwMDA7Ci19Ci0KLS8qCi0gKiAgVGhlb3J5IGJlaGluZCBzZXR0aW5nIG5lYXJlc3Qt bmVpZ2hib3IgaW50ZWdlciBzY2FsaW5nOgotICoKLSAqICAxNyBwaGFzZSBvZiA3IHRhcHMgcmVx dWlyZXMgMTE5IGNvZWZmaWNpZW50cyBpbiA2MCBkd29yZHMgcGVyIHNldC4KLSAqICBUaGUgbGV0 dGVyIHJlcHJlc2VudHMgdGhlIGZpbHRlciB0YXAgKEQgaXMgdGhlIGNlbnRlciB0YXApIGFuZCB0 aGUgbnVtYmVyCi0gKiAgcmVwcmVzZW50cyB0aGUgY29lZmZpY2llbnQgc2V0IGZvciBhIHBoYXNl ICgwLTE2KS4KLSAqCi0gKiAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAqICAgICAgICAgfEluZGV4IHZhbHVl IHwgRGF0YSB2YWx1ZSBjb2VmZmllbnQgMSB8IERhdGEgdmFsdWUgY29lZmZpZW50IDIgfAotICog ICAgICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCi0gKiAgICAgICAgIHwgICAwMGggICAgICB8ICAgICAgICAgIEIwICAg ICAgICAgICAgfCAgICAgICAgICBBMCAgICAgICAgICAgIHwKLSAqICAgICAgICAgKy0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot ICogICAgICAgICB8ICAgMDFoICAgICAgfCAgICAgICAgICBEMCAgICAgICAgICAgIHwgICAgICAg ICAgQzAgICAgICAgICAgICB8Ci0gKiAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAqICAgICAgICAgfCAgIDAy aCAgICAgIHwgICAgICAgICAgRjAgICAgICAgICAgICB8ICAgICAgICAgIEUwICAgICAgICAgICAg fAotICogICAgICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gKiAgICAgICAgIHwgICAwM2ggICAgICB8ICAgICAgICAg IEExICAgICAgICAgICAgfCAgICAgICAgICBHMCAgICAgICAgICAgIHwKLSAqICAgICAgICAgKy0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwotICogICAgICAgICB8ICAgMDRoICAgICAgfCAgICAgICAgICBDMSAgICAgICAgICAgIHwg ICAgICAgICAgQjEgICAgICAgICAgICB8Ci0gKiAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAqICAgICAgICAg fCAgIC4uLiAgICAgIHwgICAgICAgICAgLi4uICAgICAgICAgICB8ICAgICAgICAgIC4uLiAgICAg ICAgICAgfAotICogICAgICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gKiAgICAgICAgIHwgICAzOGggICAgICB8ICAg ICAgICAgIEIxNiAgICAgICAgICAgfCAgICAgICAgICBBMTYgICAgICAgICAgIHwKLSAqICAgICAg ICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKwotICogICAgICAgICB8ICAgMzloICAgICAgfCAgICAgICAgICBEMTYgICAgICAg ICAgIHwgICAgICAgICAgQzE2ICAgICAgICAgICB8Ci0gKiAgICAgICAgICstLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAqICAg ICAgICAgfCAgIDNBaCAgICAgIHwgICAgICAgICAgRjE2ICAgICAgICAgICB8ICAgICAgICAgIEMx NiAgICAgICAgICAgfAotICogICAgICAgICArLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gKiAgICAgICAgIHwgICAzQmggICAg ICB8ICAgICAgICBSZXNlcnZlZCAgICAgICAgfCAgICAgICAgICBHMTYgICAgICAgICAgIHwKLSAq ICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKwotICoKLSAqICBUbyBlbmFibGUgbmVhcmVzdC1uZWlnaGJvciBzY2Fs aW5nOiAgcHJvZ3JhbSBzY2FsZXIgY29lZmZpY2VudHMgd2l0aAotICogIHRoZSBjZW50ZXIgdGFw IChEeHgpIHZhbHVlcyBzZXQgdG8gMSBhbmQgYWxsIG90aGVyIHZhbHVlcyBzZXQgdG8gMCBhcyBw ZXIKLSAqICBTQ0FMRVJfQ09FRkZJQ0lFTlRfRk9STUFUCi0gKgotICovCi0KLXN0YXRpYyB2b2lk IGNubF9wcm9ncmFtX25lYXJlc3RfZmlsdGVyX2NvZWZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKLQkJCQkJICAgICBlbnVtIHBpcGUgcGlwZSwgaW50IGlkLCBpbnQgc2V0KQot ewotCWludCBpOwotCi0JaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIENOTF9QU19DT0VGX0lO REVYX1NFVChwaXBlLCBpZCwgc2V0KSwKLQkJCSAgUFNfQ09FRV9JTkRFWF9BVVRPX0lOQyk7Ci0K LQlmb3IgKGkgPSAwOyBpIDwgMTcgKiA3OyBpICs9IDIpIHsKLQkJdTMyIHRtcDsKLQkJaW50IHQ7 Ci0KLQkJdCA9IGNubF9jb2VmX3RhcChpKTsKLQkJdG1wID0gY25sX25lYXJlc3RfZmlsdGVyX2Nv ZWYodCk7Ci0KLQkJdCA9IGNubF9jb2VmX3RhcChpICsgMSk7Ci0JCXRtcCB8PSBjbmxfbmVhcmVz dF9maWx0ZXJfY29lZih0KSA8PCAxNjsKLQotCQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwg Q05MX1BTX0NPRUZfREFUQV9TRVQocGlwZSwgaWQsIHNldCksCi0JCQkJICB0bXApOwotCX0KLQot CWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBDTkxfUFNfQ09FRl9JTkRFWF9TRVQocGlwZSwg aWQsIHNldCksIDApOwotfQotCi11MzIgc2tsX3NjYWxlcl9nZXRfZmlsdGVyX3NlbGVjdChlbnVt IGRybV9zY2FsaW5nX2ZpbHRlciBmaWx0ZXIsIGludCBzZXQpCi17Ci0JaWYgKGZpbHRlciA9PSBE Uk1fU0NBTElOR19GSUxURVJfTkVBUkVTVF9ORUlHSEJPUikgewotCQlyZXR1cm4gKFBTX0ZJTFRF Ul9QUk9HUkFNTUVEIHwKLQkJCVBTX1lfVkVSVF9GSUxURVJfU0VMRUNUKHNldCkgfAotCQkJUFNf WV9IT1JaX0ZJTFRFUl9TRUxFQ1Qoc2V0KSB8Ci0JCQlQU19VVl9WRVJUX0ZJTFRFUl9TRUxFQ1Qo c2V0KSB8Ci0JCQlQU19VVl9IT1JaX0ZJTFRFUl9TRUxFQ1Qoc2V0KSk7Ci0JfQotCi0JcmV0dXJu IFBTX0ZJTFRFUl9NRURJVU07Ci19Ci0KLXZvaWQgc2tsX3NjYWxlcl9zZXR1cF9maWx0ZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBpcGUgcGlwZSwKLQkJCSAgICAg aW50IGlkLCBpbnQgc2V0LCBlbnVtIGRybV9zY2FsaW5nX2ZpbHRlciBmaWx0ZXIpCi17Ci0Jc3dp dGNoIChmaWx0ZXIpIHsKLQljYXNlIERSTV9TQ0FMSU5HX0ZJTFRFUl9ERUZBVUxUOgotCQlicmVh azsKLQljYXNlIERSTV9TQ0FMSU5HX0ZJTFRFUl9ORUFSRVNUX05FSUdIQk9SOgotCQljbmxfcHJv Z3JhbV9uZWFyZXN0X2ZpbHRlcl9jb2VmcyhkZXZfcHJpdiwgcGlwZSwgaWQsIHNldCk7Ci0JCWJy ZWFrOwotCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShmaWx0ZXIpOwotCX0KLX0KLQotc3RhdGlj IHZvaWQgc2tsX3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQotewotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT51YXBpLmNydGMpOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxl cl9zdGF0ZSAqc2NhbGVyX3N0YXRlID0KLQkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKLQlz dHJ1Y3QgZHJtX3JlY3Qgc3JjID0gewotCQkueDIgPSBjcnRjX3N0YXRlLT5waXBlX3NyY193IDw8 IDE2LAotCQkueTIgPSBjcnRjX3N0YXRlLT5waXBlX3NyY19oIDw8IDE2LAotCX07Ci0JY29uc3Qg c3RydWN0IGRybV9yZWN0ICpkc3QgPSAmY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZHN0OwotCXUxNiB1 dl9yZ2JfaHBoYXNlLCB1dl9yZ2JfdnBoYXNlOwotCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKLQlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aChkc3QpOwotCWludCBoZWlnaHQgPSBkcm1f cmVjdF9oZWlnaHQoZHN0KTsKLQlpbnQgeCA9IGRzdC0+eDE7Ci0JaW50IHkgPSBkc3QtPnkxOwot CWludCBoc2NhbGUsIHZzY2FsZTsKLQl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwotCWludCBpZDsK LQl1MzIgcHNfY3RybDsKLQotCWlmICghY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkKLQkJ cmV0dXJuOwotCi0JaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLAotCQkJY3J0Y19zdGF0 ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCA8IDApKQotCQlyZXR1cm47Ci0KLQloc2NhbGUgPSBk cm1fcmVjdF9jYWxjX2hzY2FsZSgmc3JjLCBkc3QsIDAsIElOVF9NQVgpOwotCXZzY2FsZSA9IGRy bV9yZWN0X2NhbGNfdnNjYWxlKCZzcmMsIGRzdCwgMCwgSU5UX01BWCk7Ci0KLQl1dl9yZ2JfaHBo YXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDEsIGhzY2FsZSwgZmFsc2UpOwotCXV2X3JnYl92 cGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgdnNjYWxlLCBmYWxzZSk7Ci0KLQlpZCA9 IHNjYWxlcl9zdGF0ZS0+c2NhbGVyX2lkOwotCi0JcHNfY3RybCA9IHNrbF9zY2FsZXJfZ2V0X2Zp bHRlcl9zZWxlY3QoY3J0Y19zdGF0ZS0+aHcuc2NhbGluZ19maWx0ZXIsIDApOwotCXBzX2N0cmwg fD0gIFBTX1NDQUxFUl9FTiB8IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpZF0ubW9kZTsKLQotCXNw aW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKLQotCXNr bF9zY2FsZXJfc2V0dXBfZmlsdGVyKGRldl9wcml2LCBwaXBlLCBpZCwgMCwKLQkJCQljcnRjX3N0 YXRlLT5ody5zY2FsaW5nX2ZpbHRlcik7Ci0KLQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwg U0tMX1BTX0NUUkwocGlwZSwgaWQpLCBwc19jdHJsKTsKLQotCWludGVsX2RlX3dyaXRlX2Z3KGRl dl9wcml2LCBTS0xfUFNfVlBIQVNFKHBpcGUsIGlkKSwKLQkJCSAgUFNfWV9QSEFTRSgwKSB8IFBT X1VWX1JHQl9QSEFTRSh1dl9yZ2JfdnBoYXNlKSk7Ci0JaW50ZWxfZGVfd3JpdGVfZncoZGV2X3By aXYsIFNLTF9QU19IUEhBU0UocGlwZSwgaWQpLAotCQkJICBQU19ZX1BIQVNFKDApIHwgUFNfVVZf UkdCX1BIQVNFKHV2X3JnYl9ocGhhc2UpKTsKLQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwg U0tMX1BTX1dJTl9QT1MocGlwZSwgaWQpLAotCQkJICB4IDw8IDE2IHwgeSk7Ci0JaW50ZWxfZGVf d3JpdGVfZncoZGV2X3ByaXYsIFNLTF9QU19XSU5fU1oocGlwZSwgaWQpLAotCQkJICB3aWR0aCA8 PCAxNiB8IGhlaWdodCk7Ci0KLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5j b3JlLmxvY2ssIGlycWZsYWdzKTsKLX0KLQogc3RhdGljIHZvaWQgaWxrX3BmaXRfZW5hYmxlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT51YXBpLmNydGMpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaAppbmRleCBjODBlNWEz MzU2ZWYuLmUzNzU3ZWNhYmJmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kaXNwbGF5LmgKQEAgLTYxOCwxMiArNjE4LDYgQEAgZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbgogaW50ZWxfbGVnYWN5X2F1eF90b19wb3dlcl9kb21haW4oZW51bSBhdXhfY2gg YXV4X2NoKTsKIHZvaWQgaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1bihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKIAkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsK LQotdTE2IHNrbF9zY2FsZXJfY2FsY19waGFzZShpbnQgc3ViLCBpbnQgc2NhbGUsIGJvb2wgY2hy b21hX2NlbnRlcik7Ci12b2lkIHNrbF9zY2FsZXJfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpOwotdTMyIHNrbF9zY2FsZXJfZ2V0X2ZpbHRlcl9z ZWxlY3QoZW51bSBkcm1fc2NhbGluZ19maWx0ZXIgZmlsdGVyLCBpbnQgc2V0KTsKLXZvaWQgc2ts X3NjYWxlcl9zZXR1cF9maWx0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBl bnVtIHBpcGUgcGlwZSwKLQkJCSAgICAgaW50IGlkLCBpbnQgc2V0LCBlbnVtIGRybV9zY2FsaW5n X2ZpbHRlciBmaWx0ZXIpOwogdm9pZCBpbGtfcGZpdF9kaXNhYmxlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSk7CiAKIGludCBiZHdfZ2V0X3BpcGVtaXNjX2Jw cChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kcF9tc3QuYwppbmRleCBiNDYyMWVkMDEyN2UuLjhlMzE2MTQ2YjZkMSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5jCkBAIC0zOSw2ICszOSw3 IEBACiAjaW5jbHVkZSAiaW50ZWxfZHBfbXN0LmgiCiAjaW5jbHVkZSAiaW50ZWxfZHBpb19waHku aCIKICNpbmNsdWRlICJpbnRlbF9oZGNwLmgiCisjaW5jbHVkZSAic2tsX3NjYWxlci5oIgogCiBz dGF0aWMgaW50IGludGVsX2RwX21zdF9jb21wdXRlX2xpbmtfY29uZmlnKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAogCQkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX3Nw cml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYwppbmRl eCA0NmZjYjViOTk4M2YuLjRjYmRiOGZkNGJiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX3Nwcml0ZS5jCkBAIC0xMzgsNjggKzEzOCw2IEBAIGludCBpbnRlbF9wbGFu ZV9jaGVja19zcmNfY29vcmRpbmF0ZXMoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIAlyZXR1cm4gMDsKIH0KIAotdm9pZAotc2tsX3Byb2dyYW1fc2NhbGVyKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCi0JCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAotCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0 YXRlKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxh bmUtPmJhc2UuZGV2KTsKLQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l X3N0YXRlLT5ody5mYjsKLQllbnVtIHBpcGUgcGlwZSA9IHBsYW5lLT5waXBlOwotCWludCBzY2Fs ZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9zY2Fs ZXIgKnNjYWxlciA9Ci0JCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3RhdGUuc2NhbGVyc1tzY2FsZXJf aWRdOwotCWludCBjcnRjX3ggPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7Ci0JaW50IGNydGNf eSA9IHBsYW5lX3N0YXRlLT51YXBpLmRzdC55MTsKLQl1MzIgY3J0Y193ID0gZHJtX3JlY3Rfd2lk dGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7Ci0JdTMyIGNydGNfaCA9IGRybV9yZWN0X2hlaWdo dCgmcGxhbmVfc3RhdGUtPnVhcGkuZHN0KTsKLQl1MTYgeV9ocGhhc2UsIHV2X3JnYl9ocGhhc2U7 Ci0JdTE2IHlfdnBoYXNlLCB1dl9yZ2JfdnBoYXNlOwotCWludCBoc2NhbGUsIHZzY2FsZTsKLQl1 MzIgcHNfY3RybDsKLQotCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKCZwbGFuZV9zdGF0 ZS0+dWFwaS5zcmMsCi0JCQkJICAgICAgJnBsYW5lX3N0YXRlLT51YXBpLmRzdCwKLQkJCQkgICAg ICAwLCBJTlRfTUFYKTsKLQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZSgmcGxhbmVfc3Rh dGUtPnVhcGkuc3JjLAotCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCi0JCQkJICAg ICAgMCwgSU5UX01BWCk7Ci0KLQkvKiBUT0RPOiBoYW5kbGUgc3ViLXBpeGVsIGNvb3JkaW5hdGVz ICovCi0JaWYgKGludGVsX2Zvcm1hdF9pbmZvX2lzX3l1dl9zZW1pcGxhbmFyKGZiLT5mb3JtYXQs IGZiLT5tb2RpZmllcikgJiYKLQkgICAgIWljbF9pc19oZHJfcGxhbmUoZGV2X3ByaXYsIHBsYW5l LT5pZCkpIHsKLQkJeV9ocGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgaHNjYWxlLCBm YWxzZSk7Ci0JCXlfdnBoYXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDEsIHZzY2FsZSwgZmFs c2UpOwotCi0JCS8qIE1QRUcyIGNocm9tYSBzaXRpbmcgY29udmVudGlvbiAqLwotCQl1dl9yZ2Jf aHBoYXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDIsIGhzY2FsZSwgdHJ1ZSk7Ci0JCXV2X3Jn Yl92cGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMiwgdnNjYWxlLCBmYWxzZSk7Ci0JfSBl bHNlIHsKLQkJLyogbm90IHVzZWQgKi8KLQkJeV9ocGhhc2UgPSAwOwotCQl5X3ZwaGFzZSA9IDA7 Ci0KLQkJdXZfcmdiX2hwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgxLCBoc2NhbGUsIGZh bHNlKTsKLQkJdXZfcmdiX3ZwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgxLCB2c2NhbGUs IGZhbHNlKTsKLQl9Ci0KLQlwc19jdHJsID0gc2tsX3NjYWxlcl9nZXRfZmlsdGVyX3NlbGVjdChw bGFuZV9zdGF0ZS0+aHcuc2NhbGluZ19maWx0ZXIsIDApOwotCXBzX2N0cmwgfD0gUFNfU0NBTEVS X0VOIHwgUFNfUExBTkVfU0VMKHBsYW5lLT5pZCkgfCBzY2FsZXItPm1vZGU7Ci0KLQlza2xfc2Nh bGVyX3NldHVwX2ZpbHRlcihkZXZfcHJpdiwgcGlwZSwgc2NhbGVyX2lkLCAwLAotCQkJCXBsYW5l X3N0YXRlLT5ody5zY2FsaW5nX2ZpbHRlcik7Ci0KLQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJp diwgU0tMX1BTX0NUUkwocGlwZSwgc2NhbGVyX2lkKSwgcHNfY3RybCk7Ci0JaW50ZWxfZGVfd3Jp dGVfZncoZGV2X3ByaXYsIFNLTF9QU19WUEhBU0UocGlwZSwgc2NhbGVyX2lkKSwKLQkJCSAgUFNf WV9QSEFTRSh5X3ZwaGFzZSkgfCBQU19VVl9SR0JfUEhBU0UodXZfcmdiX3ZwaGFzZSkpOwotCWlu dGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfSFBIQVNFKHBpcGUsIHNjYWxlcl9pZCks Ci0JCQkgIFBTX1lfUEhBU0UoeV9ocGhhc2UpIHwgUFNfVVZfUkdCX1BIQVNFKHV2X3JnYl9ocGhh c2UpKTsKLQlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX1dJTl9QT1MocGlwZSwg c2NhbGVyX2lkKSwKLQkJCSAgKGNydGNfeCA8PCAxNikgfCBjcnRjX3kpOwotCWludGVsX2RlX3dy aXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfV0lOX1NaKHBpcGUsIHNjYWxlcl9pZCksCi0JCQkgIChj cnRjX3cgPDwgMTYpIHwgY3J0Y19oKTsKLX0KLQogc3RhdGljIHZvaWQgaTl4eF9wbGFuZV9saW5l YXJfZ2FtbWEodTE2IGdhbW1hWzhdKQogewogCS8qIFRoZSBwb2ludHMgYXJlIG5vdCBldmVubHkg c3BhY2VkLiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9zcHJpdGUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmgK aW5kZXggNDE4ODk3Zjk1M2ZjLi5mNjk4OWRhMmRjNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfc3ByaXRlLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9zcHJpdGUuaApAQCAtNDUsMTAgKzQ1LDYgQEAgc3RhdGljIGlubGlu ZSB1OCBpY2xfaGRyX3BsYW5lX21hc2sodm9pZCkKIAkJQklUKFBMQU5FX1NQUklURTApIHwgQklU KFBMQU5FX1NQUklURTEpOwogfQogCi1ib29sIGljbF9pc19udjEyX3lfcGxhbmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJIGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpOwot Ym9vbCBpY2xfaXNfaGRyX3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwbGFuZV9pZCBwbGFuZV9pZCk7Ci0KIGludCBpdmJfcGxhbmVfbWluX2NkY2xrKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CiBpbnQgaHN3X3BsYW5lX21pbl9jZGNsayhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKQEAgLTU2LDcgKzUyLDQg QEAgaW50IGhzd19wbGFuZV9taW5fY2RjbGsoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiBpbnQgdmx2X3BsYW5lX21pbl9jZGNsayhjb25zdCBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqcGxhbmVfc3RhdGUpOwogCi12b2lkIHNrbF9wcm9ncmFtX3NjYWxlcihzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lLAotCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3Rh dGUsCi0JCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKICNl bmRpZiAvKiBfX0lOVEVMX1NQUklURV9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2Rpc3BsYXkvc2tsX3NjYWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9za2xfc2NhbGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5i MzdhODdiYjE5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L3NrbF9zY2FsZXIuYwpAQCAtMCwwICsxLDU1NiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisg Ki8KKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5X3R5cGVzLmgiCisjaW5jbHVkZSAic2tsX3NjYWxl ci5oIgorI2luY2x1ZGUgInNrbF91bml2ZXJzYWxfcGxhbmUuaCIKKworLyoKKyAqIFRoZSBoYXJk d2FyZSBwaGFzZSAwLjAgcmVmZXJzIHRvIHRoZSBjZW50ZXIgb2YgdGhlIHBpeGVsLgorICogV2Ug d2FudCB0byBzdGFydCBmcm9tIHRoZSB0b3AvbGVmdCBlZGdlIHdoaWNoIGlzIHBoYXNlCisgKiAt MC41LiBUaGF0IG1hdGNoZXMgaG93IHRoZSBoYXJkd2FyZSBjYWxjdWxhdGVzIHRoZSBzY2FsaW5n CisgKiBmYWN0b3JzIChmcm9tIHRvcC1sZWZ0IG9mIHRoZSBmaXJzdCBwaXhlbCB0byBib3R0b20t cmlnaHQKKyAqIG9mIHRoZSBsYXN0IHBpeGVsLCBhcyBvcHBvc2VkIHRvIHRoZSBwaXhlbCBjZW50 ZXJzKS4KKyAqCisgKiBGb3IgNDoyOjAgc3Vic2FtcGxlZCBjaHJvbWEgcGxhbmVzIHdlIG9idmlv dXNseSBoYXZlIHRvCisgKiBhZGp1c3QgdGhhdCBzbyB0aGF0IHRoZSBjaHJvbWEgc2FtcGxlIHBv c2l0aW9uIGxhbmRzIGluCisgKiB0aGUgcmlnaHQgc3BvdC4KKyAqCisgKiBOb3RlIHRoYXQgZm9y IHBhY2tlZCBZQ2JDciA0OjI6MiBmb3JtYXRzIHRoZXJlIGlzIG5vIHdheSB0bworICogY29udHJv bCBjaHJvbWEgc2l0aW5nLiBUaGUgaGFyZHdhcmUgc2ltcGx5IHJlcGxpY2F0ZXMgdGhlCisgKiBj aHJvbWEgc2FtcGxlcyBmb3IgYm90aCBvZiB0aGUgbHVtYSBzYW1wbGVzLCBhbmQgdGh1cyB3ZSBk b24ndAorICogYWN0dWFsbHkgZ2V0IHRoZSBleHBlY3RlZCBNUEVHMiBjaHJvbWEgc2l0aW5nIGNv bnZlbnRpb24gOigKKyAqIFRoZSBzYW1lIGJlaGF2aW91ciBpcyBvYnNlcnZlZCBvbiBwcmUtU0tM IHBsYXRmb3JtcyBhcyB3ZWxsLgorICoKKyAqIFRoZW9yeSBiZWhpbmQgdGhlIGZvcm11bGEgKG5v dGUgdGhhdCB3ZSBpZ25vcmUgc3ViLXBpeGVsCisgKiBzb3VyY2UgY29vcmRpbmF0ZXMpOgorICog cyA9IHNvdXJjZSBzYW1wbGUgcG9zaXRpb24KKyAqIGQgPSBkZXN0aW5hdGlvbiBzYW1wbGUgcG9z aXRpb24KKyAqCisgKiBEb3duc2NhbGluZyA0OjE6CisgKiAtMC41CisgKiB8IDAuMAorICogfCB8 ICAgICAxLjUgKGluaXRpYWwgcGhhc2UpCisgKiB8IHwgICAgIHwKKyAqIHYgdiAgICAgdgorICog fCBzIHwgcyB8IHMgfCBzIHwKKyAqIHwgICAgICAgZCAgICAgICB8CisgKgorICogVXBzY2FsaW5n IDE6NDoKKyAqIC0wLjUKKyAqIHwgLTAuMzc1IChpbml0aWFsIHBoYXNlKQorICogfCB8ICAgICAw LjAKKyAqIHwgfCAgICAgfAorICogdiB2ICAgICB2CisgKiB8ICAgICAgIHMgICAgICAgfAorICog fCBkIHwgZCB8IGQgfCBkIHwKKyAqLworc3RhdGljIHUxNiBza2xfc2NhbGVyX2NhbGNfcGhhc2Uo aW50IHN1YiwgaW50IHNjYWxlLCBib29sIGNocm9tYV9jb3NpdGVkKQoreworCWludCBwaGFzZSA9 IC0weDgwMDA7CisJdTE2IHRyaXAgPSAwOworCisJaWYgKGNocm9tYV9jb3NpdGVkKQorCQlwaGFz ZSArPSAoc3ViIC0gMSkgKiAweDgwMDAgLyBzdWI7CisKKwlwaGFzZSArPSBzY2FsZSAvICgyICog c3ViKTsKKworCS8qCisJICogSGFyZHdhcmUgaW5pdGlhbCBwaGFzZSBsaW1pdGVkIHRvIFstMC41 OjEuNV0uCisJICogU2luY2UgdGhlIG1heCBoYXJkd2FyZSBzY2FsZSBmYWN0b3IgaXMgMy4wLCB3 ZQorCSAqIHNob3VsZCBuZXZlciBhY3R1YWxseSBleGNkZWVkIDEuMCBoZXJlLgorCSAqLworCVdB Uk5fT04ocGhhc2UgPCAtMHg4MDAwIHx8IHBoYXNlID4gMHgxODAwMCk7CisKKwlpZiAocGhhc2Ug PCAwKQorCQlwaGFzZSA9IDB4MTAwMDAgKyBwaGFzZTsKKwllbHNlCisJCXRyaXAgPSBQU19QSEFT RV9UUklQOworCisJcmV0dXJuICgocGhhc2UgPj4gMikgJiBQU19QSEFTRV9NQVNLKSB8IHRyaXA7 Cit9CisKKyNkZWZpbmUgU0tMX01JTl9TUkNfVyA4CisjZGVmaW5lIFNLTF9NQVhfU1JDX1cgNDA5 NgorI2RlZmluZSBTS0xfTUlOX1NSQ19IIDgKKyNkZWZpbmUgU0tMX01BWF9TUkNfSCA0MDk2Cisj ZGVmaW5lIFNLTF9NSU5fRFNUX1cgOAorI2RlZmluZSBTS0xfTUFYX0RTVF9XIDQwOTYKKyNkZWZp bmUgU0tMX01JTl9EU1RfSCA4CisjZGVmaW5lIFNLTF9NQVhfRFNUX0ggNDA5NgorI2RlZmluZSBJ Q0xfTUFYX1NSQ19XIDUxMjAKKyNkZWZpbmUgSUNMX01BWF9TUkNfSCA0MDk2CisjZGVmaW5lIElD TF9NQVhfRFNUX1cgNTEyMAorI2RlZmluZSBJQ0xfTUFYX0RTVF9IIDQwOTYKKyNkZWZpbmUgU0tM X01JTl9ZVVZfNDIwX1NSQ19XIDE2CisjZGVmaW5lIFNLTF9NSU5fWVVWXzQyMF9TUkNfSCAxNgor CitzdGF0aWMgaW50Citza2xfdXBkYXRlX3NjYWxlcihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwgYm9vbCBmb3JjZV9kZXRhY2gsCisJCSAgdW5zaWduZWQgaW50IHNjYWxlcl91 c2VyLCBpbnQgKnNjYWxlcl9pZCwKKwkJICBpbnQgc3JjX3csIGludCBzcmNfaCwgaW50IGRzdF93 LCBpbnQgZHN0X2gsCisJCSAgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZm9ybWF0LAor CQkgIHU2NCBtb2RpZmllciwgYm9vbCBuZWVkX3NjYWxlcikKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZSA9CisJCSZjcnRjX3N0YXRlLT5zY2FsZXJfc3Rh dGU7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPQorCQl0b19pbnRlbF9jcnRjKGNy dGNfc3RhdGUtPnVhcGkuY3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShpbnRlbF9jcnRjLT5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQorCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9k ZTsKKworCS8qCisJICogU3JjIGNvb3JkaW5hdGVzIGFyZSBhbHJlYWR5IHJvdGF0ZWQgYnkgMjcw IGRlZ3JlZXMgZm9yCisJICogdGhlIDkwLzI3MCBkZWdyZWUgcGxhbmUgcm90YXRpb24gY2FzZXMg KHRvIG1hdGNoIHRoZQorCSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50 IGZvciByb3RhdGlvbiBoZXJlLgorCSAqLworCWlmIChzcmNfdyAhPSBkc3RfdyB8fCBzcmNfaCAh PSBkc3RfaCkKKwkJbmVlZF9zY2FsZXIgPSB0cnVlOworCisJLyoKKwkgKiBTY2FsaW5nL2ZpdHRp bmcgbm90IHN1cHBvcnRlZCBpbiBJRi1JRCBtb2RlIGluIEdFTjkrCisJICogVE9ETzogSW50ZXJs YWNlIGZldGNoIG1vZGUgZG9lc24ndCBzdXBwb3J0IFlVVjQyMCBwbGFuYXIgZm9ybWF0cy4KKwkg KiBPbmNlIE5WMTIgaXMgZW5hYmxlZCwgaGFuZGxlIGl0IGhlcmUgd2hpbGUgYWxsb2NhdGluZyBz Y2FsZXIKKwkgKiBmb3IgTlYxMi4KKwkgKi8KKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5 ICYmIGNydGNfc3RhdGUtPmh3LmVuYWJsZSAmJgorCSAgICBuZWVkX3NjYWxlciAmJiBhZGp1c3Rl ZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKSB7CisJCWRybV9kYmdfa21z KCZkZXZfcHJpdi0+ZHJtLAorCQkJICAgICJQaXBlL1BsYW5lIHNjYWxpbmcgbm90IHN1cHBvcnRl ZCB3aXRoIElGLUlEIG1vZGVcbiIpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwkvKgorCSAq IGlmIHBsYW5lIGlzIGJlaW5nIGRpc2FibGVkIG9yIHNjYWxlciBpcyBubyBtb3JlIHJlcXVpcmVk IG9yIGZvcmNlIGRldGFjaAorCSAqICAtIGZyZWUgc2NhbGVyIGJpbmRlZCB0byB0aGlzIHBsYW5l L2NydGMKKwkgKiAgLSBpbiBvcmRlciB0byBkbyB0aGlzLCB1cGRhdGUgY3J0Yy0+c2NhbGVyX3Vz YWdlCisJICoKKwkgKiBIZXJlIHNjYWxlciBzdGF0ZSBpbiBjcnRjX3N0YXRlIGlzIHNldCBmcmVl IHNvIHRoYXQKKwkgKiBzY2FsZXIgY2FuIGJlIGFzc2lnbmVkIHRvIG90aGVyIHVzZXIuIEFjdHVh bCByZWdpc3RlcgorCSAqIHVwZGF0ZSB0byBmcmVlIHRoZSBzY2FsZXIgaXMgZG9uZSBpbiBwbGFu ZS9wYW5lbC1maXQgcHJvZ3JhbW1pbmcuCisJICogRm9yIHRoaXMgcHVycG9zZSBjcnRjL3BsYW5l X3N0YXRlLT5zY2FsZXJfaWQgaXNuJ3QgcmVzZXQgaGVyZS4KKwkgKi8KKwlpZiAoZm9yY2VfZGV0 YWNoIHx8ICFuZWVkX3NjYWxlcikgeworCQlpZiAoKnNjYWxlcl9pZCA+PSAwKSB7CisJCQlzY2Fs ZXJfc3RhdGUtPnNjYWxlcl91c2VycyAmPSB+KDEgPDwgc2NhbGVyX3VzZXIpOworCQkJc2NhbGVy X3N0YXRlLT5zY2FsZXJzWypzY2FsZXJfaWRdLmluX3VzZSA9IDA7CisKKwkJCWRybV9kYmdfa21z KCZkZXZfcHJpdi0+ZHJtLAorCQkJCSAgICAic2NhbGVyX3VzZXIgaW5kZXggJXUuJXU6ICIKKwkJ CQkgICAgIlN0YWdlZCBmcmVlaW5nIHNjYWxlciBpZCAlZCBzY2FsZXJfdXNlcnMgPSAweCV4XG4i LAorCQkJCSAgICBpbnRlbF9jcnRjLT5waXBlLCBzY2FsZXJfdXNlciwgKnNjYWxlcl9pZCwKKwkJ CQkgICAgc2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMpOworCQkJKnNjYWxlcl9pZCA9IC0xOwor CQl9CisJCXJldHVybiAwOworCX0KKworCWlmIChmb3JtYXQgJiYgaW50ZWxfZm9ybWF0X2luZm9f aXNfeXV2X3NlbWlwbGFuYXIoZm9ybWF0LCBtb2RpZmllcikgJiYKKwkgICAgKHNyY19oIDwgU0tM X01JTl9ZVVZfNDIwX1NSQ19IIHx8IHNyY193IDwgU0tMX01JTl9ZVVZfNDIwX1NSQ19XKSkgewor CQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKKwkJCSAgICAiUGxhbmFyIFlVVjogc3JjIGRp bWVuc2lvbnMgbm90IG1ldFxuIik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIHJhbmdl IGNoZWNrcyAqLworCWlmIChzcmNfdyA8IFNLTF9NSU5fU1JDX1cgfHwgc3JjX2ggPCBTS0xfTUlO X1NSQ19IIHx8CisJICAgIGRzdF93IDwgU0tMX01JTl9EU1RfVyB8fCBkc3RfaCA8IFNLTF9NSU5f RFNUX0ggfHwKKwkgICAgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEgJiYKKwkgICAgIChzcmNf dyA+IElDTF9NQVhfU1JDX1cgfHwgc3JjX2ggPiBJQ0xfTUFYX1NSQ19IIHx8CisJICAgICAgZHN0 X3cgPiBJQ0xfTUFYX0RTVF9XIHx8IGRzdF9oID4gSUNMX01BWF9EU1RfSCkpIHx8CisJICAgIChJ TlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEgJiYKKwkgICAgIChzcmNfdyA+IFNLTF9NQVhfU1JDX1cg fHwgc3JjX2ggPiBTS0xfTUFYX1NSQ19IIHx8CisJICAgICAgZHN0X3cgPiBTS0xfTUFYX0RTVF9X IHx8IGRzdF9oID4gU0tMX01BWF9EU1RfSCkpKQl7CisJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ ZHJtLAorCQkJICAgICJzY2FsZXJfdXNlciBpbmRleCAldS4ldTogc3JjICV1eCV1IGRzdCAldXgl dSAiCisJCQkgICAgInNpemUgaXMgb3V0IG9mIHNjYWxlciByYW5nZVxuIiwKKwkJCSAgICBpbnRl bF9jcnRjLT5waXBlLCBzY2FsZXJfdXNlciwgc3JjX3csIHNyY19oLAorCQkJICAgIGRzdF93LCBk c3RfaCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIG1hcmsgdGhpcyBwbGFuZSBhcyBh IHNjYWxlciB1c2VyIGluIGNydGNfc3RhdGUgKi8KKwlzY2FsZXJfc3RhdGUtPnNjYWxlcl91c2Vy cyB8PSAoMSA8PCBzY2FsZXJfdXNlcik7CisJZHJtX2RiZ19rbXMoJmRldl9wcml2LT5kcm0sICJz Y2FsZXJfdXNlciBpbmRleCAldS4ldTogIgorCQkgICAgInN0YWdlZCBzY2FsaW5nIHJlcXVlc3Qg Zm9yICV1eCV1LT4ldXgldSBzY2FsZXJfdXNlcnMgPSAweCV4XG4iLAorCQkgICAgaW50ZWxfY3J0 Yy0+cGlwZSwgc2NhbGVyX3VzZXIsIHNyY193LCBzcmNfaCwgZHN0X3csIGRzdF9oLAorCQkgICAg c2NhbGVyX3N0YXRlLT5zY2FsZXJfdXNlcnMpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBza2xf dXBkYXRlX3NjYWxlcl9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQor eworCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpwaXBlX21vZGUgPSAmY3J0Y19zdGF0 ZS0+aHcucGlwZV9tb2RlOworCWludCB3aWR0aCwgaGVpZ2h0OworCisJaWYgKGNydGNfc3RhdGUt PnBjaF9wZml0LmVuYWJsZWQpIHsKKwkJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmY3J0Y19zdGF0 ZS0+cGNoX3BmaXQuZHN0KTsKKwkJaGVpZ2h0ID0gZHJtX3JlY3RfaGVpZ2h0KCZjcnRjX3N0YXRl LT5wY2hfcGZpdC5kc3QpOworCX0gZWxzZSB7CisJCXdpZHRoID0gcGlwZV9tb2RlLT5jcnRjX2hk aXNwbGF5OworCQloZWlnaHQgPSBwaXBlX21vZGUtPmNydGNfdmRpc3BsYXk7CisJfQorCXJldHVy biBza2xfdXBkYXRlX3NjYWxlcihjcnRjX3N0YXRlLCAhY3J0Y19zdGF0ZS0+aHcuYWN0aXZlLAor CQkJCSBTS0xfQ1JUQ19JTkRFWCwKKwkJCQkgJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZS5zY2Fs ZXJfaWQsCisJCQkJIGNydGNfc3RhdGUtPnBpcGVfc3JjX3csIGNydGNfc3RhdGUtPnBpcGVfc3Jj X2gsCisJCQkJIHdpZHRoLCBoZWlnaHQsIE5VTEwsIDAsCisJCQkJIGNydGNfc3RhdGUtPnBjaF9w Zml0LmVuYWJsZWQpOworfQorCisvKioKKyAqIHNrbF91cGRhdGVfc2NhbGVyX3BsYW5lIC0gU3Rh Z2VzIHVwZGF0ZSB0byBzY2FsZXIgc3RhdGUgZm9yIGEgZ2l2ZW4gcGxhbmUuCisgKiBAY3J0Y19z dGF0ZTogY3J0YydzIHNjYWxlciBzdGF0ZQorICogQHBsYW5lX3N0YXRlOiBhdG9taWMgcGxhbmUg c3RhdGUgdG8gdXBkYXRlCisgKgorICogUmV0dXJuCisgKiAgICAgMCAtIHNjYWxlcl91c2FnZSB1 cGRhdGVkIHN1Y2Nlc3NmdWxseQorICogICAgZXJyb3IgLSByZXF1ZXN0ZWQgc2NhbGluZyBjYW5u b3QgYmUgc3VwcG9ydGVkIG9yIG90aGVyIGVycm9yIGNvbmRpdGlvbgorICovCitpbnQgc2tsX3Vw ZGF0ZV9zY2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJ CQkgICAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKK3sKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0KKwkJdG9faW50ZWxfcGxhbmUocGxhbmVfc3RhdGUt PnVhcGkucGxhbmUpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoaW50ZWxfcGxhbmUtPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 IHBsYW5lX3N0YXRlLT5ody5mYjsKKwlpbnQgcmV0OworCWJvb2wgZm9yY2VfZGV0YWNoID0gIWZi IHx8ICFwbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOworCWJvb2wgbmVlZF9zY2FsZXIgPSBmYWxz ZTsKKworCS8qIFByZS1nZW4xMSBhbmQgU0RSIHBsYW5lcyBhbHdheXMgbmVlZCBhIHNjYWxlciBm b3IgcGxhbmFyIGZvcm1hdHMuICovCisJaWYgKCFpY2xfaXNfaGRyX3BsYW5lKGRldl9wcml2LCBp bnRlbF9wbGFuZS0+aWQpICYmCisJICAgIGZiICYmIGludGVsX2Zvcm1hdF9pbmZvX2lzX3l1dl9z ZW1pcGxhbmFyKGZiLT5mb3JtYXQsIGZiLT5tb2RpZmllcikpCisJCW5lZWRfc2NhbGVyID0gdHJ1 ZTsKKworCXJldCA9IHNrbF91cGRhdGVfc2NhbGVyKGNydGNfc3RhdGUsIGZvcmNlX2RldGFjaCwK KwkJCQlkcm1fcGxhbmVfaW5kZXgoJmludGVsX3BsYW5lLT5iYXNlKSwKKwkJCQkmcGxhbmVfc3Rh dGUtPnNjYWxlcl9pZCwKKwkJCQlkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnVhcGkuc3Jj KSA+PiAxNiwKKwkJCQlkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLnNyYykgPj4g MTYsCisJCQkJZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCksCisJCQkJZHJt X3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpLAorCQkJCWZiID8gZmItPmZvcm1h dCA6IE5VTEwsCisJCQkJZmIgPyBmYi0+bW9kaWZpZXIgOiAwLAorCQkJCW5lZWRfc2NhbGVyKTsK KworCWlmIChyZXQgfHwgcGxhbmVfc3RhdGUtPnNjYWxlcl9pZCA8IDApCisJCXJldHVybiByZXQ7 CisKKwkvKiBjaGVjayBjb2xvcmtleSAqLworCWlmIChwbGFuZV9zdGF0ZS0+Y2tleS5mbGFncykg eworCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwKKwkJCSAgICAiW1BMQU5FOiVkOiVzXSBz Y2FsaW5nIHdpdGggY29sb3Iga2V5IG5vdCBhbGxvd2VkIiwKKwkJCSAgICBpbnRlbF9wbGFuZS0+ YmFzZS5iYXNlLmlkLAorCQkJICAgIGludGVsX3BsYW5lLT5iYXNlLm5hbWUpOworCQlyZXR1cm4g LUVJTlZBTDsKKwl9CisKKwkvKiBDaGVjayBzcmMgZm9ybWF0ICovCisJc3dpdGNoIChmYi0+Zm9y bWF0LT5mb3JtYXQpIHsKKwljYXNlIERSTV9GT1JNQVRfUkdCNTY1OgorCWNhc2UgRFJNX0ZPUk1B VF9YQkdSODg4ODoKKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6CisJY2FzZSBEUk1fRk9STUFU X0FCR1I4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKKwljYXNlIERSTV9GT1JNQVRf WFJHQjIxMDEwMTA6CisJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgorCWNhc2UgRFJNX0ZP Uk1BVF9BUkdCMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfQUJHUjIxMDEwMTA6CisJY2FzZSBE Uk1fRk9STUFUX1lVWVY6CisJY2FzZSBEUk1fRk9STUFUX1lWWVU6CisJY2FzZSBEUk1fRk9STUFU X1VZVlk6CisJY2FzZSBEUk1fRk9STUFUX1ZZVVk6CisJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJ Y2FzZSBEUk1fRk9STUFUX1hZVVY4ODg4OgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgorCWNhc2Ug RFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDE2OgorCWNhc2UgRFJNX0ZPUk1B VF9ZMjEwOgorCWNhc2UgRFJNX0ZPUk1BVF9ZMjEyOgorCWNhc2UgRFJNX0ZPUk1BVF9ZMjE2Ogor CWNhc2UgRFJNX0ZPUk1BVF9YVllVMjEwMTAxMDoKKwljYXNlIERSTV9GT1JNQVRfWFZZVTEyXzE2 MTYxNjE2OgorCWNhc2UgRFJNX0ZPUk1BVF9YVllVMTYxNjE2MTY6CisJCWJyZWFrOworCWNhc2Ug RFJNX0ZPUk1BVF9YQkdSMTYxNjE2MTZGOgorCWNhc2UgRFJNX0ZPUk1BVF9BQkdSMTYxNjE2MTZG OgorCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTYxNjE2MTZGOgorCWNhc2UgRFJNX0ZPUk1BVF9BUkdC MTYxNjE2MTZGOgorCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkKKwkJCWJyZWFrOwor CQlmYWxsdGhyb3VnaDsKKwlkZWZhdWx0OgorCQlkcm1fZGJnX2ttcygmZGV2X3ByaXYtPmRybSwK KwkJCSAgICAiW1BMQU5FOiVkOiVzXSBGQjolZCB1bnN1cHBvcnRlZCBzY2FsaW5nIGZvcm1hdCAw eCV4XG4iLAorCQkJICAgIGludGVsX3BsYW5lLT5iYXNlLmJhc2UuaWQsIGludGVsX3BsYW5lLT5i YXNlLm5hbWUsCisJCQkgICAgZmItPmJhc2UuaWQsIGZiLT5mb3JtYXQtPmZvcm1hdCk7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNubF9jb2Vm X3RhcChpbnQgaSkKK3sKKwlyZXR1cm4gaSAlIDc7Cit9CisKK3N0YXRpYyB1MTYgY25sX25lYXJl c3RfZmlsdGVyX2NvZWYoaW50IHQpCit7CisJcmV0dXJuIHQgPT0gMyA/IDB4MDgwMCA6IDB4MzAw MDsKK30KKworLyoKKyAqICBUaGVvcnkgYmVoaW5kIHNldHRpbmcgbmVhcmVzdC1uZWlnaGJvciBp bnRlZ2VyIHNjYWxpbmc6CisgKgorICogIDE3IHBoYXNlIG9mIDcgdGFwcyByZXF1aXJlcyAxMTkg Y29lZmZpY2llbnRzIGluIDYwIGR3b3JkcyBwZXIgc2V0LgorICogIFRoZSBsZXR0ZXIgcmVwcmVz ZW50cyB0aGUgZmlsdGVyIHRhcCAoRCBpcyB0aGUgY2VudGVyIHRhcCkgYW5kIHRoZSBudW1iZXIK KyAqICByZXByZXNlbnRzIHRoZSBjb2VmZmljaWVudCBzZXQgZm9yIGEgcGhhc2UgKDAtMTYpLgor ICoKKyAqICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogICAgICAgICB8SW5kZXggdmFsdWUgfCBEYXRhIHZh bHVlIGNvZWZmaWVudCAxIHwgRGF0YSB2YWx1ZSBjb2VmZmllbnQgMiB8CisgKiAgICAgICAgICst LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsKKyAqICAgICAgICAgfCAgIDAwaCAgICAgIHwgICAgICAgICAgQjAgICAgICAgICAgICB8 ICAgICAgICAgIEEwICAgICAgICAgICAgfAorICogICAgICAgICArLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgICAg IHwgICAwMWggICAgICB8ICAgICAgICAgIEQwICAgICAgICAgICAgfCAgICAgICAgICBDMCAgICAg ICAgICAgIHwKKyAqICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogICAgICAgICB8ICAgMDJoICAgICAgfCAg ICAgICAgICBGMCAgICAgICAgICAgIHwgICAgICAgICAgRTAgICAgICAgICAgICB8CisgKiAgICAg ICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLSsKKyAqICAgICAgICAgfCAgIDAzaCAgICAgIHwgICAgICAgICAgQTEgICAgICAg ICAgICB8ICAgICAgICAgIEcwICAgICAgICAgICAgfAorICogICAgICAgICArLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAg ICAgICAgIHwgICAwNGggICAgICB8ICAgICAgICAgIEMxICAgICAgICAgICAgfCAgICAgICAgICBC MSAgICAgICAgICAgIHwKKyAqICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogICAgICAgICB8ICAgLi4uICAg ICAgfCAgICAgICAgICAuLi4gICAgICAgICAgIHwgICAgICAgICAgLi4uICAgICAgICAgICB8Cisg KiAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICAgICAgfCAgIDM4aCAgICAgIHwgICAgICAgICAgQjE2 ICAgICAgICAgICB8ICAgICAgICAgIEExNiAgICAgICAgICAgfAorICogICAgICAgICArLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r CisgKiAgICAgICAgIHwgICAzOWggICAgICB8ICAgICAgICAgIEQxNiAgICAgICAgICAgfCAgICAg ICAgICBDMTYgICAgICAgICAgIHwKKyAqICAgICAgICAgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogICAgICAgICB8ICAg M0FoICAgICAgfCAgICAgICAgICBGMTYgICAgICAgICAgIHwgICAgICAgICAgQzE2ICAgICAgICAg ICB8CisgKiAgICAgICAgICstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICAgICAgfCAgIDNCaCAgICAgIHwgICAgICAg IFJlc2VydmVkICAgICAgICB8ICAgICAgICAgIEcxNiAgICAgICAgICAgfAorICogICAgICAgICAr LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rCisgKgorICogIFRvIGVuYWJsZSBuZWFyZXN0LW5laWdoYm9yIHNjYWxpbmc6ICBwcm9n cmFtIHNjYWxlciBjb2VmZmljZW50cyB3aXRoCisgKiAgdGhlIGNlbnRlciB0YXAgKER4eCkgdmFs dWVzIHNldCB0byAxIGFuZCBhbGwgb3RoZXIgdmFsdWVzIHNldCB0byAwIGFzIHBlcgorICogIFND QUxFUl9DT0VGRklDSUVOVF9GT1JNQVQKKyAqCisgKi8KKworc3RhdGljIHZvaWQgY25sX3Byb2dy YW1fbmVhcmVzdF9maWx0ZXJfY29lZnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJCQkgICAgIGVudW0gcGlwZSBwaXBlLCBpbnQgaWQsIGludCBzZXQpCit7CisJaW50IGk7 CisKKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgQ05MX1BTX0NPRUZfSU5ERVhfU0VUKHBp cGUsIGlkLCBzZXQpLAorCQkJICBQU19DT0VFX0lOREVYX0FVVE9fSU5DKTsKKworCWZvciAoaSA9 IDA7IGkgPCAxNyAqIDc7IGkgKz0gMikgeworCQl1MzIgdG1wOworCQlpbnQgdDsKKworCQl0ID0g Y25sX2NvZWZfdGFwKGkpOworCQl0bXAgPSBjbmxfbmVhcmVzdF9maWx0ZXJfY29lZih0KTsKKwor CQl0ID0gY25sX2NvZWZfdGFwKGkgKyAxKTsKKwkJdG1wIHw9IGNubF9uZWFyZXN0X2ZpbHRlcl9j b2VmKHQpIDw8IDE2OworCisJCWludGVsX2RlX3dyaXRlX2Z3KGRldl9wcml2LCBDTkxfUFNfQ09F Rl9EQVRBX1NFVChwaXBlLCBpZCwgc2V0KSwKKwkJCQkgIHRtcCk7CisJfQorCisJaW50ZWxfZGVf d3JpdGVfZncoZGV2X3ByaXYsIENOTF9QU19DT0VGX0lOREVYX1NFVChwaXBlLCBpZCwgc2V0KSwg MCk7Cit9CisKK3N0YXRpYyB1MzIgc2tsX3NjYWxlcl9nZXRfZmlsdGVyX3NlbGVjdChlbnVtIGRy bV9zY2FsaW5nX2ZpbHRlciBmaWx0ZXIsIGludCBzZXQpCit7CisJaWYgKGZpbHRlciA9PSBEUk1f U0NBTElOR19GSUxURVJfTkVBUkVTVF9ORUlHSEJPUikgeworCQlyZXR1cm4gKFBTX0ZJTFRFUl9Q Uk9HUkFNTUVEIHwKKwkJCVBTX1lfVkVSVF9GSUxURVJfU0VMRUNUKHNldCkgfAorCQkJUFNfWV9I T1JaX0ZJTFRFUl9TRUxFQ1Qoc2V0KSB8CisJCQlQU19VVl9WRVJUX0ZJTFRFUl9TRUxFQ1Qoc2V0 KSB8CisJCQlQU19VVl9IT1JaX0ZJTFRFUl9TRUxFQ1Qoc2V0KSk7CisJfQorCisJcmV0dXJuIFBT X0ZJTFRFUl9NRURJVU07Cit9CisKK3N0YXRpYyB2b2lkIHNrbF9zY2FsZXJfc2V0dXBfZmlsdGVy KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsCisJCQkJ ICAgIGludCBpZCwgaW50IHNldCwgZW51bSBkcm1fc2NhbGluZ19maWx0ZXIgZmlsdGVyKQorewor CXN3aXRjaCAoZmlsdGVyKSB7CisJY2FzZSBEUk1fU0NBTElOR19GSUxURVJfREVGQVVMVDoKKwkJ YnJlYWs7CisJY2FzZSBEUk1fU0NBTElOR19GSUxURVJfTkVBUkVTVF9ORUlHSEJPUjoKKwkJY25s X3Byb2dyYW1fbmVhcmVzdF9maWx0ZXJfY29lZnMoZGV2X3ByaXYsIHBpcGUsIGlkLCBzZXQpOwor CQlicmVhazsKKwlkZWZhdWx0OgorCQlNSVNTSU5HX0NBU0UoZmlsdGVyKTsKKwl9Cit9CisKK3Zv aWQgc2tsX3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0 YXRlLT51YXBpLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3NjYWxlcl9z dGF0ZSAqc2NhbGVyX3N0YXRlID0KKwkJJmNydGNfc3RhdGUtPnNjYWxlcl9zdGF0ZTsKKwlzdHJ1 Y3QgZHJtX3JlY3Qgc3JjID0geworCQkueDIgPSBjcnRjX3N0YXRlLT5waXBlX3NyY193IDw8IDE2 LAorCQkueTIgPSBjcnRjX3N0YXRlLT5waXBlX3NyY19oIDw8IDE2LAorCX07CisJY29uc3Qgc3Ry dWN0IGRybV9yZWN0ICpkc3QgPSAmY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZHN0OworCXUxNiB1dl9y Z2JfaHBoYXNlLCB1dl9yZ2JfdnBoYXNlOworCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsK KwlpbnQgd2lkdGggPSBkcm1fcmVjdF93aWR0aChkc3QpOworCWludCBoZWlnaHQgPSBkcm1fcmVj dF9oZWlnaHQoZHN0KTsKKwlpbnQgeCA9IGRzdC0+eDE7CisJaW50IHkgPSBkc3QtPnkxOworCWlu dCBoc2NhbGUsIHZzY2FsZTsKKwl1bnNpZ25lZCBsb25nIGlycWZsYWdzOworCWludCBpZDsKKwl1 MzIgcHNfY3RybDsKKworCWlmICghY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxlZCkKKwkJcmV0 dXJuOworCisJaWYgKGRybV9XQVJOX09OKCZkZXZfcHJpdi0+ZHJtLAorCQkJY3J0Y19zdGF0ZS0+ c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCA8IDApKQorCQlyZXR1cm47CisKKwloc2NhbGUgPSBkcm1f cmVjdF9jYWxjX2hzY2FsZSgmc3JjLCBkc3QsIDAsIElOVF9NQVgpOworCXZzY2FsZSA9IGRybV9y ZWN0X2NhbGNfdnNjYWxlKCZzcmMsIGRzdCwgMCwgSU5UX01BWCk7CisKKwl1dl9yZ2JfaHBoYXNl ID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDEsIGhzY2FsZSwgZmFsc2UpOworCXV2X3JnYl92cGhh c2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgdnNjYWxlLCBmYWxzZSk7CisKKwlpZCA9IHNj YWxlcl9zdGF0ZS0+c2NhbGVyX2lkOworCisJcHNfY3RybCA9IHNrbF9zY2FsZXJfZ2V0X2ZpbHRl cl9zZWxlY3QoY3J0Y19zdGF0ZS0+aHcuc2NhbGluZ19maWx0ZXIsIDApOworCXBzX2N0cmwgfD0g IFBTX1NDQUxFUl9FTiB8IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpZF0ubW9kZTsKKworCXNwaW5f bG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKKworCXNrbF9z Y2FsZXJfc2V0dXBfZmlsdGVyKGRldl9wcml2LCBwaXBlLCBpZCwgMCwKKwkJCQljcnRjX3N0YXRl LT5ody5zY2FsaW5nX2ZpbHRlcik7CisKKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tM X1BTX0NUUkwocGlwZSwgaWQpLCBwc19jdHJsKTsKKworCWludGVsX2RlX3dyaXRlX2Z3KGRldl9w cml2LCBTS0xfUFNfVlBIQVNFKHBpcGUsIGlkKSwKKwkJCSAgUFNfWV9QSEFTRSgwKSB8IFBTX1VW X1JHQl9QSEFTRSh1dl9yZ2JfdnBoYXNlKSk7CisJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYs IFNLTF9QU19IUEhBU0UocGlwZSwgaWQpLAorCQkJICBQU19ZX1BIQVNFKDApIHwgUFNfVVZfUkdC X1BIQVNFKHV2X3JnYl9ocGhhc2UpKTsKKwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tM X1BTX1dJTl9QT1MocGlwZSwgaWQpLAorCQkJICB4IDw8IDE2IHwgeSk7CisJaW50ZWxfZGVfd3Jp dGVfZncoZGV2X3ByaXYsIFNLTF9QU19XSU5fU1oocGlwZSwgaWQpLAorCQkJICB3aWR0aCA8PCAx NiB8IGhlaWdodCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+dW5jb3Jl LmxvY2ssIGlycWZsYWdzKTsKK30KKwordm9pZAorc2tsX3Byb2dyYW1fcGxhbmVfc2NhbGVyKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCisJCQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCisJCQkgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFu ZV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KHBsYW5lLT5iYXNlLmRldik7CisJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBw bGFuZV9zdGF0ZS0+aHcuZmI7CisJZW51bSBwaXBlIHBpcGUgPSBwbGFuZS0+cGlwZTsKKwlpbnQg c2NhbGVyX2lkID0gcGxhbmVfc3RhdGUtPnNjYWxlcl9pZDsKKwljb25zdCBzdHJ1Y3QgaW50ZWxf c2NhbGVyICpzY2FsZXIgPQorCQkmY3J0Y19zdGF0ZS0+c2NhbGVyX3N0YXRlLnNjYWxlcnNbc2Nh bGVyX2lkXTsKKwlpbnQgY3J0Y194ID0gcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOworCWludCBj cnRjX3kgPSBwbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTE7CisJdTMyIGNydGNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QpOworCXUzMiBjcnRjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJdTE2IHlfaHBoYXNlLCB1dl9yZ2JfaHBo YXNlOworCXUxNiB5X3ZwaGFzZSwgdXZfcmdiX3ZwaGFzZTsKKwlpbnQgaHNjYWxlLCB2c2NhbGU7 CisJdTMyIHBzX2N0cmw7CisKKwloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZSgmcGxhbmVf c3RhdGUtPnVhcGkuc3JjLAorCQkJCSAgICAgICZwbGFuZV9zdGF0ZS0+dWFwaS5kc3QsCisJCQkJ ICAgICAgMCwgSU5UX01BWCk7CisJdnNjYWxlID0gZHJtX3JlY3RfY2FsY192c2NhbGUoJnBsYW5l X3N0YXRlLT51YXBpLnNyYywKKwkJCQkgICAgICAmcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAorCQkJ CSAgICAgIDAsIElOVF9NQVgpOworCisJLyogVE9ETzogaGFuZGxlIHN1Yi1waXhlbCBjb29yZGlu YXRlcyAqLworCWlmIChpbnRlbF9mb3JtYXRfaW5mb19pc195dXZfc2VtaXBsYW5hcihmYi0+Zm9y bWF0LCBmYi0+bW9kaWZpZXIpICYmCisJICAgICFpY2xfaXNfaGRyX3BsYW5lKGRldl9wcml2LCBw bGFuZS0+aWQpKSB7CisJCXlfaHBoYXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDEsIGhzY2Fs ZSwgZmFsc2UpOworCQl5X3ZwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgxLCB2c2NhbGUs IGZhbHNlKTsKKworCQkvKiBNUEVHMiBjaHJvbWEgc2l0aW5nIGNvbnZlbnRpb24gKi8KKwkJdXZf cmdiX2hwaGFzZSA9IHNrbF9zY2FsZXJfY2FsY19waGFzZSgyLCBoc2NhbGUsIHRydWUpOworCQl1 dl9yZ2JfdnBoYXNlID0gc2tsX3NjYWxlcl9jYWxjX3BoYXNlKDIsIHZzY2FsZSwgZmFsc2UpOwor CX0gZWxzZSB7CisJCS8qIG5vdCB1c2VkICovCisJCXlfaHBoYXNlID0gMDsKKwkJeV92cGhhc2Ug PSAwOworCisJCXV2X3JnYl9ocGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgaHNjYWxl LCBmYWxzZSk7CisJCXV2X3JnYl92cGhhc2UgPSBza2xfc2NhbGVyX2NhbGNfcGhhc2UoMSwgdnNj YWxlLCBmYWxzZSk7CisJfQorCisJcHNfY3RybCA9IHNrbF9zY2FsZXJfZ2V0X2ZpbHRlcl9zZWxl Y3QocGxhbmVfc3RhdGUtPmh3LnNjYWxpbmdfZmlsdGVyLCAwKTsKKwlwc19jdHJsIHw9IFBTX1ND QUxFUl9FTiB8IFBTX1BMQU5FX1NFTChwbGFuZS0+aWQpIHwgc2NhbGVyLT5tb2RlOworCisJc2ts X3NjYWxlcl9zZXR1cF9maWx0ZXIoZGV2X3ByaXYsIHBpcGUsIHNjYWxlcl9pZCwgMCwKKwkJCQlw bGFuZV9zdGF0ZS0+aHcuc2NhbGluZ19maWx0ZXIpOworCisJaW50ZWxfZGVfd3JpdGVfZncoZGV2 X3ByaXYsIFNLTF9QU19DVFJMKHBpcGUsIHNjYWxlcl9pZCksIHBzX2N0cmwpOworCWludGVsX2Rl X3dyaXRlX2Z3KGRldl9wcml2LCBTS0xfUFNfVlBIQVNFKHBpcGUsIHNjYWxlcl9pZCksCisJCQkg IFBTX1lfUEhBU0UoeV92cGhhc2UpIHwgUFNfVVZfUkdCX1BIQVNFKHV2X3JnYl92cGhhc2UpKTsK KwlpbnRlbF9kZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX0hQSEFTRShwaXBlLCBzY2FsZXJf aWQpLAorCQkJICBQU19ZX1BIQVNFKHlfaHBoYXNlKSB8IFBTX1VWX1JHQl9QSEFTRSh1dl9yZ2Jf aHBoYXNlKSk7CisJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIFNLTF9QU19XSU5fUE9TKHBp cGUsIHNjYWxlcl9pZCksCisJCQkgIChjcnRjX3ggPDwgMTYpIHwgY3J0Y195KTsKKwlpbnRlbF9k ZV93cml0ZV9mdyhkZXZfcHJpdiwgU0tMX1BTX1dJTl9TWihwaXBlLCBzY2FsZXJfaWQpLAorCQkJ ICAoY3J0Y193IDw8IDE2KSB8IGNydGNfaCk7Cit9CisKK3N0YXRpYyB2b2lkIHNrbF9kZXRhY2hf c2NhbGVyKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBpbnQgaWQpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2NydGMtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwl1bnNpZ25lZCBsb25nIGlycWZs YWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxh Z3MpOworCisJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIFNLTF9QU19DVFJMKGludGVsX2Ny dGMtPnBpcGUsIGlkKSwgMCk7CisJaW50ZWxfZGVfd3JpdGVfZncoZGV2X3ByaXYsIFNLTF9QU19X SU5fUE9TKGludGVsX2NydGMtPnBpcGUsIGlkKSwgMCk7CisJaW50ZWxfZGVfd3JpdGVfZncoZGV2 X3ByaXYsIFNLTF9QU19XSU5fU1ooaW50ZWxfY3J0Yy0+cGlwZSwgaWQpLCAwKTsKKworCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOworfQor CisvKgorICogVGhpcyBmdW5jdGlvbiBkZXRhY2hlcyAoYWthLiB1bmJpbmRzKSB1bnVzZWQgc2Nh bGVycyBpbiBoYXJkd2FyZQorICovCit2b2lkIHNrbF9kZXRhY2hfc2NhbGVycyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKKwljb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZSA9CisJCSZjcnRj X3N0YXRlLT5zY2FsZXJfc3RhdGU7CisJaW50IGk7CisKKwkvKiBsb29wIHRocm91Z2ggYW5kIGRp c2FibGUgc2NhbGVycyB0aGF0IGFyZW4ndCBpbiB1c2UgKi8KKwlmb3IgKGkgPSAwOyBpIDwgaW50 ZWxfY3J0Yy0+bnVtX3NjYWxlcnM7IGkrKykgeworCQlpZiAoIXNjYWxlcl9zdGF0ZS0+c2NhbGVy c1tpXS5pbl91c2UpCisJCQlza2xfZGV0YWNoX3NjYWxlcihpbnRlbF9jcnRjLCBpKTsKKwl9Cit9 CisKK3ZvaWQgc2tsX3NjYWxlcl9kaXNhYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVs X2NydGMob2xkX2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7CisJaW50IGk7CisKKwlmb3IgKGkgPSAw OyBpIDwgY3J0Yy0+bnVtX3NjYWxlcnM7IGkrKykKKwkJc2tsX2RldGFjaF9zY2FsZXIoY3J0Yywg aSk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3NrbF9zY2Fs ZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvc2tsX3NjYWxlci5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDA5N2Q1ZDA4ZTEwCi0tLSAvZGV2L251 bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfc2NhbGVyLmgKQEAgLTAs MCArMSwyOSBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENv cHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKyNpZm5kZWYgSU5URUxfU0NB TEVSX0gKKyNkZWZpbmUgSU5URUxfU0NBTEVSX0gKKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CisKK2VudW0gZHJtX3NjYWxpbmdfZmlsdGVyOworc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Citz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZTsKK3N0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZTsKK3N0cnVj dCBpbnRlbF9wbGFuZTsKK2VudW0gcGlwZTsKKworaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOworCitpbnQgc2tsX3VwZGF0ZV9z Y2FsZXJfcGxhbmUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAg c3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7CisKK3ZvaWQgc2tsX3BmaXRf ZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKKwordm9p ZCBza2xfcHJvZ3JhbV9wbGFuZV9zY2FsZXIoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKKwkJ CSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cit2b2lkIHNr bF9kZXRhY2hfc2NhbGVycyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSk7Cit2b2lkIHNrbF9zY2FsZXJfZGlzYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqb2xkX2NydGNfc3RhdGUpOworI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L3NrbF91bml2ZXJzYWxfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvc2tsX3VuaXZlcnNhbF9wbGFuZS5jCmluZGV4IDRhZTFhMmVmMjllYy4uMWYzMzVj YjA5MTQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2 ZXJzYWxfcGxhbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2 ZXJzYWxfcGxhbmUuYwpAQCAtMTQsNiArMTQsNyBAQAogI2luY2x1ZGUgImludGVsX3BtLmgiCiAj aW5jbHVkZSAiaW50ZWxfcHNyLmgiCiAjaW5jbHVkZSAiaW50ZWxfc3ByaXRlLmgiCisjaW5jbHVk ZSAic2tsX3NjYWxlci5oIgogI2luY2x1ZGUgInNrbF91bml2ZXJzYWxfcGxhbmUuaCIKIAogc3Rh dGljIGNvbnN0IHUzMiBza2xfcGxhbmVfZm9ybWF0c1tdID0gewpAQCAtMTA1NCw3ICsxMDU1LDcg QEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKIAkJCSAgaW50 ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsgc3VyZl9hZGRyKTsKIAogCWlmIChw bGFuZV9zdGF0ZS0+c2NhbGVyX2lkID49IDApCi0JCXNrbF9wcm9ncmFtX3NjYWxlcihwbGFuZSwg Y3J0Y19zdGF0ZSwgcGxhbmVfc3RhdGUpOworCQlza2xfcHJvZ3JhbV9wbGFuZV9zY2FsZXIocGxh bmUsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsKIAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUo JmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9za2xfdW5pdmVyc2FsX3BsYW5lLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L3NrbF91bml2ZXJzYWxfcGxhbmUuaAppbmRleCA3MGViNTAxMGNk MjguLjgxODI2NjY1MzYzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9za2xfdW5pdmVyc2FsX3BsYW5lLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9za2xfdW5pdmVyc2FsX3BsYW5lLmgKQEAgLTMwLDQgKzMwLDggQEAgaW50IHNrbF9jY3NfdG9f bWFpbl9wbGFuZShjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgaW50IGNjc19wbGFu ZSk7CiBpbnQgc2tsX2NhbGNfbWFpbl9zdXJmYWNlX29mZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAogCQkJCSBpbnQgKngsIGludCAqeSwgdTMyICpvZmZz ZXQpOwogCitib29sIGljbF9pc19udjEyX3lfcGxhbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCQkJIGVudW0gcGxhbmVfaWQgcGxhbmVfaWQpOworYm9vbCBpY2xfaXNfaGRy X3BsYW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwbGFuZV9pZCBw bGFuZV9pZCk7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS92bHZfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L3Zsdl9kc2kuYwpp bmRleCBmOTQwMjVlYzYwM2EuLjEwNTlhMjZjMWY1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS92bHZfZHNpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS92bHZfZHNpLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJpbnRlbF9maWZvX3Vu ZGVycnVuLmgiCiAjaW5jbHVkZSAiaW50ZWxfcGFuZWwuaCIKICNpbmNsdWRlICJpbnRlbF9zaWRl YmFuZC5oIgorI2luY2x1ZGUgInNrbF9zY2FsZXIuaCIKIAogLyogcmV0dXJuIHBpeGVscyBpbiB0 ZXJtcyBvZiB0eGJ5dGVjbGtocyAqLwogc3RhdGljIHUxNiB0eGJ5dGVjbGtocyh1MTYgcGl4ZWxz LCBpbnQgYnBwLCBpbnQgbGFuZV9jb3VudCwKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==