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 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CF169CA0ED3 for ; Mon, 2 Sep 2024 15:29:43 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sl8zc-0008SY-G6; Mon, 02 Sep 2024 11:29:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sl8zS-0008Mi-Pk for grub-devel@gnu.org; Mon, 02 Sep 2024 11:29:14 -0400 Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sl8zN-00039b-LJ for grub-devel@gnu.org; Mon, 02 Sep 2024 11:29:14 -0400 Received: by mail-lj1-x233.google.com with SMTP id 38308e7fff4ca-2f3f25a1713so51517521fa.2 for ; Mon, 02 Sep 2024 08:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725290947; x=1725895747; darn=gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=2LDzeqf9gwM6V/in93EPwgvMFL2JC0ZEP0WPHP7QO8A=; b=csL0RV0c3ef1mp+Jl+Dng2786fQaHcUDCGT4NSrbo900DfvpTyyneXHfJeO+EO1P7H uZTM+2lioTum+3fHu48keictUoD7FvB8q79p6KoNwU2N07ky7d+l9fbctIDqfJZx1UEd hqk7JNHRwZSnMP4jpUNf788ou3vAurQg+mSMAVksQJaUYAq3QlC/yWgVcu30MR3KaWjs mAGSqndiPD9eCfoVcVZb8sTg/HwHawPh2WXPyUOx7Ip7Y2xey7yW1PGBEM6ESkvhMmx7 TPVQIIHNQkDU2+tDPgH8M8cYEBuo/l2/Y65ZU1YLUJ+2g6mymuOHhgp86f+x2/GrFkKU tvng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725290947; x=1725895747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2LDzeqf9gwM6V/in93EPwgvMFL2JC0ZEP0WPHP7QO8A=; b=NIhWtG6z+PEQeHJOi8cJ5yTgp5rqGZCQagLQmsTGudV1fq2g+RTAAdsgTOyrA0jtP+ yiTBk2TDgaI6KC+neO8QHqmy8SWuHTB1v6AHMIt5jIxVMKVtgOSmAbSitcfDIj5Bv6XI xwqJ8Fx1dqE6Sp1y1jmz7QTt9I0SEVLcgP2D3eweo3luaDNwGQBFPtdEoVzTzf/dYptV gH+xKkGqCmZrsTCpfamomxEvtAfU1nRnOVLuAzSJcbpxth6VJ37bZPW2LPSmtpYWYYXN gHqSlbvyaRKpkmSVPd+lnV24wcxIF3bL6Ot6mZ4jrumzViawTagH5NhLED2uxIWD5J/x arpA== X-Gm-Message-State: AOJu0Yy8hQvtwGPB1E8b81GtKrS+wsYpgQYo70/D3I3wqthlHo2xI2UB TbypsgIsdZfn65LXdXXz5tDqIQZDQWNx2jzRfEaFky3aNS9gN5UP2rRDycBN X-Google-Smtp-Source: AGHT+IH9fJWor/IcXGsj0pd6oLDftD2cXeTS5QeBYY9wsxxUCcpPruZRyfVFEMv4hdytSN8d/FSM1w== X-Received: by 2002:a2e:f09:0:b0:2ef:2dc7:a8f0 with SMTP id 38308e7fff4ca-2f6265ea903mr43367661fa.45.1725290945768; Mon, 02 Sep 2024 08:29:05 -0700 (PDT) Received: from localhost ([5.166.20.5]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-2f614ed1737sm18660221fa.2.2024.09.02.08.29.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Sep 2024 08:29:04 -0700 (PDT) From: Vladimir Serbinenko To: grub-devel@gnu.org Cc: Vladimir Serbinenko Subject: [PATCH v4 3/5] Adjust import script, definitions and API users for libgcrypt 1.10 Date: Mon, 2 Sep 2024 18:28:37 +0300 Message-Id: <20240902152840.5984-3-phcoder@gmail.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240902152840.5984-1-phcoder@gmail.com> References: <20240902152840.5984-1-phcoder@gmail.com> MIME-Version: 1.0 Received-SPF: pass client-ip=2a00:1450:4864:20::233; envelope-from=phcoder@gmail.com; helo=mail-lj1-x233.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org U2lnbmVkLW9mZi1ieTogVmxhZGltaXIgU2VyYmluZW5rbyA8cGhjb2RlckBnbWFpbC5jb20+Ci0t LQogYXV0b2dlbi5zaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCiBj b25mL01ha2VmaWxlLmNvbW1vbiAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBncnVi LWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgICAgICAgICAgICAgICAgIHwgIDM2ICsrLQogZ3J1Yi1j b3JlL2NvbW1hbmRzL2hhc2hzdW0uYyAgICAgICAgICAgICAgICB8ICAgMiArLQogZ3J1Yi1jb3Jl L2NvbW1hbmRzL2xlZ2FjeWNmZy5jICAgICAgICAgICAgICB8ICAgNiArLQogZ3J1Yi1jb3JlL2Nv bW1hbmRzL3BncC5jICAgICAgICAgICAgICAgICAgICB8IDExNCArKystLS0tLS0KIGdydWItY29y ZS9jb21tYW5kcy94bnVfdXVpZC5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIGdydWItY29yZS9k aXNrL2NyeXB0b2Rpc2suYyAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGdydWItY29yZS9pby9n emlvLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGdydWItY29yZS9pby9sem9w aW8uYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGdydWItY29yZS9saWIvYWRsZXIz Mi5jICAgICAgICAgICAgICAgICAgICAgfCAgMjEgKy0KIGdydWItY29yZS9saWIvY3JjNjQuYyAg ICAgICAgICAgICAgICAgICAgICAgfCAgMjQgKy0KIGdydWItY29yZS9saWIvY3J5cHRvLmMgICAg ICAgICAgICAgICAgICAgICAgfCAyNDUgKysrKysrKysrKysrKysrKystCiBncnViLWNvcmUvbGli L2xpYmdjcnlwdC1wYXRjaGVzLzAxX21kLnBhdGNoIHwgMTQxICsrKysrKysrKysrCiBncnViLWNv cmUvbGliL2xpYmdjcnlwdC9zcmMvZ2NyeXB0LWludC5oICAgIHwgIDUxIC0tLS0KIGdydWItY29y ZS9saWIvbGliZ2NyeXB0X3dyYXAvY2lwaGVyX3dyYXAuaCAgfCAgMTQgKy0KIGdydWItY29yZS9s aWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMgICAgICAgICAgfCAgODMgKysrKysrLQogZ3J1Yi1jb3Jl L2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYyAgICAgICB8ICAxOCArLQogaW5jbHVkZS9ncnVi L2NyeXB0by5oICAgICAgICAgICAgICAgICAgICAgICB8IDI2MSArKysrKysrKysrKysrKysrLS0t LQogaW5jbHVkZS9ncnViL2djcnlwdC9ncGctZXJyb3IuaCAgICAgICAgICAgICB8ICAgOSArCiB1 dGlsL2dydWItZnN0ZXN0LmMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiB1dGls L2ltcG9ydF9nY3J5LnB5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTY4ICsrKysrKysrLS0t LS0KIHV0aWwvaW1wb3J0X2djcnlwdF9pbnRoLnNlZCAgICAgICAgICAgICAgICAgfCAgMTcgKysK IHV0aWwvaW1wb3J0X2djcnlwdGguc2VkICAgICAgICAgICAgICAgICAgICAgfCAgIDIgLQogMjQg ZmlsZXMgY2hhbmdlZCwgOTUxIGluc2VydGlvbnMoKyksIDI4MCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBncnViLWNvcmUvbGliL2xpYmdjcnlwdC1wYXRjaGVzLzAxX21kLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgdXRpbC9pbXBvcnRfZ2NyeXB0X2ludGguc2VkCgpkaWZmIC0t Z2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKaW5kZXggMTk1ZGFhNTQxLi4wNWJjOWIyZjAg MTAwNzU1Ci0tLSBhL2F1dG9nZW4uc2gKKysrIGIvYXV0b2dlbi5zaApAQCAtMzUsNiArMzUsNyBA QCAke1BZVEhPTn0gdXRpbC9pbXBvcnRfdW5pY29kZS5weSB1bmljb2RlL1VuaWNvZGVEYXRhLnR4 dCB1bmljb2RlL0JpZGlNaXJyb3JpbmcudAogZWNobyAiSW1wb3J0aW5nIGxpYmdjcnlwdC4uLiIK ICR7UFlUSE9OfSB1dGlsL2ltcG9ydF9nY3J5LnB5IGdydWItY29yZS9saWIvbGliZ2NyeXB0LyBn cnViLWNvcmUKIHNlZCAtbiAtZiB1dGlsL2ltcG9ydF9nY3J5cHRoLnNlZCA8IGdydWItY29yZS9s aWIvbGliZ2NyeXB0L3NyYy9nY3J5cHQuaC5pbiA+IGluY2x1ZGUvZ3J1Yi9nY3J5cHQvZ2NyeXB0 LmgKK3NlZCAtbiAtZiB1dGlsL2ltcG9ydF9nY3J5cHRfaW50aC5zZWQgPCBncnViLWNvcmUvbGli L2xpYmdjcnlwdC9zcmMvZ2NyeXB0LWludC5oID4+IGluY2x1ZGUvZ3J1Yi9nY3J5cHQvZ2NyeXB0 LmgKIGlmIFsgLWYgaW5jbHVkZS9ncnViL2djcnlwdC9nMTBsaWIuaCBdOyB0aGVuCiAgICAgcm0g aW5jbHVkZS9ncnViL2djcnlwdC9nMTBsaWIuaAogZmkKQEAgLTUxLDYgKzUyLDEwIEBAIGZvciB4 IGluIG1waS1hc20tZGVmcy5oIG1waWgtYWRkMS5jIG1waWgtc3ViMS5jIG1waWgtbXVsMS5jIG1w aWgtbXVsMi5jIG1waWgtbXVsCiAgICAgY3AgZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi9t cGkvZ2VuZXJpYy8iJHgiIGdydWItY29yZS9saWIvbGliZ2NyeXB0LWdydWIvbXBpLyIkeCIKIGRv bmUKIAorZm9yIHggaW4gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtcGF0Y2hlcy8qLnBhdGNoOyBk bworICAgIHBhdGNoIC1pICR4IC1wMQorZG9uZQorCiBlY2hvICJHZW5lcmF0aW5nIEF1dG9tYWtl IGlucHV0Li4uIgogCiAjIEF1dG9tYWtlIGRvZXNuJ3QgbGlrZSBpbmNsdWRpbmcgZmlsZXMgZnJv bSBhIHBhdGggb3V0c2lkZSB0aGUgcHJvamVjdC4KZGlmZiAtLWdpdCBhL2NvbmYvTWFrZWZpbGUu Y29tbW9uIGIvY29uZi9NYWtlZmlsZS5jb21tb24KaW5kZXggYzYwZjU1Mzg2Li41Y2FkYTQ1Njgg MTAwNjQ0Ci0tLSBhL2NvbmYvTWFrZWZpbGUuY29tbW9uCisrKyBiL2NvbmYvTWFrZWZpbGUuY29t bW9uCkBAIC04MSw4ICs4MSw4IEBAIENQUEZMQUdTX0dOVUxJQiA9IC1JJCh0b3BfYnVpbGRkaXIp L2dydWItY29yZS9saWIvZ251bGliIC1JJCh0b3Bfc3JjZGlyKS9ncnViLWNvCiBDRkxBR1NfUE9T SVggPSAtZm5vLWJ1aWx0aW4KIENQUEZMQUdTX1BPU0lYID0gLUkkKHRvcF9zcmNkaXIpL2dydWIt Y29yZS9saWIvcG9zaXhfd3JhcAogCi1DRkxBR1NfR0NSWSA9IC1Xbm8tZXJyb3IgLVduby1taXNz aW5nLWZpZWxkLWluaXRpYWxpemVycyAtV25vLXJlZHVuZGFudC1kZWNscyAtV25vLXVuZGVmICQo Q0ZMQUdTX1BPU0lYKQotQ1BQRkxBR1NfR0NSWSA9IC1JJCh0b3Bfc3JjZGlyKS9ncnViLWNvcmUv bGliL2xpYmdjcnlwdF93cmFwICQoQ1BQRkxBR1NfUE9TSVgpIC1EX0dDUllQVF9JTl9MSUJHQ1JZ UFQ9MSAtSSQodG9wX3NyY2RpcikvaW5jbHVkZS9ncnViL2djcnlwdAorQ0ZMQUdTX0dDUlkgPSAt V25vLWVycm9yPXNpZ24tY29tcGFyZSAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1X bm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tdW5kZWYgJChDRkxBR1NfUE9TSVgpCitDUFBGTEFHU19H Q1JZID0gLUkkKHRvcF9zcmNkaXIpL2dydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAgJChDUFBG TEFHU19QT1NJWCkgLURfR0NSWVBUX0lOX0xJQkdDUllQVD0xIC1EX0dDUllQVF9DT05GSUdfSF9J TkNMVURFRD0xIC1ESEFWRV9TVFJUT1VMPTEgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUvZ3J1Yi9n Y3J5cHQKIAogQ1BQRkxBR1NfRUZJRU1VID0gLUkkKHRvcF9zcmNkaXIpL2dydWItY29yZS9lZmll bXUvcnVudGltZQogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYgYi9n cnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKaW5kZXggNzA1ZDczZmFiLi43OTllNGQ0NzEgMTAw NjQ0Ci0tLSBhL2dydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZgorKysgYi9ncnViLWNvcmUvTWFr ZWZpbGUuY29yZS5kZWYKQEAgLTk3NSw4ICs5NzUsOCBAQCBtb2R1bGUgPSB7CiBtb2R1bGUgPSB7 CiAgIG5hbWUgPSBwZ3A7CiAgIGNvbW1vbiA9IGNvbW1hbmRzL3BncC5jOwotICBjZmxhZ3MgPSAn JChDRkxBR1NfUE9TSVgpJzsKLSAgY3BwZmxhZ3MgPSAnLUkkKHNyY2RpcikvbGliL3Bvc2l4X3dy YXAnOworICBjZmxhZ3MgPSAnJChDRkxBR1NfR0NSWSkgLVduby1yZWR1bmRhbnQtZGVjbHMgLVdu by1zaWduLWNvbXBhcmUnOworICBjcHBmbGFncyA9ICckKENQUEZMQUdTX0dDUlkpJzsKIH07CiAK IG1vZHVsZSA9IHsKQEAgLTIxNzUsNiArMjE3NSwyMiBAQCBtb2R1bGUgPSB7CiAgIGNvbW1vbiA9 IHRlc3RzL3NldGptcF90ZXN0LmM7CiB9OwogCittb2R1bGUgPSB7CisgIG5hbWUgPSBkc2Ffc2V4 cF90ZXN0OworICBjb21tb24gPSB0ZXN0cy9kc2Ffc2V4cF90ZXN0LmM7CisKKyAgY2ZsYWdzID0g JyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlJzsK KyAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSc7Cit9OworCittb2R1bGUgPSB7CisgIG5h bWUgPSByc2Ffc2V4cF90ZXN0OworICBjb21tb24gPSB0ZXN0cy9yc2Ffc2V4cF90ZXN0LmM7CisK KyAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tc2ln bi1jb21wYXJlJzsKKyAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSc7Cit9OworCiBtb2R1 bGUgPSB7CiAgIG5hbWUgPSBzaWduYXR1cmVfdGVzdDsKICAgY29tbW9uID0gdGVzdHMvc2lnbmF0 dXJlX3Rlc3QuYzsKQEAgLTI1MjksNyArMjU0NSwyMyBAQCBtb2R1bGUgPSB7CiAgIGNvbW1vbiA9 IGxpYi9saWJnY3J5cHQtZ3J1Yi9tcGkvbXBpY29kZXIuYzsKICAgY29tbW9uID0gbGliL2xpYmdj cnlwdC1ncnViL21waS9tcGloLXJzaGlmdC5jOwogICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdy dWIvbXBpL21waS1pbmxpbmUuYzsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL21waS9t cGloLWNvbnN0LXRpbWUuYzsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL21waS9tcGkt c2Nhbi5jOworICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdydWIvc3JjL2NvbnN0LXRpbWUuYzsK ICAgY29tbW9uID0gbGliL2xpYmdjcnlwdF93cmFwL21lbS5jOworICBjb21tb24gPSBsaWIvbGli Z2NyeXB0LWdydWIvY2lwaGVyL21kLmM7CisKKyAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1X bm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlIC1Xbm8tdW51c2VkLWJ1dC1zZXQt dmFyaWFibGUnOworICBjcHBmbGFncyA9ICckKENQUEZMQUdTX0dDUlkpJzsKK307CisKK21vZHVs ZSA9IHsKKyAgbmFtZSA9IHB1YmtleTsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL2Np cGhlci9wdWJrZXktdXRpbC5jOworICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdydWIvY2lwaGVy L3JzYS1jb21tb24uYzsKKyAgY29tbW9uID0gbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9kc2Et Y29tbW9uLmM7CisgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHQtZ3J1Yi9zcmMvc2V4cC5jOworICBj b21tb24gPSBsaWIvYjY0ZGVjLmM7CiAKICAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8t cmVkdW5kYW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlJzsKICAgY3BwZmxhZ3MgPSAnJChDUFBG TEFHU19HQ1JZKSc7CmRpZmYgLS1naXQgYS9ncnViLWNvcmUvY29tbWFuZHMvaGFzaHN1bS5jIGIv Z3J1Yi1jb3JlL2NvbW1hbmRzL2hhc2hzdW0uYwppbmRleCBkNTZiNWIwYmIuLmI2ZjhlM2QxYSAx MDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2hhc2hzdW0uYworKysgYi9ncnViLWNvcmUv Y29tbWFuZHMvaGFzaHN1bS5jCkBAIC03Myw3ICs3Myw3IEBAIGhhc2hfZmlsZSAoZ3J1Yl9maWxl X3QgZmlsZSwgY29uc3QgZ2NyeV9tZF9zcGVjX3QgKmhhc2gsIHZvaWQgKnJlc3VsdCkKICAgaWYg KCFyZWFkYnVmIHx8ICFjb250ZXh0KQogICAgIGdvdG8gZmFpbDsKIAotICBoYXNoLT5pbml0IChj b250ZXh0KTsKKyAgaGFzaC0+aW5pdCAoY29udGV4dCwgMCk7CiAgIHdoaWxlICgxKQogICAgIHsK ICAgICAgIGdydWJfc3NpemVfdCByOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xl Z2FjeWNmZy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jCmluZGV4IGU5ZTlkOTRl Zi4uMDUyYmIxMTBkIDEwMDY0NAotLS0gYS9ncnViLWNvcmUvY29tbWFuZHMvbGVnYWN5Y2ZnLmMK KysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2xlZ2FjeWNmZy5jCkBAIC02MjUsNyArNjI1LDcgQEAg Y2hlY2tfcGFzc3dvcmRfbWQ1X3JlYWwgKGNvbnN0IGNoYXIgKmVudGVyZWQsCiAgIGlmICghY3R4 KQogICAgIHJldHVybiAwOwogCi0gIEdSVUJfTURfTUQ1LT5pbml0IChjdHgpOworICBHUlVCX01E X01ENS0+aW5pdCAoY3R4LCAwKTsKICAgR1JVQl9NRF9NRDUtPndyaXRlIChjdHgsIGVudGVyZWQs IGVudGVyZWRsZW4pOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwgcHctPnNhbHQgKyAzLCBw dy0+c2FsdGxlbiAtIDMpOwogICBHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwgZW50ZXJlZCwgZW50 ZXJlZGxlbik7CkBAIC02MzMsNyArNjMzLDcgQEAgY2hlY2tfcGFzc3dvcmRfbWQ1X3JlYWwgKGNv bnN0IGNoYXIgKmVudGVyZWQsCiAgIEdSVUJfTURfTUQ1LT5maW5hbCAoY3R4KTsKICAgZ3J1Yl9t ZW1jcHkgKGFsdF9yZXN1bHQsIGRpZ2VzdCwgTUQ1X0hBU0hMRU4pOwogCi0gIEdSVUJfTURfTUQ1 LT5pbml0IChjdHgpOworICBHUlVCX01EX01ENS0+aW5pdCAoY3R4LCAwKTsKICAgR1JVQl9NRF9N RDUtPndyaXRlIChjdHgsIGVudGVyZWQsIGVudGVyZWRsZW4pOwogICBHUlVCX01EX01ENS0+d3Jp dGUgKGN0eCwgcHctPnNhbHQsIHB3LT5zYWx0bGVuKTsgLyogaW5jbHVkZSB0aGUgJDEkIGhlYWRl ciAqLwogICBmb3IgKGkgPSBlbnRlcmVkbGVuOyBpID4gMTY7IGkgLT0gMTYpCkBAIC02NDksNyAr NjQ5LDcgQEAgY2hlY2tfcGFzc3dvcmRfbWQ1X3JlYWwgKGNvbnN0IGNoYXIgKmVudGVyZWQsCiAg ICAgewogICAgICAgZ3J1Yl9tZW1jcHkgKGFsdF9yZXN1bHQsIGRpZ2VzdCwgMTYpOwogCi0gICAg ICBHUlVCX01EX01ENS0+aW5pdCAoY3R4KTsKKyAgICAgIEdSVUJfTURfTUQ1LT5pbml0IChjdHgs IDApOwogICAgICAgaWYgKChpICYgMSkgIT0gMCkKIAlHUlVCX01EX01ENS0+d3JpdGUgKGN0eCwg ZW50ZXJlZCwgZW50ZXJlZGxlbik7CiAgICAgICBlbHNlCmRpZmYgLS1naXQgYS9ncnViLWNvcmUv Y29tbWFuZHMvcGdwLmMgYi9ncnViLWNvcmUvY29tbWFuZHMvcGdwLmMKaW5kZXggYzY3NjZmMDQ0 Li4yMmVjYTk3ZmYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9jb21tYW5kcy9wZ3AuYworKysgYi9n cnViLWNvcmUvY29tbWFuZHMvcGdwLmMKQEAgLTEzNiw0MSArMTM2LDI3IEBAIHN0cnVjdCBzaWdu YXR1cmVfdjRfaGVhZGVyCiAgIGdydWJfdWludDE2X3QgaGFzaGVkX3N1YjsKIH0gR1JVQl9QQUNL RUQ7CiAKLWNvbnN0IGNoYXIgKmhhc2hlc1tdID0gewotICBbMHgwMV0gPSAibWQ1IiwKLSAgWzB4 MDJdID0gInNoYTEiLAotICBbMHgwM10gPSAicmlwZW1kMTYwIiwKLSAgWzB4MDhdID0gInNoYTI1 NiIsCi0gIFsweDA5XSA9ICJzaGEzODQiLAotICBbMHgwYV0gPSAic2hhNTEyIiwKLSAgWzB4MGJd ID0gInNoYTIyNCIKLX07Ci0KIHN0cnVjdCBnY3J5X3BrX3NwZWMgKmdydWJfY3J5cHRvX3BrX2Rz YTsKIHN0cnVjdCBnY3J5X3BrX3NwZWMgKmdydWJfY3J5cHRvX3BrX2VjZHNhOwogc3RydWN0IGdj cnlfcGtfc3BlYyAqZ3J1Yl9jcnlwdG9fcGtfcnNhOwogCi1zdGF0aWMgaW50Ci1kc2FfcGFkIChn Y3J5X21waV90ICpobXBpLCBncnViX3VpbnQ4X3QgKmh2YWwsCi0JIGNvbnN0IGdjcnlfbWRfc3Bl Y190ICpoYXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7Ci1zdGF0aWMgaW50Ci1y c2FfcGFkIChnY3J5X21waV90ICpobXBpLCBncnViX3VpbnQ4X3QgKmh2YWwsCi0JIGNvbnN0IGdj cnlfbWRfc3BlY190ICpoYXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7Ci0KIHN0 cnVjdAogewogICBjb25zdCBjaGFyICpuYW1lOworICBjb25zdCBjaGFyICpzaWdzZXhwOwogICBn cnViX3NpemVfdCBubXBpc2lnOworICBjb25zdCBjaGFyICpwdWJzZXhwOwogICBncnViX3NpemVf dCBubXBpcHViOwogICBzdHJ1Y3QgZ2NyeV9wa19zcGVjICoqYWxnbzsKLSAgaW50ICgqcGFkKSAo Z2NyeV9tcGlfdCAqaG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSAgICAgIGNvbnN0IGdjcnlf bWRfc3BlY190ICpoYXNoLCBzdHJ1Y3QgZ3J1Yl9wdWJsaWNfc3Via2V5ICpzayk7CisgIGNvbnN0 IGNoYXIgKnBhZGRpbmc7CiAgIGNvbnN0IGNoYXIgKm1vZHVsZTsKIH0gcGthbGdvc1tdID0KICAg ewotICAgIFsxXSA9IHsgInJzYSIsIDEsIDIsICZncnViX2NyeXB0b19wa19yc2EsIHJzYV9wYWQs ICJnY3J5X3JzYSIgfSwKLSAgICBbM10gPSB7ICJyc2EiLCAxLCAyLCAmZ3J1Yl9jcnlwdG9fcGtf cnNhLCByc2FfcGFkLCAiZ2NyeV9yc2EiIH0sCi0gICAgWzE3XSA9IHsgImRzYSIsIDIsIDQsICZn cnViX2NyeXB0b19wa19kc2EsIGRzYV9wYWQsICJnY3J5X2RzYSIgfSwKKyAgICBbMV0gPSB7ICJy c2EiLCAiKHNpZy12YWwgKHJzYSAocyAlTSkpKSIsIDEsICIocHVibGljLWtleSAoZHNhIChuICVN KSAoZSAlTSkpKSIsIDIsICZncnViX2NyeXB0b19wa19yc2EsICJwa2NzMSIsICJnY3J5X3JzYSIg fSwKKyAgICBbM10gPSB7ICJyc2EiLCAiKHNpZy12YWwgKHJzYSAocyAlTSkpKSIsIDEsICIocHVi bGljLWtleSAoZHNhIChuICVNKSAoZSAlTSkpKSIsIDIsICZncnViX2NyeXB0b19wa19yc2EsICJw a2NzMSIsICJnY3J5X3JzYSIgfSwKKyAgICBbMTddID0geyAiZHNhIiwgIihzaWctdmFsIChkc2Eg KHIgJU0pIChzICVNKSkpIiwgMiwKKwkgICAgICIocHVibGljLWtleSAoZHNhIChwICVNKSAocSAl TSkgKGcgJU0pICh5ICVNKSkpIiwKKwkgICAgIDQsICZncnViX2NyeXB0b19wa19kc2EsICJyYXci LCAiZ2NyeV9kc2EiIH0sCiAgIH07CiAKIHN0cnVjdCBncnViX3B1YmxpY19rZXkKQEAgLTE5Niw3 ICsxODIsNyBAQCBmcmVlX3BrIChzdHJ1Y3QgZ3J1Yl9wdWJsaWNfa2V5ICpwaykKICAgICAgIGdy dWJfc2l6ZV90IGk7CiAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSAoc2stPm1waXMp OyBpKyspCiAJaWYgKHNrLT5tcGlzW2ldKQotCSAgZ2NyeV9tcGlfcmVsZWFzZSAoc2stPm1waXNb aV0pOworCSAgX2djcnlfbXBpX3JlbGVhc2UgKHNrLT5tcGlzW2ldKTsKICAgICAgIG5zayA9IHNr LT5uZXh0OwogICAgICAgZ3J1Yl9mcmVlIChzayk7CiAgICAgfQpAQCAtMzAzLDcgKzI4OSw3IEBA IGdydWJfbG9hZF9wdWJsaWNfa2V5IChncnViX2ZpbGVfdCBmKQogCWdvdG8gZmFpbDsKIAogICAg ICAgZ3J1Yl9tZW1zZXQgKGZpbmdlcnByaW50X2NvbnRleHQsIDAsIEdSVUJfTURfU0hBMS0+Y29u dGV4dHNpemUpOwotICAgICAgR1JVQl9NRF9TSEExLT5pbml0IChmaW5nZXJwcmludF9jb250ZXh0 KTsKKyAgICAgIEdSVUJfTURfU0hBMS0+aW5pdCAoZmluZ2VycHJpbnRfY29udGV4dCwgMCk7CiAg ICAgICBHUlVCX01EX1NIQTEtPndyaXRlIChmaW5nZXJwcmludF9jb250ZXh0LCAiXHg5OSIsIDEp OwogICAgICAgbGVuX2JlID0gZ3J1Yl9jcHVfdG9fYmUxNiAobGVuKTsKICAgICAgIEdSVUJfTURf U0hBMS0+d3JpdGUgKGZpbmdlcnByaW50X2NvbnRleHQsICZsZW5fYmUsIHNpemVvZiAobGVuX2Jl KSk7CkBAIC0zMzYsNyArMzIyLDcgQEAgZ3J1Yl9sb2FkX3B1YmxpY19rZXkgKGdydWJfZmlsZV90 IGYpCiAKIAkgIEdSVUJfTURfU0hBMS0+d3JpdGUgKGZpbmdlcnByaW50X2NvbnRleHQsIGJ1ZmZl ciwgbGIgKyBzaXplb2YgKGdydWJfdWludDE2X3QpKTsKIAotCSAgaWYgKGdjcnlfbXBpX3NjYW4g KCZzay0+bXBpc1tpXSwgR0NSWU1QSV9GTVRfUEdQLAorCSAgaWYgKF9nY3J5X21waV9zY2FuICgm c2stPm1waXNbaV0sIEdDUllNUElfRk1UX1BHUCwKIAkJCSAgICAgYnVmZmVyLCBsYiArIHNpemVv ZiAoZ3J1Yl91aW50MTZfdCksIDApKQogCSAgICB7CiAJICAgICAgZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX1NJR05BVFVSRSwgTl8oImJhZCBzaWduYXR1cmUiKSk7CkBAIC0zOTQsNTEgKzM4MCw2 IEBAIGdydWJfY3J5cHRvX3BrX2xvY2F0ZV9zdWJrZXlfaW5fdHJ1c3RkYiAoZ3J1Yl91aW50NjRf dCBrZXlpZCkKICAgcmV0dXJuIDA7CiB9CiAKLQotc3RhdGljIGludAotZHNhX3BhZCAoZ2NyeV9t cGlfdCAqaG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSBjb25zdCBnY3J5X21kX3NwZWNfdCAq aGFzaCwgc3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2spCi17Ci0gIHVuc2lnbmVkIG5iaXRz ID0gZ2NyeV9tcGlfZ2V0X25iaXRzIChzay0+bXBpc1sxXSk7Ci0gIGdydWJfZHByaW50ZiAoImNy eXB0IiwgIm11c3QgYmUgJXUgYml0cyBnb3QgJWQgYml0c1xuIiwgbmJpdHMsCi0JCShpbnQpKDgg KiBoYXNoLT5tZGxlbikpOwotICByZXR1cm4gZ2NyeV9tcGlfc2NhbiAoaG1waSwgR0NSWU1QSV9G TVRfVVNHLCBodmFsLAotCQkJbmJpdHMgLyA4IDwgKHVuc2lnbmVkKSBoYXNoLT5tZGxlbiA/IG5i aXRzIC8gOAotCQkJOiAodW5zaWduZWQpIGhhc2gtPm1kbGVuLCAwKTsKLX0KLQotc3RhdGljIGlu dAotcnNhX3BhZCAoZ2NyeV9tcGlfdCAqaG1waSwgZ3J1Yl91aW50OF90ICpodmFsLAotCSBjb25z dCBnY3J5X21kX3NwZWNfdCAqaGFzaCwgc3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2spCi17 Ci0gIGdydWJfc2l6ZV90IHRsZW4sIGVtbGVuLCBmZmxlbjsKLSAgZ3J1Yl91aW50OF90ICplbSwg KmVtcHRyOwotICB1bnNpZ25lZCBuYml0cyA9IGdjcnlfbXBpX2dldF9uYml0cyAoc2stPm1waXNb MF0pOwotICBpbnQgcmV0OwotICB0bGVuID0gaGFzaC0+bWRsZW4gKyBoYXNoLT5hc25sZW47Ci0g IGVtbGVuID0gKG5iaXRzICsgNykgLyA4OwotICBpZiAoZW1sZW4gPCB0bGVuICsgMTEpCi0gICAg cmV0dXJuIDE7Ci0KLSAgZW0gPSBncnViX21hbGxvYyAoZW1sZW4pOwotICBpZiAoIWVtKQotICAg IHJldHVybiAxOwotCi0gIGVtWzBdID0gMHgwMDsKLSAgZW1bMV0gPSAweDAxOwotICBmZmxlbiA9 IGVtbGVuIC0gdGxlbiAtIDM7Ci0gIGZvciAoZW1wdHIgPSBlbSArIDI7IGVtcHRyIDwgZW0gKyAy ICsgZmZsZW47IGVtcHRyKyspCi0gICAgKmVtcHRyID0gMHhmZjsKLSAgKmVtcHRyKysgPSAweDAw OwotICBncnViX21lbWNweSAoZW1wdHIsIGhhc2gtPmFzbm9pZCwgaGFzaC0+YXNubGVuKTsKLSAg ZW1wdHIgKz0gaGFzaC0+YXNubGVuOwotICBncnViX21lbWNweSAoZW1wdHIsIGh2YWwsIGhhc2gt Pm1kbGVuKTsKLQotICByZXQgPSBnY3J5X21waV9zY2FuIChobXBpLCBHQ1JZTVBJX0ZNVF9VU0cs IGVtLCBlbWxlbiwgMCk7Ci0gIGdydWJfZnJlZSAoZW0pOwotICByZXR1cm4gcmV0OwotfQotCiBz dHJ1Y3QgZ3J1Yl9wdWJrZXlfY29udGV4dAogewogICBncnViX2ZpbGVfdCBzaWc7CkBAIC00ODMs MTUgKzQyNCwxMiBAQCBncnViX3ZlcmlmeV9zaWduYXR1cmVfaW5pdCAoc3RydWN0IGdydWJfcHVi a2V5X2NvbnRleHQgKmN0eHQsIGdydWJfZmlsZV90IHNpZykKICAgaWYgKHQgIT0gMCkKICAgICBy ZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgTl8oImJhZCBzaWduYXR1 cmUiKSk7CiAKLSAgaWYgKGggPj0gQVJSQVlfU0laRSAoaGFzaGVzKSB8fCBoYXNoZXNbaF0gPT0g TlVMTCkKLSAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX1NJR05BVFVSRSwgInVu a25vd24gaGFzaCIpOwotCiAgIGlmIChwayA+PSBBUlJBWV9TSVpFIChwa2FsZ29zKSB8fCBwa2Fs Z29zW3BrXS5uYW1lID09IE5VTEwpCiAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JB RF9TSUdOQVRVUkUsIE5fKCJiYWQgc2lnbmF0dXJlIikpOwogCi0gIGN0eHQtPmhhc2ggPSBncnVi X2NyeXB0b19sb29rdXBfbWRfYnlfbmFtZSAoaGFzaGVzW2hdKTsKKyAgY3R4dC0+aGFzaCA9IGdy dWJfY3J5cHRvX2xvb2t1cF9tZF9ieV9hbGdvIChoKTsKICAgaWYgKCFjdHh0LT5oYXNoKQotICAg IHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiaGFzaCBgJXMnIG5v dCBsb2FkZWQiLCBoYXNoZXNbaF0pOworICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9C QURfU0lHTkFUVVJFLCAiaGFzaCBgJWQnIG5vdCBsb2FkZWQiLCBoKTsKIAogICBncnViX2Rwcmlu dGYgKCJjcnlwdCIsICJhbGl2ZVxuIik7CiAKQEAgLTQ5OSw3ICs0MzcsNyBAQCBncnViX3Zlcmlm eV9zaWduYXR1cmVfaW5pdCAoc3RydWN0IGdydWJfcHVia2V5X2NvbnRleHQgKmN0eHQsIGdydWJf ZmlsZV90IHNpZykKICAgaWYgKCFjdHh0LT5oYXNoX2NvbnRleHQpCiAgICAgcmV0dXJuIGdydWJf ZXJybm87CiAKLSAgY3R4dC0+aGFzaC0+aW5pdCAoY3R4dC0+aGFzaF9jb250ZXh0KTsKKyAgY3R4 dC0+aGFzaC0+aW5pdCAoY3R4dC0+aGFzaF9jb250ZXh0LCAwKTsKICAgY3R4dC0+c2lnID0gc2ln OwogCiAgIHJldHVybiBHUlVCX0VSUl9OT05FOwpAQCAtNTI4LDcgKzQ2Niw2IEBAIGdydWJfdmVy aWZ5X3NpZ25hdHVyZV9yZWFsIChzdHJ1Y3QgZ3J1Yl9wdWJrZXlfY29udGV4dCAqY3R4dCwKICAg Z3J1Yl91aW50MTZfdCB1bmhhc2hlZF9zdWI7CiAgIGdydWJfc3NpemVfdCByOwogICBncnViX3Vp bnQ4X3QgaGFzaF9zdGFydFsyXTsKLSAgZ2NyeV9tcGlfdCBobXBpOwogICBncnViX3VpbnQ2NF90 IGtleWlkID0gMDsKICAgc3RydWN0IGdydWJfcHVibGljX3N1YmtleSAqc2s7CiAKQEAgLTYyMCw3 ICs1NTcsNyBAQCBncnViX3ZlcmlmeV9zaWduYXR1cmVfcmVhbCAoc3RydWN0IGdydWJfcHVia2V5 X2NvbnRleHQgKmN0eHQsCiAgICAgICBncnViX21lbWNweSAocmVhZGJ1ZiwgJmwsIHNpemVvZiAo bCkpOwogICAgICAgZ3J1Yl9kcHJpbnRmICgiY3J5cHQiLCAiYWxpdmVcbiIpOwogCi0gICAgICBp ZiAoZ2NyeV9tcGlfc2NhbiAoJm1waXNbaV0sIEdDUllNUElfRk1UX1BHUCwKKyAgICAgIGlmIChf Z2NyeV9tcGlfc2NhbiAoJm1waXNbaV0sIEdDUllNUElfRk1UX1BHUCwKIAkJCSByZWFkYnVmLCBs YiArIHNpemVvZiAoZ3J1Yl91aW50MTZfdCksIDApKQogCWdvdG8gZmFpbDsKICAgICAgIGdydWJf ZHByaW50ZiAoImNyeXB0IiwgImFsaXZlXG4iKTsKQEAgLTYzOCw4ICs1NzUsNiBAQCBncnViX3Zl cmlmeV9zaWduYXR1cmVfcmVhbCAoc3RydWN0IGdydWJfcHVia2V5X2NvbnRleHQgKmN0eHQsCiAg ICAgICBnb3RvIGZhaWw7CiAgICAgfQogCi0gIGlmIChwa2FsZ29zW3BrXS5wYWQgKCZobXBpLCBo dmFsLCBjdHh0LT5oYXNoLCBzaykpCi0gICAgZ290byBmYWlsOwogICBpZiAoISpwa2FsZ29zW3Br XS5hbGdvKQogICAgIHsKICAgICAgIGdydWJfZGxfbG9hZCAocGthbGdvc1twa10ubW9kdWxlKTsK QEAgLTY1Miw3ICs1ODcsMjQgQEAgZ3J1Yl92ZXJpZnlfc2lnbmF0dXJlX3JlYWwgKHN0cnVjdCBn cnViX3B1YmtleV9jb250ZXh0ICpjdHh0LAogCQkgIHBrYWxnb3NbcGtdLm1vZHVsZSk7CiAgICAg ICBnb3RvIGZhaWw7CiAgICAgfQotICBpZiAoKCpwa2FsZ29zW3BrXS5hbGdvKS0+dmVyaWZ5ICgw LCBobXBpLCBtcGlzLCBzay0+bXBpcywgMCwgMCkpCisKKyAgZ2NyeV9zZXhwX3QgaHNleHAsIHB1 YmtleSwgc2lnOworICBncnViX3NpemVfdCBlcnJvZjsKKworICBpZihfZ2NyeV9zZXhwX2J1aWxk KCZoc2V4cCwgJmVycm9mLCAiKGRhdGEgKGZsYWdzICVzKSAoaGFzaCAlcyAlYikpIiwgcGthbGdv c1twa10ucGFkZGluZywgY3R4dC0+aGFzaC0+bmFtZSwgY3R4dC0+aGFzaC0+bWRsZW4sIGh2YWwp KQorICAgIGdvdG8gZmFpbDsKKworICBpZihfZ2NyeV9zZXhwX2J1aWxkKCZwdWJrZXksICZlcnJv ZiwgcGthbGdvc1twa10ucHVic2V4cCwgc2stPm1waXNbMF0sIHNrLT5tcGlzWzFdLCBzay0+bXBp c1syXSwgc2stPm1waXNbM10pKQorICAgIGdvdG8gZmFpbDsKKworICBpZihfZ2NyeV9zZXhwX2J1 aWxkKCZzaWcsICZlcnJvZiwgcGthbGdvc1twa10uc2lnc2V4cCwgbXBpc1swXSwgbXBpc1sxXSkp CisgICAgZ290byBmYWlsOworCisgIF9nY3J5X3NleHBfZHVtcChzaWcpOworICBfZ2NyeV9zZXhw X2R1bXAoaHNleHApOworICBfZ2NyeV9zZXhwX2R1bXAocHVia2V5KTsKKworICBpZiAoKCpwa2Fs Z29zW3BrXS5hbGdvKS0+dmVyaWZ5IChzaWcsIGhzZXhwLCBwdWJrZXkpKQogICAgIGdvdG8gZmFp bDsKIAogICBncnViX2ZyZWUgKHJlYWRidWYpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2NvbW1h bmRzL3hudV91dWlkLmMgYi9ncnViLWNvcmUvY29tbWFuZHMveG51X3V1aWQuYwppbmRleCBhZTRi M2E0MTUuLjE0MDZjNDNmNSAxMDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2NvbW1hbmRzL3hudV91dWlk LmMKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL3hudV91dWlkLmMKQEAgLTY4LDcgKzY4LDcgQEAg Z3J1Yl9jbWRfeG51X3V1aWQgKGdydWJfY29tbWFuZF90IGNtZCBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSksCiAgIGN0eCA9IGdydWJfemFsbG9jIChHUlVCX01EX01ENS0+Y29udGV4dHNpemUpOwog ICBpZiAoIWN0eCkKICAgICByZXR1cm4gZ3J1Yl9lcnJubzsKLSAgR1JVQl9NRF9NRDUtPmluaXQg KGN0eCk7CisgIEdSVUJfTURfTUQ1LT5pbml0IChjdHgsIDApOwogICBHUlVCX01EX01ENS0+d3Jp dGUgKGN0eCwgaGFzaF9wcmVmaXgsIHNpemVvZiAoaGFzaF9wcmVmaXgpKTsKICAgR1JVQl9NRF9N RDUtPndyaXRlIChjdHgsICZzZXJpYWwsIHNpemVvZiAoc2VyaWFsKSk7CiAgIEdSVUJfTURfTUQ1 LT5maW5hbCAoY3R4KTsKZGlmZiAtLWdpdCBhL2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYyBi L2dydWItY29yZS9kaXNrL2NyeXB0b2Rpc2suYwppbmRleCA1ZTFlYjI3NDMuLmU1MmE3ZWJiNSAx MDA2NDQKLS0tIGEvZ3J1Yi1jb3JlL2Rpc2svY3J5cHRvZGlzay5jCisrKyBiL2dydWItY29yZS9k aXNrL2NyeXB0b2Rpc2suYwpAQCAtMjk3LDcgKzI5Nyw3IEBAIGdydWJfY3J5cHRvZGlza19lbmRl Y3J5cHQgKHN0cnVjdCBncnViX2NyeXB0b2Rpc2sgKmRldiwKIAkgICAgICByZXR1cm4gR1BHX0VS Ul9PVVRfT0ZfTUVNT1JZOwogCiAJICAgIHRtcCA9IGdydWJfY3B1X3RvX2xlNjQgKHNlY3RvciA8 PCBsb2dfc2VjdG9yX3NpemUpOwotCSAgICBkZXYtPml2X2hhc2gtPmluaXQgKGN0eCk7CisJICAg IGRldi0+aXZfaGFzaC0+aW5pdCAoY3R4LCAwKTsKIAkgICAgZGV2LT5pdl9oYXNoLT53cml0ZSAo Y3R4LCBkZXYtPml2X3ByZWZpeCwgZGV2LT5pdl9wcmVmaXhfbGVuKTsKIAkgICAgZGV2LT5pdl9o YXNoLT53cml0ZSAoY3R4LCAmdG1wLCBzaXplb2YgKHRtcCkpOwogCSAgICBkZXYtPml2X2hhc2gt PmZpbmFsIChjdHgpOwpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2lvL2d6aW8uYyBiL2dydWItY29y ZS9pby9nemlvLmMKaW5kZXggY2I3ZWIxZmUzLi5mYTlkOTQyYjIgMTAwNjQ0Ci0tLSBhL2dydWIt Y29yZS9pby9nemlvLmMKKysrIGIvZ3J1Yi1jb3JlL2lvL2d6aW8uYwpAQCAtMTIwMSw3ICsxMjAx LDcgQEAgaW5pdGlhbGl6ZV90YWJsZXMgKGdydWJfZ3ppb190IGd6aW8pCiAgIGd6aW8tPnRkID0g TlVMTDsKIAogICBpZiAoZ3ppby0+aGNvbnRleHQpCi0gICAgZ3ppby0+aGRlc2MtPmluaXQoZ3pp by0+aGNvbnRleHQpOworICAgIGd6aW8tPmhkZXNjLT5pbml0KGd6aW8tPmhjb250ZXh0LCAwKTsK IH0KIAogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvaW8vbHpvcGlvLmMgYi9ncnViLWNvcmUvaW8v bHpvcGlvLmMKaW5kZXggYTdkNDQyNTQzLi5jZWE5NDIzMDggMTAwNjQ0Ci0tLSBhL2dydWItY29y ZS9pby9sem9waW8uYworKysgYi9ncnViLWNvcmUvaW8vbHpvcGlvLmMKQEAgLTM0NSw3ICszNDUs NyBAQCB0ZXN0X2hlYWRlciAoZ3J1Yl9maWxlX3QgZmlsZSkKICAgICBpZiAoISBjb250ZXh0KQog ICAgICAgcmV0dXJuIDA7CiAKLSAgICBoY2hlY2stPmluaXQoY29udGV4dCk7CisgICAgaGNoZWNr LT5pbml0KGNvbnRleHQsIDApOwogCiAgICAgLyogTUFHSUMgaXMgbm90IGluY2x1ZGVkIGluIGNo ZWNrIGNhbGN1bGF0aW9uLiAgKi8KICAgICBoY2hlY2stPndyaXRlKGNvbnRleHQsICZoZWFkZXIu bHpvcF92ZXJzaW9uLCBzaXplb2YoaGVhZGVyKS0gTFpPUF9NQUdJQ19TSVpFKTsKZGlmZiAtLWdp dCBhL2dydWItY29yZS9saWIvYWRsZXIzMi5jIGIvZ3J1Yi1jb3JlL2xpYi9hZGxlcjMyLmMKaW5k ZXggNDNiNjhhZjYyLi5mODQ5Y2NlZTYgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvYWRsZXIz Mi5jCisrKyBiL2dydWItY29yZS9saWIvYWRsZXIzMi5jCkBAIC0yOSwxMCArMjksMTIgQEAgc3Ry dWN0IGFkbGVyMzJfY29udGV4dAogfTsKIAogc3RhdGljIHZvaWQKLWFkbGVyMzJfaW5pdCAodm9p ZCAqY29udGV4dCkKK2FkbGVyMzJfaW5pdCAodm9pZCAqY29udGV4dCwgdW5zaWduZWQgaW50IGZs YWdzKQogewogICBzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0ICpjdHggPSBjb250ZXh0OwogCisgICh2 b2lkKSBmbGFnczsKKwogICBjdHgtPmEgPSAxOwogICBjdHgtPmIgPSAwOwogfQpAQCAtODEsMTMg KzgzLDIyIEBAIGFkbGVyMzJfcmVhZCAodm9pZCAqY29udGV4dCkKIAogc3RhdGljIGdjcnlfbWRf c3BlY190IHNwZWNfYWRsZXIzMiA9CiAgIHsKLSAgICAiQURMRVIzMiIsIDAsIDAsIDAsIDQsCi0g ICAgYWRsZXIzMl9pbml0LCBhZGxlcjMyX3dyaXRlLCBhZGxlcjMyX2ZpbmFsLCBhZGxlcjMyX3Jl YWQsCi0gICAgc2l6ZW9mIChzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0KSwKKyAgICAuYWxnbyA9IEdD UllfTURfQURMRVIzMiwKKyAgICAuZmxhZ3MgPSB7LmRpc2FibGVkID0gMCwgLmZpcHMgPSAwfSwK KyAgICAubmFtZSA9ICJBRExFUjMyIiwKKyAgICAuYXNub2lkID0gTlVMTCwKKyAgICAuYXNubGVu ID0gMCwKKyAgICAub2lkcyA9IE5VTEwsCisgICAgLm1kbGVuID0gNCwKKyAgICAuaW5pdCA9IGFk bGVyMzJfaW5pdCwKKyAgICAud3JpdGUgPSBhZGxlcjMyX3dyaXRlLAorICAgIC5maW5hbCA9IGFk bGVyMzJfZmluYWwsCisgICAgLnJlYWQgPSBhZGxlcjMyX3JlYWQsCisgICAgLmNvbnRleHRzaXpl ID0gc2l6ZW9mIChzdHJ1Y3QgYWRsZXIzMl9jb250ZXh0KSwKKyAgICAuYmxvY2tzaXplID0gNjQs CiAjaWZkZWYgR1JVQl9VVElMCiAgICAgLm1vZG5hbWUgPSAiYWRsZXIzMiIsCiAjZW5kaWYKLSAg ICAuYmxvY2tzaXplID0gNjQKICAgfTsKIAogCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2Ny YzY0LmMgYi9ncnViLWNvcmUvbGliL2NyYzY0LmMKaW5kZXggNDk2MGYzZjg5Li5jMjMxZmE5N2Mg MTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvY3JjNjQuYworKysgYi9ncnViLWNvcmUvbGliL2Ny YzY0LmMKQEAgLTYxLDggKzYxLDEwIEBAIGluaXRfY3JjNjRfdGFibGUgKHZvaWQpCiB9CiAKIHN0 YXRpYyB2b2lkCi1jcmM2NF9pbml0ICh2b2lkICpjb250ZXh0KQorY3JjNjRfaW5pdCAodm9pZCAq Y29udGV4dCwgdW5zaWduZWQgaW50IGZsYWdzKQogeworICAodm9pZCkgZmxhZ3M7CisKICAgaWYg KCEgY3JjNjRfdGFibGVbMV0pCiAgICAgaW5pdF9jcmM2NF90YWJsZSAoKTsKICAgKihncnViX3Vp bnQ2NF90ICopIGNvbnRleHQgPSAwOwpAQCAtOTcsMTAgKzk5LDIyIEBAIGNyYzY0X2ZpbmFsICh2 b2lkICpjb250ZXh0IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSkKIAogZ2NyeV9tZF9zcGVjX3Qg X2djcnlfZGlnZXN0X3NwZWNfY3JjNjQgPQogICB7Ci0gICAgIkNSQzY0IiwgMCwgMCwgMCwgOCwK LSAgICBjcmM2NF9pbml0LCBjcmM2NF93cml0ZSwgY3JjNjRfZmluYWwsIGNyYzY0X3JlYWQsCi0g ICAgc2l6ZW9mIChncnViX3VpbnQ2NF90KSwKLSAgICAuYmxvY2tzaXplID0gNjQKKyAgICAuYWxn byA9IEdDUllfTURfQ1JDNjQsCisgICAgLmZsYWdzID0gey5kaXNhYmxlZCA9IDAsIC5maXBzID0g MH0sCisgICAgLm5hbWUgPSAiQ1JDNjQiLAorICAgIC5hc25vaWQgPSBOVUxMLAorICAgIC5hc25s ZW4gPSAwLAorICAgIC5vaWRzID0gTlVMTCwKKyAgICAubWRsZW4gPSA4LAorICAgIC5pbml0ID0g Y3JjNjRfaW5pdCwKKyAgICAud3JpdGUgPSBjcmM2NF93cml0ZSwKKyAgICAuZmluYWwgPSBjcmM2 NF9maW5hbCwKKyAgICAucmVhZCA9IGNyYzY0X3JlYWQsCisgICAgLmNvbnRleHRzaXplID0gc2l6 ZW9mIChncnViX3VpbnQ2NF90KSwKKyAgICAuYmxvY2tzaXplID0gNjQsCisjaWZkZWYgR1JVQl9V VElMCisgICAgLm1vZG5hbWUgPSAiY3JjNjQiLAorI2VuZGlmCiAgIH07CiAKIEdSVUJfTU9EX0lO SVQoY3JjNjQpCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2NyeXB0by5jIGIvZ3J1Yi1jb3Jl L2xpYi9jcnlwdG8uYwppbmRleCAzOTZmNzY0MTAuLmRkNjBkZDRhYyAxMDA2NDQKLS0tIGEvZ3J1 Yi1jb3JlL2xpYi9jcnlwdG8uYworKysgYi9ncnViLWNvcmUvbGliL2NyeXB0by5jCkBAIC0zNyw2 ICszNyw4IEBAIHN0cnVjdCBncnViX2NyeXB0b19obWFjX2hhbmRsZQogc3RhdGljIGdjcnlfY2lw aGVyX3NwZWNfdCAqZ3J1Yl9jaXBoZXJzID0gTlVMTDsKIHN0YXRpYyBnY3J5X21kX3NwZWNfdCAq Z3J1Yl9kaWdlc3RzID0gTlVMTDsKIAoraW50IF9nY3J5X25vX2ZpcHNfbW9kZV9yZXF1aXJlZCA9 IDE7CisKIHZvaWQgKCpncnViX2NyeXB0b19hdXRvbG9hZF9ob29rKSAoY29uc3QgY2hhciAqbmFt ZSkgPSBOVUxMOwogCiAvKiBCYXNlZCBvbiBsaWJnY3J5cHQtMS40LjQvc3JjL21pc2MuYy4gICov CkBAIC01Niw2ICs1OCwxNyBAQCBfZ2NyeV9idXJuX3N0YWNrIChpbnQgc2l6ZSkKICAgZ3J1Yl9i dXJuX3N0YWNrIChzaXplKTsKIH0KIAordm9pZAorX19nY3J5X2J1cm5fc3RhY2sgKHVuc2lnbmVk IGludCBzaXplKQoreworICBncnViX2J1cm5fc3RhY2sgKHNpemUpOworfQorCit2b2lkCitfX2dj cnlfYnVybl9zdGFja19kdW1teSAodm9pZCkKK3sKK30KKwogdm9pZCBfX2F0dHJpYnV0ZV9fICgo bm9yZXR1cm4pKQogX2djcnlfYXNzZXJ0X2ZhaWxlZCAoY29uc3QgY2hhciAqZXhwciwgY29uc3Qg Y2hhciAqZmlsZSwgaW50IGxpbmUsCiAJCSAgICAgY29uc3QgY2hhciAqZnVuYykKQEAgLTY0LDYg Kzc3LDEyIEBAIF9nY3J5X2Fzc2VydF9mYWlsZWQgKGNvbnN0IGNoYXIgKmV4cHIsIGNvbnN0IGNo YXIgKmZpbGUsIGludCBsaW5lLAogICBncnViX2ZhdGFsICgiYXNzZXJ0aW9uICVzIGF0ICVzOiVk ICglcykgZmFpbGVkXG4iLCBleHByLCBmaWxlLCBsaW5lLCBmdW5jKTsKIH0KIAordm9pZAorX2dj cnlfYnVnKCBjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZnVuYyApCit7 CisgICAgZ3J1Yl9mYXRhbCAoIi4uLiB0aGlzIGlzIGEgYnVnICglczolZDolcylcbiIsIGZpbGUs IGxpbmUsIGZ1bmMpOworfQorCiAKIHZvaWQgX2djcnlfbG9nX2Vycm9yIChjb25zdCBjaGFyICpm bXQsIC4uLikKIHsKQEAgLTgzLDYgKzEwMiwzNiBAQCB2b2lkIF9nY3J5X2xvZ19lcnJvciAoY29u c3QgY2hhciAqZm10LCAuLi4pCiAgICAgfQogfQogCit2b2lkIF9nY3J5X2xvZ19pbmZvIChjb25z dCBjaGFyICpmbXQsIC4uLikKK3sKKyAgdmFfbGlzdCBhcmdzOworICBjb25zdCBjaGFyICpkZWJ1 ZyA9IGdydWJfZW52X2dldCAoImRlYnVnIik7CisKKyAgaWYgKCEgZGVidWcpCisgICAgcmV0dXJu OworCisgIGlmIChncnViX3N0cndvcmQgKGRlYnVnLCAiYWxsIikgfHwgZ3J1Yl9zdHJ3b3JkIChk ZWJ1ZywgImdjcnlwdCIpKQorICAgIHsKKyAgICAgIGdydWJfcHJpbnRmICgiZ2NyeXB0IGluZm86 ICIpOworICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CisgICAgICBncnViX3ZwcmludGYgKGZt dCwgYXJncyk7CisgICAgICB2YV9lbmQgKGFyZ3MpOworICAgICAgZ3J1Yl9yZWZyZXNoICgpOwor ICAgIH0KK30KKwordm9pZAorX2djcnlfZmFzdF93aXBlbWVtb3J5MiAodm9pZCAqcHRyLCBpbnQg c2V0LCBncnViX3NpemVfdCBsZW4pCit7CisgIGdydWJfbWVtc2V0KHB0ciwgc2V0LCBsZW4pOwor fQorCit2b2lkCitfZ2NyeV9mYXN0X3dpcGVtZW1vcnkgKHZvaWQgKnB0ciwgZ3J1Yl9zaXplX3Qg bGVuKQoreworICBncnViX21lbXNldChwdHIsIDAsIGxlbik7Cit9CisKIHZvaWQKIGdydWJfY2lw aGVyX3JlZ2lzdGVyIChnY3J5X2NpcGhlcl9zcGVjX3QgKmNpcGhlcikKIHsKQEAgLTEyOSw3ICsx NzgsNyBAQCBncnViX2NyeXB0b19oYXNoIChjb25zdCBnY3J5X21kX3NwZWNfdCAqaGFzaCwgdm9p ZCAqb3V0LCBjb25zdCB2b2lkICppbiwKIAogICBpZiAoaGFzaC0+Y29udGV4dHNpemUgPiBzaXpl b2YgKGN0eCkpCiAgICAgZ3J1Yl9mYXRhbCAoIlRvbyBsYXJnZSBtZCBjb250ZXh0Iik7Ci0gIGhh c2gtPmluaXQgKCZjdHgpOworICBoYXNoLT5pbml0ICgmY3R4LCAwKTsKICAgaGFzaC0+d3JpdGUg KCZjdHgsIGluLCBpbmxlbik7CiAgIGhhc2gtPmZpbmFsICgmY3R4KTsKICAgZ3J1Yl9tZW1jcHkg KG91dCwgaGFzaC0+cmVhZCAoJmN0eCksIGhhc2gtPm1kbGVuKTsKQEAgLTE1Myw2ICsyMDIsOTEg QEAgZ3J1Yl9jcnlwdG9fbG9va3VwX21kX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCiAgICAg fQogfQogCitjb25zdCBnY3J5X21kX3NwZWNfdCAqCitncnViX2NyeXB0b19sb29rdXBfbWRfYnlf b2lkIChjb25zdCBjaGFyICpvaWQpCit7CisgIGNvbnN0IGdjcnlfbWRfc3BlY190ICptZDsKKwor ICBpZiAoIW9pZCkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoZ3J1Yl9zdHJuY21wIChvaWQs ICJvaWQuIiwgNCkgPT0gMCB8fCBncnViX3N0cm5jbXAgKG9pZCwgIk9JRC4iLCA0KSA9PSAwKQor ICAgIG9pZCArPSA0OworCisKKyAgZm9yIChtZCA9IGdydWJfZGlnZXN0czsgbWQ7IG1kID0gbWQt Pm5leHQpCisgICAgeworICAgICAgY29uc3QgZ2NyeV9tZF9vaWRfc3BlY190ICpvaWRfc3BlY3Mg PSBtZC0+b2lkczsKKyAgICAgIGlmIChvaWRfc3BlY3MpCisgICAgICAgIHsKKyAgICAgICAgICBm b3IgKGludCBqID0gMDsgb2lkX3NwZWNzW2pdLm9pZHN0cmluZzsgaisrKQorICAgICAgICAgICAg aWYgKGdydWJfc3RyY2FzZWNtcCAob2lkLCBvaWRfc3BlY3Nbal0ub2lkc3RyaW5nKSA9PSAwKQor ICAgICAgICAgICAgICByZXR1cm4gbWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgcmV0dXJuIE5V TEw7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICptZF9hbGdvc1tdID0geworICAgIFsxXSA9ICJN RDUiLAorICAgIFsyXSA9ICJTSEExIiwKKyAgICBbM10gPSAiUklQRU1EMTYwIiwKKyAgICBbNl0g PSAiVElHRVIiLAorICAgIFs4XSA9ICJTSEEyNTYiLAorICAgIFs5XSA9ICJTSEEzODQiLAorICAg IFsxMF0gPSAiU0hBNTEyIiwKKyAgICBbMTFdID0gIlNIQTIyNCIsCisKKyAgICBbMzAxXSA9ICJN RDQiLAorICAgIFszMDJdID0gIkNSQzMyIiwKKyAgICBbMzAzXSA9ICJDUkMzMlJGQzE1MTAiLAor ICAgIFszMDRdID0gIkNSQzI0UkZDMjQ0MCIsCisgICAgWzMwNV0gPSAiV0hJUkxQT09MIiwKKyAg ICBbMzA2XSA9ICJUSUdFUjEiLAorICAgIFszMDddID0gIlRJR0VSMiIsCisgICAgWzMwOF0gPSAi R09TVFIzNDExXzk0IiwKKyAgICBbMzA5XSA9ICJTVFJJQk9HMjU2IiwKKyAgICBbMzEwXSA9ICJT VFJJQk9HNTEyIiwKKyAgICBbMzExXSA9ICJHT1NUUjM0MTFfQ1AiLAorICAgIFszMTJdID0gIlNI QTMtMjI0IiwKKyAgICBbMzEzXSA9ICJTSEEzLTI1NiIsCisgICAgWzMxNF0gPSAiU0hBMy0zODQi LAorICAgIFszMTVdID0gIlNIQTMtNTEyIiwKKyAgICBbMzE2XSA9ICJTSEFLRTEyOCIsCisgICAg WzMxN10gPSAiU0hBS0UyNTYiLAorICAgIFszMThdID0gIkJMQUtFMkJfNTEyIiwKKyAgICBbMzE5 XSA9ICJCTEFLRTJCXzM4NCIsCisgICAgWzMyMF0gPSAiQkxBS0UyQl8yNTYiLAorICAgIFszMjFd ID0gIkJMQUtFMkJfMTYwIiwKKyAgICBbMzIyXSA9ICJCTEFLRTJTXzI1NiIsCisgICAgWzMyM10g PSAiQkxBS0UyU18yMjQiLAorICAgIFszMjRdID0gIkJMQUtFMlNfMTYwIiwKKyAgICBbMzI1XSA9 ICJCTEFLRTJTXzEyOCIsCisgICAgWzMyNl0gPSAiU00zIiwKKyAgICBbMzI3XSA9ICJTSEE1MTJf MjU2IiwKKyAgICBbMzI4XSA9ICJTSEE1MTJfMjI0IiwKK307CisKKworY29uc3QgZ2NyeV9tZF9z cGVjX3QgKgorZ3J1Yl9jcnlwdG9fbG9va3VwX21kX2J5X2FsZ28gKGludCBhbGdvKQoreworICBj b25zdCBnY3J5X21kX3NwZWNfdCAqbWQ7CisgIGludCBmaXJzdCA9IDE7CisgIHdoaWxlICgxKQor ICAgIHsKKyAgICAgIGZvciAobWQgPSBncnViX2RpZ2VzdHM7IG1kOyBtZCA9IG1kLT5uZXh0KQor CWlmIChhbGdvID09IG1kLT5hbGdvKQorCSAgcmV0dXJuIG1kOworICAgICAgaWYgKGdydWJfY3J5 cHRvX2F1dG9sb2FkX2hvb2sgJiYgZmlyc3QgJiYgYWxnbyA+IDAgJiYgYWxnbyA8IChpbnQpQVJS QVlfU0laRShtZF9hbGdvcykgJiYgbWRfYWxnb3NbYWxnb10pIHsKKwlncnViX2NyeXB0b19hdXRv bG9hZF9ob29rIChtZF9hbGdvc1thbGdvXSk7CisgICAgICB9IGVsc2UKKwlyZXR1cm4gTlVMTDsK KyAgICAgIGZpcnN0ID0gMDsKKyAgICB9Cit9CisKIGNvbnN0IGdjcnlfY2lwaGVyX3NwZWNfdCAq CiBncnViX2NyeXB0b19sb29rdXBfY2lwaGVyX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCiB7 CkBAIC0xOTYsNyArMzMwLDkgQEAgZ3J1Yl9jcnlwdG9fY2lwaGVyX3NldF9rZXkgKGdydWJfY3J5 cHRvX2NpcGhlcl9oYW5kbGVfdCBjaXBoZXIsCiAJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAq a2V5LAogCQkJICAgIHVuc2lnbmVkIGtleWxlbikKIHsKLSAgcmV0dXJuIGNpcGhlci0+Y2lwaGVy LT5zZXRrZXkgKGNpcGhlci0+Y3R4LCBrZXksIGtleWxlbik7CisgIC8qIFRPRE86IEZpeCB0aGlz LiBJdCdzIHVnbHkgYXMgaGVsbC4gICovCisgIHZvaWQgKmJ1bGtfb3BzWzEwMF07CisgIHJldHVy biBjaXBoZXItPmNpcGhlci0+c2V0a2V5IChjaXBoZXItPmN0eCwga2V5LCBrZXlsZW4sICh2b2lk ICopIGJ1bGtfb3BzKTsKIH0KIAogZ2NyeV9lcnJfY29kZV90CkBAIC0zNDMsNyArNDc5LDcgQEAg Z3J1Yl9jcnlwdG9faG1hY19pbml0IChjb25zdCBzdHJ1Y3QgZ2NyeV9tZF9zcGVjICptZCwKICAg Z3J1Yl9mcmVlIChoZWxwa2V5KTsKICAgaGVscGtleSA9IE5VTEw7CiAKLSAgbWQtPmluaXQgKGN0 eCk7CisgIG1kLT5pbml0IChjdHgsIDApOwogCiAgIG1kLT53cml0ZSAoY3R4LCBpcGFkLCBtZC0+ YmxvY2tzaXplKTsgLyogaW5uZXIgcGFkICovCiAgIGdydWJfbWVtc2V0IChpcGFkLCAwLCBtZC0+ YmxvY2tzaXplKTsKQEAgLTM5MCw3ICs1MjYsNyBAQCBncnViX2NyeXB0b19obWFjX2ZpbmkgKHN0 cnVjdCBncnViX2NyeXB0b19obWFjX2hhbmRsZSAqaG5kLCB2b2lkICpvdXQpCiAgIGhuZC0+bWQt PnJlYWQgKGhuZC0+Y3R4KTsKICAgcCA9IGhuZC0+bWQtPnJlYWQgKGhuZC0+Y3R4KTsKIAotICBo bmQtPm1kLT5pbml0IChjdHgyKTsKKyAgaG5kLT5tZC0+aW5pdCAoY3R4MiwgMCk7CiAgIGhuZC0+ bWQtPndyaXRlIChjdHgyLCBobmQtPm9wYWQsIGhuZC0+bWQtPmJsb2Nrc2l6ZSk7CiAgIGhuZC0+ bWQtPndyaXRlIChjdHgyLCBwLCBobmQtPm1kLT5tZGxlbik7CiAgIGhuZC0+bWQtPmZpbmFsIChj dHgyKTsKQEAgLTQzMywxOSArNTY5LDEwNiBAQCBncnViX2NyeXB0b19nY3J5X2Vycm9yIChnY3J5 X2Vycl9jb2RlX3QgaW4pCiAgIHJldHVybiBHUlVCX0FDQ0VTU19ERU5JRUQ7CiB9CiAKKworLyoK KyAqIENvbXBhcmUgYnl0ZSBhcnJheXMgb2YgbGVuZ3RoIExFTiwgcmV0dXJuIDEgaWYgaXQncyBu b3Qgc2FtZSwKKyAqIDAsIG90aGVyd2lzZS4KKyAqLwogaW50Ci1ncnViX2NyeXB0b19tZW1jbXAg KGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIGdydWJfc2l6ZV90IG4pCitncnViX2NyeXB0 b19tZW1jbXAgKGNvbnN0IHZvaWQgKmIxLCBjb25zdCB2b2lkICpiMiwgZ3J1Yl9zaXplX3QgbGVu KQogewotICByZWdpc3RlciBncnViX3NpemVfdCBjb3VudGVyID0gMDsKLSAgY29uc3QgZ3J1Yl91 aW50OF90ICpwYSwgKnBiOworICBjb25zdCBncnViX3VpbnQ4X3QgKmEgPSBiMTsKKyAgY29uc3Qg Z3J1Yl91aW50OF90ICpiID0gYjI7CisgIGludCBhYiwgYmE7CisgIGdydWJfc2l6ZV90IGk7CiAK LSAgZm9yIChwYSA9IGEsIHBiID0gYjsgbjsgcGErKywgcGIrKywgbi0tKQorICAvKiBDb25zdGFu dC10aW1lIGNvbXBhcmUuICovCisgIGZvciAoaSA9IDAsIGFiID0gMCwgYmEgPSAwOyBpIDwgbGVu OyBpKyspCiAgICAgewotICAgICAgaWYgKCpwYSAhPSAqcGIpCi0JY291bnRlcisrOworICAgICAg LyogSWYgYVtpXSAhPSBiW2ldLCBlaXRoZXIgYWIgb3IgYmEgd2lsbCBiZSBuZWdhdGl2ZS4gKi8K KyAgICAgIGFiIHw9IGFbaV0gLSBiW2ldOworICAgICAgYmEgfD0gYltpXSAtIGFbaV07CiAgICAg fQogCi0gIHJldHVybiAhIWNvdW50ZXI7CisgIC8qICdhYiB8IGJhJyBpcyBuZWdhdGl2ZSB3aGVu IGJ1ZmZlcnMgYXJlIG5vdCBlcXVhbCwgZXh0cmFjdCBzaWduIGJpdC4gICovCisgIHJldHVybiAo KHVuc2lnbmVkIGludCkoYWIgfCBiYSkgPj4gKHNpemVvZih1bnNpZ25lZCBpbnQpICogOCAtIDEp KSAmIDE7Cit9CisKKwordm9pZCAqCitfZ2NyeV9tYWxsb2Nfc2VjdXJlIChncnViX3NpemVfdCBu KQoreworICByZXR1cm4gZ3J1Yl9tYWxsb2Mobik7Cit9CisKK3ZvaWQgKgorX2djcnlfbWFsbG9j IChncnViX3NpemVfdCBuKQoreworICByZXR1cm4gZ3J1Yl9tYWxsb2Mobik7Cit9CisKK3ZvaWQg KgorX2djcnlfeG1hbGxvYyhncnViX3NpemVfdCBuKQoreworICB2b2lkICpyZXQgPSBncnViX21h bGxvYyhuKTsKKyAgaWYgKHJldCA9PSBOVUxMKQorICAgIGdydWJfZmF0YWwoIl9nY3J5X3htYWxs b2MgZmFpbGVkIik7CisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgKgorX2djcnlfeG1hbGxvY19z ZWN1cmUoZ3J1Yl9zaXplX3QgbikKK3sKKyAgdm9pZCAqcmV0ID0gZ3J1Yl9tYWxsb2Mobik7Cisg IGlmIChyZXQgPT0gTlVMTCkKKyAgICBncnViX2ZhdGFsKCJfZ2NyeV94bWFsbG9jX3NlY3VyZSBm YWlsZWQiKTsKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZCBfZ2NyeV9mcmVlICh2b2lkICpwKQor eworICBncnViX2ZyZWUgKHApOworfQorCit2b2lkICoKK19nY3J5X3hyZWFsbG9jICh2b2lkICph LCBncnViX3NpemVfdCBuKQoreworICB2b2lkICpyZXQgPSBncnViX3JlYWxsb2MoYSwgbik7Cisg IGlmIChyZXQgPT0gTlVMTCkKKyAgICBncnViX2ZhdGFsKCJfZ2NyeV94cmVhbGxvYyBmYWlsZWQi KTsKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZCAqCitfZ2NyeV94Y2FsbG9jIChncnViX3NpemVf dCBuLCBncnViX3NpemVfdCBtKQoreworICB2b2lkICpyZXQgPSBncnViX2NhbGxvYyhuLCBtKTsK KyAgaWYgKHJldCA9PSBOVUxMKQorICAgIGdydWJfZmF0YWwoIl9nY3J5X3hjYWxsb2MgZmFpbGVk Iik7CisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgKgorX2djcnlfeGNhbGxvY19zZWN1cmUgKGdy dWJfc2l6ZV90IG4sIGdydWJfc2l6ZV90IG0pCit7CisgIHZvaWQgKnJldCA9IGdydWJfY2FsbG9j KG4sIG0pOworICBpZiAocmV0ID09IE5VTEwpCisgICAgZ3J1Yl9mYXRhbCgiX2djcnlfeGNhbGxv Y19zZWN1cmUgZmFpbGVkIik7CisgIHJldHVybiByZXQ7Cit9CisKKworaW50CitfZ2NyeV9pc19z ZWN1cmUgKGNvbnN0IHZvaWQgKmEpCit7CisgICh2b2lkKSBhOworCisgIHJldHVybiAwOworfQor Cit2b2lkIF9nY3J5X2RpdmlkZV9ieV96ZXJvICh2b2lkKQoreworICBncnViX2ZhdGFsKCJnY3J5 cHQgZGl2aXNpb24gYnkgemVybyIpOwogfQogCiAjaWZuZGVmIEdSVUJfVVRJTApkaWZmIC0tZ2l0 IGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtcGF0Y2hlcy8wMV9tZC5wYXRjaCBiL2dydWItY29y ZS9saWIvbGliZ2NyeXB0LXBhdGNoZXMvMDFfbWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi4wOGEwYzJjNTEKLS0tIC9kZXYvbnVsbAorKysgYi9ncnViLWNvcmUv bGliL2xpYmdjcnlwdC1wYXRjaGVzLzAxX21kLnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACistLS0g YS9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci9tZC5jCTIwMjQtMDUtMjEgMDE6 MjI6MDQuMjIyMDg0NzczICswMzAwCisrKysgYi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdC1ncnVi L2NpcGhlci9tZC5jCTIwMjQtMDUtMjEgMDE6MjI6MDcuMzY4MDk5OTYxICswMzAwCitAQCAtMjAs MTEgKzIwLDI1IEBACisgICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW07IGlmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAgKi8K KysjaW5jbHVkZSA8Y29uZmlnLmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0 ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKyAK KyAjaW5jbHVkZSAiZzEwbGliLmgiCisgI2luY2x1ZGUgImNpcGhlci5oIgorIAorKyNkZWZpbmUg X2djcnlfbWRfc2VsZnRlc3QoYSxiLGMpIDAKKyt0eXBlZGVmIHN0cnVjdCBnY3J5X21kX2xpc3QK Kyt7CisrICBjb25zdCBnY3J5X21kX3NwZWNfdCAqc3BlYzsKKysgIHN0cnVjdCBnY3J5X21kX2xp c3QgKm5leHQ7CisrICBzaXplX3QgYWN0dWFsX3N0cnVjdF9zaXplOyAgICAgLyogQWxsb2NhdGVk IHNpemUgb2YgdGhpcyBzdHJ1Y3R1cmUuICovCisrICBQUk9QRVJMWV9BTElHTkVEX1RZUEUgY29u dGV4dFsxXTsKKyt9IEdjcnlEaWdlc3RFbnRyeTsKKysKKyAKKyAvKiBUaGlzIGlzIHRoZSBsaXN0 IG9mIHRoZSBkaWdlc3QgaW1wbGVtZW50YXRpb25zIGluY2x1ZGVkIGluCisgICAgbGliZ2NyeXB0 LiAgKi8KK0BAIC01Myw3ICs2Nyw2IEBACisgc3RhdGljIHZvaWQgbWRfY2xvc2UgKGdjcnlfbWRf aGRfdCBhKTsKKyBzdGF0aWMgdm9pZCBtZF93cml0ZSAoZ2NyeV9tZF9oZF90IGEsIGNvbnN0IHZv aWQgKmluYnVmLCBzaXplX3QgaW5sZW4pOworIHN0YXRpYyBieXRlICptZF9yZWFkKCBnY3J5X21k X2hkX3QgYSwgaW50IGFsZ28gKTsKKy1zdGF0aWMgaW50IG1kX2dldF9hbGdvKCBnY3J5X21kX2hk X3QgYSApOworIHN0YXRpYyBpbnQgbWRfZGlnZXN0X2xlbmd0aCggaW50IGFsZ28gKTsKKyBzdGF0 aWMgdm9pZCBtZF9zdGFydF9kZWJ1ZyAoIGdjcnlfbWRfaGRfdCBhLCBjb25zdCBjaGFyICpzdWZm aXggKTsKKyBzdGF0aWMgdm9pZCBtZF9zdG9wX2RlYnVnICggZ2NyeV9tZF9oZF90IGEgKTsKK0BA IC0xODYsOSArMTk5LDYgQEAKKyAKKyAgIGlmICghIGVycikKKyAgICAgeworLSAgICAgIC8qIEht bW0sIHNob3VsZCB3ZSByZWFsbHkgZG8gdGhhdD8gLSB5ZXMgWy13a10gKi8KKy0gICAgICBfZ2Ny eV9mYXN0X3JhbmRvbV9wb2xsICgpOworLQorICAgICAgIGlmIChhbGdvKQorIAl7CisgCSAgZXJy ID0gbWRfZW5hYmxlIChoZCwgYWxnbyk7CitAQCAtNDM3LDE0ICs0NDcsNiBAQAorIHsKKyAgIEdj cnlEaWdlc3RFbnRyeSAqcjsKKyAKKy0gIGlmIChhLT5jdHgtPmRlYnVnKQorLSAgICB7CistICAg ICAgaWYgKGEtPmJ1ZnBvcyAmJiBmd3JpdGUgKGEtPmJ1ZiwgYS0+YnVmcG9zLCAxLCBhLT5jdHgt PmRlYnVnKSAhPSAxKQorLQlCVUcoKTsKKy0gICAgICBpZiAoaW5sZW4gJiYgZndyaXRlIChpbmJ1 ZiwgaW5sZW4sIDEsIGEtPmN0eC0+ZGVidWcpICE9IDEpCistCUJVRygpOworLSAgICB9CistCisg ICBmb3IgKHIgPSBhLT5jdHgtPmxpc3Q7IHI7IHIgPSByLT5uZXh0KQorICAgICB7CisgICAgICAg aWYgKGEtPmJ1ZnBvcykKK0BAIC02NDMsNiArNjQ1LDcgQEAKKyAgICAgICByZXR1cm47CisgICAg IH0KKyAKKysjaWYgMAorICAgaWYgKHNwZWMtPmhhc2hfYnVmZmVycyAhPSBOVUxMKQorICAgICB7 CisgICAgICAgZ2NyeV9idWZmZXJfdCBpb3Y7CitAQCAtNjU5LDYgKzY2Miw3IEBACisgICAgICAg c3BlYy0+aGFzaF9idWZmZXJzIChkaWdlc3QsIHNwZWMtPm1kbGVuLCAmaW92LCAxKTsKKyAgICAg fQorICAgZWxzZQorKyNlbmRpZgorICAgICB7CisgICAgICAgLyogRm9yIHRoZSBvdGhlcnMgd2Ug ZG8gbm90IGhhdmUgYSBmYXN0IGZ1bmN0aW9uLCBzbyB3ZSB1c2UgdGhlCisgICAgICAgICAgbm9y bWFsIGZ1bmN0aW9ucy4gKi8KK0BAIC02OTQsNyArNjk4LDcgQEAKKyAgICBESUdFU1RMRU4gbWF5 IGFsc28gYmUgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aCBvciwgaW4gY2FzZSBvZiBYT0YKKyAgICBh bGdvcml0aG1zLCBESUdFU1RMRU4gaW5kaWNhdGVzIG51bWJlciBieXRlcyB0byBleHRyYWN0IGZy b20gWE9GCisgICAgdG8gRElHRVNULiAgKi8KKy0jZGVmaW5lIF9nY3J5X21kX2hhc2hfYnVmZmVy cyAwCisrCisgCisgLyogU2hvcnRjdXQgZnVuY3Rpb24gdG8gaGFzaCBtdWx0aXBsZSBidWZmZXJz IHdpdGggYSBnaXZlbiBhbGdvLiAgSW4KKyAgICBjb250cmFzdCB0byBnY3J5X21kX2hhc2hfYnVm ZmVyLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJyb3Igb24KK0BAIC03MTAsNyArNzE0LDYg QEAKKyAgICBPbiBzdWNjZXNzIDAgaXMgcmV0dXJuZWQgYW5kIHJlc3VsdGluZyBoYXNoIG9yIEhN QUMgaXMgc3RvcmVkIGF0CisgICAgRElHRVNUIHdoaWNoIG11c3QgaGF2ZSBiZWVuIHByb3ZpZGVk IGJ5IHRoZSBjYWxsZXIgd2l0aCBhbgorICAgIGFwcHJvcHJpYXRlIGxlbmd0aC4gICovCistI2Rl ZmluZSBfZ2NyeV9tZF9oYXNoX2J1ZmZlcnMgMAorIAorIAorIAorQEAgLTg0MSw0MyArODQ0LDE1 IEBACisgc3RhdGljIHZvaWQKKyBtZF9zdGFydF9kZWJ1ZyAoIGdjcnlfbWRfaGRfdCBtZCwgY29u c3QgY2hhciAqc3VmZml4ICkKKyB7CistICBzdGF0aWMgaW50IGlkeD0wOworLSAgY2hhciBidWZb NTBdOworLQorLSAgaWYgKGZpcHNfbW9kZSAoKSkKKy0gICAgcmV0dXJuOworLQorLSAgaWYgKCBt ZC0+Y3R4LT5kZWJ1ZyApCistICAgIHsKKy0gICAgICBsb2dfZGVidWcoIk9vcHM6IG1kIGRlYnVn IGFscmVhZHkgc3RhcnRlZFxuIik7CistICAgICAgcmV0dXJuOworLSAgICB9CistICBpZHgrKzsK Ky0gIHNucHJpbnRmIChidWYsIERJTShidWYpLTEsICJkYmdtZC0lMDVkLiUuMTBzIiwgaWR4LCBz dWZmaXggKTsKKy0gIG1kLT5jdHgtPmRlYnVnID0gZm9wZW4oYnVmLCAidyIpOworLSAgaWYgKCAh bWQtPmN0eC0+ZGVidWcgKQorLSAgICBsb2dfZGVidWcoIm1kIGRlYnVnOiBjYW4ndCBvcGVuICVz XG4iLCBidWYgKTsKKysgICh2b2lkKSBtZDsKKysgICh2b2lkKSBzdWZmaXg7CisgfQorIAorIAor IHN0YXRpYyB2b2lkCisgbWRfc3RvcF9kZWJ1ZyggZ2NyeV9tZF9oZF90IG1kICkKKyB7CistICBp ZiAoIG1kLT5jdHgtPmRlYnVnICkKKy0gICAgeworLSAgICAgIGlmICggbWQtPmJ1ZnBvcyApCist ICAgICAgICBtZF93cml0ZSAoIG1kLCBOVUxMLCAwICk7CistICAgICAgZmNsb3NlIChtZC0+Y3R4 LT5kZWJ1Zyk7CistICAgICAgbWQtPmN0eC0+ZGVidWcgPSBOVUxMOworLSAgICB9CistCistICB7 ICAvKiBhIGtsdWRnZSB0byBwdWxsIGluIHRoZSBfX211bGRpMyBmb3IgU29sYXJpcyAqLworLSAg ICB2b2xhdGlsZSB1MzIgYSA9ICh1MzIpKHVpbnRwdHJfdCltZDsKKy0gICAgdm9sYXRpbGUgdTY0 IGIgPSA0MjsKKy0gICAgdm9sYXRpbGUgdTY0IGM7CistICAgIGMgPSBhICogYjsKKy0gICAgKHZv aWQpYzsKKy0gIH0KKysgICh2b2lkKSBtZDsKKyB9CisgCisgCmRpZmYgLS1naXQgYS9ncnViLWNv cmUvbGliL2xpYmdjcnlwdC9zcmMvZ2NyeXB0LWludC5oIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5 cHQvc3JjL2djcnlwdC1pbnQuaAppbmRleCAzMDcxYjQyMWUuLjFjYTRmMjFmZSAxMDA2NDQKLS0t IGEvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQvc3JjL2djcnlwdC1pbnQuaAorKysgYi9ncnViLWNv cmUvbGliL2xpYmdjcnlwdC9zcmMvZ2NyeXB0LWludC5oCkBAIC0yNjUsNTcgKzI2NSw2IEBAIHZv aWQgX2djcnlfc2V0X2xvZ19oYW5kbGVyIChnY3J5X2hhbmRsZXJfbG9nX3QgZiwgdm9pZCAqb3Bh cXVlKTsKIHZvaWQgX2djcnlfc2V0X2dldHRleHRfaGFuZGxlciAoY29uc3QgY2hhciAqKCpmKShj b25zdCBjaGFyKikpOwogdm9pZCBfZ2NyeV9zZXRfcHJvZ3Jlc3NfaGFuZGxlciAoZ2NyeV9oYW5k bGVyX3Byb2dyZXNzX3QgY2IsIHZvaWQgKmNiX2RhdGEpOwogCi0MCi0vKiBSZXR1cm4gYSBwb2lu dGVyIHRvIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZXJyb3IKLSAg IGNvZGUgaW4gdGhlIGVycm9yIHZhbHVlIEVSUi4gICovCi1zdGF0aWMgaW5saW5lIGNvbnN0IGNo YXIgKgotX2djcnlfc3RyZXJyb3IgKGdjcnlfZXJyb3JfdCBlcnIpCi17Ci0gIHJldHVybiBncGdf c3RyZXJyb3IgKGVycik7Ci19Ci0KLS8qIFJldHVybiBhIHBvaW50ZXIgdG8gYSBzdHJpbmcgY29u dGFpbmluZyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvcgotICAgc291cmNlIGluIHRoZSBlcnJv ciB2YWx1ZSBFUlIuICAqLwotc3RhdGljIGlubGluZSBjb25zdCBjaGFyICoKLV9nY3J5X3N0cnNv dXJjZSAoZ2NyeV9lcnJvcl90IGVycikKLXsKLSAgcmV0dXJuIGdwZ19zdHJzb3VyY2UgKGVycik7 Ci19Ci0KLS8qIFJldHJpZXZlIHRoZSBlcnJvciBjb2RlIGZvciB0aGUgc3lzdGVtIGVycm9yIEVS Ui4gIFRoaXMgcmV0dXJucwotICAgR1BHX0VSUl9VTktOT1dOX0VSUk5PIGlmIHRoZSBzeXN0ZW0g ZXJyb3IgaXMgbm90IG1hcHBlZCAocmVwb3J0Ci0gICB0aGlzKS4gICovCi1zdGF0aWMgaW5saW5l IGdjcnlfZXJyX2NvZGVfdAotX2djcnlfZXJyX2NvZGVfZnJvbV9lcnJubyAoaW50IGVycikKLXsK LSAgcmV0dXJuIGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vIChlcnIpOwotfQotCi0vKiBSZXRyaWV2 ZSB0aGUgc3lzdGVtIGVycm9yIGZvciB0aGUgZXJyb3IgY29kZSBDT0RFLiAgVGhpcyByZXR1cm5z IDAKLSAgIGlmIENPREUgaXMgbm90IGEgc3lzdGVtIGVycm9yIGNvZGUuICAqLwotc3RhdGljIGlu bGluZSBpbnQKLV9nY3J5X2Vycl9jb2RlX3RvX2Vycm5vIChnY3J5X2Vycl9jb2RlX3QgY29kZSkK LXsKLSAgcmV0dXJuIGdwZ19lcnJfY29kZV90b19lcnJubyAoY29kZSk7Ci19Ci0KLS8qIFJldHVy biBhbiBlcnJvciB2YWx1ZSB3aXRoIHRoZSBlcnJvciBzb3VyY2UgU09VUkNFIGFuZCB0aGUgc3lz dGVtCi0gICBlcnJvciBFUlIuICAqLwotc3RhdGljIGlubGluZSBnY3J5X2Vycm9yX3QKLV9nY3J5 X2Vycl9tYWtlX2Zyb21fZXJybm8gKGdwZ19lcnJfc291cmNlX3Qgc291cmNlLCBpbnQgZXJyKQot ewotICByZXR1cm4gZ3BnX2Vycl9tYWtlX2Zyb21fZXJybm8gKHNvdXJjZSwgZXJyKTsKLX0KLQot Ci0vKiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgd2l0aCB0aGUgc3lzdGVtIGVycm9yIEVSUi4gICov Ci1zdGF0aWMgaW5saW5lIGdjcnlfZXJyb3JfdAotX2djcnlfZXJyb3JfZnJvbV9lcnJubyAoaW50 IGVycikKLXsKLSAgcmV0dXJuIGdwZ19lcnJvciAoZ3BnX2Vycl9jb2RlX2Zyb21fZXJybm8gKGVy cikpOwotfQotCi0KIAwKIGdwZ19lcnJfY29kZV90IF9nY3J5X3NleHBfbmV3IChnY3J5X3NleHBf dCAqcmV0c2V4cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi dWZmZXIsIHNpemVfdCBsZW5ndGgsCmRpZmYgLS1naXQgYS9ncnViLWNvcmUvbGliL2xpYmdjcnlw dF93cmFwL2NpcGhlcl93cmFwLmggYi9ncnViLWNvcmUvbGliL2xpYmdjcnlwdF93cmFwL2NpcGhl cl93cmFwLmgKaW5kZXggNDI4MzU0OTNkLi4zNWViM2YzNTUgMTAwNjQ0Ci0tLSBhL2dydWItY29y ZS9saWIvbGliZ2NyeXB0X3dyYXAvY2lwaGVyX3dyYXAuaAorKysgYi9ncnViLWNvcmUvbGliL2xp YmdjcnlwdF93cmFwL2NpcGhlcl93cmFwLmgKQEAgLTE5LDYgKzE5LDggQEAKICNpZm5kZWYgR1JV Ql9HQ1JZX1dSQVBfSEVBREVSCiAjZGVmaW5lIEdSVUJfR0NSWV9XUkFQX0hFQURFUiAxCiAKKyNk ZWZpbmUgVVNFX1NIQTUxMiAxCisKICNpbmNsdWRlIDxncnViL3R5cGVzLmg+CiAjaW5jbHVkZSA8 Z3J1Yi9tbS5oPgogI2luY2x1ZGUgPGdydWIvbWlzYy5oPgpAQCAtMzUsOSArMzcsNyBAQAogI3Vu ZGVmIF9fR05VX0xJQlJBUllfXwogI2RlZmluZSBfX0dOVV9MSUJSQVJZX18gMQogCi0jZGVmaW5l IFU2NF9DKGMpIChjICMjIFVMTCkKLQotI2RlZmluZSBQVUJLRVlfRkxBR19OT19CTElORElORyAg ICAoMSA8PCAwKQorI2RlZmluZSBVSU5UNjRfQyhjKSAoYyAjIyBVTEwpCiAKICNkZWZpbmUgQ0lQ SEVSX0lORk9fTk9fV0VBS19LRVkgICAgMQogCkBAIC03NCw0ICs3NCwxMiBAQCBfZ2NyeV9maXBz X21vZGUgKHZvaWQpCiAKICNkZWZpbmUgZ2NyeV9tcGlfbW9kIF9nY3J5X21waV9tb2QKIAorI2Rl ZmluZSBzdHJ0b2wgZ3J1Yl9zdHJ0b2wKKyNkZWZpbmUgc3RydG91bCBncnViX3N0cnRvdWwKKyNk ZWZpbmUgYXRvaShucHRyKSAoc3RydG9sKChucHRyKSwgTlVMTCwgMTApKQorCisjZGVmaW5lIHN0 cGNweSBncnViX3N0cGNweQorCisjZGVmaW5lIHNwZWNfZnJvbV9hbGdvIGdydWJfY3J5cHRvX2xv b2t1cF9tZF9ieV9hbGdvCisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi9saWJn Y3J5cHRfd3JhcC9tZW0uYyBiL2dydWItY29yZS9saWIvbGliZ2NyeXB0X3dyYXAvbWVtLmMKaW5k ZXggNzRjNmVhZmU1Li5hYjBjZjRhZDMgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIvbGliZ2Ny eXB0X3dyYXAvbWVtLmMKKysrIGIvZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHRfd3JhcC9tZW0uYwpA QCAtNDYsNiArNDYsMTUgQEAgZ2NyeV94Y2FsbG9jIChzaXplX3Qgbiwgc2l6ZV90IG0pCiAgIHJl dHVybiByZXQ7CiB9CiAKK3ZvaWQgKgorX2djcnlfY2FsbG9jIChzaXplX3Qgbiwgc2l6ZV90IG0p Cit7CisgIHNpemVfdCBzejsKKyAgaWYgKGdydWJfbXVsIChuLCBtLCAmc3opKQorICAgIHJldHVy biBOVUxMOworICByZXR1cm4gZ3J1Yl96YWxsb2MgKHN6KTsKK30KKwogdm9pZCAqCiBnY3J5X3ht YWxsb2Nfc2VjdXJlIChzaXplX3QgbikKIHsKQEAgLTY5LDYgKzc4LDE1IEBAIGdjcnlfeGNhbGxv Y19zZWN1cmUgKHNpemVfdCBuLCBzaXplX3QgbSkKICAgcmV0dXJuIHJldDsKIH0KIAordm9pZCAq CitfZ2NyeV9jYWxsb2Nfc2VjdXJlIChzaXplX3Qgbiwgc2l6ZV90IG0pCit7CisgIHNpemVfdCBz ejsKKyAgaWYgKGdydWJfbXVsIChuLCBtLCAmc3opKQorICAgIHJldHVybiBOVUxMOworICByZXR1 cm4gZ3J1Yl96YWxsb2MgKHN6KTsKK30KKwogdm9pZCAqCiBnY3J5X3htYWxsb2MgKHNpemVfdCBu KQogewpAQCAtODksNiArMTA3LDEyIEBAIGdjcnlfeHJlYWxsb2MgKHZvaWQgKmEsIHNpemVfdCBu KQogICByZXR1cm4gcmV0OwogfQogCit2b2lkICoKK19nY3J5X3JlYWxsb2MgKHZvaWQgKmEsIHNp emVfdCBuKQoreworICByZXR1cm4gZ3J1Yl9yZWFsbG9jIChhLCBuKTsKK30KKwogdm9pZAogX2dj cnlfY2hlY2tfaGVhcCAoY29uc3Qgdm9pZCAqYSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkpCiB7 CkBAIC0xMTMsNiArMTM3LDI0IEBAIHZvaWQgX2djcnlfbG9nX3ByaW50ZiAoY29uc3QgY2hhciAq Zm10LCAuLi4pCiAgICAgfQogfQogCit2b2lkIF9nY3J5X2xvZ19kZWJ1ZyAoY29uc3QgY2hhciAq Zm10LCAuLi4pCit7CisgIHZhX2xpc3QgYXJnczsKKyAgY29uc3QgY2hhciAqZGVidWcgPSBncnVi X2Vudl9nZXQgKCJkZWJ1ZyIpOworCisgIGlmICghIGRlYnVnKQorICAgIHJldHVybjsKKworICBp ZiAoZ3J1Yl9zdHJ3b3JkIChkZWJ1ZywgImFsbCIpIHx8IGdydWJfc3Ryd29yZCAoZGVidWcsICJn Y3J5cHQiKSkKKyAgICB7CisgICAgICBncnViX3ByaW50ZiAoImdjcnlwdDogIik7CisgICAgICB2 YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAgIGdydWJfdnByaW50ZiAoZm10LCBhcmdzKTsKKyAg ICAgIHZhX2VuZCAoYXJncyk7CisgICAgICBncnViX3JlZnJlc2ggKCk7CisgICAgfQorfQorCiB2 b2lkIF9nY3J5X2xvZ19idWcgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogICB2YV9saXN0IGFy Z3M7CkBAIC0xMjYsOSArMTY4LDkgQEAgdm9pZCBfZ2NyeV9sb2dfYnVnIChjb25zdCBjaGFyICpm bXQsIC4uLikKIH0KIAogZ2NyeV9lcnJfY29kZV90Ci1ncGdfZXJyb3JfZnJvbV9zeXNlcnJvciAo dm9pZCkKK2dwZ19lcnJfY29kZV9mcm9tX2Vycm5vIChpbnQgZXJyKQogewotICBzd2l0Y2ggKGdy dWJfZXJybm8pCisgIHN3aXRjaCAoZXJyKQogICAgIHsKICAgICBjYXNlIEdSVUJfRVJSX05PTkU6 CiAgICAgICByZXR1cm4gR1BHX0VSUl9OT19FUlJPUjsKQEAgLTEzOCwzICsxODAsNDAgQEAgZ3Bn X2Vycm9yX2Zyb21fc3lzZXJyb3IgKHZvaWQpCiAgICAgICByZXR1cm4gR1BHX0VSUl9HRU5FUkFM OwogICAgIH0KIH0KKworZ2NyeV9lcnJfY29kZV90CitncGdfZXJyb3JfZnJvbV9zeXNlcnJvciAo dm9pZCkKK3sKKyAgcmV0dXJuIGdwZ19lcnJfY29kZV9mcm9tX2Vycm5vKGdydWJfZXJybm8pOwor fQorCitnY3J5X2Vycl9jb2RlX3QKK2dwZ19lcnJfY29kZV9mcm9tX3N5c2Vycm9yICh2b2lkKQor eworICByZXR1cm4gZ3BnX2Vycm9yX2Zyb21fc3lzZXJyb3IgKCk7Cit9CisKK3ZvaWQgX2djcnlf ZmF0YWxfZXJyb3IoaW50IHJjLCBjb25zdCBjaGFyICp0ZXh0ICkKK3sKKyAgZ3J1Yl9mYXRhbCgi Z2NyeSBmYXRhbCAlZDogJXMiLCByYywgdGV4dCk7Cit9CisKKwordm9pZCBfZ2NyeV9yYW5kb21p emUgKHZvaWQgKmJ1ZmZlciBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwgc2l6ZV90IGxlbmd0aCBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSwKKyAgICAgICAgICAgICAgICAgICAgICBlbnVtIGdjcnlf cmFuZG9tX2xldmVsIGxldmVsIF9fYXR0cmlidXRlX18oKHVudXNlZCkpKQoreworICBncnViX2Zh dGFsKCJBdHRlbXB0IHRvIGdldCBzZWN1cmUgcmFuZG9tIG51bWJlcnMiKTsKK30KKworCit2b2lk ICpfZ2NyeV9yYW5kb21fYnl0ZXNfc2VjdXJlIChzaXplX3QgbmJ5dGVzIF9fYXR0cmlidXRlX18o KHVudXNlZCkpLCBlbnVtIGdjcnlfcmFuZG9tX2xldmVsIGxldmVsIF9fYXR0cmlidXRlX18oKHVu dXNlZCkpKQoreworICBncnViX2ZhdGFsKCJBdHRlbXB0IHRvIGdldCBzZWN1cmUgcmFuZG9tIG51 bWJlcnMiKTsKK30KKworY29uc3QgY2hhciAqZ3BnX3N0cmVycm9yIChncGdfZXJyb3JfdCBlcnIp Cit7CisgIHN0YXRpYyBjaGFyIGJ1ZlsyNTZdOworICBncnViX3NucHJpbnRmKGJ1Ziwgc2l6ZW9m KGJ1ZikgLSA1LCAiZ3BnIGVycm9yICVkXG4iLCBlcnIpOworICByZXR1cm4gYnVmOworfQpkaWZm IC0tZ2l0IGEvZ3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYyBiL2dydWItY29y ZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKaW5kZXggODMyZDhhZjlhLi5mMmRkNDJkYzIg MTAwNjQ0Ci0tLSBhL2dydWItY29yZS9saWIveHplbWJlZC94el9kZWNfc3RyZWFtLmMKKysrIGIv Z3J1Yi1jb3JlL2xpYi94emVtYmVkL3h6X2RlY19zdHJlYW0uYwpAQCAtNDI1LDkgKzQyNSw5IEBA IHN0YXRpYyBlbnVtIHh6X3JldCBoYXNoX3ZhbGlkYXRlKHN0cnVjdCB4el9kZWMgKnMsIHN0cnVj dCB4el9idWYgKmIsCiAKICNpZm5kZWYgR1JVQl9FTUJFRF9ERUNPTVBSRVNTT1IKIAlpZiAocy0+ aGFzaCkKLQkJcy0+aGFzaC0+aW5pdChzLT5oYXNoX2NvbnRleHQpOworCQlzLT5oYXNoLT5pbml0 KHMtPmhhc2hfY29udGV4dCwgMCk7CiAJaWYgKHMtPmNyYzMyKQotCQlzLT5jcmMzMi0+aW5pdChz LT5jcmMzMl9jb250ZXh0KTsKKwkJcy0+Y3JjMzItPmluaXQocy0+Y3JjMzJfY29udGV4dCwgMCk7 CiAjZW5kaWYKIAlzLT5oYXZlX2hhc2hfdmFsdWUgPSAwOwogCXMtPnBvcyA9IDA7CkBAIC00OTMs NyArNDkzLDcgQEAgc3RhdGljIGVudW0geHpfcmV0IGRlY19zdHJlYW1faGVhZGVyKHN0cnVjdCB4 el9kZWMgKnMpCiAJCXMtPmNyYzMyX2NvbnRleHQgPSBrbWFsbG9jKHMtPmNyYzMyLT5jb250ZXh0 c2l6ZSwgR0ZQX0tFUk5FTCk7CiAJCWlmIChzLT5jcmMzMl9jb250ZXh0ID09IE5VTEwpCiAJCQly ZXR1cm4gWFpfTUVNTElNSVRfRVJST1I7Ci0JCXMtPmNyYzMyLT5pbml0KHMtPmNyYzMyX2NvbnRl eHQpOworCQlzLT5jcmMzMi0+aW5pdChzLT5jcmMzMl9jb250ZXh0LCAwKTsKIAl9CiAjZW5kaWYK IApAQCAtNTMxLDkgKzUzMSw5IEBAIHN0YXRpYyBlbnVtIHh6X3JldCBkZWNfc3RyZWFtX2hlYWRl cihzdHJ1Y3QgeHpfZGVjICpzKQogCQkJCXJldHVybiBYWl9NRU1MSU1JVF9FUlJPUjsKIAkJCX0K IAotCQkJcy0+aGFzaC0+aW5pdChzLT5oYXNoX2NvbnRleHQpOwotCQkJcy0+aGFzaC0+aW5pdChz LT5pbmRleC5oYXNoLmhhc2hfY29udGV4dCk7Ci0gCQkJcy0+aGFzaC0+aW5pdChzLT5ibG9jay5o YXNoLmhhc2hfY29udGV4dCk7CisJCQlzLT5oYXNoLT5pbml0KHMtPmhhc2hfY29udGV4dCwgMCk7 CisJCQlzLT5oYXNoLT5pbml0KHMtPmluZGV4Lmhhc2guaGFzaF9jb250ZXh0LCAwKTsKKyAJCQlz LT5oYXNoLT5pbml0KHMtPmJsb2NrLmhhc2guaGFzaF9jb250ZXh0LCAwKTsKIAkJfQogI2VuZGlm CiAJfQpAQCAtMTAxNCw5ICsxMDE0LDkgQEAgdm9pZCB4el9kZWNfcmVzZXQoc3RydWN0IHh6X2Rl YyAqcykKICNpZm5kZWYgR1JVQl9FTUJFRF9ERUNPTVBSRVNTT1IKIAlpZiAocy0+aGFzaCkKIAl7 Ci0JCXMtPmhhc2gtPmluaXQocy0+aGFzaF9jb250ZXh0KTsKLQkJcy0+aGFzaC0+aW5pdChzLT5p bmRleC5oYXNoLmhhc2hfY29udGV4dCk7Ci0JCXMtPmhhc2gtPmluaXQocy0+YmxvY2suaGFzaC5o YXNoX2NvbnRleHQpOworCQlzLT5oYXNoLT5pbml0KHMtPmhhc2hfY29udGV4dCwgMCk7CisJCXMt Pmhhc2gtPmluaXQocy0+aW5kZXguaGFzaC5oYXNoX2NvbnRleHQsIDApOworCQlzLT5oYXNoLT5p bml0KHMtPmJsb2NrLmhhc2guaGFzaF9jb250ZXh0LCAwKTsKIAl9CiAjZW5kaWYKIAlzLT5oYXZl X2hhc2hfdmFsdWUgPSAwOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9ncnViL2NyeXB0by5oIGIvaW5j bHVkZS9ncnViL2NyeXB0by5oCmluZGV4IDMxYzg3YzMwMi4uMDFmODZiZTcxIDEwMDY0NAotLS0g YS9pbmNsdWRlL2dydWIvY3J5cHRvLmgKKysrIGIvaW5jbHVkZS9ncnViL2NyeXB0by5oCkBAIC02 NSw3ICs2NSwzMSBAQCB0eXBlZGVmIGVudW0KICAgICBHUEdfRVJSX1dST05HX1BVQktFWV9BTEdP LAogICAgIEdQR19FUlJfT1VUX09GX01FTU9SWSwKICAgICBHUEdfRVJSX1RPT19MQVJHRSwKLSAg ICBHUEdfRVJSX0VOT01FTQorICAgIEdQR19FUlJfRU5PTUVNLAorICAgIEdQR19FUlJfQ0hFQ0tT VU0sCisgICAgR1BHX0VSUl9JTlZfTEVOR1RILAorICAgIEdQR19FUlJfVkFMVUVfTk9UX0ZPVU5E LAorICAgIEdQR19FUlJfRVJBTkdFLAorICAgIEdQR19FUlJfSU5WX0RBVEEsCisgICAgR1BHX0VS Ul9FTkNPRElOR19QUk9CTEVNLAorICAgIEdQR19FUlJfQlVGRkVSX1RPT19TSE9SVCwKKyAgICBH UEdfRVJSX1NZTlRBWCwKKyAgICBHUEdfRVJSX1NFWFBfSU5WX0xFTl9TUEVDLAorICAgIEdQR19F UlJfU0VYUF9VTk1BVENIRURfREgsCisgICAgR1BHX0VSUl9TRVhQX1VOTUFUQ0hFRF9QQVJFTiwK KyAgICBHUEdfRVJSX1NFWFBfWkVST19QUkVGSVgsCisgICAgR1BHX0VSUl9TRVhQX05FU1RFRF9E SCwKKyAgICBHUEdfRVJSX1NFWFBfVU5FWFBFQ1RFRF9QVU5DLAorICAgIEdQR19FUlJfU0VYUF9C QURfQ0hBUkFDVEVSLAorICAgIEdQR19FUlJfU0VYUF9OT1RfQ0FOT05JQ0FMLAorICAgIEdQR19F UlJfU0VYUF9TVFJJTkdfVE9PX0xPTkcsCisgICAgR1BHX0VSUl9TRVhQX0JBRF9RVU9UQVRJT04s CisgICAgR1BHX0VSUl9TRVhQX09ERF9IRVhfTlVNQkVSUywKKyAgICBHUEdfRVJSX1NFWFBfQkFE X0hFWF9DSEFSLAorICAgIEdQR19FUlJfTElNSVRfUkVBQ0hFRCwKKyAgICBHUEdfRVJSX0VPRiwK KyAgICBHUEdfRVJSX0JBRF9EQVRBLAorICAgIEdQR19FUlJfRUlOVkFMLAogICB9IGdwZ19lcnJf Y29kZV90OwogdHlwZWRlZiBncGdfZXJyX2NvZGVfdCBncGdfZXJyb3JfdDsKIHR5cGVkZWYgZ3Bn X2Vycm9yX3QgZ2NyeV9lcnJvcl90OwpAQCAtODQsMzcgKzEwOCw2MCBAQCBlbnVtIGdjcnlfY2lw aGVyX21vZGVzCiAgIH07CiAjZW5kaWYKIAorLyogRXh0cmEgYWxnbyBJRHMgbm90IGNvbWluZyBm cm9tIGdjcnlwdC4gICovCisjZGVmaW5lIEdDUllfTURfQURMRVIzMiAxMDMwMQorI2RlZmluZSBH Q1JZX01EX0NSQzY0IDEwMzAyCisKIC8qIERvbid0IHJlbHkgb24gdGhpcy4gQ2hlY2shICAqLwog I2RlZmluZSBHUlVCX0NSWVBUT19NQVhfTURMRU4gNjQKICNkZWZpbmUgR1JVQl9DUllQVE9fTUFY X0NJUEhFUl9CTE9DS1NJWkUgMTYKICNkZWZpbmUgR1JVQl9DUllQVE9fTUFYX01EX0NPTlRFWFRf U0laRSAyNTYKIAogLyogVHlwZSBmb3IgdGhlIGNpcGhlcl9zZXRrZXkgZnVuY3Rpb24uICAqLwor c3RydWN0IGNpcGhlcl9idWxrX29wczsKKwogdHlwZWRlZiBnY3J5X2Vycl9jb2RlX3QgKCpnY3J5 X2NpcGhlcl9zZXRrZXlfdCkgKHZvaWQgKmMsCiAJCQkJCQkgY29uc3QgdW5zaWduZWQgY2hhciAq a2V5LAotCQkJCQkJIHVuc2lnbmVkIGtleWxlbik7CisJCQkJCQkgdW5zaWduZWQga2V5bGVuLAor CQkJCQkJIHN0cnVjdCBjaXBoZXJfYnVsa19vcHMgKmJ1bGtfb3BzKTsKIAogLyogVHlwZSBmb3Ig dGhlIGNpcGhlcl9lbmNyeXB0IGZ1bmN0aW9uLiAgKi8KLXR5cGVkZWYgdm9pZCAoKmdjcnlfY2lw aGVyX2VuY3J5cHRfdCkgKHZvaWQgKmMsCi0JCQkJICAgICAgIHVuc2lnbmVkIGNoYXIgKm91dGJ1 ZiwKLQkJCQkgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqaW5idWYpOwordHlwZWRlZiB1bnNp Z25lZCBpbnQgKCpnY3J5X2NpcGhlcl9lbmNyeXB0X3QpICh2b2lkICpjLAorCQkJCQkgICAgICAg dW5zaWduZWQgY2hhciAqb3V0YnVmLAorCQkJCQkgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAq aW5idWYpOwogCiAvKiBUeXBlIGZvciB0aGUgY2lwaGVyX2RlY3J5cHQgZnVuY3Rpb24uICAqLwot dHlwZWRlZiB2b2lkICgqZ2NyeV9jaXBoZXJfZGVjcnlwdF90KSAodm9pZCAqYywKLQkJCQkgICAg ICAgdW5zaWduZWQgY2hhciAqb3V0YnVmLAotCQkJCSAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFy ICppbmJ1Zik7Cit0eXBlZGVmIHVuc2lnbmVkIGludCAoKmdjcnlfY2lwaGVyX2RlY3J5cHRfdCkg KHZvaWQgKmMsCisJCQkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpvdXRidWYsCisJCQkJCSAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICppbmJ1Zik7CiAKIC8qIFR5cGUgZm9yIHRoZSBjaXBoZXJf c3RlbmNyeXB0IGZ1bmN0aW9uLiAgKi8KIHR5cGVkZWYgdm9pZCAoKmdjcnlfY2lwaGVyX3N0ZW5j cnlwdF90KSAodm9pZCAqYywKIAkJCQkJIHVuc2lnbmVkIGNoYXIgKm91dGJ1ZiwKIAkJCQkJIGNv bnN0IHVuc2lnbmVkIGNoYXIgKmluYnVmLAotCQkJCQkgdW5zaWduZWQgaW50IG4pOworCQkJCQkg Z3J1Yl9zaXplX3Qgbik7CiAKIC8qIFR5cGUgZm9yIHRoZSBjaXBoZXJfc3RkZWNyeXB0IGZ1bmN0 aW9uLiAgKi8KIHR5cGVkZWYgdm9pZCAoKmdjcnlfY2lwaGVyX3N0ZGVjcnlwdF90KSAodm9pZCAq YywKIAkJCQkJIHVuc2lnbmVkIGNoYXIgKm91dGJ1ZiwKIAkJCQkJIGNvbnN0IHVuc2lnbmVkIGNo YXIgKmluYnVmLAotCQkJCQkgdW5zaWduZWQgaW50IG4pOworCQkJCQkgZ3J1Yl9zaXplX3Qgbik7 CisKK3R5cGVkZWYgdm9pZCAoKnNlbGZ0ZXN0X3JlcG9ydF9mdW5jX3QpKGNvbnN0IGNoYXIgKmRv bWFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGdvLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqd2hhdCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycmRl c2MpOworCisvKiBUaGUgdHlwZSB1c2VkIHRvIGNvbnZleSBhZGRpdGlvbmFsIGluZm9ybWF0aW9u IHRvIGEgY2lwaGVyLiAgKi8KK3R5cGVkZWYgZ3BnX2Vycl9jb2RlX3QgKCpnY3J5X2NpcGhlcl9z ZXRfZXh0cmFfaW5mb190KQorICAgICAodm9pZCAqYywgaW50IHdoYXQsIGNvbnN0IHZvaWQgKmJ1 ZmZlciwgZ3J1Yl9zaXplX3QgYnVmbGVuKTsKKworLyogVGhlIHR5cGUgdXNlZCB0byBzZXQgYW4g SVYgZGlyZWN0bHkgaW4gdGhlIGFsZ29yaXRobSBtb2R1bGUuICAqLwordHlwZWRlZiB2b2lkICgq Z2NyeV9jaXBoZXJfc2V0aXZfZnVuY190KSh2b2lkICpjLCBjb25zdCBncnViX3VpbnQ4X3QgKml2 LCBncnViX3NpemVfdCBpdmxlbik7CisKKy8qIERlZmluaXRpb24gb2YgdGhlIHNlbGZ0ZXN0IGZ1 bmN0aW9ucy4gICovCit0eXBlZGVmIGdwZ19lcnJfY29kZV90ICgqZ2NyeV9zZWxmdGVzdF9mdW5j X3QpCisgICAgIChpbnQgYWxnbywgaW50IGV4dGVuZGVkLCBzZWxmdGVzdF9yZXBvcnRfZnVuY190 IHJlcG9ydCk7CiAKIHR5cGVkZWYgc3RydWN0IGdjcnlfY2lwaGVyX29pZF9zcGVjCiB7CkBAIC0x MjUsOSArMTcyLDE0IEBAIHR5cGVkZWYgc3RydWN0IGdjcnlfY2lwaGVyX29pZF9zcGVjCiAvKiBN b2R1bGUgc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUgZm9yIGNpcGhlcnMuICAqLwogdHlwZWRlZiBz dHJ1Y3QgZ2NyeV9jaXBoZXJfc3BlYwogeworICBpbnQgYWxnbzsKKyAgc3RydWN0IHsKKyAgICB1 bnNpZ25lZCBpbnQgZGlzYWJsZWQ6MTsKKyAgICB1bnNpZ25lZCBpbnQgZmlwczoxOworICB9IGZs YWdzOwogICBjb25zdCBjaGFyICpuYW1lOwogICBjb25zdCBjaGFyICoqYWxpYXNlczsKLSAgZ2Ny eV9jaXBoZXJfb2lkX3NwZWNfdCAqb2lkczsKKyAgY29uc3QgZ2NyeV9jaXBoZXJfb2lkX3NwZWNf dCAqb2lkczsKICAgZ3J1Yl9zaXplX3QgYmxvY2tzaXplOwogICBncnViX3NpemVfdCBrZXlsZW47 CiAgIGdydWJfc2l6ZV90IGNvbnRleHRzaXplOwpAQCAtMTM2LDYgKzE4OCwxMCBAQCB0eXBlZGVm IHN0cnVjdCBnY3J5X2NpcGhlcl9zcGVjCiAgIGdjcnlfY2lwaGVyX2RlY3J5cHRfdCBkZWNyeXB0 OwogICBnY3J5X2NpcGhlcl9zdGVuY3J5cHRfdCBzdGVuY3J5cHQ7CiAgIGdjcnlfY2lwaGVyX3N0 ZGVjcnlwdF90IHN0ZGVjcnlwdDsKKyAgZ2NyeV9zZWxmdGVzdF9mdW5jX3Qgc2VsZnRlc3Q7Cisg IGdjcnlfY2lwaGVyX3NldF9leHRyYV9pbmZvX3Qgc2V0X2V4dHJhX2luZm87CisgIGdjcnlfY2lw aGVyX3NldGl2X2Z1bmNfdCBzZXRpdjsKKwogI2lmZGVmIEdSVUJfVVRJTAogICBjb25zdCBjaGFy ICptb2RuYW1lOwogI2VuZGlmCkBAIC0xNDMsNyArMTk5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2Ny eV9jaXBoZXJfc3BlYwogfSBnY3J5X2NpcGhlcl9zcGVjX3Q7CiAKIC8qIFR5cGUgZm9yIHRoZSBt ZF9pbml0IGZ1bmN0aW9uLiAgKi8KLXR5cGVkZWYgdm9pZCAoKmdjcnlfbWRfaW5pdF90KSAodm9p ZCAqYyk7Cit0eXBlZGVmIHZvaWQgKCpnY3J5X21kX2luaXRfdCkgKHZvaWQgKmMsIHVuc2lnbmVk IGludCBmbGFncyk7CiAKIC8qIFR5cGUgZm9yIHRoZSBtZF93cml0ZSBmdW5jdGlvbi4gICovCiB0 eXBlZGVmIHZvaWQgKCpnY3J5X21kX3dyaXRlX3QpICh2b2lkICpjLCBjb25zdCB2b2lkICpidWYs IGdydWJfc2l6ZV90IG5ieXRlcyk7CkBAIC0xNjIsMTYgKzIxOCwyNCBAQCB0eXBlZGVmIHN0cnVj dCBnY3J5X21kX29pZF9zcGVjCiAvKiBNb2R1bGUgc3BlY2lmaWNhdGlvbiBzdHJ1Y3R1cmUgZm9y IG1lc3NhZ2UgZGlnZXN0cy4gICovCiB0eXBlZGVmIHN0cnVjdCBnY3J5X21kX3NwZWMKIHsKKyAg aW50IGFsZ287CisgIHN0cnVjdCB7CisgICAgdW5zaWduZWQgaW50IGRpc2FibGVkOjE7CisgICAg dW5zaWduZWQgaW50IGZpcHM6MTsKKyAgfSBmbGFnczsKICAgY29uc3QgY2hhciAqbmFtZTsKLSAg dW5zaWduZWQgY2hhciAqYXNub2lkOworICBjb25zdCB1bnNpZ25lZCBjaGFyICphc25vaWQ7CiAg IGludCBhc25sZW47Ci0gIGdjcnlfbWRfb2lkX3NwZWNfdCAqb2lkczsKKyAgY29uc3QgZ2NyeV9t ZF9vaWRfc3BlY190ICpvaWRzOwogICBncnViX3NpemVfdCBtZGxlbjsKICAgZ2NyeV9tZF9pbml0 X3QgaW5pdDsKICAgZ2NyeV9tZF93cml0ZV90IHdyaXRlOwogICBnY3J5X21kX2ZpbmFsX3QgZmlu YWw7CiAgIGdjcnlfbWRfcmVhZF90IHJlYWQ7CisgIHZvaWQgKmV4dHJhY3Q7CisgIHZvaWQgKmhh c2hfYnVmZmVyczsKICAgZ3J1Yl9zaXplX3QgY29udGV4dHNpemU7IC8qIGFsbG9jYXRlIHRoaXMg YW1vdW50IG9mIGNvbnRleHQgKi8KKwogICAvKiBCbG9jayBzaXplLCBuZWVkZWQgZm9yIEhNQUMu ICAqLwogICBncnViX3NpemVfdCBibG9ja3NpemU7CiAjaWZkZWYgR1JVQl9VVElMCkBAIC0xODAs NTQgKzI0NCwxMjMgQEAgdHlwZWRlZiBzdHJ1Y3QgZ2NyeV9tZF9zcGVjCiAgIHN0cnVjdCBnY3J5 X21kX3NwZWMgKm5leHQ7CiB9IGdjcnlfbWRfc3BlY190OwogCit0eXBlZGVmIHN0cnVjdCBnY3J5 X21kX2hhbmRsZSpnY3J5X21kX2hkX3Q7CisKIHN0cnVjdCBnY3J5X21waTsKIHR5cGVkZWYgc3Ry dWN0IGdjcnlfbXBpICpnY3J5X21waV90OwogCitzdHJ1Y3QgZ2NyeV9zZXhwOwordHlwZWRlZiBz dHJ1Y3QgZ2NyeV9zZXhwICpnY3J5X3NleHBfdDsKKworCisjZGVmaW5lIFBVQktFWV9GTEFHX05P X0JMSU5ESU5HICAgICgxIDw8IDApCisjZGVmaW5lIFBVQktFWV9GTEFHX1JGQzY5NzkgICAgICAg ICgxIDw8IDEpCisjZGVmaW5lIFBVQktFWV9GTEFHX0ZJWEVETEVOICAgICAgICgxIDw8IDIpCisj ZGVmaW5lIFBVQktFWV9GTEFHX0xFR0FDWVJFU1VMVCAgICgxIDw8IDMpCisjZGVmaW5lIFBVQktF WV9GTEFHX1JBV19GTEFHICAgICAgICgxIDw8IDQpCisjZGVmaW5lIFBVQktFWV9GTEFHX1RSQU5T SUVOVF9LRVkgICgxIDw8IDUpCisjZGVmaW5lIFBVQktFWV9GTEFHX1VTRV9YOTMxICAgICAgICgx IDw8IDYpCisjZGVmaW5lIFBVQktFWV9GTEFHX1VTRV9GSVBTMTg2ICAgICgxIDw8IDcpCisjZGVm aW5lIFBVQktFWV9GTEFHX1VTRV9GSVBTMTg2XzIgICgxIDw8IDgpCisjZGVmaW5lIFBVQktFWV9G TEFHX1BBUkFNICAgICAgICAgICgxIDw8IDkpCisjZGVmaW5lIFBVQktFWV9GTEFHX0NPTVAgICAg ICAgICAgICgxIDw8IDEwKQorI2RlZmluZSBQVUJLRVlfRkxBR19OT0NPTVAgICAgICAgICAoMSA8 PCAxMSkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfRUREU0EgICAgICAgICAgKDEgPDwgMTIpCisjZGVm aW5lIFBVQktFWV9GTEFHX0dPU1QgICAgICAgICAgICgxIDw8IDEzKQorI2RlZmluZSBQVUJLRVlf RkxBR19OT19LRVlURVNUICAgICAoMSA8PCAxNCkKKyNkZWZpbmUgUFVCS0VZX0ZMQUdfREpCX1RX RUFLICAgICAgKDEgPDwgMTUpCisjZGVmaW5lIFBVQktFWV9GTEFHX1NNMiAgICAgICAgICAgICgx IDw8IDE2KQorI2RlZmluZSBQVUJLRVlfRkxBR19QUkVIQVNIICAgICAgICAoMSA8PCAxNykKKwor ZW51bSBwa19vcGVyYXRpb24KKyAgeworICAgIFBVQktFWV9PUF9FTkNSWVBULAorICAgIFBVQktF WV9PUF9ERUNSWVBULAorICAgIFBVQktFWV9PUF9TSUdOLAorICAgIFBVQktFWV9PUF9WRVJJRlkK KyAgfTsKKworZW51bSBwa19lbmNvZGluZworICB7CisgICAgUFVCS0VZX0VOQ19SQVcsCisgICAg UFVCS0VZX0VOQ19QS0NTMSwKKyAgICBQVUJLRVlfRU5DX1BLQ1MxX1JBVywKKyAgICBQVUJLRVlf RU5DX09BRVAsCisgICAgUFVCS0VZX0VOQ19QU1MsCisgICAgUFVCS0VZX0VOQ19VTktOT1dOCisg IH07CisKK3N0cnVjdCBwa19lbmNvZGluZ19jdHgKK3sKKyAgZW51bSBwa19vcGVyYXRpb24gb3A7 CisgIHVuc2lnbmVkIGludCBuYml0czsKKworICBlbnVtIHBrX2VuY29kaW5nIGVuY29kaW5nOwor ICBpbnQgZmxhZ3M7CisKKyAgaW50IGhhc2hfYWxnbzsKKworICAvKiBmb3IgT0FFUCAqLworICB1 bnNpZ25lZCBjaGFyICpsYWJlbDsKKyAgZ3J1Yl9zaXplX3QgbGFiZWxsZW47CisKKyAgLyogZm9y IFBTUyAqLworICBncnViX3NpemVfdCBzYWx0bGVuOworCisgIGludCAoKiB2ZXJpZnlfY21wKSAo dm9pZCAqb3BhcXVlLCBnY3J5X21waV90IHRtcCk7CisgIHZvaWQgKnZlcmlmeV9hcmc7Cit9Owor CiAvKiBUeXBlIGZvciB0aGUgcGtfZ2VuZXJhdGUgZnVuY3Rpb24uICAqLwotdHlwZWRlZiBnY3J5 X2Vycl9jb2RlX3QgKCpnY3J5X3BrX2dlbmVyYXRlX3QpIChpbnQgYWxnbywKLQkJCQkJICAgICAg IHVuc2lnbmVkIGludCBuYml0cywKLQkJCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgdXNlX2UsCi0J CQkJCSAgICAgICBnY3J5X21waV90ICpza2V5LAotCQkJCQkgICAgICAgZ2NyeV9tcGlfdCAqKnJl dGZhY3RvcnMpOwordHlwZWRlZiBnY3J5X2Vycl9jb2RlX3QgKCpnY3J5X3BrX2dlbmVyYXRlX3Qp IChnY3J5X3NleHBfdCBnZW5wYXJtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ2NyeV9zZXhwX3QgKnJfc2tleSk7CiAKIC8qIFR5cGUgZm9yIHRoZSBw a19jaGVja19zZWNyZXRfa2V5IGZ1bmN0aW9uLiAgKi8KLXR5cGVkZWYgZ2NyeV9lcnJfY29kZV90 ICgqZ2NyeV9wa19jaGVja19zZWNyZXRfa2V5X3QpIChpbnQgYWxnbywKLQkJCQkJCSAgICAgICBn Y3J5X21waV90ICpza2V5KTsKK3R5cGVkZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2NyeV9wa19jaGVj a19zZWNyZXRfa2V5X3QpIChnY3J5X3NleHBfdCBrZXlwYXJtcyk7CiAKIC8qIFR5cGUgZm9yIHRo ZSBwa19lbmNyeXB0IGZ1bmN0aW9uLiAgKi8KLXR5cGVkZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2Ny eV9wa19lbmNyeXB0X3QpIChpbnQgYWxnbywKLQkJCQkJICAgICAgZ2NyeV9tcGlfdCAqcmVzYXJy LAotCQkJCQkgICAgICBnY3J5X21waV90IGRhdGEsCi0JCQkJCSAgICAgIGdjcnlfbXBpX3QgKnBr ZXksCi0JCQkJCSAgICAgIGludCBmbGFncyk7Cit0eXBlZGVmIGdjcnlfZXJyX2NvZGVfdCAoKmdj cnlfcGtfZW5jcnlwdF90KSAoZ2NyeV9zZXhwX3QgKnJfY2lwaCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5X3NleHBfdCBzX2RhdGEsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9zZXhwX3Qga2V5cGFy bXMpOwogCiAvKiBUeXBlIGZvciB0aGUgcGtfZGVjcnlwdCBmdW5jdGlvbi4gICovCi10eXBlZGVm IGdjcnlfZXJyX2NvZGVfdCAoKmdjcnlfcGtfZGVjcnlwdF90KSAoaW50IGFsZ28sCi0JCQkJCSAg ICAgIGdjcnlfbXBpX3QgKnJlc3VsdCwKLQkJCQkJICAgICAgZ2NyeV9tcGlfdCAqZGF0YSwKLQkJ CQkJICAgICAgZ2NyeV9tcGlfdCAqc2tleSwKLQkJCQkJICAgICAgaW50IGZsYWdzKTsKK3R5cGVk ZWYgZ2NyeV9lcnJfY29kZV90ICgqZ2NyeV9wa19kZWNyeXB0X3QpIChnY3J5X3NleHBfdCAqcl9w bGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY3J5 X3NleHBfdCBzX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2NyeV9zZXhwX3Qga2V5cGFybXMpOwogCiAvKiBUeXBlIGZvciB0aGUgcGtfc2lnbiBm dW5jdGlvbi4gICovCi10eXBlZGVmIGdjcnlfZXJyX2NvZGVfdCAoKmdjcnlfcGtfc2lnbl90KSAo aW50IGFsZ28sCi0JCQkJCSAgIGdjcnlfbXBpX3QgKnJlc2FyciwKLQkJCQkJICAgZ2NyeV9tcGlf dCBkYXRhLAotCQkJCQkgICBnY3J5X21waV90ICpza2V5KTsKK3R5cGVkZWYgZ2NyeV9lcnJfY29k ZV90ICgqZ2NyeV9wa19zaWduX3QpIChnY3J5X3NleHBfdCAqcl9zaWcsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NyeV9zZXhwX3Qgc19kYXRhLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfc2V4cF90IGtleXBhcm1z KTsKIAogLyogVHlwZSBmb3IgdGhlIHBrX3ZlcmlmeSBmdW5jdGlvbi4gICovCi10eXBlZGVmIGdj cnlfZXJyX2NvZGVfdCAoKmdjcnlfcGtfdmVyaWZ5X3QpIChpbnQgYWxnbywKLQkJCQkJICAgICBn Y3J5X21waV90IGhhc2gsCi0JCQkJCSAgICAgZ2NyeV9tcGlfdCAqZGF0YSwKLQkJCQkJICAgICBn Y3J5X21waV90ICpwa2V5LAotCQkJCQkgICAgIGludCAoKmNtcCkgKHZvaWQgKiwgZ2NyeV9tcGlf dCksCi0JCQkJCSAgICAgdm9pZCAqb3BhcXVldik7Cit0eXBlZGVmIGdjcnlfZXJyX2NvZGVfdCAo KmdjcnlfcGtfdmVyaWZ5X3QpIChnY3J5X3NleHBfdCBzX3NpZywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfc2V4cF90IHNfZGF0YSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjcnlfc2V4cF90IGtleXBhcm1z KTsKIAogLyogVHlwZSBmb3IgdGhlIHBrX2dldF9uYml0cyBmdW5jdGlvbi4gICovCi10eXBlZGVm IHVuc2lnbmVkICgqZ2NyeV9wa19nZXRfbmJpdHNfdCkgKGludCBhbGdvLCBnY3J5X21waV90ICpw a2V5KTsKK3R5cGVkZWYgdW5zaWduZWQgKCpnY3J5X3BrX2dldF9uYml0c190KSAoZ2NyeV9zZXhw X3Qga2V5cGFybXMpOworCisvKiBUaGUgdHlwZSB1c2VkIHRvIGNvbXB1dGUgdGhlIGtleWdyaXAu ICAqLwordHlwZWRlZiBncGdfZXJyX2NvZGVfdCAoKnBrX2NvbXBfa2V5Z3JpcF90KSAoZ2NyeV9t ZF9oZF90IG1kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2NyeV9zZXhwX3Qga2V5cGFybSk7CisKKy8qIFRoZSB0eXBlIHVzZWQgdG8gcXVlcnkgYW4gRUND IGN1cnZlIG5hbWUuICAqLwordHlwZWRlZiBjb25zdCBjaGFyICooKnBrX2dldF9jdXJ2ZV90KShn Y3J5X3NleHBfdCBrZXlwYXJtcywgaW50IGl0ZXJhdG9yLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKnJfbmJpdHMpOworCisvKiBUaGUgdHlwZSB1 c2VkIHRvIHF1ZXJ5IEVDQyBjdXJ2ZSBwYXJhbWV0ZXJzIGJ5IG5hbWUuICAqLwordHlwZWRlZiBn Y3J5X3NleHBfdCAoKnBrX2dldF9jdXJ2ZV9wYXJhbV90KShjb25zdCBjaGFyICpuYW1lKTsKIAog LyogTW9kdWxlIHNwZWNpZmljYXRpb24gc3RydWN0dXJlIGZvciBtZXNzYWdlIGRpZ2VzdHMuICAq LwogdHlwZWRlZiBzdHJ1Y3QgZ2NyeV9wa19zcGVjCiB7CisgIGludCBhbGdvOworICBzdHJ1Y3Qg eworICAgIHVuc2lnbmVkIGludCBkaXNhYmxlZDoxOworICAgIHVuc2lnbmVkIGludCBmaXBzOjE7 CisgIH0gZmxhZ3M7CisgIGludCB1c2U7CiAgIGNvbnN0IGNoYXIgKm5hbWU7CiAgIGNvbnN0IGNo YXIgKiphbGlhc2VzOwogICBjb25zdCBjaGFyICplbGVtZW50c19wa2V5OwpAQCAtMjM1LDcgKzM2 OCw2IEBAIHR5cGVkZWYgc3RydWN0IGdjcnlfcGtfc3BlYwogICBjb25zdCBjaGFyICplbGVtZW50 c19lbmM7CiAgIGNvbnN0IGNoYXIgKmVsZW1lbnRzX3NpZzsKICAgY29uc3QgY2hhciAqZWxlbWVu dHNfZ3JpcDsKLSAgaW50IHVzZTsKICAgZ2NyeV9wa19nZW5lcmF0ZV90IGdlbmVyYXRlOwogICBn Y3J5X3BrX2NoZWNrX3NlY3JldF9rZXlfdCBjaGVja19zZWNyZXRfa2V5OwogICBnY3J5X3BrX2Vu Y3J5cHRfdCBlbmNyeXB0OwpAQCAtMjQzLDYgKzM3NSwxMCBAQCB0eXBlZGVmIHN0cnVjdCBnY3J5 X3BrX3NwZWMKICAgZ2NyeV9wa19zaWduX3Qgc2lnbjsKICAgZ2NyeV9wa192ZXJpZnlfdCB2ZXJp Znk7CiAgIGdjcnlfcGtfZ2V0X25iaXRzX3QgZ2V0X25iaXRzOworICBwa19jb21wX2tleWdyaXBf dCBjb21wX2tleWdyaXA7CisgIHBrX2dldF9jdXJ2ZV90IGdldF9jdXJ2ZTsKKyAgcGtfZ2V0X2N1 cnZlX3BhcmFtX3QgZ2V0X2N1cnZlX3BhcmFtOworCiAjaWZkZWYgR1JVQl9VVElMCiAgIGNvbnN0 IGNoYXIgKm1vZG5hbWU7CiAjZW5kaWYKQEAgLTM0NSw2ICs0ODEsMTAgQEAgZ3J1Yl9jcnlwdG9f aGFzaCAoY29uc3QgZ2NyeV9tZF9zcGVjX3QgKmhhc2gsIHZvaWQgKm91dCwgY29uc3Qgdm9pZCAq aW4sCiAJCSAgZ3J1Yl9zaXplX3QgaW5sZW4pOwogY29uc3QgZ2NyeV9tZF9zcGVjX3QgKgogZ3J1 Yl9jcnlwdG9fbG9va3VwX21kX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOworY29uc3QgZ2Ny eV9tZF9zcGVjX3QgKgorZ3J1Yl9jcnlwdG9fbG9va3VwX21kX2J5X2FsZ28gKGludCBhbGdvKTsK K2NvbnN0IGdjcnlfbWRfc3BlY190ICoKK2dydWJfY3J5cHRvX2xvb2t1cF9tZF9ieV9vaWQgKGNv bnN0IGNoYXIgKm9pZCk7CiAKIGdydWJfZXJyX3QKIGdydWJfY3J5cHRvX2djcnlfZXJyb3IgKGdj cnlfZXJyX2NvZGVfdCBpbik7CkBAIC00MDgsNyArNTQ4LDM1IEBAIHZvaWQgX2djcnlfYXNzZXJ0 X2ZhaWxlZCAoY29uc3QgY2hhciAqZXhwciwgY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsCiAK IHZvaWQgX2djcnlfYnVybl9zdGFjayAoaW50IGJ5dGVzKTsKIHZvaWQgX2djcnlfbG9nX2Vycm9y KCBjb25zdCBjaGFyICpmbXQsIC4uLiApICBfX2F0dHJpYnV0ZV9fICgoZm9ybWF0IChfX3ByaW50 Zl9fLCAxLCAyKSkpOwordm9pZCBfZ2NyeV9sb2dfaW5mbyAoY29uc3QgY2hhciAqZm10LCAuLi4p Owordm9pZCBfX2djcnlfYnVybl9zdGFjayAodW5zaWduZWQgaW50IHNpemUpOwordm9pZCBfX2dj cnlfYnVybl9zdGFja19kdW1teSAodm9pZCk7Cit2b2lkIF9nY3J5X2J1ZyggY29uc3QgY2hhciAq ZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMgKTsKK3ZvaWQKK19nY3J5X2Zhc3Rfd2lw ZW1lbW9yeSAodm9pZCAqcHRyLCBncnViX3NpemVfdCBsZW4pOwordm9pZAorX2djcnlfZmFzdF93 aXBlbWVtb3J5MiAodm9pZCAqcHRyLCBpbnQgc2V0LCBncnViX3NpemVfdCBsZW4pOwordW5zaWdu ZWQgaW50CitfZ2NyeV9jdF9tZW1lcXVhbCAoY29uc3Qgdm9pZCAqYjEsIGNvbnN0IHZvaWQgKmIy LCBncnViX3NpemVfdCBsZW4pOwordW5zaWduZWQgaW50CitfZ2NyeV9jdF9ub3RfbWVtZXF1YWwg KGNvbnN0IHZvaWQgKmIxLCBjb25zdCB2b2lkICpiMiwgZ3J1Yl9zaXplX3QgbGVuKTsKKworCitz dGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBfZ2NyeV9nZXRfaHdfZmVhdHVyZXModm9pZCkKK3sK KyAgcmV0dXJuIDA7Cit9CiAKK3ZvaWQgKl9nY3J5X21hbGxvYyhncnViX3NpemVfdCBuKTsKK3Zv aWQgKl9nY3J5X21hbGxvY19zZWN1cmUoZ3J1Yl9zaXplX3Qgbik7Cit2b2lkICpfZ2NyeV94bWFs bG9jKGdydWJfc2l6ZV90IG4pOwordm9pZCAqX2djcnlfeG1hbGxvY19zZWN1cmUoZ3J1Yl9zaXpl X3Qgbik7Cit2b2lkIF9nY3J5X2ZyZWUgKHZvaWQgKnApOwordm9pZCAqX2djcnlfeHJlYWxsb2Mg KHZvaWQgKmEsIGdydWJfc2l6ZV90IG4pOworaW50IF9nY3J5X2lzX3NlY3VyZSAoY29uc3Qgdm9p ZCAqYSk7Cit2b2lkICpfZ2NyeV94Y2FsbG9jIChncnViX3NpemVfdCBuLCBncnViX3NpemVfdCBt KTsKK3ZvaWQgKl9nY3J5X3hjYWxsb2Nfc2VjdXJlIChncnViX3NpemVfdCBuLCBncnViX3NpemVf dCBtKTsKK3ZvaWQgX2djcnlfZGl2aWRlX2J5X3plcm8gKHZvaWQpOwogCiAjaWZkZWYgR1JVQl9V VElMCiB2b2lkIGdydWJfZ2NyeV9pbml0X2FsbCAodm9pZCk7CkBAIC00MTksNCArNTg3LDExIEBA IGdydWJfZ2V0X3JhbmRvbSAodm9pZCAqb3V0LCBncnViX3NpemVfdCBsZW4pOwogCiAjZW5kaWYK IAordHlwZWRlZiBzdHJ1Y3QgX2dwZ3J0X2I2NHN0YXRlICpncGdydF9iNjRzdGF0ZV90OworZ3Bn cnRfYjY0c3RhdGVfdCBncGdydF9iNjRkZWNfc3RhcnQgKGNvbnN0IGNoYXIgKnRpdGxlKTsKK2dw Z19lcnJvcl90ICAgICAgZ3BncnRfYjY0ZGVjX3Byb2MgKGdwZ3J0X2I2NHN0YXRlX3Qgc3RhdGUs CisJCQkJICAgIHZvaWQgKmJ1ZmZlciwgZ3J1Yl9zaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3J1Yl9zaXplX3QgKnJfbmJ5dGVzKTsKK2dwZ19lcnJv cl90ICAgICAgZ3BncnRfYjY0ZGVjX2ZpbmlzaCAoZ3BncnRfYjY0c3RhdGVfdCBzdGF0ZSk7Citj b25zdCBjaGFyICpncGdfc3RyZXJyb3IgKGdwZ19lcnJvcl90IGVycik7CiAjZW5kaWYKZGlmZiAt LWdpdCBhL2luY2x1ZGUvZ3J1Yi9nY3J5cHQvZ3BnLWVycm9yLmggYi9pbmNsdWRlL2dydWIvZ2Ny eXB0L2dwZy1lcnJvci5oCmluZGV4IDFlNDI1MDI4NC4uNDQ0YmVmMjIxIDEwMDY0NAotLS0gYS9p bmNsdWRlL2dydWIvZ2NyeXB0L2dwZy1lcnJvci5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9nY3J5cHQv Z3BnLWVycm9yLmgKQEAgLTI5LDQgKzI5LDEzIEBAIGdwZ19lcnJfc291cmNlIChncGdfZXJyb3Jf dCBlcnIgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpKQogZ2NyeV9lcnJfY29kZV90CiBncGdfZXJy b3JfZnJvbV9zeXNlcnJvciAodm9pZCk7CiAKK2djcnlfZXJyX2NvZGVfdAorZ3BnX2Vycl9jb2Rl X2Zyb21fc3lzZXJyb3IgKHZvaWQpOworCitnY3J5X2Vycl9jb2RlX3QKK2dwZ19lcnJvcl9mcm9t X2Vycm5vIChpbnQgZXJyKTsKKworZ2NyeV9lcnJfY29kZV90CitncGdfZXJyX2NvZGVfZnJvbV9l cnJubyAoaW50IGVycik7CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdXRpbC9ncnViLWZzdGVzdC5j IGIvdXRpbC9ncnViLWZzdGVzdC5jCmluZGV4IDdmZjkwMzdiOC4uMjRiMjBhYjkxIDEwMDY0NAot LS0gYS91dGlsL2dydWItZnN0ZXN0LmMKKysrIGIvdXRpbC9ncnViLWZzdGVzdC5jCkBAIC0zNjUs NyArMzY1LDcgQEAgc3RhdGljIHZvaWQKIGNtZF9jcmMgKGNoYXIgKnBhdGhuYW1lKQogewogICBn cnViX3VpbnQ4X3QgKmNyYzMyX2NvbnRleHQgPSB4bWFsbG9jIChHUlVCX01EX0NSQzMyLT5jb250 ZXh0c2l6ZSk7Ci0gIEdSVUJfTURfQ1JDMzItPmluaXQoY3JjMzJfY29udGV4dCk7CisgIEdSVUJf TURfQ1JDMzItPmluaXQoY3JjMzJfY29udGV4dCwgMCk7CiAKICAgcmVhZF9maWxlIChwYXRobmFt ZSwgY3JjX2hvb2ssIGNyYzMyX2NvbnRleHQpOwogICBHUlVCX01EX0NSQzMyLT5maW5hbChjcmMz Ml9jb250ZXh0KTsKZGlmZiAtLWdpdCBhL3V0aWwvaW1wb3J0X2djcnkucHkgYi91dGlsL2ltcG9y dF9nY3J5LnB5CmluZGV4IDJiMzMyMmQzYS4uNmM3MTJlNzNmIDEwMDY0NAotLS0gYS91dGlsL2lt cG9ydF9nY3J5LnB5CisrKyBiL3V0aWwvaW1wb3J0X2djcnkucHkKQEAgLTIyLDYgKzIyLDE0IEBA IGltcG9ydCBvcwogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgY29kZWNzCiAKK2RlZiByZW1vdmVz dWZmaXgoYmFzZTogc3RyLCBzdWZmaXg6IHN0cikgLT4gc3RyOgorICAgICIiIiBCYWNrcG9ydCBv ZiBgcmVtb3Zlc3VmZml4YCBmcm9tIFBFUC02MTYgKFB5dGhvbiAzLjkrKSAiIiIKKworICAgIGlm IGJhc2UuZW5kc3dpdGgoc3VmZml4KToKKyAgICAgICAgcmV0dXJuIGJhc2VbOi1sZW4oc3VmZml4 KV0KKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gYmFzZQorCiBpZiBsZW4gKHN5cy5hcmd2KSA8 IDM6CiAgICAgcHJpbnQgKCJVc2FnZTogJXMgU09VUkNFIERFU1RJTkFUSU9OIiAlIHN5cy5hcmd2 WzBdKQogICAgIGV4aXQgKDApCkBAIC02Miw2ICs3MCwxMiBAQCBjb25mdXRpbC53cml0ZSAoIiAg Y2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpJztcbiIpOwogY29uZnV0aWwud3JpdGUgKCIgIGNwcGZs YWdzID0gJyQoQ1BQRkxBR1NfR0NSWSknO1xuIik7CiBjb25mdXRpbC53cml0ZSAoIiAgZXh0cmFf ZGlzdCA9IGdydWItY29yZS9saWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyL0NoYW5nZUxvZztcbiIp OwogY29uZnV0aWwud3JpdGUgKCJcbiIpOworCitmb3Igc3JjIGluIFsnc3JjL2NvbnN0LXRpbWUu YyddOgorICAgIGNvbmZ1dGlsLndyaXRlICgiICBjb21tb24gPSBncnViLWNvcmUvbGliL2xpYmdj cnlwdC1ncnViLyVzO1xuIiAlIHNyYykKKworY29uZnV0aWwud3JpdGUgKCJcbiIpOworCiBjaGxv ZyA9ICIiCiBtb2R1bGVzX3N5bV9tZCA9IFtdCiAKQEAgLTc5LDEwICs5MywyMyBAQCBtZGJsb2Nr c2l6ZXMgPSB7Il9nY3J5X2RpZ2VzdF9zcGVjX2NyYzMyIiA6IDY0LAogICAgICAgICAgICAgICAg ICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEyNTYiIDogNjQsCiAgICAgICAgICAgICAgICAgIl9nY3J5 X2RpZ2VzdF9zcGVjX3NoYTM4NCIgOiAxMjgsCiAgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2Vz dF9zcGVjX3NoYTUxMiIgOiAxMjgsCisgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9zcGVj X3NoYTUxMl8yNTYiOiAxMjgsCisgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9zcGVjX3No YTUxMl8yMjQiOiAxMjgsCiAgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9zcGVjX3RpZ2Vy IiA6IDY0LAogICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY190aWdlcjEiIDogNjQs CiAgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9zcGVjX3RpZ2VyMiIgOiA2NCwKLSAgICAg ICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfd2hpcmxwb29sIiA6IDY0fQorICAgICAgICAg ICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY193aGlybHBvb2wiIDogNjQsCisgICAgICAgICAgICAg ICAgIl9nY3J5X2RpZ2VzdF9zcGVjX3NoYWtlMTI4IjogNjQsCisgICAgICAgICAgICAgICAgIl9n Y3J5X2RpZ2VzdF9zcGVjX3NoYWtlMjU2IjogNjQsCisgICAgICAgICAgICAgICAgIl9nY3J5X2Rp Z2VzdF9zcGVjX3NtMyI6IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19z dHJpYm9nXzI1NiI6IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zdHJp Ym9nXzUxMiI6IDY0LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzXzIy NCI6IDExNTIgLyA4LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzXzI1 NiI6IDEwODggLyA4LAorICAgICAgICAgICAgICAgICJfZ2NyeV9kaWdlc3Rfc3BlY19zaGEzXzM4 NCI6IDgzMiAvIDgsCisgICAgICAgICAgICAgICAgIl9nY3J5X2RpZ2VzdF9zcGVjX3NoYTNfNTEy IjogNTc2IC8gOCwKKyAgICAgICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfZ29zdDM0MTFf OTQiOiAzMiwKKyAgICAgICAgICAgICAgICAiX2djcnlfZGlnZXN0X3NwZWNfZ29zdDM0MTFfY3Ai OiAzMn0KIAogY3J5cHRvbGlzdCA9IGNvZGVjcy5vcGVuIChvcy5wYXRoLmpvaW4gKGNpcGhlcl9k aXJfb3V0LCAiY3J5cHRvLmxzdCIpLCAidyIsICJ1dGYtOCIpCiAKQEAgLTk5LDI2ICsxMjYsNDcg QEAgY3J5cHRvbGlzdC53cml0ZSAoIkFFUy0yNTY6IGdjcnlfcmlqbmRhZWxcbiIpOwogY3J5cHRv bGlzdC53cml0ZSAoIkFETEVSMzI6IGFkbGVyMzJcbiIpOwogY3J5cHRvbGlzdC53cml0ZSAoIkNS QzY0OiBjcmM2NFxuIik7CiAKK2V4dHJhX2ZpbGVzID0geworICAgICJnY3J5X2NhbWVsbGlhIjog WyJjYW1lbGxpYS5jIl0sICMgTWFpbiBmaWxlIGlzIGNhbWVsbGlhLWdsdWUuYworICAgICJnY3J5 X3NoYTUxMiIgIDogWyJoYXNoLWNvbW1vbi5jIl0sCit9CitleHRyYV9maWxlc19saXN0ID0gW3gg Zm9yIHhzIGluIGV4dHJhX2ZpbGVzLnZhbHVlcygpIGZvciB4IGluIHhzXSArIFsicHVia2V5LXV0 aWwuYyIsICJyc2EtY29tbW9uLmMiLCAiZHNhLWNvbW1vbi5jIiwgIm1kLmMiXQorCiBmb3IgY2lw aGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgIGluZmlsZSA9IG9zLnBhdGguam9pbiAoY2lw aGVyX2Rpcl9pbiwgY2lwaGVyX2ZpbGUpCiAgICAgb3V0ZmlsZSA9IG9zLnBhdGguam9pbiAoY2lw aGVyX2Rpcl9vdXQsIGNpcGhlcl9maWxlKQogICAgIGlmIGNpcGhlcl9maWxlID09ICJDaGFuZ2VM b2ciIG9yIGNpcGhlcl9maWxlID09ICJDaGFuZ2VMb2ctMjAxMSI6CiAgICAgICAgIGNvbnRpbnVl CiAgICAgY2hsb2duZXcgPSAiCSogJXMiICUgY2lwaGVyX2ZpbGUKLSAgICBpZiByZS5tYXRjaCAo IihNYW5pZmVzdHxNYWtlZmlsZVwuYW18YWNcLmN8Y2lwaGVyXC5jfGhhc2gtY29tbW9uXC5jfGht YWMtdGVzdHNcLmN8bWRcLmN8cHVia2V5XC5jKSQiLCBjaXBoZXJfZmlsZSkgb3IgY2lwaGVyX2Zp bGUgPT0gImtkZi5jIiBvciBjaXBoZXJfZmlsZSA9PSAiZWxnYW1hbC5jIiBvciBjaXBoZXJfZmls ZSA9PSAicHJpbWVnZW4uYyIgb3IgY2lwaGVyX2ZpbGUgPT0gImVjYy5jIiBvciBjaXBoZXJfZmls ZSA9PSAidGVzdC1nZXRydXNhZ2UuYyI6CisgICAgIyBVbnVzZWQgZ2VuZXJpYyBzdXBwb3J0IGZp bGVzCisgICAgaWYgcmUubWF0Y2ggKHIiKE1ha2VmaWxlXC5hbXxjaXBoZXJcLmN8Y2lwaGVyLS4q XC5jfG1hYy0uKlwuY3xtYWNcLmN8cHVia2V5XC5jKSQiLCBjaXBoZXJfZmlsZSk6CisgICAgICAg IGNobG9nID0gIiVzJXM6IFJlbW92ZWRcbiIgJSAoY2hsb2csIGNobG9nbmV3KQorICAgICAgICBj b250aW51ZQorICAgICMgVE9ETzogU3VwcG9ydCBLREYKKyAgICBpZiByZS5tYXRjaCAociIoa2Rm XC5jfHNjcnlwdFwuYykkIiwgY2lwaGVyX2ZpbGUpOgorICAgICAgICBjaGxvZyA9ICIlcyVzOiBS ZW1vdmVkXG4iICUgKGNobG9nLCBjaGxvZ25ldykKKyAgICAgICAgY29udGludWUKKyAgICAjIFRP RE86IFN1cHBvcnQgY2hhY2hhMjAgYW5kIHBvbHkxMzA1CisgICAgaWYgY2lwaGVyX2ZpbGUgaW4g WyJjaGFjaGEyMC5jIiwgImVjYy5jIiwgImVsZ2FtYWwuYyJdOgorICAgICAgICBjaGxvZyA9ICIl cyVzOiBSZW1vdmVkXG4iICUgKGNobG9nLCBjaGxvZ25ldykKKyAgICAgICAgY29udGludWUgICAg ICAgIAorICAgICMgVE9ETzogVXNlIG9wdGltaXplZCB2ZXJzaW9ucworICAgIGlmIHJlLm1hdGNo IChyIiguKlwuW3NTXXwuKi1pbnRlbC1zaGFleHRcLmN8Liotc3NzZTMtaTM4NlwuY3wuKi1wcGNc LmN8Liotc3NzZTMtYW1kNjRcLmN8LiotczM5MHhcLmN8cmlqbmRhZWwtYWVzbmlcLmN8Y3JjLWlu dGVsLXBjbG11bFwuY3wuKi1hcm12OC1jZVwuY3wuKi1wMTBsZVwuY3xyaWpuZGFlbC1wYWRsb2Nr LmN8cmlqbmRhZWwtcHBjOWxlLmN8cmlqbmRhZWwtdmFlcy5jKSQiLCBjaXBoZXJfZmlsZSk6CiAg ICAgICAgIGNobG9nID0gIiVzJXM6IFJlbW92ZWRcbiIgJSAoY2hsb2csIGNobG9nbmV3KQogICAg ICAgICBjb250aW51ZQogICAgICMgQXV0b2dlbmVyYXRlZCBmaWxlcy4gTm90IGV2ZW4gd29ydGgg bWVudGlvbm5pbmcgaW4gQ2hhbmdlTG9nCi0gICAgaWYgcmUubWF0Y2ggKCJNYWtlZmlsZVwuaW4k IiwgY2lwaGVyX2ZpbGUpOgorICAgIGlmIHJlLm1hdGNoIChyIk1ha2VmaWxlXC5pbiQiLCBjaXBo ZXJfZmlsZSk6CiAgICAgICAgIGNvbnRpbnVlCiAgICAgbmNoID0gRmFsc2UKLSAgICBpZiByZS5t YXRjaCAoIi4qXC5bY2hdJCIsIGNpcGhlcl9maWxlKToKLSAgICAgICAgaXNjID0gcmUubWF0Y2gg KCIuKlwuYyQiLCBjaXBoZXJfZmlsZSkKKyAgICBpZiByZS5tYXRjaCAociIuKlwuW2NoXSQiLCBj aXBoZXJfZmlsZSk6CisgICAgICAgIGlzYyA9IHJlLm1hdGNoIChyIi4qXC5jJCIsIGNpcGhlcl9m aWxlKQogICAgICAgICBmID0gY29kZWNzLm9wZW4gKGluZmlsZSwgInIiLCAidXRmLTgiKQogICAg ICAgICBmdyA9IGNvZGVjcy5vcGVuIChvdXRmaWxlLCAidyIsICJ1dGYtOCIpCiAgICAgICAgIGZ3 LndyaXRlICgiLyogVGhpcyBmaWxlIHdhcyBhdXRvbWF0aWNhbGx5IGltcG9ydGVkIHdpdGggXG4i KQogICAgICAgICBmdy53cml0ZSAoIiAgIGltcG9ydF9nY3J5LnB5LiBQbGVhc2UgZG9uJ3QgbW9k aWZ5IGl0ICovXG4iKQotICAgICAgICBmdy53cml0ZSAoIiNpbmNsdWRlIDxncnViL2RsLmg+XG4i KQorICAgICAgICBhZGRfbGljZW5zZSA9IGNpcGhlcl9maWxlID09ICJwdWJrZXktdXRpbC5jIiBv ciAoaXNjIGFuZCBub3QgY2lwaGVyX2ZpbGUgaW4gZXh0cmFfZmlsZXNfbGlzdCkKKyAgICAgICAg aWYgYWRkX2xpY2Vuc2U6CisgICAgICAgICAgICBmdy53cml0ZSAoIiNpbmNsdWRlIDxncnViL2Rs Lmg+XG4iKQogICAgICAgICBpZiBjaXBoZXJfZmlsZSA9PSAiY2FtZWxsaWEuaCI6CiAgICAgICAg ICAgICBmdy53cml0ZSAoIiNpbmNsdWRlIDxncnViL21pc2MuaD5cbiIpCiAgICAgICAgICAgICBm dy53cml0ZSAoInZvaWQgY2FtZWxsaWFfc2V0dXAxMjgoY29uc3QgdW5zaWduZWQgY2hhciAqa2V5 LCBncnViX3VpbnQzMl90ICpzdWJrZXkpO1xuIikKQEAgLTEzMiw3ICsxODAsNyBAQCBmb3IgY2lw aGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgICAgICAgICAgZncud3JpdGUgKCJ2b2lkIGNh bWVsbGlhX2RlY3J5cHQyNTYoY29uc3QgZ3J1Yl91aW50MzJfdCAqc3Via2V5LCBncnViX3VpbnQz Ml90ICppbyk7XG4iKSAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGZ3LndyaXRl ICgiI2RlZmluZSBtZW1jcHkgZ3J1Yl9tZW1jcHlcbiIpCiAgICAgICAgICMgV2hvbGUgbGliZ2Ny eXB0IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIEdQTHYzKyBvciBjb21wYXRpYmxlCi0gICAgICAgIGlm IGlzYzoKKyAgICAgICAgaWYgYWRkX2xpY2Vuc2U6CiAgICAgICAgICAgICBmdy53cml0ZSAoIkdS VUJfTU9EX0xJQ0VOU0UgKFwiR1BMdjMrXCIpO1xuIikKIAogICAgICAgICBjaXBoZXJuYW1lcyA9 IFtdCkBAIC0xNDgsMTQgKzE5NiwxMCBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVz OgogICAgICAgICBpc2NpcGhlciA9IEZhbHNlCiAgICAgICAgIGlzY3J5cHRvc3RhcnQgPSBGYWxz ZQogICAgICAgICBpc2NvbW1hID0gRmFsc2UKLSAgICAgICAgaXNnbHVlID0gRmFsc2UKICAgICAg ICAgc2tpcF9zdGF0ZW1lbnQgPSBGYWxzZQorICAgICAgICBza2lwX2NvbW1hID0gRmFsc2UKICAg ICAgICAgaWYgaXNjOgotICAgICAgICAgICAgbW9kbmFtZSA9IGNpcGhlcl9maWxlIFswOmxlbihj aXBoZXJfZmlsZSkgLSAyXQotICAgICAgICAgICAgaWYgcmUubWF0Y2ggKCIuKi1nbHVlJCIsIG1v ZG5hbWUpOgotICAgICAgICAgICAgICAgIG1vZG5hbWUgPSBtb2RuYW1lLnJlcGxhY2UgKCItZ2x1 ZSIsICIiKQotICAgICAgICAgICAgICAgIGlzZ2x1ZSA9IFRydWUKLSAgICAgICAgICAgIG1vZG5h bWUgPSAiZ2NyeV8lcyIgJSBtb2RuYW1lCisgICAgICAgICAgICBtb2RuYW1lID0gImdjcnlfJXMi ICUgcmVtb3Zlc3VmZml4KHJlbW92ZXN1ZmZpeChjaXBoZXJfZmlsZSwgIi5jIiksICItZ2x1ZSIp LnJlcGxhY2UoIi0iLCAiXyIpCiAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICBs aW5lID0gbGluZQogICAgICAgICAgICAgaWYgc2tpcF9zdGF0ZW1lbnQ6CkBAIC0xNzEsNyArMjE1 LDcgQEAgZm9yIGNpcGhlcl9maWxlIGluIGNpcGhlcl9maWxlczoKICAgICAgICAgICAgICAgICAg ICAgc2tpcDIgPSBGYWxzZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBp ZiBpc2NyeXB0b3N0YXJ0OgotICAgICAgICAgICAgICAgIHMgPSByZS5zZWFyY2ggKCIgKlwiKFtB LVowLTlfYS16XSopXCIiLCBsaW5lKQorICAgICAgICAgICAgICAgIHMgPSByZS5zZWFyY2ggKCIg KlwiKFtBLVowLTlfYS16LV0qKVwiIiwgbGluZSkKICAgICAgICAgICAgICAgICBpZiBub3QgcyBp cyBOb25lOgogICAgICAgICAgICAgICAgICAgICBzZyA9IHMuZ3JvdXBzKClbMF0KICAgICAgICAg ICAgICAgICAgICAgY3J5cHRvbGlzdC53cml0ZSAoKCIlczogJXNcbiIpICUgKHNnLCBtb2RuYW1l KSkKQEAgLTIwMSw3ICsyNDUsNyBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgog ICAgICAgICAgICAgICAgICAgICBpc3BrID0gRmFsc2UKICAgICAgICAgICAgICAgICBpc2NvbW1h ID0gbm90IHJlLnNlYXJjaCAoIiwkIiwgbGluZSkgaXMgTm9uZQogICAgICAgICAgICAgIyBVc2Vk IG9ubHkgZm9yIHNlbGZ0ZXN0cy4KLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCAoIihzdGF0aWMg Ynl0ZXxzdGF0aWMgdW5zaWduZWQgY2hhcikgKHdlYWtfa2V5c19jaGtzdW0pXFtbMC05XSpcXSA9 IiwgbGluZSkKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCAociIoc3RhdGljIGJ5dGV8c3RhdGlj IHVuc2lnbmVkIGNoYXJ8c3RhdGljIGNvbnN0IGdjcnlfbWRfc3BlY190IFwqIGNvbnN0KSAod2Vh a19rZXlzX2Noa3N1bXxkaWdlc3RfbGlzdClcW1swLTldKlxdID0iLCBsaW5lKQogICAgICAgICAg ICAgaWYgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBza2lwID0gMQogICAgICAgICAg ICAgICAgIGZuYW1lID0gbS5ncm91cHMgKClbMV0KQEAgLTIxMiwxMSArMjU2LDE0IEBAIGZvciBj aXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGNobG9nbmV3 ID0gIiVzICVzIiAlIChjaGxvZ25ldywgY2htc2cpCiAgICAgICAgICAgICAgICAgICAgIG5jaCA9 IFRydWUKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgKG5vdCBob2xk KSBhbmQgKHJlLm1hdGNoIChyIlsgXHRdKihydW5fc2VsZnRlc3RzfGRvX3RyaXBsZWRlc19zZXRf ZXh0cmFfaW5mbyksPyIsIGxpbmUpIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgICAgICBpc2Nv bW1hID0gVHJ1ZQorICAgICAgICAgICAgICAgIGxpbmUgPSAiIgogICAgICAgICAgICAgaWYgaG9s ZDoKICAgICAgICAgICAgICAgICBob2xkID0gRmFsc2UKICAgICAgICAgICAgICAgICAjIFdlJ3Jl IG9wdGltaXNpbmcgZm9yIHNpemUgYW5kIGV4Y2x1ZGUgYW55dGhpbmcgbmVlZGluZyBnb29kCiAg ICAgICAgICAgICAgICAgIyByYW5kb21uZXNzLgotICAgICAgICAgICAgICAgIGlmIG5vdCByZS5t YXRjaCAoIihydW5fc2VsZnRlc3RzfHNlbGZ0ZXN0fF9nY3J5X2Flc19jLi5fLi5jfF9nY3J5X1th LXowLTldKl9oYXNoX2J1ZmZlcnx0cmlwbGVkZXNfc2V0MmtleXN8ZG9fdHJpcGxlZGVzX3NldF9l eHRyYV9pbmZvfF9nY3J5X3JtZDE2MF9taXhibG9ja3xzZXJwZW50X3Rlc3R8ZHNhX2dlbmVyYXRl X2V4dHx0ZXN0X2tleXN8Z2VuX2t8c2lnbnxnZW5feDkzMV9wYXJtX3hwfGdlbmVyYXRlX3g5MzF8 Z2VuZXJhdGVfa2V5fGRzYV9nZW5lcmF0ZXxkc2Ffc2lnbnxlY2Nfc2lnbnxnZW5lcmF0ZXxnZW5l cmF0ZV9maXBzMTg2fF9nY3J5X3JlZ2lzdGVyX3BrX2RzYV9wcm9ncmVzc3xfZ2NyeV9yZWdpc3Rl cl9wa19lY2NfcHJvZ3Jlc3N8cHJvZ3Jlc3N8c2NhbnZhbHxlYzJvc3xlY2NfZ2VuZXJhdGVfZXh0 fGVjY19nZW5lcmF0ZXxjb21wdXRlX2tleWdyaXB8ZWNjX2dldF9wYXJhbXxfZ2NyeV9yZWdpc3Rl cl9wa19kc2FfcHJvZ3Jlc3N8Z2VuX3g5MzFfcGFybV94cHxnZW5feDkzMV9wYXJtX3hpfHJzYV9k ZWNyeXB0fHJzYV9zaWdufHJzYV9nZW5lcmF0ZV9leHR8cnNhX2dlbmVyYXRlfHNlY3JldHxjaGVj a19leHBvbmVudHxyc2FfYmxpbmR8cnNhX3VuYmxpbmR8ZXh0cmFjdF9hX2Zyb21fc2V4cHxjdXJ2 ZV9mcmVlfGN1cnZlX2NvcHl8cG9pbnRfc2V0KSIsIGxpbmUpIGlzIE5vbmU6CisgICAgICAgICAg ICAgICAgaWYgcmUubWF0Y2ggKCIoX2djcnlfaGFzaF9zZWxmdGVzdF9jaGVja19vbmV8YnVsa19z ZWxmdGVzdF9zZXRrZXl8cnVuX3NlbGZ0ZXN0c3xkb190cmlwbGVkZXNfc2V0X2V4dHJhX2luZm98 c2VsZnRlc3R8c200X3NlbGZ0ZXN0fF9nY3J5X1thLXowLTlfXSpfaGFzaF9idWZmZXJzfF9nY3J5 X3NoYTFfaGFzaF9idWZmZXJ8dHJpcGxlZGVzX3NldDJrZXlzfF9nY3J5X3JtZDE2MF9taXhibG9j a3xzZXJwZW50X3Rlc3R8ZHNhX2dlbmVyYXRlX2V4dHx0ZXN0X2tleXN8Z2VuX2t8c2lnbnxnZW5f eDkzMV9wYXJtX3hwfGdlbmVyYXRlX3g5MzF8Z2VuZXJhdGVfa2V5fGRzYV9nZW5lcmF0ZXxkc2Ff c2lnbnxlY2Nfc2lnbnxnZW5lcmF0ZXxnZW5lcmF0ZV9maXBzMTg2fF9nY3J5X3JlZ2lzdGVyX3Br X2RzYV9wcm9ncmVzc3xfZ2NyeV9yZWdpc3Rlcl9wa19lY2NfcHJvZ3Jlc3N8cHJvZ3Jlc3N8c2Nh bnZhbHxlYzJvc3xlY2NfZ2VuZXJhdGVfZXh0fGVjY19nZW5lcmF0ZXxlY2NfZ2V0X3BhcmFtfF9n Y3J5X3JlZ2lzdGVyX3BrX2RzYV9wcm9ncmVzc3xnZW5feDkzMV9wYXJtX3hwfGdlbl94OTMxX3Bh cm1feGl8cnNhX2RlY3J5cHR8cnNhX3NpZ258cnNhX2dlbmVyYXRlX2V4dHxyc2FfZ2VuZXJhdGV8 c2VjcmV0fGNoZWNrX2V4cG9uZW50fHJzYV9ibGluZHxyc2FfdW5ibGluZHxleHRyYWN0X2FfZnJv bV9zZXhwfGN1cnZlX2ZyZWV8Y3VydmVfY29weXxwb2ludF9zZXR8X2djcnlfZHNhX2dlbl9yZmM2 OTc5X2t8Yml0czJvY3RldHN8aW50Mm9jdGV0c3xtZF9leHRyYWN0fF9nY3J5X21kX2RlYnVnfF9n Y3J5X21kX3NlbGZ0ZXN0fF9nY3J5X21kX2lzX2VuYWJsZWR8X2djcnlfbWRfaXNfc2VjdXJlfF9n Y3J5X21kX2luaXR8X2djcnlfbWRfaW5mb3xfZ2NyeV9tZF9nZXRfYWxnb3xtZF9nZXRfYWxnb3xf Z2NyeV9tZF9nZXR8X2djcnlfbWRfZXh0cmFjdHxfZ2NyeV9tZF9zZXRrZXl8bWRfc2V0a2V5fHBy ZXBhcmVfbWFjcGFkc3xfZ2NyeV9tZF9hbGdvX25hbWV8c2VhcmNoX29pZHxzcGVjX2Zyb21fb2lk fHNwZWNfZnJvbV9uYW1lfHNwZWNfZnJvbV9hbGdvfG1hcF9hbGdvKSIsIGxpbmUpIGlzIG5vdCBO b25lOgogCiAgICAgICAgICAgICAgICAgICAgIHNraXAgPSAxCiAgICAgICAgICAgICAgICAgICAg IGlmIG5vdCByZS5tYXRjaCAoInNlbGZ0ZXN0IiwgbGluZSkgaXMgTm9uZSBhbmQgY2lwaGVyX2Zp bGUgPT0gImlkZWEuYyI6CkBAIC0yMjQsNiArMjcxLDExIEBAIGZvciBjaXBoZXJfZmlsZSBpbiBj aXBoZXJfZmlsZXM6CiAKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoICgic2Vy cGVudF90ZXN0IiwgbGluZSkgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIGZ3Lndy aXRlICgic3RhdGljIGNvbnN0IGNoYXIgKnNlcnBlbnRfdGVzdCAodm9pZCkgeyByZXR1cm4gMDsg fVxuIik7CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaCAoInNtNF9zZWxmdGVz dCIsIGxpbmUpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBmdy53cml0ZSAoInN0 YXRpYyBjb25zdCBjaGFyICpzbTRfc2VsZnRlc3QgKHZvaWQpIHsgcmV0dXJuIDA7IH1cbiIpOwor ICAgICAgICAgICAgICAgICAgICBoYXNoX2J1ZiA9IHJlLm1hdGNoICgiKF9nY3J5X1thLXowLTlf XSpfaGFzaF9idWZmZXJzKSIsIGxpbmUpCisgICAgICAgICAgICAgICAgICAgIGlmIGhhc2hfYnVm IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgZncud3JpdGUgKCIjZGVmaW5l ICVzIDAiICUgKGhhc2hfYnVmLmdyb3VwKDApKSkKICAgICAgICAgICAgICAgICAgICAgaWYgbm90 IHJlLm1hdGNoICgiZHNhX2dlbmVyYXRlIiwgbGluZSkgaXMgTm9uZToKICAgICAgICAgICAgICAg ICAgICAgICAgIGZ3LndyaXRlICgiI2RlZmluZSBkc2FfZ2VuZXJhdGUgMCIpOwogICAgICAgICAg ICAgICAgICAgICBpZiBub3QgcmUubWF0Y2ggKCJlY2NfZ2VuZXJhdGUiLCBsaW5lKSBpcyBOb25l OgpAQCAtMjM4LDYgKzI5MCwxMCBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgog ICAgICAgICAgICAgICAgICAgICAgICAgZncud3JpdGUgKCIjZGVmaW5lIGRzYV9zaWduIDAiKTsK ICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoICgiZWNjX3NpZ24iLCBsaW5lKSBp cyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgZncud3JpdGUgKCIjZGVmaW5lIGVjY19z aWduIDAiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoICgic2VhcmNoX29p ZCIsIGxpbmUpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiNk ZWZpbmUgc2VhcmNoX29pZChhLGIpIGdydWJfY3J5cHRvX2xvb2t1cF9tZF9ieV9vaWQoYSkiKQor ICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmUubWF0Y2ggKCJzcGVjX2Zyb21fbmFtZSIsIGxp bmUpIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiNkZWZpbmUg c3BlY19mcm9tX25hbWUgZ3J1Yl9jcnlwdG9fbG9va3VwX21kX2J5X25hbWUiKQogICAgICAgICAg ICAgICAgICAgICBmbmFtZSA9IHJlLm1hdGNoICgiW2EtekEtWjAtOV9dKiIsIGxpbmUpLmdyb3Vw ICgpCiAgICAgICAgICAgICAgICAgICAgIGNobXNnID0gIiglcyk6IFJlbW92ZWQuIiAlIGZuYW1l CiAgICAgICAgICAgICAgICAgICAgIGlmIG5jaDoKQEAgLTI1Nyw0NSArMzEzLDQ2IEBAIGZvciBj aXBoZXJfZmlsZSBpbiBjaXBoZXJfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGNobG9nbmV3 ID0gIiVzOiAlcyIgJSAoY2hsb2duZXcsIGNobXNnKQogICAgICAgICAgICAgICAgICAgICBuY2gg PSBUcnVlCiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIG0gPSByZS5tYXRj aCAoImdjcnlfY2lwaGVyX3NwZWNfdCIsIGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0Y2gg KCIoY29uc3QgKT9nY3J5X2NpcGhlcl9zcGVjX3QiLCBsaW5lKQogICAgICAgICAgICAgaWYgaXNj IGFuZCBub3QgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlzbWQpCiAg ICAgICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNwaykKICAgICAgICAgICAgICAgICBhc3NlcnQg KG5vdCBpc2NpcGhlcikKICAgICAgICAgICAgICAgICBhc3NlcnQgKG5vdCBpc2NyeXB0b3N0YXJ0 KQotICAgICAgICAgICAgICAgIGNpcGhlcm5hbWUgPSBsaW5lIFtsZW4gKCJnY3J5X2NpcGhlcl9z cGVjX3QiKTpdLnN0cmlwICgpCisgICAgICAgICAgICAgICAgY2lwaGVybmFtZSA9IGxpbmUucmVt b3ZlcHJlZml4KCJjb25zdCAiKS5yZW1vdmVwcmVmaXgoImdjcnlfY2lwaGVyX3NwZWNfdCIpLnN0 cmlwICgpCiAgICAgICAgICAgICAgICAgY2lwaGVybmFtZSA9IHJlLm1hdGNoKCJbYS16QS1aMC05 X10qIixjaXBoZXJuYW1lKS5ncm91cCAoKQogICAgICAgICAgICAgICAgIGNpcGhlcm5hbWVzLmFw cGVuZCAoY2lwaGVybmFtZSkKICAgICAgICAgICAgICAgICBpc2NpcGhlciA9IFRydWUKICAgICAg ICAgICAgICAgICBpc2NyeXB0b3N0YXJ0ID0gVHJ1ZQogCi0gICAgICAgICAgICBtID0gcmUubWF0 Y2ggKCJnY3J5X3BrX3NwZWNfdCIsIGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0Y2ggKCIo Y29uc3QgKT9nY3J5X3BrX3NwZWNfdCIsIGxpbmUpCiAgICAgICAgICAgICBpZiBpc2MgYW5kIG5v dCBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNtZCkKICAgICAgICAg ICAgICAgICBhc3NlcnQgKG5vdCBpc3BrKQogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlz Y2lwaGVyKQogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlzY3J5cHRvc3RhcnQpCi0gICAg ICAgICAgICAgICAgcGtuYW1lID0gbGluZSBbbGVuICgiZ2NyeV9wa19zcGVjX3QiKTpdLnN0cmlw ICgpCisgICAgICAgICAgICAgICAgcGtuYW1lID0gbGluZS5yZW1vdmVwcmVmaXgoImNvbnN0ICIp LnJlbW92ZXByZWZpeCgiZ2NyeV9wa19zcGVjX3QiKS5zdHJpcCAoKQogICAgICAgICAgICAgICAg IHBrbmFtZSA9IHJlLm1hdGNoKCJbYS16QS1aMC05X10qIixwa25hbWUpLmdyb3VwICgpCiAgICAg ICAgICAgICAgICAgcGtuYW1lcy5hcHBlbmQgKHBrbmFtZSkKICAgICAgICAgICAgICAgICBpc3Br ID0gVHJ1ZQogICAgICAgICAgICAgICAgIGlzY3J5cHRvc3RhcnQgPSBUcnVlCiAKLSAgICAgICAg ICAgIG0gPSByZS5tYXRjaCAoImdjcnlfbWRfc3BlY190IiwgbGluZSkKKyAgICAgICAgICAgIG0g PSByZS5tYXRjaCAoIihjb25zdCApP2djcnlfbWRfc3BlY190IiwgbGluZSkKICAgICAgICAgICAg IGlmIGlzYyBhbmQgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBhc3NlcnQgKG5vdCBp c21kKQogICAgICAgICAgICAgICAgIGFzc2VydCAobm90IGlzcGspCiAgICAgICAgICAgICAgICAg YXNzZXJ0IChub3QgaXNjaXBoZXIpCiAgICAgICAgICAgICAgICAgYXNzZXJ0IChub3QgaXNjcnlw dG9zdGFydCkKLSAgICAgICAgICAgICAgICBtZG5hbWUgPSBsaW5lIFtsZW4gKCJnY3J5X21kX3Nw ZWNfdCIpOl0uc3RyaXAgKCkKKyAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZW1vdmVwcmVm aXgoImNvbnN0ICIpCisgICAgICAgICAgICAgICAgbWRuYW1lID0gbGluZS5yZW1vdmVwcmVmaXgo ImNvbnN0ICIpLnJlbW92ZXByZWZpeCgiZ2NyeV9tZF9zcGVjX3QiKS5zdHJpcCAoKQogICAgICAg ICAgICAgICAgIG1kbmFtZSA9IHJlLm1hdGNoKCJbYS16QS1aMC05X10qIixtZG5hbWUpLmdyb3Vw ICgpCiAgICAgICAgICAgICAgICAgbWRuYW1lcy5hcHBlbmQgKG1kbmFtZSkKICAgICAgICAgICAg ICAgICBpc21kID0gVHJ1ZQogICAgICAgICAgICAgICAgIG1kYXJnID0gMAogICAgICAgICAgICAg ICAgIGlzY3J5cHRvc3RhcnQgPSBUcnVlCi0gICAgICAgICAgICBtID0gcmUubWF0Y2ggKCJzdGF0 aWMgY29uc3QgY2hhciBcKnNlbGZ0ZXN0Lio7JCIsIGxpbmUpCisgICAgICAgICAgICBtID0gcmUu bWF0Y2ggKHIic3RhdGljIGNvbnN0IGNoYXIgXCpzZWxmdGVzdC4qOyQiLCBsaW5lKQogICAgICAg ICAgICAgaWYgbm90IG0gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBmbmFtZSA9IGxpbmVbbGVu ICgic3RhdGljIGNvbnN0IGNoYXIgXCoiKTpdCisgICAgICAgICAgICAgICAgZm5hbWUgPSBsaW5l W2xlbiAociJzdGF0aWMgY29uc3QgY2hhciBcKiIpOl0KICAgICAgICAgICAgICAgICBmbmFtZSA9 IHJlLm1hdGNoICgiW2EtekEtWjAtOV9dKiIsIGZuYW1lKS5ncm91cCAoKQogICAgICAgICAgICAg ICAgIGNobXNnID0gIiglcyk6IFJlbW92ZWQgZGVjbGFyYXRpb24uIiAlIGZuYW1lCiAgICAgICAg ICAgICAgICAgaWYgbmNoOgpAQCAtMzMxLDcgKzM4OCw3IEBAIGZvciBjaXBoZXJfZmlsZSBpbiBj aXBoZXJfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGNobG9nbmV3ID0gIiVzICVzIiAlIChj aGxvZ25ldywgY2htc2cpCiAgICAgICAgICAgICAgICAgICAgIG5jaCA9IFRydWUKICAgICAgICAg ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IHJlLm1hdGNoICgic3RhdGljIHZvaWQg XChcKnByb2dyZXNzX2NiXCkuKjskIiwgbGluZSkKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCAo ciJzdGF0aWMgdm9pZCBcKFwqcHJvZ3Jlc3NfY2JcKS4qOyQiLCBsaW5lKQogICAgICAgICAgICAg aWYgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBjaG1zZyA9ICIocHJvZ3Jlc3NfY2Ip OiBSZW1vdmVkIGRlY2xhcmF0aW9uLiIKICAgICAgICAgICAgICAgICBpZiBuY2g6CkBAIC0zNDAs NyArMzk3LDcgQEAgZm9yIGNpcGhlcl9maWxlIGluIGNpcGhlcl9maWxlczoKICAgICAgICAgICAg ICAgICAgICAgY2hsb2duZXcgPSAiJXMgJXMiICUgKGNobG9nbmV3LCBjaG1zZykKICAgICAgICAg ICAgICAgICAgICAgbmNoID0gVHJ1ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg ICAgICBtID0gcmUubWF0Y2ggKCJzdGF0aWMgdm9pZCBcKnByb2dyZXNzX2NiX2RhdGEuKjskIiwg bGluZSkKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCAociJzdGF0aWMgdm9pZCBcKnByb2dyZXNz X2NiX2RhdGEuKjskIiwgbGluZSkKICAgICAgICAgICAgIGlmIG5vdCBtIGlzIE5vbmU6CiAgICAg ICAgICAgICAgICAgY2htc2cgPSAiKHByb2dyZXNzX2NiKTogUmVtb3ZlZCBkZWNsYXJhdGlvbi4i CiAgICAgICAgICAgICAgICAgaWYgbmNoOgpAQCAtMzUwLDIyICs0MDcsMjIgQEAgZm9yIGNpcGhl cl9maWxlIGluIGNpcGhlcl9maWxlczoKICAgICAgICAgICAgICAgICAgICAgbmNoID0gVHJ1ZQog ICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCAoIihz dGF0aWMgY29uc3QgY2hhciggfClcKnxzdGF0aWMgZ3BnX2Vycl9jb2RlX3R8dm9pZHxzdGF0aWMg aW50fHN0YXRpYyBnY3J5X2Vycl9jb2RlX3R8c3RhdGljIGdjcnlfbXBpX3R8c3RhdGljIHZvaWR8 dm9pZHxzdGF0aWMgZWxsaXB0aWNfY3VydmVfdCkgKiQiLCBsaW5lKQorICAgICAgICAgICAgbSA9 IHJlLm1hdGNoIChyIigoc3RhdGljICk/Y29uc3QgY2hhciggfClcKnxzdGF0aWMgY29uc3QgZ2Ny eV9tZF9zcGVjX3QgXCp8KHN0YXRpYyApP2dwZ19lcnJfY29kZV90fGdwZ19lcnJvcl90fHZvaWR8 KHN0YXRpYyApP2ludHwoc3RhdGljICk/Z2NyeV9lcnJfY29kZV90fHN0YXRpYyBnY3J5X21waV90 fHN0YXRpYyB2b2lkfHZvaWR8c3RhdGljIGVsbGlwdGljX2N1cnZlX3QpICokIiwgbGluZSkKICAg ICAgICAgICAgIGlmIG5vdCBtIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaG9sZCA9IFRydWUK ICAgICAgICAgICAgICAgICBob2xkbGluZSA9IGxpbmUKICAgICAgICAgICAgICAgICBjb250aW51 ZQotICAgICAgICAgICAgbSA9IHJlLm1hdGNoICgic3RhdGljIGludCB0cmlwbGVkZXNfc2V0Mmtl eXMgXCguKlwpOyIsIGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0Y2ggKHIic3RhdGljIGlu dCB0cmlwbGVkZXNfc2V0MmtleXMgXCguKlwpOyIsIGxpbmUpCiAgICAgICAgICAgICBpZiBub3Qg bSBpcyBOb25lOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUu bWF0Y2ggKCJzdGF0aWMgaW50IHRyaXBsZWRlc19zZXQza2V5cyBcKC4qXCk7IiwgbGluZSkKKyAg ICAgICAgICAgIG0gPSByZS5tYXRjaCAociJzdGF0aWMgaW50IHRyaXBsZWRlc19zZXQza2V5cyBc KC4qXCk7IiwgbGluZSkKICAgICAgICAgICAgIGlmIG5vdCBtIGlzIE5vbmU6CiAgICAgICAgICAg ICAgICAgY29udGludWUKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCAoInN0YXRpYyBpbnQgdHJp cGxlZGVzX3NldDJrZXlzIFwoIiwgbGluZSkKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaCAociJz dGF0aWMgaW50IHRyaXBsZWRlc19zZXQya2V5cyBcKCIsIGxpbmUpCiAgICAgICAgICAgICBpZiBu b3QgbSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNraXBfc3RhdGVtZW50ID0gVHJ1ZQogICAg ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBtID0gcmUubWF0Y2ggKCJzdGF0aWMg aW50IHRyaXBsZWRlc19zZXQza2V5cyBcKCIsIGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0 Y2ggKHIic3RhdGljIGludCB0cmlwbGVkZXNfc2V0M2tleXMgXCgiLCBsaW5lKQogICAgICAgICAg ICAgaWYgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBza2lwX3N0YXRlbWVudCA9IFRy dWUKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNDIxLDExICs0NzgsOSBAQCBmb3IgY2lw aGVyX2ZpbGUgaW4gY2lwaGVyX2ZpbGVzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAg ICAgICAgICBmdy53cml0ZSAobGluZSkKICAgICAgICAgaWYgbGVuIChjaXBoZXJuYW1lcykgPiAw IG9yIGxlbiAobWRuYW1lcykgPiAwIG9yIGxlbiAocGtuYW1lcykgPiAwOgotICAgICAgICAgICAg aWYgaXNnbHVlOgotICAgICAgICAgICAgICAgIG1vZGZpbGVzID0gImxpYi9saWJnY3J5cHQtZ3J1 Yi9jaXBoZXIvJXMgbGliL2xpYmdjcnlwdC1ncnViL2NpcGhlci8lcyIgXAotICAgICAgICAgICAg ICAgICAgICAlIChjaXBoZXJfZmlsZSwgY2lwaGVyX2ZpbGUucmVwbGFjZSAoIi1nbHVlLmMiLCAi LmMiKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbW9kZmlsZXMgPSAibGli L2xpYmdjcnlwdC1ncnViL2NpcGhlci8lcyIgJSBjaXBoZXJfZmlsZQorICAgICAgICAgICAgbW9k ZmlsZXMgPSBbY2lwaGVyX2ZpbGVdCisgICAgICAgICAgICBpZiBtb2RuYW1lIGluIGV4dHJhX2Zp bGVzLmtleXMoKToKKyAgICAgICAgICAgICAgICBtb2RmaWxlcyArPSBleHRyYV9maWxlc1ttb2Ru YW1lXQogICAgICAgICAgICAgaWYgbGVuIChjaXBoZXJuYW1lcykgPiAwIG9yIGxlbiAobWRuYW1l cykgPiAwOgogICAgICAgICAgICAgICAgIG1vZHVsZXNfc3ltX21kLmFwcGVuZCAobW9kbmFtZSkK ICAgICAgICAgICAgIGNobXNnID0gIihHUlVCX01PRF9JTklUKCVzKSk6IE5ldyBmdW5jdGlvblxu IiAlIG1vZG5hbWUKQEAgLTQ0Nyw3ICs1MDIsNyBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lwaGVy X2ZpbGVzOgogICAgICAgICAgICAgICAgIGNobG9nbmV3ID0gIiVzXG4JJXMiICUgKGNobG9nbmV3 LCBjaG1zZykKICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiAgZ3J1Yl9tZF9yZWdpc3RlciAo JiVzKTtcbiIgJSBtZG5hbWUpCiAgICAgICAgICAgICBmb3IgcGtuYW1lIGluIHBrbmFtZXM6Ci0g ICAgICAgICAgICAgICAgY2htc2cgPSAiUmVnaXN0ZXIgcGsgJXMiICUgbWRuYW1lCisgICAgICAg ICAgICAgICAgY2htc2cgPSAiUmVnaXN0ZXIgcGsgJXMiICUgcGtuYW1lCiAgICAgICAgICAgICAg ICAgY2hsb2duZXcgPSAiJXNcbgklcyIgJSAoY2hsb2duZXcsIGNobXNnKQogICAgICAgICAgICAg ICAgIGZ3LndyaXRlICgiICBncnViX2NyeXB0b19wa18lcyA9ICYlcztcbiIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgJSAocGtuYW1lLnJlcGxhY2UgKCJfZ2NyeV9wdWJrZXlfc3BlY18iLCAi IiksIHBrbmFtZSkpCkBAIC00NjUsMTcgKzUyMCwxNyBAQCBmb3IgY2lwaGVyX2ZpbGUgaW4gY2lw aGVyX2ZpbGVzOgogICAgICAgICAgICAgICAgIGNobG9nbmV3ID0gIiVzXG4JJXMiICUgKGNobG9n bmV3LCBjaG1zZykKICAgICAgICAgICAgICAgICBmdy53cml0ZSAoIiAgZ3J1Yl9tZF91bnJlZ2lz dGVyICgmJXMpO1xuIiAlIG1kbmFtZSkKICAgICAgICAgICAgIGZvciBwa25hbWUgaW4gcGtuYW1l czoKLSAgICAgICAgICAgICAgICBjaG1zZyA9ICJVbnJlZ2lzdGVyIHBrICVzIiAlIG1kbmFtZQor ICAgICAgICAgICAgICAgIGNobXNnID0gIlVucmVnaXN0ZXIgcGsgJXMiICUgcGtuYW1lCiAgICAg ICAgICAgICAgICAgY2hsb2duZXcgPSAiJXNcbgklcyIgJSAoY2hsb2duZXcsIGNobXNnKQogICAg ICAgICAgICAgICAgIGZ3LndyaXRlICgiICBncnViX2NyeXB0b19wa18lcyA9IDA7XG4iCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICUgKHBrbmFtZS5yZXBsYWNlICgiX2djcnlfcHVia2V5X3Nw ZWNfIiwgIiIpKSkKICAgICAgICAgICAgIGZ3LndyaXRlICgifVxuIikKICAgICAgICAgICAgIGNv bmYud3JpdGUgKCJtb2R1bGUgPSB7XG4iKQogICAgICAgICAgICAgY29uZi53cml0ZSAoIiAgbmFt ZSA9ICVzO1xuIiAlIG1vZG5hbWUpCi0gICAgICAgICAgICBmb3Igc3JjIGluIG1vZGZpbGVzLnNw bGl0KCk6Ci0gICAgICAgICAgICAgICAgY29uZi53cml0ZSAoIiAgY29tbW9uID0gJXM7XG4iICUg c3JjKQorICAgICAgICAgICAgZm9yIHNyYyBpbiBtb2RmaWxlczoKKyAgICAgICAgICAgICAgICBj b25mLndyaXRlICgiICBjb21tb24gPSBsaWIvbGliZ2NyeXB0LWdydWIvY2lwaGVyLyVzO1xuIiAl IHNyYykKICAgICAgICAgICAgICAgICBpZiBsZW4gKGNpcGhlcm5hbWVzKSA+IDAgb3IgbGVuICht ZG5hbWVzKSA+IDA6Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZ1dGlsLndyaXRlICgiICBjb21t b24gPSBncnViLWNvcmUvJXM7XG4iICUgc3JjKQorICAgICAgICAgICAgICAgICAgICBjb25mdXRp bC53cml0ZSAoIiAgY29tbW9uID0gZ3J1Yi1jb3JlL2xpYi9saWJnY3J5cHQtZ3J1Yi9jaXBoZXIv JXM7XG4iICUgc3JjKQogICAgICAgICAgICAgaWYgbW9kbmFtZSA9PSAiZ2NyeV9lY2MiOgogICAg ICAgICAgICAgICAgIGNvbmYud3JpdGUgKCIgIGNvbW1vbiA9IGxpYi9saWJnY3J5cHQtZ3J1Yi9t cGkvZWMuYztcbiIpCiAgICAgICAgICAgICAgICAgY29uZi53cml0ZSAoIiAgY2ZsYWdzID0gJyQo Q0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50LWRlY2xzIC1Xbm8tc2lnbi1jb21wYXJlJztcbiIp CkBAIC00OTAsNyArNTQ1LDcgQEAgZm9yIGNpcGhlcl9maWxlIGluIGNpcGhlcl9maWxlczoKICAg ICAgICAgICAgIGZ3LmNsb3NlICgpCiAgICAgICAgICAgICBpZiBuY2g6CiAgICAgICAgICAgICAg ICAgY2hsb2cgPSAiJXMlc1xuIiAlIChjaGxvZywgY2hsb2duZXcpCi0gICAgICAgIGVsaWYgaXNj IGFuZCBjaXBoZXJfZmlsZSAhPSAiY2FtZWxsaWEuYyI6CisgICAgICAgIGVsaWYgaXNjIGFuZCBj aXBoZXJfZmlsZSBub3QgaW4gZXh0cmFfZmlsZXNfbGlzdDoKICAgICAgICAgICAgIHByaW50ICgi V0FSTklORzogQyBmaWxlIGlzbid0IGEgbW9kdWxlOiAlcyIgJSBjaXBoZXJfZmlsZSkKICAgICAg ICAgICAgIGYuY2xvc2UgKCkKICAgICAgICAgICAgIGZ3LmNsb3NlICgpCkBAIC01MTIsNyArNTY3 LDcgQEAgZm9yIHNyYyBpbiBzb3J0ZWQgKG9zLmxpc3RkaXIgKG9zLnBhdGguam9pbiAoaW5kaXIs ICJzcmMiKSkpOgogICAgICAgICAgICAgb3Igc3JjID09ICJsaWJnY3J5cHQudmVycyIgb3Igc3Jj ID09ICJNYWtlZmlsZS5hbSIgXAogICAgICAgICAgICAgb3Igc3JjID09ICJNYW5pZmVzdCIgb3Ig c3JjID09ICJtaXNjLmMiIFwKICAgICAgICAgICAgIG9yIHNyYyA9PSAibWlzc2luZy1zdHJpbmcu YyIgb3Igc3JjID09ICJtb2R1bGUuYyIgXAotICAgICAgICAgICAgb3Igc3JjID09ICJzZWNtZW0u YyIgb3Igc3JjID09ICJzZXhwLmMiIFwKKyAgICAgICAgICAgIG9yIHNyYyA9PSAic2VjbWVtLmMi IFwKICAgICAgICAgICAgIG9yIHNyYyA9PSAic3RkbWVtLmMiIG9yIHNyYyA9PSAidmlzaWJpbGl0 eS5jIjoKICAgICAgICAgY29udGludWUKICAgICBvdXRmaWxlID0gb3MucGF0aC5qb2luIChiYXNl ZGlyLCAic3JjIiwgc3JjKQpAQCAtNTM0LDggKzU4OSwxNyBAQCBmb3Igc3JjIGluIHNvcnRlZCAo b3MubGlzdGRpciAob3MucGF0aC5qb2luIChpbmRpciwgInNyYyIpKSk6CiAgICAgICAgIGZ3LmNs b3NlICgpCiAgICAgICAgIGNvbnRpbnVlCiAKKyAgICBpZiBzcmMgPT0gImNpcGhlci1wcm90by5o IjoKKyAgICAgICAgZncud3JpdGUoIiNpbmNsdWRlIDxncnViL2NyeXB0by5oPlxuIikKKyAgICAg ICAgZncud3JpdGUoInR5cGVkZWYgZ2NyeV9zZWxmdGVzdF9mdW5jX3Qgc2VsZnRlc3RfZnVuY190 OyIpCisgICAgICAgIGYuY2xvc2UgKCkKKyAgICAgICAgZncuY2xvc2UgKCkKKyAgICAgICAgY29u dGludWUKKwogICAgIGlmIHNyYyA9PSAiZzEwbGliLmgiOgotICAgICAgICBmdy53cml0ZSAoZi5y ZWFkICgpLnJlcGxhY2UgKCIocHJpbnRmLGYsYSkiLCAiKF9fcHJpbnRmX18sZixhKSIpKQorICAg ICAgICBmdy53cml0ZSgiI2luY2x1ZGUgPGNpcGhlcl93cmFwLmg+XG4iKQorICAgICAgICBmdy53 cml0ZSgiI2luY2x1ZGUgPGdydWIvY3J5cHRvLmg+XG4iKQorICAgICAgICBmdy53cml0ZSAoZi5y ZWFkICgpLnJlcGxhY2UgKCIocHJpbnRmLGYsYSkiLCAiKF9fcHJpbnRmX18sZixhKSIpLnJlcGxh Y2UgKCIjaW5jbHVkZSBcIi4uL2NvbXBhdC9saWJjb21wYXQuaFwiIiwgIiIpLnJlcGxhY2UoIiNk ZWZpbmUgTl8oYSkgKGEpIiwgIiIpKQogICAgICAgICBmLmNsb3NlICgpCiAgICAgICAgIGZ3LmNs b3NlICgpCiAgICAgICAgIGNvbnRpbnVlCkBAIC01NDYsNyArNjEwLDcgQEAgZm9yIHNyYyBpbiBz b3J0ZWQgKG9zLmxpc3RkaXIgKG9zLnBhdGguam9pbiAoaW5kaXIsICJzcmMiKSkpOgogCiBmb3Ig c3JjIGluIHNvcnRlZCAob3MubGlzdGRpciAob3MucGF0aC5qb2luIChpbmRpciwgIm1waSIpKSk6 CiAgICAgaWYgc3JjID09ICJjb25maWcubGlua3MiIG9yIHNyYyA9PSAiQ2hhbmdlTG9nLTIwMTEi IFwKLSAgICAgICAgICAgIG9yIHNyYyA9PSAibXBpLXNjYW4uYyIgb3Igc3JjID09ICJNYW5pZmVz dCIgXAorICAgICAgICAgICAgb3Igc3JjID09ICJNYW5pZmVzdCIgXAogICAgICAgICAgICAgb3Ig c3JjID09ICJNYWtlZmlsZS5hbSI6CiAgICAgICAgIGNvbnRpbnVlCiAgICAgaW5maWxlID0gb3Mu cGF0aC5qb2luIChpbmRpciwgIm1waSIsIHNyYykKQEAgLTU2OCwxNyArNjMyLDE3IEBAIGZvciBz cmMgaW4gc29ydGVkIChvcy5saXN0ZGlyIChvcy5wYXRoLmpvaW4gKGluZGlyLCAibXBpIikpKToK ICAgICAgICAgICAgIGhvbGQgPSBGYWxzZQogICAgICAgICAgICAgIyBXZSdyZSBvcHRpbWlzaW5n IGZvciBzaXplIGFuZCBleGNsdWRlIGFueXRoaW5nIG5lZWRpbmcgZ29vZAogICAgICAgICAgICAg IyByYW5kb21uZXNzLgotICAgICAgICAgICAgaWYgbm90IHJlLm1hdGNoICgiKF9nY3J5X21waV9n ZXRfaHdfY29uZmlnfGdjcnlfbXBpX3JhbmRvbWl6ZSkiLCBsaW5lKSBpcyBOb25lOgorICAgICAg ICAgICAgaWYgbm90IHJlLm1hdGNoICgiKF9nY3J5X21waV9nZXRfaHdfY29uZmlnfGdjcnlfbXBp X3JhbmRvbWl6ZXxfZ2NyeV9tcGlfcmFuZG9taXplKSIsIGxpbmUpIGlzIE5vbmU6CiAgICAgICAg ICAgICAgICAgc2tpcCA9IDEKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg ZWxzZToKICAgICAgICAgICAgICAgICBmdy53cml0ZSAoaG9sZGxpbmUpCi0gICAgICAgIG0gPSBy ZS5tYXRjaCAoIihjb25zdCBjaGFyKCB8KVwqfHZvaWQpICokIiwgbGluZSkKKyAgICAgICAgbSA9 IHJlLm1hdGNoIChyIihjb25zdCBjaGFyKCB8KVwqfHZvaWQpICokIiwgbGluZSkKICAgICAgICAg aWYgbm90IG0gaXMgTm9uZToKICAgICAgICAgICAgIGhvbGQgPSBUcnVlCiAgICAgICAgICAgICBo b2xkbGluZSA9IGxpbmUKICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIG0gPSByZS5tYXRj aCAoIiNpbmNsdWRlIFwibW9kLXNvdXJjZS1pbmZvXC5oXCIiLCBsaW5lKQorICAgICAgICBtID0g cmUubWF0Y2ggKHIiI2luY2x1ZGUgXCJtb2Qtc291cmNlLWluZm9cLmhcIiIsIGxpbmUpCiAgICAg ICAgIGlmIG5vdCBtIGlzIE5vbmU6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBmdy53 cml0ZSAobGluZSkKQEAgLTYxMiw5ICs2NzYsNiBAQCBmdy53cml0ZSAoIiNpbmNsdWRlIDxjaXBo ZXJfd3JhcC5oPlxuIikKIGNobG9nID0gIiVzCSogZzEwbGliLmg6IExpa2V3aXNlLlxuIiAlIGNo bG9nCiBmdy5jbG9zZSAoKQogCi1pbmZpbGUgPSBvcy5wYXRoLmpvaW4gKGNpcGhlcl9kaXJfaW4s ICJDaGFuZ2VMb2ciKQotb3V0ZmlsZSA9IG9zLnBhdGguam9pbiAoY2lwaGVyX2Rpcl9vdXQsICJD aGFuZ2VMb2ciKQotCiBjb25mLmNsb3NlICgpOwogCiBpbml0ZmlsZSA9IGNvZGVjcy5vcGVuIChv cy5wYXRoLmpvaW4gKGNpcGhlcl9kaXJfb3V0LCAiaW5pdC5jIiksICJ3IiwgInV0Zi04IikKQEAg LTY0Myw3ICs3MDQsNyBAQCBjb25mdXRpbC53cml0ZSAoIn07XG4iKTsKIGNvbmZ1dGlsLmNsb3Nl ICgpOwogCiAKLWY9Y29kZWNzLm9wZW4gKGluZmlsZSwgInIiLCAidXRmLTgiKQorb3V0ZmlsZSA9 IG9zLnBhdGguam9pbiAoY2lwaGVyX2Rpcl9vdXQsICJDaGFuZ2VMb2ciKQogZnc9Y29kZWNzLm9w ZW4gKG91dGZpbGUsICJ3IiwgInV0Zi04IikKIGR0ID0gZGF0ZXRpbWUuZGF0ZS50b2RheSAoKQog Zncud3JpdGUgKCIlMDRkLSUwMmQtJTAyZCAgQXV0b21hdGljIGltcG9ydCB0b29sXG4iICUgXApA QCAtNjUzLDcgKzcxNCw0IEBAIGZ3LndyaXRlICgiCUltcG9ydGVkIGNpcGhlcnMgdG8gR1JVQlxu IikKIGZ3LndyaXRlICgiXG4iKQogZncud3JpdGUgKGNobG9nKQogZncud3JpdGUgKCJcbiIpCi1m b3IgbGluZSBpbiBmOgotICAgIGZ3LndyaXRlIChsaW5lKQotZi5jbG9zZSAoKQogZncuY2xvc2Ug KCkKZGlmZiAtLWdpdCBhL3V0aWwvaW1wb3J0X2djcnlwdF9pbnRoLnNlZCBiL3V0aWwvaW1wb3J0 X2djcnlwdF9pbnRoLnNlZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmVi ZTkzNzFlZQotLS0gL2Rldi9udWxsCisrKyBiL3V0aWwvaW1wb3J0X2djcnlwdF9pbnRoLnNlZApA QCAtMCwwICsxLDE3IEBACisvXiNASU5TRVJUX1NZU19TRUxFQ1RfSEAvIGQKKy9eQEZBTExCQUNL X1NPQ0tMRU5fVEAvIGQKKy9eIyAqaW5jbHVkZSA8c3RkbGliXC5oPi8gZAorL14jICppbmNsdWRl IDxzdHJpbmdcLmg+LyBkCisvXiMgKmluY2x1ZGUgPHdpbnNvY2syXC5oPi8gZAorL14jICppbmNs dWRlIDx3czJ0Y3BpcFwuaD4vIGQKKy9eIyAqaW5jbHVkZSA8dGltZVwuaD4vIGQKKy9eIyAqaW5j bHVkZSA8c3lzXC9zb2NrZXRcLmg+LyBkCisvXiMgKmluY2x1ZGUgPHN5c1wvdGltZVwuaD4vIGQK Ky9eICB0eXBlZGVmIGxvbmcgc3NpemVfdDsvIGQKKy9eICB0eXBlZGVmIGludCAgcGlkX3Q7LyBk CisvXiMgKmluY2x1ZGUgPGdwZy1lcnJvclwuaD4vIHMsI2luY2x1ZGUgPGdwZy1lcnJvci5oPiwj aW5jbHVkZSA8Z3J1Yi9nY3J5cHQvZ3BnLWVycm9yLmg+LAorL150eXBlZGVmIGdwZ19lcnJvcl90 IGdjcnlfZXJyb3JfdDsvIGQKKy9edHlwZWRlZiBncGdfZXJyX2NvZGVfdCBnY3J5X2Vycl9jb2Rl X3Q7LyBkCisvXnR5cGVkZWYgc3RydWN0IGdjcnlfbXBpIFwqZ2NyeV9tcGlfdDsvIGQKKy9eI2Vy cm9yICBnY3J5cHQuaCBhbHJlYWR5IGluY2x1ZGVkLyBkCitwCmRpZmYgLS1naXQgYS91dGlsL2lt cG9ydF9nY3J5cHRoLnNlZCBiL3V0aWwvaW1wb3J0X2djcnlwdGguc2VkCmluZGV4IGZlNmQxYTA3 Mi4uNTAzYjRiNTQ3IDEwMDY0NAotLS0gYS91dGlsL2ltcG9ydF9nY3J5cHRoLnNlZAorKysgYi91 dGlsL2ltcG9ydF9nY3J5cHRoLnNlZApAQCAtMTMsNiArMTMsNCBAQAogL150eXBlZGVmIGdwZ19l cnJvcl90IGdjcnlfZXJyb3JfdDsvIGQKIC9edHlwZWRlZiBncGdfZXJyX2NvZGVfdCBnY3J5X2Vy cl9jb2RlX3Q7LyBkCiAvXnR5cGVkZWYgc3RydWN0IGdjcnlfbXBpIFwqZ2NyeV9tcGlfdDsvIGQK LS9ec3RydWN0IGdjcnlfdGhyZWFkX2Nicy8gZAotcyxfZ2NyeV9tcGlfaW52bSxnY3J5X21waV9p bnZtLGcKIHAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoyLjM5LjIKCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpHcnViLWRldmVsIG1haWxp bmcgbGlzdApHcnViLWRldmVsQGdudS5vcmcKaHR0cHM6Ly9saXN0cy5nbnUub3JnL21haWxtYW4v bGlzdGluZm8vZ3J1Yi1kZXZlbAo=