Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bX3D3-0001Xi-0W for pgadmin-hackers@arkaria.postgresql.org; Tue, 09 Aug 2016 09:20:29 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bX3D2-0003H3-Ey for pgadmin-hackers@arkaria.postgresql.org; Tue, 09 Aug 2016 09:20:28 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bX3Cf-0002yY-Hf for pgadmin-hackers@postgresql.org; Tue, 09 Aug 2016 09:20:05 +0000 Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bX3Ca-0001Ry-2V for pgadmin-hackers@postgresql.org; Tue, 09 Aug 2016 09:20:04 +0000 Received: by mail-qk0-x230.google.com with SMTP id x185so6806994qkc.2 for ; Tue, 09 Aug 2016 02:19:59 -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=M7kwPPbtMjn9WWYgKkyOaq4HuXDZJkAomj1VIglOAN0=; b=fa8nHWJGFqKIkG+hv5lZaUeSn2wwd8rXn/hBcIbJyrKXnBuXIcsQs27ne2KTmkOxwP 9JZ14l9x6m/PdjB5np2MPzAtX7eUEWbVzde/k66AGykOZ5czuUEhrFeegm9VOqjh+fZm e0YfywmcvWh337IPdP+5gszGsLcLJFd+1eXltKGCW6soguLmK3MwWxk8/Csgfvr4XEcI 2MBA2hZRe/Rr8gcUnSoO76yVONZiJjPOZmUIajNzmxQTWFUQiXY80NaPI+dpV3ohot/v ft8IhpL/BtSfIDyzpeY6qgQ6HDN2eYHIhiwcRJh4I5n9Um/NmdLdSRDMUFXs4D4YjqqR suuw== 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=M7kwPPbtMjn9WWYgKkyOaq4HuXDZJkAomj1VIglOAN0=; b=Y0U+pO2GGWfib30RqHQVDod9Ca+ZMzLqynrruMrovspwIRt1lalGCSttfrvGt4m/m6 yjCYN5Z64Txy5ZUpe5tern79EKOMoq1yrTmjfr0pDWwMuYbRk2ObLbolnyKLGm9pJKqN ydqsUWSdrLHd8GHt7dIqVhKr0PDiCCS2yT7VjTRIF8RPKfKx8c8HNZGl/aeqOszVtcGb 463LIvFlwZhzqVSago9+l7371kdOVdWYTfnxm83+1QbP4rX8KU91pABMXGUrUHFqTFl4 Yd/khDv5VtJK6Vt9EbA5LE1rMv8XCc1xMxX+gn5wRTSou4N+BGmtYqPQQYmIZyugLirL hj9w== X-Gm-Message-State: AEkoouvEFwqGdfa4X2Mu5cpzvUL1//ph5zTZJHXoj714yrrolhPiQoUsa/uF+oJyCWTpBXq5KV+0d1XgvocgGst9 X-Received: by 10.55.122.65 with SMTP id v62mr33825809qkc.120.1470734398083; Tue, 09 Aug 2016 02:19:58 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.41.90 with HTTP; Tue, 9 Aug 2016 02:19:56 -0700 (PDT) In-Reply-To: References: From: Navnath Gadakh Date: Tue, 9 Aug 2016 14:49:56 +0530 Message-ID: Subject: Re: pgAdmin IV : Unittest modular patch To: Dave Page Cc: pgadmin-hackers , Kanchan Mohitey Content-Type: multipart/mixed; boundary=94eb2c05e0ec5b9a010539a00992 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 --94eb2c05e0ec5b9a010539a00992 Content-Type: multipart/alternative; boundary=94eb2c05e0ec5b99fb0539a00990 --94eb2c05e0ec5b99fb0539a00990 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Dave, On Mon, Aug 8, 2016 at 9:15 PM, Dave Page wrote: > Hi > > I guess you need to test if tablespace_path is omitted, not just empty? > Yes, thats right.. Please find the updated patch. > > This function test the add tablespace scenario (Check Tablespace Node) ... > ERROR > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: setUpClass > (pgadmin.browser.server_groups.servers.tablespaces.tests. > test_tbspc_put.TableSpaceUpdateTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/test_tbspc_put.py", > line 48, in setUpClass > cls.server_group, cls.server_ids) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 122, in add_table_space > data =3D get_tablespace_data(server_connect) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 41, in get_tablespace_data > config_test_data['spc_location'] =3D server_config['tablespace_path'] > KeyError: 'tablespace_path' > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: setUpClass > (pgadmin.browser.server_groups.servers.tablespaces.tests. > test_tbspc_delete.TableSpaceDeleteTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/test_tbspc_delete.py", > line 46, in setUpClass > cls.server_group, cls.server_ids) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 122, in add_table_space > data =3D get_tablespace_data(server_connect) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 41, in get_tablespace_data > config_test_data['spc_location'] =3D server_config['tablespace_path'] > KeyError: 'tablespace_path' > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: setUpClass > (pgadmin.browser.server_groups.servers.tablespaces.tests. > test_tbspc_get.TablespaceGetTestCase) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/test_tbspc_get.py", > line 45, in setUpClass > cls.server_group, cls.server_ids) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 122, in add_table_space > data =3D get_tablespace_data(server_connect) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 41, in get_tablespace_data > config_test_data['spc_location'] =3D server_config['tablespace_path'] > KeyError: 'tablespace_path' > > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > ERROR: runTest (pgadmin.browser.server_groups.servers.tablespaces.tests. > test_tbspc_add.TableSpaceAddTestCase) > This function test the add tablespace scenario (Check Tablespace Node) > ---------------------------------------------------------------------- > Traceback (most recent call last): > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/test_tbspc_add.py", > line 47, in runTest > self.server_ids) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 122, in add_table_space > data =3D get_tablespace_data(server_connect) > File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups > /servers/tablespaces/tests/utils.py", > line 41, in get_tablespace_data > config_test_data['spc_location'] =3D server_config['tablespace_path'] > KeyError: 'tablespace_path' > > ---------------------------------------------------------------------- > Ran 14 tests in 9.326s > > FAILED (errors=3D4) > > On Mon, Aug 8, 2016 at 3:07 PM, Navnath Gadakh > wrote: > > Hi Dave, > > Please find the updated patch for API unit test cases for Roles and > > Tablespaces nodes > > As we finalized > > Now, > > 1. The user will specify the tablespace path in test_config.json.in > > 2. If tablespace path not found, skip the test cases for that > > server(Only tablespace test cases) > > 3. Add the skipped test summary in the test result. (Now it's > showing on > > console + in log file, but need to update in a final enhanced test > summary > > report. Which is research point we will work on that after finishing all > > nodes API test cases) > > 4. Removed the test_ prefix from the values in the config files. > > > > Thanks! > > > > > > On Thu, Aug 4, 2016 at 5:55 PM, Dave Page > > wrote: > >> > >> On Thu, Aug 4, 2016 at 1:02 PM, Navnath Gadakh > >> wrote: > >> > Hi Dave, > >> > > >> > On Thu, Aug 4, 2016 at 4:04 PM, Dave Page > > >> > wrote: > >> >> > >> >> Hi > >> >> > >> >> On Thu, Aug 4, 2016 at 10:27 AM, Navnath Gadakh > >> >> wrote: > >> >> > >> >> >> Oh - does the per-server config override the main config? That's > >> >> >> useful. So anything that's in test_advanced_config.py can be > >> >> >> overridden on a per-server basis in test_config.py? > >> >> > > >> >> > No. > >> >> > per-server i.e advance config(test_advanced_config.json.in) > and > >> >> > main > >> >> > config(test_config.json) both are different files. In main config > we > >> >> > just > >> >> > mention the server=E2=80=99s credentials.(We can also mention per= server > >> >> > credentails) and in test_advanced_config.json.in(here we say > >> >> > per-server > >> >> > config) > >> >> > we mention the advanced configurations i.e. test data for each > node. > >> >> > >> >> OK. > >> >> > >> >> > So, let's summarize the discussion: > >> >> > - Let user specify the tablespace path in > >> >> > test_advanced_config.json.in > >> >> > >> >> No - test_config.py. It should be per-server. > >> > > >> > We don't have a file named 'test_config.py' but we have a > server's > >> > credential file named 'test_config.json'. > >> > So, you are saying the tablespace path to be added in > >> > 'test_config.json'. > >> > Am I correct? > >> > >> Yeah, sorry. It should be a property of the server configuration. > >> > >> > >> -- > >> 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 > > > > > > > > -- > Dave Page > VP, Chief Architect, Tools & Installers > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > --=20 Thanks, Navnath Gadakh Software Engineer EnterpriseDB Corporation Mobile: +91 9975389878 --94eb2c05e0ec5b99fb0539a00990 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Dave,

On Mon, Aug 8, 2016 at 9:15 PM, Dave Page <dave.page@ente= rprisedb.com> wrote:
Hi

I guess you need to test if tablespace_path is omitted, not just empty?
=
=C2=A0 =C2=A0 Yes, thats right.. Please find the updated = patch.=C2=A0

This function test the add tablespace scenario (Check Tablespace Node) ... = ERROR

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: setUpClass
(pgadmin.browser.server_groups.servers.tablespaces.tests.test_tbs= pc_put.TableSpaceUpdateTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser= /server_groups/servers/tablespaces/tests/test_tbspc_put.py",=
line 48, in setUpClass
=C2=A0 =C2=A0 cls.server_group, cls.server_ids)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 122, in add_table_space
=C2=A0 =C2=A0 data =3D get_tablespace_data(server_connect)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 41, in get_tablespace_data
=C2=A0 =C2=A0 config_test_data['spc_location'] =3D server_conf= ig['tablespace_path']
KeyError: 'tablespace_path'

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: setUpClass
(pgadmin.browser.server_groups.servers.tablespaces.tests.test_tbs= pc_delete.TableSpaceDeleteTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser= /server_groups/servers/tablespaces/tests/test_tbspc_delete.py&quo= t;,
line 46, in setUpClass
=C2=A0 =C2=A0 cls.server_group, cls.server_ids)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 122, in add_table_space
=C2=A0 =C2=A0 data =3D get_tablespace_data(server_connect)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 41, in get_tablespace_data
=C2=A0 =C2=A0 config_test_data['spc_location'] =3D server_conf= ig['tablespace_path']
KeyError: 'tablespace_path'

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: setUpClass
(pgadmin.browser.server_groups.servers.tablespaces.tests.test_tbs= pc_get.TablespaceGetTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser= /server_groups/servers/tablespaces/tests/test_tbspc_get.py",=
line 45, in setUpClass
=C2=A0 =C2=A0 cls.server_group, cls.server_ids)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 122, in add_table_space
=C2=A0 =C2=A0 data =3D get_tablespace_data(server_connect)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 41, in get_tablespace_data
=C2=A0 =C2=A0 config_test_data['spc_location'] =3D server_conf= ig['tablespace_path']
KeyError: 'tablespace_path'

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
ERROR: runTest (pgadmin.browser.server_groups.servers.tablespaces.test= s.test_tbspc_add.TableSpaceAddTestCase)
This function test the add tablespace scenario (Check Tablespace Node)
----------------------------------------------------------------------
Traceback (most recent call last):
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser= /server_groups/servers/tablespaces/tests/test_tbspc_add.py",=
line 47, in runTest
=C2=A0 =C2=A0 self.server_ids)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 122, in add_table_space
=C2=A0 =C2=A0 data =3D get_tablespace_data(server_connect)
=C2=A0 File "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server= _groups/servers/tablespaces/tests/utils.py",
line 41, in get_tablespace_data
=C2=A0 =C2=A0 config_test_data['spc_location'] =3D server_conf= ig['tablespace_path']
KeyError: 'tablespace_path'

-----------------------------------------------------------------= -----
Ran 14 tests in 9.326s

FAILED (errors=3D4)

On Mon, Aug 8, 2016 at 3:07 PM, Navnath Gadakh
<navnath.gadakh@enterprisedb.com> wrote:
> Hi Dave,
>=C2=A0 =C2=A0 =C2=A0Please find the updated patch for API unit test cas= es for Roles and
> Tablespaces nodes
> As we finalized
> Now,
>=C2=A0 =C2=A0 1. The user will specify the tablespace path in test_c= onfig.json.in
>=C2=A0 =C2=A0 2.=C2=A0 If tablespace path not found, skip the test case= s for that
> server(Only tablespace test cases)
>=C2=A0 =C2=A0 3.=C2=A0 Add the skipped test summary in the test result.= (Now it's showing on
> console + in log file, but need to update in a final enhanced test sum= mary
> report. Which is research point we will work on that after finishing a= ll
> nodes API test cases)
>=C2=A0 =C2=A0 4.=C2=A0 Removed the test_ prefix from the values in the = config files.
>
> Thanks!
>
>
> On Thu, Aug 4, 2016 at 5:55 PM, Dave Page <dave.page@enterprisedb.com><= br> > wrote:
>>
>> On Thu, Aug 4, 2016 at 1:02 PM, Navnath Gadakh
>> <navnath.gadakh@enterprisedb.com> wrote:
>> > Hi Dave,
>> >
>> > On Thu, Aug 4, 2016 at 4:04 PM, Dave Page <dave.page@enterprisedb.com= >
>> > wrote:
>> >>
>> >> Hi
>> >>
>> >> On Thu, Aug 4, 2016 at 10:27 AM, Navnath Gadakh
>> >> <navnath.gadakh@enterprisedb.com> wrote:
>> >>
>> >> >> Oh - does the per-server config override the mai= n config? That's
>> >> >> useful. So anything that's in test_advanced_= config.py can be
>> >> >> overridden on a per-server basis in test_config.= py?
>> >> >
>> >> >=C2=A0 =C2=A0 =C2=A0No.
>> >> >=C2=A0 =C2=A0 =C2=A0per-server i.e advance config(test_advanced_config.json.in) and
>> >> > main
>> >> > config(test_config.json) both are different files. I= n main config we
>> >> > just
>> >> > mention the server=E2=80=99s credentials.(We can als= o mention per server
>> >> > credentails) and in test_advanced_config.j= son.in(here we say
>> >> > per-server
>> >> > config)
>> >> > we mention the advanced configurations i.e. test dat= a for each node.
>> >>
>> >> OK.
>> >>
>> >> >=C2=A0 =C2=A0 =C2=A0So, let's summarize the discu= ssion:
>> >> >=C2=A0 =C2=A0 =C2=A0- Let user specify the tablespace= path in
>> >> > test_advanced_config.json.in
>> >>
>> >> No - test_config.py. It should be per-server.
>> >
>> >=C2=A0 =C2=A0 =C2=A0 We don't have a file named 'test_= config.py' but we have a server's
>> > credential file named 'test_config.json'.
>> >=C2=A0 =C2=A0 =C2=A0 So, you are saying the tablespace path to= be added in
>> > 'test_config.json'.
>> >=C2=A0 =C2=A0 =C2=A0 Am I correct?
>>
>> Yeah, sorry. It should be a property of the server configuration.<= br> >>
>>
>> --
>> 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
>
>



--
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
Enter= priseDB Corporation
Mobile: +91 9975389878=C2=A0


