Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bkAhB-0003RB-Cs for pgadmin-hackers@arkaria.postgresql.org; Wed, 14 Sep 2016 13:57:49 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bkAhA-0001ox-QQ for pgadmin-hackers@arkaria.postgresql.org; Wed, 14 Sep 2016 13:57:48 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bkAgs-0001aK-49 for pgadmin-hackers@postgresql.org; Wed, 14 Sep 2016 13:57:30 +0000 Received: from mail-qk0-x234.google.com ([2607:f8b0:400d:c09::234]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bkAgo-0001Uj-K6 for pgadmin-hackers@postgresql.org; Wed, 14 Sep 2016 13:57:28 +0000 Received: by mail-qk0-x234.google.com with SMTP id w204so14067071qka.0 for ; Wed, 14 Sep 2016 06:57:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Q3G5FcEjq6Wm5FOHBLyrfvDgitxjetsqPTH6hYmyg/4=; b=OS7JEw7f3yvTLjt2xmdsBE8nyHFIJcHcHu1UGztJ/QXVHQ8vQswNkjQzCD/Yx+YxVz 7uW4TOg8oj6QIadP+ZxYQVHDc9rS02yRLh1x43i1TQhRTbrIZ0otO9Fds8p0Hm51Ec8o 4KfNIDwRlBE+vbXJlyJECaVVmj2zOAzm3s9MMWPkJqZVoUljUr0QtxuIZQIn8t9Vu84e 7HD2LRMuvCQH2yeEJhrOvpajF3qY+LIM57K5pOXgBUFJvrfrpQA0HFRuL9UfjeGV9Xt3 1tkpQkgAHNqONFQV+IT+ZlEShpvurrytayESPLZmJbIGwqU2VLhbI81pyFfvsQmml4iY I/Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Q3G5FcEjq6Wm5FOHBLyrfvDgitxjetsqPTH6hYmyg/4=; b=fJU83pvsk/fOL59u1prbfwPL/H1AITB1FrXP6Al1rQ6GyLje+QI+B+XHdFRtqkYxt2 ln4iI+A2MHyiCWYga3XsoWm7Bo2riDEHBOB/q9JZGUGyAN9bLwcidC1kziXoSM4upDHr AYxOSF0yzQ1kkMpmAirJeMKxfMR8b4de/REgambm9tcMsN1OSqkO9Zgj7jAxHA0209BH X6NwTMpGwFcsCGh7u8duyWBc3CilclTysr1FEfJ9R9Eok9L9fW3852GKtTM9+WHYfOCl BopmND0quduuTyJms8m9fGgI2h2v9EziM/PjoVwIOQ69NQimCpIVw5iajwfZ3xw8WlRl tP3w== X-Gm-Message-State: AE9vXwNK1cVIAkjAWjhn1Odv71VG70zSG/QINgN9Y3qHfeFJOEwWoLbVcSOcy+i4yfjO+QXUSgq+jWkFi40pq783 X-Received: by 10.55.3.19 with SMTP id 19mr3000806qkd.99.1473861445513; Wed, 14 Sep 2016 06:57:25 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.41.114 with HTTP; Wed, 14 Sep 2016 06:57:24 -0700 (PDT) In-Reply-To: References: From: Navnath Gadakh Date: Wed, 14 Sep 2016 19:27:24 +0530 Message-ID: Subject: Re: pgAdmin IV: Unittests-drop objects functionality To: Dave Page Cc: pgadmin-hackers , Kanchan Mohitey Content-Type: multipart/mixed; boundary=001a114c8150e9057a053c781b1c X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114c8150e9057a053c781b1c Content-Type: multipart/alternative; boundary=001a114c8150e9056d053c781b1a --001a114c8150e9056d053c781b1a Content-Type: text/plain; charset=UTF-8 Hi Dave, Please find the revised patch with suggested modifications. On Wed, Sep 14, 2016 at 5:25 PM, Dave Page wrote: > Hi > > On Tue, Sep 13, 2016 at 3:39 PM, Navnath Gadakh > wrote: > > Hi Dave, > > Please find the patch for drop objects functionality for test > > framework. > > Now, test framework is able to drop all objects(like server, database, > > schema, etc.) which are created during test suite execution. Code > included > > in the patch is only for server and database node. If everything goes > fine > > will send next patch with the remaining nodes in a single patch. > > > > The following files are also affected by the new changes: > > web/setup.py, > > web/config.py, > > regression/test_advanced_config.json.in > > > > > > To run the test suite follow the commands > > 1. python runtionregress/ests.py --pkg browser.server_groups.servers > > 2. python regression/runtests.yp --pkg > > browser.server_groups.servers.databases > > > > > > Note: Please do not run test suite for all nodes (python > > regression/runtests.py) as code modifications have not been done yet. > > I'm happy with this in general, except the changes in setup.py > > - Let's use the names PGADMIN_SETUP_EMAIL and PGADMIN_SETUP_PASSWORD > for the envvars. Sure. > > - Why are you setting the username and password in the environment > after prompting the user for them? I can't see why you're doing that, > and it's almost certainly a security issue. > I was trying some different logic, by mistake that code remains, removed that code in the attached patch. > > -- > Dave Page > VP, Chief Architect, Tools & Installers > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > -- Thanks, Navnath Gadakh Software Engineer EnterpriseDB Corporation Mobile: +91 9975389878 --001a114c8150e9056d053c781b1a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,

Please find the revised patch = with suggested modifications.

On Wed, Sep 14, 2016 at 5:25 PM, Dave Page <dave= .page@enterprisedb.com> wrote:
Hi

On Tue, Sep 13, 2016 at 3:39 PM, Navnath Gadakh
<navnath.gadakh@enter= prisedb.com> wrote:
> Hi Dave,
>=C2=A0 =C2=A0 =C2=A0 Please find the patch for drop objects functionali= ty for test
> framework.
> Now, test framework is able to drop all objects(like server, database,=
> schema, etc.) which are created during test suite execution. Code incl= uded
> in the patch is only for server and database node. If everything goes = fine
> will send next patch with the remaining nodes in a single patch.
>
> The following files are also affected by the new changes:
> web/setup.py,
> web/config.py,
> regression/test_advanced_config.json.in
>
>
> To run the test suite follow the commands
> 1. python runtionregress/ests.py --pkg browser.server_groups.servers > 2. python regression/runtests.yp --pkg
> browser.server_groups.servers.databases
>
>
> Note: Please do not run test suite for all nodes (python
> regression/runtests.py) as code modifications have not been done yet.<= br>
I'm happy with this in general, except the changes in setup.py
- Let's use the names PGADMIN_SETUP_EMAIL and PGADMIN_SETUP_PASSWORD
for the envvars.
Sure. =C2=A0

- Why are you setting the username and password in the environment
after prompting the user for them? I can't see why you're doing tha= t,
and it's almost certainly a security issue.
I was = trying some different=C2=A0logic, by mistake that code remains, removed tha= t code=C2=A0in the attached patch. =C2=A0

--
Dave Page
VP, Chief Architect, Tools & Installers
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake



--
Thanks,
Navnath= =C2=A0Gadakh
Software Engineer
EnterpriseDB Corporation
<= /font>
Mobile: +91 9975389878=C2=A0

<= /font>

=
--001a114c8150e9056d053c781b1a-- --001a114c8150e9057a053c781b1c Content-Type: application/octet-stream; name="drop_objects.patch" Content-Disposition: attachment; filename="drop_objects.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_it2z17ms0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5Cmlu ZGV4IGU0NzIyNWYuLjI5ZWIzZTkgMTAwNjQ0Ci0tLSBhL3dlYi9jb25maWcu cHkKKysrIGIvd2ViL2NvbmZpZy5weQpAQCAtMTA1LDYgKzEwNSwxMiBAQCBM T0dfRklMRSA9IG9zLnBhdGguam9pbigKICAgICAncGdhZG1pbjQubG9nJwog KQogCisjIFNldCBkZWZhdWx0IHRlc3RpbmcgbW9kZQorVEVTVElOR19NT0RF ID0gRmFsc2UKKworIyBUaGUgZGVmYXVsdCBwYXRoIGZvciBTUUxpdGUgZGF0 YWJhc2UgZm9yIHRlc3RpbmcKK1RFU1RfU1FMSVRFX1BBVEggPSBvcy5wYXRo LmpvaW4oREFUQV9ESVIsICd0ZXN0X3BnYWRtaW40LmRiJykKKwogIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2VydmVyIHNldHRpbmdzCiAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3Rlc3RzL3Rlc3RfZGJfYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3Rf ZGJfYWRkLnB5CmluZGV4IDQ5MGU3ZDkuLjk3ZTFiZjUgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy90ZXN0cy90ZXN0X2RiX2FkZC5weQorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVz dHMvdGVzdF9kYl9hZGQucHkKQEAgLTcsNTcgKzcsNTIgQEAKICMKICMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBqc29uCiAKIGZyb20gcGdh ZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZy b20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJv bSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NlcnZlcl9kaWN0CiBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1w b3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogZnJvbSAuIGltcG9ydCB1dGls cyBhcyBkYXRhYmFzZV91dGlscwogCiAKIGNsYXNzIERhdGFiYXNlQWRkVGVz dENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIgotICAgIFRoaXMg Y2xhc3Mgd2lsbCBjaGVjayBzZXJ2ZXIgZ3JvdXAgbm9kZSBwcmVzZW50IG9u IHRoZSBvYmplY3QgYnJvd3NlcidzCi0gICAgdHJlZSBub2RlIGJ5IHJlc3Bv bnNlIGNvZGUuCi0gICAgIiIiCisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIHRl c3QgdGhlIEFERCBkYXRhYmFzZSBBUEkiIiIKIAogICAgIHNjZW5hcmlvcyA9 IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZGF0YWJh c2Ugbm9kZS4KICAgICAgICAgKCdDaGVjayBEYXRhYmFzZXMgTm9kZSBVUkwn LCBkaWN0KHVybD0nL2Jyb3dzZXIvZGF0YWJhc2Uvb2JqLycpKQogICAgIF0K IAotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRVcENsYXNzKGNscyk6 Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8g YWRkIHRoZSBzZXZlcgotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAg ICAgIiIiCi0KLSAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgotICAgICAgICBz ZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQotCi0gICAgICAg ICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xzLnNlcnZlcl9jb25u ZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lk cyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZl cihjbHMudGVzdGVyKQotCi0gICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nv bm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRh YmFzZSEhISIpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBwYXNz CiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIiIFRoaXMg ZnVuY3Rpb24gd2lsbCBhZGQgZGF0YWJhc2UgdW5kZXIgMXN0IHNlcnZlciBv ZiB0cmVlIG5vZGUuICIiIgotCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmFk ZF9kYXRhYmFzZShzZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlbGYuc2VydmVyX2lkcykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl ZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHNlcnZlcl9pZCA9IHRl c3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQorICAg ICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VydmVy X2lkKQorCisgICAgICAgIGRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJf ZGF0YSgpCisgICAgICAgIHNlbGYuZGJfbmFtZSA9IGRhdGFbJ25hbWUnXQor ICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3Qoc2VsZi51cmwg KyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiLyIgKyBzdHIoc2VydmVyX2lkKSArICIv IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyhkYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAg c2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK KyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2Uu ZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgIGRiX2lkID0gcmVzcG9u c2VfZGF0YVsnbm9kZSddWydfaWQnXQorICAgICAgICBkYl9kaWN0ID0geyJk Yl9pZCI6IGRiX2lkLCAiZGJfbmFtZSI6IHNlbGYuZGJfbmFtZX0KKyAgICAg ICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKGludChzZXJ2ZXJfaWQpLCAiZGlk IiwgZGJfZGljdCkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAg ICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRk ZWQgZGF0YWJhc2UsIGFkZGVkIHNlcnZlciBhbmQgdGhlCi0gICAgICAgICdw YXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAo KQotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgVGhpcyBmdW5j dGlvbiBkZWxldGUgdGhlIGRhdGFiYXNlIGZyb20gc2VydmVyIGFkZGVkIGlu IFNRTGl0ZSBhbmQKKyAgICAgICAgY2xlYXJzIHRoZSBub2RlX2luZm9fZGlj dAogICAgICAgICAiIiIKLQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxl dGVfZGF0YWJhc2UoY2xzLnRlc3RlcikKLSAgICAgICAgc2VydmVyX3V0aWxz LmRlbGV0ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVs ZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgY29ubmVjdGlvbiA9IHV0 aWxzLmdldF9kYl9jb25uZWN0aW9uKHNlbGYuc2VydmVyWydkYiddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5zZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGJfcGFzc3dv cmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuc2VydmVyWydob3N0J10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsncG9y dCddKQorICAgICAgICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24s IHNlbGYuZGJfbmFtZSkKKyAgICAgICAgdXRpbHMuY2xlYXJfbm9kZV9pbmZv X2RpY3QoKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZGVs ZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZGVsZXRlLnB5CmluZGV4 IDc1NmE2ODkuLjgzOTMxM2EgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90 ZXN0X2RiX2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9k ZWxldGUucHkKQEAgLTYsMTYgKzYsMTQgQEAKICMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCiAjCiAj ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCiBmcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lv biBpbXBvcnQgdGVzdF9zZXJ2ZXJfZGljdAogZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBzZXJ2ZXJfdXRpbHMKLWZyb20gLiBpbXBvcnQgdXRpbHMgYXMgZGF0YWJh c2VfdXRpbHMKIAogCiBjbGFzcyBEYXRhYmFzZURlbGV0ZVRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIGRl bGV0ZSB0aGUgZGF0YWJhc2UgdW5kZXIgbGFzdCBhZGRlZCBzZXJ2ZXIuICIi IgotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoaW5nIGRl ZmF1bHQgVVJMIGZvciBkYXRhYmFzZSBub2RlLgogICAgICAgICAoJ0NoZWNr IERhdGFiYXNlcyBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9kYXRh YmFzZS9vYmovJykpCkBAIC0yMyw0MiArMjEsMjMgQEAgY2xhc3MgRGF0YWJh c2VEZWxldGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAKICAgICBA Y2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAg ICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJl ZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgotICAg ICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFkZCB0 aGUgZGF0YWJhc2VzCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAg ICAiIiIKLQotICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCi0g ICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCi0K LSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICBjbHMuc2Vy dmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5z ZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5l Y3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAgIHJh aXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQg dGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFzZQot ICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3Rl ciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCisgICAg ICAgIGNscy5kYl9pZCA9IHV0aWxzLmNyZWF0ZV9kYXRhYmFzZShjbHMuc2Vy dmVyLCAidGVzdF9kYl9kZWxldGUiKQogCiAgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIHRo ZSBkYXRhYmFzZS4iIiIKLQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxl dGVfZGF0YWJhc2Uoc2VsZi50ZXN0ZXIpCisgICAgICAgIHNlcnZlcl9pZCA9 IHRlc3Rfc2VydmVyX2RpY3RbInNlcnZlciJdWzBdWyJzZXJ2ZXJfaWQiXQor ICAgICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVj dF9zZXJ2ZXIoc2VsZiwgc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJf cmVzcG9uc2VbImRhdGEiXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICBk Yl9pZCA9IHNlbGYuZGJfaWQKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2Vs Zi50ZXN0ZXIuZGVsZXRlKAorICAgICAgICAgICAgICAgIHNlbGYudXJsICsg c3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAgICAg ICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSwKKyAgICAg ICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgICAg ICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAw KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u KCJDb3VsZCBub3QgY29ubmVjdCB0byBzZXJ2ZXIgdG8gZGVsZXRlIHRoZSAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGFiYXNlLiIpCiAK ICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMp OgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGVz IHRoZSBhZGRlZCBzZXJ2ZXIgYW5kIHRoZSAncGFyZW50X2lkLnBrbCcgZmls ZQotICAgICAgICB3aGljaCBpcyBjcmVhdGVkIGluIHNldHVwKCkgZnVuY3Rp b24uCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQot ICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVy KQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAg ICAgICBwYXNzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9n ZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9nZXQucHkKaW5kZXggNzM5 ZGZmOC4uNDFlZDE0MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3Rf ZGJfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX2dldC5weQpA QCAtOSw5ICs5LDcgQEAKIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9uIGltcG9y dCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9z ZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKLWZyb20gcmVncmVzc2lvbi50ZXN0 X3V0aWxzIGltcG9ydCBnZXRfaWRzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5z ZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNl cnZlcl91dGlscworZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NlcnZl cl9kaWN0CiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxz CiAKIApAQCAtMTksNjYgKzE3LDMyIEBAIGNsYXNzIERhdGFiYXNlc0dldFRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAiIiIKICAgICBUaGlz IGNsYXNzIHdpbGwgZmV0Y2ggZGF0YWJhc2UgYWRkZWQgdW5kZXIgbGFzdCBh ZGRlZCBzZXJ2ZXIuCiAgICAgIiIiCi0KICAgICBzY2VuYXJpb3MgPSBbCiAg ICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGRhdGFiYXNlIG5v ZGUuCiAgICAgICAgICgnQ2hlY2sgRGF0IGFiYXNlcyBOb2RlIFVSTCcsIGRp Y3QodXJsPScvYnJvd3Nlci9kYXRhYmFzZS9vYmovJykpCiAgICAgXQogCi0g ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAg ICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUg dGhyZWUgdGFza3MKLSAgICAgICAgIDEuIEFkZCB0aGUgdGVzdCBzZXJ2ZXIK LSAgICAgICAgIDIuIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAgICAzLiBB ZGQgdGhlIGRhdGFiYXNlcwotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAg ICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZl cgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVy KQotCi0gICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBj bHMuc2VydmVyX2lkcyA9IFwKLSAgICAgICAgICAgIHNlcnZlcl91dGlscy5j b25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgIGlmIGxlbihj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6Ci0gICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8g YWRkIHRoZSBkYXRhYmFzZSEhISIpCi0KLSAgICAgICAgIyBBZGQgZGF0YWJh c2UKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50 ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQot CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1 bmN0aW9uIHdpbGwgZmV0Y2ggYWRkZWQgZGF0YWJhc2UuICIiIgotCi0gICAg ICAgIGFsbF9pZCA9IGdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0g YWxsX2lkWyJzaWQiXQotCi0gICAgICAgIGRiX2lkc19kaWN0ID0gYWxsX2lk WyJkaWQiXVswXQotICAgICAgICBzcnZfZ3JwID0gY29uZmlnX2RhdGFbJ3Nl cnZlcl9ncm91cCddCi0KLSAgICAgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2 ZXJfaWRzOgotICAgICAgICAgICAgZGJfaWQgPSBkYl9pZHNfZGljdFtpbnQo c2VydmVyX2lkKV0KLSAgICAgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0 aWxzLnZlcmlmeV9kYXRhYmFzZShzZWxmLnRlc3Rlciwgc3J2X2dycCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQpCi0gICAgICAgICAgICBp ZiBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6Cisg ICAgICAgIHNlcnZlcl9kYXRhID0gdGVzdF9zZXJ2ZXJfZGljdFsiZGF0YWJh c2UiXVswXQorICAgICAgICBzZXJ2ZXJfaWQgPSBzZXJ2ZXJfZGF0YVsic2Vy dmVyX2lkIl0KKyAgICAgICAgZGJfaWQgPSBzZXJ2ZXJfZGF0YVsnZGJfaWQn XQorICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy52ZXJpZnlfZGF0 YWJhc2Uoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZl cl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRiX2lkKQorICAgICAgICBpZiBkYl9jb25bImluZm8iXSA9 PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6CisgICAgICAgICAgICB0cnk6CiAg ICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQoCi0g ICAgICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHNydl9ncnApICsg Jy8nICsgc3RyKHNlcnZlcl9pZCkgKyAnLycgKworICAgICAgICAgICAgICAg ICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8n ICsgc3RyKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkKSAr ICcvJyArCiAgICAgICAgICAgICAgICAgICAgIHN0cihkYl9pZCksIGZvbGxv d19yZWRpcmVjdHM9VHJ1ZSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2Vy dEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQotCi0gICAgQGNs YXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAg ICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRk ZWQgZGF0YWJhc2UsIGFkZGVkIHNlcnZlcgotICAgICAgICBhbmQgdGhlICdw YXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAo KSBmdW5jdGlvbi4KLQotICAgICAgICA6cmV0dXJuOiBOb25lCi0gICAgICAg ICIiIgotCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFz ZShjbHMudGVzdGVyKQotICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3Nl cnZlcihjbHMudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50 X2lkX2ZpbGUoKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl eGNlcHRpb246CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJF cnJvciB3aGlsZSBnZXR0aW5nIGRhdGFiYXNlLiAlcyIgJSBleGNlcHRpb24p CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICMgRGlz Y29ubmVjdCBkYXRhYmFzZSB0byBkZWxldGUgaXQKKyAgICAgICAgICAgICAg ICBkYXRhYmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNl cnZlcl9pZCwgZGJfaWQpCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJh c2UuIikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX3B1dC5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX3B1dC5weQppbmRleCBjMzJlM2Nh Li4yMTNjOTQ3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9w dXQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfcHV0LnB5CkBAIC0x MSwxNyArMTEsMTMgQEAgaW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0 aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jl c3Npb24gaW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKIGZyb20gcmVncmVzc2lv bi50ZXN0X3NldHVwIGltcG9ydCBhZHZhbmNlZF9jb25maWdfZGF0YQotZnJv bSByZWdyZXNzaW9uLnRlc3RfdXRpbHMgaW1wb3J0IGdldF9pZHMKLWZyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBp bXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCiBmcm9tIC4gaW1wb3J0IHV0 aWxzIGFzIGRhdGFiYXNlX3V0aWxzCiAKIAogY2xhc3MgRGF0YWJhc2VzVXBk YXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIgotICAg IFRoaXMgY2xhc3Mgd2lsbCB1cGRhdGUgdGhlIGRhdGFiYXNlIHVuZGVyIGxh c3QgYWRkZWQgc2VydmVyLgotICAgICIiIgotCisgICAgIiIiVGhpcyBjbGFz cyB3aWxsIHVwZGF0ZSB0aGUgZGF0YWJhc2UgdW5kZXIgbGFzdCBhZGRlZCBz ZXJ2ZXIuIiIiCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNo aW5nIGRlZmF1bHQgVVJMIGZvciBkYXRhYmFzZSBub2RlLgogICAgICAgICAo J0NoZWNrIERhdGFiYXNlcyBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL2Rh dGFiYXNlL29iai8nKSkKQEAgLTI5LDYzICsyNSw0NiBAQCBjbGFzcyBEYXRh YmFzZXNVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAKICAg ICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAg ICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0 aHJlZSB0YXNrcwotICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgot ICAgICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKLSAgICAgICAgIDMuIEFk ZCB0aGUgZGF0YWJhc2VzCi0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAg ICAgICAiIiIKLQotICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVy Ci0gICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIp Ci0KLSAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgICAgICBjbHMu c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNs cy5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNv bm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCi0KLSAgICAgICAgaWYgbGVuKGNs cy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKLSAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBh ZGQgdGhlIGRhdGFiYXNlISEhIikKLQotICAgICAgICAjIEFkZCBkYXRhYmFz ZQotICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRl c3RlciwgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCisg ICAgICAgIGNscy5kYl9uYW1lID0gInRlc3RfZGJfcHV0IgorICAgICAgICBj bHMuZGJfaWQgPSB1dGlscy5jcmVhdGVfZGF0YWJhc2UoY2xzLnNlcnZlciwg Y2xzLmRiX25hbWUpCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAg ICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhlIGNvbW1lbnRz IGZpZWxkIG9mIGRhdGFiYXNlLiIiIgotCi0gICAgICAgIGFsbF9pZCA9IGdl dF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQot ICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1bMF0KLQotICAg ICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAg ICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAg ICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFiYXNl KHNlbGYudGVzdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQpCi0gICAgICAgICAgICBp ZiBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6Cisg ICAgICAgIHNlcnZlcl9pZCA9IHRlc3Rfc2VydmVyX2RpY3RbInNlcnZlciJd WzBdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBkYl9pZCA9IHNlbGYuZGJfaWQK KyAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMudmVyaWZ5X2RhdGFi YXNlKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJf aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYl9pZCkKKyAgICAgICAgaWYgZGJfY29uWyJpbmZvIl0gPT0g IkRhdGFiYXNlIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgdHJ5OgogICAg ICAgICAgICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgICJj b21tZW50cyI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWyJkYl91cGRhdGVfZGF0 YSJdWzBdCi0gICAgICAgICAgICAgICAgICAgIFsiY29tbWVudCJdLAorICAg ICAgICAgICAgICAgICAgICAiY29tbWVudHMiOiBhZHZhbmNlZF9jb25maWdf ZGF0YVsiZGJfdXBkYXRlX2RhdGEiXVsiY29tbWVudCJdLAogICAgICAgICAg ICAgICAgICAgICAiaWQiOiBkYl9pZAogICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgICBwdXRfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQo Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNF UlZFUl9HUk9VUCkgKyAnLycgKyBzdHIoCisgICAgICAgICAgICAgICAgcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQoc2VsZi51cmwgKyBzdHIodXRpbHMu U0VSVkVSX0dST1VQKSArICcvJyArIHN0cigKICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlcl9pZCkgKyAnLycgKwogICAgICAgICAgICAgICAgICAg ICBzdHIoZGJfaWQpLCBkYXRhPWpzb24uZHVtcHMoZGF0YSksIGZvbGxvd19y ZWRpcmVjdHM9VHJ1ZSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhwdXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAg ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29k ZSwgMjAwKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGNl cHRpb246CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJFcnJv ciB3aGlsZSB1cGRhdGluZyBkYXRhYmFzZSBkZXRhaWxzLiAlcyIgJQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb24pCisgICAg ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICMgRGlzY29ubmVj dCBkYXRhYmFzZSB0byBkZWxldGUgaXQKKyAgICAgICAgICAgICAgICBkYXRh YmFzZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9p ZCwgZGJfaWQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBF eGNlcHRpb24oIkVycm9yIHdoaWxlIHVwZGF0aW5nIGRhdGFiYXNlIGRldGFp bHMuIikKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB0ZWFyRG93bkNs YXNzKHNlbGYpOgorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAg ICAgICIiIgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFk ZGVkIHNlcnZlciBhbmQgJ3BhcmVudF9pZC5wa2wnIGZpbGUKLSAgICAgICAg d2hpY2ggaXMgY3JlYXRlZCBpbiBzZXR1cCgpIGZ1bmN0aW9uLgotCi0gICAg ICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxl dGUgdGhlIGRhdGFiYXNlIGZyb20gc2VydmVyIGFkZGVkIGluIFNRTGl0ZSBh bmQKKyAgICAgICAgY2xlYXJzIHRoZSBub2RlX2luZm9fZGljdAogICAgICAg ICAiIiIKLQotICAgICAgICBkYXRhYmFzZV91dGlscy5kZWxldGVfZGF0YWJh c2Uoc2VsZi50ZXN0ZXIpCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVf c2VydmVyKHNlbGYudGVzdGVyKQotICAgICAgICB1dGlscy5kZWxldGVfcGFy ZW50X2lkX2ZpbGUoKQorICAgICAgICBjb25uZWN0aW9uID0gdXRpbHMuZ2V0 X2RiX2Nvbm5lY3Rpb24oY2xzLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJb J3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjbHMuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz LnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlclsncG9ydCddKQorICAgICAg ICB1dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sIGNscy5kYl9uYW1l KQorICAgICAgICB1dGlscy5jbGVhcl9ub2RlX2luZm9fZGljdCgpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMv dXRpbHMucHkKaW5kZXggMzdhOTViYS4uNzMyZTk4ZCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy91dGls cy5weQpAQCAtOCwxMSArOCw5IEBACiAjICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAKIGltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCBw aWNrbGUKIGltcG9ydCB1dWlkCiAKLWZyb20gcmVncmVzc2lvbi50ZXN0X3Nl dHVwIGltcG9ydCBwaWNrbGVfcGF0aCwgYWR2YW5jZWRfY29uZmlnX2RhdGEK K2Zyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBhZHZhbmNlZF9j b25maWdfZGF0YQogZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vw cy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMK IGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwog CkBAIC0yMSwyNiArMTksMTEgQEAgREFUQUJBU0VfVVJMID0gJy9icm93c2Vy L2RhdGFiYXNlL29iai8nCiBEQVRBQkFTRV9DT05ORUNUX1VSTCA9ICdicm93 c2VyL2RhdGFiYXNlL2Nvbm5lY3QvJwogCiAKLWRlZiBnZXRfZGJfZGF0YShz ZXJ2ZXJfY29ubmVjdF9kYXRhKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0 aW9uIGlzIHVzZWQgdG8gZ2V0IGFkdmFuY2UgY29uZmlnIHRlc3QgZGF0YSBm b3IgYXBwcm9wcmlhdGUKLSAgICBzZXJ2ZXIKLQotICAgIDpwYXJhbSBzZXJ2 ZXJfY29ubmVjdF9kYXRhOiBsaXN0IG9mIHNlcnZlciBkZXRhaWxzCi0gICAg OnJldHVybiBkYXRhOiBkYXRhYmFzZSBkZXRhaWxzCi0gICAgOnJ0eXBlOiBk aWN0Ci0gICAgIiIiCi0KLSAgICBhZHZfY29uZmlnX2RhdGEgPSBOb25lCitk ZWYgZ2V0X2RiX2RhdGEoKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHJldHVy bnMgdGhlIGRhdGFiYXNlIGRldGFpbHMgZnJvbSBqc29uIGZpbGUiIiIKICAg ICBkYXRhID0gTm9uZQotICAgIGRiX3VzZXIgPSBzZXJ2ZXJfY29ubmVjdF9k YXRhWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCi0KLSAgICAjIEdldCB0aGUg Y29uZmlnIGRhdGEgb2YgYXBwcm9wcmlhdGUgZGIgdXNlcgotICAgIGZvciBj b25maWdfdGVzdF9kYXRhIGluIGFkdmFuY2VkX2NvbmZpZ19kYXRhWydhZGRf ZGF0YWJhc2VfZGF0YSddOgotICAgICAgICBpZiBkYl91c2VyID09IGNvbmZp Z190ZXN0X2RhdGFbJ293bmVyJ106Ci0gICAgICAgICAgICBhZHZfY29uZmln X2RhdGEgPSBjb25maWdfdGVzdF9kYXRhCi0KLSAgICBpZiBhZHZfY29uZmln X2RhdGEgaXMgbm90IE5vbmU6CisgICAgaWYgYWR2YW5jZWRfY29uZmlnX2Rh dGFbJ2FkZF9kYXRhYmFzZV9kYXRhJ10gaXMgbm90IE5vbmU6CisgICAgICAg IGFkdl9jb25maWdfZGF0YSA9IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydhZGRf ZGF0YWJhc2VfZGF0YSddCiAgICAgICAgIGRhdGEgPSB7CiAgICAgICAgICAg ICAiZGF0YWNsIjogYWR2X2NvbmZpZ19kYXRhWydwcml2aWxlZ2VzX2FjbCdd LAogICAgICAgICAgICAgImRhdGNvbm5saW1pdCI6IGFkdl9jb25maWdfZGF0 YVsnY29ubl9saW1pdCddLApAQCAtNTgsNjcgKzQxLDEzIEBAIGRlZiBnZXRf ZGJfZGF0YShzZXJ2ZXJfY29ubmVjdF9kYXRhKToKICAgICByZXR1cm4gZGF0 YQogCiAKLWRlZiB3cml0ZV9kYl9pZChyZXNwb25zZV9kYXRhKToKLSAgICAi IiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdyaXRlcyB0aGUgc2VydmVyIGFuZCBk YXRhYmFzZSByZWxhdGVkIGRhdGEgbGlrZSBzZXJ2ZXIKLSAgICBuYW1lLCBz ZXJ2ZXIgaWQgLCBkYXRhYmFzZSBuYW1lLCBkYXRhYmFzZSBpZCBldGMuCi0K LSAgICA6cGFyYW0gcmVzcG9uc2VfZGF0YTogc2VydmVyIGFuZCBkYXRhYmFz ZXMgZGV0YWlscwotICAgIDp0eXBlIHJlc3BvbnNlX2RhdGE6IGRpY3QKLSAg ICA6cmV0dXJuOiBOb25lCi0gICAgIiIiCi0KLSAgICBkYl9pZCA9IHJlc3Bv bnNlX2RhdGFbJ25vZGUnXVsnX2lkJ10KLSAgICBzZXJ2ZXJfaWQgPSByZXNw b25zZV9kYXRhWydub2RlJ11bJ19waWQnXQotICAgIHBpY2tsZV9pZF9kaWN0 ID0gdXRpbHMuZ2V0X3BpY2tsZV9pZF9kaWN0KCkKLSAgICBpZiBvcy5wYXRo LmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAgICAgIGV4aXN0aW5nX3NlcnZl cl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdyYicpCi0gICAgICAgIHRvbF9z ZXJ2ZXJfaWQgPSBwaWNrbGUubG9hZChleGlzdGluZ19zZXJ2ZXJfaWQpCi0g ICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gdG9sX3NlcnZlcl9pZAotICAgIGlm ICdkaWQnIGluIHBpY2tsZV9pZF9kaWN0OgotICAgICAgICBpZiBwaWNrbGVf aWRfZGljdFsnZGlkJ106Ci0gICAgICAgICAgICAjIEFkZCB0aGUgZGJfaWQg YXMgdmFsdWUgaW4gZGljdAotICAgICAgICAgICAgcGlja2xlX2lkX2RpY3Rb ImRpZCJdWzBdLnVwZGF0ZSh7c2VydmVyX2lkOiBkYl9pZH0pCi0gICAgICAg IGVsc2U6Ci0gICAgICAgICAgICAjIENyZWF0ZSBuZXcgZGljdCB3aXRoIHNl cnZlcl9pZCBhbmQgZGJfaWQKLSAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0 WyJkaWQiXS5hcHBlbmQoe3NlcnZlcl9pZDogZGJfaWR9KQotICAgIGRiX291 dHB1dCA9IG9wZW4ocGlja2xlX3BhdGgsICd3YicpCi0gICAgcGlja2xlLmR1 bXAocGlja2xlX2lkX2RpY3QsIGRiX291dHB1dCkKLSAgICBkYl9vdXRwdXQu Y2xvc2UoKQotCi0KLWRlZiBhZGRfZGF0YWJhc2UodGVzdGVyLCBzZXJ2ZXJf Y29ubmVjdF9yZXNwb25zZSwgc2VydmVyX2lkcyk6Ci0gICAgIiIiCi0gICAg VGhpcyBmdW5jdGlvbiBhZGQgdGhlIGRhdGFiYXNlIGludG8gc2VydmVycwot Ci0gICAgOnBhcmFtIHRlc3RlcjogZmxhc2sgdGVzdCBjbGllbnQKLSAgICA6 dHlwZSB0ZXN0ZXI6IGZsYXNrIHRlc3Qgb2JqZWN0Ci0gICAgOnBhcmFtIHNl cnZlcl9jb25uZWN0X3Jlc3BvbnNlOiBzZXJ2ZXIgcmVzcG9uc2UKLSAgICA6 dHlwZSBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZTogZGljdAotICAgIDpwYXJh bSBzZXJ2ZXJfaWRzOiBzZXJ2ZXIgaWRzCi0gICAgOnR5cGUgc2VydmVyX2lk czogbGlzdAotICAgIDpyZXR1cm46IE5vbmUKLSAgICAiIiIKLQotICAgIGZv ciBzZXJ2ZXJfY29ubmVjdCwgc2VydmVyX2lkIGluIHppcChzZXJ2ZXJfY29u bmVjdF9yZXNwb25zZSwgc2VydmVyX2lkcyk6Ci0gICAgICAgIGlmIHNlcnZl cl9jb25uZWN0WydkYXRhJ11bJ2Nvbm5lY3RlZCddOgotICAgICAgICAgICAg ZGF0YSA9IGdldF9kYl9kYXRhKHNlcnZlcl9jb25uZWN0KQotICAgICAgICAg ICAgZGJfcmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChEQVRBQkFTRV9VUkwgKyBz dHIodXRpbHMuU0VSVkVSX0dST1VQKSArCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIi8iICsgc2VydmVyX2lkICsgIi8i LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNv bicpCi0gICAgICAgICAgICBhc3NlcnQgZGJfcmVzcG9uc2Uuc3RhdHVzX2Nv ZGUgPT0gMjAwCi0gICAgICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5s b2FkcyhkYl9yZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAg ICAgICAgIHdyaXRlX2RiX2lkKHJlc3BvbnNlX2RhdGEpCi0KLQotZGVmIHZl cmlmeV9kYXRhYmFzZSh0ZXN0ZXIsIHNlcnZlcl9ncm91cCwgc2VydmVyX2lk LCBkYl9pZCk6CitkZWYgdmVyaWZ5X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9n cm91cCwgc2VydmVyX2lkLCBkYl9pZCk6CiAgICAgIiIiCiAgICAgVGhpcyBm dW5jdGlvbiB2ZXJpZmllcyB0aGF0IGRhdGFiYXNlIGlzIGV4aXN0cyBhbmQg d2hldGhlciBpdCBjb25uZWN0CiAgICAgc3VjY2Vzc2Z1bGx5IG9yIG5vdAog Ci0gICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQKLSAgICA6dHlwZSB0 ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50IG9iamVjdAorICAgIDpwYXJhbSBz ZWxmOiBjbGFzcyBvYmplY3Qgb2YgdGVzdCBjYXNlIGNsYXNzCisgICAgOnR5 cGUgc2VsZjogY2xhc3MKICAgICA6cGFyYW0gc2VydmVyX2dyb3VwOiBzZXJ2 ZXIgZ3JvdXAgaWQKICAgICA6dHlwZSBzZXJ2ZXJfZ3JvdXA6IGludAogICAg IDpwYXJhbSBzZXJ2ZXJfaWQ6IHNlcnZlciBpZApAQCAtMTMwLDE1ICs1OSwy MyBAQCBkZWYgdmVyaWZ5X2RhdGFiYXNlKHRlc3Rlciwgc2VydmVyX2dyb3Vw LCBzZXJ2ZXJfaWQsIGRiX2lkKToKICAgICAiIiIKIAogICAgICMgVmVyaWZ5 IHNlcnZlcnMKLSAgICBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcih0ZXN0 ZXIsIHNlcnZlcl9ncm91cCwgc2VydmVyX2lkKQorICAgIHNlcnZlcl91dGls cy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZXJ2ZXJfaWQpCiAKICAgICAjIENv bm5lY3QgdG8gZGF0YWJhc2UKLSAgICBjb25fcmVzcG9uc2UgPSB0ZXN0ZXIu cG9zdCgnezB9ezF9L3syfS97M30nLmZvcm1hdCgKKyAgICBkYl9jb24gPSBz ZWxmLnRlc3Rlci5wb3N0KCd7MH17MX0vezJ9L3szfScuZm9ybWF0KAogICAg ICAgICBEQVRBQkFTRV9DT05ORUNUX1VSTCwgc2VydmVyX2dyb3VwLCBzZXJ2 ZXJfaWQsIGRiX2lkKSwKICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVl KQotICAgIHRlbXBfZGJfY29uID0ganNvbi5sb2Fkcyhjb25fcmVzcG9uc2Uu ZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgc2VsZi5hc3NlcnRFcXVhbHMo ZGJfY29uLnN0YXR1c19jb2RlLCAyMDApCisgICAgZGJfY29uID0ganNvbi5s b2FkcyhkYl9jb24uZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgcmV0dXJu IGRiX2NvbgogCi0gICAgcmV0dXJuIHRlbXBfZGJfY29uCisKK2RlZiBkaXNj b25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlcnZlcl9pZCwgZGJfaWQpOgorICAg ICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCB0aGUgZGIiIiIKKyAgICBk Yl9jb24gPSBzZWxmLnRlc3Rlci5kZWxldGUoJ3swfXsxfS97Mn0vezN9Jy5m b3JtYXQoCisgICAgICAgICdicm93c2VyL2RhdGFiYXNlL2Nvbm5lY3QvJywg dXRpbHMuU0VSVkVSX0dST1VQLCBzZXJ2ZXJfaWQsIGRiX2lkKSwKKyAgICAg ICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQorICAgIHNlbGYuYXNzZXJ0RXF1 YWxzKGRiX2Nvbi5zdGF0dXNfY29kZSwgMjAwKQogCiAKIGRlZiBkZWxldGVf ZGF0YWJhc2UodGVzdGVyKToKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVy X2FkZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2FkZC5weQppbmRleCA3MzQ4YTQ3 Li4wOGVkOGQ2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRkLnB5CkBAIC03LDYgKzcsOCBAQAog IwogIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitpbXBvcnQg anNvbgorCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKIGZyb20gLiBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0 aWxzCkBAIC0yNiwxNyArMjgsMTkgQEAgY2xhc3MgU2VydmVyc0FkZFRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKIAogICAgIGRlZiBydW5UZXN0KHNl bGYpOgogICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0aGUg c2VydmVyIHVuZGVyIGRlZmF1bHQgc2VydmVyIGdyb3VwLiIiIgotCi0gICAg ICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKHNlbGYudGVzdGVyKQorICAg ICAgICB1cmwgPSAiezB9ezF9LyIuZm9ybWF0KHNlbGYudXJsLCB1dGlscy5T RVJWRVJfR1JPVVApCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIu cG9zdCh1cmwsIGRhdGE9anNvbi5kdW1wcyhzZWxmLnNlcnZlciksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9 J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor ICAgICAgICBzZXJ2ZXJfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19p ZCddCisgICAgICAgIHV0aWxzLndyaXRlX25vZGVfaW5mbyhpbnQoc2VydmVy X2lkKSwgInNpZCIsIHNlbGYuc2VydmVyKQogCiAgICAgQGNsYXNzbWV0aG9k CiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgIiIiCi0g ICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VydmVy IGFuZCB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUKLSAgICAgICAgd2hpY2gg aXMgY3JlYXRlZCBpbiBzZXR1cCgpIGZ1bmN0aW9uLgotCi0gICAgICAgIDpy ZXR1cm46IE5vbmUKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGUgdGhl IHNlcnZlciBmcm9tIFNRTGl0ZSAmIGNsZWFycyB0aGUgbm9kZV9pbmZvX2Rp Y3QKICAgICAgICAgIiIiCi0KLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0 ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3Bh cmVudF9pZF9maWxlKCkKKyAgICAgICAgc2VydmVyX2lkID0gc2VydmVyX3V0 aWxzLmdldF9zZXJ2ZXJfaWQoKQorICAgICAgICB1dGlscy5kZWxldGVfc2Vy dmVyKHNlcnZlcl9pZCkKKyAgICAgICAgdXRpbHMuY2xlYXJfbm9kZV9pbmZv X2RpY3QoKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfZGVsZXRlLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGVzdHMvdGVzdF9zZXJ2ZXJfZGVsZXRlLnB5CmluZGV4IDY0MzFiZWMuLmRk YzgyOWIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2RlbGV0ZS5weQor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy90ZXN0cy90ZXN0X3NlcnZlcl9kZWxldGUucHkKQEAgLTcsMTAgKzcsMTAg QEAKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBqc29u CiAKIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RH ZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBh cyB1dGlscwotCiBmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGls cwogCiAKQEAgLTI0LDI4ICsyNCwyNyBAQCBjbGFzcyBTZXJ2ZXJEZWxldGVU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAKICAgICBAY2xhc3NtZXRo b2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICAiIiIKLSAg ICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGFkZCB0aGUgc2VydmVy Ci0KLSAgICAgICAgOnJldHVybjogTm9uZQotICAgICAgICAiIiIKLQotICAg ICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCi0gICAgICAgIHNlcnZl cl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCisgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gYWRkIHRoZSBzZXJ2ZXIgdG8gdGVzdCB0aGUgREVMRVRF IEFQSSIiIgorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMu c2VydmVyKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIi IiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGFsbCBhdmFpbGFibGUgc2VydmVy cyB1bmRlciBvYmplY3QgYnJvd3NlcgotICAgICAgICBhbmQgZGVsZXRlIHRo ZSBsYXN0IHNlcnZlciB1c2luZyBzZXJ2ZXIgaWQuIiIiCisgICAgICAgICIi IlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VydmVyIiIiCisg ICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9ub2RlX2luZm9fZGljdCgpCisg ICAgICAgIHNlcnZlcnNfaW5mbyA9IGFsbF9pZFsic2lkIl0KKyAgICAgICAg dXJsID0gc2VsZi51cmwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArICIv IgogCi0gICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKHNlbGYu dGVzdGVyKQorICAgICAgICBpZiBsZW4oc2VydmVyc19pbmZvKSA9PSAwOgor ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBzZXJ2ZXIgdG8gZGVs ZXRlISEhIikKKworICAgICAgICAjIENhbGwgQVBJIHRvIGRlbGV0ZSB0aGUg c2VydmVycworICAgICAgICBzZXJ2ZXJfaWQgPSBsaXN0KHNlcnZlcnNfaW5m b1swXS5rZXlzKCkpWzBdCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIuZGVsZXRlKHVybCArIHN0cihzZXJ2ZXJfaWQpKQorICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAg ICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRh LmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cmVzcG9uc2VfZGF0YVsnc3VjY2VzcyddLCAxKQogCiAgICAgQGNsYXNzbWV0 aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgIiIi Ci0gICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgJ3BhcmVudF9p ZC5wa2wnIGZpbGUgd2hpY2ggaXMgY3JlYXRlZCBpbgotICAgICAgICBzZXR1 cCgpIGZ1bmN0aW9uLgotCi0gICAgICAgIDpyZXR1cm46IE5vbmUKLSAgICAg ICAgIiIiCi0KLSAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxl KCkKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgY2xlYXJf bm9kZV9pbmZvX2RpY3QoKSBmdW5jdGlvbiB0byBjbGVhcnMKKyAgICAgICAg dGhlIG5vZGVfaW5mb19kaWN0IiIiCisgICAgICAgIHV0aWxzLmNsZWFyX25v ZGVfaW5mb19kaWN0KCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2dl dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2dldC5weQppbmRleCBlNTQxMjQ3Li5j ZDZkNzg3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9nZXQucHkKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGVzdHMvdGVzdF9zZXJ2ZXJfZ2V0LnB5CkBAIC05LDcgKzksNyBAQAogCiBm cm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJh dG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRp bHMKLWZyb20gLiBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3Rfc2VydmVyX2RpY3QKIAogCiBjbGFz cyBTZXJ2ZXJzR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgpAQCAt MjMsMjkgKzIzLDEzIEBAIGNsYXNzIFNlcnZlcnNHZXRUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CiAgICAgICAgICgnRGVmYXVsdCBTZXJ2ZXIgTm9k ZSB1cmwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2VydmVyL29iai8nKSkKICAg ICBdCiAKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhj bHMpOgotICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiBpcyB1 c2VkIHRvIGFkZCB0aGUgc2VydmVyCi0KLSAgICAgICAgOnJldHVybjogTm9u ZQotICAgICAgICAiIiIKLQotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3Nl cnZlcihjbHMudGVzdGVyKQotCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAg ICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggdGhlIGFkZGVk IHNlcnZlcnMgdG8gb2JqZWN0IGJyb3dzZXIuICIiIgorICAgICAgICBzZXJ2 ZXJfaWQgPSB0ZXN0X3NlcnZlcl9kaWN0WyJzZXJ2ZXIiXVswXVsic2VydmVy X2lkIl0KKyAgICAgICAgaWYgbm90IHNlcnZlcl9pZDoKKyAgICAgICAgICAg IHJhaXNlIEV4Y2VwdGlvbigiU2VydmVyIG5vdCBmb3VuZCB0byB0ZXN0IEdF VCBBUEkiKQorICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldChz ZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9p ZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxv d19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKIAotICAgICAgICBzZXJ2ZXJf dXRpbHMuZ2V0X3NlcnZlcihzZWxmLnRlc3RlcikKLQotICAgIEBjbGFzc21l dGhvZAotICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6Ci0gICAgICAgICIi IgotICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNl cnZlciBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlCi0gICAgICAgIHdo aWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KLQotICAgICAg ICA6cmV0dXJuOiBOb25lCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlcnZl cl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCi0gICAgICAgIHV0 aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90 ZXN0X3NlcnZlcl9wdXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9wdXQucHkKaW5k ZXggOWFjNjQ2OC4uZGU5MmE2MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2 ZXJfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX3B1dC5weQpAQCAtMjMs NTUgKzIzLDM1IEBAIGNsYXNzIFNlcnZlclVwZGF0ZVRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBz ZXRVcENsYXNzKGNscyk6Ci0gICAgICAgICIiIgotICAgICAgICBUaGlzIGZ1 bmN0aW9uIHBlcmZvcm0gdGhlIGZvdXIgdGFza3MKLSAgICAgICAgIDEuIEFk ZCB0aGUgdGVzdCBzZXJ2ZXIKLSAgICAgICAgIDIuIEdldCB0aGUgc2VydmVy Ci0gICAgICAgICAzLiBDb25uZWN0IHRvIHNlcnZlcgotCi0gICAgICAgIDpy ZXR1cm46IE5vbmUKLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBGaXJzdGx5 LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3Nl cnZlcihjbHMudGVzdGVyKQotCi0gICAgICAgICMgR2V0IHRoZSBzZXJ2ZXIK LSAgICAgICAgc2VydmVyX3V0aWxzLmdldF9zZXJ2ZXIoY2xzLnRlc3RlcikK LQotICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCi0gICAgICAgIGNscy5z ZXJ2ZXJfY29ubmVjdCwgY2xzLnNlcnZlcl9ncm91cCwgY2xzLnNlcnZlcl9p ZHMgPSBcCi0gICAgICAgICAgICBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2 ZXIoY2xzLnRlc3RlcikKLQotICAgICAgICBpZiBsZW4oY2xzLnNlcnZlcl9j b25uZWN0KSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJO byBTZXJ2ZXIocykgY29ubmVjdGVkIHRvIHVwZGF0ZSEhISIpCisgICAgICAg ICIiIlRoaXMgZnVuY3Rpb24gYWRkIHRoZSBzZXJ2ZXIgdG8gdGVzdCB0aGUg UFVUIEFQSSIiIgorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihj bHMuc2VydmVyKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAg ICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBzZXJ2ZXIncyBj b21tZW50IGZpZWxkLiAiIiIKLQotICAgICAgICBmb3Igc2VydmVyX2lkIGlu IHNlbGYuc2VydmVyX2lkczoKLSAgICAgICAgICAgIGRhdGEgPSB7Ci0gICAg ICAgICAgICAgICAgImNvbW1lbnQiOgotICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJfdXRpbHMuY29uZmlnX2RhdGFbJ3NlcnZlcl91cGRhdGVfZGF0YSdd WzBdWwotICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1lbnQnXSwKLSAg ICAgICAgICAgICAgICAiaWQiOiBzZXJ2ZXJfaWQKLSAgICAgICAgICAgIH0K LSAgICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgK LSAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cihzZWxmLnNlcnZlcl9n cm91cCkgKyAnLycgKwotICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQp LCBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAgICAgICAgICAgICAgY29u dGVudF90eXBlPSdodG1sL2pzb24nKQotICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAg ICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHB1dF9yZXNw b25zZS5kYXRhLmRlY29kZSgpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRU cnVlKHJlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSwgMSkKKyAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiB1cGRhdGUgdGhlIHNlcnZlciBkZXRhaWxzIiIiCisg ICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9ub2RlX2luZm9fZGljdCgpCisg ICAgICAgIHNlcnZlcnNfaW5mbyA9IGFsbF9pZFsic2lkIl0KKworICAgICAg ICBpZiBsZW4oc2VydmVyc19pbmZvKSA9PSAwOgorICAgICAgICAgICAgcmFp c2UgRXhjZXB0aW9uKCJObyBzZXJ2ZXIgdG8gdXBkYXRlLiIpCisKKyAgICAg ICAgc2VydmVyX2lkID0gbGlzdChzZXJ2ZXJzX2luZm9bMF0ua2V5cygpKVsw XQorICAgICAgICBkYXRhID0geworICAgICAgICAgICAgImNvbW1lbnQiOgor ICAgICAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25maWdfZGF0YVsnc2Vy dmVyX3VwZGF0ZV9kYXRhJ11bMF1bCisgICAgICAgICAgICAgICAgICAgICdj b21tZW50J10sCisgICAgICAgICAgICAiaWQiOiBzZXJ2ZXJfaWQKKyAgICAg ICAgfQorICAgICAgICBwdXRfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wdXQo CisgICAgICAgICAgICBzZWxmLnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JP VVApICsgJy8nICsKKyAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpLCBkYXRh PWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICBjb250ZW50X3R5cGU9 J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHB1dF9y ZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQogCiAgICAgQGNsYXNzbWV0aG9k CiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgIiIiCi0g ICAgICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VydmVy IGFuZCB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUKLSAgICAgICAgd2hpY2gg aXMgY3JlYXRlZCBpbiBzZXR1cCgpIGZ1bmN0aW9uLgotCi0gICAgICAgIDpy ZXR1cm46IE5vbmUKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxldGUgdGhl IHNlcnZlciBmcm9tIFNRTGl0ZSAmIGNsZWFycyB0aGUgbm9kZV9pbmZvX2Rp Y3QKICAgICAgICAgIiIiCi0KLSAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0 ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKLSAgICAgICAgdXRpbHMuZGVsZXRlX3Bh cmVudF9pZF9maWxlKCkKKyAgICAgICAgc2VydmVyX2lkID0gc2VydmVyX3V0 aWxzLmdldF9zZXJ2ZXJfaWQoKQorICAgICAgICB1dGlscy5kZWxldGVfc2Vy dmVyKHNlcnZlcl9pZCkKKyAgICAgICAgdXRpbHMuY2xlYXJfbm9kZV9pbmZv X2RpY3QoKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy91dGlscy5w eQppbmRleCA2ZTNmMTY2Li45NGE3ODExIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy91dGls cy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy90ZXN0cy91dGlscy5weQpAQCAtNywxNTQgKzcsNjQgQEAKICMK ICMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAorZnJvbSBfX2Z1 dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorCitpbXBvcnQgc3lzCiBp bXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCitpbXBvcnQg c3FsaXRlMworaW1wb3J0IGNvbmZpZwogCitmcm9tIHJlZ3Jlc3Npb24gaW1w b3J0IG5vZGVfaW5mb19kaWN0CiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRl c3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVw IGltcG9ydCBwaWNrbGVfcGF0aCwgY29uZmlnX2RhdGEKK2Zyb20gcmVncmVz c2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQogCiBTRVJWRVJf VVJMID0gJy9icm93c2VyL3NlcnZlci9vYmovJwogU0VSVkVSX0NPTk5FQ1Rf VVJMID0gJ2Jyb3dzZXIvc2VydmVyL2Nvbm5lY3QvJwogCiAKLWRlZiB3cml0 ZV9zZXJ2ZXJfaWQocmVzcG9uc2VfZGF0YSwgcGlja2xlX2lkX2RpY3QpOgot ICAgICIiIgotICAgIFRoaXMgZnVuY3Rpb24gd3JpdGVzIHRoZSBzZXJ2ZXIn cyBkZXRhaWxzIHRvIGZpbGUgcGFyZW50X2lkLnBrbAotCi0gICAgOnBhcmFt IHJlc3BvbnNlX2RhdGE6IHNlcnZlcidzIGRhdGEKLSAgICA6dHlwZSByZXNw b25zZV9kYXRhOiBsaXN0IG9mIGRpY3Rpb25hcnkKLSAgICA6cGFyYW0gcGlj a2xlX2lkX2RpY3Q6IGNvbnRhaW5zIGlkcyBvZiBzZXJ2ZXIsZGF0YWJhc2Us dGFibGVzIGV0Yy4KLSAgICA6dHlwZSBwaWNrbGVfaWRfZGljdDogZGljdAot ICAgIDpyZXR1cm46IE5vbmUKLSAgICAiIiIKLQotICAgIHNlcnZlcl9pZCA9 IHJlc3BvbnNlX2RhdGFbJ25vZGUnXVsnX2lkJ10KLSAgICBpZiBvcy5wYXRo LmlzZmlsZShwaWNrbGVfcGF0aCk6Ci0gICAgICAgIGV4aXN0ZWRfc2VydmVy X2lkID0gb3BlbihwaWNrbGVfcGF0aCwgJ3JiJykKLSAgICAgICAgcGlja2xl X2lkX2RpY3QgPSBwaWNrbGUubG9hZChleGlzdGVkX3NlcnZlcl9pZCkKLQot ICAgIHBpY2tsZV9pZF9kaWN0WyJzaWQiXS5hcHBlbmQoc3RyKHNlcnZlcl9p ZCkpCi0gICAgb3V0cHV0ID0gb3BlbihwaWNrbGVfcGF0aCwgJ3diJykKLSAg ICBwaWNrbGUuZHVtcChwaWNrbGVfaWRfZGljdCwgb3V0cHV0KQotICAgIG91 dHB1dC5jbG9zZSgpCi0KLQotZGVmIGFkZF9zZXJ2ZXIodGVzdGVyKToKLSAg ICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIGFkZCB0aGUgc2VydmVyIGluIHRo ZSBleGlzdGluZyBzZXJ2ZXIgZ3JvdXAKLQotICAgIDpwYXJhbSB0ZXN0ZXI6 IHRlc3Qgb2JqZWN0Ci0gICAgOnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IG9i amVjdAotICAgIDpyZXR1cm46Tm9uZQotICAgICIiIgorZGVmIGdldF9zZXJ2 ZXJfaWQoKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNl cnZlciBpZCBmcm9tIG5vZGVfaW5mb19kaWN0IiIiCiAKLSAgICBzZXJ2ZXJf Z3JvdXAsIGRiX2RhdGEsIHBpY2tsZV9pZF9kaWN0ID0gdXRpbHMuZ2V0X2Nv bmZpZ19kYXRhKCkKLSAgICB1cmwgPSAiezB9ezF9LyIuZm9ybWF0KFNFUlZF Ul9VUkwsIHNlcnZlcl9ncm91cCkKLSAgICBmb3IgZGJfZGV0YWlsIGluIGRi X2RhdGE6Ci0gICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLnBvc3QodXJsLCBk YXRhPWpzb24uZHVtcHMoZGJfZGV0YWlsKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCi0gICAg ICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKLSAgICAg ICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCi0gICAgICAgIHdyaXRlX3NlcnZlcl9pZChyZXNw b25zZV9kYXRhLCBwaWNrbGVfaWRfZGljdCkKKyAgICBzZXJ2ZXJfaWQgPSAw CisgICAgaWYgInNpZCIgaW4gbm9kZV9pbmZvX2RpY3Q6CisgICAgICAgIGlm IG5vZGVfaW5mb19kaWN0WydzaWQnXToKKyAgICAgICAgICAgIHNlcnZlcl9p ZCA9IGxpc3Qobm9kZV9pbmZvX2RpY3RbJ3NpZCddWzBdLmtleXMoKSlbMF0K KyAgICByZXR1cm4gc2VydmVyX2lkCiAKIAotZGVmIGdldF9zZXJ2ZXIodGVz dGVyKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIGdldHMgdGhlIGFk ZGVkIHNlcmVyIGRldGFpbHMKLQotICAgIDpwYXJhbSB0ZXN0ZXI6IHRlc3Qg Y2xpZW50IG9iamVjdAotICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBv YmplY3QKLSAgICA6cmV0dXJuOiByZXNwb25zZV9kYXRhCi0gICAgOnJ0eXBl OiBsaXN0Ci0gICAgIiIiCi0KLSAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRz KCkKLSAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotICAgIGZvciBz ZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgcmVzcG9uc2UgPSB0 ZXN0ZXIuZ2V0KFNFUlZFUl9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQ KSArICcvJyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIo c2VydmVyX2lkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv bGxvd19yZWRpcmVjdHM9VHJ1ZSkKLSAgICAgICAgYXNzZXJ0IHJlc3BvbnNl LnN0YXR1c19jb2RlID09IDIwMAotCi0KLWRlZiBjb25uZWN0X3NlcnZlcih0 ZXN0ZXIpOgorZGVmIGNvbm5lY3Rfc2VydmVyKHNlbGYsIHNlcnZlcl9pZCk6 CiAgICAgIiIiCiAgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGNvbm5lY3Qg YWRkZWQgc2VydmVyCi0KLSAgICA6cGFyYW0gdGVzdGVyOnRlc3QgY2xpZW50 IG9iamVjdAotICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBvYmplY3QK LSAgICA6cGFyYW0gYWRkX2RiX2ZsYWc6IGZsYWcgZm9yIGRiIGFkZCB0ZXN0 IGNhc2UKLSAgICA6dHlwZSBhZGRfZGJfZmxhZzogYm9vbAotICAgIDpyZXR1 cm46IHNlcnZlcl9jb25uZWN0LCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZAot ICAgIDpydHlwZTogc2VydmVyX2Nvbm5lY3Q6ZGljdCwgc2VydmVyX2dyb3Vw OmRpY3QsIHNlcnZlcl9pZDpzdHIKKyAgICA6cGFyYW0gc2VsZjogY2xhc3Mg b2JqZWN0IG9mIHNlcnZlcidzIHRlc3QgY2xhc3MKKyAgICA6dHlwZSBzZWxm OiBjbGFzcworICAgIDpwYXJhbSBzZXJ2ZXJfaWQ6IGZsYWcgZm9yIGRiIGFk ZCB0ZXN0IGNhc2UKKyAgICA6dHlwZSBzZXJ2ZXJfaWQ6IGJvb2wKICAgICAi IiIKLQotICAgIHNlcnZlcl9jb25uZWN0ID0gW10KLSAgICBzZXJ2ZXJzID0g W10KLSAgICBzZXJ2ZXJfY29uZmlnID0gTm9uZQotCi0gICAgc3J2X2lkID0g dXRpbHMuZ2V0X2lkcygpCi0gICAgc2VydmVyX2lkcyA9IHNydl9pZFsic2lk Il0KLQotICAgICMgQ29ubmVjdCB0byBhbGwgc2VydmVycwotICAgIGZvciBz ZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAgcmVzcG9uc2UgPSB0 ZXN0ZXIucG9zdChTRVJWRVJfQ09OTkVDVF9VUkwgKyBzdHIodXRpbHMuU0VS VkVSX0dST1VQKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy8nICsgc2VydmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFzc3dvcmQ9Y29uZmlnX2RhdGEKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWydzZXJ2ZXJfY3JlZGVudGlhbHMnXVswXQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2RiX3Bhc3N3 b3JkJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxv d19yZWRpcmVjdHM9VHJ1ZSkKLSAgICAgICAgc2VydmVyX2Nvbm5lY3RfZGV0 YWlsID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgn KSkKLSAgICAgICAgZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0X2RldGFpbFsn ZGF0YSddWyd1c2VyJ11bJ25hbWUnXQotICAgICAgICBzZXJ2ZXJfY29ubmVj dF9kZXRhaWxbJ3RhYmxlc3BhY2VfcGF0aCddID0gTm9uZQotCi0gICAgICAg ICMgR2V0IHRoZSBzZXJ2ZXIgY29uZmlnIG9mIGFwcHJvcHJpYXRlIGRiIHVz ZXIKLSAgICAgICAgZm9yIGNvbmZpZyBpbiBjb25maWdfZGF0YVsnc2VydmVy X2NyZWRlbnRpYWxzJ106Ci0gICAgICAgICAgICBpZiBkYl91c2VyID09IGNv bmZpZ1snZGJfdXNlcm5hbWUnXToKLSAgICAgICAgICAgICAgICBzZXJ2ZXJf Y29uZmlnID0gY29uZmlnCi0KLSAgICAgICAgaWYgInRhYmxlc3BhY2VfcGF0 aCIgaW4gc2VydmVyX2NvbmZpZzoKLSAgICAgICAgICAgIHNlcnZlcl9jb25u ZWN0X2RldGFpbFsndGFibGVzcGFjZV9wYXRoJ10gPSBcCi0gICAgICAgICAg ICAgICAgc2VydmVyX2NvbmZpZ1sndGFibGVzcGFjZV9wYXRoJ10KLQotICAg ICAgICBzZXJ2ZXJfY29ubmVjdC5hcHBlbmQoc2VydmVyX2Nvbm5lY3RfZGV0 YWlsKQotICAgICAgICBzZXJ2ZXJzLmFwcGVuZChzZXJ2ZXJfaWQpCi0gICAg cmV0dXJuIHNlcnZlcl9jb25uZWN0LCB1dGlscy5TRVJWRVJfR1JPVVAsIHNl cnZlcnMKLQotCi1kZWYgdmVyaWZ5X3NlcnZlcih0ZXN0ZXIsIHNlcnZlcl9n cm91cCwgc2VydmVyX2lkKToKLSAgICAiIiJUaGlzIGZ1bmN0aW9uIHZlcmlm aWVzIHRoYXQgc2VydmVyIGlzIGNvbm5lY3Rpbmcgb3Igbm90IiIiCi0KLSAg ICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KAotICAgICAgICAnezB9ezF9L3sy fScuZm9ybWF0KFNFUlZFUl9DT05ORUNUX1VSTCwgc2VydmVyX2dyb3VwLCBz ZXJ2ZXJfaWQpLAotICAgICAgICBkYXRhPWRpY3QocGFzc3dvcmQ9Y29uZmln X2RhdGEKLSAgICAgICAgWydzZXJ2ZXJfY3JlZGVudGlhbHMnXVswXQotICAg ICAgICBbJ2RiX3Bhc3N3b3JkJ10pLAotICAgICAgICBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCi0gICAgc3J2X2Nvbm5lY3QgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgIHJldHVybiBzcnZfY29u bmVjdAotCi0KLWRlZiBkZWxldGVfc2VydmVyKHRlc3Rlcik6Ci0gICAgIiIi Ci0gICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGRlbGV0ZSB0aGUgYWRkZWQg c2VydmVycwotCi0gICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQgb2Jq ZWN0Ci0gICAgOnJldHVybjogTm9uZQotICAgICIiIgotCi0gICAgYWxsX2lk ID0gdXRpbHMuZ2V0X2lkcygpCi0gICAgc2VydmVyX2lkcyA9IGFsbF9pZFsi c2lkIl0KLSAgICB1cmwgPSBTRVJWRVJfVVJMICsgc3RyKHV0aWxzLlNFUlZF Ul9HUk9VUCkgKyAiLyIKLQotICAgIGlmIGxlbihzZXJ2ZXJfaWRzKSA9PSAw OgotICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIHNlcnZlcihzKSB0byBk ZWxldGUhISEiKQotCi0gICAgIyBDYWxsIGFwaSB0byBkZWxldGUgdGhlIHNl cnZlcnMKLSAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAg ICAgIHJlc3BvbnNlID0gdGVzdGVyLmRlbGV0ZSh1cmwgKyBzdHIoc2VydmVy X2lkKSkKLSAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09 IDIwMAotICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNw b25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgYXNzZXJ0IHJl c3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAxClwgTm8gbmV3bGluZSBhdCBl bmQgb2YgZmlsZQorICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdChT RVJWRVJfQ09OTkVDVF9VUkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSAr CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJyArIHN0cihz ZXJ2ZXJfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk YXRhPWRpY3QocGFzc3dvcmQ9c2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCisgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2Rl ID09IDIwMAorICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgIHJldHVybiByZXNwb25z ZV9kYXRhCisKKworZGVmIGFkZF9zZXJ2ZXIoc2VydmVyKToKKyAgICB0cnk6 CisgICAgICAgIGNvbm4gPSBzcWxpdGUzLmNvbm5lY3QoY29uZmlnLlNRTElU RV9QQVRIKQorICAgICAgICBjdXIgPSBjb25uLmN1cnNvcigpCisgICAgICAg IHNlcnZlcl9kZXRhaWxzID0gKAorICAgICAgICAgICAgMSwgdXRpbHMuU0VS VkVSX0dST1VQLCBzZXJ2ZXJbJ25hbWUnXSwgc2VydmVyWydob3N0J10sCisg ICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSwgc2VydmVyWydkYiddLCBzZXJ2 ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICBzZXJ2ZXJbJ3JvbGUnXSwg c2VydmVyWydzc2xtb2RlJ10sCisgICAgICAgICAgICBzZXJ2ZXJbJ2NvbW1l bnQnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoCisgICAgICAgICAgICAnSU5T RVJUIElOVE8gc2VydmVyICh1c2VyX2lkLCBzZXJ2ZXJncm91cF9pZCwgbmFt ZSwgaG9zdCwgJworICAgICAgICAgICAgJ3BvcnQsIG1haW50ZW5hbmNlX2Ri LCB1c2VybmFtZSwgcm9sZSwgc3NsX21vZGUsJworICAgICAgICAgICAgJyBj b21tZW50KSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8pJywgc2VydmVy X2RldGFpbHMpCisgICAgICAgIHNlcnZlcl9pZCA9IGN1ci5sYXN0cm93aWQK KyAgICAgICAgIyBBZGQgc2VydmVyIGluZm8gdG8gbm9kZV9pbmZvX2RpY3QK KyAgICAgICAgdXRpbHMud3JpdGVfbm9kZV9pbmZvKGludChzZXJ2ZXJfaWQp LCAic2lkIiwgc2VydmVyKQorICAgICAgICBjb25uLmNvbW1pdCgpCisgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6CisgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbihlcnIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9yb3V0 ZS5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CmluZGV4IDAyMjZl OGQuLjc0MjY5ZGUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3V0aWxzL3Jv dXRlLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5CkBAIC03 LDggKzcsMTQgQEAKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKK2ltcG9ydCBz eXMKIGltcG9ydCB1bml0dGVzdAorCiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0 YSwgYWJzdHJhY3RtZXRob2QKK2Zyb20gaW1wb3J0bGliIGltcG9ydCBpbXBv cnRfbW9kdWxlCitmcm9tIHdlcmt6ZXVnLnV0aWxzIGltcG9ydCBmaW5kX21v ZHVsZXMKKworaW1wb3J0IGNvbmZpZwogCiAKIGNsYXNzIFRlc3RzR2VuZXJh dG9yUmVnaXN0cnkoQUJDTWV0YSk6CkBAIC00MywyMCArNDksMjYgQEAgY2xh c3MgVGVzdHNHZW5lcmF0b3JSZWdpc3RyeShBQkNNZXRhKToKIAogICAgICAg ICBBQkNNZXRhLl9faW5pdF9fKGNscywgbmFtZSwgYmFzZXMsIGQpCiAKKyAg ICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGltcG9ydF9hcHBfbW9kdWxlcyht b2R1bGVfbmFtZSk6CisgICAgICAgICIiIkFzIHdlIGFyZSBydW5uaW5nIHRl c3Qgc3VpdGUgZm9yIGVhY2ggc2VydmVyLiBUbyBjYXRjaAorICAgICAgICB0 aGUgdGVzdCBjYXNlcywgZGVsZXRlIHRoZSBwcmV2aW91c2x5IGltcG9ydGVk ICBtb2R1bGUKKyAgICAgICAgIiIiCisgICAgICAgIGlmIHN0cihtb2R1bGVf bmFtZSkgaW4gc3lzLm1vZHVsZXMua2V5cygpOgorICAgICAgICAgICAgZGVs IHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXQorICAgICAgICBpbXBvcnRfbW9k dWxlKG1vZHVsZV9uYW1lKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVm IGxvYWRfZ2VuZXJhdG9ycyhjbHMsIHBrZyk6CiAKICAgICAgICAgY2xzLnJl Z2lzdHJ5ID0gZGljdCgpCiAKLSAgICAgICAgZnJvbSBpbXBvcnRsaWIgaW1w b3J0IGltcG9ydF9tb2R1bGUKLSAgICAgICAgZnJvbSB3ZXJremV1Zy51dGls cyBpbXBvcnQgZmluZF9tb2R1bGVzCi0gICAgICAgIGltcG9ydCBjb25maWcK LQogICAgICAgICAjIENoZWNrIGZvciBTRVJWRVIgbW9kZQogICAgICAgICBp ZiBjb25maWcuU0VSVkVSX01PREU6CiAgICAgICAgICAgICBmb3IgbW9kdWxl X25hbWUgaW4gZmluZF9tb2R1bGVzKHBrZywgRmFsc2UsIFRydWUpOgogICAg ICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgbW9kdWxl ID0gaW1wb3J0X21vZHVsZShtb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAg ICAgICAgaWYgInRlc3RzLiIgaW4gc3RyKG1vZHVsZV9uYW1lKToKKyAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5pbXBvcnRfYXBwX21vZHVsZXMobW9k dWxlX25hbWUpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9y OgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGVsc2U6CkBA IC02NSw3ICs3Nyw3IEBAIGNsYXNzIFRlc3RzR2VuZXJhdG9yUmVnaXN0cnko QUJDTWV0YSk6CiAgICAgICAgICAgICAgICAgICAgICMgRXhjbHVkZSB0aGUg dGVzdCBjYXNlcyBpbiBicm93c2VyIG5vZGUgaWYgU0VSVkVSX01PREUKICAg ICAgICAgICAgICAgICAgICAgIyBpcyBGYWxzZQogICAgICAgICAgICAgICAg ICAgICBpZiAicGdhZG1pbi5icm93c2VyLnRlc3RzIiBub3QgaW4gbW9kdWxl X25hbWU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgPSBpbXBv cnRfbW9kdWxlKG1vZHVsZV9uYW1lKQorICAgICAgICAgICAgICAgICAgICAg ICAgY2xzLmltcG9ydF9hcHBfbW9kdWxlcyhtb2R1bGVfbmFtZSkKICAgICAg ICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAg ICAgICAgIHBhc3MKIApAQCAtNzUsNiArODcsMTEgQEAgaW1wb3J0IHNpeAog QHNpeC5hZGRfbWV0YWNsYXNzKFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkpCiBj bGFzcyBCYXNlVGVzdEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg ICAgIyBEZWZpbmluZyBhYnN0cmFjdCBtZXRob2Qgd2hpY2ggd2lsbCBvdmVy cmlkZSBieSBpbmRpdmlkdWFsIHRlc3RjYXNlLgorCisgICAgQGNsYXNzbWV0 aG9kCisgICAgZGVmIHNldFRlc3RTZXJ2ZXIoY2xzLCBzZXJ2ZXIpOgorICAg ICAgICBjbHMuc2VydmVyID0gc2VydmVyCisKICAgICBAYWJzdHJhY3RtZXRo b2QKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgcGFzcwpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vX19pbml0X18ucHkgYi93ZWIvcmVn cmVzc2lvbi9fX2luaXRfXy5weQppbmRleCBlNjlkZTI5Li42YTI3NDQ4IDEw MDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9fX2luaXRfXy5weQorKysgYi93 ZWIvcmVncmVzc2lvbi9fX2luaXRfXy5weQpAQCAtMCwwICsxLDMyIEBACisj ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjICNwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjICNDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjICNU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KworZ2xvYmFsIG5vZGVfaW5mb19kaWN0Citub2RlX2luZm9fZGljdCA9IHsK KyAgICAgICAgInNpZCI6IFtdLCAgIyBzZXJ2ZXIKKyAgICAgICAgImRpZCI6 IFtdLCAgIyBkYXRhYmFzZQorICAgICAgICAibHJpZCI6IFtdLCAgIyByb2xl CisgICAgICAgICJ0c2lkIjogW10sICAjIHRhYmxlc3BhY2UKKyAgICAgICAg InNjaWQiOiBbXSwgICMgc2NoZW1hCisgICAgICAgICJ0Zm5pZCI6IFtdLCAg IyB0cmlnZ2VyIGZ1bmN0aW9ucworICAgICAgICAiY29pZCI6IFtdLCAgIyBj b2xsYXRpb24KKyAgICAgICAgImNpZCI6IFtdLCAgIyBjYXN0cworICAgICAg ICAiZXRpZCI6IFtdLCAjIGV2ZW50X3RyaWdnZXIKKyAgICAgICAgImVpZCI6 IFtdLCAgIyBleHRlbnNpb24KKyAgICAgICAgImZpZCI6IFtdLCAgIyBGRFcK KyAgICAgICAgImZzaWQiOiBbXSwgICMgRlJTCisgICAgICAgICJ1bWlkIjog W10sICAjIHVzZXJfbWFwcGluZworICAgICAgICAic2VpZCI6IFtdICAjIHNl cXVlbmNlCit9CisKK2dsb2JhbCB0ZXN0X3NlcnZlcl9kaWN0Cit0ZXN0X3Nl cnZlcl9kaWN0ID0geworICAgICAgICAic2VydmVyIjogW10sCisgICAgICAg ICJkYXRhYmFzZSI6IFtdCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkgYi93 ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQppbmRleCBkMTFhNzk0Li5lMWY3 NDZmIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQor KysgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtOSwxMCArOSwx MyBAQAogCiAiIiIgVGhpcyBmaWxlIGNvbGxlY3QgYWxsIG1vZHVsZXMvZmls ZXMgcHJlc2VudCBpbiB0ZXN0cyBkaXJlY3RvcnkgYW5kIGFkZAogdGhlbSB0 byBUZXN0U3VpdGUuICIiIgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmlu dF9mdW5jdGlvbgogCiBpbXBvcnQgYXJncGFyc2UKIGltcG9ydCBvcwogaW1w b3J0IHN5cworaW1wb3J0IHNpZ25hbAoraW1wb3J0IGF0ZXhpdAogaW1wb3J0 IHVuaXR0ZXN0CiBpbXBvcnQgbG9nZ2luZwogCkBAIC0yNSwzMCArMjgsNjAg QEAgcm9vdCA9IG9zLnBhdGguZGlybmFtZShDVVJSRU5UX1BBVEgpCiAKIGlm IHN5cy5wYXRoWzBdICE9IHJvb3Q6CiAgICAgc3lzLnBhdGguaW5zZXJ0KDAs IHJvb3QpCisgICAgb3MuY2hkaXIocm9vdCkKIAogZnJvbSBwZ2FkbWluIGlt cG9ydCBjcmVhdGVfYXBwCiBpbXBvcnQgY29uZmlnCitpbXBvcnQgdGVzdF9z ZXR1cAorCisjIEV4ZWN1dGUgc2V0dXAucHkgaWYgdGVzdCBTUUxpdGUgZGF0 YWJhc2UgZG9lc24ndCBleGlzdC4KK2lmIG9zLnBhdGguaXNmaWxlKGNvbmZp Zy5URVNUX1NRTElURV9QQVRIKToKKyAgICBwcmludCgiVGhlIGNvbmZpZ3Vy YXRpb24gZGF0YWJhc2UgYWxyZWFkeSBleGlzdGVkIGF0ICclcycuICIKKyAg ICAgICAgICAiUGxlYXNlIHJlbW92ZSB0aGUgZGF0YWJhc2UgYW5kIGFnYWlu IHJ1biB0aGUgdGVzdCBzdWl0ZS4iICUKKyAgICAgICAgICBjb25maWcuVEVT VF9TUUxJVEVfUEFUSCkKKyAgICBzeXMuZXhpdCgxKQorZWxzZToKKyAgICBj b25maWcuVEVTVElOR19NT0RFID0gVHJ1ZQorICAgIHBnYWRtaW5fY3JlZGVu dGlhbHMgPSB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhCisKKyAgICAjIFNldCBl bnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIGVtYWlsIGFuZCBwYXNzd29yZAor ICAgIG9zLmVudmlyb25bJ1BHQURNSU5fU0VUVVBfRU1BSUwnXSA9ICcnCisg ICAgb3MuZW52aXJvblsnUEdBRE1JTl9TRVRVUF9QQVNTV09SRCddID0gJycK KyAgICBpZiBwZ2FkbWluX2NyZWRlbnRpYWxzOgorICAgICAgICBpZiAncGdB ZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnIGluIHBnYWRtaW5fY3JlZGVudGlh bHM6CisgICAgICAgICAgICBpZiBhbGwoaXRlbSBpbiBwZ2FkbWluX2NyZWRl bnRpYWxzWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddCisgICAgICAg ICAgICAgICAgICAgZm9yIGl0ZW0gaW4gWydsb2dpbl91c2VybmFtZScsICds b2dpbl9wYXNzd29yZCddKToKKyAgICAgICAgICAgICAgICBwZ2FkbWluX2Ny ZWRlbnRpYWxzID0gcGdhZG1pbl9jcmVkZW50aWFsc1sKKyAgICAgICAgICAg ICAgICAgICAgJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10KKyAgICAg ICAgICAgICAgICBvcy5lbnZpcm9uWydQR0FETUlOX1NFVFVQX0VNQUlMJ10g PSBwZ2FkbWluX2NyZWRlbnRpYWxzWworICAgICAgICAgICAgICAgICAgICAn bG9naW5fdXNlcm5hbWUnXQorICAgICAgICAgICAgICAgIG9zLmVudmlyb25b J1BHQURNSU5fU0VUVVBfUEFTU1dPUkQnXSA9IHBnYWRtaW5fY3JlZGVudGlh bHNbCisgICAgICAgICAgICAgICAgICAgICdsb2dpbl9wYXNzd29yZCddCisK KyAgICAjIEV4ZWN1dGUgdGhlIHNldHVwIGZpbGUKKyAgICBleGVjIChvcGVu KCJzZXR1cC5weSIpLnJlYWQoKSkKIAogIyBHZXQgdGhlIGNvbmZpZyBkYXRh YmFzZSBzY2hlbWEgdmVyc2lvbi4gV2Ugc3RvcmUgdGhpcyBpbiBwZ2FkbWlu Lm1vZGVsCiAjIGFzIGl0IHR1cm5zIG91dCB0aGF0IHB1dHRpbmcgaXQgaW4g dGhlIGNvbmZpZyBmaWxlcyBpc24ndCBhIGdyZWF0IGlkZWEKIGZyb20gcGdh ZG1pbi5tb2RlbCBpbXBvcnQgU0NIRU1BX1ZFUlNJT04KLWZyb20gdGVzdF91 dGlscyBpbXBvcnQgbG9naW5fdGVzdGVyX2FjY291bnQsIGxvZ291dF90ZXN0 ZXJfYWNjb3VudAorCisjIERlbGF5IHRoZSBpbXBvcnQgdGVzdF91dGlscyBh cyBpdCBuZWVkcyB1cGRhdGVkIGNvbmZpZy5TUUxJVEVfUEFUSAoraW1wb3J0 IHRlc3RfdXRpbHMKIAogY29uZmlnLlNFVFRJTkdTX1NDSEVNQV9WRVJTSU9O ID0gU0NIRU1BX1ZFUlNJT04KIAogIyBPdmVycmlkZSBzb21lIG90aGVyIGRl ZmF1bHRzCiBmcm9tIGxvZ2dpbmcgaW1wb3J0IFdBUk5JTkcKKwogY29uZmln LkNPTlNPTEVfTE9HX0xFVkVMID0gV0FSTklORwogCiAjIENyZWF0ZSB0aGUg YXBwCiBhcHAgPSBjcmVhdGVfYXBwKCkKIGFwcC5jb25maWdbJ1dURl9DU1JG X0VOQUJMRUQnXSA9IEZhbHNlCiB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2Ns aWVudCgpCi0jIExvZ2luIHRoZSB0ZXN0IGNsaWVudAotbG9naW5fdGVzdGVy X2FjY291bnQodGVzdF9jbGllbnQpCiAKIAotZGVmIGdldF9zdWl0ZShhcmd1 bWVudHMsIHRlc3RfYXBwX2NsaWVudCk6CitkZWYgZ2V0X3N1aXRlKGFyZ3Vt ZW50cywgc2VydmVyLCB0ZXN0X2FwcF9jbGllbnQpOgogICAgICIiIgogICAg ICBUaGlzIGZ1bmN0aW9uIGxvYWRzIHRoZSBhbGwgbW9kdWxlcyBpbiB0aGUg dGVzdHMgZGlyZWN0b3J5IGludG8gdGVzdGluZwogICAgICBlbnZpcm9ubWVu dC4KQEAgLTU2LDYgKzg5LDggQEAgZGVmIGdldF9zdWl0ZShhcmd1bWVudHMs IHRlc3RfYXBwX2NsaWVudCk6CiAgICAgOnBhcmFtIGFyZ3VtZW50czogdGhp cyBpcyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciBtb2R1bGUgbmFtZSB0 bwogICAgIHdoaWNoIHRlc3Qgc3VpdGUgd2lsbCBydW4KICAgICA6dHlwZSBh cmd1bWVudHM6IHN0cgorICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRh aWxzCisgICAgOnR5cGUgc2VydmVyOiBkaWN0CiAgICAgOnBhcmFtIHRlc3Rf YXBwX2NsaWVudDogdGVzdCBjbGllbnQKICAgICA6dHlwZSB0ZXN0X2FwcF9j bGllbnQ6IHBnYWRtaW4gYXBwIG9iamVjdAogICAgIDpyZXR1cm4gcGdhZG1p bl9zdWl0ZTogdGVzdCBzdWl0ZSB3aXRoIHRlc3QgY2FzZXMKQEAgLTcxLDE4 ICsxMDYsMjQgQEAgZGVmIGdldF9zdWl0ZShhcmd1bWVudHMsIHRlc3RfYXBw X2NsaWVudCk6CiAgICAgaWYgYXJndW1lbnRzWydwa2cnXSBpcyBOb25lIG9y IGFyZ3VtZW50c1sncGtnJ10gPT0gImFsbCI6CiAgICAgICAgIFRlc3RzR2Vu ZXJhdG9yUmVnaXN0cnkubG9hZF9nZW5lcmF0b3JzKCdwZ2FkbWluJykKICAg ICBlbHNlOgotICAgICAgICBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LmxvYWRf Z2VuZXJhdG9ycygncGdhZG1pbi57fS50ZXN0cycuZm9ybWF0KAotICAgICAg ICAgICAgYXJndW1lbnRzWydwa2cnXSkpCisgICAgICAgIFRlc3RzR2VuZXJh dG9yUmVnaXN0cnkubG9hZF9nZW5lcmF0b3JzKCdwZ2FkbWluLiVzLnRlc3Rz JyAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFyZ3VtZW50c1sncGtnJ10pCisKKyAgICAjIFNvcnQgbW9kdWxl IGxpc3Qgc28gdGhhdCB0ZXN0IHN1aXRlIGV4ZWN1dGVzIHRoZSB0ZXN0IGNh c2VzIHNlcXVlbnRpYWxseQorICAgIG1vZHVsZV9saXN0ID0gVGVzdHNHZW5l cmF0b3JSZWdpc3RyeS5yZWdpc3RyeS5pdGVtcygpCisgICAgbW9kdWxlX2xp c3QgPSBzb3J0ZWQobW9kdWxlX2xpc3QsIGtleT1sYW1iZGEgbW9kdWxlX3R1 cGxlOiBtb2R1bGVfdHVwbGVbMF0pCiAKICAgICAjIEdldCB0aGUgZWFjaCB0 ZXN0IG1vZHVsZSBhbmQgYWRkIGludG8gbGlzdAotICAgIGZvciBrZXksIGts YXNzIGluIFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkucmVnaXN0cnkuaXRlbXMo KToKKyAgICBmb3Iga2V5LCBrbGFzcyBpbiBtb2R1bGVfbGlzdDoKICAgICAg ICAgZ2VuID0ga2xhc3MKICAgICAgICAgbW9kdWxlcy5hcHBlbmQoZ2VuKQog CiAgICAgIyBTZXQgdGhlIHRlc3QgY2xpZW50IHRvIGVhY2ggbW9kdWxlICYg Z2VuZXJhdGUgdGhlIHNjZW5hcmlvcwogICAgIGZvciBtb2R1bGUgaW4gbW9k dWxlczoKICAgICAgICAgb2JqID0gbW9kdWxlKCkKKyAgICAgICAgb2JqLnNl dEFwcChhcHApCiAgICAgICAgIG9iai5zZXRUZXN0Q2xpZW50KHRlc3RfYXBw X2NsaWVudCkKKyAgICAgICAgb2JqLnNldFRlc3RTZXJ2ZXIoc2VydmVyKQog ICAgICAgICBzY2VuYXJpbyA9IGdlbmVyYXRlX3NjZW5hcmlvcyhvYmopCiAg ICAgICAgIHBnYWRtaW5fc3VpdGUuYWRkVGVzdHMoc2NlbmFyaW8pCiAKQEAg LTEwNiw2ICsxNDcsMTAgQEAgZGVmIGFkZF9hcmd1bWVudHMoKToKICAgICBy ZXR1cm4gYXJnCiAKIAorZGVmIHNpZ19oYW5kbGVyKHNpZ25vLCBmcmFtZSk6 CisgICAgdGVzdF91dGlscy5kcm9wX29iamVjdHMoKQorCisKIGNsYXNzIFN0 cmVhbVRvTG9nZ2VyKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs IGxvZ2dlciwgbG9nX2xldmVsPWxvZ2dpbmcuSU5GTyk6CiAgICAgICAgIHNl bGYudGVybWluYWwgPSBzeXMuc3RkZXJyCkBAIC0xMzEsNiArMTc2LDE0IEBA IGNsYXNzIFN0cmVhbVRvTG9nZ2VyKG9iamVjdCk6CiAKIAogaWYgX19uYW1l X18gPT0gJ19fbWFpbl9fJzoKKyAgICAjIFJlZ2lzdGVyIGNsZWFudXAgZnVu Y3Rpb24gdG8gY2xlYW51cCBvbiBleGl0CisgICAgYXRleGl0LnJlZ2lzdGVy KHRlc3RfdXRpbHMuZHJvcF9vYmplY3RzKQorICAgICMgU2V0IHNpZ25hbCBo YW5kbGVyIGZvciBjbGVhbnVwCisgICAgc2lnbmFsLnNpZ25hbChzaWduYWwu U0lHVEVSTSwgc2lnX2hhbmRsZXIpCisgICAgc2lnbmFsLnNpZ25hbChzaWdu YWwuU0lHQUJSVCwgc2lnX2hhbmRsZXIpCisgICAgc2lnbmFsLnNpZ25hbChz aWduYWwuU0lHSU5ULCBzaWdfaGFuZGxlcikKKyAgICBzaWduYWwuc2lnbmFs KHNpZ25hbC5TSUdRVUlULCBzaWdfaGFuZGxlcikKKwogICAgICMgU2V0IGJh c2ljIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmb3IgbG9nIGZpbGUKICAgICBs b2dnaW5nLmJhc2ljQ29uZmlnKGxldmVsPWxvZ2dpbmcuREVCVUcsCiAgICAg ICAgICAgICAgICAgICAgICAgICBmb3JtYXQ9JyUoYXNjdGltZSlzOiUobGV2 ZWxuYW1lKXM6JShuYW1lKXM6JShtZXNzYWdlKXMnCkBAIC0xNDQsMTEgKzE5 NywyNSBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHN5cy5z dGRlcnIgPSBTdHJlYW1Ub0xvZ2dlcihzdGRlcnJfbG9nZ2VyLCBsb2dnaW5n LkVSUk9SKQogCiAgICAgYXJncyA9IHZhcnMoYWRkX2FyZ3VtZW50cygpKQot ICAgIHN1aXRlID0gZ2V0X3N1aXRlKGFyZ3MsIHRlc3RfY2xpZW50KQotICAg IHRlc3RzID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoc3RyZWFtPXN5cy5z dGRlcnIsIGRlc2NyaXB0aW9ucz1UcnVlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIpLnJ1bihzdWl0ZSkKIAot ICAgICMgTG9nb3V0IHRoZSB0ZXN0IGNsaWVudAotICAgIGxvZ291dF90ZXN0 ZXJfYWNjb3VudCh0ZXN0X2NsaWVudCkKKyAgICBzZXJ2ZXJzX2luZm8gPSB0 ZXN0X3V0aWxzLmdldF9jb25maWdfZGF0YSgpCisgICAgdHJ5OgorICAgICAg ICBmb3Igc2VydmVyIGluIHNlcnZlcnNfaW5mbzoKKyAgICAgICAgICAgIHBy aW50KCJcbj09PT09PT09PT09PT1SdW5uaW5nIHRoZSB0ZXN0IGNhc2VzIGZv ciAnJXMnPT09PT09PT09PT09PSIKKyAgICAgICAgICAgICAgICAgICUgc2Vy dmVyWyduYW1lJ10sIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHRl c3RfdXRpbHMuY3JlYXRlX3Rlc3Rfc2VydmVyKHNlcnZlcikKKyAgICAgICAg ICAgICMgTG9naW4gdGhlIHRlc3QgY2xpZW50CisgICAgICAgICAgICB0ZXN0 X3V0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHRlc3RfY2xpZW50KQorCisg ICAgICAgICAgICBzdWl0ZSA9IGdldF9zdWl0ZShhcmdzLCBzZXJ2ZXIsIHRl c3RfY2xpZW50KQorICAgICAgICAgICAgdGVzdHMgPSB1bml0dGVzdC5UZXh0 VGVzdFJ1bm5lcihzdHJlYW09c3lzLnN0ZGVyciwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zPVRy dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHZlcmJvc2l0eT0yKS5ydW4oc3VpdGUpCisgICAgICAgICAgICAjIExv Z291dCB0aGUgdGVzdCBjbGllbnQKKyAgICAgICAgICAgIHRlc3RfdXRpbHMu bG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHRlc3RfY2xpZW50KQorCisgICAgICAg ICAgICB0ZXN0X3V0aWxzLmRlbGV0ZV90ZXN0X3NlcnZlcihzZXJ2ZXIpCisg ICAgZXhjZXB0IFN5c3RlbUV4aXQ6CisgICAgICAgIHRlc3RfdXRpbHMuZHJv cF9vYmplY3RzKCkKIAogICAgIHByaW50KCJQbGVhc2UgY2hlY2sgb3V0cHV0 IGluIGZpbGU6ICVzL3JlZ3Jlc3Npb24ubG9nICIgJSBDVVJSRU5UX1BBVEgp CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi90ZXN0X2FkdmFuY2VkX2Nv bmZpZy5qc29uLmluIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9hZHZhbmNlZF9j b25maWcuanNvbi5pbgppbmRleCBiMzM5YzkyLi4zZjgxNDUxIDEwMDY0NAot LS0gYS93ZWIvcmVncmVzc2lvbi90ZXN0X2FkdmFuY2VkX2NvbmZpZy5qc29u LmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfYWR2YW5jZWRfY29uZmln Lmpzb24uaW4KQEAgLTEsNSArMSw1IEBACiB7Ci0gICJhZGRfZGF0YWJhc2Vf ZGF0YSI6IFsKKyAgImFkZF9kYXRhYmFzZV9kYXRhIjoKICAgIHsKICAgICAi cHJpdmlsZWdlc19hY2wiOiBbCiAgICAgICB7CkBAIC05MywxMyArOTMsMTEg QEAKICAgICAicHJpdmlsZWdlcyI6IFtdLAogICAgICJzZWN1cml0aWVzIjog W10sCiAgICAgInZhcmlhYmxlcyI6IFtdCi0gIH0KLSBdLAotICAiZGJfdXBk YXRlX2RhdGEiOiBbCisgIH0sCisgICJkYl91cGRhdGVfZGF0YSI6CiAgIHsK ICAgICAgICJjb21tZW50IjogIlRoaXMgaXMgZGIgdXBkYXRlIGNvbW1lbnQi Ci0gIH0KLSBdLAorICB9LAogCiAgICJscl9jcmVkZW50aWFscyI6IHsKICAg ICAgICJjYW5fbG9naW4iOiAidHJ1ZSIsCkBAIC00NDUsNyArNDQzLDcgQEAK ICAgewogICAgICJjb21tZW50IjogIlRoaXMgaXMgZXZlbnQgdHJpZ2dlciB1 cGRhdGUgY29tbWVudCIKICAgfSwKLSAgCisKICAgICAic2VxdWVuY2VfY3Jl ZGVudGlhbHMiOgogICBbewogICAgICJjYWNoZSI6ICIxIiwKQEAgLTQ5Miw1 ICs0OTAsMyBAQAogCiAKICB9Ci0KLQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jl c3Npb24vdGVzdF9zZXR1cC5weSBiL3dlYi9yZWdyZXNzaW9uL3Rlc3Rfc2V0 dXAucHkKaW5kZXggYzgwNWIxZS4uNmU4Y2FhZiAxMDA2NDQKLS0tIGEvd2Vi L3JlZ3Jlc3Npb24vdGVzdF9zZXR1cC5weQorKysgYi93ZWIvcmVncmVzc2lv bi90ZXN0X3NldHVwLnB5CkBAIC0xMCwxMyArMTAsOSBAQAogaW1wb3J0IGpz b24KIGltcG9ydCBvcwogCisKIENVUlJFTlRfUEFUSCA9IG9zLnBhdGguZGly bmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKIAotIyB3aXRoIG9w ZW4oQ1VSUkVOVF9QQVRIICsgJy90ZXN0X2NvbmZpZy5qc29uJykgYXMgZGF0 YV9maWxlOgotIyAgICAgY29uZmlnX2RhdGEgPSBqc29uLmxvYWQoZGF0YV9m aWxlKQotIwotIyB3aXRoIG9wZW4oQ1VSUkVOVF9QQVRIICsgJy90ZXN0X2Fk dmFuY2VkX2NvbmZpZy5qc29uJykgYXMgZGF0YV9maWxlOgotIyAgICAgYWR2 YW5jZWRfY29uZmlnX2RhdGEgPSBqc29uLmxvYWQoZGF0YV9maWxlKQogCiB0 cnk6CiAgICAgd2l0aCBvcGVuKENVUlJFTlRfUEFUSCArICcvdGVzdF9jb25m aWcuanNvbicpIGFzIGRhdGFfZmlsZToKQEAgLTMxLDUgKzI3LDMgQEAgdHJ5 OgogZXhjZXB0OgogICAgIHdpdGggb3BlbihDVVJSRU5UX1BBVEggKyAnL3Rl c3RfYWR2YW5jZWRfY29uZmlnLmpzb24uaW4nKSBhcyBkYXRhX2ZpbGU6CiAg ICAgICAgIGFkdmFuY2VkX2NvbmZpZ19kYXRhID0ganNvbi5sb2FkKGRhdGFf ZmlsZSkKLQotcGlja2xlX3BhdGggPSBvcy5wYXRoLmpvaW4oQ1VSUkVOVF9Q QVRILCAncGFyZW50X2lkLnBrbCcpCmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi90ZXN0X3V0aWxzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF91dGls cy5weQppbmRleCBlMDc4ZWFhLi4xYjk2YzlhIDEwMDY0NAotLS0gYS93ZWIv cmVncmVzc2lvbi90ZXN0X3V0aWxzLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9u L3Rlc3RfdXRpbHMucHkKQEAgLTYsODcgKzYsNTIgQEAKICMgVGhpcyBzb2Z0 d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworZnJvbSBfX2Z1dHVyZV9f IGltcG9ydCBwcmludF9mdW5jdGlvbgogCiBpbXBvcnQgb3MKLWltcG9ydCBw aWNrbGUKLWZyb20gdGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEsIHBp Y2tsZV9wYXRoCitpbXBvcnQgc3lzCitpbXBvcnQgcHN5Y29wZzIKK2ltcG9y dCBzcWxpdGUzCitpbXBvcnQgY29uZmlnCiAKK2ltcG9ydCB0ZXN0X3NldHVw CitpbXBvcnQgcmVncmVzc2lvbgogCi1TRVJWRVJfR1JPVVAgPSBjb25maWdf ZGF0YVsnc2VydmVyX2dyb3VwJ10KK1NFUlZFUl9HUk9VUCA9IHRlc3Rfc2V0 dXAuY29uZmlnX2RhdGFbJ3NlcnZlcl9ncm91cCddCiAKIAotZGVmIGdldF9w aWNrbGVfaWRfZGljdCgpOgotICAgICIiIlRoaXMgZnVuY3Rpb24gcmV0dXJu cyB0aGUgZW1wdHkgZGljdCBvZiBzZXJ2ZXIgY29uZmlnIGRhdGEiIiIKK2Rl ZiBnZXRfZGJfY29ubmVjdGlvbihkYiwgdXNlcm5hbWUsIHBhc3N3b3JkLCBo b3N0LCBwb3J0KToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHJldHJ1bnMgdGhl IGNvbm5lY3Rpb24gb2JqZWN0IG9mIHBzeWNvcGciIiIKKyAgICBjb25uZWN0 aW9uID0gcHN5Y29wZzIuY29ubmVjdChkYXRhYmFzZT1kYiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXVzZXJuYW1lLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPXBhc3N3 b3JkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvc3Q9 aG9zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0 PXBvcnQpCisgICAgcmV0dXJuIGNvbm5lY3Rpb24KIAotICAgIHBpY2tsZV9p ZF9kaWN0ID0gewotICAgICAgICAic2lkIjogW10sICAjIHNlcnZlcgotICAg ICAgICAiZGlkIjogW10sICAjIGRhdGFiYXNlCi0gICAgICAgICJscmlkIjog W10sICAjIHJvbGUKLSAgICAgICAgInRzaWQiOiBbXSwgICMgdGFibGVzcGFj ZQotICAgICAgICAic2NpZCI6IFtdLCAgIyBzY2hlbWEKLSAgICAgICAgInRm bmlkIjogW10sICAjIHRyaWdnZXIgZnVuY3Rpb25zCi0gICAgICAgICJjb2lk IjogW10sICAjIGNvbGxhdGlvbgotICAgICAgICAiY2lkIjogW10sICAjIGNh c3RzCi0gICAgICAgICJldGlkIjogW10sICMgZXZlbnRfdHJpZ2dlcgotICAg ICAgICAiZWlkIjogW10sICAjIGV4dGVuc2lvbgotICAgICAgICAiZmlkIjog W10sICAjIEZEVwotICAgICAgICAiZnNpZCI6IFtdLCAgIyBGUlMKLSAgICAg ICAgInVtaWQiOiBbXSwgICMgdXNlcl9tYXBwaW5nCi0gICAgICAgICJzZWlk IjogW10gICMgc2VxdWVuY2UKLSAgICB9Ci0gICAgcmV0dXJuIHBpY2tsZV9p ZF9kaWN0CiAKLQotZGVmIGdldF9pZHModXJsPXBpY2tsZV9wYXRoKToKLSAg ICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHJlYWQgdGhlIHBhcmVudCBub2Rl J3MgaWQgYW5kIHJldHVybiBpdAotCi0gICAgOnBhcmFtIHVybDogZmlsZSBw YXRoIGZyb20gd2hpY2ggaXQgd2lsbCByZWQgdGhlIGlkcwotICAgIDp0eXBl IHVybDogc3RyCi0gICAgOnJldHVybjogbm9kZSBpZHMKLSAgICA6cnR5cGU6 IGRpY3QKLSAgICAiIiIKLQotICAgIG91dHB1dCA9IG9wZW4odXJsLCAncmIn KQotICAgIGlkcyA9IHBpY2tsZS5sb2FkKG91dHB1dCkKLSAgICBvdXRwdXQu Y2xvc2UoKQotICAgIHJldHVybiBpZHMKLQotCi0jIGRlZiB0ZXN0X2dldG5v ZGVzKHRlc3Rlcj1Ob25lKToKLSMgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIg YW5kIGRhdGFiYXNlLgotIwotIyAgICAgaWYgbm90IHRlc3RlcjoKLSMgICAg ICAgICByZXR1cm4gTm9uZQotIwotIyAgICAgYWxsX2lkID0gZ2V0X2lkcygp Ci0jCi0jICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotIyAgICAg ZGJfaWRzX2RpY3QgPSBhbGxfaWRbImRpZCJdWzBdCi0jCi0jICAgICBkYl9j b24gPSBbXQotIyAgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgot IyAgICAgICAgIGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCld Ci0jICAgICAgICAgZGJfY29uLmFwcGVuZCh2ZXJpZnlfZGF0YWJhc2UodGVz dGVyLCBTRVJWRVJfR1JPVVAsIHNlcnZlcl9pZCwgZGJfaWQpKQotIyAgICAg cmV0dXJuIGRiX2NvbgorZGVmIGdldF9ub2RlX2luZm9fZGljdCgpOgorICAg IHJldHVybiByZWdyZXNzaW9uLm5vZGVfaW5mb19kaWN0CiAKIAogZGVmIGxv Z2luX3Rlc3Rlcl9hY2NvdW50KHRlc3Rlcik6CiAgICAgIiIiCi0gICAgVGhp cyBmdW5jdGlvbiBsb2dpbiB0aGUgdGVzdCBhY2NvdW50IHVzaW5nIGNyZWRl bnRpYWxzIG1lbnRpb25lZCBpbgotICAgIGNvbmZpZyBmaWxlCi0KKyAgICBU aGlzIGZ1bmN0aW9uIGxvZ2luIHRoZSB0ZXN0IGNsaWVudCB1c2luZyBlbnYg dmFyaWFibGVzIGVtYWlsIGFuZCBwYXNzd29yZAogICAgIDpwYXJhbSB0ZXN0 ZXI6IHRlc3QgY2xpZW50CiAgICAgOnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0 IGNsaWVudCBvYmplY3QKICAgICA6cmV0dXJuOiBOb25lCiAgICAgIiIiCi0K LSAgICBlbWFpbCA9IFwKLSAgICAgICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40 X2xvZ2luX2NyZWRlbnRpYWxzJ11bJ2xvZ2luX3VzZXJuYW1lJ10KLSAgICBw YXNzd29yZCA9IFwKLSAgICAgICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xv Z2luX2NyZWRlbnRpYWxzJ11bJ2xvZ2luX3Bhc3N3b3JkJ10KLSAgICByZXNw b25zZSA9IHRlc3Rlci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoCi0gICAg ICAgIGVtYWlsPWVtYWlsLCBwYXNzd29yZD1wYXNzd29yZCksIGZvbGxvd19y ZWRpcmVjdHM9VHJ1ZSkKKyAgICBpZiBvcy5lbnZpcm9uWydQR0FETUlOX1NF VFVQX0VNQUlMJ10gYW5kIG9zLmVudmlyb25bCisgICAgICAgICdQR0FETUlO X1NFVFVQX1BBU1NXT1JEJ106CisgICAgICAgIGVtYWlsID0gb3MuZW52aXJv blsnUEdBRE1JTl9TRVRVUF9FTUFJTCddCisgICAgICAgIHBhc3N3b3JkID0g b3MuZW52aXJvblsnUEdBRE1JTl9TRVRVUF9QQVNTV09SRCddCisgICAgICAg IHRlc3Rlci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoZW1haWw9ZW1haWws IHBhc3N3b3JkPXBhc3N3b3JkKSwKKyAgICAgICAgICAgICAgICAgICAgZm9s bG93X3JlZGlyZWN0cz1UcnVlKQorICAgIGVsc2U6CisgICAgICAgIHByaW50 KCJVbmFibGUgdG8gbG9naW4gdGVzdCBjbGllbnQsIGVtYWlsIGFuZCBwYXNz d29yZCBub3QgZm91bmQuIiwKKyAgICAgICAgICAgICAgZmlsZT1zeXMuc3Rk ZXJyKQorICAgICAgICBkcm9wX29iamVjdHMoKQorICAgICAgICBzeXMuZXhp dCgxKQogCiAKIGRlZiBsb2dvdXRfdGVzdGVyX2FjY291bnQodGVzdGVyKToK QEAgLTEwMSw2MyArNjYsMjMxIEBAIGRlZiBsb2dvdXRfdGVzdGVyX2FjY291 bnQodGVzdGVyKToKICAgICByZXNwb25zZSA9IHRlc3Rlci5nZXQoJy9sb2dv dXQnKQogCiAKLSMgQ29uZmlnIGRhdGEgZm9yIHBhcmVudF9pZC5wa2wKIGRl ZiBnZXRfY29uZmlnX2RhdGEoKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0 aW9uIGdldCB0aGUgZGF0YSByZWxhdGVkIHRvIHNlcnZlciBncm91cCBhbmQg ZGF0YWJhc2UKLSAgICBsaWtlIGRiIG5hbWUsIGhvc3QsIHBvcnQgYW5kIHVz ZXJuYW1lIGV0Yy4KLQotICAgIDpyZXR1cm46IHNlcnZlcl9ncm91cCwgZGJf ZGF0YSwgcGlja2xlX2lkX2RpY3QKLSAgICA6cnR5cGU6IHNlcnZlcl9ncm91 cDpkaWN0LCBkYl9kYXRhOmxpc3QsIHBpY2tsZV9pZF9kaWN0OmRpY3QKLSAg ICAiIiIKLQotICAgIGRiX2RhdGEgPSBbXQotICAgIHBpY2tsZV9pZF9kaWN0 ID0gZ2V0X3BpY2tsZV9pZF9kaWN0KCkKLSAgICBzZXJ2ZXJfZ3JvdXAgPSBj b25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KLQotICAgIGZvciBzcnYgaW4g Y29uZmlnX2RhdGFbJ3NlcnZlcl9jcmVkZW50aWFscyddOgorICAgICIiIlRo aXMgZnVuY3Rpb24gcmVhZHMgdGhlIHNlcnZlciBkYXRhIGZyb20gY29uZmln X2RhdGEiIiIKKyAgICBzZXJ2ZXJfZGF0YSA9IFtdCisgICAgZm9yIHNydiBp biB0ZXN0X3NldHVwLmNvbmZpZ19kYXRhWydzZXJ2ZXJfY3JlZGVudGlhbHMn XToKICAgICAgICAgZGF0YSA9IHsibmFtZSI6IHNydlsnbmFtZSddLAogICAg ICAgICAgICAgICAgICJjb21tZW50IjogIiIsCiAgICAgICAgICAgICAgICAg Imhvc3QiOiBzcnZbJ2hvc3QnXSwKICAgICAgICAgICAgICAgICAicG9ydCI6 IHNydlsnZGJfcG9ydCddLAogICAgICAgICAgICAgICAgICJkYiI6IHNydlsn bWFpbnRlbmFuY2VfZGInXSwKICAgICAgICAgICAgICAgICAidXNlcm5hbWUi OiBzcnZbJ2RiX3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgImRiX3Bh c3N3b3JkIjogc3J2WydkYl9wYXNzd29yZCddLAogICAgICAgICAgICAgICAg ICJyb2xlIjogIiIsCi0gICAgICAgICAgICAgICAgInNzbG1vZGUiOiBzcnZb J3NzbG1vZGUnXX0KLSAgICAgICAgZGJfZGF0YS5hcHBlbmQoZGF0YSkKLSAg ICByZXR1cm4gc2VydmVyX2dyb3VwLCBkYl9kYXRhLCBwaWNrbGVfaWRfZGlj dAorICAgICAgICAgICAgICAgICJzc2xtb2RlIjogc3J2Wydzc2xtb2RlJ10s CisgICAgICAgICAgICAgICAgInRhYmxlc3BhY2VfcGF0aCI6IHNydlsndGFi bGVzcGFjZV9wYXRoJ119CisgICAgICAgIHNlcnZlcl9kYXRhLmFwcGVuZChk YXRhKQorICAgIHJldHVybiBzZXJ2ZXJfZGF0YQogCiAKLWRlZiB3cml0ZV9w YXJlbnRfaWQocmVzcG9uc2VfZGF0YSwgcGlja2xlX2lkX2RpY3QpOgorZGVm IHdyaXRlX25vZGVfaW5mbyhub2RlX2lkLCBrZXksIG5vZGVfaW5mbz1Ob25l KToKICAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHdyaXRlcyB0aGUgc2Vy dmVyJ3MgZGV0YWlscyB0byBmaWxlIHBhcmVudF9pZC5wa2wKLQotICAgIDpw YXJhbSByZXNwb25zZV9kYXRhOiBzZXJ2ZXIncyBkYXRhCi0gICAgOnR5cGUg cmVzcG9uc2VfZGF0YTogbGlzdCBvZiBkaWN0aW9uYXJ5Ci0gICAgOnBhcmFt IHBpY2tsZV9pZF9kaWN0OiBjb250YWlucyBpZHMgb2Ygc2VydmVyLGRhdGFi YXNlLHRhYmxlcyBldGMuCi0gICAgOnR5cGUgcGlja2xlX2lkX2RpY3Q6IGRp Y3QKLSAgICA6cmV0dXJuOiBOb25lCisgICAgVGhpcyBmdW5jdGlvbiBhcHBl bmQgdGhlIG5vZGUgZGV0YWlscyB0bworICAgIDpwYXJhbSBub2RlX2lkOiBu b2RlIGlkCisgICAgOnR5cGUgbm9kZV9pZDogaW50CisgICAgOnBhcmFtIGtl eTogZGljdCBrZXkgbmFtZSB0byBzdG9yZSBub2RlIGluZm8KKyAgICA6dHlw ZSBrZXk6IHN0cgorICAgIDpwYXJhbSBub2RlX2luZm86IG5vZGUgZGV0YWls cworICAgIDp0eXBlIG5vZGVfaW5mbzogZGljdAorICAgIDpyZXR1cm46IG5v ZGVfaW5mb19kaWN0CisgICAgOnJ0eXBlOiBkaWN0CiAgICAgIiIiCi0KLSAg ICBzZXJ2ZXJfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCddCi0g ICAgaWYgb3MucGF0aC5pc2ZpbGUocGlja2xlX3BhdGgpOgotICAgICAgICBl eGlzdGVkX3NlcnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdyYicpCi0g ICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gcGlja2xlLmxvYWQoZXhpc3RlZF9z ZXJ2ZXJfaWQpCi0KLSAgICBwaWNrbGVfaWRfZGljdFsic2lkIl0uYXBwZW5k KHN0cihzZXJ2ZXJfaWQpKQotICAgIG91dHB1dCA9IG9wZW4ocGlja2xlX3Bh dGgsICd3YicpCi0gICAgcGlja2xlLmR1bXAocGlja2xlX2lkX2RpY3QsIG91 dHB1dCkKLSAgICBvdXRwdXQuY2xvc2UoKQotCi0KLWRlZiBkZWxldGVfcGFy ZW50X2lkX2ZpbGUoKToKKyAgICBub2RlX2luZm9fZGljdCA9IHJlZ3Jlc3Np b24ubm9kZV9pbmZvX2RpY3QKKyAgICBpZiBub2RlX2luZm9fZGljdDoKKyAg ICAgICAgaWYga2V5IGluIG5vZGVfaW5mb19kaWN0IGFuZCBub2RlX2luZm9f ZGljdFtrZXldOgorICAgICAgICAgICAgbm9kZV9pbmZvX2RpY3Rba2V5XS5h cHBlbmQoe25vZGVfaWQ6IG5vZGVfaW5mb30pCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICBub2RlX2luZm9fZGljdFtrZXldID0gW3tub2RlX2lkOiBu b2RlX2luZm99XQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigibm9kZV9pbmZvX2RpY3QgaXMgbnVsbC4iKQorCisKK2RlZiBjbGVhcl9u b2RlX2luZm9fZGljdCgpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gdXNlZCB0 byBjbGVhcnMgdGhlIG5vZGVfaW5mb19kaWN0IHZhcmlhYmxlIiIiCisgICAg bm9kZV9pbmZvX2RpY3QgPSByZWdyZXNzaW9uLm5vZGVfaW5mb19kaWN0Cisg ICAgZm9yIG5vZGUgaW4gbm9kZV9pbmZvX2RpY3Q6CisgICAgICAgIGRlbCBu b2RlX2luZm9fZGljdFtub2RlXVs6XQorCisKK2RlZiBjcmVhdGVfZGF0YWJh c2Uoc2VydmVyLCBkYl9uYW1lKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHVz ZWQgdG8gY3JlYXRlIGRhdGFiYXNlIGFuZCByZXR1cm5zIHRoZSBkYXRhYmFz ZSBpZCIiIgorICAgIHRyeToKKyAgICAgICAgY29ubmVjdGlvbiA9IGdldF9k Yl9jb25uZWN0aW9uKHNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsn ZGJfcGFzc3dvcmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydwb3J0J10pCisgICAgICAg IG9sZF9pc29sYXRpb25fbGV2ZWwgPSBjb25uZWN0aW9uLmlzb2xhdGlvbl9s ZXZlbAorICAgICAgICBjb25uZWN0aW9uLnNldF9pc29sYXRpb25fbGV2ZWwo MCkKKyAgICAgICAgcGdfY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQor ICAgICAgICBwZ19jdXJzb3IuZXhlY3V0ZSgiQ1JFQVRFIERBVEFCQVNFICVz IiAlIGRiX25hbWUpCisgICAgICAgIGNvbm5lY3Rpb24uc2V0X2lzb2xhdGlv bl9sZXZlbChvbGRfaXNvbGF0aW9uX2xldmVsKQorICAgICAgICBjb25uZWN0 aW9uLmNvbW1pdCgpCisKKyAgICAgICAgIyBHZXQgJ29pZCcgZnJvbSBuZXds eSBjcmVhdGVkIGRhdGFiYXNlCisgICAgICAgIHBnX2N1cnNvci5leGVjdXRl KAorICAgICAgICAgICAgIlNFTEVDVCBkYi5vaWQgZnJvbSBwZ19kYXRhYmFz ZSBkYiBXSEVSRSBkYi5kYXRuYW1lPSclcyciICUKKyAgICAgICAgICAgIGRi X25hbWUpCisgICAgICAgIG9pZCA9IHBnX2N1cnNvci5mZXRjaG9uZSgpCisg ICAgICAgIGRiX2lkID0gJycKKyAgICAgICAgaWYgb2lkOgorICAgICAgICAg ICAgZGJfaWQgPSBvaWRbMF0KKyAgICAgICAgY29ubmVjdGlvbi5jbG9zZSgp CisgICAgICAgIHJldHVybiBkYl9pZAorICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZXhjZXB0aW9uOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oIkVycm9y IHdoaWxlIGNyZWF0aW5nIGRhdGFiYXNlLiAlcyIgJSBleGNlcHRpb24pCisK KworZGVmIGRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgZGJfbmFtZSk6Cisg ICAgIiIiVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGRyb3AgdGhlIGRhdGFiYXNl IiIiCisgICAgdHJ5OgorICAgICAgICBvbGRfaXNvbGF0aW9uX2xldmVsID0g Y29ubmVjdGlvbi5pc29sYXRpb25fbGV2ZWwKKyAgICAgICAgY29ubmVjdGlv bi5zZXRfaXNvbGF0aW9uX2xldmVsKDApCisgICAgICAgIHBnX2N1cnNvciA9 IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICAgICAgcGdfY3Vyc29yLmV4ZWN1 dGUoJycnRFJPUCBEQVRBQkFTRSAiJXMiJycnICUgZGJfbmFtZSkKKyAgICAg ICAgY29ubmVjdGlvbi5zZXRfaXNvbGF0aW9uX2xldmVsKG9sZF9pc29sYXRp b25fbGV2ZWwpCisgICAgICAgIGNvbm5lY3Rpb24uY29tbWl0KCkKKyAgICAg ICAgY29ubmVjdGlvbi5jbG9zZSgpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBleGNlcHRpb246CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXhjZXB0 aW9uIHdoaWxlIGRyb3BwaW5nIHRoZSBkYXRhYmFzZS4gJXMiICUKKyAgICAg ICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbikKKworCitkZWYgY3JlYXRl X3NlcnZlcihzZXJ2ZXIpOgorICAgICIiIlRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBjcmVhdGUgc2VydmVyIiIiCisgICAgdHJ5OgorICAgICAgICBjb25u ID0gc3FsaXRlMy5jb25uZWN0KGNvbmZpZy5TUUxJVEVfUEFUSCkKKyAgICAg ICAgIyBDcmVhdGUgdGhlIHNlcnZlcgorICAgICAgICBjdXIgPSBjb25uLmN1 cnNvcigpCisgICAgICAgIHNlcnZlcl9kZXRhaWxzID0gKDEsIFNFUlZFUl9H Uk9VUCwgc2VydmVyWyduYW1lJ10sIHNlcnZlclsnaG9zdCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJbJ3BvcnQnXSwgc2VydmVyWydk YiddLCBzZXJ2ZXJbJ3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsncm9sZSddLCBzZXJ2ZXJbJ3NzbG1vZGUnXSwgc2Vy dmVyWydjb21tZW50J10pCisgICAgICAgIGN1ci5leGVjdXRlKCdJTlNFUlQg SU5UTyBzZXJ2ZXIgKHVzZXJfaWQsIHNlcnZlcmdyb3VwX2lkLCBuYW1lLCBo b3N0LCAnCisgICAgICAgICAgICAgICAgICAgICdwb3J0LCBtYWludGVuYW5j ZV9kYiwgdXNlcm5hbWUsIHJvbGUsIHNzbF9tb2RlLCcKKyAgICAgICAgICAg ICAgICAgICAgJyBjb21tZW50KSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/ LD8pJywgc2VydmVyX2RldGFpbHMpCisgICAgICAgIHNlcnZlcl9pZCA9IGN1 ci5sYXN0cm93aWQKKyAgICAgICAgY29ubi5jb21taXQoKQorICAgICAgICBy ZXR1cm4gc2VydmVyX2lkCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGNl cHRpb246CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiRXJyb3Igd2hpbGUg Y3JlYXRpbmcgc2VydmVyLiAlcyIgJSBleGNlcHRpb24pCisKKworZGVmIGRl bGV0ZV9zZXJ2ZXIoc2lkKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHVzZWQg dG8gZGVsZXRlIHNlcnZlciBmcm9tIFNRTGl0ZSIiIgorICAgIHRyeToKKyAg ICAgICAgY29ubiA9IHNxbGl0ZTMuY29ubmVjdChjb25maWcuU1FMSVRFX1BB VEgpCisgICAgICAgIGN1ciA9IGNvbm4uY3Vyc29yKCkKKyAgICAgICAgc2Vy dmVycyA9IGN1ci5leGVjdXRlKCdTRUxFQ1QgKiBGUk9NIHNlcnZlciBXSEVS RSBpZD0lcycgJSBzaWQpCisgICAgICAgIHNlcnZlcnNfY291bnQgPSBsZW4o c2VydmVycy5mZXRjaGFsbCgpKQorICAgICAgICBpZiBzZXJ2ZXJzX2NvdW50 OgorICAgICAgICAgICAgY3VyLmV4ZWN1dGUoJ0RFTEVURSBGUk9NIHNlcnZl ciBXSEVSRSBpZD0lcycgJSBzaWQpCisgICAgICAgICAgICBjb25uLmNvbW1p dCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgiTm8gc2Vy dmVycyBmb3VuZCB0byBkZWxldGUuIiwgZmlsZT1zeXMuc3RkZXJyKQorICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgorICAgICAgICByYWlzZSBFeGNl cHRpb24oIkVycm9yIHdoaWxlIGRlbGV0aW5nIHNlcnZlciAlcyIgJSBlcnIp CisKKworZGVmIGNyZWF0ZV90ZXN0X3NlcnZlcihzZXJ2ZXIpOgogICAgICIi IgotICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgZmlsZSBwYXJlbnRf aWQucGtsIHdoaWNoIGNvbnRhaW5zIHNlcnZlciBhbmQKLSAgICBkYXRhYmFz ZSBkZXRhaWxzCi0KKyAgICBUaGlzIGZ1bmN0aW9uIGNyZWF0ZSB0aGUgdGVz dCBzZXJ2ZXIgd2hpY2ggd2lsbCBhY3QgYXMgcGFyZW50IHNlcnZlciwKKyAg ICB0aGUgb3RoZXIgbm9kZSB3aWxsIGFkZCB1bmRlciB0aGlzIHNlcnZlcgor ICAgIDpwYXJhbSBzZXJ2ZXI6IHNlcnZlciBkZXRhaWxzCisgICAgOnR5cGUg c2VydmVyOiBkaWN0CiAgICAgOnJldHVybjogTm9uZQogICAgICIiIgotCi0g ICAgaWYgb3MucGF0aC5pc2ZpbGUocGlja2xlX3BhdGgpOgotICAgICAgICBv cy5yZW1vdmUocGlja2xlX3BhdGgpCi0KKyAgICAjIENyZWF0ZSB0aGUgc2Vy dmVyCisgICAgc2VydmVyX2lkID0gY3JlYXRlX3NlcnZlcihzZXJ2ZXIpCisK KyAgICAjIENyZWF0ZSB0ZXN0IGRhdGFiYXNlCisgICAgdGVzdF9kYl9uYW1l ID0gInRlc3RfZGIiCisgICAgZGJfaWQgPSBjcmVhdGVfZGF0YWJhc2Uoc2Vy dmVyLCB0ZXN0X2RiX25hbWUpCisKKyAgICAjIEFkZCBzZXJ2ZXIgaW5mbyB0 byB0ZXN0X3NlcnZlcl9kaWN0CisgICAgcmVncmVzc2lvbi50ZXN0X3NlcnZl cl9kaWN0WyJzZXJ2ZXIiXS5hcHBlbmQoeyJzZXJ2ZXJfaWQiOiBzZXJ2ZXJf aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJzZXJ2ZXIiOiBzZXJ2ZXJ9KQorICAgIHJlZ3Jlc3Npb24u dGVzdF9zZXJ2ZXJfZGljdFsiZGF0YWJhc2UiXS5hcHBlbmQoeyJzZXJ2ZXJf aWQiOiBzZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImRiX2lkIjogZGJfaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgImRiX25hbWUiOiB0ZXN0X2RiX25hbWV9KQorCisKK2RlZiBkZWxldGVf dGVzdF9zZXJ2ZXIoc2VydmVyKToKKyAgICB0ZXN0X3NlcnZlcl9kaWN0ID0g cmVncmVzc2lvbi50ZXN0X3NlcnZlcl9kaWN0CisgICAgaWYgdGVzdF9zZXJ2 ZXJfZGljdDoKKyAgICAgICAgY29ubmVjdGlvbiA9IGdldF9kYl9jb25uZWN0 aW9uKHNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnZGJfcGFzc3dv cmQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyWydwb3J0J10pCisgICAgICAgIGRiX25hbWUg PSB0ZXN0X3NlcnZlcl9kaWN0WyJkYXRhYmFzZSJdWzBdWyJkYl9uYW1lIl0K KyAgICAgICAgZHJvcF9kYXRhYmFzZShjb25uZWN0aW9uLCBkYl9uYW1lKQor ICAgICAgICAjIERlbGV0ZSB0aGUgc2VydmVyCisgICAgICAgIHNlcnZlcl9p ZCA9IHRlc3Rfc2VydmVyX2RpY3RbJ3NlcnZlciddWzBdWyJzZXJ2ZXJfaWQi XQorICAgICAgICBjb25uID0gc3FsaXRlMy5jb25uZWN0KGNvbmZpZy5TUUxJ VEVfUEFUSCkKKyAgICAgICAgY3VyID0gY29ubi5jdXJzb3IoKQorICAgICAg ICBzZXJ2ZXJzID0gY3VyLmV4ZWN1dGUoJ1NFTEVDVCAqIEZST00gc2VydmVy IFdIRVJFIGlkPSVzJyAlIHNlcnZlcl9pZCkKKyAgICAgICAgc2VydmVyc19j b3VudCA9IGxlbihzZXJ2ZXJzLmZldGNoYWxsKCkpCisgICAgICAgIGlmIHNl cnZlcnNfY291bnQ6CisgICAgICAgICAgICBjdXIuZXhlY3V0ZSgnREVMRVRF IEZST00gc2VydmVyIFdIRVJFIGlkPSVzJyAlIHNlcnZlcl9pZCkKKyAgICAg ICAgICAgIGNvbm4uY29tbWl0KCkKKyAgICAgICAgICAgIGNvbm4uY2xvc2Uo KQorICAgICAgICAgICAgc2VydmVyX2RpY3QgPSByZWdyZXNzaW9uLnRlc3Rf c2VydmVyX2RpY3RbInNlcnZlciJdCisKKyAgICAgICAgICAgICMgUG9wIHRo ZSBzZXJ2ZXIgZnJvbSBkaWN0IGlmIGl0J3MgZGVsZXRlZAorICAgICAgICAg ICAgc2VydmVyX2RpY3QgPSBbc2VydmVyX2RpY3QucG9wKHNlcnZlcl9kaWN0 LmluZGV4KGl0ZW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y IGl0ZW0gaW4gc2VydmVyX2RpY3QKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIGlmIHN0cihzZXJ2ZXJfaWQpID09IHN0cihpdGVtWyJzZXJ2ZXJfaWQi XSldCisKKyAgICAgICAgICAgICMgUG9wIHRoZSBkYiBmcm9tIGRpY3QgaWYg aXQncyBkZWxldGVkCisgICAgICAgICAgICBkYl9kaWN0ID0gcmVncmVzc2lv bi50ZXN0X3NlcnZlcl9kaWN0WyJkYXRhYmFzZSJdCisgICAgICAgICAgICBk Yl9kaWN0ID0gW2RiX2RpY3QucG9wKGRiX2RpY3QuaW5kZXgoaXRlbSkpIGZv ciBpdGVtIGluIGRiX2RpY3QKKyAgICAgICAgICAgICAgICAgICAgICAgaWYg c2VydmVyX2lkID09IGl0ZW1bInNlcnZlcl9pZCJdXQorCisKK2RlZiBkcm9w X29iamVjdHMoKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHVzZSB0byBjbGVh bnVwIHRoZSBjcmVhdGVkIHRoZSBvYmplY3RzKHNlcnZlcnMsIGRhdGFiYXNl cywKKyAgICAgc2NoZW1hcyBldGMpIGR1cmluZyB0aGUgdGVzdCBzdWl0ZSBy dW4iIiIKKworICAgICMgQ2xlYW51cCBpbiBub2RlX2luZm9fZGljdAorICAg IHNlcnZlcnNfaW5mbyA9IHJlZ3Jlc3Npb24ubm9kZV9pbmZvX2RpY3RbJ3Np ZCddCisgICAgaWYgc2VydmVyc19pbmZvOgorICAgICAgICBmb3Igc2VydmVy IGluIHNlcnZlcnNfaW5mbzoKKyAgICAgICAgICAgIHNlcnZlcl9pZCA9IHNl cnZlci5rZXlzKClbMF0KKyAgICAgICAgICAgIHNlcnZlciA9IHNlcnZlci52 YWx1ZXMoKVswXQorICAgICAgICAgICAgaWYgcmVncmVzc2lvbi5ub2RlX2lu Zm9fZGljdFsnZGlkJ106CisgICAgICAgICAgICAgICAgZGJfY29ubiA9IGdl dF9kYl9jb25uZWN0aW9uKHNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyWyd1c2VybmFt ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsnaG9zdCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZXJ2ZXJbJ3BvcnQnXSkKKyAgICAgICAgICAgICAgICBkYl9kaWN0ID0gcmVn cmVzc2lvbi5ub2RlX2luZm9fZGljdFsnZGlkJ11bMF0KKyAgICAgICAgICAg ICAgICBpZiBpbnQoc2VydmVyX2lkKSBpbiBkYl9kaWN0OgorICAgICAgICAg ICAgICAgICAgICBkYl9uYW1lID0gZGJfZGljdFtpbnQoc2VydmVyX2lkKV1b ImRiX25hbWUiXQorICAgICAgICAgICAgICAgICAgICBkcm9wX2RhdGFiYXNl KGRiX2Nvbm4sIGRiX25hbWUpCisgICAgICAgICAgICBkZWxldGVfc2VydmVy KHNlcnZlcl9pZCkKKworICAgICMgQ2xlYW51cCBpbiB0ZXN0X3NlcnZlcl9k aWN0CisgICAgc2VydmVycyA9IHJlZ3Jlc3Npb24udGVzdF9zZXJ2ZXJfZGlj dFsic2VydmVyIl0KKyAgICBpZiBzZXJ2ZXJzOgorICAgICAgICBmb3Igc2Vy dmVyIGluIHNlcnZlcnM6CisgICAgICAgICAgICBzZXJ2ZXJfaWQgPSBzZXJ2 ZXJbInNlcnZlcl9pZCJdCisgICAgICAgICAgICBzZXJ2ZXIgPSBzZXJ2ZXJb InNlcnZlciJdCisgICAgICAgICAgICBpZiByZWdyZXNzaW9uLnRlc3Rfc2Vy dmVyX2RpY3RbImRhdGFiYXNlIl06CisgICAgICAgICAgICAgICAgZGJfaW5m byA9IHJlZ3Jlc3Npb24udGVzdF9zZXJ2ZXJfZGljdFsiZGF0YWJhc2UiXQor ICAgICAgICAgICAgICAgIGRiX2RpY3QgPSBbaXRlbSBmb3IgaXRlbSBpbiBk Yl9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZXJ2ZXJf aWQgPT0gaXRlbVsic2VydmVyX2lkIl1dCisgICAgICAgICAgICAgICAgaWYg ZGJfZGljdDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIGRiIGluIGRiX2Rp Y3Q6CisgICAgICAgICAgICAgICAgICAgICAgICBkYl9uYW1lID0gZGJbImRi X25hbWUiXQorICAgICAgICAgICAgICAgICAgICAgICAgZGJfY29ubiA9IGdl dF9kYl9jb25uZWN0aW9uKHNlcnZlclsnZGInXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJb J3VzZXJuYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VydmVyWydkYl9wYXNzd29yZCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlclsncG9ydCdd KQorICAgICAgICAgICAgICAgICAgICAgICAgZHJvcF9kYXRhYmFzZShkYl9j b25uLCBkYl9uYW1lKQorICAgICAgICAgICAgZGVsZXRlX3NlcnZlcihzZXJ2 ZXJfaWQpCisKKyAgICAjIFJlbW92ZSB0aGUgdGVzdCBTUUxpdGUgZGF0YWJh c2UKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShjb25maWcuU1FMSVRFX1BBVEgp OgorICAgICAgICBvcy5yZW1vdmUoY29uZmlnLlNRTElURV9QQVRIKQpkaWZm IC0tZ2l0IGEvd2ViL3NldHVwLnB5IGIvd2ViL3NldHVwLnB5Cm9sZCBtb2Rl IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggYjIyNmQ5NC4uMWFiZTM2 NwotLS0gYS93ZWIvc2V0dXAucHkKKysrIGIvd2ViL3NldHVwLnB5CkBAIC0y OSw2ICsyOSw3IEBAIGltcG9ydCBjb25maWcKICMgR2V0IHRoZSBjb25maWcg ZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb24uIFdlIHN0b3JlIHRoaXMgaW4gcGdh ZG1pbi5tb2RlbAogIyBhcyBpdCB0dXJucyBvdXQgdGhhdCBwdXR0aW5nIGl0 IGluIHRoZSBjb25maWcgZmlsZXMgaXNuJ3QgYSBncmVhdCBpZGVhCiBmcm9t IHBnYWRtaW4ubW9kZWwgaW1wb3J0IFNDSEVNQV9WRVJTSU9OCisKIGNvbmZp Zy5TRVRUSU5HU19TQ0hFTUFfVkVSU0lPTiA9IFNDSEVNQV9WRVJTSU9OCiAK ICMgSWYgc2NyaXB0IGlzIHJ1bm5pbmcgdW5kZXIgcHl0aG9uMiB0aGVuIGNo YW5nZSB0aGUgYmVoYXZpb3VyIG9mIGZ1bmN0aW9ucwpAQCAtNTAsMzAgKzUx LDQwIEBAIGRlZiBkb19zZXR1cChhcHApOgogICAgIGVsc2U6CiAgICAgICAg IHByaW50KCJOT1RFOiBDb25maWd1cmluZyBhdXRoZW50aWNhdGlvbiBmb3Ig U0VSVkVSIG1vZGUuXG4iKQogCi0gICAgICAgICMgUHJvbXB0IHRoZSB1c2Vy IGZvciB0aGVpciBkZWZhdWx0IHVzZXJuYW1lIGFuZCBwYXNzd29yZC4KLSAg ICAgICAgcHJpbnQoIiIiCi1FbnRlciB0aGUgZW1haWwgYWRkcmVzcyBhbmQg cGFzc3dvcmQgdG8gdXNlIGZvciB0aGUgaW5pdGlhbCBwZ0FkbWluIHVzZXIg XAotYWNjb3VudDpcbiIiIikKLSAgICAgICAgZW1haWxfZmlsdGVyID0gcmUu Y29tcGlsZSgKLSAgICAgICAgICAgICJeW2EtekEtWjAtOS4hIyQlJicqK1wv PT9eX2B7fH1+LV0rQFthLXpBLVowLTldIgotICAgICAgICAgICAgIig/Olth LXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcLlthLXpBLVowLTld IgotICAgICAgICAgICAgIig/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVow LTldKT8pKiQiKQotCi0gICAgICAgIGVtYWlsID0gaW5wdXQoIkVtYWlsIGFk ZHJlc3M6ICIpCi0gICAgICAgIHdoaWxlIGVtYWlsID09ICcnIG9yIG5vdCBl bWFpbF9maWx0ZXIubWF0Y2goZW1haWwpOgotICAgICAgICAgICAgcHJpbnQo J0ludmFsaWQgZW1haWwgYWRkcmVzcy4gUGxlYXNlIHRyeSBhZ2Fpbi4nKQor ICAgICAgICBpZiBhbGwodmFsdWUgaW4gb3MuZW52aXJvbiBmb3IgdmFsdWUg aW4KKyAgICAgICAgICAgICAgIFsnUEdBRE1JTl9TRVRVUF9FTUFJTCcsICdQ R0FETUlOX1NFVFVQX1BBU1NXT1JEJ10pOgorICAgICAgICAgICAgZW1haWwg PSAnJworICAgICAgICAgICAgcDEgPSAnJworICAgICAgICAgICAgaWYgb3Mu ZW52aXJvblsnUEdBRE1JTl9TRVRVUF9FTUFJTCddIGFuZCBvcy5lbnZpcm9u WworICAgICAgICAgICAgICAgICdQR0FETUlOX1NFVFVQX1BBU1NXT1JEJ106 CisgICAgICAgICAgICAgICAgZW1haWwgPSBvcy5lbnZpcm9uWydQR0FETUlO X1NFVFVQX0VNQUlMJ10KKyAgICAgICAgICAgICAgICBwMSA9IG9zLmVudmly b25bJ1BHQURNSU5fU0VUVVBfUEFTU1dPUkQnXQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgIyBQcm9tcHQgdGhlIHVzZXIgZm9yIHRoZWlyIGRlZmF1 bHQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkLgorICAgICAgICAgICAgcHJpbnQo IiIiCisgICAgRW50ZXIgdGhlIGVtYWlsIGFkZHJlc3MgYW5kIHBhc3N3b3Jk IHRvIHVzZSBmb3IgdGhlIGluaXRpYWwgcGdBZG1pbiB1c2VyIFwKKyAgICBh Y2NvdW50OlxuIiIiKQorICAgICAgICAgICAgZW1haWxfZmlsdGVyID0gcmUu Y29tcGlsZSgKKyAgICAgICAgICAgICAgICAiXlthLXpBLVowLTkuISMkJSYn KitcLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSIKKyAgICAgICAgICAgICAg ICAiKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2Et ekEtWjAtOV0iCisgICAgICAgICAgICAgICAgIig/OlthLXpBLVowLTktXXsw LDYxfVthLXpBLVowLTldKT8pKiQiKQorCiAgICAgICAgICAgICBlbWFpbCA9 IGlucHV0KCJFbWFpbCBhZGRyZXNzOiAiKQorICAgICAgICAgICAgd2hpbGUg ZW1haWwgPT0gJycgb3Igbm90IGVtYWlsX2ZpbHRlci5tYXRjaChlbWFpbCk6 CisgICAgICAgICAgICAgICAgcHJpbnQoJ0ludmFsaWQgZW1haWwgYWRkcmVz cy4gUGxlYXNlIHRyeSBhZ2Fpbi4nKQorICAgICAgICAgICAgICAgIGVtYWls ID0gaW5wdXQoIkVtYWlsIGFkZHJlc3M6ICIpCiAKLSAgICAgICAgZGVmIHBw cm9tcHQoKToKLSAgICAgICAgICAgIHJldHVybiBnZXRwYXNzLmdldHBhc3Mo KSwgZ2V0cGFzcy5nZXRwYXNzKCdSZXR5cGUgcGFzc3dvcmQ6JykKKyAgICAg ICAgICAgIGRlZiBwcHJvbXB0KCk6CisgICAgICAgICAgICAgICAgcmV0dXJu IGdldHBhc3MuZ2V0cGFzcygpLCBnZXRwYXNzLmdldHBhc3MoJ1JldHlwZSBw YXNzd29yZDonKQogCi0gICAgICAgIHAxLCBwMiA9IHBwcm9tcHQoKQotICAg ICAgICB3aGlsZSBwMSAhPSBwMiBvciBsZW4ocDEpIDwgNjoKLSAgICAgICAg ICAgIGlmIHAxICE9IHAyOgotICAgICAgICAgICAgICAgIHByaW50KCdQYXNz d29yZHMgZG8gbm90IG1hdGNoLiBQbGVhc2UgdHJ5IGFnYWluLicpCi0gICAg ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50KCdQYXNzd29y ZCBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycy4gUGxlYXNlIHRyeSBh Z2Fpbi4nKQogICAgICAgICAgICAgcDEsIHAyID0gcHByb21wdCgpCisgICAg ICAgICAgICB3aGlsZSBwMSAhPSBwMiBvciBsZW4ocDEpIDwgNjoKKyAgICAg ICAgICAgICAgICBpZiBwMSAhPSBwMjoKKyAgICAgICAgICAgICAgICAgICAg cHJpbnQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2guIFBsZWFzZSB0cnkgYWdh aW4uJykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg ICAgICBwcmludCgKKyAgICAgICAgICAgICAgICAgICAgJ1Bhc3N3b3JkIG11 c3QgYmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzLiBQbGVhc2UgdHJ5IGFnYWlu LicpCisgICAgICAgICAgICAgICAgcDEsIHAyID0gcHByb21wdCgpCiAKICAg ICAjIFNldHVwIEZsYXNrLVNlY3VyaXR5CiAgICAgdXNlcl9kYXRhc3RvcmUg PSBTUUxBbGNoZW15VXNlckRhdGFzdG9yZShkYiwgVXNlciwgUm9sZSkKQEAg LTkxLDcgKzEwMiw2IEBAIGFjY291bnQ6XG4iIiIpCiAgICAgICAgICAgICBu YW1lPSdVc2VyJywKICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSdwZ0FkbWlu IFVzZXIgUm9sZScKICAgICAgICAgKQotCiAgICAgICAgIHVzZXJfZGF0YXN0 b3JlLmNyZWF0ZV91c2VyKGVtYWlsPWVtYWlsLCBwYXNzd29yZD1wYXNzd29y ZCkKICAgICAgICAgZGIuc2Vzc2lvbi5mbHVzaCgpCiAgICAgICAgIHVzZXJf ZGF0YXN0b3JlLmFkZF9yb2xlX3RvX3VzZXIoZW1haWwsICdBZG1pbmlzdHJh dG9yJykKQEAgLTMzOCw2ICszNDgsMTAgQEAgQUxURVIgVEFCTEUgU0VSVkVS CiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGFwcCA9IEZsYXNr KF9fbmFtZV9fKQogICAgIGFwcC5jb25maWcuZnJvbV9vYmplY3QoY29uZmln KQorCisgICAgaWYgY29uZmlnLlRFU1RJTkdfTU9ERToKKyAgICAgICAgY29u ZmlnLlNRTElURV9QQVRIID0gY29uZmlnLlRFU1RfU1FMSVRFX1BBVEgKKwog ICAgIGFwcC5jb25maWdbJ1NRTEFMQ0hFTVlfREFUQUJBU0VfVVJJJ10gPSBc CiAgICAgICAgICdzcWxpdGU6Ly8vJyArIGNvbmZpZy5TUUxJVEVfUEFUSC5y ZXBsYWNlKCdcXCcsICcvJykKICAgICBkYi5pbml0X2FwcChhcHApCkBAIC0z NDYsOSArMzYwLDEwIEBAIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAg ICAgcHJpbnQoIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09XG4iKQogCiAgICAgbG9jYWxfY29uZmlnID0gb3MucGF0aC5qb2luKAot ICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2Zp bGVfXykpLAorICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJu YW1lKF9fZmlsZV9fKSksCiAgICAgICAgICdjb25maWdfbG9jYWwucHknCiAg ICAgKQorCiAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGxvY2FsX2NvbmZp Zyk6CiAgICAgICAgIHByaW50KCIiIgogIFRoZSBjb25maWd1cmF0aW9uIGZp bGUgLSB7MH0gZG9lcyBub3QgZXhpc3QuCg== --001a114c8150e9057a053c781b1c Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a114c8150e9057a053c781b1c--