Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w1PaV-000HNJ-0U for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Mar 2026 14:03:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w1PaS-001sbp-2z for pgsql-hackers@arkaria.postgresql.org; Sat, 14 Mar 2026 14:03:29 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w1PaS-001sbg-1H for pgsql-hackers@lists.postgresql.org; Sat, 14 Mar 2026 14:03:29 +0000 Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w1PaO-000000008A7-21Pj for pgsql-hackers@postgresql.org; Sat, 14 Mar 2026 14:03:28 +0000 Received: by mail-ej1-x62f.google.com with SMTP id a640c23a62f3a-b93698bb57aso592779966b.0 for ; Sat, 14 Mar 2026 07:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1773497003; x=1774101803; darn=postgresql.org; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=S/P49plN3qtzovgZFgnzi8DDJ7oyQT6AeoYHqRDtMx0=; b=u7cc2iInZ7aUzeo7sFKmFb/fK0cfejf+DUTC4cIYjnLIOYbCluiBPKtI3YTvgWzBWd Jfmk6WHapf179GQQZK89Il4gE0XWgOHU3kbAS35vRgAYe3Gx2mdvejStB3xVXBedZM3N 9cCqtt9NKFPXAUlx46oVFHvLvJL0J0O5JB2/Lf8v9F3YzmfklhsXbGRLdvallzcAxr6A pxVcGzx8zNcMAb8rfK9FQ9LAZbwdz8dAyrBFEJNKgunLU+1afzTJB9Brne/Xe65ex+qJ gKaESMnP/OmNoR+Awd2wAfT243VEG1s4BDf8C7c2Uwkj/7HItGwn1U9CXDNh8VT5ZKZQ 5ETA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773497003; x=1774101803; h=in-reply-to:references:subject:cc:from:to:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=S/P49plN3qtzovgZFgnzi8DDJ7oyQT6AeoYHqRDtMx0=; b=kkzK0VA4E6flAh4DQY0kn5BaFJJywlem/KXuEMmMYdAG3QU9lGLqPtwN/0sMKFRv0N v5enCVyYaPBQXjci91eCcz5CcBrseUVGzZJ4x3Xy7q/3nJ3lhrujFTiBEKTo013EV1QM II5B9jMX/KFUGQrMxoiPR8eqIiYSt1Xm9Phr2mRUxfXrnm94I6V5KnWmAJCdlaKl7AV2 CGs7KD+mbg2udcvhNGEKE8mltwNX1R1avS+Tjel9VAYSbOIwrOu2tKGZDBcNy76QmwYv MdWiT32YpNwAss9Etqk/ot26dZ1IiVt08Z0aIxWlFgCQX5Gc9CBuEIMzbPQ23QyVSrfP YNrQ== X-Forwarded-Encrypted: i=1; AJvYcCVSzEdydl4u4Ew4ogmFLFiIiPiJ+E0yvszVZVVWLVgJbfMp0+2P+dPUt7lxmBQu7E81ynlWV3YOlVwsOBAZ@postgresql.org X-Gm-Message-State: AOJu0YyrmU3qHEzXrMT60qsk6t37GqNw0re4AmiALc7huf+tvOFVAo38 kFeYfVXSKwKFZlaYxXOTUmYTwdcJz5pOp1BbxRj0kp8URxyj0QKcue30S+L2JRIROsJuAQ7SmhP Ybkxd X-Gm-Gg: ATEYQzz3Ix1/SSEm1TkMVuT+fH23DkESp/cdW0qkOHbGz2euf8ZRcmq3eIRN/fUlTyo 0vp8rP46BJhMXzgX0lqGj4JavavR2j8/T0zbvnxkE0r3gb+ltmFPp7s2SsvL73rpfRoCHQc6A1G bb5kaqcVrRb0PkJei/9tL/TuTLQSAi9zwPKWenRYNzmbSkE5CLFamXhN7cQUWg7jfQYF/IbHrjk uAtBAaZKrIiYMCCp9TTfryOFuFKvCqsbgFRfdghV8tNe9va1vih5ji4U6KK2WGT8LQWRZUs+g5P u3JviLH6Q28H27+nYtMv4DluZX1mRCMXNDqDFE7KcEmvOgeafHUf5bAGJmw/AdNEBQkfu6z+4GN wj89MwpSQULpNwRFLN7nKgEWr+9KtANvklLtZNf19lgvXP6BHgbS/z+jIUFS8qJpNG0Sqf6dQCZ I6lb8W9Wh6CQ15mC4iQcTMvixecL2RvF5DFF6y8nDqZJFXExB0P93xh2SlKdY= X-Received: by 2002:a17:907:1b1c:b0:b96:e1de:db04 with SMTP id a640c23a62f3a-b973ffcefc4mr625350366b.18.1773497002351; Sat, 14 Mar 2026 07:03:22 -0700 (PDT) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b976d096d4dsm232963466b.64.2026.03.14.07.03.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 14 Mar 2026 07:03:21 -0700 (PDT) Content-Type: multipart/mixed; boundary=d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Mime-Version: 1.0 Date: Sat, 14 Mar 2026 15:03:20 +0100 Message-Id: To: "Aleksander Alekseev" , "PostgreSQL Hackers" From: "Jelte Fennema-Nio" Cc: "Andres Freund" , "Jacob Champion" , "Robert Haas" , "Daniel Gustafsson" , "Tom Lane" , "Peter Eisentraut" , "Nazir Bilal Yavuz" Subject: Re: RFC: adding pytest as a supported test framework X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Type: multipart/alternative; boundary=2e7e50ebad54d95d79ab871993c21e66958b8beac1dad954c1a501ebb143 --2e7e50ebad54d95d79ab871993c21e66958b8beac1dad954c1a501ebb143 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Sun Mar 1, 2026 at 11:16 PM CET, Jelte Fennema-Nio wrote: > These patches caused CI to fail after the addition of the protocol > grease (4966bd3ed95). I fixed the tests (by forcing usage of 3.2), but I > attached them as nocfbot now, so that they can't be the reason that CI > fails again. Turns out one of the nocfbot patches was needed to have MacOS passing in CI due to: PYTEST_DEBUG_TEMPROOT: /tmp # default is too long for UNIX sockets on = Mac I've removed that now and am using shorter temp paths for UNIX sockets always now, so that people running tests locally on MacOS don't run into this problem either. I've also improved the inclusion of Postgres logs in the failure report. They are now split by phase (setup, test, teardown) and are also shown when the server failed to start up. --2e7e50ebad54d95d79ab871993c21e66958b8beac1dad954c1a501ebb143-- --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot-v13-0004-WIP-pytest-Add-some-SSL-client-tests.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot-v13-0004-WIP-pytest-Add-some-SSL-client-tests.patch RnJvbSAyNDA0OWI4ZjE5NmRkOGUxZTVmMzEyMjBhNDlhYzI3YWEzOGY4NjljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMDo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDQvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIFNTTCBjbGllbnQgdGVzdHMK ClRoaXMgaXMgYSBzYW1wbGUgY2xpZW50LW9ubHkgdGVzdCBzdWl0ZS4gSXQgdGVzdHMgc29tZSBo YW5kc2hha2UKZmFpbHVyZXMgYWdhaW5zdCBhIG1vY2sgc2VydmVyLCBhcyB3ZWxsIGFzIGEgZnVs bCBTU0wgaGFuZHNoYWtlICsgZW1wdHkKcXVlcnkgKyByZXNwb25zZS4KCnB5Y2EvY3J5cHRvZ3Jh cGh5IGlzIGFkZGVkIGFzIGEgbmV3IHBhY2thZ2UgZGVwZW5kZW5jeS4gQ2VydGlmaWNhdGVzIGZv cgp0ZXN0aW5nIGFyZSBnZW5lcmF0ZWQgb24gdGhlIGZseS4KClRoZSBtb2NrIGRlc2lnbiBpcyB0 aHJlYWRlZDogdGhlIHNlcnZlciBzb2NrZXQgaXMgbGlzdGVuaW5nIG9uIGEKYmFja2dyb3VuZCB0 aHJlYWQsIGFuZCB0aGUgdGVzdCBwcm92aWRlcyB0aGUgc2VydmVyIGxvZ2ljIHZpYSBhCmNhbGxi YWNrLiBUaGVyZSBpcyBzb21lIGFkZGl0aW9uYWwgd29yayBzdGlsbCBuZWVkZWQgdG8gbWFrZSB0 aGlzCnByb2R1Y3Rpb24tcmVhZHk7IHNlZSB0aGUgbm90ZXMgZm9yIF9UQ1BTZXJ2ZXIuYmFja2dy b3VuZCgpLiAoQ3VycmVudGx5LAphbiBleGNlcHRpb24gaW4gdGhlIHdyb25nIHBsYWNlIGNvdWxk IHJlc3VsdCBpbiBhIGhhbmctdW50aWwtdGltZW91dApyYXRoZXIgdGhhbiBhbiBpbW1lZGlhdGUg ZmFpbHVyZS4pCgpUT0RPczoKLSBsb2NhbF9zZXJ2ZXIgYW5kIHRjcF9zZXJ2ZXJfY2xhc3MgYXJl IG5lYXJseSBpZGVudGljYWwgYW5kIHNob3VsZAogIHNoYXJlIGNvZGUuCi0gZml4IGV4Y2VwdGlv bi1yZWxhdGVkIHRpbWVvdXRzIGZvciAuYmFja2dyb3VuZCgpCi0gZmlndXJlIG91dCB0aGUgcHJv cGVyIHVzZSBvZiAic2Vzc2lvbiIgdnMgIm1vZHVsZSIgc2NvcGUKLSBlbnN1cmUgdGhhdCBwcS5s aWJwcSB1bndpbmRzICh0byBjbG9zZSBjb25uZWN0aW9ucykgYmVmb3JlIHRjcF9zZXJ2ZXI7CiAg c2VlIGNvbW1lbnQgaW4gdGVzdF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQoKQotLS0KIC5jaXJy dXMudGFza3MueW1sICAgICAgICAgICAgICAgICB8ICAgMSArCiBweXByb2plY3QudG9tbCAgICAg ICAgICAgICAgICAgICAgfCAgIDggKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5 IHwgMTQ1ICsrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3NzbC9NYWtlZmlsZSAgICAgICAgICAg ICB8ICAgMiArCiBzcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQgICAgICAgICAgfCAgIDYgKwogc3Jj L3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weSAgICAgIHwgMTI4ICsrKysrKysrKysrKysrCiBzcmMv dGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5ICAgfCAyODAgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiA3IGZpbGVzIGNoYW5nZWQsIDU3MCBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkKCmRpZmYgLS1naXQgYS8uY2lycnVzLnRh c2tzLnltbCBiLy5jaXJydXMudGFza3MueW1sCmluZGV4IDQ3ZWM5ZGVmMjBlLi5jZWM1OTgwN2Q0 MyAxMDA2NDQKLS0tIGEvLmNpcnJ1cy50YXNrcy55bWwKKysrIGIvLmNpcnJ1cy50YXNrcy55bWwK QEAgLTY2Nyw2ICs2NjcsNyBAQCB0YXNrOgogICAgICAgcDUuMzQtaW8tdHR5CiAgICAgICBwNS4z NC1pcGMtcnVuCiAgICAgICBweXRob24zMTIKKyAgICAgIHB5MzEyLWNyeXB0b2dyYXBoeQogICAg ICAgcHkzMTItcGFja2FnaW5nCiAgICAgICBweTMxMi1weXRlc3QKICAgICAgIHRjbApkaWZmIC0t Z2l0IGEvcHlwcm9qZWN0LnRvbWwgYi9weXByb2plY3QudG9tbAppbmRleCA0NjI4ZDIyNzRlMC4u MDBjOGFlODg1ODMgMTAwNjQ0Ci0tLSBhL3B5cHJvamVjdC50b21sCisrKyBiL3B5cHJvamVjdC50 b21sCkBAIC0xMiw2ICsxMiwxNCBAQCBkZXBlbmRlbmNpZXMgPSBbCiAgICAgIyBBbnkgb3RoZXIg ZGVwZW5kZW5jaWVzIGFyZSBlZmZlY3RpdmVseSBvcHRpb25hbCAoYWRkZWQgYmVsb3cpLiBXZSBp bXBvcnQKICAgICAjIHRoZXNlIGxpYnJhcmllcyB1c2luZyBweXRlc3QuaW1wb3J0b3Jza2lwKCku IFNvIHRlc3RzIHdpbGwgYmUgc2tpcHBlZCBpZgogICAgICMgdGhleSBhcmUgbm90IGF2YWlsYWJs ZS4KKworICAgICMgTm90ZXMgb24gdGhlIGNyeXB0b2dyYXBoeSBwYWNrYWdlOgorICAgICMgLSAz LjMuMiBpcyBzaGlwcGVkIG9uIERlYmlhbiBidWxsc2V5ZS4KKyAgICAjIC0gMy40LnggZHJvcHMg c3VwcG9ydCBmb3IgUHl0aG9uIDIsIG1ha2luZyBpdCBhIHZlcnNpb24gb2Ygbm90ZSBmb3Igb2xk ZXIgTFRTCisgICAgIyAgIGRpc3Ryb3MuCisgICAgIyAtIDM1Lnggc3dpdGNoZWQgdmVyc2lvbmlu ZyBzY2hlbWVzIGFuZCBtb3ZlZCB0byBSdXN0IHBhcnNpbmcuCisgICAgIyAtIDQwLnggaXMgdGhl IGxhc3QgdmVyc2lvbiBzdXBwb3J0aW5nIFB5dGhvbiAzLjYuCisgICAgImNyeXB0b2dyYXBoeSA+ PSAzLjMuMiIsCiBdCiAKIFt0b29sLnB5dGVzdC5pbmlfb3B0aW9uc10KZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVz dF9saWJwcS5weQppbmRleCAxZDBkOWJjM2I5NC4uNDk3MjZmNTc5ZTIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQorKysgYi9zcmMvdGVzdC9weXRlc3QvcHl0 L3Rlc3RfbGlicHEucHkKQEAgLTMzLDMgKzMzLDE0OCBAQCBkZWYgdGVzdF9tdXN0X2Nvbm5lY3Rf ZXJyb3JzKGNvbm5lY3QpOgogICAgICIiIlRlc3RzIHRoYXQgY29ubmVjdCgpIHJhaXNlcyBMaWJw cUVycm9yLiIiIgogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhMaWJwcUVycm9yLCBtYXRjaD0iaW52 YWxpZCBjb25uZWN0aW9uIG9wdGlvbiIpOgogICAgICAgICBjb25uZWN0KHNvbWVfdW5rbm93bl9r ZXl3b3JkPSJ3aGF0ZXZlciIpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgbG9jYWxfc2VydmVy KHNvY2tkaXIsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAgICBPcGVucyB1cCBhIGxv Y2FsIFVOSVggc29ja2V0IGZvciBtb2NraW5nIGEgUG9zdGdyZXMgc2VydmVyIG9uIGEgYmFja2dy b3VuZAorICAgIHRocmVhZC4gU2VlIHRoZSBfU2VydmVyIEFQSSBmb3IgdXNhZ2UuCisKKyAgICBU aGlzIGZpeHR1cmUgcmVxdWlyZXMgQUZfVU5JWCBzdXBwb3J0OyBkZXBlbmRlbnQgdGVzdHMgd2ls bCBiZSBza2lwcGVkIG9uCisgICAgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgcHJvdmlkZSBpdC4KKyAg ICAiIiIKKworICAgIHRyeToKKyAgICAgICAgZnJvbSBzb2NrZXQgaW1wb3J0IEFGX1VOSVgKKyAg ICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHB5dGVzdC5za2lwKCJBRl9VTklYIG5vdCBz dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSIpCisKKyAgICBjbGFzcyBfU2VydmVyKGNvbnRleHRs aWIuRXhpdFN0YWNrKToKKyAgICAgICAgIiIiCisgICAgICAgIEltcGxlbWVudGF0aW9uIGNsYXNz IGZvciBsb2NhbF9zZXJ2ZXIuIFNlZSAuYmFja2dyb3VuZCgpIGZvciB0aGUgcHJpbWFyeQorICAg ICAgICBlbnRyeSBwb2ludCBmb3IgdGVzdHMuIFBvc3RncmVzIGNsaWVudHMgbWF5IGNvbm5lY3Qg dG8gdGhpcyBzZXJ2ZXIgdmlhCisgICAgICAgIGxvY2FsX3NlcnZlci5ob3N0L2xvY2FsX3NlcnZl ci5wb3J0LgorCisgICAgICAgIF9TZXJ2ZXIgZGVyaXZlcyBmcm9tIGNvbnRleHRsaWIuRXhpdFN0 YWNrIHRvIHByb3ZpZGUgZWFzeSBjbGVhbnVwIG9mCisgICAgICAgIGFzc29jaWF0ZWQgcmVzb3Vy Y2VzOyBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoYXQgY2xhc3MgZm9yIGEgZnVsbAorICAg ICAgICBleHBsYW5hdGlvbi4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAgICAgICAgICAgIHNlbGYu aG9zdCA9IHNvY2tkaXIKKworICAgICAgICAgICAgIyBHZXQgYSBmcmVlIHBvcnQgbnVtYmVyIGZy b20gdGhlIE9TIHRvIGF2b2lkIGNvbGxpc2lvbnMuCisgICAgICAgICAgICB3aXRoIHNvY2tldC5z b2NrZXQoKSBhcyBzOgorICAgICAgICAgICAgICAgIHMuYmluZCgoIjEyNy4wLjAuMSIsIDApKQor ICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHMuZ2V0c29ja25hbWUoKVsxXQorCisgICAgICAg ICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAgICAgICAgICBzZWxmLl90aHJlYWRfZXhjID0g Tm9uZQorICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIgPSBzZWxmLmVudGVyX2NvbnRleHQoCisg ICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldChBRl9VTklYLCBzb2NrZXQuU09DS19TVFJFQU0p LAorICAgICAgICAgICAgKQorCisgICAgICAgIGRlZiBiaW5kX2FuZF9saXN0ZW4oc2VsZik6Cisg ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERvZXMgdGhlIGFjdHVhbCB3b3JrIG9mIGJpbmRp bmcgdGhlIFVOSVggc29ja2V0IHVzaW5nIHRoZSBQb3N0Z3JlcworICAgICAgICAgICAgc2VydmVy IGNvbnZlbnRpb25zIGFuZCBsaXN0ZW5pbmcgZm9yIGNvbm5lY3Rpb25zLgorCisgICAgICAgICAg ICBUaGUgbGlzdGVuIGJhY2tsb2cgaXMgY3VycmVudGx5IGhhcmRjb2RlZCB0byBvbmUuCisgICAg ICAgICAgICAiIiIKKyAgICAgICAgICAgIHNvY2tmaWxlID0gc2VsZi5ob3N0IC8gIi5zLlBHU1FM Lnt9Ii5mb3JtYXQoc2VsZi5wb3J0KQorCisgICAgICAgICAgICAjIExvY2sgZG93biB0aGUgcGVy bWlzc2lvbnMgb24gdGhlIG5ldyBzb2NrZXQuCisgICAgICAgICAgICBwcmV2X21hc2sgPSBvcy51 bWFzaygwbzA3NykKKworICAgICAgICAgICAgIyBCaW5kIChjcmVhdGluZyB0aGUgc29ja2V0IGZp bGUpLCBhbmQgaW1tZWRpYXRlbHkgcmVnaXN0ZXIgaXQgZm9yCisgICAgICAgICAgICAjIGRlbGV0 aW9uIGZyb20gZGlzayB3aGVuIHRoZSBzdGFjayBpcyBjbGVhbmVkIHVwLgorICAgICAgICAgICAg c2VsZi5fbGlzdGVuZXIuYmluZChieXRlcyhzb2NrZmlsZSkpCisgICAgICAgICAgICBzZWxmLmNh bGxiYWNrKG9zLnVubGluaywgc29ja2ZpbGUpCisKKyAgICAgICAgICAgIG9zLnVtYXNrKHByZXZf bWFzaykKKworICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIubGlzdGVuKDEpCisKKyAgICAgICAg ZGVmIGJhY2tncm91bmQoc2VsZiwgZm46IENhbGxhYmxlW1tzb2NrZXQuc29ja2V0XSwgTm9uZV0p IC0+IE5vbmU6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIEFjY2VwdHMgYSBjbGllbnQg Y29ubmVjdGlvbiBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGFuZCBwYXNzZXMgaXQgdG8KKyAgICAg ICAgICAgIHRoZSBwcm92aWRlZCBjYWxsYmFjay4gQW55IGV4Y2VwdGlvbnMgcmFpc2VkIGZyb20g dGhlIGNhbGxiYWNrIHdpbGwKKyAgICAgICAgICAgIGJlIHJlLXJhaXNlZCBvbiB0aGUgbWFpbiB0 aHJlYWQgZHVyaW5nIGZpeHR1cmUgdGVhcmRvd24uCisKKyAgICAgICAgICAgIEJsb2NraW5nIG9w ZXJhdGlvbnMgb24gdGhlIGNvbm5lY3RlZCBzb2NrZXQgZGVmYXVsdCB0byB1c2luZyB0aGUKKyAg ICAgICAgICAgIHJlbWFpbmluZ190aW1lb3V0KCksIHRob3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2Vk IGJ5IHRoZSB0ZXN0IHZpYSB0aGUKKyAgICAgICAgICAgIHNvY2tldCdzIC5zZXR0aW1lb3V0KCku CisgICAgICAgICAgICAiIiIKKworICAgICAgICAgICAgZGVmIF9iZygpOgorICAgICAgICAgICAg ICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuc2V0dGltZW91dChy ZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAgICAgICAgICBzb2NrLCBfID0gc2VsZi5f bGlzdGVuZXIuYWNjZXB0KCkKKworICAgICAgICAgICAgICAgICAgICB3aXRoIHNvY2s6CisgICAg ICAgICAgICAgICAgICAgICAgICBzb2NrLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQoKSkK KyAgICAgICAgICAgICAgICAgICAgICAgIGZuKHNvY2spCisKKyAgICAgICAgICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICMgU2F2ZSB0aGUgZXhjZXB0 aW9uIGZvciByZS1yYWlzaW5nIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgICAgICAg ICAgc2VsZi5fdGhyZWFkX2V4YyA9IGUKKworICAgICAgICAgICAgIyBUT0RPOiByYXRoZXIgdGhh biB1c2luZyBjYWxsYmFjaygpLCBjb25zaWRlciBleHBsaWNpdGx5IHNpZ25hbGluZworICAgICAg ICAgICAgIyB0aGUgZm4oKSBpbXBsZW1lbnRhdGlvbiB0byBzdG9wIGVhcmx5IGlmIHdlIGdldCBh biBleGNlcHRpb24uCisgICAgICAgICAgICAjIE90aGVyd2lzZSB3ZSdsbCBoYW5nIHVudGlsIHRo ZSBlbmQgb2YgdGhlIHRpbWVvdXQuCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSB0aHJlYWRp bmcuVGhyZWFkKHRhcmdldD1fYmcpCisgICAgICAgICAgICBzZWxmLmNhbGxiYWNrKHNlbGYuX2pv aW4pCisKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5zdGFydCgpCisKKyAgICAgICAgZGVmIF9q b2luKHNlbGYpOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBXYWl0cyBmb3IgdGhlIGJh Y2tncm91bmQgdGhyZWFkIHRvIGZpbmlzaCBhbmQgcmFpc2VzIGFueSB0aHJvd24KKyAgICAgICAg ICAgIGV4Y2VwdGlvbi4gVGhpcyBpcyBjYWxsZWQgZHVyaW5nIGZpeHR1cmUgdGVhcmRvd24uCisg ICAgICAgICAgICAiIiIKKyAgICAgICAgICAgICMgR2l2ZSBhIGxpdHRsZSBiaXQgb2Ygd2lnZ2xl IHJvb20gb24gdGhlIGpvaW4gdGltZW91dCwgc2luY2Ugd2UncmUKKyAgICAgICAgICAgICMgcmFj aW5nIGFnYWluc3QgdGhlIHRlc3QncyBvd24gdXNlIG9mIHJlbWFpbmluZ190aW1lb3V0KCkuIChJ dCdzCisgICAgICAgICAgICAjIHByZWZlcmFibGUgdG8gbGV0IHRlc3RzIHJlcG9ydCB0aW1lb3V0 czsgdGhlIHN0YWNrIHRyYWNlcyB3aWxsCisgICAgICAgICAgICAjIGhlbHAgd2l0aCBkZWJ1Z2dp bmcuKQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkLmpvaW4ocmVtYWluaW5nX3RpbWVvdXQoKSAr IDEpCisgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAg ICAgICByYWlzZSBUaW1lb3V0RXJyb3IoImJhY2tncm91bmQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5p bmcgYWZ0ZXIgdGltZW91dCIpCisKKyAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZF9leGMgaXMg bm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5fdGhyZWFkX2V4YworCisgICAg d2l0aCBfU2VydmVyKCkgYXMgczoKKyAgICAgICAgcy5iaW5kX2FuZF9saXN0ZW4oKQorICAgICAg ICB5aWVsZCBzCisKKworZGVmIHRlc3RfY29ubmVjdGlvbl9pc19maW5pc2hlZF9vbl9lcnJvcihj b25uZWN0LCBsb2NhbF9zZXJ2ZXIpOgorICAgICIiIlRlc3RzIHRoYXQgUFFmaW5pc2goKSBnZXRz IGNhbGxlZCBhdCB0aGUgZW5kIG9mIHRlc3RpbmcuIiIiCisgICAgZXhwZWN0ZWRfZXJyb3IgPSAi c29tZXRoaW5nIGlzIHdyb25nIgorCisgICAgZGVmIHNlcnZlX2Vycm9yKHM6IHNvY2tldC5zb2Nr ZXQpIC0+IE5vbmU6CisgICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2 KDQpKVswXQorCisgICAgICAgICMgUXVpY2sgY2hlY2sgZm9yIHRoZSBzdGFydHVwIHBhY2tldCB2 ZXJzaW9uLgorICAgICAgICB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2KDQp KQorICAgICAgICBhc3NlcnQgdmVyc2lvbiA9PSAoMywgMikKKworICAgICAgICAjIERpc2NhcmQg dGhlIHJlbWFpbmRlciBvZiB0aGUgc3RhcnR1cCBwYWNrZXQgYW5kIHNlbmQgYSB2MiBlcnJvci4K KyAgICAgICAgcy5yZWN2KHBrdGxlbiAtIDgpCisgICAgICAgIHMuc2VuZChiIkUiICsgZXhwZWN0 ZWRfZXJyb3IuZW5jb2RlKCkgKyBiIlwwIikKKworICAgICAgICAjIEFuZCBub3cgdGhlIHNvY2tl dCBzaG91bGQgYmUgY2xvc2VkLgorICAgICAgICBhc3NlcnQgbm90IHMucmVjdigxKSwgImNsaWVu dCBzZW50IHVuZXhwZWN0ZWQgZGF0YSIKKworICAgIGxvY2FsX3NlcnZlci5iYWNrZ3JvdW5kKHNl cnZlX2Vycm9yKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKExpYnBxRXJyb3IsIG1hdGNoPWV4 cGVjdGVkX2Vycm9yKToKKyAgICAgICAgIyBFeGl0aW5nIHRoaXMgY29udGV4dCBzaG91bGQgcmVz dWx0IGluIFBRZmluaXNoKCkuCisgICAgICAgIGNvbm5lY3QoCisgICAgICAgICAgICBob3N0PWxv Y2FsX3NlcnZlci5ob3N0LAorICAgICAgICAgICAgcG9ydD1sb2NhbF9zZXJ2ZXIucG9ydCwKKyAg ICAgICAgICAgIG1heF9wcm90b2NvbF92ZXJzaW9uPSIzLjIiLCAgIyBEb24ndCB1c2UgZ3JlYXNl CisgICAgICAgICkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9NYWtlZmlsZSBiL3NyYy90ZXN0 L3NzbC9NYWtlZmlsZQppbmRleCBhYTA2Mjk0NWZiOS4uMjg3NzI5YWQ5ZmIgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3NzbC9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKQEAgLTMw LDYgKzMwLDggQEAgY2xlYW4gZGlzdGNsZWFuOgogIyBEb2Vzbid0IGRlcGVuZCBvbiBzc2xmaWxl cyBiZWNhdXNlIHdlIGRvbid0IHJlYnVpbGQgdGhlbSBieSBkZWZhdWx0CiBjaGVjazoKIAkkKHBy b3ZlX2NoZWNrKQorCSMgWFhYIHRoZXNlIHN1aXRlcyBzaG91bGQgcnVuIGluZGVwZW5kZW50bHks IG5vdCBzZXJpYWxseQorCSQocHl0ZXN0X2NoZWNrKQogCiBpbnN0YWxsY2hlY2s6CiAJJChwcm92 ZV9pbnN0YWxsY2hlY2spCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9zc2wvbWVzb24uYnVpbGQKaW5kZXggOWU1YmRiYjYxMzYuLjZlYzI3NGQ4MTY1IDEw MDY0NAotLS0gYS9zcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3Qvc3NsL21l c29uLmJ1aWxkCkBAIC0xNSw0ICsxNSwxMCBAQCB0ZXN0cyArPSB7CiAgICAgICAndC8wMDNfc3Ns aW5mby5wbCcsCiAgICAgXSwKICAgfSwKKyAgJ3B5dGVzdCc6IHsKKyAgICAndGVzdHMnOiBbCisg ICAgICAncHl0L3Rlc3RfY2xpZW50LnB5JywKKyAgICAgICdweXQvdGVzdF9zZXJ2ZXIucHknLAor ICAgIF0sCisgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5 IGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uODcwZjczOGFjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9z c2wvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEsMTI4IEBACisjIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGRhdGV0aW1l CitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gY29s bGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKKworaW1wb3J0IHB5dGVzdAorCisKK0BweXRlc3Qu Zml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgY3J5cHRvZ3JhcGh5KCk6CisgICAgcmV0dXJu IHB5dGVzdC5pbXBvcnRvcnNraXAoImNyeXB0b2dyYXBoeSIsICIzLjMuMiIpCisKKworQ2VydCA9 IG5hbWVkdHVwbGUoIkNlcnQiLCAiY2VydCwgY2VydHBhdGgsIGtleSwga2V5cGF0aCIpCisKKwor QHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBjZXJ0cyhjcnlwdG9ncmFwaHks IHRtcF9wYXRoX2ZhY3RvcnkpOgorICAgICIiIgorICAgIENhY2hlcyBjb21tb25seSB1c2VkIGNl cnRpZmljYXRlcyBhdCB0aGUgc2Vzc2lvbiBsZXZlbCwgYW5kIHByb3ZpZGVzIGEgd2F5CisgICAg dG8gY3JlYXRlIG5ldyBvbmVzLgorCisgICAgLSBjZXJ0cy5jYTogdGhlIHJvb3QgQ0EgY2VydGlm aWNhdGUKKworICAgIC0gY2VydHMuc2VydmVyOiB0aGUgInN0YW5kYXJkIiBzZXJ2ZXIgY2VydGZp Y2F0ZSwgc2lnbmVkIGJ5IGNlcnRzLmNhCisKKyAgICAtIGNlcnRzLnNlcnZlcl9ob3N0OiB0aGUg aG9zdG5hbWUgb2YgdGhlIGNlcnRzLnNlcnZlciBjZXJ0aWZpY2F0ZQorCisgICAgLSBjZXJ0cy5u ZXcoKTogY3JlYXRlcyBhIGN1c3RvbSBjZXJ0aWZpY2F0ZSwgc2lnbmVkIGJ5IGNlcnRzLmNhCisg ICAgIiIiCisKKyAgICBmcm9tIGNyeXB0b2dyYXBoeSBpbXBvcnQgeDUwOQorICAgIGZyb20gY3J5 cHRvZ3JhcGh5Lmhhem1hdC5wcmltaXRpdmVzIGltcG9ydCBoYXNoZXMsIHNlcmlhbGl6YXRpb24K KyAgICBmcm9tIGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcy5hc3ltbWV0cmljIGltcG9y dCByc2EKKyAgICBmcm9tIGNyeXB0b2dyYXBoeS54NTA5Lm9pZCBpbXBvcnQgTmFtZU9JRAorCisg ICAgdG1wZGlyID0gdG1wX3BhdGhfZmFjdG9yeS5ta3RlbXAoInRlc3QtY2VydHMiKQorCisgICAg Y2xhc3MgX0NlcnRzOgorICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICBz ZWxmLmNhID0gc2VsZi5uZXcoCisgICAgICAgICAgICAgICAgeDUwOS5OYW1lKAorICAgICAgICAg ICAgICAgICAgICBbeDUwOS5OYW1lQXR0cmlidXRlKE5hbWVPSUQuQ09NTU9OX05BTUUsICJQRyBw eXRlc3QgQ0EiKV0sCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICBjYT1UcnVl LAorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBzZWxmLnNlcnZlcl9ob3N0ID0gImV4YW1w bGUub3JnIgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZWxmLm5ldygKKyAgICAgICAgICAg ICAgICB4NTA5Lk5hbWUoCisgICAgICAgICAgICAgICAgICAgIFt4NTA5Lk5hbWVBdHRyaWJ1dGUo TmFtZU9JRC5DT01NT05fTkFNRSwgc2VsZi5zZXJ2ZXJfaG9zdCldLAorICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgbmV3KHNlbGYsIHN1YmplY3Q6IHg1MDku TmFtZSwgKiwgY2E9RmFsc2UpIC0+IENlcnQ6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAg IENyZWF0ZXMgYW5kIHNpZ25zIGEgbmV3IENlcnQgd2l0aCB0aGUgZ2l2ZW4gc3ViamVjdCBuYW1l LiBJZiBjYSBpcworICAgICAgICAgICAgVHJ1ZSwgdGhlIGNlcnRpZmljYXRlIHdpbGwgYmUgc2Vs Zi1zaWduZWQ7IG90aGVyd2lzZSB0aGUgY2VydGlmaWNhdGUKKyAgICAgICAgICAgIGlzIHNpZ25l ZCBieSBzZWxmLmNhLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBrZXkgPSByc2EuZ2Vu ZXJhdGVfcHJpdmF0ZV9rZXkoCisgICAgICAgICAgICAgICAgcHVibGljX2V4cG9uZW50PTY1NTM3 LAorICAgICAgICAgICAgICAgIGtleV9zaXplPTIwNDgsCisgICAgICAgICAgICApCisKKyAgICAg ICAgICAgIGJ1aWxkZXIgPSB4NTA5LkNlcnRpZmljYXRlQnVpbGRlcigpCisgICAgICAgICAgICBu b3cgPSBkYXRldGltZS5kYXRldGltZS5ub3coZGF0ZXRpbWUudGltZXpvbmUudXRjKQorCisgICAg ICAgICAgICBidWlsZGVyID0gKAorICAgICAgICAgICAgICAgIGJ1aWxkZXIuc3ViamVjdF9uYW1l KHN1YmplY3QpCisgICAgICAgICAgICAgICAgLnB1YmxpY19rZXkoa2V5LnB1YmxpY19rZXkoKSkK KyAgICAgICAgICAgICAgICAuc2VyaWFsX251bWJlcih4NTA5LnJhbmRvbV9zZXJpYWxfbnVtYmVy KCkpCisgICAgICAgICAgICAgICAgLm5vdF92YWxpZF9iZWZvcmUobm93KQorICAgICAgICAgICAg ICAgIC5ub3RfdmFsaWRfYWZ0ZXIobm93ICsgZGF0ZXRpbWUudGltZWRlbHRhKGhvdXJzPTEpKQor ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiBjYToKKyAgICAgICAgICAgICAgICBidWls ZGVyID0gYnVpbGRlci5pc3N1ZXJfbmFtZShzdWJqZWN0KQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBidWlsZGVyID0gYnVpbGRlci5pc3N1ZXJfbmFtZShzZWxmLmNhLmNlcnQu c3ViamVjdCkKKworICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuYWRkX2V4dGVuc2lvbigK KyAgICAgICAgICAgICAgICB4NTA5LkJhc2ljQ29uc3RyYWludHMoY2E9Y2EsIHBhdGhfbGVuZ3Ro PU5vbmUpLAorICAgICAgICAgICAgICAgIGNyaXRpY2FsPVRydWUsCisgICAgICAgICAgICApCisK KyAgICAgICAgICAgIGNlcnQgPSBidWlsZGVyLnNpZ24oCisgICAgICAgICAgICAgICAgcHJpdmF0 ZV9rZXk9a2V5IGlmIGNhIGVsc2Ugc2VsZi5jYS5rZXksCisgICAgICAgICAgICAgICAgYWxnb3Jp dGhtPWhhc2hlcy5TSEEyNTYoKSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgIyBEdW1w IHRoZSBjZXJ0aWZpY2F0ZSBhbmQga2V5IHRvIGZpbGUuCisgICAgICAgICAgICBrZXlwYXRoID0g c2VsZi5fdG9maWxlKAorICAgICAgICAgICAgICAgIGtleS5wcml2YXRlX2J5dGVzKAorICAgICAg ICAgICAgICAgICAgICBzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSwKKyAgICAgICAgICAgICAg ICAgICAgc2VyaWFsaXphdGlvbi5Qcml2YXRlRm9ybWF0LlBLQ1M4LAorICAgICAgICAgICAgICAg ICAgICBzZXJpYWxpemF0aW9uLk5vRW5jcnlwdGlvbigpLAorICAgICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgICAgc3VmZml4PSIua2V5IiwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAg IGNlcnRwYXRoID0gc2VsZi5fdG9maWxlKAorICAgICAgICAgICAgICAgIGNlcnQucHVibGljX2J5 dGVzKHNlcmlhbGl6YXRpb24uRW5jb2RpbmcuUEVNKSwKKyAgICAgICAgICAgICAgICBzdWZmaXg9 Ii1jYS5jcnQiIGlmIGNhIGVsc2UgIi5jcnQiLAorICAgICAgICAgICAgKQorCisgICAgICAgICAg ICByZXR1cm4gQ2VydCgKKyAgICAgICAgICAgICAgICBjZXJ0PWNlcnQsCisgICAgICAgICAgICAg ICAgY2VydHBhdGg9Y2VydHBhdGgsCisgICAgICAgICAgICAgICAga2V5PWtleSwKKyAgICAgICAg ICAgICAgICBrZXlwYXRoPWtleXBhdGgsCisgICAgICAgICAgICApCisKKyAgICAgICAgZGVmIF90 b2ZpbGUoc2VsZiwgZGF0YTogYnl0ZXMsICosIHN1ZmZpeCkgLT4gc3RyOgorICAgICAgICAgICAg IiIiCisgICAgICAgICAgICBEdW1wcyBkYXRhIHRvIGEgZmlsZSBvbiBkaXNrIHdpdGggdGhlIHJl cXVlc3RlZCBzdWZmaXggYW5kIHJldHVybnMKKyAgICAgICAgICAgIHRoZSBwYXRoLiBUaGUgZmls ZSBpcyBsb2NhdGVkIHNvbWV3aGVyZSBpbiBweXRlc3QncyB0ZW1wb3JhcnkKKyAgICAgICAgICAg IGRpcmVjdG9yeSByb290LgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBmID0gdGVtcGZp bGUuTmFtZWRUZW1wb3JhcnlGaWxlKHN1ZmZpeD1zdWZmaXgsIGRpcj10bXBkaXIsIGRlbGV0ZT1G YWxzZSkKKyAgICAgICAgICAgIHdpdGggZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKGRhdGEp CisKKyAgICAgICAgICAgIHJldHVybiBmLm5hbWUKKworICAgIHJldHVybiBfQ2VydHMoKQpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2NsaWVudC5weSBiL3NyYy90ZXN0L3NzbC9w eXQvdGVzdF9jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjQxMTNkZDIxNzUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC90ZXN0X2Ns aWVudC5weQpAQCAtMCwwICsxLDI4MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQg Y3R5cGVzCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CitpbXBvcnQg dGhyZWFkaW5nCitmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKKworaW1wb3J0IHB5dGVzdAor CitpbXBvcnQgcHlwZworZnJvbSBsaWJwcSBpbXBvcnQgTGlicHFFcnJvciwgRXhlY1N0YXR1cwor CisjIFRoaXMgc3VpdGUgb3BlbnMgdXAgbG9jYWwgVENQIHBvcnRzIGFuZCBpcyBoaWRkZW4gYmVo aW5kIFBHX1RFU1RfRVhUUkE9c3NsLgorcHl0ZXN0bWFyayA9IHB5cGcucmVxdWlyZV90ZXN0X2V4 dHJhcygic3NsIikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iLCBhdXRvdXNl PVRydWUpCitkZWYgc2tpcF9pZl9ub19zc2xfc3VwcG9ydChsaWJwcV9oYW5kbGUpOgorICAgICIi IlNraXBzIHRlc3RzIGlmIFNTTCBzdXBwb3J0IGlzIG5vdCBjb25maWd1cmVkLiIiIgorCisgICAg IyBEZWNsYXJlIFBRc3NsQXR0cmlidXRlKCkuCisgICAgUFFzc2xBdHRyaWJ1dGUgPSBsaWJwcV9o YW5kbGUuUFFzc2xBdHRyaWJ1dGUKKyAgICBQUXNzbEF0dHJpYnV0ZS5yZXN0eXBlID0gY3R5cGVz LmNfY2hhcl9wCisgICAgUFFzc2xBdHRyaWJ1dGUuYXJndHlwZXMgPSBbY3R5cGVzLmNfdm9pZF9w LCBjdHlwZXMuY19jaGFyX3BdCisKKyAgICBpZiBub3QgUFFzc2xBdHRyaWJ1dGUoTm9uZSwgYiJs aWJyYXJ5Iik6CisgICAgICAgIHB5dGVzdC5za2lwKCJyZXF1aXJlcyBTU0wgc3VwcG9ydCB0byBi ZSBjb25maWd1cmVkIikKKworCisjCisjIFRlc3QgRml4dHVyZXMKKyMKKworCitAcHl0ZXN0LmZp eHR1cmUKK2RlZiB0Y3Bfc2VydmVyX2NsYXNzKHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIK KyAgICBNZXRhZml4dHVyZSB0byBjb21iaW5lIHJlbGF0ZWQgbG9naWMgZm9yIHRjcF9zZXJ2ZXIg YW5kIHNzbF9zZXJ2ZXIuCisKKyAgICBUT0RPOiBjb21iaW5lIHdpdGggdGVzdF9saWJwcS5sb2Nh bF9zZXJ2ZXIKKyAgICAiIiIKKworICAgIGNsYXNzIF9UQ1BTZXJ2ZXIoY29udGV4dGxpYi5FeGl0 U3RhY2spOgorICAgICAgICAiIiIKKyAgICAgICAgSW1wbGVtZW50YXRpb24gY2xhc3MgZm9yIHRj cF9zZXJ2ZXIuIFNlZSAuYmFja2dyb3VuZCgpIGZvciB0aGUgcHJpbWFyeQorICAgICAgICBlbnRy eSBwb2ludCBmb3IgdGVzdHMuIFBvc3RncmVzIGNsaWVudHMgbWF5IGNvbm5lY3QgdG8gdGhpcyBz ZXJ2ZXIgdmlhCisgICAgICAgICoqdGNwX3NlcnZlci5jb25uaW5mby4KKworICAgICAgICBfVENQ U2VydmVyIGRlcml2ZXMgZnJvbSBjb250ZXh0bGliLkV4aXRTdGFjayB0byBwcm92aWRlIGVhc3kg Y2xlYW51cCBvZgorICAgICAgICBhc3NvY2lhdGVkIHJlc291cmNlczsgc2VlIHRoZSBkb2N1bWVu dGF0aW9uIGZvciB0aGF0IGNsYXNzIGZvciBhIGZ1bGwKKyAgICAgICAgZXhwbGFuYXRpb24uCisg ICAgICAgICIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgIHN1 cGVyKCkuX19pbml0X18oKQorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSBOb25lCisgICAg ICAgICAgICBzZWxmLl90aHJlYWRfZXhjID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fbGlzdGVu ZXIgPSBzZWxmLmVudGVyX2NvbnRleHQoCisgICAgICAgICAgICAgICAgc29ja2V0LnNvY2tldChz b2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKSwKKyAgICAgICAgICAgICkKKworICAg ICAgICAgICAgc2VsZi5fYmluZF9hbmRfbGlzdGVuKCkKKyAgICAgICAgICAgIHNvY2tuYW1lID0g c2VsZi5fbGlzdGVuZXIuZ2V0c29ja25hbWUoKQorICAgICAgICAgICAgc2VsZi5jb25uaW5mbyA9 IGRpY3QoCisgICAgICAgICAgICAgICAgaG9zdGFkZHI9c29ja25hbWVbMF0sCisgICAgICAgICAg ICAgICAgcG9ydD1zb2NrbmFtZVsxXSwKKyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgX2Jp bmRfYW5kX2xpc3RlbihzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgRG9lcyB0 aGUgYWN0dWFsIHdvcmsgb2YgYmluZGluZyB0aGUgc29ja2V0IGFuZCBsaXN0ZW5pbmcgZm9yCisg ICAgICAgICAgICBjb25uZWN0aW9ucy4KKworICAgICAgICAgICAgVGhlIGxpc3RlbiBiYWNrbG9n IGlzIGN1cnJlbnRseSBoYXJkY29kZWQgdG8gb25lLgorICAgICAgICAgICAgIiIiCisgICAgICAg ICAgICBzZWxmLl9saXN0ZW5lci5iaW5kKCgiMTI3LjAuMC4xIiwgMCkpCisgICAgICAgICAgICBz ZWxmLl9saXN0ZW5lci5saXN0ZW4oMSkKKworICAgICAgICBkZWYgYmFja2dyb3VuZChzZWxmLCBm bjogQ2FsbGFibGVbW3NvY2tldC5zb2NrZXRdLCBOb25lXSkgLT4gTm9uZToKKyAgICAgICAgICAg ICIiIgorICAgICAgICAgICAgQWNjZXB0cyBhIGNsaWVudCBjb25uZWN0aW9uIG9uIGEgYmFja2dy b3VuZCB0aHJlYWQgYW5kIHBhc3NlcyBpdCB0bworICAgICAgICAgICAgdGhlIHByb3ZpZGVkIGNh bGxiYWNrLiBBbnkgZXhjZXB0aW9ucyByYWlzZWQgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbAorICAg ICAgICAgICAgYmUgcmUtcmFpc2VkIG9uIHRoZSBtYWluIHRocmVhZCBkdXJpbmcgZml4dHVyZSB0 ZWFyZG93bi4KKworICAgICAgICAgICAgQmxvY2tpbmcgb3BlcmF0aW9ucyBvbiB0aGUgY29ubmVj dGVkIHNvY2tldCBkZWZhdWx0IHRvIHVzaW5nIHRoZQorICAgICAgICAgICAgcmVtYWluaW5nX3Rp bWVvdXQoKSwgdGhvdWdoIHRoaXMgY2FuIGJlIGNoYW5nZWQgYnkgdGhlIHRlc3QgdmlhIHRoZQor ICAgICAgICAgICAgc29ja2V0J3MgLnNldHRpbWVvdXQoKS4KKyAgICAgICAgICAgICIiIgorCisg ICAgICAgICAgICBkZWYgX2JnKCk6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg ICAgICAgICBzZWxmLl9saXN0ZW5lci5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KCkpCisg ICAgICAgICAgICAgICAgICAgIHNvY2ssIF8gPSBzZWxmLl9saXN0ZW5lci5hY2NlcHQoKQorCisg ICAgICAgICAgICAgICAgICAgIHdpdGggc29jazoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNv Y2suc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgpKQorICAgICAgICAgICAgICAgICAgICAg ICAgZm4oc29jaykKKworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgICAgICAgICAgIyBTYXZlIHRoZSBleGNlcHRpb24gZm9yIHJlLXJhaXNpbmcgb24g dGhlIG1haW4gdGhyZWFkLgorICAgICAgICAgICAgICAgICAgICBzZWxmLl90aHJlYWRfZXhjID0g ZQorCisgICAgICAgICAgICAjIFRPRE86IHJhdGhlciB0aGFuIHVzaW5nIGNhbGxiYWNrKCksIGNv bnNpZGVyIGV4cGxpY2l0bHkgc2lnbmFsaW5nCisgICAgICAgICAgICAjIHRoZSBmbigpIGltcGxl bWVudGF0aW9uIHRvIHN0b3AgZWFybHkgaWYgd2UgZ2V0IGFuIGV4Y2VwdGlvbi4KKyAgICAgICAg ICAgICMgT3RoZXJ3aXNlIHdlJ2xsIGhhbmcgdW50aWwgdGhlIGVuZCBvZiB0aGUgdGltZW91dC4K KyAgICAgICAgICAgIHNlbGYuX3RocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV9iZykK KyAgICAgICAgICAgIHNlbGYuY2FsbGJhY2soc2VsZi5fam9pbikKKworICAgICAgICAgICAgc2Vs Zi5fdGhyZWFkLnN0YXJ0KCkKKworICAgICAgICBkZWYgX2pvaW4oc2VsZik6CisgICAgICAgICAg ICAiIiIKKyAgICAgICAgICAgIFdhaXRzIGZvciB0aGUgYmFja2dyb3VuZCB0aHJlYWQgdG8gZmlu aXNoIGFuZCByYWlzZXMgYW55IHRocm93bgorICAgICAgICAgICAgZXhjZXB0aW9uLiBUaGlzIGlz IGNhbGxlZCBkdXJpbmcgZml4dHVyZSB0ZWFyZG93bi4KKyAgICAgICAgICAgICIiIgorICAgICAg ICAgICAgIyBHaXZlIGEgbGl0dGxlIGJpdCBvZiB3aWdnbGUgcm9vbSBvbiB0aGUgam9pbiB0aW1l b3V0LCBzaW5jZSB3ZSdyZQorICAgICAgICAgICAgIyByYWNpbmcgYWdhaW5zdCB0aGUgdGVzdCdz IG93biB1c2Ugb2YgcmVtYWluaW5nX3RpbWVvdXQoKS4gKEl0J3MKKyAgICAgICAgICAgICMgcHJl ZmVyYWJsZSB0byBsZXQgdGVzdHMgcmVwb3J0IHRpbWVvdXRzOyB0aGUgc3RhY2sgdHJhY2VzIHdp bGwKKyAgICAgICAgICAgICMgaGVscCB3aXRoIGRlYnVnZ2luZy4pCisgICAgICAgICAgICBzZWxm Ll90aHJlYWQuam9pbihyZW1haW5pbmdfdGltZW91dCgpICsgMSkKKyAgICAgICAgICAgIGlmIHNl bGYuX3RocmVhZC5pc19hbGl2ZSgpOgorICAgICAgICAgICAgICAgIHJhaXNlIFRpbWVvdXRFcnJv cigiYmFja2dyb3VuZCB0aHJlYWQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aW1lb3V0IikKKwor ICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkX2V4YyBpcyBub3QgTm9uZToKKyAgICAgICAgICAg ICAgICByYWlzZSBzZWxmLl90aHJlYWRfZXhjCisKKyAgICByZXR1cm4gX1RDUFNlcnZlcgorCisK K0BweXRlc3QuZml4dHVyZQorZGVmIHRjcF9zZXJ2ZXIodGNwX3NlcnZlcl9jbGFzcyk6CisgICAg IiIiCisgICAgT3BlbnMgdXAgYSBsb2NhbCBUQ1Agc29ja2V0IGZvciBtb2NraW5nIGEgUG9zdGdy ZXMgc2VydmVyIG9uIGEgYmFja2dyb3VuZAorICAgIHRocmVhZC4gU2VlIHRoZSBfVENQU2VydmVy IEFQSSBmb3IgdXNhZ2UuCisgICAgIiIiCisgICAgd2l0aCB0Y3Bfc2VydmVyX2NsYXNzKCkgYXMg czoKKyAgICAgICAgeWllbGQgcworCisKK0BweXRlc3QuZml4dHVyZQorZGVmIHNzbF9zZXJ2ZXIo dGNwX3NlcnZlcl9jbGFzcywgY2VydHMpOgorICAgICIiIgorICAgIExpa2UgdGNwX3NlcnZlciwg YnV0IHdpdGggYW4gYWRkaXRpb25hbCAuYmFja2dyb3VuZF9zc2woKSBtZXRob2Qgd2hpY2ggd2ls bAorICAgIHBlcmZvcm0gYSBTU0xSZXF1ZXN0IGhhbmRzaGFrZSBvbiB0aGUgc29ja2V0IGJlZm9y ZSBoYW5kaW5nIHRoZSBjb25uZWN0aW9uCisgICAgdG8gdGhlIHRlc3QgY2FsbGJhY2suCisKKyAg ICBUaGlzIHNlcnZlciB1c2VzIGNlcnRzLnNlcnZlciBhcyBpdHMgaWRlbnRpdHkuCisgICAgIiIi CisKKyAgICBjbGFzcyBfU1NMU2VydmVyKHRjcF9zZXJ2ZXJfY2xhc3MpOgorICAgICAgICBkZWYg X19pbml0X18oc2VsZik6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgICAg ICAgICAgc2VsZi5jb25uaW5mb1siaG9zdCJdID0gY2VydHMuc2VydmVyX2hvc3QKKworICAgICAg ICAgICAgc2VsZi5fY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIp CisgICAgICAgICAgICBzZWxmLl9jdHgubG9hZF9jZXJ0X2NoYWluKGNlcnRzLnNlcnZlci5jZXJ0 cGF0aCwgY2VydHMuc2VydmVyLmtleXBhdGgpCisKKyAgICAgICAgZGVmIGJhY2tncm91bmRfc3Ns KHNlbGYsIGZuOiBDYWxsYWJsZVtbc3NsLlNTTFNvY2tldF0sIE5vbmVdKSAtPiBOb25lOgorICAg ICAgICAgICAgIiIiCisgICAgICAgICAgICBJbnZva2VzIGEgc2VydmVyIGNhbGxiYWNrIGFzIHdp dGggLmJhY2tncm91bmQoKSwgYnV0IGFuIFNTTFJlcXVlc3QKKyAgICAgICAgICAgIGhhbmRzaGFr ZSBpcyBwZXJmb3JtZWQgZmlyc3QsIGFuZCB0aGUgc29ja2V0IHByb3ZpZGVkIHRvIHRoZQorICAg ICAgICAgICAgY2FsbGJhY2sgaGFzIGJlZW4gd3JhcHBlZCBpbiBhbiBPcGVuU1NMIGxheWVyLgor ICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGRlZiBoYW5kc2hha2Uoczogc29ja2V0LnNv Y2tldCk6CisgICAgICAgICAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJl Y3YoNCkpWzBdCisKKyAgICAgICAgICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBnZXQgYW4gU1NMUmVx dWVzdC4KKyAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5y ZWN2KDQpKQorICAgICAgICAgICAgICAgIGFzc2VydCB2ZXJzaW9uID09ICgxMjM0LCA1Njc5KQor ICAgICAgICAgICAgICAgIGFzc2VydCBwa3RsZW4gPT0gOAorCisgICAgICAgICAgICAgICAgIyBB Y2NlcHQgdGhlIFNTTFJlcXVlc3QuCisgICAgICAgICAgICAgICAgcy5zZW5kKGIiUyIpCisKKyAg ICAgICAgICAgICAgICB3aXRoIHNlbGYuX2N0eC53cmFwX3NvY2tldChzLCBzZXJ2ZXJfc2lkZT1U cnVlKSBhcyB3cmFwcGVkOgorICAgICAgICAgICAgICAgICAgICBmbih3cmFwcGVkKQorCisgICAg ICAgICAgICBzZWxmLmJhY2tncm91bmQoaGFuZHNoYWtlKQorCisgICAgd2l0aCBfU1NMU2VydmVy KCkgYXMgczoKKyAgICAgICAgeWllbGQgcworCisKKyMKKyMgVGVzdHMKKyMKKworCitAcHl0ZXN0 Lm1hcmsucGFyYW1ldHJpemUoInNzbG1vZGUiLCAoInJlcXVpcmUiLCAidmVyaWZ5LWNhIiwgInZl cmlmeS1mdWxsIikpCitkZWYgdGVzdF9zZXJ2ZXJfd2l0aF9zc2xfZGlzYWJsZWQoY29ubmVjdCwg dGNwX3NlcnZlciwgY2VydHMsIHNzbG1vZGUpOgorICAgICIiIgorICAgIE1ha2Ugc3VyZSBjbGll bnQgcmVmdXNlcyB0byB0YWxrIHRvIG5vbi1TU0wgc2VydmVycyB3aXRoIHN0cmljdGVyCisgICAg c3NsbW9kZXMuCisgICAgIiIiCisKKyAgICBkZWYgcmVmdXNlX3NzbChzOiBzb2NrZXQuc29ja2V0 KToKKyAgICAgICAgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisK KyAgICAgICAgIyBNYWtlIHN1cmUgd2UgZ2V0IGFuIFNTTFJlcXVlc3QuCisgICAgICAgIHZlcnNp b24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFzc2VydCB2ZXJz aW9uID09ICgxMjM0LCA1Njc5KQorICAgICAgICBhc3NlcnQgcGt0bGVuID09IDgKKworICAgICAg ICAjIFJlZnVzZSB0aGUgU1NMUmVxdWVzdC4KKyAgICAgICAgcy5zZW5kKGIiTiIpCisKKyAgICAg ICAgIyBXYWl0IGZvciB0aGUgY2xpZW50IHRvIGNsb3NlIHRoZSBjb25uZWN0aW9uLgorICAgICAg ICBhc3NlcnQgbm90IHMucmVjdigxKSwgImNsaWVudCBzZW50IHVuZXhwZWN0ZWQgZGF0YSIKKwor ICAgIHRjcF9zZXJ2ZXIuYmFja2dyb3VuZChyZWZ1c2Vfc3NsKQorCisgICAgd2l0aCBweXRlc3Qu cmFpc2VzKExpYnBxRXJyb3IsIG1hdGNoPSJzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBTU0wiKToK KyAgICAgICAgY29ubmVjdCgKKyAgICAgICAgICAgICoqdGNwX3NlcnZlci5jb25uaW5mbywKKyAg ICAgICAgICAgIHNzbHJvb3RjZXJ0PWNlcnRzLmNhLmNlcnRwYXRoLAorICAgICAgICAgICAgc3Ns bW9kZT1zc2xtb2RlLAorICAgICAgICAgICAgbWF4X3Byb3RvY29sX3ZlcnNpb249IjMuMiIsICAj IERvbid0IHVzZSBncmVhc2UKKyAgICAgICAgKQorCisKK2RlZiB0ZXN0X3ZlcmlmeV9mdWxsX2Nv bm5lY3Rpb24oY29ubmVjdCwgc3NsX3NlcnZlciwgY2VydHMpOgorICAgICIiIkNvbXBsZXRlcyBh IHZlcmlmeS1mdWxsIGNvbm5lY3Rpb24gYW5kIGVtcHR5IHF1ZXJ5LiIiIgorCisgICAgZGVmIGhh bmRsZV9lbXB0eV9xdWVyeShzOiBzc2wuU1NMU29ja2V0KToKKyAgICAgICAgcGt0bGVuID0gc3Ry dWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisKKyAgICAgICAgIyBDaGVjayB0aGUgc3Rh cnR1cCBwYWNrZXQgdmVyc2lvbiwgdGhlbiBkaXNjYXJkIHRoZSByZW1haW5kZXIuCisgICAgICAg IHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFzc2Vy dCB2ZXJzaW9uID09ICgzLCAyKQorICAgICAgICBzLnJlY3YocGt0bGVuIC0gOCkKKworICAgICAg ICAjIFNlbmQgdGhlIHJlcXVpcmVkIGxpdGFueSBvZiBzZXJ2ZXIgbWVzc2FnZXMuCisgICAgICAg IHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJSSIsIGIiUiIsIDgsIDApKSAgIyBBdXRoZW50aWNhdGlv bk9LCisKKyAgICAgICAgIyBQYXJhbWV0ZXJTdGF0dXM6IGNsaWVudF9lbmNvZGluZworICAgICAg ICBrZXkgPSBiImNsaWVudF9lbmNvZGluZ1wwIgorICAgICAgICB2YWwgPSBiIlVURi04XDAiCisg ICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJTIiwgNCArIGxlbihrZXkpICsgbGVu KHZhbCkpICsga2V5ICsgdmFsKQorCisgICAgICAgICMgUGFyYW1ldGVyU3RhdHVzOiBEYXRlU3R5 bGUKKyAgICAgICAga2V5ID0gYiJEYXRlU3R5bGVcMCIKKyAgICAgICAgdmFsID0gYiJJU08sIE1E WVwwIgorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSSIsIGIiUyIsIDQgKyBsZW4oa2V5 KSArIGxlbih2YWwpKSArIGtleSArIHZhbCkKKworICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2so IiFjSUlJIiwgYiJLIiwgMTIsIDEyMzQsIDEyMzQpKSAgIyBCYWNrZW5kS2V5RGF0YQorICAgICAg ICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSWMiLCBiIloiLCA1LCBiIkkiKSkgICMgUmVhZHlGb3JR dWVyeQorCisgICAgICAgICMgRXhwZWN0IGFuIGVtcHR5IHF1ZXJ5LgorICAgICAgICBwa3R0eXBl ID0gcy5yZWN2KDEpCisgICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiUSIKKyAgICAgICAgcGt0 bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisgICAgICAgIGFzc2VydCBz LnJlY3YocGt0bGVuIC0gNCkgPT0gYiJcMCIKKworICAgICAgICAjIFNlbmQgYW4gRW1wdHlRdWVy eVJlc3BvbnNlK1JlYWR5Rm9yUXVlcnkuCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJ IiwgYiJJIiwgNCkpCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJYyIsIGIiWiIsIDUs IGIiSSIpKQorCisgICAgICAgICMgbGlicHEgc2hvdWxkIHRlcm1pbmF0ZSBhbmQgY2xvc2UgdGhl IGNvbm5lY3Rpb24uCisgICAgICAgIGFzc2VydCBzLnJlY3YoMSkgPT0gYiJYIgorICAgICAgICBw a3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0KKyAgICAgICAgYXNzZXJ0 IHBrdGxlbiA9PSA0CisKKyAgICAgICAgYXNzZXJ0IG5vdCBzLnJlY3YoMSksICJjbGllbnQgc2Vu dCB1bmV4cGVjdGVkIGRhdGEiCisKKyAgICBzc2xfc2VydmVyLmJhY2tncm91bmRfc3NsKGhhbmRs ZV9lbXB0eV9xdWVyeSkKKworICAgIGNvbm4gPSBjb25uZWN0KAorICAgICAgICAqKnNzbF9zZXJ2 ZXIuY29ubmluZm8sCisgICAgICAgIHNzbHJvb3RjZXJ0PWNlcnRzLmNhLmNlcnRwYXRoLAorICAg ICAgICBzc2xtb2RlPSJ2ZXJpZnktZnVsbCIsCisgICAgICAgIG1heF9wcm90b2NvbF92ZXJzaW9u PSIzLjIiLCAgIyBEb24ndCB1c2UgZ3JlYXNlCisgICAgKQorICAgIHdpdGggY29ubjoKKyAgICAg ICAgYXNzZXJ0IGNvbm4uZXhlYygiIikuc3RhdHVzKCkgPT0gRXhlY1N0YXR1cy5QR1JFU19FTVBU WV9RVUVSWQotLSAKMi41My4wCgo= --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=nocfbot-v13-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch Content-Type: text/x-patch; charset=utf-8; name=nocfbot-v13-0005-WIP-pytest-Add-some-server-side-SSL-tests.patch RnJvbSBiNjUwMmVmZDU5MjczNTEzODk2ZmNkYjE1NjYxYTcyNDEwYTU3ZDFkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMTo0NiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDUvNV0gV0lQOiBweXRlc3Q6IEFkZCBzb21lIHNlcnZlci1zaWRlIFNTTCB0 ZXN0cwoKSW4gdGhlIHNhbWUgdmVpbiBhcyB0aGUgcHJldmlvdXMgY29tbWl0LCB0aGlzIGlzIGEg c2VydmVyLW9ubHkgdGVzdApzdWl0ZSBvcGVyYXRpbmcgYWdhaW5zdCBhIG1vY2sgY2xpZW50LiBU aGUgdGVzdCBpdHNlbGYgaXMgYSBoZWF2aWx5CnBhcmFtZXRlcml6ZWQgY2hlY2sgZm9yIGRpcmVj dC1TU0wgaGFuZHNoYWtlIGJlaGF2aW9yLCB1c2luZyBhCmNvbWJpbmF0aW9uIG9mICJzdGFuZGFy ZCIgYW5kICJjdXN0b20iIGNlcnRpZmljYXRlcyB2aWEgdGhlIGNlcnRzCmZpeHR1cmUuCgppbnN0 YWxsY2hlY2sgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLCBidXQgdGhlIGFyY2hpdGVjdHVyZSBo YXMgc29tZQpleHRlbnNpb24gcG9pbnRzIHRoYXQgc2hvdWxkIG1ha2UgaXQgcG9zc2libGUgbGF0 ZXIuIEZvciBub3csIGEgbmV3CnNlcnZlciBpcyBhbHdheXMgc3RhcnRlZCBmb3IgdGhlIHRlc3Qg c2Vzc2lvbi4KClRPRE9zOgotIGltcHJvdmUgcmVtYWluaW5nX3RpbWVvdXQoKSBpbnRlZ3JhdGlv biB3aXRoIHNvY2tldCBvcGVyYXRpb25zOyBhdCB0aGUKICBtb21lbnQsIHRoZSB0aW1lb3V0IHJl c2V0cyBvbiBldmVyeSBjYWxsIHJhdGhlciB0aGFuIGRlY3JlbWVudGluZwotLS0KIHNyYy90ZXN0 L3NzbC9weXQvY29uZnRlc3QucHkgICAgfCAgNTAgKysrKysrKysrKwogc3JjL3Rlc3Qvc3NsL3B5 dC90ZXN0X3NlcnZlci5weSB8IDE2MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog MiBmaWxlcyBjaGFuZ2VkLCAyMTEgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkKCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wv cHl0L2NvbmZ0ZXN0LnB5IGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQppbmRleCA4NzBm NzM4YWM0NC4uZDEyMTcyNDgwMGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3NzbC9weXQvY29uZnRl c3QucHkKKysrIGIvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAtMTI2LDMgKzEyNiw1 MyBAQCBkZWYgY2VydHMoY3J5cHRvZ3JhcGh5LCB0bXBfcGF0aF9mYWN0b3J5KToKICAgICAgICAg ICAgIHJldHVybiBmLm5hbWUKIAogICAgIHJldHVybiBfQ2VydHMoKQorCisKK0BweXRlc3QuZml4 dHVyZShzY29wZT0ibW9kdWxlIiwgYXV0b3VzZT1UcnVlKQorZGVmIHNzbF9zZXR1cChwZ19zZXJ2 ZXJfbW9kdWxlLCBjZXJ0cywgZGF0YWRpcik6CisgICAgIiIiCisgICAgU2V0cyB1cCByZXF1aXJl ZCBzZXJ2ZXIgc2V0dGluZ3MgZm9yIGFsbCB0ZXN0cyBpbiB0aGlzIG1vZHVsZS4KKyAgICAiIiIK KyAgICB0cnk6CisgICAgICAgIHdpdGggcGdfc2VydmVyX21vZHVsZS5yZXN0YXJ0aW5nKCkgYXMg czoKKyAgICAgICAgICAgIHMuY29uZi5zZXQoCisgICAgICAgICAgICAgICAgc3NsPSJvbiIsCisg ICAgICAgICAgICAgICAgc3NsX2NhX2ZpbGU9Y2VydHMuY2EuY2VydHBhdGgsCisgICAgICAgICAg ICAgICAgc3NsX2NlcnRfZmlsZT1jZXJ0cy5zZXJ2ZXIuY2VydHBhdGgsCisgICAgICAgICAgICAg ICAgc3NsX2tleV9maWxlPWNlcnRzLnNlcnZlci5rZXlwYXRoLAorICAgICAgICAgICAgKQorCisg ICAgICAgICAgICAjIFJlamVjdCBieSBkZWZhdWx0LgorICAgICAgICAgICAgcy5oYmEucHJlcGVu ZCgiaG9zdHNzbCBhbGwgYWxsIGFsbCByZWplY3QiKQorCisgICAgZXhjZXB0IHN1YnByb2Nlc3Mu Q2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAjIFRoaXMgaXMgYSBkZWNlbnQgcGxhY2UgdG8g c2tpcCBpZiB0aGUgc2VydmVyIGlzbid0IHNldCB1cCBmb3IgU1NMLgorICAgICAgICBsb2dwYXRo ID0gZGF0YWRpciAvICJwb3N0Z3Jlc3FsLmxvZyIKKyAgICAgICAgdW5zdXBwb3J0ZWQgPSByZS5j b21waWxlKCJTU0wgaXMgbm90IHN1cHBvcnRlZCIpCisKKyAgICAgICAgd2l0aCBvcGVuKGxvZ3Bh dGgsICJyIikgYXMgbG9nOgorICAgICAgICAgICAgZm9yIGxpbmUgaW4gbG9nOgorICAgICAgICAg ICAgICAgIGlmIHVuc3VwcG9ydGVkLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAgICAgICAg cHl0ZXN0LnNraXAoInRoZSBzZXJ2ZXIgZG9lcyBub3Qgc3VwcG9ydCBTU0wiKQorCisgICAgICAg ICMgU29tZSBvdGhlciBlcnJvciBoYXBwZW5lZC4KKyAgICAgICAgcmFpc2UKKworICAgIHVzZXJz ID0gcGdfc2VydmVyX21vZHVsZS5jcmVhdGVfdXNlcnMoInNzbCIpCisgICAgZGJzID0gcGdfc2Vy dmVyX21vZHVsZS5jcmVhdGVfZGJzKCJzc2wiKQorCisgICAgcmV0dXJuICh1c2VycywgZGJzKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBjbGllbnRfY2VydChzc2xf c2V0dXAsIGNlcnRzKToKKyAgICAiIiIKKyAgICBDcmVhdGVzIGEgQ2VydCBmb3IgdGhlICJzc2wi IHVzZXIuCisgICAgIiIiCisgICAgZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKKyAgICBm cm9tIGNyeXB0b2dyYXBoeS54NTA5Lm9pZCBpbXBvcnQgTmFtZU9JRAorCisgICAgdXNlcnMsIF8g PSBzc2xfc2V0dXAKKyAgICB1c2VyID0gdXNlcnNbInNzbCJdCisKKyAgICByZXR1cm4gY2VydHMu bmV3KHg1MDkuTmFtZShbeDUwOS5OYW1lQXR0cmlidXRlKE5hbWVPSUQuQ09NTU9OX05BTUUsIHVz ZXIpXSkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5IGIvc3Jj L3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uZDVjYjE0YjZjOWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zc2wv cHl0L3Rlc3Rfc2VydmVyLnB5CkBAIC0wLDAgKzEsMTYxIEBACisjIENvcHlyaWdodCAoYykgMjAy NSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IHJlCitpbXBv cnQgc29ja2V0CitpbXBvcnQgc3NsCitpbXBvcnQgc3RydWN0CisKK2ltcG9ydCBweXRlc3QKKwor aW1wb3J0IHB5cGcKKworIyBUaGlzIHN1aXRlIG9wZW5zIHVwIGxvY2FsIFRDUCBwb3J0cyBhbmQg aXMgaGlkZGVuIGJlaGluZCBQR19URVNUX0VYVFJBPXNzbC4KK3B5dGVzdG1hcmsgPSBweXBnLnJl cXVpcmVfdGVzdF9leHRyYXMoInNzbCIpCisKKyMgRm9yIHVzZSB3aXRoIHRoZSBgY3JlZHNgIHBh cmFtZXRlciBiZWxvdy4KK0NMSUVOVCA9ICJjbGllbnQiCitTRVJWRVIgPSAic2VydmVyIgorCisK KyMgZm10OiBvZmYKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgKKyAgICAiYXV0aF9tZXRob2Qs ICAgICAgICAgICAgICAgICAgICBjcmVkcywgIGV4cGVjdGVkX2Vycm9yIiwKK1sKKyAgICAjIFRy dXN0IGFsbG93cyBhbnl0aGluZy4KKyAgICAoInRydXN0IiwgICAgICAgICAgICAgICAgICAgICAg ICBOb25lLCAgIE5vbmUpLAorICAgICgidHJ1c3QiLCAgICAgICAgICAgICAgICAgICAgICAgIENM SUVOVCwgTm9uZSksCisgICAgKCJ0cnVzdCIsICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVS LCBOb25lKSwKKworICAgICMgdmVyaWZ5LWNhIGFsbG93cyBhbnkgQ0Etc2lnbmVkIGNlcnRpZmlj YXRlLgorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJpZnktY2EiLCAgIE5vbmUsICAgInJlcXVp cmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0 PXZlcmlmeS1jYSIsICAgQ0xJRU5ULCBOb25lKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVy aWZ5LWNhIiwgICBTRVJWRVIsIE5vbmUpLAorCisgICAgIyBjZXJ0IGFuZCB2ZXJpZnktZnVsbCBh bGxvdyBvbmx5IHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlLgorICAgICgidHJ1c3QgY2xpZW50Y2Vy dD12ZXJpZnktZnVsbCIsIE5vbmUsICAgInJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmlj YXRlIiksCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0PXZlcmlmeS1mdWxsIiwgQ0xJRU5ULCBOb25l KSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLCBTRVJWRVIsICJhdXRoZW50 aWNhdGlvbiBmYWlsZWQgZm9yIHVzZXIiKSwKKyAgICAoImNlcnQiLCAgICAgICAgICAgICAgICAg ICAgICAgICBOb25lLCAgICJyZXF1aXJlcyBhIHZhbGlkIGNsaWVudCBjZXJ0aWZpY2F0ZSIpLAor ICAgICgiY2VydCIsICAgICAgICAgICAgICAgICAgICAgICAgIENMSUVOVCwgTm9uZSksCisgICAg KCJjZXJ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgU0VSVkVSLCAiYXV0aGVudGljYXRpb24g ZmFpbGVkIGZvciB1c2VyIiksCitdLAorKQorIyBmbXQ6IG9uCitkZWYgdGVzdF9kaXJlY3Rfc3Ns X2NlcnRpZmljYXRlX2F1dGhlbnRpY2F0aW9uKAorICAgIHBnLAorICAgIHNzbF9zZXR1cCwKKyAg ICBjZXJ0cywKKyAgICBjbGllbnRfY2VydCwKKyAgICByZW1haW5pbmdfdGltZW91dCwKKyAgICAj IHRlc3QgcGFyYW1ldGVycworICAgIGF1dGhfbWV0aG9kLAorICAgIGNyZWRzLAorICAgIGV4cGVj dGVkX2Vycm9yLAorKToKKyAgICAiIiIKKyAgICBUZXN0cyBkaXJlY3QgU1NMIGNvbm5lY3Rpb25z IHdpdGggdmFyaW91cyBjbGllbnQtY2VydGlmaWNhdGUvSEJBCisgICAgY29tYmluYXRpb25zLgor ICAgICIiIgorCisgICAgIyBTZXQgdXAgdGhlIEhCQSBhcyBkZXNpcmVkIGJ5IHRoZSB0ZXN0Lgor ICAgIHVzZXJzLCBkYnMgPSBzc2xfc2V0dXAKKworICAgIHVzZXIgPSB1c2Vyc1sic3NsIl0KKyAg ICBkYiA9IGRic1sic3NsIl0KKworICAgIHdpdGggcGcucmVsb2FkaW5nKCkgYXMgczoKKyAgICAg ICAgcy5oYmEucHJlcGVuZCgKKyAgICAgICAgICAgIFsiaG9zdHNzbCIsIGRiLCB1c2VyLCAiMTI3 LjAuMC4xLzMyIiwgYXV0aF9tZXRob2RdLAorICAgICAgICAgICAgWyJob3N0c3NsIiwgZGIsIHVz ZXIsICI6OjEvMTI4IiwgYXV0aF9tZXRob2RdLAorICAgICAgICApCisKKyAgICAjIENvbmZpZ3Vy ZSB0aGUgU1NMIHNldHRpbmdzIGZvciB0aGUgY2xpZW50LgorICAgIGN0eCA9IHNzbC5TU0xDb250 ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlv bnMoY2FmaWxlPWNlcnRzLmNhLmNlcnRwYXRoKQorICAgIGN0eC5zZXRfYWxwbl9wcm90b2NvbHMo WyJwb3N0Z3Jlc3FsIl0pICAjIGZvciBkaXJlY3QgU1NMCisKKyAgICAjIExvYWQgdXAgYSBjbGll bnQgY2VydGlmaWNhdGUgaWYgcmVxdWlyZWQgYnkgdGhlIHRlc3QuCisgICAgaWYgY3JlZHMgPT0g Q0xJRU5UOgorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWluKGNsaWVudF9jZXJ0LmNlcnRwYXRo LCBjbGllbnRfY2VydC5rZXlwYXRoKQorICAgIGVsaWYgY3JlZHMgPT0gU0VSVkVSOgorICAgICAg ICAjIFVzaW5nIGEgc2VydmVyIGNlcnRpZmljYXRlIGFzIHRoZSBjbGllbnQgY3JlZGVudGlhbCBp cyBleHBlY3RlZCB0bworICAgICAgICAjIHdvcmsgb25seSBmb3IgY2xpZW50Y2VydD12ZXJpZnkt Y2EgKGFuZCBgdHJ1c3RgLCBuYXR1cmFsbHkpLgorICAgICAgICBjdHgubG9hZF9jZXJ0X2NoYWlu KGNlcnRzLnNlcnZlci5jZXJ0cGF0aCwgY2VydHMuc2VydmVyLmtleXBhdGgpCisKKyAgICAjIE1h a2UgYSBkaXJlY3QgU1NMIGNvbm5lY3Rpb24uIFRoZXJlJ3Mgbm8gU1NMUmVxdWVzdCBpbiB0aGUg aGFuZHNoYWtlOyB3ZQorICAgICMgc2ltcGx5IHdyYXAgYSBUQ1AgY29ubmVjdGlvbiB3aXRoIE9w ZW5TU0wuCisgICAgYWRkciA9IChwZy5ob3N0YWRkciwgcGcucG9ydCkKKyAgICB3aXRoIHNvY2tl dC5jcmVhdGVfY29ubmVjdGlvbihhZGRyKSBhcyBzOgorICAgICAgICBzLnNldHRpbWVvdXQocmVt YWluaW5nX3RpbWVvdXQoKSkgICMgWFhYIHRoaXMgcmVzZXRzIGV2ZXJ5IG9wZXJhdGlvbgorCisg ICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHMsIHNlcnZlcl9ob3N0bmFtZT1jZXJ0cy5zZXJ2 ZXJfaG9zdCkgYXMgY29ubjoKKyAgICAgICAgICAgICMgQnVpbGQgYW5kIHNlbmQgdGhlIHN0YXJ0 dXAgcGFja2V0LgorICAgICAgICAgICAgc3RhcnR1cF9vcHRpb25zID0gZGljdCgKKyAgICAgICAg ICAgICAgICB1c2VyPXVzZXIsCisgICAgICAgICAgICAgICAgZGF0YWJhc2U9ZGIsCisgICAgICAg ICAgICAgICAgYXBwbGljYXRpb25fbmFtZT0icHl0ZXN0IiwKKyAgICAgICAgICAgICkKKworICAg ICAgICAgICAgcGF5bG9hZCA9IGIiIgorICAgICAgICAgICAgZm9yIGssIHYgaW4gc3RhcnR1cF9v cHRpb25zLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgcGF5bG9hZCArPSBrLmVuY29kZSgpICsg YiJcMCIKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9IHN0cih2KS5lbmNvZGUoKSArIGIiXDAi CisgICAgICAgICAgICBwYXlsb2FkICs9IGIiXDAiICAjIG51bGwgdGVybWluYXRvcgorCisgICAg ICAgICAgICBwa3RsZW4gPSA0ICsgNCArIGxlbihwYXlsb2FkKQorICAgICAgICAgICAgY29ubi5z ZW5kKHN0cnVjdC5wYWNrKCIhSUhIIiwgcGt0bGVuLCAzLCAwKSArIHBheWxvYWQpCisKKyAgICAg ICAgICAgIGlmIG5vdCBleHBlY3RlZF9lcnJvcjoKKyAgICAgICAgICAgICAgICAjIEV4cGVjdCBh biBBdXRoZW50aWNhdGlvbk9LIHRvIGNvbWUgYmFjay4KKyAgICAgICAgICAgICAgICBwa3R0eXBl LCBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAg ICAgICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJSIgorICAgICAgICAgICAgICAgIGFzc2VydCBwa3Rs ZW4gPT0gOAorCisgICAgICAgICAgICAgICAgYXV0aG5fcmVzdWx0ID0gc3RydWN0LnVucGFjaygi IUkiLCBjb25uLnJlY3YoNCkpWzBdCisgICAgICAgICAgICAgICAgYXNzZXJ0IGF1dGhuX3Jlc3Vs dCA9PSAwCisKKyAgICAgICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2NhcmQgdG8gUmVhZHlGb3JR dWVyeS4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBw a3R0eXBlLCBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAg ICAgICAgICAgICAgICAgIHBheWxvYWQgPSBjb25uLnJlY3YocGt0bGVuIC0gNCkKKworICAgICAg ICAgICAgICAgICAgICBpZiBwa3R0eXBlID09IGIiWiI6CisgICAgICAgICAgICAgICAgICAgICAg ICBhc3NlcnQgcGF5bG9hZCA9PSBiIkkiCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhawor CisgICAgICAgICAgICAgICAgIyBTZW5kIGFuIGVtcHR5IHF1ZXJ5LgorICAgICAgICAgICAgICAg IGNvbm4uc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJRIiwgNSkgKyBiIlwwIikKKworICAgICAg ICAgICAgICAgICMgRXhwZWN0IEVtcHR5UXVlcnlSZXNwb25zZStSZWFkeUZvclF1ZXJ5LgorICAg ICAgICAgICAgICAgIHBrdHR5cGUsIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4u cmVjdig1KSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIkkiCisgICAgICAg ICAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA0CisKKyAgICAgICAgICAgICAgICBwa3R0eXBlLCBw a3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAgICAg ICAgYXNzZXJ0IHBrdHR5cGUgPT0gYiJaIgorCisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNv bm4ucmVjdihwa3RsZW4gLSA0KQorICAgICAgICAgICAgICAgIGFzc2VydCBwYXlsb2FkID09IGIi SSIKKworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIE1hdGNoIHRoZSBleHBl Y3RlZCBhdXRoZW50aWNhdGlvbiBlcnJvci4KKyAgICAgICAgICAgICAgICBwa3R0eXBlLCBwa3Rs ZW4gPSBzdHJ1Y3QudW5wYWNrKCIhY0kiLCBjb25uLnJlY3YoNSkpCisgICAgICAgICAgICAgICAg YXNzZXJ0IHBrdHR5cGUgPT0gYiJFIgorCisgICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNvbm4u cmVjdihwa3RsZW4gLSA0KQorICAgICAgICAgICAgICAgIG1zZyA9IE5vbmUKKworICAgICAgICAg ICAgICAgIGZvciBjb21wb25lbnQgaW4gcGF5bG9hZC5zcGxpdChiIlwwIik6CisgICAgICAgICAg ICAgICAgICAgIGlmIG5vdCBjb21wb25lbnQ6CisgICAgICAgICAgICAgICAgICAgICAgICBicmVh ayAgIyBlbmQgb2YgbWVzc2FnZQorCisgICAgICAgICAgICAgICAgICAgIGtleSwgdmFsID0gY29t cG9uZW50WzoxXSwgY29tcG9uZW50WzE6XQorICAgICAgICAgICAgICAgICAgICBpZiBrZXkgPT0g YiJTIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCB2YWwgPT0gYiJGQVRBTCIKKyAg ICAgICAgICAgICAgICAgICAgZWxpZiBrZXkgPT0gYiJNIjoKKyAgICAgICAgICAgICAgICAgICAg ICAgIG1zZyA9IHZhbC5kZWNvZGUoKQorCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlLnNlYXJj aChleHBlY3RlZF9lcnJvciwgbXNnKSwgInNlcnZlciBlcnJvciBkaWQgbm90IG1hdGNoIgorCisg ICAgICAgICAgICAjIFRlcm1pbmF0ZS4KKyAgICAgICAgICAgIGNvbm4uc2VuZChzdHJ1Y3QucGFj aygiIWNJIiwgYiJYIiwgNCkpCi0tIAoyLjUzLjAKCg== --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0001-Add-support-for-pytest-test-suites.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0001-Add-support-for-pytest-test-suites.patch RnJvbSAyOWU0ZmM3NGE3OTZhMTViMTZjZWQyMjNjOTQ2OGU1OTE4Zjc5YjU3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjEzIDEvNV0gQWRkIHN1cHBvcnQgZm9yIHB5dGVzdCB0ZXN0IHN1aXRlcwoKU3Bl Y2lmeSAtLWVuYWJsZS1weXRlc3QvLURweXRlc3Q9ZW5hYmxlZCBhdCBjb25maWd1cmUgdGltZS4g VGhpcwpjb250YWlucyBubyBQb3N0Z3JlcyB0ZXN0IGxvZ2ljIC0tIGl0IGlzIGp1c3QgYSAidmFu aWxsYSIgcHl0ZXN0CnNrZWxldG9uLgoKVGhpcyBjb250YWlucyBhIGN1c3RvbSBweXRlc3QgcGx1 Z2luIHRvIGdlbmVyYXRlIFRBUCBvdXRwdXQuIFRoaXMgcGx1Z2luCmlzIHVzZWQgYnkgdGhlIE1l c29uIG10ZXN0IHJ1bm5lciwgdG8gc2hvdyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IKZmFpbGVk IHRlc3RzLiBUaGUgcHl0ZXN0LXRhcCBwbHVnaW4gd291bGQgaGF2ZSBiZWVuIHByZWZlcmFibGUs IGJ1dCBpdCdzCm5vdyBpbiBtYWludGVuYW5jZSBtb2RlLCBhbmQgaXQgaGFzIHByb2JsZW1zIHdp dGggYWNjaWRlbnRhbGx5CnN1cHByZXNzaW5nIGltcG9ydGFudCBjb2xsZWN0aW9uIGZhaWx1cmVz LgoKQ28tYXV0aG9yZWQtYnk6IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+ Ci0tLQogLmNpcnJ1cy50YXNrcy55bWwgICAgICAgICAgIHwgIDExICstCiAuZ2l0aWdub3JlICAg ICAgICAgICAgICAgICAgfCAgIDMgKwogY29uZmlndXJlICAgICAgICAgICAgICAgICAgIHwgMTY2 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogY29uZmlndXJlLmFjICAgICAgICAgICAg ICAgIHwgIDI0ICsrKystCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAxMDAgKysrKysr KysrKysrKysrKysrCiBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgfCAgIDggKy0KIHB5cHJv amVjdC50b21sICAgICAgICAgICAgICB8ICAyMSArKysrCiBzcmMvTWFrZWZpbGUuZ2xvYmFsLmlu ICAgICAgfCAgMjkgKysrKysrCiBzcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxkICAgfCAgIDIgKwog c3JjL3Rlc3QvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21lc29uLmJ1aWxk ICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUgICAgfCAgMjAgKysrKwog c3JjL3Rlc3QvcHl0ZXN0L1JFQURNRSAgICAgIHwgICAxICsKIHNyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZCB8ICAxNSArKysKIHNyYy90ZXN0L3B5dGVzdC9wZ3RhcC5weSAgICB8IDE5NyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90b29scy90ZXN0d3JhcCAgICAg ICAgICB8ICAgNiArLQogMTYgZmlsZXMgY2hhbmdlZCwgNTk3IGluc2VydGlvbnMoKyksIDggZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHlwcm9qZWN0LnRvbWwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9weXRlc3QvUkVBRE1FCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L21l c29uLmJ1aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3BndGFwLnB5Cgpk aWZmIC0tZ2l0IGEvLmNpcnJ1cy50YXNrcy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCA0 ODQxYTIwNDI0OC4uNDdlYzlkZWYyMGUgMTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisr KyBiLy5jaXJydXMudGFza3MueW1sCkBAIC00NCw2ICs0NCw3IEBAIGVudjoKICAgICAtRGxkYXA9 ZW5hYmxlZAogICAgIC1Ec3NsPW9wZW5zc2wKICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAg LURweXRlc3Q9ZW5hYmxlZAogICAgIC1EcGxwZXJsPWVuYWJsZWQKICAgICAtRHBscHl0aG9uPWVu YWJsZWQKICAgICAtRGRvY3M9ZW5hYmxlZApAQCAtMzE2LDYgKzMxNyw3IEBAIHRhc2s6CiAgICAg ICAgICAgLURsaWJjdXJsPWVuYWJsZWQKICAgICAgICAgICAtRG5scz1lbmFibGVkCiAgICAgICAg ICAgLURwYW09ZW5hYmxlZAorICAgICAgICAgIC1EUFlURVNUPXB5dGVzdC0zLjEyCiAKICAgICAg IHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8CiAgICAgICAgICNwa2dpbiAteSBp bnN0YWxsIC4uLgpAQCAtNTE5LDE0ICs1MjEsMTUgQEAgdGFzazoKICAgICAgICAgICBzZXQgLWUK ICAgICAgICAgICAuL2NvbmZpZ3VyZSBcCiAgICAgICAgICAgICAtLWVuYWJsZS1jYXNzZXJ0IC0t ZW5hYmxlLWluamVjdGlvbi1wb2ludHMgLS1lbmFibGUtZGVidWcgXAotICAgICAgICAgICAgLS1l bmFibGUtdGFwLXRlc3RzIC0tZW5hYmxlLW5scyBcCisgICAgICAgICAgICAtLWVuYWJsZS10YXAt dGVzdHMgLS1lbmFibGUtcHl0ZXN0IC0tZW5hYmxlLW5scyBcCiAgICAgICAgICAgICAtLXdpdGgt c2Vnc2l6ZS1ibG9ja3M9NiBcCiAgICAgICAgICAgICAtLXdpdGgtbGlibnVtYSBcCiAgICAgICAg ICAgICAtLXdpdGgtbGlidXJpbmcgXAogICAgICAgICAgICAgXAogICAgICAgICAgICAgJHtMSU5V WF9DT05GSUdVUkVfRkVBVFVSRVN9IFwKICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIENMQU5H PSJjY2FjaGUgY2xhbmciCisgICAgICAgICAgICBDTEFORz0iY2NhY2hlIGNsYW5nIiBcCisgICAg ICAgICAgICBQWVRFU1Q9ImVudiBMRF9QUkVMT0FEPS9saWIveDg2XzY0LWxpbnV4LWdudS9saWJh c2FuLnNvLjggcHl0ZXN0IgogICAgICAgICBFT0YKICAgICAgIGJ1aWxkX3NjcmlwdDogc3UgcG9z dGdyZXMgLWMgIm1ha2UgLXMgLWoke0JVSUxEX0pPQlN9IHdvcmxkLWJpbiIKICAgICAgIHVwbG9h ZF9jYWNoZXM6IGNjYWNoZQpAQCAtNjY0LDYgKzY2Nyw4IEBAIHRhc2s6CiAgICAgICBwNS4zNC1p by10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAgICAgIHB5dGhvbjMxMgorICAgICAgcHkzMTIt cGFja2FnaW5nCisgICAgICBweTMxMi1weXRlc3QKICAgICAgIHRjbAogICAgICAgenN0ZAogCkBA IC03MTMsNiArNzE4LDcgQEAgdGFzazoKICAgICBzaCBzcmMvdG9vbHMvY2kvY2lfbWFjcG9ydHNf cGFja2FnZXMuc2ggJE1BQ09TX1BBQ0tBR0VfTElTVAogICAgICMgc3lzdGVtIHB5dGhvbiBkb2Vz bid0IHByb3ZpZGUgaGVhZGVycwogICAgIHN1ZG8gL29wdC9sb2NhbC9iaW4vcG9ydCBzZWxlY3Qg cHl0aG9uMyBweXRob24zMTIKKyAgICBzdWRvIC9vcHQvbG9jYWwvYmluL3BvcnQgc2VsZWN0IHB5 dGVzdCBweXRlc3QzMTIKICAgICAjIE1ha2UgbWFjcG9ydHMgaW5zdGFsbCB2aXNpYmxlIGZvciBz dWJzZXF1ZW50IHN0ZXBzCiAgICAgZWNobyBQQVRIPS9vcHQvbG9jYWwvc2Jpbi86L29wdC9sb2Nh bC9iaW4vOiRQQVRIID4+ICRDSVJSVVNfRU5WCiAgIHVwbG9hZF9jYWNoZXM6IG1hY3BvcnRzCkBA IC03ODYsNiArNzkyLDcgQEAgdGFzazoKICAgICAgIC1EbGRhcD1lbmFibGVkCiAgICAgICAtRHNz bD1vcGVuc3NsCiAgICAgICAtRHRhcF90ZXN0cz1lbmFibGVkCisgICAgICAtRHB5dGVzdD1lbmFi bGVkCiAgICAgICAtRHBscGVybD1lbmFibGVkCiAgICAgICAtRHBscHl0aG9uPWVuYWJsZWQKIApk aWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggNGU5MTEzOTVmZTMuLmE1 NTBjZTYxOTRiIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTMx LDYgKzMxLDcgQEAgd2luMzJ2ZXIucmMKICouZXhlCiBsaWIqZGxsLmRlZgogbGliKi5wYworX19w eWNhY2hlX18vCiAKICMgTG9jYWwgZXhjbHVkZXMgaW4gcm9vdCBkaXJlY3RvcnkKIC9HTlVtYWtl ZmlsZQpAQCAtNDMsMyArNDQsNSBAQCBsaWIqLnBjCiAvUmVsZWFzZS8KIC90bXBfaW5zdGFsbC8K IC9wb3J0bG9jay8KKy8udmVudi8KKy91di5sb2NrCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9j b25maWd1cmUKaW5kZXggNGM3ODliZDkyODkuLjhiNGFkZTRmMzY4IDEwMDc1NQotLS0gYS9jb25m aWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC02MzAsNiArNjMwLDggQEAgdnBhdGhfYnVpbGQKIFBH X1NZU1JPT1QKIFBHX1ZFUlNJT05fTlVNCiBMREZMQUdTX0VYX0JFCitVVgorUFlURVNUCiBQUk9W RQogREJUT0VQVUIKIEZPUApAQCAtNzczLDYgKzc3NSw3IEBAIENGTEFHUwogQ0MKIGVuYWJsZV9p bmplY3Rpb25fcG9pbnRzCiBQR19URVNUX0VYVFJBCitlbmFibGVfcHl0ZXN0CiBlbmFibGVfdGFw X3Rlc3RzCiBlbmFibGVfZHRyYWNlCiBEVFJBQ0VGTEFHUwpAQCAtODUxLDYgKzg1NCw3IEBAIGVu YWJsZV9wcm9maWxpbmcKIGVuYWJsZV9jb3ZlcmFnZQogZW5hYmxlX2R0cmFjZQogZW5hYmxlX3Rh cF90ZXN0cworZW5hYmxlX3B5dGVzdAogZW5hYmxlX2luamVjdGlvbl9wb2ludHMKIHdpdGhfYmxv Y2tzaXplCiB3aXRoX3NlZ3NpemUKQEAgLTE1NTEsNyArMTU1NSwxMCBAQCBPcHRpb25hbCBGZWF0 dXJlczoKICAgLS1lbmFibGUtcHJvZmlsaW5nICAgICAgYnVpbGQgd2l0aCBwcm9maWxpbmcgZW5h YmxlZAogICAtLWVuYWJsZS1jb3ZlcmFnZSAgICAgICBidWlsZCB3aXRoIGNvdmVyYWdlIHRlc3Rp bmcgaW5zdHJ1bWVudGF0aW9uCiAgIC0tZW5hYmxlLWR0cmFjZSAgICAgICAgIGJ1aWxkIHdpdGgg RFRyYWNlIHN1cHBvcnQKLSAgLS1lbmFibGUtdGFwLXRlc3RzICAgICAgZW5hYmxlIFRBUCB0ZXN0 cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pCisgIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAg IGVuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZAorICAgICAg ICAgICAgICAgICAgICAgICAgICBJUEM6OlJ1bikKKyAgLS1lbmFibGUtcHl0ZXN0ICAgICAgICAg ZW5hYmxlIChQeXRob24tYmFzZWQpIHB5dGVzdCBzdWl0ZXMgKHJlcXVpcmVzCisgICAgICAgICAg ICAgICAgICAgICAgICAgIFB5dGhvbikKICAgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwogICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUgaW5qZWN0aW9uIHBvaW50cyAoZm9yIHRlc3Rp bmcpCiAgIC0tZW5hYmxlLWRlcGVuZCAgICAgICAgIHR1cm4gb24gYXV0b21hdGljIGRlcGVuZGVu Y3kgdHJhY2tpbmcKQEAgLTM2MzQsNyArMzY0MSw3IEBAIGZpCiAKIAogIwotIyBUQVAgdGVzdHMK KyMgVGVzdCBmcmFtZXdvcmtzCiAjCiAKIApAQCAtMzY2Miw2ICszNjY5LDMyIEBAIGZpCiAKIAog CisKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1weXRlc3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAi JHtlbmFibGVfcHl0ZXN0K3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVf cHl0ZXN0OworICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7 OworICAgIG5vKQorICAgICAgOgorICAgICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3Ig JD8gIm5vIGFyZ3VtZW50IGV4cGVjdGVkIGZvciAtLWVuYWJsZS1weXRlc3Qgb3B0aW9uIiAiJExJ TkVOTyIgNQorICAgICAgOzsKKyAgZXNhYworCitlbHNlCisgIGVuYWJsZV9weXRlc3Q9bm8KKwor ZmkKKworCisKKworCisKICMKICMgSW5qZWN0aW9uIHBvaW50cwogIwpAQCAtMTkzOTIsNiArMTk0 MjUsMTM1IEBAICRhc19lY2hvICIkbW9kdWxlc3RkZXJyIiA+JjY7IH0KICAgZmkKIGZpCiAKK2lm IHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBpZiB0ZXN0IC16ICIkUFlURVNU IjsgdGhlbgorICBmb3IgYWNfcHJvZyBpbiBweXRlc3QgcHkudGVzdAorZG8KKyAgIyBFeHRyYWN0 IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFt ZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8g IiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUK KyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19j dl9wYXRoX1BZVEVTVCs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIg PiY2CitlbHNlCisgIGNhc2UgJFBZVEVTVCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNf Y3ZfcGF0aF9QWVRFU1Q9IiRQWVRFU1QiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0 IHdpdGggYSBwYXRoLgorICA7OworICAqKQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhf U0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisg IHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcn ICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAi JGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1BZVEVT VD0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKwor ICA7OworZXNhYworZmkKK1BZVEVTVD0kYWNfY3ZfcGF0aF9QWVRFU1QKK2lmIHRlc3QgLW4gIiRQ WVRFU1QiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTog cmVzdWx0OiAkUFlURVNUIiA+JjUKKyRhc19lY2hvICIkUFlURVNUIiA+JjY7IH0KK2Vsc2UKKyAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK KyRhc19lY2hvICJubyIgPiY2OyB9CitmaQorCisKKyAgdGVzdCAtbiAiJFBZVEVTVCIgJiYgYnJl YWsKK2RvbmUKKworZWxzZQorICAjIFJlcG9ydCB0aGUgdmFsdWUgb2YgUFlURVNUIGluIGNvbmZp Z3VyZSdzIG91dHB1dCBpbiBhbGwgY2FzZXMuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFBZVEVTVCIgPiY1CiskYXNfZWNob19uICJjaGVj a2luZyBmb3IgUFlURVNULi4uICIgPiY2OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xp bmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlURVNUIiA+JjUKKyRhc19lY2hvICIkUFlURVNUIiA+ JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAteiAiJFBZVEVTVCI7IHRoZW4KKyAgICAjIElmIHB5dGVz dCBub3QgZm91bmQsIHRyeSBpbnN0YWxsaW5nIHdpdGggdXYKKyAgICBpZiB0ZXN0IC16ICIkVVYi OyB0aGVuCisgIGZvciBhY19wcm9nIGluIHV2CitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdv cmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4K K3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfVVYrOn0g ZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNl ICRVViBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9VVj0iJFVWIiAjIExl dCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAg YXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFU SAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9 LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBk bworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQi OyB0aGVuCisgICAgYWNfY3ZfcGF0aF9VVj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIK KyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGly LyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRv bmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK1VWPSRhY19jdl9wYXRoX1VW CitpZiB0ZXN0IC1uICIkVVYiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVu by0kTElORU5PfTogcmVzdWx0OiAkVVYiID4mNQorJGFzX2VjaG8gIiRVViIgPiY2OyB9CitlbHNl CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIg PiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIHRlc3QgLW4gIiRVViIgJiYgYnJl YWsKK2RvbmUKKworZWxzZQorICAjIFJlcG9ydCB0aGUgdmFsdWUgb2YgVVYgaW4gY29uZmlndXJl J3Mgb3V0cHV0IGluIGFsbCBjYXNlcy4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyBmb3IgVVYiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9y IFVWLi4uICIgPiY2OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5P fTogcmVzdWx0OiAkVVYiID4mNQorJGFzX2VjaG8gIiRVViIgPiY2OyB9CitmaQorCisgICAgaWYg dGVzdCAtbiAiJFVWIjsgdGhlbgorICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5v LSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHV2IGNhbiBpbnN0YWxsIHB5dGVzdCBkZXBlbmRl bmNpZXMiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB1diBjYW4gaW5zdGFsbCBw eXRlc3QgZGVwZW5kZW5jaWVzLi4uICIgPiY2OyB9CisgICAgICBpZiAiJFVWIiBwaXAgaW5zdGFs bCAiJHNyY2RpciIgPiY1IDI+JjE7IHRoZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7 IH0KKyAgICAgICAgUFlURVNUPSIkVVYgcnVuIHB5dGVzdCIKKyAgICAgIGVsc2UKKyAgICAgICAg eyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUK KyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90 IGZvdW5kIGFuZCB1diBmYWlsZWQgdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXMiICIkTElORU5PIiA1 CisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90IGZv dW5kIiAiJExJTkVOTyIgNQorICAgIGZpCisgIGZpCitmaQorCiAjIElmIGNvbXBpbGVyIHdpbGwg dGFrZSAtV2wsLS1hcy1uZWVkZWQgKG9yIHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMKICMgc3Bl bGxpbmdzIHRoZXJlb2YpIHRoZW4gYWRkIHRoYXQgdG8gTERGTEFHUy4gIFRoaXMgaXMgbXVjaCBl YXNpZXIgdGhhbgogIyB0cnlpbmcgdG8gZmlsdGVyIExJQlMgdG8gdGhlIG1pbmltdW0gZm9yIGVh Y2ggZXhlY3V0YWJsZS4KZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpp bmRleCA5ZWRmZmU0ODFhNi4uN2QxNTMwZjI0NmMgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor KysgYi9jb25maWd1cmUuYWMKQEAgLTIyNiwxMSArMjI2LDE2IEBAIEFDX1NVQlNUKERUUkFDRUZM QUdTKV0pCiBBQ19TVUJTVChlbmFibGVfZHRyYWNlKQogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0 IGZyYW1ld29ya3MKICMKIFBHQUNfQVJHX0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAg ICAgICAgICAgICBbZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4p XSkKKyAgICAgICAgICAgICAgW2VuYWJsZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJl cyBQZXJsIGFuZCBJUEM6OlJ1bildKQogQUNfU1VCU1QoZW5hYmxlX3RhcF90ZXN0cykKKworUEdB Q19BUkdfQk9PTChlbmFibGUsIHB5dGVzdCwgbm8sCisgICAgICAgICAgICAgIFtlbmFibGUgKFB5 dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcyAocmVxdWlyZXMgUHl0aG9uKV0pCitBQ19TVUJTVChl bmFibGVfcHl0ZXN0KQorCiBBQ19BUkdfVkFSKFBHX1RFU1RfRVhUUkEsCiAgICAgICAgICAgIFtl bmFibGUgc2VsZWN0ZWQgZXh0cmEgdGVzdHMgKG92ZXJyaWRkZW4gYXQgcnVudGltZSBieSBQR19U RVNUX0VYVFJBIGVudmlyb25tZW50IHZhcmlhYmxlKV0pCiAKQEAgLTI0NjEsNiArMjQ2NiwyMSBA QCBpZiB0ZXN0ICIkZW5hYmxlX3RhcF90ZXN0cyIgPSB5ZXM7IHRoZW4KICAgZmkKIGZpCiAKK2lm IHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9IHllczsgdGhlbgorICBQR0FDX1BBVEhfUFJPR1MoUFlU RVNULCBbcHl0ZXN0IHB5LnRlc3RdKQorICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICAg ICMgVHJ5IHB5dGhvbiAtbSBweXRlc3QgYXMgYSBmYWxsYmFjaworICAgIEFDX01TR19DSEVDS0lO Ryhbd2hldGhlciBweXRob24gLW0gcHl0ZXN0IHdvcmtzXSkKKyAgICBpZiAiJFBZVEhPTiIgLW0g cHl0ZXN0IC0tdmVyc2lvbiA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JjE7IHRoZW4KKyAgICAgIEFD X01TR19SRVNVTFQoW3llc10pCisgICAgICBQWVRFU1Q9IiRQWVRIT04gLW0gcHl0ZXN0IgorICAg IGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICAgIEFDX01TR19FUlJPUihbcHl0 ZXN0IG5vdCBmb3VuZF0pCisgICAgZmkKKyAgZmkKK2ZpCisKICMgSWYgY29tcGlsZXIgd2lsbCB0 YWtlIC1XbCwtLWFzLW5lZWRlZCAob3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYwogIyBzcGVs bGluZ3MgdGhlcmVvZikgdGhlbiBhZGQgdGhhdCB0byBMREZMQUdTLiAgVGhpcyBpcyBtdWNoIGVh c2llciB0aGFuCiAjIHRyeWluZyB0byBmaWx0ZXIgTElCUyB0byB0aGUgbWluaW11bSBmb3IgZWFj aCBleGVjdXRhYmxlLgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRl eCA3MGRjNjRjMzQ5YS4uOTIzMTc5ZTYyNWMgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBi L21lc29uLmJ1aWxkCkBAIC0xODI0LDYgKzE4MjQsNDcgQEAgZW5kaWYKIAogCiAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBMaWJyYXJ5OiBweXRlc3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitweXRlc3RfZW5hYmxlZCA9IGZhbHNlCitweXRl c3RfdmVyc2lvbiA9ICcnCitweXRlc3RfY21kID0gWydweXRlc3QnXSAgIyBkdW1teSwgb3Zlcndy aXR0ZW4gd2hlbiBweXRlc3QgaXMgZm91bmQKKyMgV2UgYWxzbyBjb25maWd1cmUgdGhlIHNhbWUg UFlUSE9OUEFUSCBpbiB0aGUgcHl0ZXN0IHNldHRpbmdzIGluCisjIHB5cHJvamVjdC50b21sLCBi dXQgcHl0ZXN0IHZlcnNpb25zIGJlbG93IDguNCBvbmx5IGFjdHVhbGx5IHVzZSB0aGF0CisjIHZh bHVlIGFmdGVyIHBsdWdpbiBsb2FkaW5nLiBPbiBsb3dlciB2ZXJzaW9ucyBweXRlc3Qgd2lsbCB0 aHJvdyBhbiBlcnJvciBldmVuCisjIHdoZW4ganVzdCBydW5uaW5nICdweXRlc3QgLS12ZXJzaW9u Jy4gU28gd2UgbmVlZCB0byBjb25maWd1cmUgaXQgaGVyZSB0b28uCisjIFRoaXMgd29uJ3QgaGVs cCBwZW9wbGUgbWFudWFsbHkgcnVubmluZyBweXRlc3Qgb3V0c2lkZSBvZiBtZXNvbi9tYWtlLCBi dXQgd2UKKyMgZXhwZWN0IHRob3NlIHRvIHVzZSBhIHJlY2VudCBlbm91Z2ggdmVyc2lvbiBvZiBw eXRlc3QgYW55d2F5IChhbmQgaWYgbm90IHRoZXkKKyMgY2FuIG1hbnVhbGx5IGNvbmZpZ3VyZSBQ WVRIT05QQVRIIHRvbykuCitweXRlc3RfZW52ID0geydQWVRIT05QQVRIJzogbWVzb24ucHJvamVj dF9zb3VyY2Vfcm9vdCgpIC8gJ3NyYycgLyAndGVzdCcgLyAncHl0ZXN0J30KKworcHl0ZXN0b3B0 ID0gZ2V0X29wdGlvbigncHl0ZXN0JykKK2lmIG5vdCBweXRlc3RvcHQuZGlzYWJsZWQoKQorICBw eXRlc3QgPSBmaW5kX3Byb2dyYW0oZ2V0X29wdGlvbignUFlURVNUJyksIG5hdGl2ZTogdHJ1ZSwg cmVxdWlyZWQ6IGZhbHNlKQorCisgIGlmIHB5dGVzdC5mb3VuZCgpCisgICAgcHl0ZXN0X2VuYWJs ZWQgPSB0cnVlCisgICAgcHl0ZXN0X3ZlcnNpb24gPSBydW5fY29tbWFuZChweXRlc3QsICctLXZl cnNpb24nLCBlbnY6IHB5dGVzdF9lbnYsIGNoZWNrOiBmYWxzZSkuc3Rkb3V0KCkuc3RyaXAoKS5z cGxpdCgnICcpWy0xXQorICAgIHB5dGVzdF9jbWQgPSBbcHl0ZXN0LmZ1bGxfcGF0aCgpXQorICBl bHNlCisgICAgIyBUcnkgcHl0aG9uIC1tIHB5dGVzdCBhcyBhIGZhbGxiYWNrCisgICAgcHl0ZXN0 X2NoZWNrID0gcnVuX2NvbW1hbmQocHl0aG9uLCAnLW0nLCAncHl0ZXN0JywgJy0tdmVyc2lvbics IGVudjogcHl0ZXN0X2VudiwgY2hlY2s6IGZhbHNlKQorICAgIGlmIHB5dGVzdF9jaGVjay5yZXR1 cm5jb2RlKCkgPT0gMAorICAgICAgcHl0ZXN0X2VuYWJsZWQgPSB0cnVlCisgICAgICBweXRlc3Rf dmVyc2lvbiA9IHB5dGVzdF9jaGVjay5zdGRvdXQoKS5zdHJpcCgpLnNwbGl0KCcgJylbLTFdCisg ICAgICBweXRlc3RfY21kID0gW3B5dGhvbi5mdWxsX3BhdGgoKSwgJy1tJywgJ3B5dGVzdCddCisg ICAgZW5kaWYKKyAgZW5kaWYKKworICBpZiBub3QgcHl0ZXN0X2VuYWJsZWQgYW5kIHB5dGVzdG9w dC5lbmFibGVkKCkKKyAgICBlcnJvcigncHl0ZXN0IG5vdCBmb3VuZCcpCisgIGVuZGlmCitlbmRp ZgorCisKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCiAjIExpYnJhcnk6IHpzdGQKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzk5OSw2ICs0MDQw LDY0IEBAIGZvcmVhY2ggdGVzdF9kaXIgOiB0ZXN0cwogICAgICAgICApCiAgICAgICBlbmRmb3Jl YWNoCiAgICAgICBpbnN0YWxsX3N1aXRlcyArPSB0ZXN0X2dyb3VwCisgICAgZWxpZiBraW5kID09 ICdweXRlc3QnCisgICAgICB0ZXN0d3JhcF9weXRlc3QgPSB0ZXN0d3JhcF9iYXNlCisgICAgICBp ZiBub3QgcHl0ZXN0X2VuYWJsZWQKKyAgICAgICAgdGVzdHdyYXBfcHl0ZXN0ICs9IFsnLS1za2lw JywgJ3B5dGVzdCBub3QgZW5hYmxlZCddCisgICAgICBlbmRpZgorCisgICAgICB0ZXN0X2NvbW1h bmQgPSBweXRlc3RfY21kCisKKyAgICAgIHRlc3RfY29tbWFuZCArPSBbCisgICAgICAgICctYycs IG1lc29uLnByb2plY3Rfc291cmNlX3Jvb3QoKSAvICdweXByb2plY3QudG9tbCcsCisgICAgICAg ICctLXZlcmJvc2UnLAorICAgICAgICAnLXAnLCAncGd0YXAnLCAgIyBlbmFibGUgb3VyIHRlc3Qg cmVwb3J0ZXIgcGx1Z2luCisgICAgICAgICctcmEnLCAgIyBzaG93IHNraXBwZWQgYW5kIHhmYWls ZWQgdGVzdHMgdG9vCisgICAgICBdCisKKyAgICAgICMgQWRkIHRlbXBvcmFyeSBpbnN0YWxsLCB0 aGUgYnVpbGQgZGlyZWN0b3J5IGZvciBub24taW5zdGFsbGVkIGJpbmFyaWVzIGFuZAorICAgICAg IyBhbHNvIHRlc3QvIGZvciBub24taW5zdGFsbGVkIHRlc3QgYmluYXJpZXMgYnVpbHQgc2VwYXJh dGVseS4KKyAgICAgIGVudiA9IHRlc3RfZW52CisgICAgICBlbnYucHJlcGVuZCgnUEFUSCcsIHRl bXBfaW5zdGFsbF9iaW5kaXIsIHRlc3RfZGlyWydiZCddLCB0ZXN0X2RpclsnYmQnXSAvICd0ZXN0 JykKKyAgICAgIHRlbXBfaW5zdGFsbF9kYXRhZGlyID0gJ0AwQEAxQCcuZm9ybWF0KHRlc3RfaW5z dGFsbF9kZXN0ZGlyLCBkaXJfcHJlZml4IC8gZGlyX2RhdGEpCisgICAgICBlbnYuc2V0KCdzaGFy ZV9jb250cmliX2RpcicsIHRlbXBfaW5zdGFsbF9kYXRhZGlyIC8gJ2NvbnRyaWInKQorICAgICAg ZW52LnByZXBlbmQoJ1BZVEhPTlBBVEgnLCBweXRlc3RfZW52WydQWVRIT05QQVRIJ10pCisKKyAg ICAgIGZvcmVhY2ggbmFtZSwgdmFsdWUgOiB0LmdldCgnZW52Jywge30pCisgICAgICAgIGVudi5z ZXQobmFtZSwgdmFsdWUpCisgICAgICBlbmRmb3JlYWNoCisKKyAgICAgIHRlc3RfZ3JvdXAgPSB0 ZXN0X2RpclsnbmFtZSddCisgICAgICB0ZXN0X2t3YXJncyA9IHsKKyAgICAgICAgJ3Byb3RvY29s JzogJ3RhcCcsCisgICAgICAgICdzdWl0ZSc6IHRlc3RfZ3JvdXAsCisgICAgICAgICd0aW1lb3V0 JzogMTAwMCwKKyAgICAgICAgJ2RlcGVuZHMnOiB0ZXN0X2RlcHMgKyB0LmdldCgnZGVwcycsIFtd KSwKKyAgICAgICAgJ2Vudic6IGVudiwKKyAgICAgIH0gKyB0LmdldCgndGVzdF9rd2FyZ3MnLCB7 fSkKKworICAgICAgZm9yZWFjaCBvbmV0ZXN0IDogdFsndGVzdHMnXQorICAgICAgICAjIE1ha2Ug dGVzdCBuYW1lcyBwcmV0dGllciwgcmVtb3ZlIHB5dC8gYW5kIC5weQorICAgICAgICBvbmV0ZXN0 X3AgPSBvbmV0ZXN0CisgICAgICAgIGlmIG9uZXRlc3RfcC5zdGFydHN3aXRoKCdweXQvJykKKyAg ICAgICAgICBvbmV0ZXN0X3AgPSBvbmV0ZXN0LnNwbGl0KCdweXQvJylbMV0KKyAgICAgICAgZW5k aWYKKyAgICAgICAgaWYgb25ldGVzdF9wLmVuZHN3aXRoKCcucHknKQorICAgICAgICAgIG9uZXRl c3RfcCA9IGZzLnN0ZW0ob25ldGVzdF9wKQorICAgICAgICBlbmRpZgorCisgICAgICAgIHRlc3Qo dGVzdF9kaXJbJ25hbWUnXSAvIG9uZXRlc3RfcCwKKyAgICAgICAgICBweXRob24sCisgICAgICAg ICAga3dhcmdzOiB0ZXN0X2t3YXJncywKKyAgICAgICAgICBhcmdzOiB0ZXN0d3JhcF9weXRlc3Qg KyBbCisgICAgICAgICAgICAnLS10ZXN0Z3JvdXAnLCB0ZXN0X2RpclsnbmFtZSddLAorICAgICAg ICAgICAgJy0tdGVzdG5hbWUnLCBvbmV0ZXN0X3AsCisgICAgICAgICAgICAnLS0nLCB0ZXN0X2Nv bW1hbmQsCisgICAgICAgICAgICB0ZXN0X2Rpclsnc2QnXSAvIG9uZXRlc3QsCisgICAgICAgICAg XSwKKyAgICAgICAgKQorICAgICAgZW5kZm9yZWFjaAorICAgICAgaW5zdGFsbF9zdWl0ZXMgKz0g dGVzdF9ncm91cAogICAgIGVsc2UKICAgICAgIGVycm9yKCd1bmtub3duIGtpbmQgQDBAIG9mIHRl c3QgaW4gQDFAJy5mb3JtYXQoa2luZCwgdGVzdF9kaXJbJ3NkJ10pKQogICAgIGVuZGlmCkBAIC00 MTcyLDYgKzQyNzEsNyBAQCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQo Ymlzb24uZnVsbF9wYXRoKCksIGJpc29uX3ZlcnNpb24pLAogICAgICdkdHJhY2UnOiBkdHJhY2Us CiAgICAgJ2ZsZXgnOiAnQDBAIEAxQCcuZm9ybWF0KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVy c2lvbiksCisgICAgJ3B5dGVzdCc6IHB5dGVzdF9lbmFibGVkID8gJyAnLmpvaW4ocHl0ZXN0X2Nt ZCkgKyAnICcgKyBweXRlc3RfdmVyc2lvbiA6IG5vdF9mb3VuZF9kZXAsCiAgIH0sCiAgIHNlY3Rp b246ICdQcm9ncmFtcycsCiApCmRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29u X29wdGlvbnMudHh0CmluZGV4IDZhNzkzZjNlNDc5Li5jYjQ4MjVjMzU3NSAxMDA2NDQKLS0tIGEv bWVzb25fb3B0aW9ucy50eHQKKysrIGIvbWVzb25fb3B0aW9ucy50eHQKQEAgLTQxLDcgKzQxLDEw IEBAIG9wdGlvbignY2Fzc2VydCcsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IGZhbHNlLAogICBk ZXNjcmlwdGlvbjogJ0VuYWJsZSBhc3NlcnRpb24gY2hlY2tzIChmb3IgZGVidWdnaW5nKScpCiAK IG9wdGlvbigndGFwX3Rlc3RzJywgdHlwZTogJ2ZlYXR1cmUnLCB2YWx1ZTogJ2F1dG8nLAotICBk ZXNjcmlwdGlvbjogJ0VuYWJsZSBUQVAgdGVzdHMnKQorICBkZXNjcmlwdGlvbjogJ0VuYWJsZSAo UGVybC1iYXNlZCkgVEFQIHRlc3RzJykKKworb3B0aW9uKCdweXRlc3QnLCB0eXBlOiAnZmVhdHVy ZScsIHZhbHVlOiAnYXV0bycsCisgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIChQeXRob24tYmFzZWQp IHB5dGVzdCBzdWl0ZXMnKQogCiBvcHRpb24oJ2luamVjdGlvbl9wb2ludHMnLCB0eXBlOiAnYm9v bGVhbicsIHZhbHVlOiBmYWxzZSwKICAgZGVzY3JpcHRpb246ICdFbmFibGUgaW5qZWN0aW9uIHBv aW50cycpCkBAIC0xOTUsNiArMTk4LDkgQEAgb3B0aW9uKCdQRVJMJywgdHlwZTogJ3N0cmluZycs IHZhbHVlOiAncGVybCcsCiBvcHRpb24oJ1BST1ZFJywgdHlwZTogJ3N0cmluZycsIHZhbHVlOiAn cHJvdmUnLAogICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHJvdmUgYmluYXJ5JykKIAorb3B0aW9u KCdQWVRFU1QnLCB0eXBlOiAnYXJyYXknLCB2YWx1ZTogWydweXRlc3QnLCAncHkudGVzdCddLAor ICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHl0ZXN0IGJpbmFyeScpCisKIG9wdGlvbignUFlUSE9O JywgdHlwZTogJ2FycmF5JywgdmFsdWU6IFsncHl0aG9uMycsICdweXRob24nXSwKICAgZGVzY3Jp cHRpb246ICdQYXRoIHRvIHB5dGhvbiBiaW5hcnknKQogCmRpZmYgLS1naXQgYS9weXByb2plY3Qu dG9tbCBiL3B5cHJvamVjdC50b21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi42MGFiYjRkMDY1NQotLS0gL2Rldi9udWxsCisrKyBiL3B5cHJvamVjdC50b21sCkBAIC0w LDAgKzEsMjEgQEAKK1twcm9qZWN0XQorbmFtZSA9ICJwb3N0Z3Jlc3FsLWhhY2tlcnMtdG9vbGlu ZyIKK3ZlcnNpb24gPSAiMC4xLjAiCitkZXNjcmlwdGlvbiA9ICJQeXRlc3QgaW5mcmFzdHJ1Y3R1 cmUgZm9yIFBvc3RncmVTUUwiCityZXF1aXJlcy1weXRob24gPSAiPj0zLjYiCitkZXBlbmRlbmNp ZXMgPSBbCisgICAgIyBweXRlc3QgNy4wIHdhcyB0aGUgbGFzdCB2ZXJzaW9uIHdoaWNoIHN1cHBv cnRlZCBQeXRob24gMy42LCBidXQgdGhlIEJTRHMKKyAgICAjIGhhdmUgc3RhcnRlZCBwdXR0aW5n IDgueCBpbnRvIHBvcnRzLCBzbyB3ZSBzdXBwb3J0IGJvdGguIChweXRlc3QgOCBjYW4gYmUKKyAg ICAjIHVzZWQgdGhyb3VnaG91dCBvbmNlIHdlIGRyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDMuNy4p CisgICAgInB5dGVzdCA+PSA3LjAsIDwgMTAiLAorCisgICAgIyBBbnkgb3RoZXIgZGVwZW5kZW5j aWVzIGFyZSBlZmZlY3RpdmVseSBvcHRpb25hbCAoYWRkZWQgYmVsb3cpLiBXZSBpbXBvcnQKKyAg ICAjIHRoZXNlIGxpYnJhcmllcyB1c2luZyBweXRlc3QuaW1wb3J0b3Jza2lwKCkuIFNvIHRlc3Rz IHdpbGwgYmUgc2tpcHBlZCBpZgorICAgICMgdGhleSBhcmUgbm90IGF2YWlsYWJsZS4KK10KKwor W3Rvb2wucHl0ZXN0LmluaV9vcHRpb25zXQorbWludmVyc2lvbiA9ICI3LjAiCisKKyMgQ29tbW9u IHRlc3QgY29kZSBjYW4gYmUgZm91bmQgaGVyZS4KK3B5dGhvbnBhdGggPSBbInNyYy90ZXN0L3B5 dGVzdCJdCmRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluIGIvc3JjL01ha2VmaWxl Lmdsb2JhbC5pbgppbmRleCA5NDdhMmQ3OWUyOS4uNTcyYzI0YzNmNTUgMTAwNjQ0Ci0tLSBhL3Ny Yy9NYWtlZmlsZS5nbG9iYWwuaW4KKysrIGIvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgpAQCAtMjEx LDYgKzIxMSw3IEBAIGVuYWJsZV9kdHJhY2UJPSBAZW5hYmxlX2R0cmFjZUAKIGVuYWJsZV9jb3Zl cmFnZQk9IEBlbmFibGVfY292ZXJhZ2VACiBlbmFibGVfaW5qZWN0aW9uX3BvaW50cyA9IEBlbmFi bGVfaW5qZWN0aW9uX3BvaW50c0AKIGVuYWJsZV90YXBfdGVzdHMJPSBAZW5hYmxlX3RhcF90ZXN0 c0AKK2VuYWJsZV9weXRlc3QJPSBAZW5hYmxlX3B5dGVzdEAKIAogcHl0aG9uX2luY2x1ZGVzcGVj CT0gQHB5dGhvbl9pbmNsdWRlc3BlY0AKIHB5dGhvbl9saWJkaXIJCT0gQHB5dGhvbl9saWJkaXJA CkBAIC0zNTYsNiArMzU3LDcgQEAgTVNHRk1UICA9IEBNU0dGTVRACiBNU0dGTVRfRkxBR1MgPSBA TVNHRk1UX0ZMQUdTQAogTVNHTUVSR0UgPSBATVNHTUVSR0VACiBPUEVOU1NMCT0gQE9QRU5TU0xA CitQWVRFU1QJPSBAUFlURVNUQAogUFlUSE9OCT0gQFBZVEhPTkAKIFRBUgk9IEBUQVJACiBYR0VU VEVYVCA9IEBYR0VUVEVYVEAKQEAgLTUxMCw2ICs1MTIsMzMgQEAgcHJvdmVfaW5zdGFsbGNoZWNr ID0gQGVjaG8gIlRBUCB0ZXN0cyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUKIHByb3ZlX2NoZWNrID0gJChwcm92ZV9pbnN0YWxsY2hlY2spCiBlbmRpZgogCitpZmVx ICgkKGVuYWJsZV9weXRlc3QpLHllcykKKworcHl0ZXN0X2luc3RhbGxjaGVjayA9IEBlY2hvICJJ bnN0YWxsY2hlY2sgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIHB5dGVzdC4iCisKKyMg V2UgYWxzbyBjb25maWd1cmUgdGhlIHNhbWUgUFlUSE9OUEFUSCBpbiB0aGUgcHl0ZXN0IHNldHRp bmdzIGluCisjIHB5cHJvamVjdC50b21sLCBidXQgcHl0ZXN0IHZlcnNpb25zIGJlbG93IDguNCBv bmx5IGFjdHVhbGx5IHVzZSB0aGF0IHZhbHVlCisjIGFmdGVyIHBsdWdpbiBsb2FkaW5nLiBTbyB3 ZSBuZWVkIHRvIGNvbmZpZ3VyZSBpdCBoZXJlIHRvby4gVGhpcyB3b24ndCBoZWxwCisjIHBlb3Bs ZSBtYW51YWxseSBydW5uaW5nIHB5dGVzdCBvdXRzaWRlIG9mIG1lc29uL21ha2UsIGJ1dCB3ZSBl eHBlY3QgdGhvc2UgdG8KKyMgdXNlIGEgcmVjZW50IGVub3VnaCB2ZXJzaW9uIG9mIHB5dGVzdCBh bnl3YXkgKGFuZCBpZiBub3QgdGhleSBjYW4gbWFudWFsbHkKKyMgY29uZmlndXJlIFBZVEhPTlBB VEggdG9vKS4KK2RlZmluZSBweXRlc3RfY2hlY2sKK2VjaG8gIiMgKysrIHB5dGVzdCBjaGVjayBp biAkKHN1YmRpcikgKysrIiAmJiBcCitybSAtcmYgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwK KyQoTUtESVJfUCkgJyQoQ1VSRElSKScvdG1wX2NoZWNrICYmIFwKK2NkICQoc3JjZGlyKSAmJiBc CisgICBURVNUTE9HRElSPSckKENVUkRJUikvdG1wX2NoZWNrL2xvZycgXAorICAgVEVTVERBVEFE SVI9JyQoQ1VSRElSKS90bXBfY2hlY2snIFwKKyAgIFBZVEhPTlBBVEg9JyQoYWJzX3RvcF9zcmNk aXIpL3NyYy90ZXN0L3B5dGVzdDokJFBZVEhPTlBBVEgnIFwKKyAgICQod2l0aF90ZW1wX2luc3Rh bGwpIFwKKyAgICQoUFlURVNUKSAtYyAnJChhYnNfdG9wX3NyY2RpcikvcHlwcm9qZWN0LnRvbWwn IC0tdmVyYm9zZSAtcmEgLi9weXQvCitlbmRlZgorCitlbHNlCitweXRlc3RfaW5zdGFsbGNoZWNr ID0gQGVjaG8gInB5dGVzdCBpcyBub3QgZW5hYmxlZC4gVHJ5IGNvbmZpZ3VyaW5nIHdpdGggLS1l bmFibGUtcHl0ZXN0IgorcHl0ZXN0X2NoZWNrID0gJChweXRlc3RfaW5zdGFsbGNoZWNrKQorZW5k aWYKKwogIyBJbnN0YWxsYXRpb24uCiAKIGluc3RhbGxfYmluID0gQGluc3RhbGxfYmluQApkaWZm IC0tZ2l0IGEvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCBiL3NyYy9tYWtlZmlsZXMvbWVzb24u YnVpbGQKaW5kZXggNzdmN2E3MjljYzIuLjY4MTUxNzhiMzVlIDEwMDY0NAotLS0gYS9zcmMvbWFr ZWZpbGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKQEAgLTU2 LDYgKzU2LDggQEAgcGd4c19rdiA9IHsKICAgJ2VuYWJsZV9ubHMnOiBsaWJpbnRsLmZvdW5kKCkg PyAneWVzJyA6ICdubycsCiAgICdlbmFibGVfaW5qZWN0aW9uX3BvaW50cyc6IGdldF9vcHRpb24o J2luamVjdGlvbl9wb2ludHMnKSA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV90YXBfdGVzdHMn OiB0YXBfdGVzdHNfZW5hYmxlZCA/ICd5ZXMnIDogJ25vJywKKyAgJ2VuYWJsZV9weXRlc3QnOiBw eXRlc3RfZW5hYmxlZCA/ICd5ZXMnIDogJ25vJywKKyAgJ1BZVEVTVCc6IHB5dGVzdF9lbmFibGVk ID8gJyAnLmpvaW4ocHl0ZXN0X2NtZCkgOiAnJywKICAgJ2VuYWJsZV9kZWJ1Zyc6IGdldF9vcHRp b24oJ2RlYnVnJykgPyAneWVzJyA6ICdubycsCiAgICdlbmFibGVfY292ZXJhZ2UnOiAnbm8nLAog ICAnZW5hYmxlX2R0cmFjZSc6IGR0cmFjZS5mb3VuZCgpID8gJ3llcycgOiAnbm8nLApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMvdGVzdC9NYWtlZmlsZQppbmRleCAzZWIwYTA2 YWJiNC4uMGJlOTc3MWQ3MWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L01ha2VmaWxlCisrKyBiL3Ny Yy90ZXN0L01ha2VmaWxlCkBAIC0xOCw2ICsxOCw3IEBAIFNVQkRJUlMgPSBcCiAJbW9kdWxlcyBc CiAJcGVybCBcCiAJcG9zdG1hc3RlciBcCisJcHl0ZXN0IFwKIAlyZWNvdmVyeSBcCiAJcmVncmVz cyBcCiAJc3Vic2NyaXB0aW9uCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tZXNvbi5idWlsZCBiL3Ny Yy90ZXN0L21lc29uLmJ1aWxkCmluZGV4IGNkNDVjYmY1N2ZiLi4wOTE3NWYwZWFlYSAxMDA2NDQK LS0tIGEvc3JjL3Rlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvbWVzb24uYnVpbGQKQEAg LTUsNiArNSw3IEBAIHN1YmRpcignaXNvbGF0aW9uJykKIAogc3ViZGlyKCdhdXRoZW50aWNhdGlv bicpCiBzdWJkaXIoJ3Bvc3RtYXN0ZXInKQorc3ViZGlyKCdweXRlc3QnKQogc3ViZGlyKCdyZWNv dmVyeScpCiBzdWJkaXIoJ3N1YnNjcmlwdGlvbicpCiBzdWJkaXIoJ21vZHVsZXMnKQpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxlIGIvc3JjL3Rlc3QvcHl0ZXN0L01ha2VmaWxl Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYmRjYTk2Y2NiZQotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9NYWtlZmlsZQpAQCAtMCwwICsxLDIwIEBA CisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBNYWtlZmlsZSBmb3IgcHl0ZXN0CisjCisjIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVu dCBHcm91cAorIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorIworIyBzcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKKyMK KyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisKK3N1YmRpciA9IHNyYy90ZXN0L3B5dGVzdAordG9wX2J1aWxk ZGlyID0gLi4vLi4vLi4KK2luY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9i YWwKKworY2hlY2s6CisJJChweXRlc3RfY2hlY2spCisKK2NsZWFuIGRpc3RjbGVhbiBtYWludGFp bmVyLWNsZWFuOgorCXJtIC1yZiB0bXBfY2hlY2sKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVz dC9SRUFETUUgYi9zcmMvdGVzdC9weXRlc3QvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi4xMzMzZWQ3N2I3ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3B5dGVzdC9SRUFETUUKQEAgLTAsMCArMSBAQAorVE9ETwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cHl0ZXN0L21lc29uLmJ1aWxkIGIvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iMWY2MDYxYjMwNwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZApAQCAtMCwwICsxLDE1IEBACisjIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor aWYgbm90IHB5dGVzdF9lbmFibGVkCisgIHN1YmRpcl9kb25lKCkKK2VuZGlmCisKK3Rlc3RzICs9 IHsKKyAgJ25hbWUnOiAncHl0ZXN0JywKKyAgJ3NkJzogbWVzb24uY3VycmVudF9zb3VyY2VfZGly KCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCisgICdweXRlc3QnOiB7Cisg ICAgJ3Rlc3RzJzogWworICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRl c3QvcGd0YXAucHkgYi9zcmMvdGVzdC9weXRlc3QvcGd0YXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhZTE2YjYyNGQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj L3Rlc3QvcHl0ZXN0L3BndGFwLnB5CkBAIC0wLDAgKzEsMTk3IEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IG9zCitp bXBvcnQgc3lzCisKK2ltcG9ydCBweXRlc3QKKworIworIyBIZWxwZXJzCisjCisKKworY2xhc3Mg VEFQOgorICAgICIiIgorICAgIEEgYmFzaWMgQVBJIGZvciByZXBvcnRpbmcgdmlhIHRoZSBUQVAg MTIgcHJvdG9jb2wuCisKKyAgICBodHRwczovL3Rlc3Rhbnl0aGluZy5vcmcvdGFwLXNwZWNpZmlj YXRpb24uaHRtbAorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBz ZWxmLmNvdW50ID0gMAorCisgICAgZGVmIGV4cGVjdChzZWxmLCBudW06IGludCk6CisgICAgICAg IHNlbGYucHJpbnQoZiIxLi57bnVtfSIpCisKKyAgICBkZWYgcHJpbnQoc2VsZiwgKmFyZ3MpOgor ICAgICAgICBwcmludCgqYXJncywgZmlsZT1zeXMuX19zdGRvdXRfXykKKworICAgIGRlZiBvayhz ZWxmLCBuYW1lOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5w cmludCgib2siLCBzZWxmLmNvdW50LCAiLSIsIG5hbWUpCisKKyAgICBkZWYgc2tpcChzZWxmLCBu YW1lOiBzdHIsIHJlYXNvbjogc3RyKToKKyAgICAgICAgc2VsZi5jb3VudCArPSAxCisgICAgICAg IHNlbGYucHJpbnQoIm9rIiwgc2VsZi5jb3VudCwgIi0iLCBuYW1lLCAiIyBza2lwIiwgcmVhc29u KQorCisgICAgZGVmIGZhaWwoc2VsZiwgbmFtZTogc3RyLCBkZXRhaWxzOiBzdHIpOgorICAgICAg ICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5wcmludCgibm90IG9rIiwgc2VsZi5jb3Vu dCwgIi0iLCBuYW1lKQorCisgICAgICAgICMgbXRlc3QgaGFzIHNvbWUgb2RkIGJlaGF2aW9yIGFy b3VuZCBUQVAgdGVzdHMgd2hlcmUgaXQgd29uJ3QgcHJpbnQKKyAgICAgICAgIyBkaWFnbm9zdGlj cyBvbiBmYWlsdXJlIGlmIHRoZXkncmUgcGFydCBvZiB0aGUgc3Rkb3V0IHN0cmVhbSwgc28gd2UK KyAgICAgICAgIyBtaWdodCBhcyB3ZWxsIGp1c3QgZHVtcCB0aGUgZGV0YWlscyBkaXJlY3RseSB0 byBzdGRlcnIgaW5zdGVhZC4KKyAgICAgICAgcHJpbnQoZGV0YWlscywgZmlsZT1zeXMuX19zdGRl cnJfXykKKworCit0YXAgPSBUQVAoKQorCisKK2NsYXNzIFRlc3ROb3RlczoKKyAgICAiIiIKKyAg ICBBbm5vdGF0aW9ucyBmb3IgYSBzaW5nbGUgdGVzdC4gVGhlIGV4aXN0aW5nIHB5dGVzdCBob29r cyBrZWVwIGludGVyZXN0aW5nCisgICAgaW5mb3JtYXRpb24gc29tZXdoYXQgc2VwYXJhdGVkIGFj cm9zcyB0aGUgZGlmZmVyZW50IHN0YWdlcworICAgIChzZXR1cC90ZXN0L3RlYXJkb3duKSwgc28g dGhpcyBjbGFzcyBpcyB1c2VkIHRvIGNvcnJlbGF0ZSB0aGVtLgorICAgICIiIgorCisgICAgc2tp cHBlZCA9IEZhbHNlCisgICAgc2tpcF9yZWFzb24gPSBOb25lCisKKyAgICBmYWlsZWQgPSBGYWxz ZQorICAgIGRldGFpbHMgPSAiIgorCisKKyMgUmVnaXN0ZXIgYSBjdXN0b20ga2V5IGluIHRoZSBz dGFzaCBkaWN0aW9uYXJ5IGZvciBrZWVwaW5nIG91ciBUZXN0Tm90ZXMuCitub3Rlc19rZXkgPSBw eXRlc3QuU3Rhc2hLZXlbVGVzdE5vdGVzXSgpCisKKworIworIyBIb29rIEltcGxlbWVudGF0aW9u cworIworCisKK0BweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKK2RlZiBweXRlc3RfY29u ZmlndXJlKGNvbmZpZyk6CisgICAgIiIiCisgICAgSGlqYWNrcyB0aGUgc3RhbmRhcmQgc3RyZWFt cyBhcyBzb29uIGFzIHBvc3NpYmxlIGR1cmluZyBweXRlc3Qgc3RhcnR1cC4gVGhlCisgICAgcHl0 ZXN0LWZvcm1hdHRlZCBvdXRwdXQgZ2V0cyBsb2dnZWQgdG8gZmlsZSBpbnN0ZWFkLCBhbmQgd2Un bGwgdXNlIHRoZQorICAgIG9yaWdpbmFsIHN5cy5fX3N0ZG91dF9fL19fc3RkZXJyX18gc3RyZWFt cyBmb3IgdGhlIFRBUCBwcm90b2NvbC4KKyAgICAiIiIKKyAgICBsb2dkaXIgPSBvcy5nZXRlbnYo IlRFU1RMT0dESVIiKQorICAgIGlmIG5vdCBsb2dkaXI6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVF cnJvcigicGd0YXAgcmVxdWlyZXMgdGhlIFRFU1RMT0dESVIgZW52dmFyIHRvIGJlIHNldCIpCisK KyAgICBvcy5tYWtlZGlycyhsb2dkaXIpCisgICAgbG9ncGF0aCA9IG9zLnBhdGguam9pbihsb2dk aXIsICJweXRlc3QubG9nIikKKyAgICBzeXMuc3Rkb3V0ID0gc3lzLnN0ZGVyciA9IG9wZW4obG9n cGF0aCwgImEiLCBidWZmZXJpbmc9MSkKKworCitAcHl0ZXN0Lmhvb2tpbXBsKHRyeWxhc3Q9VHJ1 ZSkKK2RlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uLCBleGl0c3RhdHVzKToKKyAgICAi IiIKKyAgICBTdXBwcmVzc2VzIG5vbnplcm8gZXhpdCBjb2RlcyBkdWUgdG8gZmFpbGVkIHRlc3Rz LiAoSW4gdGhhdCBjYXNlLCB3ZSB3YW50CisgICAgTWVzb24gdG8gcmVwb3J0IGEgZmFpbHVyZSBj b3VudCwgbm90IGEgZ2VuZXJpYyBFUlJPUi4pCisgICAgIiIiCisgICAgaWYgZXhpdHN0YXR1cyA9 PSBweXRlc3QuRXhpdENvZGUuVEVTVFNfRkFJTEVEOgorICAgICAgICBzZXNzaW9uLmV4aXRzdGF0 dXMgPSBweXRlc3QuRXhpdENvZGUuT0sKKworCitAcHl0ZXN0Lmhvb2tpbXBsCitkZWYgcHl0ZXN0 X2NvbGxlY3RyZXBvcnQocmVwb3J0KToKKyAgICAjIEluY2x1ZGUgY29sbGVjdGlvbiBmYWlsdXJl cyBkaXJlY3RseSBpbiBNZXNvbiBlcnJvciBvdXRwdXQuCisgICAgaWYgcmVwb3J0LmZhaWxlZDoK KyAgICAgICAgcHJpbnQocmVwb3J0LmxvbmdyZXBydGV4dCwgZmlsZT1zeXMuX19zdGRlcnJfXykK KworCitAcHl0ZXN0Lmhvb2tpbXBsCitkZWYgcHl0ZXN0X2ludGVybmFsZXJyb3IoZXhjcmVwciwg ZXhjaW5mbyk6CisgICAgIyBJbmNsdWRlIGludGVybmFsIGVycm9ycyBkaXJlY3RseSBpbiBNZXNv biBlcnJvciBvdXRwdXQuCisgICAgcHJpbnQoZXhjcmVwciwgZmlsZT1zeXMuX19zdGRlcnJfXykK KworCisjCisjIEhvb2sgV3JhcHBlcnMKKyMKKyMgSW4gcHl0ZXN0IHBhcmxhbmNlLCBhICJ3cmFw cGVyIiBmb3IgYSBob29rIGNhbiBpbnNwZWN0IGFuZCBvcHRpb25hbGx5IG1vZGlmeQorIyBleGlz dGluZyBob29rcycgYmVoYXZpb3IsIGJ1dCBpdCBkb2VzIG5vdCByZXBsYWNlIHRoZSBob29rIGNo YWluLiBUaGlzIGlzIGRvbmUKKyMgdGhyb3VnaCBhIGdlbmVyYXRvci1zdHlsZSBBUEkgd2hpY2gg Y2hhaW5zIHRoZSBob29rcyB0b2dldGhlciAoc2VlIHRoZSB1c2Ugb2YKKyMgYHlpZWxkYCkuCisj CisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5dGVzdF9jb2xs ZWN0aW9uKHNlc3Npb24pOgorICAgICIiIlJlcG9ydHMgdGhlIG51bWJlciBvZiBnYXRoZXJlZCB0 ZXN0cyBhZnRlciBjb2xsZWN0aW9uIGlzIGZpbmlzaGVkLiIiIgorICAgIHJlcyA9IHlpZWxkCisg ICAgdGFwLmV4cGVjdChzZXNzaW9uLnRlc3RzY29sbGVjdGVkKQorICAgIHJldHVybiByZXMKKwor CitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3J1bnRlc3Rf bWFrZXJlcG9ydChpdGVtLCBjYWxsKToKKyAgICAiIiIKKyAgICBBbm5vdGF0ZXMgYSB0ZXN0IGl0 ZW0gd2l0aCBvdXIgVGVzdE5vdGVzIGFuZCBncmFicyByZWxldmFudCBpbmZvcm1hdGlvbiBmb3IK KyAgICByZXBvcnRpbmcuCisKKyAgICBUaGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBwZXIg dGVzdCwgc28gaXQncyBub3QgY29ycmVjdCB0byBwcmludCB0aGUgVEFQCisgICAgcmVzdWx0IGhl cmUuIChBIHRlc3QgYW5kIGl0cyB0ZWFyZG93biBzdGFnZSBjYW4gYm90aCBmYWlsLCBhbmQgd2Ug d2FudCB0bworICAgIHNlZSB0aGUgZGV0YWlscyBmb3IgYm90aC4pIFdlIGluc3RlYWQgY29tYmlu ZSBhbGwgdGhlIGluZm9ybWF0aW9uIGZvciB1c2UgYnkKKyAgICBvdXIgcHl0ZXN0X3J1bnRlc3Rf cHJvdG9jb2wgd3JhcHBlciBsYXRlciBvbi4KKyAgICAiIiIKKyAgICByZXMgPSB5aWVsZAorCisg ICAgaWYgbm90ZXNfa2V5IG5vdCBpbiBpdGVtLnN0YXNoOgorICAgICAgICBpdGVtLnN0YXNoW25v dGVzX2tleV0gPSBUZXN0Tm90ZXMoKQorICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19rZXld CisKKyAgICByZXBvcnQgPSByZXMuZ2V0X3Jlc3VsdCgpCisgICAgaWYgcmVwb3J0LnBhc3NlZDoK KyAgICAgICAgcGFzcyAgIyBubyBhbm5vdGF0aW9uIG5lZWRlZAorCisgICAgZWxpZiByZXBvcnQu c2tpcHBlZDoKKyAgICAgICAgbm90ZXMuc2tpcHBlZCA9IFRydWUKKyAgICAgICAgXywgXywgbm90 ZXMuc2tpcF9yZWFzb24gPSByZXBvcnQubG9uZ3JlcHIKKworICAgIGVsaWYgcmVwb3J0LmZhaWxl ZDoKKyAgICAgICAgbm90ZXMuZmFpbGVkID0gVHJ1ZQorCisgICAgICAgIGlmIG5vdCBub3Rlcy5k ZXRhaWxzOgorICAgICAgICAgICAgbm90ZXMuZGV0YWlscyArPSAiezpfXjcyfVxuXG4iLmZvcm1h dChmIiB7cmVwb3J0LmhlYWRfbGluZX0gIikKKworICAgICAgICBpZiByZXBvcnQud2hlbiBpbiAo InNldHVwIiwgInRlYXJkb3duIik6CisgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJcbns6 X143Mn1cblxuIi5mb3JtYXQoCisgICAgICAgICAgICAgICAgZiIgRXJyb3IgZHVyaW5nIHtyZXBv cnQud2hlbn0gb2Yge3JlcG9ydC5oZWFkX2xpbmV9ICIKKyAgICAgICAgICAgICkKKworICAgICAg ICBub3Rlcy5kZXRhaWxzICs9IHJlcG9ydC5sb25ncmVwcnRleHQgKyAiXG4iCisKKyAgICAgICAg IyBJbmNsdWRlIGNhcHR1cmVkIHN0ZG91dC9zdGRlcnIvbG9nIGluIGZhaWx1cmUgb3V0cHV0Cisg ICAgICAgIGZvciBzZWN0aW9uX25hbWUsIHNlY3Rpb25fY29udGVudCBpbiByZXBvcnQuc2VjdGlv bnM6CisgICAgICAgICAgICBpZiBzZWN0aW9uX2NvbnRlbnQuc3RyaXAoKToKKyAgICAgICAgICAg ICAgICBub3Rlcy5kZXRhaWxzICs9ICJcbns6LV43Mn1cbiIuZm9ybWF0KGYiIHtzZWN0aW9uX25h bWV9ICIpCisgICAgICAgICAgICAgICAgbm90ZXMuZGV0YWlscyArPSBzZWN0aW9uX2NvbnRlbnQg KyAiXG4iCisKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInB5dGVzdF9y dW50ZXN0X21ha2VyZXBvcnQgcmVjZWl2ZWQgdW5rbm93biB0ZXN0IHN0YXR1cyIpCisKKyAgICBy ZXR1cm4gcmVzCisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQorZGVmIHB5 dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5leHRpdGVtKToKKyAgICAiIiIKKyAgICBSZXBv cnRzIHRoZSBUQVAgcmVzdWx0IGZvciB0aGlzIHRlc3QgaXRlbSB1c2luZyBvdXIgZ2F0aGVyZWQg VGVzdE5vdGVzLgorICAgICIiIgorICAgIHJlcyA9IHlpZWxkCisKKyAgICBhc3NlcnQgbm90ZXNf a2V5IGluIGl0ZW0uc3Rhc2gsICJwZ3RhcCBkaWRuJ3QgYW5ub3RhdGUgYSB0ZXN0IGl0ZW0/Igor ICAgIG5vdGVzID0gaXRlbS5zdGFzaFtub3Rlc19rZXldCisKKyAgICBpZiBub3Rlcy5mYWlsZWQ6 CisgICAgICAgIHRhcC5mYWlsKGl0ZW0ubm9kZWlkLCBub3Rlcy5kZXRhaWxzKQorICAgIGVsaWYg bm90ZXMuc2tpcHBlZDoKKyAgICAgICAgdGFwLnNraXAoaXRlbS5ub2RlaWQsIG5vdGVzLnNraXBf cmVhc29uKQorICAgIGVsc2U6CisgICAgICAgIHRhcC5vayhpdGVtLm5vZGVpZCkKKworICAgIHJl dHVybiByZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy90ZXN0d3JhcCBiL3NyYy90b29scy90ZXN0 d3JhcAppbmRleCBlOTEyOTZlY2QxNS4uMzQ2Zjg2YjhlYTMgMTAwNzU1Ci0tLSBhL3NyYy90b29s cy90ZXN0d3JhcAorKysgYi9zcmMvdG9vbHMvdGVzdHdyYXAKQEAgLTQyLDcgKzQyLDExIEBAIG9w ZW4ob3MucGF0aC5qb2luKHRlc3RkaXIsICd0ZXN0LnN0YXJ0JyksICd4JykKIAogZW52X2RpY3Qg PSB7Kipvcy5lbnZpcm9uLAogICAgICAgICAgICAgJ1RFU1REQVRBRElSJzogb3MucGF0aC5qb2lu KHRlc3RkaXIsICdkYXRhJyksCi0gICAgICAgICAgICAnVEVTVExPR0RJUic6IG9zLnBhdGguam9p bih0ZXN0ZGlyLCAnbG9nJyl9CisgICAgICAgICAgICAnVEVTVExPR0RJUic6IG9zLnBhdGguam9p bih0ZXN0ZGlyLCAnbG9nJyksCisgICAgICAgICAgICAjIFByZXZlbnQgZW1pdHRpbmcgdGVybWlu YWwgY2FwYWJpbGl0eSBzZXF1ZW5jZXMgdGhhdCBwb2xsdXRlIHRoZQorICAgICAgICAgICAgIyBU QVAgb3V0cHV0IHN0cmVhbSAoaS5lLlwwMzNbPzEwMzRoKS4gVGhpcyBoYXBwZW5zIG9uIE9wZW5C U0Qgd2l0aAorICAgICAgICAgICAgIyBweXRlc3QgZm9yIHVua25vd24gcmVhc29ucy4KKyAgICAg ICAgICAgICdURVJNJzogJyd9CiAKIAogIyBUaGUgY29uZmlndXJhdGlvbiB0aW1lIHZhbHVlIG9m IFBHX1RFU1RfRVhUUkEgaXMgc3VwcGxpZWQgdmlhIGFyZ3VtZW50CgpiYXNlLWNvbW1pdDogYWU1 ODE4OWE0ZDUyM2YwMTU2ZWJlMzBmNDUzNDE4MDU1NTY2OWU4OAotLSAKMi41My4wCgo= --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0002-Add-pytest-infrastructure-to-interact-with-Postg.patch RnJvbSA4NTA1ZjQ1ZDExODUzODM5MzBiMWVmMjU0Y2EwOTFkYjViZDVjNGJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDE2IERlYyAyMDI1IDA5OjI1OjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTMgMi81XSBBZGQgcHl0ZXN0IGluZnJhc3RydWN0dXJlIHRvIGludGVyYWN0IHdpdGggUG9zdGdy ZVNRTAogc2VydmVycwoKVGhpcyBhZGRzIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIHB5dGVzdCBpbmZy YXN0cnVjdHVyZSB0aGF0IGFsbG93cyB0ZXN0cwp0byBkbyBjb21tb24gdGhpbmdzIHdpdGggUG9z dGdyZVNRTCBzZXJ2ZXJzIGxpa2U6Ci0gY3JlYXRpbmcKLSBzdGFydGluZwotIHN0b3BwaW5nCi0g Y29ubmVjdGluZwotIHJ1bm5pbmcgcXVlcmllcwotIGhhbmRsaW5nIGVycm9ycwoKVGhlIGdvYWwg b2YgdGhpcyBpbmZyYXN0cnVjdHVyZSBpcyB0byBiZSBzbyBlYXN5IHRvIHVzZSB0aGF0IHRoZSBh Y3R1YWwKdGVzdHMgcmVhbGx5IG9ubHkgY29udGFpbiB0aGUgbG9naWMgdG8gdGVzdCB0aGUgYmVo YXZpb3VyIHRoYXQgdGhlIHRlc3RzCmFyZSB0ZXN0aW5nLCBhcyBvcHBvc2VkIHRvIGEgYnVuY2gg b2YgYm9pbGVycGxhdGUuIEV4YW1wbGVzIG9mIHRoaXMgYXJlOgoKVHlwZXMgZ2V0IGNvbnZlcnRl ZCB0byB0aGVpciBQeXRob24gY291bnRlciBwYXJ0cyBhdXRvbWF0aWNhbGx5LiBFcnJvcnMKYmVj b21lIGFjdHVhbCBQeXRob24gZXhjZXB0aW9ucy4gUmVzdWx0cyBvZiBxdWVyaWVzIHRoYXQgb25s eSByZXR1cm4gYQpzaW5nbGUgcm93IG9yIGNlbGwgYXJlIHVucGFja2VkIGF1dG9tYXRpY2FsbHks IHNvIHlvdSBkb24ndCBoYXZlIHRvIGRvCnJvd3NbMF1bMF0gaWYgdGhlIHF1ZXJ5IG9ubHkgcmV0 dXJucyBhIHNpbmdsZSBjZWxsLgoKVGhlIG9ubHkgbmV3IHRlc3RzIHRoYXQgYXJlIHBhcnQgb2Yg dGhpcyBjb21taXQgYXJlIHRlc3RzIHRoYXQgY292ZXIKdGhpcyB0ZXN0aW5nIGluZnJhc3RydWN0 dXJlIGl0c2VsZi4gSXQncyBkZWJhdGFibGUgd2hldGhlciBzdWNoIHRlc3RzCmFyZSB1c2VmdWwg bG9uZyB0ZXJtLCBiZWNhdXNlIGFueSBpbmZyYXN0cnVjdHVyZSB0aGF0J3MgdW51c2VkIGJ5IGFj dHVhbAp0ZXN0cyBzaG91bGQgcHJvYmFibHkgbm90IGV4aXN0LiBGb3Igbm93IGl0IHNlZW1zIGdv b2QgdG8gdGVzdCB0aGlzCmJhc2ljIGZ1bmN0aW9uYWxpdHkgdGhvdWdoLCBib3RoIHRvIG1ha2Ug c3VyZSB3ZSBkb24ndCBicmVhayBpdCBiZWZvcmUKY29tbWl0dGluZyBhY3R1YWwgdGVzdHMgdGhh dCB1c2UgaXQsIGFuZCBhbHNvIGFzIGFuIGV4YW1wbGUgZm9yIHBlb3BsZQp3cml0aW5nIG5ldyB0 ZXN0cy4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sICAgICAgICAgICAgICAgICB8ICA2 NiArKy0KIHB5cHJvamVjdC50b21sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsK IHNyYy90ZXN0L3B5dGVzdC9SRUFETUUgICAgICAgICAgICAgICAgICAgIHwgMTU0ICsrKysrKy0K IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weSAgICAgICAgIHwgIDM1ICsrCiBzcmMv dGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkgICAgICAgICAgICB8IDQ4OCArKysrKysrKysrKysr KysrKysrKysrCiBzcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5ICAgICAgICAgICB8ICA2 MiArKysKIHNyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgICA0ICsK IHNyYy90ZXN0L3B5dGVzdC9weXBnL19faW5pdF9fLnB5ICAgICAgICAgIHwgIDEwICsKIHNyYy90 ZXN0L3B5dGVzdC9weXBnL19lbnYucHkgICAgICAgICAgICAgIHwgIDcyICsrKysKIHNyYy90ZXN0 L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5ICAgICAgICAgIHwgMzU2ICsrKysrKysrKysrKysrKysK IHNyYy90ZXN0L3B5dGVzdC9weXBnL3NlcnZlci5weSAgICAgICAgICAgIHwgNDgyICsrKysrKysr KysrKysrKysrKysrKwogc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weSAgICAgICAgICAgICAg fCAgNTUgKysrCiBzcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5ICAgICAgICAgICB8ICAg MSArCiBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5ICAgICAgICB8ICAzNCArKwog c3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5ICAgICAgICAgfCAgMzUgKysKIHNyYy90 ZXN0L3B5dGVzdC9weXQvdGVzdF9tdWx0aV9zZXJ2ZXIucHkgIHwgIDQ2ICsrCiBzcmMvdGVzdC9w eXRlc3QvcHl0L3Rlc3RfcXVlcnlfaGVscGVycy5weSB8IDM0NyArKysrKysrKysrKysrKysKIDE3 IGZpbGVzIGNoYW5nZWQsIDIyNDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvbGlicHEvX19pbml0X18ucHkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvbGlicHEvX2NvcmUucHkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX19pbml0X18ucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv dGVzdC9weXRlc3QvcHlwZy9fZW52LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0 ZXN0L3B5cGcvZml4dHVyZXMucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3Qv cHlwZy9zZXJ2ZXIucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHlwZy91 dGlsLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5w eQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9lcnJvcnMucHkK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbXVsdGlfc2VydmVyLnB5 CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X3F1ZXJ5X2hlbHBl cnMucHkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVncmVzcy5zZ21sIGIvZG9jL3NyYy9z Z21sL3JlZ3Jlc3Muc2dtbAppbmRleCA0M2YyMDhkZjI3Mi4uODUxYmFmZTM3NzggMTAwNjQ0Ci0t LSBhL2RvYy9zcmMvc2dtbC9yZWdyZXNzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZ3Jlc3Mu c2dtbApAQCAtOTA0LDcgKzkwNCw3IEBAIGZsb2F0NDpvdXQ6LiotLiotY3lnd2luLio9ZmxvYXQ0 LW1pc3JvdW5kZWQtaW5wdXQub3V0CiAgIDwvc2VjdDE+CiAKICAgPHNlY3QxIGlkPSJyZWdyZXNz LXRhcCI+Ci0gICA8dGl0bGU+VEFQIFRlc3RzPC90aXRsZT4KKyAgIDx0aXRsZT5QZXJsIFRBUCBU ZXN0czwvdGl0bGU+CiAKICAgIDxwYXJhPgogICAgIFZhcmlvdXMgdGVzdHMsIHBhcnRpY3VsYXJs eSB0aGUgY2xpZW50IHByb2dyYW0gdGVzdHMKQEAgLTk5Myw2ICs5OTMsNzAgQEAgUEdfVEVTVF9O T0NMRUFOPTEgbWFrZSAtQyBzcmMvYmluL3BnX2R1bXAgY2hlY2sKIAogICA8L3NlY3QxPgogCisg IDxzZWN0MSBpZD0icmVncmVzcy1weXRlc3QiPgorICAgPHRpdGxlPlB5dGVzdCBUZXN0czwvdGl0 bGU+CisKKyAgIDxwYXJhPgorICAgIFRlc3RzIGluIDxmaWxlbmFtZT5weXQ8L2ZpbGVuYW1lPiBk aXJlY3RvcmllcyB1c2UgdGhlIFB5dGhvbgorICAgIDxhcHBsaWNhdGlvbj5weXRlc3Q8L2FwcGxp Y2F0aW9uPiBmcmFtZXdvcmsuIFRoZXNlIHRlc3RzIHByb3ZpZGUgYQorICAgIGNvbnZlbmllbnQg d2F5IHRvIHRlc3QgbGlicHEgY2xpZW50IGZ1bmN0aW9uYWxpdHkgYW5kIHNjZW5hcmlvcyByZXF1 aXJpbmcKKyAgICBtdWx0aXBsZSBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZXMuCisgICA8L3Bh cmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBweXRlc3QgdGVzdHMgcmVxdWlyZSA8cHJvZHVjdG5h bWU+UG9zdGdyZVNRTDwvcHJvZHVjdG5hbWU+IHRvIGJlCisgICAgY29uZmlndXJlZCB3aXRoIHRo ZSBvcHRpb24gPG9wdGlvbj4tLWVuYWJsZS1weXRlc3Q8L29wdGlvbj4gKG9yCisgICAgPG9wdGlv bj4tRHB5dGVzdD1lbmFibGVkPC9vcHRpb24+IGZvciBNZXNvbiBidWlsZHMpLiBZb3UgYWxzbyBu ZWVkCisgICAgPGFwcGxpY2F0aW9uPnB5dGVzdDwvYXBwbGljYXRpb24+IGluc3RhbGxlZC4gWW91 IGNhbiBlaXRoZXIgaW5zdGFsbCBpdAorICAgIHN5c3RlbS13aWRlLCBvciBjcmVhdGUgYSB2aXJ0 dWFsIGVudmlyb25tZW50IGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5OgorPHByb2dyYW1saXN0aW5n PgorcHl0aG9uIC1tIHZlbnYgLnZlbnYKK3NvdXJjZSAudmVudi9iaW4vYWN0aXZhdGUKK3BpcCBp bnN0YWxsIC4KKzwvcHJvZ3JhbWxpc3Rpbmc+CisgICAgQWx0ZXJuYXRpdmVseSwgaWYgeW91IGhh dmUgPGFwcGxpY2F0aW9uPnV2PC9hcHBsaWNhdGlvbj4gaW5zdGFsbGVkOgorPHByb2dyYW1saXN0 aW5nPgordXYgc3luYworc291cmNlIC52ZW52L2Jpbi9hY3RpdmF0ZQorPC9wcm9ncmFtbGlzdGlu Zz4KKyAgICBSZW1lbWJlciB0byBhY3RpdmF0ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBiZWZv cmUgcnVubmluZworICAgIDxjb21tYW5kPmNvbmZpZ3VyZTwvY29tbWFuZD4gb3IgPGNvbW1hbmQ+ bWVzb24gc2V0dXA8L2NvbW1hbmQ+LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBXaXRo IE1lc29uIGJ1aWxkcywgeW91IGNhbiBydW4gdGhlIHB5dGVzdCB0ZXN0cyB1c2luZzoKKzxwcm9n cmFtbGlzdGluZz4KK21lc29uIHRlc3QgLS1zdWl0ZSBweXRlc3QKKzwvcHJvZ3JhbWxpc3Rpbmc+ CisgICAgV2l0aCBhdXRvY29uZi1iYXNlZCBidWlsZHMsIHlvdSBjYW4gcnVuIHRoZW0gZnJvbSB0 aGUKKyAgICA8ZmlsZW5hbWU+c3JjL3Rlc3QvcHl0ZXN0PC9maWxlbmFtZT4gZGlyZWN0b3J5IHVz aW5nOgorPHByb2dyYW1saXN0aW5nPgorbWFrZSBjaGVjaworPC9wcm9ncmFtbGlzdGluZz4KKyAg IDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgWW91IGNhbiBhbHNvIHJ1biBzcGVjaWZpYyB0ZXN0 IGZpbGVzIGRpcmVjdGx5IHVzaW5nIHB5dGVzdDoKKzxwcm9ncmFtbGlzdGluZz4KK3B5dGVzdCBz cmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKK3B5dGVzdCAtayAidGVzdF9jb25uc3Ry IgorPC9wcm9ncmFtbGlzdGluZz4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgTWFueSBv cGVyYXRpb25zIGluIHRoZSB0ZXN0IHN1aXRlcyB1c2UgYSAxODAtc2Vjb25kIHRpbWVvdXQsIHdo aWNoIG9uIHNsb3cKKyAgICBob3N0cyBtYXkgbGVhZCB0byBsb2FkLWluZHVjZWQgdGltZW91dHMu ICBTZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgIDx2YXJuYW1lPlBHX1RFU1Rf VElNRU9VVF9ERUZBVUxUPC92YXJuYW1lPiB0byBhIGhpZ2hlciBudW1iZXIgd2lsbCBjaGFuZ2UK KyAgICB0aGUgZGVmYXVsdCB0byBhdm9pZCB0aGlzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4K KyAgICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB3cml0aW5nIHB5dGVzdCB0ZXN0cywgc2VlIHRo ZQorICAgIDxmaWxlbmFtZT5zcmMvdGVzdC9weXRlc3QvUkVBRE1FPC9maWxlbmFtZT4gZmlsZS4K KyAgIDwvcGFyYT4KKworICA8L3NlY3QxPgorCiAgIDxzZWN0MSBpZD0icmVncmVzcy1jb3ZlcmFn ZSI+CiAgICA8dGl0bGU+VGVzdCBDb3ZlcmFnZSBFeGFtaW5hdGlvbjwvdGl0bGU+CiAKZGlmZiAt LWdpdCBhL3B5cHJvamVjdC50b21sIGIvcHlwcm9qZWN0LnRvbWwKaW5kZXggNjBhYmI0ZDA2NTUu LjQ2MjhkMjI3NGUwIDEwMDY0NAotLS0gYS9weXByb2plY3QudG9tbAorKysgYi9weXByb2plY3Qu dG9tbApAQCAtMTksMyArMTksNiBAQCBtaW52ZXJzaW9uID0gIjcuMCIKIAogIyBDb21tb24gdGVz dCBjb2RlIGNhbiBiZSBmb3VuZCBoZXJlLgogcHl0aG9ucGF0aCA9IFsic3JjL3Rlc3QvcHl0ZXN0 Il0KKworIyBMb2FkIHRoZSBzaGFyZWQgZml4dHVyZXMgcGx1Z2luCithZGRvcHRzID0gWyItcCIs ICJweXBnLmZpeHR1cmVzIl0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUgYi9z cmMvdGVzdC9weXRlc3QvUkVBRE1FCmluZGV4IDEzMzNlZDc3YjdlLi5iYjc1ZTU2YTI1ZCAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQorKysgYi9zcmMvdGVzdC9weXRlc3QvUkVB RE1FCkBAIC0xICsxLDE1MyBAQAotVE9ETworc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQorCitQeXRl c3QtYmFzZWQgdGVzdHMKKz09PT09PT09PT09PT09PT09PQorCitUaGlzIGRpcmVjdG9yeSBjb250 YWlucyBpbmZyYXN0cnVjdHVyZSBmb3IgUHl0aG9uLWJhc2VkIHRlc3RzIHVzaW5nIHB5dGVzdCwK K2Fsb25nIHdpdGggc29tZSBjb3JlIHRlc3RzIGZvciB0aGUgcHl0ZXN0IGluZnJhc3RydWN0dXJl IGl0c2VsZi4gVGhlIGZyYW1ld29yaworcHJvdmlkZXMgZml4dHVyZXMgZm9yIG1hbmFnaW5nIFBv c3RncmVTUUwgc2VydmVyIGluc3RhbmNlcyBhbmQgY29ubmVjdGluZyB0bwordGhlbSB2aWEgbGli cHEuCisKKworUnVubmluZyB0aGUgdGVzdHMKKz09PT09PT09PT09PT09PT09CisKK05PVEU6IFlv dSBtdXN0IGhhdmUgZ2l2ZW4gdGhlIC0tZW5hYmxlLXB5dGVzdCBhcmd1bWVudCB0byBjb25maWd1 cmUgKG9yCistRHB5dGVzdD1lbmFibGVkIGZvciBNZXNvbiBidWlsZHMpLiBZb3UgYWxzbyBuZWVk IHRvIGhhdmUgcHl0ZXN0IGluc3RhbGxlZC4KKworSWYgeW91IGRvbid0IGhhdmUgcHl0ZXN0IGlu c3RhbGxlZCBzeXN0ZW0td2lkZSwgeW91IGNhbiBjcmVhdGUgYSB2aXJ0dWFsCitlbnZpcm9ubWVu dDoKKworICAgIHB5dGhvbjMgLW0gdmVudiAudmVudgorICAgIHNvdXJjZSAudmVudi9iaW4vYWN0 aXZhdGUgICAgIyBPbiBXaW5kb3dzOiAudmVudlxTY3JpcHRzXGFjdGl2YXRlCisgICAgcGlwIGlu c3RhbGwgLiAgICAgICAgICAgICAgICAjIEluc3RhbGxzIHB5dGVzdCBhbmQgb3RoZXIgZGVwZW5k ZW5jaWVzCisKK09yIHVzaW5nIHV2IChodHRwczovL2RvY3MuYXN0cmFsLnNoL3V2Lyk6CisKKyAg ICB1diBzeW5jCisgICAgc291cmNlIC52ZW52L2Jpbi9hY3RpdmF0ZSAgICAjIE9uIFdpbmRvd3M6 IC52ZW52XFNjcmlwdHNcYWN0aXZhdGUKKworUmVtZW1iZXIgdG8gYWN0aXZhdGUgdGhlIHZpcnR1 YWwgZW52aXJvbm1lbnQgYmVmb3JlIHJ1bm5pbmcgY29uZmlndXJlL21lc29uCitzZXR1cC4KKwor V2l0aCBNZXNvbiBidWlsZHMsIHlvdSBjYW4gcnVuOgorICAgIG1lc29uIHRlc3QgLS1zdWl0ZSBw eXRlc3QKKworV2l0aCBhdXRvY29uZiBiYXNlZCBidWlsZHMsIHlvdSBjYW4gcnVuOgorICAgIG1h a2UgY2hlY2sKK29yCisgICAgbWFrZSBpbnN0YWxsY2hlY2sKKworWW91IGNhbiBydW4gc3BlY2lm aWMgdGVzdCBmaWxlcyBhbmQvb3IgdXNlIHB5dGVzdCdzIC1rIG9wdGlvbiB0byBzZWxlY3QgdGVz dHM6CisgICAgcHl0ZXN0IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQorICAgIHB5 dGVzdCAtayAidGVzdF9jb25uc3RyIgorCisKK0RpcmVjdG9yeSBzdHJ1Y3R1cmUKKz09PT09PT09 PT09PT09PT09PT0KKworcHlwZy8KKyAgICBQeXRob24gbGlicmFyeSBwcm92aWRpbmcgY29tbW9u IGZ1bmN0aW9ucyBhbmQgcHl0ZXN0IGZpeHR1cmVzIHRoYXQgY2FuIGJlCisgICAgdXNlZCBpbiB0 ZXN0cy4KKworbGlicHEvCisgICAgQSBzaW1wbGUgYnV0IHVzZXItZnJpZW5kbHkgcHl0aG9uIHdy YXBwZXIgYXJvdW5kIGxpYnBxCisKK3B5dC8KKyAgICBUZXN0cyBmb3IgdGhlIHB5dGVzdCBpbmZy YXN0cnVjdHVyZSBpdHNlbGYKKworcGd0YXAucHkKKyAgICBBIHB5dGVzdCBwbHVnaW4gdG8gb3V0 cHV0IHJlc3VsdHMgaW4gVEFQIGZvcm1hdAorCisKK1dyaXRpbmcgdGVzdHMKKz09PT09PT09PT09 PT0KKworVGVzdHMgdXNlIHB5dGVzdCBmaXh0dXJlcyB0byBtYW5hZ2Ugc2VydmVyIGluc3RhbmNl cyBhbmQgY29ubmVjdGlvbnMuIFRoZQorbW9zdCBjb21tb25seSB1c2VkIGZpeHR1cmVzIGFyZToK KworcGcKKyAgICBBIFBvc3RncmVzU2VydmVyIGluc3RhbmNlIGNvbmZpZ3VyZWQgZm9yIHRoZSBj dXJyZW50IHRlc3QuIFVzZSB0aGlzIGZvcgorICAgIGNyZWF0aW5nIHRlc3QgdXNlcnMvZGF0YWJh c2VzIG9yIG1vZGlmeWluZyBzZXJ2ZXIgY29uZmlndXJhdGlvbi4gQ2hhbmdlcworICAgIGFyZSBh dXRvbWF0aWNhbGx5IHJvbGxlZCBiYWNrIGFmdGVyIHRoZSB0ZXN0LgorCitjb25uCisgICAgQSBj b25uZWN0ZWQgUEdjb25uIGluc3RhbmNlIHRvIHRoZSB0ZXN0IHNlcnZlci4gQXV0b21hdGljYWxs eSBjbGVhbmVkIHVwCisgICAgYWZ0ZXIgdGhlIHRlc3QuCisKK2Nvbm5lY3QKKyAgICBBIGZ1bmN0 aW9uIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIGNvbm5lY3Rpb25zIHdpdGggY3VzdG9tIG9wdGlvbnMu CisKK2NyZWF0ZV9wZworICAgIEEgZmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgYWRkaXRpb25h bCBQb3N0Z3JlU1FMIHNlcnZlcnMgd2l0aGluIGEgdGVzdC4KKyAgICBTZXJ2ZXJzIGFyZSBhdXRv bWF0aWNhbGx5IGNsZWFuZWQgdXAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdC4gVXNlZnVsIGZvcgor ICAgIHRlc3Rpbmcgc2NlbmFyaW9zIHRoYXQgcmVxdWlyZSBtdWx0aXBsZSBpbmRlcGVuZGVudCBz ZXJ2ZXJzLgorCitjcmVhdGVfcGdfbW9kdWxlCisgICAgTGlrZSBjcmVhdGVfcGcsIGJ1dCBzZXJ2 ZXJzIHBlcnNpc3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBtb2R1bGUuIFVzZSB0aGlzCisgICAgd2hl biBtdWx0aXBsZSB0ZXN0cyBpbiBhIG1vZHVsZSBjYW4gc2hhcmUgdGhlIHNhbWUgc2VydmVycywg d2hpY2ggaXMKKyAgICBmYXN0ZXIgdGhhbiBjcmVhdGluZyBuZXcgc2VydmVycyBmb3IgZWFjaCB0 ZXN0LgorCisKK0V4YW1wbGUgdGVzdDoKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9xdWVyeShjb25u KToKKyAgICAgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxICsgMSIpCisgICAgICAgIGFz c2VydCByZXN1bHQgPT0gMgorCisgICAgZGVmIHRlc3Rfd2l0aF91c2VyKHBnKToKKyAgICAgICAg dXNlcnMgPSBwZy5jcmVhdGVfdXNlcnMoInRlc3QiKQorICAgICAgICB3aXRoIHBnLnJlbG9hZGlu ZygpIGFzIHM6CisgICAgICAgICAgICBzLmhiYS5wcmVwZW5kKFsibG9jYWwiLCAiYWxsIiwgdXNl cnNbInRlc3QiXSwgInRydXN0Il0pCisKKyAgICAgICAgY29ubiA9IHBnLmNvbm5lY3QodXNlcj11 c2Vyc1sidGVzdCJdKQorICAgICAgICBhc3NlcnQgY29ubi5zcWwoIlNFTEVDVCBjdXJyZW50X3Vz ZXIiKSA9PSB1c2Vyc1sidGVzdCJdCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV9zZXJ2ZXJzKGNy ZWF0ZV9wZyk6CisgICAgICAgIG5vZGUxID0gY3JlYXRlX3BnKCJwcmltYXJ5IikKKyAgICAgICAg bm9kZTIgPSBjcmVhdGVfcGcoInNlY29uZGFyeSIpCisKKyAgICAgICAgY29ubjEgPSBub2RlMS5j b25uZWN0KCkKKyAgICAgICAgY29ubjIgPSBub2RlMi5jb25uZWN0KCkKKworICAgICAgICAjIEVh Y2ggc2VydmVyIGlzIGluZGVwZW5kZW50CisgICAgICAgIGFzc2VydCBub2RlMS5wb3J0ICE9IG5v ZGUyLnBvcnQKKworCitTZXJ2ZXIgY29uZmlndXJhdGlvbgorPT09PT09PT09PT09PT09PT09PT0K KworVGVzdHMgY2FuIHRlbXBvcmFyaWx5IG1vZGlmeSBzZXJ2ZXIgY29uZmlndXJhdGlvbiB1c2lu ZyBjb250ZXh0IG1hbmFnZXJzOgorCisgICAgd2l0aCBwZy5yZWxvYWRpbmcoKSBhcyBzOgorICAg ICAgICBzLmNvbmYuc2V0KGxvZ19jb25uZWN0aW9ucz0ib24iKQorICAgICAgICBzLmhiYS5wcmVw ZW5kKCJsb2NhbCBhbGwgYWxsIHRydXN0IikKKyAgICAgICAgIyBTZXJ2ZXIgaXMgcmVsb2FkZWQg aGVyZQorICAgICMgQWZ0ZXIgdGhlIHRlc3QgZmluaXNoZWQgdGhlIG9yaWdpbmFsIGNvbmZpZ3Vy YXRpb24gaXMgcmVzdG9yZWQgYW5kCisgICAgIyB0aGUgc2VydmVyIGlzIHJlbG9hZGVkIGFnYWlu CisKK1VzZSBwZy5yZXN0YXJ0aW5nKCkgaW5zdGVhZCBpZiB0aGUgY29uZmlndXJhdGlvbiBjaGFu Z2UgcmVxdWlyZXMgYSByZXN0YXJ0LgorCisKK1RpbWVvdXRzCis9PT09PT09PQorCitUZXN0cyBp bmhlcml0IHRoZSBQR19URVNUX1RJTUVPVVRfREVGQVVMVCBlbnZpcm9ubWVudCB2YXJpYWJsZSAo ZGVmYXVsdGluZwordG8gMTgwIHNlY29uZHMpLiBUaGUgcmVtYWluaW5nX3RpbWVvdXQgZml4dHVy ZSBwcm92aWRlcyBhIGZ1bmN0aW9uIHRoYXQKK3JldHVybnMgaG93IG11Y2ggdGltZSByZW1haW5z IGZvciB0aGUgY3VycmVudCB0ZXN0LgorCisKK0Vudmlyb25tZW50IHZhcmlhYmxlcworPT09PT09 PT09PT09PT09PT09PT09CisKK1BHX1RFU1RfVElNRU9VVF9ERUZBVUxUCisgICAgUGVyLXRlc3Qg dGltZW91dCBpbiBzZWNvbmRzIChkZWZhdWx0OiAxODApCisKK1BHX0NPTkZJRworICAgIFBhdGgg dG8gcGdfY29uZmlnIChkZWZhdWx0OiB1c2VzIFBBVEgpCisKK1RFU1REQVRBRElSCisgICAgRGly ZWN0b3J5IGZvciB0ZXN0IGRhdGEgKGRlZmF1bHQ6IHB5dGVzdCB0ZW1wIGRpcmVjdG9yeSkKKwor UEdfVEVTVF9FWFRSQQorICAgIFNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIG9wdGlvbmFsIHRlc3Qg Y2F0ZWdvcmllcyB0byBydW4gKGUuZy4sICJzc2wiKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0 ZXN0L2xpYnBxL19faW5pdF9fLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi42YTcxZWJiZTQzZgotLS0g L2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weQpAQCAtMCww ICsxLDM1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKworIiIiCitsaWJwcSB0ZXN0aW5nIHV0aWxpdGllcyAtIGN0eXBlcyBiaW5k aW5ncyBhbmQgaGVscGVycyBmb3IgUG9zdGdyZVNRTCdzIGxpYnBxIGxpYnJhcnkuCisKK1RoaXMg bW9kdWxlIHByb3ZpZGVzIFB5dGhvbiB3cmFwcGVycyBhcm91bmQgbGlicHEgZm9yIHVzZSBpbiBw eXRlc3QgdGVzdHMuCisiIiIKKworZnJvbSAuIGltcG9ydCBlcnJvcnMKK2Zyb20gLmVycm9ycyBp bXBvcnQgTGlicHFFcnJvcgorZnJvbSAuX2NvcmUgaW1wb3J0ICgKKyAgICBDb25uZWN0aW9uU3Rh dHVzLAorICAgIERpYWdGaWVsZCwKKyAgICBFeGVjU3RhdHVzLAorICAgIFBHY29ubiwKKyAgICBQ R3Jlc3VsdCwKKyAgICBjb25uZWN0LAorICAgIGNvbm5zdHIsCisgICAgbG9hZF9saWJwcV9oYW5k bGUsCisgICAgcmVnaXN0ZXJfdHlwZV9pbmZvLAorKQorCitfX2FsbF9fID0gWworICAgICJlcnJv cnMiLAorICAgICJMaWJwcUVycm9yIiwKKyAgICAiQ29ubmVjdGlvblN0YXR1cyIsCisgICAgIkRp YWdGaWVsZCIsCisgICAgIkV4ZWNTdGF0dXMiLAorICAgICJQR2Nvbm4iLAorICAgICJQR3Jlc3Vs dCIsCisgICAgImNvbm5lY3QiLAorICAgICJjb25uc3RyIiwKKyAgICAibG9hZF9saWJwcV9oYW5k bGUiLAorICAgICJyZWdpc3Rlcl90eXBlX2luZm8iLAorXQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cHl0ZXN0L2xpYnBxL19jb3JlLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19jb3JlLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xYzA1OWI5YjQ0NgotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weQpAQCAtMCwwICsxLDQ4 OCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50 IEdyb3VwCisKKyIiIgorQ29yZSBsaWJwcSBmdW5jdGlvbmFsaXR5IC0gY3R5cGVzIGJpbmRpbmdz IGFuZCBjb25uZWN0aW9uIGhhbmRsaW5nLgorIiIiCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBv cnQgY3R5cGVzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCitpbXBvcnQgZW51bQor aW1wb3J0IGpzb24KK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IG9zCitpbXBvcnQgdXVpZAorZnJv bSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIE9wdGlvbmFsCisKK2Zyb20gLmVy cm9ycyBpbXBvcnQgTGlicHFFcnJvcgorCisKKyMgUEdfRElBRyBmaWVsZCBpZGVudGlmaWVycyBm cm9tIHBvc3RncmVzX2V4dC5oCitjbGFzcyBEaWFnRmllbGQoZW51bS5JbnRFbnVtKToKKyAgICBT RVZFUklUWSA9IG9yZCgiUyIpCisgICAgU0VWRVJJVFlfTk9OTE9DQUxJWkVEID0gb3JkKCJWIikK KyAgICBTUUxTVEFURSA9IG9yZCgiQyIpCisgICAgTUVTU0FHRV9QUklNQVJZID0gb3JkKCJNIikK KyAgICBNRVNTQUdFX0RFVEFJTCA9IG9yZCgiRCIpCisgICAgTUVTU0FHRV9ISU5UID0gb3JkKCJI IikKKyAgICBTVEFURU1FTlRfUE9TSVRJT04gPSBvcmQoIlAiKQorICAgIElOVEVSTkFMX1BPU0lU SU9OID0gb3JkKCJwIikKKyAgICBJTlRFUk5BTF9RVUVSWSA9IG9yZCgicSIpCisgICAgQ09OVEVY VCA9IG9yZCgiVyIpCisgICAgU0NIRU1BX05BTUUgPSBvcmQoInMiKQorICAgIFRBQkxFX05BTUUg PSBvcmQoInQiKQorICAgIENPTFVNTl9OQU1FID0gb3JkKCJjIikKKyAgICBEQVRBVFlQRV9OQU1F ID0gb3JkKCJkIikKKyAgICBDT05TVFJBSU5UX05BTUUgPSBvcmQoIm4iKQorICAgIFNPVVJDRV9G SUxFID0gb3JkKCJGIikKKyAgICBTT1VSQ0VfTElORSA9IG9yZCgiTCIpCisgICAgU09VUkNFX0ZV TkNUSU9OID0gb3JkKCJSIikKKworCitjbGFzcyBDb25uZWN0aW9uU3RhdHVzKGVudW0uSW50RW51 bSk6CisgICAgIiIiUG9zdGdyZVNRTCBjb25uZWN0aW9uIHN0YXR1cyBjb2RlcyBmcm9tIGxpYnBx LiIiIgorCisgICAgQ09OTkVDVElPTl9PSyA9IDAKKyAgICBDT05ORUNUSU9OX0JBRCA9IDEKKwor CitjbGFzcyBFeGVjU3RhdHVzKGVudW0uSW50RW51bSk6CisgICAgIiIiUG9zdGdyZVNRTCByZXN1 bHQgc3RhdHVzIGNvZGVzIGZyb20gUFFyZXN1bHRTdGF0dXMuIiIiCisKKyAgICBQR1JFU19FTVBU WV9RVUVSWSA9IDAKKyAgICBQR1JFU19DT01NQU5EX09LID0gMQorICAgIFBHUkVTX1RVUExFU19P SyA9IDIKKyAgICBQR1JFU19DT1BZX09VVCA9IDMKKyAgICBQR1JFU19DT1BZX0lOID0gNAorICAg IFBHUkVTX0JBRF9SRVNQT05TRSA9IDUKKyAgICBQR1JFU19OT05GQVRBTF9FUlJPUiA9IDYKKyAg ICBQR1JFU19GQVRBTF9FUlJPUiA9IDcKKyAgICBQR1JFU19DT1BZX0JPVEggPSA4CisgICAgUEdS RVNfU0lOR0xFX1RVUExFID0gOQorICAgIFBHUkVTX1BJUEVMSU5FX1NZTkMgPSAxMAorICAgIFBH UkVTX1BJUEVMSU5FX0FCT1JURUQgPSAxMQorCisKK2NsYXNzIF9QR2Nvbm4oY3R5cGVzLlN0cnVj dHVyZSk6CisgICAgcGFzcworCisKK2NsYXNzIF9QR3Jlc3VsdChjdHlwZXMuU3RydWN0dXJlKToK KyAgICBwYXNzCisKKworX1BHY29ubl9wID0gY3R5cGVzLlBPSU5URVIoX1BHY29ubikKK19QR3Jl c3VsdF9wID0gY3R5cGVzLlBPSU5URVIoX1BHcmVzdWx0KQorCisKK2RlZiBsb2FkX2xpYnBxX2hh bmRsZShsaWJkaXIsIGJpbmRpcik6CisgICAgIiIiCisgICAgTG9hZHMgYSBjdHlwZXMgaGFuZGxl IGZvciBsaWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUKKyAgICBpbml0 aWFsaXplZCBmb3IgZ2VuZXJhbCB1c2UuCisgICAgIiIiCisgICAgc3lzdGVtID0gcGxhdGZvcm0u c3lzdGVtKCkKKworICAgIGlmIHN5c3RlbSBpbiAoIkxpbnV4IiwgIkZyZWVCU0QiLCAiTmV0QlNE IiwgIk9wZW5CU0QiKToKKyAgICAgICAgbmFtZSA9ICJsaWJwcS5zby41IgorICAgIGVsaWYgc3lz dGVtID09ICJEYXJ3aW4iOgorICAgICAgICBuYW1lID0gImxpYnBxLjUuZHlsaWIiCisgICAgZWxp ZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgorICAgICAgICBuYW1lID0gImxpYnBxLmRsbCIKKyAgICBl bHNlOgorICAgICAgICBhc3NlcnQgRmFsc2UsIGYidGhlIGxpYnBxIGZpeHR1cmUgbXVzdCBiZSB1 cGRhdGVkIGZvciB7c3lzdGVtfSIKKworICAgIGlmIHN5c3RlbSA9PSAiV2luZG93cyI6CisgICAg ICAgICMgT24gV2luZG93cywgbGlicHEuZGxsIGlzIGNvbmZ1c2luZ2x5IGluIGJpbmRpciwgbm90 IGxpYmRpci4gQW5kIHdlCisgICAgICAgICMgbmVlZCB0byBhZGQgdGhpcyBkaXJlY3RvcnkgdGhl IHRoZSBzZWFyY2ggcGF0aC4KKyAgICAgICAgbGlicHFfcGF0aCA9IG9zLnBhdGguam9pbihiaW5k aXIsIG5hbWUpCisgICAgICAgIGxpYiA9IGN0eXBlcy5DRExMKGxpYnBxX3BhdGgpCisgICAgZWxz ZToKKyAgICAgICAgbGlicHFfcGF0aCA9IG9zLnBhdGguam9pbihsaWJkaXIsIG5hbWUpCisgICAg ICAgIGxpYiA9IGN0eXBlcy5DRExMKGxpYnBxX3BhdGgpCisKKyAgICAjCisgICAgIyBGdW5jdGlv biBQcm90b3R5cGVzCisgICAgIworCisgICAgbGliLlBRY29ubmVjdGRiLnJlc3R5cGUgPSBfUEdj b25uX3AKKyAgICBsaWIuUFFjb25uZWN0ZGIuYXJndHlwZXMgPSBbY3R5cGVzLmNfY2hhcl9wXQor CisgICAgbGliLlBRc3RhdHVzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFzdGF0 dXMuYXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAgbGliLlBRZXhlYy5yZXN0eXBlID0gX1BH cmVzdWx0X3AKKyAgICBsaWIuUFFleGVjLmFyZ3R5cGVzID0gW19QR2Nvbm5fcCwgY3R5cGVzLmNf Y2hhcl9wXQorCisgICAgbGliLlBRcmVzdWx0U3RhdHVzLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQK KyAgICBsaWIuUFFyZXN1bHRTdGF0dXMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBs aWIuUFFjbGVhci5yZXN0eXBlID0gTm9uZQorICAgIGxpYi5QUWNsZWFyLmFyZ3R5cGVzID0gW19Q R3Jlc3VsdF9wXQorCisgICAgbGliLlBRZXJyb3JNZXNzYWdlLnJlc3R5cGUgPSBjdHlwZXMuY19j aGFyX3AKKyAgICBsaWIuUFFlcnJvck1lc3NhZ2UuYXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisg ICAgbGliLlBRZmluaXNoLnJlc3R5cGUgPSBOb25lCisgICAgbGliLlBRZmluaXNoLmFyZ3R5cGVz ID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUXJlc3VsdEVycm9yTWVzc2FnZS5yZXN0eXBlID0g Y3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRcmVzdWx0RXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0g W19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRbnR1cGxlcy5yZXN0eXBlID0gY3R5cGVzLmNfaW50 CisgICAgbGliLlBRbnR1cGxlcy5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcF0KKworICAgIGxpYi5Q UW5maWVsZHMucmVzdHlwZSA9IGN0eXBlcy5jX2ludAorICAgIGxpYi5QUW5maWVsZHMuYXJndHlw ZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFnZXR2YWx1ZS5yZXN0eXBlID0gY3R5cGVz LmNfY2hhcl9wCisgICAgbGliLlBRZ2V0dmFsdWUuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3AsIGN0 eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQorCisgICAgbGliLlBRZ2V0aXNudWxsLnJlc3R5cGUg PSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFnZXRpc251bGwuYXJndHlwZXMgPSBbX1BHcmVzdWx0 X3AsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQorCisgICAgbGliLlBRZnR5cGUucmVzdHlw ZSA9IGN0eXBlcy5jX3VpbnQKKyAgICBsaWIuUFFmdHlwZS5hcmd0eXBlcyA9IFtfUEdyZXN1bHRf cCwgY3R5cGVzLmNfaW50XQorCisgICAgbGliLlBRcmVzdWx0RXJyb3JGaWVsZC5yZXN0eXBlID0g Y3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRcmVzdWx0RXJyb3JGaWVsZC5hcmd0eXBlcyA9IFtf UEdyZXN1bHRfcCwgY3R5cGVzLmNfaW50XQorCisgICAgcmV0dXJuIGxpYgorCisKKyMgUG9zdGdy ZVNRTCB0eXBlIE9JRHMgYW5kIGNvbnZlcnNpb24gc3lzdGVtCisjIFR5cGUgcmVnaXN0cnkgLSBt YXBzIE9JRCB0byBjb252ZXJ0ZXIgZnVuY3Rpb24KK190eXBlX2NvbnZlcnRlcnM6IERpY3RbaW50 LCBDYWxsYWJsZVtbc3RyXSwgQW55XV0gPSB7fQorX2FycmF5X3RvX2VsZW1fbWFwOiBEaWN0W2lu dCwgaW50XSA9IHt9CisKKworZGVmIHJlZ2lzdGVyX3R5cGVfaW5mbygKKyAgICBuYW1lOiBzdHIs IG9pZDogaW50LCBhcnJheV9vaWQ6IGludCwgY29udmVydGVyOiBDYWxsYWJsZVtbc3RyXSwgQW55 XQorKToKKyAgICAiIiIKKyAgICBSZWdpc3RlciBhIFBvc3RncmVTUUwgdHlwZSB3aXRoIGl0cyBP SUQsIGFycmF5IE9JRCwgYW5kIGNvbnZlcnNpb24gZnVuY3Rpb24uCisKKyAgICBVc2FnZToKKyAg ICAgICAgcmVnaXN0ZXJfdHlwZV9pbmZvKCJib29sIiwgMTYsIDEwMDAsIGxhbWJkYSB2OiB2ID09 ICJ0IikKKyAgICAiIiIKKyAgICBfdHlwZV9jb252ZXJ0ZXJzW29pZF0gPSBjb252ZXJ0ZXIKKyAg ICBpZiBhcnJheV9vaWQgaXMgbm90IE5vbmU6CisgICAgICAgIF9hcnJheV90b19lbGVtX21hcFth cnJheV9vaWRdID0gb2lkCisKKworZGVmIF9wYXJzZV9hcnJheSh2YWx1ZTogc3RyLCBlbGVtX29p ZDogaW50KToKKyAgICAiIiJQYXJzZSBQb3N0Z3JlU1FMIGFycmF5IHN5bnRheCBpbnRvIG5lc3Rl ZCBQeXRob24gbGlzdHMuIiIiCisgICAgc3RhY2s6IGxpc3RbbGlzdF0gPSBbXQorICAgIGN1cnJl bnRfZWxlbWVudDogbGlzdFtzdHJdID0gW10KKyAgICBpbl9xdW90ZXMgPSBGYWxzZQorICAgIHdh c19xdW90ZWQgPSBGYWxzZQorICAgIHBvcyA9IDAKKworICAgIHdoaWxlIHBvcyA8IGxlbih2YWx1 ZSk6CisgICAgICAgIGNoYXIgPSB2YWx1ZVtwb3NdCisKKyAgICAgICAgaWYgaW5fcXVvdGVzOgor ICAgICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgorICAgICAgICAgICAgICAgIG5leHRfY2hhciA9 IHZhbHVlW3BvcyArIDFdCisgICAgICAgICAgICAgICAgaWYgbmV4dF9jaGFyIG5vdCBpbiAnIlxc JzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignT25seSBc XCIgYW5kIFxcXFwgZXNjYXBlcyBhcmUgc3VwcG9ydGVkJykKKyAgICAgICAgICAgICAgICBjdXJy ZW50X2VsZW1lbnQuYXBwZW5kKG5leHRfY2hhcikKKyAgICAgICAgICAgICAgICBwb3MgKz0gMgor ICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGNoYXIgPT0gJyInOgor ICAgICAgICAgICAgICAgIGluX3F1b3RlcyA9IEZhbHNlCisgICAgICAgICAgICBlbHNlOgorICAg ICAgICAgICAgICAgIGN1cnJlbnRfZWxlbWVudC5hcHBlbmQoY2hhcikKKyAgICAgICAgZWxpZiBj aGFyID09ICciJzoKKyAgICAgICAgICAgIGluX3F1b3RlcyA9IFRydWUKKyAgICAgICAgICAgIHdh c19xdW90ZWQgPSBUcnVlCisgICAgICAgIGVsaWYgY2hhciA9PSAieyI6CisgICAgICAgICAgICBz dGFjay5hcHBlbmQoW10pCisgICAgICAgIGVsaWYgY2hhciBpbiAiLH0iOgorICAgICAgICAgICAg aWYgY3VycmVudF9lbGVtZW50IG9yIHdhc19xdW90ZWQ6CisgICAgICAgICAgICAgICAgZWxlbSA9 ICIiLmpvaW4oY3VycmVudF9lbGVtZW50KQorICAgICAgICAgICAgICAgIGlmIG5vdCB3YXNfcXVv dGVkIGFuZCBlbGVtID09ICJOVUxMIjoKKyAgICAgICAgICAgICAgICAgICAgc3RhY2tbLTFdLmFw cGVuZChOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHN0 YWNrWy0xXS5hcHBlbmQoX2NvbnZlcnRfcGdfdmFsdWUoZWxlbSwgZWxlbV9vaWQpKQorICAgICAg ICAgICAgICAgIGN1cnJlbnRfZWxlbWVudCA9IFtdCisgICAgICAgICAgICAgICAgd2FzX3F1b3Rl ZCA9IEZhbHNlCisgICAgICAgICAgICBpZiBjaGFyID09ICJ9IjoKKyAgICAgICAgICAgICAgICBj b21wbGV0ZWQgPSBzdGFjay5wb3AoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGFjazoKKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZAorICAgICAgICAgICAgICAgIHN0YWNr Wy0xXS5hcHBlbmQoY29tcGxldGVkKQorICAgICAgICBlbGlmIGNoYXIgIT0gIiAiOgorICAgICAg ICAgICAgY3VycmVudF9lbGVtZW50LmFwcGVuZChjaGFyKQorICAgICAgICBwb3MgKz0gMQorCisg ICAgcmFpc2UgVmFsdWVFcnJvcihmIk1hbGZvcm1lZCBhcnJheSBsaXRlcmFsOiB7dmFsdWV9IikK KworCisjIFJlZ2lzdGVyIHN0YW5kYXJkIFBvc3RncmVTUUwgdHlwZXMgdGhhdCB3ZSdsbCBsaWtl bHkgZW5jb3VudGVyIGluIHRlc3RzCityZWdpc3Rlcl90eXBlX2luZm8oImJvb2wiLCAxNiwgMTAw MCwgbGFtYmRhIHY6IHYgPT0gInQiKQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJpbnQyIiwgMjEsIDEw MDUsIGludCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygiaW50NCIsIDIzLCAxMDA3LCBpbnQpCityZWdp c3Rlcl90eXBlX2luZm8oImludDgiLCAyMCwgMTAxNiwgaW50KQorcmVnaXN0ZXJfdHlwZV9pbmZv KCJmbG9hdDQiLCA3MDAsIDEwMjEsIGZsb2F0KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJmbG9hdDgi LCA3MDEsIDEwMjIsIGZsb2F0KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJudW1lcmljIiwgMTcwMCwg MTIzMSwgZGVjaW1hbC5EZWNpbWFsKQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJ0ZXh0IiwgMjUsIDEw MDksIHN0cikKK3JlZ2lzdGVyX3R5cGVfaW5mbygidmFyY2hhciIsIDEwNDMsIDEwMTUsIHN0cikK K3JlZ2lzdGVyX3R5cGVfaW5mbygiZGF0ZSIsIDEwODIsIDExODIsIGRhdGV0aW1lLmRhdGUuZnJv bWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGltZSIsIDEwODMsIDExODMsIGRhdGV0 aW1lLnRpbWUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGltZXN0YW1wIiwg MTExNCwgMTExNSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5 cGVfaW5mbygidGltZXN0YW1wdHoiLCAxMTg0LCAxMTg1LCBkYXRldGltZS5kYXRldGltZS5mcm9t aXNvZm9ybWF0KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJ1dWlkIiwgMjk1MCwgMjk1MSwgdXVpZC5V VUlEKQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJqc29uIiwgMTE0LCAxOTksIGpzb24ubG9hZHMpCity ZWdpc3Rlcl90eXBlX2luZm8oImpzb25iIiwgMzgwMiwgMzgwNywganNvbi5sb2FkcykKKworCitk ZWYgX2NvbnZlcnRfcGdfdmFsdWUodmFsdWU6IHN0ciwgdHlwZV9vaWQ6IGludCkgLT4gQW55Ogor ICAgICIiIgorICAgIENvbnZlcnQgUG9zdGdyZVNRTCBzdHJpbmcgdmFsdWUgdG8gYXBwcm9wcmlh dGUgUHl0aG9uIHR5cGUgYmFzZWQgb24gT0lELgorICAgIFVzZXMgdGhlIHJlZ2lzdGVyZWQgdHlw ZSBjb252ZXJ0ZXJzIGZyb20gcmVnaXN0ZXJfdHlwZV9pbmZvKCkuCisgICAgIiIiCisgICAgIyBD aGVjayBpZiBpdCdzIGFuIGFycmF5IHR5cGUKKyAgICBpZiB0eXBlX29pZCBpbiBfYXJyYXlfdG9f ZWxlbV9tYXA6CisgICAgICAgIGVsZW1fb2lkID0gX2FycmF5X3RvX2VsZW1fbWFwW3R5cGVfb2lk XQorICAgICAgICByZXR1cm4gX3BhcnNlX2FycmF5KHZhbHVlLCBlbGVtX29pZCkKKworICAgICMg VXNlIHJlZ2lzdGVyZWQgY29udmVydGVyIGlmIGF2YWlsYWJsZQorICAgIGNvbnZlcnRlciA9IF90 eXBlX2NvbnZlcnRlcnMuZ2V0KHR5cGVfb2lkKQorICAgIGlmIGNvbnZlcnRlcjoKKyAgICAgICAg cmV0dXJuIGNvbnZlcnRlcih2YWx1ZSkKKworICAgICMgVW5rbm93biB0eXBlcyAtIHJldHVybiBh cyBzdHJpbmcKKyAgICByZXR1cm4gdmFsdWUKKworCitkZWYgc2ltcGxpZnlfcXVlcnlfcmVzdWx0 cyhyZXN1bHRzKSAtPiBBbnk6CisgICAgIiIiCisgICAgU2ltcGxpZnkgdGhlIHJlc3VsdHMgb2Yg YSBxdWVyeSBzbyB0aGF0IHRoZSBjYWxsZXIgZG9lc24ndCBoYXZlIHRvIHVucGFjaworICAgIGxp c3RzIGFuZCB0dXBsZXMgb2YgbGVuZ3RoIDEuCisgICAgIiIiCisgICAgaWYgbGVuKHJlc3VsdHMp ID09IDE6CisgICAgICAgIHJvdyA9IHJlc3VsdHNbMF0KKyAgICAgICAgaWYgbGVuKHJvdykgPT0g MToKKyAgICAgICAgICAgICMgSWYgdGhlcmUncyBvbmx5IGEgc2luZ2xlIGNlbGwsIGp1c3QgcmV0 dXJuIHRoZSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHJvd1swXQorICAgICAgICAjIElmIHRo ZXJlJ3Mgb25seSBhIHNpbmdsZSByb3csIGp1c3QgcmV0dXJuIHRoYXQgcm93CisgICAgICAgIHJl dHVybiByb3cKKworICAgIGlmIGxlbihyZXN1bHRzKSAhPSAwIGFuZCBsZW4ocmVzdWx0c1swXSkg PT0gMToKKyAgICAgICAgIyBJZiB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgY29sdW1uLCByZXR1cm4g YW4gYXJyYXkgb2YgdmFsdWVzCisgICAgICAgIHJldHVybiBbcm93WzBdIGZvciByb3cgaW4gcmVz dWx0c10KKworICAgICMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHJvd3MgYW5kIGNvbHVtbnMsIHJl dHVybiB0aGUgcmVzdWx0cyBhcyBpcworICAgIHJldHVybiByZXN1bHRzCisKKworY2xhc3MgUEdy ZXN1bHQoY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAiIiJXcmFwcyBh IHJhdyBfUEdyZXN1bHRfcCB3aXRoIGEgbW9yZSBmcmllbmRseSBpbnRlcmZhY2UuIiIiCisKKyAg ICBkZWYgX19pbml0X18oc2VsZiwgbGliOiBjdHlwZXMuQ0RMTCwgcmVzOiBfUEdyZXN1bHRfcCk6 CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgorICAgICAgICBzZWxmLl9yZXMgPSByZXMKKworICAg IGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgc2VsZi5fbGliLlBRY2xlYXIoc2Vs Zi5fcmVzKQorICAgICAgICBzZWxmLl9yZXMgPSBOb25lCisKKyAgICBkZWYgc3RhdHVzKHNlbGYp IC0+IEV4ZWNTdGF0dXM6CisgICAgICAgIHJldHVybiBFeGVjU3RhdHVzKHNlbGYuX2xpYi5QUXJl c3VsdFN0YXR1cyhzZWxmLl9yZXMpKQorCisgICAgZGVmIGVycm9yX21lc3NhZ2Uoc2VsZik6Cisg ICAgICAgICIiIlJldHVybnMgdGhlIGVycm9yIG1lc3NhZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMg cmVzdWx0LiIiIgorICAgICAgICBtc2cgPSBzZWxmLl9saWIuUFFyZXN1bHRFcnJvck1lc3NhZ2Uo c2VsZi5fcmVzKQorICAgICAgICByZXR1cm4gbXNnLmRlY29kZSgpIGlmIG1zZyBlbHNlICIiCisK KyAgICBkZWYgX2dldF9lcnJvcl9maWVsZChzZWxmLCBmaWVsZDogRGlhZ0ZpZWxkKSAtPiBPcHRp b25hbFtzdHJdOgorICAgICAgICAiIiJHZXQgYW4gZXJyb3IgZmllbGQgZnJvbSB0aGUgcmVzdWx0 IHVzaW5nIFBRcmVzdWx0RXJyb3JGaWVsZC4iIiIKKyAgICAgICAgdmFsID0gc2VsZi5fbGliLlBR cmVzdWx0RXJyb3JGaWVsZChzZWxmLl9yZXMsIGludChmaWVsZCkpCisgICAgICAgIHJldHVybiB2 YWwuZGVjb2RlKCkgaWYgdmFsIGVsc2UgTm9uZQorCisgICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYp IC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBSYWlzZXMgTGlicHFFcnJvciB3aXRoIGRp YWdub3N0aWMgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVzdWx0LgorICAgICAgICAiIiIKKyAgICAg ICAgaWYgbm90IHNlbGYuX3JlczoKKyAgICAgICAgICAgIHJhaXNlIExpYnBxRXJyb3IoInF1ZXJ5 IGZhaWxlZDogb3V0IG9mIG1lbW9yeSBvciBjb25uZWN0aW9uIGxvc3QiKQorCisgICAgICAgIHNx bHN0YXRlID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5TUUxTVEFURSkKKyAgICAg ICAgcHJpbWFyeSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuTUVTU0FHRV9QUklN QVJZKQorICAgICAgICBkZXRhaWwgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLk1F U1NBR0VfREVUQUlMKQorICAgICAgICBoaW50ID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdG aWVsZC5NRVNTQUdFX0hJTlQpCisgICAgICAgIHNldmVyaXR5ID0gc2VsZi5fZ2V0X2Vycm9yX2Zp ZWxkKERpYWdGaWVsZC5TRVZFUklUWSkKKyAgICAgICAgc2NoZW1hX25hbWUgPSBzZWxmLl9nZXRf ZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLlNDSEVNQV9OQU1FKQorICAgICAgICB0YWJsZV9uYW1lID0g c2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5UQUJMRV9OQU1FKQorICAgICAgICBjb2x1 bW5fbmFtZSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuQ09MVU1OX05BTUUpCisg ICAgICAgIGRhdGF0eXBlX25hbWUgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLkRB VEFUWVBFX05BTUUpCisgICAgICAgIGNvbnN0cmFpbnRfbmFtZSA9IHNlbGYuX2dldF9lcnJvcl9m aWVsZChEaWFnRmllbGQuQ09OU1RSQUlOVF9OQU1FKQorICAgICAgICBjb250ZXh0ID0gc2VsZi5f Z2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5DT05URVhUKQorCisgICAgICAgIHBvc2l0aW9uX3N0 ciA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuU1RBVEVNRU5UX1BPU0lUSU9OKQor ICAgICAgICBwb3NpdGlvbiA9IGludChwb3NpdGlvbl9zdHIpIGlmIHBvc2l0aW9uX3N0ciBlbHNl IE5vbmUKKworICAgICAgICByYWlzZSBMaWJwcUVycm9yKAorICAgICAgICAgICAgcHJpbWFyeSBv ciBzZWxmLmVycm9yX21lc3NhZ2UoKSwKKyAgICAgICAgICAgIHNxbHN0YXRlPXNxbHN0YXRlLAor ICAgICAgICAgICAgc2V2ZXJpdHk9c2V2ZXJpdHksCisgICAgICAgICAgICBwcmltYXJ5PXByaW1h cnksCisgICAgICAgICAgICBkZXRhaWw9ZGV0YWlsLAorICAgICAgICAgICAgaGludD1oaW50LAor ICAgICAgICAgICAgc2NoZW1hX25hbWU9c2NoZW1hX25hbWUsCisgICAgICAgICAgICB0YWJsZV9u YW1lPXRhYmxlX25hbWUsCisgICAgICAgICAgICBjb2x1bW5fbmFtZT1jb2x1bW5fbmFtZSwKKyAg ICAgICAgICAgIGRhdGF0eXBlX25hbWU9ZGF0YXR5cGVfbmFtZSwKKyAgICAgICAgICAgIGNvbnN0 cmFpbnRfbmFtZT1jb25zdHJhaW50X25hbWUsCisgICAgICAgICAgICBwb3NpdGlvbj1wb3NpdGlv biwKKyAgICAgICAgICAgIGNvbnRleHQ9Y29udGV4dCwKKyAgICAgICAgKQorCisgICAgZGVmIGZl dGNoX2FsbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEZldGNoIGFsbCByb3dzIGFuZCBj b252ZXJ0IHRvIFB5dGhvbiB0eXBlcy4KKyAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgdHVwbGVz LCB3aXRoIHZhbHVlcyBjb252ZXJ0ZWQgYmFzZWQgb24gdGhlaXIgUG9zdGdyZVNRTCB0eXBlLgor ICAgICAgICAiIiIKKyAgICAgICAgbnJvd3MgPSBzZWxmLl9saWIuUFFudHVwbGVzKHNlbGYuX3Jl cykKKyAgICAgICAgbmNvbHMgPSBzZWxmLl9saWIuUFFuZmllbGRzKHNlbGYuX3JlcykKKworICAg ICAgICAjIEdldCB0eXBlIE9JRHMgZm9yIGVhY2ggY29sdW1uCisgICAgICAgIHR5cGVfb2lkcyA9 IFtzZWxmLl9saWIuUFFmdHlwZShzZWxmLl9yZXMsIGNvbCkgZm9yIGNvbCBpbiByYW5nZShuY29s cyldCisKKyAgICAgICAgcmVzdWx0cyA9IFtdCisgICAgICAgIGZvciByb3cgaW4gcmFuZ2UobnJv d3MpOgorICAgICAgICAgICAgcm93X2RhdGEgPSBbXQorICAgICAgICAgICAgZm9yIGNvbCBpbiBy YW5nZShuY29scyk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5fbGliLlBRZ2V0aXNudWxsKHNl bGYuX3Jlcywgcm93LCBjb2wpOgorICAgICAgICAgICAgICAgICAgICByb3dfZGF0YS5hcHBlbmQo Tm9uZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9 IHNlbGYuX2xpYi5QUWdldHZhbHVlKHNlbGYuX3Jlcywgcm93LCBjb2wpLmRlY29kZSgpCisgICAg ICAgICAgICAgICAgICAgIHJvd19kYXRhLmFwcGVuZChfY29udmVydF9wZ192YWx1ZSh2YWx1ZSwg dHlwZV9vaWRzW2NvbF0pKQorICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQodHVwbGUocm93X2Rh dGEpKQorCisgICAgICAgIHJldHVybiByZXN1bHRzCisKKworY2xhc3MgUEdjb25uKGNvbnRleHRs aWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgIiIiCisgICAgV3JhcHMgYSByYXcgX1BH Y29ubl9wIHdpdGggYSBtb3JlIGZyaWVuZGx5IGludGVyZmFjZS4gVGhpcyBpcyBqdXN0IGEKKyAg ICBzdHViOyBpdCdzIGV4cGVjdGVkIHRvIGdyb3cuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0 X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIGxpYjogY3R5cGVzLkNETEwsCisgICAgICAgIGhh bmRsZTogX1BHY29ubl9wLAorICAgICAgICBzdGFjazogY29udGV4dGxpYi5FeGl0U3RhY2ssCisg ICAgKToKKyAgICAgICAgc2VsZi5fbGliID0gbGliCisgICAgICAgIHNlbGYuX2hhbmRsZSA9IGhh bmRsZQorICAgICAgICBzZWxmLl9zdGFjayA9IHN0YWNrCisKKyAgICBkZWYgX19leGl0X18oc2Vs ZiwgKmV4Yyk6CisgICAgICAgIHNlbGYuX2xpYi5QUWZpbmlzaChzZWxmLl9oYW5kbGUpCisgICAg ICAgIHNlbGYuX2hhbmRsZSA9IE5vbmUKKworICAgIGRlZiBleGVjKHNlbGYsIHF1ZXJ5OiBzdHIp OgorICAgICAgICAiIiIKKyAgICAgICAgRXhlY3V0ZXMgYSBxdWVyeSB2aWEgUFFleGVjKCkgYW5k IHJldHVybnMgYSBQR3Jlc3VsdC4KKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9IHNlbGYuX2xp Yi5QUWV4ZWMoc2VsZi5faGFuZGxlLCBxdWVyeS5lbmNvZGUoKSkKKyAgICAgICAgcmV0dXJuIHNl bGYuX3N0YWNrLmVudGVyX2NvbnRleHQoUEdyZXN1bHQoc2VsZi5fbGliLCByZXMpKQorCisgICAg ZGVmIHNxbChzZWxmLCBxdWVyeTogc3RyKToKKyAgICAgICAgIiIiCisgICAgICAgIEV4ZWN1dGVz IGEgcXVlcnkgYW5kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgaXQgZmFpbHMuCisgICAgICAgIFJl dHVybnMgdGhlIHF1ZXJ5IHJlc3VsdHMgd2l0aCBhdXRvbWF0aWMgdHlwZSBjb252ZXJzaW9uIGFu ZCBzaW1wbGlmaWNhdGlvbi4KKyAgICAgICAgRm9yIGNvbW1hbmRzIHRoYXQgZG9uJ3QgcmV0dXJu IGRhdGEgKElOU0VSVCwgVVBEQVRFLCBldGMuKSwgcmV0dXJucyBOb25lLgorCisgICAgICAgIEV4 YW1wbGVzOgorICAgICAgICAtIFNFTEVDVCAxIC0+IDEKKyAgICAgICAgLSBTRUxFQ1QgMSwgMiAt PiAoMSwgMikKKyAgICAgICAgLSBTRUxFQ1QgKiBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSAt PiBbMSwgMiwgM10KKyAgICAgICAgLSBTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDEsICdhJyksICgy LCAnYicpKSB0IC0+IFsoMSwgJ2EnKSwgKDIsICdiJyldCisgICAgICAgIC0gQ1JFQVRFIFRBQkxF IC4uLiAtPiBOb25lCisgICAgICAgIC0gSU5TRVJUIElOVE8gLi4uIC0+IE5vbmUKKyAgICAgICAg IiIiCisgICAgICAgIHJlcyA9IHNlbGYuZXhlYyhxdWVyeSkKKyAgICAgICAgc3RhdHVzID0gcmVz LnN0YXR1cygpCisKKyAgICAgICAgaWYgc3RhdHVzID09IEV4ZWNTdGF0dXMuUEdSRVNfRkFUQUxf RVJST1I6CisgICAgICAgICAgICByZXMucmFpc2VfZXJyb3IoKQorICAgICAgICBlbGlmIHN0YXR1 cyA9PSBFeGVjU3RhdHVzLlBHUkVTX0NPTU1BTkRfT0s6CisgICAgICAgICAgICByZXR1cm4gTm9u ZQorICAgICAgICBlbGlmIHN0YXR1cyA9PSBFeGVjU3RhdHVzLlBHUkVTX1RVUExFU19PSzoKKyAg ICAgICAgICAgIHJlc3VsdHMgPSByZXMuZmV0Y2hfYWxsKCkKKyAgICAgICAgICAgIHJldHVybiBz aW1wbGlmeV9xdWVyeV9yZXN1bHRzKHJlc3VsdHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICByZXMucmFpc2VfZXJyb3IoKQorCisKK2RlZiBjb25uc3RyKG9wdHM6IERpY3Rbc3RyLCBBbnld KSAtPiBzdHI6CisgICAgIiIiCisgICAgRmxhdHRlbnMgdGhlIHByb3ZpZGVkIG9wdGlvbnMgaW50 byBhIGxpYnBxIGNvbm5lY3Rpb24gc3RyaW5nLiBWYWx1ZXMKKyAgICBhcmUgY29udmVydGVkIHRv IHN0ciBhbmQgcXVvdGVkL2VzY2FwZWQgYXMgbmVjZXNzYXJ5LgorICAgICIiIgorICAgIHNldHRp bmdzID0gW10KKworICAgIGZvciBrLCB2IGluIG9wdHMuaXRlbXMoKToKKyAgICAgICAgdiA9IHN0 cih2KQorICAgICAgICBpZiBub3QgdjoKKyAgICAgICAgICAgIHYgPSAiJyciCisgICAgICAgIGVs c2U6CisgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKCJcXCIsICJcXFxcIikKKyAgICAgICAgICAg IHYgPSB2LnJlcGxhY2UoIiciLCAiXFwnIikKKworICAgICAgICAgICAgaWYgIiAiIGluIHY6Cisg ICAgICAgICAgICAgICAgdiA9IGYiJ3t2fSciCisKKyAgICAgICAgc2V0dGluZ3MuYXBwZW5kKGYi e2t9PXt2fSIpCisKKyAgICByZXR1cm4gIiAiLmpvaW4oc2V0dGluZ3MpCisKKworZGVmIGNvbm5l Y3QoCisgICAgbGlicHFfaGFuZGxlOiBjdHlwZXMuQ0RMTCwKKyAgICBzdGFjazogY29udGV4dGxp Yi5FeGl0U3RhY2ssCisgICAgcmVtYWluaW5nX3RpbWVvdXRfZm46IENhbGxhYmxlW1tdLCBmbG9h dF0sCisgICAgKipvcHRzLAorKSAtPiBQR2Nvbm46CisgICAgIiIiCisgICAgQ29ubmVjdHMgdG8g YSBzZXJ2ZXIsIHVzaW5nIHRoZSBnaXZlbiBjb25uZWN0aW9uIG9wdGlvbnMsIGFuZAorICAgIHJl dHVybnMgYSBQR2Nvbm4gb2JqZWN0IHdyYXBwaW5nIHRoZSBjb25uZWN0aW9uIGhhbmRsZS4gQQor ICAgIGZhaWx1cmUgd2lsbCByYWlzZSBMaWJwcUVycm9yLgorCisgICAgQ29ubmVjdGlvbnMgaG9u b3IgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgdW5sZXNzIGNvbm5lY3RfdGltZW91dCBpcworICAg IGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBpbiBvcHRzLgorCisgICAgQXJnczoKKyAgICAgICAgbGli cHFfaGFuZGxlOiBjdHlwZXMuQ0RMTCBoYW5kbGUgdG8gbGlicHEgbGlicmFyeQorICAgICAgICBz dGFjazogRXhpdFN0YWNrIGZvciBtYW5hZ2luZyBjb25uZWN0aW9uIGNsZWFudXAKKyAgICAgICAg cmVtYWluaW5nX3RpbWVvdXRfZm46IEZ1bmN0aW9uIHRoYXQgcmV0dXJucyByZW1haW5pbmcgdGlt ZW91dCBpbiBzZWNvbmRzCisgICAgICAgICoqb3B0czogQ29ubmVjdGlvbiBvcHRpb25zIChob3N0 LCBwb3J0LCBkYm5hbWUsIGV0Yy4pCisKKyAgICBSZXR1cm5zOgorICAgICAgICBQR2Nvbm46IENv bm5lY3RlZCBkYXRhYmFzZSBjb25uZWN0aW9uCisKKyAgICBSYWlzZXM6CisgICAgICAgIExpYnBx RXJyb3I6IElmIGNvbm5lY3Rpb24gZmFpbHMKKyAgICAiIiIKKworICAgIGlmICJjb25uZWN0X3Rp bWVvdXQiIG5vdCBpbiBvcHRzOgorICAgICAgICB0ID0gaW50KHJlbWFpbmluZ190aW1lb3V0X2Zu KCkpCisgICAgICAgIG9wdHNbImNvbm5lY3RfdGltZW91dCJdID0gbWF4KHQsIDEpCisKKyAgICBj b25uX3AgPSBsaWJwcV9oYW5kbGUuUFFjb25uZWN0ZGIoY29ubnN0cihvcHRzKS5lbmNvZGUoKSkK KworICAgICMgQ2hlY2sgY29ubmVjdGlvbiBzdGF0dXMgYmVmb3JlIGFkZGluZyB0byBzdGFjawor ICAgIGlmIGxpYnBxX2hhbmRsZS5QUXN0YXR1cyhjb25uX3ApICE9IENvbm5lY3Rpb25TdGF0dXMu Q09OTkVDVElPTl9PSzoKKyAgICAgICAgZXJyb3JfbXNnID0gbGlicHFfaGFuZGxlLlBRZXJyb3JN ZXNzYWdlKGNvbm5fcCkuZGVjb2RlKCkKKyAgICAgICAgIyBNYW51YWxseSBjbG9zZSB0aGUgZmFp bGVkIGNvbm5lY3Rpb24KKyAgICAgICAgbGlicHFfaGFuZGxlLlBRZmluaXNoKGNvbm5fcCkKKyAg ICAgICAgcmFpc2UgTGlicHFFcnJvcihlcnJvcl9tc2cpCisKKyAgICAjIENvbm5lY3Rpb24gc3Vj Y2VlZGVkIC0gYWRkIHRvIHN0YWNrIGZvciBjbGVhbnVwCisgICAgY29ubiA9IHN0YWNrLmVudGVy X2NvbnRleHQoUEdjb25uKGxpYnBxX2hhbmRsZSwgY29ubl9wLCBzdGFjaz1zdGFjaykpCisgICAg cmV0dXJuIGNvbm4KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9lcnJvcnMucHkg Yi9zcmMvdGVzdC9weXRlc3QvbGlicHEvZXJyb3JzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5jNjY1YjY2M2UyMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3B5dGVzdC9saWJwcS9lcnJvcnMucHkKQEAgLTAsMCArMSw2MiBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorRXhjZXB0 aW9uIGNsYXNzZXMgZm9yIGxpYnBxIGVycm9ycy4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQg T3B0aW9uYWwKKworCitjbGFzcyBMaWJwcUVycm9yKFJ1bnRpbWVFcnJvcik6CisgICAgIiIiRXhj ZXB0aW9uIGZvciBsaWJwcSBlcnJvcnMgd2l0aCBQb3N0Z3JlU1FMIGRpYWdub3N0aWMgZmllbGRz LiIiIgorCisgICAgc3Fsc3RhdGU6IE9wdGlvbmFsW3N0cl0KKyAgICBzZXZlcml0eTogT3B0aW9u YWxbc3RyXQorICAgIHByaW1hcnk6IE9wdGlvbmFsW3N0cl0KKyAgICBkZXRhaWw6IE9wdGlvbmFs W3N0cl0KKyAgICBoaW50OiBPcHRpb25hbFtzdHJdCisgICAgc2NoZW1hX25hbWU6IE9wdGlvbmFs W3N0cl0KKyAgICB0YWJsZV9uYW1lOiBPcHRpb25hbFtzdHJdCisgICAgY29sdW1uX25hbWU6IE9w dGlvbmFsW3N0cl0KKyAgICBkYXRhdHlwZV9uYW1lOiBPcHRpb25hbFtzdHJdCisgICAgY29uc3Ry YWludF9uYW1lOiBPcHRpb25hbFtzdHJdCisgICAgcG9zaXRpb246IE9wdGlvbmFsW2ludF0KKyAg ICBjb250ZXh0OiBPcHRpb25hbFtzdHJdCisKKyAgICBkZWYgX19pbml0X18oCisgICAgICAgIHNl bGYsCisgICAgICAgIG1lc3NhZ2U6IHN0ciwKKyAgICAgICAgKiwKKyAgICAgICAgc3Fsc3RhdGU6 IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBzZXZlcml0eTogT3B0aW9uYWxbc3RyXSA9 IE5vbmUsCisgICAgICAgIHByaW1hcnk6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBk ZXRhaWw6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBoaW50OiBPcHRpb25hbFtzdHJd ID0gTm9uZSwKKyAgICAgICAgc2NoZW1hX25hbWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAg ICAgICB0YWJsZV9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgY29sdW1uX25h bWU6IE9wdGlvbmFsW3N0cl0gPSBOb25lLAorICAgICAgICBkYXRhdHlwZV9uYW1lOiBPcHRpb25h bFtzdHJdID0gTm9uZSwKKyAgICAgICAgY29uc3RyYWludF9uYW1lOiBPcHRpb25hbFtzdHJdID0g Tm9uZSwKKyAgICAgICAgcG9zaXRpb246IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICAgICBj b250ZXh0OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICApOgorICAgICAgICBzdXBlcigpLl9f aW5pdF9fKG1lc3NhZ2UpCisgICAgICAgIHNlbGYuc3Fsc3RhdGUgPSBzcWxzdGF0ZQorICAgICAg ICBzZWxmLnNldmVyaXR5ID0gc2V2ZXJpdHkKKyAgICAgICAgc2VsZi5wcmltYXJ5ID0gcHJpbWFy eQorICAgICAgICBzZWxmLmRldGFpbCA9IGRldGFpbAorICAgICAgICBzZWxmLmhpbnQgPSBoaW50 CisgICAgICAgIHNlbGYuc2NoZW1hX25hbWUgPSBzY2hlbWFfbmFtZQorICAgICAgICBzZWxmLnRh YmxlX25hbWUgPSB0YWJsZV9uYW1lCisgICAgICAgIHNlbGYuY29sdW1uX25hbWUgPSBjb2x1bW5f bmFtZQorICAgICAgICBzZWxmLmRhdGF0eXBlX25hbWUgPSBkYXRhdHlwZV9uYW1lCisgICAgICAg IHNlbGYuY29uc3RyYWludF9uYW1lID0gY29uc3RyYWludF9uYW1lCisgICAgICAgIHNlbGYucG9z aXRpb24gPSBwb3NpdGlvbgorICAgICAgICBzZWxmLmNvbnRleHQgPSBjb250ZXh0CisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgc3Fsc3RhdGVfY2xhc3Moc2VsZikgLT4gT3B0aW9uYWxbc3RyXToK KyAgICAgICAgIiIiUmV0dXJucyB0aGUgMi1jaGFyYWN0ZXIgU1FMU1RBVEUgY2xhc3MuIiIiCisg ICAgICAgIGlmIHNlbGYuc3Fsc3RhdGUgYW5kIGxlbihzZWxmLnNxbHN0YXRlKSA+PSAyOgorICAg ICAgICAgICAgcmV0dXJuIHNlbGYuc3Fsc3RhdGVbOjJdCisgICAgICAgIHJldHVybiBOb25lCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9weXRlc3Qv bWVzb24uYnVpbGQKaW5kZXggYjFmNjA2MWIzMDcuLmI4NmJlOTAxZTdjIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1 aWxkCkBAIC0xMCw2ICsxMCwxMCBAQCB0ZXN0cyArPSB7CiAgICdiZCc6IG1lc29uLmN1cnJlbnRf YnVpbGRfZGlyKCksCiAgICdweXRlc3QnOiB7CiAgICAgJ3Rlc3RzJzogWworICAgICAgJ3B5dC90 ZXN0X2Vycm9ycy5weScsCisgICAgICAncHl0L3Rlc3RfbGlicHEucHknLAorICAgICAgJ3B5dC90 ZXN0X211bHRpX3NlcnZlci5weScsCisgICAgICAncHl0L3Rlc3RfcXVlcnlfaGVscGVycy5weScs CiAgICAgXSwKICAgfSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXBnL19faW5p dF9fLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjRlZTkxMjg5ZjcwCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX19pbml0X18ucHkKQEAgLTAsMCArMSwxMCBAQAorIyBDb3B5 cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2Zy b20gLl9lbnYgaW1wb3J0IHJlcXVpcmVfdGVzdF9leHRyYXMsIHNraXBfdW5sZXNzX3Rlc3RfZXh0 cmFzCitmcm9tIC5zZXJ2ZXIgaW1wb3J0IFBvc3RncmVzU2VydmVyCisKK19fYWxsX18gPSBbCisg ICAgInJlcXVpcmVfdGVzdF9leHRyYXMiLAorICAgICJza2lwX3VubGVzc190ZXN0X2V4dHJhcyIs CisgICAgIlBvc3RncmVzU2VydmVyIiwKK10KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9w eXBnL19lbnYucHkgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9fZW52LnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jNDA4N2JlMzIxMgotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L3B5dGVzdC9weXBnL19lbnYucHkKQEAgLTAsMCArMSw3MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9y dCBsb2dnaW5nCitpbXBvcnQgb3MKKworaW1wb3J0IHB5dGVzdAorCitsb2dnZXIgPSBsb2dnaW5n LmdldExvZ2dlcihfX25hbWVfXykKKworCitkZWYgX3Rlc3RfZXh0cmFfc2tpcF9yZWFzb24oKmtl eXM6IHN0cikgLT4gc3RyOgorICAgIHJldHVybiAicmVxdWlyZXMge30gdG8gYmUgc2V0IGluIFBH X1RFU1RfRVhUUkEiLmZvcm1hdCgiLCAiLmpvaW4oa2V5cykpCisKKworZGVmIF9oYXNfdGVzdF9l eHRyYShrZXk6IHN0cikgLT4gYm9vbDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIFRydWUgaWYgdGhl IFBHX1RFU1RfRVhUUkEgZW52aXJvbm1lbnQgdmFyaWFibGUgY29udGFpbnMgdGhlIGdpdmVuCisg ICAga2V5LgorICAgICIiIgorICAgIGV4dHJhID0gb3MuZ2V0ZW52KCJQR19URVNUX0VYVFJBIiwg IiIpCisgICAgcmV0dXJuIGtleSBpbiBleHRyYS5zcGxpdCgpCisKKworZGVmIHJlcXVpcmVfdGVz dF9leHRyYXMoKmtleXM6IHN0cik6CisgICAgIiIiCisgICAgQSBjb252ZW5pZW5jZSBhbm5vdGF0 aW9uIHdoaWNoIHdpbGwgc2tpcCB0ZXN0cyBpZiBhbGwgb2YgdGhlIHJlcXVpcmVkIGtleXMKKyAg ICBhcmUgbm90IHByZXNlbnQgaW4gUEdfVEVTVF9FWFRSQS4KKworICAgIFRvIHNraXAgYSBwYXJ0 aWN1bGFyIHRlc3QgZnVuY3Rpb24gb3IgY2xhc3M6CisKKyAgICAgICAgQHB5cGcucmVxdWlyZV90 ZXN0X2V4dHJhcygibGRhcCIpCisgICAgICAgIGRlZiB0ZXN0X3NvbWVfbGRhcF9mZWF0dXJlKCk6 CisgICAgICAgICAgICAuLi4KKworICAgIFRvIHNraXAgYW4gZW50aXJlIG1vZHVsZToKKworICAg ICAgICBweXRlc3RtYXJrID0gcHlwZy5yZXF1aXJlX3Rlc3RfZXh0cmEoInNzbCIsICJrZXJiZXJv cyIpCisgICAgIiIiCisgICAgcmV0dXJuIHB5dGVzdC5tYXJrLnNraXBpZigKKyAgICAgICAgbm90 IGFsbChbX2hhc190ZXN0X2V4dHJhKGspIGZvciBrIGluIGtleXNdKSwKKyAgICAgICAgcmVhc29u PV90ZXN0X2V4dHJhX3NraXBfcmVhc29uKCprZXlzKSwKKyAgICApCisKKworZGVmIHNraXBfdW5s ZXNzX3Rlc3RfZXh0cmFzKCprZXlzOiBzdHIpOgorICAgICIiIgorICAgIFNraXAgdGhlIGN1cnJl bnQgdGVzdC9maXh0dXJlIGlmIGFueSBvZiB0aGUgcmVxdWlyZWQga2V5cyBhcmUgbm90IHByZXNl bnQKKyAgICBpbiBQR19URVNUX0VYVFJBLiBVc2UgdGhpcyBpbnNpZGUgZml4dHVyZXMgd2hlcmUg ZGVjb3JhdG9ycyBjYW4ndCBiZSB1c2VkLgorCisgICAgICAgIEBweXRlc3QuZml4dHVyZQorICAg ICAgICBkZWYgbXlfZml4dHVyZSgpOgorICAgICAgICAgICAgc2tpcF91bmxlc3NfdGVzdF9leHRy YXMoImxkYXAiKQorICAgICAgICAgICAgLi4uCisgICAgIiIiCisgICAgaWYgbm90IGFsbChbX2hh c190ZXN0X2V4dHJhKGspIGZvciBrIGluIGtleXNdKToKKyAgICAgICAgcHl0ZXN0LnNraXAoX3Rl c3RfZXh0cmFfc2tpcF9yZWFzb24oKmtleXMpKQorCisKK2RlZiB0ZXN0X3RpbWVvdXRfZGVmYXVs dCgpIC0+IGludDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgUEdfVEVT VF9USU1FT1VUX0RFRkFVTFQgZW52aXJvbm1lbnQgdmFyaWFibGUsIGluCisgICAgc2Vjb25kcywg b3IgMTgwIGlmIG9uZSB3YXMgbm90IHByb3ZpZGVkLgorICAgICIiIgorICAgIGRlZmF1bHQgPSBv cy5nZXRlbnYoIlBHX1RFU1RfVElNRU9VVF9ERUZBVUxUIiwgIiIpCisgICAgaWYgbm90IGRlZmF1 bHQ6CisgICAgICAgIHJldHVybiAxODAKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGludChk ZWZhdWx0KQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIHY6CisgICAgICAgIGxvZ2dlci53YXJu aW5nKCJQR19URVNUX1RJTUVPVVRfREVGQVVMVCBjb3VsZCBub3QgYmUgcGFyc2VkOiAiICsgc3Ry KHYpKQorICAgICAgICByZXR1cm4gMTgwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHlw Zy9maXh0dXJlcy5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOWQ3MmEzY2IzOAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL2ZpeHR1cmVzLnB5CkBAIC0wLDAgKzEsMzU2IEBA CisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKworaW1wb3J0IG9zCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHBhdGhsaWIKK2ltcG9y dCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKK2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0CisKK2ltcG9y dCBweXRlc3QKKworZnJvbSAuX2VudiBpbXBvcnQgdGVzdF90aW1lb3V0X2RlZmF1bHQKK2Zyb20g LnV0aWwgaW1wb3J0IGNhcHR1cmUKK2Zyb20gLnNlcnZlciBpbXBvcnQgUG9zdGdyZXNTZXJ2ZXIK KworZnJvbSBsaWJwcSBpbXBvcnQgbG9hZF9saWJwcV9oYW5kbGUsIGNvbm5lY3QgYXMgbGlicHFf Y29ubmVjdAorCisKKyMgU3Rhc2gga2V5IGZvciB0cmFja2luZyBzZXJ2ZXJzIGZvciBsb2cgcmVw b3J0aW5nLgorX3NlcnZlcnNfa2V5ID0gcHl0ZXN0LlN0YXNoS2V5W0xpc3RbUG9zdGdyZXNTZXJ2 ZXJdXSgpCisKKworZGVmIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3Qs IHNlcnZlcik6CisgICAgIiIiUmVjb3JkIGEgc2VydmVyIGZvciBsb2cgcmVwb3J0aW5nIG9uIHRl c3QgZmFpbHVyZS4iIiIKKyAgICBpZiBfc2VydmVyc19rZXkgbm90IGluIHJlcXVlc3Qubm9kZS5z dGFzaDoKKyAgICAgICAgcmVxdWVzdC5ub2RlLnN0YXNoW19zZXJ2ZXJzX2tleV0gPSBbXQorICAg IHJlcXVlc3Qubm9kZS5zdGFzaFtfc2VydmVyc19rZXldLmFwcGVuZChzZXJ2ZXIpCisKKworQHB5 dGVzdC5maXh0dXJlCitkZWYgcmVtYWluaW5nX3RpbWVvdXQoKToKKyAgICAiIiIKKyAgICBUaGlz IGZpeHR1cmUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgaG93IG11Y2ggb2YgdGhl CisgICAgUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQgcmVtYWlucyBmb3IgdGhlIGN1cnJlbnQgdGVz dCwgaW4gZnJhY3Rpb25hbCBzZWNvbmRzLgorICAgIFRoaXMgdmFsdWUgaXMgbmV2ZXIgbGVzcyB0 aGFuIHplcm8uCisKKyAgICBUaGlzIGZpeHR1cmUgaXMgcGVyLXRlc3QsIHNvIHRoZSBkZWFkbGlu ZSBpcyBhbHNvIHJlc2V0IG9uIGEgcGVyLXRlc3QgYmFzaXMuCisgICAgIiIiCisgICAgbm93ID0g dGltZS5tb25vdG9uaWMoKQorICAgIGRlYWRsaW5lID0gbm93ICsgdGVzdF90aW1lb3V0X2RlZmF1 bHQoKQorCisgICAgcmV0dXJuIGxhbWJkYTogbWF4KGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMo KSwgMCkKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgcmVtYWluaW5n X3RpbWVvdXRfbW9kdWxlKCk6CisgICAgIiIiCisgICAgU2FtZSBhcyByZW1haW5pbmdfdGltZW91 dCwgYnV0IHRoZSBkZWFkbGluZSBpcyBzZXQgb25jZSBwZXIgbW9kdWxlLgorCisgICAgVGhpcyBm aXh0dXJlIGlzIHBlci1tb2R1bGUsIHdoaWNoIG1lYW5zIGl0J3MgZ2VuZXJhbGx5IG9ubHkgcmVh bGx5IHVzZWZ1bAorICAgIGZvciBjb25maWd1cmluZyB0aW1lb3V0cyBvZiBvcGVyYXRpb25zIHRo YXQgaGFwcGVuIGluIHRoZSBzZXR1cCBwaGFzZSBvZgorICAgIGFub3RoZXIgbW9kdWxlIGZpeHR1 cmVzLiBJZiB5b3UgdXNlIGl0IGluIGEgdGVzdCBpdCB3b3VsZCBtZWFuIHRoYXQgZWFjaAorICAg IHN1YnNlcXVlbnQgdGVzdCBpbiB0aGUgbW9kdWxlIGdldHMgYSByZWR1Y2VkIHRpbWVvdXQuCisg ICAgIiIiCisgICAgbm93ID0gdGltZS5tb25vdG9uaWMoKQorICAgIGRlYWRsaW5lID0gbm93ICsg dGVzdF90aW1lb3V0X2RlZmF1bHQoKQorCisgICAgcmV0dXJuIGxhbWJkYTogbWF4KGRlYWRsaW5l IC0gdGltZS5tb25vdG9uaWMoKSwgMCkKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Np b24iKQorZGVmIGxpYnBxX2hhbmRsZShsaWJkaXIsIGJpbmRpcik6CisgICAgIiIiCisgICAgTG9h ZHMgYSBjdHlwZXMgaGFuZGxlIGZvciBsaWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24gcHJvdG90 eXBlcyBhcmUKKyAgICBpbml0aWFsaXplZCBmb3IgZ2VuZXJhbCB1c2UuCisgICAgIiIiCisgICAg dHJ5OgorICAgICAgICByZXR1cm4gbG9hZF9saWJwcV9oYW5kbGUobGliZGlyLCBiaW5kaXIpCisg ICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgaWYgIndyb25nIEVMRiBjbGFzcyIgaW4g c3RyKGUpOgorICAgICAgICAgICAgIyBUaGlzIGhhcHBlbnMgaW4gQ0kgd2hlbiB0cnlpbmcgdG8g bGVhZCBhIDMyLWJpdCBsaWJwcSBsaWJyYXJ5CisgICAgICAgICAgICAjIHdpdGggYSA2NC1iaXQg UHl0aG9uCisgICAgICAgICAgICBweXRlc3Quc2tpcCgibGlicHEgYXJjaGl0ZWN0dXJlIGRvZXMg bm90IG1hdGNoIFB5dGhvbiBpbnRlcnByZXRlciIpCisgICAgICAgIHJhaXNlCisKKworQHB5dGVz dC5maXh0dXJlCitkZWYgY29ubmVjdChsaWJwcV9oYW5kbGUsIHJlbWFpbmluZ190aW1lb3V0KToK KyAgICAiIiIKKyAgICBSZXR1cm5zIGEgZnVuY3Rpb24gdG8gY29ubmVjdCB0byBQb3N0Z3JlU1FM IHZpYSBsaWJwcS4KKworICAgIFRoZSByZXR1cm5lZCBmdW5jdGlvbiBhY2NlcHRzIGNvbm5lY3Rp b24gb3B0aW9ucyBhcyBrZXl3b3JkIGFyZ3VtZW50cworICAgIChob3N0LCBwb3J0LCBkYm5hbWUs IGV0Yy4pIGFuZCByZXR1cm5zIGEgUEdjb25uIG9iamVjdC4gQ29ubmVjdGlvbnMKKyAgICBhcmUg YXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisKKyAgICBF eGFtcGxlOgorICAgICAgICBjb25uID0gY29ubmVjdChob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTU0 MzIsIGRibmFtZT0ncG9zdGdyZXMnKQorICAgICAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNU IDEiKQorICAgICIiIgorICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoK KworICAgICAgICBkZWYgX2Nvbm5lY3QoKipvcHRzKToKKyAgICAgICAgICAgIHJldHVybiBsaWJw cV9jb25uZWN0KGxpYnBxX2hhbmRsZSwgc3RhY2ssIHJlbWFpbmluZ190aW1lb3V0LCAqKm9wdHMp CisKKyAgICAgICAgeWllbGQgX2Nvbm5lY3QKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNl c3Npb24iKQorZGVmIHBnX2NvbmZpZygpOgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHBhdGgg dG8gcGdfY29uZmlnLiBVc2VzIFBHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBzZXQs CisgICAgb3RoZXJ3aXNlIHVzZXMgJ3BnX2NvbmZpZycgZnJvbSBQQVRILgorICAgICIiIgorICAg IHJldHVybiBvcy5lbnZpcm9uLmdldCgiUEdfQ09ORklHIiwgInBnX2NvbmZpZyIpCisKKworQHB5 dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIikKK2RlZiBiaW5kaXIocGdfY29uZmlnKToKKyAg ICAiIiIKKyAgICBSZXR1cm5zIHRoZSBQb3N0Z3JlU1FMIGJpbiBkaXJlY3RvcnkgdXNpbmcgcGdf Y29uZmlnIC0tYmluZGlyLgorICAgICIiIgorICAgIHJldHVybiBwYXRobGliLlBhdGgoY2FwdHVy ZShwZ19jb25maWcsICItLWJpbmRpciIsIHNpbGVudD1UcnVlKSkKKworCitAcHl0ZXN0LmZpeHR1 cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGxpYmRpcihwZ19jb25maWcpOgorICAgICIiIgorICAg IFJldHVybnMgdGhlIFBvc3RncmVTUUwgbGliIGRpcmVjdG9yeSB1c2luZyBwZ19jb25maWcgLS1s aWJkaXIuCisgICAgIiIiCisgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChjYXB0dXJlKHBnX2NvbmZp ZywgIi0tbGliZGlyIiwgc2lsZW50PVRydWUpKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0i c2Vzc2lvbiIpCitkZWYgdG1wX2NoZWNrKHRtcF9wYXRoX2ZhY3RvcnkpIC0+IHBhdGhsaWIuUGF0 aDoKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSB0bXBfY2hlY2sgZGlyZWN0b3J5IHRoYXQgc2hv dWxkIGJlIHVzZWQgZm9yIHRoZSB0ZXN0cy4gSWYKKyAgICBURVNUREFUQURJUiBpcyBwcm92aWRl ZCwgdGhhdCB3aWxsIGJlIHVzZWQ7IG90aGVyd2lzZSBhIG5ldyB0ZW1wb3JhcnkKKyAgICBkaXJl Y3RvcnkgaXMgY3JlYXRlZCBpbiB0aGUgcHl0ZXN0IHRlbXAgcm9vdC4KKyAgICAiIiIKKyAgICBk ID0gb3MuZ2V0ZW52KCJURVNUREFUQURJUiIpCisgICAgaWYgZDoKKyAgICAgICAgZCA9IHBhdGhs aWIuUGF0aChkKQorICAgIGVsc2U6CisgICAgICAgIGQgPSB0bXBfcGF0aF9mYWN0b3J5Lm1rdGVt cCgidG1wX2NoZWNrIikKKworICAgIHJldHVybiBkCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3Bl PSJzZXNzaW9uIikKK2RlZiBkYXRhZGlyKHRtcF9jaGVjayk6CisgICAgIiIiCisgICAgUmV0dXJu cyB0aGUgZGF0YSBkaXJlY3RvcnkgdG8gdXNlIGZvciB0aGUgcGcgZml4dHVyZS4KKyAgICAiIiIK KworICAgIHJldHVybiB0bXBfY2hlY2sgLyAicGdkYXRhIgorCisKK0BweXRlc3QuZml4dHVyZShz Y29wZT0ic2Vzc2lvbiIpCitkZWYgc29ja2RpcigpOgorICAgICIiIgorICAgIFJldHVybnMgdGhl IGRpcmVjdG9yeSBuYW1lIHRvIHVzZSBhcyB0aGUgc2VydmVyJ3MgdW5peF9zb2NrZXRfZGlyZWN0 b3JpZXMKKyAgICBzZXR0aW5nLiBMb2NhbCBjbGllbnQgY29ubmVjdGlvbnMgdXNlIHRoaXMgYXMg dGhlIFBHSE9TVC4KKworICAgIFVzZXMgdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5IGRpcmVj dGx5IGluc3RlYWQgb2YgcHl0ZXN0J3MKKyAgICB0bXBfcGF0aF9mYWN0b3J5LCBiZWNhdXNlIG1h Y09TIGxpbWl0cyBVbml4IHNvY2tldCBwYXRocyB0byAxMDQgYnl0ZXMKKyAgICBhbmQgcHl0ZXN0 J3MgbmVzdGVkIHRlbXAgZGlyZWN0b3JpZXMgY2FuIGV4Y2VlZCB0aGF0LgorICAgICIiIgorICAg IHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KHByZWZpeD0icHl0ZXN0X3Bvc3RncmVz X3NvY2siKSBhcyBkOgorICAgICAgICB5aWVsZCBwYXRobGliLlBhdGgoZCkKKworCitAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHBnX3NlcnZlcl9nbG9iYWwocmVxdWVzdCwg YmluZGlyLCBkYXRhZGlyLCBzb2NrZGlyLCBsaWJwcV9oYW5kbGUpOgorICAgICIiIgorICAgIFN0 YXJ0cyBhIHJ1bm5pbmcgUG9zdGdyZXMgc2VydmVyIGxpc3RlbmluZyBvbiBsb2NhbGhvc3QuIFRo ZSBIQkEgaW5pdGlhbGx5CisgICAgYWxsb3dzIG9ubHkgbG9jYWwgVU5JWCBjb25uZWN0aW9ucyBm cm9tIHRoZSBzYW1lIHVzZXIuCisKKyAgICBSZXR1cm5zIGEgUG9zdGdyZXNTZXJ2ZXIgaW5zdGFu Y2Ugd2l0aCBtZXRob2RzIGZvciBzZXJ2ZXIgbWFuYWdlbWVudCwgY29uZmlndXJhdGlvbiwKKyAg ICBhbmQgY3JlYXRpbmcgdGVzdCBkYXRhYmFzZXMvdXNlcnMuCisgICAgIiIiCisgICAgc2VydmVy ID0gUG9zdGdyZXNTZXJ2ZXIoImRlZmF1bHQiLCBiaW5kaXIsIGRhdGFkaXIsIHNvY2tkaXIsIGxp YnBxX2hhbmRsZSkKKyAgICB0cnk6CisgICAgICAgIHNlcnZlci5zdGFydCgpCisgICAgZXhjZXB0 IEV4Y2VwdGlvbjoKKyAgICAgICAgIyBub3JtYWxseSB3ZSBvbmx5IGFkZCB0aGUgZ2xvYmFsIHNl cnZlciBmb3IgcmVwb3J0aW5nIHdoZW4gdGhlIHRlc3QKKyAgICAgICAgIyBhY3R1YWxseSB1c2Vz IHRoZSBwZyBmaXh0dXJlLiBCdXQgaWYgdGhlIHNlcnZlciBmYWlscyB0byBzdGFydCBoZXJlLAor ICAgICAgICAjIHRoZW4gd2Ugd29uJ3QgaGF2ZSB0aGF0IG9wcG9ydHVuaXR5LCBzbyBhZGQgaXQg bm93IHRvIGVuc3VyZSBhbnkKKyAgICAgICAgIyBzdGFydHVwIGxvZ3MgYXJlIGluY2x1ZGVkIGlu IHRoZSByZXBvcnQuCisgICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJl cXVlc3QsIHNlcnZlcikKKyAgICAgICAgcmFpc2UKKworICAgIHlpZWxkIHNlcnZlcgorCisgICAg IyBDbGVhbnVwIGFueSB0ZXN0IHJlc291cmNlcworICAgIHNlcnZlci5jbGVhbnVwKCkKKworICAg ICMgU3RvcCB0aGUgc2VydmVyCisgICAgc2VydmVyLnN0b3AoKQorCisKK0BweXRlc3QuZml4dHVy ZShzY29wZT0ibW9kdWxlIikKK2RlZiBwZ19zZXJ2ZXJfbW9kdWxlKHBnX3NlcnZlcl9nbG9iYWwp OgorICAgICIiIgorICAgIE1vZHVsZS1zY29wZWQgc2VydmVyIGNvbnRleHQuIFdoaWNoIGNhbiBi ZSB1c2VmdWwgc28gdGhhdCBjZXJ0YWluIHNldHRpbmdzCisgICAgY2FuIGJlIG92ZXJyaWRlbiBh dCB0aGUgbW9kdWxlIGxldmVsIHRocm91Z2ggYXV0b3VzZSBmaXh0dXJlcy4gQW4gZXhhbXBsZQor ICAgIG9mIHRoaXMgaXMgaW4gdGhlIFNTTCB0ZXN0cy4KKyAgICAiIiIKKyAgICB3aXRoIHBnX3Nl cnZlcl9nbG9iYWwuc3ViY29udGV4dCgpIGFzIHM6CisgICAgICAgIHlpZWxkIHMKKworCitAcHl0 ZXN0LmZpeHR1cmUKK2RlZiBwZyhyZXF1ZXN0LCBwZ19zZXJ2ZXJfbW9kdWxlLCByZW1haW5pbmdf dGltZW91dCk6CisgICAgIiIiCisgICAgUGVyLXRlc3Qgc2VydmVyIGNvbnRleHQuIFVzZSB0aGlz IGZpeHR1cmUgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoZSBzZXJ2ZXIKKyAgICB3aGljaCB3aWxsIGJl IHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QgKGUuZy4sIGNyZWF0aW5nIHRlc3QK KyAgICB1c2Vycy9kYXRhYmFzZXMpLgorCisgICAgQWxzbyBjYXB0dXJlcyB0aGUgUG9zdGdyZVNR TCBsb2cgcG9zaXRpb24gYXQgdGVzdCBzdGFydCBzbyB0aGF0IGFueSBuZXcKKyAgICBsb2cgZW50 cmllcyBjYW4gYmUgaW5jbHVkZWQgaW4gdGhlIHRlc3QgcmVwb3J0IG9uIGZhaWx1cmUuCisgICAg IiIiCisgICAgd2l0aCBwZ19zZXJ2ZXJfbW9kdWxlLnN0YXJ0X25ld190ZXN0KHJlbWFpbmluZ190 aW1lb3V0KSBhcyBzOgorICAgICAgICBfcmVjb3JkX3NlcnZlcl9mb3JfbG9nX3JlcG9ydGluZyhy ZXF1ZXN0LCBzKQorICAgICAgICB5aWVsZCBzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY29u bihwZyk6CisgICAgIiIiCisgICAgUmV0dXJucyBhIGNvbm5lY3RlZCBQR2Nvbm4gaW5zdGFuY2Ug dG8gdGhlIHRlc3QgUG9zdGdyZVNRTCBzZXJ2ZXIuCisgICAgVGhlIGNvbm5lY3Rpb24gaXMgYXV0 b21hdGljYWxseSBjbGVhbmVkIHVwIGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisKKyAgICBFeGFt cGxlOgorICAgICAgICBkZWYgdGVzdF9zb21ldGhpbmcoY29ubik6CisgICAgICAgICAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEiKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSAx CisgICAgIiIiCisgICAgcmV0dXJuIHBnLmNvbm5lY3QoKQorCisKK0BweXRlc3QuZml4dHVyZQor ZGVmIGNyZWF0ZV9wZyhyZXF1ZXN0LCBiaW5kaXIsIHNvY2tkaXIsIGxpYnBxX2hhbmRsZSwgdG1w X2NoZWNrLCByZW1haW5pbmdfdGltZW91dCk6CisgICAgIiIiCisgICAgRmFjdG9yeSBmaXh0dXJl IHRvIGNyZWF0ZSBhZGRpdGlvbmFsIFBvc3RncmVTUUwgc2VydmVycyAocGVyLXRlc3Qgc2NvcGUp LgorCisgICAgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRlcyBuZXcgUG9zdGdyZVNRTCBz ZXJ2ZXIgaW5zdGFuY2VzLgorICAgIFNlcnZlcnMgYXJlIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB1 cCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0LgorCisgICAgRXhhbXBsZToKKyAgICAgICAgZGVmIHRl c3RfbXVsdGlwbGVfc2VydmVycyhjcmVhdGVfcGcpOgorICAgICAgICAgICAgbm9kZTEgPSBjcmVh dGVfcGcoKQorICAgICAgICAgICAgbm9kZTIgPSBjcmVhdGVfcGcoKQorICAgICAgICAgICAgbm9k ZTMgPSBjcmVhdGVfcGcoKQorICAgICIiIgorICAgIHNlcnZlcnMgPSBbXQorCisgICAgZGVmIF9j cmVhdGUobmFtZT1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAg ICAgICAgICAgIGNvdW50ID0gbGVuKHNlcnZlcnMpICsgMQorICAgICAgICAgICAgbmFtZSA9IGYi cGd7Y291bnR9IgorCisgICAgICAgIGRhdGFkaXIgPSB0bXBfY2hlY2sgLyBmInBnZGF0YV97bmFt ZX0iCisgICAgICAgIHNlcnZlciA9IFBvc3RncmVzU2VydmVyKG5hbWUsIGJpbmRpciwgZGF0YWRp ciwgc29ja2RpciwgbGlicHFfaGFuZGxlLCAqKmt3YXJncykKKyAgICAgICAgc2VydmVycy5hcHBl bmQoc2VydmVyKQorICAgICAgICBfcmVjb3JkX3NlcnZlcl9mb3JfbG9nX3JlcG9ydGluZyhyZXF1 ZXN0LCBzZXJ2ZXIpCisgICAgICAgIHNlcnZlci5zZXRfdGltZW91dChyZW1haW5pbmdfdGltZW91 dCkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJuIHNlcnZlcgorCisgICAg eWllbGQgX2NyZWF0ZQorCisgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAgICAgICBzZXJ2 ZXIuY2xlYW51cCgpCisgICAgICAgIHNlcnZlci5zdG9wKCkKKworCitAcHl0ZXN0LmZpeHR1cmUo c2NvcGU9Im1vZHVsZSIpCitkZWYgX21vZHVsZV9zY29wZWRfc2VydmVycygpOgorICAgICIiIlNl c3Npb24tc2NvcGVkIGxpc3QgdG8gdHJhY2sgc2VydmVycyBjcmVhdGVkIGJ5IGNyZWF0ZV9wZ19t b2R1bGUuIiIiCisgICAgcmV0dXJuIFtdCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1 bGUiKQorZGVmIGNyZWF0ZV9wZ19tb2R1bGUoCisgICAgcmVxdWVzdCwKKyAgICBiaW5kaXIsCisg ICAgc29ja2RpciwKKyAgICBsaWJwcV9oYW5kbGUsCisgICAgdG1wX2NoZWNrLAorICAgIHJlbWFp bmluZ190aW1lb3V0X21vZHVsZSwKKyAgICBfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzLAorKToKKyAg ICAiIiIKKyAgICBGYWN0b3J5IGZpeHR1cmUgdG8gY3JlYXRlIGFkZGl0aW9uYWwgUG9zdGdyZVNR TCBzZXJ2ZXJzIChtb2R1bGUgc2NvcGUpLgorCisgICAgTGlrZSBjcmVhdGVfcGcsIGJ1dCBzZXJ2 ZXJzIHBlcnNpc3QgZm9yIHRoZSBlbnRpcmUgdGVzdCBtb2R1bGUuCisgICAgVXNlIHRoaXMgd2hl biBtdWx0aXBsZSB0ZXN0cyBpbiBhIG1vZHVsZSBjYW4gc2hhcmUgdGhlIHNhbWUgc2VydmVycy4K KworICAgIFRoZSB0aW1lb3V0IGlzIGF1dG9tYXRpY2FsbHkgc2V0IG9uIGFsbCBzZXJ2ZXJzIGF0 IHRoZSBzdGFydCBvZiBlYWNoIHRlc3QKKyAgICB2aWEgdGhlIF9zZXRfbW9kdWxlX3NlcnZlcl90 aW1lb3V0cyBhdXRvdXNlIGZpeHR1cmUuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCisgICAgICAgIGRlZiBzaGFyZWRfbm9kZXMoY3JlYXRl X3BnX21vZHVsZSk6CisgICAgICAgICAgICByZXR1cm4gW2NyZWF0ZV9wZ19tb2R1bGUoKSBmb3Ig XyBpbiByYW5nZSgzKV0KKyAgICAiIiIKKworICAgIGRlZiBfY3JlYXRlKG5hbWU9Tm9uZSwgKipr d2FyZ3MpOgorICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICBjb3VudCA9IGxl bihfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzKSArIDEKKyAgICAgICAgICAgIG5hbWUgPSBmInBne2Nv dW50fSIKKyAgICAgICAgZGF0YWRpciA9IHRtcF9jaGVjayAvIGYicGdkYXRhX3tuYW1lfSIKKyAg ICAgICAgc2VydmVyID0gUG9zdGdyZXNTZXJ2ZXIobmFtZSwgYmluZGlyLCBkYXRhZGlyLCBzb2Nr ZGlyLCBsaWJwcV9oYW5kbGUsICoqa3dhcmdzKQorICAgICAgICBfbW9kdWxlX3Njb3BlZF9zZXJ2 ZXJzLmFwcGVuZChzZXJ2ZXIpCisgICAgICAgIF9yZWNvcmRfc2VydmVyX2Zvcl9sb2dfcmVwb3J0 aW5nKHJlcXVlc3QsIHNlcnZlcikKKyAgICAgICAgc2VydmVyLnNldF90aW1lb3V0KHJlbWFpbmlu Z190aW1lb3V0X21vZHVsZSkKKyAgICAgICAgc2VydmVyLnN0YXJ0KCkKKyAgICAgICAgcmV0dXJu IHNlcnZlcgorCisgICAgeWllbGQgX2NyZWF0ZQorCisgICAgZm9yIHNlcnZlciBpbiBfbW9kdWxl X3Njb3BlZF9zZXJ2ZXJzOgorICAgICAgICBzZXJ2ZXIuY2xlYW51cCgpCisgICAgICAgIHNlcnZl ci5zdG9wKCkKKworCitAcHl0ZXN0LmZpeHR1cmUoYXV0b3VzZT1UcnVlKQorZGVmIF9zZXRfbW9k dWxlX3NlcnZlcl90aW1lb3V0cyhfbW9kdWxlX3Njb3BlZF9zZXJ2ZXJzLCByZW1haW5pbmdfdGlt ZW91dCk6CisgICAgIiIiUmVnaXN0ZXJzIGFsbCBtb2R1bGUtc2NvcGVkIHNlcnZlcnMgZm9yIHRo aXMgdGVzdC4KKworICAgIEl0J3MgaGFyZCB0byByZWxpYWJseSBkZXRlY3Qgd2hldGhlciBhIHRl c3QgdXNlcyBhIG1vZHVsZS1zY29wZWQgc2VydmVyIG9yCisgICAgbm90LiBTbyB0aGlzIHNpbXBs eSBhc3N1bWVzIGFsbCB0ZXN0cyBpbiB0aGUgbW9kdWxlIHVzZSB0aGUgbW9kdWxlLXNjb3BlZAor ICAgIHNlcnZlcnMuIFRoZXJlJ3MgbGl0dGxlIGhhcm0gaW4gcmVnaXN0ZXJpbmcgc2VydmVycyBm b3IgdGVzdHMgdGhhdCBkb24ndAorICAgIHVzZSB0aGVtLgorICAgICIiIgorICAgIHdpdGggY29u dGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKKyAgICAgICAgZm9yIHNlcnZlciBpbiBfbW9k dWxlX3Njb3BlZF9zZXJ2ZXJzOgorICAgICAgICAgICAgc3RhY2suZW50ZXJfY29udGV4dChzZXJ2 ZXIuc3RhcnRfbmV3X3Rlc3QocmVtYWluaW5nX3RpbWVvdXQpKQorICAgICAgICB5aWVsZAorCisK K0BweXRlc3QuaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSwgdHJ5bGFzdD1UcnVlKQorZGVmIHB5 dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6CisgICAgIiIiCisgICAgQWRkcyBQ b3N0Z3JlU1FMIHNlcnZlciBsb2dzIHRvIHRoZSB0ZXN0IHJlcG9ydCBzZWN0aW9ucy4KKyAgICAi IiIKKyAgICBvdXRjb21lID0geWllbGQKKyAgICByZXBvcnQgPSBvdXRjb21lLmdldF9yZXN1bHQo KQorCisgICAgc2Vzc2lvbl9zZXJ2ZXJzID0gaXRlbS5zZXNzaW9uLnN0YXNoLmdldChfc2VydmVy c19rZXksIFtdKQorCisgICAgbW9kdWxlX25vZGUgPSBpdGVtLmdldHBhcmVudChweXRlc3QuTW9k dWxlKQorICAgIG1vZHVsZV9zZXJ2ZXJzID0gbW9kdWxlX25vZGUuc3Rhc2guZ2V0KF9zZXJ2ZXJz X2tleSwgW10pIGlmIG1vZHVsZV9ub2RlIGVsc2UgW10KKworICAgIHNlcnZlcnMgPSBzZXNzaW9u X3NlcnZlcnMgKyBtb2R1bGVfc2VydmVycyArIGl0ZW0uc3Rhc2guZ2V0KF9zZXJ2ZXJzX2tleSwg W10pCisKKyAgICBpbmNsdWRlX25hbWUgPSBsZW4oc2VydmVycykgPiAxCisKKyAgICBmb3Igc2Vy dmVyIGluIHNlcnZlcnM6CisgICAgICAgIGNvbnRlbnQgPSBzZXJ2ZXIubG9nX2NvbnRlbnQoKQor ICAgICAgICBpZiBjb250ZW50LnN0cmlwKCk6CisgICAgICAgICAgICBzZWN0aW9uX3RpdGxlID0g ZiJQb3N0Z3JlcyBsb2cge3JlcG9ydC53aGVufSIKKyAgICAgICAgICAgIGlmIGluY2x1ZGVfbmFt ZToKKyAgICAgICAgICAgICAgICBzZWN0aW9uX3RpdGxlICs9IGYiICh7c2VydmVyLm5hbWV9KSIK KyAgICAgICAgICAgIHJlcG9ydC5zZWN0aW9ucy5hcHBlbmQoKHNlY3Rpb25fdGl0bGUsIGNvbnRl bnQpKQorICAgICAgICBzZXJ2ZXIucmVzZXRfbG9nX3Bvc2l0aW9uKCkKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3B5dGVzdC9weXBnL3NlcnZlci5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL3NlcnZl ci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzBlMzA4YjAxMzUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHlwZy9zZXJ2ZXIucHkKQEAgLTAs MCArMSw0ODIgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IG9zCitpbXBvcnQgcGF0 aGxpYgoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBz b2NrZXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gY29sbGVjdGlv bnMgaW1wb3J0IG5hbWVkdHVwbGUKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZSwgT3B0aW9u YWwKKworZnJvbSAudXRpbCBpbXBvcnQgcnVuCitmcm9tIGxpYnBxIGltcG9ydCBQR2Nvbm4sIGNv bm5lY3QgYXMgbGlicHFfY29ubmVjdAorCisKK2NsYXNzIEZpbGVCYWNrdXAoY29udGV4dGxpYi5B YnN0cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAiIiIKKyAgICBBIGNvbnRleHQgbWFuYWdlciB3 aGljaCBiYWNrcyB1cCBhIGZpbGUncyBjb250ZW50cywgcmVzdG9yaW5nIHRoZW0gb24gZXhpdC4K KyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlOiBwYXRobGliLlBhdGgpOgor ICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgICAgICBzZWxmLl9maWxlID0gZmlsZQor CisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRl bXBvcmFyeUZpbGUoCisgICAgICAgICAgICBwcmVmaXg9c2VsZi5fZmlsZS5uYW1lLCBkaXI9c2Vs Zi5fZmlsZS5wYXJlbnQsIGRlbGV0ZT1GYWxzZQorICAgICAgICApIGFzIGY6CisgICAgICAgICAg ICBzZWxmLl9iYWNrdXAgPSBwYXRobGliLlBhdGgoZi5uYW1lKQorCisgICAgICAgIHNodXRpbC5j b3B5ZmlsZShzZWxmLl9maWxlLCBzZWxmLl9iYWNrdXApCisKKyAgICAgICAgcmV0dXJuIHNlbGYK KworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAgICAgIyBTd2FwIHRoZSBiYWNr dXAgYW5kIHRoZSBvcmlnaW5hbCBmaWxlLCBzbyB0aGF0IHRoZSBtb2RpZmllZCBjb250ZW50cwor ICAgICAgICAjIGNhbiBzdGlsbCBiZSBpbnNwZWN0ZWQgaW4gY2FzZSBvZiBmYWlsdXJlLgorICAg ICAgICB0bXAgPSBzZWxmLl9iYWNrdXAucGFyZW50IC8gKHNlbGYuX2JhY2t1cC5uYW1lICsgIi50 bXAiKQorCisgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLl9maWxlLCB0bXApCisgICAgICAg IHNodXRpbC5jb3B5ZmlsZShzZWxmLl9iYWNrdXAsIHNlbGYuX2ZpbGUpCisgICAgICAgIHNodXRp bC5tb3ZlKHRtcCwgc2VsZi5fYmFja3VwKQorCisKK2NsYXNzIEhCQShGaWxlQmFja3VwKToKKyAg ICAiIiIKKyAgICBCYWNrcyB1cCBhIHNlcnZlcidzIEhCQSBjb25maWd1cmF0aW9uIGFuZCBwcm92 aWRlcyBtZWFucyBmb3IgdGVtcG9yYXJpbHkKKyAgICBlZGl0aW5nIGl0LgorICAgICIiIgorCisg ICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGFkaXI6IHBhdGhsaWIuUGF0aCk6CisgICAgICAgIHN1 cGVyKCkuX19pbml0X18oZGF0YWRpciAvICJwZ19oYmEuY29uZiIpCisKKyAgICBkZWYgcHJlcGVu ZChzZWxmLCAqbGluZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVtcG9yYXJpbHkgcHJlcGVu ZHMgbGluZXMgdG8gdGhlIHNlcnZlcidzIHBnX2hiYS5jb25mLgorCisgICAgICAgIEFzIHN1Z2Fy IGZvciBhbGlnbmluZyBIQkEgY29sdW1ucyBpbiB0aGUgdGVzdHMsIGVhY2ggbGluZSBjYW4gYmUg ZWl0aGVyCisgICAgICAgIGEgc3RyaW5nIG9yIGEgbGlzdCBvZiBzdHJpbmdzLiBMaXN0IGVsZW1l bnRzIHdpbGwgYmUgam9pbmVkIGJ5IHNpbmdsZQorICAgICAgICBzcGFjZXMgYmVmb3JlIHRoZXkg YXJlIHdyaXR0ZW4gdG8gZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHdpdGggb3BlbihzZWxm Ll9maWxlLCAiciIpIGFzIGY6CisgICAgICAgICAgICBwcmlvcl9kYXRhID0gZi5yZWFkKCkKKwor ICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgInciKSBhcyBmOgorICAgICAgICAgICAgZm9y IGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBsaXN0 KToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoKmxpbmUsIGZpbGU9ZikKKyAgICAgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwcmludChsaW5lLCBmaWxlPWYpCisKKyAg ICAgICAgICAgIGYud3JpdGUocHJpb3JfZGF0YSkKKworCitjbGFzcyBDb25maWcoRmlsZUJhY2t1 cCk6CisgICAgIiIiCisgICAgQmFja3MgdXAgYSBzZXJ2ZXIncyBwb3N0Z3Jlc3FsLmNvbmYgYW5k IHByb3ZpZGVzIG1lYW5zIGZvciB0ZW1wb3JhcmlseQorICAgIGVkaXRpbmcgaXQuCisgICAgIiIi CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YWRpcjogcGF0aGxpYi5QYXRoKToKKyAgICAg ICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhZGlyIC8gInBvc3RncmVzcWwuY29uZiIpCisKKyAgICBk ZWYgc2V0KHNlbGYsICoqZ3Vjcyk6CisgICAgICAgICIiIgorICAgICAgICBUZW1wb3JhcmlseSBh cHBlbmRzIEdVQyBzZXR0aW5ncyB0byB0aGUgc2VydmVyJ3MgcG9zdGdyZXNxbC5jb25mLgorICAg ICAgICAiIiIKKworICAgICAgICB3aXRoIG9wZW4oc2VsZi5fZmlsZSwgImEiKSBhcyBmOgorICAg ICAgICAgICAgcHJpbnQoZmlsZT1mKQorCisgICAgICAgICAgICBmb3IgbiwgdiBpbiBndWNzLml0 ZW1zKCk6CisgICAgICAgICAgICAgICAgdiA9IHN0cih2KQorCisgICAgICAgICAgICAgICAgIyBR dW90ZSBhbmQgZXNjYXBlIHRoZSB2YWx1ZSBmb3IgcG9zdGdyZXNxbC5jb25mIHNpbmdsZS1xdW90 ZWQKKyAgICAgICAgICAgICAgICAjIHN0cmluZ3MuIFRoaXMgaXMgZG9pbmcgdGhlIHJldmVyc2Vl IG9mIERlZXNjYXBlUXVvdGVkU3RyaW5nLgorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2Uo IlxcIiwgIlxcXFwiKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIiciLCAiJyciKQor ICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIlxuIiwgIlxcbiIpCisgICAgICAgICAgICAg ICAgdiA9IHYucmVwbGFjZSgiXHIiLCAiXFxyIikKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBs YWNlKCJcdCIsICJcXHQiKQorICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIlxiIiwgIlxc YiIpCisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgiXGYiLCAiXFxmIikKKyAgICAgICAg ICAgICAgICB2ID0gIid7fSciLmZvcm1hdCh2KQorCisgICAgICAgICAgICAgICAgcHJpbnQobiwg Ij0iLCB2LCBmaWxlPWYpCisKKworQmFja3VwID0gbmFtZWR0dXBsZSgiQmFja3VwIiwgImNvbmYs IGhiYSIpCisKKworY2xhc3MgUG9zdGdyZXNTZXJ2ZXI6CisgICAgIiIiCisgICAgUmVwcmVzZW50 cyBhIHJ1bm5pbmcgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2Ugd2l0aCBtYW5hZ2VtZW50IHV0 aWxpdGllcy4KKyAgICBQcm92aWRlcyBtZXRob2RzIGZvciBjb25maWd1cmF0aW9uLCB1c2VyL2Rh dGFiYXNlIGNyZWF0aW9uLCBhbmQgc2VydmVyIGNvbnRyb2wuCisgICAgIiIiCisKKyAgICBkZWYg X19pbml0X18oCisgICAgICAgIHNlbGYsCisgICAgICAgIG5hbWUsCisgICAgICAgIGJpbmRpciwK KyAgICAgICAgZGF0YWRpciwKKyAgICAgICAgc29ja2RpciwKKyAgICAgICAgbGlicHFfaGFuZGxl LAorICAgICAgICAqLAorICAgICAgICBob3N0YWRkcjogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisg ICAgICAgIHBvcnQ6IE9wdGlvbmFsW2ludF0gPSBOb25lLAorICAgICk6CisgICAgICAgICIiIgor ICAgICAgICBJbml0aWFsaXplIGEgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuIENhbGwgc3Rh cnQoKSB0byBhY3R1YWxseQorICAgICAgICBzdGFydCB0aGUgc2VydmVyLgorCisgICAgICAgIEFy Z3M6CisgICAgICAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGlzIHNlcnZlciBpbnN0YW5jZSAo Zm9yIGxvZ2dpbmcgcHVycG9zZXMpCisgICAgICAgICAgICBiaW5kaXI6IFBhdGggdG8gUG9zdGdy ZVNRTCBiaW4gZGlyZWN0b3J5CisgICAgICAgICAgICBkYXRhZGlyOiBQYXRoIHRvIGRhdGEgZGly ZWN0b3J5IGZvciB0aGlzIHNlcnZlcgorICAgICAgICAgICAgc29ja2RpcjogUGF0aCB0byBkaXJl Y3RvcnkgZm9yIFVuaXggc29ja2V0cworICAgICAgICAgICAgbGlicHFfaGFuZGxlOiBjdHlwZXMg aGFuZGxlIHRvIGxpYnBxCisgICAgICAgICAgICBob3N0YWRkcjogSWYgcHJvdmlkZWQsIHVzZSB0 aGlzIHNwZWNpZmljIGFkZHJlc3MgKGUuZy4sICIxMjcuMC4wLjIiKQorICAgICAgICAgICAgcG9y dDogSWYgcHJvdmlkZWQsIHVzZSB0aGlzIHBvcnQgaW5zdGVhZCBvZiBmaW5kaW5nIGEgZnJlZSBv bmUsCisgICAgICAgICAgICAgICAgaXMgY3VycmVudGx5IG9ubHkgYWxsb3dlZCBpZiBob3N0YWRk ciBpcyBhbHNvIHByb3ZpZGVkCisgICAgICAgICIiIgorCisgICAgICAgIGlmIGhvc3RhZGRyIGlz IE5vbmUgYW5kIHBvcnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1l bnRlZEVycm9yKCJwb3J0IHdhcyBwcm92aWRlZCB3aXRob3V0IGhvc3RhZGRyIikKKworICAgICAg ICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuZGF0YWRpciA9IGRhdGFkaXIKKyAgICAg ICAgc2VsZi5zb2NrZGlyID0gc29ja2RpcgorICAgICAgICBzZWxmLmxpYnBxX2hhbmRsZSA9IGxp YnBxX2hhbmRsZQorICAgICAgICBzZWxmLl9yZW1haW5pbmdfdGltZW91dF9mbjogT3B0aW9uYWxb Q2FsbGFibGVbW10sIGZsb2F0XV0gPSBOb25lCisgICAgICAgIHNlbGYuX2JpbmRpciA9IGJpbmRp cgorICAgICAgICBzZWxmLl9wZ19jdGwgPSBiaW5kaXIgLyAicGdfY3RsIgorICAgICAgICBzZWxm LmxvZyA9IGRhdGFkaXIgLyAicG9zdGdyZXNxbC5sb2ciCisgICAgICAgIHNlbGYuX2xvZ19zdGFy dF9wb3MgPSAwCisKKyAgICAgICAgIyBFeGl0U3RhY2sgZm9yIGNsZWFudXAgY2FsbGJhY2tzCisg ICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2sgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCisKKyAg ICAgICAgIyBEZXRlcm1pbmUgd2hldGhlciB0byB1c2UgVW5peCBzb2NrZXRzCisgICAgICAgIHVz ZV91bml4X3NvY2tldHMgPSBwbGF0Zm9ybS5zeXN0ZW0oKSAhPSAiV2luZG93cyIgYW5kIGhvc3Rh ZGRyIGlzIE5vbmUKKworICAgICAgICAjIFVzZSBJTklUREJfVEVNUExBVEUgaWYgYXZhaWxhYmxl IChtdWNoIGZhc3RlciB0aGFuIHJ1bm5pbmcgaW5pdGRiKQorICAgICAgICBpbml0ZGJfdGVtcGxh dGUgPSBvcy5lbnZpcm9uLmdldCgiSU5JVERCX1RFTVBMQVRFIikKKyAgICAgICAgaWYgaW5pdGRi X3RlbXBsYXRlIGFuZCBvcy5wYXRoLmlzZGlyKGluaXRkYl90ZW1wbGF0ZSk6CisgICAgICAgICAg ICBzaHV0aWwuY29weXRyZWUoaW5pdGRiX3RlbXBsYXRlLCBkYXRhZGlyKQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRvd3MiOgorICAgICAg ICAgICAgICAgIGF1dGhfbWV0aG9kID0gInRydXN0IgorICAgICAgICAgICAgZWxzZToKKyAgICAg ICAgICAgICAgICBhdXRoX21ldGhvZCA9ICJwZWVyIgorICAgICAgICAgICAgcnVuKAorICAgICAg ICAgICAgICAgIGJpbmRpciAvICJpbml0ZGIiLAorICAgICAgICAgICAgICAgICItLW5vLXN5bmMi LAorICAgICAgICAgICAgICAgICItLWF1dGgiLAorICAgICAgICAgICAgICAgIGF1dGhfbWV0aG9k LAorICAgICAgICAgICAgICAgICItLXBnZGF0YSIsCisgICAgICAgICAgICAgICAgc2VsZi5kYXRh ZGlyLAorICAgICAgICAgICAgKQorCisgICAgICAgICMgRmlndXJlIG91dCBhIHBvcnQgdG8gbGlz dGVuIG9uLiBBdHRlbXB0IHRvIHJlc2VydmUgYm90aCBJUHY0IGFuZCBJUHY2CisgICAgICAgICMg YWRkcmVzc2VzIGluIG9uZSBnby4KKyAgICAgICAgIworICAgICAgICAjIE5vdGU6IHNvY2tldC5o YXNfZHVhbHN0YWNrX2lwdjYvY3JlYXRlX3NlcnZlciBhcmUgb25seSBpbiBQeXRob24gMy44Ky4K KyAgICAgICAgaWYgaG9zdGFkZHIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIEV4cGxpY2l0 IGFkZHJlc3MgcHJvdmlkZWQKKyAgICAgICAgICAgIGFkZHJzOiBsaXN0W3N0cl0gPSBbaG9zdGFk ZHJdCisgICAgICAgICAgICB0ZW1wX3NvY2sgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgICAg IGlmIHBvcnQgaXMgTm9uZToKKyAgICAgICAgICAgICAgICB0ZW1wX3NvY2suYmluZCgoaG9zdGFk ZHIsIDApKQorICAgICAgICAgICAgICAgIF8sIHBvcnQgPSB0ZW1wX3NvY2suZ2V0c29ja25hbWUo KQorCisgICAgICAgIGVsaWYgaGFzYXR0cihzb2NrZXQsICJoYXNfZHVhbHN0YWNrX2lwdjYiKSBh bmQgc29ja2V0Lmhhc19kdWFsc3RhY2tfaXB2NigpOgorICAgICAgICAgICAgYWRkciA9ICgiOjox IiwgMCkKKyAgICAgICAgICAgIHRlbXBfc29jayA9IHNvY2tldC5jcmVhdGVfc2VydmVyKAorICAg ICAgICAgICAgICAgIGFkZHIsIGZhbWlseT1zb2NrZXQuQUZfSU5FVDYsIGR1YWxzdGFja19pcHY2 PVRydWUKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgaG9zdGFkZHIsIHBvcnQsIF8sIF8g PSB0ZW1wX3NvY2suZ2V0c29ja25hbWUoKQorICAgICAgICAgICAgYXNzZXJ0IGhvc3RhZGRyIGlz IG5vdCBOb25lCisgICAgICAgICAgICBhZGRycyA9IFtob3N0YWRkciwgIjEyNy4wLjAuMSJdCisK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFkZHIgPSAoIjEyNy4wLjAuMSIsIDApCisKKyAg ICAgICAgICAgIHRlbXBfc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICAgICAgdGVtcF9z b2NrLmJpbmQoYWRkcikKKworICAgICAgICAgICAgaG9zdGFkZHIsIHBvcnQgPSB0ZW1wX3NvY2su Z2V0c29ja25hbWUoKQorICAgICAgICAgICAgYXNzZXJ0IGhvc3RhZGRyIGlzIG5vdCBOb25lCisg ICAgICAgICAgICBhZGRycyA9IFtob3N0YWRkcl0KKworICAgICAgICAjIFN0b3JlIHRoZSBjb21w dXRlZCB2YWx1ZXMKKyAgICAgICAgc2VsZi5ob3N0YWRkciA9IGhvc3RhZGRyCisgICAgICAgIHNl bGYucG9ydCA9IHBvcnQKKyAgICAgICAgIyBJbmNsdWRpbmcgdGhlIGhvc3QgdG8gdXNlIGZvciBj b25uZWN0aW9ucyAtIGVpdGhlciB0aGUgc29ja2V0CisgICAgICAgICMgZGlyZWN0b3J5IG9yIFRD UCBhZGRyZXNzCisgICAgICAgIGlmIHVzZV91bml4X3NvY2tldHM6CisgICAgICAgICAgICBzZWxm Lmhvc3QgPSBzdHIoc29ja2RpcikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuaG9z dCA9IGhvc3RhZGRyCisKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkYXRhZGlyLCAi cG9zdGdyZXNxbC5jb25mIiksICJhIikgYXMgZjoKKyAgICAgICAgICAgIHByaW50KGZpbGU9ZikK KyAgICAgICAgICAgIGlmIHVzZV91bml4X3NvY2tldHM6CisgICAgICAgICAgICAgICAgcHJpbnQo CisgICAgICAgICAgICAgICAgICAgICJ1bml4X3NvY2tldF9kaXJlY3RvcmllcyA9ICd7fSciLmZv cm1hdChzb2NrZGlyLmFzX3Bvc2l4KCkpLAorICAgICAgICAgICAgICAgICAgICBmaWxlPWYsCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIERp c2FibGUgVW5peCBzb2NrZXRzIHdoZW4gdXNpbmcgVENQIHRvIGF2b2lkIGxvY2sgY29uZmxpY3Rz CisgICAgICAgICAgICAgICAgcHJpbnQoInVuaXhfc29ja2V0X2RpcmVjdG9yaWVzID0gJyciLCBm aWxlPWYpCisgICAgICAgICAgICBwcmludCgibGlzdGVuX2FkZHJlc3NlcyA9ICd7fSciLmZvcm1h dCgiLCIuam9pbihhZGRycykpLCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgicG9ydCA9Iiwg cG9ydCwgZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoImxvZ19jb25uZWN0aW9ucyA9IGFsbCIs IGZpbGU9ZikKKyAgICAgICAgICAgIHByaW50KCJmc3luYyA9IG9mZiIsIGZpbGU9ZikKKyAgICAg ICAgICAgIHByaW50KCJkYXRlc3R5bGUgPSAnSVNPJyIsIGZpbGU9ZikKKyAgICAgICAgICAgIHBy aW50KCJ0aW1lem9uZSA9ICdVVEMnIiwgZmlsZT1mKQorCisgICAgICAgICMgQmV0d2VlbiBjbG9z aW5nIG9mIHRoZSBzb2NrZXQsIHMsIGFuZCBzZXJ2ZXIgc3RhcnQsIHdlJ3JlIHJhY2luZworICAg ICAgICAjIGFnYWluc3QgYW55dGhpbmcgdGhhdCB3YW50cyB0byBvcGVuIHVwIGVwaGVtZXJhbCBw b3J0cywgc28gdHJ5IG5vdCB0bworICAgICAgICAjIHB1dCBhbnkgbmV3IHdvcmsgaGVyZS4KKwor ICAgICAgICB0ZW1wX3NvY2suY2xvc2UoKQorCisgICAgZGVmIHN0YXJ0KHNlbGYpOgorICAgICAg ICAiIiJTdGFydCB0aGUgc2VydmVyIHVzaW5nIHBnX2N0bC4iIiIKKyAgICAgICAgc2VsZi5wZ19j dGwoInN0YXJ0IikKKworICAgICAgICAjIFJlYWQgdGhlIFBJRCBmaWxlIHRvIGdldCB0aGUgcG9z dG1hc3RlciBQSUQKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihzZWxmLmRhdGFkaXIs ICJwb3N0bWFzdGVyLnBpZCIpKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5waWQgPSBpbnQoZi5y ZWFkbGluZSgpLnN0cmlwKCkpCisKKyAgICBkZWYgY3VycmVudF9sb2dfcG9zaXRpb24oc2VsZik6 CisgICAgICAgICIiIkdldCB0aGUgY3VycmVudCBlbmQgcG9zaXRpb24gb2YgdGhlIGxvZyBmaWxl LiIiIgorICAgICAgICBpZiBzZWxmLmxvZy5leGlzdHMoKToKKyAgICAgICAgICAgIHJldHVybiBz ZWxmLmxvZy5zdGF0KCkuc3Rfc2l6ZQorICAgICAgICByZXR1cm4gMAorCisgICAgZGVmIHJlc2V0 X2xvZ19wb3NpdGlvbihzZWxmKToKKyAgICAgICAgIiIiTWFyayBjdXJyZW50IGxvZyBwb3NpdGlv biBhcyBzdGFydCBmb3IgbG9nX2NvbnRlbnQoKS4iIiIKKyAgICAgICAgc2VsZi5fbG9nX3N0YXJ0 X3BvcyA9IHNlbGYuY3VycmVudF9sb2dfcG9zaXRpb24oKQorCisgICAgQGNvbnRleHRsaWIuY29u dGV4dG1hbmFnZXIKKyAgICBkZWYgc3RhcnRfbmV3X3Rlc3Qoc2VsZiwgcmVtYWluaW5nX3RpbWVv dXQpOgorICAgICAgICAiIiIKKyAgICAgICAgUHJlcGFyZSBzZXJ2ZXIgZm9yIGEgbmV3IHRlc3Qu CisKKyAgICAgICAgU2V0cyB0aW1lb3V0LCByZXNldHMgbG9nIHBvc2l0aW9uLCBhbmQgZW50ZXJz IGEgY2xlYW51cCBzdWJjb250ZXh0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5zZXRfdGlt ZW91dChyZW1haW5pbmdfdGltZW91dCkKKyAgICAgICAgc2VsZi5yZXNldF9sb2dfcG9zaXRpb24o KQorICAgICAgICB3aXRoIHNlbGYuc3ViY29udGV4dCgpOgorICAgICAgICAgICAgeWllbGQgc2Vs ZgorCisgICAgZGVmIHBzcWwoc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJSdW4gcHNxbCB3aXRo IHRoZSBnaXZlbiBhcmd1bWVudHMuIiIiCisgICAgICAgIHNlbGYuX3J1bihvcy5wYXRoLmpvaW4o c2VsZi5fYmluZGlyLCAicHNxbCIpLCAiLXciLCAqYXJncykKKworICAgIGRlZiBzcWwoc2VsZiwg cXVlcnkpOgorICAgICAgICAiIiJFeGVjdXRlIGEgU1FMIHF1ZXJ5IHZpYSBsaWJwcS4gUmV0dXJu cyBzaW1wbGlmaWVkIHJlc3VsdHMuIiIiCisgICAgICAgIHdpdGggc2VsZi5jb25uZWN0KCkgYXMg Y29ubjoKKyAgICAgICAgICAgIHJldHVybiBjb25uLnNxbChxdWVyeSkKKworICAgIGRlZiBwZ19j dGwoc2VsZiwgKmFyZ3MpOgorICAgICAgICAiIiJSdW4gcGdfY3RsIHdpdGggdGhlIGdpdmVuIGFy Z3VtZW50cy4iIiIKKyAgICAgICAgc2VsZi5fcnVuKHNlbGYuX3BnX2N0bCwgIi0tcGdkYXRhIiwg c2VsZi5kYXRhZGlyLCAiLS1sb2ciLCBzZWxmLmxvZywgKmFyZ3MpCisKKyAgICBkZWYgX3J1bihz ZWxmLCBjbWQsICphcmdzLCBhZGRlbnY6IE9wdGlvbmFsW2RpY3RdID0gTm9uZSk6CisgICAgICAg ICIiIlJ1biBhIGNvbW1hbmQgd2l0aCBQRyogZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldC4iIiIK KyAgICAgICAgc3ViZW52ID0gZGljdChvcy5lbnZpcm9uKQorICAgICAgICBzdWJlbnYudXBkYXRl KAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJQR0hPU1QiOiBzdHIoc2VsZi5ob3N0 KSwKKyAgICAgICAgICAgICAgICAiUEdQT1JUIjogc3RyKHNlbGYucG9ydCksCisgICAgICAgICAg ICAgICAgIlBHREFUQUJBU0UiOiAicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICJQR0RBVEEi OiBzdHIoc2VsZi5kYXRhZGlyKSwKKyAgICAgICAgICAgIH0KKyAgICAgICAgKQorICAgICAgICBp ZiBhZGRlbnY6CisgICAgICAgICAgICBzdWJlbnYudXBkYXRlKGFkZGVudikKKyAgICAgICAgcnVu KGNtZCwgKmFyZ3MsIGVudj1zdWJlbnYpCisKKyAgICBkZWYgY3JlYXRlX3VzZXJzKHNlbGYsICp1 c2Vya2V5czogc3RyKToKKyAgICAgICAgIiIiQ3JlYXRlIHRlc3QgdXNlcnMgYW5kIHJlZ2lzdGVy IHRoZW0gZm9yIGNsZWFudXAuIiIiCisgICAgICAgIHVzZXJtYXAgPSB7fQorICAgICAgICBmb3Ig dSBpbiB1c2Vya2V5czoKKyAgICAgICAgICAgIG5hbWUgPSB1ICsgInVzZXIiCisgICAgICAgICAg ICB1c2VybWFwW3VdID0gbmFtZQorICAgICAgICAgICAgc2VsZi5wc3FsKCItYyIsICJDUkVBVEUg VVNFUiAiICsgbmFtZSkKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2suY2FsbGJhY2so c2VsZi5wc3FsLCAiLWMiLCAiRFJPUCBVU0VSICIgKyBuYW1lKQorICAgICAgICByZXR1cm4gdXNl cm1hcAorCisgICAgZGVmIGNyZWF0ZV9kYnMoc2VsZiwgKmRia2V5czogc3RyKToKKyAgICAgICAg IiIiQ3JlYXRlIHRlc3QgZGF0YWJhc2VzIGFuZCByZWdpc3RlciB0aGVtIGZvciBjbGVhbnVwLiIi IgorICAgICAgICBkYm1hcCA9IHt9CisgICAgICAgIGZvciBkIGluIGRia2V5czoKKyAgICAgICAg ICAgIG5hbWUgPSBkICsgImRiIgorICAgICAgICAgICAgZGJtYXBbZF0gPSBuYW1lCisgICAgICAg ICAgICBzZWxmLnBzcWwoIi1jIiwgIkNSRUFURSBEQVRBQkFTRSAiICsgbmFtZSkKKyAgICAgICAg ICAgIHNlbGYuX2NsZWFudXBfc3RhY2suY2FsbGJhY2soc2VsZi5wc3FsLCAiLWMiLCAiRFJPUCBE QVRBQkFTRSAiICsgbmFtZSkKKyAgICAgICAgcmV0dXJuIGRibWFwCisKKyAgICBAY29udGV4dGxp Yi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiByZWxvYWRpbmcoc2VsZik6CisgICAgICAgICIiIgor ICAgICAgICBQcm92aWRlcyBhIGNvbnRleHQgbWFuYWdlciBmb3IgbWFraW5nIGNvbmZpZ3VyYXRp b24gY2hhbmdlcy4KKworICAgICAgICBJZiB0aGUgY29udGV4dCBzdWl0ZSBmaW5pc2hlcyBzdWNj ZXNzZnVsbHksIHRoZSBjb25maWd1cmF0aW9uIHdpbGwKKyAgICAgICAgYmUgcmVsb2FkZWQgdmlh IHBnX2N0bC4gT24gdGVhcmRvd24sIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgd2lsbAorICAg ICAgICBiZSB1bndvdW5kLCBhbmQgdGhlIHNlcnZlciB3aWxsIGJlIHNpZ25hbGVkIHRvIHJlbG9h ZCBhZ2Fpbi4KKworICAgICAgICBUaGUgY29udGV4dCB0YXJnZXQgY29udGFpbnMgdGhlIGZvbGxv d2luZyBhdHRyaWJ1dGVzIHdoaWNoIGNhbiBiZQorICAgICAgICB1c2VkIHRvIGNvbmZpZ3VyZSB0 aGUgc2VydmVyOgorICAgICAgICAtIC5jb25mOiBtb2RpZmllcyBwb3N0Z3Jlc3FsLmNvbmYKKyAg ICAgICAgLSAuaGJhOiBtb2RpZmllcyBwZ19oYmEuY29uZgorCisgICAgICAgIEZvciBleGFtcGxl OgorCisgICAgICAgICAgICB3aXRoIHBnX3NlcnZlcl9zZXNzaW9uLnJlbG9hZGluZygpIGFzIHM6 CisgICAgICAgICAgICAgICAgcy5jb25mLnNldChsb2dfY29ubmVjdGlvbnM9Im9uIikKKyAgICAg ICAgICAgICAgICBzLmhiYS5wcmVwZW5kKCJsb2NhbCBhbGwgYWxsIHRydXN0IikKKyAgICAgICAg IiIiCisgICAgICAgICMgUHVzaCBhIHJlbG9hZCBvbnRvIHRoZSBzdGFjayBiZWZvcmUgbWFraW5n IGFueSBvdGhlcgorICAgICAgICAjIHVud2luZGFibGUgY2hhbmdlcy4gVGhhdCB3YXkgdGhlIG9y ZGVyIG9mIG9wZXJhdGlvbnMgd2lsbCBiZQorICAgICAgICAjCisgICAgICAgICMgICMgdGVzdAor ICAgICAgICAjICAgLSBjb25maWcgY2hhbmdlIDEKKyAgICAgICAgIyAgIC0gY29uZmlnIGNoYW5n ZSAyCisgICAgICAgICMgICAtIHJlbG9hZAorICAgICAgICAjICAjIHRlYXJkb3duCisgICAgICAg ICMgICAtIHVuZG8gY29uZmlnIGNoYW5nZSAyCisgICAgICAgICMgICAtIHVuZG8gY29uZmlnIGNo YW5nZSAxCisgICAgICAgICMgICAtIHJlbG9hZAorICAgICAgICAjCisgICAgICAgIHNlbGYuX2Ns ZWFudXBfc3RhY2suY2FsbGJhY2soc2VsZi5wZ19jdGwsICJyZWxvYWQiKQorICAgICAgICB5aWVs ZCBzZWxmLl9iYWNrdXBfY29uZmlndXJhdGlvbigpCisKKyAgICAgICAgIyBOb3cgYWN0dWFsbHkg cmVsb2FkCisgICAgICAgIHNlbGYucGdfY3RsKCJyZWxvYWQiKQorCisgICAgQGNvbnRleHRsaWIu Y29udGV4dG1hbmFnZXIKKyAgICBkZWYgcmVzdGFydGluZyhzZWxmKToKKyAgICAgICAgIiIiTGlr ZSAucmVsb2FkaW5nKCksIGJ1dCB3aXRoIGEgZnVsbCBzZXJ2ZXIgcmVzdGFydC4iIiIKKyAgICAg ICAgc2VsZi5fY2xlYW51cF9zdGFjay5jYWxsYmFjayhzZWxmLnBnX2N0bCwgInJlc3RhcnQiKQor ICAgICAgICB5aWVsZCBzZWxmLl9iYWNrdXBfY29uZmlndXJhdGlvbigpCisgICAgICAgIHNlbGYu cGdfY3RsKCJyZXN0YXJ0IikKKworICAgIGRlZiBfYmFja3VwX2NvbmZpZ3VyYXRpb24oc2VsZik6 CisgICAgICAgICMgV3JhcCB0aGUgZXhpc3RpbmcgSEJBIGFuZCBjb25maWd1cmF0aW9uIHdpdGgg RmlsZUJhY2t1cHMuCisgICAgICAgIHJldHVybiBCYWNrdXAoCisgICAgICAgICAgICBoYmE9c2Vs Zi5fY2xlYW51cF9zdGFjay5lbnRlcl9jb250ZXh0KEhCQShzZWxmLmRhdGFkaXIpKSwKKyAgICAg ICAgICAgIGNvbmY9c2VsZi5fY2xlYW51cF9zdGFjay5lbnRlcl9jb250ZXh0KENvbmZpZyhzZWxm LmRhdGFkaXIpKSwKKyAgICAgICAgKQorCisgICAgQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIK KyAgICBkZWYgc3ViY29udGV4dChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIENyZWF0ZSBh IG5ldyBjbGVhbnVwIGNvbnRleHQgZm9yIHBlci10ZXN0IGlzb2xhdGlvbi4KKworICAgICAgICBU ZW1wb3JhcmlseSByZXBsYWNlcyB0aGUgY2xlYW51cCBzdGFjayBzbyB0aGF0IGFueSBjbGVhbnVw IGNhbGxiYWNrcworICAgICAgICByZWdpc3RlcmVkIHdpdGhpbiB0aGlzIGNvbnRleHQgd2lsbCBi ZSBjbGVhbmVkIHVwIHdoZW4gdGhlIGNvbnRleHQgZXhpdHMuCisgICAgICAgICIiIgorICAgICAg ICBvbGRfc3RhY2sgPSBzZWxmLl9jbGVhbnVwX3N0YWNrCisgICAgICAgIHNlbGYuX2NsZWFudXBf c3RhY2sgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHNlbGYuX2NsZWFudXBfc3RhY2suX19lbnRlcl9fKCkKKyAgICAgICAgICAgIHlpZWxkIHNlbGYK KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2suX19leGl0 X18oTm9uZSwgTm9uZSwgTm9uZSkKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2sgPSBv bGRfc3RhY2sKKworICAgIGRlZiBzdG9wKHNlbGYsIG1vZGU9ImZhc3QiKToKKyAgICAgICAgIiIi CisgICAgICAgIFN0b3AgdGhlIFBvc3RncmVTUUwgc2VydmVyIGluc3RhbmNlLgorCisgICAgICAg IElnbm9yZXMgZmFpbHVyZXMgaWYgdGhlIHNlcnZlciBpcyBhbHJlYWR5IHN0b3BwZWQuCisgICAg ICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnBnX2N0bCgic3RvcCIsICIt LW1vZGUiLCBtb2RlKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJy b3I6CisgICAgICAgICAgICAjIFNlcnZlciBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gc3RvcHBlZAor ICAgICAgICAgICAgcGFzcworCisgICAgZGVmIGxvZ19jb250ZW50KHNlbGYpIC0+IHN0cjoKKyAg ICAgICAgIiIiUmV0dXJuIGxvZyBjb250ZW50IGZyb20gdGhlIGN1cnJlbnQgY29udGV4dCdzIHN0 YXJ0IHBvc2l0aW9uLiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5sb2cuZXhpc3RzKCk6CisgICAg ICAgICAgICByZXR1cm4gIiIKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYubG9nKSBhcyBmOgorICAg ICAgICAgICAgZi5zZWVrKHNlbGYuX2xvZ19zdGFydF9wb3MpCisgICAgICAgICAgICByZXR1cm4g Zi5yZWFkKCkKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIGxvZ19j b250YWlucyhzZWxmLCBwYXR0ZXJuLCB0aW1lcz1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IENvbnRleHQgbWFuYWdlciB0aGF0IGNoZWNrcyBpZiB0aGUgbG9nIG1hdGNoZXMgcGF0dGVybiBk dXJpbmcgdGhlIGJsb2NrLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBwYXR0ZXJuOiBU aGUgcmVnZXggcGF0dGVybiB0byBzZWFyY2ggZm9yLgorICAgICAgICAgICAgdGltZXM6IElmIE5v bmUsIGFueSBudW1iZXIgb2YgbWF0Y2hlcyBpcyBhY2NlcHRlZC4KKyAgICAgICAgICAgICAgICAg ICBJZiBhIG51bWJlciwgZXhhY3RseSB0aGF0IG1hbnkgbWF0Y2hlcyBhcmUgcmVxdWlyZWQuCisg ICAgICAgICIiIgorICAgICAgICBzdGFydF9wb3MgPSBzZWxmLmN1cnJlbnRfbG9nX3Bvc2l0aW9u KCkKKyAgICAgICAgeWllbGQKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYubG9nKSBhcyBmOgorICAg ICAgICAgICAgZi5zZWVrKHN0YXJ0X3BvcykKKyAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJlYWQo KQorICAgICAgICBpZiB0aW1lcyBpcyBOb25lOgorICAgICAgICAgICAgYXNzZXJ0IHJlLnNlYXJj aChwYXR0ZXJuLCBjb250ZW50KSwgZiJQYXR0ZXJuIHtwYXR0ZXJuIXJ9IG5vdCBmb3VuZCBpbiBs b2ciCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYXRjaF9jb3VudCA9IGxlbihyZS5maW5k YWxsKHBhdHRlcm4sIGNvbnRlbnQpKQorICAgICAgICAgICAgYXNzZXJ0IG1hdGNoX2NvdW50ID09 IHRpbWVzLCAoCisgICAgICAgICAgICAgICAgZiJFeHBlY3RlZCB7dGltZXN9IG1hdGNoZXMgb2Yg e3BhdHRlcm4hcn0sIGZvdW5kIHttYXRjaF9jb3VudH0iCisgICAgICAgICAgICApCisKKyAgICBk ZWYgY2xlYW51cChzZWxmKToKKyAgICAgICAgIiIiUnVuIGFsbCByZWdpc3RlcmVkIGNsZWFudXAg Y2FsbGJhY2tzLiIiIgorICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNsb3NlKCkKKworICAg IGRlZiBzZXRfdGltZW91dChzZWxmLCByZW1haW5pbmdfdGltZW91dF9mbjogQ2FsbGFibGVbW10s IGZsb2F0XSkgLT4gTm9uZToKKyAgICAgICAgIiIiCisgICAgICAgIFNldCB0aGUgdGltZW91dCBm dW5jdGlvbiBmb3IgY29ubmVjdGlvbnMuCisgICAgICAgIFRoaXMgaXMgdHlwaWNhbGx5IGNhbGxl ZCBieSBwZyBmaXh0dXJlIGZvciBlYWNoIHRlc3QuCisgICAgICAgICIiIgorICAgICAgICBzZWxm Ll9yZW1haW5pbmdfdGltZW91dF9mbiA9IHJlbWFpbmluZ190aW1lb3V0X2ZuCisKKyAgICBkZWYg Y29ubmVjdChzZWxmLCAqKm9wdHMpIC0+IFBHY29ubjoKKyAgICAgICAgIiIiCisgICAgICAgIENy ZWF0ZXMgYSBjb25uZWN0aW9uIHRvIHRoaXMgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgICoqb3B0czogQWRkaXRpb25hbCBjb25uZWN0aW9u IG9wdGlvbnMgKGNhbiBvdmVycmlkZSBkZWZhdWx0cykKKworICAgICAgICBSZXR1cm5zOgorICAg ICAgICAgICAgUEdjb25uOiBDb25uZWN0ZWQgZGF0YWJhc2UgY29ubmVjdGlvbgorCisgICAgICAg IEV4YW1wbGU6CisgICAgICAgICAgICBjb25uID0gcGcuY29ubmVjdCgpCisgICAgICAgICAgICBj b25uID0gcGcuY29ubmVjdChkYm5hbWU9J215ZGInKQorICAgICAgICAiIiIKKyAgICAgICAgaWYg c2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm4gaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFJ1 bnRpbWVFcnJvcigKKyAgICAgICAgICAgICAgICAiVGltZW91dCBmdW5jdGlvbiBub3Qgc2V0LiBV c2Ugc2V0X3RpbWVvdXQoKSBvciBwZyBmaXh0dXJlLiIKKyAgICAgICAgICAgICkKKworICAgICAg ICBkZWZhdWx0cyA9IHsKKyAgICAgICAgICAgICJob3N0Ijogc2VsZi5ob3N0LAorICAgICAgICAg ICAgInBvcnQiOiBzZWxmLnBvcnQsCisgICAgICAgICAgICAiZGJuYW1lIjogInBvc3RncmVzIiwK KyAgICAgICAgfQorICAgICAgICBkZWZhdWx0cy51cGRhdGUob3B0cykKKworICAgICAgICByZXR1 cm4gbGlicHFfY29ubmVjdCgKKyAgICAgICAgICAgIHNlbGYubGlicHFfaGFuZGxlLAorICAgICAg ICAgICAgc2VsZi5fY2xlYW51cF9zdGFjaywKKyAgICAgICAgICAgIHNlbGYuX3JlbWFpbmluZ190 aW1lb3V0X2ZuLAorICAgICAgICAgICAgKipkZWZhdWx0cywKKyAgICAgICAgKQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL3V0 aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmQ0NmE3M2QwMDE5 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvdXRpbC5weQpAQCAtMCww ICsxLDU1IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKworaW1wb3J0IHNobGV4CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5 cworCisKK2RlZiBlcHJpbnQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAiIiJlcHJpbnQgcHJpbnRz IHRvIHN0ZGVyciIiIgorICAgIHByaW50KCphcmdzLCBmaWxlPXN5cy5zdGRlcnIsICoqa3dhcmdz KQorCisKK2RlZiBydW4oKmNvbW1hbmQsIGNoZWNrPVRydWUsIHNoZWxsPU5vbmUsIHNpbGVudD1G YWxzZSwgKiprd2FyZ3MpOgorICAgICIiInJ1biBydW5zIHRoZSBnaXZlbiBjb21tYW5kIGFuZCBw cmludHMgaXQgdG8gc3RkZXJyIiIiCisKKyAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUgICMg RG9uJ3Qgc2hvdyBpbiBweXRlc3Qgc3RhY2sgdHJhY2VzCisKKyAgICBpZiBzaGVsbCBpcyBOb25l OgorICAgICAgICBzaGVsbCA9IGxlbihjb21tYW5kKSA9PSAxIGFuZCBpc2luc3RhbmNlKGNvbW1h bmRbMF0sIHN0cikKKworICAgIGlmIHNoZWxsOgorICAgICAgICBjb21tYW5kID0gY29tbWFuZFsw XQorICAgIGVsc2U6CisgICAgICAgIGNvbW1hbmQgPSBsaXN0KG1hcChzdHIsIGNvbW1hbmQpKQor CisgICAgaWYgbm90IHNpbGVudDoKKyAgICAgICAgaWYgc2hlbGw6CisgICAgICAgICAgICBlcHJp bnQoZiIrIHtjb21tYW5kfSIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFdlIGNvdWxk IG5vcm1hbGx5IHVzZSBzaGxleC5qb2luIGhlcmUsIGJ1dCBpdCdzIG5vdCBhdmFpbGFibGUgaW4K KyAgICAgICAgICAgICMgUHl0aG9uIDMuNiB3aGljaCB3ZSBzdGlsbCBsaWtlIHRvIHN1cHBvcnQK KyAgICAgICAgICAgIHVuc2FmZV9zdHJpbmdfY21kID0gIiAiLmpvaW4obWFwKHNobGV4LnF1b3Rl LCBjb21tYW5kKSkKKyAgICAgICAgICAgIGVwcmludChmIisge3Vuc2FmZV9zdHJpbmdfY21kfSIp CisKKyAgICBpZiBzaWxlbnQ6CisgICAgICAgIGt3YXJncy5zZXRkZWZhdWx0KCJzdGRvdXQiLCBz dWJwcm9jZXNzLkRFVk5VTEwpCisKKyAgICByZXN1bHQgPSBzdWJwcm9jZXNzLnJ1bihjb21tYW5k LCBjaGVjaz1GYWxzZSwgc2hlbGw9c2hlbGwsICoqa3dhcmdzKQorCisgICAgIyBNYW51YWxseSB0 aHJvdyBDYWxsZWRQcm9jZXNzRXJyb3IgdG8gYXZvaWQgc3VicHJvY2Vzcy5ydW4ncyBodWdlIGJv ZHkKKyAgICAjIHBvbHV0aW5nIHN0YWNrIHRyYWNlcy4KKyAgICBpZiBjaGVjayBhbmQgcmVzdWx0 LnJldHVybmNvZGU6CisgICAgICAgIHJhaXNlIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9y KAorICAgICAgICAgICAgcmVzdWx0LnJldHVybmNvZGUsIGNvbW1hbmQsIHJlc3VsdC5zdGRvdXQs IHJlc3VsdC5zdGRlcnIKKyAgICAgICAgKQorCisgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBj YXB0dXJlKGNvbW1hbmQsICphcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBlbmNvZGluZz0i dXRmLTgiLCAqKmt3YXJncyk6CisgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlICAjIERvbid0 IHBvbGx1dGUgcHl0ZXN0IHN0YWNrIHRyYWNlcworCisgICAgcmV0dXJuIHJ1bigKKyAgICAgICAg Y29tbWFuZCwgKmFyZ3MsIHN0ZG91dD1zdGRvdXQsIGVuY29kaW5nPWVuY29kaW5nLCAqKmt3YXJn cworICAgICkuc3Rkb3V0LnJlbW92ZXN1ZmZpeCgiXG4iKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cHl0ZXN0L3B5dC9jb25mdGVzdC5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvY29uZnRlc3QucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmRkNzM5MTdjNjhjCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weQpAQCAtMCwwICsx IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9lcnJvcnMucHkgYi9z cmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfZXJyb3JzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi43NzFmZThmNzZlMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3B5dGVzdC9weXQvdGVzdF9lcnJvcnMucHkKQEAgLTAsMCArMSwzNCBAQAorIyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVz dHMgZm9yIGxpYnBxIGVycm9yIHR5cGVzIGFuZCBTUUxTVEFURS1iYXNlZCBleGNlcHRpb24gbWFw cGluZy4KKyIiIgorCitpbXBvcnQgcHl0ZXN0Citmcm9tIGxpYnBxIGltcG9ydCBMaWJwcUVycm9y CisKKworZGVmIHRlc3Rfc3ludGF4X2Vycm9yKGNvbm4pOgorICAgICIiIkludmFsaWQgU1FMIHN5 bnRheCByYWlzZXMgTGlicHFFcnJvciB3aXRoIGNvcnJlY3QgU1FMU1RBVEUuIiIiCisgICAgd2l0 aCBweXRlc3QucmFpc2VzKExpYnBxRXJyb3IpIGFzIGV4Y19pbmZvOgorICAgICAgICBjb25uLnNx bCgiU0VMRUMgMSIpCisKKyAgICBlcnIgPSBleGNfaW5mby52YWx1ZQorICAgIGFzc2VydCBlcnIu c3Fsc3RhdGUgPT0gIjQyNjAxIgorICAgIGFzc2VydCBlcnIuc3Fsc3RhdGVfY2xhc3MgPT0gIjQy IgorICAgIGFzc2VydCAic3ludGF4IiBpbiBzdHIoZXJyKS5sb3dlcigpCisKKworZGVmIHRlc3Rf dW5pcXVlX3Zpb2xhdGlvbihjb25uKToKKyAgICAiIiJVbmlxdWUgdmlvbGF0aW9uIGluY2x1ZGVz IGFsbCBlcnJvciBmaWVsZHMuIiIiCisgICAgY29ubi5zcWwoIkNSRUFURSBURU1QIFRBQkxFIHRl c3RfdXYgKGlkIGludCBDT05TVFJBSU5UIHRlc3RfdXZfcGsgUFJJTUFSWSBLRVkpIikKKyAgICBj b25uLnNxbCgiSU5TRVJUIElOVE8gdGVzdF91diBWQUxVRVMgKDEpIikKKworICAgIHdpdGggcHl0 ZXN0LnJhaXNlcyhMaWJwcUVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwoIklO U0VSVCBJTlRPIHRlc3RfdXYgVkFMVUVTICgxKSIpCisKKyAgICBlcnIgPSBleGNfaW5mby52YWx1 ZQorICAgIGFzc2VydCBlcnIuc3Fsc3RhdGUgPT0gIjIzNTA1IgorICAgIGFzc2VydCBlcnIudGFi bGVfbmFtZSA9PSAidGVzdF91diIKKyAgICBhc3NlcnQgZXJyLmNvbnN0cmFpbnRfbmFtZSA9PSAi dGVzdF91dl9wayIKKyAgICBhc3NlcnQgZXJyLmRldGFpbCA9PSAiS2V5IChpZCk9KDEpIGFscmVh ZHkgZXhpc3RzLiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5w eSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uMWQwZDliYzNiOTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKQEAgLTAsMCArMSwzNSBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9y dCBjb250ZXh0bGliCitpbXBvcnQgb3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdHJ1Y3QKK2lt cG9ydCB0aHJlYWRpbmcKK2Zyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQgcHl0 ZXN0CisKK2Zyb20gbGlicHEgaW1wb3J0IGNvbm5zdHIsIExpYnBxRXJyb3IKKworCitAcHl0ZXN0 Lm1hcmsucGFyYW1ldHJpemUoCisgICAgIm9wdHMsIGV4cGVjdGVkIiwKKyAgICBbCisgICAgICAg IChkaWN0KCksICIiKSwKKyAgICAgICAgKGRpY3QocG9ydD01NDMyKSwgInBvcnQ9NTQzMiIpLAor ICAgICAgICAoZGljdChwb3J0PTU0MzIsIGRibmFtZT0icG9zdGdyZXMiKSwgInBvcnQ9NTQzMiBk Ym5hbWU9cG9zdGdyZXMiKSwKKyAgICAgICAgKGRpY3QoaG9zdD0iIiksICJob3N0PScnIiksCisg ICAgICAgIChkaWN0KGhvc3Q9IiAiKSwgciJob3N0PScgJyIpLAorICAgICAgICAoZGljdChrZXl3 b3JkPSInIiksIHIia2V5d29yZD1cJyIpLAorICAgICAgICAoZGljdChrZXl3b3JkPSIgXFwnICIp LCByImtleXdvcmQ9JyBcXFwnICciKSwKKyAgICBdLAorKQorZGVmIHRlc3RfY29ubnN0cihvcHRz LCBleHBlY3RlZCk6CisgICAgIiIiVGVzdHMgdGhlIGVzY2FwZSBiZWhhdmlvciBmb3IgY29ubnN0 cigpLiIiIgorICAgIGFzc2VydCBjb25uc3RyKG9wdHMpID09IGV4cGVjdGVkCisKKworZGVmIHRl c3RfbXVzdF9jb25uZWN0X2Vycm9ycyhjb25uZWN0KToKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5l Y3QoKSByYWlzZXMgTGlicHFFcnJvci4iIiIKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFF cnJvciwgbWF0Y2g9ImludmFsaWQgY29ubmVjdGlvbiBvcHRpb24iKToKKyAgICAgICAgY29ubmVj dChzb21lX3Vua25vd25fa2V5d29yZD0id2hhdGV2ZXIiKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cHl0ZXN0L3B5dC90ZXN0X211bHRpX3NlcnZlci5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVz dF9tdWx0aV9zZXJ2ZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjhlZTA0NWIwY2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0 X211bHRpX3NlcnZlci5weQpAQCAtMCwwICsxLDQ2IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwg UG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIiIiCitUZXN0cyBkZW1vbnN0 cmF0aW5nIG11bHRpLXNlcnZlciBmdW5jdGlvbmFsaXR5IHVzaW5nIGNyZWF0ZV9wZyBmaXh0dXJl LgorCitUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCB0aGUgcHl0ZXN0IGluZnJhc3RydWN0dXJlIGNv cnJlY3RseSBoYW5kbGVzCittdWx0aXBsZSBQb3N0Z3JlU1FMIHNlcnZlciBpbnN0YW5jZXMgd2l0 aGluIGEgc2luZ2xlIHRlc3QsIGFuZCB0aGF0Cittb2R1bGUtc2NvcGVkIHNlcnZlcnMgcGVyc2lz dCBhY3Jvc3MgdGVzdHMuCisiIiIKKworaW1wb3J0IHB5dGVzdAorCisKK2RlZiB0ZXN0X211bHRp cGxlX3NlcnZlcnNfYmFzaWMoY3JlYXRlX3BnKToKKyAgICAiIiJUZXN0IHRoYXQgd2UgY2FuIGNy ZWF0ZSBhbmQgY29ubmVjdCB0byBtdWx0aXBsZSBzZXJ2ZXJzLiIiIgorICAgIG5vZGUxID0gY3Jl YXRlX3BnKCJwcmltYXJ5IikKKyAgICBub2RlMiA9IGNyZWF0ZV9wZygic2Vjb25kYXJ5IikKKwor ICAgIGNvbm4xID0gbm9kZTEuY29ubmVjdCgpCisgICAgY29ubjIgPSBub2RlMi5jb25uZWN0KCkK KworICAgICMgRWFjaCBzZXJ2ZXIgc2hvdWxkIGhhdmUgaXRzIG93biBkYXRhIGRpcmVjdG9yeQor ICAgIGRhdGFkaXIxID0gY29ubjEuc3FsKCJTSE9XIGRhdGFfZGlyZWN0b3J5IikKKyAgICBkYXRh ZGlyMiA9IGNvbm4yLnNxbCgiU0hPVyBkYXRhX2RpcmVjdG9yeSIpCisgICAgYXNzZXJ0IGRhdGFk aXIxICE9IGRhdGFkaXIyCisKKyAgICAjIEVhY2ggc2VydmVyIHNob3VsZCBiZSBsaXN0ZW5pbmcg b24gYSBkaWZmZXJlbnQgcG9ydAorICAgIGFzc2VydCBub2RlMS5wb3J0ICE9IG5vZGUyLnBvcnQK KworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgc2hhcmVkX3NlcnZlcihj cmVhdGVfcGdfbW9kdWxlKToKKyAgICAiIiJBIHNlcnZlciBzaGFyZWQgYWNyb3NzIGFsbCB0ZXN0 cyBpbiB0aGlzIG1vZHVsZS4iIiIKKyAgICBzZXJ2ZXIgPSBjcmVhdGVfcGdfbW9kdWxlKCJzaGFy ZWQiKQorICAgIHNlcnZlci5zcWwoIkNSRUFURSBUQUJMRSBtb2R1bGVfc3RhdGUgKHZhbHVlIGlu dCBERUZBVUxUIDApIikKKyAgICByZXR1cm4gc2VydmVyCisKKworZGVmIHRlc3RfbW9kdWxlX3Nl cnZlcl9jcmVhdGVfcm93KHNoYXJlZF9zZXJ2ZXIpOgorICAgICIiIkZpcnN0IHRlc3Q6IGNyZWF0 ZSBhIHJvdyBpbiB0aGUgc2hhcmVkIHNlcnZlci4iIiIKKyAgICBzaGFyZWRfc2VydmVyLmNvbm5l Y3QoKS5zcWwoIklOU0VSVCBJTlRPIG1vZHVsZV9zdGF0ZSBWQUxVRVMgKDQyKSIpCisKKworZGVm IHRlc3RfbW9kdWxlX3NlcnZlcl9zZWVfcm93KHNoYXJlZF9zZXJ2ZXIpOgorICAgICIiIlNlY29u ZCB0ZXN0OiB2ZXJpZnkgd2Ugc2VlIHRoZSByb3cgZnJvbSB0aGUgcHJldmlvdXMgdGVzdC4iIiIK KyAgICBhc3NlcnQgc2hhcmVkX3NlcnZlci5jb25uZWN0KCkuc3FsKCJTRUxFQ1QgdmFsdWUgRlJP TSBtb2R1bGVfc3RhdGUiKSA9PSA0MgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90 ZXN0X3F1ZXJ5X2hlbHBlcnMucHkgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfcXVlcnlfaGVs cGVycy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWJjZDkwODQy MTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfcXVlcnlfaGVs cGVycy5weQpAQCAtMCwwICsxLDM0NyBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVzdHMgZm9yIHF1ZXJ5IGhlbHBl ciBmdW5jdGlvbnMgd2l0aCB0eXBlIGNvbnZlcnNpb24gYW5kIHJlc3VsdCBzaW1wbGlmaWNhdGlv bi4KKyIiIgorCitpbXBvcnQgdXVpZAorCitpbXBvcnQgcHl0ZXN0CisKKworZGVmIHRlc3Rfc2lu Z2xlX2NlbGxfaW50KGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIGludGVnZXIgcXVlcnkgcmV0 dXJucyBqdXN0IHRoZSB2YWx1ZS4iIiIKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEi KQorICAgIGFzc2VydCByZXN1bHQgPT0gMQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg aW50KQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jZWxsX3N0cmluZyhjb25uKToKKyAgICAiIiJTaW5n bGUgY2VsbCBzdHJpbmcgcXVlcnkgcmV0dXJucyBqdXN0IHRoZSB2YWx1ZS4iIiIKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgiU0VMRUNUICdoZWxsbyciKQorICAgIGFzc2VydCByZXN1bHQgPT0gImhl bGxvIgorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgc3RyKQorCisKK2RlZiB0ZXN0X3Np bmdsZV9jZWxsX2Jvb2woY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgYm9vbGVhbiBxdWVyeSBy ZXR1cm5zIGp1c3QgdGhlIHZhbHVlLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVD VCB0cnVlIikKKyAgICBhc3NlcnQgcmVzdWx0IGlzIFRydWUKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHQsIGJvb2wpCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIGZhbHNlIikK KyAgICBhc3NlcnQgcmVzdWx0IGlzIEZhbHNlCisKKworZGVmIHRlc3Rfc2luZ2xlX2NlbGxfZmxv YXQoY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgZmxvYXQgcXVlcnkgcmV0dXJucyBqdXN0IHRo ZSB2YWx1ZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMy4xNDo6ZmxvYXQ0 IikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGZsb2F0KQorICAgIGFzc2VydCBhYnMo cmVzdWx0IC0gMy4xNCkgPCAwLjAxCisKKworZGVmIHRlc3Rfc2luZ2xlX2NlbGxfbnVsbChjb25u KToKKyAgICAiIiJTaW5nbGUgY2VsbCBOVUxMIHF1ZXJ5IHJldHVybnMgTm9uZS4iIiIKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgTlVMTCIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBO b25lCisKKworZGVmIHRlc3Rfc2luZ2xlX3Jvd19tdWx0aXBsZV9jb2x1bW5zKGNvbm4pOgorICAg ICIiIlNpbmdsZSByb3cgd2l0aCBtdWx0aXBsZSBjb2x1bW5zIHJldHVybnMgYSB0dXBsZS4iIiIK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSwgJ2hlbGxvJywgdHJ1ZSIpCisgICAg YXNzZXJ0IHJlc3VsdCA9PSAoMSwgImhlbGxvIiwgVHJ1ZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHQsIHR1cGxlKQorCisKK2RlZiB0ZXN0X3NpbmdsZV9jb2x1bW5fbXVsdGlwbGVfcm93 cyhjb25uKToKKyAgICAiIiJTaW5nbGUgY29sdW1uIHdpdGggbXVsdGlwbGUgcm93cyByZXR1cm5z IGEgbGlzdCBvZiB2YWx1ZXMuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUICog RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykiKQorICAgIGFzc2VydCByZXN1bHQgPT0gWzEsIDIs IDNdCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0KQorCisKK2RlZiB0ZXN0X211 bHRpcGxlX3Jvd3NfYW5kX2NvbHVtbnMoY29ubik6CisgICAgIiIiTXVsdGlwbGUgcm93cyBhbmQg Y29sdW1ucyByZXR1cm5zIGxpc3Qgb2YgdHVwbGVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCAqIEZST00gKFZBTFVFUyAoMSwgJ2EnKSwgKDIsICdiJyksICgzLCAnYycpKSBB UyB0IikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsoMSwgImEiKSwgKDIsICJiIiksICgzLCAiYyIp XQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlz aW5zdGFuY2Uocm93LCB0dXBsZSkgZm9yIHJvdyBpbiByZXN1bHQpCisKKworZGVmIHRlc3RfZW1w dHlfcmVzdWx0KGNvbm4pOgorICAgICIiIkVtcHR5IHJlc3VsdCBzZXQgcmV0dXJucyBlbXB0eSBs aXN0LiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxIFdIRVJFIGZhbHNlIikK KyAgICBhc3NlcnQgcmVzdWx0ID09IFtdCisKKworZGVmIHRlc3RfcXVlcnlfZXJyb3JfaGFuZGxp bmcoY29ubik6CisgICAgIiIiUXVlcnkgZXJyb3JzIHJhaXNlIFJ1bnRpbWVFcnJvciB3aXRoIGFj dHVhbCBlcnJvciBtZXNzYWdlLiIiIgorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKFJ1bnRpbWVF cnJvcikgYXMgZXhjX2luZm86CisgICAgICAgIGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIG5vbmV4 aXN0ZW50X3RhYmxlIikKKworICAgIGVycm9yX21zZyA9IHN0cihleGNfaW5mby52YWx1ZSkKKyAg ICBhc3NlcnQgIm5vbmV4aXN0ZW50X3RhYmxlIiBpbiBlcnJvcl9tc2cgb3IgImRvZXMgbm90IGV4 aXN0IiBpbiBlcnJvcl9tc2cKKworCitkZWYgdGVzdF9kaXZpc2lvbl9ieV96ZXJvX2Vycm9yKGNv bm4pOgorICAgICIiIkRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIFJ1bnRpbWVFcnJvci4iIiIKKwor ICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhSdW50aW1lRXJyb3IpIGFzIGV4Y19pbmZvOgorICAgICAg ICBjb25uLnNxbCgiU0VMRUNUIDEvMCIpCisKKyAgICBlcnJvcl9tc2cgPSBzdHIoZXhjX2luZm8u dmFsdWUpCisgICAgYXNzZXJ0ICJkaXZpc2lvbiBieSB6ZXJvIiBpbiBlcnJvcl9tc2cubG93ZXIo KQorCisKK2RlZiB0ZXN0X3NpbXBsZV9leGVjX2NyZWF0ZV90YWJsZShjb25uKToKKyAgICAiIiJz cWwgZm9yIENSRUFURSBUQUJMRSByZXR1cm5zIE5vbmUuIiIiCisKKyAgICByZXN1bHQgPSBjb25u LnNxbCgiQ1JFQVRFIFRFTVAgVEFCTEUgdGVzdF90YWJsZSAoaWQgaW50LCBuYW1lIHRleHQpIikK KyAgICBhc3NlcnQgcmVzdWx0IGlzIE5vbmUKKworICAgICMgVmVyaWZ5IHRhYmxlIHdhcyBjcmVh dGVkCisgICAgY291bnQgPSBjb25uLnNxbCgiU0VMRUNUIENPVU5UKCopIEZST00gdGVzdF90YWJs ZSIpCisgICAgYXNzZXJ0IGNvdW50ID09IDAKKworCitkZWYgdGVzdF9zaW1wbGVfZXhlY19pbnNl cnQoY29ubik6CisgICAgIiIic3FsIGZvciBJTlNFUlQgcmV0dXJucyBOb25lLiIiIgorCisgICAg Y29ubi5zcWwoIkNSRUFURSBURU1QIFRBQkxFIHRlc3RfdGFibGUgKGlkIGludCwgbmFtZSB0ZXh0 KSIpCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIklOU0VSVCBJTlRPIHRlc3RfdGFibGUgVkFMVUVT ICgxLCAnQWxpY2UnKSwgKDIsICdCb2InKSIpCisgICAgYXNzZXJ0IHJlc3VsdCBpcyBOb25lCisK KyAgICAjIFZlcmlmeSBkYXRhIHdhcyBpbnNlcnRlZAorICAgIGNvdW50ID0gY29ubi5zcWwoIlNF TEVDVCBDT1VOVCgqKSBGUk9NIHRlc3RfdGFibGUiKQorICAgIGFzc2VydCBjb3VudCA9PSAyCisK KworZGVmIHRlc3RfdHlwZV9jb252ZXJzaW9uX21peGVkKGNvbm4pOgorICAgICIiIlRlc3QgbWl4 ZWQgdHlwZSBjb252ZXJzaW9uIGluIGEgc2luZ2xlIHJvdy4iIiIKKworICAgIHJlc3VsdCA9IGNv bm4uc3FsKCJTRUxFQ1QgNDI6OmludDQsIDEyMzo6aW50OCwgMy4xNDo6ZmxvYXQ4LCAndGV4dCcs IHRydWUsIE5VTEwiKQorICAgIGFzc2VydCByZXN1bHQgPT0gKDQyLCAxMjMsIDMuMTQsICJ0ZXh0 IiwgVHJ1ZSwgTm9uZSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMF0sIGludCkKKyAg ICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbMV0sIGludCkKKyAgICBhc3NlcnQgaXNpbnN0YW5j ZShyZXN1bHRbMl0sIGZsb2F0KQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFszXSwgc3Ry KQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFs0XSwgYm9vbCkKKyAgICBhc3NlcnQgcmVz dWx0WzVdIGlzIE5vbmUKKworCitkZWYgdGVzdF9tdWx0aXBsZV9xdWVyaWVzX3NhbWVfY29ubmVj dGlvbihjb25uKToKKyAgICAiIiJUZXN0IHJ1bm5pbmcgbXVsdGlwbGUgcXVlcmllcyBvbiB0aGUg c2FtZSBjb25uZWN0aW9uLiIiIgorCisgICAgcmVzdWx0MSA9IGNvbm4uc3FsKCJTRUxFQ1QgMSIp CisgICAgYXNzZXJ0IHJlc3VsdDEgPT0gMQorCisgICAgcmVzdWx0MiA9IGNvbm4uc3FsKCJTRUxF Q1QgJ2hlbGxvJywgJ3dvcmxkJyIpCisgICAgYXNzZXJ0IHJlc3VsdDIgPT0gKCJoZWxsbyIsICJ3 b3JsZCIpCisKKyAgICByZXN1bHQzID0gY29ubi5zcWwoIlNFTEVDVCAqIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUpIikKKyAgICBhc3NlcnQgcmVzdWx0MyA9PSBbMSwgMiwgMywgNCwgNV0KKwor CitkZWYgdGVzdF9kYXRlX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCBkYXRlIHR5cGUgY29udmVy c2lvbi4iIiIKKyAgICBpbXBvcnQgZGF0ZXRpbWUKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJT RUxFQ1QgJzIwMjUtMTAtMjAnOjpkYXRlIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IGRhdGV0aW1l LmRhdGUoMjAyNSwgMTAsIDIwKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGF0ZXRp bWUuZGF0ZSkKKworCitkZWYgdGVzdF90aW1lc3RhbXBfdHlwZShjb25uKToKKyAgICAiIiJUZXN0 IHRpbWVzdGFtcCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgaW1wb3J0IGRhdGV0aW1lCisKKyAg ICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUICcyMDI1LTEwLTIwIDE1OjMwOjQ1Jzo6dGltZXN0 YW1wIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IGRhdGV0aW1lLmRhdGV0aW1lKDIwMjUsIDEwLCAy MCwgMTUsIDMwLCA0NSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGRhdGV0aW1lLmRh dGV0aW1lKQorCisKK2RlZiB0ZXN0X3RpbWVfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IHRpbWUg dHlwZSBjb252ZXJzaW9uLiIiIgorICAgIGltcG9ydCBkYXRldGltZQorCisgICAgcmVzdWx0ID0g Y29ubi5zcWwoIlNFTEVDVCAnMTU6MzA6NDUnOjp0aW1lIikKKyAgICBhc3NlcnQgcmVzdWx0ID09 IGRhdGV0aW1lLnRpbWUoMTUsIDMwLCA0NSkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQs IGRhdGV0aW1lLnRpbWUpCisKKworZGVmIHRlc3RfbnVtZXJpY190eXBlKGNvbm4pOgorICAgICIi IlRlc3QgbnVtZXJpYy9kZWNpbWFsIHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICBpbXBvcnQgZGVj aW1hbAorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxMjMuNDU2OjpudW1lcmljIikK KyAgICBhc3NlcnQgcmVzdWx0ID09IGRlY2ltYWwuRGVjaW1hbCgiMTIzLjQ1NiIpCisgICAgYXNz ZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBkZWNpbWFsLkRlY2ltYWwpCisKKworZGVmIHRlc3RfaW50 X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgaW50ZWdlciBhcnJheSB0eXBlIGNvbnZlcnNpb24u IiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZWzEsIDIsIDMsIDQsIDVd IikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsxLCAyLCAzLCA0LCA1XQorICAgIGFzc2VydCBpc2lu c3RhbmNlKHJlc3VsdCwgbGlzdCkKKyAgICBhc3NlcnQgYWxsKGlzaW5zdGFuY2UoeCwgaW50KSBm b3IgeCBpbiByZXN1bHQpCisKKworZGVmIHRlc3RfdGV4dF9hcnJheShjb25uKToKKyAgICAiIiJU ZXN0IHRleHQgYXJyYXkgdHlwZSBjb252ZXJzaW9uLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCBBUlJBWVsnaGVsbG8nLCAnd29ybGQnLCAndGVzdCddIikKKyAgICBhc3NlcnQg cmVzdWx0ID09IFsiaGVsbG8iLCAid29ybGQiLCAidGVzdCJdCisgICAgYXNzZXJ0IGlzaW5zdGFu Y2UocmVzdWx0LCBsaXN0KQorICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZSh4LCBzdHIpIGZvciB4 IGluIHJlc3VsdCkKKworCitkZWYgdGVzdF9ib29sX2FycmF5KGNvbm4pOgorICAgICIiIlRlc3Qg Ym9vbGVhbiBhcnJheSB0eXBlIGNvbnZlcnNpb24uIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNx bCgiU0VMRUNUIEFSUkFZW3RydWUsIGZhbHNlLCB0cnVlXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9 PSBbVHJ1ZSwgRmFsc2UsIFRydWVdCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0 KQorICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZSh4LCBib29sKSBmb3IgeCBpbiByZXN1bHQpCisK KworZGVmIHRlc3RfZW1wdHlfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCBlbXB0eSBhcnJheSB0 eXBlIGNvbnZlcnNpb24uIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZ W106OmludFtdIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFtdCisgICAgYXNzZXJ0IGlzaW5zdGFu Y2UocmVzdWx0LCBsaXN0KQorCisKK2RlZiB0ZXN0X2pzb25fdHlwZShjb25uKToKKyAgICAiIiJU ZXN0IEpTT04gdHlwZSAocGFyc2VkIHRvIGRpY3QpLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5z cWwoJ1NFTEVDVCBcJ3sia2V5IjogInZhbHVlIn1cJzo6anNvbicpCisgICAgYXNzZXJ0IGlzaW5z dGFuY2UocmVzdWx0LCBkaWN0KQorICAgIGFzc2VydCByZXN1bHQgPT0geyJrZXkiOiAidmFsdWUi fQorCisKK2RlZiB0ZXN0X2pzb25iX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCBKU09OQiB0eXBl IChwYXJzZWQgdG8gZGljdCkuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgnU0VMRUNUIFwn eyJuYW1lIjogInRlc3QiLCAiY291bnQiOiA0Mn1cJzo6anNvbmInKQorICAgIGFzc2VydCBpc2lu c3RhbmNlKHJlc3VsdCwgZGljdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09IHsibmFtZSI6ICJ0ZXN0 IiwgImNvdW50IjogNDJ9CisKKworZGVmIHRlc3RfanNvbl9hcnJheShjb25uKToKKyAgICAiIiJU ZXN0IEpTT04gYXJyYXkgdHlwZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1Qg J1sxLCAyLCAzLCA0LCA1XSc6Ompzb24iKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg bGlzdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsxLCAyLCAzLCA0LCA1XQorCisKK2RlZiB0ZXN0 X2pzb25fbmVzdGVkKGNvbm4pOgorICAgICIiIlRlc3QgbmVzdGVkIEpTT04gb2JqZWN0LiIiIgor CisgICAgcmVzdWx0ID0gY29ubi5zcWwoCisgICAgICAgICdTRUxFQ1QgXCd7InVzZXIiOiB7Imlk IjogMSwgIm5hbWUiOiAiQWxpY2UifSwgImFjdGl2ZSI6IHRydWV9XCc6Ompzb24nCisgICAgKQor ICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGljdCkKKyAgICBhc3NlcnQgcmVzdWx0ID09 IHsidXNlciI6IHsiaWQiOiAxLCAibmFtZSI6ICJBbGljZSJ9LCAiYWN0aXZlIjogVHJ1ZX0KKwor CitkZWYgdGVzdF9taXhlZF90eXBlc193aXRoX2FycmF5cyhjb25uKToKKyAgICAiIiJUZXN0IG1p eGVkIHR5cGVzIGluY2x1ZGluZyBhcnJheXMgaW4gYSBzaW5nbGUgcm93LiIiIgorCisgICAgcmVz dWx0ID0gY29ubi5zcWwoIlNFTEVDVCA0MiwgJ3RleHQnLCBBUlJBWVsxLCAyLCAzXSwgdHJ1ZSIp CisgICAgYXNzZXJ0IHJlc3VsdCA9PSAoNDIsICJ0ZXh0IiwgWzEsIDIsIDNdLCBUcnVlKQorICAg IGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFswXSwgaW50KQorICAgIGFzc2VydCBpc2luc3RhbmNl KHJlc3VsdFsxXSwgc3RyKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFsyXSwgbGlzdCkK KyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHRbM10sIGJvb2wpCisKKworZGVmIHRlc3RfdXVp ZF90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgVVVJRCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAg dGVzdF91dWlkID0gIjU1MGU4NDAwLWUyOWItNDFkNC1hNzE2LTQ0NjY1NTQ0MDAwMCIKKyAgICBy ZXN1bHQgPSBjb25uLnNxbChmIlNFTEVDVCAne3Rlc3RfdXVpZH0nOjp1dWlkIikKKyAgICBhc3Nl cnQgcmVzdWx0ID09IHV1aWQuVVVJRCh0ZXN0X3V1aWQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo cmVzdWx0LCB1dWlkLlVVSUQpCisKKworZGVmIHRlc3RfdXVpZF9nZW5lcmF0aW9uKGNvbm4pOgor ICAgICIiIlRlc3QgZ2VuZXJhdGVkIFVVSUQgdHlwZSBjb252ZXJzaW9uLiIiIgorICAgIHJlc3Vs dCA9IGNvbm4uc3FsKCJTRUxFQ1QgdXVpZHY0KCkiKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJl c3VsdCwgdXVpZC5VVUlEKQorICAgICMgQ2hlY2sgaXQncyBhIHZhbGlkIFVVSUQgYnkgZW5zdXJp bmcgaXQgY2FuIGJlIGNvbnZlcnRlZCB0byBzdHJpbmcKKyAgICBhc3NlcnQgbGVuKHN0cihyZXN1 bHQpKSA9PSAzNiAgIyBVVUlEIHN0cmluZyBmb3JtYXQgbGVuZ3RoCisKKworZGVmIHRlc3RfdGV4 dF9hcnJheV93aXRoX2NvbW1hcyhjb25uKToKKyAgICAiIiJUZXN0IHRleHQgYXJyYXkgd2l0aCBl bGVtZW50cyBjb250YWluaW5nIGNvbW1hcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJT RUxFQ1QgQVJSQVlbJ0EsQicsICdDJywgJyBEICddIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFsi QSxCIiwgIkMiLCAiIEQgIl0KKworCitkZWYgdGVzdF90ZXh0X2FycmF5X3dpdGhfcXVvdGVzKGNv bm4pOgorICAgICIiIlRlc3QgdGV4dCBhcnJheSB3aXRoIGVsZW1lbnRzIGNvbnRhaW5pbmcgcXVv dGVzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwociJTRUxFQ1QgQVJSQVlbRSdhXCJiJywg J2MnXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbJ2EiYicsICJjIl0KKworCitkZWYgdGVzdF90 ZXh0X2FycmF5X3dpdGhfYmFja3NsYXNoKGNvbm4pOgorICAgICIiIlRlc3QgdGV4dCBhcnJheSB3 aXRoIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmFja3NsYXNoZXMuIiIiCisKKyAgICByZXN1bHQgPSBj b25uLnNxbChyIlNFTEVDVCBBUlJBWVtFJ2FcXGInLCAnYyddIikKKyAgICBhc3NlcnQgcmVzdWx0 ID09IFsiYVxcYiIsICJjIl0KKworCitkZWYgdGVzdF9qc29uX2FycmF5X3R5cGUoY29ubik6Cisg ICAgIiIiVGVzdCBhcnJheSBvZiBKU09OIHZhbHVlcyB3aXRoIGVtYmVkZGVkIHF1b3RlcyBhbmQg Y29tbWFzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIiIiU0VMRUNUIEFSUkFZWyd7ImFi YyI6IDEyMywgInh5eiI6IDQ1Nn0nOjpqc29uXSIiIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFt7 ImFiYyI6IDEyMywgInh5eiI6IDQ1Nn1dCisKKworZGVmIHRlc3RfanNvbl9hcnJheV9tdWx0aXBs ZShjb25uKToKKyAgICAiIiJUZXN0IGFycmF5IG9mIG11bHRpcGxlIEpTT04gb2JqZWN0cy4iIiIK KworICAgIHJlc3VsdCA9IGNvbm4uc3FsKAorICAgICAgICAiIiJTRUxFQ1QgQVJSQVlbJ3siYSI6 IDF9Jzo6anNvbiwgJ3siYiI6IDJ9Jzo6anNvbiwgJ1sieCIsICJ5Il0nOjpqc29uXSIiIgorICAg ICkKKyAgICBhc3NlcnQgcmVzdWx0ID09IFt7ImEiOiAxfSwgeyJiIjogMn0sIFsieCIsICJ5Il1d CisKKworZGVmIHRlc3RfMmRfaW50X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgMkQgaW50ZWdl ciBhcnJheS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbWzEsMl0s WzMsNF1dIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFtbMSwgMl0sIFszLCA0XV0KKworCitkZWYg dGVzdF8yZF90ZXh0X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgMkQgaW50ZWdlciBhcnJheS4i IiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbWydhJywnYiddLFsnYycs J2QsZSddXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbWyJhIiwgImIiXSwgWyJjIiwgImQsZSJd XQorCisKK2RlZiB0ZXN0XzNkX2ludF9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IDNEIGludGVn ZXIgYXJyYXkuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIEFSUkFZW1tbMSwy XSxbMyw0XV0sW1s1LDZdLFs3LDhdXV0iKQorICAgIGFzc2VydCByZXN1bHQgPT0gW1tbMSwgMl0s IFszLCA0XV0sIFtbNSwgNl0sIFs3LCA4XV1dCisKKworZGVmIHRlc3RfYXJyYXlfd2l0aF9udWxs KGNvbm4pOgorICAgICIiIlRlc3QgYXJyYXkgd2l0aCBOVUxMIGVsZW1lbnRzLiIiIgorCisgICAg cmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVsxLCBOVUxMLCAzXSIpCisgICAgYXNzZXJ0 IHJlc3VsdCA9PSBbMSwgTm9uZSwgM10KLS0gCjIuNTMuMAoK --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v13-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch Content-Type: text/x-patch; charset=utf-8; name=v13-0003-POC-Convert-load-balance-tests-from-perl-to-pyth.patch RnJvbSA5NjM0MGZiYTk5M2MyYTZkZjRlZTg4MzJjOGVjMmE3ZDYzN2FkOGU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDI2IERlYyAyMDI1IDEyOjMxOjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 MTMgMy81XSBQT0M6IENvbnZlcnQgbG9hZCBiYWxhbmNlIHRlc3RzIGZyb20gcGVybCB0byBweXRo b24KClRoaXMgaXMgYSBwcm9vZiBvZiBjb25jZXB0IHRvIHNob3cgaG93IHRvIHVzZSB0aGUgcHl0 ZXN0IHRlc3QKaW5mcmFzdHJ1Y3R1cmUuIEl0IGNvbnZlcnRzIHR3byBleGlzdGluZyB0ZXN0cyB0 aGF0IGNvdWxkIG5vdCBzaGFyZQpjb2RlLiBBbmQgbm93IHRoZXkgZG8uIElmIHdlIGV2ZXIgaW50 cm9kdWNlIGFub3RoZXIgbG9hZCBiYWxhbmNlIG1ldGhvZAooZS5nLiByb3VuZCByb2JpbikuIFdl IGNhbiBlYXNpbHkgdGVzdCBpdCBmb3IgYm90aCBETlMgYW5kIGhvc3RsaXN0CmJhc2VkIGxvYWQg YmFsYW5jaW5nIGJ5IGFkZGluZyBhIHNpbmdsZSBuZXcgdGVzdCBmdW5jdGlvbi4KLS0tCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQgICAgICAgICAgICAgIHwgICA3ICstCiBzcmMvaW50 ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkgfCAxNzAgKysrKysrKysrKysr KysrKysrCiAuLi4vbGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbCAgICAgfCAg OTQgLS0tLS0tLS0tLQogLi4uL2xpYnBxL3QvMDA0X2xvYWRfYmFsYW5jZV9kbnMucGwgICAgICAg ICAgIHwgMTQ0IC0tLS0tLS0tLS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxNzYgaW5zZXJ0aW9u cygrKSwgMjQwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbnRlcmZhY2Vz L2xpYnBxL3B5dC90ZXN0X2xvYWRfYmFsYW5jZS5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyYy9p bnRlcmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwNF9sb2FkX2JhbGFuY2VfZG5zLnBs CgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgYi9zcmMvaW50ZXJm YWNlcy9saWJwcS9NYWtlZmlsZQppbmRleCAwOTYzOTk1ZWVkNC4uZDA4ODE0MmY4YzYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL01ha2VmaWxlCkBAIC0xNjksNiArMTY5LDcgQEAgY2hlY2sgaW5zdGFsbGNoZWNrOiBl eHBvcnQgUEFUSCA6PSAkKENVUkRJUikvdGVzdDokKFBBVEgpCiAKIGNoZWNrOiB0ZXN0LWJ1aWxk IGFsbAogCSQocHJvdmVfY2hlY2spCisJJChweXRlc3RfY2hlY2spCiAKIGluc3RhbGxjaGVjazog dGVzdC1idWlsZCBhbGwKIAkkKHByb3ZlX2luc3RhbGxjaGVjaykKZGlmZiAtLWdpdCBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24u YnVpbGQKaW5kZXggYjBhZTcyMTY3YTEuLjYyY2RlOTdkMTY5IDEwMDY0NAotLS0gYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNv bi5idWlsZApAQCAtMTU3LDggKzE1Nyw2IEBAIHRlc3RzICs9IHsKICAgICAndGVzdHMnOiBbCiAg ICAgICAndC8wMDFfdXJpLnBsJywKICAgICAgICd0LzAwMl9hcGkucGwnLAotICAgICAgJ3QvMDAz X2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwnLAotICAgICAgJ3QvMDA0X2xvYWRfYmFsYW5jZV9k bnMucGwnLAogICAgICAgJ3QvMDA1X25lZ290aWF0ZV9lbmNyeXB0aW9uLnBsJywKICAgICAgICd0 LzAwNl9zZXJ2aWNlLnBsJywKICAgICBdLApAQCAtMTY5LDYgKzE2NywxMSBAQCB0ZXN0cyArPSB7 CiAgICAgfSwKICAgICAnZGVwcyc6IGxpYnBxX3Rlc3RfZGVwcywKICAgfSwKKyAgJ3B5dGVzdCc6 IHsKKyAgICAndGVzdHMnOiBbCisgICAgICAncHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5JywKKyAg ICBdLAorICB9LAogfQogCiBzdWJkaXIoJ3BvJywgaWZfZm91bmQ6IGxpYmludGwpCmRpZmYgLS1n aXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjBhZjQ2ZDhmMzdkCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2ludGVyZmFjZXMvbGlicHEvcHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5CkBAIC0wLDAgKzEs MTcwIEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1l bnQgR3JvdXAKKworIiIiCitUZXN0cyBmb3IgbG9hZF9iYWxhbmNlX2hvc3RzIGNvbm5lY3Rpb24g cGFyYW1ldGVyLgorCitUaGVzZSB0ZXN0cyB2ZXJpZnkgdGhhdCBsaWJwcSBjb3JyZWN0bHkgaGFu ZGxlcyBsb2FkIGJhbGFuY2luZyBhY3Jvc3MgbXVsdGlwbGUKK1Bvc3RncmVTUUwgc2VydmVycyBz cGVjaWZpZWQgaW4gdGhlIGNvbm5lY3Rpb24gc3RyaW5nLgorIiIiCisKK2ltcG9ydCBwbGF0Zm9y bQoraW1wb3J0IHJlCisKK2ltcG9ydCBweXRlc3QKKworZnJvbSBsaWJwcSBpbXBvcnQgTGlicHFF cnJvcgoraW1wb3J0IHB5cGcKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitk ZWYgbG9hZF9iYWxhbmNlX25vZGVzX2hvc3RsaXN0KGNyZWF0ZV9wZ19tb2R1bGUpOgorICAgICIi IgorICAgIENyZWF0ZSAzIFBvc3RncmVTUUwgbm9kZXMgd2l0aCBkaWZmZXJlbnQgc29ja2V0IGRp cmVjdG9yaWVzLgorCisgICAgRWFjaCBub2RlIGhhcyBpdHMgb3duIFVuaXggc29ja2V0IGRpcmVj dG9yeSBmb3IgaXNvbGF0aW9uLgorICAgIFJldHVybnMgYSB0dXBsZSBvZiAobm9kZXMsIGNvbm5l Y3QpLgorICAgICIiIgorICAgIG5vZGVzID0gW2NyZWF0ZV9wZ19tb2R1bGUoKSBmb3IgXyBpbiBy YW5nZSgzKV0KKworICAgIGhvc3RsaXN0ID0gIiwiLmpvaW4obm9kZS5ob3N0IGZvciBub2RlIGlu IG5vZGVzKQorICAgIHBvcnRsaXN0ID0gIiwiLmpvaW4oc3RyKG5vZGUucG9ydCkgZm9yIG5vZGUg aW4gbm9kZXMpCisKKyAgICBkZWYgY29ubmVjdCgqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBu b2Rlc1swXS5jb25uZWN0KGhvc3Q9aG9zdGxpc3QsIHBvcnQ9cG9ydGxpc3QsICoqa3dhcmdzKQor CisgICAgcmV0dXJuIG5vZGVzLCBjb25uZWN0CisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJt b2R1bGUiKQorZGVmIGxvYWRfYmFsYW5jZV9ub2Rlc19kbnMoY3JlYXRlX3BnX21vZHVsZSk6Cisg ICAgIiIiCisgICAgQ3JlYXRlIDMgUG9zdGdyZVNRTCBub2RlcyBvbiB0aGUgc2FtZSBwb3J0IGJ1 dCBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzLgorCisgICAgVXNlcyAxMjcuMC4wLjEsIDEyNy4wLjAu MiwgMTI3LjAuMC4zIHdpdGggYSBzaGFyZWQgcG9ydCwgc28gdGhhdAorICAgIGNvbm5lY3Rpb25z IHRvICdwZy1sb2FkYmFsYW5jZXRlc3QnIGNhbiBiZSBsb2FkIGJhbGFuY2VkIHZpYSBETlMuCisK KyAgICBTaW5jZSBzZXR0aW5nIHVwIGEgRE5TIHNlcnZlciBpcyBtb3JlIGVmZm9ydCB0aGFuIHdl IGNvbnNpZGVyIHJlYXNvbmFibGUgdG8KKyAgICBydW4gdGhpcyB0ZXN0LCB0aGlzIHNpdHVhdGlv biBpcyBpbnN0ZWFkIGltaXRhdGVkIGJ5IHVzaW5nIGEgaG9zdHMgZmlsZQorICAgIHdoZXJlIGEg c2luZ2xlIGhvc3RuYW1lIG1hcHMgdG8gbXVsdGlwbGUgZGlmZmVyZW50IElQIGFkZHJlc3Nlcy4g VGhpcyB0ZXN0CisgICAgcmVxdWlyZXMgdGhlIGFkbWluaXN0cmF0b3IgdG8gYWRkIHRoZSBmb2xs b3dpbmcgbGluZXMgdG8gdGhlIGhvc3RzIGZpbGUgKGlmCisgICAgd2UgZGV0ZWN0IHRoYXQgdGhp cyBoYXNuJ3QgaGFwcGVuZWQgd2Ugc2tpcCB0aGUgdGVzdCk6CisKKyAgICAxMjcuMC4wLjEgcGct bG9hZGJhbGFuY2V0ZXN0CisgICAgMTI3LjAuMC4yIHBnLWxvYWRiYWxhbmNldGVzdAorICAgIDEy Ny4wLjAuMyBwZy1sb2FkYmFsYW5jZXRlc3QKKworICAgIFdpbmRvd3Mgb3IgTGludXggYXJlIHJl cXVpcmVkIHRvIHJ1biB0aGlzIHRlc3QgYmVjYXVzZSB0aGVzZSBPU2VzIGFsbG93CisgICAgYmlu ZGluZyB0byAxMjcuMC4wLjIgYW5kIDEyNy4wLjAuMyBhZGRyZXNzZXMgYnkgZGVmYXVsdCwgYnV0 IG90aGVyIE9TZXMKKyAgICBkb24ndC4gV2UgbmVlZCB0byBiaW5kIHRvIGRpZmZlcmVudCBJUCBh ZGRyZXNzZXMsIHNvIHRoYXQgd2UgY2FuIHVzZSB0aGVzZQorICAgIGRpZmZlcmVudCBJUCBhZGRy ZXNzZXMgaW4gdGhlIGhvc3RzIGZpbGUuCisKKyAgICBUaGUgaG9zdHMgZmlsZSBuZWVkcyB0byBi ZSBwcmVwYXJlZCBiZWZvcmUgcnVubmluZyB0aGlzIHRlc3QuIFdlIGRvbid0IGRvCisgICAgaXQg b24gdGhlIGZseSwgYmVjYXVzZSBpdCByZXF1aXJlcyByb290IHBlcm1pc3Npb25zIHRvIGNoYW5n ZSB0aGUgaG9zdHMKKyAgICBmaWxlLiBJbiBDSSB3ZSBzZXQgdXAgdGhlIHByZXZpb3VzbHkgbWVu dGlvbmVkIHJ1bGVzIGluIHRoZSBob3N0cyBmaWxlLCBzbworICAgIHRoYXQgdGhpcyBsb2FkIGJh bGFuY2luZyBtZXRob2QgaXMgdGVzdGVkLgorCisgICAgUmVxdWlyZXMgUEdfVEVTVF9FWFRSQT1s b2FkX2JhbGFuY2UgYmVjYXVzZSBpdCByZXF1aXJlcyB0aGlzIG1hbnVhbCBob3N0cworICAgIGZp bGUgY29uZmlndXJhdGlvbiBhbmQgYWxzbyB1c2VzIFRDUCB3aXRoIHRydXN0IGF1dGgsIHdoaWNo IGlzIHBvdGVudGlhbGx5CisgICAgdW5zYWZlIG9uIG11bHRpdXNlciBzeXN0ZW1zLgorICAgICIi IgorICAgIHB5cGcuc2tpcF91bmxlc3NfdGVzdF9leHRyYXMoImxvYWRfYmFsYW5jZSIpCisKKyAg ICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSBub3QgaW4gKCJMaW51eCIsICJXaW5kb3dzIik6CisgICAg ICAgIHB5dGVzdC5za2lwKCJETlMgbG9hZCBiYWxhbmNlIHRlc3Qgb25seSBzdXBwb3J0ZWQgb24g TGludXggYW5kIFdpbmRvd3MiKQorCisgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgPT0gIldpbmRv d3MiOgorICAgICAgICBob3N0c19wYXRoID0gciJjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNc ZXRjXGhvc3RzIgorICAgIGVsc2U6CisgICAgICAgIGhvc3RzX3BhdGggPSAiL2V0Yy9ob3N0cyIK KworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKGhvc3RzX3BhdGgpIGFzIGY6CisgICAgICAg ICAgICBob3N0c19jb250ZW50ID0gZi5yZWFkKCkKKyAgICBleGNlcHQgKE9TRXJyb3IsIElPRXJy b3IpOgorICAgICAgICBweXRlc3Quc2tpcChmIkNvdWxkIG5vdCByZWFkIGhvc3RzIGZpbGU6IHto b3N0c19wYXRofSIpCisKKyAgICBjb3VudCA9IGxlbihyZS5maW5kYWxsKHIiMTI3XC4wXC4wXC5b MS0zXVxzK3BnLWxvYWRiYWxhbmNldGVzdCIsIGhvc3RzX2NvbnRlbnQpKQorICAgIGlmIGNvdW50 ICE9IDM6CisgICAgICAgIHB5dGVzdC5za2lwKCJob3N0cyBmaWxlIG5vdCBwcmVwYXJlZCBmb3Ig RE5TIGxvYWQgYmFsYW5jZSB0ZXN0IikKKworICAgIGZpcnN0X25vZGUgPSBjcmVhdGVfcGdfbW9k dWxlKGhvc3RhZGRyPSIxMjcuMC4wLjEiKQorICAgIG5vZGVzID0gWworICAgICAgICBmaXJzdF9u b2RlLAorICAgICAgICBjcmVhdGVfcGdfbW9kdWxlKGhvc3RhZGRyPSIxMjcuMC4wLjIiLCBwb3J0 PWZpcnN0X25vZGUucG9ydCksCisgICAgICAgIGNyZWF0ZV9wZ19tb2R1bGUoaG9zdGFkZHI9IjEy Ny4wLjAuMyIsIHBvcnQ9Zmlyc3Rfbm9kZS5wb3J0KSwKKyAgICBdCisKKyAgICAjIEFsbG93IHRy dXN0IGF1dGhlbnRpY2F0aW9uIGZvciBUQ1AgY29ubmVjdGlvbnMgZnJvbSBsb29wYmFjaworICAg IGZvciBub2RlIGluIG5vZGVzOgorICAgICAgICBoYmFfcGF0aCA9IG5vZGUuZGF0YWRpciAvICJw Z19oYmEuY29uZiIKKyAgICAgICAgd2l0aCBvcGVuKGhiYV9wYXRoLCAiciIpIGFzIGY6CisgICAg ICAgICAgICBvcmlnaW5hbF9jb250ZW50ID0gZi5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuKGhi YV9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCJob3N0IGFsbCBhbGwgMTI3 LjAuMC4wLzggdHJ1c3RcbiIpCisgICAgICAgICAgICBmLndyaXRlKG9yaWdpbmFsX2NvbnRlbnQp CisgICAgICAgIG5vZGUucGdfY3RsKCJyZWxvYWQiKQorCisgICAgZGVmIGNvbm5lY3QoKiprd2Fy Z3MpOgorICAgICAgICByZXR1cm4gbm9kZXNbMF0uY29ubmVjdChob3N0PSJwZy1sb2FkYmFsYW5j ZXRlc3QiLCAqKmt3YXJncykKKworICAgIHJldHVybiBub2RlcywgY29ubmVjdAorCisKK0BweXRl c3QuZml4dHVyZShzY29wZT0ibW9kdWxlIiwgcGFyYW1zPVsiaG9zdGxpc3QiLCAiZG5zIl0pCitk ZWYgbG9hZF9iYWxhbmNlX25vZGVzKHJlcXVlc3QpOgorICAgICIiIgorICAgIFBhcmFtZXRyaXpl ZCBmaXh0dXJlIHByb3ZpZGluZyBib3RoIGxvYWQgYmFsYW5jaW5nIHRlc3QgZW52aXJvbm1lbnRz LgorICAgICIiIgorICAgIHJldHVybiByZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZShmImxvYWRfYmFs YW5jZV9ub2Rlc197cmVxdWVzdC5wYXJhbX0iKQorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9o b3N0c19pbnZhbGlkX3ZhbHVlKGxvYWRfYmFsYW5jZV9ub2Rlcyk6CisgICAgIiIibG9hZF9iYWxh bmNlX2hvc3RzIGRvZXNuJ3QgYWNjZXB0IHVua25vd24gdmFsdWVzLiIiIgorICAgIF8sIGNvbm5l Y3QgPSBsb2FkX2JhbGFuY2Vfbm9kZXMKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcygKKyAgICAg ICAgTGlicHFFcnJvciwgbWF0Y2g9J2ludmFsaWQgbG9hZF9iYWxhbmNlX2hvc3RzIHZhbHVlOiAi ZG9lc25vdGV4aXN0IicKKyAgICApOgorICAgICAgICBjb25uZWN0KGxvYWRfYmFsYW5jZV9ob3N0 cz0iZG9lc25vdGV4aXN0IikKKworCitkZWYgdGVzdF9sb2FkX2JhbGFuY2VfaG9zdHNfZGlzYWJs ZShsb2FkX2JhbGFuY2Vfbm9kZXMpOgorICAgICIiImxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxl IGFsd2F5cyBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZS4iIiIKKyAgICBub2RlcywgY29ubmVj dCA9IGxvYWRfYmFsYW5jZV9ub2RlcworCisgICAgd2l0aCBub2Rlc1swXS5sb2dfY29udGFpbnMo ImNvbm5lY3Rpb24gcmVjZWl2ZWQiKToKKyAgICAgICAgY29ubmVjdChsb2FkX2JhbGFuY2VfaG9z dHM9ImRpc2FibGUiKQorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9ob3N0c19yYW5kb21fZGlz dHJpYnV0aW9uKGxvYWRfYmFsYW5jZV9ub2Rlcyk6CisgICAgIiIibG9hZF9iYWxhbmNlX2hvc3Rz PXJhbmRvbSBkaXN0cmlidXRlcyBjb25uZWN0aW9ucyBhY3Jvc3MgYWxsIG5vZGVzLiIiIgorICAg IG5vZGVzLCBjb25uZWN0ID0gbG9hZF9iYWxhbmNlX25vZGVzCisKKyAgICBmb3IgXyBpbiByYW5n ZSg1MCk6CisgICAgICAgIGNvbm5lY3QobG9hZF9iYWxhbmNlX2hvc3RzPSJyYW5kb20iKQorCisg ICAgb2NjdXJyZW5jZXMgPSBbCisgICAgICAgIGxlbihyZS5maW5kYWxsKCJjb25uZWN0aW9uIHJl Y2VpdmVkIiwgbm9kZS5sb2dfY29udGVudCgpKSkgZm9yIG5vZGUgaW4gbm9kZXMKKyAgICBdCisK KyAgICAjIFN0YXRpc3RpY2FsbHksIGVhY2ggbm9kZSBzaG91bGQgcmVjZWl2ZSBhdCBsZWFzdCBv bmUgY29ubmVjdGlvbi4KKyAgICAjIFRoZSBwcm9iYWJpbGl0eSBvZiBhbnkgbm9kZSByZWNlaXZp bmcgMCBjb25uZWN0aW9ucyBpcyAoMi8zKV41MCDiiYggMS41N2UtOQorICAgIGFzc2VydCBvY2N1 cnJlbmNlc1swXSA+IDAsICJub2RlMSBzaG91bGQgcmVjZWl2ZSBhdCBsZWFzdCBvbmUgY29ubmVj dGlvbiIKKyAgICBhc3NlcnQgb2NjdXJyZW5jZXNbMV0gPiAwLCAibm9kZTIgc2hvdWxkIHJlY2Vp dmUgYXQgbGVhc3Qgb25lIGNvbm5lY3Rpb24iCisgICAgYXNzZXJ0IG9jY3VycmVuY2VzWzJdID4g MCwgIm5vZGUzIHNob3VsZCByZWNlaXZlIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIgorICAgIGFz c2VydCBzdW0ob2NjdXJyZW5jZXMpID09IDUwLCAidG90YWwgY29ubmVjdGlvbnMgc2hvdWxkIGJl IDUwIgorCisKK2RlZiB0ZXN0X2xvYWRfYmFsYW5jZV9ob3N0c19mYWlsb3Zlcihsb2FkX2JhbGFu Y2Vfbm9kZXMpOgorICAgICIiImxvYWRfYmFsYW5jZV9ob3N0cyBjb250aW51ZXMgdHJ5aW5nIGhv c3RzIHVudGlsIGl0IGZpbmRzIGEgd29ya2luZyBvbmUuIiIiCisgICAgbm9kZXMsIGNvbm5lY3Qg PSBsb2FkX2JhbGFuY2Vfbm9kZXMKKworICAgIG5vZGVzWzBdLnN0b3AoKQorICAgIG5vZGVzWzFd LnN0b3AoKQorCisgICAgd2l0aCBub2Rlc1syXS5sb2dfY29udGFpbnMoImNvbm5lY3Rpb24gcmVj ZWl2ZWQiKToKKyAgICAgICAgY29ubmVjdChsb2FkX2JhbGFuY2VfaG9zdHM9ImRpc2FibGUiKQor CisgICAgd2l0aCBub2Rlc1syXS5sb2dfY29udGFpbnMoImNvbm5lY3Rpb24gcmVjZWl2ZWQiLCB0 aW1lcz01KToKKyAgICAgICAgZm9yIF8gaW4gcmFuZ2UoNSk6CisgICAgICAgICAgICBjb25uZWN0 KGxvYWRfYmFsYW5jZV9ob3N0cz0icmFuZG9tIikKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwgYi9zcmMvaW50ZXJmYWNlcy9s aWJwcS90LzAwM19sb2FkX2JhbGFuY2VfaG9zdF9saXN0LnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAxZjk3MGZmOTk0Yi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjL2ludGVyZmFjZXMv bGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbAorKysgL2Rldi9udWxsCkBAIC0x LDk0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDIzLTIwMjYsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdh bGwnOwotdXNlIENvbmZpZzsKLXVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKLXVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwotdXNlIFRlc3Q6Ok1vcmU7Ci0KLSMgVGhpcyB0ZXN0cyBs b2FkIGJhbGFuY2luZyBhY3Jvc3MgdGhlIGxpc3Qgb2YgZGlmZmVyZW50IGhvc3RzIGluIHRoZSBo b3N0Ci0jIHBhcmFtZXRlciBvZiB0aGUgY29ubmVjdGlvbiBzdHJpbmcuCi0KLSMgQ2x1c3RlciBz ZXR1cCB3aGljaCBpcyBzaGFyZWQgZm9yIHRlc3RpbmcgYm90aCBsb2FkIGJhbGFuY2luZyBtZXRo b2RzCi1teSAkbm9kZTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJyk7 Ci1teSAkbm9kZTIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUyJywgb3du X2hvc3QgPT4gMSk7Ci1teSAkbm9kZTMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J25vZGUzJywgb3duX2hvc3QgPT4gMSk7Ci0KLSMgQ3JlYXRlIGEgZGF0YSBkaXJlY3Rvcnkgd2l0 aCBpbml0ZGIKLSRub2RlMS0+aW5pdCgpOwotJG5vZGUyLT5pbml0KCk7Ci0kbm9kZTMtPmluaXQo KTsKLQotIyBTdGFydCB0aGUgUG9zdGdyZVNRTCBzZXJ2ZXIKLSRub2RlMS0+c3RhcnQoKTsKLSRu b2RlMi0+c3RhcnQoKTsKLSRub2RlMy0+c3RhcnQoKTsKLQotIyBTdGFydCB0aGUgdGVzdHMgZm9y IGxvYWQgYmFsYW5jaW5nIG1ldGhvZCAxCi1teSAkaG9zdGxpc3QgPSAkbm9kZTEtPmhvc3QgLiAn LCcgLiAkbm9kZTItPmhvc3QgLiAnLCcgLiAkbm9kZTMtPmhvc3Q7Ci1teSAkcG9ydGxpc3QgPSAk bm9kZTEtPnBvcnQgLiAnLCcgLiAkbm9kZTItPnBvcnQgLiAnLCcgLiAkbm9kZTMtPnBvcnQ7Ci0K LSRub2RlMS0+Y29ubmVjdF9mYWlscygKLQkiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3Qg bG9hZF9iYWxhbmNlX2hvc3RzPWRvZXNub3RleGlzdCIsCi0JImxvYWRfYmFsYW5jZV9ob3N0cyBk b2Vzbid0IGFjY2VwdCB1bmtub3duIHZhbHVlcyIsCi0JZXhwZWN0ZWRfc3RkZXJyID0+IHFyL2lu dmFsaWQgbG9hZF9iYWxhbmNlX2hvc3RzIHZhbHVlOiAiZG9lc25vdGV4aXN0Ii8pOwotCi0jIGxv YWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBhbHdheXMgY2hvb3NlIHRoZSBmaXJzdCBv bmUuCi0kbm9kZTEtPmNvbm5lY3Rfb2soCi0JImhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0 IGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIiwKLQkibG9hZF9iYWxhbmNlX2hvc3RzPWRpc2Fi bGUgY29ubmVjdHMgdG8gdGhlIGZpcnN0IG5vZGUiLAotCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0 MSciLAotCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDEnL10pOwot Ci0jIFN0YXRpc3RpY2FsbHkgdGhlIGZvbGxvd2luZyBsb29wIHdpdGggbG9hZF9iYWxhbmNlX2hv c3RzPXJhbmRvbSB3aWxsIGFsbW9zdAotIyBjZXJ0YWlubHkgY29ubmVjdCBhdCBsZWFzdCBvbmNl IHRvIGVhY2ggb2YgdGhlIG5vZGVzLiBUaGUgY2hhbmNlIG9mIHRoYXQgbm90Ci0jIGhhcHBlbmlu ZyBpcyBzbyBzbWFsbCB0aGF0IGl0J3MgbmVnbGlnaWJsZTogKDIvMyleNTAgPSAxLjU2ODMyODU1 ZS05Ci1mb3JlYWNoIG15ICRpICgxIC4uIDUwKQotewotCSRub2RlMS0+Y29ubmVjdF9vaygKLQkJ Imhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20i LAotCQkicmVwZWF0ZWQgY29ubmVjdGlvbnMgd2l0aCByYW5kb20gbG9hZCBiYWxhbmNpbmciLAot CQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDInIik7Ci19Ci0KLW15ICRub2RlMV9vY2N1cnJlbmNl cyA9ICgpID0KLSAgJG5vZGUxLT5sb2dfY29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAn Y29ubmVjdDInL2c7Ci1teSAkbm9kZTJfb2NjdXJyZW5jZXMgPSAoKSA9Ci0gICRub2RlMi0+bG9n X2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkgJG5vZGUz X29jY3VycmVuY2VzID0gKCkgPQotICAkbm9kZTMtPmxvZ19jb250ZW50KCkgPX4gL3N0YXRlbWVu dDogU0VMRUNUICdjb25uZWN0MicvZzsKLQotbXkgJHRvdGFsX29jY3VycmVuY2VzID0KLSAgJG5v ZGUxX29jY3VycmVuY2VzICsgJG5vZGUyX29jY3VycmVuY2VzICsgJG5vZGUzX29jY3VycmVuY2Vz OwotCi1jbXBfb2soJG5vZGUxX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxl YXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUxIik7Ci1jbXBfb2soJG5vZGUyX29jY3VycmVuY2Vz LCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUyIik7 Ci1jbXBfb2soJG5vZGUzX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0 IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUzIik7Ci1pcygkdG90YWxfb2NjdXJyZW5jZXMsIDUwLCAi cmVjZWl2ZWQgNTAgY29ubmVjdGlvbnMgYWNyb3NzIGFsbCBub2RlcyIpOwotCi0kbm9kZTEtPnN0 b3AoKTsKLSRub2RlMi0+c3RvcCgpOwotCi0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNo b3VsZCBjb250aW51ZSB0cnlpbmcgaG9zdHMgdW50aWwgaXQgZmluZHMgYQotIyB3b3JraW5nIG9u ZS4KLSRub2RlMy0+Y29ubmVjdF9vaygKLQkiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3Qg bG9hZF9iYWxhbmNlX2hvc3RzPWRpc2FibGUiLAotCSJsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJs ZSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVjdHMgdG8gdGhlIGEgd29ya2luZyBub2RlIiwKLQlz cWwgPT4gIlNFTEVDVCAnY29ubmVjdDMnIiwKLQlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBT RUxFQ1QgJ2Nvbm5lY3QzJy9dKTsKLQotIyBBbHNvIHdpdGggbG9hZF9iYWxhbmNlX2hvc3RzPXJh bmRvbSB3ZSBjb250aW51ZSB0byB0aGUgbmV4dCBub2RlcyBpZiBwcmV2aW91cwotIyBvbmVzIGFy ZSBkb3duLiBDb25uZWN0IGEgZmV3IHRpbWVzIHRvIG1ha2Ugc3VyZSBpdCdzIG5vdCBqdXN0IGx1 Y2t5LgotZm9yZWFjaCBteSAkaSAoMSAuLiA1KQotewotCSRub2RlMy0+Y29ubmVjdF9vaygKLQkJ Imhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20i LAotCQkibG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVj dHMgdG8gdGhlIGEgd29ya2luZyBub2RlIiwKLQkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Q0JyIs Ci0JCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDQnL10pOwotfQot Ci1kb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDA0 X2xvYWRfYmFsYW5jZV9kbnMucGwgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwNF9sb2FkX2Jh bGFuY2VfZG5zLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMWZmOWEwNjAyNC4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDRfbG9hZF9iYWxhbmNl X2Rucy5wbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi0jIENvcHlyaWdodCAoYykg MjAyMy0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotdXNlIHN0cmlj dDsKLXVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKLXVzZSBDb25maWc7Ci11c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7Ci11c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKLXVzZSBU ZXN0OjpNb3JlOwotCi1pZiAoISRFTlZ7UEdfVEVTVF9FWFRSQX0gfHwgJEVOVntQR19URVNUX0VY VFJBfSAhfiAvXGJsb2FkX2JhbGFuY2VcYi8pCi17Ci0JcGxhbiBza2lwX2FsbCA9PgotCSAgJ1Bv dGVudGlhbGx5IHVuc2FmZSB0ZXN0IGxvYWRfYmFsYW5jZSBub3QgZW5hYmxlZCBpbiBQR19URVNU X0VYVFJBJzsKLX0KLQotIyBUaGlzIHRlc3RzIGxvYWRiYWxhbmNpbmcgYmFzZWQgb24gYSBETlMg ZW50cnkgdGhhdCBjb250YWlucyBtdWx0aXBsZSByZWNvcmRzCi0jIGZvciBkaWZmZXJlbnQgSVBz LiBTaW5jZSBzZXR0aW5nIHVwIGEgRE5TIHNlcnZlciBpcyBtb3JlIGVmZm9ydCB0aGFuIHdlCi0j IGNvbnNpZGVyIHJlYXNvbmFibGUgdG8gcnVuIHRoaXMgdGVzdCwgdGhpcyBzaXR1YXRpb24gaXMg aW5zdGVhZCBpbWl0YXRlZCBieQotIyB1c2luZyBhIGhvc3RzIGZpbGUgd2hlcmUgYSBzaW5nbGUg aG9zdG5hbWUgbWFwcyB0byBtdWx0aXBsZSBkaWZmZXJlbnQgSVAKLSMgYWRkcmVzc2VzLiBUaGlz IHRlc3QgcmVxdWlyZXMgdGhlIGFkbWluaXN0cmF0b3IgdG8gYWRkIHRoZSBmb2xsb3dpbmcgbGlu ZXMgdG8KLSMgdGhlIGhvc3RzIGZpbGUgKGlmIHdlIGRldGVjdCB0aGF0IHRoaXMgaGFzbid0IGhh cHBlbmVkIHdlIHNraXAgdGhlIHRlc3QpOgotIwotIyAxMjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0 ZXN0Ci0jIDEyNy4wLjAuMiBwZy1sb2FkYmFsYW5jZXRlc3QKLSMgMTI3LjAuMC4zIHBnLWxvYWRi YWxhbmNldGVzdAotIwotIyBXaW5kb3dzIG9yIExpbnV4IGFyZSByZXF1aXJlZCB0byBydW4gdGhp cyB0ZXN0IGJlY2F1c2UgdGhlc2UgT1NlcyBhbGxvdwotIyBiaW5kaW5nIHRvIDEyNy4wLjAuMiBh bmQgMTI3LjAuMC4zIGFkZHJlc3NlcyBieSBkZWZhdWx0LCBidXQgb3RoZXIgT1NlcwotIyBkb24n dC4gV2UgbmVlZCB0byBiaW5kIHRvIGRpZmZlcmVudCBJUCBhZGRyZXNzZXMsIHNvIHRoYXQgd2Ug Y2FuIHVzZSB0aGVzZQotIyBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzIGluIHRoZSBob3N0cyBmaWxl LgotIwotIyBUaGUgaG9zdHMgZmlsZSBuZWVkcyB0byBiZSBwcmVwYXJlZCBiZWZvcmUgcnVubmlu ZyB0aGlzIHRlc3QuIFdlIGRvbid0IGRvIGl0Ci0jIG9uIHRoZSBmbHksIGJlY2F1c2UgaXQgcmVx dWlyZXMgcm9vdCBwZXJtaXNzaW9ucyB0byBjaGFuZ2UgdGhlIGhvc3RzIGZpbGUuIEluCi0jIENJ IHdlIHNldCB1cCB0aGUgcHJldmlvdXNseSBtZW50aW9uZWQgcnVsZXMgaW4gdGhlIGhvc3RzIGZp bGUsIHNvIHRoYXQgdGhpcwotIyBsb2FkIGJhbGFuY2luZyBtZXRob2QgaXMgdGVzdGVkLgotCi0j IENsdXN0ZXIgc2V0dXAgd2hpY2ggaXMgc2hhcmVkIGZvciB0ZXN0aW5nIGJvdGggbG9hZCBiYWxh bmNpbmcgbWV0aG9kcwotbXkgJGNhbl9iaW5kX3RvXzEyN18wXzBfMiA9Ci0gICRDb25maWd7b3Nu YW1lfSBlcSAnbGludXgnIHx8ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6d2luZG93c19vczsK LQotIyBDaGVja3MgZm9yIHRoZSByZXF1aXJlbWVudHMgZm9yIHRlc3RpbmcgbG9hZCBiYWxhbmNp bmcgbWV0aG9kIDIKLWlmICghJGNhbl9iaW5kX3RvXzEyN18wXzBfMikKLXsKLQlwbGFuIHNraXBf YWxsID0+ICdsb2FkX2JhbGFuY2UgdGVzdCBvbmx5IHN1cHBvcnRlZCBvbiBMaW51eCBhbmQgV2lu ZG93cyc7Ci19Ci0KLW15ICRob3N0c19wYXRoOwotaWYgKCR3aW5kb3dzX29zKQotewotCSRob3N0 c19wYXRoID0gJ2M6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVyc1xldGNcaG9zdHMnOwotfQotZWxz ZQotewotCSRob3N0c19wYXRoID0gJy9ldGMvaG9zdHMnOwotfQotCi1teSAkaG9zdHNfY29udGVu dCA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjpzbHVycF9maWxlKCRob3N0c19wYXRoKTsKLQot bXkgJGhvc3RzX2NvdW50ID0gKCkgPQotICAkaG9zdHNfY29udGVudCA9fiAvMTI3XC4wXC4wXC5b MS0zXSBwZy1sb2FkYmFsYW5jZXRlc3QvZzsKLWlmICgkaG9zdHNfY291bnQgIT0gMykKLXsKLQkj IEhvc3QgZmlsZSBpcyBub3QgcHJlcGFyZWQgZm9yIHRoaXMgdGVzdAotCXBsYW4gc2tpcF9hbGwg PT4gImhvc3RzIGZpbGUgd2FzIG5vdCBwcmVwYXJlZCBmb3IgRE5TIGxvYWQgYmFsYW5jZSB0ZXN0 IjsKLX0KLQotJFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnVzZV90Y3AgPSAxOwotJFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OnRlc3RfcGdob3N0ID0gJzEyNy4wLjAuMSc7Ci1teSAkcG9y dCA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI6OmdldF9mcmVlX3BvcnQoKTsKLW15ICRub2Rl MSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTEnLCBwb3J0ID0+ICRwb3J0 KTsKLW15ICRub2RlMiA9Ci0gIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTIn LCBwb3J0ID0+ICRwb3J0LCBvd25faG9zdCA9PiAxKTsKLW15ICRub2RlMyA9Ci0gIFBvc3RncmVT UUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZTMnLCBwb3J0ID0+ICRwb3J0LCBvd25faG9zdCA9 PiAxKTsKLQotIyBDcmVhdGUgYSBkYXRhIGRpcmVjdG9yeSB3aXRoIGluaXRkYgotJG5vZGUxLT5p bml0KCk7Ci0kbm9kZTItPmluaXQoKTsKLSRub2RlMy0+aW5pdCgpOwotCi0jIFN0YXJ0IHRoZSBQ b3N0Z3JlU1FMIHNlcnZlcgotJG5vZGUxLT5zdGFydCgpOwotJG5vZGUyLT5zdGFydCgpOwotJG5v ZGUzLT5zdGFydCgpOwotCi0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBhbHdh eXMgY2hvb3NlIHRoZSBmaXJzdCBvbmUuCi0kbm9kZTEtPmNvbm5lY3Rfb2soCi0JImhvc3Q9cGct bG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPWRpc2FibGUiLAot CSJsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBjb25uZWN0cyB0byB0aGUgZmlyc3Qgbm9kZSIs Ci0Jc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QxJyIsCi0JbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVu dDogU0VMRUNUICdjb25uZWN0MScvXSk7Ci0KLQotIyBTdGF0aXN0aWNhbGx5IHRoZSBmb2xsb3dp bmcgbG9vcCB3aXRoIGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gd2lsbCBhbG1vc3QKLSMgY2Vy dGFpbmx5IGNvbm5lY3QgYXQgbGVhc3Qgb25jZSB0byBlYWNoIG9mIHRoZSBub2Rlcy4gVGhlIGNo YW5jZSBvZiB0aGF0IG5vdAotIyBoYXBwZW5pbmcgaXMgc28gc21hbGwgdGhhdCBpdCdzIG5lZ2xp Z2libGU6ICgyLzMpXjUwID0gMS41NjgzMjg1NWUtOQotZm9yZWFjaCBteSAkaSAoMSAuLiA1MCkK LXsKLQkkbm9kZTEtPmNvbm5lY3Rfb2soCi0JCSJob3N0PXBnLWxvYWRiYWxhbmNldGVzdCBwb3J0 PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20iLAotCQkicmVwZWF0ZWQgY29ubmVjdGlv bnMgd2l0aCByYW5kb20gbG9hZCBiYWxhbmNpbmciLAotCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVj dDInIik7Ci19Ci0KLW15ICRub2RlMV9vY2N1cnJlbmNlcyA9ICgpID0KLSAgJG5vZGUxLT5sb2df Y29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDInL2c7Ci1teSAkbm9kZTJf b2NjdXJyZW5jZXMgPSAoKSA9Ci0gICRub2RlMi0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50 OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkgJG5vZGUzX29jY3VycmVuY2VzID0gKCkgPQotICAk bm9kZTMtPmxvZ19jb250ZW50KCkgPX4gL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MicvZzsK LQotbXkgJHRvdGFsX29jY3VycmVuY2VzID0KLSAgJG5vZGUxX29jY3VycmVuY2VzICsgJG5vZGUy X29jY3VycmVuY2VzICsgJG5vZGUzX29jY3VycmVuY2VzOwotCi1jbXBfb2soJG5vZGUxX29jY3Vy cmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5v ZGUxIik7Ci1jbXBfb2soJG5vZGUyX29jY3VycmVuY2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0 IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUyIik7Ci1jbXBfb2soJG5vZGUzX29jY3VycmVu Y2VzLCAnPicsIDEsCi0JInJlY2VpdmVkIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIG9uIG5vZGUz Iik7Ci1pcygkdG90YWxfb2NjdXJyZW5jZXMsIDUwLCAicmVjZWl2ZWQgNTAgY29ubmVjdGlvbnMg YWNyb3NzIGFsbCBub2RlcyIpOwotCi0kbm9kZTEtPnN0b3AoKTsKLSRub2RlMi0+c3RvcCgpOwot Ci0jIGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIHNob3VsZCBjb250aW51ZSB0cnlpbmcgaG9z dHMgdW50aWwgaXQgZmluZHMgYQotIyB3b3JraW5nIG9uZS4KLSRub2RlMy0+Y29ubmVjdF9vaygK LQkiaG9zdD1wZy1sb2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCBsb2FkX2JhbGFuY2VfaG9zdHM9 ZGlzYWJsZSIsCi0JImxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIGNvbnRpbnVlcyB1bnRpbCBp dCBjb25uZWN0cyB0byBhIHdvcmtpbmcgbm9kZSIsCi0Jc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Qz JyIsCi0JbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MycvXSk7Ci0K LSMgQWxzbyB3aXRoIGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gd2UgY29udGludWUgdG8gdGhl IG5leHQgbm9kZXMgaWYgcHJldmlvdXMKLSMgb25lcyBhcmUgZG93bi4gQ29ubmVjdCBhIGZldyB0 aW1lcyB0byBtYWtlIHN1cmUgaXQncyBub3QganVzdCBsdWNreS4KLWZvcmVhY2ggbXkgJGkgKDEg Li4gNSkKLXsKLQkkbm9kZTMtPmNvbm5lY3Rfb2soCi0JCSJob3N0PXBnLWxvYWRiYWxhbmNldGVz dCBwb3J0PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20iLAotCQkibG9hZF9iYWxhbmNl X2hvc3RzPXJhbmRvbSBjb250aW51ZXMgdW50aWwgaXQgY29ubmVjdHMgdG8gYSB3b3JraW5nIG5v ZGUiLAotCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDQnIiwKLQkJbG9nX2xpa2UgPT4gW3FyL3N0 YXRlbWVudDogU0VMRUNUICdjb25uZWN0NCcvXSk7Ci19Ci0KLWRvbmVfdGVzdGluZygpOwotLSAK Mi41My4wCgo= --d5a1802b95639f9bcb06ba0ed451928fd6efe7c6c6f99babf59bbbbcbba7--