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 1vZY5M-00EJvS-00 for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Dec 2025 17:28:14 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vZY4L-00C6pp-2V for pgsql-hackers@arkaria.postgresql.org; Sat, 27 Dec 2025 17:27:10 +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 1vZY4L-00C6pg-0R for pgsql-hackers@lists.postgresql.org; Sat, 27 Dec 2025 17:27:10 +0000 Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vZY4H-003754-0B for pgsql-hackers@postgresql.org; Sat, 27 Dec 2025 17:27:09 +0000 Received: by mail-ej1-x632.google.com with SMTP id a640c23a62f3a-b79af62d36bso1371332066b.3 for ; Sat, 27 Dec 2025 09:27:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jeltef.nl; s=google; t=1766856418; x=1767461218; darn=postgresql.org; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=m4a6oD9NODdvNq4zjNBbNP/n2d2aq0Y+3VtT1+Yn05w=; b=HVd0qKcTS5yeszTeWvXKu6MtE/bUj/MO6yTmxoptMOagXPfl/2pXMl6m7GJGrSAT0N 8ks3T253MLgfmZ4hx/W96YMHcRFx2tlKMUb/xkhyHpiZ7Yopr/ANqnM2fZg5HffFe6ez cJyTPlW9Oh4g046wZP2Tir70vIMqWvmQMWonYe6RO6hO6i3cplxCOy6x5/mPzvpkrzTq hwFkWC+ETjW5f4QlqsxdopM558gGxhL86NZj50SPXGsVSvvkpj00q0empFZkqaC2mgzm qXjST3N738UgQEVTlDm/d4Sv/Bm5i7J52TQnfQK4OsKeuLkCS3CnBeFbZ9eReFSoD+/x 0Ybw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766856418; x=1767461218; h=in-reply-to:references:cc:from:to:subject:message-id:date :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=m4a6oD9NODdvNq4zjNBbNP/n2d2aq0Y+3VtT1+Yn05w=; b=uTqIHk/1PL4G2Z2sk+Ui52jTi7fEuDY6yJo50uXorLEmDsfv22AwA9j/5Y+8SKxrTt YzGx4W3sHGxkUnM9r/leeg4ZHIaiGJ6BByJ9SESGShbX7CVaPCjpYrxSiGgH7IXzEIGx Z63+HlwlkyHqPuVYjyP0F3/17/3S6ECxQd7G/cIHzpEcKTVkHg0il0k+ov4kHFcdopRa FQEUS1oxuumdzmq+5KFwBGDp4DxHR7F/v2+ANWGAk29CmdNT/aTQCK5dWCa1SLPf2zO6 awWlKa2MLre7IMmIPtLmZuwa+mTR3qB99PXgBnaI8fVJKf1vqFpKTbkOhImeDYe3FKRa wYGA== X-Forwarded-Encrypted: i=1; AJvYcCXHJvJWimlqLJc2o45oYVOLAhZUS4ewYV+KgjH+xpStCYxbp2sVB67My/yuEXweeCRS3fvych7IsfmsLke7@postgresql.org X-Gm-Message-State: AOJu0Yx3kj5i8ljTvVMsK3Jdtj07faTfbZ7vpLKlenV5X1OZg9jQPRG5 e4OnP8zp60Hr0zCsaX5xTwfX88V2+NQx/FLDtGF3Eq+e+/AlIUg5KnCQ/BUsyXyiS3g= X-Gm-Gg: AY/fxX65h2XwEzPrC3/ehD3/URTpueyY14+2c5mY0XvkexQXgk4V4PwzqAgjshkiwAQ jUb+sBIlJs/TY83Y4Lj9295ZUwqtgvOpiR3jHk/JH0jeF4HXv0kK0YXYFK1X26jLEUc1IErGXl8 IVkyu03M4ixWZaagpjr/QeAYPbpmcnZW3ZMArAGAZ9oUVORq77eB6bdm8mYPwA/AqTPKAcqNkcs M7EcfhliIxcrIMko7/z8RS4WzBe7XQGJ26HlTAzt9utZMeja94ny131K7/pLAdm8q3iPvf4XRNq he7ifwse/QVPRUzkbGvVGtue7n0YPvnhMjSkVpUWXOAbhGrkHbmobNEbmsthc4onYw6VYBJu99u csu7a6Q82t4fdsvrLq35qgj0YWUiNQILTVzN7djAy1cnHyoLKihWPH1Fb64XXJNLu4HNeTtG6d3 Q5aCpy6AjUKnkd/S/mm+0cC1FcJ69No7naUwk= X-Google-Smtp-Source: AGHT+IFnoqBPzNpresEPcw2G6F+Bwc24nvJxVamPHmPx+KLDXrohf/h49P0Jw3mQ6U3FkeOpBRouWA== X-Received: by 2002:a17:907:7f8e:b0:b7d:11ae:4006 with SMTP id a640c23a62f3a-b8037197254mr2874213766b.52.1766856417344; Sat, 27 Dec 2025 09:26:57 -0800 (PST) Received: from localhost (145-53-221-196.fixed.kpn.net. [145.53.221.196]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8037a60500sm2726798066b.13.2025.12.27.09.26.55 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 27 Dec 2025 09:26:56 -0800 (PST) Content-Type: multipart/mixed; boundary=9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Mime-Version: 1.0 Date: Sat, 27 Dec 2025 18:26:55 +0100 Message-Id: Subject: Re: RFC: adding pytest as a supported test framework To: "Xuneng Zhou" From: "Jelte Fennema-Nio" Cc: "Andres Freund" , "Jacob Champion" , "PostgreSQL Hackers" , "Robert Haas" , "Daniel Gustafsson" , "Tom Lane" , "Peter Eisentraut" , "Nazir Bilal Yavuz" X-Mailer: aerc 0.20.1-31-gf6db7c329ce0 References: <2302192.1718380169@sss.pgh.pa.us> In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Type: multipart/alternative; boundary=e72913b99e4b2e983fc33fc065f39f6b99999f6f39e67eced9e17ea16fbb --e72913b99e4b2e983fc33fc065f39f6b99999f6f39e67eced9e17ea16fbb Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Content-Type: text/plain; charset=UTF-8; format=Flowed On Fri Dec 19, 2025 at 3:18 PM CET, Xuneng Zhou wrote: > Thanks for working on this. I=E2=80=99ve done an initial review of patch = 4 and > here are some comments below. Attached is a version where I addressed all of those comemnts (the few that I didn't or did in non-obvious ways are discussed at the end). I also made a lot of improvements to the patchset: 1. Includes infrastructure to create multiple Postgres clusters in a single test or module. 2. Basic documentation for the pytest testing infrastructure. 3. Configure pytest and dependencies in pyproject.toml instead of a requirements file. 4. Set up the environment using "uv"[1] if no pytest binary can be found and uv is found. 5. Use INITDB_TEMPLATE to speed up cluster creation. 6. Don't enable fsync during tests to speed them up. 7. I added a patch where I've rewritten the libpq load_balance_hosts tests in python as a validation that the new infrastructure and APIs work well. (the perl ones were also written by me) 8. Postgres logs are now included as a separate pytest "section" in the output. 9. The pgtap output now includes all of the pytest sections. For an example of what the failure output looks like, take a look here[2] I also *removed* a few things that Jacob had initially added: 1. The SCRAM based windows auth. I think it's a good idea, but it doesn't work with INITDB_TEMPLATE. I think that logic should be made part of a separate patchset that stops use trust auth when creating the INITDB_TEMPLATE. That way also the perl tests can benefit from it. So seems good to do, but separate from the whole pytest work. 2. I removed the current_windows_user() function. This was dead code (as also written in Jacob's comment) and python has built-in ways to get the= current user. 3. I removed the fancy missing/incorrect dependency detection script. I think (as Jacob also suggested in his code comments) that importorskip is a better fit for this. Especially since we only have pytest as a dependency for the core framework, and only the cryptography package for the ssl tests. Finally, I prepared a PR for our images to include the pytest dependencies, so in a future version of the patchset we don't need to ad-hoc install the required packages. IMO patch 4 now serves as a good enough central infrastructure base for people to develop tests on top of (which would possibly add some more infrastructure as needed). In regards to your second message, related to consensus on the necessity of the project: Yes, based on the in-person conversations about this people are either in favor of a pytest based test framework, or neutral. There were no strong objections. We were now at the point where "someone" now actually needs to do the work of getting some decent infrastructure in place. Which is what Jacob and me have been trying to do. [1]: https://github.com/astral-sh/uv [2]: https://cirrus-ci.com/task/4805772426608640?logs=3Dtest_world#L16 [3]: https://github.com/anarazel/pg-vm-images/pull/130 > 4) Type conversion: timestamp/timestamptz conversion could be wrong > datetime.datetime.fromisoformat for both timestamp and timestamptz. I now configured datestyle to ISO and UTC in postgresql.conf. If that turns out not to be enough at some point (e.g. because a test sets a different datestyle), we can revisit this. > 6) Logging config: log_connections =3D all seems wrong > print("log_connections =3D all", file=3Df) > > I don't see an option "all" for this parameter > https://postgresqlco.nf/doc/en/param/log_connections/ That's a new value since PG18: https://postgresqlco.nf/doc/en/param/log_connections/18/ > 7) UX: error message handling and query attachment > raise_error() builds message with primary + optional Query: .... > > Should we include SQLSTATE and severity in the message string by > default, because it helps when reading CI logs. I don't think adding this additional info helps much anymore, now that the postgres logs (item 8) are part of the output too. So I left it like this, and even removed the query from the error message. By only including the actual error message it's easier to match on it for errors that a test expects. Matching on the SQLSTATE can be also done by matching on the error type. --e72913b99e4b2e983fc33fc065f39f6b99999f6f39e67eced9e17ea16fbb-- --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0001-meson-Include-TAP-tests-in-the-configuration-summ.patch RnJvbSAwMGVkNzdjNzk0YTdjNjI2YTQ2ZDA1YWE3ODJlMWMzODJlMjlkYTBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogRnJpLCA1IFNlcCAyMDI1IDE2OjM5OjA4IC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2NSAxLzddIG1lc29uOiBJbmNsdWRlIFRBUCB0ZXN0cyBpbiB0aGUgY29uZmlndXJh dGlvbiBzdW1tYXJ5CgouLi50byBtYWtlIGl0IG9idmlvdXMgd2hlbiB0aGV5J3ZlIGJlZW4gZW5h YmxlZC4gcHJvdmUgaXMgYWRkZWQgdG8gdGhlCmV4ZWN1dGFibGVzIGxpc3QgZm9yIGdvb2QgbWVh c3VyZS4KClRPRE86IGRvZXMgQXV0b2NvbmYgbmVlZCBzb21ldGhpbmcgc2ltaWxhcj8KClBlciBj b21wbGFpbnQgYnkgUGV0ZXIgRWlzZW50cmF1dC4KLS0tCiBtZXNvbi5idWlsZCB8IDkgKysrKysr KysrCiAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvbWVzb24u YnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCBkN2M1MTkzZDRjZS4uNTUxZTI3ZjVlYjMgMTAwNjQ0 Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxkCkBAIC0zOTgxLDYgKzM5ODEsNyBA QCBzdW1tYXJ5KAogICAgICdiaXNvbic6ICdAMEAgQDFAJy5mb3JtYXQoYmlzb24uZnVsbF9wYXRo KCksIGJpc29uX3ZlcnNpb24pLAogICAgICdkdHJhY2UnOiBkdHJhY2UsCiAgICAgJ2ZsZXgnOiAn QDBAIEAxQCcuZm9ybWF0KGZsZXguZnVsbF9wYXRoKCksIGZsZXhfdmVyc2lvbiksCisgICAgJ3By b3ZlJzogcHJvdmUsCiAgIH0sCiAgIHNlY3Rpb246ICdQcm9ncmFtcycsCiApCkBAIC00MDE3LDMg KzQwMTgsMTEgQEAgc3VtbWFyeSgKICAgc2VjdGlvbjogJ0V4dGVybmFsIGxpYnJhcmllcycsCiAg IGxpc3Rfc2VwOiAnICcsCiApCisKK3N1bW1hcnkoCisgIHsKKyAgICAndGFwJzogdGFwX3Rlc3Rz X2VuYWJsZWQsCisgIH0sCisgIHNlY3Rpb246ICdPdGhlciBmZWF0dXJlcycsCisgIGxpc3Rfc2Vw OiAnICcsCispCgpiYXNlLWNvbW1pdDogMzZiOGY0OTc0YTg4NGE3MjA2ZGY5N2YzN2VhNjJkMmFk YzBiNzdmMAotLSAKMi41Mi4wCgo= --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0002-Add-support-for-pytest-test-suites.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0002-Add-support-for-pytest-test-suites.patch RnJvbSBlYWU5ZTcwNTQ3YzNlOTJiNTNmNjAyODI5MmYzODdhNmU1ZGQzOGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogV2VkLCAxMyBBdWcgMjAyNSAxMDo1ODo1NiAtMDcwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgMi83XSBBZGQgc3VwcG9ydCBmb3IgcHl0ZXN0IHRlc3Qgc3VpdGVzCgpTcGVj aWZ5IC0tZW5hYmxlLXB5dGVzdC8tRHB5dGVzdD1lbmFibGVkIGF0IGNvbmZpZ3VyZSB0aW1lLiBU aGlzCmNvbnRhaW5zIG5vIFBvc3RncmVzIHRlc3QgbG9naWMgLS0gaXQgaXMganVzdCBhICJ2YW5p bGxhIiBweXRlc3QKc2tlbGV0b24uCgpJJ3ZlIHdyaXR0ZW4gYSBjdXN0b20gcGd0YXAgb3V0cHV0 IHBsdWdpbiwgdXNlZCBieSB0aGUgTWVzb24gbXRlc3QKcnVubmVyLCB0byBmdWxseSBjb250cm9s IHdoYXQgd2Ugc2VlIGR1cmluZyBDSSB0ZXN0IGZhaWx1cmVzLiBUaGUKcHl0ZXN0LXRhcCBwbHVn aW4gd291bGQgaGF2ZSBiZWVuIHByZWZlcmFibGUsIGJ1dCBpdCdzIG5vdyBpbgptYWludGVuYW5j ZSBtb2RlLCBhbmQgaXQgaGFzIHByb2JsZW1zIHdpdGggYWNjaWRlbnRhbGx5IHN1cHByZXNzaW5n CmltcG9ydGFudCBjb2xsZWN0aW9uIGZhaWx1cmVzLgoKVE9ET3M6Ci0gVGhlIENob2NvbGF0ZXkg Q0kgc2V0dXAgaXMgc3VicGFyLiBOZWVkIHRvIGZpbmQgYSB3YXkgdG8gYmxlc3MgdGhlCiAgZGVw ZW5kZW5jaWVzIGluIHVzZSByYXRoZXIgdGhhbiBwdWxsaW5nIGZyb20gcGlwLi4uIG9yIG1heWJl IHRoYXQgd2lsbAogIGJlIGRvbmUgYnkgdGhlIGltYWdlIGJha2VyLgoKQ28tYXV0aG9yZWQtYnk6 IEplbHRlIEZlbm5lbWEtTmlvIDxwb3N0Z3Jlc0BqZWx0ZWYubmw+Ci0tLQogLmNpcnJ1cy50YXNr cy55bWwgICAgICAgICAgIHwgIDM3ICsrKysrLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgICAg ICB8ICAgNCArCiBjb25maWd1cmUgICAgICAgICAgICAgICAgICAgfCAxNjYgKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCiBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgfCAgMjkgKysr KystCiBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgfCAxMDcgKysrKysrKysrKysrKysrKysr KwogbWVzb25fb3B0aW9ucy50eHQgICAgICAgICAgIHwgICA4ICstCiBweXByb2plY3QudG9tbCAg ICAgICAgICAgICAgfCAgMjEgKysrKwogc3JjL01ha2VmaWxlLmdsb2JhbC5pbiAgICAgIHwgIDI5 ICsrKysrKwogc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZCAgIHwgICAyICsKIHNyYy90ZXN0L01h a2VmaWxlICAgICAgICAgICB8ICAgMiArLQogc3JjL3Rlc3QvbWVzb24uYnVpbGQgICAgICAgIHwg ICAxICsKIHNyYy90ZXN0L3B5dGVzdC9NYWtlZmlsZSAgICB8ICAyMCArKysrCiBzcmMvdGVzdC9w eXRlc3QvUkVBRE1FICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxkIHwg IDE2ICsrKwogc3JjL3Rlc3QvcHl0ZXN0L3BndGFwLnB5ICAgIHwgMTk4ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3Rlc3R3cmFwICAgICAgICAgIHwgICA2 ICstCiAxNiBmaWxlcyBjaGFuZ2VkLCA2MzEgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0p CiBjcmVhdGUgbW9kZSAxMDA2NDQgcHlwcm9qZWN0LnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9weXRlc3QvTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRl c3QvUkVBRE1FCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L21lc29uLmJ1aWxk CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcHl0ZXN0L3BndGFwLnB5CgpkaWZmIC0tZ2l0 IGEvLmNpcnJ1cy50YXNrcy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCAwMzhkMDQzZDAw ZS4uYTgzYWNiMzllOTcgMTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisrKyBiLy5jaXJy dXMudGFza3MueW1sCkBAIC0yMSw3ICsyMSw4IEBAIGVudjoKIAogICAjIHRhcmdldCB0byB0ZXN0 LCBmb3IgYWxsIGJ1dCB3aW5kb3dzCiAgIENIRUNLOiBjaGVjay13b3JsZCBQUk9WRV9GTEFHUz0k UFJPVkVfRkxBR1MKLSAgQ0hFQ0tGTEFHUzogLU90YXJnZXQKKyAgIyBUT0RPIHdlcmUgd2UgYXZv aWRpbmcgLS1rZWVwLWdvaW5nIG9uIHB1cnBvc2U/CisgIENIRUNLRkxBR1M6IC1PdGFyZ2V0IC0t a2VlcC1nb2luZwogICBQUk9WRV9GTEFHUzogLS10aW1lcgogICAjIEJ1aWxkIHRlc3QgZGVwZW5k ZW5jaWVzIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHN0ZXAsIHRvIHNlZSBjb21waWxlcgogICAjIGVy cm9ycy93YXJuaW5ncyBpbiBvbmUgcGxhY2UuCkBAIC00NCw2ICs0NSw3IEBAIGVudjoKICAgICAt RGxkYXA9ZW5hYmxlZAogICAgIC1Ec3NsPW9wZW5zc2wKICAgICAtRHRhcF90ZXN0cz1lbmFibGVk CisgICAgLURweXRlc3Q9ZW5hYmxlZAogICAgIC1EcGxwZXJsPWVuYWJsZWQKICAgICAtRHBscHl0 aG9uPWVuYWJsZWQKICAgICAtRGRvY3M9ZW5hYmxlZApAQCAtMjI1LDcgKzIyNyw5IEBAIHRhc2s6 CiAgICAgY2hvd24gcm9vdDpwb3N0Z3JlcyAvdG1wL2NvcmVzCiAgICAgc3lzY3RsIGtlcm4uY29y ZWZpbGU9Jy90bXAvY29yZXMvJU4uJVAuY29yZScKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdl c19zY3JpcHQ6IHwKLSAgICAjcGtnIGluc3RhbGwgLXkgLi4uCisgICAgcGtnIGluc3RhbGwgLXkg XAorICAgICAgcHkzMTEtcGFja2FnaW5nIFwKKyAgICAgIHB5MzExLXB5dGVzdAogCiAgICMgTkI6 IEludGVudGlvbmFsbHkgYnVpbGQgd2l0aG91dCAtRGxsdm0uIFRoZSBmcmVlYnNkIGltYWdlIHNp emUgaXMgYWxyZWFkeQogICAjIGxhcmdlIGVub3VnaCB0byBtYWtlIFZNIHN0YXJ0dXAgc2xvdywg YW5kIGV2ZW4gd2l0aG91dCBsbHZtIGZyZWVic2QKQEAgLTMxNyw3ICszMjEsMTAgQEAgdGFzazoK ICAgICAgICAgICAtRHBhbT1lbmFibGVkCiAKICAgICAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2Fn ZXNfc2NyaXB0OiB8Ci0gICAgICAgICNwa2dpbiAteSBpbnN0YWxsIC4uLgorICAgICAgICBwa2dp biAteSBpbnN0YWxsIFwKKyAgICAgICAgICBweTMxMi1wYWNrYWdpbmcgXAorICAgICAgICAgIHB5 MzEyLXRlc3QKKyAgICAgICAgbG4gLXMgL3Vzci9wa2cvYmluL3B5dGVzdC0zLjEyIC91c3IvcGtn L2Jpbi9weXRlc3QKICAgICAgIDw8OiAqbmV0YnNkX3Rhc2tfdGVtcGxhdGUKIAogICAgIC0gbmFt ZTogT3BlbkJTRCAtIE1lc29uCkBAIC0zMzcsNyArMzQ0LDkgQEAgdGFzazoKICAgICAgICAgICAt RHV1aWQ9ZTJmcwogCiAgICAgICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAot ICAgICAgICAjcGtnX2FkZCAtSSAuLi4KKyAgICAgICAgcGtnX2FkZCAtSSBcCisgICAgICAgICAg cHkzLXRlc3QgXAorICAgICAgICAgIHB5My1wYWNrYWdpbmcKICAgICAgICMgQWx3YXlzIGNvcmUg ZHVtcCB0byAke0NPUkVfRFVNUF9ESVJ9CiAgICAgICBzZXRfY29yZV9kdW1wX3NjcmlwdDogc3lz Y3RsIC13IGtlcm4ubm9zdWlkY29yZWR1bXA9MgogICAgICAgPDw6ICpvcGVuYnNkX3Rhc2tfdGVt cGxhdGUKQEAgLTQ5Niw4ICs1MDUsMTAgQEAgdGFzazoKICAgICBFT0YKIAogICBzZXR1cF9hZGRp dGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAotICAgICNhcHQtZ2V0IHVwZGF0ZQotICAgICNERUJJ QU5fRlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgYXB0LWdldCAteSBpbnN0YWxsIC4uLgorICAgIGFw dC1nZXQgdXBkYXRlCisgICAgREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQg LXkgaW5zdGFsbCBcCisgICAgICBweXRob24zLXB5dGVzdCBcCisgICAgICBweXRob24zLXBhY2th Z2luZwogCiAgIG1hdHJpeDoKICAgICAjIFNQRUNJQUw6CkBAIC01MjEsMTQgKzUzMiwxNSBAQCB0 YXNrOgogICAgICAgICAgIHNldCAtZQogICAgICAgICAgIC4vY29uZmlndXJlIFwKICAgICAgICAg ICAgIC0tZW5hYmxlLWNhc3NlcnQgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cyAtLWVuYWJsZS1k ZWJ1ZyBcCi0gICAgICAgICAgICAtLWVuYWJsZS10YXAtdGVzdHMgLS1lbmFibGUtbmxzIFwKKyAg ICAgICAgICAgIC0tZW5hYmxlLXRhcC10ZXN0cyAtLWVuYWJsZS1weXRlc3QgLS1lbmFibGUtbmxz IFwKICAgICAgICAgICAgIC0td2l0aC1zZWdzaXplLWJsb2Nrcz02IFwKICAgICAgICAgICAgIC0t d2l0aC1saWJudW1hIFwKICAgICAgICAgICAgIC0td2l0aC1saWJ1cmluZyBcCiAgICAgICAgICAg ICBcCiAgICAgICAgICAgICAke0xJTlVYX0NPTkZJR1VSRV9GRUFUVVJFU30gXAogICAgICAgICAg ICAgXAotICAgICAgICAgICAgQ0xBTkc9ImNjYWNoZSBjbGFuZyIKKyAgICAgICAgICAgIENMQU5H PSJjY2FjaGUgY2xhbmciIFwKKyAgICAgICAgICAgIFBZVEVTVD0iZW52IExEX1BSRUxPQUQ9L2xp Yi94ODZfNjQtbGludXgtZ251L2xpYmFzYW4uc28uOCBweXRlc3QiCiAgICAgICAgIEVPRgogICAg ICAgYnVpbGRfc2NyaXB0OiBzdSBwb3N0Z3JlcyAtYyAibWFrZSAtcyAtaiR7QlVJTERfSk9CU30g d29ybGQtYmluIgogICAgICAgdXBsb2FkX2NhY2hlczogY2NhY2hlCkBAIC02NjUsNiArNjc3LDgg QEAgdGFzazoKICAgICAgIHA1LjM0LWlvLXR0eQogICAgICAgcDUuMzQtaXBjLXJ1bgogICAgICAg cHl0aG9uMzEyCisgICAgICBweTMxMi1wYWNrYWdpbmcKKyAgICAgIHB5MzEyLXB5dGVzdAogICAg ICAgdGNsCiAgICAgICB6c3RkCiAKQEAgLTcxNCw2ICs3MjgsNyBAQCB0YXNrOgogICAgIHNoIHNy Yy90b29scy9jaS9jaV9tYWNwb3J0c19wYWNrYWdlcy5zaCAkTUFDT1NfUEFDS0FHRV9MSVNUCiAg ICAgIyBzeXN0ZW0gcHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBoZWFkZXJzCiAgICAgc3VkbyAvb3B0 L2xvY2FsL2Jpbi9wb3J0IHNlbGVjdCBweXRob24zIHB5dGhvbjMxMgorICAgIHN1ZG8gL29wdC9s b2NhbC9iaW4vcG9ydCBzZWxlY3QgcHl0ZXN0IHB5dGVzdDMxMgogICAgICMgTWFrZSBtYWNwb3J0 cyBpbnN0YWxsIHZpc2libGUgZm9yIHN1YnNlcXVlbnQgc3RlcHMKICAgICBlY2hvIFBBVEg9L29w dC9sb2NhbC9zYmluLzovb3B0L2xvY2FsL2Jpbi86JFBBVEggPj4gJENJUlJVU19FTlYKICAgdXBs b2FkX2NhY2hlczogbWFjcG9ydHMKQEAgLTc4Nyw2ICs4MDIsOCBAQCB0YXNrOgogICAgICAgLURs ZGFwPWVuYWJsZWQKICAgICAgIC1Ec3NsPW9wZW5zc2wKICAgICAgIC1EdGFwX3Rlc3RzPWVuYWJs ZWQKKyAgICAgIC1EcHl0ZXN0PWVuYWJsZWQKKyAgICAgIC1EUFlURVNUPWM6XFdpbmRvd3Ncc3lz dGVtMzJcY29uZmlnXHN5c3RlbXByb2ZpbGVcQXBwRGF0YVxSb2FtaW5nXFB5dGhvblxQeXRob24z MTBcU2NyaXB0c1xweXRlc3QuZXhlCiAgICAgICAtRHBscGVybD1lbmFibGVkCiAgICAgICAtRHBs cHl0aG9uPWVuYWJsZWQKIApAQCAtNzk1LDggKzgxMiwxMCBAQCB0YXNrOgogICBkZXBlbmRzX29u OiBTYW5pdHlDaGVjawogICBvbmx5X2lmOiAkQ0lfV0lORE9XU19FTkFCTEVECiAKKyAgIyBYWFgg RG9lcyBDaG9jb2xhdGV5IHJlYWxseSBub3QgaGF2ZSBhbnkgUHl0aG9uIHBhY2thZ2UgaW5zdGFs bGVycz8KICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKICAgICBSRU0gY2hv Y28gaW5zdGFsbCAteSAtLW5vLXByb2dyZXNzIC4uLgorICAgIHBpcDMgaW5zdGFsbCAtLXVzZXIg cGFja2FnaW5nIHB5dGVzdAogCiAgIHNldHVwX2hvc3RzX2ZpbGVfc2NyaXB0OiB8CiAgICAgZWNo byAxMjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0ZXN0ID4+IGM6XFdpbmRvd3NcU3lzdGVtMzJcRHJp dmVyc1xldGNcaG9zdHMKQEAgLTg1OSw3ICs4NzgsNyBAQCB0YXNrOgogICAgIGZvbGRlcjogJHtD Q0FDSEVfRElSfQogCiAgIHNldHVwX2FkZGl0aW9uYWxfcGFja2FnZXNfc2NyaXB0OiB8Ci0gICAg UkVNIEM6XG1zeXM2NFx1c3JcYmluXHBhY21hbi5leGUgLVMgLS1ub2NvbmZpcm0gLi4uCisgICAg QzpcbXN5czY0XHVzclxiaW5ccGFjbWFuLmV4ZSAtUyAtLW5vY29uZmlybSBtaW5ndy13NjQtdWNy dC14ODZfNjQtcHl0aG9uLXB5dGVzdAogCiAgIG1pbmd3X2luZm9fc2NyaXB0OiB8CiAgICAgJUJB U0glIC1jICJ3aGVyZSBnY2MiCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQpp bmRleCA0ZTkxMTM5NWZlMy4uYThjNzNiYmE5YmEgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysr IGIvLmdpdGlnbm9yZQpAQCAtMzEsNiArMzEsOCBAQCB3aW4zMnZlci5yYwogKi5leGUKIGxpYipk bGwuZGVmCiBsaWIqLnBjCitfX3B5Y2FjaGVfXy8KKyouZWdnLWluZm8vCiAKICMgTG9jYWwgZXhj bHVkZXMgaW4gcm9vdCBkaXJlY3RvcnkKIC9HTlVtYWtlZmlsZQpAQCAtNDMsMyArNDUsNSBAQCBs aWIqLnBjCiAvUmVsZWFzZS8KIC90bXBfaW5zdGFsbC8KIC9wb3J0bG9jay8KKy8udmVudi8KKy91 di5sb2NrCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMTRhZDBhNTAw NmYuLmYyOGRiNDIzY2Q4IDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBA IC02MzAsNiArNjMwLDggQEAgdnBhdGhfYnVpbGQKIFBHX1NZU1JPT1QKIFBHX1ZFUlNJT05fTlVN CiBMREZMQUdTX0VYX0JFCitVVgorUFlURVNUCiBQUk9WRQogREJUT0VQVUIKIEZPUApAQCAtNzcy LDYgKzc3NCw3IEBAIENGTEFHUwogQ0MKIGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzCiBQR19URVNU X0VYVFJBCitlbmFibGVfcHl0ZXN0CiBlbmFibGVfdGFwX3Rlc3RzCiBlbmFibGVfZHRyYWNlCiBE VFJBQ0VGTEFHUwpAQCAtODUwLDYgKzg1Myw3IEBAIGVuYWJsZV9wcm9maWxpbmcKIGVuYWJsZV9j b3ZlcmFnZQogZW5hYmxlX2R0cmFjZQogZW5hYmxlX3RhcF90ZXN0cworZW5hYmxlX3B5dGVzdAog ZW5hYmxlX2luamVjdGlvbl9wb2ludHMKIHdpdGhfYmxvY2tzaXplCiB3aXRoX3NlZ3NpemUKQEAg LTE1NTAsNyArMTU1NCwxMCBAQCBPcHRpb25hbCBGZWF0dXJlczoKICAgLS1lbmFibGUtcHJvZmls aW5nICAgICAgYnVpbGQgd2l0aCBwcm9maWxpbmcgZW5hYmxlZAogICAtLWVuYWJsZS1jb3ZlcmFn ZSAgICAgICBidWlsZCB3aXRoIGNvdmVyYWdlIHRlc3RpbmcgaW5zdHJ1bWVudGF0aW9uCiAgIC0t ZW5hYmxlLWR0cmFjZSAgICAgICAgIGJ1aWxkIHdpdGggRFRyYWNlIHN1cHBvcnQKLSAgLS1lbmFi bGUtdGFwLXRlc3RzICAgICAgZW5hYmxlIFRBUCB0ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBD OjpSdW4pCisgIC0tZW5hYmxlLXRhcC10ZXN0cyAgICAgIGVuYWJsZSAoUGVybC1iYXNlZCkgVEFQ IHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICBJUEM6 OlJ1bikKKyAgLS1lbmFibGUtcHl0ZXN0ICAgICAgICAgZW5hYmxlIChQeXRob24tYmFzZWQpIHB5 dGVzdCBzdWl0ZXMgKHJlcXVpcmVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbikK ICAgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwogICAgICAgICAgICAgICAgICAgICAgICAgICBl bmFibGUgaW5qZWN0aW9uIHBvaW50cyAoZm9yIHRlc3RpbmcpCiAgIC0tZW5hYmxlLWRlcGVuZCAg ICAgICAgIHR1cm4gb24gYXV0b21hdGljIGRlcGVuZGVuY3kgdHJhY2tpbmcKQEAgLTM2MzIsNyAr MzYzOSw3IEBAIGZpCiAKIAogIwotIyBUQVAgdGVzdHMKKyMgVGVzdCBmcmFtZXdvcmtzCiAjCiAK IApAQCAtMzY2MCw2ICszNjY3LDMyIEBAIGZpCiAKIAogCisKKyMgQ2hlY2sgd2hldGhlciAtLWVu YWJsZS1weXRlc3Qgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfcHl0ZXN0K3NldH0iID0g c2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfcHl0ZXN0OworICBjYXNlICRlbmFibGV2 YWwgaW4KKyAgICB5ZXMpCisgICAgICA6CisgICAgICA7OworICAgIG5vKQorICAgICAgOgorICAg ICAgOzsKKyAgICAqKQorICAgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFyZ3VtZW50IGV4cGVjdGVk IGZvciAtLWVuYWJsZS1weXRlc3Qgb3B0aW9uIiAiJExJTkVOTyIgNQorICAgICAgOzsKKyAgZXNh YworCitlbHNlCisgIGVuYWJsZV9weXRlc3Q9bm8KKworZmkKKworCisKKworCisKICMKICMgSW5q ZWN0aW9uIHBvaW50cwogIwpAQCAtMTkyMjksNiArMTkyNjIsMTM1IEBAICRhc19lY2hvICIkbW9k dWxlc3RkZXJyIiA+JjY7IH0KICAgZmkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9 IHllczsgdGhlbgorICBpZiB0ZXN0IC16ICIkUFlURVNUIjsgdGhlbgorICBmb3IgYWNfcHJvZyBp biBweXRlc3QgcHkudGVzdAorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNf cHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkg JGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElO RU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZv ciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1BZVEVTVCs6fSBmYWxzZTsg dGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhc2UgJFBZVEVT VCBpbgorICBbXFwvXSogfCA/OltcXC9dKikKKyAgYWNfY3ZfcGF0aF9QWVRFU1Q9IiRQWVRFU1Qi ICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA7OworICAq KQorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGlu ICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFz X2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lv bnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVj X2V4dCI7IHRoZW4KKyAgICBhY19jdl9wYXRoX1BZVEVTVD0iJGFzX2Rpci8kYWNfd29yZCRhY19l eGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3Vu ZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICBicmVhayAyCisgIGZpCitk b25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKworICA7OworZXNhYworZmkKK1BZVEVTVD0k YWNfY3ZfcGF0aF9QWVRFU1QKK2lmIHRlc3QgLW4gIiRQWVRFU1QiOyB0aGVuCisgIHsgJGFzX2Vj aG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlURVNUIiA+JjUKKyRh c19lY2hvICIkUFlURVNUIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9Citm aQorCisKKyAgdGVzdCAtbiAiJFBZVEVTVCIgJiYgYnJlYWsKK2RvbmUKKworZWxzZQorICAjIFJl cG9ydCB0aGUgdmFsdWUgb2YgUFlURVNUIGluIGNvbmZpZ3VyZSdzIG91dHB1dCBpbiBhbGwgY2Fz ZXMuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcg Zm9yIFBZVEVTVCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUFlURVNULi4uICIgPiY2 OyB9CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAk UFlURVNUIiA+JjUKKyRhc19lY2hvICIkUFlURVNUIiA+JjY7IH0KK2ZpCisKKyAgaWYgdGVzdCAt eiAiJFBZVEVTVCI7IHRoZW4KKyAgICAjIElmIHB5dGVzdCBub3QgZm91bmQsIHRyeSBpbnN0YWxs aW5nIHdpdGggdXYKKyAgICBpZiB0ZXN0IC16ICIkVVYiOyB0aGVuCisgIGZvciBhY19wcm9nIGlu IHV2CitkbworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQg Y2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAkYWNfcHJvZzsgYWNf d29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2lu ZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4u ICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfVVYrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNo b19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRVViBpbgorICBbXFwvXSogfCA/Oltc XC9dKikKKyAgYWNfY3ZfcGF0aF9VVj0iJFVWIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUg dGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQ QVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lG UworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBp biAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxl X3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9V Vj0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKKyAgICAkYXNfZWNobyAiJGFzX21lOiR7 YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+ JjUKKyAgICBicmVhayAyCisgIGZpCitkb25lCisgIGRvbmUKK0lGUz0kYXNfc2F2ZV9JRlMKKwor ICA7OworZXNhYworZmkKK1VWPSRhY19jdl9wYXRoX1VWCitpZiB0ZXN0IC1uICIkVVYiOyB0aGVu CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkVVYi ID4mNQorJGFzX2VjaG8gIiRVViIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZTok e2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsg fQorZmkKKworCisgIHRlc3QgLW4gIiRVViIgJiYgYnJlYWsKK2RvbmUKKworZWxzZQorICAjIFJl cG9ydCB0aGUgdmFsdWUgb2YgVVYgaW4gY29uZmlndXJlJ3Mgb3V0cHV0IGluIGFsbCBjYXNlcy4K KyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Ig VVYiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIFVWLi4uICIgPiY2OyB9CisgIHsgJGFz X2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkVVYiID4mNQorJGFz X2VjaG8gIiRVViIgPiY2OyB9CitmaQorCisgICAgaWYgdGVzdCAtbiAiJFVWIjsgdGhlbgorICAg ICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0 aGVyIHV2IGNhbiBpbnN0YWxsIHB5dGVzdCBkZXBlbmRlbmNpZXMiID4mNQorJGFzX2VjaG9fbiAi Y2hlY2tpbmcgd2hldGhlciB1diBjYW4gaW5zdGFsbCBweXRlc3QgZGVwZW5kZW5jaWVzLi4uICIg PiY2OyB9CisgICAgICBpZiAiJFVWIiBwaXAgaW5zdGFsbCAiJHNyY2RpciIgPiY1IDI+JjE7IHRo ZW4KKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1 bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKyAgICAgICAgUFlURVNUPSIkVVYg cnVuIHB5dGVzdCIKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNf bGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9Cisg ICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90IGZvdW5kIGFuZCB1diBmYWlsZWQgdG8g aW5zdGFsbCBkZXBlbmRlbmNpZXMiICIkTElORU5PIiA1CisgICAgICBmaQorICAgIGVsc2UKKyAg ICAgIGFzX2ZuX2Vycm9yICQ/ICJweXRlc3Qgbm90IGZvdW5kIiAiJExJTkVOTyIgNQorICAgIGZp CisgIGZpCitmaQorCiAjIElmIGNvbXBpbGVyIHdpbGwgdGFrZSAtV2wsLS1hcy1uZWVkZWQgKG9y IHZhcmlvdXMgcGxhdGZvcm0tc3BlY2lmaWMKICMgc3BlbGxpbmdzIHRoZXJlb2YpIHRoZW4gYWRk IHRoYXQgdG8gTERGTEFHUy4gIFRoaXMgaXMgbXVjaCBlYXNpZXIgdGhhbgogIyB0cnlpbmcgdG8g ZmlsdGVyIExJQlMgdG8gdGhlIG1pbmltdW0gZm9yIGVhY2ggZXhlY3V0YWJsZS4KZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCAwMWIzYmJjMWJlOC4uODIyNmUy YTEzNDIgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTIy NSwxMSArMjI1LDE2IEBAIEFDX1NVQlNUKERUUkFDRUZMQUdTKV0pCiBBQ19TVUJTVChlbmFibGVf ZHRyYWNlKQogCiAjCi0jIFRBUCB0ZXN0cworIyBUZXN0IGZyYW1ld29ya3MKICMKIFBHQUNfQVJH X0JPT0woZW5hYmxlLCB0YXAtdGVzdHMsIG5vLAotICAgICAgICAgICAgICBbZW5hYmxlIFRBUCB0 ZXN0cyAocmVxdWlyZXMgUGVybCBhbmQgSVBDOjpSdW4pXSkKKyAgICAgICAgICAgICAgW2VuYWJs ZSAoUGVybC1iYXNlZCkgVEFQIHRlc3RzIChyZXF1aXJlcyBQZXJsIGFuZCBJUEM6OlJ1bildKQog QUNfU1VCU1QoZW5hYmxlX3RhcF90ZXN0cykKKworUEdBQ19BUkdfQk9PTChlbmFibGUsIHB5dGVz dCwgbm8sCisgICAgICAgICAgICAgIFtlbmFibGUgKFB5dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRl cyAocmVxdWlyZXMgUHl0aG9uKV0pCitBQ19TVUJTVChlbmFibGVfcHl0ZXN0KQorCiBBQ19BUkdf VkFSKFBHX1RFU1RfRVhUUkEsCiAgICAgICAgICAgIFtlbmFibGUgc2VsZWN0ZWQgZXh0cmEgdGVz dHMgKG92ZXJyaWRkZW4gYXQgcnVudGltZSBieSBQR19URVNUX0VYVFJBIGVudmlyb25tZW50IHZh cmlhYmxlKV0pCiAKQEAgLTI0MTIsNiArMjQxNywyNiBAQCBpZiB0ZXN0ICIkZW5hYmxlX3RhcF90 ZXN0cyIgPSB5ZXM7IHRoZW4KICAgZmkKIGZpCiAKK2lmIHRlc3QgIiRlbmFibGVfcHl0ZXN0IiA9 IHllczsgdGhlbgorICBQR0FDX1BBVEhfUFJPR1MoUFlURVNULCBweXRlc3QgcHkudGVzdCkKKyAg aWYgdGVzdCAteiAiJFBZVEVTVCI7IHRoZW4KKyAgICAjIElmIHB5dGVzdCBub3QgZm91bmQsIHRy eSBpbnN0YWxsaW5nIHdpdGggdXYKKyAgICBQR0FDX1BBVEhfUFJPR1MoVVYsIHV2KQorICAgIGlm IHRlc3QgLW4gIiRVViI7IHRoZW4KKyAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB1diBj YW4gaW5zdGFsbCBweXRlc3QgZGVwZW5kZW5jaWVzXSkKKyAgICAgIGlmICIkVVYiIHBpcCBpbnN0 YWxsICIkc3JjZGlyIiA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+JjE7IHRoZW4KKyAgICAgICAgQUNf TVNHX1JFU1VMVChbeWVzXSkKKyAgICAgICAgUFlURVNUPSIkVVYgcnVuIHB5dGVzdCIKKyAgICAg IGVsc2UKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAgICBBQ19NU0dfRVJST1Io W3B5dGVzdCBub3QgZm91bmQgYW5kIHV2IGZhaWxlZCB0byBpbnN0YWxsIGRlcGVuZGVuY2llc10p CisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIEFDX01TR19FUlJPUihbcHl0ZXN0IG5vdCBmb3Vu ZF0pCisgICAgZmkKKyAgZmkKK2ZpCisKICMgSWYgY29tcGlsZXIgd2lsbCB0YWtlIC1XbCwtLWFz LW5lZWRlZCAob3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYwogIyBzcGVsbGluZ3MgdGhlcmVv ZikgdGhlbiBhZGQgdGhhdCB0byBMREZMQUdTLiAgVGhpcyBpcyBtdWNoIGVhc2llciB0aGFuCiAj IHRyeWluZyB0byBmaWx0ZXIgTElCUyB0byB0aGUgbWluaW11bSBmb3IgZWFjaCBleGVjdXRhYmxl LgpkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAppbmRleCA1NTFlMjdmNWVi My4uMmVjMTI1MTE2YTIgMTAwNjQ0Ci0tLSBhL21lc29uLmJ1aWxkCisrKyBiL21lc29uLmJ1aWxk CkBAIC0xNzExLDYgKzE3MTEsNDEgQEAgZW5kaWYKIAogCiAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWJyYXJ5OiBw eXRlc3QKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCitweXRlc3RfZW5hYmxlZCA9IGZhbHNlCitweXRlc3QgPSBub3RfZm91 bmRfZGVwCit1diA9IG5vdF9mb3VuZF9kZXAKK3VzZV91diA9IGZhbHNlCisKK3B5dGVzdG9wdCA9 IGdldF9vcHRpb24oJ3B5dGVzdCcpCitpZiBub3QgcHl0ZXN0b3B0LmRpc2FibGVkKCkKKyAgcHl0 ZXN0ID0gZmluZF9wcm9ncmFtKGdldF9vcHRpb24oJ1BZVEVTVCcpLCBuYXRpdmU6IHRydWUsIHJl cXVpcmVkOiBmYWxzZSkKKworICAjIElmIHB5dGVzdCBub3QgZm91bmQsIHRyeSBpbnN0YWxsaW5n IHdpdGggdXYKKyAgaWYgbm90IHB5dGVzdC5mb3VuZCgpCisgICAgdXYgPSBmaW5kX3Byb2dyYW0o J3V2JywgbmF0aXZlOiB0cnVlLCByZXF1aXJlZDogZmFsc2UpCisgICAgaWYgdXYuZm91bmQoKQor ICAgICAgbWVzc2FnZSgnSW5zdGFsbGluZyBweXRlc3QgZGVwZW5kZW5jaWVzIHdpdGggdXYuLi4n KQorICAgICAgdXZfaW5zdGFsbCA9IHJ1bl9jb21tYW5kKHV2LCAncGlwJywgJ2luc3RhbGwnLCBt ZXNvbi5wcm9qZWN0X3NvdXJjZV9yb290KCksIGNoZWNrOiBmYWxzZSkKKyAgICAgIGlmIHV2X2lu c3RhbGwucmV0dXJuY29kZSgpID09IDAKKyAgICAgICAgdXNlX3V2ID0gdHJ1ZQorICAgICAgICBw eXRlc3RfZW5hYmxlZCA9IHRydWUKKyAgICAgIGVuZGlmCisgICAgZW5kaWYKKyAgZWxzZQorICAg IHB5dGVzdF9lbmFibGVkID0gdHJ1ZQorICBlbmRpZgorCisgIGlmIG5vdCBweXRlc3RfZW5hYmxl ZCBhbmQgcHl0ZXN0b3B0LmVuYWJsZWQoKQorICAgIGVycm9yKCdweXRlc3Qgbm90IGZvdW5kJykK KyAgZW5kaWYKK2VuZGlmCisKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgTGlicmFyeTogenN0ZAogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBA IC0zODA4LDYgKzM4NDMsNzYgQEAgZm9yZWFjaCB0ZXN0X2RpciA6IHRlc3RzCiAgICAgICAgICkK ICAgICAgIGVuZGZvcmVhY2gKICAgICAgIGluc3RhbGxfc3VpdGVzICs9IHRlc3RfZ3JvdXAKKyAg ICBlbGlmIGtpbmQgPT0gJ3B5dGVzdCcKKyAgICAgIHRlc3R3cmFwX3B5dGVzdCA9IHRlc3R3cmFw X2Jhc2UKKyAgICAgIGlmIG5vdCBweXRlc3RfZW5hYmxlZAorICAgICAgICB0ZXN0d3JhcF9weXRl c3QgKz0gWyctLXNraXAnLCAncHl0ZXN0IG5vdCBlbmFibGVkJ10KKyAgICAgIGVuZGlmCisKKyAg ICAgIGlmIHVzZV91dgorICAgICAgICB0ZXN0X2NvbW1hbmQgPSBbdXYuZnVsbF9wYXRoKCksICdy dW4nLCAncHl0ZXN0J10KKyAgICAgIGVsaWYgcHl0ZXN0X2VuYWJsZWQKKyAgICAgICAgdGVzdF9j b21tYW5kID0gW3B5dGVzdC5mdWxsX3BhdGgoKV0KKyAgICAgIGVsc2UKKyAgICAgICAgIyBEdW1t eSB2YWx1ZSAtIHRlc3Qgd2lsbCBiZSBza2lwcGVkIGFueXdheQorICAgICAgICB0ZXN0X2NvbW1h bmQgPSBbJ3B5dGVzdCddCisgICAgICBlbmRpZgorICAgICAgdGVzdF9jb21tYW5kICs9IFsKKyAg ICAgICAgJy1jJywgbWVzb24ucHJvamVjdF9zb3VyY2Vfcm9vdCgpIC8gJ3B5cHJvamVjdC50b21s JywKKyAgICAgICAgJy0tdmVyYm9zZScsCisgICAgICAgICctcCcsICdwZ3RhcCcsICAjIGVuYWJs ZSBvdXIgdGVzdCByZXBvcnRlciBwbHVnaW4KKyAgICAgICAgJy1yYScsICAjIHNob3cgc2tpcHBl ZCBhbmQgeGZhaWxlZCB0ZXN0cyB0b28KKyAgICAgIF0KKworICAgICAgIyBBZGQgdGVtcG9yYXJ5 IGluc3RhbGwsIHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIG5vbi1pbnN0YWxsZWQgYmluYXJpZXMg YW5kCisgICAgICAjIGFsc28gdGVzdC8gZm9yIG5vbi1pbnN0YWxsZWQgdGVzdCBiaW5hcmllcyBi dWlsdCBzZXBhcmF0ZWx5LgorICAgICAgZW52ID0gdGVzdF9lbnYKKyAgICAgIGVudi5wcmVwZW5k KCdQQVRIJywgdGVtcF9pbnN0YWxsX2JpbmRpciwgdGVzdF9kaXJbJ2JkJ10sIHRlc3RfZGlyWydi ZCddIC8gJ3Rlc3QnKQorICAgICAgdGVtcF9pbnN0YWxsX2RhdGFkaXIgPSAnQDBAQDFAJy5mb3Jt YXQodGVzdF9pbnN0YWxsX2Rlc3RkaXIsIGRpcl9wcmVmaXggLyBkaXJfZGF0YSkKKyAgICAgIGVu di5zZXQoJ3NoYXJlX2NvbnRyaWJfZGlyJywgdGVtcF9pbnN0YWxsX2RhdGFkaXIgLyAnY29udHJp YicpCisgICAgICAjIFdlIGFsc28gY29uZmlndXJlIHRoZSBzYW1lIFBZVEhPTlBBVEggaW4gdGhl IHB5dGVzdCBzZXR0aW5ncyBpbgorICAgICAgIyBweXByb2plY3QudG9tbCwgYnV0IHB5dGVzdCB2 ZXJzaW9ucyBiZWxvdyA4LjQgb25seSBhY3R1YWxseSB1c2UgdGhhdAorICAgICAgIyB2YWx1ZSBh ZnRlciBwbHVnaW4gbG9hZGluZy4gU28gd2UgbmVlZCB0byBjb25maWd1cmUgaXQgaGVyZSB0b28u IFRoaXMKKyAgICAgICMgd29uJ3QgaGVscCBwZW9wbGUgbWFudWFsbHkgcnVubmluZyBweXRlc3Qg b3V0c2lkZSBvZiBtZXNvbi9tYWtlLCBidXQgd2UKKyAgICAgICMgZXhwZWN0IHRob3NlIHRvIHVz ZSBhIHJlY2VudCBlbm91Z2ggdmVyc2lvbiBvZiBweXRlc3QgYW55d2F5IChhbmQgaWYKKyAgICAg ICMgbm90IHRoZXkgY2FuIG1hbnVhbGx5IGNvbmZpZ3VyZSBQWVRIT05QQVRIIHRvbykuCisgICAg ICBlbnYucHJlcGVuZCgnUFlUSE9OUEFUSCcsIG1lc29uLnByb2plY3Rfc291cmNlX3Jvb3QoKSAv ICdzcmMnIC8gJ3Rlc3QnIC8gJ3B5dGVzdCcpCisKKyAgICAgIGZvcmVhY2ggbmFtZSwgdmFsdWUg OiB0LmdldCgnZW52Jywge30pCisgICAgICAgIGVudi5zZXQobmFtZSwgdmFsdWUpCisgICAgICBl bmRmb3JlYWNoCisKKyAgICAgIHRlc3RfZ3JvdXAgPSB0ZXN0X2RpclsnbmFtZSddCisgICAgICB0 ZXN0X2t3YXJncyA9IHsKKyAgICAgICAgJ3Byb3RvY29sJzogJ3RhcCcsCisgICAgICAgICdzdWl0 ZSc6IHRlc3RfZ3JvdXAsCisgICAgICAgICd0aW1lb3V0JzogMTAwMCwKKyAgICAgICAgJ2RlcGVu ZHMnOiB0ZXN0X2RlcHMgKyB0LmdldCgnZGVwcycsIFtdKSwKKyAgICAgICAgJ2Vudic6IGVudiwK KyAgICAgIH0gKyB0LmdldCgndGVzdF9rd2FyZ3MnLCB7fSkKKworICAgICAgZm9yZWFjaCBvbmV0 ZXN0IDogdFsndGVzdHMnXQorICAgICAgICAjIE1ha2UgdGVzdCBuYW1lcyBwcmV0dGllciwgcmVt b3ZlIHB5dC8gYW5kIC5weQorICAgICAgICBvbmV0ZXN0X3AgPSBvbmV0ZXN0CisgICAgICAgIGlm IG9uZXRlc3RfcC5zdGFydHN3aXRoKCdweXQvJykKKyAgICAgICAgICBvbmV0ZXN0X3AgPSBvbmV0 ZXN0LnNwbGl0KCdweXQvJylbMV0KKyAgICAgICAgZW5kaWYKKyAgICAgICAgaWYgb25ldGVzdF9w LmVuZHN3aXRoKCcucHknKQorICAgICAgICAgIG9uZXRlc3RfcCA9IGZzLnN0ZW0ob25ldGVzdF9w KQorICAgICAgICBlbmRpZgorCisgICAgICAgIHRlc3QodGVzdF9kaXJbJ25hbWUnXSAvIG9uZXRl c3RfcCwKKyAgICAgICAgICBweXRob24sCisgICAgICAgICAga3dhcmdzOiB0ZXN0X2t3YXJncywK KyAgICAgICAgICBhcmdzOiB0ZXN0d3JhcF9weXRlc3QgKyBbCisgICAgICAgICAgICAnLS10ZXN0 Z3JvdXAnLCB0ZXN0X2RpclsnbmFtZSddLAorICAgICAgICAgICAgJy0tdGVzdG5hbWUnLCBvbmV0 ZXN0X3AsCisgICAgICAgICAgICAnLS0nLCB0ZXN0X2NvbW1hbmQsCisgICAgICAgICAgICB0ZXN0 X2Rpclsnc2QnXSAvIG9uZXRlc3QsCisgICAgICAgICAgXSwKKyAgICAgICAgKQorICAgICAgZW5k Zm9yZWFjaAorICAgICAgaW5zdGFsbF9zdWl0ZXMgKz0gdGVzdF9ncm91cAogICAgIGVsc2UKICAg ICAgIGVycm9yKCd1bmtub3duIGtpbmQgQDBAIG9mIHRlc3QgaW4gQDFAJy5mb3JtYXQoa2luZCwg dGVzdF9kaXJbJ3NkJ10pKQogICAgIGVuZGlmCkBAIC0zOTgyLDYgKzQwODcsNyBAQCBzdW1tYXJ5 KAogICAgICdkdHJhY2UnOiBkdHJhY2UsCiAgICAgJ2ZsZXgnOiAnQDBAIEAxQCcuZm9ybWF0KGZs ZXguZnVsbF9wYXRoKCksIGZsZXhfdmVyc2lvbiksCiAgICAgJ3Byb3ZlJzogcHJvdmUsCisgICAg J3B5dGVzdCc6IHB5dGVzdCwKICAgfSwKICAgc2VjdGlvbjogJ1Byb2dyYW1zJywKICkKQEAgLTQw MjIsNiArNDEyOCw3IEBAIHN1bW1hcnkoCiBzdW1tYXJ5KAogICB7CiAgICAgJ3RhcCc6IHRhcF90 ZXN0c19lbmFibGVkLAorICAgICdweXRlc3QnOiBweXRlc3RfZW5hYmxlZCwKICAgfSwKICAgc2Vj dGlvbjogJ090aGVyIGZlYXR1cmVzJywKICAgbGlzdF9zZXA6ICcgJywKZGlmZiAtLWdpdCBhL21l c29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKaW5kZXggMDZiZjU2MjdkM2MuLjg4 ZjIyZTY5OWQ5IDEwMDY0NAotLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysgYi9tZXNvbl9vcHRp b25zLnR4dApAQCAtNDEsNyArNDEsMTAgQEAgb3B0aW9uKCdjYXNzZXJ0JywgdHlwZTogJ2Jvb2xl YW4nLCB2YWx1ZTogZmFsc2UsCiAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlIGFzc2VydGlvbiBjaGVj a3MgKGZvciBkZWJ1Z2dpbmcpJykKIAogb3B0aW9uKCd0YXBfdGVzdHMnLCB0eXBlOiAnZmVhdHVy ZScsIHZhbHVlOiAnYXV0bycsCi0gIGRlc2NyaXB0aW9uOiAnRW5hYmxlIFRBUCB0ZXN0cycpCisg IGRlc2NyaXB0aW9uOiAnRW5hYmxlIChQZXJsLWJhc2VkKSBUQVAgdGVzdHMnKQorCitvcHRpb24o J3B5dGVzdCcsIHR5cGU6ICdmZWF0dXJlJywgdmFsdWU6ICdhdXRvJywKKyAgZGVzY3JpcHRpb246 ICdFbmFibGUgKFB5dGhvbi1iYXNlZCkgcHl0ZXN0IHN1aXRlcycpCiAKIG9wdGlvbignaW5qZWN0 aW9uX3BvaW50cycsIHR5cGU6ICdib29sZWFuJywgdmFsdWU6IGZhbHNlLAogICBkZXNjcmlwdGlv bjogJ0VuYWJsZSBpbmplY3Rpb24gcG9pbnRzJykKQEAgLTE5NSw2ICsxOTgsOSBAQCBvcHRpb24o J1BFUkwnLCB0eXBlOiAnc3RyaW5nJywgdmFsdWU6ICdwZXJsJywKIG9wdGlvbignUFJPVkUnLCB0 eXBlOiAnc3RyaW5nJywgdmFsdWU6ICdwcm92ZScsCiAgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBw cm92ZSBiaW5hcnknKQogCitvcHRpb24oJ1BZVEVTVCcsIHR5cGU6ICdhcnJheScsIHZhbHVlOiBb J3B5dGVzdCcsICdweS50ZXN0J10sCisgIGRlc2NyaXB0aW9uOiAnUGF0aCB0byBweXRlc3QgYmlu YXJ5JykKKwogb3B0aW9uKCdQWVRIT04nLCB0eXBlOiAnYXJyYXknLCB2YWx1ZTogWydweXRob24z JywgJ3B5dGhvbiddLAogICBkZXNjcmlwdGlvbjogJ1BhdGggdG8gcHl0aG9uIGJpbmFyeScpCiAK ZGlmZiAtLWdpdCBhL3B5cHJvamVjdC50b21sIGIvcHlwcm9qZWN0LnRvbWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjYwYWJiNGQwNjU1Ci0tLSAvZGV2L251bGwKKysr IGIvcHlwcm9qZWN0LnRvbWwKQEAgLTAsMCArMSwyMSBAQAorW3Byb2plY3RdCituYW1lID0gInBv c3RncmVzcWwtaGFja2Vycy10b29saW5nIgordmVyc2lvbiA9ICIwLjEuMCIKK2Rlc2NyaXB0aW9u ID0gIlB5dGVzdCBpbmZyYXN0cnVjdHVyZSBmb3IgUG9zdGdyZVNRTCIKK3JlcXVpcmVzLXB5dGhv biA9ICI+PTMuNiIKK2RlcGVuZGVuY2llcyA9IFsKKyAgICAjIHB5dGVzdCA3LjAgd2FzIHRoZSBs YXN0IHZlcnNpb24gd2hpY2ggc3VwcG9ydGVkIFB5dGhvbiAzLjYsIGJ1dCB0aGUgQlNEcworICAg ICMgaGF2ZSBzdGFydGVkIHB1dHRpbmcgOC54IGludG8gcG9ydHMsIHNvIHdlIHN1cHBvcnQgYm90 aC4gKHB5dGVzdCA4IGNhbiBiZQorICAgICMgdXNlZCB0aHJvdWdob3V0IG9uY2Ugd2UgZHJvcCBz dXBwb3J0IGZvciBQeXRob24gMy43LikKKyAgICAicHl0ZXN0ID49IDcuMCwgPCAxMCIsCisKKyAg ICAjIEFueSBvdGhlciBkZXBlbmRlbmNpZXMgYXJlIGVmZmVjdGl2ZWx5IG9wdGlvbmFsIChhZGRl ZCBiZWxvdykuIFdlIGltcG9ydAorICAgICMgdGhlc2UgbGlicmFyaWVzIHVzaW5nIHB5dGVzdC5p bXBvcnRvcnNraXAoKS4gU28gdGVzdHMgd2lsbCBiZSBza2lwcGVkIGlmCisgICAgIyB0aGV5IGFy ZSBub3QgYXZhaWxhYmxlLgorXQorCitbdG9vbC5weXRlc3QuaW5pX29wdGlvbnNdCittaW52ZXJz aW9uID0gIjcuMCIKKworIyBDb21tb24gdGVzdCBjb2RlIGNhbiBiZSBmb3VuZCBoZXJlLgorcHl0 aG9ucGF0aCA9IFsic3JjL3Rlc3QvcHl0ZXN0Il0KZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5n bG9iYWwuaW4gYi9zcmMvTWFrZWZpbGUuZ2xvYmFsLmluCmluZGV4IDM3MWNkN2ViYTJjLi4xNjBj ZGZmZDRmMSAxMDA2NDQKLS0tIGEvc3JjL01ha2VmaWxlLmdsb2JhbC5pbgorKysgYi9zcmMvTWFr ZWZpbGUuZ2xvYmFsLmluCkBAIC0yMTEsNiArMjExLDcgQEAgZW5hYmxlX2R0cmFjZQk9IEBlbmFi bGVfZHRyYWNlQAogZW5hYmxlX2NvdmVyYWdlCT0gQGVuYWJsZV9jb3ZlcmFnZUAKIGVuYWJsZV9p bmplY3Rpb25fcG9pbnRzID0gQGVuYWJsZV9pbmplY3Rpb25fcG9pbnRzQAogZW5hYmxlX3RhcF90 ZXN0cwk9IEBlbmFibGVfdGFwX3Rlc3RzQAorZW5hYmxlX3B5dGVzdAk9IEBlbmFibGVfcHl0ZXN0 QAogCiBweXRob25faW5jbHVkZXNwZWMJPSBAcHl0aG9uX2luY2x1ZGVzcGVjQAogcHl0aG9uX2xp YmRpcgkJPSBAcHl0aG9uX2xpYmRpckAKQEAgLTM1NCw2ICszNTUsNyBAQCBNU0dGTVQgID0gQE1T R0ZNVEAKIE1TR0ZNVF9GTEFHUyA9IEBNU0dGTVRfRkxBR1NACiBNU0dNRVJHRSA9IEBNU0dNRVJH RUAKIE9QRU5TU0wJPSBAT1BFTlNTTEAKK1BZVEVTVAk9IEBQWVRFU1RACiBQWVRIT04JPSBAUFlU SE9OQAogVEFSCT0gQFRBUkAKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNTA4LDYgKzUxMCwz MyBAQCBwcm92ZV9pbnN0YWxsY2hlY2sgPSBAZWNobyAiVEFQIHRlc3RzIG5vdCBlbmFibGVkLiBU cnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZQogcHJvdmVfY2hlY2sgPSAkKHByb3ZlX2luc3Rh bGxjaGVjaykKIGVuZGlmCiAKK2lmZXEgKCQoZW5hYmxlX3B5dGVzdCkseWVzKQorCitweXRlc3Rf aW5zdGFsbGNoZWNrID0gQGVjaG8gIkluc3RhbGxjaGVjayBpcyBub3QgY3VycmVudGx5IHN1cHBv cnRlZCBmb3IgcHl0ZXN0LiIKKworIyBXZSBhbHNvIGNvbmZpZ3VyZSB0aGUgc2FtZSBQWVRIT05Q QVRIIGluIHRoZSBweXRlc3Qgc2V0dGluZ3MgaW4KKyMgcHlwcm9qZWN0LnRvbWwsIGJ1dCBweXRl c3QgdmVyc2lvbnMgYmVsb3cgOC40IG9ubHkgYWN0dWFsbHkgdXNlIHRoYXQgdmFsdWUKKyMgYWZ0 ZXIgcGx1Z2luIGxvYWRpbmcuIFNvIHdlIG5lZWQgdG8gY29uZmlndXJlIGl0IGhlcmUgdG9vLiBU aGlzIHdvbid0IGhlbHAKKyMgcGVvcGxlIG1hbnVhbGx5IHJ1bm5pbmcgcHl0ZXN0IG91dHNpZGUg b2YgbWVzb24vbWFrZSwgYnV0IHdlIGV4cGVjdCB0aG9zZSB0bworIyB1c2UgYSByZWNlbnQgZW5v dWdoIHZlcnNpb24gb2YgcHl0ZXN0IGFueXdheSAoYW5kIGlmIG5vdCB0aGV5IGNhbiBtYW51YWxs eQorIyBjb25maWd1cmUgUFlUSE9OUEFUSCB0b28pLgorZGVmaW5lIHB5dGVzdF9jaGVjaworZWNo byAiIyArKysgcHl0ZXN0IGNoZWNrIGluICQoc3ViZGlyKSArKysiICYmIFwKK3JtIC1yZiAnJChD VVJESVIpJy90bXBfY2hlY2sgJiYgXAorJChNS0RJUl9QKSAnJChDVVJESVIpJy90bXBfY2hlY2sg JiYgXAorY2QgJChzcmNkaXIpICYmIFwKKyAgIFRFU1RMT0dESVI9JyQoQ1VSRElSKS90bXBfY2hl Y2svbG9nJyBcCisgICBURVNUREFUQURJUj0nJChDVVJESVIpL3RtcF9jaGVjaycgXAorICAgUFlU SE9OUEFUSD0nJChhYnNfdG9wX3NyY2Rpcikvc3JjL3Rlc3QvcHl0ZXN0OiQkUFlUSE9OUEFUSCcg XAorICAgJCh3aXRoX3RlbXBfaW5zdGFsbCkgXAorICAgJChQWVRFU1QpIC1jICckKGFic190b3Bf c3JjZGlyKS9weXByb2plY3QudG9tbCcgLS12ZXJib3NlIC1yYSAuL3B5dC8KK2VuZGVmCisKK2Vs c2UKK3B5dGVzdF9pbnN0YWxsY2hlY2sgPSBAZWNobyAicHl0ZXN0IGlzIG5vdCBlbmFibGVkLiBU cnkgY29uZmlndXJpbmcgd2l0aCAtLWVuYWJsZS1weXRlc3QiCitweXRlc3RfY2hlY2sgPSAkKHB5 dGVzdF9pbnN0YWxsY2hlY2spCitlbmRpZgorCiAjIEluc3RhbGxhdGlvbi4KIAogaW5zdGFsbF9i aW4gPSBAaW5zdGFsbF9iaW5ACmRpZmYgLS1naXQgYS9zcmMvbWFrZWZpbGVzL21lc29uLmJ1aWxk IGIvc3JjL21ha2VmaWxlcy9tZXNvbi5idWlsZAppbmRleCBjNmVkZjE0ZWM0NC4uNWI5YTgwNGFh OTQgMTAwNjQ0Ci0tLSBhL3NyYy9tYWtlZmlsZXMvbWVzb24uYnVpbGQKKysrIGIvc3JjL21ha2Vm aWxlcy9tZXNvbi5idWlsZApAQCAtNTYsNiArNTYsNyBAQCBwZ3hzX2t2ID0gewogICAnZW5hYmxl X25scyc6IGxpYmludGwuZm91bmQoKSA/ICd5ZXMnIDogJ25vJywKICAgJ2VuYWJsZV9pbmplY3Rp b25fcG9pbnRzJzogZ2V0X29wdGlvbignaW5qZWN0aW9uX3BvaW50cycpID8gJ3llcycgOiAnbm8n LAogICAnZW5hYmxlX3RhcF90ZXN0cyc6IHRhcF90ZXN0c19lbmFibGVkID8gJ3llcycgOiAnbm8n LAorICAnZW5hYmxlX3B5dGVzdCc6IHB5dGVzdF9lbmFibGVkID8gJ3llcycgOiAnbm8nLAogICAn ZW5hYmxlX2RlYnVnJzogZ2V0X29wdGlvbignZGVidWcnKSA/ICd5ZXMnIDogJ25vJywKICAgJ2Vu YWJsZV9jb3ZlcmFnZSc6ICdubycsCiAgICdlbmFibGVfZHRyYWNlJzogZHRyYWNlLmZvdW5kKCkg PyAneWVzJyA6ICdubycsCkBAIC0xNDUsNiArMTQ2LDcgQEAgcGd4c19iaW5zID0gewogICAnT1BF TlNTTCc6IG9wZW5zc2wsCiAgICdQRVJMJzogcGVybCwKICAgJ1BST1ZFJzogcHJvdmUsCisgICdQ WVRFU1QnOiBweXRlc3QsCiAgICdQWVRIT04nOiBweXRob24sCiAgICdUQVInOiB0YXIsCiAgICda U1REJzogcHJvZ3JhbV96c3RkLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvTWFrZWZpbGUgYi9zcmMv dGVzdC9NYWtlZmlsZQppbmRleCA1MTFhNzJlNjIzOC4uYzAzNWRiYjdmYzcgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L01ha2VmaWxlCkBAIC0xMiw3ICsxMiw3 IEBAIHN1YmRpciA9IHNyYy90ZXN0CiB0b3BfYnVpbGRkaXIgPSAuLi8uLgogaW5jbHVkZSAkKHRv cF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogCi1TVUJESVJTID0gcGVybCBwb3N0bWFz dGVyIHJlZ3Jlc3MgaXNvbGF0aW9uIG1vZHVsZXMgYXV0aGVudGljYXRpb24gcmVjb3Zlcnkgc3Vi c2NyaXB0aW9uCitTVUJESVJTID0gcGVybCBwb3N0bWFzdGVyIHB5dGVzdCByZWdyZXNzIGlzb2xh dGlvbiBtb2R1bGVzIGF1dGhlbnRpY2F0aW9uIHJlY292ZXJ5IHN1YnNjcmlwdGlvbgogCiBpZmVx ICgkKHdpdGhfaWN1KSx5ZXMpCiBTVUJESVJTICs9IGljdQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv bWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tZXNvbi5idWlsZAppbmRleCBjY2MzMWQ2YTg2YS4uZDA4 YTZlZjYxYzIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L21lc29uLmJ1aWxkCkBAIC01LDYgKzUsNyBAQCBzdWJkaXIoJ2lzb2xhdGlvbicpCiAKIHN1YmRp cignYXV0aGVudGljYXRpb24nKQogc3ViZGlyKCdwb3N0bWFzdGVyJykKK3N1YmRpcigncHl0ZXN0 JykKIHN1YmRpcigncmVjb3ZlcnknKQogc3ViZGlyKCdzdWJzY3JpcHRpb24nKQogc3ViZGlyKCdt b2R1bGVzJykKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9NYWtlZmlsZSBiL3NyYy90ZXN0 L3B5dGVzdC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u MmJkY2E5NmNjYmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvTWFrZWZpbGUK QEAgLTAsMCArMSwyMCBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgTWFrZWZpbGUgZm9yIHB5 dGVzdAorIworIyBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNSwgUG9zdGdyZVNRTCBH bG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyMKKyMgc3JjL3Rlc3QvcHl0 ZXN0L01ha2VmaWxlCisjCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdWJkaXIgPSBzcmMvdGVzdC9w eXRlc3QKK3RvcF9idWlsZGRpciA9IC4uLy4uLy4uCitpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9z cmMvTWFrZWZpbGUuZ2xvYmFsCisKK2NoZWNrOgorCSQocHl0ZXN0X2NoZWNrKQorCitjbGVhbiBk aXN0Y2xlYW4gbWFpbnRhaW5lci1jbGVhbjoKKwlybSAtcmYgdG1wX2NoZWNrCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9weXRlc3QvUkVBRE1FIGIvc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTMzM2VkNzdiN2UKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9weXRlc3QvUkVBRE1FCkBAIC0wLDAgKzEgQEAKK1RPRE8KZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L3B5dGVzdC9tZXNv bi5idWlsZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWJkMTI4ZGZh MjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKQEAgLTAs MCArMSwxNiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisKK2lmIG5vdCBweXRlc3RfZW5hYmxlZAorICBzdWJkaXJfZG9uZSgpCitl bmRpZgorCit0ZXN0cyArPSB7CisgICduYW1lJzogJ3B5dGVzdCcsCisgICdzZCc6IG1lc29uLmN1 cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAor ICAncHl0ZXN0JzogeworICAgICd0ZXN0cyc6IFsKKyAgICAgICdweXQvdGVzdF9zb21ldGhpbmcu cHknLAorICAgIF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcGd0YXAu cHkgYi9zcmMvdGVzdC9weXRlc3QvcGd0YXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmM5MmNhZDk4ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0 ZXN0L3BndGFwLnB5CkBAIC0wLDAgKzEsMTk4IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IG9zCitpbXBvcnQgc3lz CisKK2ltcG9ydCBweXRlc3QKKworIworIyBIZWxwZXJzCisjCisKKworY2xhc3MgVEFQOgorICAg ICIiIgorICAgIEEgYmFzaWMgQVBJIGZvciByZXBvcnRpbmcgdmlhIHRoZSBUQVAgcHJvdG9jb2wu CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY291bnQg PSAwCisKKyAgICAgICAgIyBYWFggaW50ZXJhY3RzIHBvb3JseSB3aXRoIHRlc3R3cmFwJ3MgYm9p bGVycGxhdGUgZGlhZ25vc3RpY3MKKyAgICAgICAgIyBzZWxmLnByaW50KCJUQVAgdmVyc2lvbiAx MyIpCisKKyAgICBkZWYgZXhwZWN0KHNlbGYsIG51bTogaW50KToKKyAgICAgICAgc2VsZi5wcmlu dChmIjEuLntudW19IikKKworICAgIGRlZiBwcmludChzZWxmLCAqYXJncyk6CisgICAgICAgIHBy aW50KCphcmdzLCBmaWxlPXN5cy5fX3N0ZG91dF9fKQorCisgICAgZGVmIG9rKHNlbGYsIG5hbWU6 IHN0cik6CisgICAgICAgIHNlbGYuY291bnQgKz0gMQorICAgICAgICBzZWxmLnByaW50KCJvayIs IHNlbGYuY291bnQsICItIiwgbmFtZSkKKworICAgIGRlZiBza2lwKHNlbGYsIG5hbWU6IHN0ciwg cmVhc29uOiBzdHIpOgorICAgICAgICBzZWxmLmNvdW50ICs9IDEKKyAgICAgICAgc2VsZi5wcmlu dCgib2siLCBzZWxmLmNvdW50LCAiLSIsIG5hbWUsICIjIHNraXAiLCByZWFzb24pCisKKyAgICBk ZWYgZmFpbChzZWxmLCBuYW1lOiBzdHIsIGRldGFpbHM6IHN0cik6CisgICAgICAgIHNlbGYuY291 bnQgKz0gMQorICAgICAgICBzZWxmLnByaW50KCJub3Qgb2siLCBzZWxmLmNvdW50LCAiLSIsIG5h bWUpCisKKyAgICAgICAgIyBtdGVzdCBoYXMgc29tZSBvZGQgYmVoYXZpb3IgYXJvdW5kIFRBUCB0 ZXN0cyB3aGVyZSBpdCB3b24ndCBwcmludAorICAgICAgICAjIGRpYWdub3N0aWNzIG9uIGZhaWx1 cmUgaWYgdGhleSdyZSBwYXJ0IG9mIHRoZSBzdGRvdXQgc3RyZWFtLCBzbyB3ZQorICAgICAgICAj IG1pZ2h0IGFzIHdlbGwganVzdCBkdW1wIHRoZSBkZXRhaWxzIGRpcmVjdGx5IHRvIHN0ZGVyciBp bnN0ZWFkLgorICAgICAgICBwcmludChkZXRhaWxzLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisK K3RhcCA9IFRBUCgpCisKKworY2xhc3MgVGVzdE5vdGVzOgorICAgICIiIgorICAgIEFubm90YXRp b25zIGZvciBhIHNpbmdsZSB0ZXN0LiBUaGUgZXhpc3RpbmcgcHl0ZXN0IGhvb2tzIGtlZXAgaW50 ZXJlc3RpbmcKKyAgICBpbmZvcm1hdGlvbiBzb21ld2hhdCBzZXBhcmF0ZWQgYWNyb3NzIHRoZSBk aWZmZXJlbnQgc3RhZ2VzCisgICAgKHNldHVwL3Rlc3QvdGVhcmRvd24pLCBzbyB0aGlzIGNsYXNz IGlzIHVzZWQgdG8gY29ycmVsYXRlIHRoZW0uCisgICAgIiIiCisKKyAgICBza2lwcGVkID0gRmFs c2UKKyAgICBza2lwX3JlYXNvbiA9IE5vbmUKKworICAgIGZhaWxlZCA9IEZhbHNlCisgICAgZGV0 YWlscyA9ICIiCisKKworIyBSZWdpc3RlciBhIGN1c3RvbSBrZXkgaW4gdGhlIHN0YXNoIGRpY3Rp b25hcnkgZm9yIGtlZXBpbmcgb3VyIFRlc3ROb3Rlcy4KK25vdGVzX2tleSA9IHB5dGVzdC5TdGFz aEtleVtUZXN0Tm90ZXNdKCkKKworCisjCisjIEhvb2sgSW1wbGVtZW50YXRpb25zCisjCisKKwor QHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVlKQorZGVmIHB5dGVzdF9jb25maWd1cmUoY29u ZmlnKToKKyAgICAiIiIKKyAgICBIaWphY2tzIHRoZSBzdGFuZGFyZCBzdHJlYW1zIGFzIHNvb24g YXMgcG9zc2libGUgZHVyaW5nIHB5dGVzdCBzdGFydHVwLiBUaGUKKyAgICBweXRlc3QtZm9ybWF0 dGVkIG91dHB1dCBnZXRzIGxvZ2dlZCB0byBmaWxlIGluc3RlYWQsIGFuZCB3ZSdsbCB1c2UgdGhl CisgICAgb3JpZ2luYWwgc3lzLl9fc3Rkb3V0X18vX19zdGRlcnJfXyBzdHJlYW1zIGZvciB0aGUg VEFQIHByb3RvY29sLgorICAgICIiIgorICAgIGxvZ2RpciA9IG9zLmdldGVudigiVEVTVExPR0RJ UiIpCisgICAgaWYgbm90IGxvZ2RpcjoKKyAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJwZ3Rh cCByZXF1aXJlcyB0aGUgVEVTVExPR0RJUiBlbnZ2YXIgdG8gYmUgc2V0IikKKworICAgIG9zLm1h a2VkaXJzKGxvZ2RpcikKKyAgICBsb2dwYXRoID0gb3MucGF0aC5qb2luKGxvZ2RpciwgInB5dGVz dC5sb2ciKQorICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyID0gb3Blbihsb2dwYXRoLCAiYSIs IGJ1ZmZlcmluZz0xKQorCisKK0BweXRlc3QuaG9va2ltcGwodHJ5bGFzdD1UcnVlKQorZGVmIHB5 dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb24sIGV4aXRzdGF0dXMpOgorICAgICIiIgorICAgIFN1 cHByZXNzZXMgbm9uemVybyBleGl0IGNvZGVzIGR1ZSB0byBmYWlsZWQgdGVzdHMuIChJbiB0aGF0 IGNhc2UsIHdlIHdhbnQKKyAgICBNZXNvbiB0byByZXBvcnQgYSBmYWlsdXJlIGNvdW50LCBub3Qg YSBnZW5lcmljIEVSUk9SLikKKyAgICAiIiIKKyAgICBpZiBleGl0c3RhdHVzID09IHB5dGVzdC5F eGl0Q29kZS5URVNUU19GQUlMRUQ6CisgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IHB5dGVz dC5FeGl0Q29kZS5PSworCisKK0BweXRlc3QuaG9va2ltcGwKK2RlZiBweXRlc3RfY29sbGVjdHJl cG9ydChyZXBvcnQpOgorICAgICMgSW5jbHVkZSBjb2xsZWN0aW9uIGZhaWx1cmVzIGRpcmVjdGx5 IGluIE1lc29uIGVycm9yIG91dHB1dC4KKyAgICBpZiByZXBvcnQuZmFpbGVkOgorICAgICAgICBw cmludChyZXBvcnQubG9uZ3JlcHJ0ZXh0LCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisKK0BweXRl c3QuaG9va2ltcGwKK2RlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihleGNyZXByLCBleGNpbmZvKToK KyAgICAjIEluY2x1ZGUgaW50ZXJuYWwgZXJyb3JzIGRpcmVjdGx5IGluIE1lc29uIGVycm9yIG91 dHB1dC4KKyAgICBwcmludChleGNyZXByLCBmaWxlPXN5cy5fX3N0ZGVycl9fKQorCisKKyMKKyMg SG9vayBXcmFwcGVycworIworIyBJbiBweXRlc3QgcGFybGFuY2UsIGEgIndyYXBwZXIiIGZvciBh IGhvb2sgY2FuIGluc3BlY3QgYW5kIG9wdGlvbmFsbHkgbW9kaWZ5CisjIGV4aXN0aW5nIGhvb2tz JyBiZWhhdmlvciwgYnV0IGl0IGRvZXMgbm90IHJlcGxhY2UgdGhlIGhvb2sgY2hhaW4uIFRoaXMg aXMgZG9uZQorIyB0aHJvdWdoIGEgZ2VuZXJhdG9yLXN0eWxlIEFQSSB3aGljaCBjaGFpbnMgdGhl IGhvb2tzIHRvZ2V0aGVyIChzZWUgdGhlIHVzZSBvZgorIyBgeWllbGRgKS4KKyMKKworCitAcHl0 ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vz c2lvbik6CisgICAgIiIiUmVwb3J0cyB0aGUgbnVtYmVyIG9mIGdhdGhlcmVkIHRlc3RzIGFmdGVy IGNvbGxlY3Rpb24gaXMgZmluaXNoZWQuIiIiCisgICAgcmVzID0geWllbGQKKyAgICB0YXAuZXhw ZWN0KHNlc3Npb24udGVzdHNjb2xsZWN0ZWQpCisgICAgcmV0dXJuIHJlcworCisKK0BweXRlc3Qu aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKK2RlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0 KGl0ZW0sIGNhbGwpOgorICAgICIiIgorICAgIEFubm90YXRlcyBhIHRlc3QgaXRlbSB3aXRoIG91 ciBUZXN0Tm90ZXMgYW5kIGdyYWJzIHJlbGV2YW50IGluZm9ybWF0aW9uIGZvcgorICAgIHJlcG9y dGluZy4KKworICAgIFRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHBlciB0ZXN0LCBzbyBp dCdzIG5vdCBjb3JyZWN0IHRvIHByaW50IHRoZSBUQVAKKyAgICByZXN1bHQgaGVyZS4gKEEgdGVz dCBhbmQgaXRzIHRlYXJkb3duIHN0YWdlIGNhbiBib3RoIGZhaWwsIGFuZCB3ZSB3YW50IHRvCisg ICAgc2VlIHRoZSBkZXRhaWxzIGZvciBib3RoLikgV2UgaW5zdGVhZCBjb21iaW5lIGFsbCB0aGUg aW5mb3JtYXRpb24gZm9yIHVzZSBieQorICAgIG91ciBweXRlc3RfcnVudGVzdF9wcm90b2NvbCB3 cmFwcGVyIGxhdGVyIG9uLgorICAgICIiIgorICAgIHJlcyA9IHlpZWxkCisKKyAgICBpZiBub3Rl c19rZXkgbm90IGluIGl0ZW0uc3Rhc2g6CisgICAgICAgIGl0ZW0uc3Rhc2hbbm90ZXNfa2V5XSA9 IFRlc3ROb3RlcygpCisgICAgbm90ZXMgPSBpdGVtLnN0YXNoW25vdGVzX2tleV0KKworICAgIHJl cG9ydCA9IHJlcy5nZXRfcmVzdWx0KCkKKyAgICBpZiByZXBvcnQucGFzc2VkOgorICAgICAgICBw YXNzICAjIG5vIGFubm90YXRpb24gbmVlZGVkCisKKyAgICBlbGlmIHJlcG9ydC5za2lwcGVkOgor ICAgICAgICBub3Rlcy5za2lwcGVkID0gVHJ1ZQorICAgICAgICBfLCBfLCBub3Rlcy5za2lwX3Jl YXNvbiA9IHJlcG9ydC5sb25ncmVwcgorCisgICAgZWxpZiByZXBvcnQuZmFpbGVkOgorICAgICAg ICBub3Rlcy5mYWlsZWQgPSBUcnVlCisKKyAgICAgICAgaWYgbm90IG5vdGVzLmRldGFpbHM6Cisg ICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9ICJ7Ol9eNzJ9XG5cbiIuZm9ybWF0KGYiIHtyZXBv cnQuaGVhZF9saW5lfSAiKQorCisgICAgICAgIGlmIHJlcG9ydC53aGVuIGluICgic2V0dXAiLCAi dGVhcmRvd24iKToKKyAgICAgICAgICAgIG5vdGVzLmRldGFpbHMgKz0gIlxuezpfXjcyfVxuXG4i LmZvcm1hdCgKKyAgICAgICAgICAgICAgICBmIiBFcnJvciBkdXJpbmcge3JlcG9ydC53aGVufSBv ZiB7cmVwb3J0LmhlYWRfbGluZX0gIgorICAgICAgICAgICAgKQorCisgICAgICAgIG5vdGVzLmRl dGFpbHMgKz0gcmVwb3J0LmxvbmdyZXBydGV4dCArICJcbiIKKworICAgICAgICAjIEluY2x1ZGUg Y2FwdHVyZWQgc3Rkb3V0L3N0ZGVyci9sb2cgaW4gZmFpbHVyZSBvdXRwdXQKKyAgICAgICAgZm9y IHNlY3Rpb25fbmFtZSwgc2VjdGlvbl9jb250ZW50IGluIHJlcG9ydC5zZWN0aW9uczoKKyAgICAg ICAgICAgIGlmIHNlY3Rpb25fY29udGVudC5zdHJpcCgpOgorICAgICAgICAgICAgICAgIG5vdGVz LmRldGFpbHMgKz0gIlxuezotXjcyfVxuIi5mb3JtYXQoZiIge3NlY3Rpb25fbmFtZX0gIikKKyAg ICAgICAgICAgICAgICBub3Rlcy5kZXRhaWxzICs9IHNlY3Rpb25fY29udGVudCArICJcbiIKKwor ICAgIGVsc2U6CisgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigicHl0ZXN0X3J1bnRlc3RfbWFr ZXJlcG9ydCByZWNlaXZlZCB1bmtub3duIHRlc3Qgc3RhdHVzIikKKworICAgIHJldHVybiByZXMK KworCitAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCitkZWYgcHl0ZXN0X3J1bnRl c3RfcHJvdG9jb2woaXRlbSwgbmV4dGl0ZW0pOgorICAgICIiIgorICAgIFJlcG9ydHMgdGhlIFRB UCByZXN1bHQgZm9yIHRoaXMgdGVzdCBpdGVtIHVzaW5nIG91ciBnYXRoZXJlZCBUZXN0Tm90ZXMu CisgICAgIiIiCisgICAgcmVzID0geWllbGQKKworICAgIGFzc2VydCBub3Rlc19rZXkgaW4gaXRl bS5zdGFzaCwgInBndGFwIGRpZG4ndCBhbm5vdGF0ZSBhIHRlc3QgaXRlbT8iCisgICAgbm90ZXMg PSBpdGVtLnN0YXNoW25vdGVzX2tleV0KKworICAgIGlmIG5vdGVzLmZhaWxlZDoKKyAgICAgICAg dGFwLmZhaWwoaXRlbS5ub2RlaWQsIG5vdGVzLmRldGFpbHMpCisgICAgZWxpZiBub3Rlcy5za2lw cGVkOgorICAgICAgICB0YXAuc2tpcChpdGVtLm5vZGVpZCwgbm90ZXMuc2tpcF9yZWFzb24pCisg ICAgZWxzZToKKyAgICAgICAgdGFwLm9rKGl0ZW0ubm9kZWlkKQorCisgICAgcmV0dXJuIHJlcwpk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Rlc3R3cmFwIGIvc3JjL3Rvb2xzL3Rlc3R3cmFwCmluZGV4 IGU5MTI5NmVjZDE1Li4zNDZmODZiOGVhMyAxMDA3NTUKLS0tIGEvc3JjL3Rvb2xzL3Rlc3R3cmFw CisrKyBiL3NyYy90b29scy90ZXN0d3JhcApAQCAtNDIsNyArNDIsMTEgQEAgb3Blbihvcy5wYXRo LmpvaW4odGVzdGRpciwgJ3Rlc3Quc3RhcnQnKSwgJ3gnKQogCiBlbnZfZGljdCA9IHsqKm9zLmVu dmlyb24sCiAgICAgICAgICAgICAnVEVTVERBVEFESVInOiBvcy5wYXRoLmpvaW4odGVzdGRpciwg J2RhdGEnKSwKLSAgICAgICAgICAgICdURVNUTE9HRElSJzogb3MucGF0aC5qb2luKHRlc3RkaXIs ICdsb2cnKX0KKyAgICAgICAgICAgICdURVNUTE9HRElSJzogb3MucGF0aC5qb2luKHRlc3RkaXIs ICdsb2cnKSwKKyAgICAgICAgICAgICMgUHJldmVudCBlbWl0dGluZyB0ZXJtaW5hbCBjYXBhYmls aXR5IHNlcXVlbmNlcyB0aGF0IHBvbGx1dGUgdGhlCisgICAgICAgICAgICAjIFRBUCBvdXRwdXQg c3RyZWFtIChpLmUuXDAzM1s/MTAzNGgpLiBUaGlzIGhhcHBlbnMgb24gT3BlbkJTRCB3aXRoCisg ICAgICAgICAgICAjIHB5dGVzdCBmb3IgdW5rbm93biByZWFzb25zLgorICAgICAgICAgICAgJ1RF Uk0nOiAnJ30KIAogCiAjIFRoZSBjb25maWd1cmF0aW9uIHRpbWUgdmFsdWUgb2YgUEdfVEVTVF9F WFRSQSBpcyBzdXBwbGllZCB2aWEgYXJndW1lbnQKLS0gCjIuNTIuMAoK --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0003-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0003-ci-Add-MTEST_SUITES-for-optional-test-tailoring.patch RnJvbSAzMTNmZmU4NjNiOGEzZWFmNDhlYTU3OGZjMTc1OTZhZDcwNzg1OTVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAyIFNlcCAyMDI1IDE1OjM3OjUzIC0wNzAwClN1YmplY3Q6 IFtQQVRDSCB2NSAzLzddIGNpOiBBZGQgTVRFU1RfU1VJVEVTIGZvciBvcHRpb25hbCB0ZXN0IHRh aWxvcmluZwoKU2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIGNvbnRyb2wgdGhlIHRlc3QgY3ljbGUg dGltZSBmb3IgQ2lycnVzLiBBZGQgdGhlCmRlc2lyZWQgc3VpdGVzIChyZW1lbWJlcmluZyBgLS1z dWl0ZSBzZXR1cGAhKSB0byB0aGUgdG9wLWxldmVsIGVudnZhci4KLS0tCiAuY2lycnVzLnRhc2tz LnltbCB8IDE1ICsrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygr KSwgNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS8uY2lycnVzLnRhc2tzLnltbCBiLy5jaXJy dXMudGFza3MueW1sCmluZGV4IGE4M2FjYjM5ZTk3Li5hMmMzZmViYzMwYyAxMDA2NDQKLS0tIGEv LmNpcnJ1cy50YXNrcy55bWwKKysrIGIvLmNpcnJ1cy50YXNrcy55bWwKQEAgLTI4LDYgKzI4LDcg QEAgZW52OgogICAjIGVycm9ycy93YXJuaW5ncyBpbiBvbmUgcGxhY2UuCiAgIE1CVUlMRF9UQVJH RVQ6IGFsbCB0ZXN0cHJlcAogICBNVEVTVF9BUkdTOiAtLXByaW50LWVycm9ybG9ncyAtLW5vLXJl YnVpbGQgLUMgYnVpbGQKKyAgTVRFU1RfU1VJVEVTOiAjIC0tc3VpdGUgc2V0dXAgLS1zdWl0ZSBz c2wgLS1zdWl0ZSAuLi4KICAgUEdDVExUSU1FT1VUOiAxMjAgIyBhdm9pZHMgc3B1cmlvdXMgZmFp bHVyZXMgZHVyaW5nIHBhcmFsbGVsIHRlc3RzCiAgIFRFTVBfQ09ORklHOiAke0NJUlJVU19XT1JL SU5HX0RJUn0vc3JjL3Rvb2xzL2NpL3BnX2NpX2Jhc2UuY29uZgogICBQR19URVNUX0VYVFJBOiBr ZXJiZXJvcyBsZGFwIHNzbCBsaWJwcV9lbmNyeXB0aW9uIGxvYWRfYmFsYW5jZSBvYXV0aApAQCAt MjUxLDcgKzI1Miw3IEBAIHRhc2s6CiAgICAgc3UgcG9zdGdyZXMgPDwtRU9GCiAgICAgICBzZXQg LWUKICAgICAgIHVsaW1pdCAtYyB1bmxpbWl0ZWQKLSAgICAgIG1lc29uIHRlc3QgJE1URVNUX0FS R1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfQorICAgICAgbWVzb24gdGVzdCAkTVRFU1Rf QVJHUyAtLW51bS1wcm9jZXNzZXMgJHtURVNUX0pPQlN9ICR7TVRFU1RfU1VJVEVTfQogICAgIEVP RgogCiAgICMgdGVzdCBydW5uaW5nY2hlY2ssIGZyZWVic2QgY2hvc2VuIGJlY2F1c2UgaXQncyBj dXJyZW50bHkgZmFzdCBlbm91Z2gKQEAgLTM5Niw3ICszOTcsNyBAQCB0YXNrOgogICAgICAgIyBP dGhlcndpc2UgdGVzdHMgd2lsbCBmYWlsIG9uIE9wZW5CU0QsIGR1ZSB0byBpbmFiaWxpdHkgdG8g c3RhcnQgZW5vdWdoCiAgICAgICAjIHByb2Nlc3Nlcy4KICAgICAgIHVsaW1pdCAtcCAyNTYKLSAg ICAgIG1lc29uIHRlc3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfQor ICAgICAgbWVzb24gdGVzdCAkTVRFU1RfQVJHUyAtLW51bS1wcm9jZXNzZXMgJHtURVNUX0pPQlN9 ICR7TVRFU1RfU1VJVEVTfQogICAgIEVPRgogCiAgIG9uX2ZhaWx1cmU6CkBAIC02MTQsNyArNjE1 LDcgQEAgdGFzazoKICAgICAgICAgc3UgcG9zdGdyZXMgPDwtRU9GCiAgICAgICAgICAgc2V0IC1l CiAgICAgICAgICAgdWxpbWl0IC1jIHVubGltaXRlZAotICAgICAgICAgIG1lc29uIHRlc3QgJE1U RVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfQorICAgICAgICAgIG1lc29uIHRl c3QgJE1URVNUX0FSR1MgLS1udW0tcHJvY2Vzc2VzICR7VEVTVF9KT0JTfSAke01URVNUX1NVSVRF U30KICAgICAgICAgRU9GCiAgICAgICAgICMgc28gdGhhdCB3ZSBkb24ndCB1cGxvYWQgNjRiaXQg bG9ncyBpZiAzMmJpdCBmYWlscwogICAgICAgICBybSAtcmYgYnVpbGQvCkBAIC02MjcsNyArNjI4 LDcgQEAgdGFzazoKICAgICAgICAgc3UgcG9zdGdyZXMgPDwtRU9GCiAgICAgICAgICAgc2V0IC1l CiAgICAgICAgICAgdWxpbWl0IC1jIHVubGltaXRlZAotICAgICAgICAgIFBZVEhPTkNPRVJDRUNM T0NBTEU9MCBMQU5HPUMgbWVzb24gdGVzdCAkTVRFU1RfQVJHUyAtQyBidWlsZC0zMiAtLW51bS1w cm9jZXNzZXMgJHtURVNUX0pPQlN9CisgICAgICAgICAgUFlUSE9OQ09FUkNFQ0xPQ0FMRT0wIExB Tkc9QyBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdTIC1DIGJ1aWxkLTMyIC0tbnVtLXByb2Nlc3NlcyAk e1RFU1RfSk9CU30gJHtNVEVTVF9TVUlURVN9CiAgICAgICAgIEVPRgogCiAgICAgICBvbl9mYWls dXJlOgpAQCAtNzUxLDcgKzc1Miw3IEBAIHRhc2s6CiAgIHRlc3Rfd29ybGRfc2NyaXB0OiB8CiAg ICAgdWxpbWl0IC1jIHVubGltaXRlZCAjIGRlZmF1bHQgaXMgMAogICAgIHVsaW1pdCAtbiAxMDI0 ICMgZGVmYXVsdCBpcyAyNTYsIHByZXR0eSBsb3cKLSAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdT IC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30KKyAgICBtZXNvbiB0ZXN0ICRNVEVTVF9BUkdT IC0tbnVtLXByb2Nlc3NlcyAke1RFU1RfSk9CU30gJHtNVEVTVF9TVUlURVN9CiAKICAgb25fZmFp bHVyZToKICAgICA8PDogKm9uX2ZhaWx1cmVfbWVzb24KQEAgLTgzNCw3ICs4MzUsNyBAQCB0YXNr OgogCiAgIGNoZWNrX3dvcmxkX3NjcmlwdDogfAogICAgIHZjdmFyc2FsbCB4NjQKLSAgICBtZXNv biB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUKKyAgICBtZXNv biB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUgJU1URVNUX1NV SVRFUyUKIAogICBvbl9mYWlsdXJlOgogICAgIDw8OiAqb25fZmFpbHVyZV9tZXNvbgpAQCAtODk1 LDcgKzg5Niw3IEBAIHRhc2s6CiAgIHVwbG9hZF9jYWNoZXM6IGNjYWNoZQogCiAgIHRlc3Rfd29y bGRfc2NyaXB0OiB8Ci0gICAgJUJBU0glIC1jICJtZXNvbiB0ZXN0ICVNVEVTVF9BUkdTJSAtLW51 bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUiCisgICAgJUJBU0glIC1jICJtZXNvbiB0ZXN0ICVNVEVT VF9BUkdTJSAtLW51bS1wcm9jZXNzZXMgJVRFU1RfSk9CUyUgJU1URVNUX1NVSVRFUyUiCiAKICAg b25fZmFpbHVyZToKICAgICA8PDogKm9uX2ZhaWx1cmVfbWVzb24KLS0gCjIuNTIuMAoK --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0004-Add-pytest-infrastructure-to-interact-with-Postgr.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0004-Add-pytest-infrastructure-to-interact-with-Postgr.patch RnJvbSBiNzEwODY4YmNiODQ0NDE2ZGM4N2ZhYTcwZGFhYjA1NWE1Y2RiN2YzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBUdWUsIDE2IERlYyAyMDI1IDA5OjI1OjQ4ICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NSA0LzddIEFkZCBweXRlc3QgaW5mcmFzdHJ1Y3R1cmUgdG8gaW50ZXJhY3Qgd2l0aCBQb3N0Z3Jl U1FMCiBzZXJ2ZXJzCgpUaGlzIGFkZHMgZnVuY3Rpb25hbGl0eSB0byB0aGUgcHl0ZXN0IGluZnJh c3RydWN0dXJlIHRoYXQgYWxsb3dzIHRlc3RzCnRvIGRvIGNvbW1vbiB0aGluZ3Mgd2l0aCBQb3N0 Z3JlU1FMIHNlcnZlcnMgbGlrZToKLSBjcmVhdGluZwotIHN0YXJ0aW5nCi0gc3RvcHBpbmcKLSBj b25uZWN0aW5nCi0gcnVubmluZyBxdWVyaWVzCi0gaGFuZGxpbmcgZXJyb3JzCgpUaGUgZ29hbCBv ZiB0aGlzIGluZnJhc3RydWN0dXJlIGlzIHRvIGJlIHNvIGVhc3kgdG8gdXNlIHRoYXQgdGhlIGFj dHVhbAp0ZXN0cyByZWFsbHkgb25seSBjb250YWluIHRoZSBsb2dpYyB0byB0ZXN0IHRoZSBiZWhh dmlvdXIgdGhhdCB0aGUgdGVzdHMKYXJlIHRlc3RpbmcsIGFzIG9wcG9zZWQgdG8gYSBidW5jaCBv ZiBib2lsZXJwbGF0ZS4gRXhhbXBsZXMgb2YgdGhpcyBhcmU6CgpUeXBlcyBnZXQgY29udmVydGVk IHRvIHRoZWlyIFB5dGhvbiBjb3VudGVyIHBhcnRzIGF1dG9tYXRpY2FsbHkuIEVycm9ycwpiZWNv bWUgYWN0dWFsIFB5dGhvbiBleGNlcHRpb25zLiBSZXN1bHRzIG9mIHF1ZXJpZXMgdGhhdCBvbmx5 IHJldHVybiBhCnNpbmdsZSByb3cgb3IgY2VsbCBhcmUgdW5wYWNrZWQgYXV0b21hdGljYWxseSwg c28geW91IGRvbid0IGhhdmUgdG8gZG8Kcm93c1swXVswXSBpZiB0aGUgcXVlcnkgb25seSByZXR1 cm5zIGEgc2luZ2xlIGNlbGwuCgpUaGUgb25seSBuZXcgdGVzdHMgdGhhdCBhcmUgcGFydCBvZiB0 aGlzIGNvbW1pdCBhcmUgdGVzdHMgdGhhdCBjb3Zlcgp0aGlzIHRlc3RpbmcgaW5mcmFzdHJ1Y3R1 cmUgaXRzZWxmLiBJdCdzIGRlYmF0YWJsZSB3aGV0aGVyIHN1Y2ggdGVzdHMKYXJlIHVzZWZ1bCBs b25nIHRlcm0sIGJlY2F1c2UgYW55IGluZnJhc3RydWN0dXJlIHRoYXQncyB1bnVzZWQgYnkgYWN0 dWFsCnRlc3RzIHNob3VsZCBwcm9iYWJseSBub3QgZXhpc3QuIEZvciBub3cgaXQgc2VlbXMgZ29v ZCB0byB0ZXN0IHRoaXMKYmFzaWMgZnVuY3Rpb25hbGl0eSB0aG91Z2gsIGJvdGggdG8gbWFrZSBz dXJlIHdlIGRvbid0IGJyZWFrIGl0IGJlZm9yZQpjb21taXR0aW5nIGFjdHVhbCB0ZXN0cyB0aGF0 IHVzZSBpdCwgYW5kIGFsc28gYXMgYW4gZXhhbXBsZSBmb3IgcGVvcGxlCndyaXRpbmcgbmV3IHRl c3RzLgotLS0KIGRvYy9zcmMvc2dtbC9yZWdyZXNzLnNnbWwgICAgICAgICAgICAgICAgICB8ICAg NTQgKy0KIHB5cHJvamVjdC50b21sICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Kwogc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0ICAgICAgICAgICAgIHwgICAgNSArCiBz cmMvdGVzdC9weXRlc3QvUkVBRE1FICAgICAgICAgICAgICAgICAgICAgfCAgMTQwICstCiBzcmMv dGVzdC9weXRlc3QvbGlicHEvX19pbml0X18ucHkgICAgICAgICAgfCAgIDM2ICsKIHNyYy90ZXN0 L3B5dGVzdC9saWJwcS9fY29yZS5weSAgICAgICAgICAgICB8ICA0ODkgKysrKysKIHNyYy90ZXN0 L3B5dGVzdC9saWJwcS9fZXJyb3JfYmFzZS5weSAgICAgICB8ICAgNzQgKwogc3JjL3Rlc3QvcHl0 ZXN0L2xpYnBxL19nZW5lcmF0ZWRfZXJyb3JzLnB5IHwgMjExNiArKysrKysrKysrKysrKysrKysr Kwogc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weSAgICAgICAgICAgIHwgICAzOSArCiBz cmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgfCAgICA1ICstCiBzcmMv dGVzdC9weXRlc3QvcHlwZy9fX2luaXRfXy5weSAgICAgICAgICAgfCAgIDEwICsKIHNyYy90ZXN0 L3B5dGVzdC9weXBnL19lbnYucHkgICAgICAgICAgICAgICB8ICAgNzIgKwogc3JjL3Rlc3QvcHl0 ZXN0L3B5cGcvZml4dHVyZXMucHkgICAgICAgICAgIHwgIDMzNSArKysrCiBzcmMvdGVzdC9weXRl c3QvcHlwZy9zZXJ2ZXIucHkgICAgICAgICAgICAgfCAgNDcwICsrKysrCiBzcmMvdGVzdC9weXRl c3QvcHlwZy91dGlsLnB5ICAgICAgICAgICAgICAgfCAgIDQyICsKIHNyYy90ZXN0L3B5dGVzdC9w eXQvY29uZnRlc3QucHkgICAgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvcHl0ZXN0L3B5dC90 ZXN0X2Vycm9ycy5weSAgICAgICAgIHwgICAzNCArCiBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3Rf bGlicHEucHkgICAgICAgICAgfCAgMTcyICsrCiBzcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbXVs dGlfc2VydmVyLnB5ICAgfCAgIDQ2ICsKIHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9o ZWxwZXJzLnB5ICB8ICAzNDcgKysrKwogc3JjL3Rvb2xzL2dlbmVyYXRlX3B5dGVzdF9saWJwcV9l cnJvcnMucHkgIHwgIDE0NyArKwogMjEgZmlsZXMgY2hhbmdlZCwgNDYzNCBpbnNlcnRpb25zKCsp LCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9saWJw cS9fX2luaXRfXy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9f Y29yZS5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9fZXJyb3Jf YmFzZS5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9fZ2VuZXJh dGVkX2Vycm9ycy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9saWJwcS9l cnJvcnMucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHlwZy9fX2luaXRf Xy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXBnL19lbnYucHkKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9weXRlc3QvcHlwZy9maXh0dXJlcy5weQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXBnL3NlcnZlci5weQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3B5dGVzdC9weXBnL3V0aWwucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rl c3QvcHl0ZXN0L3B5dC90ZXN0X2Vycm9ycy5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0 L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3B5 dGVzdC9weXQvdGVzdF9tdWx0aV9zZXJ2ZXIucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVz dC9weXRlc3QvcHl0L3Rlc3RfcXVlcnlfaGVscGVycy5weQogY3JlYXRlIG1vZGUgMTAwNzU1IHNy Yy90b29scy9nZW5lcmF0ZV9weXRlc3RfbGlicHFfZXJyb3JzLnB5CgpkaWZmIC0tZ2l0IGEvZG9j L3NyYy9zZ21sL3JlZ3Jlc3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWdyZXNzLnNnbWwKaW5kZXgg ZDgwZGQ0NmM1ZmQuLjE0NDA4MTViMjNhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVncmVz cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWdyZXNzLnNnbWwKQEAgLTg0MCw3ICs4NDAsNyBA QCBmbG9hdDQ6b3V0Oi4qLS4qLWN5Z3dpbi4qPWZsb2F0NC1taXNyb3VuZGVkLWlucHV0Lm91dAog ICA8L3NlY3QxPgogCiAgIDxzZWN0MSBpZD0icmVncmVzcy10YXAiPgotICAgPHRpdGxlPlRBUCBU ZXN0czwvdGl0bGU+CisgICA8dGl0bGU+UGVybCBUQVAgVGVzdHM8L3RpdGxlPgogCiAgICA8cGFy YT4KICAgICBWYXJpb3VzIHRlc3RzLCBwYXJ0aWN1bGFybHkgdGhlIGNsaWVudCBwcm9ncmFtIHRl c3RzCkBAIC05MjksNiArOTI5LDU4IEBAIFBHX1RFU1RfTk9DTEVBTj0xIG1ha2UgLUMgc3JjL2Jp bi9wZ19kdW1wIGNoZWNrCiAKICAgPC9zZWN0MT4KIAorICA8c2VjdDEgaWQ9InJlZ3Jlc3MtcHl0 ZXN0Ij4KKyAgIDx0aXRsZT5QeXRlc3QgVGVzdHM8L3RpdGxlPgorCisgICA8cGFyYT4KKyAgICBU ZXN0cyBpbiA8ZmlsZW5hbWU+cHl0PC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgdXNlIHRoZSBQeXRo b24KKyAgICA8YXBwbGljYXRpb24+cHl0ZXN0PC9hcHBsaWNhdGlvbj4gZnJhbWV3b3JrLiBUaGVz ZSB0ZXN0cyBwcm92aWRlIGEKKyAgICBjb252ZW5pZW50IHdheSB0byB0ZXN0IGxpYnBxIGNsaWVu dCBmdW5jdGlvbmFsaXR5IGFuZCBzY2VuYXJpb3MgcmVxdWlyaW5nCisgICAgbXVsdGlwbGUgUG9z dGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2VzLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBU aGUgcHl0ZXN0IHRlc3RzIHJlcXVpcmUgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3Ru YW1lPiB0byBiZQorICAgIGNvbmZpZ3VyZWQgd2l0aCB0aGUgb3B0aW9uIDxvcHRpb24+LS1lbmFi bGUtcHl0ZXN0PC9vcHRpb24+IChvcgorICAgIDxvcHRpb24+LURweXRlc3Q9ZW5hYmxlZDwvb3B0 aW9uPiBmb3IgTWVzb24gYnVpbGRzKS4gWW91IGFsc28gbmVlZCBlaXRoZXIKKyAgICA8YXBwbGlj YXRpb24+cHl0ZXN0PC9hcHBsaWNhdGlvbj4gb3IgPGFwcGxpY2F0aW9uPnV2PC9hcHBsaWNhdGlv bj4KKyAgICBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0uCisgICA8L3BhcmE+CisKKyAgIDxwYXJh PgorICAgIFdpdGggTWVzb24gYnVpbGRzLCB5b3UgY2FuIHJ1biB0aGUgcHl0ZXN0IHRlc3RzIHVz aW5nOgorPHByb2dyYW1saXN0aW5nPgorbWVzb24gdGVzdCAtLXN1aXRlIHB5dGVzdAorPC9wcm9n cmFtbGlzdGluZz4KKyAgICBXaXRoIGF1dG9jb25mLWJhc2VkIGJ1aWxkcywgeW91IGNhbiBydW4g dGhlbSBmcm9tIHRoZQorICAgIDxmaWxlbmFtZT5zcmMvdGVzdC9weXRlc3Q8L2ZpbGVuYW1lPiBk aXJlY3RvcnkgdXNpbmc6Cis8cHJvZ3JhbWxpc3Rpbmc+CittYWtlIGNoZWNrCis8L3Byb2dyYW1s aXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBZb3UgY2FuIGFsc28gcnVuIHNw ZWNpZmljIHRlc3QgZmlsZXMgZGlyZWN0bHkgdXNpbmcgcHl0ZXN0OgorPHByb2dyYW1saXN0aW5n PgorcHl0ZXN0IHNyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9saWJwcS5weQorcHl0ZXN0IC1rICJ0 ZXN0X2Nvbm5zdHIiCis8L3Byb2dyYW1saXN0aW5nPgorICAgPC9wYXJhPgorCisgICA8cGFyYT4K KyAgICBNYW55IG9wZXJhdGlvbnMgaW4gdGhlIHRlc3Qgc3VpdGVzIHVzZSBhIDE4MC1zZWNvbmQg dGltZW91dCwgd2hpY2ggb24gc2xvdworICAgIGhvc3RzIG1heSBsZWFkIHRvIGxvYWQtaW5kdWNl ZCB0aW1lb3V0cy4gIFNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCisgICAgPHZhcm5h bWU+UEdfVEVTVF9USU1FT1VUX0RFRkFVTFQ8L3Zhcm5hbWU+IHRvIGEgaGlnaGVyIG51bWJlciB3 aWxsIGNoYW5nZQorICAgIHRoZSBkZWZhdWx0IHRvIGF2b2lkIHRoaXMuCisgICA8L3BhcmE+CisK KyAgIDxwYXJhPgorICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdyaXRpbmcgcHl0ZXN0IHRl c3RzLCBzZWUgdGhlCisgICAgPGZpbGVuYW1lPnNyYy90ZXN0L3B5dGVzdC9SRUFETUU8L2ZpbGVu YW1lPiBmaWxlLgorICAgPC9wYXJhPgorCisgIDwvc2VjdDE+CisKICAgPHNlY3QxIGlkPSJyZWdy ZXNzLWNvdmVyYWdlIj4KICAgIDx0aXRsZT5UZXN0IENvdmVyYWdlIEV4YW1pbmF0aW9uPC90aXRs ZT4KIApkaWZmIC0tZ2l0IGEvcHlwcm9qZWN0LnRvbWwgYi9weXByb2plY3QudG9tbAppbmRleCA2 MGFiYjRkMDY1NS4uNDYyOGQyMjc0ZTAgMTAwNjQ0Ci0tLSBhL3B5cHJvamVjdC50b21sCisrKyBi L3B5cHJvamVjdC50b21sCkBAIC0xOSwzICsxOSw2IEBAIG1pbnZlcnNpb24gPSAiNy4wIgogCiAj IENvbW1vbiB0ZXN0IGNvZGUgY2FuIGJlIGZvdW5kIGhlcmUuCiBweXRob25wYXRoID0gWyJzcmMv dGVzdC9weXRlc3QiXQorCisjIExvYWQgdGhlIHNoYXJlZCBmaXh0dXJlcyBwbHVnaW4KK2FkZG9w dHMgPSBbIi1wIiwgInB5cGcuZml4dHVyZXMiXQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvZXJyY29kZXMudHh0IGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyY29kZXMudHh0CmluZGV4IGM5 NmFhN2M0OWVmLi40MGM3NTU1MDQ3ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvZXJy Y29kZXMudHh0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4dApAQCAtMjEsNiAr MjEsMTEgQEAKICMgICBkb2Mvc3JjL3NnbWwvZXJyY29kZXMtdGFibGUuc2dtbAogIyAgICAgIGEg U0dNTCB0YWJsZSBvZiBlcnJvciBjb2RlcyBmb3IgaW5jbHVzaW9uIGluIHRoZSBkb2N1bWVudGF0 aW9uCiAjCisjICAgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19nZW5lcmF0ZWRfZXJyb3JzLnB5Cisj ICAgICAgUHl0aG9uIGV4Y2VwdGlvbiBjbGFzc2VzIGZvciB0aGUgcHl0ZXN0IGxpYnBxIHdyYXBw ZXIKKyMgICAgICBOb3RlOiBUaGlzIG5lZWRzIHRvIGJlIG1hbnVhbGx5IHJlZ2VuZXJhdGVkIGJ5 IHJ1bm5pbmcKKyMgICAgICBzcmMvdG9vbHMvZ2VuZXJhdGVfcHl0ZXN0X2xpYnBxX2Vycm9ycy5w eQorIwogIyBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcyBvbmUgZXJyb3IgY29kZSBwZXIgbGlu ZSwgd2l0aCB0aGUgZm9sbG93aW5nCiAjIHdoaXRlc3BhY2Utc2VwYXJhdGVkIGZpZWxkczoKICMK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9SRUFETUUgYi9zcmMvdGVzdC9weXRlc3QvUkVB RE1FCmluZGV4IDEzMzNlZDc3YjdlLi45ZGM1MGNhMTExZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cHl0ZXN0L1JFQURNRQorKysgYi9zcmMvdGVzdC9weXRlc3QvUkVBRE1FCkBAIC0xICsxLDEzOSBA QAotVE9ETworc3JjL3Rlc3QvcHl0ZXN0L1JFQURNRQorCitQeXRlc3QtYmFzZWQgdGVzdHMKKz09 PT09PT09PT09PT09PT09PQorCitUaGlzIGRpcmVjdG9yeSBjb250YWlucyBpbmZyYXN0cnVjdHVy ZSBmb3IgUHl0aG9uLWJhc2VkIHRlc3RzIHVzaW5nIHB5dGVzdCwKK2Fsb25nIHdpdGggc29tZSBj b3JlIHRlc3RzIGZvciB0aGUgcHl0ZXN0IGluZnJhc3RydWN0dXJlIGl0c2VsZi4gVGhlIGZyYW1l d29yaworcHJvdmlkZXMgZml4dHVyZXMgZm9yIG1hbmFnaW5nIFBvc3RncmVTUUwgc2VydmVyIGlu c3RhbmNlcyBhbmQgY29ubmVjdGluZyB0bwordGhlbSB2aWEgbGlicHEuCisKKworUnVubmluZyB0 aGUgdGVzdHMKKz09PT09PT09PT09PT09PT09CisKK05PVEU6IFlvdSBtdXN0IGhhdmUgZ2l2ZW4g dGhlIC0tZW5hYmxlLXB5dGVzdCBhcmd1bWVudCB0byBjb25maWd1cmUgKG9yCistRHB5dGVzdD1l bmFibGVkIGZvciBNZXNvbiBidWlsZHMpLiBZb3UgYWxzbyBuZWVkIHRvIGhhdmUgZWl0aGVyIHB5 dGVzdCBvciB1dgorYWxyZWFkeSBpbnN0YWxsZWQuCisKK1dpdGggTWVzb24gYnVpbGRzLCB5b3Ug Y2FuIHJ1bjoKKyAgICBtZXNvbiB0ZXN0IC0tc3VpdGUgcHl0ZXN0CisKK1dpdGggYXV0b2NvbmYg YmFzZWQgYnVpbGRzLCB5b3UgY2FuIHJ1bjoKKyAgICBtYWtlIGNoZWNrCitvcgorICAgIG1ha2Ug aW5zdGFsbGNoZWNrCisKK1lvdSBjYW4gcnVuIHNwZWNpZmljIHRlc3QgZmlsZXMgYW5kL29yIHVz ZSBweXRlc3QncyAtayBvcHRpb24gdG8gc2VsZWN0IHRlc3RzOgorICAgIHB5dGVzdCBzcmMvdGVz dC9weXRlc3QvcHl0L3Rlc3RfbGlicHEucHkKKyAgICBweXRlc3QgLWsgInRlc3RfY29ubnN0ciIK KworCitEaXJlY3Rvcnkgc3RydWN0dXJlCis9PT09PT09PT09PT09PT09PT09CisKK3B5cGcvCisg ICAgUHl0aG9uIGxpYnJhcnkgcHJvdmlkaW5nIGNvbW1vbiBmdW5jdGlvbnMgYW5kIHB5dGVzdCBm aXh0dXJlcyB0aGF0IGNhbiBiZQorICAgIHVzZWQgaW4gdGVzdHMuCisKK2xpYnBxLworICAgIEEg c2ltcGxlIGJ1dCB1c2VyLWZyaWVuZGx5IHB5dGhvbiB3cmFwcGVyIGFyb3VuZCBsaWJwcQorCitw eXQvCisgICAgVGVzdHMgZm9yIHRoZSBweXRlc3QgaW5mcmFzdHJ1Y3R1cmUgaXRzZWxmCisKK3Bn dGFwLnB5CisgICAgQSBweXRlc3QgcGx1Z2luIHRvIG91dHB1dCByZXN1bHRzIGluIFRBUCBmb3Jt YXQKKworCitXcml0aW5nIHRlc3RzCis9PT09PT09PT09PT09CisKK1Rlc3RzIHVzZSBweXRlc3Qg Zml4dHVyZXMgdG8gbWFuYWdlIHNlcnZlciBpbnN0YW5jZXMgYW5kIGNvbm5lY3Rpb25zLiBUaGUK K21vc3QgY29tbW9ubHkgdXNlZCBmaXh0dXJlcyBhcmU6CisKK3BnCisgICAgQSBQb3N0Z3Jlc1Nl cnZlciBpbnN0YW5jZSBjb25maWd1cmVkIGZvciB0aGUgY3VycmVudCB0ZXN0LiBVc2UgdGhpcyBm b3IKKyAgICBjcmVhdGluZyB0ZXN0IHVzZXJzL2RhdGFiYXNlcyBvciBtb2RpZnlpbmcgc2VydmVy IGNvbmZpZ3VyYXRpb24uIENoYW5nZXMKKyAgICBhcmUgYXV0b21hdGljYWxseSByb2xsZWQgYmFj ayBhZnRlciB0aGUgdGVzdC4KKworY29ubgorICAgIEEgY29ubmVjdGVkIFBHY29ubiBpbnN0YW5j ZSB0byB0aGUgdGVzdCBzZXJ2ZXIuIEF1dG9tYXRpY2FsbHkgY2xlYW5lZCB1cAorICAgIGFmdGVy IHRoZSB0ZXN0LgorCitjb25uZWN0CisgICAgQSBmdW5jdGlvbiB0byBjcmVhdGUgYWRkaXRpb25h bCBjb25uZWN0aW9ucyB3aXRoIGN1c3RvbSBvcHRpb25zLgorCitjcmVhdGVfcGcKKyAgICBBIGZh Y3RvcnkgZnVuY3Rpb24gdG8gY3JlYXRlIGFkZGl0aW9uYWwgUG9zdGdyZVNRTCBzZXJ2ZXJzIHdp dGhpbiBhIHRlc3QuCisgICAgU2VydmVycyBhcmUgYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0 IHRoZSBlbmQgb2YgdGhlIHRlc3QuIFVzZWZ1bCBmb3IKKyAgICB0ZXN0aW5nIHNjZW5hcmlvcyB0 aGF0IHJlcXVpcmUgbXVsdGlwbGUgaW5kZXBlbmRlbnQgc2VydmVycy4KKworY3JlYXRlX3BnX21v ZHVsZQorICAgIExpa2UgY3JlYXRlX3BnLCBidXQgc2VydmVycyBwZXJzaXN0IGZvciB0aGUgZW50 aXJlIHRlc3QgbW9kdWxlLiBVc2UgdGhpcworICAgIHdoZW4gbXVsdGlwbGUgdGVzdHMgaW4gYSBt b2R1bGUgY2FuIHNoYXJlIHRoZSBzYW1lIHNlcnZlcnMsIHdoaWNoIGlzCisgICAgZmFzdGVyIHRo YW4gY3JlYXRpbmcgbmV3IHNlcnZlcnMgZm9yIGVhY2ggdGVzdC4KKworCitFeGFtcGxlIHRlc3Q6 CisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcXVlcnkoY29ubik6CisgICAgICAgIHJlc3VsdCA9IGNv bm4uc3FsKCJTRUxFQ1QgMSArIDEiKQorICAgICAgICBhc3NlcnQgcmVzdWx0ID09IDIKKworICAg IGRlZiB0ZXN0X3dpdGhfdXNlcihwZyk6CisgICAgICAgIHVzZXJzID0gcGcuY3JlYXRlX3VzZXJz KCJ0ZXN0IikKKyAgICAgICAgd2l0aCBwZy5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAgICAgICAg cy5oYmEucHJlcGVuZChbImxvY2FsIiwgImFsbCIsIHVzZXJzWyJ0ZXN0Il0sICJ0cnVzdCJdKQor CisgICAgICAgIGNvbm4gPSBwZy5jb25uZWN0KHVzZXI9dXNlcnNbInRlc3QiXSkKKyAgICAgICAg YXNzZXJ0IGNvbm4uc3FsKCJTRUxFQ1QgY3VycmVudF91c2VyIikgPT0gdXNlcnNbInRlc3QiXQor CisgICAgZGVmIHRlc3RfbXVsdGlwbGVfc2VydmVycyhjcmVhdGVfcGcpOgorICAgICAgICBub2Rl MSA9IGNyZWF0ZV9wZygicHJpbWFyeSIpCisgICAgICAgIG5vZGUyID0gY3JlYXRlX3BnKCJzZWNv bmRhcnkiKQorCisgICAgICAgIGNvbm4xID0gbm9kZTEuY29ubmVjdCgpCisgICAgICAgIGNvbm4y ID0gbm9kZTIuY29ubmVjdCgpCisKKyAgICAgICAgIyBFYWNoIHNlcnZlciBpcyBpbmRlcGVuZGVu dAorICAgICAgICBhc3NlcnQgbm9kZTEucG9ydCAhPSBub2RlMi5wb3J0CisKKworU2VydmVyIGNv bmZpZ3VyYXRpb24KKz09PT09PT09PT09PT09PT09PT09CisKK1Rlc3RzIGNhbiB0ZW1wb3Jhcmls eSBtb2RpZnkgc2VydmVyIGNvbmZpZ3VyYXRpb24gdXNpbmcgY29udGV4dCBtYW5hZ2VyczoKKwor ICAgIHdpdGggcGcucmVsb2FkaW5nKCkgYXMgczoKKyAgICAgICAgcy5jb25mLnNldChsb2dfY29u bmVjdGlvbnM9Im9uIikKKyAgICAgICAgcy5oYmEucHJlcGVuZCgibG9jYWwgYWxsIGFsbCB0cnVz dCIpCisgICAgICAgICMgU2VydmVyIGlzIHJlbG9hZGVkIGhlcmUKKyAgICAjIEFmdGVyIHRoZSB0 ZXN0IGZpbmlzaGVkIHRoZSBvcmlnaW5hbCBjb25maWd1cmF0aW9uIGlzIHJlc3RvcmVkIGFuZAor ICAgICMgdGhlIHNlcnZlciBpcyByZWxvYWRlZCBhZ2FpbgorCitVc2UgcGcucmVzdGFydGluZygp IGluc3RlYWQgaWYgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlIHJlcXVpcmVzIGEgcmVzdGFydC4K KworCitUaW1lb3V0cworPT09PT09PT0KKworVGVzdHMgaW5oZXJpdCB0aGUgUEdfVEVTVF9USU1F T1VUX0RFRkFVTFQgZW52aXJvbm1lbnQgdmFyaWFibGUgKGRlZmF1bHRpbmcKK3RvIDE4MCBzZWNv bmRzKS4gVGhlIHJlbWFpbmluZ190aW1lb3V0IGZpeHR1cmUgcHJvdmlkZXMgYSBmdW5jdGlvbiB0 aGF0CityZXR1cm5zIGhvdyBtdWNoIHRpbWUgcmVtYWlucyBmb3IgdGhlIGN1cnJlbnQgdGVzdC4K KworCitFbnZpcm9ubWVudCB2YXJpYWJsZXMKKz09PT09PT09PT09PT09PT09PT09PQorCitQR19U RVNUX1RJTUVPVVRfREVGQVVMVAorICAgIFBlci10ZXN0IHRpbWVvdXQgaW4gc2Vjb25kcyAoZGVm YXVsdDogMTgwKQorCitQR19DT05GSUcKKyAgICBQYXRoIHRvIHBnX2NvbmZpZyAoZGVmYXVsdDog dXNlcyBQQVRIKQorCitURVNUREFUQURJUgorICAgIERpcmVjdG9yeSBmb3IgdGVzdCBkYXRhIChk ZWZhdWx0OiBweXRlc3QgdGVtcCBkaXJlY3RvcnkpCisKK1BHX1RFU1RfRVhUUkEKKyAgICBTcGFj ZS1zZXBhcmF0ZWQgbGlzdCBvZiBvcHRpb25hbCB0ZXN0IGNhdGVnb3JpZXMgdG8gcnVuIChlLmcu LCAic3NsIikKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weSBi L3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uY2I0ZDE4YjYyMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9weXRlc3QvbGlicHEvX19pbml0X18ucHkKQEAgLTAsMCArMSwzNiBAQAorIyBDb3B5cmlnaHQg KGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorbGli cHEgdGVzdGluZyB1dGlsaXRpZXMgLSBjdHlwZXMgYmluZGluZ3MgYW5kIGhlbHBlcnMgZm9yIFBv c3RncmVTUUwncyBsaWJwcSBsaWJyYXJ5LgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBQeXRob24g d3JhcHBlcnMgYXJvdW5kIGxpYnBxIGZvciB1c2UgaW4gcHl0ZXN0IHRlc3RzLgorIiIiCisKK2Zy b20gLiBpbXBvcnQgZXJyb3JzCitmcm9tIC5lcnJvcnMgaW1wb3J0IExpYnBxRXJyb3IsIExpYnBx V2FybmluZworZnJvbSAuX2NvcmUgaW1wb3J0ICgKKyAgICBDb25uZWN0aW9uU3RhdHVzLAorICAg IERpYWdGaWVsZCwKKyAgICBFeGVjU3RhdHVzLAorICAgIFBHY29ubiwKKyAgICBQR3Jlc3VsdCwK KyAgICBjb25uZWN0LAorICAgIGNvbm5zdHIsCisgICAgbG9hZF9saWJwcV9oYW5kbGUsCisgICAg cmVnaXN0ZXJfdHlwZV9pbmZvLAorKQorCitfX2FsbF9fID0gWworICAgICJlcnJvcnMiLAorICAg ICJMaWJwcUVycm9yIiwKKyAgICAiTGlicHFXYXJuaW5nIiwKKyAgICAiQ29ubmVjdGlvblN0YXR1 cyIsCisgICAgIkRpYWdGaWVsZCIsCisgICAgIkV4ZWNTdGF0dXMiLAorICAgICJQR2Nvbm4iLAor ICAgICJQR3Jlc3VsdCIsCisgICAgImNvbm5lY3QiLAorICAgICJjb25uc3RyIiwKKyAgICAibG9h ZF9saWJwcV9oYW5kbGUiLAorICAgICJyZWdpc3Rlcl90eXBlX2luZm8iLAorXQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19jb3JlLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBx L19jb3JlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wZDc3OTk2 ZDU3MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fY29yZS5weQpA QCAtMCwwICsxLDQ4OSBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorQ29yZSBsaWJwcSBmdW5jdGlvbmFsaXR5IC0gY3R5 cGVzIGJpbmRpbmdzIGFuZCBjb25uZWN0aW9uIGhhbmRsaW5nLgorIiIiCisKK2ltcG9ydCBjb250 ZXh0bGliCitpbXBvcnQgY3R5cGVzCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCitp bXBvcnQgZW51bQoraW1wb3J0IGpzb24KK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IG9zCitpbXBv cnQgdXVpZAorZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgQ2FsbGFibGUsIERpY3QsIE9wdGlvbmFs CisKK2Zyb20gLmVycm9ycyBpbXBvcnQgTGlicHFFcnJvciwgbWFrZV9lcnJvcgorCisKKyMgUEdf RElBRyBmaWVsZCBpZGVudGlmaWVycyBmcm9tIHBvc3RncmVzX2V4dC5oCitjbGFzcyBEaWFnRmll bGQoZW51bS5JbnRFbnVtKToKKyAgICBTRVZFUklUWSA9IG9yZCgiUyIpCisgICAgU0VWRVJJVFlf Tk9OTE9DQUxJWkVEID0gb3JkKCJWIikKKyAgICBTUUxTVEFURSA9IG9yZCgiQyIpCisgICAgTUVT U0FHRV9QUklNQVJZID0gb3JkKCJNIikKKyAgICBNRVNTQUdFX0RFVEFJTCA9IG9yZCgiRCIpCisg ICAgTUVTU0FHRV9ISU5UID0gb3JkKCJIIikKKyAgICBTVEFURU1FTlRfUE9TSVRJT04gPSBvcmQo IlAiKQorICAgIElOVEVSTkFMX1BPU0lUSU9OID0gb3JkKCJwIikKKyAgICBJTlRFUk5BTF9RVUVS WSA9IG9yZCgicSIpCisgICAgQ09OVEVYVCA9IG9yZCgiVyIpCisgICAgU0NIRU1BX05BTUUgPSBv cmQoInMiKQorICAgIFRBQkxFX05BTUUgPSBvcmQoInQiKQorICAgIENPTFVNTl9OQU1FID0gb3Jk KCJjIikKKyAgICBEQVRBVFlQRV9OQU1FID0gb3JkKCJkIikKKyAgICBDT05TVFJBSU5UX05BTUUg PSBvcmQoIm4iKQorICAgIFNPVVJDRV9GSUxFID0gb3JkKCJGIikKKyAgICBTT1VSQ0VfTElORSA9 IG9yZCgiTCIpCisgICAgU09VUkNFX0ZVTkNUSU9OID0gb3JkKCJSIikKKworCitjbGFzcyBDb25u ZWN0aW9uU3RhdHVzKGVudW0uSW50RW51bSk6CisgICAgIiIiUG9zdGdyZVNRTCBjb25uZWN0aW9u IHN0YXR1cyBjb2RlcyBmcm9tIGxpYnBxLiIiIgorCisgICAgQ09OTkVDVElPTl9PSyA9IDAKKyAg ICBDT05ORUNUSU9OX0JBRCA9IDEKKworCitjbGFzcyBFeGVjU3RhdHVzKGVudW0uSW50RW51bSk6 CisgICAgIiIiUG9zdGdyZVNRTCByZXN1bHQgc3RhdHVzIGNvZGVzIGZyb20gUFFyZXN1bHRTdGF0 dXMuIiIiCisKKyAgICBQR1JFU19FTVBUWV9RVUVSWSA9IDAKKyAgICBQR1JFU19DT01NQU5EX09L ID0gMQorICAgIFBHUkVTX1RVUExFU19PSyA9IDIKKyAgICBQR1JFU19DT1BZX09VVCA9IDMKKyAg ICBQR1JFU19DT1BZX0lOID0gNAorICAgIFBHUkVTX0JBRF9SRVNQT05TRSA9IDUKKyAgICBQR1JF U19OT05GQVRBTF9FUlJPUiA9IDYKKyAgICBQR1JFU19GQVRBTF9FUlJPUiA9IDcKKyAgICBQR1JF U19DT1BZX0JPVEggPSA4CisgICAgUEdSRVNfU0lOR0xFX1RVUExFID0gOQorICAgIFBHUkVTX1BJ UEVMSU5FX1NZTkMgPSAxMAorICAgIFBHUkVTX1BJUEVMSU5FX0FCT1JURUQgPSAxMQorCisKK2Ns YXNzIF9QR2Nvbm4oY3R5cGVzLlN0cnVjdHVyZSk6CisgICAgcGFzcworCisKK2NsYXNzIF9QR3Jl c3VsdChjdHlwZXMuU3RydWN0dXJlKToKKyAgICBwYXNzCisKKworX1BHY29ubl9wID0gY3R5cGVz LlBPSU5URVIoX1BHY29ubikKK19QR3Jlc3VsdF9wID0gY3R5cGVzLlBPSU5URVIoX1BHcmVzdWx0 KQorCisKK2RlZiBsb2FkX2xpYnBxX2hhbmRsZShsaWJkaXIsIGJpbmRpcik6CisgICAgIiIiCisg ICAgTG9hZHMgYSBjdHlwZXMgaGFuZGxlIGZvciBsaWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24g cHJvdG90eXBlcyBhcmUKKyAgICBpbml0aWFsaXplZCBmb3IgZ2VuZXJhbCB1c2UuCisgICAgIiIi CisgICAgc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKKworICAgIGlmIHN5c3RlbSBpbiAoIkxp bnV4IiwgIkZyZWVCU0QiLCAiTmV0QlNEIiwgIk9wZW5CU0QiKToKKyAgICAgICAgbmFtZSA9ICJs aWJwcS5zby41IgorICAgIGVsaWYgc3lzdGVtID09ICJEYXJ3aW4iOgorICAgICAgICBuYW1lID0g ImxpYnBxLjUuZHlsaWIiCisgICAgZWxpZiBzeXN0ZW0gPT0gIldpbmRvd3MiOgorICAgICAgICBu YW1lID0gImxpYnBxLmRsbCIKKyAgICBlbHNlOgorICAgICAgICBhc3NlcnQgRmFsc2UsIGYidGhl IGxpYnBxIGZpeHR1cmUgbXVzdCBiZSB1cGRhdGVkIGZvciB7c3lzdGVtfSIKKworICAgIGlmIHN5 c3RlbSA9PSAiV2luZG93cyI6CisgICAgICAgICMgT24gV2luZG93cywgbGlicHEuZGxsIGlzIGNv bmZ1c2luZ2x5IGluIGJpbmRpciwgbm90IGxpYmRpci4gQW5kIHdlCisgICAgICAgICMgbmVlZCB0 byBhZGQgdGhpcyBkaXJlY3RvcnkgdGhlIHRoZSBzZWFyY2ggcGF0aC4KKyAgICAgICAgbGlicHFf cGF0aCA9IG9zLnBhdGguam9pbihiaW5kaXIsIG5hbWUpCisgICAgICAgIGxpYiA9IGN0eXBlcy5D RExMKGxpYnBxX3BhdGgpCisgICAgZWxzZToKKyAgICAgICAgbGlicHFfcGF0aCA9IG9zLnBhdGgu am9pbihsaWJkaXIsIG5hbWUpCisgICAgICAgIGxpYiA9IGN0eXBlcy5DRExMKGxpYnBxX3BhdGgp CisKKyAgICAjCisgICAgIyBGdW5jdGlvbiBQcm90b3R5cGVzCisgICAgIworCisgICAgbGliLlBR Y29ubmVjdGRiLnJlc3R5cGUgPSBfUEdjb25uX3AKKyAgICBsaWIuUFFjb25uZWN0ZGIuYXJndHlw ZXMgPSBbY3R5cGVzLmNfY2hhcl9wXQorCisgICAgbGliLlBRc3RhdHVzLnJlc3R5cGUgPSBjdHlw ZXMuY19pbnQKKyAgICBsaWIuUFFzdGF0dXMuYXJndHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAg bGliLlBRZXhlYy5yZXN0eXBlID0gX1BHcmVzdWx0X3AKKyAgICBsaWIuUFFleGVjLmFyZ3R5cGVz ID0gW19QR2Nvbm5fcCwgY3R5cGVzLmNfY2hhcl9wXQorCisgICAgbGliLlBRcmVzdWx0U3RhdHVz LnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFyZXN1bHRTdGF0dXMuYXJndHlwZXMg PSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFjbGVhci5yZXN0eXBlID0gTm9uZQorICAgIGxp Yi5QUWNsZWFyLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRZXJyb3JNZXNz YWdlLnJlc3R5cGUgPSBjdHlwZXMuY19jaGFyX3AKKyAgICBsaWIuUFFlcnJvck1lc3NhZ2UuYXJn dHlwZXMgPSBbX1BHY29ubl9wXQorCisgICAgbGliLlBRZmluaXNoLnJlc3R5cGUgPSBOb25lCisg ICAgbGliLlBRZmluaXNoLmFyZ3R5cGVzID0gW19QR2Nvbm5fcF0KKworICAgIGxpYi5QUXJlc3Vs dEVycm9yTWVzc2FnZS5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRcmVzdWx0 RXJyb3JNZXNzYWdlLmFyZ3R5cGVzID0gW19QR3Jlc3VsdF9wXQorCisgICAgbGliLlBRbnR1cGxl cy5yZXN0eXBlID0gY3R5cGVzLmNfaW50CisgICAgbGliLlBRbnR1cGxlcy5hcmd0eXBlcyA9IFtf UEdyZXN1bHRfcF0KKworICAgIGxpYi5QUW5maWVsZHMucmVzdHlwZSA9IGN0eXBlcy5jX2ludAor ICAgIGxpYi5QUW5maWVsZHMuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3BdCisKKyAgICBsaWIuUFFn ZXR2YWx1ZS5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRZ2V0dmFsdWUuYXJn dHlwZXMgPSBbX1BHcmVzdWx0X3AsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQorCisgICAg bGliLlBRZ2V0aXNudWxsLnJlc3R5cGUgPSBjdHlwZXMuY19pbnQKKyAgICBsaWIuUFFnZXRpc251 bGwuYXJndHlwZXMgPSBbX1BHcmVzdWx0X3AsIGN0eXBlcy5jX2ludCwgY3R5cGVzLmNfaW50XQor CisgICAgbGliLlBRZnR5cGUucmVzdHlwZSA9IGN0eXBlcy5jX3VpbnQKKyAgICBsaWIuUFFmdHlw ZS5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcCwgY3R5cGVzLmNfaW50XQorCisgICAgbGliLlBRcmVz dWx0RXJyb3JGaWVsZC5yZXN0eXBlID0gY3R5cGVzLmNfY2hhcl9wCisgICAgbGliLlBRcmVzdWx0 RXJyb3JGaWVsZC5hcmd0eXBlcyA9IFtfUEdyZXN1bHRfcCwgY3R5cGVzLmNfaW50XQorCisgICAg cmV0dXJuIGxpYgorCisKKyMgUG9zdGdyZVNRTCB0eXBlIE9JRHMgYW5kIGNvbnZlcnNpb24gc3lz dGVtCisjIFR5cGUgcmVnaXN0cnkgLSBtYXBzIE9JRCB0byBjb252ZXJ0ZXIgZnVuY3Rpb24KK190 eXBlX2NvbnZlcnRlcnM6IERpY3RbaW50LCBDYWxsYWJsZVtbc3RyXSwgQW55XV0gPSB7fQorX2Fy cmF5X3RvX2VsZW1fbWFwOiBEaWN0W2ludCwgaW50XSA9IHt9CisKKworZGVmIHJlZ2lzdGVyX3R5 cGVfaW5mbygKKyAgICBuYW1lOiBzdHIsIG9pZDogaW50LCBhcnJheV9vaWQ6IGludCwgY29udmVy dGVyOiBDYWxsYWJsZVtbc3RyXSwgQW55XQorKToKKyAgICAiIiIKKyAgICBSZWdpc3RlciBhIFBv c3RncmVTUUwgdHlwZSB3aXRoIGl0cyBPSUQsIGFycmF5IE9JRCwgYW5kIGNvbnZlcnNpb24gZnVu Y3Rpb24uCisKKyAgICBVc2FnZToKKyAgICAgICAgcmVnaXN0ZXJfdHlwZV9pbmZvKCJib29sIiwg MTYsIDEwMDAsIGxhbWJkYSB2OiB2ID09ICJ0IikKKyAgICAiIiIKKyAgICBfdHlwZV9jb252ZXJ0 ZXJzW29pZF0gPSBjb252ZXJ0ZXIKKyAgICBpZiBhcnJheV9vaWQgaXMgbm90IE5vbmU6CisgICAg ICAgIF9hcnJheV90b19lbGVtX21hcFthcnJheV9vaWRdID0gb2lkCisKKworZGVmIF9wYXJzZV9h cnJheSh2YWx1ZTogc3RyLCBlbGVtX29pZDogaW50KToKKyAgICAiIiJQYXJzZSBQb3N0Z3JlU1FM IGFycmF5IHN5bnRheCBpbnRvIG5lc3RlZCBQeXRob24gbGlzdHMuIiIiCisgICAgc3RhY2s6IGxp c3RbbGlzdF0gPSBbXQorICAgIGN1cnJlbnRfZWxlbWVudDogbGlzdFtzdHJdID0gW10KKyAgICBp bl9xdW90ZXMgPSBGYWxzZQorICAgIHdhc19xdW90ZWQgPSBGYWxzZQorICAgIHBvcyA9IDAKKwor ICAgIHdoaWxlIHBvcyA8IGxlbih2YWx1ZSk6CisgICAgICAgIGNoYXIgPSB2YWx1ZVtwb3NdCisK KyAgICAgICAgaWYgaW5fcXVvdGVzOgorICAgICAgICAgICAgaWYgY2hhciA9PSAiXFwiOgorICAg ICAgICAgICAgICAgIG5leHRfY2hhciA9IHZhbHVlW3BvcyArIDFdCisgICAgICAgICAgICAgICAg aWYgbmV4dF9jaGFyIG5vdCBpbiAnIlxcJzoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgTm90 SW1wbGVtZW50ZWRFcnJvcignT25seSBcXCIgYW5kIFxcXFwgZXNjYXBlcyBhcmUgc3VwcG9ydGVk JykKKyAgICAgICAgICAgICAgICBjdXJyZW50X2VsZW1lbnQuYXBwZW5kKG5leHRfY2hhcikKKyAg ICAgICAgICAgICAgICBwb3MgKz0gMgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg ICAgICBlbGlmIGNoYXIgPT0gJyInOgorICAgICAgICAgICAgICAgIGluX3F1b3RlcyA9IEZhbHNl CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGN1cnJlbnRfZWxlbWVudC5hcHBl bmQoY2hhcikKKyAgICAgICAgZWxpZiBjaGFyID09ICciJzoKKyAgICAgICAgICAgIGluX3F1b3Rl cyA9IFRydWUKKyAgICAgICAgICAgIHdhc19xdW90ZWQgPSBUcnVlCisgICAgICAgIGVsaWYgY2hh ciA9PSAieyI6CisgICAgICAgICAgICBzdGFjay5hcHBlbmQoW10pCisgICAgICAgIGVsaWYgY2hh ciBpbiAiLH0iOgorICAgICAgICAgICAgaWYgY3VycmVudF9lbGVtZW50IG9yIHdhc19xdW90ZWQ6 CisgICAgICAgICAgICAgICAgZWxlbSA9ICIiLmpvaW4oY3VycmVudF9lbGVtZW50KQorICAgICAg ICAgICAgICAgIGlmIG5vdCB3YXNfcXVvdGVkIGFuZCBlbGVtID09ICJOVUxMIjoKKyAgICAgICAg ICAgICAgICAgICAgc3RhY2tbLTFdLmFwcGVuZChOb25lKQorICAgICAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgICAgIHN0YWNrWy0xXS5hcHBlbmQoX2NvbnZlcnRfcGdfdmFsdWUo ZWxlbSwgZWxlbV9vaWQpKQorICAgICAgICAgICAgICAgIGN1cnJlbnRfZWxlbWVudCA9IFtdCisg ICAgICAgICAgICAgICAgd2FzX3F1b3RlZCA9IEZhbHNlCisgICAgICAgICAgICBpZiBjaGFyID09 ICJ9IjoKKyAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSBzdGFjay5wb3AoKQorICAgICAgICAg ICAgICAgIGlmIG5vdCBzdGFjazoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRl ZAorICAgICAgICAgICAgICAgIHN0YWNrWy0xXS5hcHBlbmQoY29tcGxldGVkKQorICAgICAgICBl bGlmIGNoYXIgIT0gIiAiOgorICAgICAgICAgICAgY3VycmVudF9lbGVtZW50LmFwcGVuZChjaGFy KQorICAgICAgICBwb3MgKz0gMQorCisgICAgcmFpc2UgVmFsdWVFcnJvcihmIk1hbGZvcm1lZCBh cnJheSBsaXRlcmFsOiB7dmFsdWV9IikKKworCisjIFJlZ2lzdGVyIHN0YW5kYXJkIFBvc3RncmVT UUwgdHlwZXMgdGhhdCB3ZSdsbCBsaWtlbHkgZW5jb3VudGVyIGluIHRlc3RzCityZWdpc3Rlcl90 eXBlX2luZm8oImJvb2wiLCAxNiwgMTAwMCwgbGFtYmRhIHY6IHYgPT0gInQiKQorcmVnaXN0ZXJf dHlwZV9pbmZvKCJpbnQyIiwgMjEsIDEwMDUsIGludCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygiaW50 NCIsIDIzLCAxMDA3LCBpbnQpCityZWdpc3Rlcl90eXBlX2luZm8oImludDgiLCAyMCwgMTAxNiwg aW50KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJmbG9hdDQiLCA3MDAsIDEwMjEsIGZsb2F0KQorcmVn aXN0ZXJfdHlwZV9pbmZvKCJmbG9hdDgiLCA3MDEsIDEwMjIsIGZsb2F0KQorcmVnaXN0ZXJfdHlw ZV9pbmZvKCJudW1lcmljIiwgMTcwMCwgMTIzMSwgZGVjaW1hbC5EZWNpbWFsKQorcmVnaXN0ZXJf dHlwZV9pbmZvKCJ0ZXh0IiwgMjUsIDEwMDksIHN0cikKK3JlZ2lzdGVyX3R5cGVfaW5mbygidmFy Y2hhciIsIDEwNDMsIDEwMTUsIHN0cikKK3JlZ2lzdGVyX3R5cGVfaW5mbygiZGF0ZSIsIDEwODIs IDExODIsIGRhdGV0aW1lLmRhdGUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygi dGltZSIsIDEwODMsIDExODMsIGRhdGV0aW1lLnRpbWUuZnJvbWlzb2Zvcm1hdCkKK3JlZ2lzdGVy X3R5cGVfaW5mbygidGltZXN0YW1wIiwgMTExNCwgMTExNSwgZGF0ZXRpbWUuZGF0ZXRpbWUuZnJv bWlzb2Zvcm1hdCkKK3JlZ2lzdGVyX3R5cGVfaW5mbygidGltZXN0YW1wdHoiLCAxMTg0LCAxMTg1 LCBkYXRldGltZS5kYXRldGltZS5mcm9taXNvZm9ybWF0KQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJ1 dWlkIiwgMjk1MCwgMjk1MSwgdXVpZC5VVUlEKQorcmVnaXN0ZXJfdHlwZV9pbmZvKCJqc29uIiwg MTE0LCAxOTksIGpzb24ubG9hZHMpCityZWdpc3Rlcl90eXBlX2luZm8oImpzb25iIiwgMzgwMiwg MzgwNywganNvbi5sb2FkcykKKworCitkZWYgX2NvbnZlcnRfcGdfdmFsdWUodmFsdWU6IHN0ciwg dHlwZV9vaWQ6IGludCkgLT4gQW55OgorICAgICIiIgorICAgIENvbnZlcnQgUG9zdGdyZVNRTCBz dHJpbmcgdmFsdWUgdG8gYXBwcm9wcmlhdGUgUHl0aG9uIHR5cGUgYmFzZWQgb24gT0lELgorICAg IFVzZXMgdGhlIHJlZ2lzdGVyZWQgdHlwZSBjb252ZXJ0ZXJzIGZyb20gcmVnaXN0ZXJfdHlwZV9p bmZvKCkuCisgICAgIiIiCisgICAgIyBDaGVjayBpZiBpdCdzIGFuIGFycmF5IHR5cGUKKyAgICBp ZiB0eXBlX29pZCBpbiBfYXJyYXlfdG9fZWxlbV9tYXA6CisgICAgICAgIGVsZW1fb2lkID0gX2Fy cmF5X3RvX2VsZW1fbWFwW3R5cGVfb2lkXQorICAgICAgICByZXR1cm4gX3BhcnNlX2FycmF5KHZh bHVlLCBlbGVtX29pZCkKKworICAgICMgVXNlIHJlZ2lzdGVyZWQgY29udmVydGVyIGlmIGF2YWls YWJsZQorICAgIGNvbnZlcnRlciA9IF90eXBlX2NvbnZlcnRlcnMuZ2V0KHR5cGVfb2lkKQorICAg IGlmIGNvbnZlcnRlcjoKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRlcih2YWx1ZSkKKworICAgICMg VW5rbm93biB0eXBlcyAtIHJldHVybiBhcyBzdHJpbmcKKyAgICByZXR1cm4gdmFsdWUKKworCitk ZWYgc2ltcGxpZnlfcXVlcnlfcmVzdWx0cyhyZXN1bHRzKSAtPiBBbnk6CisgICAgIiIiCisgICAg U2ltcGxpZnkgdGhlIHJlc3VsdHMgb2YgYSBxdWVyeSBzbyB0aGF0IHRoZSBjYWxsZXIgZG9lc24n dCBoYXZlIHRvIHVucGFjaworICAgIGxpc3RzIGFuZCB0dXBsZXMgb2YgbGVuZ3RoIDEuCisgICAg IiIiCisgICAgaWYgbGVuKHJlc3VsdHMpID09IDE6CisgICAgICAgIHJvdyA9IHJlc3VsdHNbMF0K KyAgICAgICAgaWYgbGVuKHJvdykgPT0gMToKKyAgICAgICAgICAgICMgSWYgdGhlcmUncyBvbmx5 IGEgc2luZ2xlIGNlbGwsIGp1c3QgcmV0dXJuIHRoZSB2YWx1ZQorICAgICAgICAgICAgcmV0dXJu IHJvd1swXQorICAgICAgICAjIElmIHRoZXJlJ3Mgb25seSBhIHNpbmdsZSByb3csIGp1c3QgcmV0 dXJuIHRoYXQgcm93CisgICAgICAgIHJldHVybiByb3cKKworICAgIGlmIGxlbihyZXN1bHRzKSAh PSAwIGFuZCBsZW4ocmVzdWx0c1swXSkgPT0gMToKKyAgICAgICAgIyBJZiB0aGVyZSdzIG9ubHkg YSBzaW5nbGUgY29sdW1uLCByZXR1cm4gYW4gYXJyYXkgb2YgdmFsdWVzCisgICAgICAgIHJldHVy biBbcm93WzBdIGZvciByb3cgaW4gcmVzdWx0c10KKworICAgICMgaWYgdGhlcmUgYXJlIG11bHRp cGxlIHJvd3MgYW5kIGNvbHVtbnMsIHJldHVybiB0aGUgcmVzdWx0cyBhcyBpcworICAgIHJldHVy biByZXN1bHRzCisKKworY2xhc3MgUEdyZXN1bHQoY29udGV4dGxpYi5BYnN0cmFjdENvbnRleHRN YW5hZ2VyKToKKyAgICAiIiJXcmFwcyBhIHJhdyBfUEdyZXN1bHRfcCB3aXRoIGEgbW9yZSBmcmll bmRseSBpbnRlcmZhY2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGliOiBjdHlwZXMu Q0RMTCwgcmVzOiBfUEdyZXN1bHRfcCk6CisgICAgICAgIHNlbGYuX2xpYiA9IGxpYgorICAgICAg ICBzZWxmLl9yZXMgPSByZXMKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjKToKKyAgICAg ICAgc2VsZi5fbGliLlBRY2xlYXIoc2VsZi5fcmVzKQorICAgICAgICBzZWxmLl9yZXMgPSBOb25l CisKKyAgICBkZWYgc3RhdHVzKHNlbGYpIC0+IEV4ZWNTdGF0dXM6CisgICAgICAgIHJldHVybiBF eGVjU3RhdHVzKHNlbGYuX2xpYi5QUXJlc3VsdFN0YXR1cyhzZWxmLl9yZXMpKQorCisgICAgZGVm IGVycm9yX21lc3NhZ2Uoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgdGhlIGVycm9yIG1lc3Nh Z2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVzdWx0LiIiIgorICAgICAgICBtc2cgPSBzZWxmLl9s aWIuUFFyZXN1bHRFcnJvck1lc3NhZ2Uoc2VsZi5fcmVzKQorICAgICAgICByZXR1cm4gbXNnLmRl Y29kZSgpIGlmIG1zZyBlbHNlICIiCisKKyAgICBkZWYgX2dldF9lcnJvcl9maWVsZChzZWxmLCBm aWVsZDogRGlhZ0ZpZWxkKSAtPiBPcHRpb25hbFtzdHJdOgorICAgICAgICAiIiJHZXQgYW4gZXJy b3IgZmllbGQgZnJvbSB0aGUgcmVzdWx0IHVzaW5nIFBRcmVzdWx0RXJyb3JGaWVsZC4iIiIKKyAg ICAgICAgdmFsID0gc2VsZi5fbGliLlBRcmVzdWx0RXJyb3JGaWVsZChzZWxmLl9yZXMsIGludChm aWVsZCkpCisgICAgICAgIHJldHVybiB2YWwuZGVjb2RlKCkgaWYgdmFsIGVsc2UgTm9uZQorCisg ICAgZGVmIHJhaXNlX2Vycm9yKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICIiIgorICAgICAgICBS YWlzZXMgYW4gYXBwcm9wcmlhdGUgTGlicHFFcnJvciBzdWJjbGFzcyBiYXNlZCBvbiB0aGUgZXJy b3IgZmllbGRzLgorICAgICAgICBFeHRyYWN0cyBTUUxTVEFURSBhbmQgb3RoZXIgZGlhZ25vc3Rp YyBpbmZvcm1hdGlvbiBmcm9tIHRoZSByZXN1bHQuCisgICAgICAgICIiIgorICAgICAgICBpZiBu b3Qgc2VsZi5fcmVzOgorICAgICAgICAgICAgcmFpc2UgTGlicHFFcnJvcigicXVlcnkgZmFpbGVk OiBvdXQgb2YgbWVtb3J5IG9yIGNvbm5lY3Rpb24gbG9zdCIpCisKKyAgICAgICAgc3Fsc3RhdGUg PSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLlNRTFNUQVRFKQorICAgICAgICBwcmlt YXJ5ID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5NRVNTQUdFX1BSSU1BUlkpCisg ICAgICAgIGRldGFpbCA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuTUVTU0FHRV9E RVRBSUwpCisgICAgICAgIGhpbnQgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLk1F U1NBR0VfSElOVCkKKyAgICAgICAgc2V2ZXJpdHkgPSBzZWxmLl9nZXRfZXJyb3JfZmllbGQoRGlh Z0ZpZWxkLlNFVkVSSVRZKQorICAgICAgICBzY2hlbWFfbmFtZSA9IHNlbGYuX2dldF9lcnJvcl9m aWVsZChEaWFnRmllbGQuU0NIRU1BX05BTUUpCisgICAgICAgIHRhYmxlX25hbWUgPSBzZWxmLl9n ZXRfZXJyb3JfZmllbGQoRGlhZ0ZpZWxkLlRBQkxFX05BTUUpCisgICAgICAgIGNvbHVtbl9uYW1l ID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5DT0xVTU5fTkFNRSkKKyAgICAgICAg ZGF0YXR5cGVfbmFtZSA9IHNlbGYuX2dldF9lcnJvcl9maWVsZChEaWFnRmllbGQuREFUQVRZUEVf TkFNRSkKKyAgICAgICAgY29uc3RyYWludF9uYW1lID0gc2VsZi5fZ2V0X2Vycm9yX2ZpZWxkKERp YWdGaWVsZC5DT05TVFJBSU5UX05BTUUpCisgICAgICAgIGNvbnRleHQgPSBzZWxmLl9nZXRfZXJy b3JfZmllbGQoRGlhZ0ZpZWxkLkNPTlRFWFQpCisKKyAgICAgICAgcG9zaXRpb25fc3RyID0gc2Vs Zi5fZ2V0X2Vycm9yX2ZpZWxkKERpYWdGaWVsZC5TVEFURU1FTlRfUE9TSVRJT04pCisgICAgICAg IHBvc2l0aW9uID0gaW50KHBvc2l0aW9uX3N0cikgaWYgcG9zaXRpb25fc3RyIGVsc2UgTm9uZQor CisgICAgICAgIHJhaXNlIG1ha2VfZXJyb3IoCisgICAgICAgICAgICBwcmltYXJ5IG9yIHNlbGYu ZXJyb3JfbWVzc2FnZSgpLAorICAgICAgICAgICAgc3Fsc3RhdGU9c3Fsc3RhdGUsCisgICAgICAg ICAgICBzZXZlcml0eT1zZXZlcml0eSwKKyAgICAgICAgICAgIHByaW1hcnk9cHJpbWFyeSwKKyAg ICAgICAgICAgIGRldGFpbD1kZXRhaWwsCisgICAgICAgICAgICBoaW50PWhpbnQsCisgICAgICAg ICAgICBzY2hlbWFfbmFtZT1zY2hlbWFfbmFtZSwKKyAgICAgICAgICAgIHRhYmxlX25hbWU9dGFi bGVfbmFtZSwKKyAgICAgICAgICAgIGNvbHVtbl9uYW1lPWNvbHVtbl9uYW1lLAorICAgICAgICAg ICAgZGF0YXR5cGVfbmFtZT1kYXRhdHlwZV9uYW1lLAorICAgICAgICAgICAgY29uc3RyYWludF9u YW1lPWNvbnN0cmFpbnRfbmFtZSwKKyAgICAgICAgICAgIHBvc2l0aW9uPXBvc2l0aW9uLAorICAg ICAgICAgICAgY29udGV4dD1jb250ZXh0LAorICAgICAgICApCisKKyAgICBkZWYgZmV0Y2hfYWxs KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRmV0Y2ggYWxsIHJvd3MgYW5kIGNvbnZlcnQg dG8gUHl0aG9uIHR5cGVzLgorICAgICAgICBSZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMsIHdpdGgg dmFsdWVzIGNvbnZlcnRlZCBiYXNlZCBvbiB0aGVpciBQb3N0Z3JlU1FMIHR5cGUuCisgICAgICAg ICIiIgorICAgICAgICBucm93cyA9IHNlbGYuX2xpYi5QUW50dXBsZXMoc2VsZi5fcmVzKQorICAg ICAgICBuY29scyA9IHNlbGYuX2xpYi5QUW5maWVsZHMoc2VsZi5fcmVzKQorCisgICAgICAgICMg R2V0IHR5cGUgT0lEcyBmb3IgZWFjaCBjb2x1bW4KKyAgICAgICAgdHlwZV9vaWRzID0gW3NlbGYu X2xpYi5QUWZ0eXBlKHNlbGYuX3JlcywgY29sKSBmb3IgY29sIGluIHJhbmdlKG5jb2xzKV0KKwor ICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHJvdyBpbiByYW5nZShucm93cyk6Cisg ICAgICAgICAgICByb3dfZGF0YSA9IFtdCisgICAgICAgICAgICBmb3IgY29sIGluIHJhbmdlKG5j b2xzKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9saWIuUFFnZXRpc251bGwoc2VsZi5fcmVz LCByb3csIGNvbCk6CisgICAgICAgICAgICAgICAgICAgIHJvd19kYXRhLmFwcGVuZChOb25lKQor ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5f bGliLlBRZ2V0dmFsdWUoc2VsZi5fcmVzLCByb3csIGNvbCkuZGVjb2RlKCkKKyAgICAgICAgICAg ICAgICAgICAgcm93X2RhdGEuYXBwZW5kKF9jb252ZXJ0X3BnX3ZhbHVlKHZhbHVlLCB0eXBlX29p ZHNbY29sXSkpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCh0dXBsZShyb3dfZGF0YSkpCisK KyAgICAgICAgcmV0dXJuIHJlc3VsdHMKKworCitjbGFzcyBQR2Nvbm4oY29udGV4dGxpYi5BYnN0 cmFjdENvbnRleHRNYW5hZ2VyKToKKyAgICAiIiIKKyAgICBXcmFwcyBhIHJhdyBfUEdjb25uX3Ag d2l0aCBhIG1vcmUgZnJpZW5kbHkgaW50ZXJmYWNlLiBUaGlzIGlzIGp1c3QgYQorICAgIHN0dWI7 IGl0J3MgZXhwZWN0ZWQgdG8gZ3Jvdy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAg ICAgICAgc2VsZiwKKyAgICAgICAgbGliOiBjdHlwZXMuQ0RMTCwKKyAgICAgICAgaGFuZGxlOiBf UEdjb25uX3AsCisgICAgICAgIHN0YWNrOiBjb250ZXh0bGliLkV4aXRTdGFjaywKKyAgICApOgor ICAgICAgICBzZWxmLl9saWIgPSBsaWIKKyAgICAgICAgc2VsZi5faGFuZGxlID0gaGFuZGxlCisg ICAgICAgIHNlbGYuX3N0YWNrID0gc3RhY2sKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhj KToKKyAgICAgICAgc2VsZi5fbGliLlBRZmluaXNoKHNlbGYuX2hhbmRsZSkKKyAgICAgICAgc2Vs Zi5faGFuZGxlID0gTm9uZQorCisgICAgZGVmIGV4ZWMoc2VsZiwgcXVlcnk6IHN0cik6CisgICAg ICAgICIiIgorICAgICAgICBFeGVjdXRlcyBhIHF1ZXJ5IHZpYSBQUWV4ZWMoKSBhbmQgcmV0dXJu cyBhIFBHcmVzdWx0LgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gc2VsZi5fbGliLlBRZXhl YyhzZWxmLl9oYW5kbGUsIHF1ZXJ5LmVuY29kZSgpKQorICAgICAgICByZXR1cm4gc2VsZi5fc3Rh Y2suZW50ZXJfY29udGV4dChQR3Jlc3VsdChzZWxmLl9saWIsIHJlcykpCisKKyAgICBkZWYgc3Fs KHNlbGYsIHF1ZXJ5OiBzdHIpOgorICAgICAgICAiIiIKKyAgICAgICAgRXhlY3V0ZXMgYSBxdWVy eSBhbmQgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiBpdCBmYWlscy4KKyAgICAgICAgUmV0dXJucyB0 aGUgcXVlcnkgcmVzdWx0cyB3aXRoIGF1dG9tYXRpYyB0eXBlIGNvbnZlcnNpb24gYW5kIHNpbXBs aWZpY2F0aW9uLgorICAgICAgICBGb3IgY29tbWFuZHMgdGhhdCBkb24ndCByZXR1cm4gZGF0YSAo SU5TRVJULCBVUERBVEUsIGV0Yy4pLCByZXR1cm5zIE5vbmUuCisKKyAgICAgICAgRXhhbXBsZXM6 CisgICAgICAgIC0gU0VMRUNUIDEgLT4gMQorICAgICAgICAtIFNFTEVDVCAxLCAyIC0+ICgxLCAy KQorICAgICAgICAtIFNFTEVDVCAqIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIC0+IFsxLCAy LCAzXQorICAgICAgICAtIFNFTEVDVCAqIEZST00gKFZBTFVFUyAoMSwgJ2EnKSwgKDIsICdiJykp IHQgLT4gWygxLCAnYScpLCAoMiwgJ2InKV0KKyAgICAgICAgLSBDUkVBVEUgVEFCTEUgLi4uIC0+ IE5vbmUKKyAgICAgICAgLSBJTlNFUlQgSU5UTyAuLi4gLT4gTm9uZQorICAgICAgICAiIiIKKyAg ICAgICAgcmVzID0gc2VsZi5leGVjKHF1ZXJ5KQorICAgICAgICBzdGF0dXMgPSByZXMuc3RhdHVz KCkKKworICAgICAgICBpZiBzdGF0dXMgPT0gRXhlY1N0YXR1cy5QR1JFU19GQVRBTF9FUlJPUjoK KyAgICAgICAgICAgIHJlcy5yYWlzZV9lcnJvcigpCisgICAgICAgIGVsaWYgc3RhdHVzID09IEV4 ZWNTdGF0dXMuUEdSRVNfQ09NTUFORF9PSzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAg ICAgIGVsaWYgc3RhdHVzID09IEV4ZWNTdGF0dXMuUEdSRVNfVFVQTEVTX09LOgorICAgICAgICAg ICAgcmVzdWx0cyA9IHJlcy5mZXRjaF9hbGwoKQorICAgICAgICAgICAgcmV0dXJuIHNpbXBsaWZ5 X3F1ZXJ5X3Jlc3VsdHMocmVzdWx0cykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcy5y YWlzZV9lcnJvcigpCisKKworZGVmIGNvbm5zdHIob3B0czogRGljdFtzdHIsIEFueV0pIC0+IHN0 cjoKKyAgICAiIiIKKyAgICBGbGF0dGVucyB0aGUgcHJvdmlkZWQgb3B0aW9ucyBpbnRvIGEgbGli cHEgY29ubmVjdGlvbiBzdHJpbmcuIFZhbHVlcworICAgIGFyZSBjb252ZXJ0ZWQgdG8gc3RyIGFu ZCBxdW90ZWQvZXNjYXBlZCBhcyBuZWNlc3NhcnkuCisgICAgIiIiCisgICAgc2V0dGluZ3MgPSBb XQorCisgICAgZm9yIGssIHYgaW4gb3B0cy5pdGVtcygpOgorICAgICAgICB2ID0gc3RyKHYpCisg ICAgICAgIGlmIG5vdCB2OgorICAgICAgICAgICAgdiA9ICInJyIKKyAgICAgICAgZWxzZToKKyAg ICAgICAgICAgIHYgPSB2LnJlcGxhY2UoIlxcIiwgIlxcXFwiKQorICAgICAgICAgICAgdiA9IHYu cmVwbGFjZSgiJyIsICJcXCciKQorCisgICAgICAgICAgICBpZiAiICIgaW4gdjoKKyAgICAgICAg ICAgICAgICB2ID0gZiIne3Z9JyIKKworICAgICAgICBzZXR0aW5ncy5hcHBlbmQoZiJ7a309e3Z9 IikKKworICAgIHJldHVybiAiICIuam9pbihzZXR0aW5ncykKKworCitkZWYgY29ubmVjdCgKKyAg ICBsaWJwcV9oYW5kbGU6IGN0eXBlcy5DRExMLAorICAgIHN0YWNrOiBjb250ZXh0bGliLkV4aXRT dGFjaywKKyAgICByZW1haW5pbmdfdGltZW91dF9mbjogQ2FsbGFibGVbW10sIGZsb2F0XSwKKyAg ICAqKm9wdHMsCispIC0+IFBHY29ubjoKKyAgICAiIiIKKyAgICBDb25uZWN0cyB0byBhIHNlcnZl ciwgdXNpbmcgdGhlIGdpdmVuIGNvbm5lY3Rpb24gb3B0aW9ucywgYW5kCisgICAgcmV0dXJucyBh IFBHY29ubiBvYmplY3Qgd3JhcHBpbmcgdGhlIGNvbm5lY3Rpb24gaGFuZGxlLiBBCisgICAgZmFp bHVyZSB3aWxsIHJhaXNlIExpYnBxRXJyb3IuCisKKyAgICBDb25uZWN0aW9ucyBob25vciBQR19U RVNUX1RJTUVPVVRfREVGQVVMVCB1bmxlc3MgY29ubmVjdF90aW1lb3V0IGlzCisgICAgZXhwbGlj aXRseSBvdmVycmlkZGVuIGluIG9wdHMuCisKKyAgICBBcmdzOgorICAgICAgICBsaWJwcV9oYW5k bGU6IGN0eXBlcy5DRExMIGhhbmRsZSB0byBsaWJwcSBsaWJyYXJ5CisgICAgICAgIHN0YWNrOiBF eGl0U3RhY2sgZm9yIG1hbmFnaW5nIGNvbm5lY3Rpb24gY2xlYW51cAorICAgICAgICByZW1haW5p bmdfdGltZW91dF9mbjogRnVuY3Rpb24gdGhhdCByZXR1cm5zIHJlbWFpbmluZyB0aW1lb3V0IGlu IHNlY29uZHMKKyAgICAgICAgKipvcHRzOiBDb25uZWN0aW9uIG9wdGlvbnMgKGhvc3QsIHBvcnQs IGRibmFtZSwgZXRjLikKKworICAgIFJldHVybnM6CisgICAgICAgIFBHY29ubjogQ29ubmVjdGVk IGRhdGFiYXNlIGNvbm5lY3Rpb24KKworICAgIFJhaXNlczoKKyAgICAgICAgTGlicHFFcnJvcjog SWYgY29ubmVjdGlvbiBmYWlscworICAgICIiIgorCisgICAgaWYgImNvbm5lY3RfdGltZW91dCIg bm90IGluIG9wdHM6CisgICAgICAgIHQgPSBpbnQocmVtYWluaW5nX3RpbWVvdXRfZm4oKSkKKyAg ICAgICAgb3B0c1siY29ubmVjdF90aW1lb3V0Il0gPSBtYXgodCwgMSkKKworICAgIGNvbm5fcCA9 IGxpYnBxX2hhbmRsZS5QUWNvbm5lY3RkYihjb25uc3RyKG9wdHMpLmVuY29kZSgpKQorCisgICAg IyBDaGVjayBjb25uZWN0aW9uIHN0YXR1cyBiZWZvcmUgYWRkaW5nIHRvIHN0YWNrCisgICAgaWYg bGlicHFfaGFuZGxlLlBRc3RhdHVzKGNvbm5fcCkgIT0gQ29ubmVjdGlvblN0YXR1cy5DT05ORUNU SU9OX09LOgorICAgICAgICBlcnJvcl9tc2cgPSBsaWJwcV9oYW5kbGUuUFFlcnJvck1lc3NhZ2Uo Y29ubl9wKS5kZWNvZGUoKQorICAgICAgICAjIE1hbnVhbGx5IGNsb3NlIHRoZSBmYWlsZWQgY29u bmVjdGlvbgorICAgICAgICBsaWJwcV9oYW5kbGUuUFFmaW5pc2goY29ubl9wKQorICAgICAgICBy YWlzZSBMaWJwcUVycm9yKGVycm9yX21zZykKKworICAgICMgQ29ubmVjdGlvbiBzdWNjZWVkZWQg LSBhZGQgdG8gc3RhY2sgZm9yIGNsZWFudXAKKyAgICBjb25uID0gc3RhY2suZW50ZXJfY29udGV4 dChQR2Nvbm4obGlicHFfaGFuZGxlLCBjb25uX3AsIHN0YWNrPXN0YWNrKSkKKyAgICByZXR1cm4g Y29ubgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19lcnJvcl9iYXNlLnB5IGIv c3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19lcnJvcl9iYXNlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi41YzcwYzA3NzE5MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90 ZXN0L3B5dGVzdC9saWJwcS9fZXJyb3JfYmFzZS5weQpAQCAtMCwwICsxLDc0IEBACisjIENvcHly aWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIiIi CitCYXNlIGV4Y2VwdGlvbiBjbGFzc2VzIGZvciBsaWJwcSBlcnJvcnMgYW5kIHdhcm5pbmdzLgor IiIiCisKK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCisKK2NsYXNzIExpYnBxRXhjZXB0 aW9uTWl4aW46CisgICAgIiIiTWl4aW4gcHJvdmlkaW5nIFBvc3RncmVTUUwgZXJyb3IgZmllbGQg YXR0cmlidXRlcy4iIiIKKworICAgIHNxbHN0YXRlOiBPcHRpb25hbFtzdHJdCisgICAgc2V2ZXJp dHk6IE9wdGlvbmFsW3N0cl0KKyAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdCisgICAgZGV0YWls OiBPcHRpb25hbFtzdHJdCisgICAgaGludDogT3B0aW9uYWxbc3RyXQorICAgIHNjaGVtYV9uYW1l OiBPcHRpb25hbFtzdHJdCisgICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIGNvbHVt bl9uYW1lOiBPcHRpb25hbFtzdHJdCisgICAgZGF0YXR5cGVfbmFtZTogT3B0aW9uYWxbc3RyXQor ICAgIGNvbnN0cmFpbnRfbmFtZTogT3B0aW9uYWxbc3RyXQorICAgIHBvc2l0aW9uOiBPcHRpb25h bFtpbnRdCisgICAgY29udGV4dDogT3B0aW9uYWxbc3RyXQorCisgICAgZGVmIF9faW5pdF9fKAor ICAgICAgICBzZWxmLAorICAgICAgICBtZXNzYWdlOiBzdHIsCisgICAgICAgICosCisgICAgICAg IHNxbHN0YXRlOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgc2V2ZXJpdHk6IE9wdGlv bmFsW3N0cl0gPSBOb25lLAorICAgICAgICBwcmltYXJ5OiBPcHRpb25hbFtzdHJdID0gTm9uZSwK KyAgICAgICAgZGV0YWlsOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgaGludDogT3B0 aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIHNjaGVtYV9uYW1lOiBPcHRpb25hbFtzdHJdID0g Tm9uZSwKKyAgICAgICAgdGFibGVfbmFtZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAg IGNvbHVtbl9uYW1lOiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgZGF0YXR5cGVfbmFt ZTogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgICAgIGNvbnN0cmFpbnRfbmFtZTogT3B0aW9u YWxbc3RyXSA9IE5vbmUsCisgICAgICAgIHBvc2l0aW9uOiBPcHRpb25hbFtpbnRdID0gTm9uZSwK KyAgICAgICAgY29udGV4dDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgKToKKyAgICAgICAg c3VwZXIoKS5fX2luaXRfXyhtZXNzYWdlKQorICAgICAgICBzZWxmLnNxbHN0YXRlID0gc3Fsc3Rh dGUKKyAgICAgICAgc2VsZi5zZXZlcml0eSA9IHNldmVyaXR5CisgICAgICAgIHNlbGYucHJpbWFy eSA9IHByaW1hcnkKKyAgICAgICAgc2VsZi5kZXRhaWwgPSBkZXRhaWwKKyAgICAgICAgc2VsZi5o aW50ID0gaGludAorICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gc2NoZW1hX25hbWUKKyAgICAg ICAgc2VsZi50YWJsZV9uYW1lID0gdGFibGVfbmFtZQorICAgICAgICBzZWxmLmNvbHVtbl9uYW1l ID0gY29sdW1uX25hbWUKKyAgICAgICAgc2VsZi5kYXRhdHlwZV9uYW1lID0gZGF0YXR5cGVfbmFt ZQorICAgICAgICBzZWxmLmNvbnN0cmFpbnRfbmFtZSA9IGNvbnN0cmFpbnRfbmFtZQorICAgICAg ICBzZWxmLnBvc2l0aW9uID0gcG9zaXRpb24KKyAgICAgICAgc2VsZi5jb250ZXh0ID0gY29udGV4 dAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNxbHN0YXRlX2NsYXNzKHNlbGYpIC0+IE9wdGlv bmFsW3N0cl06CisgICAgICAgICIiIlJldHVybnMgdGhlIDItY2hhcmFjdGVyIFNRTFNUQVRFIGNs YXNzLiIiIgorICAgICAgICBpZiBzZWxmLnNxbHN0YXRlIGFuZCBsZW4oc2VsZi5zcWxzdGF0ZSkg Pj0gMjoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnNxbHN0YXRlWzoyXQorICAgICAgICByZXR1 cm4gTm9uZQorCisKK2NsYXNzIExpYnBxRXJyb3IoTGlicHFFeGNlcHRpb25NaXhpbiwgUnVudGlt ZUVycm9yKToKKyAgICAiIiJCYXNlIGV4Y2VwdGlvbiBmb3IgbGlicHEgZXJyb3JzLiIiIgorCisg ICAgcGFzcworCisKK2NsYXNzIExpYnBxV2FybmluZyhMaWJwcUV4Y2VwdGlvbk1peGluLCBVc2Vy V2FybmluZyk6CisgICAgIiIiQmFzZSBleGNlcHRpb24gZm9yIGxpYnBxIHdhcm5pbmdzLiIiIgor CisgICAgcGFzcwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19nZW5lcmF0ZWRf ZXJyb3JzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19nZW5lcmF0ZWRfZXJyb3JzLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5mNTBmMzE0MzU4MAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9fZ2VuZXJhdGVkX2Vycm9ycy5weQpA QCAtMCwwICsxLDIxMTYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2Jh bCBEZXZlbG9wbWVudCBHcm91cAorIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHNyYy90b29s cy9nZW5lcmF0ZV9weXRlc3RfbGlicHFfZXJyb3JzLnB5IC0gZG8gbm90IGVkaXQgZGlyZWN0bHku CisKKyIiIgorR2VuZXJhdGVkIFBvc3RncmVTUUwgZXJyb3IgY2xhc3NlcyBtYXBwZWQgZnJvbSBT UUxTVEFURSBjb2Rlcy4KKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorCitmcm9tIC5f ZXJyb3JfYmFzZSBpbXBvcnQgTGlicHFFcnJvciwgTGlicHFXYXJuaW5nCisKKworY2xhc3MgU3Vj Y2Vzc2Z1bENvbXBsZXRpb24oTGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgMDAwMDAgLSBz dWNjZXNzZnVsIGNvbXBsZXRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgV2FybmluZyhM aWJwcVdhcm5pbmcpOgorICAgICIiIlNRTFNUQVRFIDAxMDAwIC0gd2FybmluZy4iIiIKKworICAg IHBhc3MKKworCitjbGFzcyBEeW5hbWljUmVzdWx0U2V0c1JldHVybmVkV2FybmluZyhXYXJuaW5n KToKKyAgICAiIiJTUUxTVEFURSAwMTAwQyAtIGR5bmFtaWMgcmVzdWx0IHNldHMgcmV0dXJuZWQu IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW1wbGljaXRaZXJvQml0UGFkZGluZ1dhcm5pbmco V2FybmluZyk6CisgICAgIiIiU1FMU1RBVEUgMDEwMDggLSBpbXBsaWNpdCB6ZXJvIGJpdCBwYWRk aW5nLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIE51bGxWYWx1ZUVsaW1pbmF0ZWRJblNldEZ1 bmN0aW9uV2FybmluZyhXYXJuaW5nKToKKyAgICAiIiJTUUxTVEFURSAwMTAwMyAtIG51bGwgdmFs dWUgZWxpbWluYXRlZCBpbiBzZXQgZnVuY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg UHJpdmlsZWdlTm90R3JhbnRlZFdhcm5pbmcoV2FybmluZyk6CisgICAgIiIiU1FMU1RBVEUgMDEw MDcgLSBwcml2aWxlZ2Ugbm90IGdyYW50ZWQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgUHJp dmlsZWdlTm90UmV2b2tlZFdhcm5pbmcoV2FybmluZyk6CisgICAgIiIiU1FMU1RBVEUgMDEwMDYg LSBwcml2aWxlZ2Ugbm90IHJldm9rZWQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU3RyaW5n RGF0YVJpZ2h0VHJ1bmNhdGlvbldhcm5pbmcoV2FybmluZyk6CisgICAgIiIiU1FMU1RBVEUgMDEw MDQgLSBzdHJpbmcgZGF0YSByaWdodCB0cnVuY2F0aW9uLiIiIgorCisgICAgcGFzcworCisKK2Ns YXNzIERlcHJlY2F0ZWRGZWF0dXJlV2FybmluZyhXYXJuaW5nKToKKyAgICAiIiJTUUxTVEFURSAw MVAwMSAtIGRlcHJlY2F0ZWQgZmVhdHVyZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBOb0Rh dGEoTGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgMDIwMDAgLSBubyBkYXRhLiIiIgorCisg ICAgcGFzcworCisKK2NsYXNzIE5vQWRkaXRpb25hbER5bmFtaWNSZXN1bHRTZXRzUmV0dXJuZWQo Tm9EYXRhKToKKyAgICAiIiJTUUxTVEFURSAwMjAwMSAtIG5vIGFkZGl0aW9uYWwgZHluYW1pYyBy ZXN1bHQgc2V0cyByZXR1cm5lZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTUUxTdGF0ZW1l bnROb3RZZXRDb21wbGV0ZShMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAwMzAwMCAtIHNx bCBzdGF0ZW1lbnQgbm90IHlldCBjb21wbGV0ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBD b25uZWN0aW9uRXhjZXB0aW9uKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDA4MDAwIC0g Y29ubmVjdGlvbiBleGNlcHRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgQ29ubmVjdGlv bkRvZXNOb3RFeGlzdChDb25uZWN0aW9uRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAwODAw MyAtIGNvbm5lY3Rpb24gZG9lcyBub3QgZXhpc3QuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg Q29ubmVjdGlvbkZhaWx1cmUoQ29ubmVjdGlvbkV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUg MDgwMDYgLSBjb25uZWN0aW9uIGZhaWx1cmUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU1FM Q2xpZW50VW5hYmxlVG9Fc3RhYmxpc2hTUUxDb25uZWN0aW9uKENvbm5lY3Rpb25FeGNlcHRpb24p OgorICAgICIiIlNRTFNUQVRFIDA4MDAxIC0gc3FsY2xpZW50IHVuYWJsZSB0byBlc3RhYmxpc2gg c3FsY29ubmVjdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTUUxTZXJ2ZXJSZWplY3Rl ZEVzdGFibGlzaG1lbnRPZlNRTENvbm5lY3Rpb24oQ29ubmVjdGlvbkV4Y2VwdGlvbik6CisgICAg IiIiU1FMU1RBVEUgMDgwMDQgLSBzcWxzZXJ2ZXIgcmVqZWN0ZWQgZXN0YWJsaXNobWVudCBvZiBz cWxjb25uZWN0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFRyYW5zYWN0aW9uUmVzb2x1 dGlvblVua25vd24oQ29ubmVjdGlvbkV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMDgwMDcg LSB0cmFuc2FjdGlvbiByZXNvbHV0aW9uIHVua25vd24uIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgUHJvdG9jb2xWaW9sYXRpb24oQ29ubmVjdGlvbkV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RB VEUgMDhQMDEgLSBwcm90b2NvbCB2aW9sYXRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg VHJpZ2dlcmVkQWN0aW9uRXhjZXB0aW9uKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDA5 MDAwIC0gdHJpZ2dlcmVkIGFjdGlvbiBleGNlcHRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgRmVhdHVyZU5vdFN1cHBvcnRlZChMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAwQTAw MCAtIGZlYXR1cmUgbm90IHN1cHBvcnRlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZh bGlkVHJhbnNhY3Rpb25Jbml0aWF0aW9uKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDBC MDAwIC0gaW52YWxpZCB0cmFuc2FjdGlvbiBpbml0aWF0aW9uLiIiIgorCisgICAgcGFzcworCisK K2NsYXNzIExvY2F0b3JFeGNlcHRpb24oTGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgMEYw MDAgLSBsb2NhdG9yIGV4Y2VwdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlk TG9jYXRvclNwZWNpZmljYXRpb24oTG9jYXRvckV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUg MEYwMDEgLSBpbnZhbGlkIGxvY2F0b3Igc3BlY2lmaWNhdGlvbi4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBJbnZhbGlkR3JhbnRvcihMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAwTDAw MCAtIGludmFsaWQgZ3JhbnRvci4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkR3Jh bnRPcGVyYXRpb24oSW52YWxpZEdyYW50b3IpOgorICAgICIiIlNRTFNUQVRFIDBMUDAxIC0gaW52 YWxpZCBncmFudCBvcGVyYXRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZFJv bGVTcGVjaWZpY2F0aW9uKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDBQMDAwIC0gaW52 YWxpZCByb2xlIHNwZWNpZmljYXRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRGlhZ25v c3RpY3NFeGNlcHRpb24oTGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgMFowMDAgLSBkaWFn bm9zdGljcyBleGNlcHRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU3RhY2tlZERpYWdu b3N0aWNzQWNjZXNzZWRXaXRob3V0QWN0aXZlSGFuZGxlcihEaWFnbm9zdGljc0V4Y2VwdGlvbik6 CisgICAgIiIiU1FMU1RBVEUgMFowMDIgLSBzdGFja2VkIGRpYWdub3N0aWNzIGFjY2Vzc2VkIHdp dGhvdXQgYWN0aXZlIGhhbmRsZXIuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZEFy Z3VtZW50Rm9yWHF1ZXJ5KExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDEwNjA4IC0gaW52 YWxpZCBhcmd1bWVudCBmb3IgeHF1ZXJ5LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIENhc2VO b3RGb3VuZChMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAyMDAwMCAtIGNhc2Ugbm90IGZv dW5kLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIENhcmRpbmFsaXR5VmlvbGF0aW9uKExpYnBx RXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDIxMDAwIC0gY2FyZGluYWxpdHkgdmlvbGF0aW9uLiIi IgorCisgICAgcGFzcworCisKK2NsYXNzIERhdGFFeGNlcHRpb24oTGlicHFFcnJvcik6CisgICAg IiIiU1FMU1RBVEUgMjIwMDAgLSBkYXRhIGV4Y2VwdGlvbi4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBBcnJheVN1YnNjcmlwdEVycm9yKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRF IDIyMDJFIC0gYXJyYXkgc3Vic2NyaXB0IGVycm9yLiIiIgorCisgICAgcGFzcworCisKK2NsYXNz IENoYXJhY3Rlck5vdEluUmVwZXJ0b2lyZShEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFU RSAyMjAyMSAtIGNoYXJhY3RlciBub3QgaW4gcmVwZXJ0b2lyZS4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBEYXRldGltZUZpZWxkT3ZlcmZsb3coRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FM U1RBVEUgMjIwMDggLSBkYXRldGltZSBmaWVsZCBvdmVyZmxvdy4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBEaXZpc2lvbkJ5WmVybyhEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAy MjAxMiAtIGRpdmlzaW9uIGJ5IHplcm8uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRXJyb3JJ bkFzc2lnbm1lbnQoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMDUgLSBlcnJv ciBpbiBhc3NpZ25tZW50LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEVzY2FwZUNoYXJhY3Rl ckNvbmZsaWN0KERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDBCIC0gZXNjYXBl IGNoYXJhY3RlciBjb25mbGljdC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbmRpY2F0b3JP dmVyZmxvdyhEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAyMiAtIGluZGljYXRv ciBvdmVyZmxvdy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnRlcnZhbEZpZWxkT3ZlcmZs b3coRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMTUgLSBpbnRlcnZhbCBmaWVs ZCBvdmVyZmxvdy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkQXJndW1lbnRGb3JM b2dhcml0aG0oRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMUUgLSBpbnZhbGlk IGFyZ3VtZW50IGZvciBsb2dhcml0aG0uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxp ZEFyZ3VtZW50Rm9yTnRpbGVGdW5jdGlvbihEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFU RSAyMjAxNCAtIGludmFsaWQgYXJndW1lbnQgZm9yIG50aWxlIGZ1bmN0aW9uLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIEludmFsaWRBcmd1bWVudEZvck50aFZhbHVlRnVuY3Rpb24oRGF0YUV4 Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMTYgLSBpbnZhbGlkIGFyZ3VtZW50IGZvciBu dGggdmFsdWUgZnVuY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZEFyZ3Vt ZW50Rm9yUG93ZXJGdW5jdGlvbihEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAx RiAtIGludmFsaWQgYXJndW1lbnQgZm9yIHBvd2VyIGZ1bmN0aW9uLiIiIgorCisgICAgcGFzcwor CisKK2NsYXNzIEludmFsaWRBcmd1bWVudEZvcldpZHRoQnVja2V0RnVuY3Rpb24oRGF0YUV4Y2Vw dGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMUcgLSBpbnZhbGlkIGFyZ3VtZW50IGZvciB3aWR0 aCBidWNrZXQgZnVuY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZENoYXJh Y3RlclZhbHVlRm9yQ2FzdChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAxOCAt IGludmFsaWQgY2hhcmFjdGVyIHZhbHVlIGZvciBjYXN0LiIiIgorCisgICAgcGFzcworCisKK2Ns YXNzIEludmFsaWREYXRldGltZUZvcm1hdChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFU RSAyMjAwNyAtIGludmFsaWQgZGF0ZXRpbWUgZm9ybWF0LiIiIgorCisgICAgcGFzcworCisKK2Ns YXNzIEludmFsaWRFc2NhcGVDaGFyYWN0ZXIoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RB VEUgMjIwMTkgLSBpbnZhbGlkIGVzY2FwZSBjaGFyYWN0ZXIuIiIiCisKKyAgICBwYXNzCisKKwor Y2xhc3MgSW52YWxpZEVzY2FwZU9jdGV0KERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRF IDIyMDBEIC0gaW52YWxpZCBlc2NhcGUgb2N0ZXQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg SW52YWxpZEVzY2FwZVNlcXVlbmNlKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIy MDI1IC0gaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg Tm9uc3RhbmRhcmRVc2VPZkVzY2FwZUNoYXJhY3RlcihEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJT UUxTVEFURSAyMlAwNiAtIG5vbnN0YW5kYXJkIHVzZSBvZiBlc2NhcGUgY2hhcmFjdGVyLiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRJbmRpY2F0b3JQYXJhbWV0ZXJWYWx1ZShEYXRh RXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAxMCAtIGludmFsaWQgaW5kaWNhdG9yIHBh cmFtZXRlciB2YWx1ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkUGFyYW1ldGVy VmFsdWUoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMjMgLSBpbnZhbGlkIHBh cmFtZXRlciB2YWx1ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkUHJlY2VkaW5n T3JGb2xsb3dpbmdTaXplKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDEzIC0g aW52YWxpZCBwcmVjZWRpbmcgb3IgZm9sbG93aW5nIHNpemUuIiIiCisKKyAgICBwYXNzCisKKwor Y2xhc3MgSW52YWxpZFJlZ3VsYXJFeHByZXNzaW9uKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNR TFNUQVRFIDIyMDFCIC0gaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb24uIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgSW52YWxpZFJvd0NvdW50SW5MaW1pdENsYXVzZShEYXRhRXhjZXB0aW9uKToK KyAgICAiIiJTUUxTVEFURSAyMjAxVyAtIGludmFsaWQgcm93IGNvdW50IGluIGxpbWl0IGNsYXVz ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkUm93Q291bnRJblJlc3VsdE9mZnNl dENsYXVzZShEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAxWCAtIGludmFsaWQg cm93IGNvdW50IGluIHJlc3VsdCBvZmZzZXQgY2xhdXNlLiIiIgorCisgICAgcGFzcworCisKK2Ns YXNzIEludmFsaWRUYWJsZXNhbXBsZUFyZ3VtZW50KERhdGFFeGNlcHRpb24pOgorICAgICIiIlNR TFNUQVRFIDIyMDJIIC0gaW52YWxpZCB0YWJsZXNhbXBsZSBhcmd1bWVudC4iIiIKKworICAgIHBh c3MKKworCitjbGFzcyBJbnZhbGlkVGFibGVzYW1wbGVSZXBlYXQoRGF0YUV4Y2VwdGlvbik6Cisg ICAgIiIiU1FMU1RBVEUgMjIwMkcgLSBpbnZhbGlkIHRhYmxlc2FtcGxlIHJlcGVhdC4iIiIKKwor ICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkVGltZVpvbmVEaXNwbGFjZW1lbnRWYWx1ZShEYXRh RXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAwOSAtIGludmFsaWQgdGltZSB6b25lIGRp c3BsYWNlbWVudCB2YWx1ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkVXNlT2ZF c2NhcGVDaGFyYWN0ZXIoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMEMgLSBp bnZhbGlkIHVzZSBvZiBlc2NhcGUgY2hhcmFjdGVyLiIiIgorCisgICAgcGFzcworCisKK2NsYXNz IE1vc3RTcGVjaWZpY1R5cGVNaXNtYXRjaChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFU RSAyMjAwRyAtIG1vc3Qgc3BlY2lmaWMgdHlwZSBtaXNtYXRjaC4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBOdWxsVmFsdWVOb3RBbGxvd2VkKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNU QVRFIDIyMDA0IC0gbnVsbCB2YWx1ZSBub3QgYWxsb3dlZC4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBOdWxsVmFsdWVOb0luZGljYXRvclBhcmFtZXRlcihEYXRhRXhjZXB0aW9uKToKKyAgICAi IiJTUUxTVEFURSAyMjAwMiAtIG51bGwgdmFsdWUgbm8gaW5kaWNhdG9yIHBhcmFtZXRlci4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBOdW1lcmljVmFsdWVPdXRPZlJhbmdlKERhdGFFeGNlcHRp b24pOgorICAgICIiIlNRTFNUQVRFIDIyMDAzIC0gbnVtZXJpYyB2YWx1ZSBvdXQgb2YgcmFuZ2Uu IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU2VxdWVuY2VHZW5lcmF0b3JMaW1pdEV4Y2VlZGVk KERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDBIIC0gc2VxdWVuY2UgZ2VuZXJh dG9yIGxpbWl0IGV4Y2VlZGVkLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFN0cmluZ0RhdGFM ZW5ndGhNaXNtYXRjaChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAyNiAtIHN0 cmluZyBkYXRhIGxlbmd0aCBtaXNtYXRjaC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTdHJp bmdEYXRhUmlnaHRUcnVuY2F0aW9uKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIy MDAxIC0gc3RyaW5nIGRhdGEgcmlnaHQgdHJ1bmNhdGlvbi4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBTdWJzdHJpbmdFcnJvcihEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAx MSAtIHN1YnN0cmluZyBlcnJvci4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBUcmltRXJyb3Io RGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMjcgLSB0cmltIGVycm9yLiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIFVudGVybWluYXRlZENTdHJpbmcoRGF0YUV4Y2VwdGlvbik6 CisgICAgIiIiU1FMU1RBVEUgMjIwMjQgLSB1bnRlcm1pbmF0ZWQgYyBzdHJpbmcuIiIiCisKKyAg ICBwYXNzCisKKworY2xhc3MgWmVyb0xlbmd0aENoYXJhY3RlclN0cmluZyhEYXRhRXhjZXB0aW9u KToKKyAgICAiIiJTUUxTVEFURSAyMjAwRiAtIHplcm8gbGVuZ3RoIGNoYXJhY3RlciBzdHJpbmcu IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRmxvYXRpbmdQb2ludEV4Y2VwdGlvbihEYXRhRXhj ZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMlAwMSAtIGZsb2F0aW5nIHBvaW50IGV4Y2VwdGlv bi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkVGV4dFJlcHJlc2VudGF0aW9uKERh dGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyUDAyIC0gaW52YWxpZCB0ZXh0IHJlcHJl c2VudGF0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRCaW5hcnlSZXByZXNl bnRhdGlvbihEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMlAwMyAtIGludmFsaWQg YmluYXJ5IHJlcHJlc2VudGF0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEJhZENvcHlG aWxlRm9ybWF0KERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyUDA0IC0gYmFkIGNv cHkgZmlsZSBmb3JtYXQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW50cmFuc2xhdGFibGVD aGFyYWN0ZXIoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjJQMDUgLSB1bnRyYW5z bGF0YWJsZSBjaGFyYWN0ZXIuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgTm90QW5YbWxEb2N1 bWVudChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAwTCAtIG5vdCBhbiB4bWwg ZG9jdW1lbnQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZFhtbERvY3VtZW50KERh dGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDBNIC0gaW52YWxpZCB4bWwgZG9jdW1l bnQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZFhtbENvbnRlbnQoRGF0YUV4Y2Vw dGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwME4gLSBpbnZhbGlkIHhtbCBjb250ZW50LiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRYbWxDb21tZW50KERhdGFFeGNlcHRpb24pOgor ICAgICIiIlNRTFNUQVRFIDIyMDBTIC0gaW52YWxpZCB4bWwgY29tbWVudC4iIiIKKworICAgIHBh c3MKKworCitjbGFzcyBJbnZhbGlkWG1sUHJvY2Vzc2luZ0luc3RydWN0aW9uKERhdGFFeGNlcHRp b24pOgorICAgICIiIlNRTFNUQVRFIDIyMDBUIC0gaW52YWxpZCB4bWwgcHJvY2Vzc2luZyBpbnN0 cnVjdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVKc29uT2JqZWN0S2V5 VmFsdWUoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMzAgLSBkdXBsaWNhdGUg anNvbiBvYmplY3Qga2V5IHZhbHVlLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRB cmd1bWVudEZvclNRTEpzb25EYXRldGltZUZ1bmN0aW9uKERhdGFFeGNlcHRpb24pOgorICAgICIi IlNRTFNUQVRFIDIyMDMxIC0gaW52YWxpZCBhcmd1bWVudCBmb3Igc3FsIGpzb24gZGF0ZXRpbWUg ZnVuY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZEpzb25UZXh0KERhdGFF eGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDMyIC0gaW52YWxpZCBqc29uIHRleHQuIiIi CisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZFNRTEpzb25TdWJzY3JpcHQoRGF0YUV4Y2Vw dGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMzMgLSBpbnZhbGlkIHNxbCBqc29uIHN1YnNjcmlw dC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBNb3JlVGhhbk9uZVNRTEpzb25JdGVtKERhdGFF eGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDM0IC0gbW9yZSB0aGFuIG9uZSBzcWwganNv biBpdGVtLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIE5vU1FMSnNvbkl0ZW0oRGF0YUV4Y2Vw dGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMzUgLSBubyBzcWwganNvbiBpdGVtLiIiIgorCisg ICAgcGFzcworCisKK2NsYXNzIE5vbk51bWVyaWNTUUxKc29uSXRlbShEYXRhRXhjZXB0aW9uKToK KyAgICAiIiJTUUxTVEFURSAyMjAzNiAtIG5vbiBudW1lcmljIHNxbCBqc29uIGl0ZW0uIiIiCisK KyAgICBwYXNzCisKKworY2xhc3MgTm9uVW5pcXVlS2V5c0luQUpzb25PYmplY3QoRGF0YUV4Y2Vw dGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMzcgLSBub24gdW5pcXVlIGtleXMgaW4gYSBqc29u IG9iamVjdC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTaW5nbGV0b25TUUxKc29uSXRlbVJl cXVpcmVkKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDM4IC0gc2luZ2xldG9u IHNxbCBqc29uIGl0ZW0gcmVxdWlyZWQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU1FMSnNv bkFycmF5Tm90Rm91bmQoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwMzkgLSBz cWwganNvbiBhcnJheSBub3QgZm91bmQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU1FMSnNv bk1lbWJlck5vdEZvdW5kKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDIyMDNBIC0g c3FsIGpzb24gbWVtYmVyIG5vdCBmb3VuZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTUUxK c29uTnVtYmVyTm90Rm91bmQoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjIwM0Ig LSBzcWwganNvbiBudW1iZXIgbm90IGZvdW5kLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFNR TEpzb25PYmplY3ROb3RGb3VuZChEYXRhRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAz QyAtIHNxbCBqc29uIG9iamVjdCBub3QgZm91bmQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg VG9vTWFueUpzb25BcnJheUVsZW1lbnRzKERhdGFFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRF IDIyMDNEIC0gdG9vIG1hbnkganNvbiBhcnJheSBlbGVtZW50cy4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBUb29NYW55SnNvbk9iamVjdE1lbWJlcnMoRGF0YUV4Y2VwdGlvbik6CisgICAgIiIi U1FMU1RBVEUgMjIwM0UgLSB0b28gbWFueSBqc29uIG9iamVjdCBtZW1iZXJzLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIFNRTEpzb25TY2FsYXJSZXF1aXJlZChEYXRhRXhjZXB0aW9uKToKKyAg ICAiIiJTUUxTVEFURSAyMjAzRiAtIHNxbCBqc29uIHNjYWxhciByZXF1aXJlZC4iIiIKKworICAg IHBhc3MKKworCitjbGFzcyBTUUxKc29uSXRlbUNhbm5vdEJlQ2FzdFRvVGFyZ2V0VHlwZShEYXRh RXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMjAzRyAtIHNxbCBqc29uIGl0ZW0gY2Fubm90 IGJlIGNhc3QgdG8gdGFyZ2V0IHR5cGUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW50ZWdy aXR5Q29uc3RyYWludFZpb2xhdGlvbihMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAyMzAw MCAtIGludGVncml0eSBjb25zdHJhaW50IHZpb2xhdGlvbi4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBSZXN0cmljdFZpb2xhdGlvbihJbnRlZ3JpdHlDb25zdHJhaW50VmlvbGF0aW9uKToKKyAg ICAiIiJTUUxTVEFURSAyMzAwMSAtIHJlc3RyaWN0IHZpb2xhdGlvbi4iIiIKKworICAgIHBhc3MK KworCitjbGFzcyBOb3ROdWxsVmlvbGF0aW9uKEludGVncml0eUNvbnN0cmFpbnRWaW9sYXRpb24p OgorICAgICIiIlNRTFNUQVRFIDIzNTAyIC0gbm90IG51bGwgdmlvbGF0aW9uLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIEZvcmVpZ25LZXlWaW9sYXRpb24oSW50ZWdyaXR5Q29uc3RyYWludFZp b2xhdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjM1MDMgLSBmb3JlaWduIGtleSB2aW9sYXRpb24u IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW5pcXVlVmlvbGF0aW9uKEludGVncml0eUNvbnN0 cmFpbnRWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDIzNTA1IC0gdW5pcXVlIHZpb2xhdGlv bi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBDaGVja1Zpb2xhdGlvbihJbnRlZ3JpdHlDb25z dHJhaW50VmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSAyMzUxNCAtIGNoZWNrIHZpb2xhdGlv bi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBFeGNsdXNpb25WaW9sYXRpb24oSW50ZWdyaXR5 Q29uc3RyYWludFZpb2xhdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMjNQMDEgLSBleGNsdXNpb24g dmlvbGF0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRDdXJzb3JTdGF0ZShM aWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAyNDAwMCAtIGludmFsaWQgY3Vyc29yIHN0YXRl LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRUcmFuc2FjdGlvblN0YXRlKExpYnBx RXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDI1MDAwIC0gaW52YWxpZCB0cmFuc2FjdGlvbiBzdGF0 ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBBY3RpdmVTUUxUcmFuc2FjdGlvbihJbnZhbGlk VHJhbnNhY3Rpb25TdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgMjUwMDEgLSBhY3RpdmUgc3FsIHRy YW5zYWN0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEJyYW5jaFRyYW5zYWN0aW9uQWxy ZWFkeUFjdGl2ZShJbnZhbGlkVHJhbnNhY3Rpb25TdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgMjUw MDIgLSBicmFuY2ggdHJhbnNhY3Rpb24gYWxyZWFkeSBhY3RpdmUuIiIiCisKKyAgICBwYXNzCisK KworY2xhc3MgSGVsZEN1cnNvclJlcXVpcmVzU2FtZUlzb2xhdGlvbkxldmVsKEludmFsaWRUcmFu c2FjdGlvblN0YXRlKToKKyAgICAiIiJTUUxTVEFURSAyNTAwOCAtIGhlbGQgY3Vyc29yIHJlcXVp cmVzIHNhbWUgaXNvbGF0aW9uIGxldmVsLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEluYXBw cm9wcmlhdGVBY2Nlc3NNb2RlRm9yQnJhbmNoVHJhbnNhY3Rpb24oSW52YWxpZFRyYW5zYWN0aW9u U3RhdGUpOgorICAgICIiIlNRTFNUQVRFIDI1MDAzIC0gaW5hcHByb3ByaWF0ZSBhY2Nlc3MgbW9k ZSBmb3IgYnJhbmNoIHRyYW5zYWN0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEluYXBw cm9wcmlhdGVJc29sYXRpb25MZXZlbEZvckJyYW5jaFRyYW5zYWN0aW9uKEludmFsaWRUcmFuc2Fj dGlvblN0YXRlKToKKyAgICAiIiJTUUxTVEFURSAyNTAwNCAtIGluYXBwcm9wcmlhdGUgaXNvbGF0 aW9uIGxldmVsIGZvciBicmFuY2ggdHJhbnNhY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgTm9BY3RpdmVTUUxUcmFuc2FjdGlvbkZvckJyYW5jaFRyYW5zYWN0aW9uKEludmFsaWRUcmFu c2FjdGlvblN0YXRlKToKKyAgICAiIiJTUUxTVEFURSAyNTAwNSAtIG5vIGFjdGl2ZSBzcWwgdHJh bnNhY3Rpb24gZm9yIGJyYW5jaCB0cmFuc2FjdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFz cyBSZWFkT25seVNRTFRyYW5zYWN0aW9uKEludmFsaWRUcmFuc2FjdGlvblN0YXRlKToKKyAgICAi IiJTUUxTVEFURSAyNTAwNiAtIHJlYWQgb25seSBzcWwgdHJhbnNhY3Rpb24uIiIiCisKKyAgICBw YXNzCisKKworY2xhc3MgU2NoZW1hQW5kRGF0YVN0YXRlbWVudE1peGluZ05vdFN1cHBvcnRlZChJ bnZhbGlkVHJhbnNhY3Rpb25TdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgMjUwMDcgLSBzY2hlbWEg YW5kIGRhdGEgc3RhdGVtZW50IG1peGluZyBub3Qgc3VwcG9ydGVkLiIiIgorCisgICAgcGFzcwor CisKK2NsYXNzIE5vQWN0aXZlU1FMVHJhbnNhY3Rpb24oSW52YWxpZFRyYW5zYWN0aW9uU3RhdGUp OgorICAgICIiIlNRTFNUQVRFIDI1UDAxIC0gbm8gYWN0aXZlIHNxbCB0cmFuc2FjdGlvbi4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBJbkZhaWxlZFNRTFRyYW5zYWN0aW9uKEludmFsaWRUcmFu c2FjdGlvblN0YXRlKToKKyAgICAiIiJTUUxTVEFURSAyNVAwMiAtIGluIGZhaWxlZCBzcWwgdHJh bnNhY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSWRsZUluVHJhbnNhY3Rpb25TZXNz aW9uVGltZW91dChJbnZhbGlkVHJhbnNhY3Rpb25TdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgMjVQ MDMgLSBpZGxlIGluIHRyYW5zYWN0aW9uIHNlc3Npb24gdGltZW91dC4iIiIKKworICAgIHBhc3MK KworCitjbGFzcyBUcmFuc2FjdGlvblRpbWVvdXQoSW52YWxpZFRyYW5zYWN0aW9uU3RhdGUpOgor ICAgICIiIlNRTFNUQVRFIDI1UDA0IC0gdHJhbnNhY3Rpb24gdGltZW91dC4iIiIKKworICAgIHBh c3MKKworCitjbGFzcyBJbnZhbGlkU1FMU3RhdGVtZW50TmFtZShMaWJwcUVycm9yKToKKyAgICAi IiJTUUxTVEFURSAyNjAwMCAtIGludmFsaWQgc3FsIHN0YXRlbWVudCBuYW1lLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIFRyaWdnZXJlZERhdGFDaGFuZ2VWaW9sYXRpb24oTGlicHFFcnJvcik6 CisgICAgIiIiU1FMU1RBVEUgMjcwMDAgLSB0cmlnZ2VyZWQgZGF0YSBjaGFuZ2UgdmlvbGF0aW9u LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRBdXRob3JpemF0aW9uU3BlY2lmaWNh dGlvbihMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAyODAwMCAtIGludmFsaWQgYXV0aG9y aXphdGlvbiBzcGVjaWZpY2F0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRQ YXNzd29yZChJbnZhbGlkQXV0aG9yaXphdGlvblNwZWNpZmljYXRpb24pOgorICAgICIiIlNRTFNU QVRFIDI4UDAxIC0gaW52YWxpZCBwYXNzd29yZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBE ZXBlbmRlbnRQcml2aWxlZ2VEZXNjcmlwdG9yc1N0aWxsRXhpc3QoTGlicHFFcnJvcik6CisgICAg IiIiU1FMU1RBVEUgMkIwMDAgLSBkZXBlbmRlbnQgcHJpdmlsZWdlIGRlc2NyaXB0b3JzIHN0aWxs IGV4aXN0LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIERlcGVuZGVudE9iamVjdHNTdGlsbEV4 aXN0KERlcGVuZGVudFByaXZpbGVnZURlc2NyaXB0b3JzU3RpbGxFeGlzdCk6CisgICAgIiIiU1FM U1RBVEUgMkJQMDEgLSBkZXBlbmRlbnQgb2JqZWN0cyBzdGlsbCBleGlzdC4iIiIKKworICAgIHBh c3MKKworCitjbGFzcyBJbnZhbGlkVHJhbnNhY3Rpb25UZXJtaW5hdGlvbihMaWJwcUVycm9yKToK KyAgICAiIiJTUUxTVEFURSAyRDAwMCAtIGludmFsaWQgdHJhbnNhY3Rpb24gdGVybWluYXRpb24u IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU1FMUm91dGluZUV4Y2VwdGlvbihMaWJwcUVycm9y KToKKyAgICAiIiJTUUxTVEFURSAyRjAwMCAtIHNxbCByb3V0aW5lIGV4Y2VwdGlvbi4iIiIKKwor ICAgIHBhc3MKKworCitjbGFzcyBGdW5jdGlvbkV4ZWN1dGVkTm9SZXR1cm5TdGF0ZW1lbnQoU1FM Um91dGluZUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMkYwMDUgLSBmdW5jdGlvbiBleGVj dXRlZCBubyByZXR1cm4gc3RhdGVtZW50LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFNSRU1v ZGlmeWluZ1NRTERhdGFOb3RQZXJtaXR0ZWQoU1FMUm91dGluZUV4Y2VwdGlvbik6CisgICAgIiIi U1FMU1RBVEUgMkYwMDIgLSBtb2RpZnlpbmcgc3FsIGRhdGEgbm90IHBlcm1pdHRlZC4iIiIKKwor ICAgIHBhc3MKKworCitjbGFzcyBTUkVQcm9oaWJpdGVkU1FMU3RhdGVtZW50QXR0ZW1wdGVkKFNR TFJvdXRpbmVFeGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDJGMDAzIC0gcHJvaGliaXRlZCBz cWwgc3RhdGVtZW50IGF0dGVtcHRlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTUkVSZWFk aW5nU1FMRGF0YU5vdFBlcm1pdHRlZChTUUxSb3V0aW5lRXhjZXB0aW9uKToKKyAgICAiIiJTUUxT VEFURSAyRjAwNCAtIHJlYWRpbmcgc3FsIGRhdGEgbm90IHBlcm1pdHRlZC4iIiIKKworICAgIHBh c3MKKworCitjbGFzcyBJbnZhbGlkQ3Vyc29yTmFtZShMaWJwcUVycm9yKToKKyAgICAiIiJTUUxT VEFURSAzNDAwMCAtIGludmFsaWQgY3Vyc29yIG5hbWUuIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgRXh0ZXJuYWxSb3V0aW5lRXhjZXB0aW9uKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRF IDM4MDAwIC0gZXh0ZXJuYWwgcm91dGluZSBleGNlcHRpb24uIiIiCisKKyAgICBwYXNzCisKKwor Y2xhc3MgQ29udGFpbmluZ1NRTE5vdFBlcm1pdHRlZChFeHRlcm5hbFJvdXRpbmVFeGNlcHRpb24p OgorICAgICIiIlNRTFNUQVRFIDM4MDAxIC0gY29udGFpbmluZyBzcWwgbm90IHBlcm1pdHRlZC4i IiIKKworICAgIHBhc3MKKworCitjbGFzcyBFUkVNb2RpZnlpbmdTUUxEYXRhTm90UGVybWl0dGVk KEV4dGVybmFsUm91dGluZUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMzgwMDIgLSBtb2Rp Znlpbmcgc3FsIGRhdGEgbm90IHBlcm1pdHRlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBF UkVQcm9oaWJpdGVkU1FMU3RhdGVtZW50QXR0ZW1wdGVkKEV4dGVybmFsUm91dGluZUV4Y2VwdGlv bik6CisgICAgIiIiU1FMU1RBVEUgMzgwMDMgLSBwcm9oaWJpdGVkIHNxbCBzdGF0ZW1lbnQgYXR0 ZW1wdGVkLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEVSRVJlYWRpbmdTUUxEYXRhTm90UGVy bWl0dGVkKEV4dGVybmFsUm91dGluZUV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMzgwMDQg LSByZWFkaW5nIHNxbCBkYXRhIG5vdCBwZXJtaXR0ZWQuIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgRXh0ZXJuYWxSb3V0aW5lSW52b2NhdGlvbkV4Y2VwdGlvbihMaWJwcUVycm9yKToKKyAgICAi IiJTUUxTVEFURSAzOTAwMCAtIGV4dGVybmFsIHJvdXRpbmUgaW52b2NhdGlvbiBleGNlcHRpb24u IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZFNxbHN0YXRlUmV0dXJuZWQoRXh0ZXJu YWxSb3V0aW5lSW52b2NhdGlvbkV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgMzkwMDEgLSBp bnZhbGlkIHNxbHN0YXRlIHJldHVybmVkLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEVSSUVO dWxsVmFsdWVOb3RBbGxvd2VkKEV4dGVybmFsUm91dGluZUludm9jYXRpb25FeGNlcHRpb24pOgor ICAgICIiIlNRTFNUQVRFIDM5MDA0IC0gbnVsbCB2YWx1ZSBub3QgYWxsb3dlZC4iIiIKKworICAg IHBhc3MKKworCitjbGFzcyBUcmlnZ2VyUHJvdG9jb2xWaW9sYXRlZChFeHRlcm5hbFJvdXRpbmVJ bnZvY2F0aW9uRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFURSAzOVAwMSAtIHRyaWdnZXIgcHJv dG9jb2wgdmlvbGF0ZWQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgU3JmUHJvdG9jb2xWaW9s YXRlZChFeHRlcm5hbFJvdXRpbmVJbnZvY2F0aW9uRXhjZXB0aW9uKToKKyAgICAiIiJTUUxTVEFU RSAzOVAwMiAtIHNyZiBwcm90b2NvbCB2aW9sYXRlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFz cyBFdmVudFRyaWdnZXJQcm90b2NvbFZpb2xhdGVkKEV4dGVybmFsUm91dGluZUludm9jYXRpb25F eGNlcHRpb24pOgorICAgICIiIlNRTFNUQVRFIDM5UDAzIC0gZXZlbnQgdHJpZ2dlciBwcm90b2Nv bCB2aW9sYXRlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBTYXZlcG9pbnRFeGNlcHRpb24o TGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgM0IwMDAgLSBzYXZlcG9pbnQgZXhjZXB0aW9u LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRTYXZlcG9pbnRTcGVjaWZpY2F0aW9u KFNhdmVwb2ludEV4Y2VwdGlvbik6CisgICAgIiIiU1FMU1RBVEUgM0IwMDEgLSBpbnZhbGlkIHNh dmVwb2ludCBzcGVjaWZpY2F0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRD YXRhbG9nTmFtZShMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSAzRDAwMCAtIGludmFsaWQg Y2F0YWxvZyBuYW1lLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRTY2hlbWFOYW1l KExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDNGMDAwIC0gaW52YWxpZCBzY2hlbWEgbmFt ZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBUcmFuc2FjdGlvblJvbGxiYWNrKExpYnBxRXJy b3IpOgorICAgICIiIlNRTFNUQVRFIDQwMDAwIC0gdHJhbnNhY3Rpb24gcm9sbGJhY2suIiIiCisK KyAgICBwYXNzCisKKworY2xhc3MgVHJhbnNhY3Rpb25JbnRlZ3JpdHlDb25zdHJhaW50VmlvbGF0 aW9uKFRyYW5zYWN0aW9uUm9sbGJhY2spOgorICAgICIiIlNRTFNUQVRFIDQwMDAyIC0gdHJhbnNh Y3Rpb24gaW50ZWdyaXR5IGNvbnN0cmFpbnQgdmlvbGF0aW9uLiIiIgorCisgICAgcGFzcworCisK K2NsYXNzIFNlcmlhbGl6YXRpb25GYWlsdXJlKFRyYW5zYWN0aW9uUm9sbGJhY2spOgorICAgICIi IlNRTFNUQVRFIDQwMDAxIC0gc2VyaWFsaXphdGlvbiBmYWlsdXJlLiIiIgorCisgICAgcGFzcwor CisKK2NsYXNzIFN0YXRlbWVudENvbXBsZXRpb25Vbmtub3duKFRyYW5zYWN0aW9uUm9sbGJhY2sp OgorICAgICIiIlNRTFNUQVRFIDQwMDAzIC0gc3RhdGVtZW50IGNvbXBsZXRpb24gdW5rbm93bi4i IiIKKworICAgIHBhc3MKKworCitjbGFzcyBEZWFkbG9ja0RldGVjdGVkKFRyYW5zYWN0aW9uUm9s bGJhY2spOgorICAgICIiIlNRTFNUQVRFIDQwUDAxIC0gZGVhZGxvY2sgZGV0ZWN0ZWQuIiIiCisK KyAgICBwYXNzCisKKworY2xhc3MgU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24oTGli cHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgNDIwMDAgLSBzeW50YXggZXJyb3Igb3IgYWNjZXNz IHJ1bGUgdmlvbGF0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFN5bnRheEVycm9yKFN5 bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjYwMSAt IHN5bnRheCBlcnJvci4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnN1ZmZpY2llbnRQcml2 aWxlZ2UoU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRF IDQyNTAxIC0gaW5zdWZmaWNpZW50IHByaXZpbGVnZS4iIiIKKworICAgIHBhc3MKKworCitjbGFz cyBDYW5ub3RDb2VyY2UoU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIi IlNRTFNUQVRFIDQyODQ2IC0gY2Fubm90IGNvZXJjZS4iIiIKKworICAgIHBhc3MKKworCitjbGFz cyBHcm91cGluZ0Vycm9yKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAi IiJTUUxTVEFURSA0MjgwMyAtIGdyb3VwaW5nIGVycm9yLiIiIgorCisgICAgcGFzcworCisKK2Ns YXNzIFdpbmRvd2luZ0Vycm9yKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAg ICAiIiJTUUxTVEFURSA0MlAyMCAtIHdpbmRvd2luZyBlcnJvci4iIiIKKworICAgIHBhc3MKKwor CitjbGFzcyBJbnZhbGlkUmVjdXJzaW9uKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9u KToKKyAgICAiIiJTUUxTVEFURSA0MlAxOSAtIGludmFsaWQgcmVjdXJzaW9uLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIEludmFsaWRGb3JlaWduS2V5KFN5bnRheEVycm9yT3JBY2Nlc3NSdWxl VmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjgzMCAtIGludmFsaWQgZm9yZWlnbiBrZXku IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgSW52YWxpZE5hbWUoU3ludGF4RXJyb3JPckFjY2Vz c1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyNjAyIC0gaW52YWxpZCBuYW1lLiIi IgorCisgICAgcGFzcworCisKK2NsYXNzIE5hbWVUb29Mb25nKFN5bnRheEVycm9yT3JBY2Nlc3NS dWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjYyMiAtIG5hbWUgdG9vIGxvbmcuIiIi CisKKyAgICBwYXNzCisKKworY2xhc3MgUmVzZXJ2ZWROYW1lKFN5bnRheEVycm9yT3JBY2Nlc3NS dWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjkzOSAtIHJlc2VydmVkIG5hbWUuIiIi CisKKyAgICBwYXNzCisKKworY2xhc3MgRGF0YXR5cGVNaXNtYXRjaChTeW50YXhFcnJvck9yQWNj ZXNzUnVsZVZpb2xhdGlvbik6CisgICAgIiIiU1FMU1RBVEUgNDI4MDQgLSBkYXRhdHlwZSBtaXNt YXRjaC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbmRldGVybWluYXRlRGF0YXR5cGUoU3lu dGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyUDE4IC0g aW5kZXRlcm1pbmF0ZSBkYXRhdHlwZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBDb2xsYXRp b25NaXNtYXRjaChTeW50YXhFcnJvck9yQWNjZXNzUnVsZVZpb2xhdGlvbik6CisgICAgIiIiU1FM U1RBVEUgNDJQMjEgLSBjb2xsYXRpb24gbWlzbWF0Y2guIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgSW5kZXRlcm1pbmF0ZUNvbGxhdGlvbihTeW50YXhFcnJvck9yQWNjZXNzUnVsZVZpb2xhdGlv bik6CisgICAgIiIiU1FMU1RBVEUgNDJQMjIgLSBpbmRldGVybWluYXRlIGNvbGxhdGlvbi4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBXcm9uZ09iamVjdFR5cGUoU3ludGF4RXJyb3JPckFjY2Vz c1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyODA5IC0gd3Jvbmcgb2JqZWN0IHR5 cGUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgR2VuZXJhdGVkQWx3YXlzKFN5bnRheEVycm9y T3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjhDOSAtIGdlbmVyYXRl ZCBhbHdheXMuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW5kZWZpbmVkQ29sdW1uKFN5bnRh eEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjcwMyAtIHVu ZGVmaW5lZCBjb2x1bW4uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW5kZWZpbmVkRnVuY3Rp b24oU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQy ODgzIC0gdW5kZWZpbmVkIGZ1bmN0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIFVuZGVm aW5lZFRhYmxlKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxT VEFURSA0MlAwMSAtIHVuZGVmaW5lZCB0YWJsZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBV bmRlZmluZWRQYXJhbWV0ZXIoU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAg ICIiIlNRTFNUQVRFIDQyUDAyIC0gdW5kZWZpbmVkIHBhcmFtZXRlci4iIiIKKworICAgIHBhc3MK KworCitjbGFzcyBVbmRlZmluZWRPYmplY3QoU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRp b24pOgorICAgICIiIlNRTFNUQVRFIDQyNzA0IC0gdW5kZWZpbmVkIG9iamVjdC4iIiIKKworICAg IHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVDb2x1bW4oU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVW aW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyNzAxIC0gZHVwbGljYXRlIGNvbHVtbi4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVDdXJzb3IoU3ludGF4RXJyb3JPckFjY2Vz c1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyUDAzIC0gZHVwbGljYXRlIGN1cnNv ci4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVEYXRhYmFzZShTeW50YXhFcnJv ck9yQWNjZXNzUnVsZVZpb2xhdGlvbik6CisgICAgIiIiU1FMU1RBVEUgNDJQMDQgLSBkdXBsaWNh dGUgZGF0YWJhc2UuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRHVwbGljYXRlRnVuY3Rpb24o U3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyNzIz IC0gZHVwbGljYXRlIGZ1bmN0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIER1cGxpY2F0 ZVByZXBhcmVkU3RhdGVtZW50KFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAg ICAiIiJTUUxTVEFURSA0MlAwNSAtIGR1cGxpY2F0ZSBwcmVwYXJlZCBzdGF0ZW1lbnQuIiIiCisK KyAgICBwYXNzCisKKworY2xhc3MgRHVwbGljYXRlU2NoZW1hKFN5bnRheEVycm9yT3JBY2Nlc3NS dWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MlAwNiAtIGR1cGxpY2F0ZSBzY2hlbWEu IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRHVwbGljYXRlVGFibGUoU3ludGF4RXJyb3JPckFj Y2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyUDA3IC0gZHVwbGljYXRlIHRh YmxlLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIER1cGxpY2F0ZUFsaWFzKFN5bnRheEVycm9y T3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MjcxMiAtIGR1cGxpY2F0 ZSBhbGlhcy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVPYmplY3QoU3ludGF4 RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyNzEwIC0gZHVw bGljYXRlIG9iamVjdC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBBbWJpZ3VvdXNDb2x1bW4o U3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyNzAy IC0gYW1iaWd1b3VzIGNvbHVtbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBBbWJpZ3VvdXNG dW5jdGlvbihTeW50YXhFcnJvck9yQWNjZXNzUnVsZVZpb2xhdGlvbik6CisgICAgIiIiU1FMU1RB VEUgNDI3MjUgLSBhbWJpZ3VvdXMgZnVuY3Rpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg QW1iaWd1b3VzUGFyYW1ldGVyKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAg ICAiIiJTUUxTVEFURSA0MlAwOCAtIGFtYmlndW91cyBwYXJhbWV0ZXIuIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgQW1iaWd1b3VzQWxpYXMoU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRp b24pOgorICAgICIiIlNRTFNUQVRFIDQyUDA5IC0gYW1iaWd1b3VzIGFsaWFzLiIiIgorCisgICAg cGFzcworCisKK2NsYXNzIEludmFsaWRDb2x1bW5SZWZlcmVuY2UoU3ludGF4RXJyb3JPckFjY2Vz c1J1bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyUDEwIC0gaW52YWxpZCBjb2x1bW4g cmVmZXJlbmNlLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEludmFsaWRDb2x1bW5EZWZpbml0 aW9uKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0 MjYxMSAtIGludmFsaWQgY29sdW1uIGRlZmluaXRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgSW52YWxpZEN1cnNvckRlZmluaXRpb24oU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRp b24pOgorICAgICIiIlNRTFNUQVRFIDQyUDExIC0gaW52YWxpZCBjdXJzb3IgZGVmaW5pdGlvbi4i IiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkRGF0YWJhc2VEZWZpbml0aW9uKFN5bnRh eEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MlAxMiAtIGlu dmFsaWQgZGF0YWJhc2UgZGVmaW5pdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZh bGlkRnVuY3Rpb25EZWZpbml0aW9uKFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToK KyAgICAiIiJTUUxTVEFURSA0MlAxMyAtIGludmFsaWQgZnVuY3Rpb24gZGVmaW5pdGlvbi4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkUHJlcGFyZWRTdGF0ZW1lbnREZWZpbml0aW9u KFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MlAx NCAtIGludmFsaWQgcHJlcGFyZWQgc3RhdGVtZW50IGRlZmluaXRpb24uIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgSW52YWxpZFNjaGVtYURlZmluaXRpb24oU3ludGF4RXJyb3JPckFjY2Vzc1J1 bGVWaW9sYXRpb24pOgorICAgICIiIlNRTFNUQVRFIDQyUDE1IC0gaW52YWxpZCBzY2hlbWEgZGVm aW5pdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnZhbGlkVGFibGVEZWZpbml0aW9u KFN5bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uKToKKyAgICAiIiJTUUxTVEFURSA0MlAx NiAtIGludmFsaWQgdGFibGUgZGVmaW5pdGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBJ bnZhbGlkT2JqZWN0RGVmaW5pdGlvbihTeW50YXhFcnJvck9yQWNjZXNzUnVsZVZpb2xhdGlvbik6 CisgICAgIiIiU1FMU1RBVEUgNDJQMTcgLSBpbnZhbGlkIG9iamVjdCBkZWZpbml0aW9uLiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIFdpdGhDaGVja09wdGlvblZpb2xhdGlvbihMaWJwcUVycm9y KToKKyAgICAiIiJTUUxTVEFURSA0NDAwMCAtIHdpdGggY2hlY2sgb3B0aW9uIHZpb2xhdGlvbi4i IiIKKworICAgIHBhc3MKKworCitjbGFzcyBJbnN1ZmZpY2llbnRSZXNvdXJjZXMoTGlicHFFcnJv cik6CisgICAgIiIiU1FMU1RBVEUgNTMwMDAgLSBpbnN1ZmZpY2llbnQgcmVzb3VyY2VzLiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIERpc2tGdWxsKEluc3VmZmljaWVudFJlc291cmNlcyk6Cisg ICAgIiIiU1FMU1RBVEUgNTMxMDAgLSBkaXNrIGZ1bGwuIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgT3V0T2ZNZW1vcnkoSW5zdWZmaWNpZW50UmVzb3VyY2VzKToKKyAgICAiIiJTUUxTVEFURSA1 MzIwMCAtIG91dCBvZiBtZW1vcnkuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVG9vTWFueUNv bm5lY3Rpb25zKEluc3VmZmljaWVudFJlc291cmNlcyk6CisgICAgIiIiU1FMU1RBVEUgNTMzMDAg LSB0b28gbWFueSBjb25uZWN0aW9ucy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBDb25maWd1 cmF0aW9uTGltaXRFeGNlZWRlZChJbnN1ZmZpY2llbnRSZXNvdXJjZXMpOgorICAgICIiIlNRTFNU QVRFIDUzNDAwIC0gY29uZmlndXJhdGlvbiBsaW1pdCBleGNlZWRlZC4iIiIKKworICAgIHBhc3MK KworCitjbGFzcyBQcm9ncmFtTGltaXRFeGNlZWRlZChMaWJwcUVycm9yKToKKyAgICAiIiJTUUxT VEFURSA1NDAwMCAtIHByb2dyYW0gbGltaXQgZXhjZWVkZWQuIiIiCisKKyAgICBwYXNzCisKKwor Y2xhc3MgU3RhdGVtZW50VG9vQ29tcGxleChQcm9ncmFtTGltaXRFeGNlZWRlZCk6CisgICAgIiIi U1FMU1RBVEUgNTQwMDEgLSBzdGF0ZW1lbnQgdG9vIGNvbXBsZXguIiIiCisKKyAgICBwYXNzCisK KworY2xhc3MgVG9vTWFueUNvbHVtbnMoUHJvZ3JhbUxpbWl0RXhjZWVkZWQpOgorICAgICIiIlNR TFNUQVRFIDU0MDExIC0gdG9vIG1hbnkgY29sdW1ucy4iIiIKKworICAgIHBhc3MKKworCitjbGFz cyBUb29NYW55QXJndW1lbnRzKFByb2dyYW1MaW1pdEV4Y2VlZGVkKToKKyAgICAiIiJTUUxTVEFU RSA1NDAyMyAtIHRvbyBtYW55IGFyZ3VtZW50cy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBP YmplY3ROb3RJblByZXJlcXVpc2l0ZVN0YXRlKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRF IDU1MDAwIC0gb2JqZWN0IG5vdCBpbiBwcmVyZXF1aXNpdGUgc3RhdGUuIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgT2JqZWN0SW5Vc2UoT2JqZWN0Tm90SW5QcmVyZXF1aXNpdGVTdGF0ZSk6Cisg ICAgIiIiU1FMU1RBVEUgNTUwMDYgLSBvYmplY3QgaW4gdXNlLiIiIgorCisgICAgcGFzcworCisK K2NsYXNzIENhbnRDaGFuZ2VSdW50aW1lUGFyYW0oT2JqZWN0Tm90SW5QcmVyZXF1aXNpdGVTdGF0 ZSk6CisgICAgIiIiU1FMU1RBVEUgNTVQMDIgLSBjYW50IGNoYW5nZSBydW50aW1lIHBhcmFtLiIi IgorCisgICAgcGFzcworCisKK2NsYXNzIExvY2tOb3RBdmFpbGFibGUoT2JqZWN0Tm90SW5QcmVy ZXF1aXNpdGVTdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgNTVQMDMgLSBsb2NrIG5vdCBhdmFpbGFi bGUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgVW5zYWZlTmV3RW51bVZhbHVlVXNhZ2UoT2Jq ZWN0Tm90SW5QcmVyZXF1aXNpdGVTdGF0ZSk6CisgICAgIiIiU1FMU1RBVEUgNTVQMDQgLSB1bnNh ZmUgbmV3IGVudW0gdmFsdWUgdXNhZ2UuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgT3BlcmF0 b3JJbnRlcnZlbnRpb24oTGlicHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgNTcwMDAgLSBvcGVy YXRvciBpbnRlcnZlbnRpb24uIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgUXVlcnlDYW5jZWxl ZChPcGVyYXRvckludGVydmVudGlvbik6CisgICAgIiIiU1FMU1RBVEUgNTcwMTQgLSBxdWVyeSBj YW5jZWxlZC4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBBZG1pblNodXRkb3duKE9wZXJhdG9y SW50ZXJ2ZW50aW9uKToKKyAgICAiIiJTUUxTVEFURSA1N1AwMSAtIGFkbWluIHNodXRkb3duLiIi IgorCisgICAgcGFzcworCisKK2NsYXNzIENyYXNoU2h1dGRvd24oT3BlcmF0b3JJbnRlcnZlbnRp b24pOgorICAgICIiIlNRTFNUQVRFIDU3UDAyIC0gY3Jhc2ggc2h1dGRvd24uIiIiCisKKyAgICBw YXNzCisKKworY2xhc3MgQ2Fubm90Q29ubmVjdE5vdyhPcGVyYXRvckludGVydmVudGlvbik6Cisg ICAgIiIiU1FMU1RBVEUgNTdQMDMgLSBjYW5ub3QgY29ubmVjdCBub3cuIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgRGF0YWJhc2VEcm9wcGVkKE9wZXJhdG9ySW50ZXJ2ZW50aW9uKToKKyAgICAi IiJTUUxTVEFURSA1N1AwNCAtIGRhdGFiYXNlIGRyb3BwZWQuIiIiCisKKyAgICBwYXNzCisKKwor Y2xhc3MgSWRsZVNlc3Npb25UaW1lb3V0KE9wZXJhdG9ySW50ZXJ2ZW50aW9uKToKKyAgICAiIiJT UUxTVEFURSA1N1AwNSAtIGlkbGUgc2Vzc2lvbiB0aW1lb3V0LiIiIgorCisgICAgcGFzcworCisK K2NsYXNzIFN5c3RlbUVycm9yKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIDU4MDAwIC0g c3lzdGVtIGVycm9yLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIElvRXJyb3IoU3lzdGVtRXJy b3IpOgorICAgICIiIlNRTFNUQVRFIDU4MDMwIC0gaW8gZXJyb3IuIiIiCisKKyAgICBwYXNzCisK KworY2xhc3MgVW5kZWZpbmVkRmlsZShTeXN0ZW1FcnJvcik6CisgICAgIiIiU1FMU1RBVEUgNThQ MDEgLSB1bmRlZmluZWQgZmlsZS4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBEdXBsaWNhdGVG aWxlKFN5c3RlbUVycm9yKToKKyAgICAiIiJTUUxTVEFURSA1OFAwMiAtIGR1cGxpY2F0ZSBmaWxl LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZpbGVOYW1lVG9vTG9uZyhTeXN0ZW1FcnJvcik6 CisgICAgIiIiU1FMU1RBVEUgNThQMDMgLSBmaWxlIG5hbWUgdG9vIGxvbmcuIiIiCisKKyAgICBw YXNzCisKKworY2xhc3MgQ29uZmlnRmlsZUVycm9yKExpYnBxRXJyb3IpOgorICAgICIiIlNRTFNU QVRFIEYwMDAwIC0gY29uZmlnIGZpbGUgZXJyb3IuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg TG9ja0ZpbGVFeGlzdHMoQ29uZmlnRmlsZUVycm9yKToKKyAgICAiIiJTUUxTVEFURSBGMDAwMSAt IGxvY2sgZmlsZSBleGlzdHMuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXRXJyb3IoTGli cHFFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMDAgLSBmZHcgZXJyb3IuIiIiCisKKyAgICBw YXNzCisKKworY2xhc3MgRkRXQ29sdW1uTmFtZU5vdEZvdW5kKEZEV0Vycm9yKToKKyAgICAiIiJT UUxTVEFURSBIVjAwNSAtIGZkdyBjb2x1bW4gbmFtZSBub3QgZm91bmQuIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgRkRXRHluYW1pY1BhcmFtZXRlclZhbHVlTmVlZGVkKEZEV0Vycm9yKToKKyAg ICAiIiJTUUxTVEFURSBIVjAwMiAtIGZkdyBkeW5hbWljIHBhcmFtZXRlciB2YWx1ZSBuZWVkZWQu IiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXRnVuY3Rpb25TZXF1ZW5jZUVycm9yKEZEV0Vy cm9yKToKKyAgICAiIiJTUUxTVEFURSBIVjAxMCAtIGZkdyBmdW5jdGlvbiBzZXF1ZW5jZSBlcnJv ci4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBGRFdJbmNvbnNpc3RlbnREZXNjcmlwdG9ySW5m b3JtYXRpb24oRkRXRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIEhWMDIxIC0gZmR3IGluY29uc2lz dGVudCBkZXNjcmlwdG9yIGluZm9ybWF0aW9uLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZE V0ludmFsaWRBdHRyaWJ1dGVWYWx1ZShGRFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMjQg LSBmZHcgaW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg RkRXSW52YWxpZENvbHVtbk5hbWUoRkRXRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIEhWMDA3IC0g ZmR3IGludmFsaWQgY29sdW1uIG5hbWUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXSW52 YWxpZENvbHVtbk51bWJlcihGRFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMDggLSBmZHcg aW52YWxpZCBjb2x1bW4gbnVtYmVyLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV0ludmFs aWREYXRhVHlwZShGRFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMDQgLSBmZHcgaW52YWxp ZCBkYXRhIHR5cGUuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXSW52YWxpZERhdGFUeXBl RGVzY3JpcHRvcnMoRkRXRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIEhWMDA2IC0gZmR3IGludmFs aWQgZGF0YSB0eXBlIGRlc2NyaXB0b3JzLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV0lu dmFsaWREZXNjcmlwdG9yRmllbGRJZGVudGlmaWVyKEZEV0Vycm9yKToKKyAgICAiIiJTUUxTVEFU RSBIVjA5MSAtIGZkdyBpbnZhbGlkIGRlc2NyaXB0b3IgZmllbGQgaWRlbnRpZmllci4iIiIKKwor ICAgIHBhc3MKKworCitjbGFzcyBGRFdJbnZhbGlkSGFuZGxlKEZEV0Vycm9yKToKKyAgICAiIiJT UUxTVEFURSBIVjAwQiAtIGZkdyBpbnZhbGlkIGhhbmRsZS4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBGRFdJbnZhbGlkT3B0aW9uSW5kZXgoRkRXRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIEhW MDBDIC0gZmR3IGludmFsaWQgb3B0aW9uIGluZGV4LiIiIgorCisgICAgcGFzcworCisKK2NsYXNz IEZEV0ludmFsaWRPcHRpb25OYW1lKEZEV0Vycm9yKToKKyAgICAiIiJTUUxTVEFURSBIVjAwRCAt IGZkdyBpbnZhbGlkIG9wdGlvbiBuYW1lLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV0lu dmFsaWRTdHJpbmdMZW5ndGhPckJ1ZmZlckxlbmd0aChGRFdFcnJvcik6CisgICAgIiIiU1FMU1RB VEUgSFYwOTAgLSBmZHcgaW52YWxpZCBzdHJpbmcgbGVuZ3RoIG9yIGJ1ZmZlciBsZW5ndGguIiIi CisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXSW52YWxpZFN0cmluZ0Zvcm1hdChGRFdFcnJvcik6 CisgICAgIiIiU1FMU1RBVEUgSFYwMEEgLSBmZHcgaW52YWxpZCBzdHJpbmcgZm9ybWF0LiIiIgor CisgICAgcGFzcworCisKK2NsYXNzIEZEV0ludmFsaWRVc2VPZk51bGxQb2ludGVyKEZEV0Vycm9y KToKKyAgICAiIiJTUUxTVEFURSBIVjAwOSAtIGZkdyBpbnZhbGlkIHVzZSBvZiBudWxsIHBvaW50 ZXIuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgRkRXVG9vTWFueUhhbmRsZXMoRkRXRXJyb3Ip OgorICAgICIiIlNRTFNUQVRFIEhWMDE0IC0gZmR3IHRvbyBtYW55IGhhbmRsZXMuIiIiCisKKyAg ICBwYXNzCisKKworY2xhc3MgRkRXT3V0T2ZNZW1vcnkoRkRXRXJyb3IpOgorICAgICIiIlNRTFNU QVRFIEhWMDAxIC0gZmR3IG91dCBvZiBtZW1vcnkuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg RkRXTm9TY2hlbWFzKEZEV0Vycm9yKToKKyAgICAiIiJTUUxTVEFURSBIVjAwUCAtIGZkdyBubyBz Y2hlbWFzLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV09wdGlvbk5hbWVOb3RGb3VuZChG RFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMEogLSBmZHcgb3B0aW9uIG5hbWUgbm90IGZv dW5kLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV1JlcGx5SGFuZGxlKEZEV0Vycm9yKToK KyAgICAiIiJTUUxTVEFURSBIVjAwSyAtIGZkdyByZXBseSBoYW5kbGUuIiIiCisKKyAgICBwYXNz CisKKworY2xhc3MgRkRXU2NoZW1hTm90Rm91bmQoRkRXRXJyb3IpOgorICAgICIiIlNRTFNUQVRF IEhWMDBRIC0gZmR3IHNjaGVtYSBub3QgZm91bmQuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3Mg RkRXVGFibGVOb3RGb3VuZChGRFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwMFIgLSBmZHcg dGFibGUgbm90IGZvdW5kLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV1VuYWJsZVRvQ3Jl YXRlRXhlY3V0aW9uKEZEV0Vycm9yKToKKyAgICAiIiJTUUxTVEFURSBIVjAwTCAtIGZkdyB1bmFi bGUgdG8gY3JlYXRlIGV4ZWN1dGlvbi4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBGRFdVbmFi bGVUb0NyZWF0ZVJlcGx5KEZEV0Vycm9yKToKKyAgICAiIiJTUUxTVEFURSBIVjAwTSAtIGZkdyB1 bmFibGUgdG8gY3JlYXRlIHJlcGx5LiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEZEV1VuYWJs ZVRvRXN0YWJsaXNoQ29ubmVjdGlvbihGRFdFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgSFYwME4g LSBmZHcgdW5hYmxlIHRvIGVzdGFibGlzaCBjb25uZWN0aW9uLiIiIgorCisgICAgcGFzcworCisK K2NsYXNzIFBscGdzcWxFcnJvcihMaWJwcUVycm9yKToKKyAgICAiIiJTUUxTVEFURSBQMDAwMCAt IHBscGdzcWwgZXJyb3IuIiIiCisKKyAgICBwYXNzCisKKworY2xhc3MgUmFpc2VFeGNlcHRpb24o UGxwZ3NxbEVycm9yKToKKyAgICAiIiJTUUxTVEFURSBQMDAwMSAtIHJhaXNlIGV4Y2VwdGlvbi4i IiIKKworICAgIHBhc3MKKworCitjbGFzcyBOb0RhdGFGb3VuZChQbHBnc3FsRXJyb3IpOgorICAg ICIiIlNRTFNUQVRFIFAwMDAyIC0gbm8gZGF0YSBmb3VuZC4iIiIKKworICAgIHBhc3MKKworCitj bGFzcyBUb29NYW55Um93cyhQbHBnc3FsRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIFAwMDAzIC0g dG9vIG1hbnkgcm93cy4iIiIKKworICAgIHBhc3MKKworCitjbGFzcyBBc3NlcnRGYWlsdXJlKFBs cGdzcWxFcnJvcik6CisgICAgIiIiU1FMU1RBVEUgUDAwMDQgLSBhc3NlcnQgZmFpbHVyZS4iIiIK KworICAgIHBhc3MKKworCitjbGFzcyBJbnRlcm5hbEVycm9yKExpYnBxRXJyb3IpOgorICAgICIi IlNRTFNUQVRFIFhYMDAwIC0gaW50ZXJuYWwgZXJyb3IuIiIiCisKKyAgICBwYXNzCisKKworY2xh c3MgRGF0YUNvcnJ1cHRlZChJbnRlcm5hbEVycm9yKToKKyAgICAiIiJTUUxTVEFURSBYWDAwMSAt IGRhdGEgY29ycnVwdGVkLiIiIgorCisgICAgcGFzcworCisKK2NsYXNzIEluZGV4Q29ycnVwdGVk KEludGVybmFsRXJyb3IpOgorICAgICIiIlNRTFNUQVRFIFhYMDAyIC0gaW5kZXggY29ycnVwdGVk LiIiIgorCisgICAgcGFzcworCisKK1NRTFNUQVRFX1RPX0VYQ0VQVElPTjogRGljdFtzdHIsIHR5 cGVdID0geworICAgICIwMDAwMCI6IFN1Y2Nlc3NmdWxDb21wbGV0aW9uLAorICAgICIwMTAwMCI6 IFdhcm5pbmcsCisgICAgIjAxMDBDIjogRHluYW1pY1Jlc3VsdFNldHNSZXR1cm5lZFdhcm5pbmcs CisgICAgIjAxMDA4IjogSW1wbGljaXRaZXJvQml0UGFkZGluZ1dhcm5pbmcsCisgICAgIjAxMDAz IjogTnVsbFZhbHVlRWxpbWluYXRlZEluU2V0RnVuY3Rpb25XYXJuaW5nLAorICAgICIwMTAwNyI6 IFByaXZpbGVnZU5vdEdyYW50ZWRXYXJuaW5nLAorICAgICIwMTAwNiI6IFByaXZpbGVnZU5vdFJl dm9rZWRXYXJuaW5nLAorICAgICIwMTAwNCI6IFN0cmluZ0RhdGFSaWdodFRydW5jYXRpb25XYXJu aW5nLAorICAgICIwMVAwMSI6IERlcHJlY2F0ZWRGZWF0dXJlV2FybmluZywKKyAgICAiMDIwMDAi OiBOb0RhdGEsCisgICAgIjAyMDAxIjogTm9BZGRpdGlvbmFsRHluYW1pY1Jlc3VsdFNldHNSZXR1 cm5lZCwKKyAgICAiMDMwMDAiOiBTUUxTdGF0ZW1lbnROb3RZZXRDb21wbGV0ZSwKKyAgICAiMDgw MDAiOiBDb25uZWN0aW9uRXhjZXB0aW9uLAorICAgICIwODAwMyI6IENvbm5lY3Rpb25Eb2VzTm90 RXhpc3QsCisgICAgIjA4MDA2IjogQ29ubmVjdGlvbkZhaWx1cmUsCisgICAgIjA4MDAxIjogU1FM Q2xpZW50VW5hYmxlVG9Fc3RhYmxpc2hTUUxDb25uZWN0aW9uLAorICAgICIwODAwNCI6IFNRTFNl cnZlclJlamVjdGVkRXN0YWJsaXNobWVudE9mU1FMQ29ubmVjdGlvbiwKKyAgICAiMDgwMDciOiBU cmFuc2FjdGlvblJlc29sdXRpb25Vbmtub3duLAorICAgICIwOFAwMSI6IFByb3RvY29sVmlvbGF0 aW9uLAorICAgICIwOTAwMCI6IFRyaWdnZXJlZEFjdGlvbkV4Y2VwdGlvbiwKKyAgICAiMEEwMDAi OiBGZWF0dXJlTm90U3VwcG9ydGVkLAorICAgICIwQjAwMCI6IEludmFsaWRUcmFuc2FjdGlvbklu aXRpYXRpb24sCisgICAgIjBGMDAwIjogTG9jYXRvckV4Y2VwdGlvbiwKKyAgICAiMEYwMDEiOiBJ bnZhbGlkTG9jYXRvclNwZWNpZmljYXRpb24sCisgICAgIjBMMDAwIjogSW52YWxpZEdyYW50b3Is CisgICAgIjBMUDAxIjogSW52YWxpZEdyYW50T3BlcmF0aW9uLAorICAgICIwUDAwMCI6IEludmFs aWRSb2xlU3BlY2lmaWNhdGlvbiwKKyAgICAiMFowMDAiOiBEaWFnbm9zdGljc0V4Y2VwdGlvbiwK KyAgICAiMFowMDIiOiBTdGFja2VkRGlhZ25vc3RpY3NBY2Nlc3NlZFdpdGhvdXRBY3RpdmVIYW5k bGVyLAorICAgICIxMDYwOCI6IEludmFsaWRBcmd1bWVudEZvclhxdWVyeSwKKyAgICAiMjAwMDAi OiBDYXNlTm90Rm91bmQsCisgICAgIjIxMDAwIjogQ2FyZGluYWxpdHlWaW9sYXRpb24sCisgICAg IjIyMDAwIjogRGF0YUV4Y2VwdGlvbiwKKyAgICAiMjIwMkUiOiBBcnJheVN1YnNjcmlwdEVycm9y LAorICAgICIyMjAyMSI6IENoYXJhY3Rlck5vdEluUmVwZXJ0b2lyZSwKKyAgICAiMjIwMDgiOiBE YXRldGltZUZpZWxkT3ZlcmZsb3csCisgICAgIjIyMDEyIjogRGl2aXNpb25CeVplcm8sCisgICAg IjIyMDA1IjogRXJyb3JJbkFzc2lnbm1lbnQsCisgICAgIjIyMDBCIjogRXNjYXBlQ2hhcmFjdGVy Q29uZmxpY3QsCisgICAgIjIyMDIyIjogSW5kaWNhdG9yT3ZlcmZsb3csCisgICAgIjIyMDE1Ijog SW50ZXJ2YWxGaWVsZE92ZXJmbG93LAorICAgICIyMjAxRSI6IEludmFsaWRBcmd1bWVudEZvckxv Z2FyaXRobSwKKyAgICAiMjIwMTQiOiBJbnZhbGlkQXJndW1lbnRGb3JOdGlsZUZ1bmN0aW9uLAor ICAgICIyMjAxNiI6IEludmFsaWRBcmd1bWVudEZvck50aFZhbHVlRnVuY3Rpb24sCisgICAgIjIy MDFGIjogSW52YWxpZEFyZ3VtZW50Rm9yUG93ZXJGdW5jdGlvbiwKKyAgICAiMjIwMUciOiBJbnZh bGlkQXJndW1lbnRGb3JXaWR0aEJ1Y2tldEZ1bmN0aW9uLAorICAgICIyMjAxOCI6IEludmFsaWRD aGFyYWN0ZXJWYWx1ZUZvckNhc3QsCisgICAgIjIyMDA3IjogSW52YWxpZERhdGV0aW1lRm9ybWF0 LAorICAgICIyMjAxOSI6IEludmFsaWRFc2NhcGVDaGFyYWN0ZXIsCisgICAgIjIyMDBEIjogSW52 YWxpZEVzY2FwZU9jdGV0LAorICAgICIyMjAyNSI6IEludmFsaWRFc2NhcGVTZXF1ZW5jZSwKKyAg ICAiMjJQMDYiOiBOb25zdGFuZGFyZFVzZU9mRXNjYXBlQ2hhcmFjdGVyLAorICAgICIyMjAxMCI6 IEludmFsaWRJbmRpY2F0b3JQYXJhbWV0ZXJWYWx1ZSwKKyAgICAiMjIwMjMiOiBJbnZhbGlkUGFy YW1ldGVyVmFsdWUsCisgICAgIjIyMDEzIjogSW52YWxpZFByZWNlZGluZ09yRm9sbG93aW5nU2l6 ZSwKKyAgICAiMjIwMUIiOiBJbnZhbGlkUmVndWxhckV4cHJlc3Npb24sCisgICAgIjIyMDFXIjog SW52YWxpZFJvd0NvdW50SW5MaW1pdENsYXVzZSwKKyAgICAiMjIwMVgiOiBJbnZhbGlkUm93Q291 bnRJblJlc3VsdE9mZnNldENsYXVzZSwKKyAgICAiMjIwMkgiOiBJbnZhbGlkVGFibGVzYW1wbGVB cmd1bWVudCwKKyAgICAiMjIwMkciOiBJbnZhbGlkVGFibGVzYW1wbGVSZXBlYXQsCisgICAgIjIy MDA5IjogSW52YWxpZFRpbWVab25lRGlzcGxhY2VtZW50VmFsdWUsCisgICAgIjIyMDBDIjogSW52 YWxpZFVzZU9mRXNjYXBlQ2hhcmFjdGVyLAorICAgICIyMjAwRyI6IE1vc3RTcGVjaWZpY1R5cGVN aXNtYXRjaCwKKyAgICAiMjIwMDQiOiBOdWxsVmFsdWVOb3RBbGxvd2VkLAorICAgICIyMjAwMiI6 IE51bGxWYWx1ZU5vSW5kaWNhdG9yUGFyYW1ldGVyLAorICAgICIyMjAwMyI6IE51bWVyaWNWYWx1 ZU91dE9mUmFuZ2UsCisgICAgIjIyMDBIIjogU2VxdWVuY2VHZW5lcmF0b3JMaW1pdEV4Y2VlZGVk LAorICAgICIyMjAyNiI6IFN0cmluZ0RhdGFMZW5ndGhNaXNtYXRjaCwKKyAgICAiMjIwMDEiOiBT dHJpbmdEYXRhUmlnaHRUcnVuY2F0aW9uLAorICAgICIyMjAxMSI6IFN1YnN0cmluZ0Vycm9yLAor ICAgICIyMjAyNyI6IFRyaW1FcnJvciwKKyAgICAiMjIwMjQiOiBVbnRlcm1pbmF0ZWRDU3RyaW5n LAorICAgICIyMjAwRiI6IFplcm9MZW5ndGhDaGFyYWN0ZXJTdHJpbmcsCisgICAgIjIyUDAxIjog RmxvYXRpbmdQb2ludEV4Y2VwdGlvbiwKKyAgICAiMjJQMDIiOiBJbnZhbGlkVGV4dFJlcHJlc2Vu dGF0aW9uLAorICAgICIyMlAwMyI6IEludmFsaWRCaW5hcnlSZXByZXNlbnRhdGlvbiwKKyAgICAi MjJQMDQiOiBCYWRDb3B5RmlsZUZvcm1hdCwKKyAgICAiMjJQMDUiOiBVbnRyYW5zbGF0YWJsZUNo YXJhY3RlciwKKyAgICAiMjIwMEwiOiBOb3RBblhtbERvY3VtZW50LAorICAgICIyMjAwTSI6IElu dmFsaWRYbWxEb2N1bWVudCwKKyAgICAiMjIwME4iOiBJbnZhbGlkWG1sQ29udGVudCwKKyAgICAi MjIwMFMiOiBJbnZhbGlkWG1sQ29tbWVudCwKKyAgICAiMjIwMFQiOiBJbnZhbGlkWG1sUHJvY2Vz c2luZ0luc3RydWN0aW9uLAorICAgICIyMjAzMCI6IER1cGxpY2F0ZUpzb25PYmplY3RLZXlWYWx1 ZSwKKyAgICAiMjIwMzEiOiBJbnZhbGlkQXJndW1lbnRGb3JTUUxKc29uRGF0ZXRpbWVGdW5jdGlv biwKKyAgICAiMjIwMzIiOiBJbnZhbGlkSnNvblRleHQsCisgICAgIjIyMDMzIjogSW52YWxpZFNR TEpzb25TdWJzY3JpcHQsCisgICAgIjIyMDM0IjogTW9yZVRoYW5PbmVTUUxKc29uSXRlbSwKKyAg ICAiMjIwMzUiOiBOb1NRTEpzb25JdGVtLAorICAgICIyMjAzNiI6IE5vbk51bWVyaWNTUUxKc29u SXRlbSwKKyAgICAiMjIwMzciOiBOb25VbmlxdWVLZXlzSW5BSnNvbk9iamVjdCwKKyAgICAiMjIw MzgiOiBTaW5nbGV0b25TUUxKc29uSXRlbVJlcXVpcmVkLAorICAgICIyMjAzOSI6IFNRTEpzb25B cnJheU5vdEZvdW5kLAorICAgICIyMjAzQSI6IFNRTEpzb25NZW1iZXJOb3RGb3VuZCwKKyAgICAi MjIwM0IiOiBTUUxKc29uTnVtYmVyTm90Rm91bmQsCisgICAgIjIyMDNDIjogU1FMSnNvbk9iamVj dE5vdEZvdW5kLAorICAgICIyMjAzRCI6IFRvb01hbnlKc29uQXJyYXlFbGVtZW50cywKKyAgICAi MjIwM0UiOiBUb29NYW55SnNvbk9iamVjdE1lbWJlcnMsCisgICAgIjIyMDNGIjogU1FMSnNvblNj YWxhclJlcXVpcmVkLAorICAgICIyMjAzRyI6IFNRTEpzb25JdGVtQ2Fubm90QmVDYXN0VG9UYXJn ZXRUeXBlLAorICAgICIyMzAwMCI6IEludGVncml0eUNvbnN0cmFpbnRWaW9sYXRpb24sCisgICAg IjIzMDAxIjogUmVzdHJpY3RWaW9sYXRpb24sCisgICAgIjIzNTAyIjogTm90TnVsbFZpb2xhdGlv biwKKyAgICAiMjM1MDMiOiBGb3JlaWduS2V5VmlvbGF0aW9uLAorICAgICIyMzUwNSI6IFVuaXF1 ZVZpb2xhdGlvbiwKKyAgICAiMjM1MTQiOiBDaGVja1Zpb2xhdGlvbiwKKyAgICAiMjNQMDEiOiBF eGNsdXNpb25WaW9sYXRpb24sCisgICAgIjI0MDAwIjogSW52YWxpZEN1cnNvclN0YXRlLAorICAg ICIyNTAwMCI6IEludmFsaWRUcmFuc2FjdGlvblN0YXRlLAorICAgICIyNTAwMSI6IEFjdGl2ZVNR TFRyYW5zYWN0aW9uLAorICAgICIyNTAwMiI6IEJyYW5jaFRyYW5zYWN0aW9uQWxyZWFkeUFjdGl2 ZSwKKyAgICAiMjUwMDgiOiBIZWxkQ3Vyc29yUmVxdWlyZXNTYW1lSXNvbGF0aW9uTGV2ZWwsCisg ICAgIjI1MDAzIjogSW5hcHByb3ByaWF0ZUFjY2Vzc01vZGVGb3JCcmFuY2hUcmFuc2FjdGlvbiwK KyAgICAiMjUwMDQiOiBJbmFwcHJvcHJpYXRlSXNvbGF0aW9uTGV2ZWxGb3JCcmFuY2hUcmFuc2Fj dGlvbiwKKyAgICAiMjUwMDUiOiBOb0FjdGl2ZVNRTFRyYW5zYWN0aW9uRm9yQnJhbmNoVHJhbnNh Y3Rpb24sCisgICAgIjI1MDA2IjogUmVhZE9ubHlTUUxUcmFuc2FjdGlvbiwKKyAgICAiMjUwMDci OiBTY2hlbWFBbmREYXRhU3RhdGVtZW50TWl4aW5nTm90U3VwcG9ydGVkLAorICAgICIyNVAwMSI6 IE5vQWN0aXZlU1FMVHJhbnNhY3Rpb24sCisgICAgIjI1UDAyIjogSW5GYWlsZWRTUUxUcmFuc2Fj dGlvbiwKKyAgICAiMjVQMDMiOiBJZGxlSW5UcmFuc2FjdGlvblNlc3Npb25UaW1lb3V0LAorICAg ICIyNVAwNCI6IFRyYW5zYWN0aW9uVGltZW91dCwKKyAgICAiMjYwMDAiOiBJbnZhbGlkU1FMU3Rh dGVtZW50TmFtZSwKKyAgICAiMjcwMDAiOiBUcmlnZ2VyZWREYXRhQ2hhbmdlVmlvbGF0aW9uLAor ICAgICIyODAwMCI6IEludmFsaWRBdXRob3JpemF0aW9uU3BlY2lmaWNhdGlvbiwKKyAgICAiMjhQ MDEiOiBJbnZhbGlkUGFzc3dvcmQsCisgICAgIjJCMDAwIjogRGVwZW5kZW50UHJpdmlsZWdlRGVz Y3JpcHRvcnNTdGlsbEV4aXN0LAorICAgICIyQlAwMSI6IERlcGVuZGVudE9iamVjdHNTdGlsbEV4 aXN0LAorICAgICIyRDAwMCI6IEludmFsaWRUcmFuc2FjdGlvblRlcm1pbmF0aW9uLAorICAgICIy RjAwMCI6IFNRTFJvdXRpbmVFeGNlcHRpb24sCisgICAgIjJGMDA1IjogRnVuY3Rpb25FeGVjdXRl ZE5vUmV0dXJuU3RhdGVtZW50LAorICAgICIyRjAwMiI6IFNSRU1vZGlmeWluZ1NRTERhdGFOb3RQ ZXJtaXR0ZWQsCisgICAgIjJGMDAzIjogU1JFUHJvaGliaXRlZFNRTFN0YXRlbWVudEF0dGVtcHRl ZCwKKyAgICAiMkYwMDQiOiBTUkVSZWFkaW5nU1FMRGF0YU5vdFBlcm1pdHRlZCwKKyAgICAiMzQw MDAiOiBJbnZhbGlkQ3Vyc29yTmFtZSwKKyAgICAiMzgwMDAiOiBFeHRlcm5hbFJvdXRpbmVFeGNl cHRpb24sCisgICAgIjM4MDAxIjogQ29udGFpbmluZ1NRTE5vdFBlcm1pdHRlZCwKKyAgICAiMzgw MDIiOiBFUkVNb2RpZnlpbmdTUUxEYXRhTm90UGVybWl0dGVkLAorICAgICIzODAwMyI6IEVSRVBy b2hpYml0ZWRTUUxTdGF0ZW1lbnRBdHRlbXB0ZWQsCisgICAgIjM4MDA0IjogRVJFUmVhZGluZ1NR TERhdGFOb3RQZXJtaXR0ZWQsCisgICAgIjM5MDAwIjogRXh0ZXJuYWxSb3V0aW5lSW52b2NhdGlv bkV4Y2VwdGlvbiwKKyAgICAiMzkwMDEiOiBJbnZhbGlkU3Fsc3RhdGVSZXR1cm5lZCwKKyAgICAi MzkwMDQiOiBFUklFTnVsbFZhbHVlTm90QWxsb3dlZCwKKyAgICAiMzlQMDEiOiBUcmlnZ2VyUHJv dG9jb2xWaW9sYXRlZCwKKyAgICAiMzlQMDIiOiBTcmZQcm90b2NvbFZpb2xhdGVkLAorICAgICIz OVAwMyI6IEV2ZW50VHJpZ2dlclByb3RvY29sVmlvbGF0ZWQsCisgICAgIjNCMDAwIjogU2F2ZXBv aW50RXhjZXB0aW9uLAorICAgICIzQjAwMSI6IEludmFsaWRTYXZlcG9pbnRTcGVjaWZpY2F0aW9u LAorICAgICIzRDAwMCI6IEludmFsaWRDYXRhbG9nTmFtZSwKKyAgICAiM0YwMDAiOiBJbnZhbGlk U2NoZW1hTmFtZSwKKyAgICAiNDAwMDAiOiBUcmFuc2FjdGlvblJvbGxiYWNrLAorICAgICI0MDAw MiI6IFRyYW5zYWN0aW9uSW50ZWdyaXR5Q29uc3RyYWludFZpb2xhdGlvbiwKKyAgICAiNDAwMDEi OiBTZXJpYWxpemF0aW9uRmFpbHVyZSwKKyAgICAiNDAwMDMiOiBTdGF0ZW1lbnRDb21wbGV0aW9u VW5rbm93biwKKyAgICAiNDBQMDEiOiBEZWFkbG9ja0RldGVjdGVkLAorICAgICI0MjAwMCI6IFN5 bnRheEVycm9yT3JBY2Nlc3NSdWxlVmlvbGF0aW9uLAorICAgICI0MjYwMSI6IFN5bnRheEVycm9y LAorICAgICI0MjUwMSI6IEluc3VmZmljaWVudFByaXZpbGVnZSwKKyAgICAiNDI4NDYiOiBDYW5u b3RDb2VyY2UsCisgICAgIjQyODAzIjogR3JvdXBpbmdFcnJvciwKKyAgICAiNDJQMjAiOiBXaW5k b3dpbmdFcnJvciwKKyAgICAiNDJQMTkiOiBJbnZhbGlkUmVjdXJzaW9uLAorICAgICI0MjgzMCI6 IEludmFsaWRGb3JlaWduS2V5LAorICAgICI0MjYwMiI6IEludmFsaWROYW1lLAorICAgICI0MjYy MiI6IE5hbWVUb29Mb25nLAorICAgICI0MjkzOSI6IFJlc2VydmVkTmFtZSwKKyAgICAiNDI4MDQi OiBEYXRhdHlwZU1pc21hdGNoLAorICAgICI0MlAxOCI6IEluZGV0ZXJtaW5hdGVEYXRhdHlwZSwK KyAgICAiNDJQMjEiOiBDb2xsYXRpb25NaXNtYXRjaCwKKyAgICAiNDJQMjIiOiBJbmRldGVybWlu YXRlQ29sbGF0aW9uLAorICAgICI0MjgwOSI6IFdyb25nT2JqZWN0VHlwZSwKKyAgICAiNDI4Qzki OiBHZW5lcmF0ZWRBbHdheXMsCisgICAgIjQyNzAzIjogVW5kZWZpbmVkQ29sdW1uLAorICAgICI0 Mjg4MyI6IFVuZGVmaW5lZEZ1bmN0aW9uLAorICAgICI0MlAwMSI6IFVuZGVmaW5lZFRhYmxlLAor ICAgICI0MlAwMiI6IFVuZGVmaW5lZFBhcmFtZXRlciwKKyAgICAiNDI3MDQiOiBVbmRlZmluZWRP YmplY3QsCisgICAgIjQyNzAxIjogRHVwbGljYXRlQ29sdW1uLAorICAgICI0MlAwMyI6IER1cGxp Y2F0ZUN1cnNvciwKKyAgICAiNDJQMDQiOiBEdXBsaWNhdGVEYXRhYmFzZSwKKyAgICAiNDI3MjMi OiBEdXBsaWNhdGVGdW5jdGlvbiwKKyAgICAiNDJQMDUiOiBEdXBsaWNhdGVQcmVwYXJlZFN0YXRl bWVudCwKKyAgICAiNDJQMDYiOiBEdXBsaWNhdGVTY2hlbWEsCisgICAgIjQyUDA3IjogRHVwbGlj YXRlVGFibGUsCisgICAgIjQyNzEyIjogRHVwbGljYXRlQWxpYXMsCisgICAgIjQyNzEwIjogRHVw bGljYXRlT2JqZWN0LAorICAgICI0MjcwMiI6IEFtYmlndW91c0NvbHVtbiwKKyAgICAiNDI3MjUi OiBBbWJpZ3VvdXNGdW5jdGlvbiwKKyAgICAiNDJQMDgiOiBBbWJpZ3VvdXNQYXJhbWV0ZXIsCisg ICAgIjQyUDA5IjogQW1iaWd1b3VzQWxpYXMsCisgICAgIjQyUDEwIjogSW52YWxpZENvbHVtblJl ZmVyZW5jZSwKKyAgICAiNDI2MTEiOiBJbnZhbGlkQ29sdW1uRGVmaW5pdGlvbiwKKyAgICAiNDJQ MTEiOiBJbnZhbGlkQ3Vyc29yRGVmaW5pdGlvbiwKKyAgICAiNDJQMTIiOiBJbnZhbGlkRGF0YWJh c2VEZWZpbml0aW9uLAorICAgICI0MlAxMyI6IEludmFsaWRGdW5jdGlvbkRlZmluaXRpb24sCisg ICAgIjQyUDE0IjogSW52YWxpZFByZXBhcmVkU3RhdGVtZW50RGVmaW5pdGlvbiwKKyAgICAiNDJQ MTUiOiBJbnZhbGlkU2NoZW1hRGVmaW5pdGlvbiwKKyAgICAiNDJQMTYiOiBJbnZhbGlkVGFibGVE ZWZpbml0aW9uLAorICAgICI0MlAxNyI6IEludmFsaWRPYmplY3REZWZpbml0aW9uLAorICAgICI0 NDAwMCI6IFdpdGhDaGVja09wdGlvblZpb2xhdGlvbiwKKyAgICAiNTMwMDAiOiBJbnN1ZmZpY2ll bnRSZXNvdXJjZXMsCisgICAgIjUzMTAwIjogRGlza0Z1bGwsCisgICAgIjUzMjAwIjogT3V0T2ZN ZW1vcnksCisgICAgIjUzMzAwIjogVG9vTWFueUNvbm5lY3Rpb25zLAorICAgICI1MzQwMCI6IENv bmZpZ3VyYXRpb25MaW1pdEV4Y2VlZGVkLAorICAgICI1NDAwMCI6IFByb2dyYW1MaW1pdEV4Y2Vl ZGVkLAorICAgICI1NDAwMSI6IFN0YXRlbWVudFRvb0NvbXBsZXgsCisgICAgIjU0MDExIjogVG9v TWFueUNvbHVtbnMsCisgICAgIjU0MDIzIjogVG9vTWFueUFyZ3VtZW50cywKKyAgICAiNTUwMDAi OiBPYmplY3ROb3RJblByZXJlcXVpc2l0ZVN0YXRlLAorICAgICI1NTAwNiI6IE9iamVjdEluVXNl LAorICAgICI1NVAwMiI6IENhbnRDaGFuZ2VSdW50aW1lUGFyYW0sCisgICAgIjU1UDAzIjogTG9j a05vdEF2YWlsYWJsZSwKKyAgICAiNTVQMDQiOiBVbnNhZmVOZXdFbnVtVmFsdWVVc2FnZSwKKyAg ICAiNTcwMDAiOiBPcGVyYXRvckludGVydmVudGlvbiwKKyAgICAiNTcwMTQiOiBRdWVyeUNhbmNl bGVkLAorICAgICI1N1AwMSI6IEFkbWluU2h1dGRvd24sCisgICAgIjU3UDAyIjogQ3Jhc2hTaHV0 ZG93biwKKyAgICAiNTdQMDMiOiBDYW5ub3RDb25uZWN0Tm93LAorICAgICI1N1AwNCI6IERhdGFi YXNlRHJvcHBlZCwKKyAgICAiNTdQMDUiOiBJZGxlU2Vzc2lvblRpbWVvdXQsCisgICAgIjU4MDAw IjogU3lzdGVtRXJyb3IsCisgICAgIjU4MDMwIjogSW9FcnJvciwKKyAgICAiNThQMDEiOiBVbmRl ZmluZWRGaWxlLAorICAgICI1OFAwMiI6IER1cGxpY2F0ZUZpbGUsCisgICAgIjU4UDAzIjogRmls ZU5hbWVUb29Mb25nLAorICAgICJGMDAwMCI6IENvbmZpZ0ZpbGVFcnJvciwKKyAgICAiRjAwMDEi OiBMb2NrRmlsZUV4aXN0cywKKyAgICAiSFYwMDAiOiBGRFdFcnJvciwKKyAgICAiSFYwMDUiOiBG RFdDb2x1bW5OYW1lTm90Rm91bmQsCisgICAgIkhWMDAyIjogRkRXRHluYW1pY1BhcmFtZXRlclZh bHVlTmVlZGVkLAorICAgICJIVjAxMCI6IEZEV0Z1bmN0aW9uU2VxdWVuY2VFcnJvciwKKyAgICAi SFYwMjEiOiBGRFdJbmNvbnNpc3RlbnREZXNjcmlwdG9ySW5mb3JtYXRpb24sCisgICAgIkhWMDI0 IjogRkRXSW52YWxpZEF0dHJpYnV0ZVZhbHVlLAorICAgICJIVjAwNyI6IEZEV0ludmFsaWRDb2x1 bW5OYW1lLAorICAgICJIVjAwOCI6IEZEV0ludmFsaWRDb2x1bW5OdW1iZXIsCisgICAgIkhWMDA0 IjogRkRXSW52YWxpZERhdGFUeXBlLAorICAgICJIVjAwNiI6IEZEV0ludmFsaWREYXRhVHlwZURl c2NyaXB0b3JzLAorICAgICJIVjA5MSI6IEZEV0ludmFsaWREZXNjcmlwdG9yRmllbGRJZGVudGlm aWVyLAorICAgICJIVjAwQiI6IEZEV0ludmFsaWRIYW5kbGUsCisgICAgIkhWMDBDIjogRkRXSW52 YWxpZE9wdGlvbkluZGV4LAorICAgICJIVjAwRCI6IEZEV0ludmFsaWRPcHRpb25OYW1lLAorICAg ICJIVjA5MCI6IEZEV0ludmFsaWRTdHJpbmdMZW5ndGhPckJ1ZmZlckxlbmd0aCwKKyAgICAiSFYw MEEiOiBGRFdJbnZhbGlkU3RyaW5nRm9ybWF0LAorICAgICJIVjAwOSI6IEZEV0ludmFsaWRVc2VP Zk51bGxQb2ludGVyLAorICAgICJIVjAxNCI6IEZEV1Rvb01hbnlIYW5kbGVzLAorICAgICJIVjAw MSI6IEZEV091dE9mTWVtb3J5LAorICAgICJIVjAwUCI6IEZEV05vU2NoZW1hcywKKyAgICAiSFYw MEoiOiBGRFdPcHRpb25OYW1lTm90Rm91bmQsCisgICAgIkhWMDBLIjogRkRXUmVwbHlIYW5kbGUs CisgICAgIkhWMDBRIjogRkRXU2NoZW1hTm90Rm91bmQsCisgICAgIkhWMDBSIjogRkRXVGFibGVO b3RGb3VuZCwKKyAgICAiSFYwMEwiOiBGRFdVbmFibGVUb0NyZWF0ZUV4ZWN1dGlvbiwKKyAgICAi SFYwME0iOiBGRFdVbmFibGVUb0NyZWF0ZVJlcGx5LAorICAgICJIVjAwTiI6IEZEV1VuYWJsZVRv RXN0YWJsaXNoQ29ubmVjdGlvbiwKKyAgICAiUDAwMDAiOiBQbHBnc3FsRXJyb3IsCisgICAgIlAw MDAxIjogUmFpc2VFeGNlcHRpb24sCisgICAgIlAwMDAyIjogTm9EYXRhRm91bmQsCisgICAgIlAw MDAzIjogVG9vTWFueVJvd3MsCisgICAgIlAwMDA0IjogQXNzZXJ0RmFpbHVyZSwKKyAgICAiWFgw MDAiOiBJbnRlcm5hbEVycm9yLAorICAgICJYWDAwMSI6IERhdGFDb3JydXB0ZWQsCisgICAgIlhY MDAyIjogSW5kZXhDb3JydXB0ZWQsCit9CisKKworX19hbGxfXyA9IFsKKyAgICAiSW52YWxpZEN1 cnNvck5hbWUiLAorICAgICJVbmRlZmluZWRQYXJhbWV0ZXIiLAorICAgICJVbmRlZmluZWRDb2x1 bW4iLAorICAgICJOb3RBblhtbERvY3VtZW50IiwKKyAgICAiRkRXT3V0T2ZNZW1vcnkiLAorICAg ICJJbnZhbGlkUm9sZVNwZWNpZmljYXRpb24iLAorICAgICJJbnZhbGlkQXJndW1lbnRGb3JOdGhW YWx1ZUZ1bmN0aW9uIiwKKyAgICAiU1FMSnNvbk9iamVjdE5vdEZvdW5kIiwKKyAgICAiRkRXU2No ZW1hTm90Rm91bmQiLAorICAgICJJbnZhbGlkUGFyYW1ldGVyVmFsdWUiLAorICAgICJJbnZhbGlk VGFibGVEZWZpbml0aW9uIiwKKyAgICAiQXNzZXJ0RmFpbHVyZSIsCisgICAgIkZEV0ludmFsaWRP cHRpb25OYW1lIiwKKyAgICAiSW52YWxpZEVzY2FwZU9jdGV0IiwKKyAgICAiUmVhZE9ubHlTUUxU cmFuc2FjdGlvbiIsCisgICAgIkV4dGVybmFsUm91dGluZUludm9jYXRpb25FeGNlcHRpb24iLAor ICAgICJDcmFzaFNodXRkb3duIiwKKyAgICAiRkRXSW52YWxpZE9wdGlvbkluZGV4IiwKKyAgICAi Tm90TnVsbFZpb2xhdGlvbiIsCisgICAgIkNvbmZpZ0ZpbGVFcnJvciIsCisgICAgIkludmFsaWRT UUxKc29uU3Vic2NyaXB0IiwKKyAgICAiSW52YWxpZEZvcmVpZ25LZXkiLAorICAgICJJbnN1ZmZp Y2llbnRSZXNvdXJjZXMiLAorICAgICJPYmplY3ROb3RJblByZXJlcXVpc2l0ZVN0YXRlIiwKKyAg ICAiSW52YWxpZFJvd0NvdW50SW5MaW1pdENsYXVzZSIsCisgICAgIkludGVydmFsRmllbGRPdmVy ZmxvdyIsCisgICAgIkNvbGxhdGlvbk1pc21hdGNoIiwKKyAgICAiSW52YWxpZEFyZ3VtZW50Rm9y TnRpbGVGdW5jdGlvbiIsCisgICAgIkludmFsaWRDaGFyYWN0ZXJWYWx1ZUZvckNhc3QiLAorICAg ICJOb25VbmlxdWVLZXlzSW5BSnNvbk9iamVjdCIsCisgICAgIkRlcGVuZGVudFByaXZpbGVnZURl c2NyaXB0b3JzU3RpbGxFeGlzdCIsCisgICAgIkluRmFpbGVkU1FMVHJhbnNhY3Rpb24iLAorICAg ICJHcm91cGluZ0Vycm9yIiwKKyAgICAiVHJhbnNhY3Rpb25UaW1lb3V0IiwKKyAgICAiQ2FzZU5v dEZvdW5kIiwKKyAgICAiQ29ubmVjdGlvbkV4Y2VwdGlvbiIsCisgICAgIkR1cGxpY2F0ZUpzb25P YmplY3RLZXlWYWx1ZSIsCisgICAgIkludmFsaWRTY2hlbWFEZWZpbml0aW9uIiwKKyAgICAiRkRX VW5hYmxlVG9DcmVhdGVSZXBseSIsCisgICAgIlVuZGVmaW5lZFRhYmxlIiwKKyAgICAiU2VxdWVu Y2VHZW5lcmF0b3JMaW1pdEV4Y2VlZGVkIiwKKyAgICAiSW52YWxpZEpzb25UZXh0IiwKKyAgICAi SWRsZVNlc3Npb25UaW1lb3V0IiwKKyAgICAiTnVsbFZhbHVlTm90QWxsb3dlZCIsCisgICAgIkJy YW5jaFRyYW5zYWN0aW9uQWxyZWFkeUFjdGl2ZSIsCisgICAgIkludmFsaWRHcmFudE9wZXJhdGlv biIsCisgICAgIk51bGxWYWx1ZU5vSW5kaWNhdG9yUGFyYW1ldGVyIiwKKyAgICAiUHJvdG9jb2xW aW9sYXRpb24iLAorICAgICJGRFdJbnZhbGlkRGF0YVR5cGVEZXNjcmlwdG9ycyIsCisgICAgIlRy aWdnZXJlZERhdGFDaGFuZ2VWaW9sYXRpb24iLAorICAgICJFeHRlcm5hbFJvdXRpbmVFeGNlcHRp b24iLAorICAgICJJbnZhbGlkU3Fsc3RhdGVSZXR1cm5lZCIsCisgICAgIlBscGdzcWxFcnJvciIs CisgICAgIkludmFsaWRYbWxDb250ZW50IiwKKyAgICAiVHJpZ2dlcmVkQWN0aW9uRXhjZXB0aW9u IiwKKyAgICAiU1FMQ2xpZW50VW5hYmxlVG9Fc3RhYmxpc2hTUUxDb25uZWN0aW9uIiwKKyAgICAi RkRXVGFibGVOb3RGb3VuZCIsCisgICAgIk51bWVyaWNWYWx1ZU91dE9mUmFuZ2UiLAorICAgICJS ZXN0cmljdFZpb2xhdGlvbiIsCisgICAgIkFtYmlndW91c1BhcmFtZXRlciIsCisgICAgIlN0YXRl bWVudFRvb0NvbXBsZXgiLAorICAgICJVbnNhZmVOZXdFbnVtVmFsdWVVc2FnZSIsCisgICAgIk5v bk51bWVyaWNTUUxKc29uSXRlbSIsCisgICAgIkludmFsaWRJbmRpY2F0b3JQYXJhbWV0ZXJWYWx1 ZSIsCisgICAgIkV4Y2x1c2lvblZpb2xhdGlvbiIsCisgICAgIk9wZXJhdG9ySW50ZXJ2ZW50aW9u IiwKKyAgICAiUXVlcnlDYW5jZWxlZCIsCisgICAgIldhcm5pbmciLAorICAgICJJbnZhbGlkQXJn dW1lbnRGb3JTUUxKc29uRGF0ZXRpbWVGdW5jdGlvbiIsCisgICAgIkZvcmVpZ25LZXlWaW9sYXRp b24iLAorICAgICJTdHJpbmdEYXRhTGVuZ3RoTWlzbWF0Y2giLAorICAgICJTUUxSb3V0aW5lRXhj ZXB0aW9uIiwKKyAgICAiVG9vTWFueUNvbm5lY3Rpb25zIiwKKyAgICAiVG9vTWFueUpzb25PYmpl Y3RNZW1iZXJzIiwKKyAgICAiTm9EYXRhIiwKKyAgICAiVW50cmFuc2xhdGFibGVDaGFyYWN0ZXIi LAorICAgICJGRFdVbmFibGVUb0VzdGFibGlzaENvbm5lY3Rpb24iLAorICAgICJMb2NrRmlsZUV4 aXN0cyIsCisgICAgIlNSRVJlYWRpbmdTUUxEYXRhTm90UGVybWl0dGVkIiwKKyAgICAiSW5kZXRl cm1pbmF0ZURhdGF0eXBlIiwKKyAgICAiQ2hlY2tWaW9sYXRpb24iLAorICAgICJJbnZhbGlkRGF0 YWJhc2VEZWZpbml0aW9uIiwKKyAgICAiTm9BY3RpdmVTUUxUcmFuc2FjdGlvbkZvckJyYW5jaFRy YW5zYWN0aW9uIiwKKyAgICAiU1FMU2VydmVyUmVqZWN0ZWRFc3RhYmxpc2htZW50T2ZTUUxDb25u ZWN0aW9uIiwKKyAgICAiRHVwbGljYXRlRmlsZSIsCisgICAgIkZEV0ludmFsaWRDb2x1bW5OdW1i ZXIiLAorICAgICJUcmFuc2FjdGlvblJvbGxiYWNrIiwKKyAgICAiTW9yZVRoYW5PbmVTUUxKc29u SXRlbSIsCisgICAgIldpdGhDaGVja09wdGlvblZpb2xhdGlvbiIsCisgICAgIkZEV05vU2NoZW1h cyIsCisgICAgIkdlbmVyYXRlZEFsd2F5cyIsCisgICAgIkNhbm5vdENvbm5lY3ROb3ciLAorICAg ICJDYXJkaW5hbGl0eVZpb2xhdGlvbiIsCisgICAgIkludmFsaWRBdXRob3JpemF0aW9uU3BlY2lm aWNhdGlvbiIsCisgICAgIlNRTEpzb25OdW1iZXJOb3RGb3VuZCIsCisgICAgIlNRTEpzb25NZW1i ZXJOb3RGb3VuZCIsCisgICAgIkludmFsaWRVc2VPZkVzY2FwZUNoYXJhY3RlciIsCisgICAgIlVu dGVybWluYXRlZENTdHJpbmciLAorICAgICJUcmltRXJyb3IiLAorICAgICJTcmZQcm90b2NvbFZp b2xhdGVkIiwKKyAgICAiRGlza0Z1bGwiLAorICAgICJUb29NYW55Q29sdW1ucyIsCisgICAgIklu dmFsaWRPYmplY3REZWZpbml0aW9uIiwKKyAgICAiSW52YWxpZEFyZ3VtZW50Rm9yTG9nYXJpdGht IiwKKyAgICAiVG9vTWFueUpzb25BcnJheUVsZW1lbnRzIiwKKyAgICAiT3V0T2ZNZW1vcnkiLAor ICAgICJFUkVQcm9oaWJpdGVkU1FMU3RhdGVtZW50QXR0ZW1wdGVkIiwKKyAgICAiRkRXSW52YWxp ZFN0cmluZ0Zvcm1hdCIsCisgICAgIlN0YWNrZWREaWFnbm9zdGljc0FjY2Vzc2VkV2l0aG91dEFj dGl2ZUhhbmRsZXIiLAorICAgICJTY2hlbWFBbmREYXRhU3RhdGVtZW50TWl4aW5nTm90U3VwcG9y dGVkIiwKKyAgICAiSW50ZXJuYWxFcnJvciIsCisgICAgIkludmFsaWRFc2NhcGVDaGFyYWN0ZXIi LAorICAgICJGRFdFcnJvciIsCisgICAgIkltcGxpY2l0WmVyb0JpdFBhZGRpbmdXYXJuaW5nIiwK KyAgICAiRGl2aXNpb25CeVplcm8iLAorICAgICJJbnZhbGlkVGFibGVzYW1wbGVBcmd1bWVudCIs CisgICAgIkRlYWRsb2NrRGV0ZWN0ZWQiLAorICAgICJDYW50Q2hhbmdlUnVudGltZVBhcmFtIiwK KyAgICAiVW5kZWZpbmVkT2JqZWN0IiwKKyAgICAiVW5pcXVlVmlvbGF0aW9uIiwKKyAgICAiSW52 YWxpZEN1cnNvckRlZmluaXRpb24iLAorICAgICJDb25uZWN0aW9uRmFpbHVyZSIsCisgICAgIlVu ZGVmaW5lZEZ1bmN0aW9uIiwKKyAgICAiRkRXRnVuY3Rpb25TZXF1ZW5jZUVycm9yIiwKKyAgICAi RXJyb3JJbkFzc2lnbm1lbnQiLAorICAgICJTdWNjZXNzZnVsQ29tcGxldGlvbiIsCisgICAgIlN0 cmluZ0RhdGFSaWdodFRydW5jYXRpb24iLAorICAgICJGRFdUb29NYW55SGFuZGxlcyIsCisgICAg IkZEV0ludmFsaWREYXRhVHlwZSIsCisgICAgIkFjdGl2ZVNRTFRyYW5zYWN0aW9uIiwKKyAgICAi SW52YWxpZFRleHRSZXByZXNlbnRhdGlvbiIsCisgICAgIkludmFsaWRTUUxTdGF0ZW1lbnROYW1l IiwKKyAgICAiUHJpdmlsZWdlTm90R3JhbnRlZFdhcm5pbmciLAorICAgICJTUkVNb2RpZnlpbmdT UUxEYXRhTm90UGVybWl0dGVkIiwKKyAgICAiSW5kZXRlcm1pbmF0ZUNvbGxhdGlvbiIsCisgICAg IlN5c3RlbUVycm9yIiwKKyAgICAiTnVsbFZhbHVlRWxpbWluYXRlZEluU2V0RnVuY3Rpb25XYXJu aW5nIiwKKyAgICAiRGVwZW5kZW50T2JqZWN0c1N0aWxsRXhpc3QiLAorICAgICJJbnZhbGlkU2No ZW1hTmFtZSIsCisgICAgIkR1cGxpY2F0ZUNvbHVtbiIsCisgICAgIkZ1bmN0aW9uRXhlY3V0ZWRO b1JldHVyblN0YXRlbWVudCIsCisgICAgIkludmFsaWRDb2x1bW5EZWZpbml0aW9uIiwKKyAgICAi RHluYW1pY1Jlc3VsdFNldHNSZXR1cm5lZFdhcm5pbmciLAorICAgICJJZGxlSW5UcmFuc2FjdGlv blNlc3Npb25UaW1lb3V0IiwKKyAgICAiU3RhdGVtZW50Q29tcGxldGlvblVua25vd24iLAorICAg ICJDYW5ub3RDb2VyY2UiLAorICAgICJJbnZhbGlkVHJhbnNhY3Rpb25TdGF0ZSIsCisgICAgIkR1 cGxpY2F0ZVRhYmxlIiwKKyAgICAiQmFkQ29weUZpbGVGb3JtYXQiLAorICAgICJaZXJvTGVuZ3Ro Q2hhcmFjdGVyU3RyaW5nIiwKKyAgICAiU3ludGF4RXJyb3JPckFjY2Vzc1J1bGVWaW9sYXRpb24i LAorICAgICJTaW5nbGV0b25TUUxKc29uSXRlbVJlcXVpcmVkIiwKKyAgICAiSW5kZXhDb3JydXB0 ZWQiLAorICAgICJGRFdJbnZhbGlkQ29sdW1uTmFtZSIsCisgICAgIkRhdGFDb3JydXB0ZWQiLAor ICAgICJFUklFTnVsbFZhbHVlTm90QWxsb3dlZCIsCisgICAgIkFycmF5U3Vic2NyaXB0RXJyb3Ii LAorICAgICJGRFdSZXBseUhhbmRsZSIsCisgICAgIkRpYWdub3N0aWNzRXhjZXB0aW9uIiwKKyAg ICAiSW52YWxpZFRhYmxlc2FtcGxlUmVwZWF0IiwKKyAgICAiU1FMSnNvbkl0ZW1DYW5ub3RCZUNh c3RUb1RhcmdldFR5cGUiLAorICAgICJGRFdJbnZhbGlkSGFuZGxlIiwKKyAgICAiSW52YWxpZFBh c3N3b3JkIiwKKyAgICAiSW52YWxpZEVzY2FwZVNlcXVlbmNlIiwKKyAgICAiRXNjYXBlQ2hhcmFj dGVyQ29uZmxpY3QiLAorICAgICJJbnZhbGlkU2F2ZXBvaW50U3BlY2lmaWNhdGlvbiIsCisgICAg IkZEV0ludmFsaWRBdHRyaWJ1dGVWYWx1ZSIsCisgICAgIkNvbnRhaW5pbmdTUUxOb3RQZXJtaXR0 ZWQiLAorICAgICJMb2NhdG9yRXhjZXB0aW9uIiwKKyAgICAiRGF0YXR5cGVNaXNtYXRjaCIsCisg ICAgIkludmFsaWRDdXJzb3JTdGF0ZSIsCisgICAgIkludmFsaWROYW1lIiwKKyAgICAiSW5kaWNh dG9yT3ZlcmZsb3ciLAorICAgICJSZXNlcnZlZE5hbWUiLAorICAgICJEYXRldGltZUZpZWxkT3Zl cmZsb3ciLAorICAgICJGRFdJbmNvbnNpc3RlbnREZXNjcmlwdG9ySW5mb3JtYXRpb24iLAorICAg ICJGbG9hdGluZ1BvaW50RXhjZXB0aW9uIiwKKyAgICAiQW1iaWd1b3VzQWxpYXMiLAorICAgICJJ bnZhbGlkUmVjdXJzaW9uIiwKKyAgICAiV3JvbmdPYmplY3RUeXBlIiwKKyAgICAiVW5kZWZpbmVk RmlsZSIsCisgICAgIkxvY2tOb3RBdmFpbGFibGUiLAorICAgICJJbnZhbGlkUm93Q291bnRJblJl c3VsdE9mZnNldENsYXVzZSIsCisgICAgIk9iamVjdEluVXNlIiwKKyAgICAiRGVwcmVjYXRlZEZl YXR1cmVXYXJuaW5nIiwKKyAgICAiRkRXRHluYW1pY1BhcmFtZXRlclZhbHVlTmVlZGVkIiwKKyAg ICAiRHVwbGljYXRlRnVuY3Rpb24iLAorICAgICJJbnZhbGlkWG1sRG9jdW1lbnQiLAorICAgICJT dHJpbmdEYXRhUmlnaHRUcnVuY2F0aW9uV2FybmluZyIsCisgICAgIkR1cGxpY2F0ZVByZXBhcmVk U3RhdGVtZW50IiwKKyAgICAiSW52YWxpZEdyYW50b3IiLAorICAgICJFdmVudFRyaWdnZXJQcm90 b2NvbFZpb2xhdGVkIiwKKyAgICAiRkRXSW52YWxpZFVzZU9mTnVsbFBvaW50ZXIiLAorICAgICJG RFdVbmFibGVUb0NyZWF0ZUV4ZWN1dGlvbiIsCisgICAgIkNvbm5lY3Rpb25Eb2VzTm90RXhpc3Qi LAorICAgICJJbnZhbGlkQ2F0YWxvZ05hbWUiLAorICAgICJJbnZhbGlkQXJndW1lbnRGb3JYcXVl cnkiLAorICAgICJGRFdDb2x1bW5OYW1lTm90Rm91bmQiLAorICAgICJUcmFuc2FjdGlvbkludGVn cml0eUNvbnN0cmFpbnRWaW9sYXRpb24iLAorICAgICJJbnZhbGlkUHJlcGFyZWRTdGF0ZW1lbnRE ZWZpbml0aW9uIiwKKyAgICAiRkRXSW52YWxpZERlc2NyaXB0b3JGaWVsZElkZW50aWZpZXIiLAor ICAgICJGRFdPcHRpb25OYW1lTm90Rm91bmQiLAorICAgICJJbnZhbGlkQXJndW1lbnRGb3JQb3dl ckZ1bmN0aW9uIiwKKyAgICAiRkRXSW52YWxpZFN0cmluZ0xlbmd0aE9yQnVmZmVyTGVuZ3RoIiwK KyAgICAiU1JFUHJvaGliaXRlZFNRTFN0YXRlbWVudEF0dGVtcHRlZCIsCisgICAgIk5vRGF0YUZv dW5kIiwKKyAgICAiRHVwbGljYXRlRGF0YWJhc2UiLAorICAgICJGZWF0dXJlTm90U3VwcG9ydGVk IiwKKyAgICAiSW50ZWdyaXR5Q29uc3RyYWludFZpb2xhdGlvbiIsCisgICAgIkFtYmlndW91c0Nv bHVtbiIsCisgICAgIlByaXZpbGVnZU5vdFJldm9rZWRXYXJuaW5nIiwKKyAgICAiRmlsZU5hbWVU b29Mb25nIiwKKyAgICAiSW52YWxpZEFyZ3VtZW50Rm9yV2lkdGhCdWNrZXRGdW5jdGlvbiIsCisg ICAgIkhlbGRDdXJzb3JSZXF1aXJlc1NhbWVJc29sYXRpb25MZXZlbCIsCisgICAgIk5vU1FMSnNv bkl0ZW0iLAorICAgICJJb0Vycm9yIiwKKyAgICAiU2F2ZXBvaW50RXhjZXB0aW9uIiwKKyAgICAi Tm9BY3RpdmVTUUxUcmFuc2FjdGlvbiIsCisgICAgIkludmFsaWRGdW5jdGlvbkRlZmluaXRpb24i LAorICAgICJBZG1pblNodXRkb3duIiwKKyAgICAiRGF0YWJhc2VEcm9wcGVkIiwKKyAgICAiSW52 YWxpZFJlZ3VsYXJFeHByZXNzaW9uIiwKKyAgICAiV2luZG93aW5nRXJyb3IiLAorICAgICJJbnZh bGlkQ29sdW1uUmVmZXJlbmNlIiwKKyAgICAiSW52YWxpZEJpbmFyeVJlcHJlc2VudGF0aW9uIiwK KyAgICAiU1FMSnNvblNjYWxhclJlcXVpcmVkIiwKKyAgICAiQ29uZmlndXJhdGlvbkxpbWl0RXhj ZWVkZWQiLAorICAgICJTeW50YXhFcnJvciIsCisgICAgIlNlcmlhbGl6YXRpb25GYWlsdXJlIiwK KyAgICAiUHJvZ3JhbUxpbWl0RXhjZWVkZWQiLAorICAgICJEdXBsaWNhdGVTY2hlbWEiLAorICAg ICJTUUxTdGF0ZW1lbnROb3RZZXRDb21wbGV0ZSIsCisgICAgIkxpYnBxRXJyb3IiLAorICAgICJE YXRhRXhjZXB0aW9uIiwKKyAgICAiU3Vic3RyaW5nRXJyb3IiLAorICAgICJJbnZhbGlkTG9jYXRv clNwZWNpZmljYXRpb24iLAorICAgICJJbmFwcHJvcHJpYXRlQWNjZXNzTW9kZUZvckJyYW5jaFRy YW5zYWN0aW9uIiwKKyAgICAiRVJFTW9kaWZ5aW5nU1FMRGF0YU5vdFBlcm1pdHRlZCIsCisgICAg Ikluc3VmZmljaWVudFByaXZpbGVnZSIsCisgICAgIk5vQWRkaXRpb25hbER5bmFtaWNSZXN1bHRT ZXRzUmV0dXJuZWQiLAorICAgICJTUUxKc29uQXJyYXlOb3RGb3VuZCIsCisgICAgIk5hbWVUb29M b25nIiwKKyAgICAiSW52YWxpZFRpbWVab25lRGlzcGxhY2VtZW50VmFsdWUiLAorICAgICJJbmFw cHJvcHJpYXRlSXNvbGF0aW9uTGV2ZWxGb3JCcmFuY2hUcmFuc2FjdGlvbiIsCisgICAgIlJhaXNl RXhjZXB0aW9uIiwKKyAgICAiRVJFUmVhZGluZ1NRTERhdGFOb3RQZXJtaXR0ZWQiLAorICAgICJU cmlnZ2VyUHJvdG9jb2xWaW9sYXRlZCIsCisgICAgIk5vbnN0YW5kYXJkVXNlT2ZFc2NhcGVDaGFy YWN0ZXIiLAorICAgICJJbnZhbGlkVHJhbnNhY3Rpb25Jbml0aWF0aW9uIiwKKyAgICAiRHVwbGlj YXRlQWxpYXMiLAorICAgICJUcmFuc2FjdGlvblJlc29sdXRpb25Vbmtub3duIiwKKyAgICAiVG9v TWFueVJvd3MiLAorICAgICJJbnZhbGlkWG1sQ29tbWVudCIsCisgICAgIk1vc3RTcGVjaWZpY1R5 cGVNaXNtYXRjaCIsCisgICAgIkR1cGxpY2F0ZU9iamVjdCIsCisgICAgIkR1cGxpY2F0ZUN1cnNv ciIsCisgICAgIkFtYmlndW91c0Z1bmN0aW9uIiwKKyAgICAiVG9vTWFueUFyZ3VtZW50cyIsCisg ICAgIkludmFsaWRYbWxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24iLAorICAgICJJbnZhbGlkVHJhbnNh Y3Rpb25UZXJtaW5hdGlvbiIsCisgICAgIkludmFsaWREYXRldGltZUZvcm1hdCIsCisgICAgIklu dmFsaWRQcmVjZWRpbmdPckZvbGxvd2luZ1NpemUiLAorICAgICJDaGFyYWN0ZXJOb3RJblJlcGVy dG9pcmUiLAorICAgICJTUUxTVEFURV9UT19FWENFUFRJT04iLAorXQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weSBiL3NyYy90ZXN0L3B5dGVzdC9saWJwcS9lcnJv cnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjc2NGE5NmMyNDc4 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL2Vycm9ycy5weQpAQCAt MCwwICsxLDM5IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2 ZWxvcG1lbnQgR3JvdXAKKworIiIiCitQb3N0Z3JlU1FMIGVycm9yIHR5cGVzIG1hcHBlZCBmcm9t IFNRTFNUQVRFIGNvZGVzLgorCitUaGlzIG1vZHVsZSBwcm92aWRlcyBMaWJwcUVycm9yIGFuZCBp dHMgc3ViY2xhc3NlcyBmb3IgaGFuZGxpbmcgUG9zdGdyZVNRTAorZXJyb3JzIGJhc2VkIG9uIFNR TFNUQVRFIGNvZGVzLiBUaGUgZXhjZXB0aW9uIGNsYXNzZXMgaW4gX2dlbmVyYXRlZF9lcnJvcnMu cHkKK2FyZSBhdXRvLWdlbmVyYXRlZCBmcm9tIHNyYy9iYWNrZW5kL3V0aWxzL2VycmNvZGVzLnR4 dC4KKworVG8gcmVnZW5lcmF0ZTogc3JjL3Rvb2xzL2dlbmVyYXRlX3B5dGVzdF9saWJwcV9lcnJv cnMucHkKKyIiIgorCitmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKworZnJvbSAuX2Vycm9y X2Jhc2UgaW1wb3J0IExpYnBxRXJyb3IsIExpYnBxV2FybmluZworZnJvbSAuX2dlbmVyYXRlZF9l cnJvcnMgaW1wb3J0ICgKKyAgICBTUUxTVEFURV9UT19FWENFUFRJT04sCispCitmcm9tIC5fZ2Vu ZXJhdGVkX2Vycm9ycyBpbXBvcnQgKiAgIyBub3FhOiBGNDAzCisKKworZGVmIGdldF9leGNlcHRp b25fY2xhc3Moc3Fsc3RhdGU6IE9wdGlvbmFsW3N0cl0pIC0+IHR5cGU6CisgICAgIiIiR2V0IHRo ZSBhcHByb3ByaWF0ZSBleGNlcHRpb24gY2xhc3MgZm9yIGEgU1FMU1RBVEUgY29kZS4iIiIKKyAg ICBpZiBzcWxzdGF0ZSBpbiBTUUxTVEFURV9UT19FWENFUFRJT046CisgICAgICAgIHJldHVybiBT UUxTVEFURV9UT19FWENFUFRJT05bc3Fsc3RhdGVdCisgICAgcmV0dXJuIExpYnBxRXJyb3IKKwor CitkZWYgbWFrZV9lcnJvcihtZXNzYWdlOiBzdHIsICosIHNxbHN0YXRlOiBPcHRpb25hbFtzdHJd ID0gTm9uZSwgKiprd2FyZ3MpIC0+IExpYnBxRXJyb3I6CisgICAgIiIiQ3JlYXRlIGFuIGFwcHJv cHJpYXRlIExpYnBxRXJyb3Igc3ViY2xhc3MgYmFzZWQgb24gdGhlIFNRTFNUQVRFIGNvZGUuIiIi CisgICAgZXhjX2NsYXNzID0gZ2V0X2V4Y2VwdGlvbl9jbGFzcyhzcWxzdGF0ZSkKKyAgICByZXR1 cm4gZXhjX2NsYXNzKG1lc3NhZ2UsIHNxbHN0YXRlPXNxbHN0YXRlLCAqKmt3YXJncykKKworCitf X2FsbF9fID0gWworICAgICJMaWJwcUVycm9yIiwKKyAgICAiTGlicHFXYXJuaW5nIiwKKyAgICAi bWFrZV9lcnJvciIsCitdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQg Yi9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKaW5kZXggYWJkMTI4ZGZhMjQuLmI4NmJlOTAx ZTdjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9weXRlc3QvbWVzb24uYnVpbGQKKysrIGIvc3JjL3Rl c3QvcHl0ZXN0L21lc29uLmJ1aWxkCkBAIC0xMCw3ICsxMCwxMCBAQCB0ZXN0cyArPSB7CiAgICdi ZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCiAgICdweXRlc3QnOiB7CiAgICAgJ3Rlc3Rz JzogWwotICAgICAgJ3B5dC90ZXN0X3NvbWV0aGluZy5weScsCisgICAgICAncHl0L3Rlc3RfZXJy b3JzLnB5JywKKyAgICAgICdweXQvdGVzdF9saWJwcS5weScsCisgICAgICAncHl0L3Rlc3RfbXVs dGlfc2VydmVyLnB5JywKKyAgICAgICdweXQvdGVzdF9xdWVyeV9oZWxwZXJzLnB5JywKICAgICBd LAogICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX19pbml0X18ucHkg Yi9zcmMvdGVzdC9weXRlc3QvcHlwZy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uNGVlOTEyODlmNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVz dC9weXRlc3QvcHlwZy9fX2luaXRfXy5weQpAQCAtMCwwICsxLDEwIEBACisjIENvcHlyaWdodCAo YykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworZnJvbSAuX2Vu diBpbXBvcnQgcmVxdWlyZV90ZXN0X2V4dHJhcywgc2tpcF91bmxlc3NfdGVzdF9leHRyYXMKK2Zy b20gLnNlcnZlciBpbXBvcnQgUG9zdGdyZXNTZXJ2ZXIKKworX19hbGxfXyA9IFsKKyAgICAicmVx dWlyZV90ZXN0X2V4dHJhcyIsCisgICAgInNraXBfdW5sZXNzX3Rlc3RfZXh0cmFzIiwKKyAgICAi UG9zdGdyZXNTZXJ2ZXIiLAorXQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvX2Vu di5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXBnL19lbnYucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmM0MDg3YmUzMjEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3QvcHl0ZXN0L3B5cGcvX2Vudi5weQpAQCAtMCwwICsxLDcyIEBACisjIENvcHlyaWdodCAoYykg MjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworaW1wb3J0IGxvZ2dp bmcKK2ltcG9ydCBvcworCitpbXBvcnQgcHl0ZXN0CisKK2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9n Z2VyKF9fbmFtZV9fKQorCisKK2RlZiBfdGVzdF9leHRyYV9za2lwX3JlYXNvbigqa2V5czogc3Ry KSAtPiBzdHI6CisgICAgcmV0dXJuICJyZXF1aXJlcyB7fSB0byBiZSBzZXQgaW4gUEdfVEVTVF9F WFRSQSIuZm9ybWF0KCIsICIuam9pbihrZXlzKSkKKworCitkZWYgX2hhc190ZXN0X2V4dHJhKGtl eTogc3RyKSAtPiBib29sOgorICAgICIiIgorICAgIFJldHVybnMgVHJ1ZSBpZiB0aGUgUEdfVEVT VF9FWFRSQSBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb250YWlucyB0aGUgZ2l2ZW4KKyAgICBrZXku CisgICAgIiIiCisgICAgZXh0cmEgPSBvcy5nZXRlbnYoIlBHX1RFU1RfRVhUUkEiLCAiIikKKyAg ICByZXR1cm4ga2V5IGluIGV4dHJhLnNwbGl0KCkKKworCitkZWYgcmVxdWlyZV90ZXN0X2V4dHJh cygqa2V5czogc3RyKToKKyAgICAiIiIKKyAgICBBIGNvbnZlbmllbmNlIGFubm90YXRpb24gd2hp Y2ggd2lsbCBza2lwIHRlc3RzIGlmIGFsbCBvZiB0aGUgcmVxdWlyZWQga2V5cworICAgIGFyZSBu b3QgcHJlc2VudCBpbiBQR19URVNUX0VYVFJBLgorCisgICAgVG8gc2tpcCBhIHBhcnRpY3VsYXIg dGVzdCBmdW5jdGlvbiBvciBjbGFzczoKKworICAgICAgICBAcHlwZy5yZXF1aXJlX3Rlc3RfZXh0 cmFzKCJsZGFwIikKKyAgICAgICAgZGVmIHRlc3Rfc29tZV9sZGFwX2ZlYXR1cmUoKToKKyAgICAg ICAgICAgIC4uLgorCisgICAgVG8gc2tpcCBhbiBlbnRpcmUgbW9kdWxlOgorCisgICAgICAgIHB5 dGVzdG1hcmsgPSBweXBnLnJlcXVpcmVfdGVzdF9leHRyYSgic3NsIiwgImtlcmJlcm9zIikKKyAg ICAiIiIKKyAgICByZXR1cm4gcHl0ZXN0Lm1hcmsuc2tpcGlmKAorICAgICAgICBub3QgYWxsKFtf aGFzX3Rlc3RfZXh0cmEoaykgZm9yIGsgaW4ga2V5c10pLAorICAgICAgICByZWFzb249X3Rlc3Rf ZXh0cmFfc2tpcF9yZWFzb24oKmtleXMpLAorICAgICkKKworCitkZWYgc2tpcF91bmxlc3NfdGVz dF9leHRyYXMoKmtleXM6IHN0cik6CisgICAgIiIiCisgICAgU2tpcCB0aGUgY3VycmVudCB0ZXN0 L2ZpeHR1cmUgaWYgYW55IG9mIHRoZSByZXF1aXJlZCBrZXlzIGFyZSBub3QgcHJlc2VudAorICAg IGluIFBHX1RFU1RfRVhUUkEuIFVzZSB0aGlzIGluc2lkZSBmaXh0dXJlcyB3aGVyZSBkZWNvcmF0 b3JzIGNhbid0IGJlIHVzZWQuCisKKyAgICAgICAgQHB5dGVzdC5maXh0dXJlCisgICAgICAgIGRl ZiBteV9maXh0dXJlKCk6CisgICAgICAgICAgICBza2lwX3VubGVzc190ZXN0X2V4dHJhcygibGRh cCIpCisgICAgICAgICAgICAuLi4KKyAgICAiIiIKKyAgICBpZiBub3QgYWxsKFtfaGFzX3Rlc3Rf ZXh0cmEoaykgZm9yIGsgaW4ga2V5c10pOgorICAgICAgICBweXRlc3Quc2tpcChfdGVzdF9leHRy YV9za2lwX3JlYXNvbigqa2V5cykpCisKKworZGVmIHRlc3RfdGltZW91dF9kZWZhdWx0KCkgLT4g aW50OgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBQR19URVNUX1RJTUVP VVRfREVGQVVMVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgaW4KKyAgICBzZWNvbmRzLCBvciAxODAg aWYgb25lIHdhcyBub3QgcHJvdmlkZWQuCisgICAgIiIiCisgICAgZGVmYXVsdCA9IG9zLmdldGVu digiUEdfVEVTVF9USU1FT1VUX0RFRkFVTFQiLCAiIikKKyAgICBpZiBub3QgZGVmYXVsdDoKKyAg ICAgICAgcmV0dXJuIDE4MAorCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW50KGRlZmF1bHQp CisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgdjoKKyAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlBH X1RFU1RfVElNRU9VVF9ERUZBVUxUIGNvdWxkIG5vdCBiZSBwYXJzZWQ6ICIgKyBzdHIodikpCisg ICAgICAgIHJldHVybiAxODAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXBnL2ZpeHR1 cmVzLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvZml4dHVyZXMucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjhjMGNiNjBkYWE1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjL3Rlc3QvcHl0ZXN0L3B5cGcvZml4dHVyZXMucHkKQEAgLTAsMCArMSwzMzUgQEAKKyMgQ29w eXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitp bXBvcnQgb3MKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgcGF0aGxpYgoraW1wb3J0IHRpbWUK K2Zyb20gdHlwaW5nIGltcG9ydCBMaXN0CisKK2ltcG9ydCBweXRlc3QKKworZnJvbSAuX2VudiBp bXBvcnQgdGVzdF90aW1lb3V0X2RlZmF1bHQKK2Zyb20gLnV0aWwgaW1wb3J0IGNhcHR1cmUKK2Zy b20gLnNlcnZlciBpbXBvcnQgUG9zdGdyZXNTZXJ2ZXIKKworZnJvbSBsaWJwcSBpbXBvcnQgbG9h ZF9saWJwcV9oYW5kbGUsIGNvbm5lY3QgYXMgbGlicHFfY29ubmVjdAorCisKKyMgU3Rhc2gga2V5 IGZvciB0cmFja2luZyBzZXJ2ZXJzIGZvciBsb2cgcmVwb3J0aW5nLgorX3NlcnZlcnNfa2V5ID0g cHl0ZXN0LlN0YXNoS2V5W0xpc3RbUG9zdGdyZXNTZXJ2ZXJdXSgpCisKKworZGVmIF9yZWNvcmRf c2VydmVyX2Zvcl9sb2dfcmVwb3J0aW5nKHJlcXVlc3QsIHNlcnZlcik6CisgICAgIiIiUmVjb3Jk IGEgc2VydmVyIGZvciBsb2cgcmVwb3J0aW5nIG9uIHRlc3QgZmFpbHVyZS4iIiIKKyAgICBpZiBf c2VydmVyc19rZXkgbm90IGluIHJlcXVlc3Qubm9kZS5zdGFzaDoKKyAgICAgICAgcmVxdWVzdC5u b2RlLnN0YXNoW19zZXJ2ZXJzX2tleV0gPSBbXQorICAgIHJlcXVlc3Qubm9kZS5zdGFzaFtfc2Vy dmVyc19rZXldLmFwcGVuZChzZXJ2ZXIpCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgcmVtYWlu aW5nX3RpbWVvdXQoKToKKyAgICAiIiIKKyAgICBUaGlzIGZpeHR1cmUgcHJvdmlkZXMgYSBmdW5j dGlvbiB0aGF0IHJldHVybnMgaG93IG11Y2ggb2YgdGhlCisgICAgUEdfVEVTVF9USU1FT1VUX0RF RkFVTFQgcmVtYWlucyBmb3IgdGhlIGN1cnJlbnQgdGVzdCwgaW4gZnJhY3Rpb25hbCBzZWNvbmRz LgorICAgIFRoaXMgdmFsdWUgaXMgbmV2ZXIgbGVzcyB0aGFuIHplcm8uCisKKyAgICBUaGlzIGZp eHR1cmUgaXMgcGVyLXRlc3QsIHNvIHRoZSBkZWFkbGluZSBpcyBhbHNvIHJlc2V0IG9uIGEgcGVy LXRlc3QgYmFzaXMuCisgICAgIiIiCisgICAgbm93ID0gdGltZS5tb25vdG9uaWMoKQorICAgIGRl YWRsaW5lID0gbm93ICsgdGVzdF90aW1lb3V0X2RlZmF1bHQoKQorCisgICAgcmV0dXJuIGxhbWJk YTogbWF4KGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKSwgMCkKKworCitAcHl0ZXN0LmZpeHR1 cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgcmVtYWluaW5nX3RpbWVvdXRfbW9kdWxlKCk6CisgICAg IiIiCisgICAgU2FtZSBhcyByZW1haW5pbmdfdGltZW91dCwgYnV0IHRoZSBkZWFkbGluZSBpcyBz ZXQgb25jZSBwZXIgbW9kdWxlLgorCisgICAgVGhpcyBmaXh0dXJlIGlzIHBlci1tb2R1bGUsIHdo aWNoIG1lYW5zIGl0J3MgZ2VuZXJhbGx5IG9ubHkgcmVhbGx5IHVzZWZ1bAorICAgIGZvciBjb25m aWd1cmluZyB0aW1lb3V0cyBvZiBvcGVyYXRpb25zIHRoYXQgaGFwcGVuIGluIHRoZSBzZXR1cCBw aGFzZSBvZgorICAgIGFub3RoZXIgbW9kdWxlIGZpeHR1cmVzLiBJZiB5b3UgdXNlIGl0IGluIGEg dGVzdCBpdCB3b3VsZCBtZWFuIHRoYXQgZWFjaAorICAgIHN1YnNlcXVlbnQgdGVzdCBpbiB0aGUg bW9kdWxlIGdldHMgYSByZWR1Y2VkIHRpbWVvdXQuCisgICAgIiIiCisgICAgbm93ID0gdGltZS5t b25vdG9uaWMoKQorICAgIGRlYWRsaW5lID0gbm93ICsgdGVzdF90aW1lb3V0X2RlZmF1bHQoKQor CisgICAgcmV0dXJuIGxhbWJkYTogbWF4KGRlYWRsaW5lIC0gdGltZS5tb25vdG9uaWMoKSwgMCkK KworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGxpYnBxX2hhbmRsZShs aWJkaXIsIGJpbmRpcik6CisgICAgIiIiCisgICAgTG9hZHMgYSBjdHlwZXMgaGFuZGxlIGZvciBs aWJwcS4gU29tZSBjb21tb24gZnVuY3Rpb24gcHJvdG90eXBlcyBhcmUKKyAgICBpbml0aWFsaXpl ZCBmb3IgZ2VuZXJhbCB1c2UuCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gbG9h ZF9saWJwcV9oYW5kbGUobGliZGlyLCBiaW5kaXIpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToK KyAgICAgICAgaWYgIndyb25nIEVMRiBjbGFzcyIgaW4gc3RyKGUpOgorICAgICAgICAgICAgIyBU aGlzIGhhcHBlbnMgaW4gQ0kgd2hlbiB0cnlpbmcgdG8gbGVhZCBhIDMyLWJpdCBsaWJwcSBsaWJy YXJ5CisgICAgICAgICAgICAjIHdpdGggYSA2NC1iaXQgUHl0aG9uCisgICAgICAgICAgICBweXRl c3Quc2tpcCgibGlicHEgYXJjaGl0ZWN0dXJlIGRvZXMgbm90IG1hdGNoIFB5dGhvbiBpbnRlcnBy ZXRlciIpCisgICAgICAgIHJhaXNlCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY29ubmVjdChs aWJwcV9oYW5kbGUsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiIKKyAgICBSZXR1cm5zIGEg ZnVuY3Rpb24gdG8gY29ubmVjdCB0byBQb3N0Z3JlU1FMIHZpYSBsaWJwcS4KKworICAgIFRoZSBy ZXR1cm5lZCBmdW5jdGlvbiBhY2NlcHRzIGNvbm5lY3Rpb24gb3B0aW9ucyBhcyBrZXl3b3JkIGFy Z3VtZW50cworICAgIChob3N0LCBwb3J0LCBkYm5hbWUsIGV0Yy4pIGFuZCByZXR1cm5zIGEgUEdj b25uIG9iamVjdC4gQ29ubmVjdGlvbnMKKyAgICBhcmUgYXV0b21hdGljYWxseSBjbGVhbmVkIHVw IGF0IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBjb25uID0g Y29ubmVjdChob3N0PSdsb2NhbGhvc3QnLCBwb3J0PTU0MzIsIGRibmFtZT0ncG9zdGdyZXMnKQor ICAgICAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEiKQorICAgICIiIgorICAgIHdpdGgg Y29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzdGFjazoKKworICAgICAgICBkZWYgX2Nvbm5lY3Qo KipvcHRzKToKKyAgICAgICAgICAgIHJldHVybiBsaWJwcV9jb25uZWN0KGxpYnBxX2hhbmRsZSwg c3RhY2ssIHJlbWFpbmluZ190aW1lb3V0LCAqKm9wdHMpCisKKyAgICAgICAgeWllbGQgX2Nvbm5l Y3QKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHBnX2NvbmZpZygp OgorICAgICIiIgorICAgIFJldHVybnMgdGhlIHBhdGggdG8gcGdfY29uZmlnLiBVc2VzIFBHX0NP TkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpZiBzZXQsCisgICAgb3RoZXJ3aXNlIHVzZXMgJ3Bn X2NvbmZpZycgZnJvbSBQQVRILgorICAgICIiIgorICAgIHJldHVybiBvcy5lbnZpcm9uLmdldCgi UEdfQ09ORklHIiwgInBnX2NvbmZpZyIpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNz aW9uIikKK2RlZiBiaW5kaXIocGdfY29uZmlnKToKKyAgICAiIiIKKyAgICBSZXR1cm5zIHRoZSBQ b3N0Z3JlU1FMIGJpbiBkaXJlY3RvcnkgdXNpbmcgcGdfY29uZmlnIC0tYmluZGlyLgorICAgICIi IgorICAgIHJldHVybiBwYXRobGliLlBhdGgoY2FwdHVyZShwZ19jb25maWcsICItLWJpbmRpciIp KQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgbGliZGlyKHBnX2Nv bmZpZyk6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgUG9zdGdyZVNRTCBsaWIgZGlyZWN0b3J5 IHVzaW5nIHBnX2NvbmZpZyAtLWxpYmRpci4KKyAgICAiIiIKKyAgICByZXR1cm4gcGF0aGxpYi5Q YXRoKGNhcHR1cmUocGdfY29uZmlnLCAiLS1saWJkaXIiKSkKKworCitAcHl0ZXN0LmZpeHR1cmUo c2NvcGU9InNlc3Npb24iKQorZGVmIHRtcF9jaGVjayh0bXBfcGF0aF9mYWN0b3J5KSAtPiBwYXRo bGliLlBhdGg6CisgICAgIiIiCisgICAgUmV0dXJucyB0aGUgdG1wX2NoZWNrIGRpcmVjdG9yeSB0 aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGUgdGVzdHMuIElmCisgICAgVEVTVERBVEFESVIgaXMg cHJvdmlkZWQsIHRoYXQgd2lsbCBiZSB1c2VkOyBvdGhlcndpc2UgYSBuZXcgdGVtcG9yYXJ5Cisg ICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgaW4gdGhlIHB5dGVzdCB0ZW1wIHJvb3QuCisgICAgIiIi CisgICAgZCA9IG9zLmdldGVudigiVEVTVERBVEFESVIiKQorICAgIGlmIGQ6CisgICAgICAgIGQg PSBwYXRobGliLlBhdGgoZCkKKyAgICBlbHNlOgorICAgICAgICBkID0gdG1wX3BhdGhfZmFjdG9y eS5ta3RlbXAoInRtcF9jaGVjayIpCisKKyAgICByZXR1cm4gZAorCisKK0BweXRlc3QuZml4dHVy ZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgZGF0YWRpcih0bXBfY2hlY2spOgorICAgICIiIgorICAg IFJldHVybnMgdGhlIGRhdGEgZGlyZWN0b3J5IHRvIHVzZSBmb3IgdGhlIHBnIGZpeHR1cmUuCisg ICAgIiIiCisKKyAgICByZXR1cm4gdG1wX2NoZWNrIC8gInBnZGF0YSIKKworCitAcHl0ZXN0LmZp eHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHNvY2tkaXIodG1wX3BhdGhfZmFjdG9yeSk6Cisg ICAgIiIiCisgICAgUmV0dXJucyB0aGUgZGlyZWN0b3J5IG5hbWUgdG8gdXNlIGFzIHRoZSBzZXJ2 ZXIncyB1bml4X3NvY2tldF9kaXJlY3RvcmllcworICAgIHNldHRpbmcuIExvY2FsIGNsaWVudCBj b25uZWN0aW9ucyB1c2UgdGhpcyBhcyB0aGUgUEdIT1NULgorCisgICAgQXQgdGhlIG1vbWVudCwg dGhpcyBpcyBhbHdheXMgcHV0IHVuZGVyIHRoZSBweXRlc3QgdGVtcCByb290LgorICAgICIiIgor ICAgIHJldHVybiB0bXBfcGF0aF9mYWN0b3J5Lm1rdGVtcCgic29ja2ZpbGVzIikKKworCitAcHl0 ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIHBnX3NlcnZlcl9nbG9iYWwoYmluZGly LCBkYXRhZGlyLCBzb2NrZGlyLCBsaWJwcV9oYW5kbGUpOgorICAgICIiIgorICAgIFN0YXJ0cyBh IHJ1bm5pbmcgUG9zdGdyZXMgc2VydmVyIGxpc3RlbmluZyBvbiBsb2NhbGhvc3QuIFRoZSBIQkEg aW5pdGlhbGx5CisgICAgYWxsb3dzIG9ubHkgbG9jYWwgVU5JWCBjb25uZWN0aW9ucyBmcm9tIHRo ZSBzYW1lIHVzZXIuCisKKyAgICBSZXR1cm5zIGEgUG9zdGdyZXNTZXJ2ZXIgaW5zdGFuY2Ugd2l0 aCBtZXRob2RzIGZvciBzZXJ2ZXIgbWFuYWdlbWVudCwgY29uZmlndXJhdGlvbiwKKyAgICBhbmQg Y3JlYXRpbmcgdGVzdCBkYXRhYmFzZXMvdXNlcnMuCisgICAgIiIiCisgICAgc2VydmVyID0gUG9z dGdyZXNTZXJ2ZXIoImRlZmF1bHQiLCBiaW5kaXIsIGRhdGFkaXIsIHNvY2tkaXIsIGxpYnBxX2hh bmRsZSkKKworICAgIHlpZWxkIHNlcnZlcgorCisgICAgIyBDbGVhbnVwIGFueSB0ZXN0IHJlc291 cmNlcworICAgIHNlcnZlci5jbGVhbnVwKCkKKworICAgICMgU3RvcCB0aGUgc2VydmVyCisgICAg c2VydmVyLnN0b3AoKQorCisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBw Z19zZXJ2ZXJfbW9kdWxlKHBnX3NlcnZlcl9nbG9iYWwpOgorICAgICIiIgorICAgIE1vZHVsZS1z Y29wZWQgc2VydmVyIGNvbnRleHQuIFdoaWNoIGNhbiBiZSB1c2VmdWwgc28gdGhhdCBjZXJ0YWlu IHNldHRpbmdzCisgICAgY2FuIGJlIG92ZXJyaWRlbiBhdCB0aGUgbW9kdWxlIGxldmVsIHRocm91 Z2ggYXV0b3VzZSBmaXh0dXJlcy4gQW4gZXhhbXBsZQorICAgIG9mIHRoaXMgaXMgaW4gdGhlIFNT TCB0ZXN0cy4KKyAgICAiIiIKKyAgICB3aXRoIHBnX3NlcnZlcl9nbG9iYWwuc3ViY29udGV4dCgp IGFzIHM6CisgICAgICAgIHlpZWxkIHMKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBwZyhyZXF1 ZXN0LCBwZ19zZXJ2ZXJfbW9kdWxlLCByZW1haW5pbmdfdGltZW91dCk6CisgICAgIiIiCisgICAg UGVyLXRlc3Qgc2VydmVyIGNvbnRleHQuIFVzZSB0aGlzIGZpeHR1cmUgdG8gbWFrZSBjaGFuZ2Vz IHRvIHRoZSBzZXJ2ZXIKKyAgICB3aGljaCB3aWxsIGJlIHJvbGxlZCBiYWNrIGF0IHRoZSBlbmQg b2YgdGhlIHRlc3QgKGUuZy4sIGNyZWF0aW5nIHRlc3QKKyAgICB1c2Vycy9kYXRhYmFzZXMpLgor CisgICAgQWxzbyBjYXB0dXJlcyB0aGUgUG9zdGdyZVNRTCBsb2cgcG9zaXRpb24gYXQgdGVzdCBz dGFydCBzbyB0aGF0IGFueSBuZXcKKyAgICBsb2cgZW50cmllcyBjYW4gYmUgaW5jbHVkZWQgaW4g dGhlIHRlc3QgcmVwb3J0IG9uIGZhaWx1cmUuCisgICAgIiIiCisgICAgd2l0aCBwZ19zZXJ2ZXJf bW9kdWxlLnN0YXJ0X25ld190ZXN0KHJlbWFpbmluZ190aW1lb3V0KSBhcyBzOgorICAgICAgICBf cmVjb3JkX3NlcnZlcl9mb3JfbG9nX3JlcG9ydGluZyhyZXF1ZXN0LCBzKQorICAgICAgICB5aWVs ZCBzCisKKworQHB5dGVzdC5maXh0dXJlCitkZWYgY29ubihwZyk6CisgICAgIiIiCisgICAgUmV0 dXJucyBhIGNvbm5lY3RlZCBQR2Nvbm4gaW5zdGFuY2UgdG8gdGhlIHRlc3QgUG9zdGdyZVNRTCBz ZXJ2ZXIuCisgICAgVGhlIGNvbm5lY3Rpb24gaXMgYXV0b21hdGljYWxseSBjbGVhbmVkIHVwIGF0 IHRoZSBlbmQgb2YgdGhlIHRlc3QuCisKKyAgICBFeGFtcGxlOgorICAgICAgICBkZWYgdGVzdF9z b21ldGhpbmcoY29ubik6CisgICAgICAgICAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEi KQorICAgICAgICAgICAgYXNzZXJ0IHJlc3VsdCA9PSAxCisgICAgIiIiCisgICAgcmV0dXJuIHBn LmNvbm5lY3QoKQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGNyZWF0ZV9wZyhyZXF1ZXN0LCBi aW5kaXIsIHNvY2tkaXIsIGxpYnBxX2hhbmRsZSwgdG1wX2NoZWNrLCByZW1haW5pbmdfdGltZW91 dCk6CisgICAgIiIiCisgICAgRmFjdG9yeSBmaXh0dXJlIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIFBv c3RncmVTUUwgc2VydmVycyAocGVyLXRlc3Qgc2NvcGUpLgorCisgICAgUmV0dXJucyBhIGZ1bmN0 aW9uIHRoYXQgY3JlYXRlcyBuZXcgUG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2VzLgorICAgIFNl cnZlcnMgYXJlIGF1dG9tYXRpY2FsbHkgY2xlYW5lZCB1cCBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0 LgorCisgICAgRXhhbXBsZToKKyAgICAgICAgZGVmIHRlc3RfbXVsdGlwbGVfc2VydmVycyhjcmVh dGVfcGcpOgorICAgICAgICAgICAgbm9kZTEgPSBjcmVhdGVfcGcoKQorICAgICAgICAgICAgbm9k ZTIgPSBjcmVhdGVfcGcoKQorICAgICAgICAgICAgbm9kZTMgPSBjcmVhdGVfcGcoKQorICAgICIi IgorICAgIHNlcnZlcnMgPSBbXQorCisgICAgZGVmIF9jcmVhdGUobmFtZT1Ob25lLCAqKmt3YXJn cyk6CisgICAgICAgIGlmIG5hbWUgaXMgTm9uZToKKyAgICAgICAgICAgIGNvdW50ID0gbGVuKHNl cnZlcnMpICsgMQorICAgICAgICAgICAgbmFtZSA9IGYicGd7Y291bnR9IgorCisgICAgICAgIGRh dGFkaXIgPSB0bXBfY2hlY2sgLyBmInBnZGF0YV97bmFtZX0iCisgICAgICAgIHNlcnZlciA9IFBv c3RncmVzU2VydmVyKG5hbWUsIGJpbmRpciwgZGF0YWRpciwgc29ja2RpciwgbGlicHFfaGFuZGxl LCAqKmt3YXJncykKKyAgICAgICAgc2VydmVyLnNldF90aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0 KQorICAgICAgICBfcmVjb3JkX3NlcnZlcl9mb3JfbG9nX3JlcG9ydGluZyhyZXF1ZXN0LCBzZXJ2 ZXIpCisgICAgICAgIHNlcnZlcnMuYXBwZW5kKHNlcnZlcikKKyAgICAgICAgcmV0dXJuIHNlcnZl cgorCisgICAgeWllbGQgX2NyZWF0ZQorCisgICAgZm9yIHNlcnZlciBpbiBzZXJ2ZXJzOgorICAg ICAgICBzZXJ2ZXIuY2xlYW51cCgpCisgICAgICAgIHNlcnZlci5zdG9wKCkKKworCitAcHl0ZXN0 LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIpCitkZWYgX21vZHVsZV9zY29wZWRfc2VydmVycygpOgor ICAgICIiIlNlc3Npb24tc2NvcGVkIGxpc3QgdG8gdHJhY2sgc2VydmVycyBjcmVhdGVkIGJ5IGNy ZWF0ZV9wZ19tb2R1bGUuIiIiCisgICAgcmV0dXJuIFtdCisKKworQHB5dGVzdC5maXh0dXJlKHNj b3BlPSJtb2R1bGUiKQorZGVmIGNyZWF0ZV9wZ19tb2R1bGUoCisgICAgYmluZGlyLAorICAgIHNv Y2tkaXIsCisgICAgbGlicHFfaGFuZGxlLAorICAgIHRtcF9jaGVjaywKKyAgICByZW1haW5pbmdf dGltZW91dF9tb2R1bGUsCisgICAgX21vZHVsZV9zY29wZWRfc2VydmVycywKKyk6CisgICAgIiIi CisgICAgRmFjdG9yeSBmaXh0dXJlIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIFBvc3RncmVTUUwgc2Vy dmVycyAobW9kdWxlIHNjb3BlKS4KKworICAgIExpa2UgY3JlYXRlX3BnLCBidXQgc2VydmVycyBw ZXJzaXN0IGZvciB0aGUgZW50aXJlIHRlc3QgbW9kdWxlLgorICAgIFVzZSB0aGlzIHdoZW4gbXVs dGlwbGUgdGVzdHMgaW4gYSBtb2R1bGUgY2FuIHNoYXJlIHRoZSBzYW1lIHNlcnZlcnMuCisKKyAg ICBUaGUgdGltZW91dCBpcyBhdXRvbWF0aWNhbGx5IHNldCBvbiBhbGwgc2VydmVycyBhdCB0aGUg c3RhcnQgb2YgZWFjaCB0ZXN0CisgICAgdmlhIHRoZSBfc2V0X21vZHVsZV9zZXJ2ZXJfdGltZW91 dHMgYXV0b3VzZSBmaXh0dXJlLgorCisgICAgRXhhbXBsZToKKyAgICAgICAgQHB5dGVzdC5maXh0 dXJlKHNjb3BlPSJtb2R1bGUiKQorICAgICAgICBkZWYgc2hhcmVkX25vZGVzKGNyZWF0ZV9wZ19t b2R1bGUpOgorICAgICAgICAgICAgcmV0dXJuIFtjcmVhdGVfcGdfbW9kdWxlKCkgZm9yIF8gaW4g cmFuZ2UoMyldCisgICAgIiIiCisKKyAgICBkZWYgX2NyZWF0ZShuYW1lPU5vbmUsICoqa3dhcmdz KToKKyAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgY291bnQgPSBsZW4oX21v ZHVsZV9zY29wZWRfc2VydmVycykgKyAxCisgICAgICAgICAgICBuYW1lID0gZiJwZ3tjb3VudH0i CisgICAgICAgIGRhdGFkaXIgPSB0bXBfY2hlY2sgLyBmInBnZGF0YV97bmFtZX0iCisgICAgICAg IHNlcnZlciA9IFBvc3RncmVzU2VydmVyKG5hbWUsIGJpbmRpciwgZGF0YWRpciwgc29ja2Rpciwg bGlicHFfaGFuZGxlLCAqKmt3YXJncykKKyAgICAgICAgc2VydmVyLnNldF90aW1lb3V0KHJlbWFp bmluZ190aW1lb3V0X21vZHVsZSkKKyAgICAgICAgX21vZHVsZV9zY29wZWRfc2VydmVycy5hcHBl bmQoc2VydmVyKQorICAgICAgICByZXR1cm4gc2VydmVyCisKKyAgICB5aWVsZCBfY3JlYXRlCisK KyAgICBmb3Igc2VydmVyIGluIF9tb2R1bGVfc2NvcGVkX3NlcnZlcnM6CisgICAgICAgIHNlcnZl ci5jbGVhbnVwKCkKKyAgICAgICAgc2VydmVyLnN0b3AoKQorCisKK0BweXRlc3QuZml4dHVyZShh dXRvdXNlPVRydWUpCitkZWYgX3NldF9tb2R1bGVfc2VydmVyX3RpbWVvdXRzKHJlcXVlc3QsIF9t b2R1bGVfc2NvcGVkX3NlcnZlcnMsIHJlbWFpbmluZ190aW1lb3V0KToKKyAgICAiIiJBdXRvdXNl IGZpeHR1cmUgdGhhdCBzZXRzIHRpbWVvdXQsIGVudGVycyBzdWJjb250ZXh0LCBhbmQgcmVjb3Jk cyBsb2cgcG9zaXRpb25zIGZvciBtb2R1bGUtc2NvcGVkIHNlcnZlcnMuIiIiCisgICAgd2l0aCBj b250ZXh0bGliLkV4aXRTdGFjaygpIGFzIHN0YWNrOgorICAgICAgICBmb3Igc2VydmVyIGluIF9t b2R1bGVfc2NvcGVkX3NlcnZlcnM6CisgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHNl cnZlci5zdGFydF9uZXdfdGVzdChyZW1haW5pbmdfdGltZW91dCkpCisgICAgICAgICAgICBfcmVj b3JkX3NlcnZlcl9mb3JfbG9nX3JlcG9ydGluZyhyZXF1ZXN0LCBzZXJ2ZXIpCisgICAgICAgIHlp ZWxkCisKKworQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlLCB0cnlsYXN0PVRydWUp CitkZWYgcHl0ZXN0X3J1bnRlc3RfbWFrZXJlcG9ydChpdGVtLCBjYWxsKToKKyAgICAiIiIKKyAg ICBBZGRzIFBvc3RncmVTUUwgc2VydmVyIGxvZ3MgdG8gdGhlIHRlc3QgcmVwb3J0IHNlY3Rpb25z LgorICAgICIiIgorICAgIG91dGNvbWUgPSB5aWVsZAorICAgIHJlcG9ydCA9IG91dGNvbWUuZ2V0 X3Jlc3VsdCgpCisKKyAgICBpZiByZXBvcnQud2hlbiAhPSAiY2FsbCI6CisgICAgICAgIHJldHVy bgorCisgICAgaWYgX3NlcnZlcnNfa2V5IG5vdCBpbiBpdGVtLnN0YXNoOgorICAgICAgICByZXR1 cm4KKworICAgIHNlcnZlcnMgPSBpdGVtLnN0YXNoW19zZXJ2ZXJzX2tleV0KKyAgICBkZWwgaXRl bS5zdGFzaFtfc2VydmVyc19rZXldCisKKyAgICBpbmNsdWRlX25hbWUgPSBsZW4oc2VydmVycykg PiAxCisKKyAgICBmb3Igc2VydmVyIGluIHNlcnZlcnM6CisgICAgICAgIGNvbnRlbnQgPSBzZXJ2 ZXIubG9nX2NvbnRlbnQoKQorICAgICAgICBpZiBjb250ZW50LnN0cmlwKCk6CisgICAgICAgICAg ICBzZWN0aW9uX3RpdGxlID0gIlBvc3RncmVzIGxvZyIKKyAgICAgICAgICAgIGlmIGluY2x1ZGVf bmFtZToKKyAgICAgICAgICAgICAgICBzZWN0aW9uX3RpdGxlICs9IGYiICh7c2VydmVyLm5hbWV9 KSIKKyAgICAgICAgICAgIHJlcG9ydC5zZWN0aW9ucy5hcHBlbmQoKHNlY3Rpb25fdGl0bGUsIGNv bnRlbnQpKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5IGIvc3Jj L3Rlc3QvcHl0ZXN0L3B5cGcvc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi45MjQyYWIyNTAwNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVz dC9weXBnL3NlcnZlci5weQpAQCAtMCwwICsxLDQ3MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBjb250ZXh0bGli CitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQor aW1wb3J0IHNodXRpbAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCB0 ZW1wZmlsZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorZnJvbSB0eXBpbmcg aW1wb3J0IENhbGxhYmxlLCBPcHRpb25hbAorCitmcm9tIC51dGlsIGltcG9ydCBydW4KK2Zyb20g bGlicHEgaW1wb3J0IFBHY29ubiwgY29ubmVjdCBhcyBsaWJwcV9jb25uZWN0CisKKworY2xhc3Mg RmlsZUJhY2t1cChjb250ZXh0bGliLkFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICIiIgor ICAgIEEgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGJhY2tzIHVwIGEgZmlsZSdzIGNvbnRlbnRzLCBy ZXN0b3JpbmcgdGhlbSBvbiBleGl0LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs IGZpbGU6IHBhdGhsaWIuUGF0aCk6CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKQorCisgICAg ICAgIHNlbGYuX2ZpbGUgPSBmaWxlCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAg ICB3aXRoIHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgKKyAgICAgICAgICAgIHByZWZpeD1z ZWxmLl9maWxlLm5hbWUsIGRpcj1zZWxmLl9maWxlLnBhcmVudCwgZGVsZXRlPUZhbHNlCisgICAg ICAgICkgYXMgZjoKKyAgICAgICAgICAgIHNlbGYuX2JhY2t1cCA9IHBhdGhsaWIuUGF0aChmLm5h bWUpCisKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2ZpbGUsIHNlbGYuX2JhY2t1cCkK KworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGMpOgor ICAgICAgICAjIFN3YXAgdGhlIGJhY2t1cCBhbmQgdGhlIG9yaWdpbmFsIGZpbGUsIHNvIHRoYXQg dGhlIG1vZGlmaWVkIGNvbnRlbnRzCisgICAgICAgICMgY2FuIHN0aWxsIGJlIGluc3BlY3RlZCBp biBjYXNlIG9mIGZhaWx1cmUuCisgICAgICAgIHRtcCA9IHNlbGYuX2JhY2t1cC5wYXJlbnQgLyAo c2VsZi5fYmFja3VwLm5hbWUgKyAiLnRtcCIpCisKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNl bGYuX2ZpbGUsIHRtcCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNlbGYuX2JhY2t1cCwgc2Vs Zi5fZmlsZSkKKyAgICAgICAgc2h1dGlsLm1vdmUodG1wLCBzZWxmLl9iYWNrdXApCisKKworY2xh c3MgSEJBKEZpbGVCYWNrdXApOgorICAgICIiIgorICAgIEJhY2tzIHVwIGEgc2VydmVyJ3MgSEJB IGNvbmZpZ3VyYXRpb24gYW5kIHByb3ZpZGVzIG1lYW5zIGZvciB0ZW1wb3JhcmlseQorICAgIGVk aXRpbmcgaXQuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YWRpcjogcGF0 aGxpYi5QYXRoKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhZGlyIC8gInBnX2hiYS5j b25mIikKKworICAgIGRlZiBwcmVwZW5kKHNlbGYsICpsaW5lcyk6CisgICAgICAgICIiIgorICAg ICAgICBUZW1wb3JhcmlseSBwcmVwZW5kcyBsaW5lcyB0byB0aGUgc2VydmVyJ3MgcGdfaGJhLmNv bmYuCisKKyAgICAgICAgQXMgc3VnYXIgZm9yIGFsaWduaW5nIEhCQSBjb2x1bW5zIGluIHRoZSB0 ZXN0cywgZWFjaCBsaW5lIGNhbiBiZSBlaXRoZXIKKyAgICAgICAgYSBzdHJpbmcgb3IgYSBsaXN0 IG9mIHN0cmluZ3MuIExpc3QgZWxlbWVudHMgd2lsbCBiZSBqb2luZWQgYnkgc2luZ2xlCisgICAg ICAgIHNwYWNlcyBiZWZvcmUgdGhleSBhcmUgd3JpdHRlbiB0byBmaWxlLgorICAgICAgICAiIiIK KyAgICAgICAgd2l0aCBvcGVuKHNlbGYuX2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHBy aW9yX2RhdGEgPSBmLnJlYWQoKQorCisgICAgICAgIHdpdGggb3BlbihzZWxmLl9maWxlLCAidyIp IGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKKyAgICAgICAgICAgICAgICBp ZiBpc2luc3RhbmNlKGxpbmUsIGxpc3QpOgorICAgICAgICAgICAgICAgICAgICBwcmludCgqbGlu ZSwgZmlsZT1mKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBy aW50KGxpbmUsIGZpbGU9ZikKKworICAgICAgICAgICAgZi53cml0ZShwcmlvcl9kYXRhKQorCisK K2NsYXNzIENvbmZpZyhGaWxlQmFja3VwKToKKyAgICAiIiIKKyAgICBCYWNrcyB1cCBhIHNlcnZl cidzIHBvc3RncmVzcWwuY29uZiBhbmQgcHJvdmlkZXMgbWVhbnMgZm9yIHRlbXBvcmFyaWx5Cisg ICAgZWRpdGluZyBpdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhZGly OiBwYXRobGliLlBhdGgpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKGRhdGFkaXIgLyAicG9z dGdyZXNxbC5jb25mIikKKworICAgIGRlZiBzZXQoc2VsZiwgKipndWNzKToKKyAgICAgICAgIiIi CisgICAgICAgIFRlbXBvcmFyaWx5IGFwcGVuZHMgR1VDIHNldHRpbmdzIHRvIHRoZSBzZXJ2ZXIn cyBwb3N0Z3Jlc3FsLmNvbmYuCisgICAgICAgICIiIgorCisgICAgICAgIHdpdGggb3BlbihzZWxm Ll9maWxlLCAiYSIpIGFzIGY6CisgICAgICAgICAgICBwcmludChmaWxlPWYpCisKKyAgICAgICAg ICAgIGZvciBuLCB2IGluIGd1Y3MuaXRlbXMoKToKKyAgICAgICAgICAgICAgICB2ID0gc3RyKHYp CisKKyAgICAgICAgICAgICAgICAjIFRPRE86IHByb3BlciBxdW90aW5nCisgICAgICAgICAgICAg ICAgdiA9IHYucmVwbGFjZSgiXFwiLCAiXFxcXCIpCisgICAgICAgICAgICAgICAgdiA9IHYucmVw bGFjZSgiJyIsICJcXCciKQorICAgICAgICAgICAgICAgIHYgPSAiJ3t9JyIuZm9ybWF0KHYpCisK KyAgICAgICAgICAgICAgICBwcmludChuLCAiPSIsIHYsIGZpbGU9ZikKKworCitCYWNrdXAgPSBu YW1lZHR1cGxlKCJCYWNrdXAiLCAiY29uZiwgaGJhIikKKworCitjbGFzcyBQb3N0Z3Jlc1NlcnZl cjoKKyAgICAiIiIKKyAgICBSZXByZXNlbnRzIGEgcnVubmluZyBQb3N0Z3JlU1FMIHNlcnZlciBp bnN0YW5jZSB3aXRoIG1hbmFnZW1lbnQgdXRpbGl0aWVzLgorICAgIFByb3ZpZGVzIG1ldGhvZHMg Zm9yIGNvbmZpZ3VyYXRpb24sIHVzZXIvZGF0YWJhc2UgY3JlYXRpb24sIGFuZCBzZXJ2ZXIgY29u dHJvbC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXygKKyAgICAgICAgc2VsZiwKKyAgICAg ICAgbmFtZSwKKyAgICAgICAgYmluZGlyLAorICAgICAgICBkYXRhZGlyLAorICAgICAgICBzb2Nr ZGlyLAorICAgICAgICBsaWJwcV9oYW5kbGUsCisgICAgICAgICosCisgICAgICAgIGhvc3RhZGRy OiBPcHRpb25hbFtzdHJdID0gTm9uZSwKKyAgICAgICAgcG9ydDogT3B0aW9uYWxbaW50XSA9IE5v bmUsCisgICAgKToKKyAgICAgICAgIiIiCisgICAgICAgIEluaXRpYWxpemUgYW5kIHN0YXJ0IGEg UG9zdGdyZVNRTCBzZXJ2ZXIgaW5zdGFuY2UuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IG5hbWU6IFRoZSBuYW1lIG9mIHRoaXMgc2VydmVyIGluc3RhbmNlIChmb3IgbG9nZ2luZyBwdXJw b3NlcykKKyAgICAgICAgICAgIGJpbmRpcjogUGF0aCB0byBQb3N0Z3JlU1FMIGJpbiBkaXJlY3Rv cnkKKyAgICAgICAgICAgIGRhdGFkaXI6IFBhdGggdG8gZGF0YSBkaXJlY3RvcnkgZm9yIHRoaXMg c2VydmVyCisgICAgICAgICAgICBzb2NrZGlyOiBQYXRoIHRvIGRpcmVjdG9yeSBmb3IgVW5peCBz b2NrZXRzCisgICAgICAgICAgICBsaWJwcV9oYW5kbGU6IGN0eXBlcyBoYW5kbGUgdG8gbGlicHEK KyAgICAgICAgICAgIGhvc3RhZGRyOiBJZiBwcm92aWRlZCwgdXNlIHRoaXMgc3BlY2lmaWMgYWRk cmVzcyAoZS5nLiwgIjEyNy4wLjAuMiIpCisgICAgICAgICAgICBwb3J0OiBJZiBwcm92aWRlZCwg dXNlIHRoaXMgcG9ydCBpbnN0ZWFkIG9mIGZpbmRpbmcgYSBmcmVlIG9uZSwKKyAgICAgICAgICAg ICAgICBpcyBjdXJyZW50bHkgb25seSBhbGxvd2VkIGlmIGhvc3RhZGRyIGlzIGFsc28gcHJvdmlk ZWQKKyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgaG9zdGFkZHIgaXMgTm9uZSBhbmQgcG9ydCBp cyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInBvcnQg d2FzIHByb3ZpZGVkIHdpdGhvdXQgaG9zdGFkZHIiKQorCisgICAgICAgIHNlbGYubmFtZSA9IG5h bWUKKyAgICAgICAgc2VsZi5kYXRhZGlyID0gZGF0YWRpcgorICAgICAgICBzZWxmLnNvY2tkaXIg PSBzb2NrZGlyCisgICAgICAgIHNlbGYubGlicHFfaGFuZGxlID0gbGlicHFfaGFuZGxlCisgICAg ICAgIHNlbGYuX3JlbWFpbmluZ190aW1lb3V0X2ZuOiBPcHRpb25hbFtDYWxsYWJsZVtbXSwgZmxv YXRdXSA9IE5vbmUKKyAgICAgICAgc2VsZi5fYmluZGlyID0gYmluZGlyCisgICAgICAgIHNlbGYu X3BnX2N0bCA9IGJpbmRpciAvICJwZ19jdGwiCisgICAgICAgIHNlbGYubG9nID0gZGF0YWRpciAv ICJwb3N0Z3Jlc3FsLmxvZyIKKyAgICAgICAgc2VsZi5fbG9nX3N0YXJ0X3BvcyA9IDAKKworICAg ICAgICAjIERldGVybWluZSB3aGV0aGVyIHRvIHVzZSBVbml4IHNvY2tldHMKKyAgICAgICAgdXNl X3VuaXhfc29ja2V0cyA9IHBsYXRmb3JtLnN5c3RlbSgpICE9ICJXaW5kb3dzIiBhbmQgaG9zdGFk ZHIgaXMgTm9uZQorCisgICAgICAgICMgVXNlIElOSVREQl9URU1QTEFURSBpZiBhdmFpbGFibGUg KG11Y2ggZmFzdGVyIHRoYW4gcnVubmluZyBpbml0ZGIpCisgICAgICAgIGluaXRkYl90ZW1wbGF0 ZSA9IG9zLmVudmlyb24uZ2V0KCJJTklUREJfVEVNUExBVEUiKQorICAgICAgICBpZiBpbml0ZGJf dGVtcGxhdGUgYW5kIG9zLnBhdGguaXNkaXIoaW5pdGRiX3RlbXBsYXRlKToKKyAgICAgICAgICAg IHNodXRpbC5jb3B5dHJlZShpbml0ZGJfdGVtcGxhdGUsIGRhdGFkaXIpCisgICAgICAgIGVsc2U6 CisgICAgICAgICAgICBpZiBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2luZG93cyI6CisgICAgICAg ICAgICAgICAgYXV0aF9tZXRob2QgPSAidHJ1c3QiCisgICAgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgICAgIGF1dGhfbWV0aG9kID0gInBlZXIiCisgICAgICAgICAgICBydW4oCisgICAgICAg ICAgICAgICAgYmluZGlyIC8gImluaXRkYiIsCisgICAgICAgICAgICAgICAgIi0tbm8tc3luYyIs CisgICAgICAgICAgICAgICAgIi0tYXV0aCIsCisgICAgICAgICAgICAgICAgYXV0aF9tZXRob2Qs CisgICAgICAgICAgICAgICAgIi0tcGdkYXRhIiwKKyAgICAgICAgICAgICAgICBzZWxmLmRhdGFk aXIsCisgICAgICAgICAgICApCisKKyAgICAgICAgIyBGaWd1cmUgb3V0IGEgcG9ydCB0byBsaXN0 ZW4gb24uIEF0dGVtcHQgdG8gcmVzZXJ2ZSBib3RoIElQdjQgYW5kIElQdjYKKyAgICAgICAgIyBh ZGRyZXNzZXMgaW4gb25lIGdvLgorICAgICAgICAjCisgICAgICAgICMgTm90ZTogc29ja2V0Lmhh c19kdWFsc3RhY2tfaXB2Ni9jcmVhdGVfc2VydmVyIGFyZSBvbmx5IGluIFB5dGhvbiAzLjgrLgor ICAgICAgICBpZiBob3N0YWRkciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgRXhwbGljaXQg YWRkcmVzcyBwcm92aWRlZAorICAgICAgICAgICAgYWRkcnM6IGxpc3Rbc3RyXSA9IFtob3N0YWRk cl0KKyAgICAgICAgICAgIHRlbXBfc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICAgICAg aWYgcG9ydCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHRlbXBfc29jay5iaW5kKChob3N0YWRk ciwgMCkpCisgICAgICAgICAgICAgICAgXywgcG9ydCA9IHRlbXBfc29jay5nZXRzb2NrbmFtZSgp CisKKyAgICAgICAgZWxpZiBoYXNhdHRyKHNvY2tldCwgImhhc19kdWFsc3RhY2tfaXB2NiIpIGFu ZCBzb2NrZXQuaGFzX2R1YWxzdGFja19pcHY2KCk6CisgICAgICAgICAgICBhZGRyID0gKCI6OjEi LCAwKQorICAgICAgICAgICAgdGVtcF9zb2NrID0gc29ja2V0LmNyZWF0ZV9zZXJ2ZXIoCisgICAg ICAgICAgICAgICAgYWRkciwgZmFtaWx5PXNvY2tldC5BRl9JTkVUNiwgZHVhbHN0YWNrX2lwdjY9 VHJ1ZQorICAgICAgICAgICAgKQorCisgICAgICAgICAgICBob3N0YWRkciwgcG9ydCwgXywgXyA9 IHRlbXBfc29jay5nZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBhc3NlcnQgaG9zdGFkZHIgaXMg bm90IE5vbmUKKyAgICAgICAgICAgIGFkZHJzID0gW2hvc3RhZGRyLCAiMTI3LjAuMC4xIl0KKwor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgYWRkciA9ICgiMTI3LjAuMC4xIiwgMCkKKworICAg ICAgICAgICAgdGVtcF9zb2NrID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgICAgICB0ZW1wX3Nv Y2suYmluZChhZGRyKQorCisgICAgICAgICAgICBob3N0YWRkciwgcG9ydCA9IHRlbXBfc29jay5n ZXRzb2NrbmFtZSgpCisgICAgICAgICAgICBhc3NlcnQgaG9zdGFkZHIgaXMgbm90IE5vbmUKKyAg ICAgICAgICAgIGFkZHJzID0gW2hvc3RhZGRyXQorCisgICAgICAgICMgU3RvcmUgdGhlIGNvbXB1 dGVkIHZhbHVlcworICAgICAgICBzZWxmLmhvc3RhZGRyID0gaG9zdGFkZHIKKyAgICAgICAgc2Vs Zi5wb3J0ID0gcG9ydAorICAgICAgICAjIEluY2x1ZGluZyB0aGUgaG9zdCB0byB1c2UgZm9yIGNv bm5lY3Rpb25zIC0gZWl0aGVyIHRoZSBzb2NrZXQKKyAgICAgICAgIyBkaXJlY3Rvcnkgb3IgVENQ IGFkZHJlc3MKKyAgICAgICAgaWYgdXNlX3VuaXhfc29ja2V0czoKKyAgICAgICAgICAgIHNlbGYu aG9zdCA9IHN0cihzb2NrZGlyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5ob3N0 ID0gaG9zdGFkZHIKKworICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRhdGFkaXIsICJw b3N0Z3Jlc3FsLmNvbmYiKSwgImEiKSBhcyBmOgorICAgICAgICAgICAgcHJpbnQoZmlsZT1mKQor ICAgICAgICAgICAgaWYgdXNlX3VuaXhfc29ja2V0czoKKyAgICAgICAgICAgICAgICBwcmludCgK KyAgICAgICAgICAgICAgICAgICAgInVuaXhfc29ja2V0X2RpcmVjdG9yaWVzID0gJ3t9JyIuZm9y bWF0KHNvY2tkaXIuYXNfcG9zaXgoKSksCisgICAgICAgICAgICAgICAgICAgIGZpbGU9ZiwKKyAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgRGlz YWJsZSBVbml4IHNvY2tldHMgd2hlbiB1c2luZyBUQ1AgdG8gYXZvaWQgbG9jayBjb25mbGljdHMK KyAgICAgICAgICAgICAgICBwcmludCgidW5peF9zb2NrZXRfZGlyZWN0b3JpZXMgPSAnJyIsIGZp bGU9ZikKKyAgICAgICAgICAgIHByaW50KCJsaXN0ZW5fYWRkcmVzc2VzID0gJ3t9JyIuZm9ybWF0 KCIsIi5qb2luKGFkZHJzKSksIGZpbGU9ZikKKyAgICAgICAgICAgIHByaW50KCJwb3J0ID0iLCBw b3J0LCBmaWxlPWYpCisgICAgICAgICAgICBwcmludCgibG9nX2Nvbm5lY3Rpb25zID0gYWxsIiwg ZmlsZT1mKQorICAgICAgICAgICAgcHJpbnQoImZzeW5jID0gb2ZmIiwgZmlsZT1mKQorICAgICAg ICAgICAgcHJpbnQoImRhdGVzdHlsZSA9ICdJU08nIiwgZmlsZT1mKQorICAgICAgICAgICAgcHJp bnQoInRpbWV6b25lID0gJ1VUQyciLCBmaWxlPWYpCisKKyAgICAgICAgIyBCZXR3ZWVuIGNsb3Np bmcgb2YgdGhlIHNvY2tldCwgcywgYW5kIHNlcnZlciBzdGFydCwgd2UncmUgcmFjaW5nCisgICAg ICAgICMgYWdhaW5zdCBhbnl0aGluZyB0aGF0IHdhbnRzIHRvIG9wZW4gdXAgZXBoZW1lcmFsIHBv cnRzLCBzbyB0cnkgbm90IHRvCisgICAgICAgICMgcHV0IGFueSBuZXcgd29yayBoZXJlLgorCisg ICAgICAgIHRlbXBfc29jay5jbG9zZSgpCisgICAgICAgIHNlbGYucGdfY3RsKCJzdGFydCIpCisK KyAgICAgICAgIyBSZWFkIHRoZSBQSUQgZmlsZSB0byBnZXQgdGhlIHBvc3RtYXN0ZXIgUElECisg ICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGF0YWRpciwgInBvc3RtYXN0ZXIucGlkIikp IGFzIGY6CisgICAgICAgICAgICBzZWxmLnBpZCA9IGludChmLnJlYWRsaW5lKCkuc3RyaXAoKSkK KworICAgICAgICAjIEV4aXRTdGFjayBmb3IgY2xlYW51cCBjYWxsYmFja3MKKyAgICAgICAgc2Vs Zi5fY2xlYW51cF9zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKKworICAgIGRlZiBjdXJy ZW50X2xvZ19wb3NpdGlvbihzZWxmKToKKyAgICAgICAgIiIiR2V0IHRoZSBjdXJyZW50IGVuZCBw b3NpdGlvbiBvZiB0aGUgbG9nIGZpbGUuIiIiCisgICAgICAgIGlmIHNlbGYubG9nLmV4aXN0cygp OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9nLnN0YXQoKS5zdF9zaXplCisgICAgICAgIHJl dHVybiAwCisKKyAgICBkZWYgcmVzZXRfbG9nX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICAiIiJN YXJrIGN1cnJlbnQgbG9nIHBvc2l0aW9uIGFzIHN0YXJ0IGZvciBsb2dfY29udGVudCgpLiIiIgor ICAgICAgICBzZWxmLl9sb2dfc3RhcnRfcG9zID0gc2VsZi5jdXJyZW50X2xvZ19wb3NpdGlvbigp CisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBzdGFydF9uZXdfdGVz dChzZWxmLCByZW1haW5pbmdfdGltZW91dCk6CisgICAgICAgICIiIgorICAgICAgICBQcmVwYXJl IHNlcnZlciBmb3IgYSBuZXcgdGVzdC4KKworICAgICAgICBTZXRzIHRpbWVvdXQsIHJlc2V0cyBs b2cgcG9zaXRpb24sIGFuZCBlbnRlcnMgYSBjbGVhbnVwIHN1YmNvbnRleHQuCisgICAgICAgICIi IgorICAgICAgICBzZWxmLnNldF90aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KQorICAgICAgICBz ZWxmLnJlc2V0X2xvZ19wb3NpdGlvbigpCisgICAgICAgIHdpdGggc2VsZi5zdWJjb250ZXh0KCk6 CisgICAgICAgICAgICB5aWVsZCBzZWxmCisKKyAgICBkZWYgcHNxbChzZWxmLCAqYXJncyk6Cisg ICAgICAgICIiIlJ1biBwc3FsIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4iIiIKKyAgICAgICAg c2VsZi5fcnVuKG9zLnBhdGguam9pbihzZWxmLl9iaW5kaXIsICJwc3FsIiksICItdyIsICphcmdz KQorCisgICAgZGVmIHNxbChzZWxmLCBxdWVyeSk6CisgICAgICAgICIiIkV4ZWN1dGUgYSBTUUwg cXVlcnkgdmlhIGxpYnBxLiBSZXR1cm5zIHNpbXBsaWZpZWQgcmVzdWx0cy4iIiIKKyAgICAgICAg d2l0aCBzZWxmLmNvbm5lY3QoKSBhcyBjb25uOgorICAgICAgICAgICAgcmV0dXJuIGNvbm4uc3Fs KHF1ZXJ5KQorCisgICAgZGVmIHBnX2N0bChzZWxmLCAqYXJncyk6CisgICAgICAgICIiIlJ1biBw Z19jdGwgd2l0aCB0aGUgZ2l2ZW4gYXJndW1lbnRzLiIiIgorICAgICAgICBzZWxmLl9ydW4oc2Vs Zi5fcGdfY3RsLCAiLS1wZ2RhdGEiLCBzZWxmLmRhdGFkaXIsICItLWxvZyIsIHNlbGYubG9nLCAq YXJncykKKworICAgIGRlZiBfcnVuKHNlbGYsIGNtZCwgKmFyZ3MsIGFkZGVudjogT3B0aW9uYWxb ZGljdF0gPSBOb25lKToKKyAgICAgICAgIiIiUnVuIGEgY29tbWFuZCB3aXRoIFBHKiBlbnZpcm9u bWVudCB2YXJpYWJsZXMgc2V0LiIiIgorICAgICAgICBzdWJlbnYgPSBkaWN0KG9zLmVudmlyb24p CisgICAgICAgIHN1YmVudi51cGRhdGUoCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg IlBHSE9TVCI6IHN0cihzZWxmLmhvc3QpLAorICAgICAgICAgICAgICAgICJQR1BPUlQiOiBzdHIo c2VsZi5wb3J0KSwKKyAgICAgICAgICAgICAgICAiUEdEQVRBQkFTRSI6ICJwb3N0Z3JlcyIsCisg ICAgICAgICAgICAgICAgIlBHREFUQSI6IHN0cihzZWxmLmRhdGFkaXIpLAorICAgICAgICAgICAg fQorICAgICAgICApCisgICAgICAgIGlmIGFkZGVudjoKKyAgICAgICAgICAgIHN1YmVudi51cGRh dGUoYWRkZW52KQorICAgICAgICBydW4oY21kLCAqYXJncywgZW52PXN1YmVudikKKworICAgIGRl ZiBjcmVhdGVfdXNlcnMoc2VsZiwgKnVzZXJrZXlzOiBzdHIpOgorICAgICAgICAiIiJDcmVhdGUg dGVzdCB1c2VycyBhbmQgcmVnaXN0ZXIgdGhlbSBmb3IgY2xlYW51cC4iIiIKKyAgICAgICAgdXNl cm1hcCA9IHt9CisgICAgICAgIGZvciB1IGluIHVzZXJrZXlzOgorICAgICAgICAgICAgbmFtZSA9 IHUgKyAidXNlciIKKyAgICAgICAgICAgIHVzZXJtYXBbdV0gPSBuYW1lCisgICAgICAgICAgICBz ZWxmLnBzcWwoIi1jIiwgIkNSRUFURSBVU0VSICIgKyBuYW1lKQorICAgICAgICAgICAgc2VsZi5f Y2xlYW51cF9zdGFjay5jYWxsYmFjayhzZWxmLnBzcWwsICItYyIsICJEUk9QIFVTRVIgIiArIG5h bWUpCisgICAgICAgIHJldHVybiB1c2VybWFwCisKKyAgICBkZWYgY3JlYXRlX2RicyhzZWxmLCAq ZGJrZXlzOiBzdHIpOgorICAgICAgICAiIiJDcmVhdGUgdGVzdCBkYXRhYmFzZXMgYW5kIHJlZ2lz dGVyIHRoZW0gZm9yIGNsZWFudXAuIiIiCisgICAgICAgIGRibWFwID0ge30KKyAgICAgICAgZm9y IGQgaW4gZGJrZXlzOgorICAgICAgICAgICAgbmFtZSA9IGQgKyAiZGIiCisgICAgICAgICAgICBk Ym1hcFtkXSA9IG5hbWUKKyAgICAgICAgICAgIHNlbGYucHNxbCgiLWMiLCAiQ1JFQVRFIERBVEFC QVNFICIgKyBuYW1lKQorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjay5jYWxsYmFjayhz ZWxmLnBzcWwsICItYyIsICJEUk9QIERBVEFCQVNFICIgKyBuYW1lKQorICAgICAgICByZXR1cm4g ZGJtYXAKKworICAgIEBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCisgICAgZGVmIHJlbG9hZGlu ZyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFByb3ZpZGVzIGEgY29udGV4dCBtYW5hZ2Vy IGZvciBtYWtpbmcgY29uZmlndXJhdGlvbiBjaGFuZ2VzLgorCisgICAgICAgIElmIHRoZSBjb250 ZXh0IHN1aXRlIGZpbmlzaGVzIHN1Y2Nlc3NmdWxseSwgdGhlIGNvbmZpZ3VyYXRpb24gd2lsbAor ICAgICAgICBiZSByZWxvYWRlZCB2aWEgcGdfY3RsLiBPbiB0ZWFyZG93biwgdGhlIGNvbmZpZ3Vy YXRpb24gY2hhbmdlcyB3aWxsCisgICAgICAgIGJlIHVud291bmQsIGFuZCB0aGUgc2VydmVyIHdp bGwgYmUgc2lnbmFsZWQgdG8gcmVsb2FkIGFnYWluLgorCisgICAgICAgIFRoZSBjb250ZXh0IHRh cmdldCBjb250YWlucyB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgd2hpY2ggY2FuIGJlCisgICAg ICAgIHVzZWQgdG8gY29uZmlndXJlIHRoZSBzZXJ2ZXI6CisgICAgICAgIC0gLmNvbmY6IG1vZGlm aWVzIHBvc3RncmVzcWwuY29uZgorICAgICAgICAtIC5oYmE6IG1vZGlmaWVzIHBnX2hiYS5jb25m CisKKyAgICAgICAgRm9yIGV4YW1wbGU6CisKKyAgICAgICAgICAgIHdpdGggcGdfc2VydmVyX3Nl c3Npb24ucmVsb2FkaW5nKCkgYXMgczoKKyAgICAgICAgICAgICAgICBzLmNvbmYuc2V0KGxvZ19j b25uZWN0aW9ucz0ib24iKQorICAgICAgICAgICAgICAgIHMuaGJhLnByZXBlbmQoImxvY2FsIGFs bCBhbGwgdHJ1c3QiKQorICAgICAgICAiIiIKKyAgICAgICAgIyBQdXNoIGEgcmVsb2FkIG9udG8g dGhlIHN0YWNrIGJlZm9yZSBtYWtpbmcgYW55IG90aGVyCisgICAgICAgICMgdW53aW5kYWJsZSBj aGFuZ2VzLiBUaGF0IHdheSB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucyB3aWxsIGJlCisgICAgICAg ICMKKyAgICAgICAgIyAgIyB0ZXN0CisgICAgICAgICMgICAtIGNvbmZpZyBjaGFuZ2UgMQorICAg ICAgICAjICAgLSBjb25maWcgY2hhbmdlIDIKKyAgICAgICAgIyAgIC0gcmVsb2FkCisgICAgICAg ICMgICMgdGVhcmRvd24KKyAgICAgICAgIyAgIC0gdW5kbyBjb25maWcgY2hhbmdlIDIKKyAgICAg ICAgIyAgIC0gdW5kbyBjb25maWcgY2hhbmdlIDEKKyAgICAgICAgIyAgIC0gcmVsb2FkCisgICAg ICAgICMKKyAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjay5jYWxsYmFjayhzZWxmLnBnX2N0bCwg InJlbG9hZCIpCisgICAgICAgIHlpZWxkIHNlbGYuX2JhY2t1cF9jb25maWd1cmF0aW9uKCkKKwor ICAgICAgICAjIE5vdyBhY3R1YWxseSByZWxvYWQKKyAgICAgICAgc2VsZi5wZ19jdGwoInJlbG9h ZCIpCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiByZXN0YXJ0aW5n KHNlbGYpOgorICAgICAgICAiIiJMaWtlIC5yZWxvYWRpbmcoKSwgYnV0IHdpdGggYSBmdWxsIHNl cnZlciByZXN0YXJ0LiIiIgorICAgICAgICBzZWxmLl9jbGVhbnVwX3N0YWNrLmNhbGxiYWNrKHNl bGYucGdfY3RsLCAicmVzdGFydCIpCisgICAgICAgIHlpZWxkIHNlbGYuX2JhY2t1cF9jb25maWd1 cmF0aW9uKCkKKyAgICAgICAgc2VsZi5wZ19jdGwoInJlc3RhcnQiKQorCisgICAgZGVmIF9iYWNr dXBfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgIyBXcmFwIHRoZSBleGlzdGluZyBIQkEg YW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBGaWxlQmFja3Vwcy4KKyAgICAgICAgcmV0dXJuIEJhY2t1 cCgKKyAgICAgICAgICAgIGhiYT1zZWxmLl9jbGVhbnVwX3N0YWNrLmVudGVyX2NvbnRleHQoSEJB KHNlbGYuZGF0YWRpcikpLAorICAgICAgICAgICAgY29uZj1zZWxmLl9jbGVhbnVwX3N0YWNrLmVu dGVyX2NvbnRleHQoQ29uZmlnKHNlbGYuZGF0YWRpcikpLAorICAgICAgICApCisKKyAgICBAY29u dGV4dGxpYi5jb250ZXh0bWFuYWdlcgorICAgIGRlZiBzdWJjb250ZXh0KHNlbGYpOgorICAgICAg ICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgbmV3IGNsZWFudXAgY29udGV4dCBmb3IgcGVyLXRlc3Qg aXNvbGF0aW9uLgorCisgICAgICAgIFRlbXBvcmFyaWx5IHJlcGxhY2VzIHRoZSBjbGVhbnVwIHN0 YWNrIHNvIHRoYXQgYW55IGNsZWFudXAgY2FsbGJhY2tzCisgICAgICAgIHJlZ2lzdGVyZWQgd2l0 aGluIHRoaXMgY29udGV4dCB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUgY29udGV4dCBleGl0 cy4KKyAgICAgICAgIiIiCisgICAgICAgIG9sZF9zdGFjayA9IHNlbGYuX2NsZWFudXBfc3RhY2sK KyAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjayA9IGNvbnRleHRsaWIuRXhpdFN0YWNrKCkKKyAg ICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fY2xlYW51cF9zdGFjay5fX2VudGVyX18oKQor ICAgICAgICAgICAgeWllbGQgc2VsZgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2Vs Zi5fY2xlYW51cF9zdGFjay5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQorICAgICAgICAgICAg c2VsZi5fY2xlYW51cF9zdGFjayA9IG9sZF9zdGFjaworCisgICAgZGVmIHN0b3Aoc2VsZiwgbW9k ZT0iZmFzdCIpOgorICAgICAgICAiIiIKKyAgICAgICAgU3RvcCB0aGUgUG9zdGdyZVNRTCBzZXJ2 ZXIgaW5zdGFuY2UuCisKKyAgICAgICAgSWdub3JlcyBmYWlsdXJlcyBpZiB0aGUgc2VydmVyIGlz IGFscmVhZHkgc3RvcHBlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHNlbGYucGdfY3RsKCJzdG9wIiwgIi0tbW9kZSIsIG1vZGUpCisgICAgICAgIGV4Y2VwdCBzdWJw cm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICMgU2VydmVyIG1heSBoYXZl IGFscmVhZHkgYmVlbiBzdG9wcGVkCisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgbG9nX2Nv bnRlbnQoc2VsZikgLT4gc3RyOgorICAgICAgICAiIiJSZXR1cm4gbG9nIGNvbnRlbnQgZnJvbSB0 aGUgY3VycmVudCBjb250ZXh0J3Mgc3RhcnQgcG9zaXRpb24uIiIiCisgICAgICAgIHdpdGggb3Bl bihzZWxmLmxvZykgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhzZWxmLl9sb2dfc3RhcnRfcG9z KQorICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCisKKyAgICBAY29udGV4dGxpYi5jb250ZXh0 bWFuYWdlcgorICAgIGRlZiBsb2dfY29udGFpbnMoc2VsZiwgcGF0dGVybiwgdGltZXM9Tm9uZSk6 CisgICAgICAgICIiIgorICAgICAgICBDb250ZXh0IG1hbmFnZXIgdGhhdCBjaGVja3MgaWYgdGhl IGxvZyBtYXRjaGVzIHBhdHRlcm4gZHVyaW5nIHRoZSBibG9jay4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgcGF0dGVybjogVGhlIHJlZ2V4IHBhdHRlcm4gdG8gc2VhcmNoIGZvci4KKyAg ICAgICAgICAgIHRpbWVzOiBJZiBOb25lLCBhbnkgbnVtYmVyIG9mIG1hdGNoZXMgaXMgYWNjZXB0 ZWQuCisgICAgICAgICAgICAgICAgICAgSWYgYSBudW1iZXIsIGV4YWN0bHkgdGhhdCBtYW55IG1h dGNoZXMgYXJlIHJlcXVpcmVkLgorICAgICAgICAiIiIKKyAgICAgICAgc3RhcnRfcG9zID0gc2Vs Zi5jdXJyZW50X2xvZ19wb3NpdGlvbigpCisgICAgICAgIHlpZWxkCisgICAgICAgIHdpdGggb3Bl bihzZWxmLmxvZykgYXMgZjoKKyAgICAgICAgICAgIGYuc2VlayhzdGFydF9wb3MpCisgICAgICAg ICAgICBjb250ZW50ID0gZi5yZWFkKCkKKyAgICAgICAgaWYgdGltZXMgaXMgTm9uZToKKyAgICAg ICAgICAgIGFzc2VydCByZS5zZWFyY2gocGF0dGVybiwgY29udGVudCksIGYiUGF0dGVybiB7cGF0 dGVybiFyfSBub3QgZm91bmQgaW4gbG9nIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWF0 Y2hfY291bnQgPSBsZW4ocmUuZmluZGFsbChwYXR0ZXJuLCBjb250ZW50KSkKKyAgICAgICAgICAg IGFzc2VydCBtYXRjaF9jb3VudCA9PSB0aW1lcywgKAorICAgICAgICAgICAgICAgIGYiRXhwZWN0 ZWQge3RpbWVzfSBtYXRjaGVzIG9mIHtwYXR0ZXJuIXJ9LCBmb3VuZCB7bWF0Y2hfY291bnR9Igor ICAgICAgICAgICAgKQorCisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgICIiIlJ1biBh bGwgcmVnaXN0ZXJlZCBjbGVhbnVwIGNhbGxiYWNrcy4iIiIKKyAgICAgICAgc2VsZi5fY2xlYW51 cF9zdGFjay5jbG9zZSgpCisKKyAgICBkZWYgc2V0X3RpbWVvdXQoc2VsZiwgcmVtYWluaW5nX3Rp bWVvdXRfZm46IENhbGxhYmxlW1tdLCBmbG9hdF0pIC0+IE5vbmU6CisgICAgICAgICIiIgorICAg ICAgICBTZXQgdGhlIHRpbWVvdXQgZnVuY3Rpb24gZm9yIGNvbm5lY3Rpb25zLgorICAgICAgICBU aGlzIGlzIHR5cGljYWxseSBjYWxsZWQgYnkgcGcgZml4dHVyZSBmb3IgZWFjaCB0ZXN0LgorICAg ICAgICAiIiIKKyAgICAgICAgc2VsZi5fcmVtYWluaW5nX3RpbWVvdXRfZm4gPSByZW1haW5pbmdf dGltZW91dF9mbgorCisgICAgZGVmIGNvbm5lY3Qoc2VsZiwgKipvcHRzKSAtPiBQR2Nvbm46Cisg ICAgICAgICIiIgorICAgICAgICBDcmVhdGVzIGEgY29ubmVjdGlvbiB0byB0aGlzIFBvc3RncmVT UUwgc2VydmVyIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICAqKm9wdHM6 IEFkZGl0aW9uYWwgY29ubmVjdGlvbiBvcHRpb25zIChjYW4gb3ZlcnJpZGUgZGVmYXVsdHMpCisK KyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIFBHY29ubjogQ29ubmVjdGVkIGRhdGFiYXNl IGNvbm5lY3Rpb24KKworICAgICAgICBFeGFtcGxlOgorICAgICAgICAgICAgY29ubiA9IHBnLmNv bm5lY3QoKQorICAgICAgICAgICAgY29ubiA9IHBnLmNvbm5lY3QoZGJuYW1lPSdteWRiJykKKyAg ICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3JlbWFpbmluZ190aW1lb3V0X2ZuIGlzIE5vbmU6 CisgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoCisgICAgICAgICAgICAgICAgIlRpbWVv dXQgZnVuY3Rpb24gbm90IHNldC4gVXNlIHNldF90aW1lb3V0KCkgb3IgcGcgZml4dHVyZS4iCisg ICAgICAgICAgICApCisKKyAgICAgICAgZGVmYXVsdHMgPSB7CisgICAgICAgICAgICAiaG9zdCI6 IHNlbGYuaG9zdCwKKyAgICAgICAgICAgICJwb3J0Ijogc2VsZi5wb3J0LAorICAgICAgICAgICAg ImRibmFtZSI6ICJwb3N0Z3JlcyIsCisgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdHMudXBkYXRl KG9wdHMpCisKKyAgICAgICAgcmV0dXJuIGxpYnBxX2Nvbm5lY3QoCisgICAgICAgICAgICBzZWxm LmxpYnBxX2hhbmRsZSwKKyAgICAgICAgICAgIHNlbGYuX2NsZWFudXBfc3RhY2ssCisgICAgICAg ICAgICBzZWxmLl9yZW1haW5pbmdfdGltZW91dF9mbiwKKyAgICAgICAgICAgICoqZGVmYXVsdHMs CisgICAgICAgICkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3B5dGVzdC9weXBnL3V0aWwucHkgYi9z cmMvdGVzdC9weXRlc3QvcHlwZy91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5iMmExZTYyN2U0YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVz dC9weXBnL3V0aWwucHkKQEAgLTAsMCArMSw0MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBv c3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBzaGxleAoraW1wb3J0 IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworCitkZWYgZXByaW50KCphcmdzLCAqKmt3YXJncyk6 CisgICAgIiIiZXByaW50IHByaW50cyB0byBzdGRlcnIiIiIKKyAgICBwcmludCgqYXJncywgZmls ZT1zeXMuc3RkZXJyLCAqKmt3YXJncykKKworCitkZWYgcnVuKCpjb21tYW5kLCBjaGVjaz1UcnVl LCBzaGVsbD1Ob25lLCBzaWxlbnQ9RmFsc2UsICoqa3dhcmdzKToKKyAgICAiIiJydW4gcnVucyB0 aGUgZ2l2ZW4gY29tbWFuZCBhbmQgcHJpbnRzIGl0IHRvIHN0ZGVyciIiIgorCisgICAgaWYgc2hl bGwgaXMgTm9uZToKKyAgICAgICAgc2hlbGwgPSBsZW4oY29tbWFuZCkgPT0gMSBhbmQgaXNpbnN0 YW5jZShjb21tYW5kWzBdLCBzdHIpCisKKyAgICBpZiBzaGVsbDoKKyAgICAgICAgY29tbWFuZCA9 IGNvbW1hbmRbMF0KKyAgICBlbHNlOgorICAgICAgICBjb21tYW5kID0gbGlzdChtYXAoc3RyLCBj b21tYW5kKSkKKworICAgIGlmIG5vdCBzaWxlbnQ6CisgICAgICAgIGlmIHNoZWxsOgorICAgICAg ICAgICAgZXByaW50KGYiKyB7Y29tbWFuZH0iKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg IyBXZSBjb3VsZCBub3JtYWxseSB1c2Ugc2hsZXguam9pbiBoZXJlLCBidXQgaXQncyBub3QgYXZh aWxhYmxlIGluCisgICAgICAgICAgICAjIFB5dGhvbiAzLjYgd2hpY2ggd2Ugc3RpbGwgbGlrZSB0 byBzdXBwb3J0CisgICAgICAgICAgICB1bnNhZmVfc3RyaW5nX2NtZCA9ICIgIi5qb2luKG1hcChz aGxleC5xdW90ZSwgY29tbWFuZCkpCisgICAgICAgICAgICBlcHJpbnQoZiIrIHt1bnNhZmVfc3Ry aW5nX2NtZH0iKQorCisgICAgaWYgc2lsZW50OgorICAgICAgICBrd2FyZ3Muc2V0ZGVmYXVsdCgi c3Rkb3V0Iiwgc3VicHJvY2Vzcy5ERVZOVUxMKQorCisgICAgcmV0dXJuIHN1YnByb2Nlc3MucnVu KGNvbW1hbmQsIGNoZWNrPWNoZWNrLCBzaGVsbD1zaGVsbCwgKiprd2FyZ3MpCisKKworZGVmIGNh cHR1cmUoY29tbWFuZCwgKmFyZ3MsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIGVuY29kaW5nPSJ1 dGYtOCIsICoqa3dhcmdzKToKKyAgICByZXR1cm4gcnVuKAorICAgICAgICBjb21tYW5kLCAqYXJn cywgc3Rkb3V0PXN0ZG91dCwgZW5jb2Rpbmc9ZW5jb2RpbmcsICoqa3dhcmdzCisgICAgKS5zdGRv dXQucmVtb3Zlc3VmZml4KCJcbiIpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L2Nv bmZ0ZXN0LnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC9jb25mdGVzdC5weQpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZGQ3MzkxN2M2OGMKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmMvdGVzdC9weXRlc3QvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0wLDAgKzEgQEAKKyMgQ29weXJp Z2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2Vycm9ycy5weSBiL3NyYy90ZXN0L3B5dGVz dC9weXQvdGVzdF9lcnJvcnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmFkMTA5MDM5NjY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90 ZXN0X2Vycm9ycy5weQpAQCAtMCwwICsxLDM0IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9z dGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIiIiCitUZXN0cyBmb3IgbGlicHEg ZXJyb3IgdHlwZXMgYW5kIFNRTFNUQVRFLWJhc2VkIGV4Y2VwdGlvbiBtYXBwaW5nLgorIiIiCisK K2ltcG9ydCBweXRlc3QKK2ltcG9ydCBsaWJwcQorCisKK2RlZiB0ZXN0X3N5bnRheF9lcnJvcihj b25uKToKKyAgICAiIiJJbnZhbGlkIFNRTCBzeW50YXggcmFpc2VzIFN5bnRheEVycm9yIHdpdGgg Y29ycmVjdCBTUUxTVEFURS4iIiIKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMobGlicHEuZXJyb3Jz LlN5bnRheEVycm9yKSBhcyBleGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwoIlNFTEVDIDEiKQor CisgICAgZXJyID0gZXhjX2luZm8udmFsdWUKKyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlID09ICI0 MjYwMSIKKyAgICBhc3NlcnQgZXJyLnNxbHN0YXRlX2NsYXNzID09ICI0MiIKKyAgICBhc3NlcnQg InN5bnRheCIgaW4gc3RyKGVycikubG93ZXIoKQorCisKK2RlZiB0ZXN0X3VuaXF1ZV92aW9sYXRp b24oY29ubik6CisgICAgIiIiVW5pcXVlIHZpb2xhdGlvbiBpbmNsdWRlcyBhbGwgZXJyb3IgZmll bGRzIGFuZCBjYW4gYmUgY2F1Z2h0IGFzIHBhcmVudCBjbGFzcy4iIiIKKyAgICBjb25uLnNxbCgi Q1JFQVRFIFRFTVAgVEFCTEUgdGVzdF91diAoaWQgaW50IENPTlNUUkFJTlQgdGVzdF91dl9wayBQ UklNQVJZIEtFWSkiKQorICAgIGNvbm4uc3FsKCJJTlNFUlQgSU5UTyB0ZXN0X3V2IFZBTFVFUyAo MSkiKQorCisgICAgd2l0aCBweXRlc3QucmFpc2VzKGxpYnBxLmVycm9ycy5VbmlxdWVWaW9sYXRp b24pIGFzIGV4Y19pbmZvOgorICAgICAgICBjb25uLnNxbCgiSU5TRVJUIElOVE8gdGVzdF91diBW QUxVRVMgKDEpIikKKworICAgIGVyciA9IGV4Y19pbmZvLnZhbHVlCisgICAgYXNzZXJ0IGVyci5z cWxzdGF0ZSA9PSAiMjM1MDUiCisgICAgYXNzZXJ0IGVyci50YWJsZV9uYW1lID09ICJ0ZXN0X3V2 IgorICAgIGFzc2VydCBlcnIuY29uc3RyYWludF9uYW1lID09ICJ0ZXN0X3V2X3BrIgorICAgIGFz c2VydCBlcnIuZGV0YWlsID09ICJLZXkgKGlkKT0oMSkgYWxyZWFkeSBleGlzdHMuIgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X2xpYnBxLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0 L3B5dC90ZXN0X2xpYnBxLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li40ZmNmNDA1NmY0MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVz dF9saWJwcS5weQpAQCAtMCwwICsxLDE3MiBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBv cnQgb3MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0aHJlYWRpbmcKK2Zy b20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gbGlicHEg aW1wb3J0IGNvbm5zdHIsIExpYnBxRXJyb3IKKworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUo CisgICAgIm9wdHMsIGV4cGVjdGVkIiwKKyAgICBbCisgICAgICAgIChkaWN0KCksICIiKSwKKyAg ICAgICAgKGRpY3QocG9ydD01NDMyKSwgInBvcnQ9NTQzMiIpLAorICAgICAgICAoZGljdChwb3J0 PTU0MzIsIGRibmFtZT0icG9zdGdyZXMiKSwgInBvcnQ9NTQzMiBkYm5hbWU9cG9zdGdyZXMiKSwK KyAgICAgICAgKGRpY3QoaG9zdD0iIiksICJob3N0PScnIiksCisgICAgICAgIChkaWN0KGhvc3Q9 IiAiKSwgciJob3N0PScgJyIpLAorICAgICAgICAoZGljdChrZXl3b3JkPSInIiksIHIia2V5d29y ZD1cJyIpLAorICAgICAgICAoZGljdChrZXl3b3JkPSIgXFwnICIpLCByImtleXdvcmQ9JyBcXFwn ICciKSwKKyAgICBdLAorKQorZGVmIHRlc3RfY29ubnN0cihvcHRzLCBleHBlY3RlZCk6CisgICAg IiIiVGVzdHMgdGhlIGVzY2FwZSBiZWhhdmlvciBmb3IgY29ubnN0cigpLiIiIgorICAgIGFzc2Vy dCBjb25uc3RyKG9wdHMpID09IGV4cGVjdGVkCisKKworZGVmIHRlc3RfbXVzdF9jb25uZWN0X2Vy cm9ycyhjb25uZWN0KToKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QoKSByYWlzZXMgTGlicHFF cnJvci4iIiIKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoTGlicHFFcnJvciwgbWF0Y2g9ImludmFs aWQgY29ubmVjdGlvbiBvcHRpb24iKToKKyAgICAgICAgY29ubmVjdChzb21lX3Vua25vd25fa2V5 d29yZD0id2hhdGV2ZXIiKQorCisKK0BweXRlc3QuZml4dHVyZQorZGVmIGxvY2FsX3NlcnZlcih0 bXBfcGF0aCwgcmVtYWluaW5nX3RpbWVvdXQpOgorICAgICIiIgorICAgIE9wZW5zIHVwIGEgbG9j YWwgVU5JWCBzb2NrZXQgZm9yIG1vY2tpbmcgYSBQb3N0Z3JlcyBzZXJ2ZXIgb24gYSBiYWNrZ3Jv dW5kCisgICAgdGhyZWFkLiBTZWUgdGhlIF9TZXJ2ZXIgQVBJIGZvciB1c2FnZS4KKworICAgIFRo aXMgZml4dHVyZSByZXF1aXJlcyBBRl9VTklYIHN1cHBvcnQ7IGRlcGVuZGVudCB0ZXN0cyB3aWxs IGJlIHNraXBwZWQgb24KKyAgICBwbGF0Zm9ybXMgdGhhdCBkb24ndCBwcm92aWRlIGl0LgorICAg ICIiIgorCisgICAgdHJ5OgorICAgICAgICBmcm9tIHNvY2tldCBpbXBvcnQgQUZfVU5JWAorICAg IGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcHl0ZXN0LnNraXAoIkFGX1VOSVggbm90IHN1 cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIikKKworICAgIGNsYXNzIF9TZXJ2ZXIoY29udGV4dGxp Yi5FeGl0U3RhY2spOgorICAgICAgICAiIiIKKyAgICAgICAgSW1wbGVtZW50YXRpb24gY2xhc3Mg Zm9yIGxvY2FsX3NlcnZlci4gU2VlIC5iYWNrZ3JvdW5kKCkgZm9yIHRoZSBwcmltYXJ5CisgICAg ICAgIGVudHJ5IHBvaW50IGZvciB0ZXN0cy4gUG9zdGdyZXMgY2xpZW50cyBtYXkgY29ubmVjdCB0 byB0aGlzIHNlcnZlciB2aWEKKyAgICAgICAgbG9jYWxfc2VydmVyLmhvc3QvbG9jYWxfc2VydmVy LnBvcnQuCisKKyAgICAgICAgX1NlcnZlciBkZXJpdmVzIGZyb20gY29udGV4dGxpYi5FeGl0U3Rh Y2sgdG8gcHJvdmlkZSBlYXN5IGNsZWFudXAgb2YKKyAgICAgICAgYXNzb2NpYXRlZCByZXNvdXJj ZXM7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhhdCBjbGFzcyBmb3IgYSBmdWxsCisgICAg ICAgIGV4cGxhbmF0aW9uLgorICAgICAgICAiIiIKKworICAgICAgICBkZWYgX19pbml0X18oc2Vs Zik6CisgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgICAgICAgICAgc2VsZi5o b3N0ID0gdG1wX3BhdGgKKyAgICAgICAgICAgIHNlbGYucG9ydCA9IDU0MzIKKworICAgICAgICAg ICAgc2VsZi5fdGhyZWFkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2V4YyA9IE5v bmUKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyID0gc2VsZi5lbnRlcl9jb250ZXh0KAorICAg ICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoQUZfVU5JWCwgc29ja2V0LlNPQ0tfU1RSRUFNKSwK KyAgICAgICAgICAgICkKKworICAgICAgICBkZWYgYmluZF9hbmRfbGlzdGVuKHNlbGYpOgorICAg ICAgICAgICAgIiIiCisgICAgICAgICAgICBEb2VzIHRoZSBhY3R1YWwgd29yayBvZiBiaW5kaW5n IHRoZSBVTklYIHNvY2tldCB1c2luZyB0aGUgUG9zdGdyZXMKKyAgICAgICAgICAgIHNlcnZlciBj b252ZW50aW9ucyBhbmQgbGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucy4KKworICAgICAgICAgICAg VGhlIGxpc3RlbiBiYWNrbG9nIGlzIGN1cnJlbnRseSBoYXJkY29kZWQgdG8gb25lLgorICAgICAg ICAgICAgIiIiCisgICAgICAgICAgICBzb2NrZmlsZSA9IHNlbGYuaG9zdCAvICIucy5QR1NRTC57 fSIuZm9ybWF0KHNlbGYucG9ydCkKKworICAgICAgICAgICAgIyBMb2NrIGRvd24gdGhlIHBlcm1p c3Npb25zIG9uIHRoZSBuZXcgc29ja2V0LgorICAgICAgICAgICAgcHJldl9tYXNrID0gb3MudW1h c2soMG8wNzcpCisKKyAgICAgICAgICAgICMgQmluZCAoY3JlYXRpbmcgdGhlIHNvY2tldCBmaWxl KSwgYW5kIGltbWVkaWF0ZWx5IHJlZ2lzdGVyIGl0IGZvcgorICAgICAgICAgICAgIyBkZWxldGlv biBmcm9tIGRpc2sgd2hlbiB0aGUgc3RhY2sgaXMgY2xlYW5lZCB1cC4KKyAgICAgICAgICAgIHNl bGYuX2xpc3RlbmVyLmJpbmQoYnl0ZXMoc29ja2ZpbGUpKQorICAgICAgICAgICAgc2VsZi5jYWxs YmFjayhvcy51bmxpbmssIHNvY2tmaWxlKQorCisgICAgICAgICAgICBvcy51bWFzayhwcmV2X21h c2spCisKKyAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLmxpc3RlbigxKQorCisgICAgICAgIGRl ZiBiYWNrZ3JvdW5kKHNlbGYsIGZuOiBDYWxsYWJsZVtbc29ja2V0LnNvY2tldF0sIE5vbmVdKSAt PiBOb25lOgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBBY2NlcHRzIGEgY2xpZW50IGNv bm5lY3Rpb24gb24gYSBiYWNrZ3JvdW5kIHRocmVhZCBhbmQgcGFzc2VzIGl0IHRvCisgICAgICAg ICAgICB0aGUgcHJvdmlkZWQgY2FsbGJhY2suIEFueSBleGNlcHRpb25zIHJhaXNlZCBmcm9tIHRo ZSBjYWxsYmFjayB3aWxsCisgICAgICAgICAgICBiZSByZS1yYWlzZWQgb24gdGhlIG1haW4gdGhy ZWFkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorCisgICAgICAgICAgICBCbG9ja2luZyBvcGVy YXRpb25zIG9uIHRoZSBjb25uZWN0ZWQgc29ja2V0IGRlZmF1bHQgdG8gdXNpbmcgdGhlCisgICAg ICAgICAgICByZW1haW5pbmdfdGltZW91dCgpLCB0aG91Z2ggdGhpcyBjYW4gYmUgY2hhbmdlZCBi eSB0aGUgdGVzdCB2aWEgdGhlCisgICAgICAgICAgICBzb2NrZXQncyAuc2V0dGltZW91dCgpLgor ICAgICAgICAgICAgIiIiCisKKyAgICAgICAgICAgIGRlZiBfYmcoKToKKyAgICAgICAgICAgICAg ICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xpc3RlbmVyLnNldHRpbWVvdXQocmVt YWluaW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAgICAgICAgc29jaywgXyA9IHNlbGYuX2xp c3RlbmVyLmFjY2VwdCgpCisKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzb2NrOgorICAgICAg ICAgICAgICAgICAgICAgICAgc29jay5zZXR0aW1lb3V0KHJlbWFpbmluZ190aW1lb3V0KCkpCisg ICAgICAgICAgICAgICAgICAgICAgICBmbihzb2NrKQorCisgICAgICAgICAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAjIFNhdmUgdGhlIGV4Y2VwdGlv biBmb3IgcmUtcmFpc2luZyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgICAgICAgICAgICAg IHNlbGYuX3RocmVhZF9leGMgPSBlCisKKyAgICAgICAgICAgICMgVE9ETzogcmF0aGVyIHRoYW4g dXNpbmcgY2FsbGJhY2soKSwgY29uc2lkZXIgZXhwbGljaXRseSBzaWduYWxpbmcKKyAgICAgICAg ICAgICMgdGhlIGZuKCkgaW1wbGVtZW50YXRpb24gdG8gc3RvcCBlYXJseSBpZiB3ZSBnZXQgYW4g ZXhjZXB0aW9uLgorICAgICAgICAgICAgIyBPdGhlcndpc2Ugd2UnbGwgaGFuZyB1bnRpbCB0aGUg ZW5kIG9mIHRoZSB0aW1lb3V0LgorICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5n LlRocmVhZCh0YXJnZXQ9X2JnKQorICAgICAgICAgICAgc2VsZi5jYWxsYmFjayhzZWxmLl9qb2lu KQorCisgICAgICAgICAgICBzZWxmLl90aHJlYWQuc3RhcnQoKQorCisgICAgICAgIGRlZiBfam9p bihzZWxmKToKKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgV2FpdHMgZm9yIHRoZSBiYWNr Z3JvdW5kIHRocmVhZCB0byBmaW5pc2ggYW5kIHJhaXNlcyBhbnkgdGhyb3duCisgICAgICAgICAg ICBleGNlcHRpb24uIFRoaXMgaXMgY2FsbGVkIGR1cmluZyBmaXh0dXJlIHRlYXJkb3duLgorICAg ICAgICAgICAgIiIiCisgICAgICAgICAgICAjIEdpdmUgYSBsaXR0bGUgYml0IG9mIHdpZ2dsZSBy b29tIG9uIHRoZSBqb2luIHRpbWVvdXQsIHNpbmNlIHdlJ3JlCisgICAgICAgICAgICAjIHJhY2lu ZyBhZ2FpbnN0IHRoZSB0ZXN0J3Mgb3duIHVzZSBvZiByZW1haW5pbmdfdGltZW91dCgpLiAoSXQn cworICAgICAgICAgICAgIyBwcmVmZXJhYmxlIHRvIGxldCB0ZXN0cyByZXBvcnQgdGltZW91dHM7 IHRoZSBzdGFjayB0cmFjZXMgd2lsbAorICAgICAgICAgICAgIyBoZWxwIHdpdGggZGVidWdnaW5n LikKKyAgICAgICAgICAgIHNlbGYuX3RocmVhZC5qb2luKHJlbWFpbmluZ190aW1lb3V0KCkgKyAx KQorICAgICAgICAgICAgaWYgc2VsZi5fdGhyZWFkLmlzX2FsaXZlKCk6CisgICAgICAgICAgICAg ICAgcmFpc2UgVGltZW91dEVycm9yKCJiYWNrZ3JvdW5kIHRocmVhZCBpcyBzdGlsbCBydW5uaW5n IGFmdGVyIHRpbWVvdXQiKQorCisgICAgICAgICAgICBpZiBzZWxmLl90aHJlYWRfZXhjIGlzIG5v dCBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYuX3RocmVhZF9leGMKKworICAgIHdp dGggX1NlcnZlcigpIGFzIHM6CisgICAgICAgIHMuYmluZF9hbmRfbGlzdGVuKCkKKyAgICAgICAg eWllbGQgcworCisKK2RlZiB0ZXN0X2Nvbm5lY3Rpb25faXNfZmluaXNoZWRfb25fZXJyb3IoY29u bmVjdCwgbG9jYWxfc2VydmVyKToKKyAgICAiIiJUZXN0cyB0aGF0IFBRZmluaXNoKCkgZ2V0cyBj YWxsZWQgYXQgdGhlIGVuZCBvZiB0ZXN0aW5nLiIiIgorICAgIGV4cGVjdGVkX2Vycm9yID0gInNv bWV0aGluZyBpcyB3cm9uZyIKKworICAgIGRlZiBzZXJ2ZV9lcnJvcihzOiBzb2NrZXQuc29ja2V0 KSAtPiBOb25lOgorICAgICAgICBwa3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0 KSlbMF0KKworICAgICAgICAjIFF1aWNrIGNoZWNrIGZvciB0aGUgc3RhcnR1cCBwYWNrZXQgdmVy c2lvbi4KKyAgICAgICAgdmVyc2lvbiA9IHN0cnVjdC51bnBhY2soIiFISCIsIHMucmVjdig0KSkK KyAgICAgICAgYXNzZXJ0IHZlcnNpb24gPT0gKDMsIDApCisKKyAgICAgICAgIyBEaXNjYXJkIHRo ZSByZW1haW5kZXIgb2YgdGhlIHN0YXJ0dXAgcGFja2V0IGFuZCBzZW5kIGEgdjIgZXJyb3IuCisg ICAgICAgIHMucmVjdihwa3RsZW4gLSA4KQorICAgICAgICBzLnNlbmQoYiJFIiArIGV4cGVjdGVk X2Vycm9yLmVuY29kZSgpICsgYiJcMCIpCisKKyAgICAgICAgIyBBbmQgbm93IHRoZSBzb2NrZXQg c2hvdWxkIGJlIGNsb3NlZC4KKyAgICAgICAgYXNzZXJ0IG5vdCBzLnJlY3YoMSksICJjbGllbnQg c2VudCB1bmV4cGVjdGVkIGRhdGEiCisKKyAgICBsb2NhbF9zZXJ2ZXIuYmFja2dyb3VuZChzZXJ2 ZV9lcnJvcikKKworICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhMaWJwcUVycm9yLCBtYXRjaD1leHBl Y3RlZF9lcnJvcik6CisgICAgICAgICMgRXhpdGluZyB0aGlzIGNvbnRleHQgc2hvdWxkIHJlc3Vs dCBpbiBQUWZpbmlzaCgpLgorICAgICAgICBjb25uZWN0KGhvc3Q9bG9jYWxfc2VydmVyLmhvc3Qs IHBvcnQ9bG9jYWxfc2VydmVyLnBvcnQpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0 L3Rlc3RfbXVsdGlfc2VydmVyLnB5IGIvc3JjL3Rlc3QvcHl0ZXN0L3B5dC90ZXN0X211bHRpX3Nl cnZlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOGVlMDQ1YjBj YzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfbXVsdGlfc2Vy dmVyLnB5CkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCisiIiIKK1Rlc3RzIGRlbW9uc3RyYXRpbmcgbXVs dGktc2VydmVyIGZ1bmN0aW9uYWxpdHkgdXNpbmcgY3JlYXRlX3BnIGZpeHR1cmUuCisKK1RoZXNl IHRlc3RzIHZlcmlmeSB0aGF0IHRoZSBweXRlc3QgaW5mcmFzdHJ1Y3R1cmUgY29ycmVjdGx5IGhh bmRsZXMKK211bHRpcGxlIFBvc3RncmVTUUwgc2VydmVyIGluc3RhbmNlcyB3aXRoaW4gYSBzaW5n bGUgdGVzdCwgYW5kIHRoYXQKK21vZHVsZS1zY29wZWQgc2VydmVycyBwZXJzaXN0IGFjcm9zcyB0 ZXN0cy4KKyIiIgorCitpbXBvcnQgcHl0ZXN0CisKKworZGVmIHRlc3RfbXVsdGlwbGVfc2VydmVy c19iYXNpYyhjcmVhdGVfcGcpOgorICAgICIiIlRlc3QgdGhhdCB3ZSBjYW4gY3JlYXRlIGFuZCBj b25uZWN0IHRvIG11bHRpcGxlIHNlcnZlcnMuIiIiCisgICAgbm9kZTEgPSBjcmVhdGVfcGcoInBy aW1hcnkiKQorICAgIG5vZGUyID0gY3JlYXRlX3BnKCJzZWNvbmRhcnkiKQorCisgICAgY29ubjEg PSBub2RlMS5jb25uZWN0KCkKKyAgICBjb25uMiA9IG5vZGUyLmNvbm5lY3QoKQorCisgICAgIyBF YWNoIHNlcnZlciBzaG91bGQgaGF2ZSBpdHMgb3duIGRhdGEgZGlyZWN0b3J5CisgICAgZGF0YWRp cjEgPSBjb25uMS5zcWwoIlNIT1cgZGF0YV9kaXJlY3RvcnkiKQorICAgIGRhdGFkaXIyID0gY29u bjIuc3FsKCJTSE9XIGRhdGFfZGlyZWN0b3J5IikKKyAgICBhc3NlcnQgZGF0YWRpcjEgIT0gZGF0 YWRpcjIKKworICAgICMgRWFjaCBzZXJ2ZXIgc2hvdWxkIGJlIGxpc3RlbmluZyBvbiBhIGRpZmZl cmVudCBwb3J0CisgICAgYXNzZXJ0IG5vZGUxLnBvcnQgIT0gbm9kZTIucG9ydAorCisKK0BweXRl c3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBzaGFyZWRfc2VydmVyKGNyZWF0ZV9wZ19t b2R1bGUpOgorICAgICIiIkEgc2VydmVyIHNoYXJlZCBhY3Jvc3MgYWxsIHRlc3RzIGluIHRoaXMg bW9kdWxlLiIiIgorICAgIHNlcnZlciA9IGNyZWF0ZV9wZ19tb2R1bGUoInNoYXJlZCIpCisgICAg c2VydmVyLnNxbCgiQ1JFQVRFIFRBQkxFIG1vZHVsZV9zdGF0ZSAodmFsdWUgaW50IERFRkFVTFQg MCkiKQorICAgIHJldHVybiBzZXJ2ZXIKKworCitkZWYgdGVzdF9tb2R1bGVfc2VydmVyX2NyZWF0 ZV9yb3coc2hhcmVkX3NlcnZlcik6CisgICAgIiIiRmlyc3QgdGVzdDogY3JlYXRlIGEgcm93IGlu IHRoZSBzaGFyZWQgc2VydmVyLiIiIgorICAgIHNoYXJlZF9zZXJ2ZXIuY29ubmVjdCgpLnNxbCgi SU5TRVJUIElOVE8gbW9kdWxlX3N0YXRlIFZBTFVFUyAoNDIpIikKKworCitkZWYgdGVzdF9tb2R1 bGVfc2VydmVyX3NlZV9yb3coc2hhcmVkX3NlcnZlcik6CisgICAgIiIiU2Vjb25kIHRlc3Q6IHZl cmlmeSB3ZSBzZWUgdGhlIHJvdyBmcm9tIHRoZSBwcmV2aW91cyB0ZXN0LiIiIgorICAgIGFzc2Vy dCBzaGFyZWRfc2VydmVyLmNvbm5lY3QoKS5zcWwoIlNFTEVDVCB2YWx1ZSBGUk9NIG1vZHVsZV9z dGF0ZSIpID09IDQyCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9weXRlc3QvcHl0L3Rlc3RfcXVlcnlf aGVscGVycy5weSBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9oZWxwZXJzLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hYmNkOTA4NDIxNAotLS0gL2Rl di9udWxsCisrKyBiL3NyYy90ZXN0L3B5dGVzdC9weXQvdGVzdF9xdWVyeV9oZWxwZXJzLnB5CkBA IC0wLDAgKzEsMzQ3IEBACisjIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwg RGV2ZWxvcG1lbnQgR3JvdXAKKworIiIiCitUZXN0cyBmb3IgcXVlcnkgaGVscGVyIGZ1bmN0aW9u cyB3aXRoIHR5cGUgY29udmVyc2lvbiBhbmQgcmVzdWx0IHNpbXBsaWZpY2F0aW9uLgorIiIiCisK K2ltcG9ydCB1dWlkCisKK2ltcG9ydCBweXRlc3QKKworCitkZWYgdGVzdF9zaW5nbGVfY2VsbF9p bnQoY29ubik6CisgICAgIiIiU2luZ2xlIGNlbGwgaW50ZWdlciBxdWVyeSByZXR1cm5zIGp1c3Qg dGhlIHZhbHVlLiIiIgorICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgMSIpCisgICAgYXNz ZXJ0IHJlc3VsdCA9PSAxCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBpbnQpCisKKwor ZGVmIHRlc3Rfc2luZ2xlX2NlbGxfc3RyaW5nKGNvbm4pOgorICAgICIiIlNpbmdsZSBjZWxsIHN0 cmluZyBxdWVyeSByZXR1cm5zIGp1c3QgdGhlIHZhbHVlLiIiIgorICAgIHJlc3VsdCA9IGNvbm4u c3FsKCJTRUxFQ1QgJ2hlbGxvJyIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSAiaGVsbG8iCisgICAg YXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBzdHIpCisKKworZGVmIHRlc3Rfc2luZ2xlX2NlbGxf Ym9vbChjb25uKToKKyAgICAiIiJTaW5nbGUgY2VsbCBib29sZWFuIHF1ZXJ5IHJldHVybnMganVz dCB0aGUgdmFsdWUuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIHRydWUiKQor ICAgIGFzc2VydCByZXN1bHQgaXMgVHJ1ZQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg Ym9vbCkKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgZmFsc2UiKQorICAgIGFzc2Vy dCByZXN1bHQgaXMgRmFsc2UKKworCitkZWYgdGVzdF9zaW5nbGVfY2VsbF9mbG9hdChjb25uKToK KyAgICAiIiJTaW5nbGUgY2VsbCBmbG9hdCBxdWVyeSByZXR1cm5zIGp1c3QgdGhlIHZhbHVlLiIi IgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAzLjE0OjpmbG9hdDQiKQorICAgIGFz c2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZmxvYXQpCisgICAgYXNzZXJ0IGFicyhyZXN1bHQgLSAz LjE0KSA8IDAuMDEKKworCitkZWYgdGVzdF9zaW5nbGVfY2VsbF9udWxsKGNvbm4pOgorICAgICIi IlNpbmdsZSBjZWxsIE5VTEwgcXVlcnkgcmV0dXJucyBOb25lLiIiIgorCisgICAgcmVzdWx0ID0g Y29ubi5zcWwoIlNFTEVDVCBOVUxMIikKKyAgICBhc3NlcnQgcmVzdWx0IGlzIE5vbmUKKworCitk ZWYgdGVzdF9zaW5nbGVfcm93X211bHRpcGxlX2NvbHVtbnMoY29ubik6CisgICAgIiIiU2luZ2xl IHJvdyB3aXRoIG11bHRpcGxlIGNvbHVtbnMgcmV0dXJucyBhIHR1cGxlLiIiIgorCisgICAgcmVz dWx0ID0gY29ubi5zcWwoIlNFTEVDVCAxLCAnaGVsbG8nLCB0cnVlIikKKyAgICBhc3NlcnQgcmVz dWx0ID09ICgxLCAiaGVsbG8iLCBUcnVlKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwg dHVwbGUpCisKKworZGVmIHRlc3Rfc2luZ2xlX2NvbHVtbl9tdWx0aXBsZV9yb3dzKGNvbm4pOgor ICAgICIiIlNpbmdsZSBjb2x1bW4gd2l0aCBtdWx0aXBsZSByb3dzIHJldHVybnMgYSBsaXN0IG9m IHZhbHVlcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgKiBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzKSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbMSwgMiwgM10KKyAgICBh c3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisKKworZGVmIHRlc3RfbXVsdGlwbGVfcm93 c19hbmRfY29sdW1ucyhjb25uKToKKyAgICAiIiJNdWx0aXBsZSByb3dzIGFuZCBjb2x1bW5zIHJl dHVybnMgbGlzdCBvZiB0dXBsZXMuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNU ICogRlJPTSAoVkFMVUVTICgxLCAnYScpLCAoMiwgJ2InKSwgKDMsICdjJykpIEFTIHQiKQorICAg IGFzc2VydCByZXN1bHQgPT0gWygxLCAiYSIpLCAoMiwgImIiKSwgKDMsICJjIildCisgICAgYXNz ZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0KQorICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZShy b3csIHR1cGxlKSBmb3Igcm93IGluIHJlc3VsdCkKKworCitkZWYgdGVzdF9lbXB0eV9yZXN1bHQo Y29ubik6CisgICAgIiIiRW1wdHkgcmVzdWx0IHNldCByZXR1cm5zIGVtcHR5IGxpc3QuIiIiCisK KyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEgV0hFUkUgZmFsc2UiKQorICAgIGFzc2Vy dCByZXN1bHQgPT0gW10KKworCitkZWYgdGVzdF9xdWVyeV9lcnJvcl9oYW5kbGluZyhjb25uKToK KyAgICAiIiJRdWVyeSBlcnJvcnMgcmFpc2UgUnVudGltZUVycm9yIHdpdGggYWN0dWFsIGVycm9y IG1lc3NhZ2UuIiIiCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoUnVudGltZUVycm9yKSBhcyBl eGNfaW5mbzoKKyAgICAgICAgY29ubi5zcWwoIlNFTEVDVCAqIEZST00gbm9uZXhpc3RlbnRfdGFi bGUiKQorCisgICAgZXJyb3JfbXNnID0gc3RyKGV4Y19pbmZvLnZhbHVlKQorICAgIGFzc2VydCAi bm9uZXhpc3RlbnRfdGFibGUiIGluIGVycm9yX21zZyBvciAiZG9lcyBub3QgZXhpc3QiIGluIGVy cm9yX21zZworCisKK2RlZiB0ZXN0X2RpdmlzaW9uX2J5X3plcm9fZXJyb3IoY29ubik6CisgICAg IiIiRGl2aXNpb24gYnkgemVybyByYWlzZXMgUnVudGltZUVycm9yLiIiIgorCisgICAgd2l0aCBw eXRlc3QucmFpc2VzKFJ1bnRpbWVFcnJvcikgYXMgZXhjX2luZm86CisgICAgICAgIGNvbm4uc3Fs KCJTRUxFQ1QgMS8wIikKKworICAgIGVycm9yX21zZyA9IHN0cihleGNfaW5mby52YWx1ZSkKKyAg ICBhc3NlcnQgImRpdmlzaW9uIGJ5IHplcm8iIGluIGVycm9yX21zZy5sb3dlcigpCisKKworZGVm IHRlc3Rfc2ltcGxlX2V4ZWNfY3JlYXRlX3RhYmxlKGNvbm4pOgorICAgICIiInNxbCBmb3IgQ1JF QVRFIFRBQkxFIHJldHVybnMgTm9uZS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJDUkVB VEUgVEVNUCBUQUJMRSB0ZXN0X3RhYmxlIChpZCBpbnQsIG5hbWUgdGV4dCkiKQorICAgIGFzc2Vy dCByZXN1bHQgaXMgTm9uZQorCisgICAgIyBWZXJpZnkgdGFibGUgd2FzIGNyZWF0ZWQKKyAgICBj b3VudCA9IGNvbm4uc3FsKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSB0ZXN0X3RhYmxlIikKKyAgICBh c3NlcnQgY291bnQgPT0gMAorCisKK2RlZiB0ZXN0X3NpbXBsZV9leGVjX2luc2VydChjb25uKToK KyAgICAiIiJzcWwgZm9yIElOU0VSVCByZXR1cm5zIE5vbmUuIiIiCisKKyAgICBjb25uLnNxbCgi Q1JFQVRFIFRFTVAgVEFCTEUgdGVzdF90YWJsZSAoaWQgaW50LCBuYW1lIHRleHQpIikKKyAgICBy ZXN1bHQgPSBjb25uLnNxbCgiSU5TRVJUIElOVE8gdGVzdF90YWJsZSBWQUxVRVMgKDEsICdBbGlj ZScpLCAoMiwgJ0JvYicpIikKKyAgICBhc3NlcnQgcmVzdWx0IGlzIE5vbmUKKworICAgICMgVmVy aWZ5IGRhdGEgd2FzIGluc2VydGVkCisgICAgY291bnQgPSBjb25uLnNxbCgiU0VMRUNUIENPVU5U KCopIEZST00gdGVzdF90YWJsZSIpCisgICAgYXNzZXJ0IGNvdW50ID09IDIKKworCitkZWYgdGVz dF90eXBlX2NvbnZlcnNpb25fbWl4ZWQoY29ubik6CisgICAgIiIiVGVzdCBtaXhlZCB0eXBlIGNv bnZlcnNpb24gaW4gYSBzaW5nbGUgcm93LiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNF TEVDVCA0Mjo6aW50NCwgMTIzOjppbnQ4LCAzLjE0OjpmbG9hdDgsICd0ZXh0JywgdHJ1ZSwgTlVM TCIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSAoNDIsIDEyMywgMy4xNCwgInRleHQiLCBUcnVlLCBO b25lKQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFswXSwgaW50KQorICAgIGFzc2VydCBp c2luc3RhbmNlKHJlc3VsdFsxXSwgaW50KQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdFsy XSwgZmxvYXQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzNdLCBzdHIpCisgICAgYXNz ZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzRdLCBib29sKQorICAgIGFzc2VydCByZXN1bHRbNV0gaXMg Tm9uZQorCisKK2RlZiB0ZXN0X211bHRpcGxlX3F1ZXJpZXNfc2FtZV9jb25uZWN0aW9uKGNvbm4p OgorICAgICIiIlRlc3QgcnVubmluZyBtdWx0aXBsZSBxdWVyaWVzIG9uIHRoZSBzYW1lIGNvbm5l Y3Rpb24uIiIiCisKKyAgICByZXN1bHQxID0gY29ubi5zcWwoIlNFTEVDVCAxIikKKyAgICBhc3Nl cnQgcmVzdWx0MSA9PSAxCisKKyAgICByZXN1bHQyID0gY29ubi5zcWwoIlNFTEVDVCAnaGVsbG8n LCAnd29ybGQnIikKKyAgICBhc3NlcnQgcmVzdWx0MiA9PSAoImhlbGxvIiwgIndvcmxkIikKKwor ICAgIHJlc3VsdDMgPSBjb25uLnNxbCgiU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NSkiKQorICAgIGFzc2VydCByZXN1bHQzID09IFsxLCAyLCAzLCA0LCA1XQorCisKK2RlZiB0ZXN0 X2RhdGVfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IGRhdGUgdHlwZSBjb252ZXJzaW9uLiIiIgor ICAgIGltcG9ydCBkYXRldGltZQorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAnMjAy NS0xMC0yMCc6OmRhdGUiKQorICAgIGFzc2VydCByZXN1bHQgPT0gZGF0ZXRpbWUuZGF0ZSgyMDI1 LCAxMCwgMjApCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBkYXRldGltZS5kYXRlKQor CisKK2RlZiB0ZXN0X3RpbWVzdGFtcF90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgdGltZXN0YW1w IHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICBpbXBvcnQgZGF0ZXRpbWUKKworICAgIHJlc3VsdCA9 IGNvbm4uc3FsKCJTRUxFQ1QgJzIwMjUtMTAtMjAgMTU6MzA6NDUnOjp0aW1lc3RhbXAiKQorICAg IGFzc2VydCByZXN1bHQgPT0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAyNSwgMTAsIDIwLCAxNSwgMzAs IDQ1KQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGF0ZXRpbWUuZGF0ZXRpbWUpCisK KworZGVmIHRlc3RfdGltZV90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgdGltZSB0eXBlIGNvbnZl cnNpb24uIiIiCisgICAgaW1wb3J0IGRhdGV0aW1lCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgi U0VMRUNUICcxNTozMDo0NSc6OnRpbWUiKQorICAgIGFzc2VydCByZXN1bHQgPT0gZGF0ZXRpbWUu dGltZSgxNSwgMzAsIDQ1KQorICAgIGFzc2VydCBpc2luc3RhbmNlKHJlc3VsdCwgZGF0ZXRpbWUu dGltZSkKKworCitkZWYgdGVzdF9udW1lcmljX3R5cGUoY29ubik6CisgICAgIiIiVGVzdCBudW1l cmljL2RlY2ltYWwgdHlwZSBjb252ZXJzaW9uLiIiIgorICAgIGltcG9ydCBkZWNpbWFsCisKKyAg ICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNUIDEyMy40NTY6Om51bWVyaWMiKQorICAgIGFzc2Vy dCByZXN1bHQgPT0gZGVjaW1hbC5EZWNpbWFsKCIxMjMuNDU2IikKKyAgICBhc3NlcnQgaXNpbnN0 YW5jZShyZXN1bHQsIGRlY2ltYWwuRGVjaW1hbCkKKworCitkZWYgdGVzdF9pbnRfYXJyYXkoY29u bik6CisgICAgIiIiVGVzdCBpbnRlZ2VyIGFycmF5IHR5cGUgY29udmVyc2lvbi4iIiIKKworICAg IHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbMSwgMiwgMywgNCwgNV0iKQorICAgIGFz c2VydCByZXN1bHQgPT0gWzEsIDIsIDMsIDQsIDVdCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVz dWx0LCBsaXN0KQorICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZSh4LCBpbnQpIGZvciB4IGluIHJl c3VsdCkKKworCitkZWYgdGVzdF90ZXh0X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgdGV4dCBh cnJheSB0eXBlIGNvbnZlcnNpb24uIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiU0VMRUNU IEFSUkFZWydoZWxsbycsICd3b3JsZCcsICd0ZXN0J10iKQorICAgIGFzc2VydCByZXN1bHQgPT0g WyJoZWxsbyIsICJ3b3JsZCIsICJ0ZXN0Il0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQs IGxpc3QpCisgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHgsIHN0cikgZm9yIHggaW4gcmVzdWx0 KQorCisKK2RlZiB0ZXN0X2Jvb2xfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCBib29sZWFuIGFy cmF5IHR5cGUgY29udmVyc2lvbi4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1Qg QVJSQVlbdHJ1ZSwgZmFsc2UsIHRydWVdIikKKyAgICBhc3NlcnQgcmVzdWx0ID09IFtUcnVlLCBG YWxzZSwgVHJ1ZV0KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIGxpc3QpCisgICAgYXNz ZXJ0IGFsbChpc2luc3RhbmNlKHgsIGJvb2wpIGZvciB4IGluIHJlc3VsdCkKKworCitkZWYgdGVz dF9lbXB0eV9hcnJheShjb25uKToKKyAgICAiIiJUZXN0IGVtcHR5IGFycmF5IHR5cGUgY29udmVy c2lvbi4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbXTo6aW50W10i KQorICAgIGFzc2VydCByZXN1bHQgPT0gW10KKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQs IGxpc3QpCisKKworZGVmIHRlc3RfanNvbl90eXBlKGNvbm4pOgorICAgICIiIlRlc3QgSlNPTiB0 eXBlIChwYXJzZWQgdG8gZGljdCkuIiIiCisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgnU0VMRUNU IFwneyJrZXkiOiAidmFsdWUifVwnOjpqc29uJykKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1 bHQsIGRpY3QpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSB7ImtleSI6ICJ2YWx1ZSJ9CisKKworZGVm IHRlc3RfanNvbmJfdHlwZShjb25uKToKKyAgICAiIiJUZXN0IEpTT05CIHR5cGUgKHBhcnNlZCB0 byBkaWN0KS4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCdTRUxFQ1QgXCd7Im5hbWUiOiAi dGVzdCIsICJjb3VudCI6IDQyfVwnOjpqc29uYicpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVz dWx0LCBkaWN0KQorICAgIGFzc2VydCByZXN1bHQgPT0geyJuYW1lIjogInRlc3QiLCAiY291bnQi OiA0Mn0KKworCitkZWYgdGVzdF9qc29uX2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgSlNPTiBh cnJheSB0eXBlLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCAnWzEsIDIsIDMs IDQsIDVdJzo6anNvbiIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCBsaXN0KQorICAg IGFzc2VydCByZXN1bHQgPT0gWzEsIDIsIDMsIDQsIDVdCisKKworZGVmIHRlc3RfanNvbl9uZXN0 ZWQoY29ubik6CisgICAgIiIiVGVzdCBuZXN0ZWQgSlNPTiBvYmplY3QuIiIiCisKKyAgICByZXN1 bHQgPSBjb25uLnNxbCgKKyAgICAgICAgJ1NFTEVDVCBcJ3sidXNlciI6IHsiaWQiOiAxLCAibmFt ZSI6ICJBbGljZSJ9LCAiYWN0aXZlIjogdHJ1ZX1cJzo6anNvbicKKyAgICApCisgICAgYXNzZXJ0 IGlzaW5zdGFuY2UocmVzdWx0LCBkaWN0KQorICAgIGFzc2VydCByZXN1bHQgPT0geyJ1c2VyIjog eyJpZCI6IDEsICJuYW1lIjogIkFsaWNlIn0sICJhY3RpdmUiOiBUcnVlfQorCisKK2RlZiB0ZXN0 X21peGVkX3R5cGVzX3dpdGhfYXJyYXlzKGNvbm4pOgorICAgICIiIlRlc3QgbWl4ZWQgdHlwZXMg aW5jbHVkaW5nIGFycmF5cyBpbiBhIHNpbmdsZSByb3cuIiIiCisKKyAgICByZXN1bHQgPSBjb25u LnNxbCgiU0VMRUNUIDQyLCAndGV4dCcsIEFSUkFZWzEsIDIsIDNdLCB0cnVlIikKKyAgICBhc3Nl cnQgcmVzdWx0ID09ICg0MiwgInRleHQiLCBbMSwgMiwgM10sIFRydWUpCisgICAgYXNzZXJ0IGlz aW5zdGFuY2UocmVzdWx0WzBdLCBpbnQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzFd LCBzdHIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0WzJdLCBsaXN0KQorICAgIGFzc2Vy dCBpc2luc3RhbmNlKHJlc3VsdFszXSwgYm9vbCkKKworCitkZWYgdGVzdF91dWlkX3R5cGUoY29u bik6CisgICAgIiIiVGVzdCBVVUlEIHR5cGUgY29udmVyc2lvbi4iIiIKKyAgICB0ZXN0X3V1aWQg PSAiNTUwZTg0MDAtZTI5Yi00MWQ0LWE3MTYtNDQ2NjU1NDQwMDAwIgorICAgIHJlc3VsdCA9IGNv bm4uc3FsKGYiU0VMRUNUICd7dGVzdF91dWlkfSc6OnV1aWQiKQorICAgIGFzc2VydCByZXN1bHQg PT0gdXVpZC5VVUlEKHRlc3RfdXVpZCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXN1bHQsIHV1 aWQuVVVJRCkKKworCitkZWYgdGVzdF91dWlkX2dlbmVyYXRpb24oY29ubik6CisgICAgIiIiVGVz dCBnZW5lcmF0ZWQgVVVJRCB0eXBlIGNvbnZlcnNpb24uIiIiCisgICAgcmVzdWx0ID0gY29ubi5z cWwoIlNFTEVDVCB1dWlkdjQoKSIpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocmVzdWx0LCB1dWlk LlVVSUQpCisgICAgIyBDaGVjayBpdCdzIGEgdmFsaWQgVVVJRCBieSBlbnN1cmluZyBpdCBjYW4g YmUgY29udmVydGVkIHRvIHN0cmluZworICAgIGFzc2VydCBsZW4oc3RyKHJlc3VsdCkpID09IDM2 ICAjIFVVSUQgc3RyaW5nIGZvcm1hdCBsZW5ndGgKKworCitkZWYgdGVzdF90ZXh0X2FycmF5X3dp dGhfY29tbWFzKGNvbm4pOgorICAgICIiIlRlc3QgdGV4dCBhcnJheSB3aXRoIGVsZW1lbnRzIGNv bnRhaW5pbmcgY29tbWFzLiIiIgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJB WVsnQSxCJywgJ0MnLCAnIEQgJ10iKQorICAgIGFzc2VydCByZXN1bHQgPT0gWyJBLEIiLCAiQyIs ICIgRCAiXQorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXlfd2l0aF9xdW90ZXMoY29ubik6CisgICAg IiIiVGVzdCB0ZXh0IGFycmF5IHdpdGggZWxlbWVudHMgY29udGFpbmluZyBxdW90ZXMuIiIiCisK KyAgICByZXN1bHQgPSBjb25uLnNxbChyIlNFTEVDVCBBUlJBWVtFJ2FcImInLCAnYyddIikKKyAg ICBhc3NlcnQgcmVzdWx0ID09IFsnYSJiJywgImMiXQorCisKK2RlZiB0ZXN0X3RleHRfYXJyYXlf d2l0aF9iYWNrc2xhc2goY29ubik6CisgICAgIiIiVGVzdCB0ZXh0IGFycmF5IHdpdGggZWxlbWVu dHMgY29udGFpbmluZyBiYWNrc2xhc2hlcy4iIiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKHIi U0VMRUNUIEFSUkFZW0UnYVxcYicsICdjJ10iKQorICAgIGFzc2VydCByZXN1bHQgPT0gWyJhXFxi IiwgImMiXQorCisKK2RlZiB0ZXN0X2pzb25fYXJyYXlfdHlwZShjb25uKToKKyAgICAiIiJUZXN0 IGFycmF5IG9mIEpTT04gdmFsdWVzIHdpdGggZW1iZWRkZWQgcXVvdGVzIGFuZCBjb21tYXMuIiIi CisKKyAgICByZXN1bHQgPSBjb25uLnNxbCgiIiJTRUxFQ1QgQVJSQVlbJ3siYWJjIjogMTIzLCAi eHl6IjogNDU2fSc6Ompzb25dIiIiKQorICAgIGFzc2VydCByZXN1bHQgPT0gW3siYWJjIjogMTIz LCAieHl6IjogNDU2fV0KKworCitkZWYgdGVzdF9qc29uX2FycmF5X211bHRpcGxlKGNvbm4pOgor ICAgICIiIlRlc3QgYXJyYXkgb2YgbXVsdGlwbGUgSlNPTiBvYmplY3RzLiIiIgorCisgICAgcmVz dWx0ID0gY29ubi5zcWwoCisgICAgICAgICIiIlNFTEVDVCBBUlJBWVsneyJhIjogMX0nOjpqc29u LCAneyJiIjogMn0nOjpqc29uLCAnWyJ4IiwgInkiXSc6Ompzb25dIiIiCisgICAgKQorICAgIGFz c2VydCByZXN1bHQgPT0gW3siYSI6IDF9LCB7ImIiOiAyfSwgWyJ4IiwgInkiXV0KKworCitkZWYg dGVzdF8yZF9pbnRfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCAyRCBpbnRlZ2VyIGFycmF5LiIi IgorCisgICAgcmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVtbMSwyXSxbMyw0XV0iKQor ICAgIGFzc2VydCByZXN1bHQgPT0gW1sxLCAyXSwgWzMsIDRdXQorCisKK2RlZiB0ZXN0XzJkX3Rl eHRfYXJyYXkoY29ubik6CisgICAgIiIiVGVzdCAyRCBpbnRlZ2VyIGFycmF5LiIiIgorCisgICAg cmVzdWx0ID0gY29ubi5zcWwoIlNFTEVDVCBBUlJBWVtbJ2EnLCdiJ10sWydjJywnZCxlJ11dIikK KyAgICBhc3NlcnQgcmVzdWx0ID09IFtbImEiLCAiYiJdLCBbImMiLCAiZCxlIl1dCisKKworZGVm IHRlc3RfM2RfaW50X2FycmF5KGNvbm4pOgorICAgICIiIlRlc3QgM0QgaW50ZWdlciBhcnJheS4i IiIKKworICAgIHJlc3VsdCA9IGNvbm4uc3FsKCJTRUxFQ1QgQVJSQVlbW1sxLDJdLFszLDRdXSxb WzUsNl0sWzcsOF1dXSIpCisgICAgYXNzZXJ0IHJlc3VsdCA9PSBbW1sxLCAyXSwgWzMsIDRdXSwg W1s1LCA2XSwgWzcsIDhdXV0KKworCitkZWYgdGVzdF9hcnJheV93aXRoX251bGwoY29ubik6Cisg ICAgIiIiVGVzdCBhcnJheSB3aXRoIE5VTEwgZWxlbWVudHMuIiIiCisKKyAgICByZXN1bHQgPSBj b25uLnNxbCgiU0VMRUNUIEFSUkFZWzEsIE5VTEwsIDNdIikKKyAgICBhc3NlcnQgcmVzdWx0ID09 IFsxLCBOb25lLCAzXQpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL2dlbmVyYXRlX3B5dGVzdF9saWJw cV9lcnJvcnMucHkgYi9zcmMvdG9vbHMvZ2VuZXJhdGVfcHl0ZXN0X2xpYnBxX2Vycm9ycy5weQpu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMC4uYmE5Mjg5MWMxN2EKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdG9vbHMvZ2VuZXJhdGVfcHl0ZXN0X2xpYnBxX2Vycm9ycy5weQpA QCAtMCwwICsxLDE0NyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyIiIgorR2VuZXJh dGUgc3JjL3Rlc3QvcHl0ZXN0L2xpYnBxL19nZW5lcmF0ZWRfZXJyb3JzLnB5IGZyb20gZXJyY29k ZXMudHh0LgorIiIiCisKK2ltcG9ydCBzeXMKK2Zyb20gcGF0aGxpYiBpbXBvcnQgUGF0aAorCisK K0FDUk9OWU1TID0geyJzcWwiLCAiZmR3In0KK1dPUkRfTUFQID0geworICAgICJzcWxjbGllbnQi OiAiU1FMQ2xpZW50IiwKKyAgICAic3Fsc2VydmVyIjogIlNRTFNlcnZlciIsCisgICAgInNxbGNv bm5lY3Rpb24iOiAiU1FMQ29ubmVjdGlvbiIsCit9CisKKworZGVmIHNuYWtlX3RvX3Bhc2NhbChu YW1lOiBzdHIpIC0+IHN0cjoKKyAgICAiIiJDb252ZXJ0IHNuYWtlX2Nhc2UgdG8gUGFzY2FsQ2Fz ZSwga2VlcGluZyBhY3JvbnltcyB1cHBlcmNhc2UuIiIiCisgICAgd29yZHMgPSBbXQorICAgIGZv ciB3b3JkIGluIG5hbWUuc3BsaXQoIl8iKToKKyAgICAgICAgaWYgd29yZCBpbiBXT1JEX01BUDoK KyAgICAgICAgICAgIHdvcmRzLmFwcGVuZChXT1JEX01BUFt3b3JkXSkKKyAgICAgICAgZWxpZiB3 b3JkIGluIEFDUk9OWU1TOgorICAgICAgICAgICAgd29yZHMuYXBwZW5kKHdvcmQudXBwZXIoKSkK KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdvcmRzLmFwcGVuZCh3b3JkLmNhcGl0YWxpemUo KSkKKyAgICByZXR1cm4gIiIuam9pbih3b3JkcykKKworCitkZWYgcGFyc2VfZXJyY29kZXMocGF0 aDogUGF0aCk6CisgICAgIiIiUGFyc2UgZXJyY29kZXMudHh0IGFuZCByZXR1cm4gbGlzdCBvZiAo c3Fsc3RhdGUsIG1hY3JvX25hbWUsIHNwZWNfbmFtZSkgdHVwbGVzLiIiIgorICAgIGVycm9ycyA9 IFtdCisKKyAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoK KyAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgpCisgICAgICAgICAgICBpZiBsZW4ocGFy dHMpID49IDQgYW5kIGxlbihwYXJ0c1swXSkgPT0gNToKKyAgICAgICAgICAgICAgICBzcWxzdGF0 ZSwgXywgbWFjcm9fbmFtZSwgc3BlY19uYW1lID0gcGFydHNbOjRdCisgICAgICAgICAgICAgICAg ZXJyb3JzLmFwcGVuZCgoc3Fsc3RhdGUsIG1hY3JvX25hbWUsIHNwZWNfbmFtZSkpCisKKyAgICBy ZXR1cm4gZXJyb3JzCisKKworZGVmIG1hY3JvX3RvX2NsYXNzX25hbWUobWFjcm9fbmFtZTogc3Ry KSAtPiBzdHI6CisgICAgIiIiQ29udmVydCBFUlJDT0RFX0ZPT19CQVIgdG8gRm9vQmFyLiIiIgor ICAgIG5hbWUgPSBtYWNyb19uYW1lLnJlbW92ZXByZWZpeCgiRVJSQ09ERV8iKQorICAgICMgTW92 ZSBXQVJOSU5HIHByZWZpeCB0byB0aGUgZW5kIGFzIGEgc3VmZml4CisgICAgaWYgbmFtZS5zdGFy dHN3aXRoKCJXQVJOSU5HXyIpOgorICAgICAgICBuYW1lID0gbmFtZS5yZW1vdmVwcmVmaXgoIldB Uk5JTkdfIikgKyAiX1dBUk5JTkciCisgICAgcmV0dXJuIHNuYWtlX3RvX3Bhc2NhbChuYW1lLmxv d2VyKCkpCisKKworZGVmIGdlbmVyYXRlX2Vycm9ycyhlcnJjb2Rlc19wYXRoOiBQYXRoKToKKyAg ICAiIiJHZW5lcmF0ZSB0aGUgX2dlbmVyYXRlZF9lcnJvcnMucHkgY29udGVudC4iIiIKKyAgICBl cnJvcnMgPSBwYXJzZV9lcnJjb2RlcyhlcnJjb2Rlc19wYXRoKQorCisgICAgIyBGaW5kIHNwZWNf bmFtZXMgdGhhdCBhcHBlYXIgbW9yZSB0aGFuIG9uY2UgKGNvbGxpc2lvbnMpCisgICAgc3BlY19u YW1lX2NvdW50czogZGljdFtzdHIsIGludF0gPSB7fQorICAgIGZvciBfLCBfLCBzcGVjX25hbWUg aW4gZXJyb3JzOgorICAgICAgICBzcGVjX25hbWVfY291bnRzW3NwZWNfbmFtZV0gPSBzcGVjX25h bWVfY291bnRzLmdldChzcGVjX25hbWUsIDApICsgMQorICAgIGNvbGxpZGluZ19zcGVjX25hbWVz ID0geworICAgICAgICBuYW1lIGZvciBuYW1lLCBjb3VudCBpbiBzcGVjX25hbWVfY291bnRzLml0 ZW1zKCkgaWYgY291bnQgPiAxCisgICAgfQorCisgICAgbGluZXMgPSBbCisgICAgICAgICIjIENv cHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAiLAor ICAgICAgICAiIyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHNyYy90b29scy9nZW5lcmF0ZV9w eXRlc3RfbGlicHFfZXJyb3JzLnB5IC0gZG8gbm90IGVkaXQgZGlyZWN0bHkuIiwKKyAgICAgICAg IiIsCisgICAgICAgICciIiInLAorICAgICAgICAiR2VuZXJhdGVkIFBvc3RncmVTUUwgZXJyb3Ig Y2xhc3NlcyBtYXBwZWQgZnJvbSBTUUxTVEFURSBjb2Rlcy4iLAorICAgICAgICAnIiIiJywKKyAg ICAgICAgIiIsCisgICAgICAgICJmcm9tIHR5cGluZyBpbXBvcnQgRGljdCIsCisgICAgICAgICIi LAorICAgICAgICAiZnJvbSAuX2Vycm9yX2Jhc2UgaW1wb3J0IExpYnBxRXJyb3IsIExpYnBxV2Fy bmluZyIsCisgICAgICAgICIiLAorICAgICAgICAiIiwKKyAgICBdCisKKyAgICBnZW5lcmF0ZWRf Y2xhc3NlcyA9IHsiTGlicHFFcnJvciJ9CisgICAgc3Fsc3RhdGVfdG9fZXhjZXB0aW9uID0ge30K KworICAgIGZvciBzcWxzdGF0ZSwgbWFjcm9fbmFtZSwgc3BlY19uYW1lIGluIGVycm9yczoKKyAg ICAgICAgIyAwMDAgZXJyb3JzIGRlZmluZSB0aGUgcGFyZW50IGNsYXNzIGZvciBhbGwgZXJyb3Jz IGluIHRoaXMgU1FMU1RBVEUgY2xhc3MKKyAgICAgICAgaWYgc3Fsc3RhdGUuZW5kc3dpdGgoIjAw MCIpOgorICAgICAgICAgICAgZXhjX25hbWUgPSBzbmFrZV90b19wYXNjYWwoc3BlY19uYW1lKQor ICAgICAgICAgICAgaWYgZXhjX25hbWUgPT0gIldhcm5pbmciOgorICAgICAgICAgICAgICAgIHBh cmVudCA9ICJMaWJwcVdhcm5pbmciCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg IHBhcmVudCA9ICJMaWJwcUVycm9yIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgc3Bl Y19uYW1lIGluIGNvbGxpZGluZ19zcGVjX25hbWVzOgorICAgICAgICAgICAgICAgIGV4Y19uYW1l ID0gbWFjcm9fdG9fY2xhc3NfbmFtZShtYWNyb19uYW1lKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBleGNfbmFtZSA9IHNuYWtlX3RvX3Bhc2NhbChzcGVjX25hbWUpCisgICAg ICAgICAgICAjIFVzZSBwYXJlbnQgY2xhc3MgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgTGlicHFF cnJvcgorICAgICAgICAgICAgcGFyZW50ID0gc3Fsc3RhdGVfdG9fZXhjZXB0aW9uLmdldChzcWxz dGF0ZVs6Ml0gKyAiMDAwIiwgIkxpYnBxRXJyb3IiKQorICAgICAgICAgICAgIyBXYXJuaW5ncyBz aG91bGQgZW5kIHdpdGggIldhcm5pbmciCisgICAgICAgICAgICBpZiBwYXJlbnQgPT0gIldhcm5p bmciIGFuZCBub3QgZXhjX25hbWUuZW5kc3dpdGgoIldhcm5pbmciKToKKyAgICAgICAgICAgICAg ICBleGNfbmFtZSArPSAiV2FybmluZyIKKworICAgICAgICBnZW5lcmF0ZWRfY2xhc3Nlcy5hZGQo ZXhjX25hbWUpCisgICAgICAgIHNxbHN0YXRlX3RvX2V4Y2VwdGlvbltzcWxzdGF0ZV0gPSBleGNf bmFtZQorICAgICAgICBsaW5lcy5leHRlbmQoCisgICAgICAgICAgICBbCisgICAgICAgICAgICAg ICAgZiJjbGFzcyB7ZXhjX25hbWV9KHtwYXJlbnR9KToiLAorICAgICAgICAgICAgICAgIGYnICAg ICIiIlNRTFNUQVRFIHtzcWxzdGF0ZX0gLSB7c3BlY19uYW1lLnJlcGxhY2UoIl8iLCAiICIpfS4i IiInLAorICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIgICAgcGFzcyIsCisg ICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICBdCisg ICAgICAgICkKKworICAgIGxpbmVzLmFwcGVuZCgiU1FMU1RBVEVfVE9fRVhDRVBUSU9OOiBEaWN0 W3N0ciwgdHlwZV0gPSB7IikKKyAgICBmb3Igc3Fsc3RhdGUsIGV4Y19uYW1lIGluIHNxbHN0YXRl X3RvX2V4Y2VwdGlvbi5pdGVtcygpOgorICAgICAgICBsaW5lcy5hcHBlbmQoZicgICAgIntzcWxz dGF0ZX0iOiB7ZXhjX25hbWV9LCcpCisgICAgbGluZXMuZXh0ZW5kKFsifSIsICIiLCAiIl0pCisK KyAgICBhbGxfZXhwb3J0cyA9IGxpc3QoZ2VuZXJhdGVkX2NsYXNzZXMpICsgWyJTUUxTVEFURV9U T19FWENFUFRJT04iXQorICAgIGxpbmVzLmFwcGVuZCgiX19hbGxfXyA9IFsiKQorICAgIGZvciBu YW1lIGluIGFsbF9leHBvcnRzOgorICAgICAgICBsaW5lcy5hcHBlbmQoZicgICAgIntuYW1lfSIs JykKKyAgICBsaW5lcy5hcHBlbmQoIl0iKQorCisgICAgcmV0dXJuICJcbiIuam9pbihsaW5lcykg KyAiXG4iCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBzY3JpcHRfZGlyID0g UGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudAorICAgIHNyY19yb290ID0gc2NyaXB0X2Rp ci5wYXJlbnQucGFyZW50CisKKyAgICBlcnJjb2Rlc19wYXRoID0gc3JjX3Jvb3QgLyAic3JjIiAv ICJiYWNrZW5kIiAvICJ1dGlscyIgLyAiZXJyY29kZXMudHh0IgorICAgIG91dHB1dF9wYXRoID0g KAorICAgICAgICBzcmNfcm9vdCAvICJzcmMiIC8gInRlc3QiIC8gInB5dGVzdCIgLyAibGlicHEi IC8gIl9nZW5lcmF0ZWRfZXJyb3JzLnB5IgorICAgICkKKworICAgIGlmIG5vdCBlcnJjb2Rlc19w YXRoLmV4aXN0cygpOgorICAgICAgICBwcmludChmIkVycm9yOiB7ZXJyY29kZXNfcGF0aH0gbm90 IGZvdW5kIiwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgb3V0 cHV0ID0gZ2VuZXJhdGVfZXJyb3JzKGVycmNvZGVzX3BhdGgpCisgICAgb3V0cHV0X3BhdGgud3Jp dGVfdGV4dChvdXRwdXQpCisgICAgcHJpbnQoZiJHZW5lcmF0ZWQge291dHB1dF9wYXRofSIpCi0t IAoyLjUyLjAKCg== --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0005-Convert-load-balance-tests-from-perl-to-python.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0005-Convert-load-balance-tests-from-perl-to-python.patch RnJvbSA5MmI2NzFjODIyZjZmNjgyNDdmYzg2NGVjMWRiZTAzNDg0OTM1YmQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hLU5pbyA8cG9zdGdyZXNAamVsdGVmLm5s PgpEYXRlOiBGcmksIDI2IERlYyAyMDI1IDEyOjMxOjQzICswMTAwClN1YmplY3Q6IFtQQVRDSCB2 NSA1LzddIENvbnZlcnQgbG9hZCBiYWxhbmNlIHRlc3RzIGZyb20gcGVybCB0byBweXRob24KCi0t LQogc3JjL2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsK IHNyYy9pbnRlcmZhY2VzL2xpYnBxL21lc29uLmJ1aWxkICAgICAgICAgICAgICB8ICAgNyArLQog c3JjL2ludGVyZmFjZXMvbGlicHEvcHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5IHwgMTcwICsrKysr KysrKysrKysrKysrKwogLi4uL2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwg ICAgIHwgIDk0IC0tLS0tLS0tLS0KIC4uLi9saWJwcS90LzAwNF9sb2FkX2JhbGFuY2VfZG5zLnBs ICAgICAgICAgICB8IDE0NCAtLS0tLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTc2IGlu c2VydGlvbnMoKyksIDI0MCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50 ZXJmYWNlcy9saWJwcS9weXQvdGVzdF9sb2FkX2JhbGFuY2UucHkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmMvaW50ZXJmYWNlcy9saWJwcS90LzAwM19sb2FkX2JhbGFuY2VfaG9zdF9saXN0LnBsCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDRfbG9hZF9iYWxhbmNl X2Rucy5wbAoKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL01ha2VmaWxlIGIvc3Jj L2ludGVyZmFjZXMvbGlicHEvTWFrZWZpbGUKaW5kZXggOWZlMzIxMTQ3ZmMuLjQxZWE4OGM3Mzg4 IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQorKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9NYWtlZmlsZQpAQCAtMTY3LDYgKzE2Nyw3IEBAIGNoZWNrIGluc3RhbGxj aGVjazogZXhwb3J0IFBBVEggOj0gJChDVVJESVIpL3Rlc3Q6JChQQVRIKQogCiBjaGVjazogdGVz dC1idWlsZCBhbGwKIAkkKHByb3ZlX2NoZWNrKQorCSQocHl0ZXN0X2NoZWNrKQogCiBpbnN0YWxs Y2hlY2s6IHRlc3QtYnVpbGQgYWxsCiAJJChwcm92ZV9pbnN0YWxsY2hlY2spCmRpZmYgLS1naXQg YS9zcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L21lc29uLmJ1aWxkCmluZGV4IGIyNTljOTk4ZmEyLi42ZDYyYWMxN2VkYiAxMDA2NDQKLS0tIGEv c3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGli cHEvbWVzb24uYnVpbGQKQEAgLTE1MCw4ICsxNTAsNiBAQCB0ZXN0cyArPSB7CiAgICAgJ3Rlc3Rz JzogWwogICAgICAgJ3QvMDAxX3VyaS5wbCcsCiAgICAgICAndC8wMDJfYXBpLnBsJywKLSAgICAg ICd0LzAwM19sb2FkX2JhbGFuY2VfaG9zdF9saXN0LnBsJywKLSAgICAgICd0LzAwNF9sb2FkX2Jh bGFuY2VfZG5zLnBsJywKICAgICAgICd0LzAwNV9uZWdvdGlhdGVfZW5jcnlwdGlvbi5wbCcsCiAg ICAgICAndC8wMDZfc2VydmljZS5wbCcsCiAgICAgXSwKQEAgLTE2Miw2ICsxNjAsMTEgQEAgdGVz dHMgKz0gewogICAgIH0sCiAgICAgJ2RlcHMnOiBsaWJwcV90ZXN0X2RlcHMsCiAgIH0sCisgICdw eXRlc3QnOiB7CisgICAgJ3Rlc3RzJzogWworICAgICAgJ3B5dC90ZXN0X2xvYWRfYmFsYW5jZS5w eScsCisgICAgXSwKKyAgfSwKIH0KIAogc3ViZGlyKCdwbycsIGlmX2ZvdW5kOiBsaWJpbnRsKQpk aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvcHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5 IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvcHl0L3Rlc3RfbG9hZF9iYWxhbmNlLnB5Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wYWY0NmQ4ZjM3ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3B5dC90ZXN0X2xvYWRfYmFsYW5jZS5weQpAQCAt MCwwICsxLDE3MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKKyIiIgorVGVzdHMgZm9yIGxvYWRfYmFsYW5jZV9ob3N0cyBjb25u ZWN0aW9uIHBhcmFtZXRlci4KKworVGhlc2UgdGVzdHMgdmVyaWZ5IHRoYXQgbGlicHEgY29ycmVj dGx5IGhhbmRsZXMgbG9hZCBiYWxhbmNpbmcgYWNyb3NzIG11bHRpcGxlCitQb3N0Z3JlU1FMIHNl cnZlcnMgc3BlY2lmaWVkIGluIHRoZSBjb25uZWN0aW9uIHN0cmluZy4KKyIiIgorCitpbXBvcnQg cGxhdGZvcm0KK2ltcG9ydCByZQorCitpbXBvcnQgcHl0ZXN0CisKK2Zyb20gbGlicHEgaW1wb3J0 IExpYnBxRXJyb3IKK2ltcG9ydCBweXBnCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1 bGUiKQorZGVmIGxvYWRfYmFsYW5jZV9ub2Rlc19ob3N0bGlzdChjcmVhdGVfcGdfbW9kdWxlKToK KyAgICAiIiIKKyAgICBDcmVhdGUgMyBQb3N0Z3JlU1FMIG5vZGVzIHdpdGggZGlmZmVyZW50IHNv Y2tldCBkaXJlY3Rvcmllcy4KKworICAgIEVhY2ggbm9kZSBoYXMgaXRzIG93biBVbml4IHNvY2tl dCBkaXJlY3RvcnkgZm9yIGlzb2xhdGlvbi4KKyAgICBSZXR1cm5zIGEgdHVwbGUgb2YgKG5vZGVz LCBjb25uZWN0KS4KKyAgICAiIiIKKyAgICBub2RlcyA9IFtjcmVhdGVfcGdfbW9kdWxlKCkgZm9y IF8gaW4gcmFuZ2UoMyldCisKKyAgICBob3N0bGlzdCA9ICIsIi5qb2luKG5vZGUuaG9zdCBmb3Ig bm9kZSBpbiBub2RlcykKKyAgICBwb3J0bGlzdCA9ICIsIi5qb2luKHN0cihub2RlLnBvcnQpIGZv ciBub2RlIGluIG5vZGVzKQorCisgICAgZGVmIGNvbm5lY3QoKiprd2FyZ3MpOgorICAgICAgICBy ZXR1cm4gbm9kZXNbMF0uY29ubmVjdChob3N0PWhvc3RsaXN0LCBwb3J0PXBvcnRsaXN0LCAqKmt3 YXJncykKKworICAgIHJldHVybiBub2RlcywgY29ubmVjdAorCisKK0BweXRlc3QuZml4dHVyZShz Y29wZT0ibW9kdWxlIikKK2RlZiBsb2FkX2JhbGFuY2Vfbm9kZXNfZG5zKGNyZWF0ZV9wZ19tb2R1 bGUpOgorICAgICIiIgorICAgIENyZWF0ZSAzIFBvc3RncmVTUUwgbm9kZXMgb24gdGhlIHNhbWUg cG9ydCBidXQgZGlmZmVyZW50IElQIGFkZHJlc3Nlcy4KKworICAgIFVzZXMgMTI3LjAuMC4xLCAx MjcuMC4wLjIsIDEyNy4wLjAuMyB3aXRoIGEgc2hhcmVkIHBvcnQsIHNvIHRoYXQKKyAgICBjb25u ZWN0aW9ucyB0byAncGctbG9hZGJhbGFuY2V0ZXN0JyBjYW4gYmUgbG9hZCBiYWxhbmNlZCB2aWEg RE5TLgorCisgICAgU2luY2Ugc2V0dGluZyB1cCBhIEROUyBzZXJ2ZXIgaXMgbW9yZSBlZmZvcnQg dGhhbiB3ZSBjb25zaWRlciByZWFzb25hYmxlIHRvCisgICAgcnVuIHRoaXMgdGVzdCwgdGhpcyBz aXR1YXRpb24gaXMgaW5zdGVhZCBpbWl0YXRlZCBieSB1c2luZyBhIGhvc3RzIGZpbGUKKyAgICB3 aGVyZSBhIHNpbmdsZSBob3N0bmFtZSBtYXBzIHRvIG11bHRpcGxlIGRpZmZlcmVudCBJUCBhZGRy ZXNzZXMuIFRoaXMgdGVzdAorICAgIHJlcXVpcmVzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIGFkZCB0 aGUgZm9sbG93aW5nIGxpbmVzIHRvIHRoZSBob3N0cyBmaWxlIChpZgorICAgIHdlIGRldGVjdCB0 aGF0IHRoaXMgaGFzbid0IGhhcHBlbmVkIHdlIHNraXAgdGhlIHRlc3QpOgorCisgICAgMTI3LjAu MC4xIHBnLWxvYWRiYWxhbmNldGVzdAorICAgIDEyNy4wLjAuMiBwZy1sb2FkYmFsYW5jZXRlc3QK KyAgICAxMjcuMC4wLjMgcGctbG9hZGJhbGFuY2V0ZXN0CisKKyAgICBXaW5kb3dzIG9yIExpbnV4 IGFyZSByZXF1aXJlZCB0byBydW4gdGhpcyB0ZXN0IGJlY2F1c2UgdGhlc2UgT1NlcyBhbGxvdwor ICAgIGJpbmRpbmcgdG8gMTI3LjAuMC4yIGFuZCAxMjcuMC4wLjMgYWRkcmVzc2VzIGJ5IGRlZmF1 bHQsIGJ1dCBvdGhlciBPU2VzCisgICAgZG9uJ3QuIFdlIG5lZWQgdG8gYmluZCB0byBkaWZmZXJl bnQgSVAgYWRkcmVzc2VzLCBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlc2UKKyAgICBkaWZmZXJlbnQg SVAgYWRkcmVzc2VzIGluIHRoZSBob3N0cyBmaWxlLgorCisgICAgVGhlIGhvc3RzIGZpbGUgbmVl ZHMgdG8gYmUgcHJlcGFyZWQgYmVmb3JlIHJ1bm5pbmcgdGhpcyB0ZXN0LiBXZSBkb24ndCBkbwor ICAgIGl0IG9uIHRoZSBmbHksIGJlY2F1c2UgaXQgcmVxdWlyZXMgcm9vdCBwZXJtaXNzaW9ucyB0 byBjaGFuZ2UgdGhlIGhvc3RzCisgICAgZmlsZS4gSW4gQ0kgd2Ugc2V0IHVwIHRoZSBwcmV2aW91 c2x5IG1lbnRpb25lZCBydWxlcyBpbiB0aGUgaG9zdHMgZmlsZSwgc28KKyAgICB0aGF0IHRoaXMg bG9hZCBiYWxhbmNpbmcgbWV0aG9kIGlzIHRlc3RlZC4KKworICAgIFJlcXVpcmVzIFBHX1RFU1Rf RVhUUkE9bG9hZF9iYWxhbmNlIGJlY2F1c2UgaXQgcmVxdWlyZXMgdGhpcyBtYW51YWwgaG9zdHMK KyAgICBmaWxlIGNvbmZpZ3VyYXRpb24gYW5kIGFsc28gdXNlcyBUQ1Agd2l0aCB0cnVzdCBhdXRo LCB3aGljaCBpcyBwb3RlbnRpYWxseQorICAgIHVuc2FmZSBvbiBtdWx0aXVzZXIgc3lzdGVtcy4K KyAgICAiIiIKKyAgICBweXBnLnNraXBfdW5sZXNzX3Rlc3RfZXh0cmFzKCJsb2FkX2JhbGFuY2Ui KQorCisgICAgaWYgcGxhdGZvcm0uc3lzdGVtKCkgbm90IGluICgiTGludXgiLCAiV2luZG93cyIp OgorICAgICAgICBweXRlc3Quc2tpcCgiRE5TIGxvYWQgYmFsYW5jZSB0ZXN0IG9ubHkgc3VwcG9y dGVkIG9uIExpbnV4IGFuZCBXaW5kb3dzIikKKworICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09 ICJXaW5kb3dzIjoKKyAgICAgICAgaG9zdHNfcGF0aCA9IHIiYzpcV2luZG93c1xTeXN0ZW0zMlxE cml2ZXJzXGV0Y1xob3N0cyIKKyAgICBlbHNlOgorICAgICAgICBob3N0c19wYXRoID0gIi9ldGMv aG9zdHMiCisKKyAgICB0cnk6CisgICAgICAgIHdpdGggb3Blbihob3N0c19wYXRoKSBhcyBmOgor ICAgICAgICAgICAgaG9zdHNfY29udGVudCA9IGYucmVhZCgpCisgICAgZXhjZXB0IChPU0Vycm9y LCBJT0Vycm9yKToKKyAgICAgICAgcHl0ZXN0LnNraXAoZiJDb3VsZCBub3QgcmVhZCBob3N0cyBm aWxlOiB7aG9zdHNfcGF0aH0iKQorCisgICAgY291bnQgPSBsZW4ocmUuZmluZGFsbChyIjEyN1wu MFwuMFwuWzEtM11ccytwZy1sb2FkYmFsYW5jZXRlc3QiLCBob3N0c19jb250ZW50KSkKKyAgICBp ZiBjb3VudCAhPSAzOgorICAgICAgICBweXRlc3Quc2tpcCgiaG9zdHMgZmlsZSBub3QgcHJlcGFy ZWQgZm9yIEROUyBsb2FkIGJhbGFuY2UgdGVzdCIpCisKKyAgICBmaXJzdF9ub2RlID0gY3JlYXRl X3BnX21vZHVsZShob3N0YWRkcj0iMTI3LjAuMC4xIikKKyAgICBub2RlcyA9IFsKKyAgICAgICAg Zmlyc3Rfbm9kZSwKKyAgICAgICAgY3JlYXRlX3BnX21vZHVsZShob3N0YWRkcj0iMTI3LjAuMC4y IiwgcG9ydD1maXJzdF9ub2RlLnBvcnQpLAorICAgICAgICBjcmVhdGVfcGdfbW9kdWxlKGhvc3Rh ZGRyPSIxMjcuMC4wLjMiLCBwb3J0PWZpcnN0X25vZGUucG9ydCksCisgICAgXQorCisgICAgIyBB bGxvdyB0cnVzdCBhdXRoZW50aWNhdGlvbiBmb3IgVENQIGNvbm5lY3Rpb25zIGZyb20gbG9vcGJh Y2sKKyAgICBmb3Igbm9kZSBpbiBub2RlczoKKyAgICAgICAgaGJhX3BhdGggPSBub2RlLmRhdGFk aXIgLyAicGdfaGJhLmNvbmYiCisgICAgICAgIHdpdGggb3BlbihoYmFfcGF0aCwgInIiKSBhcyBm OgorICAgICAgICAgICAgb3JpZ2luYWxfY29udGVudCA9IGYucmVhZCgpCisgICAgICAgIHdpdGgg b3BlbihoYmFfcGF0aCwgInciKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgiaG9zdCBhbGwg YWxsIDEyNy4wLjAuMC84IHRydXN0XG4iKQorICAgICAgICAgICAgZi53cml0ZShvcmlnaW5hbF9j b250ZW50KQorICAgICAgICBub2RlLnBnX2N0bCgicmVsb2FkIikKKworICAgIGRlZiBjb25uZWN0 KCoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIG5vZGVzWzBdLmNvbm5lY3QoaG9zdD0icGctbG9h ZGJhbGFuY2V0ZXN0IiwgKiprd2FyZ3MpCisKKyAgICByZXR1cm4gbm9kZXMsIGNvbm5lY3QKKwor CitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIsIHBhcmFtcz1bImhvc3RsaXN0IiwgImRu cyJdKQorZGVmIGxvYWRfYmFsYW5jZV9ub2RlcyhyZXF1ZXN0KToKKyAgICAiIiIKKyAgICBQYXJh bWV0cml6ZWQgZml4dHVyZSBwcm92aWRpbmcgYm90aCBsb2FkIGJhbGFuY2luZyB0ZXN0IGVudmly b25tZW50cy4KKyAgICAiIiIKKyAgICByZXR1cm4gcmVxdWVzdC5nZXRmaXh0dXJldmFsdWUoZiJs b2FkX2JhbGFuY2Vfbm9kZXNfe3JlcXVlc3QucGFyYW19IikKKworCitkZWYgdGVzdF9sb2FkX2Jh bGFuY2VfaG9zdHNfaW52YWxpZF92YWx1ZShsb2FkX2JhbGFuY2Vfbm9kZXMpOgorICAgICIiImxv YWRfYmFsYW5jZV9ob3N0cyBkb2Vzbid0IGFjY2VwdCB1bmtub3duIHZhbHVlcy4iIiIKKyAgICBf LCBjb25uZWN0ID0gbG9hZF9iYWxhbmNlX25vZGVzCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMo CisgICAgICAgIExpYnBxRXJyb3IsIG1hdGNoPSdpbnZhbGlkIGxvYWRfYmFsYW5jZV9ob3N0cyB2 YWx1ZTogImRvZXNub3RleGlzdCInCisgICAgKToKKyAgICAgICAgY29ubmVjdChsb2FkX2JhbGFu Y2VfaG9zdHM9ImRvZXNub3RleGlzdCIpCisKKworZGVmIHRlc3RfbG9hZF9iYWxhbmNlX2hvc3Rz X2Rpc2FibGUobG9hZF9iYWxhbmNlX25vZGVzKToKKyAgICAiIiJsb2FkX2JhbGFuY2VfaG9zdHM9 ZGlzYWJsZSBhbHdheXMgY29ubmVjdHMgdG8gdGhlIGZpcnN0IG5vZGUuIiIiCisgICAgbm9kZXMs IGNvbm5lY3QgPSBsb2FkX2JhbGFuY2Vfbm9kZXMKKworICAgIHdpdGggbm9kZXNbMF0ubG9nX2Nv bnRhaW5zKCJjb25uZWN0aW9uIHJlY2VpdmVkIik6CisgICAgICAgIGNvbm5lY3QobG9hZF9iYWxh bmNlX2hvc3RzPSJkaXNhYmxlIikKKworCitkZWYgdGVzdF9sb2FkX2JhbGFuY2VfaG9zdHNfcmFu ZG9tX2Rpc3RyaWJ1dGlvbihsb2FkX2JhbGFuY2Vfbm9kZXMpOgorICAgICIiImxvYWRfYmFsYW5j ZV9ob3N0cz1yYW5kb20gZGlzdHJpYnV0ZXMgY29ubmVjdGlvbnMgYWNyb3NzIGFsbCBub2Rlcy4i IiIKKyAgICBub2RlcywgY29ubmVjdCA9IGxvYWRfYmFsYW5jZV9ub2RlcworCisgICAgZm9yIF8g aW4gcmFuZ2UoNTApOgorICAgICAgICBjb25uZWN0KGxvYWRfYmFsYW5jZV9ob3N0cz0icmFuZG9t IikKKworICAgIG9jY3VycmVuY2VzID0gWworICAgICAgICBsZW4ocmUuZmluZGFsbCgiY29ubmVj dGlvbiByZWNlaXZlZCIsIG5vZGUubG9nX2NvbnRlbnQoKSkpIGZvciBub2RlIGluIG5vZGVzCisg ICAgXQorCisgICAgIyBTdGF0aXN0aWNhbGx5LCBlYWNoIG5vZGUgc2hvdWxkIHJlY2VpdmUgYXQg bGVhc3Qgb25lIGNvbm5lY3Rpb24uCisgICAgIyBUaGUgcHJvYmFiaWxpdHkgb2YgYW55IG5vZGUg cmVjZWl2aW5nIDAgY29ubmVjdGlvbnMgaXMgKDIvMyleNTAg4omIIDEuNTdlLTkKKyAgICBhc3Nl cnQgb2NjdXJyZW5jZXNbMF0gPiAwLCAibm9kZTEgc2hvdWxkIHJlY2VpdmUgYXQgbGVhc3Qgb25l IGNvbm5lY3Rpb24iCisgICAgYXNzZXJ0IG9jY3VycmVuY2VzWzFdID4gMCwgIm5vZGUyIHNob3Vs ZCByZWNlaXZlIGF0IGxlYXN0IG9uZSBjb25uZWN0aW9uIgorICAgIGFzc2VydCBvY2N1cnJlbmNl c1syXSA+IDAsICJub2RlMyBzaG91bGQgcmVjZWl2ZSBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiIK KyAgICBhc3NlcnQgc3VtKG9jY3VycmVuY2VzKSA9PSA1MCwgInRvdGFsIGNvbm5lY3Rpb25zIHNo b3VsZCBiZSA1MCIKKworCitkZWYgdGVzdF9sb2FkX2JhbGFuY2VfaG9zdHNfZmFpbG92ZXIobG9h ZF9iYWxhbmNlX25vZGVzKToKKyAgICAiIiJsb2FkX2JhbGFuY2VfaG9zdHMgY29udGludWVzIHRy eWluZyBob3N0cyB1bnRpbCBpdCBmaW5kcyBhIHdvcmtpbmcgb25lLiIiIgorICAgIG5vZGVzLCBj b25uZWN0ID0gbG9hZF9iYWxhbmNlX25vZGVzCisKKyAgICBub2Rlc1swXS5zdG9wKCkKKyAgICBu b2Rlc1sxXS5zdG9wKCkKKworICAgIHdpdGggbm9kZXNbMl0ubG9nX2NvbnRhaW5zKCJjb25uZWN0 aW9uIHJlY2VpdmVkIik6CisgICAgICAgIGNvbm5lY3QobG9hZF9iYWxhbmNlX2hvc3RzPSJkaXNh YmxlIikKKworICAgIHdpdGggbm9kZXNbMl0ubG9nX2NvbnRhaW5zKCJjb25uZWN0aW9uIHJlY2Vp dmVkIiwgdGltZXM9NSk6CisgICAgICAgIGZvciBfIGluIHJhbmdlKDUpOgorICAgICAgICAgICAg Y29ubmVjdChsb2FkX2JhbGFuY2VfaG9zdHM9InJhbmRvbSIpCmRpZmYgLS1naXQgYS9zcmMvaW50 ZXJmYWNlcy9saWJwcS90LzAwM19sb2FkX2JhbGFuY2VfaG9zdF9saXN0LnBsIGIvc3JjL2ludGVy ZmFjZXMvbGlicHEvdC8wMDNfbG9hZF9iYWxhbmNlX2hvc3RfbGlzdC5wbApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggN2E0YzE0YWRhOTguLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRfYmFsYW5jZV9ob3N0X2xpc3QucGwKKysrIC9kZXYvbnVs bApAQCAtMSw5NCArMCwwIEBACi0jIENvcHlyaWdodCAoYykgMjAyMy0yMDI1LCBQb3N0Z3JlU1FM IEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAotdXNlIHN0cmljdDsKLXVzZSB3YXJuaW5ncyBGQVRB TCA9PiAnYWxsJzsKLXVzZSBDb25maWc7Ci11c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Ci11 c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKLXVzZSBUZXN0OjpNb3JlOwotCi0jIFRoaXMg dGVzdHMgbG9hZCBiYWxhbmNpbmcgYWNyb3NzIHRoZSBsaXN0IG9mIGRpZmZlcmVudCBob3N0cyBp biB0aGUgaG9zdAotIyBwYXJhbWV0ZXIgb2YgdGhlIGNvbm5lY3Rpb24gc3RyaW5nLgotCi0jIENs dXN0ZXIgc2V0dXAgd2hpY2ggaXMgc2hhcmVkIGZvciB0ZXN0aW5nIGJvdGggbG9hZCBiYWxhbmNp bmcgbWV0aG9kcwotbXkgJG5vZGUxID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdu b2RlMScpOwotbXkgJG5vZGUyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2Rl MicsIG93bl9ob3N0ID0+IDEpOwotbXkgJG5vZGUzID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdub2RlMycsIG93bl9ob3N0ID0+IDEpOwotCi0jIENyZWF0ZSBhIGRhdGEgZGlyZWN0 b3J5IHdpdGggaW5pdGRiCi0kbm9kZTEtPmluaXQoKTsKLSRub2RlMi0+aW5pdCgpOwotJG5vZGUz LT5pbml0KCk7Ci0KLSMgU3RhcnQgdGhlIFBvc3RncmVTUUwgc2VydmVyCi0kbm9kZTEtPnN0YXJ0 KCk7Ci0kbm9kZTItPnN0YXJ0KCk7Ci0kbm9kZTMtPnN0YXJ0KCk7Ci0KLSMgU3RhcnQgdGhlIHRl c3RzIGZvciBsb2FkIGJhbGFuY2luZyBtZXRob2QgMQotbXkgJGhvc3RsaXN0ID0gJG5vZGUxLT5o b3N0IC4gJywnIC4gJG5vZGUyLT5ob3N0IC4gJywnIC4gJG5vZGUzLT5ob3N0OwotbXkgJHBvcnRs aXN0ID0gJG5vZGUxLT5wb3J0IC4gJywnIC4gJG5vZGUyLT5wb3J0IC4gJywnIC4gJG5vZGUzLT5w b3J0OwotCi0kbm9kZTEtPmNvbm5lY3RfZmFpbHMoCi0JImhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBv cnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1kb2Vzbm90ZXhpc3QiLAotCSJsb2FkX2JhbGFuY2Vf aG9zdHMgZG9lc24ndCBhY2NlcHQgdW5rbm93biB2YWx1ZXMiLAotCWV4cGVjdGVkX3N0ZGVyciA9 PiBxci9pbnZhbGlkIGxvYWRfYmFsYW5jZV9ob3N0cyB2YWx1ZTogImRvZXNub3RleGlzdCIvKTsK LQotIyBsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBzaG91bGQgYWx3YXlzIGNob29zZSB0aGUg Zmlyc3Qgb25lLgotJG5vZGUxLT5jb25uZWN0X29rKAotCSJob3N0PSRob3N0bGlzdCBwb3J0PSRw b3J0bGlzdCBsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSIsCi0JImxvYWRfYmFsYW5jZV9ob3N0 cz1kaXNhYmxlIGNvbm5lY3RzIHRvIHRoZSBmaXJzdCBub2RlIiwKLQlzcWwgPT4gIlNFTEVDVCAn Y29ubmVjdDEnIiwKLQlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3Qx Jy9dKTsKLQotIyBTdGF0aXN0aWNhbGx5IHRoZSBmb2xsb3dpbmcgbG9vcCB3aXRoIGxvYWRfYmFs YW5jZV9ob3N0cz1yYW5kb20gd2lsbCBhbG1vc3QKLSMgY2VydGFpbmx5IGNvbm5lY3QgYXQgbGVh c3Qgb25jZSB0byBlYWNoIG9mIHRoZSBub2Rlcy4gVGhlIGNoYW5jZSBvZiB0aGF0IG5vdAotIyBo YXBwZW5pbmcgaXMgc28gc21hbGwgdGhhdCBpdCdzIG5lZ2xpZ2libGU6ICgyLzMpXjUwID0gMS41 NjgzMjg1NWUtOQotZm9yZWFjaCBteSAkaSAoMSAuLiA1MCkKLXsKLQkkbm9kZTEtPmNvbm5lY3Rf b2soCi0JCSJob3N0PSRob3N0bGlzdCBwb3J0PSRwb3J0bGlzdCBsb2FkX2JhbGFuY2VfaG9zdHM9 cmFuZG9tIiwKLQkJInJlcGVhdGVkIGNvbm5lY3Rpb25zIHdpdGggcmFuZG9tIGxvYWQgYmFsYW5j aW5nIiwKLQkJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyJyIpOwotfQotCi1teSAkbm9kZTFfb2Nj dXJyZW5jZXMgPSAoKSA9Ci0gICRub2RlMS0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBT RUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkgJG5vZGUyX29jY3VycmVuY2VzID0gKCkgPQotICAkbm9k ZTItPmxvZ19jb250ZW50KCkgPX4gL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MicvZzsKLW15 ICRub2RlM19vY2N1cnJlbmNlcyA9ICgpID0KLSAgJG5vZGUzLT5sb2dfY29udGVudCgpID1+IC9z dGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDInL2c7Ci0KLW15ICR0b3RhbF9vY2N1cnJlbmNlcyA9 Ci0gICRub2RlMV9vY2N1cnJlbmNlcyArICRub2RlMl9vY2N1cnJlbmNlcyArICRub2RlM19vY2N1 cnJlbmNlczsKLQotY21wX29rKCRub2RlMV9vY2N1cnJlbmNlcywgJz4nLCAxLAotCSJyZWNlaXZl ZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiBvbiBub2RlMSIpOwotY21wX29rKCRub2RlMl9vY2N1 cnJlbmNlcywgJz4nLCAxLAotCSJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiBvbiBu b2RlMiIpOwotY21wX29rKCRub2RlM19vY2N1cnJlbmNlcywgJz4nLCAxLAotCSJyZWNlaXZlZCBh dCBsZWFzdCBvbmUgY29ubmVjdGlvbiBvbiBub2RlMyIpOwotaXMoJHRvdGFsX29jY3VycmVuY2Vz LCA1MCwgInJlY2VpdmVkIDUwIGNvbm5lY3Rpb25zIGFjcm9zcyBhbGwgbm9kZXMiKTsKLQotJG5v ZGUxLT5zdG9wKCk7Ci0kbm9kZTItPnN0b3AoKTsKLQotIyBsb2FkX2JhbGFuY2VfaG9zdHM9ZGlz YWJsZSBzaG91bGQgY29udGludWUgdHJ5aW5nIGhvc3RzIHVudGlsIGl0IGZpbmRzIGEKLSMgd29y a2luZyBvbmUuCi0kbm9kZTMtPmNvbm5lY3Rfb2soCi0JImhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBv cnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNhYmxlIiwKLQkibG9hZF9iYWxhbmNlX2hvc3Rz PWRpc2FibGUgY29udGludWVzIHVudGlsIGl0IGNvbm5lY3RzIHRvIHRoZSBhIHdvcmtpbmcgbm9k ZSIsCi0Jc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QzJyIsCi0JbG9nX2xpa2UgPT4gW3FyL3N0YXRl bWVudDogU0VMRUNUICdjb25uZWN0MycvXSk7Ci0KLSMgQWxzbyB3aXRoIGxvYWRfYmFsYW5jZV9o b3N0cz1yYW5kb20gd2UgY29udGludWUgdG8gdGhlIG5leHQgbm9kZXMgaWYgcHJldmlvdXMKLSMg b25lcyBhcmUgZG93bi4gQ29ubmVjdCBhIGZldyB0aW1lcyB0byBtYWtlIHN1cmUgaXQncyBub3Qg anVzdCBsdWNreS4KLWZvcmVhY2ggbXkgJGkgKDEgLi4gNSkKLXsKLQkkbm9kZTMtPmNvbm5lY3Rf b2soCi0JCSJob3N0PSRob3N0bGlzdCBwb3J0PSRwb3J0bGlzdCBsb2FkX2JhbGFuY2VfaG9zdHM9 cmFuZG9tIiwKLQkJImxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gY29udGludWVzIHVudGlsIGl0 IGNvbm5lY3RzIHRvIHRoZSBhIHdvcmtpbmcgbm9kZSIsCi0JCXNxbCA9PiAiU0VMRUNUICdjb25u ZWN0NCciLAotCQlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3Q0Jy9d KTsKLX0KLQotZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJw cS90LzAwNF9sb2FkX2JhbGFuY2VfZG5zLnBsIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDRf bG9hZF9iYWxhbmNlX2Rucy5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0YmQy NjFjM2QuLjAwMDAwMDAwMDAwCi0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDA0X2xvYWRf YmFsYW5jZV9kbnMucGwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDQgKzAsMCBAQAotIyBDb3B5cmln aHQgKGMpIDIwMjMtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKLXVz ZSBzdHJpY3Q7Ci11c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7Ci11c2UgQ29uZmlnOwotdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwotdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 Ci11c2UgVGVzdDo6TW9yZTsKLQotaWYgKCEkRU5We1BHX1RFU1RfRVhUUkF9IHx8ICRFTlZ7UEdf VEVTVF9FWFRSQX0gIX4gL1xibG9hZF9iYWxhbmNlXGIvKQotewotCXBsYW4gc2tpcF9hbGwgPT4K LQkgICdQb3RlbnRpYWxseSB1bnNhZmUgdGVzdCBsb2FkX2JhbGFuY2Ugbm90IGVuYWJsZWQgaW4g UEdfVEVTVF9FWFRSQSc7Ci19Ci0KLSMgVGhpcyB0ZXN0cyBsb2FkYmFsYW5jaW5nIGJhc2VkIG9u IGEgRE5TIGVudHJ5IHRoYXQgY29udGFpbnMgbXVsdGlwbGUgcmVjb3JkcwotIyBmb3IgZGlmZmVy ZW50IElQcy4gU2luY2Ugc2V0dGluZyB1cCBhIEROUyBzZXJ2ZXIgaXMgbW9yZSBlZmZvcnQgdGhh biB3ZQotIyBjb25zaWRlciByZWFzb25hYmxlIHRvIHJ1biB0aGlzIHRlc3QsIHRoaXMgc2l0dWF0 aW9uIGlzIGluc3RlYWQgaW1pdGF0ZWQgYnkKLSMgdXNpbmcgYSBob3N0cyBmaWxlIHdoZXJlIGEg c2luZ2xlIGhvc3RuYW1lIG1hcHMgdG8gbXVsdGlwbGUgZGlmZmVyZW50IElQCi0jIGFkZHJlc3Nl cy4gVGhpcyB0ZXN0IHJlcXVpcmVzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIGFkZCB0aGUgZm9sbG93 aW5nIGxpbmVzIHRvCi0jIHRoZSBob3N0cyBmaWxlIChpZiB3ZSBkZXRlY3QgdGhhdCB0aGlzIGhh c24ndCBoYXBwZW5lZCB3ZSBza2lwIHRoZSB0ZXN0KToKLSMKLSMgMTI3LjAuMC4xIHBnLWxvYWRi YWxhbmNldGVzdAotIyAxMjcuMC4wLjIgcGctbG9hZGJhbGFuY2V0ZXN0Ci0jIDEyNy4wLjAuMyBw Zy1sb2FkYmFsYW5jZXRlc3QKLSMKLSMgV2luZG93cyBvciBMaW51eCBhcmUgcmVxdWlyZWQgdG8g cnVuIHRoaXMgdGVzdCBiZWNhdXNlIHRoZXNlIE9TZXMgYWxsb3cKLSMgYmluZGluZyB0byAxMjcu MC4wLjIgYW5kIDEyNy4wLjAuMyBhZGRyZXNzZXMgYnkgZGVmYXVsdCwgYnV0IG90aGVyIE9TZXMK LSMgZG9uJ3QuIFdlIG5lZWQgdG8gYmluZCB0byBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzLCBzbyB0 aGF0IHdlIGNhbiB1c2UgdGhlc2UKLSMgZGlmZmVyZW50IElQIGFkZHJlc3NlcyBpbiB0aGUgaG9z dHMgZmlsZS4KLSMKLSMgVGhlIGhvc3RzIGZpbGUgbmVlZHMgdG8gYmUgcHJlcGFyZWQgYmVmb3Jl IHJ1bm5pbmcgdGhpcyB0ZXN0LiBXZSBkb24ndCBkbyBpdAotIyBvbiB0aGUgZmx5LCBiZWNhdXNl IGl0IHJlcXVpcmVzIHJvb3QgcGVybWlzc2lvbnMgdG8gY2hhbmdlIHRoZSBob3N0cyBmaWxlLiBJ bgotIyBDSSB3ZSBzZXQgdXAgdGhlIHByZXZpb3VzbHkgbWVudGlvbmVkIHJ1bGVzIGluIHRoZSBo b3N0cyBmaWxlLCBzbyB0aGF0IHRoaXMKLSMgbG9hZCBiYWxhbmNpbmcgbWV0aG9kIGlzIHRlc3Rl ZC4KLQotIyBDbHVzdGVyIHNldHVwIHdoaWNoIGlzIHNoYXJlZCBmb3IgdGVzdGluZyBib3RoIGxv YWQgYmFsYW5jaW5nIG1ldGhvZHMKLW15ICRjYW5fYmluZF90b18xMjdfMF8wXzIgPQotICAkQ29u Zmlne29zbmFtZX0gZXEgJ2xpbnV4JyB8fCAkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OndpbmRv d3Nfb3M7Ci0KLSMgQ2hlY2tzIGZvciB0aGUgcmVxdWlyZW1lbnRzIGZvciB0ZXN0aW5nIGxvYWQg YmFsYW5jaW5nIG1ldGhvZCAyCi1pZiAoISRjYW5fYmluZF90b18xMjdfMF8wXzIpCi17Ci0JcGxh biBza2lwX2FsbCA9PiAnbG9hZF9iYWxhbmNlIHRlc3Qgb25seSBzdXBwb3J0ZWQgb24gTGludXgg YW5kIFdpbmRvd3MnOwotfQotCi1teSAkaG9zdHNfcGF0aDsKLWlmICgkd2luZG93c19vcykKLXsK LQkkaG9zdHNfcGF0aCA9ICdjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNcZXRjXGhvc3RzJzsK LX0KLWVsc2UKLXsKLQkkaG9zdHNfcGF0aCA9ICcvZXRjL2hvc3RzJzsKLX0KLQotbXkgJGhvc3Rz X2NvbnRlbnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6c2x1cnBfZmlsZSgkaG9zdHNfcGF0 aCk7Ci0KLW15ICRob3N0c19jb3VudCA9ICgpID0KLSAgJGhvc3RzX2NvbnRlbnQgPX4gLzEyN1wu MFwuMFwuWzEtM10gcGctbG9hZGJhbGFuY2V0ZXN0L2c7Ci1pZiAoJGhvc3RzX2NvdW50ICE9IDMp Ci17Ci0JIyBIb3N0IGZpbGUgaXMgbm90IHByZXBhcmVkIGZvciB0aGlzIHRlc3QKLQlwbGFuIHNr aXBfYWxsID0+ICJob3N0cyBmaWxlIHdhcyBub3QgcHJlcGFyZWQgZm9yIEROUyBsb2FkIGJhbGFu Y2UgdGVzdCI7Ci19Ci0KLSRQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOjp1c2VfdGNwID0gMTsK LSRQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOjp0ZXN0X3BnaG9zdCA9ICcxMjcuMC4wLjEnOwot bXkgJHBvcnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOjpnZXRfZnJlZV9wb3J0KCk7Ci1t eSAkbm9kZTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUxJywgcG9ydCA9 PiAkcG9ydCk7Ci1teSAkbm9kZTIgPQotICBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J25vZGUyJywgcG9ydCA9PiAkcG9ydCwgb3duX2hvc3QgPT4gMSk7Ci1teSAkbm9kZTMgPQotICBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUzJywgcG9ydCA9PiAkcG9ydCwgb3du X2hvc3QgPT4gMSk7Ci0KLSMgQ3JlYXRlIGEgZGF0YSBkaXJlY3Rvcnkgd2l0aCBpbml0ZGIKLSRu b2RlMS0+aW5pdCgpOwotJG5vZGUyLT5pbml0KCk7Ci0kbm9kZTMtPmluaXQoKTsKLQotIyBTdGFy dCB0aGUgUG9zdGdyZVNRTCBzZXJ2ZXIKLSRub2RlMS0+c3RhcnQoKTsKLSRub2RlMi0+c3RhcnQo KTsKLSRub2RlMy0+c3RhcnQoKTsKLQotIyBsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBzaG91 bGQgYWx3YXlzIGNob29zZSB0aGUgZmlyc3Qgb25lLgotJG5vZGUxLT5jb25uZWN0X29rKAotCSJo b3N0PXBnLWxvYWRiYWxhbmNldGVzdCBwb3J0PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1kaXNh YmxlIiwKLQkibG9hZF9iYWxhbmNlX2hvc3RzPWRpc2FibGUgY29ubmVjdHMgdG8gdGhlIGZpcnN0 IG5vZGUiLAotCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0MSciLAotCWxvZ19saWtlID0+IFtxci9z dGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDEnL10pOwotCi0KLSMgU3RhdGlzdGljYWxseSB0aGUg Zm9sbG93aW5nIGxvb3Agd2l0aCBsb2FkX2JhbGFuY2VfaG9zdHM9cmFuZG9tIHdpbGwgYWxtb3N0 Ci0jIGNlcnRhaW5seSBjb25uZWN0IGF0IGxlYXN0IG9uY2UgdG8gZWFjaCBvZiB0aGUgbm9kZXMu IFRoZSBjaGFuY2Ugb2YgdGhhdCBub3QKLSMgaGFwcGVuaW5nIGlzIHNvIHNtYWxsIHRoYXQgaXQn cyBuZWdsaWdpYmxlOiAoMi8zKV41MCA9IDEuNTY4MzI4NTVlLTkKLWZvcmVhY2ggbXkgJGkgKDEg Li4gNTApCi17Ci0JJG5vZGUxLT5jb25uZWN0X29rKAotCQkiaG9zdD1wZy1sb2FkYmFsYW5jZXRl c3QgcG9ydD0kcG9ydCBsb2FkX2JhbGFuY2VfaG9zdHM9cmFuZG9tIiwKLQkJInJlcGVhdGVkIGNv bm5lY3Rpb25zIHdpdGggcmFuZG9tIGxvYWQgYmFsYW5jaW5nIiwKLQkJc3FsID0+ICJTRUxFQ1Qg J2Nvbm5lY3QyJyIpOwotfQotCi1teSAkbm9kZTFfb2NjdXJyZW5jZXMgPSAoKSA9Ci0gICRub2Rl MS0+bG9nX2NvbnRlbnQoKSA9fiAvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9nOwotbXkg JG5vZGUyX29jY3VycmVuY2VzID0gKCkgPQotICAkbm9kZTItPmxvZ19jb250ZW50KCkgPX4gL3N0 YXRlbWVudDogU0VMRUNUICdjb25uZWN0MicvZzsKLW15ICRub2RlM19vY2N1cnJlbmNlcyA9ICgp ID0KLSAgJG5vZGUzLT5sb2dfY29udGVudCgpID1+IC9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVj dDInL2c7Ci0KLW15ICR0b3RhbF9vY2N1cnJlbmNlcyA9Ci0gICRub2RlMV9vY2N1cnJlbmNlcyAr ICRub2RlMl9vY2N1cnJlbmNlcyArICRub2RlM19vY2N1cnJlbmNlczsKLQotY21wX29rKCRub2Rl MV9vY2N1cnJlbmNlcywgJz4nLCAxLAotCSJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlv biBvbiBub2RlMSIpOwotY21wX29rKCRub2RlMl9vY2N1cnJlbmNlcywgJz4nLCAxLAotCSJyZWNl aXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiBvbiBub2RlMiIpOwotY21wX29rKCRub2RlM19v Y2N1cnJlbmNlcywgJz4nLCAxLAotCSJyZWNlaXZlZCBhdCBsZWFzdCBvbmUgY29ubmVjdGlvbiBv biBub2RlMyIpOwotaXMoJHRvdGFsX29jY3VycmVuY2VzLCA1MCwgInJlY2VpdmVkIDUwIGNvbm5l Y3Rpb25zIGFjcm9zcyBhbGwgbm9kZXMiKTsKLQotJG5vZGUxLT5zdG9wKCk7Ci0kbm9kZTItPnN0 b3AoKTsKLQotIyBsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBzaG91bGQgY29udGludWUgdHJ5 aW5nIGhvc3RzIHVudGlsIGl0IGZpbmRzIGEKLSMgd29ya2luZyBvbmUuCi0kbm9kZTMtPmNvbm5l Y3Rfb2soCi0JImhvc3Q9cGctbG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNl X2hvc3RzPWRpc2FibGUiLAotCSJsb2FkX2JhbGFuY2VfaG9zdHM9ZGlzYWJsZSBjb250aW51ZXMg dW50aWwgaXQgY29ubmVjdHMgdG8gdGhlIGEgd29ya2luZyBub2RlIiwKLQlzcWwgPT4gIlNFTEVD VCAnY29ubmVjdDMnIiwKLQlsb2dfbGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5l Y3QzJy9dKTsKLQotIyBBbHNvIHdpdGggbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSB3ZSBjb250 aW51ZSB0byB0aGUgbmV4dCBub2RlcyBpZiBwcmV2aW91cwotIyBvbmVzIGFyZSBkb3duLiBDb25u ZWN0IGEgZmV3IHRpbWVzIHRvIG1ha2Ugc3VyZSBpdCdzIG5vdCBqdXN0IGx1Y2t5LgotZm9yZWFj aCBteSAkaSAoMSAuLiA1KQotewotCSRub2RlMy0+Y29ubmVjdF9vaygKLQkJImhvc3Q9cGctbG9h ZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSIsCi0JCSJs b2FkX2JhbGFuY2VfaG9zdHM9cmFuZG9tIGNvbnRpbnVlcyB1bnRpbCBpdCBjb25uZWN0cyB0byB0 aGUgYSB3b3JraW5nIG5vZGUiLAotCQlzcWwgPT4gIlNFTEVDVCAnY29ubmVjdDQnIiwKLQkJbG9n X2xpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0NCcvXSk7Ci19Ci0KLWRvbmVf dGVzdGluZygpOwotLSAKMi41Mi4wCgo= --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0006-WIP-pytest-Add-some-SSL-client-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0006-WIP-pytest-Add-some-SSL-client-tests.patch RnJvbSA5OWE4Njg0ZTgxZWRmMmRkMDZiMGY4YjRiMDY0ZTAzYjA3MGNhNmU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMDo1NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgNi83XSBXSVA6IHB5dGVzdDogQWRkIHNvbWUgU1NMIGNsaWVudCB0ZXN0cwoK VGhpcyBpcyBhIHNhbXBsZSBjbGllbnQtb25seSB0ZXN0IHN1aXRlLiBJdCB0ZXN0cyBzb21lIGhh bmRzaGFrZQpmYWlsdXJlcyBhZ2FpbnN0IGEgbW9jayBzZXJ2ZXIsIGFzIHdlbGwgYXMgYSBmdWxs IFNTTCBoYW5kc2hha2UgKyBlbXB0eQpxdWVyeSArIHJlc3BvbnNlLgoKcHljYS9jcnlwdG9ncmFw aHkgaXMgYWRkZWQgYXMgYSBuZXcgcGFja2FnZSBkZXBlbmRlbmN5LiBDZXJ0aWZpY2F0ZXMgZm9y CnRlc3RpbmcgYXJlIGdlbmVyYXRlZCBvbiB0aGUgZmx5LgoKVGhlIG1vY2sgZGVzaWduIGlzIHRo cmVhZGVkOiB0aGUgc2VydmVyIHNvY2tldCBpcyBsaXN0ZW5pbmcgb24gYQpiYWNrZ3JvdW5kIHRo cmVhZCwgYW5kIHRoZSB0ZXN0IHByb3ZpZGVzIHRoZSBzZXJ2ZXIgbG9naWMgdmlhIGEKY2FsbGJh Y2suIFRoZXJlIGlzIHNvbWUgYWRkaXRpb25hbCB3b3JrIHN0aWxsIG5lZWRlZCB0byBtYWtlIHRo aXMKcHJvZHVjdGlvbi1yZWFkeTsgc2VlIHRoZSBub3RlcyBmb3IgX1RDUFNlcnZlci5iYWNrZ3Jv dW5kKCkuIChDdXJyZW50bHksCmFuIGV4Y2VwdGlvbiBpbiB0aGUgd3JvbmcgcGxhY2UgY291bGQg cmVzdWx0IGluIGEgaGFuZy11bnRpbC10aW1lb3V0CnJhdGhlciB0aGFuIGFuIGltbWVkaWF0ZSBm YWlsdXJlLikKClRPRE9zOgotIGxvY2FsX3NlcnZlciBhbmQgdGNwX3NlcnZlcl9jbGFzcyBhcmUg bmVhcmx5IGlkZW50aWNhbCBhbmQgc2hvdWxkCiAgc2hhcmUgY29kZS4KLSBmaXggZXhjZXB0aW9u LXJlbGF0ZWQgdGltZW91dHMgZm9yIC5iYWNrZ3JvdW5kKCkKLSBmaWd1cmUgb3V0IHRoZSBwcm9w ZXIgdXNlIG9mICJzZXNzaW9uIiB2cyAibW9kdWxlIiBzY29wZQotIGVuc3VyZSB0aGF0IHBxLmxp YnBxIHVud2luZHMgKHRvIGNsb3NlIGNvbm5lY3Rpb25zKSBiZWZvcmUgdGNwX3NlcnZlcjsKICBz ZWUgY29tbWVudCBpbiB0ZXN0X3NlcnZlcl93aXRoX3NzbF9kaXNhYmxlZCgpCi0tLQogLmNpcnJ1 cy50YXNrcy55bWwgICAgICAgICAgICAgICB8ICAxOCArKy0KIHB5cHJvamVjdC50b21sICAgICAg ICAgICAgICAgICAgfCAgIDggKwogc3JjL3Rlc3Qvc3NsL01ha2VmaWxlICAgICAgICAgICB8ICAg MiArCiBzcmMvdGVzdC9zc2wvbWVzb24uYnVpbGQgICAgICAgIHwgICA2ICsKIHNyYy90ZXN0L3Nz bC9weXQvY29uZnRlc3QucHkgICAgfCAxMjggKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9zc2wv cHl0L3Rlc3RfY2xpZW50LnB5IHwgMjc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr CiA2IGZpbGVzIGNoYW5nZWQsIDQzNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvdGVzdC9zc2wvcHl0L3Rlc3RfY2xpZW50LnB5CgpkaWZmIC0tZ2l0IGEvLmNp cnJ1cy50YXNrcy55bWwgYi8uY2lycnVzLnRhc2tzLnltbAppbmRleCBhMmMzZmViYzMwYy4uNDFk MmEzYzE4NjcgMTAwNjQ0Ci0tLSBhLy5jaXJydXMudGFza3MueW1sCisrKyBiLy5jaXJydXMudGFz a3MueW1sCkBAIC0yMjksNiArMjI5LDcgQEAgdGFzazoKICAgICBzeXNjdGwga2Vybi5jb3JlZmls ZT0nL3RtcC9jb3Jlcy8lTi4lUC5jb3JlJwogICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3Nj cmlwdDogfAogICAgIHBrZyBpbnN0YWxsIC15IFwKKyAgICAgIHB5MzExLWNyeXB0b2dyYXBoeSBc CiAgICAgICBweTMxMS1wYWNrYWdpbmcgXAogICAgICAgcHkzMTEtcHl0ZXN0CiAKQEAgLTMyMyw2 ICszMjQsNyBAQCB0YXNrOgogCiAgICAgICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3Njcmlw dDogfAogICAgICAgICBwa2dpbiAteSBpbnN0YWxsIFwKKyAgICAgICAgICBweTMxMi1jcnlwdG9n cmFwaHkgXAogICAgICAgICAgIHB5MzEyLXBhY2thZ2luZyBcCiAgICAgICAgICAgcHkzMTItdGVz dAogICAgICAgICBsbiAtcyAvdXNyL3BrZy9iaW4vcHl0ZXN0LTMuMTIgL3Vzci9wa2cvYmluL3B5 dGVzdApAQCAtMzQ2LDggKzM0OCw5IEBAIHRhc2s6CiAKICAgICAgIHNldHVwX2FkZGl0aW9uYWxf cGFja2FnZXNfc2NyaXB0OiB8CiAgICAgICAgIHBrZ19hZGQgLUkgXAotICAgICAgICAgIHB5My10 ZXN0IFwKLSAgICAgICAgICBweTMtcGFja2FnaW5nCisgICAgICAgICAgcHkzLWNyeXB0b2dyYXBo eSBcCisgICAgICAgICAgcHkzLXBhY2thZ2luZyBcCisgICAgICAgICAgcHkzLXRlc3QKICAgICAg ICMgQWx3YXlzIGNvcmUgZHVtcCB0byAke0NPUkVfRFVNUF9ESVJ9CiAgICAgICBzZXRfY29yZV9k dW1wX3NjcmlwdDogc3lzY3RsIC13IGtlcm4ubm9zdWlkY29yZWR1bXA9MgogICAgICAgPDw6ICpv cGVuYnNkX3Rhc2tfdGVtcGxhdGUKQEAgLTUwOCw4ICs1MTEsOSBAQCB0YXNrOgogICBzZXR1cF9h ZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAogICAgIGFwdC1nZXQgdXBkYXRlCiAgICAgREVC SUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgLXkgaW5zdGFsbCBcCi0gICAgICBw eXRob24zLXB5dGVzdCBcCi0gICAgICBweXRob24zLXBhY2thZ2luZworICAgICAgcHl0aG9uMy1j cnlwdG9ncmFwaHkgXAorICAgICAgcHl0aG9uMy1wYWNrYWdpbmcgXAorICAgICAgcHl0aG9uMy1w eXRlc3QKIAogICBtYXRyaXg6CiAgICAgIyBTUEVDSUFMOgpAQCAtNjU4LDYgKzY2Miw3IEBAIHRh c2s6CiAgICAgQ0lSUlVTX1dPUktJTkdfRElSOiAke0hPTUV9L3Bnc3FsLwogICAgIENDQUNIRV9E SVI6ICR7SE9NRX0vY2NhY2hlCiAgICAgTUFDUE9SVFNfQ0FDSEU6ICR7SE9NRX0vbWFjcG9ydHMt Y2FjaGUKKyAgICBQWVRFU1RfREVCVUdfVEVNUFJPT1Q6IC90bXAgICMgZGVmYXVsdCBpcyB0b28g bG9uZyBmb3IgVU5JWCBzb2NrZXRzIG9uIE1hYwogCiAgICAgTUVTT05fRkVBVFVSRVM6ID4tCiAg ICAgICAtRGJvbmpvdXI9ZW5hYmxlZApAQCAtNjc4LDYgKzY4Myw3IEBAIHRhc2s6CiAgICAgICBw NS4zNC1pby10dHkKICAgICAgIHA1LjM0LWlwYy1ydW4KICAgICAgIHB5dGhvbjMxMgorICAgICAg cHkzMTItY3J5cHRvZ3JhcGh5CiAgICAgICBweTMxMi1wYWNrYWdpbmcKICAgICAgIHB5MzEyLXB5 dGVzdAogICAgICAgdGNsCkBAIC04MTYsNyArODIyLDcgQEAgdGFzazoKICAgIyBYWFggRG9lcyBD aG9jb2xhdGV5IHJlYWxseSBub3QgaGF2ZSBhbnkgUHl0aG9uIHBhY2thZ2UgaW5zdGFsbGVycz8K ICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKICAgICBSRU0gY2hvY28gaW5z dGFsbCAteSAtLW5vLXByb2dyZXNzIC4uLgotICAgIHBpcDMgaW5zdGFsbCAtLXVzZXIgcGFja2Fn aW5nIHB5dGVzdAorICAgIHBpcDMgaW5zdGFsbCAtLXVzZXIgY3J5cHRvZ3JhcGh5IHBhY2thZ2lu ZyBweXRlc3QKIAogICBzZXR1cF9ob3N0c19maWxlX3NjcmlwdDogfAogICAgIGVjaG8gMTI3LjAu MC4xIHBnLWxvYWRiYWxhbmNldGVzdCA+PiBjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNcZXRj XGhvc3RzCkBAIC04NzksNyArODg1LDcgQEAgdGFzazoKICAgICBmb2xkZXI6ICR7Q0NBQ0hFX0RJ Un0KIAogICBzZXR1cF9hZGRpdGlvbmFsX3BhY2thZ2VzX3NjcmlwdDogfAotICAgIEM6XG1zeXM2 NFx1c3JcYmluXHBhY21hbi5leGUgLVMgLS1ub2NvbmZpcm0gbWluZ3ctdzY0LXVjcnQteDg2XzY0 LXB5dGhvbi1weXRlc3QKKyAgICBDOlxtc3lzNjRcdXNyXGJpblxwYWNtYW4uZXhlIC1TIC0tbm9j b25maXJtIG1pbmd3LXc2NC11Y3J0LXg4Nl82NC1weXRob24tY3J5cHRvZ3JhcGh5IG1pbmd3LXc2 NC11Y3J0LXg4Nl82NC1weXRob24tcHl0ZXN0CiAKICAgbWluZ3dfaW5mb19zY3JpcHQ6IHwKICAg ICAlQkFTSCUgLWMgIndoZXJlIGdjYyIKZGlmZiAtLWdpdCBhL3B5cHJvamVjdC50b21sIGIvcHlw cm9qZWN0LnRvbWwKaW5kZXggNDYyOGQyMjc0ZTAuLjAwYzhhZTg4NTgzIDEwMDY0NAotLS0gYS9w eXByb2plY3QudG9tbAorKysgYi9weXByb2plY3QudG9tbApAQCAtMTIsNiArMTIsMTQgQEAgZGVw ZW5kZW5jaWVzID0gWwogICAgICMgQW55IG90aGVyIGRlcGVuZGVuY2llcyBhcmUgZWZmZWN0aXZl bHkgb3B0aW9uYWwgKGFkZGVkIGJlbG93KS4gV2UgaW1wb3J0CiAgICAgIyB0aGVzZSBsaWJyYXJp ZXMgdXNpbmcgcHl0ZXN0LmltcG9ydG9yc2tpcCgpLiBTbyB0ZXN0cyB3aWxsIGJlIHNraXBwZWQg aWYKICAgICAjIHRoZXkgYXJlIG5vdCBhdmFpbGFibGUuCisKKyAgICAjIE5vdGVzIG9uIHRoZSBj cnlwdG9ncmFwaHkgcGFja2FnZToKKyAgICAjIC0gMy4zLjIgaXMgc2hpcHBlZCBvbiBEZWJpYW4g YnVsbHNleWUuCisgICAgIyAtIDMuNC54IGRyb3BzIHN1cHBvcnQgZm9yIFB5dGhvbiAyLCBtYWtp bmcgaXQgYSB2ZXJzaW9uIG9mIG5vdGUgZm9yIG9sZGVyIExUUworICAgICMgICBkaXN0cm9zLgor ICAgICMgLSAzNS54IHN3aXRjaGVkIHZlcnNpb25pbmcgc2NoZW1lcyBhbmQgbW92ZWQgdG8gUnVz dCBwYXJzaW5nLgorICAgICMgLSA0MC54IGlzIHRoZSBsYXN0IHZlcnNpb24gc3VwcG9ydGluZyBQ eXRob24gMy42LgorICAgICJjcnlwdG9ncmFwaHkgPj0gMy4zLjIiLAogXQogCiBbdG9vbC5weXRl c3QuaW5pX29wdGlvbnNdCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUgYi9zcmMv dGVzdC9zc2wvTWFrZWZpbGUKaW5kZXggZThhMTYzOWRiMmQuLjg5NWVhNWVhNDFjIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zc2wvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3Qvc3NsL01ha2VmaWxlCkBA IC0zMCw2ICszMCw4IEBAIGNsZWFuIGRpc3RjbGVhbjoKICMgRG9lc24ndCBkZXBlbmQgb24gc3Ns ZmlsZXMgYmVjYXVzZSB3ZSBkb24ndCByZWJ1aWxkIHRoZW0gYnkgZGVmYXVsdAogY2hlY2s6CiAJ JChwcm92ZV9jaGVjaykKKwkjIFhYWCB0aGVzZSBzdWl0ZXMgc2hvdWxkIHJ1biBpbmRlcGVuZGVu dGx5LCBub3Qgc2VyaWFsbHkKKwkkKHB5dGVzdF9jaGVjaykKIAogaW5zdGFsbGNoZWNrOgogCSQo cHJvdmVfaW5zdGFsbGNoZWNrKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxk IGIvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxkCmluZGV4IGQ4ZTBmYjUxOGUwLi5hMGVlMmFmMDg5 OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L3Nz bC9tZXNvbi5idWlsZApAQCAtMTUsNCArMTUsMTAgQEAgdGVzdHMgKz0gewogICAgICAgJ3QvMDAz X3NzbGluZm8ucGwnLAogICAgIF0sCiAgIH0sCisgICdweXRlc3QnOiB7CisgICAgJ3Rlc3RzJzog WworICAgICAgJ3B5dC90ZXN0X2NsaWVudC5weScsCisgICAgICAncHl0L3Rlc3Rfc2VydmVyLnB5 JywKKyAgICBdLAorICB9LAogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVz dC5weSBiL3NyYy90ZXN0L3NzbC9weXQvY29uZnRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjg3MGY3MzhhYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rl c3Qvc3NsL3B5dC9jb25mdGVzdC5weQpAQCAtMCwwICsxLDEyOCBAQAorIyBDb3B5cmlnaHQgKGMp IDIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK2ltcG9ydCBkYXRl dGltZQoraW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHRlbXBmaWxlCitmcm9t IGNvbGxlY3Rpb25zIGltcG9ydCBuYW1lZHR1cGxlCisKK2ltcG9ydCBweXRlc3QKKworCitAcHl0 ZXN0LmZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQorZGVmIGNyeXB0b2dyYXBoeSgpOgorICAgIHJl dHVybiBweXRlc3QuaW1wb3J0b3Jza2lwKCJjcnlwdG9ncmFwaHkiLCAiMy4zLjIiKQorCisKK0Nl cnQgPSBuYW1lZHR1cGxlKCJDZXJ0IiwgImNlcnQsIGNlcnRwYXRoLCBrZXksIGtleXBhdGgiKQor CisKK0BweXRlc3QuZml4dHVyZShzY29wZT0ic2Vzc2lvbiIpCitkZWYgY2VydHMoY3J5cHRvZ3Jh cGh5LCB0bXBfcGF0aF9mYWN0b3J5KToKKyAgICAiIiIKKyAgICBDYWNoZXMgY29tbW9ubHkgdXNl ZCBjZXJ0aWZpY2F0ZXMgYXQgdGhlIHNlc3Npb24gbGV2ZWwsIGFuZCBwcm92aWRlcyBhIHdheQor ICAgIHRvIGNyZWF0ZSBuZXcgb25lcy4KKworICAgIC0gY2VydHMuY2E6IHRoZSByb290IENBIGNl cnRpZmljYXRlCisKKyAgICAtIGNlcnRzLnNlcnZlcjogdGhlICJzdGFuZGFyZCIgc2VydmVyIGNl cnRmaWNhdGUsIHNpZ25lZCBieSBjZXJ0cy5jYQorCisgICAgLSBjZXJ0cy5zZXJ2ZXJfaG9zdDog dGhlIGhvc3RuYW1lIG9mIHRoZSBjZXJ0cy5zZXJ2ZXIgY2VydGlmaWNhdGUKKworICAgIC0gY2Vy dHMubmV3KCk6IGNyZWF0ZXMgYSBjdXN0b20gY2VydGlmaWNhdGUsIHNpZ25lZCBieSBjZXJ0cy5j YQorICAgICIiIgorCisgICAgZnJvbSBjcnlwdG9ncmFwaHkgaW1wb3J0IHg1MDkKKyAgICBmcm9t IGNyeXB0b2dyYXBoeS5oYXptYXQucHJpbWl0aXZlcyBpbXBvcnQgaGFzaGVzLCBzZXJpYWxpemF0 aW9uCisgICAgZnJvbSBjcnlwdG9ncmFwaHkuaGF6bWF0LnByaW1pdGl2ZXMuYXN5bW1ldHJpYyBp bXBvcnQgcnNhCisgICAgZnJvbSBjcnlwdG9ncmFwaHkueDUwOS5vaWQgaW1wb3J0IE5hbWVPSUQK KworICAgIHRtcGRpciA9IHRtcF9wYXRoX2ZhY3RvcnkubWt0ZW1wKCJ0ZXN0LWNlcnRzIikKKwor ICAgIGNsYXNzIF9DZXJ0czoKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAg ICAgc2VsZi5jYSA9IHNlbGYubmV3KAorICAgICAgICAgICAgICAgIHg1MDkuTmFtZSgKKyAgICAg ICAgICAgICAgICAgICAgW3g1MDkuTmFtZUF0dHJpYnV0ZShOYW1lT0lELkNPTU1PTl9OQU1FLCAi UEcgcHl0ZXN0IENBIildLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgY2E9 VHJ1ZSwKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9ICJl eGFtcGxlLm9yZyIKKyAgICAgICAgICAgIHNlbGYuc2VydmVyID0gc2VsZi5uZXcoCisgICAgICAg ICAgICAgICAgeDUwOS5OYW1lKAorICAgICAgICAgICAgICAgICAgICBbeDUwOS5OYW1lQXR0cmli dXRlKE5hbWVPSUQuQ09NTU9OX05BTUUsIHNlbGYuc2VydmVyX2hvc3QpXSwKKyAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICApCisKKyAgICAgICAgZGVmIG5ldyhzZWxmLCBzdWJqZWN0OiB4 NTA5Lk5hbWUsICosIGNhPUZhbHNlKSAtPiBDZXJ0OgorICAgICAgICAgICAgIiIiCisgICAgICAg ICAgICBDcmVhdGVzIGFuZCBzaWducyBhIG5ldyBDZXJ0IHdpdGggdGhlIGdpdmVuIHN1YmplY3Qg bmFtZS4gSWYgY2EgaXMKKyAgICAgICAgICAgIFRydWUsIHRoZSBjZXJ0aWZpY2F0ZSB3aWxsIGJl IHNlbGYtc2lnbmVkOyBvdGhlcndpc2UgdGhlIGNlcnRpZmljYXRlCisgICAgICAgICAgICBpcyBz aWduZWQgYnkgc2VsZi5jYS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAga2V5ID0gcnNh LmdlbmVyYXRlX3ByaXZhdGVfa2V5KAorICAgICAgICAgICAgICAgIHB1YmxpY19leHBvbmVudD02 NTUzNywKKyAgICAgICAgICAgICAgICBrZXlfc2l6ZT0yMDQ4LAorICAgICAgICAgICAgKQorCisg ICAgICAgICAgICBidWlsZGVyID0geDUwOS5DZXJ0aWZpY2F0ZUJ1aWxkZXIoKQorICAgICAgICAg ICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KGRhdGV0aW1lLnRpbWV6b25lLnV0YykKKwor ICAgICAgICAgICAgYnVpbGRlciA9ICgKKyAgICAgICAgICAgICAgICBidWlsZGVyLnN1YmplY3Rf bmFtZShzdWJqZWN0KQorICAgICAgICAgICAgICAgIC5wdWJsaWNfa2V5KGtleS5wdWJsaWNfa2V5 KCkpCisgICAgICAgICAgICAgICAgLnNlcmlhbF9udW1iZXIoeDUwOS5yYW5kb21fc2VyaWFsX251 bWJlcigpKQorICAgICAgICAgICAgICAgIC5ub3RfdmFsaWRfYmVmb3JlKG5vdykKKyAgICAgICAg ICAgICAgICAubm90X3ZhbGlkX2FmdGVyKG5vdyArIGRhdGV0aW1lLnRpbWVkZWx0YShob3Vycz0x KSkKKyAgICAgICAgICAgICkKKworICAgICAgICAgICAgaWYgY2E6CisgICAgICAgICAgICAgICAg YnVpbGRlciA9IGJ1aWxkZXIuaXNzdWVyX25hbWUoc3ViamVjdCkKKyAgICAgICAgICAgIGVsc2U6 CisgICAgICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXIuaXNzdWVyX25hbWUoc2VsZi5jYS5j ZXJ0LnN1YmplY3QpCisKKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVyLmFkZF9leHRlbnNp b24oCisgICAgICAgICAgICAgICAgeDUwOS5CYXNpY0NvbnN0cmFpbnRzKGNhPWNhLCBwYXRoX2xl bmd0aD1Ob25lKSwKKyAgICAgICAgICAgICAgICBjcml0aWNhbD1UcnVlLAorICAgICAgICAgICAg KQorCisgICAgICAgICAgICBjZXJ0ID0gYnVpbGRlci5zaWduKAorICAgICAgICAgICAgICAgIHBy aXZhdGVfa2V5PWtleSBpZiBjYSBlbHNlIHNlbGYuY2Eua2V5LAorICAgICAgICAgICAgICAgIGFs Z29yaXRobT1oYXNoZXMuU0hBMjU2KCksCisgICAgICAgICAgICApCisKKyAgICAgICAgICAgICMg RHVtcCB0aGUgY2VydGlmaWNhdGUgYW5kIGtleSB0byBmaWxlLgorICAgICAgICAgICAga2V5cGF0 aCA9IHNlbGYuX3RvZmlsZSgKKyAgICAgICAgICAgICAgICBrZXkucHJpdmF0ZV9ieXRlcygKKyAg ICAgICAgICAgICAgICAgICAgc2VyaWFsaXphdGlvbi5FbmNvZGluZy5QRU0sCisgICAgICAgICAg ICAgICAgICAgIHNlcmlhbGl6YXRpb24uUHJpdmF0ZUZvcm1hdC5QS0NTOCwKKyAgICAgICAgICAg ICAgICAgICAgc2VyaWFsaXphdGlvbi5Ob0VuY3J5cHRpb24oKSwKKyAgICAgICAgICAgICAgICAp LAorICAgICAgICAgICAgICAgIHN1ZmZpeD0iLmtleSIsCisgICAgICAgICAgICApCisgICAgICAg ICAgICBjZXJ0cGF0aCA9IHNlbGYuX3RvZmlsZSgKKyAgICAgICAgICAgICAgICBjZXJ0LnB1Ymxp Y19ieXRlcyhzZXJpYWxpemF0aW9uLkVuY29kaW5nLlBFTSksCisgICAgICAgICAgICAgICAgc3Vm Zml4PSItY2EuY3J0IiBpZiBjYSBlbHNlICIuY3J0IiwKKyAgICAgICAgICAgICkKKworICAgICAg ICAgICAgcmV0dXJuIENlcnQoCisgICAgICAgICAgICAgICAgY2VydD1jZXJ0LAorICAgICAgICAg ICAgICAgIGNlcnRwYXRoPWNlcnRwYXRoLAorICAgICAgICAgICAgICAgIGtleT1rZXksCisgICAg ICAgICAgICAgICAga2V5cGF0aD1rZXlwYXRoLAorICAgICAgICAgICAgKQorCisgICAgICAgIGRl ZiBfdG9maWxlKHNlbGYsIGRhdGE6IGJ5dGVzLCAqLCBzdWZmaXgpIC0+IHN0cjoKKyAgICAgICAg ICAgICIiIgorICAgICAgICAgICAgRHVtcHMgZGF0YSB0byBhIGZpbGUgb24gZGlzayB3aXRoIHRo ZSByZXF1ZXN0ZWQgc3VmZml4IGFuZCByZXR1cm5zCisgICAgICAgICAgICB0aGUgcGF0aC4gVGhl IGZpbGUgaXMgbG9jYXRlZCBzb21ld2hlcmUgaW4gcHl0ZXN0J3MgdGVtcG9yYXJ5CisgICAgICAg ICAgICBkaXJlY3Rvcnkgcm9vdC4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZiA9IHRl bXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZShzdWZmaXg9c3VmZml4LCBkaXI9dG1wZGlyLCBkZWxl dGU9RmFsc2UpCisgICAgICAgICAgICB3aXRoIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShk YXRhKQorCisgICAgICAgICAgICByZXR1cm4gZi5uYW1lCisKKyAgICByZXR1cm4gX0NlcnRzKCkK ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9weXQvdGVzdF9jbGllbnQucHkgYi9zcmMvdGVzdC9z c2wvcHl0L3Rlc3RfY2xpZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi41NTZiYWQzM2JmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9weXQvdGVz dF9jbGllbnQucHkKQEAgLTAsMCArMSwyNzggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgY29udGV4dGxpYgoraW1w b3J0IGN0eXBlcworaW1wb3J0IHNvY2tldAoraW1wb3J0IHNzbAoraW1wb3J0IHN0cnVjdAoraW1w b3J0IHRocmVhZGluZworZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisKK2ltcG9ydCBweXRl c3QKKworaW1wb3J0IHB5cGcKK2Zyb20gbGlicHEgaW1wb3J0IExpYnBxRXJyb3IsIEV4ZWNTdGF0 dXMKKworIyBUaGlzIHN1aXRlIG9wZW5zIHVwIGxvY2FsIFRDUCBwb3J0cyBhbmQgaXMgaGlkZGVu IGJlaGluZCBQR19URVNUX0VYVFJBPXNzbC4KK3B5dGVzdG1hcmsgPSBweXBnLnJlcXVpcmVfdGVz dF9leHRyYXMoInNzbCIpCisKKworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJzZXNzaW9uIiwgYXV0 b3VzZT1UcnVlKQorZGVmIHNraXBfaWZfbm9fc3NsX3N1cHBvcnQobGlicHFfaGFuZGxlKToKKyAg ICAiIiJTa2lwcyB0ZXN0cyBpZiBTU0wgc3VwcG9ydCBpcyBub3QgY29uZmlndXJlZC4iIiIKKwor ICAgICMgRGVjbGFyZSBQUXNzbEF0dHJpYnV0ZSgpLgorICAgIFBRc3NsQXR0cmlidXRlID0gbGli cHFfaGFuZGxlLlBRc3NsQXR0cmlidXRlCisgICAgUFFzc2xBdHRyaWJ1dGUucmVzdHlwZSA9IGN0 eXBlcy5jX2NoYXJfcAorICAgIFBRc3NsQXR0cmlidXRlLmFyZ3R5cGVzID0gW2N0eXBlcy5jX3Zv aWRfcCwgY3R5cGVzLmNfY2hhcl9wXQorCisgICAgaWYgbm90IFBRc3NsQXR0cmlidXRlKE5vbmUs IGIibGlicmFyeSIpOgorICAgICAgICBweXRlc3Quc2tpcCgicmVxdWlyZXMgU1NMIHN1cHBvcnQg dG8gYmUgY29uZmlndXJlZCIpCisKKworIworIyBUZXN0IEZpeHR1cmVzCisjCisKKworQHB5dGVz dC5maXh0dXJlCitkZWYgdGNwX3NlcnZlcl9jbGFzcyhyZW1haW5pbmdfdGltZW91dCk6CisgICAg IiIiCisgICAgTWV0YWZpeHR1cmUgdG8gY29tYmluZSByZWxhdGVkIGxvZ2ljIGZvciB0Y3Bfc2Vy dmVyIGFuZCBzc2xfc2VydmVyLgorCisgICAgVE9ETzogY29tYmluZSB3aXRoIHRlc3RfbGlicHEu bG9jYWxfc2VydmVyCisgICAgIiIiCisKKyAgICBjbGFzcyBfVENQU2VydmVyKGNvbnRleHRsaWIu RXhpdFN0YWNrKToKKyAgICAgICAgIiIiCisgICAgICAgIEltcGxlbWVudGF0aW9uIGNsYXNzIGZv ciB0Y3Bfc2VydmVyLiBTZWUgLmJhY2tncm91bmQoKSBmb3IgdGhlIHByaW1hcnkKKyAgICAgICAg ZW50cnkgcG9pbnQgZm9yIHRlc3RzLiBQb3N0Z3JlcyBjbGllbnRzIG1heSBjb25uZWN0IHRvIHRo aXMgc2VydmVyIHZpYQorICAgICAgICAqKnRjcF9zZXJ2ZXIuY29ubmluZm8uCisKKyAgICAgICAg X1RDUFNlcnZlciBkZXJpdmVzIGZyb20gY29udGV4dGxpYi5FeGl0U3RhY2sgdG8gcHJvdmlkZSBl YXN5IGNsZWFudXAgb2YKKyAgICAgICAgYXNzb2NpYXRlZCByZXNvdXJjZXM7IHNlZSB0aGUgZG9j dW1lbnRhdGlvbiBmb3IgdGhhdCBjbGFzcyBmb3IgYSBmdWxsCisgICAgICAgIGV4cGxhbmF0aW9u LgorICAgICAgICAiIiIKKworICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAg ICBzdXBlcigpLl9faW5pdF9fKCkKKworICAgICAgICAgICAgc2VsZi5fdGhyZWFkID0gTm9uZQor ICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2V4YyA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuX2xp c3RlbmVyID0gc2VsZi5lbnRlcl9jb250ZXh0KAorICAgICAgICAgICAgICAgIHNvY2tldC5zb2Nr ZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSksCisgICAgICAgICAgICApCisK KyAgICAgICAgICAgIHNlbGYuX2JpbmRfYW5kX2xpc3RlbigpCisgICAgICAgICAgICBzb2NrbmFt ZSA9IHNlbGYuX2xpc3RlbmVyLmdldHNvY2tuYW1lKCkKKyAgICAgICAgICAgIHNlbGYuY29ubmlu Zm8gPSBkaWN0KAorICAgICAgICAgICAgICAgIGhvc3RhZGRyPXNvY2tuYW1lWzBdLAorICAgICAg ICAgICAgICAgIHBvcnQ9c29ja25hbWVbMV0sCisgICAgICAgICAgICApCisKKyAgICAgICAgZGVm IF9iaW5kX2FuZF9saXN0ZW4oc2VsZik6CisgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIERv ZXMgdGhlIGFjdHVhbCB3b3JrIG9mIGJpbmRpbmcgdGhlIHNvY2tldCBhbmQgbGlzdGVuaW5nIGZv cgorICAgICAgICAgICAgY29ubmVjdGlvbnMuCisKKyAgICAgICAgICAgIFRoZSBsaXN0ZW4gYmFj a2xvZyBpcyBjdXJyZW50bHkgaGFyZGNvZGVkIHRvIG9uZS4KKyAgICAgICAgICAgICIiIgorICAg ICAgICAgICAgc2VsZi5fbGlzdGVuZXIuYmluZCgoIjEyNy4wLjAuMSIsIDApKQorICAgICAgICAg ICAgc2VsZi5fbGlzdGVuZXIubGlzdGVuKDEpCisKKyAgICAgICAgZGVmIGJhY2tncm91bmQoc2Vs ZiwgZm46IENhbGxhYmxlW1tzb2NrZXQuc29ja2V0XSwgTm9uZV0pIC0+IE5vbmU6CisgICAgICAg ICAgICAiIiIKKyAgICAgICAgICAgIEFjY2VwdHMgYSBjbGllbnQgY29ubmVjdGlvbiBvbiBhIGJh Y2tncm91bmQgdGhyZWFkIGFuZCBwYXNzZXMgaXQgdG8KKyAgICAgICAgICAgIHRoZSBwcm92aWRl ZCBjYWxsYmFjay4gQW55IGV4Y2VwdGlvbnMgcmFpc2VkIGZyb20gdGhlIGNhbGxiYWNrIHdpbGwK KyAgICAgICAgICAgIGJlIHJlLXJhaXNlZCBvbiB0aGUgbWFpbiB0aHJlYWQgZHVyaW5nIGZpeHR1 cmUgdGVhcmRvd24uCisKKyAgICAgICAgICAgIEJsb2NraW5nIG9wZXJhdGlvbnMgb24gdGhlIGNv bm5lY3RlZCBzb2NrZXQgZGVmYXVsdCB0byB1c2luZyB0aGUKKyAgICAgICAgICAgIHJlbWFpbmlu Z190aW1lb3V0KCksIHRob3VnaCB0aGlzIGNhbiBiZSBjaGFuZ2VkIGJ5IHRoZSB0ZXN0IHZpYSB0 aGUKKyAgICAgICAgICAgIHNvY2tldCdzIC5zZXR0aW1lb3V0KCkuCisgICAgICAgICAgICAiIiIK KworICAgICAgICAgICAgZGVmIF9iZygpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5fbGlzdGVuZXIuc2V0dGltZW91dChyZW1haW5pbmdfdGltZW91dCgp KQorICAgICAgICAgICAgICAgICAgICBzb2NrLCBfID0gc2VsZi5fbGlzdGVuZXIuYWNjZXB0KCkK KworICAgICAgICAgICAgICAgICAgICB3aXRoIHNvY2s6CisgICAgICAgICAgICAgICAgICAgICAg ICBzb2NrLnNldHRpbWVvdXQocmVtYWluaW5nX3RpbWVvdXQoKSkKKyAgICAgICAgICAgICAgICAg ICAgICAgIGZuKHNvY2spCisKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 CisgICAgICAgICAgICAgICAgICAgICMgU2F2ZSB0aGUgZXhjZXB0aW9uIGZvciByZS1yYWlzaW5n IG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdGhyZWFkX2V4 YyA9IGUKKworICAgICAgICAgICAgIyBUT0RPOiByYXRoZXIgdGhhbiB1c2luZyBjYWxsYmFjaygp LCBjb25zaWRlciBleHBsaWNpdGx5IHNpZ25hbGluZworICAgICAgICAgICAgIyB0aGUgZm4oKSBp bXBsZW1lbnRhdGlvbiB0byBzdG9wIGVhcmx5IGlmIHdlIGdldCBhbiBleGNlcHRpb24uCisgICAg ICAgICAgICAjIE90aGVyd2lzZSB3ZSdsbCBoYW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHRpbWVv dXQuCisgICAgICAgICAgICBzZWxmLl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1f YmcpCisgICAgICAgICAgICBzZWxmLmNhbGxiYWNrKHNlbGYuX2pvaW4pCisKKyAgICAgICAgICAg IHNlbGYuX3RocmVhZC5zdGFydCgpCisKKyAgICAgICAgZGVmIF9qb2luKHNlbGYpOgorICAgICAg ICAgICAgIiIiCisgICAgICAgICAgICBXYWl0cyBmb3IgdGhlIGJhY2tncm91bmQgdGhyZWFkIHRv IGZpbmlzaCBhbmQgcmFpc2VzIGFueSB0aHJvd24KKyAgICAgICAgICAgIGV4Y2VwdGlvbi4gVGhp cyBpcyBjYWxsZWQgZHVyaW5nIGZpeHR1cmUgdGVhcmRvd24uCisgICAgICAgICAgICAiIiIKKyAg ICAgICAgICAgICMgR2l2ZSBhIGxpdHRsZSBiaXQgb2Ygd2lnZ2xlIHJvb20gb24gdGhlIGpvaW4g dGltZW91dCwgc2luY2Ugd2UncmUKKyAgICAgICAgICAgICMgcmFjaW5nIGFnYWluc3QgdGhlIHRl c3QncyBvd24gdXNlIG9mIHJlbWFpbmluZ190aW1lb3V0KCkuIChJdCdzCisgICAgICAgICAgICAj IHByZWZlcmFibGUgdG8gbGV0IHRlc3RzIHJlcG9ydCB0aW1lb3V0czsgdGhlIHN0YWNrIHRyYWNl cyB3aWxsCisgICAgICAgICAgICAjIGhlbHAgd2l0aCBkZWJ1Z2dpbmcuKQorICAgICAgICAgICAg c2VsZi5fdGhyZWFkLmpvaW4ocmVtYWluaW5nX3RpbWVvdXQoKSArIDEpCisgICAgICAgICAgICBp ZiBzZWxmLl90aHJlYWQuaXNfYWxpdmUoKToKKyAgICAgICAgICAgICAgICByYWlzZSBUaW1lb3V0 RXJyb3IoImJhY2tncm91bmQgdGhyZWFkIGlzIHN0aWxsIHJ1bm5pbmcgYWZ0ZXIgdGltZW91dCIp CisKKyAgICAgICAgICAgIGlmIHNlbGYuX3RocmVhZF9leGMgaXMgbm90IE5vbmU6CisgICAgICAg ICAgICAgICAgcmFpc2Ugc2VsZi5fdGhyZWFkX2V4YworCisgICAgcmV0dXJuIF9UQ1BTZXJ2ZXIK KworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiB0Y3Bfc2VydmVyKHRjcF9zZXJ2ZXJfY2xhc3MpOgor ICAgICIiIgorICAgIE9wZW5zIHVwIGEgbG9jYWwgVENQIHNvY2tldCBmb3IgbW9ja2luZyBhIFBv c3RncmVzIHNlcnZlciBvbiBhIGJhY2tncm91bmQKKyAgICB0aHJlYWQuIFNlZSB0aGUgX1RDUFNl cnZlciBBUEkgZm9yIHVzYWdlLgorICAgICIiIgorICAgIHdpdGggdGNwX3NlcnZlcl9jbGFzcygp IGFzIHM6CisgICAgICAgIHlpZWxkIHMKKworCitAcHl0ZXN0LmZpeHR1cmUKK2RlZiBzc2xfc2Vy dmVyKHRjcF9zZXJ2ZXJfY2xhc3MsIGNlcnRzKToKKyAgICAiIiIKKyAgICBMaWtlIHRjcF9zZXJ2 ZXIsIGJ1dCB3aXRoIGFuIGFkZGl0aW9uYWwgLmJhY2tncm91bmRfc3NsKCkgbWV0aG9kIHdoaWNo IHdpbGwKKyAgICBwZXJmb3JtIGEgU1NMUmVxdWVzdCBoYW5kc2hha2Ugb24gdGhlIHNvY2tldCBi ZWZvcmUgaGFuZGluZyB0aGUgY29ubmVjdGlvbgorICAgIHRvIHRoZSB0ZXN0IGNhbGxiYWNrLgor CisgICAgVGhpcyBzZXJ2ZXIgdXNlcyBjZXJ0cy5zZXJ2ZXIgYXMgaXRzIGlkZW50aXR5LgorICAg ICIiIgorCisgICAgY2xhc3MgX1NTTFNlcnZlcih0Y3Bfc2VydmVyX2NsYXNzKToKKyAgICAgICAg ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCisKKyAg ICAgICAgICAgIHNlbGYuY29ubmluZm9bImhvc3QiXSA9IGNlcnRzLnNlcnZlcl9ob3N0CisKKyAg ICAgICAgICAgIHNlbGYuX2N0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VS VkVSKQorICAgICAgICAgICAgc2VsZi5fY3R4LmxvYWRfY2VydF9jaGFpbihjZXJ0cy5zZXJ2ZXIu Y2VydHBhdGgsIGNlcnRzLnNlcnZlci5rZXlwYXRoKQorCisgICAgICAgIGRlZiBiYWNrZ3JvdW5k X3NzbChzZWxmLCBmbjogQ2FsbGFibGVbW3NzbC5TU0xTb2NrZXRdLCBOb25lXSkgLT4gTm9uZToK KyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgSW52b2tlcyBhIHNlcnZlciBjYWxsYmFjayBh cyB3aXRoIC5iYWNrZ3JvdW5kKCksIGJ1dCBhbiBTU0xSZXF1ZXN0CisgICAgICAgICAgICBoYW5k c2hha2UgaXMgcGVyZm9ybWVkIGZpcnN0LCBhbmQgdGhlIHNvY2tldCBwcm92aWRlZCB0byB0aGUK KyAgICAgICAgICAgIGNhbGxiYWNrIGhhcyBiZWVuIHdyYXBwZWQgaW4gYW4gT3BlblNTTCBsYXll ci4KKyAgICAgICAgICAgICIiIgorCisgICAgICAgICAgICBkZWYgaGFuZHNoYWtlKHM6IHNvY2tl dC5zb2NrZXQpOgorICAgICAgICAgICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwg cy5yZWN2KDQpKVswXQorCisgICAgICAgICAgICAgICAgIyBNYWtlIHN1cmUgd2UgZ2V0IGFuIFNT TFJlcXVlc3QuCisgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHN0cnVjdC51bnBhY2soIiFISCIs IHMucmVjdig0KSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgdmVyc2lvbiA9PSAoMTIzNCwgNTY3 OSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgcGt0bGVuID09IDgKKworICAgICAgICAgICAgICAg ICMgQWNjZXB0IHRoZSBTU0xSZXF1ZXN0LgorICAgICAgICAgICAgICAgIHMuc2VuZChiIlMiKQor CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLl9jdHgud3JhcF9zb2NrZXQocywgc2VydmVyX3Np ZGU9VHJ1ZSkgYXMgd3JhcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgZm4od3JhcHBlZCkKKwor ICAgICAgICAgICAgc2VsZi5iYWNrZ3JvdW5kKGhhbmRzaGFrZSkKKworICAgIHdpdGggX1NTTFNl cnZlcigpIGFzIHM6CisgICAgICAgIHlpZWxkIHMKKworCisjCisjIFRlc3RzCisjCisKKworQHB5 dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJzc2xtb2RlIiwgKCJyZXF1aXJlIiwgInZlcmlmeS1jYSIs ICJ2ZXJpZnktZnVsbCIpKQorZGVmIHRlc3Rfc2VydmVyX3dpdGhfc3NsX2Rpc2FibGVkKGNvbm5l Y3QsIHRjcF9zZXJ2ZXIsIGNlcnRzLCBzc2xtb2RlKToKKyAgICAiIiIKKyAgICBNYWtlIHN1cmUg Y2xpZW50IHJlZnVzZXMgdG8gdGFsayB0byBub24tU1NMIHNlcnZlcnMgd2l0aCBzdHJpY3Rlcgor ICAgIHNzbG1vZGVzLgorICAgICIiIgorCisgICAgZGVmIHJlZnVzZV9zc2woczogc29ja2V0LnNv Y2tldCk6CisgICAgICAgIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFJIiwgcy5yZWN2KDQpKVsw XQorCisgICAgICAgICMgTWFrZSBzdXJlIHdlIGdldCBhbiBTU0xSZXF1ZXN0LgorICAgICAgICB2 ZXJzaW9uID0gc3RydWN0LnVucGFjaygiIUhIIiwgcy5yZWN2KDQpKQorICAgICAgICBhc3NlcnQg dmVyc2lvbiA9PSAoMTIzNCwgNTY3OSkKKyAgICAgICAgYXNzZXJ0IHBrdGxlbiA9PSA4CisKKyAg ICAgICAgIyBSZWZ1c2UgdGhlIFNTTFJlcXVlc3QuCisgICAgICAgIHMuc2VuZChiIk4iKQorCisg ICAgICAgICMgV2FpdCBmb3IgdGhlIGNsaWVudCB0byBjbG9zZSB0aGUgY29ubmVjdGlvbi4KKyAg ICAgICAgYXNzZXJ0IG5vdCBzLnJlY3YoMSksICJjbGllbnQgc2VudCB1bmV4cGVjdGVkIGRhdGEi CisKKyAgICB0Y3Bfc2VydmVyLmJhY2tncm91bmQocmVmdXNlX3NzbCkKKworICAgIHdpdGggcHl0 ZXN0LnJhaXNlcyhMaWJwcUVycm9yLCBtYXRjaD0ic2VydmVyIGRvZXMgbm90IHN1cHBvcnQgU1NM Iik6CisgICAgICAgIGNvbm5lY3QoCisgICAgICAgICAgICAqKnRjcF9zZXJ2ZXIuY29ubmluZm8s CisgICAgICAgICAgICBzc2xyb290Y2VydD1jZXJ0cy5jYS5jZXJ0cGF0aCwKKyAgICAgICAgICAg IHNzbG1vZGU9c3NsbW9kZSwKKyAgICAgICAgKQorCisKK2RlZiB0ZXN0X3ZlcmlmeV9mdWxsX2Nv bm5lY3Rpb24oY29ubmVjdCwgc3NsX3NlcnZlciwgY2VydHMpOgorICAgICIiIkNvbXBsZXRlcyBh IHZlcmlmeS1mdWxsIGNvbm5lY3Rpb24gYW5kIGVtcHR5IHF1ZXJ5LiIiIgorCisgICAgZGVmIGhh bmRsZV9lbXB0eV9xdWVyeShzOiBzc2wuU1NMU29ja2V0KToKKyAgICAgICAgcGt0bGVuID0gc3Ry dWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisKKyAgICAgICAgIyBDaGVjayB0aGUgc3Rh cnR1cCBwYWNrZXQgdmVyc2lvbiwgdGhlbiBkaXNjYXJkIHRoZSByZW1haW5kZXIuCisgICAgICAg IHZlcnNpb24gPSBzdHJ1Y3QudW5wYWNrKCIhSEgiLCBzLnJlY3YoNCkpCisgICAgICAgIGFzc2Vy dCB2ZXJzaW9uID09ICgzLCAwKQorICAgICAgICBzLnJlY3YocGt0bGVuIC0gOCkKKworICAgICAg ICAjIFNlbmQgdGhlIHJlcXVpcmVkIGxpdGFueSBvZiBzZXJ2ZXIgbWVzc2FnZXMuCisgICAgICAg IHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJSSIsIGIiUiIsIDgsIDApKSAgIyBBdXRoZW50aWNhdGlv bk9LCisKKyAgICAgICAgIyBQYXJhbWV0ZXJTdGF0dXM6IGNsaWVudF9lbmNvZGluZworICAgICAg ICBrZXkgPSBiImNsaWVudF9lbmNvZGluZ1wwIgorICAgICAgICB2YWwgPSBiIlVURi04XDAiCisg ICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJIiwgYiJTIiwgNCArIGxlbihrZXkpICsgbGVu KHZhbCkpICsga2V5ICsgdmFsKQorCisgICAgICAgICMgUGFyYW1ldGVyU3RhdHVzOiBEYXRlU3R5 bGUKKyAgICAgICAga2V5ID0gYiJEYXRlU3R5bGVcMCIKKyAgICAgICAgdmFsID0gYiJJU08sIE1E WVwwIgorICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSSIsIGIiUyIsIDQgKyBsZW4oa2V5 KSArIGxlbih2YWwpKSArIGtleSArIHZhbCkKKworICAgICAgICBzLnNlbmQoc3RydWN0LnBhY2so IiFjSUlJIiwgYiJLIiwgMTIsIDEyMzQsIDEyMzQpKSAgIyBCYWNrZW5kS2V5RGF0YQorICAgICAg ICBzLnNlbmQoc3RydWN0LnBhY2soIiFjSWMiLCBiIloiLCA1LCBiIkkiKSkgICMgUmVhZHlGb3JR dWVyeQorCisgICAgICAgICMgRXhwZWN0IGFuIGVtcHR5IHF1ZXJ5LgorICAgICAgICBwa3R0eXBl ID0gcy5yZWN2KDEpCisgICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiUSIKKyAgICAgICAgcGt0 bGVuID0gc3RydWN0LnVucGFjaygiIUkiLCBzLnJlY3YoNCkpWzBdCisgICAgICAgIGFzc2VydCBz LnJlY3YocGt0bGVuIC0gNCkgPT0gYiJcMCIKKworICAgICAgICAjIFNlbmQgYW4gRW1wdHlRdWVy eVJlc3BvbnNlK1JlYWR5Rm9yUXVlcnkuCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJ IiwgYiJJIiwgNCkpCisgICAgICAgIHMuc2VuZChzdHJ1Y3QucGFjaygiIWNJYyIsIGIiWiIsIDUs IGIiSSIpKQorCisgICAgICAgICMgbGlicHEgc2hvdWxkIHRlcm1pbmF0ZSBhbmQgY2xvc2UgdGhl IGNvbm5lY3Rpb24uCisgICAgICAgIGFzc2VydCBzLnJlY3YoMSkgPT0gYiJYIgorICAgICAgICBw a3RsZW4gPSBzdHJ1Y3QudW5wYWNrKCIhSSIsIHMucmVjdig0KSlbMF0KKyAgICAgICAgYXNzZXJ0 IHBrdGxlbiA9PSA0CisKKyAgICAgICAgYXNzZXJ0IG5vdCBzLnJlY3YoMSksICJjbGllbnQgc2Vu dCB1bmV4cGVjdGVkIGRhdGEiCisKKyAgICBzc2xfc2VydmVyLmJhY2tncm91bmRfc3NsKGhhbmRs ZV9lbXB0eV9xdWVyeSkKKworICAgIGNvbm4gPSBjb25uZWN0KAorICAgICAgICAqKnNzbF9zZXJ2 ZXIuY29ubmluZm8sCisgICAgICAgIHNzbHJvb3RjZXJ0PWNlcnRzLmNhLmNlcnRwYXRoLAorICAg ICAgICBzc2xtb2RlPSJ2ZXJpZnktZnVsbCIsCisgICAgKQorICAgIHdpdGggY29ubjoKKyAgICAg ICAgYXNzZXJ0IGNvbm4uZXhlYygiIikuc3RhdHVzKCkgPT0gRXhlY1N0YXR1cy5QR1JFU19FTVBU WV9RVUVSWQotLSAKMi41Mi4wCgo= --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=v5-0007-WIP-pytest-Add-some-server-side-SSL-tests.patch Content-Type: text/x-patch; charset=utf-8; name=v5-0007-WIP-pytest-Add-some-server-side-SSL-tests.patch RnJvbSAyZDc4Mzc3ZGRjYjU1OGRlYmVlMDYwNDBkYmQ1OGUyMDEyZGQ5YzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8amFjb2IuY2hhbXBpb25AZW50ZXJw cmlzZWRiLmNvbT4KRGF0ZTogVHVlLCAxNiBEZWMgMjAyNSAwOTozMTo0NiArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjUgNy83XSBXSVA6IHB5dGVzdDogQWRkIHNvbWUgc2VydmVyLXNpZGUgU1NMIHRl c3RzCgpJbiB0aGUgc2FtZSB2ZWluIGFzIHRoZSBwcmV2aW91cyBjb21taXQsIHRoaXMgaXMgYSBz ZXJ2ZXItb25seSB0ZXN0CnN1aXRlIG9wZXJhdGluZyBhZ2FpbnN0IGEgbW9jayBjbGllbnQuIFRo ZSB0ZXN0IGl0c2VsZiBpcyBhIGhlYXZpbHkKcGFyYW1ldGVyaXplZCBjaGVjayBmb3IgZGlyZWN0 LVNTTCBoYW5kc2hha2UgYmVoYXZpb3IsIHVzaW5nIGEKY29tYmluYXRpb24gb2YgInN0YW5kYXJk IiBhbmQgImN1c3RvbSIgY2VydGlmaWNhdGVzIHZpYSB0aGUgY2VydHMKZml4dHVyZS4KCmluc3Rh bGxjaGVjayBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQsIGJ1dCB0aGUgYXJjaGl0ZWN0dXJlIGhh cyBzb21lCmV4dGVuc2lvbiBwb2ludHMgdGhhdCBzaG91bGQgbWFrZSBpdCBwb3NzaWJsZSBsYXRl ci4gRm9yIG5vdywgYSBuZXcKc2VydmVyIGlzIGFsd2F5cyBzdGFydGVkIGZvciB0aGUgdGVzdCBz ZXNzaW9uLgoKVE9ET3M6Ci0gaW1wcm92ZSByZW1haW5pbmdfdGltZW91dCgpIGludGVncmF0aW9u IHdpdGggc29ja2V0IG9wZXJhdGlvbnM7IGF0IHRoZQogIG1vbWVudCwgdGhlIHRpbWVvdXQgcmVz ZXRzIG9uIGV2ZXJ5IGNhbGwgcmF0aGVyIHRoYW4gZGVjcmVtZW50aW5nCi0tLQogc3JjL3Rlc3Qv c3NsL3B5dC9jb25mdGVzdC5weSAgICB8ICA1MCArKysrKysrKysrCiBzcmMvdGVzdC9zc2wvcHl0 L3Rlc3Rfc2VydmVyLnB5IHwgMTYxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAy IGZpbGVzIGNoYW5nZWQsIDIxMSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3Qvc3NsL3B5dC90ZXN0X3NlcnZlci5weQoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9w eXQvY29uZnRlc3QucHkgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CmluZGV4IDg3MGY3 MzhhYzQ0Li5kMTIxNzI0ODAwYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3NsL3B5dC9jb25mdGVz dC5weQorKysgYi9zcmMvdGVzdC9zc2wvcHl0L2NvbmZ0ZXN0LnB5CkBAIC0xMjYsMyArMTI2LDUz IEBAIGRlZiBjZXJ0cyhjcnlwdG9ncmFwaHksIHRtcF9wYXRoX2ZhY3RvcnkpOgogICAgICAgICAg ICAgcmV0dXJuIGYubmFtZQogCiAgICAgcmV0dXJuIF9DZXJ0cygpCisKKworQHB5dGVzdC5maXh0 dXJlKHNjb3BlPSJtb2R1bGUiLCBhdXRvdXNlPVRydWUpCitkZWYgc3NsX3NldHVwKHBnX3NlcnZl cl9tb2R1bGUsIGNlcnRzLCBkYXRhZGlyKToKKyAgICAiIiIKKyAgICBTZXRzIHVwIHJlcXVpcmVk IHNlcnZlciBzZXR0aW5ncyBmb3IgYWxsIHRlc3RzIGluIHRoaXMgbW9kdWxlLgorICAgICIiIgor ICAgIHRyeToKKyAgICAgICAgd2l0aCBwZ19zZXJ2ZXJfbW9kdWxlLnJlc3RhcnRpbmcoKSBhcyBz OgorICAgICAgICAgICAgcy5jb25mLnNldCgKKyAgICAgICAgICAgICAgICBzc2w9Im9uIiwKKyAg ICAgICAgICAgICAgICBzc2xfY2FfZmlsZT1jZXJ0cy5jYS5jZXJ0cGF0aCwKKyAgICAgICAgICAg ICAgICBzc2xfY2VydF9maWxlPWNlcnRzLnNlcnZlci5jZXJ0cGF0aCwKKyAgICAgICAgICAgICAg ICBzc2xfa2V5X2ZpbGU9Y2VydHMuc2VydmVyLmtleXBhdGgsCisgICAgICAgICAgICApCisKKyAg ICAgICAgICAgICMgUmVqZWN0IGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBzLmhiYS5wcmVwZW5k KCJob3N0c3NsIGFsbCBhbGwgYWxsIHJlamVjdCIpCisKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5D YWxsZWRQcm9jZXNzRXJyb3I6CisgICAgICAgICMgVGhpcyBpcyBhIGRlY2VudCBwbGFjZSB0byBz a2lwIGlmIHRoZSBzZXJ2ZXIgaXNuJ3Qgc2V0IHVwIGZvciBTU0wuCisgICAgICAgIGxvZ3BhdGgg PSBkYXRhZGlyIC8gInBvc3RncmVzcWwubG9nIgorICAgICAgICB1bnN1cHBvcnRlZCA9IHJlLmNv bXBpbGUoIlNTTCBpcyBub3Qgc3VwcG9ydGVkIikKKworICAgICAgICB3aXRoIG9wZW4obG9ncGF0 aCwgInIiKSBhcyBsb2c6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBsb2c6CisgICAgICAgICAg ICAgICAgaWYgdW5zdXBwb3J0ZWQuc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgICAgICAgICBw eXRlc3Quc2tpcCgidGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IFNTTCIpCisKKyAgICAgICAg IyBTb21lIG90aGVyIGVycm9yIGhhcHBlbmVkLgorICAgICAgICByYWlzZQorCisgICAgdXNlcnMg PSBwZ19zZXJ2ZXJfbW9kdWxlLmNyZWF0ZV91c2Vycygic3NsIikKKyAgICBkYnMgPSBwZ19zZXJ2 ZXJfbW9kdWxlLmNyZWF0ZV9kYnMoInNzbCIpCisKKyAgICByZXR1cm4gKHVzZXJzLCBkYnMpCisK KworQHB5dGVzdC5maXh0dXJlKHNjb3BlPSJtb2R1bGUiKQorZGVmIGNsaWVudF9jZXJ0KHNzbF9z ZXR1cCwgY2VydHMpOgorICAgICIiIgorICAgIENyZWF0ZXMgYSBDZXJ0IGZvciB0aGUgInNzbCIg dXNlci4KKyAgICAiIiIKKyAgICBmcm9tIGNyeXB0b2dyYXBoeSBpbXBvcnQgeDUwOQorICAgIGZy b20gY3J5cHRvZ3JhcGh5Lng1MDkub2lkIGltcG9ydCBOYW1lT0lECisKKyAgICB1c2VycywgXyA9 IHNzbF9zZXR1cAorICAgIHVzZXIgPSB1c2Vyc1sic3NsIl0KKworICAgIHJldHVybiBjZXJ0cy5u ZXcoeDUwOS5OYW1lKFt4NTA5Lk5hbWVBdHRyaWJ1dGUoTmFtZU9JRC5DT01NT05fTkFNRSwgdXNl cildKSkKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3NzbC9weXQvdGVzdF9zZXJ2ZXIucHkgYi9zcmMv dGVzdC9zc2wvcHl0L3Rlc3Rfc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5kNWNiMTRiNmM5YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3NzbC9w eXQvdGVzdF9zZXJ2ZXIucHkKQEAgLTAsMCArMSwxNjEgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI1 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCitpbXBvcnQgcmUKK2ltcG9y dCBzb2NrZXQKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdHJ1Y3QKKworaW1wb3J0IHB5dGVzdAorCitp bXBvcnQgcHlwZworCisjIFRoaXMgc3VpdGUgb3BlbnMgdXAgbG9jYWwgVENQIHBvcnRzIGFuZCBp cyBoaWRkZW4gYmVoaW5kIFBHX1RFU1RfRVhUUkE9c3NsLgorcHl0ZXN0bWFyayA9IHB5cGcucmVx dWlyZV90ZXN0X2V4dHJhcygic3NsIikKKworIyBGb3IgdXNlIHdpdGggdGhlIGBjcmVkc2AgcGFy YW1ldGVyIGJlbG93LgorQ0xJRU5UID0gImNsaWVudCIKK1NFUlZFUiA9ICJzZXJ2ZXIiCisKKwor IyBmbXQ6IG9mZgorQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKAorICAgICJhdXRoX21ldGhvZCwg ICAgICAgICAgICAgICAgICAgIGNyZWRzLCAgZXhwZWN0ZWRfZXJyb3IiLAorWworICAgICMgVHJ1 c3QgYWxsb3dzIGFueXRoaW5nLgorICAgICgidHJ1c3QiLCAgICAgICAgICAgICAgICAgICAgICAg IE5vbmUsICAgTm9uZSksCisgICAgKCJ0cnVzdCIsICAgICAgICAgICAgICAgICAgICAgICAgQ0xJ RU5ULCBOb25lKSwKKyAgICAoInRydXN0IiwgICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVIs IE5vbmUpLAorCisgICAgIyB2ZXJpZnktY2EgYWxsb3dzIGFueSBDQS1zaWduZWQgY2VydGlmaWNh dGUuCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0PXZlcmlmeS1jYSIsICAgTm9uZSwgICAicmVxdWly ZXMgYSB2YWxpZCBjbGllbnQgY2VydGlmaWNhdGUiKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9 dmVyaWZ5LWNhIiwgICBDTElFTlQsIE5vbmUpLAorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJp ZnktY2EiLCAgIFNFUlZFUiwgTm9uZSksCisKKyAgICAjIGNlcnQgYW5kIHZlcmlmeS1mdWxsIGFs bG93IG9ubHkgdGhlIGNvcnJlY3QgY2VydGlmaWNhdGUuCisgICAgKCJ0cnVzdCBjbGllbnRjZXJ0 PXZlcmlmeS1mdWxsIiwgTm9uZSwgICAicmVxdWlyZXMgYSB2YWxpZCBjbGllbnQgY2VydGlmaWNh dGUiKSwKKyAgICAoInRydXN0IGNsaWVudGNlcnQ9dmVyaWZ5LWZ1bGwiLCBDTElFTlQsIE5vbmUp LAorICAgICgidHJ1c3QgY2xpZW50Y2VydD12ZXJpZnktZnVsbCIsIFNFUlZFUiwgImF1dGhlbnRp Y2F0aW9uIGZhaWxlZCBmb3IgdXNlciIpLAorICAgICgiY2VydCIsICAgICAgICAgICAgICAgICAg ICAgICAgIE5vbmUsICAgInJlcXVpcmVzIGEgdmFsaWQgY2xpZW50IGNlcnRpZmljYXRlIiksCisg ICAgKCJjZXJ0IiwgICAgICAgICAgICAgICAgICAgICAgICAgQ0xJRU5ULCBOb25lKSwKKyAgICAo ImNlcnQiLCAgICAgICAgICAgICAgICAgICAgICAgICBTRVJWRVIsICJhdXRoZW50aWNhdGlvbiBm YWlsZWQgZm9yIHVzZXIiKSwKK10sCispCisjIGZtdDogb24KK2RlZiB0ZXN0X2RpcmVjdF9zc2xf Y2VydGlmaWNhdGVfYXV0aGVudGljYXRpb24oCisgICAgcGcsCisgICAgc3NsX3NldHVwLAorICAg IGNlcnRzLAorICAgIGNsaWVudF9jZXJ0LAorICAgIHJlbWFpbmluZ190aW1lb3V0LAorICAgICMg dGVzdCBwYXJhbWV0ZXJzCisgICAgYXV0aF9tZXRob2QsCisgICAgY3JlZHMsCisgICAgZXhwZWN0 ZWRfZXJyb3IsCispOgorICAgICIiIgorICAgIFRlc3RzIGRpcmVjdCBTU0wgY29ubmVjdGlvbnMg d2l0aCB2YXJpb3VzIGNsaWVudC1jZXJ0aWZpY2F0ZS9IQkEKKyAgICBjb21iaW5hdGlvbnMuCisg ICAgIiIiCisKKyAgICAjIFNldCB1cCB0aGUgSEJBIGFzIGRlc2lyZWQgYnkgdGhlIHRlc3QuCisg ICAgdXNlcnMsIGRicyA9IHNzbF9zZXR1cAorCisgICAgdXNlciA9IHVzZXJzWyJzc2wiXQorICAg IGRiID0gZGJzWyJzc2wiXQorCisgICAgd2l0aCBwZy5yZWxvYWRpbmcoKSBhcyBzOgorICAgICAg ICBzLmhiYS5wcmVwZW5kKAorICAgICAgICAgICAgWyJob3N0c3NsIiwgZGIsIHVzZXIsICIxMjcu MC4wLjEvMzIiLCBhdXRoX21ldGhvZF0sCisgICAgICAgICAgICBbImhvc3Rzc2wiLCBkYiwgdXNl ciwgIjo6MS8xMjgiLCBhdXRoX21ldGhvZF0sCisgICAgICAgICkKKworICAgICMgQ29uZmlndXJl IHRoZSBTU0wgc2V0dGluZ3MgZm9yIHRoZSBjbGllbnQuCisgICAgY3R4ID0gc3NsLlNTTENvbnRl eHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9u cyhjYWZpbGU9Y2VydHMuY2EuY2VydHBhdGgpCisgICAgY3R4LnNldF9hbHBuX3Byb3RvY29scyhb InBvc3RncmVzcWwiXSkgICMgZm9yIGRpcmVjdCBTU0wKKworICAgICMgTG9hZCB1cCBhIGNsaWVu dCBjZXJ0aWZpY2F0ZSBpZiByZXF1aXJlZCBieSB0aGUgdGVzdC4KKyAgICBpZiBjcmVkcyA9PSBD TElFTlQ6CisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4oY2xpZW50X2NlcnQuY2VydHBhdGgs IGNsaWVudF9jZXJ0LmtleXBhdGgpCisgICAgZWxpZiBjcmVkcyA9PSBTRVJWRVI6CisgICAgICAg ICMgVXNpbmcgYSBzZXJ2ZXIgY2VydGlmaWNhdGUgYXMgdGhlIGNsaWVudCBjcmVkZW50aWFsIGlz IGV4cGVjdGVkIHRvCisgICAgICAgICMgd29yayBvbmx5IGZvciBjbGllbnRjZXJ0PXZlcmlmeS1j YSAoYW5kIGB0cnVzdGAsIG5hdHVyYWxseSkuCisgICAgICAgIGN0eC5sb2FkX2NlcnRfY2hhaW4o Y2VydHMuc2VydmVyLmNlcnRwYXRoLCBjZXJ0cy5zZXJ2ZXIua2V5cGF0aCkKKworICAgICMgTWFr ZSBhIGRpcmVjdCBTU0wgY29ubmVjdGlvbi4gVGhlcmUncyBubyBTU0xSZXF1ZXN0IGluIHRoZSBo YW5kc2hha2U7IHdlCisgICAgIyBzaW1wbHkgd3JhcCBhIFRDUCBjb25uZWN0aW9uIHdpdGggT3Bl blNTTC4KKyAgICBhZGRyID0gKHBnLmhvc3RhZGRyLCBwZy5wb3J0KQorICAgIHdpdGggc29ja2V0 LmNyZWF0ZV9jb25uZWN0aW9uKGFkZHIpIGFzIHM6CisgICAgICAgIHMuc2V0dGltZW91dChyZW1h aW5pbmdfdGltZW91dCgpKSAgIyBYWFggdGhpcyByZXNldHMgZXZlcnkgb3BlcmF0aW9uCisKKyAg ICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQocywgc2VydmVyX2hvc3RuYW1lPWNlcnRzLnNlcnZl cl9ob3N0KSBhcyBjb25uOgorICAgICAgICAgICAgIyBCdWlsZCBhbmQgc2VuZCB0aGUgc3RhcnR1 cCBwYWNrZXQuCisgICAgICAgICAgICBzdGFydHVwX29wdGlvbnMgPSBkaWN0KAorICAgICAgICAg ICAgICAgIHVzZXI9dXNlciwKKyAgICAgICAgICAgICAgICBkYXRhYmFzZT1kYiwKKyAgICAgICAg ICAgICAgICBhcHBsaWNhdGlvbl9uYW1lPSJweXRlc3QiLAorICAgICAgICAgICAgKQorCisgICAg ICAgICAgICBwYXlsb2FkID0gYiIiCisgICAgICAgICAgICBmb3IgaywgdiBpbiBzdGFydHVwX29w dGlvbnMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICBwYXlsb2FkICs9IGsuZW5jb2RlKCkgKyBi IlwwIgorICAgICAgICAgICAgICAgIHBheWxvYWQgKz0gc3RyKHYpLmVuY29kZSgpICsgYiJcMCIK KyAgICAgICAgICAgIHBheWxvYWQgKz0gYiJcMCIgICMgbnVsbCB0ZXJtaW5hdG9yCisKKyAgICAg ICAgICAgIHBrdGxlbiA9IDQgKyA0ICsgbGVuKHBheWxvYWQpCisgICAgICAgICAgICBjb25uLnNl bmQoc3RydWN0LnBhY2soIiFJSEgiLCBwa3RsZW4sIDMsIDApICsgcGF5bG9hZCkKKworICAgICAg ICAgICAgaWYgbm90IGV4cGVjdGVkX2Vycm9yOgorICAgICAgICAgICAgICAgICMgRXhwZWN0IGFu IEF1dGhlbnRpY2F0aW9uT0sgdG8gY29tZSBiYWNrLgorICAgICAgICAgICAgICAgIHBrdHR5cGUs IHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAgICAg ICAgICBhc3NlcnQgcGt0dHlwZSA9PSBiIlIiCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBrdGxl biA9PSA4CisKKyAgICAgICAgICAgICAgICBhdXRobl9yZXN1bHQgPSBzdHJ1Y3QudW5wYWNrKCIh SSIsIGNvbm4ucmVjdig0KSlbMF0KKyAgICAgICAgICAgICAgICBhc3NlcnQgYXV0aG5fcmVzdWx0 ID09IDAKKworICAgICAgICAgICAgICAgICMgUmVhZCBhbmQgZGlzY2FyZCB0byBSZWFkeUZvclF1 ZXJ5LgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHBr dHR5cGUsIHBrdGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAg ICAgICAgICAgICAgICAgcGF5bG9hZCA9IGNvbm4ucmVjdihwa3RsZW4gLSA0KQorCisgICAgICAg ICAgICAgICAgICAgIGlmIHBrdHR5cGUgPT0gYiJaIjoKKyAgICAgICAgICAgICAgICAgICAgICAg IGFzc2VydCBwYXlsb2FkID09IGIiSSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisK KyAgICAgICAgICAgICAgICAjIFNlbmQgYW4gZW1wdHkgcXVlcnkuCisgICAgICAgICAgICAgICAg Y29ubi5zZW5kKHN0cnVjdC5wYWNrKCIhY0kiLCBiIlEiLCA1KSArIGIiXDAiKQorCisgICAgICAg ICAgICAgICAgIyBFeHBlY3QgRW1wdHlRdWVyeVJlc3BvbnNlK1JlYWR5Rm9yUXVlcnkuCisgICAg ICAgICAgICAgICAgcGt0dHlwZSwgcGt0bGVuID0gc3RydWN0LnVucGFjaygiIWNJIiwgY29ubi5y ZWN2KDUpKQorICAgICAgICAgICAgICAgIGFzc2VydCBwa3R0eXBlID09IGIiSSIKKyAgICAgICAg ICAgICAgICBhc3NlcnQgcGt0bGVuID09IDQKKworICAgICAgICAgICAgICAgIHBrdHR5cGUsIHBr dGxlbiA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAgICAgICAg ICBhc3NlcnQgcGt0dHlwZSA9PSBiIloiCisKKyAgICAgICAgICAgICAgICBwYXlsb2FkID0gY29u bi5yZWN2KHBrdGxlbiAtIDQpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHBheWxvYWQgPT0gYiJJ IgorCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgTWF0Y2ggdGhlIGV4cGVj dGVkIGF1dGhlbnRpY2F0aW9uIGVycm9yLgorICAgICAgICAgICAgICAgIHBrdHR5cGUsIHBrdGxl biA9IHN0cnVjdC51bnBhY2soIiFjSSIsIGNvbm4ucmVjdig1KSkKKyAgICAgICAgICAgICAgICBh c3NlcnQgcGt0dHlwZSA9PSBiIkUiCisKKyAgICAgICAgICAgICAgICBwYXlsb2FkID0gY29ubi5y ZWN2KHBrdGxlbiAtIDQpCisgICAgICAgICAgICAgICAgbXNnID0gTm9uZQorCisgICAgICAgICAg ICAgICAgZm9yIGNvbXBvbmVudCBpbiBwYXlsb2FkLnNwbGl0KGIiXDAiKToKKyAgICAgICAgICAg ICAgICAgICAgaWYgbm90IGNvbXBvbmVudDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr ICAjIGVuZCBvZiBtZXNzYWdlCisKKyAgICAgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBjb21w b25lbnRbOjFdLCBjb21wb25lbnRbMTpdCisgICAgICAgICAgICAgICAgICAgIGlmIGtleSA9PSBi IlMiOgorICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IHZhbCA9PSBiIkZBVEFMIgorICAg ICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSBiIk0iOgorICAgICAgICAgICAgICAgICAgICAg ICAgbXNnID0gdmFsLmRlY29kZSgpCisKKyAgICAgICAgICAgICAgICBhc3NlcnQgcmUuc2VhcmNo KGV4cGVjdGVkX2Vycm9yLCBtc2cpLCAic2VydmVyIGVycm9yIGRpZCBub3QgbWF0Y2giCisKKyAg ICAgICAgICAgICMgVGVybWluYXRlLgorICAgICAgICAgICAgY29ubi5zZW5kKHN0cnVjdC5wYWNr KCIhY0kiLCBiIlgiLCA0KSkKLS0gCjIuNTIuMAoK --9984a4fa607810963004219e918ac78987eb38d28cfa9e29967668346dd2--