--94eb2c05e0ec5b99fb0539a00990-- --94eb2c05e0ec5b9a010539a00992 Content-Type: application/octet-stream; name="pgadmin_unittest_roles_tablespaces.patch" Content-Disposition: attachment; filename="pgadmin_unittest_roles_tablespaces.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_irn99jk10 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX2FkZC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy90ZXN0cy90ZXN0X2RiX2FkZC5weQppbmRleCA4NWRjYzZjLi40OTBl N2Q5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9hZGQucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfYWRkLnB5CkBAIC03LDEwICs3 LDExIEBACiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pbXBvcnQg anNvbgogCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91 cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxz Citmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFiYXNlX3V0aWxzCiAKIAog Y2xhc3MgRGF0YWJhc2VBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CkBAIC0yNCw3ICsyNSw4IEBAIGNsYXNzIERhdGFiYXNlQWRkVGVzdENhc2Uo QmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAoJ0NoZWNrIERhdGFiYXNl cyBOb2RlIFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9kYXRhYmFzZS9vYmov JykpCiAgICAgXQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgorICAgIEBjbGFz c21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgICIi IgogICAgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gYWRkIHRoZSBzZXZl cgogCkBAIC0zMiwyNyArMzQsMjMgQEAgY2xhc3MgRGF0YWJhc2VBZGRUZXN0 Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICIiIgogCiAgICAg ICAgICMgQWRkIHRoZSBzZXJ2ZXIKLSAgICAgICAgdXRpbHMuYWRkX3NlcnZl cihzZWxmLnRlc3RlcikKKyAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2 ZXIoY2xzLnRlc3RlcikKKworICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVy CisgICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNl cnZlcl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCisgICAgICAgICAgICBz ZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKKworICAg ICAgICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAw OgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykg Y29ubmVjdGVkIHRvIGFkZCB0aGUgZGF0YWJhc2UhISEiKQogCiAgICAgZGVm IHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgYWRkIGRhdGFiYXNlIHVuZGVyIDFzdCBzZXJ2ZXIgb2YgdHJlZSBub2Rl LiAiIiIKIAotICAgICAgICBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgc2Vy dmVyX2dyb3VwLCBzZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgdXRpbHMu Y29ubmVjdF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCi0KLSAgICAgICAgZm9yIHNl cnZlcl9jb25uZWN0LCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZlcl9jb25uZWN0 X3Jlc3BvbnNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2lkcyk6Ci0gICAgICAgICAgICBpZiBzZXJ2 ZXJfY29ubmVjdFsnZGF0YSddWydjb25uZWN0ZWQnXToKLSAgICAgICAgICAg ICAgICBkYXRhID0gdXRpbHMuZ2V0X2RiX2RhdGEoc2VydmVyX2Nvbm5lY3Qp Ci0gICAgICAgICAgICAgICAgZGJfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5w b3N0KHNlbGYudXJsICsgc3RyKHNlcnZlcl9ncm91cCkgKwotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBz ZXJ2ZXJfaWQgKyAiLyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29udGVudF90eXBlPSdodG1sL2pzb24nKQotICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0VHJ1ZShkYl9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQot ICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKGRi X3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgICAgICAgICAg ICAgIHV0aWxzLndyaXRlX2RiX3BhcmVudF9pZChyZXNwb25zZV9kYXRhKQor ICAgICAgICBkYXRhYmFzZV91dGlscy5hZGRfZGF0YWJhc2Uoc2VsZi50ZXN0 ZXIsIHNlbGYuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZHMpCiAK LSAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgQGNsYXNzbWV0aG9kCisg ICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgIiIiCiAgICAg ICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgZGF0YWJhc2Us IGFkZGVkIHNlcnZlciBhbmQgdGhlCiAgICAgICAgICdwYXJlbnRfaWQucGts JyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKQpAQCAtNjAsNiAr NTgsNiBAQCBjbGFzcyBEYXRhYmFzZUFkZFRlc3RDYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKICAgICAgICAgOnJldHVybjogTm9uZQogICAgICAgICAiIiIK IAotICAgICAgICB1dGlscy5kZWxldGVfZGF0YWJhc2Uoc2VsZi50ZXN0ZXIp Ci0gICAgICAgIHV0aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisg ICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9kYXRhYmFzZShjbHMudGVz dGVyKQorICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMu dGVzdGVyKQogICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUo KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZGVsZXRlLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZGVsZXRlLnB5CmluZGV4IDY4MzBi NWEuLjc1NmE2ODkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0X2Ri X2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9kZWxldGUu cHkKQEAgLTcsMTIgKzcsMTAgQEAKICMKICMgIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAKLWltcG9ydCBqc29uCi0KIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBp bXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSByZWdyZXNzaW9uLnRl c3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhCi1mcm9tIHJlZ3Jlc3Npb24u dGVzdF91dGlscyBpbXBvcnQgZ2V0X2lkcworZnJvbSBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBh cyBzZXJ2ZXJfdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMgZGF0YWJh c2VfdXRpbHMKIAogCiBjbGFzcyBEYXRhYmFzZURlbGV0ZVRlc3RDYXNlKEJh c2VUZXN0R2VuZXJhdG9yKToKQEAgLTIzLDQzICsyMSwzOCBAQCBjbGFzcyBE YXRhYmFzZURlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAg ICAgICAgKCdDaGVjayBEYXRhYmFzZXMgTm9kZSBVUkwnLCBkaWN0KHVybD0n L2Jyb3dzZXIvZGF0YWJhc2Uvb2JqLycpKQogICAgIF0KIAotICAgIGRlZiBz ZXRVcChzZWxmKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBD bGFzcyhjbHMpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlv biBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwogICAgICAgICAgMS4gQWRkIHRo ZSB0ZXN0IHNlcnZlcgogICAgICAgICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIK KyAgICAgICAgIDMuIEFkZCB0aGUgZGF0YWJhc2VzCiAKICAgICAgICAgOnJl dHVybjogTm9uZQogICAgICAgICAiIiIKIAogICAgICAgICAjIEZpcnN0bHks IGFkZCB0aGUgc2VydmVyCi0gICAgICAgIHV0aWxzLmFkZF9zZXJ2ZXIoc2Vs Zi50ZXN0ZXIpCi0gICAgICAgICMgU2Vjb25kbHksIGNvbm5lY3QgdG8gc2Vy dmVyL2RhdGFiYXNlCi0gICAgICAgIHV0aWxzLmNvbm5lY3Rfc2VydmVyKHNl bGYudGVzdGVyKQorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihj bHMudGVzdGVyKQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAg ICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZGVsZXRlIHRoZSBkYXRhYmFzZS4i IiIKKyAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgorICAgICAgICBjbHMu c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNs cy5zZXJ2ZXJfaWRzID0gXAorICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNv bm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCiAKLSAgICAgICAgc3J2X2dycCA9 IGNvbmZpZ19kYXRhWyd0ZXN0X3NlcnZlcl9ncm91cCddCi0gICAgICAgIGFs bF9pZCA9IGdldF9pZHMoKQotICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lk WyJzaWQiXQotICAgICAgICBkYl9pZHNfZGljdCA9IGFsbF9pZFsiZGlkIl1b MF0KKyAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25z ZSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2Vy dmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIGRhdGFiYXNlISEhIikKIAot ICAgICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAg ICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAg ICAgICAgICAgZGJfY29uID0gdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNlbGYu dGVzdGVyLCBzcnZfZ3JwLCBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJfaWQpCi0gICAgICAgICAg ICBpZiBsZW4oZGJfY29uKSA9PSAwOgotICAgICAgICAgICAgICAgIHJhaXNl IEV4Y2VwdGlvbigiTm8gZGF0YWJhc2UocykgdG8gZGVsZXRlIGZvciBzZXJ2 ZXIgaWQgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg c2VydmVyX2lkKQotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rl ci5kZWxldGUoc2VsZi51cmwgKyBzdHIoc3J2X2dycCkgKyAnLycgKwotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNl cnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQorICAgICAgICAjIEFkZCBkYXRhYmFzZQorICAgICAgICBkYXRhYmFz ZV91dGlscy5hZGRfZGF0YWJhc2UoY2xzLnRlc3RlciwgY2xzLnNlcnZlcl9j b25uZWN0X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2xzLnNlcnZlcl9pZHMpCisKKyAgICBkZWYgcnVuVGVzdChz ZWxmKToKKyAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBkZWxldGUg dGhlIGRhdGFiYXNlLiIiIgogCi0gICAgICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkK LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZV9kYXRhWydz dWNjZXNzJ10sIDEpCisgICAgICAgIGRhdGFiYXNlX3V0aWxzLmRlbGV0ZV9k YXRhYmFzZShzZWxmLnRlc3RlcikKIAotICAgIGRlZiB0ZWFyRG93bihzZWxm KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhj bHMpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiBkZWxl dGVzIHRoZSBhZGRlZCBzZXJ2ZXIgYW5kIHRoZSAncGFyZW50X2lkLnBrbCcg ZmlsZQogICAgICAgICB3aGljaCBpcyBjcmVhdGVkIGluIHNldHVwKCkgZnVu Y3Rpb24uCkBAIC02Nyw1ICs2MCw1IEBAIGNsYXNzIERhdGFiYXNlRGVsZXRl VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICA6cmV0dXJu OiBOb25lCiAgICAgICAgICIiIgogCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9z ZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAgIHNlcnZlcl91dGlscy5kZWxl dGVfc2VydmVyKGNscy50ZXN0ZXIpCiAgICAgICAgIHV0aWxzLmRlbGV0ZV9w YXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVz dF9kYl9nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9nZXQucHkKaW5k ZXggNzM1MGY3Mi4uNzM5ZGZmOCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3Rz L3Rlc3RfZGJfZ2V0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX2dl dC5weQpAQCAtMTEsNiArMTEsOCBAQCBmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIGZyb20gcmVncmVzc2lvbi50 ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQogZnJvbSByZWdyZXNzaW9u LnRlc3RfdXRpbHMgaW1wb3J0IGdldF9pZHMKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgc2VydmVyX3V0aWxzCitmcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFi YXNlX3V0aWxzCiAKIAogY2xhc3MgRGF0YWJhc2VzR2V0VGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgpAQCAtMjAsMjIgKzIyLDMzIEBAIGNsYXNzIERh dGFiYXNlc0dldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKIAogICAg IHNjZW5hcmlvcyA9IFsKICAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVS TCBmb3IgZGF0YWJhc2Ugbm9kZS4KLSAgICAgICAgKCdDaGVjayBEYXRhYmFz ZXMgTm9kZSBVUkwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvZGF0YWJhc2Uvb2Jq LycpKQorICAgICAgICAoJ0NoZWNrIERhdCBhYmFzZXMgTm9kZSBVUkwnLCBk aWN0KHVybD0nL2Jyb3dzZXIvZGF0YWJhc2Uvb2JqLycpKQogICAgIF0KIAot ICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBk ZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICAiIiIKICAgICAgICAgVGhp cyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwogICAgICAgICAg MS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgogICAgICAgICAgMi4gQ29ubmVjdCB0 byBzZXJ2ZXIKKyAgICAgICAgIDMuIEFkZCB0aGUgZGF0YWJhc2VzCiAKICAg ICAgICAgOnJldHVybjogTm9uZQogICAgICAgICAiIiIKIAogICAgICAgICAj IEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCi0gICAgICAgIHV0aWxzLmFkZF9z ZXJ2ZXIoc2VsZi50ZXN0ZXIpCi0gICAgICAgICMgU2Vjb25kbHksIGNvbm5l Y3QgdG8gc2VydmVyL2RhdGFiYXNlCi0gICAgICAgIHV0aWxzLmNvbm5lY3Rf c2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRk X3NlcnZlcihjbHMudGVzdGVyKQorCisgICAgICAgICMgQ29ubmVjdCB0byBz ZXJ2ZXIKKyAgICAgICAgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBj bHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcyA9IFwKKyAgICAgICAg ICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQor CisgICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2Up ID09IDA6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZl cihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRhYmFzZSEhISIpCisKKyAg ICAgICAgIyBBZGQgZGF0YWJhc2UKKyAgICAgICAgZGF0YWJhc2VfdXRpbHMu YWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5zZXJ2ZXJfY29ubmVjdF9y ZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfaWRzKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAg ICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYWRkZWQgZGF0 YWJhc2UuICIiIgpAQCAtNDQsMTkgKzU3LDIxIEBAIGNsYXNzIERhdGFiYXNl c0dldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KIAogICAgICAgICBkYl9pZHNfZGlj dCA9IGFsbF9pZFsiZGlkIl1bMF0KLSAgICAgICAgc3J2X2dycCA9IGNvbmZp Z19kYXRhWyd0ZXN0X3NlcnZlcl9ncm91cCddCisgICAgICAgIHNydl9ncnAg PSBjb25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KIAogICAgICAgICBmb3Ig c2VydmVyX2lkIGluIHNlcnZlcl9pZHM6CiAgICAgICAgICAgICBkYl9pZCA9 IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAgICAgICAgICAgZGJf Y29uID0gdXRpbHMudmVyaWZ5X2RhdGFiYXNlKHNlbGYudGVzdGVyLCBzcnZf Z3JwLCBzZXJ2ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGJfaWQpCisgICAgICAgICAgICBkYl9jb24gPSBk YXRhYmFzZV91dGlscy52ZXJpZnlfZGF0YWJhc2Uoc2VsZi50ZXN0ZXIsIHNy dl9ncnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyX2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiX2lkKQogICAg ICAgICAgICAgaWYgZGJfY29uWyJpbmZvIl0gPT0gIkRhdGFiYXNlIGNvbm5l Y3RlZC4iOgogICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIuZ2V0KAogICAgICAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cihz cnZfZ3JwKSArICcvJyArIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsKICAgICAg ICAgICAgICAgICAgICAgc3RyKGRiX2lkKSwgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3Bv bnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBkZWYgdGVhckRvd24oc2Vs Zik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3Mo Y2xzKToKICAgICAgICAgIiIiCiAgICAgICAgIFRoaXMgZnVuY3Rpb24gZGVs ZXRlcyB0aGUgYWRkZWQgZGF0YWJhc2UsIGFkZGVkIHNlcnZlcgogICAgICAg ICBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0 ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KQEAgLTY0LDYgKzc5LDYgQEAgY2xh c3MgRGF0YWJhc2VzR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgog ICAgICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAgICIiIgogCi0gICAgICAg IHV0aWxzLmRlbGV0ZV9kYXRhYmFzZShzZWxmLnRlc3RlcikKLSAgICAgICAg dXRpbHMuZGVsZXRlX3NlcnZlcihzZWxmLnRlc3RlcikKKyAgICAgICAgZGF0 YWJhc2VfdXRpbHMuZGVsZXRlX2RhdGFiYXNlKGNscy50ZXN0ZXIpCisgICAg ICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCiAg ICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9wdXQucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVz dHMvdGVzdF9kYl9wdXQucHkKaW5kZXggNDYxNWQzNC4uYzMyZTNjYSAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfcHV0LnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy90ZXN0cy90ZXN0X2RiX3B1dC5weQpAQCAtMTEsOCArMTEsMTAgQEAg aW1wb3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1 cCBpbXBvcnQgY29uZmlnX2RhdGEsIGFkdmFuY2VkX2NvbmZpZ19kYXRhCitm cm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgYWR2YW5jZWRfY29u ZmlnX2RhdGEKIGZyb20gcmVncmVzc2lvbi50ZXN0X3V0aWxzIGltcG9ydCBn ZXRfaWRzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNl cnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscworZnJv bSAuIGltcG9ydCB1dGlscyBhcyBkYXRhYmFzZV91dGlscwogCiAKIGNsYXNz IERhdGFiYXNlc1VwZGF0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK QEAgLTI1LDQ0ICsyNyw1OCBAQCBjbGFzcyBEYXRhYmFzZXNVcGRhdGVUZXN0 Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICgnQ2hlY2sgRGF0 YWJhc2VzIE5vZGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvZGF0YWJhc2Uvb2Jq LycpKQogICAgIF0KIAotICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICBAY2xh c3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICAi IiIKICAgICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0 YXNrcwogICAgICAgICAgMS4gQWRkIHRoZSB0ZXN0IHNlcnZlcgogICAgICAg ICAgMi4gQ29ubmVjdCB0byBzZXJ2ZXIKKyAgICAgICAgIDMuIEFkZCB0aGUg ZGF0YWJhc2VzCiAKICAgICAgICAgOnJldHVybjogTm9uZQogICAgICAgICAi IiIKIAogICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCi0gICAg ICAgIHV0aWxzLmFkZF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCi0gICAgICAgICMg U2Vjb25kbHksIGNvbm5lY3QgdG8gc2VydmVyL2RhdGFiYXNlCi0gICAgICAg IHV0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICBz ZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQorCisgICAgICAg ICMgQ29ubmVjdCB0byBzZXJ2ZXIKKyAgICAgICAgY2xzLnNlcnZlcl9jb25u ZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lk cyA9IFwKKyAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0X3NlcnZl cihjbHMudGVzdGVyKQorCisgICAgICAgIGlmIGxlbihjbHMuc2VydmVyX2Nv bm5lY3RfcmVzcG9uc2UpID09IDA6CisgICAgICAgICAgICByYWlzZSBFeGNl cHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRkIHRoZSBkYXRh YmFzZSEhISIpCisKKyAgICAgICAgIyBBZGQgZGF0YWJhc2UKKyAgICAgICAg ZGF0YWJhc2VfdXRpbHMuYWRkX2RhdGFiYXNlKGNscy50ZXN0ZXIsIGNscy5z ZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfaWRzKQogCiAgICAgZGVmIHJ1 blRlc3Qoc2VsZik6CiAgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwg dXBkYXRlIHRoZSBjb21tZW50cyBmaWVsZCBvZiBkYXRhYmFzZS4iIiIKIAot ICAgICAgICBzcnZfZ3JwID0gY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX2dy b3VwJ10KICAgICAgICAgYWxsX2lkID0gZ2V0X2lkcygpCiAgICAgICAgIHNl cnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCiAgICAgICAgIGRiX2lkc19kaWN0 ID0gYWxsX2lkWyJkaWQiXVswXQogCiAgICAgICAgIGZvciBzZXJ2ZXJfaWQg aW4gc2VydmVyX2lkczoKICAgICAgICAgICAgIGRiX2lkID0gZGJfaWRzX2Rp Y3RbaW50KHNlcnZlcl9pZCldCi0gICAgICAgICAgICBkYl9jb24gPSB1dGls cy52ZXJpZnlfZGF0YWJhc2Uoc2VsZi50ZXN0ZXIsIHNydl9ncnAsIHNlcnZl cl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYl9pZCkKKyAgICAgICAgICAgIGRiX2NvbiA9IGRhdGFiYXNlX3V0 aWxzLnZlcmlmeV9kYXRhYmFzZShzZWxmLnRlc3RlciwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGls cy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRi X2lkKQogICAgICAgICAgICAgaWYgZGJfY29uWyJpbmZvIl0gPT0gIkRhdGFi YXNlIGNvbm5lY3RlZC4iOgogICAgICAgICAgICAgICAgIGRhdGEgPSB7Ci0g ICAgICAgICAgICAgICAgICAgICJjb21tZW50cyI6IGFkdmFuY2VkX2NvbmZp Z19kYXRhWyJ0ZXN0X2RiX3VwZGF0ZV9kYXRhIl1bMF0KLSAgICAgICAgICAg ICAgICAgICAgWyJ0ZXN0X2NvbW1lbnQiXSwKKyAgICAgICAgICAgICAgICAg ICAgImNvbW1lbnRzIjogYWR2YW5jZWRfY29uZmlnX2RhdGFbImRiX3VwZGF0 ZV9kYXRhIl1bMF0KKyAgICAgICAgICAgICAgICAgICAgWyJjb21tZW50Il0s CiAgICAgICAgICAgICAgICAgICAgICJpZCI6IGRiX2lkCiAgICAgICAgICAg ICAgICAgfQogICAgICAgICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYu dGVzdGVyLnB1dCgKLSAgICAgICAgICAgICAgICAgICAgc2VsZi51cmwgKyBz dHIoc3J2X2dycCkgKyAnLycgKyBzdHIoc2VydmVyX2lkKSArICcvJyArCisg ICAgICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHV0aWxzLlNFUlZF Ul9HUk9VUCkgKyAnLycgKyBzdHIoCisgICAgICAgICAgICAgICAgICAgICAg ICBzZXJ2ZXJfaWQpICsgJy8nICsKICAgICAgICAgICAgICAgICAgICAgc3Ry KGRiX2lkKSwgZGF0YT1qc29uLmR1bXBzKGRhdGEpLCBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo cHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKLSAgICBkZWYgdGVh ckRvd24oc2VsZik6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJE b3duQ2xhc3Moc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1 bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNlcnZlciBhbmQgJ3BhcmVudF9p ZC5wa2wnIGZpbGUKICAgICAgICAgd2hpY2ggaXMgY3JlYXRlZCBpbiBzZXR1 cCgpIGZ1bmN0aW9uLgpAQCAtNzAsNSArODYsNiBAQCBjbGFzcyBEYXRhYmFz ZXNVcGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg IDpyZXR1cm46IE5vbmUKICAgICAgICAgIiIiCiAKLSAgICAgICAgdXRpbHMu ZGVsZXRlX3NlcnZlcihzZWxmLnRlc3RlcikKKyAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGVsZXRlX2RhdGFiYXNlKHNlbGYudGVzdGVyKQorICAgICAgICBz ZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihzZWxmLnRlc3RlcikKICAgICAg ICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy91dGlscy5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ZmYWY0 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3V0aWxzLnB5CkBA IC0wLDAgKzEsMTc2IEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjCisjICNwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisj ICNDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjICNUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IGpzb24KK2ltcG9ydCBvcwor aW1wb3J0IHBpY2tsZQoraW1wb3J0IHV1aWQKKworZnJvbSByZWdyZXNzaW9u LnRlc3Rfc2V0dXAgaW1wb3J0IHBpY2tsZV9wYXRoLCBjb25maWdfZGF0YSwg YWR2YW5jZWRfY29uZmlnX2RhdGEKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNl cnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgc2Vy dmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMg YXMgdXRpbHMKKworCitEQVRBQkFTRV9VUkwgPSAnL2Jyb3dzZXIvZGF0YWJh c2Uvb2JqLycKK0RBVEFCQVNFX0NPTk5FQ1RfVVJMID0gJ2Jyb3dzZXIvZGF0 YWJhc2UvY29ubmVjdC8nCisKKworZGVmIGdldF9kYl9kYXRhKHNlcnZlcl9j b25uZWN0X2RhdGEpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBnZXQgYWR2YW5jZSBjb25maWcgdGVzdCBkYXRhIGZvciBhcHBy b3ByaWF0ZQorICAgIHNlcnZlcgorCisgICAgOnBhcmFtIHNlcnZlcl9jb25u ZWN0X2RhdGE6IGxpc3Qgb2Ygc2VydmVyIGRldGFpbHMKKyAgICA6cmV0dXJu IGRhdGE6IGRhdGFiYXNlIGRldGFpbHMKKyAgICA6cnR5cGU6IGRpY3QKKyAg ICAiIiIKKworICAgIGFkdl9jb25maWdfZGF0YSA9IE5vbmUKKyAgICBkYXRh ID0gTm9uZQorICAgIGRiX3VzZXIgPSBzZXJ2ZXJfY29ubmVjdF9kYXRhWydk YXRhJ11bJ3VzZXInXVsnbmFtZSddCisKKyAgICAjIEdldCB0aGUgY29uZmln IGRhdGEgb2YgYXBwcm9wcmlhdGUgZGIgdXNlcgorICAgIGZvciBjb25maWdf dGVzdF9kYXRhIGluIGFkdmFuY2VkX2NvbmZpZ19kYXRhWydhZGRfZGF0YWJh c2VfZGF0YSddOgorICAgICAgICBpZiBkYl91c2VyID09IGNvbmZpZ190ZXN0 X2RhdGFbJ293bmVyJ106CisgICAgICAgICAgICBhZHZfY29uZmlnX2RhdGEg PSBjb25maWdfdGVzdF9kYXRhCisKKyAgICBpZiBhZHZfY29uZmlnX2RhdGEg aXMgbm90IE5vbmU6CisgICAgICAgIGRhdGEgPSB7CisgICAgICAgICAgICAi ZGF0YWNsIjogYWR2X2NvbmZpZ19kYXRhWydwcml2aWxlZ2VzX2FjbCddLAor ICAgICAgICAgICAgImRhdGNvbm5saW1pdCI6IGFkdl9jb25maWdfZGF0YVsn Y29ubl9saW1pdCddLAorICAgICAgICAgICAgImRhdG93bmVyIjogYWR2X2Nv bmZpZ19kYXRhWydvd25lciddLAorICAgICAgICAgICAgImRlZmZ1bmNhY2wi OiBhZHZfY29uZmlnX2RhdGFbJ2Z1bl9hY2wnXSwKKyAgICAgICAgICAgICJk ZWZzZXFhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ3NlcV9hY2wnXSwKKyAgICAg ICAgICAgICJkZWZ0YmxhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ3RibF9hY2wn XSwKKyAgICAgICAgICAgICJkZWZ0eXBlYWNsIjogYWR2X2NvbmZpZ19kYXRh Wyd0eXBlX2FjbCddLAorICAgICAgICAgICAgImVuY29kaW5nIjogYWR2X2Nv bmZpZ19kYXRhWydlbmNvZGluZyddLAorICAgICAgICAgICAgIm5hbWUiOiBz dHIodXVpZC51dWlkNCgpKVsxOjhdLAorICAgICAgICAgICAgInByaXZpbGVn ZXMiOiBhZHZfY29uZmlnX2RhdGFbJ3ByaXZpbGVnZXMnXSwKKyAgICAgICAg ICAgICJzZWN1cml0aWVzIjogYWR2X2NvbmZpZ19kYXRhWydzZWN1cml0aWVz J10sCisgICAgICAgICAgICAidmFyaWFibGVzIjogYWR2X2NvbmZpZ19kYXRh Wyd2YXJpYWJsZXMnXQorICAgICAgICB9CisgICAgcmV0dXJuIGRhdGEKKwor CitkZWYgd3JpdGVfZGJfaWQocmVzcG9uc2VfZGF0YSk6CisgICAgIiIiCisg ICAgVGhpcyBmdW5jdGlvbiB3cml0ZXMgdGhlIHNlcnZlciBhbmQgZGF0YWJh c2UgcmVsYXRlZCBkYXRhIGxpa2Ugc2VydmVyCisgICAgbmFtZSwgc2VydmVy IGlkICwgZGF0YWJhc2UgbmFtZSwgZGF0YWJhc2UgaWQgZXRjLgorCisgICAg OnBhcmFtIHJlc3BvbnNlX2RhdGE6IHNlcnZlciBhbmQgZGF0YWJhc2VzIGRl dGFpbHMKKyAgICA6dHlwZSByZXNwb25zZV9kYXRhOiBkaWN0CisgICAgOnJl dHVybjogTm9uZQorICAgICIiIgorCisgICAgZGJfaWQgPSByZXNwb25zZV9k YXRhWydub2RlJ11bJ19pZCddCisgICAgc2VydmVyX2lkID0gcmVzcG9uc2Vf ZGF0YVsnbm9kZSddWydfcGlkJ10KKyAgICBwaWNrbGVfaWRfZGljdCA9IHV0 aWxzLmdldF9waWNrbGVfaWRfZGljdCgpCisgICAgaWYgb3MucGF0aC5pc2Zp bGUocGlja2xlX3BhdGgpOgorICAgICAgICBleGlzdGluZ19zZXJ2ZXJfaWQg PSBvcGVuKHBpY2tsZV9wYXRoLCAncmInKQorICAgICAgICB0b2xfc2VydmVy X2lkID0gcGlja2xlLmxvYWQoZXhpc3Rpbmdfc2VydmVyX2lkKQorICAgICAg ICBwaWNrbGVfaWRfZGljdCA9IHRvbF9zZXJ2ZXJfaWQKKyAgICBpZiAnZGlk JyBpbiBwaWNrbGVfaWRfZGljdDoKKyAgICAgICAgaWYgcGlja2xlX2lkX2Rp Y3RbJ2RpZCddOgorICAgICAgICAgICAgIyBBZGQgdGhlIGRiX2lkIGFzIHZh bHVlIGluIGRpY3QKKyAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJkaWQi XVswXS51cGRhdGUoe3NlcnZlcl9pZDogZGJfaWR9KQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgIyBDcmVhdGUgbmV3IGRpY3Qgd2l0aCBzZXJ2ZXJf aWQgYW5kIGRiX2lkCisgICAgICAgICAgICBwaWNrbGVfaWRfZGljdFsiZGlk Il0uYXBwZW5kKHtzZXJ2ZXJfaWQ6IGRiX2lkfSkKKyAgICBkYl9vdXRwdXQg PSBvcGVuKHBpY2tsZV9wYXRoLCAnd2InKQorICAgIHBpY2tsZS5kdW1wKHBp Y2tsZV9pZF9kaWN0LCBkYl9vdXRwdXQpCisgICAgZGJfb3V0cHV0LmNsb3Nl KCkKKworCitkZWYgYWRkX2RhdGFiYXNlKHRlc3Rlciwgc2VydmVyX2Nvbm5l Y3RfcmVzcG9uc2UsIHNlcnZlcl9pZHMpOgorICAgICIiIgorICAgIFRoaXMg ZnVuY3Rpb24gYWRkIHRoZSBkYXRhYmFzZSBpbnRvIHNlcnZlcnMKKworICAg IDpwYXJhbSB0ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50CisgICAgOnR5cGUg dGVzdGVyOiBmbGFzayB0ZXN0IG9iamVjdAorICAgIDpwYXJhbSBzZXJ2ZXJf Y29ubmVjdF9yZXNwb25zZTogc2VydmVyIHJlc3BvbnNlCisgICAgOnR5cGUg c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2U6IGRpY3QKKyAgICA6cGFyYW0gc2Vy dmVyX2lkczogc2VydmVyIGlkcworICAgIDp0eXBlIHNlcnZlcl9pZHM6IGxp c3QKKyAgICA6cmV0dXJuOiBOb25lCisgICAgIiIiCisKKyAgICBmb3Igc2Vy dmVyX2Nvbm5lY3QsIHNlcnZlcl9pZCBpbiB6aXAoc2VydmVyX2Nvbm5lY3Rf cmVzcG9uc2UsIHNlcnZlcl9pZHMpOgorICAgICAgICBpZiBzZXJ2ZXJfY29u bmVjdFsnZGF0YSddWydjb25uZWN0ZWQnXToKKyAgICAgICAgICAgIGRhdGEg PSBnZXRfZGJfZGF0YShzZXJ2ZXJfY29ubmVjdCkKKyAgICAgICAgICAgIGRi X3Jlc3BvbnNlID0gdGVzdGVyLnBvc3QoREFUQUJBU0VfVVJMICsgc3RyKHV0 aWxzLlNFUlZFUl9HUk9VUCkgKworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICIvIiArIHNlcnZlcl9pZCArICIvIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRh PWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgICAgICAgICAgYXNzZXJ0IGRiX3Jlc3BvbnNlLnN0YXR1c19jb2RlID09 IDIwMAorICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMo ZGJfcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAg ICB3cml0ZV9kYl9pZChyZXNwb25zZV9kYXRhKQorCisKK2RlZiB2ZXJpZnlf ZGF0YWJhc2UodGVzdGVyLCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZCwgZGJf aWQpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gdmVyaWZpZXMgdGhh dCBkYXRhYmFzZSBpcyBleGlzdHMgYW5kIHdoZXRoZXIgaXQgY29ubmVjdAor ICAgIHN1Y2Nlc3NmdWxseSBvciBub3QKKworICAgIDpwYXJhbSB0ZXN0ZXI6 IHRlc3QgY2xpZW50CisgICAgOnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IGNs aWVudCBvYmplY3QKKyAgICA6cGFyYW0gc2VydmVyX2dyb3VwOiBzZXJ2ZXIg Z3JvdXAgaWQKKyAgICA6dHlwZSBzZXJ2ZXJfZ3JvdXA6IGludAorICAgIDpw YXJhbSBzZXJ2ZXJfaWQ6IHNlcnZlciBpZAorICAgIDp0eXBlIHNlcnZlcl9p ZDogc3RyCisgICAgOnBhcmFtIGRiX2lkOiBkYXRhYmFzZSBpZAorICAgIDp0 eXBlIGRiX2lkOiBzdHIKKyAgICA6cmV0dXJuOiB0ZW1wX2RiX2NvbgorICAg IDpydHlwZTogbGlzdAorICAgICIiIgorCisgICAgIyBWZXJpZnkgc2VydmVy cworICAgIHNlcnZlcl91dGlscy52ZXJpZnlfc2VydmVyKHRlc3RlcixzZXJ2 ZXJfZ3JvdXAsc2VydmVyX2lkKQorCisgICAgIyBDb25uZWN0IHRvIGRhdGFi YXNlCisgICAgY29uX3Jlc3BvbnNlID0gdGVzdGVyLnBvc3QoJ3swfXsxfS97 Mn0vezN9Jy5mb3JtYXQoCisgICAgICAgIERBVEFCQVNFX0NPTk5FQ1RfVVJM LCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZCwgZGJfaWQpLAorICAgICAgICBm b2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgdGVtcF9kYl9jb24gPSBqc29u LmxvYWRzKGNvbl9yZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKwor ICAgIHJldHVybiB0ZW1wX2RiX2NvbgorCisKK2RlZiBkZWxldGVfZGF0YWJh c2UodGVzdGVyKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHVzZWQg dG8gZGVsZXRlIHRoZSBhZGRlZCBkYXRhYmFzZXMKKworICAgIDpwYXJhbSB0 ZXN0ZXI6IHRlc3QgY2xpZW50IG9iamVjdAorICAgIDpyZXR1cm46IE5vbmUK KyAgICAiIiIKKworICAgIHNlcnZlcl9pZHMgPSBOb25lCisgICAgZGJfaWRz X2RpY3QgPSBOb25lCisKKyAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkK KyAgICBpZiAic2lkIiBhbmQgImRpZCIgaW4gYWxsX2lkLmtleXMoKToKKyAg ICAgICAgc2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KKyAgICAgICAgaWYg YWxsX2lkWydkaWQnXToKKyAgICAgICAgICAgIGRiX2lkc19kaWN0ID0gYWxs X2lkWydkaWQnXVswXQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEV4Y2Vw dGlvbigiS2V5cyBhcmUgbm90IGZvdW5kIGluIHBpY2tsZSBkaWN0OiB7fSIu Zm9ybWF0KFsic2lkIiwgImRpZCJdKSkKKworICAgIGlmIHNlcnZlcl9pZHMg YW5kIGRiX2lkc19kaWN0IGlzIG5vdCBOb25lOgorICAgICAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6CisgICAgICAgICAgICBzZXJ2ZXJfcmVz cG9uc2UgPSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcih0ZXN0ZXIsIHV0 aWxzLlNFUlZFUl9HUk9VUCwgc2VydmVyX2lkKQorICAgICAgICAgICAgaWYg c2VydmVyX3Jlc3BvbnNlWyJkYXRhIl1bImNvbm5lY3RlZCJdOgorICAgICAg ICAgICAgICAgIGRiX2lkID0gZGJfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCld CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKERB VEFCQVNFX1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ry KHNlcnZlcl9pZCkgKyAnLycgKyBzdHIoZGJfaWQpLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3Rz PVRydWUpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1 c19jb2RlID09IDIwMAorICAgICAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor ICAgICAgICAgICAgICAgIGFzc2VydCByZXNwb25zZV9kYXRhWydzdWNjZXNz J10gPT0gMQorICAgIGVsc2U6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi Tm8gc2VydmVycy9kYXRhYmFzZXMgZm91bmQuIikKKwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9s ZXMvdGVzdHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy9fX2luaXRfXy5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YTExYmY4Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVzdHMvX19pbml0X18ucHkKQEAgLTAs MCArMSwxNiBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9t IHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y CisKKworY2xhc3MgUm9sZUdlbmVyYXRvclRlc3RDYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBy ZXR1cm4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9hZGQucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZXN0cy90ZXN0X3JvbGVfYWRkLnB5Cm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAuLjlkOGY5NDkKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9y b2xlcy90ZXN0cy90ZXN0X3JvbGVfYWRkLnB5CkBAIC0wLDAgKzEsNTUgQEAK KyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZnJvbSBwZ2FkbWluLnV0 aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdy ZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0 IHV0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBh cyByb2xlc191dGlscworCisKK2NsYXNzIExvZ2luUm9sZUFkZFRlc3RDYXNl KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUaGlzIGNsYXNzIGhhcyBh ZGQgcm9sZSBzY2VuYXJpbyIiIgorCisgICAgc2NlbmFyaW9zID0gWworICAg ICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciByb2xlcyBub2RlLgor ICAgICAgICAoJ0NoZWNrIFJvbGUgTm9kZScsIGRpY3QodXJsPScvYnJvd3Nl ci9yb2xlL29iai8nKSkKKyAgICBdCisKKyAgICBAY2xhc3NtZXRob2QKKyAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB1c2VkIHRvIGFkZCB0aGUgc2V2ZXIKKworICAgICAg ICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorCisgICAgICAgICMgQWRk IHRoZSBzZXJ2ZXIKKyAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIo Y2xzLnRlc3RlcikKKworICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCisg ICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZl cl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCisgICAgICAgICAgICBzZXJ2 ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKKworICAgICAg ICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgor ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29u bmVjdGVkIHRvIGFkZCB0aGUgcm9sZXMhISEiKQorCisgICAgZGVmIHJ1blRl c3Qoc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gdGVzdCB0aGUg YWRkIHJvbGUgc2NlbmFyaW8iIiIKKworICAgICAgICByb2xlc191dGlscy5h ZGRfcm9sZShzZWxmLnRlc3Rlciwgc2VsZi5zZXJ2ZXJfY29ubmVjdF9yZXNw b25zZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfZ3JvdXAsIHNlbGYuc2VydmVyX2lkcykKKworICAgIEBjbGFzc21ldGhv ZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgcm9sZSxzZXJ2ZXIgYW5kIHBhcmVu dCBpZCBmaWxlIiIiCisKKyAgICAgICAgcm9sZXNfdXRpbHMuZGVsZXRlX3Jv bGUoY2xzLnRlc3RlcikKKyAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0ZV9z ZXJ2ZXIoY2xzLnRlc3RlcikKKyAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVu dF9pZF9maWxlKCkKKwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xl X2RlbGV0ZS5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9kZWxldGUucHkKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyMDRjZAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3RzL3Rlc3Rfcm9sZV9kZWxldGUucHkK QEAgLTAsMCArMSw1OCBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CisKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RH ZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBh cyB1dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zy b20gLiBpbXBvcnQgdXRpbHMgYXMgcm9sZXNfdXRpbHMKKworCitjbGFzcyBM b2dpblJvbGVEZWxldGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6Cisg ICAgIiIiVGhpcyBjbGFzcyBoYXMgZGVsZXRlIHJvbGUgc2NlbmFyaW8iIiIK KworICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZh dWx0IFVSTCBmb3Igcm9sZXMgbm9kZS4KKyAgICAgICAgKCdDaGVjayBSb2xl IE5vZGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvcm9sZS9vYmovJykpCisgICAg XQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xz KToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0 byBhZGQgdGhlIHNldmVyIGFuZCByb2xlcworCisgICAgICAgIDpyZXR1cm46 IE5vbmUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBBZGQgdGhlIHNlcnZl cgorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVy KQorCisgICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKKyAgICAgICAgY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBj bHMuc2VydmVyX2lkcyA9IFwKKyAgICAgICAgICAgIHNlcnZlcl91dGlscy5j b25uZWN0X3NlcnZlcihjbHMudGVzdGVyKQorCisgICAgICAgIGlmIGxlbihj bHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6CisgICAgICAgICAg ICByYWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8g YWRkIHRoZSByb2xlcyEhISIpCisKKyAgICAgICAgIyBBZGQgdGhlIHJvbGUK KyAgICAgICAgcm9sZXNfdXRpbHMuYWRkX3JvbGUoY2xzLnRlc3RlciwgY2xz LnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcykK KworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1 bmN0aW9uIHRlc3RzIHRoZSBkZWxldGUgcm9sZSBzY2VuYXJpbyIiIgorCisg ICAgICAgIHJvbGVzX3V0aWxzLmRlbGV0ZV9yb2xlKHNlbGYudGVzdGVyKQor CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3Moc2Vs Zik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgcm9s ZSxzZXJ2ZXIgYW5kIHBhcmVudCBpZCBmaWxlIiIiCisKKyAgICAgICAgc2Vy dmVyX3V0aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAg IHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Jv bGVzL3Rlc3RzL3Rlc3Rfcm9sZV9nZXQucHkgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy90ZXN0X3Jv bGVfZ2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjQxODdmY2EKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy90ZXN0X3Jv bGVfZ2V0LnB5CkBAIC0wLDAgKzEsNjcgQEAKKyMgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIwor IyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJf Z3JvdXBzLnNlcnZlcnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91 dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyByb2xlc191dGlscworCisK K2NsYXNzIExvZ2luUm9sZUdldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9y KToKKyAgICAiIiJUaGlzIGNsYXNzIHRlc3RzIHRoZSBnZXQgcm9sZSBzY2Vu YXJpbyIiIgorCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAjIEZldGNo aW5nIGRlZmF1bHQgVVJMIGZvciByb2xlcyBub2RlLgorICAgICAgICAoJ0No ZWNrIFJvbGUgTm9kZScsIGRpY3QodXJsPScvYnJvd3Nlci9yb2xlL29iai8n KSkKKyAgICBdCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBD bGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlv biB1c2VkIHRvIGFkZCB0aGUgc2V2ZXIgYW5kIHJvbGVzCisKKyAgICAgICAg OnJldHVybjogTm9uZQorICAgICAgICAiIiIKKworICAgICAgICAjIEFkZCB0 aGUgc2VydmVyCisgICAgICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNs cy50ZXN0ZXIpCisKKyAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgorICAg ICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJf Z3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAorICAgICAgICAgICAgc2VydmVy X3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCisKKyAgICAgICAg aWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKKyAg ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5l Y3RlZCB0byBnZXQgdGhlIHJvbGVzISEhIikKKworICAgICAgICAjIEFkZCB0 aGUgcm9sZQorICAgICAgICByb2xlc191dGlscy5hZGRfcm9sZShjbHMudGVz dGVyLCBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2 ZXJfaWRzKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIi IlRoaXMgZnVuY3Rpb24gdGVzdCB0aGUgZ2V0IHJvbGUgc2NlbmFyaW8iIiIK KworICAgICAgICBhbGxfaWQgPSB1dGlscy5nZXRfaWRzKCkKKyAgICAgICAg c2VydmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KKyAgICAgICAgcm9sZV9pZHNf ZGljdCA9IGFsbF9pZFsibHJpZCJdWzBdCisKKyAgICAgICAgZm9yIHNlcnZl cl9pZCBpbiBzZXJ2ZXJfaWRzOgorICAgICAgICAgICAgcm9sZV9pZCA9IHJv bGVfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCisgICAgICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLmdldCgKKyAgICAgICAgICAgICAgICBzZWxm LnVybCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAg ICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cihyb2xlX2lk KSwKKyAgICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisg ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJE b3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxl dGVzIHRoZSByb2xlLHNlcnZlciBhbmQgcGFyZW50IGlkIGZpbGUiIiIKKwor ICAgICAgICByb2xlc191dGlscy5kZWxldGVfcm9sZShjbHMudGVzdGVyKQor ICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVy KQorICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVzdHMvdGVzdF9yb2xlX3B1dC5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3Rz L3Rlc3Rfcm9sZV9wdXQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uZjhjMzUzZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3Rlc3Rz L3Rlc3Rfcm9sZV9wdXQucHkKQEAgLTAsMCArMSw4NCBAQAorIyAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20g cGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0cyBp bXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24u dGVzdF9zZXR1cCBpbXBvcnQgYWR2YW5jZWRfY29uZmlnX2RhdGEKK2Zyb20g LiBpbXBvcnQgdXRpbHMgYXMgcm9sZXNfdXRpbHMKKworCitjbGFzcyBMb2dp blJvbGVQdXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi VGhpcyBjbGFzcyBoYXMgdXBkYXRlIHJvbGUgc2NlbmFyaW8iIiIKKworICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVS TCBmb3Igcm9sZXMgbm9kZS4KKyAgICAgICAgKCdDaGVjayBSb2xlIE5vZGUn LCBkaWN0KHVybD0nL2Jyb3dzZXIvcm9sZS9vYmovJykpCisgICAgXQorCisg ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAg ICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBhZGQg dGhlIHNldmVyIGFuZCByb2xlcworCisgICAgICAgIDpyZXR1cm46IE5vbmUK KyAgICAgICAgIiIiCisKKyAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgorICAg ICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQorCisg ICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKKyAgICAgICAgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2Vy dmVyX2lkcyA9IFwKKyAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25uZWN0 X3NlcnZlcihjbHMudGVzdGVyKQorCisgICAgICAgIGlmIGxlbihjbHMuc2Vy dmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gZ2V0IHRo ZSByb2xlcyEhISIpCisKKyAgICAgICAgIyBBZGQgdGhlIHJvbGUKKyAgICAg ICAgcm9sZXNfdXRpbHMuYWRkX3JvbGUoY2xzLnRlc3RlciwgY2xzLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcykKKworICAg IGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9u IHRlc3RzIHRoZSB1cGRhdGUgcm9sZSBkYXRhIHNjZW5hcmlvIiIiCisKKyAg ICAgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCisgICAgICAgIHNlcnZl cl9pZHMgPSBhbGxfaWRbInNpZCJdCisgICAgICAgIHJvbGVfaWRzX2RpY3Qg PSBhbGxfaWRbImxyaWQiXVswXQorCisgICAgICAgIGZvciBzZXJ2ZXJfaWQg aW4gc2VydmVyX2lkczoKKyAgICAgICAgICAgIHJvbGVfaWQgPSByb2xlX2lk c19kaWN0W2ludChzZXJ2ZXJfaWQpXQorICAgICAgICAgICAgcm9sZV9yZXNw b25zZSA9IHJvbGVzX3V0aWxzLnZlcmlmeV9yb2xlKHNlbGYudGVzdGVyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHV0aWxzLlNFUlZFUl9HUk9VUCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcm9sZV9pZCkKKyAgICAgICAgICAgIGlmIGxlbihyb2xlX3Jl c3BvbnNlKSA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiTm8gcm9sZXMocykgdG8gdXBkYXRlISEhIikKKworICAgICAgICAgICAg ZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiBhZHZh bmNlZF9jb25maWdfZGF0YVsibHJfdXBkYXRlX2RhdGEiXQorICAgICAgICAg ICAgICAgIFsiY29tbWVudCJdLAorICAgICAgICAgICAgICAgICJscmlkIjog cm9sZV9pZAorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0X3Jlc3Bv bnNlID0gc2VsZi50ZXN0ZXIucHV0KAorICAgICAgICAgICAgICAgIHNlbGYu dXJsICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAg ICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKHJvbGVfaWQp LAorICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAg ICAgICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisKKyAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHB1dF9yZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJE b3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxl dGVzIHRoZSByb2xlLHNlcnZlciBhbmQgcGFyZW50IGlkIGZpbGUiIiIKKwor ICAgICAgICByb2xlc191dGlscy5kZWxldGVfcm9sZShjbHMudGVzdGVyKQor ICAgICAgICBzZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVy KQorICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvcm9sZXMvdGVzdHMvdXRpbHMucHkgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZXN0cy91dGlscy5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWUwOTkw Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMvdGVzdHMvdXRpbHMucHkKQEAgLTAs MCArMSwxODcgQEAKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorIworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1w b3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHV1 aWQKKworZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IHBpY2ts ZV9wYXRoLCBjb25maWdfZGF0YSwgYWR2YW5jZWRfY29uZmlnX2RhdGEKK2Zy b20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy50ZXN0 cyBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCitmcm9tIHJlZ3Jlc3Np b24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKKworCitST0xFX1VSTCA9 ICcvYnJvd3Nlci9yb2xlL29iai8nCisKKworZGVmIHZlcmlmeV9yb2xlKHRl c3Rlciwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQsIHJvbGVfaWQpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb24gY2FsbHMgdGhlIEdFVCBBUEkgZm9y IHJvbGUgdG8gdmVyaWZ5CisKKyAgICA6cGFyYW0gdGVzdGVyOiB0ZXN0IGNs aWVudAorICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBjbGllbnQgb2Jq ZWN0CisgICAgOnBhcmFtIHNlcnZlcl9ncm91cDogc2VydmVyIGdyb3VwIGlk CisgICAgOnR5cGUgc2VydmVyX2dyb3VwOiBpbnQKKyAgICA6cGFyYW0gc2Vy dmVyX2lkOiBzZXJ2ZXIgaWQKKyAgICA6dHlwZSBzZXJ2ZXJfaWQ6IHN0cgor ICAgIDpwYXJhbSByb2xlX2lkOiByb2xlIGlkCisgICAgOnR5cGUgcm9sZV9p ZDogaW50CisgICAgOnJldHVybjogZGljdC9Ob25lCisgICAgIiIiCisKKyAg ICBzcnZfY29ubmVjdCA9IHNlcnZlcl91dGlscy52ZXJpZnlfc2VydmVyKHRl c3Rlciwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQpCisgICAgaWYgc3J2X2Nv bm5lY3RbJ2RhdGEnXVsnY29ubmVjdGVkJ106CisgICAgICAgIHJlc3BvbnNl ID0gdGVzdGVyLmdldCgKKyAgICAgICAgICAgICd7MH17MX0vezJ9L3szfScu Zm9ybWF0KFJPTEVfVVJMLCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvbGVfaWQpLAor ICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAg ICB0ZW1wX3Jlc3BvbnNlID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRl Y29kZSgndXRmLTgnKSkKKyAgICAgICAgcmV0dXJuIHRlbXBfcmVzcG9uc2UK KyAgICBlbHNlOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiB0ZXN0 X2dldHJvbGUodGVzdGVyKToKKyAgICBpZiBub3QgdGVzdGVyOgorICAgICAg ICByZXR1cm4gTm9uZQorCisgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygp CisKKyAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQorICAgIHJvbGVf aWRzX2RpY3QgPSBhbGxfaWRbImxyaWQiXVswXQorICAgIHNlcnZlcl9ncm91 cCA9IGNvbmZpZ19kYXRhWydzZXJ2ZXJfZ3JvdXAnXQorCisgICAgcm9sZV9y ZXNwb25zZV9kYXRhID0gW10KKyAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZl cl9pZHM6CisgICAgICAgIHJvbGVfaWQgPSByb2xlX2lkc19kaWN0W2ludChz ZXJ2ZXJfaWQpXQorICAgICAgICByb2xlX3Jlc3BvbnNlX2RhdGEuYXBwZW5k KAorICAgICAgICAgICAgdmVyaWZ5X3JvbGUodGVzdGVyLCBzZXJ2ZXJfZ3Jv dXAsIHNlcnZlcl9pZCwgcm9sZV9pZCkpCisgICAgcmV0dXJuIHJvbGVfcmVz cG9uc2VfZGF0YQorCisKK2RlZiBnZXRfcm9sZV9kYXRhKCk6CisgICAgIiIi VGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByb2xlIGRhdGEgZnJvbSBjb25m aWcgZmlsZSIiIgorCisgICAgZGF0YSA9IHsKKyAgICAgICAgInJvbGNhbmxv Z2luIjogYWR2YW5jZWRfY29uZmlnX2RhdGFbJ2xyX2NyZWRlbnRpYWxzJ10K KyAgICAgICAgWydjYW5fbG9naW4nXSwKKyAgICAgICAgInJvbGNvbm5saW1p dCI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydscl9jcmVkZW50aWFscyddCisg ICAgICAgIFsnY29ubl9saW1pdCddLAorICAgICAgICAicm9sY3JlYXRlcm9s ZSI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydscl9jcmVkZW50aWFscyddCisg ICAgICAgIFsnY3JlYXRlX3JvbGUnXSwKKyAgICAgICAgInJvbGluaGVyaXQi OiBhZHZhbmNlZF9jb25maWdfZGF0YVsnbHJfY3JlZGVudGlhbHMnXQorICAg ICAgICBbJ3JvbGVfaW5oZXJpdCddLAorICAgICAgICAicm9sbWVtYmVyc2hp cCI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydscl9jcmVkZW50aWFscyddCisg ICAgICAgIFsncm9sZV9tZW1iZXJzaGlwJ10sCisgICAgICAgICJyb2xuYW1l Ijogc3RyKHV1aWQudXVpZDQoKSlbMTo4XSwKKyAgICAgICAgInJvbHBhc3N3 b3JkIjogYWR2YW5jZWRfY29uZmlnX2RhdGFbJ2xyX2NyZWRlbnRpYWxzJ10K KyAgICAgICAgWydscl9wYXNzd29yZCddLAorICAgICAgICAicm9sdmFsaWR1 bnRpbCI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydscl9jcmVkZW50aWFscydd CisgICAgICAgIFsnbHJfdmFsaWRpdHknXSwKKyAgICAgICAgInNlY2xhYmVs cyI6IGFkdmFuY2VkX2NvbmZpZ19kYXRhWydscl9jcmVkZW50aWFscyddCisg ICAgICAgIFsnc2VjX2xhYmxlJ10sCisgICAgICAgICJ2YXJpYWJsZXMiOiBh ZHZhbmNlZF9jb25maWdfZGF0YVsnbHJfY3JlZGVudGlhbHMnXQorICAgICAg ICBbJ3ZhcmlhYmxlJ10KKyAgICB9CisgICAgcmV0dXJuIGRhdGEKKworCitk ZWYgYWRkX3JvbGUodGVzdGVyLCBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwg c2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWRzKToKKyAgICAiIiIKKyAgICBUaGlz IGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSByb2xlcyB0byBzZXJ2ZXIK KworICAgIDpwYXJhbSB0ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50CisgICAg OnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IGNsaWVudCBvYmplY3QKKyAgICA6 cGFyYW0gc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2U6IHNlcnZlciBjb25uZWN0 IEFQSSByZXNwb25zZQorICAgIDp0eXBlIHNlcnZlcl9jb25uZWN0X3Jlc3Bv bnNlOiBkaWN0CisgICAgOnBhcmFtIHNlcnZlcl9ncm91cDogc2VydmVyIGdy b3VwCisgICAgOnR5cGUgc2VydmVyX2dyb3VwOiBpbnQKKyAgICA6cGFyYW0g c2VydmVyX2lkczogbGlzdCBvZiBzZXJ2ZXIgaWQKKyAgICA6dHlwZSBzZXJ2 ZXJfaWRzOiBsaXN0CisgICAgOnJldHVybjogTm9uZQorICAgICIiIgorCisg ICAgZm9yIHNlcnZlcl9jb25uZWN0LCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXJ2ZXJfaWRzKToKKyAgICAgICAgaWYgc2Vy dmVyX2Nvbm5lY3RbJ2RhdGEnXVsnY29ubmVjdGVkJ106CisgICAgICAgICAg ICBkYXRhID0gZ2V0X3JvbGVfZGF0YSgpCisgICAgICAgICAgICByZXNwb25z ZSA9IHRlc3Rlci5wb3N0KFJPTEVfVVJMICsgc3RyKHNlcnZlcl9ncm91cCkg KyAnLycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBz ZXJ2ZXJfaWQgKyAnLycsIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdo dG1sL2pzb24nKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1 c19jb2RlID09IDIwMAorICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpz b24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAg ICAgICAgICB3cml0ZV9yb2xlX2lkKHJlc3BvbnNlX2RhdGEpCisKKworZGVm IHdyaXRlX3JvbGVfaWQocmVzcG9uc2VfZGF0YSk6CisgICAgIiIiCisKKyAg ICA6cGFyYW0gcmVzcG9uc2VfZGF0YToKKyAgICA6cmV0dXJuOgorICAgICIi IgorCisgICAgbHJfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11bJ19pZCdd CisgICAgc2VydmVyX2lkID0gcmVzcG9uc2VfZGF0YVsnbm9kZSddWydfcGlk J10KKyAgICBwaWNrbGVfaWRfZGljdCA9IHV0aWxzLmdldF9waWNrbGVfaWRf ZGljdCgpCisgICAgIyBUT0RPOiBtb2RpZnkgbG9naWMgdG8gd3JpdGUgaW4g ZmlsZSAvIGZpbGUgZXhpc3RzIG9yIGNyZWF0ZSBuZXcgY2hlY2sKKyAgICAj IG9sZCBmaWxlCisgICAgaWYgb3MucGF0aC5pc2ZpbGUocGlja2xlX3BhdGgp OgorICAgICAgICBleGlzdGluZ19zZXJ2ZXJfaWQgPSBvcGVuKHBpY2tsZV9w YXRoLCAncmInKQorICAgICAgICB0b2xfc2VydmVyX2lkID0gcGlja2xlLmxv YWQoZXhpc3Rpbmdfc2VydmVyX2lkKQorICAgICAgICBwaWNrbGVfaWRfZGlj dCA9IHRvbF9zZXJ2ZXJfaWQKKyAgICBpZiAnbHJpZCcgaW4gcGlja2xlX2lk X2RpY3Q6CisgICAgICAgIGlmIHBpY2tsZV9pZF9kaWN0WydscmlkJ106Cisg ICAgICAgICAgICAjIEFkZCB0aGUgZGJfaWQgYXMgdmFsdWUgaW4gZGljdAor ICAgICAgICAgICAgcGlja2xlX2lkX2RpY3RbImxyaWQiXVswXS51cGRhdGUo e3NlcnZlcl9pZDogbHJfaWR9KQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgIyBDcmVhdGUgbmV3IGRpY3Qgd2l0aCBzZXJ2ZXJfaWQgYW5kIGRiX2lk CisgICAgICAgICAgICBwaWNrbGVfaWRfZGljdFsibHJpZCJdLmFwcGVuZCh7 c2VydmVyX2lkOiBscl9pZH0pCisgICAgZGJfb3V0cHV0ID0gb3BlbihwaWNr bGVfcGF0aCwgJ3diJykKKyAgICBwaWNrbGUuZHVtcChwaWNrbGVfaWRfZGlj dCwgZGJfb3V0cHV0KQorICAgIGRiX291dHB1dC5jbG9zZSgpCisKKworZGVm IGRlbGV0ZV9yb2xlKHRlc3Rlcik6CisgICAgIiIiCisgICAgVGhpcyBmdW5j dGlvbiB1c2UgdG8gZGVsZXRlIHRoZSBleGlzdGluZyByb2xlcyBpbiB0aGUg c2VydmVycworCisgICAgOnBhcmFtIHRlc3RlcjogZmxhc2sgdGVzdCBjbGll bnQKKyAgICA6dHlwZSB0ZXN0ZXI6IGZsYXNrIHRlc3Qgb2JqZWN0CisgICAg OnJldHVybjogTm9uZQorICAgICIiIgorCisgICAgc2VydmVyX2lkcyA9IE5v bmUKKyAgICByb2xlX2lkc19kaWN0ID0gTm9uZQorCisgICAgYWxsX2lkID0g dXRpbHMuZ2V0X2lkcygpCisgICAgaWYgInNpZCIgYW5kICJscmlkIiBpbiBh bGxfaWQua2V5cygpOgorICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJz aWQiXQorICAgICAgICBpZiBhbGxfaWRbJ2xyaWQnXToKKyAgICAgICAgICAg IHJvbGVfaWRzX2RpY3QgPSBhbGxfaWRbJ2xyaWQnXVswXQorICAgIGVsc2U6 CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiS2V5cyBhcmUgbm90IGZvdW5k OiB7fSIuZm9ybWF0KFsic2lkIiwgImxyaWQiXSkpCisKKyAgICBpZiBzZXJ2 ZXJfaWRzIGFuZCByb2xlX2lkc19kaWN0IGlzIG5vdCBOb25lOgorICAgICAg ICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6CisgICAgICAgICAgICBz ZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcih0 ZXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzZXJ2ZXJfaWQpCisgICAgICAgICAgICBpZiBzZXJ2ZXJfcmVz cG9uc2VbImRhdGEiXVsiY29ubmVjdGVkIl06CisgICAgICAgICAgICAgICAg cm9sZV9pZCA9IHJvbGVfaWRzX2RpY3RbaW50KHNlcnZlcl9pZCldCisgICAg ICAgICAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKAorICAgICAg ICAgICAgICAgICAgICBST0xFX1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JP VVApICsgJy8nICsKKyAgICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9p ZCkgKyAnLycgKyBzdHIocm9sZV9pZCksCisgICAgICAgICAgICAgICAgICAg IGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBhc3Nl cnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgICAgICAgICAg ICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5k ZWNvZGUoJ3V0Zi04JykpCisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlc3Bv bnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAxCisgICAgZWxzZToKKyAgICAgICAg cmFpc2UgRXhjZXB0aW9uKCJObyBzZXJ2ZXJzL3JvbGVzIGZvdW5kLiIpCisK KwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvdGFibGVzcGFjZXMvdGVzdHMvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJs ZXNwYWNlcy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zMzAyMDI3Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGFi bGVzcGFjZXMvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNiBAQAor IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisj CisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCisKKworY2xhc3Mg VGJsc3BhY2VHZW5lcmF0b3JUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6 CisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2FkZC5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rh Ymxlc3BhY2VzL3Rlc3RzL3Rlc3RfdGJzcGNfYWRkLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTY5NjYKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2FkZC5weQpAQCAt MCwwICsxLDU1IEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor IyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zy b20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGls cworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJz LnRlc3RzIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gLiBp bXBvcnQgdXRpbHMgYXMgdGFibGVzcGFjZV91dGlscworCisKK2NsYXNzIFRh YmxlU3BhY2VBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAg IiIiVGhpcyBjbGFzcyB3aWxsIGFkZCB0YWJsZXNwYWNlIG5vZGUgdW5kZXIg c2VydmVyIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0 Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHRhYmxlc3BhY2Ugbm9kZS4KKyAgICAg ICAgKCdDaGVjayBUYWJsZXNwYWNlIE5vZGUnLCBkaWN0KHVybD0nL2Jyb3dz ZXIvdGFibGVzcGFjZS9vYmovJykpCisgICAgXQorCisgICAgQGNsYXNzbWV0 aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBhZGQgdGhlIHNldmVyCisK KyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKworICAgICAg ICAjIEFkZCB0aGUgc2VydmVyCisgICAgICAgIHNlcnZlcl91dGlscy5hZGRf c2VydmVyKGNscy50ZXN0ZXIpCisKKyAgICAgICAgIyBDb25uZWN0IHRvIHNl cnZlcgorICAgICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIGNs cy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAorICAgICAgICAg ICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0ZXIpCisK KyAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSkg PT0gMDoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVy KHMpIGNvbm5lY3RlZCB0byBhZGQgdGhlIHJvbGVzISEhIikKKworICAgIGRl ZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHRl c3QgdGhlIGFkZCB0YWJsZXNwYWNlIHNjZW5hcmlvIiIiCisKKyAgICAgICAg dGFibGVzcGFjZV9zdGF0dXMgPSB0YWJsZXNwYWNlX3V0aWxzLmFkZF90YWJs ZV9zcGFjZSgKKyAgICAgICAgICAgIHNlbGYudGVzdGVyLCBzZWxmLnNlcnZl cl9jb25uZWN0X3Jlc3BvbnNlLCBzZWxmLnNlcnZlcl9ncm91cCwKKyAgICAg ICAgICAgIHNlbGYuc2VydmVyX2lkcykKKworICAgIEBjbGFzc21ldGhvZAor ICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgICIiIlRoaXMg ZnVuY3Rpb24gZGVsZXRlcyB0aGUgdGFibGVzcGFjZXMsc2VydmVyIGFuZCBw YXJlbnRfaWQgZmlsZSIiIgorCisgICAgICAgIHRhYmxlc3BhY2VfdXRpbHMu ZGVsZXRlX3RhYmxlX3NwYWNlKGNscy50ZXN0ZXIpCisgICAgICAgIHNlcnZl cl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCisgICAgICAgIHV0 aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNw YWNlcy90ZXN0cy90ZXN0X3Ric3BjX2RlbGV0ZS5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rl c3RzL3Rlc3RfdGJzcGNfZGVsZXRlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmYyODBlZTYKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJs ZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2RlbGV0ZS5weQpAQCAtMCwwICsx LDU4IEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitm cm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudGVz dHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSAuIGltcG9y dCB1dGlscyBhcyB0YWJsZXNwYWNlX3V0aWxzCisKKworY2xhc3MgVGFibGVT cGFjZURlbGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAi IiJUaGlzIGNsYXNzIGhhcyBkZWxldGUgdGFibGUgc3BhY2Ugc2NlbmFyaW8i IiIKKworICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBk ZWZhdWx0IFVSTCBmb3IgdGFibGVzcGFjZSBub2RlLgorICAgICAgICAoJ0No ZWNrIFRhYmxlc3BhY2UgTm9kZScsIGRpY3QodXJsPScvYnJvd3Nlci90YWJs ZXNwYWNlL29iai8nKSkKKyAgICBdCisKKyAgICBAY2xhc3NtZXRob2QKKyAg ICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB1c2VkIHRvIGFkZCB0aGUgc2V2ZXIKKworICAgICAg ICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorCisgICAgICAgICMgQWRk IHRoZSBzZXJ2ZXIKKyAgICAgICAgc2VydmVyX3V0aWxzLmFkZF9zZXJ2ZXIo Y2xzLnRlc3RlcikKKworICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCisg ICAgICAgIGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgY2xzLnNlcnZl cl9ncm91cCwgY2xzLnNlcnZlcl9pZHMgPSBcCisgICAgICAgICAgICBzZXJ2 ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoY2xzLnRlc3RlcikKKworICAgICAg ICBpZiBsZW4oY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlKSA9PSAwOgor ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBTZXJ2ZXIocykgY29u bmVjdGVkIHRvIGFkZCB0aGUgcm9sZXMhISEiKQorCisgICAgICAgICMgQWRk IHRhYmxlc3BhY2UKKyAgICAgICAgdGFibGVzcGFjZV91dGlscy5hZGRfdGFi bGVfc3BhY2UoY2xzLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9jb25uZWN0X3Jlc3BvbnNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bHMuc2VydmVyX2dyb3VwLCBjbHMuc2VydmVyX2lkcykKKworICAgIGRlZiBy dW5UZXN0KHNlbGYpOgorICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIHRlc3Rz IHRoZSBkZWxldGUgdGFibGUgc3BhY2Ugc2NlbmFyaW8iIiIKKworICAgICAg ICB0YWJsZXNwYWNlX3V0aWxzLmRlbGV0ZV90YWJsZV9zcGFjZShzZWxmLnRl c3RlcikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNs YXNzKGNscyk6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0 aGUgc2VydmVyIGFuZCBwYXJlbnQgaWQgZmlsZSIiIgorCisgICAgICAgIHNl cnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCisgICAgICAg IHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJs ZXNwYWNlcy90ZXN0cy90ZXN0X3Ric3BjX2dldC5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rl c3RzL3Rlc3RfdGJzcGNfZ2V0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmIyNmQ3MWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNw YWNlcy90ZXN0cy90ZXN0X3Ric3BjX2dldC5weQpAQCAtMCwwICsxLDc4IEBA CisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx NiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK KyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20gcGdhZG1pbi51 dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVn cmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2Fk bWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9y dCB1dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gLiBpbXBvcnQgdXRpbHMg YXMgdGFibGVzcGFjZV91dGlscworCisKK2NsYXNzIFRhYmxlc3BhY2VHZXRU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGhpcyBjbGFz cyB0ZXN0cyB0aGUgZ2V0IHRhYmxlIHNwYWNlIHNjZW5hcmlvIiIiCisKKyAg ICBzY2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBV UkwgZm9yIHJvbGVzIG5vZGUuCisgICAgICAgICgnQ2hlY2sgVGFibGVzcGFj ZSBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL3RhYmxlc3BhY2Uvb2JqLycp KQorICAgIF0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENs YXNzKGNscyk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IHVzZWQgdG8gYWRkIHRoZSBzZXZlcgorCisgICAgICAgIDpyZXR1cm46IE5v bmUKKyAgICAgICAgIiIiCisKKyAgICAgICAgIyBBZGQgdGhlIHNlcnZlcgor ICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZlcihjbHMudGVzdGVyKQor CisgICAgICAgICMgQ29ubmVjdCB0byBzZXJ2ZXIKKyAgICAgICAgY2xzLnNl cnZlcl9jb25uZWN0X3Jlc3BvbnNlLCBjbHMuc2VydmVyX2dyb3VwLCBjbHMu c2VydmVyX2lkcyA9IFwKKyAgICAgICAgICAgIHNlcnZlcl91dGlscy5jb25u ZWN0X3NlcnZlcihjbHMudGVzdGVyKQorCisgICAgICAgIGlmIGxlbihjbHMu c2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UpID09IDA6CisgICAgICAgICAgICBy YWlzZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gYWRk IHRoZSByb2xlcyEhISIpCisKKyAgICAgICAgIyBBZGQgdGFibGVzcGFjZQor ICAgICAgICB0YWJsZXNwYWNlX3V0aWxzLmFkZF90YWJsZV9zcGFjZShjbHMu dGVzdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjbHMuc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNscy5zZXJ2ZXJfZ3Jv dXAsIGNscy5zZXJ2ZXJfaWRzKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6 CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gdGVzdCB0aGUgZ2V0IHRhYmxl IHNwYWNlIHNjZW5hcmlvIiIiCisKKyAgICAgICAgdGFibGVzcGFjZV9pZHNf ZGljdCA9IE5vbmUKKyAgICAgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygp CisgICAgICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCisgICAgICAg IGlmICJ0c2lkIiBpbiBhbGxfaWQgYW5kIGFsbF9pZFsidHNpZCJdOgorICAg ICAgICAgICAgdGFibGVzcGFjZV9pZHNfZGljdCA9IGFsbF9pZFsidHNpZCJd WzBdCisKKyAgICAgICAgaWYgdGFibGVzcGFjZV9pZHNfZGljdDoKKyAgICAg ICAgICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKKyAgICAgICAg ICAgICAgICB0YWJsZXNwYWNlX2lkID0gdGFibGVzcGFjZV9pZHNfZGljdFtp bnQoc2VydmVyX2lkKV0KKyAgICAgICAgICAgICAgICBzZXJ2ZXJfcmVzcG9u c2UgPSBzZXJ2ZXJfdXRpbHMudmVyaWZ5X3NlcnZlcihzZWxmLnRlc3RlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VydmVyX2lkKQorICAgICAgICAgICAgICAgIGlmIHNlcnZl cl9yZXNwb25zZVsnZGF0YSddWydjb25uZWN0ZWQnXToKKyAgICAgICAgICAg ICAgICAgICAgdGFibGVzcGFjZV91dGlscy52ZXJpZnlfdGFibGVfc3BhY2Uo CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RlciwgdXRpbHMu U0VSVkVSX0dST1VQLCBzZXJ2ZXJfaWQsIHRhYmxlc3BhY2VfaWQpCisgICAg ICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KAor ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIodXRpbHMu U0VSVkVSX0dST1VQKSArICcvJyArCisgICAgICAgICAgICAgICAgICAgICAg ICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cigKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0YWJsZXNwYWNlX2lkKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93 bkNsYXNzKGNscyk6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRl cyB0aGUgdGFibGVzcGFjZXMsc2VydmVyIGFuZCBwYXJlbnQgaWQgZmlsZSIi IgorCisgICAgICAgIHRhYmxlc3BhY2VfdXRpbHMuZGVsZXRlX3RhYmxlX3Nw YWNlKGNscy50ZXN0ZXIpCisgICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVf c2VydmVyKGNscy50ZXN0ZXIpCisgICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJl bnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0 X3Ric3BjX3B1dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rlc3RzL3Rlc3RfdGJzcGNfcHV0 LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyMjU3 ZjkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy90YWJsZXNwYWNlcy90ZXN0cy90ZXN0X3Ri c3BjX3B1dC5weQpAQCAtMCwwICsxLDkwIEBACisjICMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKK2ltcG9ydCBqc29uCisKK2Zyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVz c2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLnRlc3RzIGltcG9ydCB1 dGlscyBhcyBzZXJ2ZXJfdXRpbHMKK2Zyb20gdGVzdF9zZXR1cCBpbXBvcnQg YWR2YW5jZWRfY29uZmlnX2RhdGEKK2Zyb20gLiBpbXBvcnQgdXRpbHMgYXMg dGFibGVzcGFjZV91dGlscworCisKK2NsYXNzIFRhYmxlU3BhY2VVcGRhdGVU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiVGhpcyBjbGFz cyBoYXMgdXBkYXRlIHRhYmxlc3BhY2Ugc2NlbmFyaW8iIiIKKworICAgIHNj ZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBm b3Igcm9sZXMgbm9kZS4KKyAgICAgICAgKCdDaGVjayBUYWJsZXNwYWNlIE5v ZGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvdGFibGVzcGFjZS9vYmovJykpCisg ICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3Mo Y2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gdXNl ZCB0byBhZGQgdGhlIHNldmVyCisKKyAgICAgICAgOnJldHVybjogTm9uZQor ICAgICAgICAiIiIKKworICAgICAgICAjIEFkZCB0aGUgc2VydmVyCisgICAg ICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCisKKyAg ICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgorICAgICAgICBjbHMuc2VydmVy X2Nvbm5lY3RfcmVzcG9uc2UsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2 ZXJfaWRzID0gXAorICAgICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rf c2VydmVyKGNscy50ZXN0ZXIpCisKKyAgICAgICAgaWYgbGVuKGNscy5zZXJ2 ZXJfY29ubmVjdF9yZXNwb25zZSkgPT0gMDoKKyAgICAgICAgICAgIHJhaXNl IEV4Y2VwdGlvbigiTm8gU2VydmVyKHMpIGNvbm5lY3RlZCB0byBhZGQgdGhl IHJvbGVzISEhIikKKworICAgICAgICAjIEFkZCB0YWJsZXNwYWNlCisgICAg ICAgIHRhYmxlc3BhY2VfdXRpbHMuYWRkX3RhYmxlX3NwYWNlKGNscy50ZXN0 ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNscy5zZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xzLnNlcnZlcl9ncm91cCwg Y2xzLnNlcnZlcl9pZHMpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAg ICAgICAgIiIiVGhpcyBmdW5jdGlvbiB0ZXN0cyB0aGUgdXBkYXRlIHRhYmxl c3BhY2UgZGF0YSBzY2VuYXJpbyIiIgorCisgICAgICAgIHRhYmxlc3BhY2Vf aWRzX2RpY3QgPSBOb25lCisgICAgICAgIGFsbF9pZCA9IHV0aWxzLmdldF9p ZHMoKQorICAgICAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQorICAg ICAgICBpZiAidHNpZCIgaW4gYWxsX2lkIGFuZCBhbGxfaWRbInRzaWQiXToK KyAgICAgICAgICAgIHRhYmxlc3BhY2VfaWRzX2RpY3QgPSBhbGxfaWRbInRz aWQiXVswXQorCisgICAgICAgIGlmIHRhYmxlc3BhY2VfaWRzX2RpY3Q6Cisg ICAgICAgICAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6CisgICAg ICAgICAgICAgICAgdGFibGVzcGFjZV9pZCA9IHRhYmxlc3BhY2VfaWRzX2Rp Y3RbaW50KHNlcnZlcl9pZCldCisgICAgICAgICAgICAgICAgdGFibGVzcGFj ZV9yZXNwb25zZSA9IHRhYmxlc3BhY2VfdXRpbHMudmVyaWZ5X3RhYmxlX3Nw YWNlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RlciwKKyAgICAg ICAgICAgICAgICAgICAgdXRpbHMuU0VSVkVSX0dST1VQLCBzZXJ2ZXJfaWQs CisgICAgICAgICAgICAgICAgICAgIHRhYmxlc3BhY2VfaWQpCisgICAgICAg ICAgICAgICAgaWYgbGVuKHRhYmxlc3BhY2VfcmVzcG9uc2UpID09IDA6Cisg ICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gdGFibGVz cGFjZShzKSB0byB1cGRhdGUhISEiKQorCisgICAgICAgICAgICAgICAgZGF0 YSA9IHsKKyAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogYWR2 YW5jZWRfY29uZmlnX2RhdGFbInRic3BjX3VwZGF0ZV9kYXRhIl0KKyAgICAg ICAgICAgICAgICAgICAgWyJjb21tZW50Il0sCisgICAgICAgICAgICAgICAg ICAgICJ0YWJsZV9zcGFjZV9pZCI6IHRhYmxlc3BhY2VfaWQKKyAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwdXRfcmVzcG9uc2UgPSBz ZWxmLnRlc3Rlci5wdXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXJs ICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAnLycgKworICAgICAgICAg ICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0cigKKyAgICAg ICAgICAgICAgICAgICAgICAgIHRhYmxlc3BhY2VfaWQpLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAg ICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKworICAgICAgICAg ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHB1dF9yZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJE b3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBkZWxl dGVzIHRoZSB0YWJsZXNwYWNlcyxzZXJ2ZXIgYW5kIHBhcmVudCBpZCBmaWxl IiIiCisKKyAgICAgICAgdGFibGVzcGFjZV91dGlscy5kZWxldGVfdGFibGVf c3BhY2UoY2xzLnRlc3RlcikKKyAgICAgICAgc2VydmVyX3V0aWxzLmRlbGV0 ZV9zZXJ2ZXIoY2xzLnRlc3RlcikKKyAgICAgICAgdXRpbHMuZGVsZXRlX3Bh cmVudF9pZF9maWxlKCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RhYmxlc3BhY2VzL3Rlc3RzL3V0 aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvdGFibGVzcGFjZXMvdGVzdHMvdXRpbHMucHkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3MWU2MAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3RhYmxlc3BhY2VzL3Rlc3RzL3V0aWxzLnB5CkBAIC0wLDAgKzEsMTk1 IEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20gX19mdXR1 cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGpzb24KK2lt cG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHV1aWQKK2ltcG9ydCBz eXMKKworZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAgaW1wb3J0IHBpY2ts ZV9wYXRoLCBjb25maWdfZGF0YSwgXAorICAgIGFkdmFuY2VkX2NvbmZpZ19k YXRhCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBy ZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCisKK1RBQkxF X1NQQUNFX1VSTCA9ICcvYnJvd3Nlci90YWJsZXNwYWNlL29iai8nCisKKwor IyBUYWJsZXNwYWNlIHV0aWxpdHkKK2RlZiBnZXRfdGFibGVzcGFjZV9kYXRh KHNlcnZlcl9jb25uZWN0KToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHJldHVy bnMgdGhlIHRhYmxlc3BhY2UgZGF0YSBmcm9tIGNvbmZpZyBmaWxlIiIiCisK KyAgICBhZHZfY29uZmlnX2RhdGEgPSBOb25lCisgICAgZGF0YSA9IE5vbmUK KyAgICBkYl91c2VyID0gc2VydmVyX2Nvbm5lY3RbJ2RhdGEnXVsndXNlcidd WyduYW1lJ10KKyAgICBzZXJ2ZXJfY29uZmlnX2RhdGEgPSBjb25maWdfZGF0 YVsnc2VydmVyX2NyZWRlbnRpYWxzJ10KKworICAgICMgR2V0IHRoZSBjb25m aWcgZGF0YSBvZiBhcHByb3ByaWF0ZSBkYiB1c2VyCisgICAgZm9yIGNvbmZp Z190ZXN0X2RhdGEgaW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ3RhYmxlc3Bj X2NyZWRlbnRpYWxzJ106CisgICAgICAgIGlmIGRiX3VzZXIgPT0gY29uZmln X3Rlc3RfZGF0YVsnc3BjX3VzZXInXToKKyAgICAgICAgICAgICMgQWRkIHRo ZSB0YWJsZXNwYWNlIHBhdGggZnJvbSBzZXJ2ZXIgY29uZmlnCisgICAgICAg ICAgICBzZXJ2ZXJfY29uZmlnID0gKGl0ZW0gZm9yIGl0ZW0gaW4gc2VydmVy X2NvbmZpZ19kYXRhIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGl0ZW1bImRiX3VzZXJuYW1lIl0gPT0gZGJfdXNlcikubmV4dCgpCisgICAg ICAgICAgICBpZiAidGFibGVzcGFjZV9wYXRoIiBpbiBzZXJ2ZXJfY29uZmln OgorICAgICAgICAgICAgICAgIGNvbmZpZ190ZXN0X2RhdGFbJ3NwY19sb2Nh dGlvbiddID0gc2VydmVyX2NvbmZpZ1sndGFibGVzcGFjZV9wYXRoJ10KKyAg ICAgICAgICAgICAgICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdfdGVzdF9k YXRhCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbmZp Z190ZXN0X2RhdGFbJ3NwY19sb2NhdGlvbiddID0gTm9uZQorCisgICAgaWYg YWR2X2NvbmZpZ19kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICBkYXRhID0g eworICAgICAgICAgICAgIm5hbWUiOiBzdHIodXVpZC51dWlkNCgpKVsxOjhd LAorICAgICAgICAgICAgInNlY2xhYmVscyI6IGFkdl9jb25maWdfZGF0YVsi c3BjX3NlY2xhYmxlIl0sCisgICAgICAgICAgICAic3BjYWNsIjogYWR2X2Nv bmZpZ19kYXRhWyJzcGNfYWNsIl0sCisgICAgICAgICAgICAic3BjbG9jYXRp b24iOiBhZHZfY29uZmlnX2RhdGFbInNwY19sb2NhdGlvbiJdLAorICAgICAg ICAgICAgInNwY29wdGlvbnMiOiBhZHZfY29uZmlnX2RhdGFbInNwY19vcHRz Il0sCisgICAgICAgICAgICAic3BjdXNlciI6IGFkdl9jb25maWdfZGF0YVsi c3BjX3VzZXIiXQorICAgICAgICB9CisgICAgcmV0dXJuIGRhdGEKKworCitk ZWYgd3JpdGVfdGFibGVzcGFjZV9pZChyZXNwb25zZV9kYXRhKToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIHdyaXRlIHRoZSB0YWJsZSBzcGFjZSBp ZCB0byBwYXJlbnRfaWQucGtsCisKKyAgICA6cGFyYW0gcmVzcG9uc2VfZGF0 YTogY3JlYXRlIHRhYmxlIHNwYWNlIEFQSSByZXNwb25zZSBkYXRhCisgICAg OnR5cGUgcmVzcG9uc2VfZGF0YTogZGljdAorICAgIDpyZXR1cm46IE5vbmUK KyAgICAiIiIKKworICAgIHRhYmxlX3NwYWNlX2lkID0gcmVzcG9uc2VfZGF0 YVsnbm9kZSddWydfaWQnXQorICAgIHNlcnZlcl9pZCA9IHJlc3BvbnNlX2Rh dGFbJ25vZGUnXVsnX3BpZCddCisgICAgcGlja2xlX2lkX2RpY3QgPSB1dGls cy5nZXRfcGlja2xlX2lkX2RpY3QoKQorICAgIGlmIG9zLnBhdGguaXNmaWxl KHBpY2tsZV9wYXRoKToKKyAgICAgICAgZXhpc3Rpbmdfc2VydmVyX2lkID0g b3BlbihwaWNrbGVfcGF0aCwgJ3JiJykKKyAgICAgICAgdG9sX3NlcnZlcl9p ZCA9IHBpY2tsZS5sb2FkKGV4aXN0aW5nX3NlcnZlcl9pZCkKKyAgICAgICAg cGlja2xlX2lkX2RpY3QgPSB0b2xfc2VydmVyX2lkCisgICAgaWYgJ3RzaWQn IGluIHBpY2tsZV9pZF9kaWN0OgorICAgICAgICBpZiBwaWNrbGVfaWRfZGlj dFsndHNpZCddOgorICAgICAgICAgICAgIyBBZGQgdGhlIGRiX2lkIGFzIHZh bHVlIGluIGRpY3QKKyAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJ0c2lk Il1bMF0udXBkYXRlKAorICAgICAgICAgICAgICAgIHtzZXJ2ZXJfaWQ6IHRh YmxlX3NwYWNlX2lkfSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMg Q3JlYXRlIG5ldyBkaWN0IHdpdGggc2VydmVyX2lkIGFuZCBkYl9pZAorICAg ICAgICAgICAgcGlja2xlX2lkX2RpY3RbInRzaWQiXS5hcHBlbmQoCisgICAg ICAgICAgICAgICAge3NlcnZlcl9pZDogdGFibGVfc3BhY2VfaWR9KQorICAg IGRiX291dHB1dCA9IG9wZW4ocGlja2xlX3BhdGgsICd3YicpCisgICAgcGlj a2xlLmR1bXAocGlja2xlX2lkX2RpY3QsIGRiX291dHB1dCkKKyAgICBkYl9v dXRwdXQuY2xvc2UoKQorCisKK2RlZiBhZGRfdGFibGVfc3BhY2UodGVzdGVy LCBzZXJ2ZXJfY29ubmVjdF9yZXNwb25zZSwgc2VydmVyX2dyb3VwLCBzZXJ2 ZXJfaWRzKToKKyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gYWRkIHRoZSByb2xlcyB0byBzZXJ2ZXIKKworICAgIDpwYXJhbSB0ZXN0 ZXI6IGZsYXNrIHRlc3QgY2xpZW50CisgICAgOnR5cGUgdGVzdGVyOiBmbGFz ayB0ZXN0IGNsaWVudCBvYmplY3QKKyAgICA6cGFyYW0gc2VydmVyX2Nvbm5l Y3RfcmVzcG9uc2U6IHNlcnZlciBjb25uZWN0IEFQSSByZXNwb25zZQorICAg IDp0eXBlIHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlOiBkaWN0CisgICAgOnBh cmFtIHNlcnZlcl9ncm91cDogc2VydmVyIGdyb3VwCisgICAgOnR5cGUgc2Vy dmVyX2dyb3VwOiBpbnQKKyAgICA6cGFyYW0gc2VydmVyX2lkczogbGlzdCBv ZiBzZXJ2ZXIgaWQKKyAgICA6dHlwZSBzZXJ2ZXJfaWRzOiBsaXN0CisgICAg OnJldHVybjogTm9uZQorICAgICIiIgorCisgICAgdG90YWxfc2VydmVyc19j b3VudCA9IGxlbihzZXJ2ZXJfaWRzKQorICAgIHNlcnZlcnNfd2l0aG91dF90 YWJsZXNwYWNlX3BhdGggPSBbXQorCisgICAgZm9yIHNlcnZlcl9jb25uZWN0 LCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZlcl9jb25uZWN0X3Jlc3BvbnNlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfaWRzKToKKyAgICAgICAgdGFibGVzcGFjZV9wYXRoID0gc2VydmVyX2Nv bm5lY3RbJ3RhYmxlc3BhY2VfcGF0aCddCisgICAgICAgICMgU2tpcCB0aGUg dGVzdCBjYXNlIGlmIHRhYmxlc3BhY2VfcGF0aCBkb2VzIG5vdCBleGlzdAor ICAgICAgICBpZiBub3QgdGFibGVzcGFjZV9wYXRoIG9yIHRhYmxlc3BhY2Vf cGF0aCBpcyBOb25lOgorICAgICAgICAgICAgZmlsZV9uYW1lID0gb3MucGF0 aC5iYXNlbmFtZSgKKyAgICAgICAgICAgICAgICBzeXMuX2dldGZyYW1lKCku Zl9iYWNrLmZfY29kZS5jb19maWxlbmFtZSkKKyAgICAgICAgICAgIHNlcnZl cnNfd2l0aG91dF90YWJsZXNwYWNlX3BhdGguYXBwZW5kKHNlcnZlcl9pZCkK KyAgICAgICAgICAgIGlmIHRvdGFsX3NlcnZlcnNfY291bnQgPT0gbGVuKHNl cnZlcnNfd2l0aG91dF90YWJsZXNwYWNlX3BhdGgpOgorICAgICAgICAgICAg ICAgIHByaW50KCJTa2lwcGluZyB0YWJsZXNwYWNlcyB0ZXN0IGNhc2VzIGZv ciB0aGUgIGZpbGUgPHswfT4sICIKKyAgICAgICAgICAgICAgICAgICAgICAi VGFibGVzcGFjZSBwYXRoIG5vdCBmb3VuZCBmb3IgYW55IG9mIHRoZSBzZXJ2 ZXIgOiAiCisgICAgICAgICAgICAgICAgICAgICAgInsxfSIuZm9ybWF0KGZp bGVfbmFtZSwgc2VydmVyX2lkcyksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAg ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg ICAgICAgICAgcHJpbnQoIlNraXBwaW5nIHRhYmxlc3BhY2VzIHRlc3QgY2Fz ZSBmb3IgdGhlIGZpbGUgPHswfT46ICIKKyAgICAgICAgICAgICAgICAgICAg ICAiVGFibGVzcGFjZSBwYXRoIG5vdCBmb3VuZCBmb3Igc2VydmVyIDogezF9 Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX25hbWUs IHNlcnZlcl9pZCksIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICAg ICBjb250aW51ZQorCisgICAgICAgIGlmIHNlcnZlcl9jb25uZWN0WydkYXRh J11bJ2Nvbm5lY3RlZCddOgorICAgICAgICAgICAgZGF0YSA9IGdldF90YWJs ZXNwYWNlX2RhdGEoc2VydmVyX2Nvbm5lY3QpCisgICAgICAgICAgICByZXNw b25zZSA9IHRlc3Rlci5wb3N0KFRBQkxFX1NQQUNFX1VSTCArIHN0cihzZXJ2 ZXJfZ3JvdXApICsgJy8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsgc2VydmVyX2lkICsgJy8nLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0n aHRtbC9qc29uJykKKyAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5zdGF0 dXNfY29kZSA9PSAyMDAKKyAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBq c29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAg ICAgICAgICAgd3JpdGVfdGFibGVzcGFjZV9pZChyZXNwb25zZV9kYXRhKQor CisKK2RlZiB2ZXJpZnlfdGFibGVfc3BhY2UodGVzdGVyLCBzZXJ2ZXJfZ3Jv dXAsIHNlcnZlcl9pZCwgdGFibGVzcGFjZV9pZCk6CisgICAgIiIiCisgICAg VGhpcyBmdW5jdGlvbiBjYWxscyB0aGUgR0VUIEFQSSBmb3Igcm9sZSB0byB2 ZXJpZnkKKworICAgIDpwYXJhbSB0ZXN0ZXI6IHRlc3QgY2xpZW50CisgICAg OnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IGNsaWVudCBvYmplY3QKKyAgICA6 cGFyYW0gc2VydmVyX2dyb3VwOiBzZXJ2ZXIgZ3JvdXAgaWQKKyAgICA6dHlw ZSBzZXJ2ZXJfZ3JvdXA6IGludAorICAgIDpwYXJhbSBzZXJ2ZXJfaWQ6IHNl cnZlciBpZAorICAgIDp0eXBlIHNlcnZlcl9pZDogc3RyCisgICAgOnBhcmFt IHRhYmxlc3BhY2VfaWQ6IHRhYmxlIHNwYWNlIGlkCisgICAgOnR5cGUgdGFi bGVzcGFjZV9pZDogaW50CisgICAgOnJldHVybjogZGljdC9Ob25lCisgICAg IiIiCisKKyAgICBzcnZfY29ubmVjdCA9IHNlcnZlcl91dGlscy52ZXJpZnlf c2VydmVyKHRlc3Rlciwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQpCisgICAg aWYgc3J2X2Nvbm5lY3RbJ2RhdGEnXVsnY29ubmVjdGVkJ106CisgICAgICAg IHJlc3BvbnNlID0gdGVzdGVyLmdldCgKKyAgICAgICAgICAgICd7MH17MX0v ezJ9L3szfScuZm9ybWF0KFRBQkxFX1NQQUNFX1VSTCwgc2VydmVyX2dyb3Vw LCBzZXJ2ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0YWJsZXNwYWNlX2lkKSwKKyAgICAgICAgICAgIGNvbnRlbnRfdHlw ZT0naHRtbC9qc29uJykKKyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1 c19jb2RlID09IDIwMAorICAgICAgICB0ZW1wX3Jlc3BvbnNlID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAg cmV0dXJuIHRlbXBfcmVzcG9uc2UKKyAgICBlbHNlOgorICAgICAgICByZXR1 cm4gTm9uZQorCisKK2RlZiBkZWxldGVfdGFibGVfc3BhY2UodGVzdGVyKToK KyAgICAiIiIKKyAgICBUaGlzIGZ1bmN0aW9uIHVzZSB0byBkZWxldGUgdGhl IGV4aXN0aW5nIHRhYmxlc3BhY2UgaW4gdGhlIHNlcnZlcnMKKworICAgIDpw YXJhbSB0ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50CisgICAgOnR5cGUgdGVz dGVyOiBmbGFzayB0ZXN0IG9iamVjdAorICAgIDpyZXR1cm46IE5vbmUKKyAg ICAiIiIKKworICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQorICAgIHNl cnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCisgICAgaWYgInRzaWQiIGluIGFs bF9pZCBhbmQgYWxsX2lkWyJ0c2lkIl06CisgICAgICAgIHRhYmxlc3BhY2Vf aWRzX2RpY3QgPSBhbGxfaWRbInRzaWQiXVswXQorICAgIGVsc2U6CisgICAg ICAgIHRhYmxlc3BhY2VfaWRzX2RpY3QgPSBOb25lCisKKyAgICBpZiB0YWJs ZXNwYWNlX2lkc19kaWN0IGlzIG5vdCBOb25lOgorICAgICAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6CisgICAgICAgICAgICB0YWJsZXNwYWNl X2lkID0gdGFibGVzcGFjZV9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KKyAg ICAgICAgICAgIHJvbGVfcmVzcG9uc2UgPSB2ZXJpZnlfdGFibGVfc3BhY2Uo dGVzdGVyLCB1dGlscy5TRVJWRVJfR1JPVVAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGFibGVzcGFjZV9pZCkKKyAgICAgICAgICAgIGlmIGxlbihyb2xlX3Jlc3Bv bnNlKSA9PSAwOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigi Tm8gdGFibGVzcGFjZShzKSB0byBkZWxldGUhISEiKQorICAgICAgICAgICAg cmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKAorICAgICAgICAgICAgICAgIFRB QkxFX1NQQUNFX1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8n ICsKKyAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSArICcvJyArIHN0 cih0YWJsZXNwYWNlX2lkKSwKKyAgICAgICAgICAgICAgICBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCisgICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2Uuc3Rh dHVzX2NvZGUgPT0gMjAwCisgICAgICAgICAgICBkZWxldGVfcmVzcG9uc2Vf ZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04 JykpCisgICAgICAgICAgICBhc3NlcnQgZGVsZXRlX3Jlc3BvbnNlX2RhdGFb J3N1Y2Nlc3MnXSA9PSAxCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9h ZGQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy90ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkKaW5kZXggMmIxZWI0NS4u NzM0OGE0NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRkLnB5Cisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3Rlc3RzL3Rlc3Rfc2VydmVyX2FkZC5weQpAQCAtNywxMCArNyw5IEBACiAj CiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLWltcG9ydCBq c29uCi0KIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRl c3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGls cyBhcyB1dGlscworZnJvbSAuIGltcG9ydCB1dGlscyBhcyBzZXJ2ZXJfdXRp bHMKIAogCiBjbGFzcyBTZXJ2ZXJzQWRkVGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgpAQCAtMjEsMjQgKzIwLDE3IEBAIGNsYXNzIFNlcnZlcnNBZGRU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICgnRGVmYXVs dCBTZXJ2ZXIgTm9kZSB1cmwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2VydmVy L29iai8nKSkKICAgICBdCiAKLSAgICBkZWYgc2V0VXAoc2VsZik6CisgICAg QGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAg ICAgcGFzcwogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIi IiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWRkIHRoZSBzZXJ2ZXIgdW5kZXIgZGVm YXVsdCBzZXJ2ZXIgZ3JvdXAuIiIiCiAKLSAgICAgICAgc2VydmVyX2dyb3Vw LCBjb25maWdfZGF0YSwgcGlja2xlX2lkX2RpY3QgPSB1dGlscy5nZXRfY29u ZmlnX2RhdGEoKQotICAgICAgICBmb3Igc2VydmVyX2RhdGEgaW4gY29uZmln X2RhdGE6Ci0gICAgICAgICAgICB1cmwgPSAiezB9ezF9LyIuZm9ybWF0KHNl bGYudXJsLCBzZXJ2ZXJfZ3JvdXApCi0gICAgICAgICAgICByZXNwb25zZSA9 IHNlbGYudGVzdGVyLnBvc3QodXJsLCBkYXRhPWpzb24uZHVtcHMoc2VydmVy X2RhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKLQotICAgICAgICAgICAg c2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0K LSAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCkpCi0gICAgICAgICAgICB1dGlscy53cml0ZV9w YXJlbnRfaWQocmVzcG9uc2VfZGF0YSwgcGlja2xlX2lkX2RpY3QpCisgICAg ICAgIHNlcnZlcl91dGlscy5hZGRfc2VydmVyKHNlbGYudGVzdGVyKQogCi0g ICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIEBjbGFzc21ldGhvZAorICAg IGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgICIiIgogICAgICAg ICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVkIHNlcnZlciBhbmQg dGhlICdwYXJlbnRfaWQucGtsJyBmaWxlCiAgICAgICAgIHdoaWNoIGlzIGNy ZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KQEAgLTQ2LDUgKzM4LDUgQEAg Y2xhc3MgU2VydmVyc0FkZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToK ICAgICAgICAgOnJldHVybjogTm9uZQogICAgICAgICAiIiIKIAotICAgICAg ICB1dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICBz ZXJ2ZXJfdXRpbHMuZGVsZXRlX3NlcnZlcihjbHMudGVzdGVyKQogICAgICAg ICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVz dHMvdGVzdF9zZXJ2ZXJfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfZGVs ZXRlLnB5CmluZGV4IDRmZDIwN2IuLjY0MzFiZWMgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3Rz L3Rlc3Rfc2VydmVyX2RlbGV0ZS5weQorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9k ZWxldGUucHkKQEAgLTcsMTIgKzcsMTEgQEAKICMKICMgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAKLWltcG9ydCBqc29uCiAKIGZyb20gcGdhZG1pbi51dGls cy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVz c2lvbiBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSByZWdyZXNz aW9uLnRlc3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhCi1mcm9tIHJlZ3Jl c3Npb24udGVzdF91dGlscyBpbXBvcnQgZ2V0X2lkcworCitmcm9tIC4gaW1w b3J0IHV0aWxzIGFzIHNlcnZlcl91dGlscwogCiAKIGNsYXNzIFNlcnZlckRl bGV0ZVRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKQEAgLTIzLDcgKzIy LDggQEAgY2xhc3MgU2VydmVyRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgogICAgICAgICAoJ0RlZmF1bHQgU2VydmVyIE5vZGUgdXJsJywg ZGljdCh1cmw9Jy9icm93c2VyL3NlcnZlci9vYmovJykpCiAgICAgXQogCi0g ICAgZGVmIHNldFVwKHNlbGYpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRl ZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlz IGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSBzZXJ2ZXIKIApAQCAtMzEs MjggKzMxLDE2IEBAIGNsYXNzIFNlcnZlckRlbGV0ZVRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKICAgICAgICAgIiIiCiAKICAgICAgICAgIyBGaXJz dGx5LCBhZGQgdGhlIHNlcnZlcgotICAgICAgICB1dGlscy5hZGRfc2VydmVy KHNlbGYudGVzdGVyKQorICAgICAgICBzZXJ2ZXJfdXRpbHMuYWRkX3NlcnZl cihjbHMudGVzdGVyKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAg ICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGFsbCBhdmFpbGFibGUg c2VydmVycyB1bmRlciBvYmplY3QgYnJvd3NlcgogICAgICAgICBhbmQgZGVs ZXRlIHRoZSBsYXN0IHNlcnZlciB1c2luZyBzZXJ2ZXIgaWQuIiIiCiAKLSAg ICAgICAgc3J2X2dycCA9IGNvbmZpZ19kYXRhWyd0ZXN0X3NlcnZlcl9ncm91 cCddCi0gICAgICAgIGFsbF9pZCA9IGdldF9pZHMoKQotICAgICAgICBzZXJ2 ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQotCi0gICAgICAgIHVybCA9IHNlbGYu dXJsICsgc3RyKHNydl9ncnApICsgIi8iCi0gICAgICAgIGlmIGxlbihzZXJ2 ZXJfaWRzKSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJO byBzZXJ2ZXIocykgdG8gZGVsZXRlISEhIikKLQotICAgICAgICAjIENhbGwg YXBpIHRvIGRlbGV0ZSB0aGUgc2VydmVycwotICAgICAgICBmb3Igc2VydmVy X2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHNl bGYudGVzdGVyLmRlbGV0ZSh1cmwgKyBzdHIoc2VydmVyX2lkKSkKLSAgICAg ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5zdGF0dXNfY29kZSwg MjAwKQotICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMo cmVzcG9uc2UuZGF0YS5kZWNvZGUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShyZXNwb25zZV9kYXRhWydzdWNjZXNzJ10sIDEpCisgICAgICAg IHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVyKQogCi0g ICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIEBjbGFzc21ldGhvZAorICAg IGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgICIiIgogICAgICAg ICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlICdwYXJlbnRfaWQucGtsJyBm aWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4KICAgICAgICAgc2V0dXAoKSBmdW5j dGlvbi4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2dldC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3Rz L3Rlc3Rfc2VydmVyX2dldC5weQppbmRleCBlYTNjNjNmLi5lNTQxMjQ3IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9nZXQucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVz dF9zZXJ2ZXJfZ2V0LnB5CkBAIC05LDggKzksNyBAQAogCiBmcm9tIHBnYWRt aW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiBmcm9t IHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20g cmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQotZnJv bSByZWdyZXNzaW9uLnRlc3RfdXRpbHMgaW1wb3J0IGdldF9pZHMKK2Zyb20g LiBpbXBvcnQgdXRpbHMgYXMgc2VydmVyX3V0aWxzCiAKIAogY2xhc3MgU2Vy dmVyc0dldFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKQEAgLTI0LDI4 ICsyMywyMyBAQCBjbGFzcyBTZXJ2ZXJzR2V0VGVzdENhc2UoQmFzZVRlc3RH ZW5lcmF0b3IpOgogICAgICAgICAoJ0RlZmF1bHQgU2VydmVyIE5vZGUgdXJs JywgZGljdCh1cmw9Jy9icm93c2VyL3NlcnZlci9vYmovJykpCiAgICAgXQog Ci0gICAgZGVmIHNldFVwKHNlbGYpOgorICAgIEBjbGFzc21ldGhvZAorICAg IGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgICIiIgogICAgICAgICBU aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gYWRkIHRoZSBzZXJ2ZXIKIAogICAg ICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAgICIiIgogCi0gICAgICAgIHV0 aWxzLmFkZF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAgIHNlcnZlcl91 dGlscy5hZGRfc2VydmVyKGNscy50ZXN0ZXIpCiAKICAgICBkZWYgcnVuVGVz dChzZWxmKToKICAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRj aCB0aGUgYWRkZWQgc2VydmVycyB0byBvYmplY3QgYnJvd3Nlci4gIiIiCiAK LSAgICAgICAgYWxsX2lkID0gZ2V0X2lkcygpCi0gICAgICAgIHNlcnZlcl9p ZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgICAgIHNydl9ncnAgPSBjb25maWdf ZGF0YVsndGVzdF9zZXJ2ZXJfZ3JvdXAnXQorICAgICAgICBzZXJ2ZXJfdXRp bHMuZ2V0X3NlcnZlcihzZWxmLnRlc3RlcikKIAotICAgICAgICBmb3Igc2Vy dmVyX2lkIGluIHNlcnZlcl9pZHM6Ci0gICAgICAgICAgICB1cmwgPSAiezB9 ezF9L3syfSIuZm9ybWF0KHNlbGYudXJsLCBzcnZfZ3JwLCBzZXJ2ZXJfaWQp Ci0gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCh1cmws IGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKLSAgICAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCi0KLSAg ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgQGNsYXNzbWV0aG9kCisgICAg ZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKICAgICAgICAgIiIiCiAgICAgICAg IFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgYWRkZWQgc2VydmVyIGFuZCB0 aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUKICAgICAgICAgd2hpY2ggaXMgY3Jl YXRlZCBpbiBzZXR1cCgpIGZ1bmN0aW9uLgpAQCAtNTMsNSArNDcsNSBAQCBj bGFzcyBTZXJ2ZXJzR2V0VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgog ICAgICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAgICIiIgogCi0gICAgICAg IHV0aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAgIHNl cnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50ZXN0ZXIpCiAgICAgICAg IHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0 cy90ZXN0X3NlcnZlcl9wdXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9wdXQucHkK aW5kZXggNWU4MTBiYS4uOWFjNjQ2OCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9z ZXJ2ZXJfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX3B1dC5weQpAQCAt OCwxMCArOCw5IEBACiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAKIGltcG9ydCBqc29uCi0KIGZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbiBpbXBv cnQgdGVzdF91dGlscyBhcyB1dGlscwotZnJvbSByZWdyZXNzaW9uLnRlc3Rf c2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhCitmcm9tIC4gaW1wb3J0IHV0aWxz IGFzIHNlcnZlcl91dGlscwogCiAKIGNsYXNzIFNlcnZlclVwZGF0ZVRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKQEAgLTIyLDcgKzIxLDggQEAgY2xh c3MgU2VydmVyVXBkYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgog ICAgICAgICAoJ0RlZmF1bHQgU2VydmVyIE5vZGUgdXJsJywgZGljdCh1cmw9 Jy9icm93c2VyL3NlcnZlci9vYmovJykpCiAgICAgXQogCi0gICAgZGVmIHNl dFVwKHNlbGYpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENs YXNzKGNscyk6CiAgICAgICAgICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9u IHBlcmZvcm0gdGhlIGZvdXIgdGFza3MKICAgICAgICAgIDEuIEFkZCB0aGUg dGVzdCBzZXJ2ZXIKQEAgLTMzLDEzICszMywxNiBAQCBjbGFzcyBTZXJ2ZXJV cGRhdGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICIi IgogCiAgICAgICAgICMgRmlyc3RseSwgYWRkIHRoZSBzZXJ2ZXIKLSAgICAg ICAgdXRpbHMuYWRkX3NlcnZlcihzZWxmLnRlc3RlcikKKyAgICAgICAgc2Vy dmVyX3V0aWxzLmFkZF9zZXJ2ZXIoY2xzLnRlc3RlcikKKwogICAgICAgICAj IEdldCB0aGUgc2VydmVyCi0gICAgICAgIHV0aWxzLmdldF9zZXJ2ZXIoc2Vs Zi50ZXN0ZXIpCisgICAgICAgIHNlcnZlcl91dGlscy5nZXRfc2VydmVyKGNs cy50ZXN0ZXIpCisKICAgICAgICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAg ICAgICBzZWxmLnNlcnZlcl9jb25uZWN0LCBzZWxmLnNlcnZlcl9ncm91cCwg c2VsZi5zZXJ2ZXJfaWRzID0gXAotICAgICAgICAgICAgdXRpbHMuY29ubmVj dF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCi0gICAgICAgIGlmIGxlbihzZWxmLnNl cnZlcl9jb25uZWN0KSA9PSAwOgorICAgICAgICBjbHMuc2VydmVyX2Nvbm5l Y3QsIGNscy5zZXJ2ZXJfZ3JvdXAsIGNscy5zZXJ2ZXJfaWRzID0gXAorICAg ICAgICAgICAgc2VydmVyX3V0aWxzLmNvbm5lY3Rfc2VydmVyKGNscy50ZXN0 ZXIpCisKKyAgICAgICAgaWYgbGVuKGNscy5zZXJ2ZXJfY29ubmVjdCkgPT0g MDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gU2VydmVyKHMp IGNvbm5lY3RlZCB0byB1cGRhdGUhISEiKQogCiAgICAgZGVmIHJ1blRlc3Qo c2VsZik6CkBAIC00OCw3ICs1MSw4IEBAIGNsYXNzIFNlcnZlclVwZGF0ZVRl c3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgZm9yIHNlcnZl cl9pZCBpbiBzZWxmLnNlcnZlcl9pZHM6CiAgICAgICAgICAgICBkYXRhID0g ewogICAgICAgICAgICAgICAgICJjb21tZW50IjoKLSAgICAgICAgICAgICAg ICAgICAgY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX3VwZGF0ZV9kYXRhJ11b MF1bJ3Rlc3RfY29tbWVudCddLAorICAgICAgICAgICAgICAgICAgICBzZXJ2 ZXJfdXRpbHMuY29uZmlnX2RhdGFbJ3NlcnZlcl91cGRhdGVfZGF0YSddWzBd WworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1lbnQnXSwKICAgICAg ICAgICAgICAgICAiaWQiOiBzZXJ2ZXJfaWQKICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCgKQEAg LTYwLDcgKzY0LDggQEAgY2xhc3MgU2VydmVyVXBkYXRlVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9 IGpzb24ubG9hZHMocHV0X3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCiAgICAg ICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2VfZGF0YVsnc3VjY2Vz cyddLCAxKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgIEBjbGFz c21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAg ICIiIgogICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlIGFkZGVk IHNlcnZlciBhbmQgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlCiAgICAgICAg IHdoaWNoIGlzIGNyZWF0ZWQgaW4gc2V0dXAoKSBmdW5jdGlvbi4KQEAgLTY4 LDUgKzczLDUgQEAgY2xhc3MgU2VydmVyVXBkYXRlVGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgogICAgICAgICA6cmV0dXJuOiBOb25lCiAgICAgICAg ICIiIgogCi0gICAgICAgIHV0aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0 ZXIpCisgICAgICAgIHNlcnZlcl91dGlscy5kZWxldGVfc2VydmVyKGNscy50 ZXN0ZXIpCiAgICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3V0aWxzLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlM2YxNjYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy90ZXN0cy91dGlscy5weQpAQCAtMCwwICsxLDE2MCBAQAor IyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyAjcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyAjQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyAj VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKK2ltcG9ydCBqc29uCitpbXBvcnQgb3MKK2ltcG9ydCBwaWNrbGUKKwor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitm cm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgcGlja2xlX3BhdGgs IGNvbmZpZ19kYXRhCisKK1NFUlZFUl9VUkwgPSAnL2Jyb3dzZXIvc2VydmVy L29iai8nCitTRVJWRVJfQ09OTkVDVF9VUkwgPSAnYnJvd3Nlci9zZXJ2ZXIv Y29ubmVjdC8nCisKKworZGVmIHdyaXRlX3NlcnZlcl9pZChyZXNwb25zZV9k YXRhLCBwaWNrbGVfaWRfZGljdCk6CisgICAgIiIiCisgICAgVGhpcyBmdW5j dGlvbiB3cml0ZXMgdGhlIHNlcnZlcidzIGRldGFpbHMgdG8gZmlsZSBwYXJl bnRfaWQucGtsCisKKyAgICA6cGFyYW0gcmVzcG9uc2VfZGF0YTogc2VydmVy J3MgZGF0YQorICAgIDp0eXBlIHJlc3BvbnNlX2RhdGE6IGxpc3Qgb2YgZGlj dGlvbmFyeQorICAgIDpwYXJhbSBwaWNrbGVfaWRfZGljdDogY29udGFpbnMg aWRzIG9mIHNlcnZlcixkYXRhYmFzZSx0YWJsZXMgZXRjLgorICAgIDp0eXBl IHBpY2tsZV9pZF9kaWN0OiBkaWN0CisgICAgOnJldHVybjogTm9uZQorICAg ICIiIgorCisgICAgc2VydmVyX2lkID0gcmVzcG9uc2VfZGF0YVsnbm9kZSdd WydfaWQnXQorICAgIGlmIG9zLnBhdGguaXNmaWxlKHBpY2tsZV9wYXRoKToK KyAgICAgICAgZXhpc3RlZF9zZXJ2ZXJfaWQgPSBvcGVuKHBpY2tsZV9wYXRo LCAncmInKQorICAgICAgICBwaWNrbGVfaWRfZGljdCA9IHBpY2tsZS5sb2Fk KGV4aXN0ZWRfc2VydmVyX2lkKQorCisgICAgcGlja2xlX2lkX2RpY3RbInNp ZCJdLmFwcGVuZChzdHIoc2VydmVyX2lkKSkKKyAgICBvdXRwdXQgPSBvcGVu KHBpY2tsZV9wYXRoLCAnd2InKQorICAgIHBpY2tsZS5kdW1wKHBpY2tsZV9p ZF9kaWN0LCBvdXRwdXQpCisgICAgb3V0cHV0LmNsb3NlKCkKKworCitkZWYg YWRkX3NlcnZlcih0ZXN0ZXIpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gYWRkIHRoZSBzZXJ2ZXIgaW4gdGhlIGV4aXN0aW5nIHNlcnZlciBncm91 cAorCisgICAgOnBhcmFtIHRlc3RlcjogdGVzdCBvYmplY3QKKyAgICA6dHlw ZSB0ZXN0ZXI6IGZsYXNrIHRlc3Qgb2JqZWN0CisgICAgOnJldHVybjpOb25l CisgICAgIiIiCisKKyAgICBzZXJ2ZXJfZ3JvdXAsIGRiX2RhdGEsIHBpY2ts ZV9pZF9kaWN0ID0gdXRpbHMuZ2V0X2NvbmZpZ19kYXRhKCkKKyAgICB1cmwg PSAiezB9ezF9LyIuZm9ybWF0KFNFUlZFUl9VUkwsIHNlcnZlcl9ncm91cCkK KyAgICBmb3IgZGJfZGV0YWlsIGluIGRiX2RhdGE6CisgICAgICAgIHJlc3Bv bnNlID0gdGVzdGVyLnBvc3QodXJsLCBkYXRhPWpzb24uZHVtcHMoZGJfZGV0 YWlsKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIGFzc2VydCByZXNwb25zZS5z dGF0dXNfY29kZSA9PSAyMDAKKyAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpz b24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisgICAg ICAgIHdyaXRlX3NlcnZlcl9pZChyZXNwb25zZV9kYXRhLCBwaWNrbGVfaWRf ZGljdCkKKworCitkZWYgZ2V0X3NlcnZlcih0ZXN0ZXIpOgorICAgICIiIgor ICAgIFRoaXMgZnVuY3Rpb24gZ2V0cyB0aGUgYWRkZWQgc2VyZXIgZGV0YWls cworCisgICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQgb2JqZWN0Cisg ICAgOnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IG9iamVjdAorICAgIDpyZXR1 cm46IHJlc3BvbnNlX2RhdGEKKyAgICA6cnR5cGU6IGxpc3QKKyAgICAiIiIK KworICAgIGFsbF9pZCA9IHV0aWxzLmdldF9pZHMoKQorICAgIHNlcnZlcl9p ZHMgPSBhbGxfaWRbInNpZCJdCisgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2 ZXJfaWRzOgorICAgICAgICByZXNwb25zZSA9IHRlc3Rlci5nZXQoU0VSVkVS X1VSTCArIHN0cih1dGlscy5TRVJWRVJfR1JPVVApICsgJy8nICsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQorICAgICAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0g MjAwCisKKworZGVmIGNvbm5lY3Rfc2VydmVyKHRlc3Rlcik6CisgICAgIiIi CisgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRvIGNvbm5lY3QgYWRkZWQgc2Vy dmVyCisKKyAgICA6cGFyYW0gdGVzdGVyOnRlc3QgY2xpZW50IG9iamVjdAor ICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBvYmplY3QKKyAgICA6cGFy YW0gYWRkX2RiX2ZsYWc6IGZsYWcgZm9yIGRiIGFkZCB0ZXN0IGNhc2UKKyAg ICA6dHlwZSBhZGRfZGJfZmxhZzogYm9vbAorICAgIDpyZXR1cm46IHNlcnZl cl9jb25uZWN0LCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZAorICAgIDpydHlw ZTogc2VydmVyX2Nvbm5lY3Q6ZGljdCwgc2VydmVyX2dyb3VwOmRpY3QsIHNl cnZlcl9pZDpzdHIKKyAgICAiIiIKKworICAgIHNlcnZlcl9jb25uZWN0ID0g W10KKyAgICBzZXJ2ZXJzID0gW10KKyAgICBzZXJ2ZXJfY29uZmlnID0gTm9u ZQorCisgICAgc3J2X2lkID0gdXRpbHMuZ2V0X2lkcygpCisgICAgc2VydmVy X2lkcyA9IHNydl9pZFsic2lkIl0KKworICAgICMgQ29ubmVjdCB0byBhbGwg c2VydmVycworICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKKyAg ICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChTRVJWRVJfQ09OTkVDVF9V UkwgKyBzdHIodXRpbHMuU0VSVkVSX0dST1VQKSArCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJy8nICsgc2VydmVyX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGljdCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGFzc3dvcmQ9Y29uZmlnX2RhdGEK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydzZXJ2ZXJf Y3JlZGVudGlhbHMnXVswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBbJ2RiX3Bhc3N3b3JkJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICAgICAg c2VydmVyX2Nvbm5lY3RfZGV0YWlsID0ganNvbi5sb2FkcyhyZXNwb25zZS5k YXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgZGJfdXNlciA9IHNlcnZl cl9jb25uZWN0X2RldGFpbFsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAg ICAgICBzZXJ2ZXJfY29ubmVjdF9kZXRhaWxbJ3RhYmxlc3BhY2VfcGF0aCdd ID0gTm9uZQorCisgICAgICAgICMgR2V0IHRoZSBzZXJ2ZXIgY29uZmlnIG9m IGFwcHJvcHJpYXRlIGRiIHVzZXIKKyAgICAgICAgZm9yIGNvbmZpZyBpbiBj b25maWdfZGF0YVsnc2VydmVyX2NyZWRlbnRpYWxzJ106CisgICAgICAgICAg ICBpZiBkYl91c2VyID09IGNvbmZpZ1snZGJfdXNlcm5hbWUnXToKKyAgICAg ICAgICAgICAgICBzZXJ2ZXJfY29uZmlnID0gY29uZmlnCisKKyAgICAgICAg aWYgInRhYmxlc3BhY2VfcGF0aCIgaW4gc2VydmVyX2NvbmZpZzoKKyAgICAg ICAgICAgIHNlcnZlcl9jb25uZWN0X2RldGFpbFsndGFibGVzcGFjZV9wYXRo J10gPSBcCisgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZ1sndGFibGVz cGFjZV9wYXRoJ10KKworICAgICAgICBzZXJ2ZXJfY29ubmVjdC5hcHBlbmQo c2VydmVyX2Nvbm5lY3RfZGV0YWlsKQorICAgICAgICBzZXJ2ZXJzLmFwcGVu ZChzZXJ2ZXJfaWQpCisgICAgcmV0dXJuIHNlcnZlcl9jb25uZWN0LCB1dGls cy5TRVJWRVJfR1JPVVAsIHNlcnZlcnMKKworCitkZWYgdmVyaWZ5X3NlcnZl cih0ZXN0ZXIsIHNlcnZlcl9ncm91cCwgc2VydmVyX2lkKToKKyAgICAiIiJU aGlzIGZ1bmN0aW9uIHZlcmlmaWVzIHRoYXQgc2VydmVyIGlzIGNvbm5lY3Rp bmcgb3Igbm90IiIiCisKKyAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0KAor ICAgICAgICAnezB9ezF9L3syfScuZm9ybWF0KFNFUlZFUl9DT05ORUNUX1VS TCwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQpLAorICAgICAgICBkYXRhPWRp Y3QocGFzc3dvcmQ9Y29uZmlnX2RhdGEKKyAgICAgICAgWydzZXJ2ZXJfY3Jl ZGVudGlhbHMnXVswXQorICAgICAgICBbJ2RiX3Bhc3N3b3JkJ10pLAorICAg ICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgc3J2X2Nvbm5lY3Qg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor ICAgIHJldHVybiBzcnZfY29ubmVjdAorCisKK2RlZiBkZWxldGVfc2VydmVy KHRlc3Rlcik6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRv IGRlbGV0ZSB0aGUgYWRkZWQgc2VydmVycworCisgICAgOnBhcmFtIHRlc3Rl cjogdGVzdCBjbGllbnQgb2JqZWN0CisgICAgOnJldHVybjogTm9uZQorICAg ICIiIgorCisgICAgYWxsX2lkID0gdXRpbHMuZ2V0X2lkcygpCisgICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KKyAgICB1cmwgPSBTRVJWRVJfVVJM ICsgc3RyKHV0aWxzLlNFUlZFUl9HUk9VUCkgKyAiLyIKKworICAgIGlmIGxl bihzZXJ2ZXJfaWRzKSA9PSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24o Ik5vIHNlcnZlcihzKSB0byBkZWxldGUhISEiKQorCisgICAgIyBDYWxsIGFw aSB0byBkZWxldGUgdGhlIHNlcnZlcnMKKyAgICBmb3Igc2VydmVyX2lkIGlu IHNlcnZlcl9pZHM6CisgICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLmRlbGV0 ZSh1cmwgKyBzdHIoc2VydmVyX2lkKSkKKyAgICAgICAgYXNzZXJ0IHJlc3Bv bnNlLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkK KyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAx ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Rlc3RzL3Rlc3Rfc2df Z2V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Rl c3RzL3Rlc3Rfc2dfZ2V0LnB5CmluZGV4IDZjMTY0YmUuLjVkZjY3YzkgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy90 ZXN0cy90ZXN0X3NnX2dldC5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvdGVzdHMvdGVzdF9zZ19nZXQucHkKQEAgLTI2LDcg KzI2LDcgQEAgY2xhc3MgU2dOb2RlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0 b3IpOgogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiJUaGlz IGZ1bmN0aW9uIHdpbGwgY2hlY2sgYXZhaWxhYmxlIHNlcnZlciBncm91cHMu IiIiCiAKLSAgICAgICAgc2VydmVyX2dyb3VwX2lkID0gY29uZmlnX2RhdGFb J3Rlc3Rfc2VydmVyX2dyb3VwJ10KKyAgICAgICAgc2VydmVyX2dyb3VwX2lk ID0gY29uZmlnX2RhdGFbJ3NlcnZlcl9ncm91cCddCiAgICAgICAgIHJlc3Bv bnNlID0gc2VsZi50ZXN0ZXIuZ2V0KHNlbGYudXJsICsgc3RyKHNlcnZlcl9n cm91cF9pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3 b3JkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5n ZV9wYXNzd29yZC5weQppbmRleCAyZjcxNGE3Li41YjdjOTE4IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bh c3N3b3JkLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVz dF9jaGFuZ2VfcGFzc3dvcmQucHkKQEAgLTgsOSArOCwxMiBAQAogIyAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBpbXBvcnQgdXVpZAoraW1w b3J0IGpzb24KIAogZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgogZnJvbSByZWdyZXNzaW9uLnRlc3Rfc2V0dXAg aW1wb3J0IGNvbmZpZ19kYXRhCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRl c3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gdXRpbHMgaW1wb3J0IGNoYW5nZV9w YXNzd29yZAogCiAKIGNsYXNzIENoYW5nZVBhc3N3b3JkVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgpAQCAtMjQsOSArMjcsOSBAQCBjbGFzcyBDaGFu Z2VQYXNzd29yZFRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAg ICAgIyBUaGlzIHRlc3RjYXNlIHZhbGlkYXRlcyBpbnZhbGlkIGNvbmZpcm1h dGlvbiBwYXNzd29yZAogICAgICAgICAoJ1Rlc3RDYXNlIGZvciBWYWxpZGF0 aW5nIEluY29ycmVjdF9OZXdfUGFzc3dvcmQnLCBkaWN0KAogICAgICAgICAg ICAgcGFzc3dvcmQ9KGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVk ZW50aWFscyddCi0gICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2xvZ2lu X3Bhc3N3b3JkJ10pLAorICAgICAgICAgICAgICAgICAgICAgIFsnbG9naW5f cGFzc3dvcmQnXSksCiAgICAgICAgICAgICBuZXdfcGFzc3dvcmQ9KGNvbmZp Z19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddCi0gICAgICAg ICAgICAgICAgICAgICAgICAgIFsndGVzdF9uZXdfcGFzc3dvcmQnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgIFsnbmV3X3Bhc3N3b3JkJ10pLAog ICAgICAgICAgICAgbmV3X3Bhc3N3b3JkX2NvbmZpcm09c3RyKHV1aWQudXVp ZDQoKSlbNDo4XSwKICAgICAgICAgICAgIHJlc3BkYXRhPSdQYXNzd29yZHMg ZG8gbm90IG1hdGNoJykpLAogCkBAIC0zNCw3ICszNyw3IEBAIGNsYXNzIENo YW5nZVBhc3N3b3JkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAg ICAgICAjIG1pbmltdW0gbGVuZ3RoCiAgICAgICAgICgnVGVzdENhc2UgZm9y IFZhbGlkYXRpbmcgTmV3X1Bhc3N3b3JkX0xlc3NfVGhhbl9NaW5fTGVuZ3Ro JywKICAgICAgICAgIGRpY3QocGFzc3dvcmQ9KGNvbmZpZ19kYXRhWydwZ0Fk bWluNF9sb2dpbl9jcmVkZW50aWFscyddCi0gICAgICAgICAgICAgICAgICAg ICAgICBbJ3Rlc3RfbG9naW5fcGFzc3dvcmQnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICBbJ2xvZ2luX3Bhc3N3b3JkJ10pLAogICAgICAgICAgICAg ICBuZXdfcGFzc3dvcmQ9c3RyKHV1aWQudXVpZDQoKSlbNDo4XSwKICAgICAg ICAgICAgICAgbmV3X3Bhc3N3b3JkX2NvbmZpcm09c3RyKHV1aWQudXVpZDQo KSlbNDo4XSwKICAgICAgICAgICAgICAgcmVzcGRhdGE9J1Bhc3N3b3JkIG11 c3QgYmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzJykpLApAQCAtNDIsNyArNDUs NyBAQCBjbGFzcyBDaGFuZ2VQYXNzd29yZFRlc3RDYXNlKEJhc2VUZXN0R2Vu ZXJhdG9yKToKICAgICAgICAgIyBUaGlzIHRlc3RjYXNlIHZhbGlkYXRlcyBp ZiBib3RoIHBhc3N3b3JkIGZpZWxkcyBhcmUgbGVmdCBibGFuawogICAgICAg ICAoJ1Rlc3RDYXNlIGZvciBWYWxpZGF0aW5nIEVtcHR5X05ld19QYXNzd29y ZCcsIGRpY3QoCiAgICAgICAgICAgICBwYXNzd29yZD0oY29uZmlnX2RhdGFb J3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10KLSAgICAgICAgICAgICAg ICAgICAgICBbJ3Rlc3RfbG9naW5fcGFzc3dvcmQnXSksCisgICAgICAgICAg ICAgICAgICAgICAgWydsb2dpbl9wYXNzd29yZCddKSwKICAgICAgICAgICAg IG5ld19wYXNzd29yZD0nJywgbmV3X3Bhc3N3b3JkX2NvbmZpcm09JycsCiAg ICAgICAgICAgICByZXNwZGF0YT0nUGFzc3dvcmQgbm90IHByb3ZpZGVkJykp LAogCkBAIC01MCw1NyArNTMsNjYgQEAgY2xhc3MgQ2hhbmdlUGFzc3dvcmRU ZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICgnVGVzdENh c2UgZm9yIFZhbGlkYXRpbmcgSW5jb3JyZWN0X0N1cnJlbnRfUGFzc3dvcmQn LCBkaWN0KAogICAgICAgICAgICAgcGFzc3dvcmQ9c3RyKHV1aWQudXVpZDQo KSlbNDo4XSwKICAgICAgICAgICAgIG5ld19wYXNzd29yZD0oY29uZmlnX2Rh dGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10KLSAgICAgICAgICAg ICAgICAgICAgICAgICAgWyd0ZXN0X25ld19wYXNzd29yZCddKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgWyduZXdfcGFzc3dvcmQnXSksCiAgICAg ICAgICAgICBuZXdfcGFzc3dvcmRfY29uZmlybT0oCiAgICAgICAgICAgICAg ICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10K LSAgICAgICAgICAgICAgICBbJ3Rlc3RfbmV3X3Bhc3N3b3JkJ10pLAorICAg ICAgICAgICAgICAgIFsnbmV3X3Bhc3N3b3JkJ10pLAogICAgICAgICAgICAg cmVzcGRhdGE9J0ludmFsaWQgcGFzc3dvcmQnKSksCiAKLSAgICAgICAgIyBU aGlzIHRlc3RjYXNlIGNoZWNrcyBmb3IgdmFsaWQgcGFzc3dvcmQKKyAgICAg ICAgIyBUaGlzIHRlc3QgY2FzZSBjaGVja3MgZm9yIHZhbGlkIHBhc3N3b3Jk CiAgICAgICAgICgnVGVzdENhc2UgZm9yIENoYW5naW5nIFZhbGlkX1Bhc3N3 b3JkJywgZGljdCgKLSAgICAgICAgICAgIHBhc3N3b3JkPShjb25maWdfZGF0 YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXQotICAgICAgICAgICAg ICAgICAgICAgIFsndGVzdF9sb2dpbl9wYXNzd29yZCddKSwKLSAgICAgICAg ICAgIG5ld19wYXNzd29yZD0oY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2lu X2NyZWRlbnRpYWxzJ10KLSAgICAgICAgICAgICAgICAgICAgICAgICAgWyd0 ZXN0X25ld19wYXNzd29yZCddKSwKLSAgICAgICAgICAgIG5ld19wYXNzd29y ZF9jb25maXJtPSgKLSAgICAgICAgICAgICAgICBjb25maWdfZGF0YVsncGdB ZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXQotICAgICAgICAgICAgICAgIFsn dGVzdF9uZXdfcGFzc3dvcmQnXSksCi0gICAgICAgICAgICByZXNwZGF0YT0n WW91IHN1Y2Nlc3NmdWxseSBjaGFuZ2VkIHlvdXIgcGFzc3dvcmQuJykpLAot ICAgICAgICAoJ1JlYXNzaWduaW5nX1Bhc3N3b3JkJywgZGljdCgKLSAgICAg ICAgICAgIHRlc3RfY2FzZT0ncmVhc3NpZ25pbmdfcGFzc3dvcmQnLAotICAg ICAgICAgICAgcGFzc3dvcmQ9KGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dp bl9jcmVkZW50aWFscyddCi0gICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0 X25ld19wYXNzd29yZCddKSwKLSAgICAgICAgICAgIG5ld19wYXNzd29yZD0o Y29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2xvZ2luX3Bhc3N3b3Jk J10pLAorICAgICAgICAgICAgdmFsaWRfcGFzc3dvcmQ9J3JlYXNzaWduaW5n X3Bhc3N3b3JkJywKKyAgICAgICAgICAgIHVzZXJuYW1lPShjb25maWdfZGF0 YVsncGdBZG1pbjRfdGVzdF91c2VyX2NyZWRlbnRpYWxzJ10KKyAgICAgICAg ICAgICAgICAgICAgICBbJ2xvZ2luX3VzZXJuYW1lJ10pLAorICAgICAgICAg ICAgcGFzc3dvcmQ9KGNvbmZpZ19kYXRhWydwZ0FkbWluNF90ZXN0X3VzZXJf Y3JlZGVudGlhbHMnXQorICAgICAgICAgICAgICAgICAgICAgIFsnbG9naW5f cGFzc3dvcmQnXSksCisgICAgICAgICAgICBuZXdfcGFzc3dvcmQ9KGNvbmZp Z19kYXRhWydwZ0FkbWluNF90ZXN0X3VzZXJfY3JlZGVudGlhbHMnXQorICAg ICAgICAgICAgICAgICAgICAgICAgICBbJ25ld19wYXNzd29yZCddKSwKICAg ICAgICAgICAgIG5ld19wYXNzd29yZF9jb25maXJtPSgKLSAgICAgICAgICAg ICAgICBjb25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMn XQotICAgICAgICAgICAgICAgIFsndGVzdF9sb2dpbl9wYXNzd29yZCddKSwK KyAgICAgICAgICAgICAgICBjb25maWdfZGF0YVsncGdBZG1pbjRfdGVzdF91 c2VyX2NyZWRlbnRpYWxzJ10KKyAgICAgICAgICAgICAgICBbJ25ld19wYXNz d29yZCddKSwKICAgICAgICAgICAgIHJlc3BkYXRhPSdZb3Ugc3VjY2Vzc2Z1 bGx5IGNoYW5nZWQgeW91ciBwYXNzd29yZC4nKSkKLQogICAgIF0KIAorICAg IEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAg ICAgIHBhc3MKKwogICAgIGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAi IiJUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgY2hhbmdlIHBhc3N3b3JkIGZ1 bmN0aW9uYWxpdHkuIiIiCiAKLSAgICAgICAgIyBDaGVjayBmb3IgJ3Rlc3Rf Y2FzZScgZXhpc3RzIGluIHNlbGYgRm9yIHJlYXNzaWduaW5nIHRoZSBwYXNz d29yZC4KLSAgICAgICAgIyBQYXNzd29yZCBnZXRzIGNoYW5nZSBpbiBjaGFu Z2UgcGFzc3dvcmQgdGVzdCBjYXNlLgotICAgICAgICBpZiAndGVzdF9jYXNl JyBpbiBkaXIoc2VsZik6Ci0gICAgICAgICAgICBlbWFpbCA9IFwKLSAgICAg ICAgICAgICAgICBjb25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVu dGlhbHMnXVsKLSAgICAgICAgICAgICAgICAgICAgJ3Rlc3RfbG9naW5fdXNl cm5hbWUnXQotICAgICAgICAgICAgcGFzc3dvcmQgPSBcCi0gICAgICAgICAg ICAgICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxz J11bCi0gICAgICAgICAgICAgICAgICAgICd0ZXN0X25ld19wYXNzd29yZCdd CisgICAgICAgICMgQ2hlY2sgZm9yICd2YWxpZF9wYXNzd29yZCcgZXhpc3Rz IGluIHNlbGYgdG8gdGVzdCAndmFsaWQgcGFzc3dvcmQnCisgICAgICAgICMg dGVzdCBjYXNlCisgICAgICAgIGlmICd2YWxpZF9wYXNzd29yZCcgaW4gZGly KHNlbGYpOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5w b3N0KCcvdXNlcl9tYW5hZ2VtZW50L3VzZXIvJywgZGF0YT1kaWN0KAorICAg ICAgICAgICAgICAgIGVtYWlsPXNlbGYudXNlcm5hbWUsIG5ld1Bhc3N3b3Jk PXNlbGYucGFzc3dvcmQsCisgICAgICAgICAgICAgICAgY29uZmlybVBhc3N3 b3JkPXNlbGYucGFzc3dvcmQsIGFjdGl2ZT0xLCByb2xlPSIyIiksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3Jl ZGlyZWN0cz1UcnVlKQorICAgICAgICAgICAgdXNlcl9pZCA9IGpzb24ubG9h ZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0Zi04JykpWydpZCddCisKKyAg ICAgICAgICAgICMgTG9nb3V0IHRoZSBBZG1pbmlzdHJhdG9yIGJlZm9yZSBs b2dpbiBub3JtYWwgdXNlcgorICAgICAgICAgICAgdXRpbHMubG9nb3V0X3Rl c3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQorCiAgICAgICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLnBvc3QoJy9sb2dpbicsIGRhdGE9ZGljdCgK LSAgICAgICAgICAgICAgICBlbWFpbD1lbWFpbCwgcGFzc3dvcmQ9cGFzc3dv cmQpLCBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0KLSAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5nZXQoJy9jaGFuZ2UnLCBmb2xsb3dfcmVkaXJl Y3RzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BnQWRtaW4gNCBQ YXNzd29yZCBDaGFuZ2UnLCByZXNwb25zZS5kYXRhLmRlY29kZSgKLSAgICAg ICAgICAgICd1dGYtOCcpKQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi50 ZXN0ZXIucG9zdCgnL2NoYW5nZScsIGRhdGE9ZGljdCgKLSAgICAgICAgICAg IHBhc3N3b3JkPXNlbGYucGFzc3dvcmQsCi0gICAgICAgICAgICBuZXdfcGFz c3dvcmQ9c2VsZi5uZXdfcGFzc3dvcmQsCi0gICAgICAgICAgICBuZXdfcGFz c3dvcmRfY29uZmlybT1zZWxmLm5ld19wYXNzd29yZF9jb25maXJtKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRp cmVjdHM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlc3Bk YXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAg ICAgICAgICBlbWFpbD1zZWxmLnVzZXJuYW1lLCBwYXNzd29yZD1zZWxmLnBh c3N3b3JkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgICAgICBhc3Nl cnQgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgPT0gMjAwCisKKyAgICAgICAgICAg ICMgdGVzdCB0aGUgJ2NoYW5nZSBwYXNzd29yZCcgdGVzdCBjYXNlCisgICAg ICAgICAgICBjaGFuZ2VfcGFzc3dvcmQoc2VsZikKKworICAgICAgICAgICAg IyBEZWxldGUgdGhlIG5vcm1hbCB1c2VyIGFmdGVyIGNoYW5naW5nIGl0J3Mg cGFzc3dvcmQKKyAgICAgICAgICAgIHV0aWxzLmxvZ291dF90ZXN0ZXJfYWNj b3VudChzZWxmLnRlc3RlcikKKworICAgICAgICAgICAgIyBMb2dpbiB0aGUg QWRtaW5pc3RyYXRvciBiZWZvcmUgZGVsZXRpbmcgbm9ybWFsIHVzZXIKKyAg ICAgICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVz dGVyKQorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxl dGUoCisgICAgICAgICAgICAgICAgJy91c2VyX21hbmFnZW1lbnQvdXNlci8n ICsgc3RyKHVzZXJfaWQpLAorICAgICAgICAgICAgICAgIGZvbGxvd19yZWRp cmVjdHM9VHJ1ZSkKKyAgICAgICAgICAgIGFzc2VydCByZXNwb25zZS5zdGF0 dXNfY29kZSA9PSAyMDAKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNo YW5nZV9wYXNzd29yZChzZWxmKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAg ZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgdXRpbHMubG9naW5f dGVzdGVyX2FjY291bnQoY2xzLnRlc3RlcikKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dpbi5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dpbi5weQppbmRleCBiMGVhMzYx Li5mNmJjNmI1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rl c3RzL3Rlc3RfbG9naW4ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90 ZXN0cy90ZXN0X2xvZ2luLnB5CkBAIC0yNCwyMCArMjQsMjAgQEAgY2xhc3Mg TG9naW5UZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICMg VGhpcyB0ZXN0IGNhc2UgdmFsaWRhdGVzIHRoZSBpbnZhbGlkL2luY29ycmVj dCBwYXNzd29yZAogICAgICAgICAoJ1Rlc3RDYXNlIGZvciBDaGVja2luZyBJ bnZhbGlkX1Bhc3N3b3JkJywgZGljdCgKICAgICAgICAgICAgIGVtYWlsPShj b25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXQotICAg ICAgICAgICAgICAgICAgIFsndGVzdF9sb2dpbl91c2VybmFtZSddKSwKKyAg ICAgICAgICAgICAgICAgICBbJ2xvZ2luX3VzZXJuYW1lJ10pLAogICAgICAg ICAgICAgcGFzc3dvcmQ9c3RyKHV1aWQudXVpZDQoKSlbNDo4XSwKICAgICAg ICAgICAgIHJlc3BkYXRhPSdJbnZhbGlkIHBhc3N3b3JkJykpLAogCiAgICAg ICAgICMgVGhpcyB0ZXN0IGNhc2UgdmFsaWRhdGVzIHRoZSBlbXB0eSBwYXNz d29yZCBmaWVsZAogICAgICAgICAoJ0VtcHR5X1Bhc3N3b3JkJywgZGljdCgK ICAgICAgICAgICAgIGVtYWlsPShjb25maWdfZGF0YVsncGdBZG1pbjRfbG9n aW5fY3JlZGVudGlhbHMnXQotICAgICAgICAgICAgICAgICAgIFsndGVzdF9s b2dpbl91c2VybmFtZSddKSwgcGFzc3dvcmQ9JycsCisgICAgICAgICAgICAg ICAgICAgWydsb2dpbl91c2VybmFtZSddKSwgcGFzc3dvcmQ9JycsCiAgICAg ICAgICAgICByZXNwZGF0YT0nUGFzc3dvcmQgbm90IHByb3ZpZGVkJykpLAog CiAgICAgICAgICMgVGhpcyB0ZXN0IGNhc2UgdmFsaWRhdGVzIGJsYW5rIGVt YWlsIGZpZWxkCiAgICAgICAgICgnRW1wdHlfRW1haWwnLCBkaWN0KAogICAg ICAgICAgICAgZW1haWw9JycsIHBhc3N3b3JkPShjb25maWdfZGF0YVsncGdB ZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbJ3Rlc3RfbG9naW5fcGFzc3dvcmQnXSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnbG9naW5fcGFzc3dvcmQn XSksCiAgICAgICAgICAgICByZXNwZGF0YT0nRW1haWwgbm90IHByb3ZpZGVk JykpLAogCiAgICAgICAgICMgVGhpcyB0ZXN0IGNhc2UgdmFsaWRhdGVzIGVt cHR5IGVtYWlsIGFuZCBwYXNzd29yZApAQCAtNDksNyArNDksNyBAQCBjbGFz cyBMb2dpblRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAg KCdJbnZhbGlkX0VtYWlsJywgZGljdCgKICAgICAgICAgICAgIGVtYWlsPXN0 cih1dWlkLnV1aWQ0KCkpWzE6Nl0gKyAnQHh5ei5jb20nLAogICAgICAgICAg ICAgcGFzc3dvcmQ9KGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVk ZW50aWFscyddCi0gICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X2xvZ2lu X3Bhc3N3b3JkJ10pLAorICAgICAgICAgICAgICAgICAgICAgIFsnbG9naW5f cGFzc3dvcmQnXSksCiAgICAgICAgICAgICByZXNwZGF0YT0nU3BlY2lmaWVk IHVzZXIgZG9lcyBub3QgZXhpc3QnKSksCiAKICAgICAgICAgIyBUaGlzIHRl c3QgY2FzZSB2YWxpZGF0ZXMgaW52YWxpZCBlbWFpbCBhbmQgcGFzc3dvcmQK QEAgLTYyLDIxICs2MiwyMiBAQCBjbGFzcyBMb2dpblRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKICAgICAgICAgIyB0byBsb2dpbiBwZ0FkbWluIDQK ICAgICAgICAgKCdWYWxpZF9DcmVkZW50aWFscycsIGRpY3QoCiAgICAgICAg ICAgICBlbWFpbD0oY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRl bnRpYWxzJ10KLSAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfbG9naW5fdXNl cm5hbWUnXSksCisgICAgICAgICAgICAgICAgICAgWydsb2dpbl91c2VybmFt ZSddKSwKICAgICAgICAgICAgIHBhc3N3b3JkPShjb25maWdfZGF0YVsncGdB ZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXQotICAgICAgICAgICAgICAgICAg ICAgIFsndGVzdF9sb2dpbl9wYXNzd29yZCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICBbJ2xvZ2luX3Bhc3N3b3JkJ10pLAogICAgICAgICAgICAgcmVz cGRhdGE9J0dyYXZhdGFyIGltYWdlIGZvciAlcycgJQogICAgICAgICAgICAg ICAgICAgICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRp YWxzJ10KLSAgICAgICAgICAgICAgICAgICAgIFsndGVzdF9sb2dpbl91c2Vy bmFtZSddKSkKKyAgICAgICAgICAgICAgICAgICAgIFsnbG9naW5fdXNlcm5h bWUnXSkpCiAgICAgXQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgorICAgIEBj bGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAg ICIiIgogICAgICAgICBXZSBuZWVkIHRvIGxvZ291dCB0aGUgdGVzdCBjbGll bnQgYXMgd2UgYXJlIHRlc3Rpbmcgc2NlbmFyaW9zIG9mCiAgICAgICAgIGxv Z2dpbmcgaW4gdGhlIGNsaWVudCBsaWtlIGludmFsaWQgcGFzc3dvcmQsIGlu dmFsaWQgZW1haWxzLAogICAgICAgICBlbXB0eSBjcmVkZW50aWFscyBldGMu CiAgICAgICAgICIiIgotICAgICAgICB1dGlscy5sb2dvdXRfdGVzdGVyX2Fj Y291bnQoc2VsZi50ZXN0ZXIpCisgICAgICAgIHV0aWxzLmxvZ291dF90ZXN0 ZXJfYWNjb3VudChjbHMudGVzdGVyKQogCiAgICAgZGVmIHJ1blRlc3Qoc2Vs Zik6CiAgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gY2hlY2tzIGxvZ2luIGZ1 bmN0aW9uYWxpdHkuIiIiCkBAIC04Niw5ICs4NywxMCBAQCBjbGFzcyBMb2dp blRlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK ICAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxmLnJlc3BkYXRhLCByZXNwb25z ZS5kYXRhLmRlY29kZSgndXRmOCcpKQogCi0gICAgZGVmIHRlYXJEb3duKHNl bGYpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNz KGNscyk6CiAgICAgICAgICIiIgogICAgICAgICBXZSBuZWVkIHRvIGFnYWlu IGxvZ2luIHRoZSB0ZXN0IGNsaWVudCBhcyBzb29uIGFzIHRlc3Qgc2NlbmFy aW9zCiAgICAgICAgIGZpbmlzaGVzLgogICAgICAgICAiIiIKLSAgICAgICAg dXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQoc2VsZi50ZXN0ZXIpCisgICAg ICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KGNscy50ZXN0ZXIpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9n b3V0LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xvZ291 dC5weQppbmRleCA3MjlmN2IxLi41Njk3ZGU2IDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9nb3V0LnB5CisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dvdXQucHkKQEAgLTI0 LDcgKzI0LDggQEAgY2xhc3MgTG9nb3V0VGVzdChCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICgnTG9nZ2luZyBPdXQnLCBkaWN0KHJlc3BkYXRhPSdS ZWRpcmVjdGluZy4uLicpKQogICAgIF0KIAotICAgIGRlZiBzZXRVcChzZWxm KToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMp OgogICAgICAgICBwYXNzCiAKICAgICBkZWYgcnVuVGVzdChzZWxmKToKQEAg LTMzLDkgKzM0LDEwIEBAIGNsYXNzIExvZ291dFRlc3QoQmFzZVRlc3RHZW5l cmF0b3IpOgogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgn L2xvZ291dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZXNwZGF0 YSwgcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0ZjgnKSkKIAotICAgIGRlZiB0 ZWFyRG93bihzZWxmKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVh ckRvd25DbGFzcyhjbHMpOgogICAgICAgICAiIiIKICAgICAgICAgV2UgbmVl ZCB0byBhZ2FpbiBsb2dpbiB0aGUgdGVzdCBjbGllbnQgYXMgc29vbiBhcyB0 ZXN0IHNjZW5hcmlvcwogICAgICAgICBmaW5pc2hlcy4KICAgICAgICAgIiIi Ci0gICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVz dGVyKQorICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChjbHMu dGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0 cy90ZXN0X3Jlc2V0X3Bhc3N3b3JkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci90ZXN0cy90ZXN0X3Jlc2V0X3Bhc3N3b3JkLnB5CmluZGV4IDk0MjBjNzIu LjBkY2YwYmQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVz dHMvdGVzdF9yZXNldF9wYXNzd29yZC5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3Rlc3RzL3Rlc3RfcmVzZXRfcGFzc3dvcmQucHkKQEAgLTM0LDEx ICszNCwxMiBAQCBjbGFzcyBSZXNldFBhc3N3b3JkVGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgogICAgICAgICAjIFRoaXMgdGVzdCBjYXNlIHZhbGlk YXRlcyB0aGUgdmFsaWQgZW1haWwgaWQKICAgICAgICAgKCdUZXN0Q2FzZSBm b3IgVmFsaWRhdGluZyBWYWxpZF9FbWFpbCcsIGRpY3QoCiAgICAgICAgICAg ICBlbWFpbD1jb25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlh bHMnXQotICAgICAgICAgICAgWyd0ZXN0X2xvZ2luX3VzZXJuYW1lJ10sIHJl c3BkYXRhPSdwZ0FkbWluIDQnKSkKKyAgICAgICAgICAgIFsnbG9naW5fdXNl cm5hbWUnXSwgcmVzcGRhdGE9J3BnQWRtaW4gNCcpKQogICAgIF0KIAotICAg IGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgbG9nb3V0X3Rlc3Rlcl9hY2Nv dW50KHNlbGYudGVzdGVyKQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBz ZXRVcENsYXNzKGNscyk6CisgICAgICAgIGxvZ291dF90ZXN0ZXJfYWNjb3Vu dChjbHMudGVzdGVyKQogCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAg ICAgICIiIlRoaXMgZnVuY3Rpb24gY2hlY2tzIHJlc2V0IHBhc3N3b3JkIGZ1 bmN0aW9uYWxpdHkuIiIiCkBAIC01MSw1ICs1Miw2IEBAIGNsYXNzIFJlc2V0 UGFzc3dvcmRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg ICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCiAgICAgICAgIHNlbGYuYXNz ZXJ0SW4oc2VsZi5yZXNwZGF0YSwgcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0 Zi04JykpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGxv Z2luX3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQorICAgIEBjbGFzc21l dGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGxv Z2luX3Rlc3Rlcl9hY2NvdW50KGNscy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3V0aWxzLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci90ZXN0cy91dGlscy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4xODU0OGNlCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy91dGlscy5weQpAQCAtMCwwICsx LDIxIEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisj ICNwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjICNDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisjICNUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCitkZWYgY2hhbmdlX3Bhc3N3b3JkKHNlbGYpOgorICAg IHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZ2V0KCcvY2hhbmdlJywgZm9sbG93 X3JlZGlyZWN0cz1UcnVlKQorICAgIHNlbGYuYXNzZXJ0SW4oJ3BnQWRtaW4g NCBQYXNzd29yZCBDaGFuZ2UnLCByZXNwb25zZS5kYXRhLmRlY29kZSgKKyAg ICAgICAgJ3V0Zi04JykpCisKKyAgICByZXNwb25zZSA9IHNlbGYudGVzdGVy LnBvc3QoJy9jaGFuZ2UnLCBkYXRhPWRpY3QoCisgICAgICAgIHBhc3N3b3Jk PXNlbGYucGFzc3dvcmQsCisgICAgICAgIG5ld19wYXNzd29yZD1zZWxmLm5l d19wYXNzd29yZCwKKyAgICAgICAgbmV3X3Bhc3N3b3JkX2NvbmZpcm09c2Vs Zi5uZXdfcGFzc3dvcmRfY29uZmlybSksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKKyAgICBzZWxm LmFzc2VydEluKHNlbGYucmVzcGRhdGEsIHJlc3BvbnNlLmRhdGEuZGVjb2Rl KCd1dGYtOCcpKQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL3JvdXRlLnB5IGIvd2ViL3BnYWRt aW4vdXRpbHMvcm91dGUucHkKaW5kZXggYzdlZjFmOC4uMDIyNmU4ZCAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkKKysrIGIvd2Vi L3BnYWRtaW4vdXRpbHMvcm91dGUucHkKQEAgLTg0LDUgKzg0LDYgQEAgY2xh c3MgQmFzZVRlc3RHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgogICAg ICAgICBzZWxmLmFwcCA9IGFwcAogCiAgICAgIyBJbml0aWFsaXppbmcgdGVz dF9jbGllbnQuCi0gICAgZGVmIHNldFRlc3RDbGllbnQoc2VsZiwgdGVzdF9j bGllbnQpOgotICAgICAgICBzZWxmLnRlc3RlciA9IHRlc3RfY2xpZW50Cisg ICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFRlc3RDbGllbnQoY2xzLCB0 ZXN0X2NsaWVudCk6CisgICAgICAgIGNscy50ZXN0ZXIgPSB0ZXN0X2NsaWVu dApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9hZHZhbmNlZF9j b25maWcuanNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfYWR2YW5jZWRf Y29uZmlnLmpzb24uaW4KaW5kZXggYzBkMjc4Yi4uZmM4ZDk4ZiAxMDA2NDQK LS0tIGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9hZHZhbmNlZF9jb25maWcuanNv bi5pbgorKysgYi93ZWIvcmVncmVzc2lvbi90ZXN0X2FkdmFuY2VkX2NvbmZp Zy5qc29uLmluCkBAIC0xLDcgKzEsNyBAQAogewotICAidGVzdF9hZGRfZGF0 YWJhc2VfZGF0YSI6IFsKKyAgImFkZF9kYXRhYmFzZV9kYXRhIjogWwogICAg ewotICAgICJ0ZXN0X3ByaXZpbGVnZXNfYWNsIjogWworICAgICJwcml2aWxl Z2VzX2FjbCI6IFsKICAgICAgIHsKICAgICAgICAgImdyYW50ZWUiOiAicG9z dGdyZXMiLAogICAgICAgICAiZ3JhbnRvciI6ICJwb3N0Z3JlcyIsCkBAIC0x OSw5ICsxOSw5IEBACiAgICAgICAgIF0KICAgICAgIH0KICAgICBdLAotICAg ICJ0ZXN0X2Nvbm5fbGltaXQiOiAtMSwKLSAgICAidGVzdF9vd25lciI6ICJw b3N0Z3JlcyIsCi0gICAgInRlc3RfZnVuX2FjbCI6IFsKKyAgICAiY29ubl9s aW1pdCI6IC0xLAorICAgICJvd25lciI6ICJwb3N0Z3JlcyIsCisgICAgImZ1 bl9hY2wiOiBbCiAgICAgICB7CiAgICAgICAgICJncmFudGVlIjogInBvc3Rn cmVzIiwKICAgICAgICAgImdyYW50b3IiOiAicG9zdGdyZXMiLApAQCAtMzQs NyArMzQsNyBAQAogICAgICAgICBdCiAgICAgICB9CiAgICAgXSwKLSAgICAi dGVzdF9zZXFfYWNsIjogWworICAgICJzZXFfYWNsIjogWwogICAgICAgewog ICAgICAgICAiZ3JhbnRlZSI6ICJwb3N0Z3JlcyIsCiAgICAgICAgICJncmFu dG9yIjogInBvc3RncmVzIiwKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAg XQogICAgICAgfQogICAgIF0sCi0gICAgInRlc3RfdGJsX2FjbCI6IFsKKyAg ICAidGJsX2FjbCI6IFsKICAgICAgIHsKICAgICAgICAgImdyYW50ZWUiOiAi cG9zdGdyZXMiLAogICAgICAgICAiZ3JhbnRvciI6ICJwb3N0Z3JlcyIsCkBA IC03NSw3ICs3NSw3IEBACiAgICAgICAgIF0KICAgICAgIH0KICAgICBdLAot ICAgICJ0ZXN0X3R5cGVfYWNsIjogWworICAgICJ0eXBlX2FjbCI6IFsKICAg ICAgIHsKICAgICAgICAgImdyYW50ZWUiOiAicG9zdGdyZXMiLAogICAgICAg ICAiZ3JhbnRvciI6ICJwb3N0Z3JlcyIsCkBAIC04OCwxMTIgKzg4LDYwIEBA CiAgICAgICAgIF0KICAgICAgIH0KICAgICBdLAotICAgICJ0ZXN0X2VuY29k aW5nIjogIlVURjgiLAotICAgICJ0ZXN0X25hbWUiOiAidGVzdF9kYl9hdXRv bWF0aW9uIiwKLSAgICAidGVzdF9wcml2aWxlZ2VzIjogW10sCi0gICAgInRl c3Rfc2VjdXJpdGllcyI6IFtdLAotICAgICJ0ZXN0X3ZhcmlhYmxlcyI6IFtd Ci0gIH0sCi0gICAgICAgewotICAgICAgICAgInRlc3RfcHJpdmlsZWdlc19h Y2wiOiBbCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAiZ3JhbnRlZSI6 ICJlbnRlcnByaXNlZGIiLAotICAgICAgICAgICAgICJncmFudG9yIjogImVu dGVycHJpc2VkYiIsCi0gICAgICAgICAgICAgInByaXZpbGVnZXMiOiBbCi0g ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICJwcml2aWxlZ2Vf dHlwZSI6ICJDIiwKLSAgICAgICAgICAgICAgICAgInByaXZpbGVnZSI6IHRy dWUsCi0gICAgICAgICAgICAgICAgICJ3aXRoX2dyYW50IjogdHJ1ZQotICAg ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgInByaXZpbGVnZV90eXBlIjogIlQiLAotICAgICAgICAgICAgICAg ICAicHJpdmlsZWdlIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIndpdGhf Z3JhbnQiOiBmYWxzZQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg IF0KLSAgICAgICAgICAgfQotICAgICAgICAgXSwKLSAgICAgICAgICJ0ZXN0 X2Nvbm5fbGltaXQiOiAtMSwKLSAgICAgICAgICJ0ZXN0X293bmVyIjogImVu dGVycHJpc2VkYiIsCi0gICAgICAgICAidGVzdF9mdW5fYWNsIjogWwotICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgImdyYW50ZWUiOiAiZW50ZXJwcmlz ZWRiIiwKLSAgICAgICAgICAgICAiZ3JhbnRvciI6ICJlbnRlcnByaXNlZGIi LAotICAgICAgICAgICAgICJwcml2aWxlZ2VzIjogWwotICAgICAgICAgICAg ICAgewotICAgICAgICAgICAgICAgICAicHJpdmlsZWdlX3R5cGUiOiAiWCIs Ci0gICAgICAgICAgICAgICAgICJwcml2aWxlZ2UiOiB0cnVlLAotICAgICAg ICAgICAgICAgICAid2l0aF9ncmFudCI6IGZhbHNlCi0gICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgXQotICAgICAgICAgICB9Ci0gICAgICAgICBd LAotICAgICAgICAgInRlc3Rfc2VxX2FjbCI6IFsKLSAgICAgICAgICAgewot ICAgICAgICAgICAgICJncmFudGVlIjogImVudGVycHJpc2VkYiIsCi0gICAg ICAgICAgICAgImdyYW50b3IiOiAiZW50ZXJwcmlzZWRiIiwKLSAgICAgICAg ICAgICAicHJpdmlsZWdlcyI6IFsKLSAgICAgICAgICAgICAgIHsKLSAgICAg ICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjogInIiLAotICAgICAgICAg ICAgICAgICAicHJpdmlsZWdlIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAg IndpdGhfZ3JhbnQiOiBmYWxzZQotICAgICAgICAgICAgICAgfSwKLSAgICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgInByaXZpbGVnZV90eXBl IjogInciLAotICAgICAgICAgICAgICAgICAicHJpdmlsZWdlIjogdHJ1ZSwK LSAgICAgICAgICAgICAgICAgIndpdGhfZ3JhbnQiOiBmYWxzZQotICAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg ICAgInByaXZpbGVnZV90eXBlIjogIlUiLAotICAgICAgICAgICAgICAgICAi cHJpdmlsZWdlIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIndpdGhfZ3Jh bnQiOiBmYWxzZQotICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIF0K LSAgICAgICAgICAgfQotICAgICAgICAgXSwKLSAgICAgICAgICJ0ZXN0X3Ri bF9hY2wiOiBbCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICAiZ3JhbnRl ZSI6ICJlbnRlcnByaXNlZGIiLAotICAgICAgICAgICAgICJncmFudG9yIjog ImVudGVycHJpc2VkYiIsCi0gICAgICAgICAgICAgInByaXZpbGVnZXMiOiBb Ci0gICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICJwcml2aWxl Z2VfdHlwZSI6ICJhIiwKLSAgICAgICAgICAgICAgICAgInByaXZpbGVnZSI6 IHRydWUsCi0gICAgICAgICAgICAgICAgICJ3aXRoX2dyYW50IjogdHJ1ZQot ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgIHsKLSAgICAgICAg ICAgICAgICAgInByaXZpbGVnZV90eXBlIjogInIiLAotICAgICAgICAgICAg ICAgICAicHJpdmlsZWdlIjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIndp dGhfZ3JhbnQiOiBmYWxzZQotICAgICAgICAgICAgICAgfQotICAgICAgICAg ICAgIF0KLSAgICAgICAgICAgfQotICAgICAgICAgXSwKLSAgICAgICAgICJ0 ZXN0X3R5cGVfYWNsIjogWwotICAgICAgICAgICB7Ci0gICAgICAgICAgICAg ImdyYW50ZWUiOiAiZW50ZXJwcmlzZWRiIiwKLSAgICAgICAgICAgICAiZ3Jh bnRvciI6ICJlbnRlcnByaXNlZGIiLAotICAgICAgICAgICAgICJwcml2aWxl Z2VzIjogWwotICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAi cHJpdmlsZWdlX3R5cGUiOiAiVSIsCi0gICAgICAgICAgICAgICAgICJwcml2 aWxlZ2UiOiB0cnVlLAotICAgICAgICAgICAgICAgICAid2l0aF9ncmFudCI6 IGZhbHNlCi0gICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgXQotICAg ICAgICAgICB9Ci0gICAgICAgICBdLAotICAgICAgICAgInRlc3RfZW5jb2Rp bmciOiAiVVRGOCIsCi0gICAgICAgICAidGVzdF9uYW1lIjogInRlc3RfZGJf YXV0b21hdGlvbiIsCi0gICAgICAgICAidGVzdF9wcml2aWxlZ2VzIjogW10s Ci0gICAgICAgICAidGVzdF9zZWN1cml0aWVzIjogW10sCi0gICAgICAgICAi dGVzdF92YXJpYWJsZXMiOiBbXQotICAgICAgIH0KKyAgICAiZW5jb2Rpbmci OiAiVVRGOCIsCisgICAgIm5hbWUiOiAidGVzdF9kYl9hdXRvbWF0aW9uIiwK KyAgICAicHJpdmlsZWdlcyI6IFtdLAorICAgICJzZWN1cml0aWVzIjogW10s CisgICAgInZhcmlhYmxlcyI6IFtdCisgIH0KICBdLAotCi0gICJ0ZXN0X2Ri X3VwZGF0ZV9kYXRhIjogWworICAiZGJfdXBkYXRlX2RhdGEiOiBbCiAgIHsK LSAgICAgICJ0ZXN0X2NvbW1lbnQiOiAiVGhpcyBpcyBkYiB1cGRhdGUgY29t bWVudCIKKyAgICAgICJjb21tZW50IjogIlRoaXMgaXMgZGIgdXBkYXRlIGNv bW1lbnQiCiAgIH0KLSBdCisgXSwKKworICAibHJfY3JlZGVudGlhbHMiOiB7 CisgICAgICAiY2FuX2xvZ2luIjogInRydWUiLAorICAgICAgImNvbm5fbGlt aXQiOiAtMSwKKyAgICAgICJjcmVhdGVfcm9sZSI6ICJ0cnVlIiwKKyAgICAg ICJyb2xlX2luaGVyaXQiOiAidHJ1ZSIsCisgICAgICAicm9sZV9tZW1iZXJz aGlwIjogW10sCisgICAgICAibHJfbmFtZSI6ICAidGVzdGxyZzEiLAorICAg ICAgImxyX3Bhc3N3b3JkIjogImVkYiIsCisgICAgICAibHJfdmFsaWRpdHki OiAiMTIvMjcvMjAxNiIsCisgICAgICAic2VjX2xhYmxlIjogW10sCisgICAg ICAidmFyaWFibGUiOlsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsibmFt ZSI6IndvcmtfbWVtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImRh dGFiYXNlIjoicG9zdGdyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAidmFsdWUiOjY1CisgICAgICAgICAgICAgICAgICAgICAgICB9XQorICAg IH0sCisgICJscl91cGRhdGVfZGF0YSI6IHsKKyAgICAgICJjb21tZW50Ijog IlRoaXMgaXMgZGIgdXBkYXRlIGNvbW1lbnQiCisgIH0sCisKKyAgInRhYmxl c3BjX2NyZWRlbnRpYWxzIjpbeworICAgICJ0YmxzcGFjZV9uYW1lIjogInRl c3RfdGFibGVzcGFjZSIsCisgICAgInNwY19zZWNsYWJsZSI6IFtdLAorICAg ICJzcGNfYWNsIjogWworICAgICAgeworICAgICAgICAiZ3JhbnRlZSI6InBv c3RncmVzIiwKKyAgICAgICAgImdyYW50b3IiOiJwb3N0Z3JlcyIsCisgICAg ICAgICJwcml2aWxlZ2VzIjpbCisgICAgICAgICAgeworICAgICAgICAgICAg InByaXZpbGVnZV90eXBlIjoiQyIsCisgICAgICAgICAgICAicHJpdmlsZWdl Ijp0cnVlLAorICAgICAgICAgICAgIndpdGhfZ3JhbnQiOmZhbHNlCisgICAg ICAgICAgfQorICAgICAgICBdCisgICAgICB9CisgICAgXSwKKyAgICAic3Bj X29wdHMiOiBbXSwKKyAgICAic3BjX3VzZXIiOiAicG9zdGdyZXMiCisgIH1d LAogCisgICAgInRic3BjX3VwZGF0ZV9kYXRhIjogeworICAgICJjb21tZW50 IjogIlRoaXMgaXMgdGFibGVzcGFjZSB1cGRhdGUgY29tbWVudCIKKyAgfQog fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIvcmVncmVz c2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IDAyOGQxZTcuLjEzMjhi NmIgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpz b24uaW4KKysrIGIvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5p bgpAQCAtMSwzNSArMSwzMSBAQAogewogICAicGdBZG1pbjRfbG9naW5fY3Jl ZGVudGlhbHMiOiB7Ci0gICAgInRlc3RfbmV3X3Bhc3N3b3JkIjogIk5FV1BB U1NXT1JEIiwKLSAgICAidGVzdF9sb2dpbl9wYXNzd29yZCI6ICJQQVNTV09S RCIsCi0gICAgInRlc3RfbG9naW5fdXNlcm5hbWUiOiAiVVNFUkBFWEFNUExF LkNPTSIKKyAgICAibmV3X3Bhc3N3b3JkIjogIk5FV1BBU1NXT1JEIiwKKyAg ICAibG9naW5fcGFzc3dvcmQiOiAiUEFTU1dPUkQiLAorICAgICJsb2dpbl91 c2VybmFtZSI6ICJVU0VSQEVYQU1QTEUuQ09NIgogICB9LAotICAidGVzdF9z ZXJ2ZXJfZ3JvdXAiOiAxLAotICAidGVzdF9zZXJ2ZXJfY3JlZGVudGlhbHMi OiBbCisgICJwZ0FkbWluNF90ZXN0X3VzZXJfY3JlZGVudGlhbHMiOiB7Cisg ICAgIm5ld19wYXNzd29yZCI6ICJORVdQQVNTV09SRCIsCisgICAgImxvZ2lu X3Bhc3N3b3JkIjogIlBBU1NXT1JEIiwKKyAgICAibG9naW5fdXNlcm5hbWUi OiAiVVNFUkBFWEFNUExFLkNPTSIKKyAgfSwKKyAgInNlcnZlcl9ncm91cCI6 IDEsCisgICJzZXJ2ZXJfY3JlZGVudGlhbHMiOiBbCiAgICAgewotICAgICAg InRlc3RfbmFtZSI6ICJQb3N0Z3JlU1FMIDkuNCIsCi0gICAgICAidGVzdF9j b21tZW50IjogIlBvc3RncmVTUUwgOS40IFNlcnZlciAoRURCIEluc3RhbGxl cikiLAotICAgICAgInRlc3RfZGJfdXNlcm5hbWUiOiAicG9zdGdyZXMiLAot ICAgICAgInRlc3RfaG9zdCI6ICJsb2NhbGhvc3QiLAotICAgICAgInRlc3Rf ZGJfcGFzc3dvcmQiOiAiUEFTU1dPUkQiLAotICAgICAgInRlc3RfZGJfcG9y dCI6IDU0MzIsCi0gICAgICAidGVzdF9tYWludGVuYW5jZV9kYiI6ICJwb3N0 Z3JlcyIsCi0gICAgICAidGVzdF9zc2xtb2RlIjogInByZWZlciIKLSAgICB9 LAotICAgICB7Ci0gICAgICAgInRlc3RfbmFtZSI6ICJQb3N0Z3JlcyBQbHVz IEFkdmFuY2VkIFNlcnZlciA5LjQiLAotICAgICAgICJ0ZXN0X2NvbW1lbnQi OiAiUG9zdGdyZXMgUGx1cyBBZHZhbmNlZCA5LjQgU2VydmVyIChFREIgSW5z dGFsbGVyKSIsCi0gICAgICAgInRlc3RfZGJfdXNlcm5hbWUiOiAiZW50ZXJw cmlzZWRiIiwKLSAgICAgICAidGVzdF9ob3N0IjogImxvY2FsaG9zdCIsCi0g ICAgICAgInRlc3RfZGJfcGFzc3dvcmQiOiAiZWRiIiwKLSAgICAgICAidGVz dF9kYl9wb3J0IjogNTQ0NCwKLSAgICAgICAidGVzdF9tYWludGVuYW5jZV9k YiI6ICJlZGIiLAotICAgICAgICJ0ZXN0X3NzbG1vZGUiOiAicHJlZmVyIgot ICAgICB9CisgICAgICAibmFtZSI6ICJQb3N0Z3JlU1FMIDkuNCIsCisgICAg ICAiY29tbWVudCI6ICJQb3N0Z3JlU1FMIDkuNCBTZXJ2ZXIgKEVEQiBJbnN0 YWxsZXIpIiwKKyAgICAgICJkYl91c2VybmFtZSI6ICJwb3N0Z3JlcyIsCisg ICAgICAiaG9zdCI6ICJsb2NhbGhvc3QiLAorICAgICAgImRiX3Bhc3N3b3Jk IjogIlBBU1NXT1JEIiwKKyAgICAgICJkYl9wb3J0IjogNTQzMiwKKyAgICAg ICJtYWludGVuYW5jZV9kYiI6ICJwb3N0Z3JlcyIsCisgICAgICAic3NsbW9k ZSI6ICJwcmVmZXIiLAorICAgICAgInRhYmxlc3BhY2VfcGF0aCI6ICIiCisg ICAgfQogICBdLAotICAidGVzdF9zZXJ2ZXJfdXBkYXRlX2RhdGEiOiBbCisg ICJzZXJ2ZXJfdXBkYXRlX2RhdGEiOiBbCiAgICAgewotICAgICAgInRlc3Rf Y29tbWVudCI6ICJUaGlzIGlzIHRlc3QgdXBkYXRlIGNvbW1lbnQiCisgICAg ICAiY29tbWVudCI6ICJUaGlzIGlzIHRlc3QgdXBkYXRlIGNvbW1lbnQiCiAg ICAgfQogICBdCiB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9zZXR1cC5weSBiL3dlYi9y ZWdyZXNzaW9uL3Rlc3Rfc2V0dXAucHkKaW5kZXggZjc3NjViYy4uYzgwNWIx ZSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF9zZXR1cC5weQor KysgYi93ZWIvcmVncmVzc2lvbi90ZXN0X3NldHVwLnB5CkBAIC0xMiwxMCAr MTIsMjQgQEAgaW1wb3J0IG9zCiAKIENVUlJFTlRfUEFUSCA9IG9zLnBhdGgu ZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKIAotd2l0aCBv cGVuKENVUlJFTlRfUEFUSCArICcvdGVzdF9jb25maWcuanNvbicpIGFzIGRh dGFfZmlsZToKLSAgICBjb25maWdfZGF0YSA9IGpzb24ubG9hZChkYXRhX2Zp bGUpCisjIHdpdGggb3BlbihDVVJSRU5UX1BBVEggKyAnL3Rlc3RfY29uZmln Lmpzb24nKSBhcyBkYXRhX2ZpbGU6CisjICAgICBjb25maWdfZGF0YSA9IGpz b24ubG9hZChkYXRhX2ZpbGUpCisjCisjIHdpdGggb3BlbihDVVJSRU5UX1BB VEggKyAnL3Rlc3RfYWR2YW5jZWRfY29uZmlnLmpzb24nKSBhcyBkYXRhX2Zp bGU6CisjICAgICBhZHZhbmNlZF9jb25maWdfZGF0YSA9IGpzb24ubG9hZChk YXRhX2ZpbGUpCisKK3RyeToKKyAgICB3aXRoIG9wZW4oQ1VSUkVOVF9QQVRI ICsgJy90ZXN0X2NvbmZpZy5qc29uJykgYXMgZGF0YV9maWxlOgorICAgICAg ICBjb25maWdfZGF0YSA9IGpzb24ubG9hZChkYXRhX2ZpbGUpCitleGNlcHQ6 CisgICAgd2l0aCBvcGVuKENVUlJFTlRfUEFUSCArICcvdGVzdF9jb25maWcu anNvbi5pbicpIGFzIGRhdGFfZmlsZToKKyAgICAgICAgY29uZmlnX2RhdGEg PSBqc29uLmxvYWQoZGF0YV9maWxlKQogCi13aXRoIG9wZW4oQ1VSUkVOVF9Q QVRIICsgJy90ZXN0X2FkdmFuY2VkX2NvbmZpZy5qc29uJykgYXMgZGF0YV9m aWxlOgotICAgIGFkdmFuY2VkX2NvbmZpZ19kYXRhID0ganNvbi5sb2FkKGRh dGFfZmlsZSkKK3RyeToKKyAgICB3aXRoIG9wZW4oQ1VSUkVOVF9QQVRIICsg Jy90ZXN0X2FkdmFuY2VkX2NvbmZpZy5qc29uJykgYXMgZGF0YV9maWxlOgor ICAgICAgICBhZHZhbmNlZF9jb25maWdfZGF0YSA9IGpzb24ubG9hZChkYXRh X2ZpbGUpCitleGNlcHQ6CisgICAgd2l0aCBvcGVuKENVUlJFTlRfUEFUSCAr ICcvdGVzdF9hZHZhbmNlZF9jb25maWcuanNvbi5pbicpIGFzIGRhdGFfZmls ZToKKyAgICAgICAgYWR2YW5jZWRfY29uZmlnX2RhdGEgPSBqc29uLmxvYWQo ZGF0YV9maWxlKQogCiBwaWNrbGVfcGF0aCA9IG9zLnBhdGguam9pbihDVVJS RU5UX1BBVEgsICdwYXJlbnRfaWQucGtsJykKZGlmZiAtLWdpdCBhL3dlYi9y ZWdyZXNzaW9uL3Rlc3RfdXRpbHMucHkgYi93ZWIvcmVncmVzc2lvbi90ZXN0 X3V0aWxzLnB5CmluZGV4IDZiZTJiYjIuLjE2YzJkNDYgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jl c3Npb24vdGVzdF91dGlscy5weQpAQCAtOSwxNiArOSwyNCBAQAogCiBpbXBv cnQgb3MKIGltcG9ydCBwaWNrbGUKLWltcG9ydCBqc29uCi1pbXBvcnQgdXVp ZAogCi1mcm9tIHRlc3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhLCBhZHZh bmNlZF9jb25maWdfZGF0YSwgXAotICAgIHBpY2tsZV9wYXRoCitmcm9tIHRl c3Rfc2V0dXAgaW1wb3J0IGNvbmZpZ19kYXRhLCBwaWNrbGVfcGF0aAogCi1T RVJWRVJfVVJMID0gJy9icm93c2VyL3NlcnZlci9vYmovJwotU0VSVkVSX0NP Tk5FQ1RfVVJMID0gJ2Jyb3dzZXIvc2VydmVyL2Nvbm5lY3QvJwotREFUQUJB U0VfVVJMID0gJy9icm93c2VyL2RhdGFiYXNlL29iai8nCi1EQVRBQkFTRV9D T05ORUNUX1VSTCA9ICdicm93c2VyL2RhdGFiYXNlL2Nvbm5lY3QvJworCitT RVJWRVJfR1JPVVAgPSBjb25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KKwor CitkZWYgZ2V0X3BpY2tsZV9pZF9kaWN0KCk6CisgICAgIiIiVGhpcyBmdW5j dGlvbiByZXR1cm5zIHRoZSBlbXB0eSBkaWN0IG9mIHNlcnZlciBjb25maWcg ZGF0YSIiIgorCisgICAgcGlja2xlX2lkX2RpY3QgPSB7CisgICAgICAgICJz aWQiOiBbXSwgICMgc2VydmVyCisgICAgICAgICJkaWQiOiBbXSwgICMgZGF0 YWJhc2UKKyAgICAgICAgImxyaWQiOiBbXSwgICMgcm9sZQorICAgICAgICAi dHNpZCI6IFtdLCAgIyB0YWJsZXNwYWNlCisgICAgICAgICJzY2lkIjogW10g ICMgc2NoZW1hCisgICAgfQorICAgIHJldHVybiBwaWNrbGVfaWRfZGljdAog CiAKIGRlZiBnZXRfaWRzKHVybD1waWNrbGVfcGF0aCk6CkBAIC0zNCw0MyAr NDIsOSBAQCBkZWYgZ2V0X2lkcyh1cmw9cGlja2xlX3BhdGgpOgogICAgIG91 dHB1dCA9IG9wZW4odXJsLCAncmInKQogICAgIGlkcyA9IHBpY2tsZS5sb2Fk KG91dHB1dCkKICAgICBvdXRwdXQuY2xvc2UoKQotCiAgICAgcmV0dXJuIGlk cwogCiAKLWRlZiB2ZXJpZnlfZGF0YWJhc2UodGVzdGVyLCBzZXJ2ZXJfZ3Jv dXAsIHNlcnZlcl9pZCwgZGJfaWQpOgotICAgICIiIgotICAgIFRoaXMgZnVu Y3Rpb24gdmVyaWZpZXMgdGhhdCBkYXRhYmFzZSBpcyBleGlzdHMgYW5kIHdo ZXRoZXIgaXQgY29ubmVjdAotICAgIHN1Y2Nlc3NmdWxseSBvciBub3QKLQot ICAgIDpwYXJhbSB0ZXN0ZXI6IHRlc3QgY2xpZW50Ci0gICAgOnR5cGUgdGVz dGVyOiBmbGFzayB0ZXN0IGNsaWVudCBvYmplY3QKLSAgICA6cGFyYW0gc2Vy dmVyX2dyb3VwOiBzZXJ2ZXIgZ3JvdXAgaWQKLSAgICA6dHlwZSBzZXJ2ZXJf Z3JvdXA6IGludAotICAgIDpwYXJhbSBzZXJ2ZXJfaWQ6IHNlcnZlciBpZAot ICAgIDp0eXBlIHNlcnZlcl9pZDogc3RyCi0gICAgOnBhcmFtIGRiX2lkOiBk YXRhYmFzZSBpZAotICAgIDp0eXBlIGRiX2lkOiBzdHIKLSAgICA6cmV0dXJu OiB0ZW1wX2RiX2NvbgotICAgIDpydHlwZTogbGlzdAotICAgICIiIgotCi0g ICAgIyBDb25uZWN0IHRvIHNlcnZlcgotICAgIHJlc3BvbnNlID0gdGVzdGVy LnBvc3QoJ3swfXsxfS97Mn0nLmZvcm1hdCgKLSAgICAgICAgU0VSVkVSX0NP Tk5FQ1RfVVJMLCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9pZCksIGRhdGE9ZGlj dCgKLSAgICAgICAgcGFzc3dvcmQ9Y29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVy X2NyZWRlbnRpYWxzJ11bMF1bCi0gICAgICAgICAgICAndGVzdF9kYl9wYXNz d29yZCddKSwKLSAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQotCi0g ICAgIyBDb25uZWN0IHRvIGRhdGFiYXNlCi0gICAgY29uX3Jlc3BvbnNlID0g dGVzdGVyLnBvc3QoJ3swfXsxfS97Mn0vezN9Jy5mb3JtYXQoCi0gICAgICAg IERBVEFCQVNFX0NPTk5FQ1RfVVJMLCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcl9p ZCwgZGJfaWQpLAotICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0g ICAgdGVtcF9kYl9jb24gPSBqc29uLmxvYWRzKGNvbl9yZXNwb25zZS5kYXRh LmRlY29kZSgndXRmLTgnKSkKLQotICAgIHJldHVybiB0ZW1wX2RiX2Nvbgot Ci0KIGRlZiB0ZXN0X2dldG5vZGVzKHRlc3Rlcj1Ob25lKToKICAgICAjIENv bm5lY3QgdG8gc2VydmVyIGFuZCBkYXRhYmFzZS4KIApAQCAtODEsNTMgKzU1 LDE0IEBAIGRlZiB0ZXN0X2dldG5vZGVzKHRlc3Rlcj1Ob25lKToKIAogICAg IHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCiAgICAgZGJfaWRzX2RpY3Qg PSBhbGxfaWRbImRpZCJdWzBdCi0gICAgc3J2X2dycCA9IGNvbmZpZ19kYXRh Wyd0ZXN0X3NlcnZlcl9ncm91cCddCiAKICAgICBkYl9jb24gPSBbXQogICAg IGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKICAgICAgICAgZGJfaWQg PSBkYl9pZHNfZGljdFtpbnQoc2VydmVyX2lkKV0KLSAgICAgICAgZGJfY29u LmFwcGVuZCh2ZXJpZnlfZGF0YWJhc2UodGVzdGVyLCBzcnZfZ3JwLCBzZXJ2 ZXJfaWQsIGRiX2lkKSkKKyAgICAgICAgZGJfY29uLmFwcGVuZCh2ZXJpZnlf ZGF0YWJhc2UodGVzdGVyLCBTRVJWRVJfR1JPVVAsIHNlcnZlcl9pZCwgZGJf aWQpKQogICAgIHJldHVybiBkYl9jb24KIAogCi1kZWYgZ2V0X2RiX2RhdGEo c2VydmVyX2Nvbm5lY3RfZGF0YSk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5j dGlvbiBpcyB1c2VkIHRvIGdldCBhZHZhbmNlIGNvbmZpZyB0ZXN0IGRhdGEg Zm9yIGFwcHJvcHJpYXRlCi0gICAgc2VydmVyCi0KLSAgICA6cGFyYW0gc2Vy dmVyX2Nvbm5lY3RfZGF0YTogbGlzdCBvZiBzZXJ2ZXIgZGV0YWlscwotICAg IDpyZXR1cm4gZGF0YTogZGF0YWJhc2UgZGV0YWlscwotICAgIDpydHlwZTog ZGljdAotICAgICIiIgotCi0gICAgYWR2X2NvbmZpZ19kYXRhID0gTm9uZQot ICAgIGRhdGEgPSBOb25lCi0gICAgZGJfdXNlciA9IHNlcnZlcl9jb25uZWN0 X2RhdGFbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KLQotICAgICMgR2V0IHRo ZSBjb25maWcgZGF0YSBvZiBhcHByb3ByaWF0ZSBkYiB1c2VyCi0gICAgZm9y IGNvbmZpZ190ZXN0X2RhdGEgaW4gYWR2YW5jZWRfY29uZmlnX2RhdGFbJ3Rl c3RfYWRkX2RhdGFiYXNlX2RhdGEnXToKLSAgICAgICAgaWYgZGJfdXNlciA9 PSBjb25maWdfdGVzdF9kYXRhWyd0ZXN0X293bmVyJ106Ci0gICAgICAgICAg ICBhZHZfY29uZmlnX2RhdGEgPSBjb25maWdfdGVzdF9kYXRhCi0KLSAgICBp ZiBhZHZfY29uZmlnX2RhdGEgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRhdGEg PSB7Ci0gICAgICAgICAgICAiZGF0YWNsIjogYWR2X2NvbmZpZ19kYXRhWyd0 ZXN0X3ByaXZpbGVnZXNfYWNsJ10sCi0gICAgICAgICAgICAiZGF0Y29ubmxp bWl0IjogYWR2X2NvbmZpZ19kYXRhWyd0ZXN0X2Nvbm5fbGltaXQnXSwKLSAg ICAgICAgICAgICJkYXRvd25lciI6IGFkdl9jb25maWdfZGF0YVsndGVzdF9v d25lciddLAotICAgICAgICAgICAgImRlZmZ1bmNhY2wiOiBhZHZfY29uZmln X2RhdGFbJ3Rlc3RfZnVuX2FjbCddLAotICAgICAgICAgICAgImRlZnNlcWFj bCI6IGFkdl9jb25maWdfZGF0YVsndGVzdF9zZXFfYWNsJ10sCi0gICAgICAg ICAgICAiZGVmdGJsYWNsIjogYWR2X2NvbmZpZ19kYXRhWyd0ZXN0X3RibF9h Y2wnXSwKLSAgICAgICAgICAgICJkZWZ0eXBlYWNsIjogYWR2X2NvbmZpZ19k YXRhWyd0ZXN0X3R5cGVfYWNsJ10sCi0gICAgICAgICAgICAiZW5jb2Rpbmci OiBhZHZfY29uZmlnX2RhdGFbJ3Rlc3RfZW5jb2RpbmcnXSwKLSAgICAgICAg ICAgICJuYW1lIjogc3RyKHV1aWQudXVpZDQoKSlbMTo4XSwKLSAgICAgICAg ICAgICJwcml2aWxlZ2VzIjogYWR2X2NvbmZpZ19kYXRhWyd0ZXN0X3ByaXZp bGVnZXMnXSwKLSAgICAgICAgICAgICJzZWN1cml0aWVzIjogYWR2X2NvbmZp Z19kYXRhWyd0ZXN0X3NlY3VyaXRpZXMnXSwKLSAgICAgICAgICAgICJ2YXJp YWJsZXMiOiBhZHZfY29uZmlnX2RhdGFbJ3Rlc3RfdmFyaWFibGVzJ10KLSAg ICAgICAgfQotCi0gICAgcmV0dXJuIGRhdGEKLQotCiBkZWYgbG9naW5fdGVz dGVyX2FjY291bnQodGVzdGVyKToKICAgICAiIiIKICAgICBUaGlzIGZ1bmN0 aW9uIGxvZ2luIHRoZSB0ZXN0IGFjY291bnQgdXNpbmcgY3JlZGVudGlhbHMg bWVudGlvbmVkIGluCkBAIC0xMzksOSArNzQsOSBAQCBkZWYgbG9naW5fdGVz dGVyX2FjY291bnQodGVzdGVyKToKICAgICAiIiIKIAogICAgIGVtYWlsID0g XAotICAgICAgICBjb25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVu dGlhbHMnXVsndGVzdF9sb2dpbl91c2VybmFtZSddCisgICAgICAgIGNvbmZp Z19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddWydsb2dpbl91 c2VybmFtZSddCiAgICAgcGFzc3dvcmQgPSBcCi0gICAgICAgIGNvbmZpZ19k YXRhWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddWyd0ZXN0X2xvZ2lu X3Bhc3N3b3JkJ10KKyAgICAgICAgY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xv Z2luX2NyZWRlbnRpYWxzJ11bJ2xvZ2luX3Bhc3N3b3JkJ10KICAgICByZXNw b25zZSA9IHRlc3Rlci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoCiAgICAg ICAgIGVtYWlsPWVtYWlsLCBwYXNzd29yZD1wYXNzd29yZCksIGZvbGxvd19y ZWRpcmVjdHM9VHJ1ZSkKIApAQCAtMTU4LDYgKzkzLDcgQEAgZGVmIGxvZ291 dF90ZXN0ZXJfYWNjb3VudCh0ZXN0ZXIpOgogICAgIHJlc3BvbnNlID0gdGVz dGVyLmdldCgnL2xvZ291dCcpCiAKIAorIyBDb25maWcgZGF0YSBmb3IgcGFy ZW50X2lkLnBrbAogZGVmIGdldF9jb25maWdfZGF0YSgpOgogICAgICIiIgog ICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkYXRhIHJlbGF0ZWQgdG8gc2Vy dmVyIGdyb3VwIGFuZCBkYXRhYmFzZQpAQCAtMTY4LDIzICsxMDQsMTggQEAg ZGVmIGdldF9jb25maWdfZGF0YSgpOgogICAgICIiIgogCiAgICAgZGJfZGF0 YSA9IFtdCisgICAgcGlja2xlX2lkX2RpY3QgPSBnZXRfcGlja2xlX2lkX2Rp Y3QoKQorICAgIHNlcnZlcl9ncm91cCA9IGNvbmZpZ19kYXRhWydzZXJ2ZXJf Z3JvdXAnXQogCi0gICAgcGlja2xlX2lkX2RpY3QgPSB7Ci0gICAgICAgICJz aWQiOiBbXSwgICMgc2VydmVyCi0gICAgICAgICJkaWQiOiBbXSAgIyBkYXRh YmFzZQotICAgIH0KLQotICAgIHNlcnZlcl9ncm91cCA9IGNvbmZpZ19kYXRh Wyd0ZXN0X3NlcnZlcl9ncm91cCddCi0KLSAgICBmb3Igc3J2IGluIGNvbmZp Z19kYXRhWyd0ZXN0X3NlcnZlcl9jcmVkZW50aWFscyddOgotICAgICAgICBk YXRhID0geyJuYW1lIjogc3J2Wyd0ZXN0X25hbWUnXSwKKyAgICBmb3Igc3J2 IGluIGNvbmZpZ19kYXRhWydzZXJ2ZXJfY3JlZGVudGlhbHMnXToKKyAgICAg ICAgZGF0YSA9IHsibmFtZSI6IHNydlsnbmFtZSddLAogICAgICAgICAgICAg ICAgICJjb21tZW50IjogIiIsCi0gICAgICAgICAgICAgICAgImhvc3QiOiBz cnZbJ3Rlc3RfaG9zdCddLAotICAgICAgICAgICAgICAgICJwb3J0Ijogc3J2 Wyd0ZXN0X2RiX3BvcnQnXSwKLSAgICAgICAgICAgICAgICAiZGIiOiBzcnZb J3Rlc3RfbWFpbnRlbmFuY2VfZGInXSwKLSAgICAgICAgICAgICAgICAidXNl cm5hbWUiOiBzcnZbJ3Rlc3RfZGJfdXNlcm5hbWUnXSwKKyAgICAgICAgICAg ICAgICAiaG9zdCI6IHNydlsnaG9zdCddLAorICAgICAgICAgICAgICAgICJw b3J0Ijogc3J2WydkYl9wb3J0J10sCisgICAgICAgICAgICAgICAgImRiIjog c3J2WydtYWludGVuYW5jZV9kYiddLAorICAgICAgICAgICAgICAgICJ1c2Vy bmFtZSI6IHNydlsnZGJfdXNlcm5hbWUnXSwKICAgICAgICAgICAgICAgICAi cm9sZSI6ICIiLAotICAgICAgICAgICAgICAgICJzc2xtb2RlIjogc3J2Wyd0 ZXN0X3NzbG1vZGUnXX0KKyAgICAgICAgICAgICAgICAic3NsbW9kZSI6IHNy dlsnc3NsbW9kZSddfQogICAgICAgICBkYl9kYXRhLmFwcGVuZChkYXRhKQog ICAgIHJldHVybiBzZXJ2ZXJfZ3JvdXAsIGRiX2RhdGEsIHBpY2tsZV9pZF9k aWN0CiAKQEAgLTIwNSw0MCArMTM2LDEyIEBAIGRlZiB3cml0ZV9wYXJlbnRf aWQocmVzcG9uc2VfZGF0YSwgcGlja2xlX2lkX2RpY3QpOgogICAgICAgICBl eGlzdGVkX3NlcnZlcl9pZCA9IG9wZW4ocGlja2xlX3BhdGgsICdyYicpCiAg ICAgICAgIHBpY2tsZV9pZF9kaWN0ID0gcGlja2xlLmxvYWQoZXhpc3RlZF9z ZXJ2ZXJfaWQpCiAKLSAgICBwaWNrbGVfaWRfZGljdFsic2lkIl0uYXBwZW5k KHNlcnZlcl9pZCkKKyAgICBwaWNrbGVfaWRfZGljdFsic2lkIl0uYXBwZW5k KHN0cihzZXJ2ZXJfaWQpKQogICAgIG91dHB1dCA9IG9wZW4ocGlja2xlX3Bh dGgsICd3YicpCiAgICAgcGlja2xlLmR1bXAocGlja2xlX2lkX2RpY3QsIG91 dHB1dCkKICAgICBvdXRwdXQuY2xvc2UoKQogCiAKLWRlZiB3cml0ZV9kYl9w YXJlbnRfaWQocmVzcG9uc2VfZGF0YSk6Ci0gICAgIiIiCi0gICAgVGhpcyBm dW5jdGlvbiB3cml0ZXMgdGhlIHNlcnZlciBhbmQgZGF0YWJhc2UgcmVsYXRl ZCBkYXRhIGxpa2Ugc2VydmVyCi0gICAgbmFtZSwgc2VydmVyIGlkICwgZGF0 YWJhc2UgbmFtZSwgZGF0YWJhc2UgaWQgZXRjLgotCi0gICAgOnBhcmFtIHJl c3BvbnNlX2RhdGE6IHNlcnZlciBhbmQgZGF0YWJhc2VzIGRldGFpbHMKLSAg ICA6dHlwZSByZXNwb25zZV9kYXRhOiBkaWN0Ci0gICAgOnJldHVybjogTm9u ZQotICAgICIiIgotCi0gICAgZGJfaWQgPSByZXNwb25zZV9kYXRhWydub2Rl J11bJ19pZCddCi0gICAgc2VydmVyX2lkID0gcmVzcG9uc2VfZGF0YVsnbm9k ZSddWydfcGlkJ10KLSAgICBpZiBvcy5wYXRoLmlzZmlsZShwaWNrbGVfcGF0 aCk6Ci0gICAgICAgIGV4aXN0aW5nX3NlcnZlcl9pZCA9IG9wZW4ocGlja2xl X3BhdGgsICdyYicpCi0gICAgICAgIHRvbF9zZXJ2ZXJfaWQgPSBwaWNrbGUu bG9hZChleGlzdGluZ19zZXJ2ZXJfaWQpCi0gICAgICAgIHBpY2tsZV9pZF9k aWN0ID0gdG9sX3NlcnZlcl9pZAotICAgICAgICBpZiAnZGlkJyBpbiBwaWNr bGVfaWRfZGljdDoKLSAgICAgICAgICAgIGlmIHBpY2tsZV9pZF9kaWN0Wydk aWQnXToKLSAgICAgICAgICAgICAgICAjIEFkZCB0aGUgZGJfaWQgYXMgdmFs dWUgaW4gZGljdAotICAgICAgICAgICAgICAgIHBpY2tsZV9pZF9kaWN0WyJk aWQiXVswXS51cGRhdGUoe3NlcnZlcl9pZDogZGJfaWR9KQotICAgICAgICAg ICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIENyZWF0ZSBuZXcgZGljdCB3 aXRoIHNlcnZlcl9pZCBhbmQgZGJfaWQKLSAgICAgICAgICAgICAgICBwaWNr bGVfaWRfZGljdFsiZGlkIl0uYXBwZW5kKHtzZXJ2ZXJfaWQ6IGRiX2lkfSkK LSAgICAgICAgZGJfb3V0cHV0ID0gb3BlbihwaWNrbGVfcGF0aCwgJ3diJykK LSAgICAgICAgcGlja2xlLmR1bXAocGlja2xlX2lkX2RpY3QsIGRiX291dHB1 dCkKLSAgICAgICAgZGJfb3V0cHV0LmNsb3NlKCkKLQotCiBkZWYgZGVsZXRl X3BhcmVudF9pZF9maWxlKCk6CiAgICAgIiIiCiAgICAgVGhpcyBmdW5jdGlv biBkZWxldGVzIHRoZSBmaWxlIHBhcmVudF9pZC5wa2wgd2hpY2ggY29udGFp bnMgc2VydmVyIGFuZApAQCAtMjUwLDE0OCArMTUzLDMgQEAgZGVmIGRlbGV0 ZV9wYXJlbnRfaWRfZmlsZSgpOgogICAgIGlmIG9zLnBhdGguaXNmaWxlKHBp Y2tsZV9wYXRoKToKICAgICAgICAgb3MucmVtb3ZlKHBpY2tsZV9wYXRoKQog Ci0KLWRlZiBhZGRfc2VydmVyKHRlc3Rlcik6Ci0gICAgIiIiCi0gICAgVGhp cyBmdW5jdGlvbiBhZGQgdGhlIHNlcnZlciBpbiB0aGUgZXhpc3Rpbmcgc2Vy dmVyIGdyb3VwCi0KLSAgICA6cGFyYW0gdGVzdGVyOiB0ZXN0IG9iamVjdAot ICAgIDp0eXBlIHRlc3RlcjogZmxhc2sgdGVzdCBvYmplY3QKLSAgICA6cmV0 dXJuOk5vbmUKLSAgICAiIiIKLQotICAgIHNlcnZlcl9ncm91cCwgZGJfZGF0 YSwgcGlja2xlX2lkX2RpY3QgPSBnZXRfY29uZmlnX2RhdGEoKQotICAgIHVy bCA9ICJ7MH17MX0vIi5mb3JtYXQoU0VSVkVSX1VSTCwgc2VydmVyX2dyb3Vw KQotICAgIGZvciBkYl9kZXRhaWwgaW4gZGJfZGF0YToKLSAgICAgICAgcmVz cG9uc2UgPSB0ZXN0ZXIucG9zdCh1cmwsIGRhdGE9anNvbi5kdW1wcyhkYl9k ZXRhaWwpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl bnRfdHlwZT0naHRtbC9qc29uJykKLSAgICAgICAgcmVzcG9uc2VfZGF0YSA9 IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoKSkKLSAgICAgICAg d3JpdGVfcGFyZW50X2lkKHJlc3BvbnNlX2RhdGEsIHBpY2tsZV9pZF9kaWN0 KQotCi0KLWRlZiBnZXRfc2VydmVyKHRlc3Rlcik6Ci0gICAgIiIiCi0gICAg VGhpcyBmdW5jdGlvbiBnZXRzIHRoZSBhZGRlZCBzZXJlciBkZXRhaWxzCi0K LSAgICA6cGFyYW0gdGVzdGVyOiB0ZXN0IGNsaWVudCBvYmplY3QKLSAgICA6 dHlwZSB0ZXN0ZXI6IGZsYXNrIHRlc3Qgb2JqZWN0Ci0gICAgOnJldHVybjog cmVzcG9uc2VfZGF0YQotICAgIDpydHlwZTogbGlzdAotICAgICIiIgotCi0g ICAgYWxsX2lkID0gZ2V0X2lkcygpCi0gICAgc2VydmVyX2lkcyA9IGFsbF9p ZFsic2lkIl0KLSAgICBzZXJ2ZXJfZ3JvdXAgPSBjb25maWdfZGF0YVsndGVz dF9zZXJ2ZXJfZ3JvdXAnXQotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVy X2lkczoKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZ2V0KFNFUlZFUl9V UkwgKyBzdHIoc2VydmVyX2dyb3VwKSArICcvJyArCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHIoc2VydmVyX2lkKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkKLSAg ICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0 YS5kZWNvZGUoKSkKLQotCi1kZWYgY29ubmVjdF9zZXJ2ZXIodGVzdGVyKToK LSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgdG8gY29ubmVjdCBh ZGRlZCBzZXJ2ZXIKLQotICAgIDpwYXJhbSB0ZXN0ZXI6dGVzdCBjbGllbnQg b2JqZWN0Ci0gICAgOnR5cGUgdGVzdGVyOiBmbGFzayB0ZXN0IG9iamVjdAot ICAgIDpyZXR1cm46IHNlcnZlcl9jb25uZWN0LCBzZXJ2ZXJfZ3JvdXAsIHNl cnZlcl9pZAotICAgIDpydHlwZTogc2VydmVyX2Nvbm5lY3Q6ZGljdCwgc2Vy dmVyX2dyb3VwOmRpY3QsIHNlcnZlcl9pZDpzdHIKLSAgICAiIiIKLQotICAg IHNlcnZlcl9jb25uZWN0ID0gW10KLSAgICBzZXJ2ZXJzID0gW10KLQotICAg IHNydl9pZCA9IGdldF9pZHMoKQotICAgIHNlcnZlcl9pZHMgPSBzcnZfaWRb InNpZCJdCi0gICAgc2VydmVyX2dyb3VwID0gY29uZmlnX2RhdGFbJ3Rlc3Rf c2VydmVyX2dyb3VwJ10KLQotICAgICMgQ29ubmVjdCB0byBhbGwgc2VydmVy cwotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKLSAgICAgICAg cmVzcG9uc2UgPSB0ZXN0ZXIucG9zdChTRVJWRVJfQ09OTkVDVF9VUkwgKyBz dHIoc2VydmVyX2dyb3VwKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy8nICsgc2VydmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9ZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFzc3dvcmQ9Y29uZmlnX2RhdGEKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgWyd0ZXN0X3NlcnZlcl9jcmVkZW50 aWFscyddWzBdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFsndGVzdF9kYl9wYXNzd29yZCddKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCi0gICAgICAgIHNl cnZlcl9jb25uZWN0X2RldGFpbCA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0 YS5kZWNvZGUoKSkKLSAgICAgICAgY29ubmVjdF9kYXRhYmFzZSh0ZXN0ZXIs IHNlcnZlcl9jb25uZWN0X2RldGFpbCwgc2VydmVyX2lkLAotICAgICAgICAg ICAgICAgICAgICAgICAgIHNlcnZlcl9ncm91cCkKLSAgICAgICAgc2VydmVy X2Nvbm5lY3QuYXBwZW5kKHNlcnZlcl9jb25uZWN0X2RldGFpbCkKLSAgICAg ICAgc2VydmVycy5hcHBlbmQoc2VydmVyX2lkKQotICAgIHJldHVybiBzZXJ2 ZXJfY29ubmVjdCwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJzCi0KLQotZGVmIGNv bm5lY3RfZGF0YWJhc2UodGVzdGVyLCBzZXJ2ZXJfY29ubmVjdCwgc2VydmVy X2lkLCBzZXJ2ZXJfZ3JvdXApOgotICAgICIiIgotICAgIFRoaXMgZnVuY3Rp b24gaXMgdXNlZCB0byBjb25uZWN0IGRhdGFiYXNlIGFuZCB3cml0ZXMgaXQn cyBkZXRhaWxzIHRvCi0gICAgZmlsZSAncGFyZW50X2lkLnBrbCcKLQotICAg IDpwYXJhbSB0ZXN0ZXI6IHRlc3QgY2xpZW50IG9iamVjdAotICAgIDp0eXBl IHRlc3RlcjogZmxhc2sgdGVzdCBjbGllbnQgb2JqZWN0Ci0gICAgOnBhcmFt IHNlcnZlcl9jb25uZWN0OiBzZXJ2ZXIncyBkYXRhCi0gICAgOnR5cGUgc2Vy dmVyX2Nvbm5lY3Q6IGRpY3QKLSAgICA6cGFyYW0gc2VydmVyX2lkOiBzZXJ2 ZXIgaWQKLSAgICA6dHlwZSBzZXJ2ZXJfaWQ6IHN0cgotICAgIDpwYXJhbSBz ZXJ2ZXJfZ3JvdXA6IHNlcnZlciBncm91cCBuYW1lCi0gICAgOnR5cGUgc2Vy dmVyX2dyb3VwOiBzdHIKLSAgICA6cmV0dXJuOiBOb25lCi0gICAgIiIiCi0K LSAgICBpZiBzZXJ2ZXJfY29ubmVjdFsnZGF0YSddWydjb25uZWN0ZWQnXToK LSAgICAgICAgZGJfZGF0YSA9IGdldF9kYl9kYXRhKHNlcnZlcl9jb25uZWN0 KQotICAgICAgICBkYl9yZXNwb25zZSA9IHRlc3Rlci5wb3N0KAotICAgICAg ICAgICAgREFUQUJBU0VfVVJMICsgc3RyKHNlcnZlcl9ncm91cCkgKyAiLyIg KyBzZXJ2ZXJfaWQgKyAiLyIsCi0gICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoZGJfZGF0YSksCi0gICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwv anNvbicpCi0gICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKGRi X3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCi0gICAgICAgIHdyaXRlX2RiX3Bh cmVudF9pZChyZXNwb25zZV9kYXRhKQotCi0KLWRlZiBkZWxldGVfc2VydmVy KHRlc3Rlcik6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlvbiB1c2VkIHRv IGRlbGV0ZSB0aGUgYWRkZWQgc2VydmVycwotCi0gICAgOnBhcmFtIHRlc3Rl cjogdGVzdCBjbGllbnQgb2JqZWN0Ci0gICAgOnJldHVybjogTm9uZQotICAg ICIiIgotCi0gICAgc3J2X2dycCA9IGNvbmZpZ19kYXRhWyd0ZXN0X3NlcnZl cl9ncm91cCddCi0gICAgYWxsX2lkID0gZ2V0X2lkcygpCi0gICAgc2VydmVy X2lkcyA9IGFsbF9pZFsic2lkIl0KLSAgICB1cmwgPSBTRVJWRVJfVVJMICsg c3RyKHNydl9ncnApICsgIi8iCi0KLSAgICAjIENhbGwgYXBpIHRvIGRlbGV0 ZSB0aGUgc2VydmVycwotICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lk czoKLSAgICAgICAgcmVzcG9uc2UgPSB0ZXN0ZXIuZGVsZXRlKHVybCArIHN0 cihzZXJ2ZXJfaWQpKQotICAgICAgICBhc3NlcnQgcmVzcG9uc2Uuc3RhdHVz X2NvZGUgPT0gMjAwCi0gICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxv YWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCi0gICAgICAgIGFzc2VydCBy ZXNwb25zZV9kYXRhWydzdWNjZXNzJ10gPT0gMQotCi0KLWRlZiBkZWxldGVf ZGF0YWJhc2UodGVzdGVyKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9u IHVzZWQgdG8gZGVsZXRlIHRoZSBhZGRlZCBkYXRhYmFzZXMKLQotICAgIDpw YXJhbSB0ZXN0ZXI6IHRlc3QgY2xpZW50IG9iamVjdAotICAgIDpyZXR1cm46 IE5vbmUKLSAgICAiIiIKLQotICAgIHNydl9ncnAgPSBjb25maWdfZGF0YVsn dGVzdF9zZXJ2ZXJfZ3JvdXAnXQotICAgIGFsbF9pZCA9IGdldF9pZHMoKQot ICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCi0gICAgZGJfaWRzX2Rp Y3QgPSBhbGxfaWRbJ2RpZCddWzBdCi0KLSAgICBkYl9jb24gPSB0ZXN0X2dl dG5vZGVzKHRlc3RlcikKLSAgICBpZiBsZW4oZGJfY29uKSA9PSAwOgotICAg ICAgICByYWlzZSBFeGNlcHRpb24oIk5vIGRhdGFiYXNlKHMpIHRvIGRlbGV0 ZS4iKQotCi0gICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgotICAg ICAgICBkYl9pZCA9IGRiX2lkc19kaWN0W2ludChzZXJ2ZXJfaWQpXQotICAg ICAgICByZXNwb25zZSA9IHRlc3Rlci5kZWxldGUoREFUQUJBU0VfVVJMICsg c3RyKHNydl9ncnApICsgJy8nICsKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cihzZXJ2ZXJfaWQpICsgJy8nICsgc3RyKGRiX2lkKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbGxvd19yZWRp cmVjdHM9VHJ1ZSkKLSAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19j b2RlID09IDIwMAotICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fk cyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKLSAgICAgICAgYXNz ZXJ0IHJlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSA9PSAxCg== --94eb2c05e0ec5b9a010539a00992 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 --94eb2c05e0ec5b9a010539a00992--