Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fOFwn-0000aL-CA for pgadmin-hackers@arkaria.postgresql.org; Thu, 31 May 2018 05:16:26 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fOFwl-00005y-P8 for pgadmin-hackers@arkaria.postgresql.org; Thu, 31 May 2018 05:16:23 +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.89) (envelope-from ) id 1fOFwl-00005j-AF for pgadmin-hackers@lists.postgresql.org; Thu, 31 May 2018 05:16:23 +0000 Received: from mail-oi0-x244.google.com ([2607:f8b0:4003:c06::244]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fOFwd-000550-Si for pgadmin-hackers@postgresql.org; Thu, 31 May 2018 05:16:22 +0000 Received: by mail-oi0-x244.google.com with SMTP id i205-v6so3880032oib.1 for ; Wed, 30 May 2018 22:16:15 -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=kDiF25cL1Hcd/gA3bhTuybc9gbftkCtvvGZL4/66tn4=; b=sItZMPA08hhv2EwV8YbRrxPhhs2XwM2+UAnwTavT9q3ZAIrMVtX+4HQX5HE63h1QQ8 q0nlXmn4svygmWiPecc9rzoDP/2GnTwRWgJUsmL7TUP2IXrNMkUeZvZktM/svkzz0Uub co8iTnyMYF/X1vXrNbU/rjf3T000dWCIUzioclxQxyOVj5p+UX6Zf8Ztui0R6P3c/qbt uozA+ev8iYlKn3CR1iQs+mVXADYf7iFTDJHvASnrMuHplaN3YwCZvH0MNRZowAZVXe8D nfH9uymMkdSPfKf/Erb7DPdejnH3FADBH4zM39YJzvx6SjON0e6Jztaj91quqcjj3icz L9AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=kDiF25cL1Hcd/gA3bhTuybc9gbftkCtvvGZL4/66tn4=; b=r4yy4QWRk20CrNRSArcLhbTrEmjhQ/rdH+uiXEJAgWVskcaxrxNx4hQF4jcJCApAgc vwkY/vbSKNxn6QDhjPCz65avGZ5UsUyV27wPDeAX6grS0iCNoePL1oNiL7Oubmbqtq2V sqJ8gcensnhD6YvrCSOpZqA1ZngW8OF7ihYGFjYM4JIBSOi1KpQk87Fsm4I8k4S+gMrR SIOiiNx7L8oHAiADsey2GbWLsK4a7Dcdqelft1FD6dU94Kpk/kzopnL+630LbmS+IS4m ygi+CCjf3uJsWbmZX9IV6BzkdPbsLIQrnP0rmWkYjT+zCYHYxJ8E7IcTM+5ohXyxk/fN iRxQ== X-Gm-Message-State: ALKqPwcylAJsSXfZ8NIrQyeMTshQblKmGTGOAq/e8ugMg7a2/A7MOfy3 4aERqjgc6MHXFAsBhxWcLklCDhJ3JiNGbQEewgcrYA== X-Google-Smtp-Source: ADUXVKITzyNz+XYyCzDBhkgpWyuQPX7NREkaYa4xsug907i9Klh1U8dDfq1ODBsQyH7WQQIDa8aWfwvsfFtkA92n1sE= X-Received: by 2002:aca:a887:: with SMTP id r129-v6mr3202531oie.253.1527743773364; Wed, 30 May 2018 22:16:13 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:5301:0:0:0:0:0 with HTTP; Wed, 30 May 2018 22:16:12 -0700 (PDT) In-Reply-To: References: From: Khushboo Vashi Date: Thu, 31 May 2018 10:46:12 +0530 Message-ID: Subject: Re: [pgadmin4][Patch]: Test cases for the backup module To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000eb939e056d7990d6" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000eb939e056d7990d6 Content-Type: multipart/alternative; boundary="000000000000eb939b056d7990d4" --000000000000eb939b056d7990d4 Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached updated patch with the fixes. The test cases were only failing on MAC not on Linux. Thanks, Khushboo On Wed, May 30, 2018 at 10:13 AM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > > > On Wed, May 30, 2018 at 1:05 AM, Dave Page wrote: > >> Hi >> >> On Mon, May 28, 2018 at 8:09 AM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> please find the attached updated patch for the test cases of Backup, >>> Restore and Maintenance modules which includes: >>> >>> 1. Unit test cases >>> 2. End to end regression test cases >>> 3. Feature test cases >>> >> >> Thanks. I've yet to be able to run the feature tests successfully. Here's >> what I've found so far: >> >> 1) DEFAULT_BINARY_PATHS should be default_binary_paths in the JSON config >> file. >> >> Will do. > >> 2) I've hit screensize related issues: >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.feature_tests.pg_util >> ities_maintenance_test.PGUtilitiesMaintenanceFeatureTest) >> >> Test for PG maintenance: database >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", >> line 56, in runTest >> >> self._open_maintenance_dialogue() >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_maintenance_test.py", >> line 75, in _open_maintenance_dialogue >> >> "*[.='" + self.table_name + "']/../*[@class='aciTreeItem'" >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 80, in click >> >> self._execute(Command.CLICK_ELEMENT) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webelement.py", line 628, in _execute >> >> return self._parent.execute(command, params) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/webdriver.py", line 312, in execute >> >> self.error_handler.check_response(response) >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/remote/errorhandler.py", line 242, in >> check_response >> >> raise exception_class(message, screen, stacktrace) >> >> WebDriverException: Message: unknown error: Element > class="aciTreeItem">... is not clickable at point (223, 604). Other >> element would receive the click:
...
>> >> (Session info: chrome=66.0.3359.181) >> >> (Driver info: chromedriver=2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011),platform=Mac >> OS X 10.12.6 x86_64) >> >> 3) One time the test did start, but then I saw this failure: >> >> ====================================================================== >> >> ERROR: runTest (pgadmin.feature_tests.pg_util >> ities_backup_restore_test.PGUtilitiesBackupFeatureTest) >> >> Test for PG utilities - Backup and Restore >> >> ---------------------------------------------------------------------- >> >> Traceback (most recent call last): >> >> File "/Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_backup_restore_test.py", >> line 93, in runTest >> >> self.page.fill_input_by_field_name("file", "test_backup_file") >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 211, in fill_input_by_field_name >> >> self.wait_for_input_field_content(field_name, field_content) >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 251, in wait_for_input_field_content >> >> "field to contain '" + str(content) + "'", input_field_has_content >> >> File "/Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_page.py", >> line 337, in _wait_for >> >> "Timed out waiting for " + waiting_for_message >> >> File "/Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packa >> ges/selenium/webdriver/support/wait.py", line 80, in until >> >> raise TimeoutException(message, screen, stacktrace) >> >> TimeoutException: Message: Timed out waiting for field to contain >> 'test_backup_file' >> >> >> >> (with screenshot attached) >> >> Thanks. >> >> I have ran the feature tests with multiple servers many times but didn't > get a single failure. > I have asked Akshay to run on his machine, let see what he gets. > >> >> >> >> >>> >>> Thanks, >>> Khushboo >>> >>> >>> >>> >>> On Wed, Apr 25, 2018 at 9:40 PM, Joao De Almeida Pereira < >>> jdealmeidapereira@pivotal.io> wrote: >>> >>>> Hi Khushboo, >>>> >>>> We reviewed the patch and it is very nice to see some more coverage in >>>> this area. Good job :D >>>> >>>> We passed the tests through our CI the feature tests are not passing, >>>> but the linter fails: >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:37: [E501] line too long (91 > 79 characters) >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:53: [E501] line too long (104 > 79 characters) >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:59: [E501] line too long (85 > 79 characters) >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:62: [E501] line too long (96 > 79 characters) >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:63: [E501] line too long (91 > 79 characters) >>>> >>>> ./pgadmin/feature_tests/pg_utilities_backup_test.py:70: [E501] line too long (118 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:37: [E121] continuation line under-indented for hanging indent >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:48: [E122] continuation line missing indentation or outdented >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpected spaces around keyword / parameter equals >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:49: [E251] unexpected spaces around keyword / parameter equals >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:51: [E501] line too long (91 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:52: [E501] line too long (94 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:53: [E501] line too long (108 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:81: [E501] line too long (113 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:82: [E501] line too long (94 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:83: [E501] line too long (108 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:111: [E501] line too long (100 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:113: [E501] line too long (94 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:114: [E501] line too long (108 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_backup_message.py:147: [E501] line too long (93 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:40: [E121] continuation line under-indented for hanging indent >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:51: [E122] continuation line missing indentation or outdented >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:135: [E501] line too long (80 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:137: [E501] line too long (83 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:138: [E122] continuation line missing indentation or outdented >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:139: [E122] continuation line missing indentation or outdented >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:140: [E122] continuation line missing indentation or outdented >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:191: [E501] line too long (81 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:203: [E501] line too long (80 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E128] continuation line under-indented for visual indent >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:204: [E501] line too long (94 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E128] continuation line under-indented for visual indent >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:205: [E501] line too long (94 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_batch_process.py:216: [W391] blank line at end of file >>>> >>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:296: [E501] line too long (97 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:317: [E303] too many blank lines (2) >>>> >>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:336: [E501] line too long (84 > 79 characters) >>>> >>>> ./pgadmin/tools/backup/tests/test_create_backup_job.py:371: [W391] blank line at end of file >>>> >>>> 2 E121 continuation line under-indented for hanging indent >>>> >>>> 5 E122 continuation line missing indentation or outdented >>>> >>>> 2 E128 continuation line under-indented for visual indent >>>> >>>> 2 E251 unexpected spaces around keyword / parameter equals >>>> >>>> 1 E303 too many blank lines (2) >>>> >>>> 24 E501 line too long (91 > 79 characters) >>>> >>>> 2 W391 blank line at end of file >>>> >>>> 38 >>>> >>>> >>>> For the feature tests, we realized we had to update the configuration, >>>> and we did that, but we get the following error attached. We spent some >>>> time trying to understand the problem but we were not successful. >>>> >>>> >>>> Codewise: >>>> - We just found some One Letter Variables in the code... >>>> - Looks like there is a bug report in this area of the code and we do >>>> not have coverage for it: https://redmine.postgresql.org/issues/3232 >>>> Looks like in some of the unit tests we only have happy path tests, >>>> maybe we should see if there are any sad paths that also need coverage. >>>> >>>> The configuration change, maybe need to be updated. When we install >>>> multiple versions of postgres the binaries live in >>>> `/usr/lib/postgresql/{{db_version}}/bin`, which makes us think that >>>> this configuration should live near the server configuration, maybe? Also >>>> to maintain coherency on the naming maybe we should make it all lower case. >>>> Just as an aside, you can add the gpdb configuration as well in you >>>> patch. >>>> >>>> Thanks >>>> Victoria & Joao >>>> >>>> On Wed, Apr 25, 2018 at 5:20 AM Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find the attached patch which covers test cases for the backup >>>>> module (RM #3206). >>>>> >>>>> 1. Unit test cases >>>>> 2. End to end regression test cases >>>>> 3. Feature test cases >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>> >>> >> >> >> -- >> Dave Page >> Blog: http://pgsnake.blogspot.com >> Twitter: @pgsnake >> >> EnterpriseDB UK: http://www.enterprisedb.com >> The Enterprise PostgreSQL Company >> > > --000000000000eb939b056d7990d4 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch with the fixes.
The test cases were only failing on MAC not o= n Linux.

Thanks,
Khushboo

On Wed, May 30, 2018= at 10:13 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.co= m> wrote:
=

On Wed, May 30, 2018 at 1:05 AM, Dave Page <dpage@pgadmin.org>= ; wrote:
Hi

On Mon, May 2= 8, 2018 at 8:09 AM, Khushboo Vashi <khushboo.vashi@enterpris= edb.com> wrote:
Hi,

please find the attached upd= ated patch for the test cases of Backup, Restore and Maintenance modules wh= ich includes:

1. Unit test cases
2. End= to end regression test cases=C2=A0
3. Feature test cases
<= /span>

Thanks. I've yet to= be able to run the feature tests successfully. Here's what I've fo= und so far:

1) DEFAULT_BINARY_PATHS should be defa= ult_binary_paths in the JSON config file.

<= /div>
Will do.=C2=A0
2) I've hit screensize related= issues:

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.feature_tests.p= g_utilities_maintenance_test.PGUtilitiesMaintenanceFeatureTest)

Test for PG maintenance: database

----------------------------------= ------------------------------------

Traceback (most recent call last):

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_m= aintenance_test.py", line 56, in runTest

=C2=A0 =C2=A0 self.= _open_maintenance_dialogue()

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_m= aintenance_test.py", line 75, in _open_maintenance_dialogue

=C2=A0 =C2=A0 "= ;*[.=3D'" + self.table_name + "']/../*[@class=3D'aciT= reeItem'"

=C2=A0 File "/= Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sel= enium/webdriver/remote/webelement.py", line 80, in click

=C2=A0 =C2=A0 self.= _execute(Command.CLICK_ELEMENT)

=C2=A0 File "/= Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sel= enium/webdriver/remote/webelement.py", line 628, in _execute

=C2=A0 =C2=A0 retur= n self._parent.execute(command, params)

=C2=A0 File "/= Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sel= enium/webdriver/remote/webdriver.py", line 312, in execute=

=C2=A0 =C2=A0 self.= error_handler.check_response(response)

=C2=A0 File "/= Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sel= enium/webdriver/remote/errorhandler.py", line 242, in check_respo= nse

=C2=A0 =C2=A0 raise= exception_class(message, screen, stacktrace)

WebDriverException: Message: unknown er= ror: Element <span class=3D"aciTreeItem">...</span> i= s not clickable at point (223, 604). Other element would receive the click:= <div class=3D"wcFrameCenter wcPanelBackground wcScrollableX wcScro= llableY" style=3D"left: 0px; right: 0px; bottom: 0px;">..= .</div>

=C2=A0 (Session inf= o: chrome=3D66.0.3359.181)

=C2=A0 (Driver info= : chromedriver=3D2.38.552518 (183d19265345f54ce39cbb94cf81ba5f15905011= ),platform=3DMac OS X 10.12.6 x86_64)


3) One time the test did start, but then I saw this failure:=

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=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.feature_tests.p= g_utilities_backup_restore_test.PGUtilitiesBackupFeatureTest)

Test for PG utilities - Backup and Rest= ore

----------------------------------= ------------------------------------

Traceback (most recent call last):

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/pgadmin/feature_tests/pg_utilities_b= ackup_restore_test.py", line 93, in runTest

=C2=A0 =C2=A0 self.= page.fill_input_by_field_name("file", "test_backup_file= ")

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_pag= e.py", line 211, in fill_input_by_field_name

=C2=A0 =C2=A0 self.= wait_for_input_field_content(field_name, field_content)

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_pag= e.py", line 251, in wait_for_input_field_content

=C2=A0 =C2=A0 "= ;field to contain '" + str(content) + "'", input_fie= ld_has_content

=C2=A0 File "/= Users/dpage/git/pgadmin4/web/regression/feature_utils/pgadmin_pag= e.py", line 337, in _wait_for

=C2=A0 =C2=A0 "= ;Timed out waiting for " + waiting_for_message

=C2=A0 File "/= Users/dpage/.virtualenvs/pgadmin4/lib/python2.7/site-packages/sel= enium/webdriver/support/wait.py", line 80, in until

=C2=A0 =C2=A0 raise= TimeoutException(message, screen, stacktrace)

TimeoutException: Message: Timed out wa= iting for field to contain 'test_backup_file'



(with screenshot attached)

Thanks.<= /div>

I have ran the feature te= sts with multiple servers many times but didn't get a single failure.
I have asked Akshay to run on his machine, let see what he gets.
=


=C2= =A0

Thanks,
Khushboo



<= div class=3D"m_-8865948898208653791m_-2461637439845439354h5">

On Wed, Apr 25, 2018 at 9:40 PM= , Joao De Almeida Pereira <jdealmeidapereira@pivotal.io>= wrote:
Hi Khushb= oo,

We reviewed the patch and it is very nice to see som= e more coverage in this area. Good job :D

We passe= d the tests through our CI the feature tests are not passing, but the linte= r fails:
./pgadmin/feature_tests= /pg_utilities_backup_test.py:37: [E501] line too long (91 > 79 char= acters)
./pgadmin/feature_tests/pg_utiliti= es_backup_test.py:53: [E501] line too long (104 > 79 characters)
./pgadmin/feature_tests/pg_utiliti= es_backup_test.py:59: [E501] line too long (85 > 79 characters)
./pgadmin/feature_tests/pg_utiliti= es_backup_test.py:62: [E501] line too long (96 > 79 characters)
./pgadmin/feature_tests/pg_utiliti= es_backup_test.py:63: [E501] line too long (91 > 79 characters)
./pgadmin/feature_tests/pg_utiliti= es_backup_test.py:70: [E501] line too long (118 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:37: [E121] continuation line under-indented for hanging i= ndent
./pgadmin/tools/backup/tests/test_= backup_message.py:48: [E122] continuation line missing indentation or outde= nted
./pgadmin/tools/backup/tests/test_= backup_message.py:49: [E251] unexpected spaces around keyword / parameter e= quals
./pgadmin/tools/backup/tests/test_= backup_message.py:49: [E251] unexpected spaces around keyword / parameter e= quals
./pgadmin/tools/backup/tests/test_= backup_message.py:51: [E501] line too long (91 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:52: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:53: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:81: [E501] line too long (113 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:82: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:83: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:111: [E501] line too long (100 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:113: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:114: [E501] line too long (108 > 79 characters)
./pgadmin/tools/backup/tests/test_= backup_message.py:147: [E501] line too long (93 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:40: [E121] continuation line under-indented for hanging in= dent
./pgadmin/tools/backup/tests/test_= batch_process.py:51: [E122] continuation line missing indentation or outden= ted
./pgadmin/tools/backup/tests/test_= batch_process.py:135: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:137: [E501] line too long (83 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:138: [E122] continuation line missing indentation or outde= nted
./pgadmin/tools/backup/tests/test_= batch_process.py:139: [E122] continuation line missing indentation or outde= nted
./pgadmin/tools/backup/tests/test_= batch_process.py:140: [E122] continuation line missing indentation or outde= nted
./pgadmin/tools/backup/tests/test_= batch_process.py:191: [E501] line too long (81 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:203: [E501] line too long (80 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:204: [E128] continuation line under-indented for visual in= dent
./pgadmin/tools/backup/tests/test_= batch_process.py:204: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:205: [E128] continuation line under-indented for visual in= dent
./pgadmin/tools/backup/tests/test_= batch_process.py:205: [E501] line too long (94 > 79 characters)
./pgadmin/tools/backup/tests/test_= batch_process.py:216: [W391] blank line at end of file
./pgadmin/tools/backup/tests/test_= create_backup_job.py:296: [E501] line too long (97 > 79 characters)
./pgadmin/tools/backup/tests/test_= create_backup_job.py:317: [E303] too many blank lines (2)
./pgadmin/tools/backup/tests/test_= create_backup_job.py:336: [E501] line too long (84 > 79 characters)
./pgadmin/tools/backup/tests/test_= create_backup_job.py:371: [W391] blank line at end of file
2 E121 continuation line under-in= dented for hanging indent
5 E122 continuation line missing = indentation or outdented
2 E128 continuation line under-in= dented for visual indent
2 E251 unexpected spaces around k= eyword / parameter equals
1 E303 too many blank lines (2)
24 E501 line too long (91 > 79 = characters)
2 W391 blank line at end of file<= /span>
38

ht= tps://redmine.postgresql.org/issues/3232
=C2=A0 Looks li= ke in some of the unit tests we only have happy path tests, maybe we should= see if there are any sad paths that also need coverage.

The configuration change, maybe need to be updated. When we install = multiple versions of postgres the binaries live in `/usr/lib/postgresql/{{d= b_version}}/bin`, which makes us think that this configuration should = live near the server configuration, maybe? Also to maintain coherency on th= e naming maybe we should make it all lower case.
Just as an aside= , you can add the gpdb configuration as well in you patch.

Thanks
Victoria & Joao

On Wed, Apr 25, 2018 at 5:20 AM Khush= boo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Please fin= d the attached patch which covers test cases for the backup module (RM #320= 6).

1. Unit test cases
2. End to end reg= ression test cases=C2=A0
3. Feature test cases

Thanks,
Khushboo




-= -
Dave Page
Blog: http://pgsnake.blogspot.com<= br>Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterpri= se PostgreSQL Company


--000000000000eb939b056d7990d4-- --000000000000eb939e056d7990d6 Content-Type: application/octet-stream; name="RM_3206_ver1.patch" Content-Disposition: attachment; filename="RM_3206_ver1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jhu36odj0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rl c3RzL3Rlc3Rfc2VydmVyX2FkZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2FkZC5weQppbmRleCA1YWQwNDY5Li5jM2JlMjEz IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRkLnB5CkBAIC0zNiw1ICszNiw1IEBA IGNsYXNzIFNlcnZlcnNBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgIHV0 aWxzLndyaXRlX25vZGVfaW5mbygic2lkIiwgc2VydmVyX2RpY3QpCiAKICAgICBkZWYgdGVhckRv d24oc2VsZik6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlIHRoZSBzZXJ2ZXIgZnJv bSBTUUxpdGUgIiIiCisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGVsZXRlIHRoZSBzZXJ2ZXIg ZnJvbSBTUUxpdGUiIiIKICAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZlcl93aXRoX2FwaShzZWxm LnRlc3Rlciwgc2VsZi5zZXJ2ZXJfaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9mZWF0dXJl X3Rlc3RzL3BnX3V0aWxpdGllc19iYWNrdXBfcmVzdG9yZV90ZXN0LnB5IGIvd2ViL3BnYWRtaW4v ZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfYmFja3VwX3Jlc3RvcmVfdGVzdC5weQpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNGMxYmIyCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfYmFja3VwX3Jlc3RvcmVfdGVz dC5weQpAQCAtMCwwICsxLDE0MCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0 IHRpbWUKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZl cldhaXQKK2Zyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5ieSBpbXBvcnQgQnkKK2Zyb20g c2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQgaW1wb3J0IGV4cGVjdGVkX2NvbmRpdGlvbnMgYXMg RUMKK2Zyb20gcmVncmVzc2lvbi5mZWF0dXJlX3V0aWxzLmJhc2VfZmVhdHVyZV90ZXN0IGltcG9y dCBCYXNlRmVhdHVyZVRlc3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBv cnQgdGVzdF91dGlscworCitpbXBvcnQgY29uZmlnCisKKworY2xhc3MgUEdVdGlsaXRpZXNCYWNr dXBGZWF0dXJlVGVzdChCYXNlRmVhdHVyZVRlc3QpOgorICAgICIiIiBUaGlzIGNsYXNzIHRlc3Qg UEcgdXRpbGl0aWVzIC0gQmFja3VwIGFuZCBSZXN0b3JlIHRlc3Qgc2NlbmFyaW9zICIiIgorCisg ICAgc2NlbmFyaW9zID0gWworICAgICAgICAoIlRlc3QgZm9yIFBHIHV0aWxpdGllcyAtIEJhY2t1 cCBhbmQgUmVzdG9yZSIsIGRpY3QoKSkKKyAgICBdCisKKyAgICBkZWYgYmVmb3JlKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKyAgICAgICAgY29ubmVjdGlvbiA9IHRlc3RfdXRpbHMuZ2V0X2RiX2Nvbm5lY3Rp b24oCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnZGInXSwKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWyd1c2VybmFtZSddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiX3Bhc3N3b3JkJ10s CisgICAgICAgICAgICBzZWxmLnNlcnZlclsnaG9zdCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJbJ3BvcnQnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydzc2xtb2RlJ10KKyAgICAgICAg KQorICAgICAgICB0ZXN0X3V0aWxzLmRyb3BfZGF0YWJhc2UoY29ubmVjdGlvbiwgInBnX3V0aWxp dHlfdGVzdF9kYiIpCisKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5z ZXJ2ZXIsICJwZ191dGlsaXR5X3Rlc3RfZGIiKQorICAgICAgICBzZWxmLnBhZ2UuYWRkX3NlcnZl cihzZWxmLnNlcnZlcikKKworICAgICAgICBzZWxmLndhaXQgPSBXZWJEcml2ZXJXYWl0KHNlbGYu cGFnZS5kcml2ZXIsIDIwKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYu cGFnZS50b2dnbGVfb3Blbl9zZXJ2ZXIoc2VsZi5zZXJ2ZXJbJ25hbWUnXSkKKyAgICAgICAgc2Vs Zi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAgICAgICAgc2VsZi5w YWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgncGdfdXRpbGl0eV90ZXN0X2RiJykKKyAgICAgICAg c2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2xpbmtfdGV4dCgiVG9vbHMiKS5jbGljaygpCisK KyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfcGFydGlhbF9saW5rX3RleHQoIkJhY2t1cC4uLiIp LmNsaWNrKCkKKworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxlbWVu dF9sb2NhdGVkKAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRILAorICAg ICAgICAgICAgICAgICIvL2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUnKV0iCisg ICAgICAgICAgICApCisgICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGlsKEVDLmVs ZW1lbnRfdG9fYmVfY2xpY2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwgIi5i cm93c2VfZmlsZV9pbnB1dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maWxsX2lu cHV0X2J5X2ZpZWxkX25hbWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSAi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbmQgY29udGFpbnMoLiwnQmFja3Vw JyldIikuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rp c2FwcGVhcigKKyAgICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRf YnlfY3NzX3NlbGVjdG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQorCisgICAgICAgIHN0YXR1 cyA9IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50 ZXh0CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RhdHVzLCAiU3VjY2Vzc2Z1bGx5IGNv bXBsZXRlZC4iKQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9zcGFuW2NvbnRh aW5zKHN0cmluZygpLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInQ2xpY2sg aGVyZSBmb3IgZGV0YWlscy4nKV0iKS5jbGljaygpCisgICAgICAgIGNvbW1hbmQgPSBzZWxmLnBh Z2UuZmluZF9ieV94cGF0aCgiLy9wW2NvbnRhaW5zKEBjbGFzcywgIgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1kZXRhaWxlZC1kZXNjJyldIikudGV4dAor CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5zZXJ2ZXJbJ25hbWUnXSwgc3RyKGNvbW1hbmQp KQorICAgICAgICBzZWxmLmFzc2VydEluKCJmcm9tIGRhdGFiYXNlICdwZ191dGlsaXR5X3Rlc3Rf ZGInIiwgc3RyKGNvbW1hbmQpKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ0ZXN0X2JhY2t1cCIs IHN0cihjb21tYW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigicGdfZHVtcCIsIHN0cihjb21t YW5kKSkKKworICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMo QGNsYXNzLCd3Y0Zsb2F0aW5nRm9jdXMnKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIl0vL2Rpdltjb250YWlucyhAY2xhc3MsJ2ZhLWNsb3NlJyldIikuY2xpY2soKQorCisgICAg ICAgIHNlbGYuZHJpdmVyLmZpbmRfZWxlbWVudF9ieV9saW5rX3RleHQoIlRvb2xzIikuY2xpY2so KQorICAgICAgICBzZWxmLnBhZ2UuZmluZF9ieV9wYXJ0aWFsX2xpbmtfdGV4dCgiUmVzdG9yZS4u LiIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLndhaXQudW50aWwoRUMucHJlc2VuY2Vfb2ZfZWxl bWVudF9sb2NhdGVkKAorICAgICAgICAgICAgKAorICAgICAgICAgICAgICAgIEJ5LlhQQVRILAor ICAgICAgICAgICAgICAgICIvL2xhYmVsW2NvbnRhaW5zKHN0cmluZygpLCAnRmlsZW5hbWUnKV0i CisgICAgICAgICAgICApCisgICAgICAgICkpCisKKyAgICAgICAgc2VsZi53YWl0LnVudGlsKEVD LmVsZW1lbnRfdG9fYmVfY2xpY2thYmxlKAorICAgICAgICAgICAgKEJ5LkNTU19TRUxFQ1RPUiwg Ii5icm93c2VfZmlsZV9pbnB1dCIpKSkuY2xpY2soKQorCisgICAgICAgIHNlbGYucGFnZS5maWxs X2lucHV0X2J5X2ZpZWxkX25hbWUoImZpbGUiLCAidGVzdF9iYWNrdXAiKQorICAgICAgICBzZWxm LnBhZ2UuZmluZF9ieV94cGF0aCgiLy9idXR0b25bY29udGFpbnMoQGNsYXNzLCdmYS11cGxvYWQn KSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgY29udGFpbnMoLiwnUmVz dG9yZScpXSIpLmNsaWNrKCkKKworICAgICAgICBzZWxmLnBhZ2Uud2FpdF9mb3JfZWxlbWVudF90 b19kaXNhcHBlYXIoCisgICAgICAgICAgICBsYW1iZGEgZHJpdmVyOiBkcml2ZXIuZmluZF9lbGVt ZW50X2J5X2Nzc19zZWxlY3RvcigiLmFqcy1tb2RhbCIpCisgICAgICAgICkKKworICAgICAgICBz dGF0dXMgPSBzZWxmLnBhZ2UuZmluZF9ieV94cGF0aCgiLy9kaXZbY29udGFpbnMoQGNsYXNzLCIK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIidiZy1zdWNjZXNzJyld IikudGV4dAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgIlN1Y2Nlc3NmdWxs eSBjb21wbGV0ZWQuIikKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vc3Bhbltj b250YWlucyhzdHJpbmcoKSwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ0Ns aWNrIGhlcmUgZm9yIGRldGFpbHMuJyldIikuY2xpY2soKQorICAgICAgICBjb21tYW5kID0gc2Vs Zi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vcFtjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAnYmctZGV0YWlsZWQtZGVzYycpXSIpLnRl eHQKKworICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYuc2VydmVyWyduYW1lJ10sIHN0cihjb21t YW5kKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigidGVzdF9iYWNrdXAiLCBzdHIoY29tbWFuZCkp CisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBnX3Jlc3RvcmUiLCBzdHIoY29tbWFuZCkpCisKKyAg ICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywnd2NG bG9hdGluZ0ZvY3VzJyldIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLy9kaXZb Y29udGFpbnMoQGNsYXNzLCdmYS1jbG9zZScpXSIpLmNsaWNrKCkKKworICAgIGRlZiBhZnRlcihz ZWxmKToKKyAgICAgICAgc2VsZi5wYWdlLnJlbW92ZV9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCisgICAg ICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAg ICAgc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUn XSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAg c2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdGVz dF91dGlscy5kcm9wX2RhdGFiYXNlKGNvbm5lY3Rpb24sICJwZ191dGlsaXR5X3Rlc3RfZGIiKQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9wZ191dGlsaXRpZXNfbWFpbnRl bmFuY2VfdGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRpbGl0aWVzX21h aW50ZW5hbmNlX3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgw NjI2OAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMvcGdfdXRp bGl0aWVzX21haW50ZW5hbmNlX3Rlc3QucHkKQEAgLTAsMCArMSwxMTIgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIF8qXyAgY29kaW5nOiB1dGYtOCBfKl8KK2ltcG9ydCB0aW1lCitmcm9t IHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnVpIGltcG9ydCBXZWJEcml2ZXJXYWl0Citmcm9t IHNlbGVuaXVtLndlYmRyaXZlci5jb21tb24uYnkgaW1wb3J0IEJ5Citmcm9tIHNlbGVuaXVtLndl YmRyaXZlci5zdXBwb3J0IGltcG9ydCBleHBlY3RlZF9jb25kaXRpb25zIGFzIEVDCitmcm9tIHJl Z3Jlc3Npb24uZmVhdHVyZV91dGlscy5iYXNlX2ZlYXR1cmVfdGVzdCBpbXBvcnQgQmFzZUZlYXR1 cmVUZXN0Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRp bHMKKworCitjbGFzcyBQR1V0aWxpdGllc01haW50ZW5hbmNlRmVhdHVyZVRlc3QoQmFzZUZlYXR1 cmVUZXN0KToKKyAgICAiIiIgVGhpcyBjbGFzcyB0ZXN0IFBHIHV0aWxpdGllcyB0ZXN0IHNjZW5h cmlvcyAiIiIKKworICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCJUZXN0IGZvciBQRyBtYWlu dGVuYW5jZTogZGF0YWJhc2UgcGdfbWFpbnRlbmFuY2UiLCBkaWN0KAorICAgICAgICAgICAgZGF0 YWJhc2VfbmFtZT0ncGdfbWFpbnRlbmFuY2UnLAorICAgICAgICAgICAgdGFibGVfbmFtZT0ncGdf bWFpbnRlbmFuY2VfdGFibGUnLAorICAgICAgICAgICAgdGVzdF9sZXZlbD0nZGF0YWJhc2UnCisg ICAgICAgICkpLAorICAgICAgICAoIlRlc3QgZm9yIFBHIG1haW50ZW5hbmNlOiBkYXRhYmFzZSIs IGRpY3QoCisgICAgICAgICAgICBkYXRhYmFzZV9uYW1lPSdwZ19tYWludGVuYW5jZScsCisgICAg ICAgICAgICB0YWJsZV9uYW1lPSdwZ19tYWludGVuYW5jZV90YWJsZScsCisgICAgICAgICAgICB0 ZXN0X2xldmVsPSd0YWJsZScKKyAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIGJlZm9yZShz ZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMg Tm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1 bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisg ICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICApCisgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0aWxzLmdldF9kYl9j b25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiJ10sCisgICAgICAgICAgICBz ZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydkYl9wYXNz d29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAgICAgICAgICAgIHNl bGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsnc3NsbW9kZSddCisg ICAgICAgICkKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfZGF0YWJhc2Uoc2VsZi5zZXJ2ZXIs IHNlbGYuZGF0YWJhc2VfbmFtZSkKKyAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFibGUoc2Vs Zi5zZXJ2ZXIsIHNlbGYuZGF0YWJhc2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi50YWJsZV9uYW1lKQorICAgICAgICBzZWxmLnBhZ2UuYWRkX3NlcnZlcihzZWxm LnNlcnZlcikKKyAgICAgICAgc2VsZi53YWl0ID0gV2ViRHJpdmVyV2FpdChzZWxmLnBhZ2UuZHJp dmVyLCAyMCkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBzZWxmLl9vcGVuX21h aW50ZW5hbmNlX2RpYWxvZ3VlKCkKKyAgICAgICAgIyB0aW1lLnNsZWVwCisgICAgICAgIHNlbGYu cGFnZS5maW5kX2J5X3hwYXRoKCIvL2J1dHRvbltjb250YWlucyhAY2xhc3MsJ2ZhLXNhdmUnKSBh bmQiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY29udGFpbnMoLiwnT0snKV0i KS5jbGljaygpCisgICAgICAgIHNlbGYucGFnZS53YWl0X2Zvcl9lbGVtZW50X3RvX2Rpc2FwcGVh cigKKyAgICAgICAgICAgIGxhbWJkYSBkcml2ZXI6IGRyaXZlci5maW5kX2VsZW1lbnRfYnlfY3Nz X3NlbGVjdG9yKCIuYWpzLW1vZGFsIikKKyAgICAgICAgKQorICAgICAgICBzZWxmLl92ZXJpZnlf Y29tbWFuZCgpCisKKyAgICBkZWYgX29wZW5fbWFpbnRlbmFuY2VfZGlhbG9ndWUoc2VsZik6Cisg ICAgICAgIHNlbGYucGFnZS50b2dnbGVfb3Blbl9zZXJ2ZXIoc2VsZi5zZXJ2ZXJbJ25hbWUnXSkK KyAgICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnRGF0YWJhc2VzJykKKyAg ICAgICAgc2VsZi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbShzZWxmLmRhdGFiYXNlX25hbWUp CisgICAgICAgIGlmIHNlbGYudGVzdF9sZXZlbCA9PSAndGFibGUnOgorICAgICAgICAgICAgc2Vs Zi5wYWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnU2NoZW1hcycpCisgICAgICAgICAgICBzZWxm LnBhZ2UudG9nZ2xlX29wZW5fdHJlZV9pdGVtKCdwdWJsaWMnKQorICAgICAgICAgICAgc2VsZi5w YWdlLnRvZ2dsZV9vcGVuX3RyZWVfaXRlbSgnVGFibGVzJykKKyAgICAgICAgICAgIHNlbGYucGFn ZS5maW5kX2J5X3hwYXRoKAorICAgICAgICAgICAgICAgICIvLypbQGlkPSd0cmVlJ10vLyIKKyAg ICAgICAgICAgICAgICAiKlsuPSciICsgc2VsZi50YWJsZV9uYW1lICsgIiddLy4uLypbQGNsYXNz PSdhY2lUcmVlSXRlbSciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJdIikuY2xpY2soKQorICAgICAgICBzZWxmLmRyaXZlci5maW5kX2VsZW1lbnRfYnlfbGlu a190ZXh0KCJUb29scyIpLmNsaWNrKCkKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfcGFydGlh bF9saW5rX3RleHQoIk1haW50ZW5hbmNlLi4uIikuY2xpY2soKQorICAgICAgICB0aW1lLnNsZWVw KDAuNSkKKworICAgIGRlZiBfdmVyaWZ5X2NvbW1hbmQoc2VsZik6CisgICAgICAgIHN0YXR1cyA9 IHNlbGYucGFnZS5maW5kX2J5X3hwYXRoKCIvL2Rpdltjb250YWlucyhAY2xhc3MsIgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2JnLXN1Y2Nlc3MnKV0iKS50ZXh0 CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgIlN1Y2Nlc3NmdWxseSBjb21wbGV0 ZWQuIikKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfeHBhdGgoIi8vc3Bhbltjb250YWlucyhz dHJpbmcoKSwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJ0NsaWNrIGhlcmUg Zm9yIGRldGFpbHMuJyldIikuY2xpY2soKQorICAgICAgICBjb21tYW5kID0gc2VsZi5wYWdlLmZp bmRfYnlfeHBhdGgoIi8vcFtjb250YWlucyhAY2xhc3MsIgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIiAnYmctZGV0YWlsZWQtZGVzYycpXSIpLnRleHQKKyAgICAg ICAgaWYgc2VsZi50ZXN0X2xldmVsID09ICdkYXRhYmFzZSc6CisgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhjb21tYW5kLCAiVkFDVVVNICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICIoVkVSQk9TRSlcblJ1bm5pbmcgUXVlcnk6IgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxuVkFDVVVNIFZFUkJPU0U7IikKKyAgICAgICAgZWxz ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbW1hbmQsICJWQUNVVU0gIgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihWRVJCT1NFKVxuUnVubmluZyBR dWVyeToiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5WQUNVVU0g VkVSQk9TRSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcHVibGlj LiIgKyBzZWxmLnRhYmxlX25hbWUgKyAiOyIpCisKKyAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlf eHBhdGgoIi8vZGl2W2NvbnRhaW5zKEBjbGFzcywnd2NGbG9hdGluZ0ZvY3VzJyldLy8iCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXZbY29udGFpbnMoQGNsYXNzLCdmYS1jbG9z ZScpXSIpLmNsaWNrKCkKKworICAgIGRlZiBhZnRlcihzZWxmKToKKyAgICAgICAgc2VsZi5wYWdl LnJlbW92ZV9zZXJ2ZXIoc2VsZi5zZXJ2ZXIpCisgICAgICAgIGNvbm5lY3Rpb24gPSB0ZXN0X3V0 aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2RiJ10sCisg ICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAgIHNlbGYuc2Vy dmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hvc3QnXSwKKyAg ICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsn c3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdGVzdF91dGlscy5kcm9wX2RhdGFiYXNlKGNv bm5lY3Rpb24sIHNlbGYuZGF0YWJhc2VfbmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90 ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlk ZTI5CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYWNr dXBfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVz dHMvdGVzdF9iYWNrdXBfY3JlYXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uMWY5MDhmMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpA QCAtMCwwICsxLDQ1OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitpbXBvcnQgc3lz CitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vz cy5wcm9jZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1 cCBpbXBvcnQgQmFja3VwTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0 Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91 dGlscworZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNl cy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKKworaWYgc3lz LnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBNYWdp Y01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNN b2NrCisKKworY2xhc3MgQmFja3VwQ3JlYXRlSm9iVGVzdChCYXNlVGVzdEdlbmVyYXRvcik6Cisg ICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0g WworICAgICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCB3aXRoIGRlZmF1bHQgb3B0aW9ucycsCisg ICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVy JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSds b2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFt ZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAg ICAgIGZvcm1hdD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAg ICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAor ICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2Iv ezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2Un LCAnLS1mb3JtYXQ9YycsICctLWJsb2JzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2Nt ZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24g c2VjdGlvbnMgdG8gYWxsIGRhdGEnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFz c19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywK KyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFj a3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAg ICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBkYXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHByZV9k YXRhPVRydWUsCisgICAgICAgICAgICAgICAgIHBvc3RfZGF0YT1UcnVlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1zZWN0aW9uPXByZS1kYXRhJywgJy0tc2VjdGlv bj1kYXRhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2VjdGlvbj1wb3N0 LWRhdGEnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiBvbmx5X2RhdGEnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisg ICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxo b3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAg ICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAg ICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBm b3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAg ICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAg ICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0 YT1UcnVlLAorICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAg ICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tZGF0 YS1vbmx5J10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAg ICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9kYXRhJywKKyAgICAg ICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAg ICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAor ICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2Fs aG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdw b3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAg Zm9ybWF0PSdwbGFpbicsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAg ICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvbmx5X2Rh dGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgZG5zX293bmVyPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0n L2JhY2t1cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9cCcsICctLWRhdGEtb25seSddLAorICAgICAgICAgICAg IG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bJy0tc2NoZW1hLW9ubHknLCAnLS1uby1vd25lciddLAor ICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAor ICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24gb25seV9zY2hlbWEn LAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAg ICAgICAgICBmb3JtYXQ9J3BsYWluJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAor ICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10s CisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAg IG9ubHlfZGF0YT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgb25seV9zY2hlbWE9VHJ1ZQorICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywK KyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1w JywgJy0tc2NoZW1hLW9ubHknXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9 W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAg KSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIGZvcm1h dCBwbGFpbiBhbmQgZG5zX293bmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcs CisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2Jh Y2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdwbGFpbicsCisgICAgICAgICAg ICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAg ICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBkbnNfb3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvYmFja3VwL2pvYi97MH0vb2JqZWN0JywKKyAgICAgICAgICAgICBl eHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICctLWZvcm1hdD1wJywgJy0tbm8tb3duZXIn XSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAg ZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hl biBiYWNrdXAgdGhlIG9iamVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlIHByaXZpbGVnZSwn CisgICAgICAgICAnIHRhYmxlc3BhY2UsIHVubG9nZ2VkIHRhYmxlIGRhdGEnLAorICAgICAgICAg ZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg c2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0 JywKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAg ICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3Rn cmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3Jt YXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAg ICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBkbnNfcHJpdmls ZWdlPVRydWUsCisgICAgICAgICAgICAgICAgIGRuc191bmxvZ2dlZF90YmxfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4 cGVjdGVkX2NtZF9vcHRzPVsnLS1uby1wcml2aWxlZ2VzJywKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJy0tbm8tdGFibGVzcGFjZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1uby11bmxvZ2dlZC10YWJsZS1kYXRhJ10sCisgICAgICAgICAgICAgbm90X2V4 cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwg Tm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0 aCBvcHRpb24gLSBhbGwgcXVlcmllcycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNs YXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAg ICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0 LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBk YXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAn LAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9i YWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0ncGxhaW4nLAorICAgICAgICAg ICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAg ICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3Rn cmVzJywKKyAgICAgICAgICAgICAgICAgdXNlX2NvbHVtbl9pbnNlcnRzPVRydWUsCisgICAgICAg ICAgICAgICAgIGluY2x1ZGVfY3JlYXRlX2RhdGFiYXNlPVRydWUsCisgICAgICAgICAgICAgICAg IHVzZV9pbnNlcnRfY29tbWFuZHM9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgaW5jbHVkZV9kcm9w X2RhdGFiYXNlPVRydWUKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1 cC9qb2IvezB9L29iamVjdCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNy ZWF0ZScsICctLWNsZWFuJywgJy0taW5zZXJ0cycsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICctLWNvbHVtbi1pbnNlcnRzJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2Nt ZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIHRoZSBvYmplY3Qgd2l0aCBvcHRpb24g LSBhbGwgcXVlcmllcyBhbmQgZm9ybWF0IGN1c3RvbScsCisgICAgICAgICBkaWN0KAorICAgICAg ICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAg ICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAg cG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVz dF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmls ZT0ndGVzdF9iYWNrdXBfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywK KyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFz PVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFi YXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZV9jb2x1bW5faW5zZXJ0cz1UcnVl LAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZT1UcnVlLAorICAgICAg ICAgICAgICAgICB1c2VfaW5zZXJ0X2NvbW1hbmRzPVRydWUsCisgICAgICAgICAgICAgICAgIGlu Y2x1ZGVfZHJvcF9kYXRhYmFzZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1 cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9v cHRzPVsnLS1pbnNlcnRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tY29s dW1uLWluc2VydHMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9WyctLWNy ZWF0ZScsICctLWNsZWFuJ10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBO b25lXQorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgdGhlIG9iamVjdCB3aXRo IG9wdGlvbiAtIG1pc2NlbGxhbmVvdXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBj bGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAg ICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0 NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAg ZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3Vw JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICks CisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3Rf YmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAg ICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAg ICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBkaXNhYmxlX3F1b3Rpbmc9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgdXNlX3NldF9zZXNzaW9uX2F1dGg9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgd2l0 aF9vaWRzPVRydWUsCisgICAgICAgICAgICAgICAgIGRxb3V0ZT1UcnVlCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tcXVvdGUtYWxsLWlkZW50aWZp ZXJzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kb2xsYXIt cXVvdGluZycsICctLW9pZHMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11 c2Utc2V0LXNlc3Npb24tYXV0aG9yaXphdGlvbiddLAorICAgICAgICAgICAgIG5vdF9leHBlY3Rl ZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggZm9y bWF0IHRhcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0 KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9i YWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAg ICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBw YXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZmlsZScsCisg ICAgICAgICAgICAgICAgIGZvcm1hdD0ndGFyJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1U cnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJs ZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAg ICAgICAgIGJsb2JzPVRydWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9i YWNrdXAvam9iL3swfS9vYmplY3QnLAorICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsn LS12ZXJib3NlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tYmxvYnMnLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1mb3JtYXQ9dCddLAorICAgICAgICAg ICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUg c2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3Qo CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cF9zZXJ2ZXJfZmls ZScsCisgICAgICAgICAgICAgICAgIGRxb3V0ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVy Ym9zZT1UcnVlLAorICAgICAgICAgICAgICAgICB0eXBlPSdzZXJ2ZXInCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICB1cmw9Jy9iYWNrdXAvam9iL3swfScsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRf Y21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQor ICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiBiYWNrdXAgZ2xvYmFscycsCisgICAgICAgICBk aWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBz aWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAg ICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3Qn LAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAg ICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdy ZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAg ICAgICAgICAgZmlsZT0ndGVzdF9iYWNrdXBfZ2xvYmFsX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBkcW91dGU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAgICAg ICAgICAgICAgdHlwZT0nZ2xvYmFscycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL2JhY2t1cC9qb2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0t dmVyYm9zZSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAgICAg ICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVdCisgICAgICAgICApKQorICAgIF0K KworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXJbJ2RlZmF1bHRf YmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAg ICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBzZXQgZm9yIHRoZSBzZXJ2 ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyWyduYW1lJ10K KyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBAcGF0Y2goJ3BnYWRtaW4u dG9vbHMuYmFja3VwLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5j dXJyZW50X3VzZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuQmFja3VwTWVz c2FnZScpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5maWxlbmFtZV93aXRoX2Zp bGVfbWFuYWdlcl9wYXRoJykKKyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMuYmFja3VwLkJhdGNo UHJvY2VzcycpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgYmF0Y2hfcHJvY2Vzc19tb2NrLCBmaWxl bmFtZV9tb2NrLAorICAgICAgICAgICAgICAgIGJhY2t1cF9tZXNzYWdlX21vY2ssIGN1cnJlbnRf dXNlcl9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6 CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVz ZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50ZW5hbmNlX2RiKToKKyAgICAg ICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0g aG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBz ZWxmLmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKyAg ICAgICAgICAgICAgICBzZWxmLm1haW50ZW5hbmNlX2RiID0gbWFpbnRlbmFuY2VfZGIKKworICAg ICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9u b2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKyAgICAgICAgbW9ja19vYmogPSBU ZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9pZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndXNlcm5hbWUnXSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJh c2UnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgbW9ja19y ZXN1bHQgPSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAg IG1vY2tfcmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgZmls ZW5hbWVfbW9jay5yZXR1cm5fdmFsdWUgPSBzZWxmLnBhcmFtc1snZmlsZSddCisKKyAgICAgICAg YmF0Y2hfcHJvY2Vzc19tb2NrLnNldF9lbnZfdmFyaWFibGVzID0gTWFnaWNNb2NrKAorICAgICAg ICAgICAgcmV0dXJuX3ZhbHVlPVRydWUKKyAgICAgICAgKQorICAgICAgICBiYXRjaF9wcm9jZXNz X21vY2suc3RhcnQgPSBNYWdpY01vY2soCisgICAgICAgICAgICByZXR1cm5fdmFsdWU9VHJ1ZQor ICAgICAgICApCisKKyAgICAgICAgc2VydmVyX3Jlc3BvbnNlID0gc2VydmVyX3V0aWxzLmNvbm5l Y3Rfc2VydmVyKHNlbGYsIHNlbGYuc2VydmVyX2lkKQorICAgICAgICBpZiBzZXJ2ZXJfcmVzcG9u c2VbImluZm8iXSA9PSAiU2VydmVyIGNvbm5lY3RlZC4iOgorICAgICAgICAgICAgZGJfb3duZXIg PSBzZXJ2ZXJfcmVzcG9uc2VbJ2RhdGEnXVsndXNlciddWyduYW1lJ10KKyAgICAgICAgICAgIHNl bGYuZGF0YSA9IGRhdGFiYXNlX3V0aWxzLmdldF9kYl9kYXRhKGRiX293bmVyKQorICAgICAgICAg ICAgc2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhWyduYW1lJ10KKworICAgICAgICB1cmwgPSBzZWxm LnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGJhY2t1 cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwv anNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAy MDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVj b2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pv Yl9pZCddCisKKyAgICAgICAgYXNzZXJ0IGJhY2t1cF9tZXNzYWdlX21vY2suY2FsbGVkCisgICAg ICAgIGFzc2VydCBiYXRjaF9wcm9jZXNzX21vY2suY2FsbGVkCisKKyAgICAgICAgaWYgc2VsZi5l eHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5leHBlY3RlZF9j bWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKAorICAgICAgICAgICAgICAg ICAgICBvcHQsCisgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsX2Fy Z3NfbGlzdFswXVsxXVsnYXJncyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICBpZiBzZWxm Lm5vdF9leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4gc2VsZi5ub3Rf ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigKKyAg ICAgICAgICAgICAgICAgICAgb3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNz X21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9tZXNz YWdlLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3Rlc3RzL3Rlc3RfYmFja3VwX21lc3Nh Z2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYxZDI4NgotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2JhY2t1cF9t ZXNzYWdlLnB5CkBAIC0wLDAgKzEsMTU4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1w b3J0IHN5cworCitmcm9tIGZsYXNrIGltcG9ydCBSZXNwb25zZQoraW1wb3J0IHNpbXBsZWpzb24g YXMganNvbgorCitmcm9tIHBnYWRtaW4udG9vbHMuYmFja3VwIGltcG9ydCBCYWNrdXBNZXNzYWdl LCBCQUNLVVAKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKKworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0 IHBhdGNoLCBNYWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBw YXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgQmFja3VwTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5l cmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhY2t1cE1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2Vu YXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBCYWNrdXAgc2VydmVyJywKKyAgICAgICAgIGRpY3Qo CisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9 QkFDS1VQLlNFUlZFUiwKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAg IG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgZGF0 YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVzdG9yZScs CisgICAgICAgICAgICAgICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScs CisgICAgICAgICAgICAgICAgICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAg ICAgJy0taG9zdCcsCisgICAgICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAg ICAgICAgICAgICAgICctLXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAg ICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBv c3RncmVzIiwKKyAgICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAg ICAgICAgICAgICAgICctLWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3Jl cyIKKyAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRo L3BnX2R1bXAiCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IkJh Y2tpbmcgdXAgdGhlIHNlcnZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAndGVzdF9i YWNrdXBfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAgICBleHBldGNl ZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19kdW1wIC0tZmlsZSAnCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJyJiYWNrdXBfZmlsZSIgLS1ob3N0ICJsb2NhbGhvc3QiICcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0ICI1NDQ0IiAtLXVzZXJu YW1lICJwb3N0Z3JlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5v LXBhc3N3b3JkIC0tZGF0YWJhc2UgInBvc3RncmVzIicKKworICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiBCYWNrdXAgZ2xvYmFsJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xh c3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHR5cGU9QkFDS1VQLkdMT0JBTFMsCisg ICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2JhY2t1 cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAg IGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAg ICAgICAnYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICctLXBv cnQnLAorICAgICAgICAgICAgICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRh dGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAgICAg ICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgdGhlIGdsb2Jh bCBvYmplY3RzIG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rl c3RfYmFja3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQpJy4uLiIsCisgICAgICAgICAgICAgZXhw ZXRjZWRfZGV0YWlsc19jbWQ9Jy90ZXN0X3BhdGgvcGdfZHVtcCAtLWZpbGUgImJhY2t1cF9maWxl IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAibG9jYWxob3N0 IicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tcG9ydCAiNTQ0NCIgLS11 c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn LS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gYmFja3VwIG9iamVjdCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBlPUJBQ0tVUC5PQkpFQ1Qs CisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X2Jh Y2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3Jl cycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAg ICAgIGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAg ICAgICAgICAnYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisg ICAgICAgICAgICAgICAgICAgICAnbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICct LXBvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJzU0NDQnLAorICAgICAgICAgICAgICAgICAg ICAgJy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJywKKyAgICAg ICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICct LWRhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICdwb3N0Z3JlcycKKyAgICAgICAgICAg ICAgICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSIvdGVzdF9wYXRoL3BnX2R1bXAiCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9IkJhY2tpbmcgdXAgYW4gb2Jq ZWN0IG9uIHRoZSBzZXJ2ZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiJ3Rlc3RfYmFj a3VwX3NlcnZlciAobG9jYWxob3N0OjU0NDQpJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IiBmcm9tIGRhdGFiYXNlICdwb3N0Z3JlcycuLi4iLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2Rl dGFpbHNfY21kPScvdGVzdF9wYXRoL3BnX2R1bXAgLS1maWxlICJiYWNrdXBfZmlsZSIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhvc3QgImxvY2FsaG9zdCIgJworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXBvcnQgIjU0NDQiIC0tdXNlcm5hbWUg InBvc3RncmVzIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFz c3dvcmQgLS1kYXRhYmFzZSAicG9zdGdyZXMiJworCisgICAgICAgICApKQorICAgIF0KKworICAg IEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuU2VydmVyJykKKyAgICBAcGF0Y2goJ3BnYWRt aW4udG9vbHMuYmFja3VwLmN1cnJlbnRfdXNlcicpCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3Vy cmVudF91c2VyX21vY2ssIHNlcnZlcl9tb2NrKToKKyAgICAgICAgY3VycmVudF91c2VyX21vY2sg PSAxCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBf X2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0KToKKyAgICAgICAgICAgICAgICBzZWxmLm5h bWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICAgICAg ICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihz ZWxmLmNsYXNzX3BhcmFtc1snbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNlbGYuY2xhc3NfcGFyYW1zWydob3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3BvcnQnXSkKKyAgICAgICAgbW9ja19yZXN1bHQg PSBzZXJ2ZXJfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlCisgICAgICAgIG1vY2tf cmVzdWx0LmZpcnN0LnJldHVybl92YWx1ZSA9IG1vY2tfb2JqCisKKyAgICAgICAgYmFja3VwX29i aiA9IEJhY2t1cE1lc3NhZ2UoCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sndHlwZSdd LAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2Vs Zi5jbGFzc19wYXJhbXNbJ2JmaWxlJ10sCisgICAgICAgICAgICAqc2VsZi5jbGFzc19wYXJhbXNb J2FyZ3MnXSwKKyAgICAgICAgICAgICoqeydkYXRhYmFzZSc6IHNlbGYuY2xhc3NfcGFyYW1zWydk YXRhYmFzZSddfQorICAgICAgICApCisKKyAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgbWVz c2FnZSByZXR1cm5lZAorICAgICAgICBhc3NlcnQgYmFja3VwX29iai5tZXNzYWdlID09IHNlbGYu ZXh0ZWN0ZWRfbXNnCisKKyAgICAgICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpf ZGV0YWlscyA9IGJhY2t1cF9vYmouZGV0YWlscyhzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1z WydhcmdzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5leHBldGNlZF9kZXRhaWxzX2Nt ZCwgb2JqX2RldGFpbHMpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVz dHMvdGVzdF9iYWNrdXBfdXRpbHMucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMv dGVzdF9iYWNrdXBfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u M2MwYzk4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0 cy90ZXN0X2JhY2t1cF91dGlscy5weQpAQCAtMCwwICsxLDExMSBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworaW1wb3J0IHRpbWUKK2ltcG9ydCByYW5kb20KK2ltcG9ydCBzaW1wbGVqc29u IGFzIGpzb24KKworCitkZWYgY3JlYXRlX2JhY2t1cF9qb2IodGVzdGVyLCB1cmwsIHBhcmFtcyk6 CisgICAgIyBDcmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICByZXNwb25zZSA9IHRlc3Rlci5wb3N0 KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhwYXJhbXMp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQor ICAgIGFzc2VydCByZXNwb25zZS5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICBqb2JfaWQg PSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisgICAgcmV0dXJuIGpvYl9pZAorCisK K2RlZiBydW5fYmFja3VwX2pvYih0ZXN0ZXIsIGpvYl9pZCwgZXhwZWN0ZWRfcGFyYW1zLCBhc3Nl cnRJbiwgYXNzZXJ0Tm90SW4pOgorICAgIGNudCA9IDAKKyAgICB3aGlsZSAxOgorICAgICAgICBp ZiBjbnQgPiAxOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyBDaGVjayB0aGUgcHJvY2Vz cyBsaXN0CisgICAgICAgIHJlc3BvbnNlMSA9IHRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/ Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKSkKKyAg ICAgICAgYXNzZXJ0IHJlc3BvbnNlMS5zdGF0dXNfY29kZSA9PSAyMDAKKyAgICAgICAgcHJvY2Vz c19saXN0ID0ganNvbi5sb2FkcyhyZXNwb25zZTEuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAg ICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGluIHBy b2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgIHRpbWUuc2xlZXAoMC41 KQorICAgICAgICBjbnQgKz0gMQorCisgICAgYXNzZXJ0ICdleGVjdXRpb25fdGltZScgaW4gcHJv Y2Vzc19saXN0WzBdCisgICAgYXNzZXJ0ICdzdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAg YXNzZXJ0ICdleGl0X2NvZGUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgIGFzc2VydCBwcm9jZXNz X2xpc3RbMF1bJ2V4aXRfY29kZSddIGluIGV4cGVjdGVkX3BhcmFtc1sKKyAgICAgICAgJ2V4cGVj dGVkX2V4aXRfY29kZScKKyAgICBdCisKKyAgICBpZiBleHBlY3RlZF9wYXJhbXNbJ2V4cGVjdGVk X2NtZF9vcHRzJ106CisgICAgICAgIGZvciBvcHQgaW4gZXhwZWN0ZWRfcGFyYW1zWydleHBlY3Rl ZF9jbWRfb3B0cyddOgorICAgICAgICAgICAgYXNzZXJ0SW4ob3B0LCBwcm9jZXNzX2xpc3RbMF1b J2RldGFpbHMnXSkKKyAgICBpZiBleHBlY3RlZF9wYXJhbXNbJ25vdF9leHBlY3RlZF9jbWRfb3B0 cyddOgorICAgICAgICBmb3Igb3B0IGluIGV4cGVjdGVkX3BhcmFtc1snbm90X2V4cGVjdGVkX2Nt ZF9vcHRzJ106CisgICAgICAgICAgICBhc3NlcnROb3RJbihvcHQsIHByb2Nlc3NfbGlzdFswXVsn ZGV0YWlscyddKQorCisgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgcF9kZXRh aWxzID0gdGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAg ICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQorICAgICkKKyAgICBhc3NlcnQg cF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5s b2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBwX2RldGFpbHMgPSB0 ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9L3sxfS97Mn0vP189Jy5mb3JtYXQoCisgICAg ICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgKQorICAg IGFzc2VydCBwX2RldGFpbHMuc3RhdHVzX2NvZGUgPT0gMjAwCisgICAgcF9kZXRhaWxzX2RhdGEg PSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgIGNudCA9 IDAKKyAgICAjIFJldHJpZXZlIHRoZSBiYWNrdXAgam9iIHByb2Nlc3MgbG9ncworICAgIHdoaWxl IDE6CisgICAgICAgIG91dCwgZXJyLCBzdGF0dXMgPSBnZXRfcGFyYW1zKHBfZGV0YWlsc19kYXRh KQorICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEwOgorICAgICAgICAgICAgYnJlYWsKKwor ICAgICAgICBwX2RldGFpbHMgPSB0ZXN0ZXIuZ2V0KAorICAgICAgICAgICAgJy9taXNjL2JncHJv Y2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICBqb2JfaWQs IG91dCwgZXJyLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAg ICBhc3NlcnQgcF9kZXRhaWxzLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICBwX2RldGFpbHNf ZGF0YSA9IGpzb24ubG9hZHMocF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAg ICAgIGNudCArPSAxCisgICAgICAgIHRpbWUuc2xlZXAoMSkKKworICAgICMgQ2hlY2sgdGhlIGpv YiBpcyBjb21wbGV0ZS4KKyAgICBiYWNrdXBfYWNrID0gdGVzdGVyLnB1dCgnL21pc2MvYmdwcm9j ZXNzL3swfScuZm9ybWF0KGpvYl9pZCkpCisgICAgYXNzZXJ0IGJhY2t1cF9hY2suc3RhdHVzX2Nv ZGUgPT0gMjAwCisgICAgYmFja3VwX2Fja19yZXMgPSBqc29uLmxvYWRzKGJhY2t1cF9hY2suZGF0 YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICBhc3NlcnQgYmFja3VwX2Fja19yZXNbJ3N1Y2Nlc3Mn XSA9PSAxCisKKworZGVmIGdldF9wYXJhbXMoZGF0YSk6CisgICAgb3V0ID0gMAorICAgIG91dF9k b25lID0gRmFsc2UKKyAgICBlcnIgPSAwCisgICAgZXJyX2RvbmUgPSBGYWxzZQorICAgIGlmICdv dXQnIGluIGRhdGE6CisgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRhWydvdXQnXVsn cG9zJ10KKworICAgICAgICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICBv dXRfZG9uZSA9IGRhdGFbJ291dCddWydkb25lJ10KKworICAgIGlmICdlcnInIGluIGRhdGE6Cisg ICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10KKworICAgICAg ICBpZiAnZG9uZScgaW4gZGF0YVsnZXJyJ106CisgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFb J2VyciddWydkb25lJ10KKworICAgIHJldHVybiBvdXQsIGVyciwgKG91dF9kb25lIGFuZCBlcnJf ZG9uZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZXN0cy90ZXN0X2Jh dGNoX3Byb2Nlc3MucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9iYXRj aF9wcm9jZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYmE5YmUK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvdGVzdHMvdGVzdF9i YXRjaF9wcm9jZXNzLnB5CkBAIC0wLDAgKzEsMjE5IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIwor IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworaW1wb3J0IHN5cworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4u bWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVz YworZnJvbSBwZ2FkbWluLnRvb2xzLmJhY2t1cCBpbXBvcnQgQmFja3VwTWVzc2FnZSwgQkFDS1VQ Citmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9t IHBpY2tsZSBpbXBvcnQgZHVtcHMsIGxvYWRzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg Myk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0 Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xhc3MgQmF0Y2hQcm9jZXNzVGVzdChCYXNlVGVzdEdl bmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmF0Y2hQcm9jZXNzIGNsYXNzIiIiCisgICAgc2Nl bmFyaW9zID0gWworICAgICAgICAoJ1doZW4gYmFja3VwIHNlcnZlcicsCisgICAgICAgICBkaWN0 KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICB0eXBl PUJBQ0tVUC5TRVJWRVIsCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAg ICBuYW1lPSd0ZXN0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQs CisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRh dGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jlcycs CisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAg IGFyZ3M9WworICAgICAgICAgICAgICAgICAgICAgJy0tZmlsZScsCisgICAgICAgICAgICAgICAg ICAgICAiYmFja3VwX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAg ICAgICAgICAgICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBv cnQnLAorICAgICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAg Jy0tdXNlcm5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAg ICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRh dGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAg ICAgXSwKKyAgICAgICAgICAgICAgICAgY21kPSdiYWNrdXBfc2VydmVyJworICAgICAgICAgICAg ICkKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gYmFja3VwIGdsb2JhbHMnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgdHlwZT1CQUNLVVAuR0xPQkFMUywKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAg ICAgICAgICAgIG5hbWU9J3Rlc3RfYmFja3VwX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bv c3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfYmFja3VwJywKKyAgICAgICAg ICAgICAgICAgYXJncz1bCisgICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAg ICAgICAgICAgICAgICJiYWNrdXBfZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAnLS1ob3N0 JywKKyAgICAgICAgICAgICAgICAgICAgICJsb2NhbGhvc3QiLAorICAgICAgICAgICAgICAgICAg ICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAiNTQ0NCIsCisgICAgICAgICAgICAg ICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAor ICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAgICAgICAg ICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIgorICAgICAg ICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9J2JhY2t1cCcKKyAgICAgICAgICAg ICApCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIGJhY2t1cCBvYmplY3QnLAorICAgICAg ICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgdHlwZT1CQUNLVVAuT0JKRUNULAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAg ICAgICAgICAgbmFtZT0ndGVzdF9iYWNrdXBfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9y dD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9iYWNrdXAnLAorICAgICAgICAg ICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAgICAgICAg ICAgICAgICAgICAgImJhY2t1cF9maWxlIiwKKyAgICAgICAgICAgICAgICAgICAgICctLWhvc3Qn LAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9zdCIsCisgICAgICAgICAgICAgICAgICAg ICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAgICI1NDQ0IiwKKyAgICAgICAgICAgICAg ICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIsCisg ICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAg ICAnLS1kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiCisgICAgICAg ICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAgIGNtZD0nYmFja3VwJworICAgICAgICAgICAg ICkKKyAgICAgICAgICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3Nlcy5Qb3BlbicpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNz LnByb2Nlc3Nlcy5jdXJyZW50X2FwcCcpCisgICAgQHBhdGNoKCdwZ2FkbWluLm1pc2MuYmdwcm9j ZXNzLnByb2Nlc3Nlcy5kYicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLmJhY2t1cC5TZXJ2 ZXInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5iYWNrdXAuY3VycmVudF91c2VyJykKKyAg ICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicp CisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21vY2ssIGN1cnJlbnRfdXNlciwg c2VydmVyX21vY2ssIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywg cG9wZW5fbW9jayk6CisgICAgICAgIGN1cnJlbnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVu dF91c2VyX21vY2suaWQgPSAxCisgICAgICAgIGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5U SU1FID0gRmFsc2UKKworICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAg ICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQpOgorICAgICAgICAgICAgICAg IHNlbGYubmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAg ICAgICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAorCisgICAgICAgIGRlZiBkYl9zZXNzaW9uX2Fk ZF9tb2NrKGopOgorICAgICAgICAgICAgY21kX29iaiA9IGxvYWRzKGouZGVzYykKKyAgICAgICAg ICAgIGFzc2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQcm9jZXNzRGVzYykKKyAgICAgICAgICAg IHNlbGYuYXNzZXJ0RXF1YWxzKGNtZF9vYmouYmFja3VwX3R5cGUsIHNlbGYuY2xhc3NfcGFyYW1z Wyd0eXBlJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJmaWxlLCBz ZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KGNtZF9vYmouZGF0YWJhc2UsIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRhYmFzZSddKQorICAgICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY21kX29iai5jbWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnIC0tZmlsZSAiYmFja3VwX2ZpbGUiICcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLWhvc3QgInswfSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Jy0tcG9ydCAiezF9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS11c2VybmFt ZSAiezJ9IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1wYXNzd29yZCAn CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kYXRhYmFzZSAiezN9IicuZm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydo b3N0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ3BvcnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNz X3BhcmFtc1sndXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJhc2UnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKSkKKworICAgICAgICBtb2NrX29iaiA9IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFy YW1zWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFz c19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1sncG9ydCddKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2Nr LnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3Qu cmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNp ZGVfZWZmZWN0ID0gZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIGJhY2t1cF9vYmogPSBC YWNrdXBNZXNzYWdlKAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ3R5cGUnXSwKKyAg ICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xh c3NfcGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdz J10sCisgICAgICAgICAgICAqKnsnZGF0YWJhc2UnOiBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YWJh c2UnXX0KKyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAg ICBkZXNjPWJhY2t1cF9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNbJ2Nt ZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAg ICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNhbGxl ZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAgICAj IENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9tb2Nr LCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tf bGlzdChwLCBiYWNrdXBfb2JqKQorCisgICAgZGVmIF9jaGVja19zdGFydChzZWxmLCBwb3Blbl9t b2NrLCBwKToKKyAgICAgICAgY21kX3Rlc3QgPSBzZWxmLmNsYXNzX3BhcmFtc1snY21kJ10KKwor ICAgICAgICBjbGFzcyBwb3Blbk1vY2tTaWRlRWZmZWN0KCk6CisgICAgICAgICAgICBkZWYgX19p bml0X18oc2VsZiwgY21kLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgYXNzZXJ0IGNtZF90 ZXN0IGluIGNtZAorICAgICAgICAgICAgICAgIGFzc2VydCAnZW52JyBpbiBrd2FyZ3MKKworICAg ICAgICAgICAgZGVmIHBvbGwoc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAg IHBvcGVuX21vY2suc2lkZV9lZmZlY3QgPSBwb3Blbk1vY2tTaWRlRWZmZWN0CisgICAgICAgIHAu c3RhcnQoKQorCisgICAgICAgIGFzc2VydCBwb3Blbl9tb2NrLmNhbGxlZAorCisgICAgQHBhdGNo KCdwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3Nlcy5Qcm9jZXNzJykKKyAgICBAcGF0Y2go J3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLkJhdGNoUHJvY2Vzcy4nCisgICAgICAg ICAgICd1cGRhdGVfcHJvY2Vzc19pbmZvJykKKyAgICBkZWYgX2NoZWNrX2xpc3Qoc2VsZiwgcCwg YmFja3VwX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAgICAgICAg ICBwcm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAg ICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAgICAgICAg ICAgIHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gMQorICAg ICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0 NSArMDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAgICAgICAg ICAgICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1 bWVudHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNt ZAorICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAgICAgcHJv Y2Vzc19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAgICAgICBU ZXN0TW9ja1Byb2Nlc3MoYmFja3VwX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuY2xhc3NfcGFyYW1zWydjbWQnXSldCisKKyAgICAgICAgdXBkYXRlX3Byb2Nlc3NfaW5mb19t b2NrLnJldHVybl92YWx1ZSA9IFtUcnVlLCBUcnVlXQorCisgICAgICAgIHJldF92YWx1ZSA9IHAu bGlzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJldF92YWx1ZSkpCisgICAg ICAgIGFzc2VydCAnZGV0YWlscycgaW4gcmV0X3ZhbHVlWzBdCisgICAgICAgIGFzc2VydCAnZGVz YycgaW4gcmV0X3ZhbHVlWzBdCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv dGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1 cC90ZXN0cy90ZXN0X2NyZWF0ZV9iYWNrdXBfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmQ3NmEzYzcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvdGVzdHMvdGVzdF9jcmVhdGVfYmFja3VwX2pvYi5weQpAQCAtMCwwICsxLDU4IEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2Rl X2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGls cyBhcyB1dGlscworaW1wb3J0IHBnYWRtaW4udG9vbHMuYmFja3VwLnRlc3RzLnRlc3RfYmFja3Vw X3V0aWxzIGFzIGJhY2t1cF91dGlscworCisKK2NsYXNzIEJhY2t1cEpvYlRlc3QoQmFzZVRlc3RH ZW5lcmF0b3IpOgorICAgICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlv cyA9IFsKKyAgICAgICAgKCdXaGVuIGJhY2t1cCB0aGUgb2JqZWN0IHdpdGggdGhlIGRlZmF1bHQg b3B0aW9ucycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBmaWxlPSd0ZXN0X2JhY2t1cCcsCisgICAgICAgICAgICAgICAgIGZvcm1h dD0nY3VzdG9tJywKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAg ICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAgICBzY2hlbWFzPVtdLAorICAgICAgICAg ICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycK KyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9L29iamVj dCcsCisgICAgICAgICAgICAgZXhwZWN0ZWRfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnLS12ZXJib3NlJywgJy0tZm9ybWF0PWMnLCAnLS1ibG9icydd LAorICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAg ICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICAgICApCisgICAg ICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgc2VsZi5z ZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYu c2tpcFRlc3QoCisgICAgICAgICAgICAgICAgImRlZmF1bHRfYmluYXJ5X3BhdGhzIGlzIG5vdCBz ZXQgZm9yIHRoZSBzZXJ2ZXIgezB9Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIHNlbGYu c2VydmVyWyduYW1lJ10KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICApCisKKyAgICBk ZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaWQgPSBwYXJlbnRfbm9kZV9k aWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZv cm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgYmFja3VwIGpvYgor ICAgICAgICBqb2JfaWQgPSBiYWNrdXBfdXRpbHMuY3JlYXRlX2JhY2t1cF9qb2Ioc2VsZi50ZXN0 ZXIsIHVybCwgc2VsZi5wYXJhbXMpCisgICAgICAgIGJhY2t1cF91dGlscy5ydW5fYmFja3VwX2pv YihzZWxmLnRlc3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZXhwZWN0ZWRfcGFy YW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbiwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL21haW50ZW5hbmNlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9v bHMvbWFpbnRlbmFuY2UvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uZTY5ZGUyOQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRl bmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNlLnB5IGIvd2ViL3BnYWRt aW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9iYXRjaF9wcm9jZXNzX21haW50ZW5hbmNl LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YzNkYjgKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X2JhdGNo X3Byb2Nlc3NfbWFpbnRlbmFuY2UucHkKQEAgLTAsMCArMSwxNTMgQEAKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitpbXBvcnQgc3lzCisKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9j ZXNzZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCitmcm9tIHBnYWRtaW4udG9v bHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMK KworaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBh dGNoCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFz cyBCYXRjaFByb2Nlc3NUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBC YXRjaFByb2Nlc3MgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnV2hlbiBt YWludGFpbmVkIHNlcnZlcicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAg ICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBhcmdzPVsKKyAgICAg ICAgICAgICAgICAgICAgICctLWhvc3QnLAorICAgICAgICAgICAgICAgICAgICAgImxvY2FsaG9z dCIsCisgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgICAgICAgICAgICAg ICI1NDQ0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lJywKKyAgICAgICAgICAg ICAgICAgICAgICctLWRibmFtZScsCisgICAgICAgICAgICAgICAgICAgICAicG9zdGdyZXMiLAor ICAgICAgICAgICAgICAgICAgICAgJy0tY29tbWFuZCcsCisgICAgICAgICAgICAgICAgICAgICAi VkFDVVVNIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAg IGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywKKyAg ICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAgICAgICAg J3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Zy ZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIGV4cGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1bSkiLAor ICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9TRTsnCisgICAg ICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9j ZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9j ZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5TZXJ2ZXIn KQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuY3VycmVudF91 c2VyJykKKyAgICBkZWYgcnVuVGVzdChzZWxmLCBjdXJyZW50X3VzZXJfbW9jaywgc2VydmVyX21v Y2ssIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5fbW9j ayk6CisgICAgICAgIGN1cnJlbnRfdXNlcl9tb2NrLmlkID0gMQorICAgICAgICBjdXJyZW50X2Fw cF9tb2NrLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCisKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tT ZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBob3N0LCBwb3J0 KToKKyAgICAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2Vs Zi5ob3N0ID0gaG9zdAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKworICAgICAg ICBkZWYgZGJfc2Vzc2lvbl9hZGRfbW9jayhqKToKKyAgICAgICAgICAgIGNtZF9vYmogPSBsb2Fk cyhqLmRlc2MpCisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjbWRfb2JqLCBJUHJvY2Vz c0Rlc2MpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLnF1ZXJ5LCBzZWxm LmNsYXNzX3BhcmFtc1snY21kJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRf b2JqLm1lc3NhZ2UsIHNlbGYuZXhwZWN0ZWRfbXNnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbHMoY21kX29iai5kYXRhLCBzZWxmLmNsYXNzX3BhcmFtc1snZGF0YSddKQorCisgICAgICAg IG1vY2tfb2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ3VzZXJuYW1lJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hv c3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFt c1sncG9ydCddKQorICAgICAgICBtb2NrX3Jlc3VsdCA9IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRl cl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19yZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVl ID0gbW9ja19vYmoKKworICAgICAgICBkYl9tb2NrLnNlc3Npb24uYWRkLnNpZGVfZWZmZWN0ID0g ZGJfc2Vzc2lvbl9hZGRfbW9jaworCisgICAgICAgIG1haW50ZW5hbmNlX29iaiA9IE1lc3NhZ2Uo CisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snZGF0YSddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2Nt ZCddCisgICAgICAgICkKKworICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKAorICAgICAgICAgICAg ZGVzYz1tYWludGVuYW5jZV9vYmosCisgICAgICAgICAgICBjbWQ9c2VsZi5jbGFzc19wYXJhbXNb J2NtZCddLAorICAgICAgICAgICAgYXJncz1zZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAg ICAgICkKKworICAgICAgICAjIENoZWNrIHRoYXQgX2NyZWF0ZV9wcm9jZXNzIGhhcyBiZWVuIGNh bGxlZAorICAgICAgICBhc3NlcnQgZGJfbW9jay5zZXNzaW9uLmFkZC5jYWxsZWQKKworICAgICAg ICAjIENoZWNrIHN0YXJ0IG1ldGhvZAorICAgICAgICBzZWxmLl9jaGVja19zdGFydChwb3Blbl9t b2NrLCBwKQorCisgICAgICAgICMgQ2hlY2sgbGlzdCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hl Y2tfbGlzdChwLCBtYWludGVuYW5jZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0YXJ0KHNlbGYs IHBvcGVuX21vY2ssIHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3NfcGFyYW1zWydj bWQnXQorCisgICAgICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAgICAgICAgICAg IGRlZiBfX2luaXRfXyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBhc3Nl cnQgY21kX3Rlc3QgaW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYnIGluIGt3YXJn cworCisgICAgICAgICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisK KyAgICAgICAgcG9wZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVFZmZlY3QKKyAg ICAgICAgcC5zdGFydCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2FsbGVkCisKKyAg ICBAcGF0Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nlc3MnKQorICAg IEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQcm9jZXNzLicK KyAgICAgICAgICAgJ3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hlY2tfbGlzdChz ZWxmLCBwLCBtYWludGVuYW5jZV9vYmosIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jaywKKyAgICAg ICAgICAgICAgICAgICAgcHJvY2Vzc19tb2NrKToKKyAgICAgICAgY2xhc3MgVGVzdE1vY2tQcm9j ZXNzKCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVzYywgYXJncywgY21kKToK KyAgICAgICAgICAgICAgICBzZWxmLnBpZCA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLmV4aXRf Y29kZSA9IDEKKyAgICAgICAgICAgICAgICBzZWxmLnN0YXJ0X3RpbWUgPSAnMjAxOC0wNC0xNyAw NjoxODo1Ni4zMTU0NDUgKzAwMDAnCisgICAgICAgICAgICAgICAgc2VsZi5lbmRfdGltZSA9IE5v bmUKKyAgICAgICAgICAgICAgICBzZWxmLmRlc2MgPSBkdW1wcyhkZXNjKQorICAgICAgICAgICAg ICAgIHNlbGYuYXJndW1lbnRzID0gIiAiLmpvaW4oYXJncykKKyAgICAgICAgICAgICAgICBzZWxm LmNvbW1hbmQgPSBjbWQKKyAgICAgICAgICAgICAgICBzZWxmLmFja25vd2xlZGdlID0gTm9uZQor CisgICAgICAgIHByb2Nlc3NfbW9jay5xdWVyeS5maWx0ZXJfYnkucmV0dXJuX3ZhbHVlID0gWwor ICAgICAgICAgICAgVGVzdE1vY2tQcm9jZXNzKG1haW50ZW5hbmNlX29iaiwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSkKKyAgICAgICAgXQorCisg ICAgICAgIHVwZGF0ZV9wcm9jZXNzX2luZm9fbW9jay5yZXR1cm5fdmFsdWUgPSBbVHJ1ZSwgVHJ1 ZV0KKworICAgICAgICByZXRfdmFsdWUgPSBwLmxpc3QoKQorICAgICAgICBzZWxmLmFzc2VydEVx dWFsKDEsIGxlbihyZXRfdmFsdWUpKQorICAgICAgICBhc3NlcnQgJ2RldGFpbHMnIGluIHJldF92 YWx1ZVswXQorICAgICAgICBhc3NlcnQgJ2Rlc2MnIGluIHJldF92YWx1ZVswXQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9jcmVhdGVfbWFpbnRl bmFuY2Vfam9iLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9j cmVhdGVfbWFpbnRlbmFuY2Vfam9iLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFlMDFmMWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVu YW5jZS90ZXN0cy90ZXN0X2NyZWF0ZV9tYWludGVuYW5jZV9qb2IucHkKQEAgLTAsMCArMSwxNDAg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitpbXBvcnQgdGltZQoraW1wb3J0IHJhbmRvbQor aW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2Rl X2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGls cyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2Vy dmVyX3V0aWxzCitmcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCisgICAgZGF0YWJhc2VfdXRpbHMKKworCitj bGFzcyBNYWludGVuYW5jZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIk1haW50 ZW5hbmNlIGFwaSB0ZXN0IGNhc2VzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1do ZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICAgICAgJ29wJzogJ1ZBQ1VVTScsCisgICAgICAgICAgICAgICAgICAgICAn dmFjdXVtX2FuYWx5emUnOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICd2YWN1dW1fZnJl ZXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2Z1bGwnOiBGYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBWRVJCT1NFO1xuIgorICAgICAgICAgICAg ICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAg ICAgICAgIGV4cGVjdGVkX2NtZD0nVkFDVVVNIFZFUkJPU0UnLAorICAgICAgICAgICAgIGV4cGVj dGVkX2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpCisgICAgXQorCisgICAgZGVmIHNl dFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMn XSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAi ZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1h dCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBydW5UZXN0KHNlbGYpOgorICAgICAgICBz ZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9ub2RlX2Rp Y3RbImRhdGFiYXNlIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZWxmLmRiX2lkID0gcGFy ZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bImRiX2lkIl0KKyAgICAgICAgdXJsID0gc2Vs Zi51cmwuZm9ybWF0KHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQorCisgICAgICAgICMgQ3Jl YXRlIHRoZSBiYWNrdXAgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1 cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVtcHMo c2VsZi5wYXJhbXNbJ2RhdGEnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJl c3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxv YWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNw b25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgY250ID0gMAorICAgICAgICB3 aGlsZSAxOgorICAgICAgICAgICAgaWYgY250ID4gMToKKyAgICAgICAgICAgICAgICBicmVhawor ICAgICAgICAgICAgIyBDaGVjayB0aGUgcHJvY2VzcyBsaXN0CisgICAgICAgICAgICByZXNwb25z ZTEgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy8/Xz0nLmZvcm1hdCgKKyAgICAg ICAgICAgICAgICByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkpCisgICAgICAgICAgICBzZWxm LmFzc2VydEVxdWFscyhyZXNwb25zZTEuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBy b2Nlc3NfbGlzdCA9IGpzb24ubG9hZHMocmVzcG9uc2UxLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQor CisgICAgICAgICAgICBpZiBsZW4ocHJvY2Vzc19saXN0KSA+IDAgYW5kICdleGVjdXRpb25fdGlt ZScgaW4gcHJvY2Vzc19saXN0WzBdOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg ICB0aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIGNudCArPSAxCisKKyAgICAgICAgYXNzZXJ0 ICdleGVjdXRpb25fdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCAnc3Rp bWUnIGluIHByb2Nlc3NfbGlzdFswXQorICAgICAgICBhc3NlcnQgJ2V4aXRfY29kZScgaW4gcHJv Y2Vzc19saXN0WzBdCisgICAgICAgIGFzc2VydCBwcm9jZXNzX2xpc3RbMF1bJ2V4aXRfY29kZSdd IGluIHNlbGYuZXhwZWN0ZWRfZXhpdF9jb2RlCisKKyAgICAgICAgc2VsZi5hc3NlcnRJbihzZWxm LmV4cGVjdGVkX2NtZCwgcHJvY2Vzc19saXN0WzBdWydkZXRhaWxzJ10pCisKKyAgICAgICAgIyBD aGVjayB0aGUgcHJvY2VzcyBkZXRhaWxzCisgICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVy LmdldCgnL21pc2MvYmdwcm9jZXNzL3swfT9fPScuZm9ybWF0KAorICAgICAgICAgICAgam9iX2lk LCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAgICAgICAgKQorICAgICAgICBzZWxmLmFz c2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcF9kZXRhaWxz X2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAg ICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoJy9taXNjL2JncHJvY2Vzcy97MH0vezF9 L3syfS8/Xz0nLmZvcm1hdCgKKyAgICAgICAgICAgIGpvYl9pZCwgMCwgMCwgcmFuZG9tLnJhbmRp bnQoMSwgOTk5OTk5OSkpCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocF9k ZXRhaWxzLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5s b2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgIyBSZXRyaWV2 ZSB0aGUgYmFja3VwIGpvYiBwcm9jZXNzIGxvZ3MKKyAgICAgICAgd2hpbGUgMToKKyAgICAgICAg ICAgIG91dCwgZXJyLCBzdGF0dXMgPSBNYWludGVuYW5jZUpvYlRlc3QuZ2V0X3BhcmFtcyhwX2Rl dGFpbHNfZGF0YSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBicmVh aworCisgICAgICAgICAgICBwX2RldGFpbHMgPSBzZWxmLnRlc3Rlci5nZXQoCisgICAgICAgICAg ICAgICAgJy9taXNjL2JncHJvY2Vzcy97MH0vezF9L3syfS8/Xz17M30nLmZvcm1hdCgKKyAgICAg ICAgICAgICAgICAgICAgam9iX2lkLCBvdXQsIGVyciwgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCisgICAgICAgICAgICApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFp bHMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgICAgIHBfZGV0YWlsc19kYXRhID0ganNvbi5s b2FkcyhwX2RldGFpbHMuZGF0YS5kZWNvZGUoJ3V0Zi04JykpCisKKyAgICAgICAgICAgIHRpbWUu c2xlZXAoMSkKKworICAgICAgICAjIENoZWNrIHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgICAg IGJhY2t1cF9hY2sgPSBzZWxmLnRlc3Rlci5wdXQoJy9taXNjL2JncHJvY2Vzcy97MH0nLmZvcm1h dChqb2JfaWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhiYWNrdXBfYWNrLnN0YXR1c19j b2RlLCAyMDApCisgICAgICAgIGJhY2t1cF9hY2tfcmVzID0ganNvbi5sb2FkcyhiYWNrdXBfYWNr LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJhY2t1 cF9hY2tfcmVzWydzdWNjZXNzJ10sIDEpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdl dF9wYXJhbXMoZGF0YSk6CisgICAgICAgIG91dCA9IDAKKyAgICAgICAgb3V0X2RvbmUgPSBGYWxz ZQorICAgICAgICBlcnIgPSAwCisgICAgICAgIGVycl9kb25lID0gRmFsc2UKKyAgICAgICAgaWYg J291dCcgaW4gZGF0YToKKyAgICAgICAgICAgIG91dCA9IGRhdGFbJ291dCddIGFuZCBkYXRhWydv dXQnXVsncG9zJ10KKworICAgICAgICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ291dCddOgorICAg ICAgICAgICAgICAgIG91dF9kb25lID0gZGF0YVsnb3V0J11bJ2RvbmUnXQorCisgICAgICAgIGlm ICdlcnInIGluIGRhdGE6CisgICAgICAgICAgICBlcnIgPSBkYXRhWydlcnInXSBhbmQgZGF0YVsn ZXJyJ11bJ3BvcyddCisKKyAgICAgICAgICAgIGlmICdkb25lJyBpbiBkYXRhWydlcnInXToKKyAg ICAgICAgICAgICAgICBlcnJfZG9uZSA9IGRhdGFbJ2VyciddWydkb25lJ10KKworICAgICAgICBy ZXR1cm4gb3V0LCBlcnIsIChvdXRfZG9uZSBhbmQgZXJyX2RvbmUpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNlX2NyZWF0ZV9q b2JfdW5pdF90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVz dF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRfdGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41Yjk4YjA5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9jcmVhdGVfam9iX3VuaXRf dGVzdC5weQpAQCAtMCwwICsxLDE5NSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCitp bXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisKKworZnJvbSBwZ2FkbWluLm1p c2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBpbXBvcnQgQmF0Y2hQcm9jZXNzCitmcm9tIHBnYWRtaW4u dG9vbHMubWFpbnRlbmFuY2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50 X25vZGVfZGljdAorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0 X3V0aWxzIGFzIHV0aWxzCitmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHNlcnZlcl91dGlscyBh cyBzZXJ2ZXJfdXRpbHMKK2Zyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVy cy5kYXRhYmFzZXMudGVzdHMgaW1wb3J0IHV0aWxzIGFzIFwKKyAgICBkYXRhYmFzZV91dGlscwor CisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBw YXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0 Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIE1haW50ZW5hbmNlQ3JlYXRlSm9iVGVzdChCYXNlVGVz dEdlbmVyYXRvcik6CisgICAgIiIiVGVzdCB0aGUgQmFja3VwQ3JlYXRlSm9iIGNsYXNzIiIiCisg ICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGgg ZGVmYXVsdCBvcHRpb25zJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1l PSd0ZXN0X21haW50ZW5hbmNlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwK KyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAg ICAgIG9wPSdWQUNVVU0nLAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1GYWxzZSwK KyAgICAgICAgICAgICAgICAgdmFjdXVtX2ZyZWV6ZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg dmFjdXVtX2Z1bGw9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZQorICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAor ICAgICAgICAgICAgIGV4cGVjdGVkX2NtZF9vcHRzPVsnVkFDVVVNIFZFUkJPU0U7XG4nXSwKKyAg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggVkFDVVVN IEZVTEwnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFp bnRlbmFuY2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9z dGdyZXMnCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J1ZB Q1VVTScsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAg ICAgICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVs bD1UcnVlLAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUKKyAgICAgICAgICAgICApLAor ICAgICAgICAgICAgIHVybD0nL21haW50ZW5hbmNlL2pvYi97MH0vezF9JywKKyAgICAgICAgICAg ICBleHBlY3RlZF9jbWRfb3B0cz1bJ1ZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4nXSwKKyAgICAgICAg ICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRlbmFuY2Ugb2JqZWN0IHdpdGggdGhlIEFOQUxZWkUn LAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAg ICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfbWFpbnRlbmFu Y2Vfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMn CisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgb3A9J0FOQUxZWkUn LAorICAgICAgICAgICAgICAgICB2YWN1dW1fYW5hbHl6ZT1UcnVlLAorICAgICAgICAgICAgICAg ICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlCisgICAgICAgICAgICAgKSwKKyAgICAg ICAgICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WydBTkFMWVpFIFZFUkJPU0U7XG4nXSwKKyAgICAgICAgICkpLAorICAg ICAgICAoJ1doZW4gbWFpbnRlbmFuY2UgdGhlIG9iamVjdCB3aXRoIHRoZSBSRUlOREVYJywKKyAg ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAg ICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X21haW50ZW5hbmNlX3Nl cnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9z dD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAg ICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9wPSdSRUlOREVYJywKKyAg ICAgICAgICAgICAgICAgdmFjdXVtX2FuYWx5emU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZh Y3V1bV9mcmVlemU9RmFsc2UsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9mdWxsPUZhbHNlLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPUZhbHNlCisgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICB1cmw9Jy9tYWludGVuYW5jZS9qb2IvezB9L3sxfScsCisgICAgICAgICAgICAgZXhwZWN0 ZWRfY21kX29wdHM9WydSRUlOREVYIERBVEFCQVNFIHBvc3RncmVzO1xuJ10sCisgICAgICAgICAp KSwKKyAgICAgICAgKCdXaGVuIG1haW50ZW5hbmNlIHRoZSBvYmplY3Qgd2l0aCB0aGUgQ0xVU1RF UicsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAg ICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgbmFtZT0ndGVzdF9tYWludGVu YW5jZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAg ICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3Jl cycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBvcD0nQ0xVU1RF UicsCisgICAgICAgICAgICAgICAgIHZhY3V1bV9hbmFseXplPUZhbHNlLAorICAgICAgICAgICAg ICAgICB2YWN1dW1fZnJlZXplPUZhbHNlLAorICAgICAgICAgICAgICAgICB2YWN1dW1fZnVsbD1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1GYWxzZQorICAgICAgICAgICAgICksCisg ICAgICAgICAgICAgdXJsPScvbWFpbnRlbmFuY2Uvam9iL3swfS97MX0nLAorICAgICAgICAgICAg IGV4cGVjdGVkX2NtZF9vcHRzPVsnQ0xVU1RFUjtcbiddLAorICAgICAgICAgKSkKKyAgICBdCisK KyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuc2VydmVyWydkZWZhdWx0X2Jp bmFyeV9wYXRocyddIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KAorICAgICAg ICAgICAgICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyBpcyBub3Qgc2V0IGZvciB0aGUgc2VydmVy IHswfSIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNlcnZlclsnbmFtZSddCisg ICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRv b2xzLm1haW50ZW5hbmNlLlNlcnZlcicpCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLm1haW50 ZW5hbmNlLk1lc3NhZ2UnKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5tYWludGVuYW5jZS5C YXRjaFByb2Nlc3MnKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGJhdGNoX3Byb2Nlc3NfbW9jaywg bWVzc2FnZV9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFy ZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV1bInNlcnZlcl9pZCJdCisgICAgICAgIHNlbGYu ZGJfaWQgPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXVsiZGJfaWQiXQorICAgICAg ICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCisKKyAg ICAgICAgY2xhc3MgVGVzdE1vY2tTZXJ2ZXIoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhz ZWxmLCBob3N0LCBwb3J0LCBpZCwgdXNlcm5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYuaG9z dCA9IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgICAgICAg ICAgc2VsZi5pZCA9IGlkCisgICAgICAgICAgICAgICAgc2VsZi51c2VybmFtZSA9IHVzZXJuYW1l CisKKyAgICAgICAgbW9ja19vYmogPSBUZXN0TW9ja1NlcnZlcihzZWxmLmNsYXNzX3BhcmFtc1sn aG9zdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFy YW1zWydwb3J0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2 ZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJh bXNbJ3VzZXJuYW1lJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAg ICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92YWx1 ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBtb2NrX29iagorCisg ICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5zZXRfZW52X3ZhcmlhYmxlcyA9IE1hZ2ljTW9jaygK KyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAgICkKKyAgICAgICAgYmF0Y2hf cHJvY2Vzc19tb2NrLnN0YXJ0ID0gTWFnaWNNb2NrKAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVl PVRydWUKKyAgICAgICAgKQorCisgICAgICAgIHNlcnZlcl9yZXNwb25zZSA9IHNlcnZlcl91dGls cy5jb25uZWN0X3NlcnZlcihzZWxmLCBzZWxmLnNlcnZlcl9pZCkKKyAgICAgICAgaWYgc2VydmVy X3Jlc3BvbnNlWyJpbmZvIl0gPT0gIlNlcnZlciBjb25uZWN0ZWQuIjoKKyAgICAgICAgICAgIGRi X293bmVyID0gc2VydmVyX3Jlc3BvbnNlWydkYXRhJ11bJ3VzZXInXVsnbmFtZSddCisgICAgICAg ICAgICBzZWxmLmRhdGEgPSBkYXRhYmFzZV91dGlscy5nZXRfZGJfZGF0YShkYl9vd25lcikKKyAg ICAgICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYuZGF0YVsnbmFtZSddCisKKyAgICAgICAgIyBD cmVhdGUgdGhlIGJhY2t1cCBqb2IKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0 KHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1w cyhzZWxmLnBhcmFtcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250 ZW50X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNl LnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJl c3BvbnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9k YXRhWydkYXRhJ11bJ2pvYl9pZCddCisKKyAgICAgICAgYXNzZXJ0IG1lc3NhZ2VfbW9jay5jYWxs ZWQKKyAgICAgICAgYXNzZXJ0IGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxsZWQKKworICAgICAgICBw cmludChiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xpc3RbMF1bMV1bJ2FyZ3MnXSkKKyAg ICAgICAgaWYgc2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgIGZvciBvcHQgaW4g c2VsZi5leHBlY3RlZF9jbWRfb3B0czoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9w dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5jYWxs X2FyZ3NfbGlzdFswXVsxXVsnYXJncyddKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMv bWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9tZXNzYWdlLnB5IGIvd2ViL3BnYWRt aW4vdG9vbHMvbWFpbnRlbmFuY2UvdGVzdHMvdGVzdF9tYWludGVuYW5jZV9tZXNzYWdlLnB5Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYjg5ZWQKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS90ZXN0cy90ZXN0X21haW50ZW5hbmNl X21lc3NhZ2UucHkKQEAgLTAsMCArMSwxMjQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK K2Zyb20gZmxhc2sgaW1wb3J0IFJlc3BvbnNlCitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisK K2Zyb20gcGdhZG1pbi50b29scy5tYWludGVuYW5jZSBpbXBvcnQgTWVzc2FnZQorZnJvbSBwZ2Fk bWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorCisKK2NsYXNzIE1haW50 ZW5hbmNlTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIE1h aW50ZW5hbmNlIE1lc3NhZ2UgY2xhc3MiIiIKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn V2hlbiBtYWludGFpbmVkIHRoZSBzZXJ2ZXInLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAg ICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAg ICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVz JywKKyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAg ICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFj dXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzog RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJWQUNVVU0gVkVSQk9TRTtcbiIKKyAgICAg ICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFZhY3V1 bSkiLAorICAgICAgICAgICAgIGV4cGV0Y2VkX2RldGFpbHNfY21kPSdWQUNVVU0gVkVSQk9TRTsn CisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2VydmVyIHdp dGggRlVMTCBWRVJCT1NFIG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBj bGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAg ICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3Bvc3RncmVzJywK KyAgICAgICAgICAgICAgICAgICAgICdvcCc6ICdWQUNVVU0nLAorICAgICAgICAgICAgICAgICAg ICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVt X2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogVHJ1 ZSwKKyAgICAgICAgICAgICAgICAgICAgICd2ZXJib3NlJzogVHJ1ZQorICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICBjbWQ9IlZBQ1VVTSBGVUxMIFZFUkJPU0U7XG4iCisgICAg ICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChWYWN1 dW0pIiwKKyAgICAgICAgICAgICBleHBldGNlZF9kZXRhaWxzX2NtZD0nVkFDVVVNIEZVTEwgVkVS Qk9TRTsnCisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2Vy dmVyIHdpdGggQU5BTFlaRScsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3Bh cmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0 YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICAgICAgJ29wJzogJ0FOQUxZWkUnLAorICAgICAgICAgICAgICAgICAgICAgJ3Zh Y3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6 ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAgICAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgICAgY21kPSJBTkFMWVpFIFZFUkJPU0U7XG4iCisgICAgICAgICAgICAg KSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5hbmNlIChBbmFseXplKSIsCisg ICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J0FOQUxZWkUgVkVSQk9TRTsnCisKKyAg ICAgICAgICkpLAorICAgICAgICAoJ1doZW4gbWFpbnRhaW5lZCB0aGUgc2VydmVyIHdpdGggUkVJ TkRFWCcsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAor ICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAg ICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAg ICAgJ29wJzogJ1JFSU5ERVgnLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFseXpl JzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAor ICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAgICAg ICAgICAgICAndmVyYm9zZSc6IEZhbHNlCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICAgICAgIGNtZD0iUkVJTkRFWDtcbiIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4 dGVjdGVkX21zZz0iTWFpbnRlbmFuY2UgKFJlaW5kZXgpIiwKKyAgICAgICAgICAgICBleHBldGNl ZF9kZXRhaWxzX2NtZD0nUkVJTkRFWDsnCisKKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4g bWFpbnRhaW5lZCB0aGUgc2VydmVyIHdpdGggQ0xVU1RFUicsCisgICAgICAgICBkaWN0KAorICAg ICAgICAgICAgIGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAg ICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAnZGF0YWJhc2UnOiAn cG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICAgICAgJ29wJzogJ0NMVVNURVInLAorICAgICAg ICAgICAgICAgICAgICAgJ3ZhY3V1bV9hbmFseXplJzogRmFsc2UsCisgICAgICAgICAgICAgICAg ICAgICAndmFjdXVtX2ZyZWV6ZSc6IEZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgJ3ZhY3V1 bV9mdWxsJzogRmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAndmVyYm9zZSc6IFRydWUKKyAg ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgY21kPSJDTFVTVEVSIFZFUkJPU0U7 XG4iCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBleHRlY3RlZF9tc2c9Ik1haW50ZW5h bmNlIChDbHVzdGVyKSIsCisgICAgICAgICAgICAgZXhwZXRjZWRfZGV0YWlsc19jbWQ9J0NMVVNU RVIgVkVSQk9TRTsnCisKKyAgICAgICAgICkpLAorICAgIF0KKworICAgIGRlZiBydW5UZXN0KHNl bGYpOgorICAgICAgICBtYWludGVuYW5jZV9vYmogPSBNZXNzYWdlKAorICAgICAgICAgICAgc2Vs Zi5jbGFzc19wYXJhbXNbJ3NpZCddLAorICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2Rh dGEnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorICAgICAgICApCisK KyAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgbWVzc2FnZSByZXR1cm5lZAorICAgICAgICBh c3NlcnQgbWFpbnRlbmFuY2Vfb2JqLm1lc3NhZ2UgPT0gc2VsZi5leHRlY3RlZF9tc2cKKworICAg ICAgICAjIENoZWNrIHRoZSBjb21tYW5kCisgICAgICAgIG9ial9kZXRhaWxzID0gbWFpbnRlbmFu Y2Vfb2JqLmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLCBOb25lKQorICAgICAgICBz ZWxmLmFzc2VydEluKHNlbGYuZXhwZXRjZWRfZGV0YWlsc19jbWQsIG9ial9kZXRhaWxzKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0X18ucHkKaW5kZXggZjZmOTJiOS4uNDYwZDAxZiAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9fX2luaXRfXy5weQorKysgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5CkBAIC0xOTIsNiArMTkyLDcgQEAgZGVm IGNyZWF0ZV9yZXN0b3JlX2pvYihzaWQpOgogCiAgICAgaWYgX2ZpbGUgaXMgTm9uZToKICAgICAg ICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN0YXR1cz00MTAsCiAg ICAgICAgICAgICBzdWNjZXNzPTAsCiAgICAgICAgICAgICBlcnJvcm1zZz1fKCJGaWxlIGNvdWxk IG5vdCBiZSBmb3VuZC4iKQogICAgICAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9yZXN0b3JlL3Rlc3RzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90 ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjlk ZTI5CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfYmF0 Y2hfcHJvY2Vzcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9iYXRj aF9wcm9jZXNzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjNjc0ZTEK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3Rf YmF0Y2hfcHJvY2Vzcy5weQpAQCAtMCwwICsxLDE2MSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK2ltcG9ydCBzeXMKKworZnJvbSBwZ2FkbWluLm1pc2MuYmdwcm9jZXNzLnByb2Nlc3NlcyBp bXBvcnQgQmF0Y2hQcm9jZXNzLCBJUHJvY2Vzc0Rlc2MKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0 b3JlIGltcG9ydCBSZXN0b3JlTWVzc2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBwaWNrbGUgaW1wb3J0IGR1bXBzLCBsb2FkcworCitp ZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgorICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gK K2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAorCisKK2NsYXNzIEJh dGNoUHJvY2Vzc1Rlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIEJhdGNo UHJvY2VzcyBjbGFzcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdXaGVuIHJlc3Rv cmUgc2VydmVyJywKKyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0 X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAg ICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9z dGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgYXJncz1bCisg ICAgICAgICAgICAgICAgICAgICAnLS1maWxlJywKKyAgICAgICAgICAgICAgICAgICAgICJyZXN0 b3JlX2ZpbGUiLAorICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCcsCisgICAgICAgICAgICAg ICAgICAgICAibG9jYWxob3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICctLXBvcnQnLAorICAg ICAgICAgICAgICAgICAgICAgIjU0NDQiLAorICAgICAgICAgICAgICAgICAgICAgJy0tdXNlcm5h bWUnLAorICAgICAgICAgICAgICAgICAgICAgInBvc3RncmVzIiwKKyAgICAgICAgICAgICAgICAg ICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgICAgICAgICAgICAgICctLWRhdGFiYXNlJywK KyAgICAgICAgICAgICAgICAgICAgICJwb3N0Z3JlcyIKKyAgICAgICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICAgICAgY21kPSdyZXN0b3JlX3NlcnZlcicKKyAgICAgICAgICAgICApCisgICAg ICAgICApKQorICAgIF0KKworICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9j ZXNzZXMuUG9wZW4nKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMuY3VycmVudF9hcHAnKQorICAgIEBwYXRjaCgncGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9j ZXNzZXMuZGInKQorICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlNlcnZlcicpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuY3VycmVudF91c2VyJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLmN1cnJlbnRfdXNlcicpCisgICAg ZGVmIHJ1blRlc3Qoc2VsZiwgY3VycmVudF91c2VyX21vY2ssIGN1cnJlbnRfdXNlciwgc2VydmVy X21vY2ssIGRiX21vY2ssCisgICAgICAgICAgICAgICAgY3VycmVudF9hcHBfbW9jaywgcG9wZW5f bW9jayk6CisgICAgICAgIGN1cnJlbnRfdXNlci5pZCA9IDEKKyAgICAgICAgY3VycmVudF91c2Vy X21vY2suaWQgPSAxCisgICAgICAgIGN1cnJlbnRfYXBwX21vY2suUEdBRE1JTl9SVU5USU1FID0g RmFsc2UKKworICAgICAgICBjbGFzcyBUZXN0TW9ja1NlcnZlcigpOgorICAgICAgICAgICAgZGVm IF9faW5pdF9fKHNlbGYsIG5hbWUsIGhvc3QsIHBvcnQpOgorICAgICAgICAgICAgICAgIHNlbGYu bmFtZSA9IG5hbWUKKyAgICAgICAgICAgICAgICBzZWxmLmhvc3QgPSBob3N0CisgICAgICAgICAg ICAgICAgc2VsZi5wb3J0ID0gcG9ydAorCisgICAgICAgIGRlZiBkYl9zZXNzaW9uX2FkZF9tb2Nr KGopOgorICAgICAgICAgICAgY21kX29iaiA9IGxvYWRzKGouZGVzYykKKyAgICAgICAgICAgIGFz c2VydCBpc2luc3RhbmNlKGNtZF9vYmosIElQcm9jZXNzRGVzYykKKyAgICAgICAgICAgIHByaW50 KGNtZF9vYmopCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjbWRfb2JqLmJmaWxlLCBz ZWxmLmNsYXNzX3BhcmFtc1snYmZpbGUnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KGNtZF9vYmouY21kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAtLWZpbGUgInJl c3RvcmVfZmlsZSIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taG9zdCAiezB9 IiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1wb3J0ICJ7MX0iICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICctLXVzZXJuYW1lICJ7Mn0iICcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICctLW5vLXBhc3N3b3JkICcKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICctLWRhdGFiYXNlICJ7M30iJy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydkYXRh YmFzZSddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQorCisgICAgICAgIG1vY2tf b2JqID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10p CisgICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVy bl92YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBtb2NrX29i agorCisgICAgICAgIGRiX21vY2suc2Vzc2lvbi5hZGQuc2lkZV9lZmZlY3QgPSBkYl9zZXNzaW9u X2FkZF9tb2NrCisKKyAgICAgICAgcmVzdG9yZV9vYmogPSBSZXN0b3JlTWVzc2FnZSgKKyAgICAg ICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydzaWQnXSwKKyAgICAgICAgICAgIHNlbGYuY2xhc3Nf cGFyYW1zWydiZmlsZSddLAorICAgICAgICAgICAgKnNlbGYuY2xhc3NfcGFyYW1zWydhcmdzJ10K KyAgICAgICAgKQorCisgICAgICAgIHAgPSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAgICBkZXNj PXJlc3RvcmVfb2JqLAorICAgICAgICAgICAgY21kPXNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXSwK KyAgICAgICAgICAgIGFyZ3M9c2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXQorICAgICAgICApCisK KyAgICAgICAgIyBDaGVjayB0aGF0IF9jcmVhdGVfcHJvY2VzcyBoYXMgYmVlbiBjYWxsZWQKKyAg ICAgICAgYXNzZXJ0IGRiX21vY2suc2Vzc2lvbi5hZGQuY2FsbGVkCisKKyAgICAgICAgIyBDaGVj ayBzdGFydCBtZXRob2QKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RhcnQocG9wZW5fbW9jaywgcCkK KworICAgICAgICAjIENoZWNrIGxpc3QgbWV0aG9kCisgICAgICAgIHNlbGYuX2NoZWNrX2xpc3Qo cCwgcmVzdG9yZV9vYmopCisKKyAgICBkZWYgX2NoZWNrX3N0YXJ0KHNlbGYsIHBvcGVuX21vY2ss IHApOgorICAgICAgICBjbWRfdGVzdCA9IHNlbGYuY2xhc3NfcGFyYW1zWydjbWQnXQorCisgICAg ICAgIGNsYXNzIHBvcGVuTW9ja1NpZGVFZmZlY3QoKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf XyhzZWxmLCBjbWQsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBhc3NlcnQgY21kX3Rlc3Qg aW4gY21kCisgICAgICAgICAgICAgICAgYXNzZXJ0ICdlbnYnIGluIGt3YXJncworCisgICAgICAg ICAgICBkZWYgcG9sbChzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgcG9w ZW5fbW9jay5zaWRlX2VmZmVjdCA9IHBvcGVuTW9ja1NpZGVFZmZlY3QKKyAgICAgICAgcC5zdGFy dCgpCisKKyAgICAgICAgYXNzZXJ0IHBvcGVuX21vY2suY2FsbGVkCisKKyAgICBAcGF0Y2goJ3Bn YWRtaW4ubWlzYy5iZ3Byb2Nlc3MucHJvY2Vzc2VzLlByb2Nlc3MnKQorICAgIEBwYXRjaCgncGdh ZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNzZXMuQmF0Y2hQcm9jZXNzLicKKyAgICAgICAgICAg J3VwZGF0ZV9wcm9jZXNzX2luZm8nKQorICAgIGRlZiBfY2hlY2tfbGlzdChzZWxmLCBwLCByZXN0 b3JlX29iaiwgdXBkYXRlX3Byb2Nlc3NfaW5mb19tb2NrLAorICAgICAgICAgICAgICAgICAgICBw cm9jZXNzX21vY2spOgorICAgICAgICBjbGFzcyBUZXN0TW9ja1Byb2Nlc3MoKToKKyAgICAgICAg ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZXNjLCBhcmdzLCBjbWQpOgorICAgICAgICAgICAgICAg IHNlbGYucGlkID0gMQorICAgICAgICAgICAgICAgIHNlbGYuZXhpdF9jb2RlID0gMQorICAgICAg ICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9ICcyMDE4LTA0LTE3IDA2OjE4OjU2LjMxNTQ0NSAr MDAwMCcKKyAgICAgICAgICAgICAgICBzZWxmLmVuZF90aW1lID0gTm9uZQorICAgICAgICAgICAg ICAgIHNlbGYuZGVzYyA9IGR1bXBzKGRlc2MpCisgICAgICAgICAgICAgICAgc2VsZi5hcmd1bWVu dHMgPSAiICIuam9pbihhcmdzKQorICAgICAgICAgICAgICAgIHNlbGYuY29tbWFuZCA9IGNtZAor ICAgICAgICAgICAgICAgIHNlbGYuYWNrbm93bGVkZ2UgPSBOb25lCisKKyAgICAgICAgcHJvY2Vz c19tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUgPSBbCisgICAgICAgICAgICBUZXN0 TW9ja1Byb2Nlc3MocmVzdG9yZV9vYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snY21kJ10pCisgICAgICAgIF0KKworICAgICAgICB1cGRhdGVfcHJvY2Vz c19pbmZvX21vY2sucmV0dXJuX3ZhbHVlID0gW1RydWUsIFRydWVdCisKKyAgICAgICAgcmV0X3Zh bHVlID0gcC5saXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmV0X3ZhbHVl KSkKKyAgICAgICAgYXNzZXJ0ICdkZXRhaWxzJyBpbiByZXRfdmFsdWVbMF0KKyAgICAgICAgYXNz ZXJ0ICdkZXNjJyBpbiByZXRfdmFsdWVbMF0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L3Jlc3RvcmUvdGVzdHMvdGVzdF9jcmVhdGVfcmVzdG9yZV9qb2IucHkgYi93ZWIvcGdhZG1pbi90 b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfY3JlYXRlX3Jlc3RvcmVfam9iLnB5Cm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3ZTAxZTQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfY3JlYXRlX3Jlc3RvcmVfam9iLnB5CkBA IC0wLDAgKzEsMTk2IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1wb3J0IHN5cworaW1w b3J0IHRpbWUKK2ltcG9ydCByYW5kb20KKworaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgorCitm cm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJl Z3Jlc3Npb24gaW1wb3J0IHBhcmVudF9ub2RlX2RpY3QKK2Zyb20gcmVncmVzc2lvbi5weXRob25f dGVzdF91dGlscyBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscworZnJvbSBwZ2FkbWluLnV0aWxz IGltcG9ydCBzZXJ2ZXJfdXRpbHMgYXMgc2VydmVyX3V0aWxzCitpbXBvcnQgcGdhZG1pbi50b29s cy5iYWNrdXAudGVzdHMudGVzdF9iYWNrdXBfdXRpbHMgYXMgYmFja3VwX3V0aWxzCisKKworaWYg c3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNoLCBN YWdpY01vY2sKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaCwgTWFn aWNNb2NrCisKKworY2xhc3MgUmVzdG9yZUpvYlRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAg ICIiIkJhY2t1cCBhcGkgdGVzdCBjYXNlcyIiIgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAg KCdXaGVuIHJlc3RvcmUgdGhlIG9iamVjdCB3aXRoIHRoZSBkZWZhdWx0IG9wdGlvbnMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAg ZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3Rv bScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgdmVy Ym9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAgICAg ICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAg ICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisgICAgICAgICAgICAgKSwKKyAg ICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0nLAorICAgICAgICAgICAgIGV4cGVjdGVk X2NtZF9vcHRzPVsnLS12ZXJib3NlJ10sCisgICAgICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9v cHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29kZT1bMCwgTm9uZV0sCisgICAg ICAgICAgICAgYmFja3VwX29wdGlvbnM9ZGljdCgKKyAgICAgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgICAgICBmaWxlPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAg ICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgICAgICB2 ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwK KyAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlPSd0ZXN0X3Jlc3RvcmVfZGF0YWJhc2UnCisg ICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgIHVybD0nL2JhY2t1cC9qb2IvezB9 L29iamVjdCcsCisgICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhcmFtcz1kaWN0KAorICAgICAg ICAgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1mb3JtYXQ9 YycsICctLWJsb2JzJ10sCisgICAgICAgICAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29w dHM9W10sCisgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9leGl0X2NvZGU9WzAsIE5vbmVd CisgICAgICAgICAgICAgICAgICkKKworICAgICAgICAgICAgICkKKyAgICAgICAgICkpCisgICAg XQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVs dF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAg ICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNl cnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUn XQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBjcmVhdGVfYmFj a3VwKHNlbGYpOgorICAgICAgICB1cmwgPSBzZWxmLmJhY2t1cF9vcHRpb25zWyd1cmwnXS5mb3Jt YXQoc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGpvYl9pZCA9IGJhY2t1cF91dGlscy5jcmVhdGVf YmFja3VwX2pvYihzZWxmLnRlc3RlciwgdXJsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWNrdXBfb3B0aW9uc1sncGFyYW1zJ10pCisgICAg ICAgIGJhY2t1cF91dGlscy5ydW5fYmFja3VwX2pvYihzZWxmLnRlc3Rlciwgam9iX2lkLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5iYWNrdXBfb3B0aW9uc1snZXhw ZWN0ZWRfcGFyYW1zJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmFzc2VydEluLCBzZWxmLmFzc2VydE5vdEluKQorCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6Cisg ICAgICAgIHNlbGYuZGJfbmFtZSA9ICcnCisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50 X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZXJ2ZXJfcmVz cG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQp CisgICAgICAgIGRiX2lkID0gdXRpbHMuY3JlYXRlX2RhdGFiYXNlKHNlbGYuc2VydmVyLCBzZWxm LnBhcmFtc1snZGF0YWJhc2UnXSkKKworICAgICAgICBzZWxmLmNyZWF0ZV9iYWNrdXAoKQorICAg ICAgICB1cmwgPSBzZWxmLnVybC5mb3JtYXQoc2VsZi5zZXJ2ZXJfaWQpCisKKyAgICAgICAgIyBD cmVhdGUgdGhlIHJlc3RvcmUgam9iCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9z dCh1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWpzb24uZHVt cHMoc2VsZi5wYXJhbXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25z ZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2Fkcyhy ZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgam9iX2lkID0gcmVzcG9uc2Vf ZGF0YVsnZGF0YSddWydqb2JfaWQnXQorCisgICAgICAgIGNudCA9IDAKKyAgICAgICAgd2hpbGUg MToKKyAgICAgICAgICAgIGlmIGNudCA+IDE6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg ICAgICAgICMgQ2hlY2sgdGhlIHByb2Nlc3MgbGlzdAorICAgICAgICAgICAgcmVzcG9uc2UxID0g c2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nlc3MvP189Jy5mb3JtYXQoCisgICAgICAgICAg ICAgICAgcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbHMocmVzcG9uc2UxLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgICAgICBwcm9jZXNz X2xpc3QgPSBqc29uLmxvYWRzKHJlc3BvbnNlMS5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAg ICAgICAgICAgaWYgbGVuKHByb2Nlc3NfbGlzdCkgPiAwIGFuZCAnZXhlY3V0aW9uX3RpbWUnIGlu IHByb2Nlc3NfbGlzdFswXToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgdGlt ZS5zbGVlcCgwLjUpCisgICAgICAgICAgICBjbnQgKz0gMQorCisgICAgICAgIHByaW50KHByb2Nl c3NfbGlzdFswXSkKKworICAgICAgICBhc3NlcnQgJ2V4ZWN1dGlvbl90aW1lJyBpbiBwcm9jZXNz X2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0ICdzdGltZScgaW4gcHJvY2Vzc19saXN0WzBdCisgICAg ICAgIGFzc2VydCAnZXhpdF9jb2RlJyBpbiBwcm9jZXNzX2xpc3RbMF0KKyAgICAgICAgYXNzZXJ0 IHByb2Nlc3NfbGlzdFswXVsnZXhpdF9jb2RlJ10gaW4gc2VsZi5leHBlY3RlZF9leGl0X2NvZGUK KworICAgICAgICBpZiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgZm9yIG9w dCBpbiBzZWxmLmV4cGVjdGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0 SW4ob3B0LCBwcm9jZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKyAgICAgICAgaWYgc2VsZi5ub3Rf ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYubm90X2V4cGVj dGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4ob3B0LCBwcm9j ZXNzX2xpc3RbMF1bJ2RldGFpbHMnXSkKKworICAgICAgICAjIENoZWNrIHRoZSBwcm9jZXNzIGRl dGFpbHMKKyAgICAgICAgcF9kZXRhaWxzID0gc2VsZi50ZXN0ZXIuZ2V0KCcvbWlzYy9iZ3Byb2Nl c3MvezB9P189Jy5mb3JtYXQoCisgICAgICAgICAgICBqb2JfaWQsIHJhbmRvbS5yYW5kaW50KDEs IDk5OTk5OTkpKQorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHBfZGV0YWls cy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICBwX2RldGFpbHNfZGF0YSA9IGpzb24ubG9hZHMo cF9kZXRhaWxzLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorCisgICAgICAgIHBfZGV0YWlscyA9IHNl bGYudGVzdGVyLmdldCgnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPScuZm9ybWF0KAor ICAgICAgICAgICAgam9iX2lkLCAwLCAwLCByYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKyAg ICAgICAgKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwX2RldGFpbHMuc3RhdHVzX2NvZGUs IDIwMCkKKyAgICAgICAgcF9kZXRhaWxzX2RhdGEgPSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRh LmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAjIFJldHJpZXZlIHRoZSByZXN0b3JlIGpvYiBw cm9jZXNzIGxvZ3MKKyAgICAgICAgY250ID0gMAorICAgICAgICB3aGlsZSAxOgorICAgICAgICAg ICAgb3V0LCBlcnIsIHN0YXR1cyA9IFJlc3RvcmVKb2JUZXN0LmdldF9wYXJhbXMocF9kZXRhaWxz X2RhdGEpCisgICAgICAgICAgICBpZiBzdGF0dXMgb3IgY250ID49IDEwOgorICAgICAgICAgICAg ICAgIGJyZWFrCisKKyAgICAgICAgICAgIHBfZGV0YWlscyA9IHNlbGYudGVzdGVyLmdldCgKKyAg ICAgICAgICAgICAgICAnL21pc2MvYmdwcm9jZXNzL3swfS97MX0vezJ9Lz9fPXszfScuZm9ybWF0 KAorICAgICAgICAgICAgICAgICAgICBqb2JfaWQsIG91dCwgZXJyLCByYW5kb20ucmFuZGludCgx LCA5OTk5OTk5KSkKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz KHBfZGV0YWlscy5zdGF0dXNfY29kZSwgMjAwKQorICAgICAgICAgICAgcF9kZXRhaWxzX2RhdGEg PSBqc29uLmxvYWRzKHBfZGV0YWlscy5kYXRhLmRlY29kZSgndXRmLTgnKSkKKworICAgICAgICAg ICAgY250ICs9IDEKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkKKworICAgICAgICAjIENoZWNr IHRoZSBqb2IgaXMgY29tcGxldGUuCisgICAgICAgIHJlc3RvcmVfYWNrID0gc2VsZi50ZXN0ZXIu cHV0KCcvbWlzYy9iZ3Byb2Nlc3MvezB9Jy5mb3JtYXQoam9iX2lkKSkKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMocmVzdG9yZV9hY2suc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzdG9y ZV9hY2tfcmVzID0ganNvbi5sb2FkcyhyZXN0b3JlX2Fjay5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN0b3JlX2Fja19yZXNbJ3N1Y2Nlc3MnXSwg MSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3BhcmFtcyhkYXRhKToKKyAgICAg ICAgb3V0ID0gMAorICAgICAgICBvdXRfZG9uZSA9IEZhbHNlCisgICAgICAgIGVyciA9IDAKKyAg ICAgICAgZXJyX2RvbmUgPSBGYWxzZQorICAgICAgICBpZiAnb3V0JyBpbiBkYXRhOgorICAgICAg ICAgICAgb3V0ID0gZGF0YVsnb3V0J10gYW5kIGRhdGFbJ291dCddWydwb3MnXQorCisgICAgICAg ICAgICBpZiAnZG9uZScgaW4gZGF0YVsnb3V0J106CisgICAgICAgICAgICAgICAgb3V0X2RvbmUg PSBkYXRhWydvdXQnXVsnZG9uZSddCisKKyAgICAgICAgaWYgJ2VycicgaW4gZGF0YToKKyAgICAg ICAgICAgIGVyciA9IGRhdGFbJ2VyciddIGFuZCBkYXRhWydlcnInXVsncG9zJ10KKworICAgICAg ICAgICAgaWYgJ2RvbmUnIGluIGRhdGFbJ2VyciddOgorICAgICAgICAgICAgICAgIGVycl9kb25l ID0gZGF0YVsnZXJyJ11bJ2RvbmUnXQorCisgICAgICAgIHJldHVybiBvdXQsIGVyciwgKG91dF9k b25lIGFuZCBlcnJfZG9uZSkKKworICAgIGRlZiBhZnRlcihzZWxmKToKKyAgICAgICAgY29ubmVj dGlvbiA9IHV0aWxzLmdldF9kYl9jb25uZWN0aW9uKAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJb J2RiJ10sCisgICAgICAgICAgICBzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwKKyAgICAgICAgICAg IHNlbGYuc2VydmVyWydkYl9wYXNzd29yZCddLAorICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ2hv c3QnXSwKKyAgICAgICAgICAgIHNlbGYuc2VydmVyWydwb3J0J10sCisgICAgICAgICAgICBzZWxm LnNlcnZlclsnc3NsbW9kZSddCisgICAgICAgICkKKyAgICAgICAgdXRpbHMuZHJvcF9kYXRhYmFz ZShjb25uZWN0aW9uLCBzZWxmLnBhcmFtc1snZGF0YWJhc2UnXSkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVzdHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90 ZXN0LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfY3Jl YXRlX2pvYl91bml0X3Rlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MjEyMDM5ZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvdGVz dHMvdGVzdF9yZXN0b3JlX2NyZWF0ZV9qb2JfdW5pdF90ZXN0LnB5CkBAIC0wLDAgKzEsMzEzIEBA CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQgc3lzCitpbXBvcnQgc2ltcGxlanNv biBhcyBqc29uCisKK2Zyb20gcGdhZG1pbi50b29scy5yZXN0b3JlIGltcG9ydCBSZXN0b3JlTWVz c2FnZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgor ZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Citmcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1p bi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRp bHMgYXMgXAorICAgIGRhdGFiYXNlX3V0aWxzCisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywg Myk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBwYXRjaCwgTWFnaWNNb2NrCitlbHNlOgorICAgIGZy b20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gsIE1hZ2ljTW9jaworCisKK2NsYXNzIFJlc3Rv cmVDcmVhdGVKb2JUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiJUZXN0IHRoZSBSZXN0 b3JlQ3JlYXRlSm9iIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4g cmVzdG9yZSBvYmplY3Qgd2l0aCBkZWZhdWx0IG9wdGlvbnMnLAorICAgICAgICAgZGljdCgKKyAg ICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisg ICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAg ICAgICBwb3J0PTU0NDQsCisgICAgICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAg ICAgICAgICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxl PSd0ZXN0X3Jlc3RvcmUnLAorICAgICAgICAgICAgICAgICB1c2VybmFtZT0ncG9zdGdyZXMnCisg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICBwYXJhbXM9ZGljdCgKKyAgICAgICAgICAgICAg ICAgZmlsZT0ndGVzdF9yZXN0b3JlX2ZpbGUnLAorICAgICAgICAgICAgICAgICBmb3JtYXQ9J2N1 c3RvbScsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1GYWxzZSwKKyAgICAgICAgICAgICAgICAg dmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBibG9icz1UcnVlLAorICAgICAgICAgICAg ICAgICBzY2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAg ICAgICAgIGRhdGFiYXNlPSdwb3N0Z3JlcycKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAg IHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9 WyctLXZlcmJvc2UnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisg ICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisg ICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIHRoZSBzZWN0aW9ucyBvcHRpb25zJywK KyAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAg ICAgICAgICAgIHNpZD0xLAorICAgICAgICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2Vy dmVyJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0 PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAg ICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNl cm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRp Y3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAg ICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAorICAgICAgICAgICAgICAgICBub19vZl9qb2JzPScy JywKKyAgICAgICAgICAgICAgICAgY3VzdG9tPUZhbHNlLAorICAgICAgICAgICAgICAgICB2ZXJi b3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9W10sCisgICAgICAgICAgICAgICAg IHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAg ICAgICAgICAgICAgZGF0YT1UcnVlLAorICAgICAgICAgICAgICAgICBwcmVfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBwb3N0X2RhdGE9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgb25seV9k YXRhPVRydWUsCisgICAgICAgICAgICAgICAgIG9ubHlfc2NoZW1hPVRydWUKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAg IyBQbGVhc2UgaW5jbHVkZSBzZWN0aW9ucyBkYXRhIGhlcmUsIHJpZ2h0IG5vdyB0aGlzIGlzIGEg YnVnCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLXZlcmJvc2UnLCAnLS1qb2Jz JywgJzInXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgIyBCZWxvdyBvcHRpb25zIHNob3VsZCBiZSBlbmFibGVkIG9uY2Ugd2UgZml4IHRoZSBp c3N1ZSAjMzM2OAorICAgICAgICAgICAgICMgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVsnLS1kYXRh LW9ubHknLCAnLS1zY2hlbWEtb25seSddLAorICAgICAgICAgICAgIGV4cGVjdGVkX2V4aXRfY29k ZT1bMCwgTm9uZV0sCisgICAgICAgICApKSwKKyAgICAgICAgKCdXaGVuIHJlc3RvcmUgdGhlIG9i amVjdCB3aXRoIFR5cGUgb2Ygb2JqZWN0cycsCisgICAgICAgICBkaWN0KAorICAgICAgICAgICAg IGNsYXNzX3BhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBzaWQ9MSwKKyAgICAgICAgICAg ICAgICAgbmFtZT0ndGVzdF9yZXN0b3JlX3NlcnZlcicsCisgICAgICAgICAgICAgICAgIHBvcnQ9 NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAgICAg ICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3RfcmVz dG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAgICAg ICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxlPSd0 ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIGZvcm1hdD0nY3VzdG9tJywKKyAg ICAgICAgICAgICAgICAgbm9fb2Zfam9icz0nMicsCisgICAgICAgICAgICAgICAgIGN1c3RvbT1G YWxzZSwKKyAgICAgICAgICAgICAgICAgdmVyYm9zZT1UcnVlLAorICAgICAgICAgICAgICAgICBz Y2hlbWFzPVtdLAorICAgICAgICAgICAgICAgICB0YWJsZXM9W10sCisgICAgICAgICAgICAgICAg IGRhdGFiYXNlPSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIG9ubHlfZGF0YT1UcnVlLAor ICAgICAgICAgICAgICAgICBvbmx5X3NjaGVtYT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNf b3duZXI9VHJ1ZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScvcmVzdG9yZS9q b2IvezB9JywKKyAgICAgICAgICAgICBleHBlY3RlZF9jbWRfb3B0cz1bJy0tdmVyYm9zZScsICct LWRhdGEtb25seSddLAorICAgICAgICAgICAgIG5vdF9leHBlY3RlZF9jbWRfb3B0cz1bXSwKKyAg ICAgICAgICAgICAjIEJlbG93IG9wdGlvbnMgc2hvdWxkIGJlIGVuYWJsZWQgb25jZSB3ZSBmaXgg dGhlIGlzc3VlICMzMzY4CisgICAgICAgICAgICAgIyBub3RfZXhwZWN0ZWRfY21kX29wdHM9Wyct LXNjaGVtYS1vbmx5JywgJy0tbm8tb3duZXInXSwKKyAgICAgICAgICAgICBleHBlY3RlZF9leGl0 X2NvZGU9WzAsIE5vbmVdLAorICAgICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9i amVjdCB3aXRoIG9wdGlvbiAtIERvIG5vdCBzYXZlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfc2VydmVyJywKKyAgICAgICAgICAgICAgICAg cG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAg ICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVz dF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAg ICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZp bGU9J3Rlc3RfcmVzdG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20n LAorICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIGN1c3Rv bT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAg dGFibGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAg ICAgICAgICAgICBkbnNfb3duZXI9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgZG5zX3ByaXZpbGVn ZT1UcnVlLAorICAgICAgICAgICAgICAgICBkbnNfdGFibGVzcGFjZT1UcnVlLAorICAgICAgICAg ICAgICAgICBvbmx5X2RhdGE9RmFsc2UKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIHVy bD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAgICAgICAgICAgIyBBZGQgJy0tbm8tcHJpdmlsZWdl cycgdG8gdGhlIGV4cGVjdGVkX2NtZCBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAgICAgZXhw ZWN0ZWRfY21kX29wdHM9WyctLW5vLW93bmVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJy0tbm8tdGFibGVzcGFjZXMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21k X29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAg ICAgICAgKSksCisgICAgICAgICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIFF1 ZXJpZXMnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgK KyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVz dG9yZV9maWxlJywKKyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAg ICBob3N0PSdsb2NhbGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMn LAorICAgICAgICAgICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAg ICAgdXNlcm5hbWU9J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFy YW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAg ICAgICAgICAgICAgICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9 VHJ1ZSwKKyAgICAgICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFi bGVzPVtdLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBjbGVhbj1UcnVlLAorICAgICAgICAgICAgICAgICBpbmNsdWRlX2NyZWF0ZV9kYXRh YmFzZT1UcnVlLAorICAgICAgICAgICAgICAgICBzaW5nbGVfdHJhbnNhY3Rpb249VHJ1ZSwKKyAg ICAgICAgICAgICApLAorICAgICAgICAgICAgIHVybD0nL3Jlc3RvcmUvam9iL3swfScsCisgICAg ICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWNyZWF0ZScsICctLWNsZWFuJywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tc2luZ2xlLXRyYW5zYWN0aW9uJ10sCisgICAg ICAgICAgICAgbm90X2V4cGVjdGVkX2NtZF9vcHRzPVtdLAorICAgICAgICAgICAgIGV4cGVjdGVk X2V4aXRfY29kZT1bMCwgTm9uZV0KKyAgICAgICAgICkpLAorICAgICAgICAoJ1doZW4gcmVzdG9y ZSBvYmplY3Qgd2l0aCBvcHRpb24gLSBEaXNiYWxlJywKKyAgICAgICAgIGRpY3QoCisgICAgICAg ICAgICAgY2xhc3NfcGFyYW1zPWRpY3QoCisgICAgICAgICAgICAgICAgIHNpZD0xLAorICAgICAg ICAgICAgICAgICBuYW1lPSd0ZXN0X3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgIHBv cnQ9NTQ0NCwKKyAgICAgICAgICAgICAgICAgaG9zdD0nbG9jYWxob3N0JywKKyAgICAgICAgICAg ICAgICAgZGF0YWJhc2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgYmZpbGU9J3Rlc3Rf cmVzdG9yZScsCisgICAgICAgICAgICAgICAgIHVzZXJuYW1lPSdwb3N0Z3JlcycKKyAgICAgICAg ICAgICApLAorICAgICAgICAgICAgIHBhcmFtcz1kaWN0KAorICAgICAgICAgICAgICAgICBmaWxl PSd0ZXN0X2JhY2t1cF9maWxlJywKKyAgICAgICAgICAgICAgICAgZm9ybWF0PSdjdXN0b20nLAor ICAgICAgICAgICAgICAgICB2ZXJib3NlPVRydWUsCisgICAgICAgICAgICAgICAgIHNjaGVtYXM9 W10sCisgICAgICAgICAgICAgICAgIHRhYmxlcz1bXSwKKyAgICAgICAgICAgICAgICAgZGF0YWJh c2U9J3Bvc3RncmVzJywKKyAgICAgICAgICAgICAgICAgZGlzYWJsZV90cmlnZ2VyPVRydWUsCisg ICAgICAgICAgICAgICAgIG5vX2RhdGFfZmFpbF90YWJsZT1UcnVlLAorICAgICAgICAgICAgICAg ICBvbmx5X3NjaGVtYT1GYWxzZQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgdXJsPScv cmVzdG9yZS9qb2IvezB9JywKKyAgICAgICAgICAgICAjIEFkZCAnLS1uby1kYXRhLWZvci1mYWls ZWQtdGFibGVzJyBpbnRvCisgICAgICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMz MzYzIGZpeGVkCisgICAgICAgICAgICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWRpc2FibGUtdHJp Z2dlcnMnXSwKKyAgICAgICAgICAgICBub3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAg ICAgICAgZXhwZWN0ZWRfZXhpdF9jb2RlPVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgICAg ICgnV2hlbiByZXN0b3JlIG9iamVjdCB3aXRoIG9wdGlvbiAtIE1pc2NlbGxhbmVvdXMnLAorICAg ICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJhbXM9ZGljdCgKKyAgICAgICAgICAg ICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9J3Rlc3RfcmVzdG9yZV9maWxlJywK KyAgICAgICAgICAgICAgICAgcG9ydD01NDQ0LAorICAgICAgICAgICAgICAgICBob3N0PSdsb2Nh bGhvc3QnLAorICAgICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAg ICAgICAgICBiZmlsZT0ndGVzdF9yZXN0b3JlJywKKyAgICAgICAgICAgICAgICAgdXNlcm5hbWU9 J3Bvc3RncmVzJworICAgICAgICAgICAgICksCisgICAgICAgICAgICAgcGFyYW1zPWRpY3QoCisg ICAgICAgICAgICAgICAgIGZpbGU9J3Rlc3RfYmFja3VwX2ZpbGUnLAorICAgICAgICAgICAgICAg ICBmb3JtYXQ9J2N1c3RvbScsCisgICAgICAgICAgICAgICAgIHZlcmJvc2U9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgc2NoZW1hcz1bXSwKKyAgICAgICAgICAgICAgICAgdGFibGVzPVtdLAorICAg ICAgICAgICAgICAgICBkYXRhYmFzZT0ncG9zdGdyZXMnLAorICAgICAgICAgICAgICAgICB1c2Vf c2V0X3Nlc3Npb25fYXV0aD1UcnVlLAorICAgICAgICAgICAgICAgICBleGl0X29uX2Vycm9yPVRy dWUsCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICB1cmw9Jy9yZXN0b3JlL2pvYi97MH0n LAorICAgICAgICAgICAgICMgQWRkICctLXVzZV9zZXRfc2Vzc2lvbl9hdXRoJyBpbnRvCisgICAg ICAgICAgICAgIyBleHBlY3RlZF9jbWRfb3B0cyBvbmNlICMzMzYzIGZpeGVkCisgICAgICAgICAg ICAgZXhwZWN0ZWRfY21kX29wdHM9WyctLWV4aXQtb24tZXJyb3InXSwKKyAgICAgICAgICAgICBu b3RfZXhwZWN0ZWRfY21kX29wdHM9W10sCisgICAgICAgICAgICAgZXhwZWN0ZWRfZXhpdF9jb2Rl PVswLCBOb25lXQorICAgICAgICAgKSksCisgICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgor ICAgICAgICBpZiBzZWxmLnNlcnZlclsnZGVmYXVsdF9iaW5hcnlfcGF0aHMnXSBpcyBOb25lOgor ICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiZGVmYXVsdF9iaW5h cnlfcGF0aHMgaXMgbm90IHNldCBmb3IgdGhlIHNlcnZlciB7MH0iLmZvcm1hdCgKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJbJ25hbWUnXQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKworICAgIEBwYXRjaCgncGdhZG1pbi50b29scy5yZXN0b3JlLlNlcnZlcicpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuY3VycmVudF91c2VyJykKKyAgICBAcGF0 Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5SZXN0b3JlTWVzc2FnZScpCisgICAgQHBhdGNoKCdw Z2FkbWluLnRvb2xzLnJlc3RvcmUuZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aCcpCisg ICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuQmF0Y2hQcm9jZXNzJykKKyAgICBkZWYg cnVuVGVzdChzZWxmLCBiYXRjaF9wcm9jZXNzX21vY2ssIGZpbGVuYW1lX21vY2ssCisgICAgICAg ICAgICAgICAgcmVzdG9yZV9tZXNzYWdlX21vY2ssIGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2ZXJf bW9jayk6CisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6CisgICAgICAgICAgICBkZWYg X19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCwgaWQsIHVzZXJuYW1lKToKKyAgICAgICAg ICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisgICAgICAgICAgICAgICAgc2VsZi5ob3N0ID0gaG9z dAorICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IHBvcnQKKyAgICAgICAgICAgICAgICBzZWxm LmlkID0gaWQKKyAgICAgICAgICAgICAgICBzZWxmLnVzZXJuYW1lID0gdXNlcm5hbWUKKworICAg ICAgICBzZWxmLmRiX25hbWUgPSAnJworICAgICAgICBzZWxmLnNlcnZlcl9pZCA9IHBhcmVudF9u b2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0KKworICAgICAgICBtb2NrX29iaiA9 IFRlc3RNb2NrU2VydmVyKHNlbGYuY2xhc3NfcGFyYW1zWyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2hvc3QnXSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1sncG9ydCddLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyX2lkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWyd1c2VybmFtZSddCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBtb2NrX3Jlc3VsdCA9 IHNlcnZlcl9tb2NrLnF1ZXJ5LmZpbHRlcl9ieS5yZXR1cm5fdmFsdWUKKyAgICAgICAgbW9ja19y ZXN1bHQuZmlyc3QucmV0dXJuX3ZhbHVlID0gbW9ja19vYmoKKworICAgICAgICBmaWxlbmFtZV9t b2NrLnJldHVybl92YWx1ZSA9IHNlbGYucGFyYW1zWydmaWxlJ10KKworICAgICAgICBiYXRjaF9w cm9jZXNzX21vY2suc2V0X2Vudl92YXJpYWJsZXMgPSBNYWdpY01vY2soCisgICAgICAgICAgICBy ZXR1cm5fdmFsdWU9VHJ1ZQorICAgICAgICApCisgICAgICAgIGJhdGNoX3Byb2Nlc3NfbW9jay5z dGFydCA9IE1hZ2ljTW9jaygKKyAgICAgICAgICAgIHJldHVybl92YWx1ZT1UcnVlCisgICAgICAg ICkKKworICAgICAgICBzZXJ2ZXJfcmVzcG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2 ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQpCisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5m byJdID09ICJTZXJ2ZXIgY29ubmVjdGVkLiI6CisgICAgICAgICAgICBkYl9vd25lciA9IHNlcnZl cl9yZXNwb25zZVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorICAgICAgICAgICAgc2VsZi5kYXRh ID0gZGF0YWJhc2VfdXRpbHMuZ2V0X2RiX2RhdGEoZGJfb3duZXIpCisgICAgICAgICAgICBzZWxm LmRiX25hbWUgPSBzZWxmLmRhdGFbJ25hbWUnXQorCisgICAgICAgIHVybCA9IHNlbGYudXJsLmZv cm1hdChzZWxmLnNlcnZlcl9pZCkKKworICAgICAgICAjIENyZWF0ZSB0aGUgcmVzdG9yZSBqb2IK KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnBhcmFtcyksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicp CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisg ICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorICAgICAgICBqb2JfaWQgPSByZXNwb25zZV9kYXRhWydkYXRhJ11bJ2pvYl9pZCdd CisKKyAgICAgICAgYXNzZXJ0IHJlc3RvcmVfbWVzc2FnZV9tb2NrLmNhbGxlZAorICAgICAgICBh c3NlcnQgYmF0Y2hfcHJvY2Vzc19tb2NrLmNhbGxlZAorCisgICAgICAgIGlmIHNlbGYuZXhwZWN0 ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYuZXhwZWN0ZWRfY21kX29w dHM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigKKyAgICAgICAgICAgICAgICAgICAg b3B0LAorICAgICAgICAgICAgICAgICAgICBiYXRjaF9wcm9jZXNzX21vY2suY2FsbF9hcmdzX2xp c3RbMF1bMV1bJ2FyZ3MnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgc2VsZi5ub3Rf ZXhwZWN0ZWRfY21kX29wdHM6CisgICAgICAgICAgICBmb3Igb3B0IGluIHNlbGYubm90X2V4cGVj dGVkX2NtZF9vcHRzOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oCisgICAgICAg ICAgICAgICAgICAgIG9wdCwKKyAgICAgICAgICAgICAgICAgICAgYmF0Y2hfcHJvY2Vzc19tb2Nr LmNhbGxfYXJnc19saXN0WzBdWzFdWydhcmdzJ10KKyAgICAgICAgICAgICAgICApCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rlc3RzL3Rlc3RfcmVzdG9yZV9tZXNzYWdl LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVfbWVzc2Fn ZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjNlMDlkCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZXN0cy90ZXN0X3Jlc3RvcmVf bWVzc2FnZS5weQpAQCAtMCwwICsxLDg1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgs IFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaW1w b3J0IHN5cworCitmcm9tIHBnYWRtaW4udG9vbHMucmVzdG9yZSBpbXBvcnQgUmVzdG9yZU1lc3Nh Z2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKKwor aWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICBmcm9tIG1vY2sgaW1wb3J0IHBhdGNo CitlbHNlOgorICAgIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgcGF0Y2gKKworCitjbGFzcyBS ZXN0b3JlTWVzc2FnZVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIlRlc3QgdGhlIFJl c3RvcmVNZXNzYWdlIGNsYXNzIiIiCisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAoJ1doZW4g cmVzdG9yZSBvYmplY3QnLAorICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICBjbGFzc19wYXJh bXM9ZGljdCgKKyAgICAgICAgICAgICAgICAgc2lkPTEsCisgICAgICAgICAgICAgICAgIG5hbWU9 J3Rlc3RfcmVzdG9yZV9zZXJ2ZXInLAorICAgICAgICAgICAgICAgICBwb3J0PTU0NDQsCisgICAg ICAgICAgICAgICAgIGhvc3Q9J2xvY2FsaG9zdCcsCisgICAgICAgICAgICAgICAgIGRhdGFiYXNl PSdwb3N0Z3JlcycsCisgICAgICAgICAgICAgICAgIGJmaWxlPSd0ZXN0X3Jlc3RvcmUnLAorICAg ICAgICAgICAgICAgICBhcmdzPVsKKyAgICAgICAgICAgICAgICAgICAgICctLWZpbGUnLAorICAg ICAgICAgICAgICAgICAgICAgJ3Jlc3RvcmVfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAn LS1ob3N0JywKKyAgICAgICAgICAgICAgICAgICAgICdsb2NhbGhvc3QnLAorICAgICAgICAgICAg ICAgICAgICAgJy0tcG9ydCcsCisgICAgICAgICAgICAgICAgICAgICAnNTQ0NCcsCisgICAgICAg ICAgICAgICAgICAgICAnLS11c2VybmFtZScsCisgICAgICAgICAgICAgICAgICAgICAncG9zdGdy ZXMnLAorICAgICAgICAgICAgICAgICAgICAgJy0tbm8tcGFzc3dvcmQnLAorICAgICAgICAgICAg ICAgICAgICAgJy0tZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICAgJ3Bvc3RncmVzJwor ICAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICBjbWQ9Ii90ZXN0X3BhdGgvcGdf cmVzdG9yZSIKKyAgICAgICAgICAgICApLAorICAgICAgICAgICAgIGV4dGVjdGVkX21zZz0iUmVz dG9yaW5nIGJhY2t1cCBvbiB0aGUgc2VydmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg Iid0ZXN0X3Jlc3RvcmVfc2VydmVyIChsb2NhbGhvc3Q6NTQ0NCknLi4uIiwKKyAgICAgICAgICAg ICBleHBldGNlZF9kZXRhaWxzX2NtZD0nL3Rlc3RfcGF0aC9wZ19yZXN0b3JlIC0tZmlsZSAnCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyJyZXN0b3JlX2ZpbGUiIC0taG9zdCAi bG9jYWxob3N0IicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC0tcG9ydCAi NTQ0NCIgLS11c2VybmFtZSAicG9zdGdyZXMiICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAnLS1uby1wYXNzd29yZCAtLWRhdGFiYXNlICJwb3N0Z3JlcyInCisKKyAgICAgICAg ICkpCisgICAgXQorCisgICAgQHBhdGNoKCdwZ2FkbWluLnRvb2xzLnJlc3RvcmUuU2VydmVyJykK KyAgICBAcGF0Y2goJ3BnYWRtaW4udG9vbHMucmVzdG9yZS5jdXJyZW50X3VzZXInKQorICAgIGRl ZiBydW5UZXN0KHNlbGYsIGN1cnJlbnRfdXNlcl9tb2NrLCBzZXJ2ZXJfbW9jayk6CisgICAgICAg IGN1cnJlbnRfdXNlcl9tb2NrID0gMQorCisgICAgICAgIGNsYXNzIFRlc3RNb2NrU2VydmVyKCk6 CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgaG9zdCwgcG9ydCk6CisgICAg ICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuaG9zdCA9 IGhvc3QKKyAgICAgICAgICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgIG1vY2tfb2Jq ID0gVGVzdE1vY2tTZXJ2ZXIoc2VsZi5jbGFzc19wYXJhbXNbJ25hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snaG9zdCddLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xhc3NfcGFyYW1zWydwb3J0J10pCisg ICAgICAgIG1vY2tfcmVzdWx0ID0gc2VydmVyX21vY2sucXVlcnkuZmlsdGVyX2J5LnJldHVybl92 YWx1ZQorICAgICAgICBtb2NrX3Jlc3VsdC5maXJzdC5yZXR1cm5fdmFsdWUgPSBtb2NrX29iagor CisgICAgICAgIHJlc3RvcmVfb2JqID0gUmVzdG9yZU1lc3NhZ2UoCisgICAgICAgICAgICBzZWxm LmNsYXNzX3BhcmFtc1snc2lkJ10sCisgICAgICAgICAgICBzZWxmLmNsYXNzX3BhcmFtc1snYmZp bGUnXSwKKyAgICAgICAgICAgICpzZWxmLmNsYXNzX3BhcmFtc1snYXJncyddCisgICAgICAgICkK KworICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBtZXNzYWdlIHJldHVybmVkCisgICAgICAg IGFzc2VydCByZXN0b3JlX29iai5tZXNzYWdlID09IHNlbGYuZXh0ZWN0ZWRfbXNnCisKKyAgICAg ICAgIyBDaGVjayB0aGUgY29tbWFuZAorICAgICAgICBvYmpfZGV0YWlscyA9IHJlc3RvcmVfb2Jq LmRldGFpbHMoc2VsZi5jbGFzc19wYXJhbXNbJ2NtZCddLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc19wYXJhbXNbJ2FyZ3MnXSkKKyAgICAgICAg c2VsZi5hc3NlcnRJbihzZWxmLmV4cGV0Y2VkX2RldGFpbHNfY21kLCBvYmpfZGV0YWlscykKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL3Rlc3RfdXRpbHMucHkg Yi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy90ZXN0X3V0aWxzLnB5CmluZGV4IDNl NTE3YjYuLmQ1ZDNhMGYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0 aWxzL3Rlc3RfdXRpbHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMv dGVzdF91dGlscy5weQpAQCAtMjEsNiArMjEsOCBAQCBpbXBvcnQgY29uZmlnCiBpbXBvcnQgcmVn cmVzc2lvbgogZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3NldHVwCiAKK2Zyb20gcGdhZG1p bi51dGlscy5wcmVmZXJlbmNlcyBpbXBvcnQgUHJlZmVyZW5jZXMKKwogU0VSVkVSX0dST1VQID0g dGVzdF9zZXR1cC5jb25maWdfZGF0YVsnc2VydmVyX2dyb3VwJ10KIGZpbGVfbmFtZSA9IG9zLnBh dGgucmVhbHBhdGgoX19maWxlX18pCiAKQEAgLTg2LDcgKzg4LDggQEAgZGVmIGdldF9jb25maWdf ZGF0YSgpOgogICAgICAgICAgICAgICAgICJkYl9wYXNzd29yZCI6IHNydlsnZGJfcGFzc3dvcmQn XSwKICAgICAgICAgICAgICAgICAicm9sZSI6ICIiLAogICAgICAgICAgICAgICAgICJzc2xtb2Rl Ijogc3J2Wydzc2xtb2RlJ10sCi0gICAgICAgICAgICAgICAgInRhYmxlc3BhY2VfcGF0aCI6IHNy di5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpCisgICAgICAgICAgICAgICAgInRhYmxlc3Bh Y2VfcGF0aCI6IHNydi5nZXQoJ3RhYmxlc3BhY2VfcGF0aCcsIE5vbmUpLAorICAgICAgICAgICAg ICAgICJkZWZhdWx0X2JpbmFyeV9wYXRocyI6IHNydi5nZXQoJ2RlZmF1bHRfYmluYXJ5X3BhdGhz JywgTm9uZSkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICdkYl90eXBlJyBpbiBzcnY6 CiAgICAgICAgICAgICAgICAgZGF0YVsnZGJfdHlwZSddID0gc3J2WydkYl90eXBlJ10KQEAgLTQ0 NSw2ICs0NDgsMTMgQEAgZGVmIGRlbGV0ZV9zZXJ2ZXJfd2l0aF9hcGkodGVzdGVyLCBzaWQpOgog ICAgICAgICB1cmwgPSAnL2Jyb3dzZXIvc2VydmVyL29iai8nICsgc3RyKFNFUlZFUl9HUk9VUCkg KyAiLyIKICAgICAgICAgIyBDYWxsIEFQSSB0byBkZWxldGUgdGhlIHNlcnZlcgogICAgICAgICBy ZXNwb25zZSA9IHRlc3Rlci5kZWxldGUodXJsICsgc3RyKHNpZCkpCisKKyAgICAgICAgY250ID0g MAorICAgICAgICBmb3IgcyBpbiByZWdyZXNzaW9uLnBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd OgorICAgICAgICAgICAgaWYgc1snc2VydmVyX2lkJ10gPT0gaW50KHNpZCk6CisgICAgICAgICAg ICAgICAgZGVsIHJlZ3Jlc3Npb24ucGFyZW50X25vZGVfZGljdFsic2VydmVyIl1bY250XQorICAg ICAgICAgICAgY250ICs9IDEKKwogICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgIHRyYWNl YmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQogCkBAIC01OTYsNiArNjA2LDQ3IEBAIGRl ZiBnZXRfZGJfc2VydmVyKHNpZCk6CiAgICAgcmV0dXJuIGNvbm5lY3Rpb24KIAogCitkZWYgc2V0 X3ByZWZlcmVuY2UoZGVmYXVsdF9iaW5hcnlfcGF0aCk6CisgICAgY29ubiA9IHNxbGl0ZTMuY29u bmVjdChjb25maWcuVEVTVF9TUUxJVEVfUEFUSCkKKyAgICBjdXIgPSBjb25uLmN1cnNvcigpCisK KyAgICBwZXJmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdwYXRocycpCisgICAgcGdfcGF0aF9wcmVm ID0gcGVyZi5wcmVmZXJlbmNlKCdwZ19iaW5fZGlyJykKKworICAgIHVzZXJfcHJlZiA9IGN1ci5l eGVjdXRlKAorICAgICAgICAnU0VMRUNUIHBpZCwgdWlkIEZST00gdXNlcl9wcmVmZXJlbmNlcyB3 aGVyZSBwaWQ9JXMnICUgcGdfcGF0aF9wcmVmLnBpZAorICAgICkKKyAgICB1c2VyX3ByZWYgPSB1 c2VyX3ByZWYuZmV0Y2hvbmUoKQorCisgICAgaWYgdXNlcl9wcmVmOgorICAgICAgICBjdXIuZXhl Y3V0ZSgnVVBEQVRFIHVzZXJfcHJlZmVyZW5jZXMgU0VUIHZhbHVlID0gPyBXSEVSRSBwaWQgPSA/ JywKKyAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHRfYmluYXJ5X3BhdGhbJ3BnJ10sIHBnX3Bh dGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBnX3ByZWZfZGV0YWlscyA9IChwZ19w YXRoX3ByZWYucGlkLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF9iaW5h cnlfcGF0aFsncGcnXSkKKyAgICAgICAgY3VyLmV4ZWN1dGUoJ0lOU0VSVCBJTlRPIHVzZXJfcHJl ZmVyZW5jZXMocGlkLCB1aWQsIHZhbHVlKScKKyAgICAgICAgICAgICAgICAgICAgJyBWQUxVRVMg KD8sPyw/KScsIHBnX3ByZWZfZGV0YWlscykKKworICAgIHBwYXNfcGF0aF9wcmVmID0gcGVyZi5w cmVmZXJlbmNlKCdwcGFzX2Jpbl9kaXInKQorCisgICAgdXNlcl9wcmVmID0gY3VyLmV4ZWN1dGUo CisgICAgICAgICdTRUxFQ1QgcGlkLCB1aWQgRlJPTSB1c2VyX3ByZWZlcmVuY2VzIHdoZXJlIHBp ZD0lcycgJQorICAgICAgICBwcGFzX3BhdGhfcHJlZi5waWQKKyAgICApCisgICAgdXNlcl9wcmVm ID0gdXNlcl9wcmVmLmZldGNob25lKCkKKworICAgIGlmIHVzZXJfcHJlZjoKKyAgICAgICAgY3Vy LmV4ZWN1dGUoJ1VQREFURSB1c2VyX3ByZWZlcmVuY2VzIFNFVCB2YWx1ZSA9ID8gV0hFUkUgcGlk ID0gPyAnLAorICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcydd LCBwcGFzX3BhdGhfcHJlZi5waWQpKQorICAgIGVsc2U6CisgICAgICAgIHBwYXNfcHJlZl9kZXRh aWxzID0gKHBwYXNfcGF0aF9wcmVmLnBpZCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdF9iaW5hcnlfcGF0aFsncHBhcyddKQorICAgICAgICBjdXIuZXhlY3V0ZSgnSU5T RVJUIElOVE8gdXNlcl9wcmVmZXJlbmNlcyhwaWQsIHVpZCwgdmFsdWUpJworICAgICAgICAgICAg ICAgICAgICAnIFZBTFVFUyAoPyw/LD8pJywgcHBhc19wcmVmX2RldGFpbHMpCisKKyAgICBjb25u LmNvbW1pdCgpCisKKwogZGVmIHJlbW92ZV9kYl9maWxlKCk6CiAgICAgIiIiVGhpcyBmdW5jdGlv biB1c2UgdG8gcmVtb3ZlIFNRTGl0ZSBEQiBmaWxlIiIiCiAgICAgaWYgb3MucGF0aC5pc2ZpbGUo Y29uZmlnLlRFU1RfU1FMSVRFX1BBVEgpOgpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcnVu dGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQppbmRleCBkNzg2NjkyLi4wYTFk NDhlIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQorKysgYi93ZWIvcmVn cmVzc2lvbi9ydW50ZXN0cy5weQpAQCAtMTE0LDYgKzExNCw5IEBAIHRlc3RfY2xpZW50ID0gYXBw LnRlc3RfY2xpZW50KCkKIGRyaXZlciA9IE5vbmUKIGFwcF9zdGFydGVyID0gTm9uZQogaGFuZGxl X2NsZWFudXAgPSBOb25lCithcHAuUEdBRE1JTl9SVU5USU1FID0gVHJ1ZQoraWYgY29uZmlnLlNF UlZFUl9NT0RFIGlzIFRydWU6CisgICAgYXBwLlBHQURNSU5fUlVOVElNRSA9IEZhbHNlCiAKIHNl dGF0dHIodW5pdF90ZXN0LnJlc3VsdC5UZXN0UmVzdWx0LCAicGFzc2VkIiwgW10pCiAKQEAgLTIz NCw3ICsyMzcsNiBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICMgU29y dCBtb2R1bGUgbGlzdCBzbyB0aGF0IHRlc3Qgc3VpdGUgZXhlY3V0ZXMgdGhlIHRlc3QgY2FzZXMg c2VxdWVudGlhbGx5CiAgICAgbW9kdWxlX2xpc3QgPSBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LnJl Z2lzdHJ5Lml0ZW1zKCkKICAgICBtb2R1bGVfbGlzdCA9IHNvcnRlZChtb2R1bGVfbGlzdCwga2V5 PWxhbWJkYSBtb2R1bGVfdHVwbGU6IG1vZHVsZV90dXBsZVswXSkKLQogICAgIHJldHVybiBtb2R1 bGVfbGlzdAogCiAKQEAgLTM5Myw2ICszOTUsMTUgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9f JzoKICAgICAgICAgICAgICMgQ3JlYXRlIHRlc3Qgc2VydmVyCiAgICAgICAgICAgICBzZXJ2ZXJf aW5mb3JtYXRpb24gPSB0ZXN0X3V0aWxzLmNyZWF0ZV9wYXJlbnRfc2VydmVyX25vZGUoc2VydmVy KQogCisgICAgICAgICAgICBpZiBzZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10gaXMgbm90 IE5vbmU6CisgICAgICAgICAgICAgICAgdGVzdF91dGlscy5zZXRfcHJlZmVyZW5jZShzZXJ2ZXJb J2RlZmF1bHRfYmluYXJ5X3BhdGhzJ10pCisKKyAgICAgICAgICAgICAgICBjb25maWcuREVGQVVM VF9CSU5BUllfUEFUSFMgPSB7CisgICAgICAgICAgICAgICAgICAgICJwZyI6IHN0cihzZXJ2ZXJb J2RlZmF1bHRfYmluYXJ5X3BhdGhzJ11bJ3BnJ10pLAorICAgICAgICAgICAgICAgICAgICAicHBh cyI6IHN0cihzZXJ2ZXJbJ2RlZmF1bHRfYmluYXJ5X3BhdGhzJ11bJ3BwYXMnXSksCisgICAgICAg ICAgICAgICAgICAgICJncGRiIjogIiIKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAg IHN1aXRlID0gZ2V0X3N1aXRlKHRlc3RfbW9kdWxlX2xpc3QsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzZXJ2ZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Ns aWVudCwKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93 ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IGViYzE0NjYuLjE1YjEzM2Eg MTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4KKysrIGIvd2Vi L3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbgpAQCAtMjMsNyArMjMsMTIgQEAKICAgICAg ICJtYWludGVuYW5jZV9kYiI6ICJwb3N0Z3JlcyIsCiAgICAgICAic3NsbW9kZSI6ICJwcmVmZXIi LAogICAgICAgInRhYmxlc3BhY2VfcGF0aCI6ICIiLAotICAgICAgImVuYWJsZWQiOiB0cnVlCisg ICAgICAiZW5hYmxlZCI6IHRydWUsCisgICAgICAiZGVmYXVsdF9iaW5hcnlfcGF0aHMiOiB7Cisg ICAgICAgICJwZyI6ICIvb3B0L1Bvc3RncmVTUUwvOS40L2Jpbi8iLAorICAgICAgICAicHBhcyI6 ICIvb3B0L2VkYi9hczEwL2Jpbi8iLAorICAgICAgICAiZ3BkYiI6ICIiCisgICAgICB9CiAgICAg fQogICBdLAogICAic2VydmVyX3VwZGF0ZV9kYXRhIjogWwo= --000000000000eb939e056d7990d6--