Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bP7vU-0001nT-II for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jul 2016 12:45:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bP7vU-0004SO-0Y for pgadmin-hackers@arkaria.postgresql.org; Mon, 18 Jul 2016 12:45:36 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bP7vQ-0004Nh-9L for pgadmin-hackers@postgresql.org; Mon, 18 Jul 2016 12:45:32 +0000 Received: from mail-qk0-x229.google.com ([2607:f8b0:400d:c09::229]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bP7vD-0005tN-Qd for pgadmin-hackers@postgresql.org; Mon, 18 Jul 2016 12:45:31 +0000 Received: by mail-qk0-x229.google.com with SMTP id s63so155475917qkb.2 for ; Mon, 18 Jul 2016 05:45:19 -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=5WyOrqLIt3liTnMQgb9mfJIG9UgMiQbP8Pu8VJDu9ug=; b=d3U48xGmgQv/da4bTUUmUBCJXBSeic0+0lTrj/8M33MmlhWYAXN00XAZ9b91O5dSvG SkHUeWOwjNA3LF/g+K2wnboxvu+nnVlYmn1eRvM0gCctW+jqlrVezB9MAQvA8yqSJI+I DrhCG2f+IZdXj7yuEHkpw4kiu3ou439fxIbaRz5I9NiFeHyuHbt0JCxlEeC/l6jq6JJ5 ruzJqT0o6tLYM4GqhMk1Sd+CdHFas9zSjyx0EURGDczTGo6COIA+5x2BXrrOzvRtfBhd RxB0z4Ao2lNLifDeOsG/FNJhC+VHEKUe9GlsDsoTbTS8q/WXBkIDdaaMxROMBXKU7pBQ 0+ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=5WyOrqLIt3liTnMQgb9mfJIG9UgMiQbP8Pu8VJDu9ug=; b=idsbU/4/FT2vr7edCSN7UA6ooXyp0okMfUFUS5NcLnZS2TAd/FaETwqQM08yD9Djpy rMya0PsF2+NbEM58AxsMqAtQIYYquwwMIC8wF5AGQxgD9PmnMxocoRsSfopLLvgLzC7Y 5oduggdxSGEd0Bp0SWDCR0GkXiDPZ7HRNq0+1/XBJOa91IQxEVbaUKG94YmA8IeiSRqi DpkioAJHCODCByc5qF4WlcJKNUZ9k9vYp2qJLRgio6+rxMtlZYQs4NzBU5QglOtMUrQT CX7YnxVGk4+D+QqCHnA2VcJMTXymETPAYmOCfUnj6Y+Y0BcW4ANvnB5QHEvY2i+Q4Gso lxzg== X-Gm-Message-State: ALyK8tL+EnASwqoxqbo5UolCMGCKgTupZO6Im+MfteIDKVmfQVtHvgAPxWzG+rIYWlxdb4XwBpNexvFoIF74YaaZ X-Received: by 10.55.217.89 with SMTP id u86mr44341418qki.114.1468845917793; Mon, 18 Jul 2016 05:45:17 -0700 (PDT) MIME-Version: 1.0 Received: by 10.200.41.90 with HTTP; Mon, 18 Jul 2016 05:45:17 -0700 (PDT) In-Reply-To: References: From: Navnath Gadakh Date: Mon, 18 Jul 2016 18:15:17 +0530 Message-ID: Subject: Re: pgAdmin IV : Unittest modular patch To: Dave Page Cc: pgadmin-hackers , Kanchan Mohitey Content-Type: multipart/mixed; boundary=001a1149cd502930730537e857dd X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1149cd502930730537e857dd Content-Type: multipart/alternative; boundary=001a1149cd5029306d0537e857db --001a1149cd5029306d0537e857db Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Dave, Please find the revised patch for unit tests of pgAdmin4 APIs. This patch includes- 1. test_advance_config.json(for user it=E2=80=99s test_advance_config.json.= in) for advance test configuration for database/server(Priyanka was working on t= his) 2. test_config.json(for user it=E2=80=99s test_config_json.in) for basic credentials data for database/server 3. From now onward we can execute test cases node wise/package wise. I have slightly modified the way of running the testsuite. We used the command line arguments(pkg) which denotes for which package testsuite going to run. Run the testsuite for all packages by following command Python regression/testsuite.py --pkg all Here, =E2=80=98all=E2=80=99 means for all python packages(i.e.browser,server_groups,server, databases etc. which are same names in project directory structure) This will find the =E2=80=98tests=E2=80=99 directory in each= package & execute the test cases. Run the testsuite for single package by following command Python regression/testsuite.py --pkg browser (this execute the tests in =E2=80=98browser=E2=80=99 package only) Python regression/testsuite.py --pkg browser.server_groups.servers.databases (this execute the tests in =E2=80=98databases=E2=80=99 package only) 4. Logger file. Which include the detailed output of the testsuite. Testsuite also prints the test summary on the console. 5. Previously, we set the priority to each test case. In this patch priority logic is removed as there is no need to set priority. 6. Resolution of AttributeError for attribute 'APP_ROOT'(Which is mentioned by you in a previous email) Note: You might get =E2=80=98AttributeError=E2=80=99 while running this pat= ch on Python 3.4 (I have raised this bug in RM(#1464)), But still you can run the testsuite. It will run on Python 2.7 without error. On Fri, Jul 15, 2016 at 6:23 PM, Dave Page wrote: > Hi > > On Mon, Jul 11, 2016 at 2:16 PM, Navnath Gadakh < > navnath.gadakh@enterprisedb.com> wrote: > >> Hi Dave, >> PFA updated patch for modular API test cases. >> >> On Mon, Jul 11, 2016 at 5:11 PM, Dave Page >> wrote: >> >>> >>> >>> On Fri, Jul 8, 2016 at 2:30 PM, Navnath Gadakh < >>> navnath.gadakh@enterprisedb.com> wrote: >>> >>>> >>>> Hi Dave, >>>> >>>> PFA patch for modular API test cases. >>>> >>>> Kindly, review the same and let me know for any modification. >>>> >>> >>> Please re-create the patch so that it doesn't revert various changes >>> made to config.py etc. over the last couple of weeks. >>> >> >> config.py file was not updated at my end, I have updated it in the >> current patch. I have also added code related to advance test data >> configuration which was created by Priyanka (Seprated the test data >> configuration files). >> >> >>> What is the patch for? Is it fixing issues in Priyanka's last patch, or >>> something else? >>> This patch is for - >>> 1. Now we can run testsuite node/module wise(like for browser only, for >>> databases only) OR for all nodes/modules >>> 2. I have modified the existing functionality for testsuite and all test >>> case classes (Made all test cases independently runnable, removed >>> the priority logic). >>> >> >> > For more details please refer the file 'regression/README'. >> > > When running all tests, I get: > > ... > ... > ' (HEAD, OPTIONS, GET) -> redirects.static>, > ' (HEAD, OPTIONS, GET) -> backup.static>, > ' (HEAD, POST, OPTIONS, GET) -> > security.reset_password>, > ' (HEAD, OPTIONS, GET) -> about.static>]) > Traceback (most recent call last): > File "regression/testsuite.py", line 151, in > suite =3D get_suite(args, test_client) > File "regression/testsuite.py", line 75, in get_suite > TestsGeneratorRegistry.load_generators('pgadmin') > File "/Users/dpage/git/pgadmin4/web/pgadmin/utils/route.py", line 56, in > load_generators > module =3D import_module(module_name) > File > "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/i= mportlib/__init__.py", > line 37, in import_module > __import__(name) > File > "/Users/dpage/git/pgadmin4/web/pgadmin/browser/server_groups/servers/data= bases/tests/test_db_add.py", > line 14, in > from regression import test_utils as utils > File "/Users/dpage/git/pgadmin4/web/regression/test_utils.py", line 23, > in > def get_ids(url=3Dconfig.APP_ROOT + '/regression/parent_id.pkl'): > AttributeError: 'module' object has no attribute 'APP_ROOT' > > That's not overly surprising, as we don't have an APP_ROOT setting in the > config (nor should we - it should be calculated dynamically). Please fix, > and remember to test your patches against a clean copy of the git tree in > the future! > > Thanks! > > -- > Dave Page > VP, Chief Architect, Tools & Installers > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > --=20 Thanks, Navnath Gadakh Software Engineer EnterpriseDB Corporation Mobile: +91 9975389878 --001a1149cd5029306d0537e857db Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi Dave,

=C2=A0=C2=A0Please find the revised patch for unit tes= ts of pgAdmin4 APIs.

This patch includes-

  • test_advance_config.json(for user it=E2=80=99s test_advance_config.json.in) for adva= nce test configuration for database/server(Priyanka was working on this)

  • test_config.json(fo= r user it=E2=80=99s test_config_json= .in) for basic credentials data for database/server

  • From now onward we can execute test = cases node wise/package wise. I have slightly modified the way of running t= he testsuite. We used the command line arguments(pkg) which denotes for which package testsuite going t= o run.


  • =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0Run the testsuite for all packages by followi= ng command

    =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Python regression/test= suite.py --pkg all

    =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0Here, =E2=80=98all=E2=80=99 means for all p= ython packages(i.e.browser,server_groups,server,

    =C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= databases etc. which are same names in project directory structure)<= /p>

    = =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0This will find the =E2=80=98tests=E2=80=99 directory in each= package & execute the test cases.

    =C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0

    =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0Run the testsuite for single package by followin= g command

    =C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0Python reg= ression/testsuite.py --pkg browser (this execute the tests in =E2=80=98br= owser=E2=80=99 package only)

    =C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0Python regress= ion/testsuite.py --pkg browser.server_groups.servers.databases (this exec= ute the tests in =E2=80=98databases=E2=80=99 package only) =C2=A0

    =C2=A0=C2=A04.=C2=A0 Logger file. Whic= h include the detailed output of the testsuite. Testsuite also prints the <= /span>test summary on the console.

    =C2=A0=C2=A0=C2=A0= =C2=A05.=C2=A0 Previously, we set the priority to each test case. In this p= atch priority logic is removed as there is no need to set priority.<= /p>

    = =C2=A0=C2=A0=C2=A0=C2=A06. Resolution of AttributeError for attribute '= APP_ROOT'(Which is mentioned by you in a previous email)


    =

    = Note: You might get =E2=80=98AttributeError=E2=80=99 while run= ning this patch on Python 3.4 (I have raised this bug in RM(#1464)), But st= ill you can run the testsuite. It will run on Python 2.7 without error.



    On Fri, Jul 15, 2016 at 6:23 PM, Dave Page <d= ave.page@enterprisedb.com> wrote:
    Hi

    On Mon, Jul 11, 2016 at 2:16 PM, Navnath Gada= kh <navnath.gadakh@enterprisedb.com> wrote:
    Hi Dave,
    PFA updated patch for modul= ar API test cases.

    On Mon, Jul 11, 2016 at 5:11 PM, Dave Page <dave.page@ente= rprisedb.com> wrote:

    On Fri, Ju= l 8, 2016 at 2:30 PM, Navnath Gadakh <navnath.gadakh@enterpr= isedb.com> wrote:

    Hi Dave,

    PFA patch for modular API test cases.

    =
    Kindly, review the same and let me know for any modification.=C2=A0

    Pl= ease re-create the patch so that it doesn't revert various changes made= to config.py etc. over the last couple of weeks.=C2=A0

    =C2=A0 config.py=C2=A0file was = not updated at my end, I have updated it in the current patch.=C2=A0 I have= =C2=A0also added code related to advance test data configuration which was = created by Priyanka=C2=A0(Seprated the test data configuration=C2=A0files).=


    What is the patch for? Is= it fixing issues in Priyanka's last patch, or something else?

    This patch is for -
    1. N= ow we can run testsuite=C2=A0node/module=C2=A0wise(like for browser only, f= or databases only) =C2=A0OR for all nodes/modules
    2. I have modified the existing functionality for testsuite = and all test case=C2=A0classes (Made all test cases=C2=A0independently=C2= =A0runnable, removed the=C2=A0priority logic).
    =C2=A0 =C2=A0 =C2=A0
    =C2=A0 =C2=A0 For more details please= refer the file 'regression/README'.
    <= /blockquote>

    When running all tests, I get:
    =

    ...
    ...
    =C2=A0<Rule '//static/<filename>' (HEAD, OPTIONS, GE= T) -> redirects.static>,
    =C2=A0<Ru= le '/backup/<filename>' (HEAD, OPTIONS, GET) -> backup.sta= tic>,
    =C2=A0<Rule '/reset/<tok= en>' (HEAD, POST, OPTIONS, GET) -> security.reset_password>,
    =C2=A0<Rule '/about/<filename>&= #39; (HEAD, OPTIONS, GET) -> about.static>])
    Traceback (most recent call last):
    = =C2=A0 File "regression/testsuite.py", line 151, in <module>= ;
    =C2=A0 =C2=A0 suite =3D get_suite(args, t= est_client)
    =C2=A0 File "regression/te= stsuite.py", line 75, in get_suite
    =C2= =A0 =C2=A0 TestsGeneratorRegistry.load_generators('pgadmin')
    <= div class=3D"gmail_extra">=C2=A0 File "/Users/dpage/git/pgadmin4/web/p= gadmin/utils/route.py", line 56, in load_generators
    =C2=A0 =C2=A0 module =3D import_module(module_name)
    =C2=A0 File "/System/Library/Frameworks/Python.= framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, = in import_module
    =C2=A0 =C2=A0 __import__(n= ame)
    =C2=A0 File "/Users/dpage/git/pga= dmin4/web/pgadmin/browser/server_groups/servers/databases/tests/test_db_add= .py", line 14, in <module>
    =C2= =A0 =C2=A0 from regression import test_utils as utils
    =C2=A0 File "/Users/dpage/git/pgadmin4/web/regression/test_= utils.py", line 23, in <module>
    = =C2=A0 =C2=A0 def get_ids(url=3Dconfig.APP_ROOT + '/regression/parent_i= d.pkl'):
    AttributeError: 'module= 9; object has no attribute 'APP_ROOT'

    That's not overly surpris= ing, as we don't have an APP_ROOT setting in the config (nor should we = - it should be calculated dynamically). Please fix, and remember to test yo= ur patches against a clean copy of the git tree in the future!

    Thanks!

    --
    Dave Page
    VP, Chief Architect, Tools & Installe= rs
    EnterpriseDB: http://www.enterprisedb.com
    The Enterprise PostgreSQL Company
    =
    Blog: http://= pgsnake.blogspot.com
    Twitter: @pgsnake



    --
    T= hanks,
    Navnath=C2=A0Gadakh
    Software Engineer
    EnterpriseDB Corporation
    Mobile: +91 9975389878=C2=A0
    =

    --001a1149cd5029306d0537e857db-- --001a1149cd502930730537e857dd Content-Type: text/x-patch; charset=UTF-8; name="pgadmin_unittest_modular.patch" Content-Disposition: attachment; filename="pgadmin_unittest_modular.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iqs0x79a0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy90ZXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hYTAxMjk3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3Rlc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMTUgQEAKKyMgIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgI3BnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgI0NvcHlyaWdodCAoQykgMjAxMyAtIDIw MTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgI1RoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorIworIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitmcm9t IHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y CisKKworY2xhc3MgRGF0YWJhc2VDcmVhdGVUZXN0Q2FzZShCYXNlVGVzdEdl bmVyYXRvcik6CisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHJl dHVybgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfYWRkLnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfYWRkLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0Yjk3NDkKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9hZGQucHkKQEAgLTAsMCArMSw3 NCBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBvcnQganNv bgoraW1wb3J0IHV1aWQKKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9y dCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24uY29uZmln IGltcG9ydCBhZHZhbmNlX2NvbmZpZ19kYXRhCisKKworY2xhc3MgRGF0YWJh c2VBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisg ICAgVGhpcyBjbGFzcyB3aWxsIGNoZWNrIHNlcnZlciBncm91cCBub2RlIHBy ZXNlbnQgb24gdGhlIG9iamVjdCBicm93c2VyJ3MKKyAgICB0cmVlIG5vZGUg YnkgcmVzcG9uc2UgY29kZS4KKyAgICAiIiIKKworICAgIHNjZW5hcmlvcyA9 IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVSTCBmb3IgZGF0YWJh c2Ugbm9kZS4KKyAgICAgICAgKCdDaGVjayBEYXRhYmFzZXMgTm9kZSBVUkwn LCBkaWN0KHVybD0nL2Jyb3dzZXIvZGF0YWJhc2Uvb2JqLycpKQorICAgIF0K KworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgdHdvIHRhc2tzCisgICAgICAg ICAxLiBMb2dpbiB0byB0ZXN0IGNsaWVudAorICAgICAgICAgMi4gQWRkIHRo ZSB0ZXN0IHNlcnZlcgorCisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAg ICAgIiIiCisKKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQo c2VsZi50ZXN0ZXIpCisgICAgICAgICMgQWRkIHRoZSBzZXJ2ZXIKKyAgICAg ICAgdXRpbHMuYWRkX3NlcnZlcihzZWxmLnRlc3RlcikKKworICAgIGRlZiBy dW5UZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxs IGFkZCBkYXRhYmFzZSB1bmRlciAxc3Qgc2VydmVyIG9mIHRyZWUgbm9kZS4g IiIiCisKKyAgICAgICAgc2VydmVyX2Nvbm5lY3RfcmVzcG9uc2UsIHNlcnZl cl9ncm91cCwgc2VydmVyX2lkcyA9IFwKKyAgICAgICAgICAgIHV0aWxzLmNv bm5lY3Rfc2VydmVyKHNlbGYudGVzdGVyKQorCisgICAgICAgICMgU3RvcmUg ZGIgaWQuIFdoaWNoIGlzIHVzZSB0byBkZWxldGUgaW4gdGVhckRvd24oKQor ICAgICAgICBzZWxmLmRiX2lkID0gJycKKyAgICAgICAgZm9yIHNlcnZlcl9j b25uZWN0LCBzZXJ2ZXJfaWQgaW4gemlwKHNlcnZlcl9jb25uZWN0X3Jlc3Bv bnNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmVyX2lkcyk6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfY29u bmVjdFsnZGF0YSddWydjb25uZWN0ZWQnXToKKyAgICAgICAgICAgICAgICBk YXRhID0gdXRpbHMuZ2V0X2RiX2RhdGEoc2VydmVyX2Nvbm5lY3QpCisgICAg ICAgICAgICAgICAgZGJfcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHNl bGYudXJsICsgc3RyKHNlcnZlcl9ncm91cCkgKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBzZXJ2ZXJf aWQgKyAiLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVu dF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICAgICAgICAgIHNlbGYuYXNz ZXJ0VHJ1ZShkYl9yZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorICAgICAg ICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKGRiX3Jlc3Bv bnNlLmRhdGEuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIHV0 aWxzLndyaXRlX2RiX3BhcmVudF9pZChyZXNwb25zZV9kYXRhKQorICAgICAg ICAgICAgICAgIHNlbGYuZGJfaWQgPSByZXNwb25zZV9kYXRhWydub2RlJ11b J19pZCddCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIi IgorICAgICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlICdwYXJlbnRf aWQucGtsJyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4KKyAgICAgICAgc2V0 dXAoKSBmdW5jdGlvbi4gQWxzbyB0aGlzIGZ1bmN0aW9uIGxvZ291dCB0aGUg dGVzdCBjbGllbnQKKworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAg ICIiIgorCisgICAgICAgIHV0aWxzLmRlbGV0ZV9kYXRhYmFzZShzZWxmLnRl c3Rlciwgc2VsZi5kYl9pZCkKKyAgICAgICAgdXRpbHMuZGVsZXRlX3NlcnZl cihzZWxmLnRlc3RlcikKKyAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9p ZF9maWxlKCkKKyAgICAgICAgdXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50 KHNlbGYudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3Rf ZGJfZGVsZXRlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rlc3RfZGJfZGVsZXRlLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2YzU5ZTQK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9kZWxl dGUucHkKQEAgLTAsMCArMSw3MyBAQAorIyAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjICMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworCitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24g aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbi5j b25maWcgaW1wb3J0IGNvbmZpZ19kYXRhCitmcm9tIHJlZ3Jlc3Npb24udGVz dF91dGlscyBpbXBvcnQgZ2V0X2lkcywgdGVzdF9nZXRub2RlcworCisKK2Ns YXNzIERhdGFiYXNlRGVsZXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgorICAgICIiIiBUaGlzIGNsYXNzIHdpbGwgZGVsZXRlIHRoZSBkYXRhYmFz ZSB1bmRlciBsYXN0IGFkZGVkIHNlcnZlci4gIiIiCisKKyAgICBzY2VuYXJp b3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIGRh dGFiYXNlIG5vZGUuCisgICAgICAgICgnQ2hlY2sgRGF0YWJhc2VzIE5vZGUg VVJMJywgZGljdCh1cmw9Jy9icm93c2VyL2RhdGFiYXNlL29iai8nKSkKKyAg ICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHRocmVlIHRhc2tzCisg ICAgICAgICAxLiBMb2dpbiB0byB0ZXN0IGNsaWVudAorICAgICAgICAgMi4g QWRkIHRoZSB0ZXN0IHNlcnZlcgorICAgICAgICAgMy4gQ29ubmVjdCB0byBz ZXJ2ZXIKKworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgor CisgICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVz dGVyKQorICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2VydmVyCisgICAg ICAgIHV0aWxzLmFkZF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAgICMg U2Vjb25kbHksIGNvbm5lY3QgdG8gc2VydmVyL2RhdGFiYXNlCisgICAgICAg IHV0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYudGVzdGVyKQorCisgICAgZGVm IHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgZGVsZXRlIHRoZSBkYXRhYmFzZS4iIiIKKworICAgICAgICBzcnZfZ3Jw ID0gY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX2dyb3VwJ10KKyAgICAgICAg YWxsX2lkID0gZ2V0X2lkcygpCisgICAgICAgIHNlcnZlcl9pZHMgPSBhbGxf aWRbInNpZCJdCisKKyAgICAgICAgIyBUT0RPOiBOZWVkIHRvIG1vZGlmeSB0 aGUgY29kZSAsIHRvIGRlbGV0ZSB0aGUgZGF0YWJhc2VzIGZvciBhbGwKKyAg ICAgICAgIyBUT0RPOiBzZXJ2ZXJzLiBDdXJyZW50bHkgaXQgZGVsZXRlIG9u bHkgb25lIGRhdGFiYXNlLgorICAgICAgICBkYl9pZCA9IGFsbF9pZFsiZGlk Il1bMF0KKyAgICAgICAgZGJfY29uID0gdGVzdF9nZXRub2RlcyhzZWxmLnRl c3RlcikKKyAgICAgICAgaWYgbGVuKGRiX2NvbikgPT0gMDoKKyAgICAgICAg ICAgIHJhaXNlIEV4Y2VwdGlvbigiTm8gZGF0YWJhc2UocykgdG8gZGVsZXRl ISEhIikKKyAgICAgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgor ICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUoc2Vs Zi51cmwgKyBzdHIoc3J2X2dycCkgKyAnLycgKworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAn LycgKyBzdHIoZGJfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1UcnVlKQorCisgICAg ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5k YXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0 VHJ1ZShyZXNwb25zZV9kYXRhWydzdWNjZXNzJ10sIDEpCisKKyAgICBkZWYg dGVhckRvd24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1 bmN0aW9uIGRlbGV0ZXMgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxlIHdoaWNo IGlzIGNyZWF0ZWQgaW4KKyAgICAgICAgc2V0dXAoKSBmdW5jdGlvbi4gQWxz byB0aGlzIGZ1bmN0aW9uIGxvZ291dCB0aGUgdGVzdCBjbGllbnQKKworICAg ICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgorCisgICAgICAgIHV0 aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisgICAgICAgIHV0aWxz LmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAgIHV0aWxzLmxvZ291 dF90ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy90ZXN0cy90ZXN0X2RiX2dldC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy90ZXN0cy90ZXN0 X2RiX2dldC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4zZWRkNmI4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Rlc3RzL3Rl c3RfZGJfZ2V0LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwor IworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUgcGdBZG1pbiBE ZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyAjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9y dCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24uY29uZmlnIGlt cG9ydCBjb25maWdfZGF0YQorZnJvbSByZWdyZXNzaW9uLnRlc3RfdXRpbHMg aW1wb3J0IGdldF9pZHMsIHRlc3RfZ2V0bm9kZXMKKworCitjbGFzcyBEYXRh YmFzZXNHZXRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi CisgICAgVGhpcyBjbGFzcyB3aWxsIGZldGNoIGRhdGFiYXNlIGFkZGVkIHVu ZGVyIGxhc3QgYWRkZWQgc2VydmVyLgorICAgICIiIgorCisgICAgc2NlbmFy aW9zID0gWworICAgICAgICAjIEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBk YXRhYmFzZSBub2RlLgorICAgICAgICAoJ0NoZWNrIERhdGFiYXNlcyBOb2Rl IFVSTCcsIGRpY3QodXJsPScvYnJvd3Nlci9kYXRhYmFzZS9vYmovJykpCisg ICAgXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiBwZXJmb3JtIHRoZSB0aHJlZSB0YXNrcwor ICAgICAgICAgMS4gTG9naW4gdG8gdGVzdCBjbGllbnQKKyAgICAgICAgIDIu IEFkZCB0aGUgdGVzdCBzZXJ2ZXIKKyAgICAgICAgIDMuIENvbm5lY3QgdG8g c2VydmVyCisKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIK KworICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChzZWxmLnRl c3RlcikKKyAgICAgICAgIyBGaXJzdGx5LCBhZGQgdGhlIHNlcnZlcgorICAg ICAgICB1dGlscy5hZGRfc2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICAj IFNlY29uZGx5LCBjb25uZWN0IHRvIHNlcnZlci9kYXRhYmFzZQorICAgICAg ICB1dGlscy5jb25uZWN0X3NlcnZlcihzZWxmLnRlc3RlcikKKworICAgIGRl ZiBydW5UZXN0KHNlbGYpOgorICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3 aWxsIGZldGNoIGFkZGVkIGRhdGFiYXNlLiAiIiIKKworICAgICAgICBhbGxf aWQgPSBnZXRfaWRzKCkKKyAgICAgICAgc2VydmVyX2lkcyA9IGFsbF9pZFsi c2lkIl0KKworICAgICAgICAjIFRPRE86IENvZGUgaXMgcmVtYWluaW5nIHRv IGdldCBhbGwgZGF0YWJhc2VzIG9mIGFsbCBzZXJ2ZXJzCisgICAgICAgIHNl bGYuZGJfaWQgPSBhbGxfaWRbImRpZCJdWzBdCisgICAgICAgIHNydl9ncnAg PSBjb25maWdfZGF0YVsndGVzdF9zZXJ2ZXJfZ3JvdXAnXQorCisgICAgICAg IGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKKyAgICAgICAgICAgIGRi X2NvbiA9IHRlc3RfZ2V0bm9kZXMoc2VsZi50ZXN0ZXIpCisgICAgICAgICAg ICBpZiBkYl9jb25bImluZm8iXSA9PSAiRGF0YWJhc2UgY29ubmVjdGVkLiI6 CisgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQo c2VsZi51cmwgKyBzdHIoc3J2X2dycCkgKyAnLycgKworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJfaWQp ICsgJy8nICsgc3RyKAorICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX2lk KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbHMocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKwor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgJ3BhcmVudF9pZC5wa2wnIGZp bGUgd2hpY2ggaXMgY3JlYXRlZCBpbgorICAgICAgICBzZXR1cCgpIGZ1bmN0 aW9uLiBBbHNvIHRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVu dAorCisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisKKyAg ICAgICAgdXRpbHMuZGVsZXRlX2RhdGFiYXNlKHNlbGYudGVzdGVyLCBzZWxm LmRiX2lkKQorICAgICAgICB1dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVz dGVyKQorICAgICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQor ICAgICAgICB1dGlscy5sb2dvdXRfdGVzdGVyX2FjY291bnQoc2VsZi50ZXN0 ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9wdXQucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvdGVzdHMvdGVzdF9kYl9wdXQucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ3ZTY4NAotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy90ZXN0cy90ZXN0X2RiX3B1dC5weQpAQCAtMCwwICsxLDc5 IEBACisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBqc29u CisKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RH ZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBvcnQgdGVzdF91dGlscyBh cyB1dGlscworZnJvbSByZWdyZXNzaW9uLmNvbmZpZyBpbXBvcnQgY29uZmln X2RhdGEsIGFkdmFuY2VfY29uZmlnX2RhdGEKK2Zyb20gcmVncmVzc2lvbi50 ZXN0X3V0aWxzIGltcG9ydCBnZXRfaWRzLCB0ZXN0X2dldG5vZGVzCisKKwor Y2xhc3MgRGF0YWJhc2VzVXBkYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0 b3IpOgorICAgICIiIgorICAgIFRoaXMgY2xhc3Mgd2lsbCB1cGRhdGUgdGhl IGRhdGFiYXNlIHVuZGVyIGxhc3QgYWRkZWQgc2VydmVyLgorICAgICIiIgor CisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAjIEZldGNoaW5nIGRlZmF1 bHQgVVJMIGZvciBkYXRhYmFzZSBub2RlLgorICAgICAgICAoJ0NoZWNrIERh dGFiYXNlcyBOb2RlJywgZGljdCh1cmw9Jy9icm93c2VyL2RhdGFiYXNlL29i ai8nKSkKKyAgICBdCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg ICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHRocmVl IHRhc2tzCisgICAgICAgICAxLiBMb2dpbiB0byB0ZXN0IGNsaWVudAorICAg ICAgICAgMi4gQWRkIHRoZSB0ZXN0IHNlcnZlcgorICAgICAgICAgMy4gQ29u bmVjdCB0byBzZXJ2ZXIKKworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAg ICAgICIiIgorCisgICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50 KHNlbGYudGVzdGVyKQorICAgICAgICAjIEZpcnN0bHksIGFkZCB0aGUgc2Vy dmVyCisgICAgICAgIHV0aWxzLmFkZF9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisg ICAgICAgICMgU2Vjb25kbHksIGNvbm5lY3QgdG8gc2VydmVyL2RhdGFiYXNl CisgICAgICAgIHV0aWxzLmNvbm5lY3Rfc2VydmVyKHNlbGYudGVzdGVyKQor CisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXBkYXRlIHRoZSBjb21tZW50cyBmaWVsZCBvZiBkYXRh YmFzZS4iIiIKKworICAgICAgICBzcnZfZ3JwID0gY29uZmlnX2RhdGFbJ3Rl c3Rfc2VydmVyX2dyb3VwJ10KKyAgICAgICAgYWxsX2lkID0gZ2V0X2lkcygp CisgICAgICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCisKKyAgICAg ICAgIyBUT0RPOiBOZWVkIHRvIG1vZGlmeSB0aGUgY29kZSAsIHRvIGRlbGV0 ZSB0aGUgZGF0YWJhc2VzIGZvciBhbGwKKyAgICAgICAgIyBUT0RPOiBzZXJ2 ZXJzLiBDdXJyZW50bHkgaXQgZGVsZXRlIG9ubHkgb25lIGRhdGFiYXNlLgor ICAgICAgICBkYl9pZCA9IGFsbF9pZFsiZGlkIl1bMF0KKyAgICAgICAgdGVz dF9nZXRub2RlcyhzZWxmLnRlc3RlcikKKworICAgICAgICBkYXRhID0gewor ICAgICAgICAgICAgImNvbW1lbnRzIjogYWR2YW5jZV9jb25maWdfZGF0YVsi dGVzdF9kYl91cGRhdGVfZGF0YSJdWzBdCisgICAgICAgICAgICBbInRlc3Rf Y29tbWVudCJdLAorICAgICAgICAgICAgImlkIjogZGJfaWQKKyAgICAgICAg fQorCisgICAgICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKKyAg ICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dChzZWxm LnVybCArIHN0cihzcnZfZ3JwKSArICcvJyArCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHNlcnZlcl9pZCkgKyAn LycgKyBzdHIoZGJfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3df cmVkaXJlY3RzPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs cyhwdXRfcmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKKworICAgIGRlZiB0 ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVu Y3Rpb24gZGVsZXRlcyB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hpY2gg aXMgY3JlYXRlZCBpbgorICAgICAgICBzZXR1cCgpIGZ1bmN0aW9uLiBBbHNv IHRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAorCisgICAg ICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisKKyAgICAgICAgdXRp bHMuZGVsZXRlX3NlcnZlcihzZWxmLnRlc3RlcikKKyAgICAgICAgdXRpbHMu ZGVsZXRlX3BhcmVudF9pZF9maWxlKCkKKyAgICAgICAgdXRpbHMubG9nb3V0 X3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMv X19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy90ZXN0cy9fX2luaXRfXy5weQppbmRleCAyOGNkYjk0Li41 NWEzYTE3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy9fX2luaXRfXy5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy9f X2luaXRfXy5weQpAQCAtMTIsNCArMTIsNCBAQCBmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCiAKIGNsYXNzIFNl cnZlckdlbmVyYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAg IGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAgICBwcmludCAoIkluIFNlcnZl ckdlbmVyYXRlVGVzdENhc2UuLi4iKQorICAgICAgICByZXR1cm4KXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3Nl cnZlcl9hZGQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9hZGQucHkKaW5kZXggMGFm MTNkMy4uODQ3YjFiNiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfYWRk LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2FkZC5weQpAQCAtOSw0NSArOSw1 MCBAQAogCiBpbXBvcnQganNvbgogCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci50 ZXN0cy50ZXN0X2xvZ2luIGltcG9ydCBMb2dpblRlc3RDYXNlCitmcm9tIHBn YWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitm cm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKIGZy b20gcmVncmVzc2lvbi5jb25maWcgaW1wb3J0IGNvbmZpZ19kYXRhCitmcm9t IHJlZ3Jlc3Npb24udGVzdF91dGlscyBpbXBvcnQgZ2V0X2lkcwogCiAKLWNs YXNzIFNlcnZlcnNBZGRUZXN0Q2FzZShMb2dpblRlc3RDYXNlKToKLSAgICAi IiIKLSAgICBUaGlzIGNsYXNzIHdpbGwgYWRkIHRoZSBzZXJ2ZXJzIHVuZGVy IGRlZmF1bHQgc2VydmVyIGdyb3VwIGFuZCB2ZXJpZnkgd2l0aAotICAgIHNl cnZlcidzIG5hbWUuCi0gICAgIiIiCi0KLSAgICBwcmlvcml0eSA9IDQKK2Ns YXNzIFNlcnZlcnNBZGRUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6Cisg ICAgIiIiIFRoaXMgY2xhc3Mgd2lsbCBhZGQgdGhlIHNlcnZlcnMgdW5kZXIg ZGVmYXVsdCBzZXJ2ZXIgZ3JvdXAuICIiIgogCiAgICAgc2NlbmFyaW9zID0g WwogICAgICAgICAjIEZldGNoIHRoZSBkZWZhdWx0IHVybCBmb3Igc2VydmVy IG9iamVjdAogICAgICAgICAoJ0RlZmF1bHQgU2VydmVyIE5vZGUgdXJsJywg ZGljdCh1cmw9Jy9icm93c2VyL3NlcnZlci9vYmovJykpCiAgICAgXQogCi0g ICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgZGVmIHNldFVwKHNlbGYpOgog ICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGFkZCB0 aGUgc2VydmVyIHVuZGVyIGRlZmF1bHQgc2VydmVyIGdyb3VwLgotICAgICAg ICBWZXJpZnkgdGhlIGFkZGVkIHNlcnZlciB3aXRoIHJlc3BvbnNlIGNvZGUg YXMgd2VsbCBhcyBzZXJ2ZXIgbmFtZS4KKyAgICAgICAgVGhpcyBmdW5jdGlv biBsb2dpbiB0aGUgdGVzdCBhY2NvdW50IGJlZm9yZSBydW5uaW5nIHRoZSBs b2dvdXQKKyAgICAgICAgdGVzdCBjYXNlCiAgICAgICAgICIiIgogCi0gICAg ICAgIHNydl9ncnAgPSBjb25maWdfZGF0YVsndGVzdF9zZXJ2ZXJfZ3JvdXAn XQotCi0gICAgICAgIGZvciBzcnYgaW4gY29uZmlnX2RhdGFbJ3Rlc3Rfc2Vy dmVyX2NyZWRlbnRpYWxzJ106Ci0gICAgICAgICAgICBkYXRhID0geyJuYW1l Ijogc3J2Wyd0ZXN0X25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgImNv bW1lbnQiOiAiIiwKLSAgICAgICAgICAgICAgICAgICAgImhvc3QiOiBzcnZb J3Rlc3RfaG9zdCddLAotICAgICAgICAgICAgICAgICAgICAicG9ydCI6IHNy dlsndGVzdF9kYl9wb3J0J10sCi0gICAgICAgICAgICAgICAgICAgICJkYiI6 IHNydlsndGVzdF9tYWludGVuYW5jZV9kYiddLAotICAgICAgICAgICAgICAg ICAgICAidXNlcm5hbWUiOiBzcnZbJ3Rlc3RfZGJfdXNlcm5hbWUnXSwKLSAg ICAgICAgICAgICAgICAgICAgInJvbGUiOiAiIiwKLSAgICAgICAgICAgICAg ICAgICAgInNzbG1vZGUiOiBzcnZbJ3Rlc3Rfc3NsbW9kZSddfQorICAgICAg ICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKIAot ICAgICAgICAgICAgdXJsID0gc2VsZi51cmwgKyBzdHIoc3J2X2dycCkgKyAi LyIKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIiIFRoaXMg ZnVuY3Rpb24gd2lsbCBhZGQgdGhlIHNlcnZlciB1bmRlciBkZWZhdWx0IHNl cnZlciBncm91cC4iIiIKIAotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5wb3N0KHVybCwgZGF0YT1qc29uLmR1bXBzKGRhdGEpLAorICAg ICAgICBzZXJ2ZXJfZ3JvdXAsIGNvbmZpZ19kYXRhLCBwaWNrbGVfaWRfZGlj dCA9IHV0aWxzLmdldF9jb25maWdfZGF0YSgpCisgICAgICAgIGZvciBzZXJ2 ZXJfZGF0YSBpbiBjb25maWdfZGF0YToKKyAgICAgICAgICAgIHVybCA9ICJ7 MH17MX0vIi5mb3JtYXQoc2VsZi51cmwsIHNlcnZlcl9ncm91cCkKKyAgICAg ICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwsIGRhdGE9 anNvbi5kdW1wcyhzZXJ2ZXJfZGF0YSksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24n KQorCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKLSAgICAgICAgICAgIHJlc3BkYXRhID0ganNvbi5s b2FkcyhyZXNwb25zZS5kYXRhKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRU cnVlKHJlc3BkYXRhWydub2RlJ11bJ2xhYmVsJ10sIHNydlsndGVzdF9uYW1l J10pCisKKyAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRz KHJlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCisgICAgICAgICAgICB1dGlscy53 cml0ZV9wYXJlbnRfaWQocmVzcG9uc2VfZGF0YSwgcGlja2xlX2lkX2RpY3Qp CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlICdwYXJlbnRfaWQucGts JyBmaWxlIHdoaWNoIGlzIGNyZWF0ZWQgaW4KKyAgICAgICAgc2V0dXAoKSBm dW5jdGlvbi4gQWxzbyB0aGlzIGZ1bmN0aW9uIGxvZ291dCB0aGUgdGVzdCBj bGllbnQKKworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgor CisgICAgICAgIHV0aWxzLmRlbGV0ZV9zZXJ2ZXIoc2VsZi50ZXN0ZXIpCisg ICAgICAgIHV0aWxzLmRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpCisgICAgICAg IHV0aWxzLmxvZ291dF90ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2RlbGV0ZS5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rf c2VydmVyX2RlbGV0ZS5weQppbmRleCAzMjlkNzRmLi40ZjMxMmNmIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy90ZXN0cy90ZXN0X3NlcnZlcl9kZWxldGUucHkKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVz dF9zZXJ2ZXJfZGVsZXRlLnB5CkBAIC05LDQ5ICs5LDU5IEBACiAKIGltcG9y dCBqc29uCiAKLWZyb20gcGdhZG1pbi5icm93c2VyLnRlc3RzLnRlc3RfbG9n aW4gaW1wb3J0IExvZ2luVGVzdENhc2UKK2Zyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lv biBpbXBvcnQgdGVzdF91dGlscyBhcyB1dGlscwogZnJvbSByZWdyZXNzaW9u LmNvbmZpZyBpbXBvcnQgY29uZmlnX2RhdGEKK2Zyb20gcmVncmVzc2lvbi50 ZXN0X3V0aWxzIGltcG9ydCBnZXRfaWRzCiAKIAotY2xhc3MgU2VydmVyc0Rl bGV0ZVRlc3RDYXNlKExvZ2luVGVzdENhc2UpOgotICAgICIiIgotICAgIFRo aXMgY2xhc3Mgd2lsbCBjaGVjayBzZXJ2ZXIgbm9kZSBwcmVzZW50IG9uIHRo ZSBvYmplY3QgYnJvd3NlcidzIHRyZWUgbm9kZQotICAgIGJ5IHJlc3BvbnNl IGNvZGUuCi0gICAgIiIiCi0gICAgcHJpb3JpdHkgPSA3CitjbGFzcyBTZXJ2 ZXJEZWxldGVUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIi IFRoaXMgY2xhc3Mgd2lsbCBkZWxldGUgdGhlIGxhc3Qgc2VydmVyIHByZXNl bnQgdW5kZXIgdHJlZSBub2RlLiIiIgogCiAgICAgc2NlbmFyaW9zID0gWwog ICAgICAgICAjIEZldGNoaW5nIHRoZSBkZWZhdWx0IHVybCBmb3Igc2VydmVy IG5vZGUKICAgICAgICAgKCdEZWZhdWx0IFNlcnZlciBOb2RlIHVybCcsIGRp Y3QodXJsPScvYnJvd3Nlci9zZXJ2ZXIvb2JqLycpKQogICAgIF0KIAotICAg IGRlZiBydW5UZXN0KHNlbGYpOgorICAgIGRlZiBzZXRVcChzZWxmKToKICAg ICAgICAgIiIiCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBnZXQgYWxs IGF2YWlsYWJsZSBzZXJ2ZXJzIHVuZGVyIG9iamVjdCBicm93c2VyCi0gICAg ICAgIGFuZCBkZWxldGUgdGhlIHNlcnZlcnMgdXNpbmcgc2VydmVyIGlkLgor ICAgICAgICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIHR3byB0YXNrcwor ICAgICAgICAgMS4gTG9naW4gdG8gdGVzdCBjbGllbnQKKyAgICAgICAgIDIu IEFkZCB0aGUgdGVzdCBzZXJ2ZXIKKworICAgICAgICA6cmV0dXJuOiBOb25l CiAgICAgICAgICIiIgogCi0gICAgICAgIHNydl9ncnAgPSBjb25maWdfZGF0 YVsndGVzdF9zZXJ2ZXJfZ3JvdXAnXQorICAgICAgICB1dGlscy5sb2dpbl90 ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKKyAgICAgICAgIyBGaXJzdGx5 LCBhZGQgdGhlIHNlcnZlcgorICAgICAgICB1dGlscy5hZGRfc2VydmVyKHNl bGYudGVzdGVyKQogCi0gICAgICAgIGZvciBzcnYgaW4gY29uZmlnX2RhdGFb J3Rlc3Rfc2VydmVyX2NyZWRlbnRpYWxzJ106CisgICAgZGVmIHJ1blRlc3Qo c2VsZik6CisgICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2V0IGFs bCBhdmFpbGFibGUgc2VydmVycyB1bmRlciBvYmplY3QgYnJvd3NlcgorICAg ICAgICBhbmQgZGVsZXRlIHRoZSBsYXN0IHNlcnZlciB1c2luZyBzZXJ2ZXIg aWQuIiIiCiAKLSAgICAgICAgICAgIGRhdGEgPSB7Im5hbWUiOiBzcnZbJ3Rl c3RfbmFtZSddLAotICAgICAgICAgICAgICAgICAgICAiaG9zdCI6IHNydlsn dGVzdF9ob3N0J10sCi0gICAgICAgICAgICAgICAgICAgICJwb3J0Ijogc3J2 Wyd0ZXN0X2RiX3BvcnQnXSwKLSAgICAgICAgICAgICAgICAgICAgImRiIjog c3J2Wyd0ZXN0X21haW50ZW5hbmNlX2RiJ10sCi0gICAgICAgICAgICAgICAg ICAgICJ1c2VybmFtZSI6IHNydlsndGVzdF9kYl91c2VybmFtZSddLAotICAg ICAgICAgICAgICAgICAgICAicm9sZSI6ICIiLAotICAgICAgICAgICAgICAg ICAgICAic3NsbW9kZSI6IHNydlsndGVzdF9zc2xtb2RlJ119CisgICAgICAg IHNydl9ncnAgPSBjb25maWdfZGF0YVsndGVzdF9zZXJ2ZXJfZ3JvdXAnXQor ICAgICAgICBhbGxfaWQgPSBnZXRfaWRzKCkKKyAgICAgICAgc2VydmVyX2lk cyA9IGFsbF9pZFsic2lkIl0KIAotICAgICAgICAgICAgdXJsID0gc2VsZi51 cmwgKyBzdHIoc3J2X2dycCkgKyAiLyIKKyAgICAgICAgdXJsID0gc2VsZi51 cmwgKyBzdHIoc3J2X2dycCkgKyAiLyIKKyAgICAgICAgaWYgbGVuKHNlcnZl cl9pZHMpID09IDA6CisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIk5v IHNlcnZlcihzKSB0byBkZWxldGUhISEiKQogCi0gICAgICAgICAgICByZXNw b25zZSA9IHNlbGYudGVzdGVyLmdldCh1cmwsIGRhdGE9anNvbi5kdW1wcyhk YXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgIyBDYWxsIGFw aSB0byBkZWxldGUgdGhlIHNlcnZlcnMKKyAgICAgICAgZm9yIHNlcnZlcl9p ZCBpbiBzZXJ2ZXJfaWRzOgorICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5kZWxldGUodXJsICsgc3RyKHNlcnZlcl9pZCkpCiAgICAgICAg ICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw MCkKLSAgICAgICAgICAgIHJlc3BkYXRhID0ganNvbi5sb2FkcyhyZXNwb25z ZS5kYXRhKQorICAgICAgICAgICAgcmVzcG9uc2VfZGF0YSA9IGpzb24ubG9h ZHMocmVzcG9uc2UuZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShyZXNwb25zZV9kYXRhWydzdWNjZXNzJ10sIDEpCisKKyAg ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBU aGlzIGZ1bmN0aW9uIGRlbGV0ZXMgdGhlICdwYXJlbnRfaWQucGtsJyBmaWxl IHdoaWNoIGlzIGNyZWF0ZWQgaW4KKyAgICAgICAgc2V0dXAoKSBmdW5jdGlv bi4gQWxzbyB0aGlzIGZ1bmN0aW9uIGxvZ291dCB0aGUgdGVzdCBjbGllbnQK KworICAgICAgICA6cmV0dXJuOiBOb25lCisgICAgICAgICIiIgogCi0gICAg ICAgICAgICBmb3Igc2VydmVyIGluIHJlc3BkYXRhOgotICAgICAgICAgICAg ICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZGVsZXRlKHVybCArIGpzb24u ZHVtcHMoc2VydmVyWydpZCddKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFz c2VydFRydWUocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKLSAgICAgICAg ICAgICAgICByZXNwZGF0YSA9IGpzb24ubG9hZHMocmVzcG9uc2UuZGF0YSkK LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcGRhdGFbJ3N1 Y2Nlc3MnXSwgMSkKKyAgICAgICAgdXRpbHMuZGVsZXRlX3BhcmVudF9pZF9m aWxlKCkKKyAgICAgICAgdXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHNl bGYudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2ZXJfZ2V0LnB5 IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv dGVzdHMvdGVzdF9zZXJ2ZXJfZ2V0LnB5CmluZGV4IDA1MDg0M2UuLjYzNTZh NmIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX2dldC5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0 cy90ZXN0X3NlcnZlcl9nZXQucHkKQEAgLTcsNDMgKzcsNTUgQEAKICMKICMg IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotaW1wb3J0IGpzb24K LQotZnJvbSBwZ2FkbWluLmJyb3dzZXIudGVzdHMudGVzdF9sb2dpbiBpbXBv cnQgTG9naW5UZXN0Q2FzZQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uIGltcG9y dCB0ZXN0X3V0aWxzIGFzIHV0aWxzCiBmcm9tIHJlZ3Jlc3Npb24uY29uZmln IGltcG9ydCBjb25maWdfZGF0YQorZnJvbSByZWdyZXNzaW9uLnRlc3RfdXRp bHMgaW1wb3J0IGdldF9pZHMKIAogCi1jbGFzcyBTZXJ2ZXJzR2V0VGVzdENh c2UoTG9naW5UZXN0Q2FzZSk6CitjbGFzcyBTZXJ2ZXJzR2V0VGVzdENhc2Uo QmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICIiIgotICAgIFRoaXMgY2xhc3Mg d2lsbCBjaGVjayBzZXJ2ZXIgbm9kZSBwcmVzZW50IG9uIHRoZSBvYmplY3Qg YnJvd3NlcidzIHRyZWUgbm9kZQorICAgIFRoaXMgY2xhc3Mgd2lsbCBmZXRj aCBhZGRlZCBzZXJ2ZXJzIHVuZGVyIGRlZmF1bHQgc2VydmVyIGdyb3VwCiAg ICAgYnkgcmVzcG9uc2UgY29kZS4KICAgICAiIiIKIAotICAgIHByaW9yaXR5 ID0gNQotCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIEZldGNoIHRo ZSBkZWZhdWx0IHVybCBmb3Igc2VydmVyIG5vZGUKICAgICAgICAgKCdEZWZh dWx0IFNlcnZlciBOb2RlIHVybCcsIGRpY3QodXJsPScvYnJvd3Nlci9zZXJ2 ZXIvb2JqLycpKQogICAgIF0KIAotICAgIGRlZiBydW5UZXN0KHNlbGYpOgor ICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFRo aXMgZnVuY3Rpb24gd2lsbCBnZXQgYWxsIGF2YWlsYWJsZSBzZXJ2ZXJzIHBy ZXNlbnQgdW5kZXIKLSAgICAgICAgb2JqZWN0IGJyb3dzZXIuCisgICAgICAg IFRoaXMgZnVuY3Rpb24gcGVyZm9ybSB0aGUgdHdvIHRhc2tzCisgICAgICAg ICAxLiBMb2dpbiB0byB0ZXN0IGNsaWVudAorICAgICAgICAgMi4gQWRkIHRo ZSB0ZXN0IHNlcnZlcgorCisgICAgICAgIDpyZXR1cm46IE5vbmUKICAgICAg ICAgIiIiCiAKKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQo c2VsZi50ZXN0ZXIpCisgICAgICAgIHV0aWxzLmFkZF9zZXJ2ZXIoc2VsZi50 ZXN0ZXIpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIi IFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCB0aGUgYWRkZWQgc2VydmVycyB0 byBvYmplY3QgYnJvd3Nlci4gIiIiCisKKyAgICAgICAgYWxsX2lkID0gZ2V0 X2lkcygpCisgICAgICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCiAg ICAgICAgIHNydl9ncnAgPSBjb25maWdfZGF0YVsndGVzdF9zZXJ2ZXJfZ3Jv dXAnXQogCi0gICAgICAgIGZvciBzcnYgaW4gY29uZmlnX2RhdGFbJ3Rlc3Rf c2VydmVyX2NyZWRlbnRpYWxzJ106Ci0gICAgICAgICAgICBkYXRhID0geyJu YW1lIjogc3J2Wyd0ZXN0X25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAg Imhvc3QiOiBzcnZbJ3Rlc3RfaG9zdCddLAotICAgICAgICAgICAgICAgICAg ICAicG9ydCI6IHNydlsndGVzdF9kYl9wb3J0J10sCi0gICAgICAgICAgICAg ICAgICAgICJkYiI6IHNydlsndGVzdF9tYWludGVuYW5jZV9kYiddLAotICAg ICAgICAgICAgICAgICAgICAidXNlcm5hbWUiOiBzcnZbJ3Rlc3RfZGJfdXNl cm5hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAiIiwKLSAg ICAgICAgICAgICAgICAgICAgInNzbG1vZGUiOiBzcnZbJ3Rlc3Rfc3NsbW9k ZSddfQotCi0gICAgICAgICAgICB1cmwgPSBzZWxmLnVybCArIHN0cihzcnZf Z3JwKSArICIvIgotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rl ci5nZXQodXJsLCBkYXRhPWpzb24uZHVtcHMoZGF0YSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0 bWwvanNvbicpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9u c2Uuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgZm9yIHNlcnZlcl9pZCBp biBzZXJ2ZXJfaWRzOgorICAgICAgICAgICAgdXJsID0gInswfXsxfS97Mn0i LmZvcm1hdChzZWxmLnVybCwgc3J2X2dycCwgc2VydmVyX2lkKQorICAgICAg ICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQodXJsLCBjb250ZW50 X3R5cGU9J2h0bWwvanNvbicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx dWFscyhyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQorCisgICAgZGVmIHRl YXJEb3duKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiBkZWxldGVzIHRoZSAncGFyZW50X2lkLnBrbCcgZmlsZSB3aGljaCBp cyBjcmVhdGVkIGluCisgICAgICAgIHNldHVwKCkgZnVuY3Rpb24uIEFsc28g dGhpcyBmdW5jdGlvbiBsb2dvdXQgdGhlIHRlc3QgY2xpZW50CisKKyAgICAg ICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKKworICAgICAgICB1dGls cy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICB1dGlscy5k ZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICB1dGlscy5sb2dvdXRf dGVzdGVyX2FjY291bnQoc2VsZi50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90 ZXN0X3NlcnZlcl9wdXQucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X3NlcnZlcl9wdXQucHkKaW5k ZXggMzA2YmIwMy4uMzFkM2ViMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9zZXJ2 ZXJfcHV0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfc2VydmVyX3B1dC5weQpAQCAtOSw1 NyArOSw2NyBAQAogCiBpbXBvcnQganNvbgogCi1mcm9tIHBnYWRtaW4uYnJv d3Nlci50ZXN0cy50ZXN0X2xvZ2luIGltcG9ydCBMb2dpblRlc3RDYXNlCitm cm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJh dG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRp bHMKIGZyb20gcmVncmVzc2lvbi5jb25maWcgaW1wb3J0IGNvbmZpZ19kYXRh CiAKIAotY2xhc3MgU2VydmVyc1VwZGF0ZVRlc3RDYXNlKExvZ2luVGVzdENh c2UpOgotICAgICIiIgotICAgIFRoaXMgY2xhc3Mgd2lsbCBjaGVjayBzZXJ2 ZXIgbm9kZSBwcmVzZW50IG9uIHRoZSBvYmplY3QgYnJvd3NlcidzIHRyZWUg bm9kZQotICAgIGJ5IHJlc3BvbnNlIGNvZGUuCi0gICAgIiIiCi0KLSAgICBw cmlvcml0eSA9IDYKK2NsYXNzIFNlcnZlclVwZGF0ZVRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKKyAgICAiIiIgVGhpcyBjbGFzcyB3aWxsIHVwZGF0 ZSBzZXJ2ZXIncyBjb21tZW50IGZpZWxkLiAiIiIKIAogICAgIHNjZW5hcmlv cyA9IFsKICAgICAgICAgIyBGZXRjaGluZyB0aGUgZGVmYXVsdCB1cmwgZm9y IHNlcnZlciBub2RlCiAgICAgICAgICgnRGVmYXVsdCBTZXJ2ZXIgTm9kZSB1 cmwnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2VydmVyL29iai8nKSkKICAgICBd CiAKLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiCi0gICAg ICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBlZGl0IGFuZCB1cGRhdGUgdGhlIHNl cnZlcidzIGNvbW1lbnQgZmllbGQKLSAgICAgICAgYnkgdGhlIHNlcnZlciBp ZC4KKyAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHBlcmZvcm0gdGhlIGZvdXIgdGFza3MKKyAgICAg ICAgIDEuIExvZ2luIHRvIHRlc3QgY2xpZW50CisgICAgICAgICAyLiBBZGQg dGhlIHRlc3Qgc2VydmVyCisgICAgICAgICAzLiBHZXQgdGhlIHNlcnZlcgor ICAgICAgICAgNC4gQ29ubmVjdCB0byBzZXJ2ZXIKIAotICAgICAgICBzcnZf Z3JwID0gY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX2dyb3VwJ10KLQotICAg ICAgICBmb3Igc3J2IGluIGNvbmZpZ19kYXRhWyd0ZXN0X3NlcnZlcl9jcmVk ZW50aWFscyddOgotCi0gICAgICAgICAgICBkYXRhID0geyJuYW1lIjogc3J2 Wyd0ZXN0X25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICAgImhvc3QiOiBz cnZbJ3Rlc3RfaG9zdCddLAotICAgICAgICAgICAgICAgICAgICAicG9ydCI6 IHNydlsndGVzdF9kYl9wb3J0J10sCi0gICAgICAgICAgICAgICAgICAgICJk YiI6IHNydlsndGVzdF9tYWludGVuYW5jZV9kYiddLAotICAgICAgICAgICAg ICAgICAgICAidXNlcm5hbWUiOiBzcnZbJ3Rlc3RfZGJfdXNlcm5hbWUnXSwK LSAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAiIiwKLSAgICAgICAgICAg ICAgICAgICAgInNzbG1vZGUiOiBzcnZbJ3Rlc3Rfc3NsbW9kZSddfQotCi0g ICAgICAgICAgICB1cmwgPSBzZWxmLnVybCArIHN0cihzcnZfZ3JwKSArICIv IgotCi0gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCh1 cmwsIGRhdGE9anNvbi5kdW1wcyhkYXRhKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29u JykKKyAgICAgICAgOnJldHVybjogTm9uZQorICAgICAgICAiIiIKIAotICAg ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BvbnNlLnN0YXR1c19jb2Rl LCAyMDApCi0gICAgICAgICAgICByZXNwZGF0YSA9IGpzb24ubG9hZHMocmVz cG9uc2UuZGF0YSkKKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291 bnQoc2VsZi50ZXN0ZXIpCisgICAgICAgICMgRmlyc3RseSwgYWRkIHRoZSBz ZXJ2ZXIKKyAgICAgICAgdXRpbHMuYWRkX3NlcnZlcihzZWxmLnRlc3RlcikK KyAgICAgICAgIyBHZXQgdGhlIHNlcnZlcgorICAgICAgICB1dGlscy5nZXRf c2VydmVyKHNlbGYudGVzdGVyKQorICAgICAgICAjIENvbm5lY3QgdG8gc2Vy dmVyCisgICAgICAgIHNlbGYuc2VydmVyX2Nvbm5lY3QsIHNlbGYuc2VydmVy X2dyb3VwLCBzZWxmLnNlcnZlcl9pZHMgPSBcCisgICAgICAgICAgICB1dGls cy5jb25uZWN0X3NlcnZlcihzZWxmLnRlc3RlcikKKyAgICAgICAgaWYgbGVu KHNlbGYuc2VydmVyX2Nvbm5lY3QpID09IDA6CisgICAgICAgICAgICByYWlz ZSBFeGNlcHRpb24oIk5vIFNlcnZlcihzKSBjb25uZWN0ZWQgdG8gdXBkYXRl ISEhIikKIAotICAgICAgICAgICAgZm9yIHNlcnZlciBpbiByZXNwZGF0YToK KyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIiIFRoaXMgZnVu Y3Rpb24gd2lsbCB1cGRhdGUgdGhlIHNlcnZlcidzIGNvbW1lbnQgZmllbGQu ICIiIgorCisgICAgICAgIGZvciBzZXJ2ZXJfaWQgaW4gc2VsZi5zZXJ2ZXJf aWRzOgorICAgICAgICAgICAgZGF0YSA9IHsKKyAgICAgICAgICAgICAgICAi Y29tbWVudCI6CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhWyd0 ZXN0X3NlcnZlcl91cGRhdGVfZGF0YSddWzBdWyd0ZXN0X2NvbW1lbnQnXSwK KyAgICAgICAgICAgICAgICAiaWQiOiBzZXJ2ZXJfaWQKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIHB1dF9yZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1 dCgKKyAgICAgICAgICAgICAgICBzZWxmLnVybCArIHN0cihzZWxmLnNlcnZl cl9ncm91cCkgKyAnLycgKworICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf aWQpLCBkYXRhPWpzb24uZHVtcHMoZGF0YSksCisgICAgICAgICAgICAgICAg Y29udGVudF90eXBlPSdodG1sL2pzb24nKQorICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbHMocHV0X3Jlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisK KyAgICAgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHB1dF9y ZXNwb25zZS5kYXRhLmRlY29kZSgpKQorICAgICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKHJlc3BvbnNlX2RhdGFbJ3N1Y2Nlc3MnXSwgMSkKKworICAgIGRl ZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gZGVsZXRlcyB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hp Y2ggaXMgY3JlYXRlZCBpbgorICAgICAgICBzZXR1cCgpIGZ1bmN0aW9uLiBB bHNvIHRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAogCi0g ICAgICAgICAgICAgICAgdXJsID0gc2VsZi51cmwgKyBzdHIoc3J2X2dycCkg KyAiLyIgKyBqc29uLmR1bXBzKHNlcnZlclsnaWQnXSkKKyAgICAgICAgOnJl dHVybjogTm9uZQorICAgICAgICAiIiIKIAotICAgICAgICAgICAgICAgIGZv ciBzZXJ2ZXIgaW4gY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX3VwZGF0ZV9k YXRhJ106Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSB7ImNvbW1lbnQi OiBzZXJ2ZXJbJ3Rlc3RfY29tbWVudCddfQotICAgICAgICAgICAgICAgICAg ICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnB1dCh1cmwsIGRhdGE9anNvbi5k dW1wcyhkYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24nKQotICAg ICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcG9uc2Uuc3Rh dHVzX2NvZGUsIDIwMCkKLSAgICAgICAgICAgICAgICAgICAgcmVzcGRhdGEg PSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEpCi0gICAgICAgICAgICAgICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwZGF0YVsnc3VjY2VzcyddLCAxKQor ICAgICAgICB1dGlscy5kZWxldGVfc2VydmVyKHNlbGYudGVzdGVyKQorICAg ICAgICB1dGlscy5kZWxldGVfcGFyZW50X2lkX2ZpbGUoKQorICAgICAgICB1 dGlscy5sb2dvdXRfdGVzdGVyX2FjY291bnQoc2VsZi50ZXN0ZXIpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvdGVz dHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvdGVzdHMvX19pbml0X18ucHkKaW5kZXggOWZhYmVkOS4uN2ZkZDVj NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy90ZXN0cy9fX2luaXRfXy5weQpAQCAtMTIsNCAr MTIsNCBAQCBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCiAKIGNsYXNzIFNHR2VuZXJhdGVUZXN0Q2FzZShCYXNl VGVzdEdlbmVyYXRvcik6CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAg ICAgIHByaW50ICgiSW4gU0dHZW5lcmF0ZVRlc3RDYXNlLi4uIikKKyAgICAg ICAgcmV0dXJuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Rlc3Rz L3Rlc3Rfc2dfYWRkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3Rlc3RzL3Rlc3Rfc2dfYWRkLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBlNzBiYjY1Li4wMDAwMDAwCi0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy90ZXN0cy90ZXN0X3NnX2FkZC5w eQorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLSMgVGhpcyBzb2Z0d2FyZSBp cyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0jCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW1wb3J0IGpzb24K LQotZnJvbSBwZ2FkbWluLmJyb3dzZXIudGVzdHMudGVzdF9sb2dpbiBpbXBv cnQgTG9naW5UZXN0Q2FzZQotZnJvbSByZWdyZXNzaW9uLmNvbmZpZyBpbXBv cnQgY29uZmlnX2RhdGEKLQotCi1jbGFzcyBTZ05vZGVUZXN0Q2FzZShMb2dp blRlc3RDYXNlKToKLSAgICAiIiIKLSAgICAgVGhpcyBjbGFzcyB3aWxsIGNo ZWNrIGF2YWlsYWJsZSBzZXJ2ZXIgZ3JvdXBzIGluIHBnQWRtaW4uCi0gICAg IiIiCi0KLSAgICBwcmlvcml0eSA9IDEKLQotICAgIHNjZW5hcmlvcyA9IFsK LSAgICAgICAgIyBGZXRjaGluZyB0aGUgZGVmYXVsdCB1cmwgZm9yIHNlcnZl ciBncm91cCBub2RlCi0gICAgICAgICgnQ2hlY2sgU2VydmVyIEdyb3VwIE5v ZGUnLCBkaWN0KHVybD0nL2Jyb3dzZXIvc2VydmVyLWdyb3VwL29iai8nKSkK LSAgICBdCi0KLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGF2YWlsYWJsZSBzZXJ2ZXIgZ3Jv dXBzLiIiIgotCi0gICAgICAgIGkgPSBjb25maWdfZGF0YVsndGVzdF9zZXJ2 ZXJfZ3JvdXAnXQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIu Z2V0KHNlbGYudXJsICsgc3RyKGkpLCBjb250ZW50X3R5cGU9J2h0bWwvanNv bicpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5zdGF0dXNf Y29kZSwgMjAwKQotICAgICAgICByZXNwZGF0YSA9IGpzb24ubG9hZHMocmVz cG9uc2UuZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BkYXRh WydpZCddLCBpKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3Rlc3RzL3Rlc3Rfc2dfZ2V0LnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Rlc3RzL3Rlc3Rfc2dfZ2V0LnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YmJlOTYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvdGVzdHMvdGVzdF9zZ19nZXQucHkKQEAgLTAsMCArMSw0OCBA QAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CitpbXBvcnQganNvbgorCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0 IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbi5jb25maWcg aW1wb3J0IGNvbmZpZ19kYXRhCisKKworY2xhc3MgU2dOb2RlVGVzdENhc2Uo QmFzZVRlc3RHZW5lcmF0b3IpOgorICAgICIiIgorICAgICBUaGlzIGNsYXNz IHdpbGwgY2hlY2sgYXZhaWxhYmxlIHNlcnZlciBncm91cHMgaW4gcGdBZG1p bi4KKyAgICAiIiIKKworICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBG ZXRjaGluZyB0aGUgZGVmYXVsdCB1cmwgZm9yIHNlcnZlciBncm91cCBub2Rl CisgICAgICAgICgnQ2hlY2sgU2VydmVyIEdyb3VwIE5vZGUnLCBkaWN0KHVy bD0nL2Jyb3dzZXIvc2VydmVyLWdyb3VwL29iai8nKSkKKyAgICBdCisKKyAg ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIGxvZ2luIHRoZSB0ZXN0IGFjY291bnQgYmVmb3JlIHJ1bm5p bmcgdGhlIGxvZ291dAorICAgICAgICB0ZXN0IGNhc2UKKyAgICAgICAgIiIi CisKKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQoc2VsZi50 ZXN0ZXIpCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGF2YWlsYWJsZSBzZXJ2ZXIgZ3Jv dXBzLiIiIgorCisgICAgICAgIHNlcnZlcl9ncm91cF9pZCA9IGNvbmZpZ19k YXRhWyd0ZXN0X3NlcnZlcl9ncm91cCddCisgICAgICAgIHJlc3BvbnNlID0g c2VsZi50ZXN0ZXIuZ2V0KHNlbGYudXJsICsgc3RyKHNlcnZlcl9ncm91cF9p ZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl bnRfdHlwZT0naHRtbC9qc29uJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCisgICAgICAgIHJlc3BvbnNl X2RhdGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCd1dGY4 JykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZV9kYXRhWydp ZCddLCBzZXJ2ZXJfZ3JvdXBfaWQpCisKKyAgICBkZWYgdGVhckRvd24oc2Vs Zik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0 IGFjY291bnQgIiIiCisKKyAgICAgICAgdXRpbHMubG9nb3V0X3Rlc3Rlcl9h Y2NvdW50KHNlbGYudGVzdGVyKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvdGVzdHMvX19pbml0X18ucHkKaW5kZXggMjM4MWVmZC4uM2ZhYjZmZSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy9fX2luaXRf Xy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL19faW5pdF9f LnB5CkBAIC0xMiw0ICsxMiw0IEBAIGZyb20gcGdhZG1pbi51dGlscy5yb3V0 ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKIAogY2xhc3MgQnJvd3Nlckdl bmVyYXRlVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIGRlZiBy dW5UZXN0KHNlbGYpOgotICAgICAgICBwcmludCAoIkluIEJyb3dzZXJHZW5l cmF0ZVRlc3RDYXNlLi4uIikKKyAgICAgICAgcmV0dXJuClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weSBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9jaGFuZ2VfcGFzc3dvcmQucHkKaW5k ZXggZGVkYjdkOS4uNjA1YWEwZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v YnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3b3Jk LnB5CkBAIC05LDE5ICs5LDE4IEBACiAKIGltcG9ydCB1dWlkCiAKLWZyb20g cGdhZG1pbi5icm93c2VyLnRlc3RzLnRlc3RfbG9naW4gaW1wb3J0IExvZ2lu VGVzdENhc2UKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKIGZyb20gcmVncmVzc2lvbi5jb25maWcgaW1wb3J0 IGNvbmZpZ19kYXRhCitmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRp bHMgYXMgdXRpbHMKIAogCi1jbGFzcyBDaGFuZ2VQYXNzd29yZFRlc3RDYXNl KExvZ2luVGVzdENhc2UpOgorY2xhc3MgQ2hhbmdlUGFzc3dvcmRUZXN0Q2Fz ZShCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgIiIiCiAgICAgVGhpcyBjbGFz cyB2YWxpZGF0ZXMgdGhlIGNoYW5nZSBwYXNzd29yZCBmdW5jdGlvbmFsaXR5 CiAgICAgYnkgZGVmaW5pbmcgY2hhbmdlIHBhc3N3b3JkIHNjZW5hcmlvczsg d2hlcmUgZGljdCBvZgogICAgIHBhcmFtZXRlcnMgZGVzY3JpYmVzIHRoZSBz Y2VuYXJpbyBhcHBlbmRlZCBieSB0ZXN0IG5hbWUuCiAgICAgIiIiCiAKLSAg ICBwcmlvcml0eSA9IDIKLQogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAg IyBUaGlzIHRlc3RjYXNlIHZhbGlkYXRlcyBpbnZhbGlkIGNvbmZpcm1hdGlv biBwYXNzd29yZAogICAgICAgICAoJ1Rlc3RDYXNlIGZvciBWYWxpZGF0aW5n IEluY29ycmVjdF9OZXdfUGFzc3dvcmQnLCBkaWN0KApAQCAtNDgsOCArNDcs NyBAQCBjbGFzcyBDaGFuZ2VQYXNzd29yZFRlc3RDYXNlKExvZ2luVGVzdENh c2UpOgogICAgICAgICAgICAgbmV3X3Bhc3N3b3JkPScnLCBuZXdfcGFzc3dv cmRfY29uZmlybT0nJywKICAgICAgICAgICAgIHJlc3BkYXRhPSdQYXNzd29y ZCBub3QgcHJvdmlkZWQnKSksCiAKLSAgICAgICAgIyBUaGlzIHRlc3RjYXNl IHZhbGlkYXRlcyBpZiBjdXJyZW50IGVudGVyZWQgcGFzc3dvcmQKLSAgICAg ICAgIyBpcyBpbmNvcnJlY3QKKyAgICAgICAgIyBUaGlzIHRlc3RjYXNlIHZh bGlkYXRlcyBpZiBjdXJyZW50IGVudGVyZWQgcGFzc3dvcmQgaXMgaW5jb3Jy ZWN0CiAgICAgICAgICgnVGVzdENhc2UgZm9yIFZhbGlkYXRpbmcgSW5jb3Jy ZWN0X0N1cnJlbnRfUGFzc3dvcmQnLCBkaWN0KAogICAgICAgICAgICAgcGFz c3dvcmQ9c3RyKHV1aWQudXVpZDQoKSlbNDo4XSwKICAgICAgICAgICAgIG5l d19wYXNzd29yZD0oY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRl bnRpYWxzJ10KQEAgLTcwLDYgKzY4LDcgQEAgY2xhc3MgQ2hhbmdlUGFzc3dv cmRUZXN0Q2FzZShMb2dpblRlc3RDYXNlKToKICAgICAgICAgICAgICAgICBb J3Rlc3RfbmV3X3Bhc3N3b3JkJ10pLAogICAgICAgICAgICAgcmVzcGRhdGE9 J1lvdSBzdWNjZXNzZnVsbHkgY2hhbmdlZCB5b3VyIHBhc3N3b3JkLicpKSwK ICAgICAgICAgKCdSZWFzc2lnbmluZ19QYXNzd29yZCcsIGRpY3QoCisgICAg ICAgICAgICB0ZXN0X2Nhc2U9J3JlYXNzaWduaW5nX3Bhc3N3b3JkJywKICAg ICAgICAgICAgIHBhc3N3b3JkPShjb25maWdfZGF0YVsncGdBZG1pbjRfbG9n aW5fY3JlZGVudGlhbHMnXQogICAgICAgICAgICAgICAgICAgICAgIFsndGVz dF9uZXdfcGFzc3dvcmQnXSksCiAgICAgICAgICAgICBuZXdfcGFzc3dvcmQ9 KGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddCkBA IC04MSwxNCArODAsNDQgQEAgY2xhc3MgQ2hhbmdlUGFzc3dvcmRUZXN0Q2Fz ZShMb2dpblRlc3RDYXNlKToKIAogICAgIF0KIAorICAgIGRlZiBzZXRVcChz ZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gbG9n aW4gdGhlIHRlc3QgYWNjb3VudCBiZWZvcmUgcnVubmluZyB0aGUgbG9nb3V0 CisgICAgICAgIHRlc3QgY2FzZQorICAgICAgICAiIiIKKworICAgICAgICB1 dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChzZWxmLnRlc3RlcikKKwogICAg IGRlZiBydW5UZXN0KHNlbGYpOgogICAgICAgICAiIiJUaGlzIGZ1bmN0aW9u IHdpbGwgY2hlY2sgY2hhbmdlIHBhc3N3b3JkIGZ1bmN0aW9uYWxpdHkuIiIi CiAKKyAgICAgICAgIyBDaGVjayBmb3IgJ3Rlc3RfY2FzZScgZXhpc3RzIGlu IHNlbGYgRm9yIHJlYXNzaWduaW5nIHRoZSBwYXNzd29yZC4KKyAgICAgICAg IyBQYXNzd29yZCBnZXRzIGNoYW5nZSBpbiBjaGFuZ2UgcGFzc3dvcmQgdGVz dCBjYXNlLgorICAgICAgICBpZiAndGVzdF9jYXNlJyBpbiBkaXIoc2VsZik6 CisgICAgICAgICAgICBlbWFpbCA9IFwKKyAgICAgICAgICAgICAgICBjb25m aWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXVsKKyAgICAg ICAgICAgICAgICAgICAgJ3Rlc3RfbG9naW5fdXNlcm5hbWUnXQorICAgICAg ICAgICAgcGFzc3dvcmQgPSBcCisgICAgICAgICAgICAgICAgY29uZmlnX2Rh dGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ11bCisgICAgICAgICAg ICAgICAgICAgICd0ZXN0X25ld19wYXNzd29yZCddCisgICAgICAgICAgICBy ZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoJy9sb2dpbicsIGRhdGE9ZGlj dCgKKyAgICAgICAgICAgICAgICBlbWFpbD1lbWFpbCwgcGFzc3dvcmQ9cGFz c3dvcmQpLCBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisKICAgICAgICAgcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5nZXQoJy9jaGFuZ2UnLCBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BnQWRtaW4g NCBQYXNzd29yZCBDaGFuZ2UnLCByZXNwb25zZS5kYXRhKQorICAgICAgICBz ZWxmLmFzc2VydEluKCdwZ0FkbWluIDQgUGFzc3dvcmQgQ2hhbmdlJywgcmVz cG9uc2UuZGF0YS5kZWNvZGUoKSkKKwogICAgICAgICByZXNwb25zZSA9IHNl bGYudGVzdGVyLnBvc3QoJy9jaGFuZ2UnLCBkYXRhPWRpY3QoCiAgICAgICAg ICAgICBwYXNzd29yZD1zZWxmLnBhc3N3b3JkLAogICAgICAgICAgICAgbmV3 X3Bhc3N3b3JkPXNlbGYubmV3X3Bhc3N3b3JkLAogICAgICAgICAgICAgbmV3 X3Bhc3N3b3JkX2NvbmZpcm09c2VsZi5uZXdfcGFzc3dvcmRfY29uZmlybSks CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsb3df cmVkaXJlY3RzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5y ZXNwZGF0YSwgcmVzcG9uc2UuZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRJ bihzZWxmLnJlc3BkYXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgn KSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAor CisgICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisKKyAgICAg ICAgdXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xv Z2luLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xvZ2lu LnB5CmluZGV4IDdjMmI3OTYuLjg4NTY3MDAgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dpbi5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9naW4ucHkKQEAgLTgsOSAr OCw5IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBpbXBv cnQgdXVpZAotCiBmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJh c2VUZXN0R2VuZXJhdG9yCiBmcm9tIHJlZ3Jlc3Npb24uY29uZmlnIGltcG9y dCBjb25maWdfZGF0YQorZnJvbSByZWdyZXNzaW9uIGltcG9ydCB0ZXN0X3V0 aWxzIGFzIHV0aWxzCiAKIAogY2xhc3MgTG9naW5UZXN0Q2FzZShCYXNlVGVz dEdlbmVyYXRvcik6CkBAIC0yMCw4ICsyMCw2IEBAIGNsYXNzIExvZ2luVGVz dENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIGRlc2NyaWJlIHRoZSBz Y2VuYXJpbyBhcHBlbmRlZCBieSB0ZXN0IG5hbWUuCiAgICAgIiIiCiAKLSAg ICBwcmlvcml0eSA9IDAKLQogICAgIHNjZW5hcmlvcyA9IFsKICAgICAgICAg IyBUaGlzIHRlc3QgY2FzZSB2YWxpZGF0ZXMgdGhlIGludmFsaWQvaW5jb3Jy ZWN0IHBhc3N3b3JkCiAgICAgICAgICgnVGVzdENhc2UgZm9yIENoZWNraW5n IEludmFsaWRfUGFzc3dvcmQnLCBkaWN0KApAQCAtNjcsMTMgKzY1LDI4IEBA IGNsYXNzIExvZ2luVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAg ICAgICAgICAgICAgICAgIFsndGVzdF9sb2dpbl91c2VybmFtZSddKSwKICAg ICAgICAgICAgIHBhc3N3b3JkPShjb25maWdfZGF0YVsncGdBZG1pbjRfbG9n aW5fY3JlZGVudGlhbHMnXQogICAgICAgICAgICAgICAgICAgICAgIFsndGVz dF9sb2dpbl9wYXNzd29yZCddKSwKLSAgICAgICAgICAgIHJlc3BkYXRhPSdZ b3UgYXJlIGN1cnJlbnRseSBydW5uaW5nIHZlcnNpb24nKSkKKyAgICAgICAg ICAgIHJlc3BkYXRhPSdHcmF2YXRhciBpbWFnZSBmb3IgJXMnICUKKyAgICAg ICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dpbl9j cmVkZW50aWFscyddCisgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfbG9n aW5fdXNlcm5hbWUnXSkpCiAgICAgXQogCisgICAgZGVmIHNldFVwKHNlbGYp OgorICAgICAgICBwYXNzCisKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAg ICAgICAgIiIiVGhpcyBmdW5jdGlvbiBjaGVja3MgbG9naW4gZnVuY3Rpb25h bGl0eS4iIiIKIAogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBv c3QoJy9sb2dpbicsIGRhdGE9ZGljdCgKICAgICAgICAgICAgIGVtYWlsPXNl bGYuZW1haWwsIHBhc3N3b3JkPXNlbGYucGFzc3dvcmQpLAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0cz1U cnVlKQotICAgICAgICBzZWxmLmFzc2VydEluKHNlbGYucmVzcGRhdGEsIHJl c3BvbnNlLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZXNw ZGF0YSwgcmVzcG9uc2UuZGF0YS5kZWNvZGUoJ3V0ZjgnKSkKKworICAgIGRl ZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMg ZnVuY3Rpb24gZGVsZXRlcyB0aGUgJ3BhcmVudF9pZC5wa2wnIGZpbGUgd2hp Y2ggaXMgY3JlYXRlZCBpbgorICAgICAgICBzZXR1cCgpIGZ1bmN0aW9uLiBB bHNvIHRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAorCisg ICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisKKyAgICAgICAg dXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xvZ291 dC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sb2dvdXQu cHkKaW5kZXggODk3MWU3Mi4uYzJjY2Y5NCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xvZ291dC5weQorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbG9nb3V0LnB5CkBAIC03LDM4 ICs3LDMzIEBACiAjCiAjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAKLWZyb20gcGdhZG1pbi5icm93c2VyLnRlc3RzLnRlc3RfbG9naW4gaW1w b3J0IExvZ2luVGVzdENhc2UKLWZyb20gcmVncmVzc2lvbi5jb25maWcgaW1w b3J0IGNvbmZpZ19kYXRhCiAKK2Zyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBp bXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcmVncmVzc2lvbiBpbXBv cnQgdGVzdF91dGlscyBhcyB1dGlscwogCi1jbGFzcyBMb2dvdXRUZXN0KExv Z2luVGVzdENhc2UpOgorCitjbGFzcyBMb2dvdXRUZXN0KEJhc2VUZXN0R2Vu ZXJhdG9yKToKICAgICAiIiIKICAgICBUaGlzIGNsYXNzIHZlcmlmaWVzIHRo ZSBsb2dvdXQgZnVuY3Rpb25hbGl0eTsgcHJvdmlkZWQgdGhlIHVzZXIgaXMg YWxyZWFkeQogICAgIGxvZ2dlZC1pbi4gRGljdGlvbmFyeSBwYXJhbWV0ZXJz IGRlZmluZSB0aGUgc2NlbmFyaW8gYXBwZW5kZWQgYnkgdGVzdAogICAgIG5h bWUuCiAgICAgIiIiCiAKLSAgICBwcmlvcml0eSA9IDMKLQogICAgIHNjZW5h cmlvcyA9IFsKICAgICAgICAgIyBUaGlzIHRlc3QgY2FzZSB2YWxpZGF0ZSB0 aGUgbG9nb3V0IHBhZ2UKICAgICAgICAgKCdMb2dnaW5nIE91dCcsIGRpY3Qo cmVzcGRhdGE9J1JlZGlyZWN0aW5nLi4uJykpCiAgICAgXQogCisgICAgZGVm IHNldFVwKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiBsb2dpbiB0aGUgdGVzdCBhY2NvdW50IGJlZm9yZSBydW5uaW5nIHRo ZSBsb2dvdXQKKyAgICAgICAgdGVzdCBjYXNlCisgICAgICAgICIiIgorCisg ICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVy KQorCiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6CiAgICAgICAgICIiIlRoaXMg ZnVuY3Rpb24gY2hlY2tzIHRoZSBsb2dvdXQgZnVuY3Rpb25hbGl0eS4iIiIK IAogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdldCgnL2xvZ291 dCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZXNwZGF0YSwgcmVz cG9uc2UuZGF0YSkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAg ICAgIiIiCi0gICAgICAgIERlZmluaW5nIHRlYXIgZG93biBjbGFzcywgd2hp Y2ggd2lsbCBydW4gYWZ0ZXIgZWFjaCB0ZXN0IG1ldGhvZCBleGVjdXRlLgot ICAgICAgICBSZS1sb2dnaW5nIGluIGFzIGZ1cnRoZXIgbW9kdWxlcyByZXF1 aXJlIGxvZ2luLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLnRlc3Rl ci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoCi0gICAgICAgICAgICBlbWFp bD0oY29uZmlnX2RhdGFbJ3BnQWRtaW40X2xvZ2luX2NyZWRlbnRpYWxzJ10K LSAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfbG9naW5fdXNlcm5hbWUnXSks Ci0gICAgICAgICAgICBwYXNzd29yZD0oY29uZmlnX2RhdGFbJ3BnQWRtaW40 X2xvZ2luX2NyZWRlbnRpYWxzJ10KLSAgICAgICAgICAgICAgICAgICAgICBb J3Rlc3RfbG9naW5fcGFzc3dvcmQnXSkpLCBmb2xsb3dfcmVkaXJlY3RzPVRy dWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZXNwZGF0YSwgcmVz cG9uc2UuZGF0YS5kZWNvZGUoJ3V0ZjgnKSkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9yZXNldF9wYXNzd29yZC5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9yZXNldF9wYXNzd29y ZC5weQppbmRleCAwMzBiMTgyLi45NjQwNGRmIDEwMDY0NAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfcmVzZXRfcGFzc3dvcmQucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X3Jlc2V0X3Bh c3N3b3JkLnB5CkBAIC0xMSw2ICsxMSw3IEBAIGltcG9ydCB1dWlkCiAKIGZy b20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0 b3IKIGZyb20gcmVncmVzc2lvbi5jb25maWcgaW1wb3J0IGNvbmZpZ19kYXRh Citmcm9tIHJlZ3Jlc3Npb24gaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMK IAogCiBjbGFzcyBSZXNldFBhc3N3b3JkVGVzdENhc2UoQmFzZVRlc3RHZW5l cmF0b3IpOgpAQCAtMTksNyArMjAsNiBAQCBjbGFzcyBSZXNldFBhc3N3b3Jk VGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgIHNjZW5hcmlvczsg RWFjaCBkaWN0IHBhcmFtZXRlciBkZXNjcmliZSBhIHNjZW5hcmlvIGFwcGVu ZGVkIGJ5CiAgICAgdGVzdCBuYW1lLgogICAgICIiIgotICAgIHByaW9yaXR5 ID0gMQogCiAgICAgc2NlbmFyaW9zID0gWwogICAgICAgICAjIFRoaXMgdGVz dCBjYXNlIHZhbGlkYXRlcyB0aGUgZW1wdHkgZW1haWwgZmllbGQKQEAgLTM3 LDEyICszNywyOSBAQCBjbGFzcyBSZXNldFBhc3N3b3JkVGVzdENhc2UoQmFz ZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgWyd0ZXN0X2xvZ2luX3Vz ZXJuYW1lJ10sIHJlc3BkYXRhPSdwZ0FkbWluIDQnKSkKICAgICBdCiAKKyAg ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlz IGZ1bmN0aW9uIGxvZ2luIHRoZSB0ZXN0IGFjY291bnQgYmVmb3JlIHJ1bm5p bmcgdGhlIGxvZ291dAorICAgICAgICB0ZXN0IGNhc2UKKyAgICAgICAgIiIi CisKKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQoc2VsZi50 ZXN0ZXIpCisKICAgICBkZWYgcnVuVGVzdChzZWxmKToKICAgICAgICAgIiIi VGhpcyBmdW5jdGlvbiBjaGVja3MgcmVzZXQgcGFzc3dvcmQgZnVuY3Rpb25h bGl0eS4iIiIKIAogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmdl dCgnL3Jlc2V0JykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignUmVjb3ZlciBw Z0FkbWluIDQgUGFzc3dvcmQnLCByZXNwb25zZS5kYXRhKQorICAgICAgICBz ZWxmLmFzc2VydEluKCdSZWNvdmVyIHBnQWRtaW4gNCBQYXNzd29yZCcsIHJl c3BvbnNlLmRhdGEuZGVjb2RlKCkpCiAgICAgICAgIHJlc3BvbnNlID0gc2Vs Zi50ZXN0ZXIucG9zdCgKICAgICAgICAgICAgICcvcmVzZXQnLCBkYXRhPWRp Y3QoZW1haWw9c2VsZi5lbWFpbCksCiAgICAgICAgICAgICBmb2xsb3dfcmVk aXJlY3RzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VsZi5yZXNw ZGF0YSwgcmVzcG9uc2UuZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihz ZWxmLnJlc3BkYXRhLCByZXNwb25zZS5kYXRhLmRlY29kZSgndXRmLTgnKSkK KworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgIiIiCisgICAg ICAgIFRoaXMgZnVuY3Rpb24gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAorCisg ICAgICAgIDpyZXR1cm46IE5vbmUKKyAgICAgICAgIiIiCisKKyAgICAgICAg dXRpbHMubG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHNlbGYudGVzdGVyKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdXRpbHMvcm91dGUucHkgYi93ZWIvcGdh ZG1pbi91dGlscy9yb3V0ZS5weQppbmRleCBmYjlkZTY5Li5hMmNkMWViIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5weQorKysgYi93 ZWIvcGdhZG1pbi91dGlscy9yb3V0ZS5weQpAQCAtNTIsOCArNTIsMTAgQEAg Y2xhc3MgVGVzdHNHZW5lcmF0b3JSZWdpc3RyeShBQkNNZXRhKToKICAgICAg ICAgZnJvbSB3ZXJremV1Zy51dGlscyBpbXBvcnQgZmluZF9tb2R1bGVzCiAK ICAgICAgICAgZm9yIG1vZHVsZV9uYW1lIGluIGZpbmRfbW9kdWxlcyhwa2cs IEZhbHNlLCBUcnVlKToKLSAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF9t b2R1bGUobW9kdWxlX25hbWUpCi0KKyAgICAgICAgICAgIHRyeToKKyAgICAg ICAgICAgICAgICBtb2R1bGUgPSBpbXBvcnRfbW9kdWxlKG1vZHVsZV9uYW1l KQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAg ICAgICAgIHBhc3MKIAogaW1wb3J0IHNpeAogCmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9SRUFETUUgYi93ZWIvcmVncmVzc2lvbi9SRUFETUUKaW5k ZXggZTAwMDNlNC4uNmE5MTkxMSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Np b24vUkVBRE1FCisrKyBiL3dlYi9yZWdyZXNzaW9uL1JFQURNRQpAQCAtNDAs MjkgKzQwLDQwIEBAIEdlbmVyYWwgSW5mb3JtYXRpb24KICAgICAzLiB0ZXN0 X3NlcnZlcl9nZXQucHkKICAgICA0LiB0ZXN0X3NlcnZlcl91cGRhdGUucHkK IAotMikgVGhlIHBnQWRtaW40IHNvdXJjZSB0cmVlIGluY2x1ZGVzIGEgZmls ZSB0ZW1wbGF0ZSBmb3IgdGhlIHNlcnZlciBjb25maWd1cmF0aW9uCi0gICBu YW1lZCDigJh0ZXN0X2NvbmZpZy5qc29uLmluJyBpbiB0aGUg4oCYcGdBZG1p bjQvd2ViL3JlZ3Jlc3Npb27igJkgZGlyZWN0b3J5LiBBZnRlcgotICAgY29t cGxldGluZyB0aGUgcGdBZG1pbjQgY29uZmlndXJhdGlvbiwgeW91IG11c3Qg bWFrZSBhIHdvcmtpbmcgY29weSBvZiB0aGUKLSAgIHRlbXBsYXRlIGNhbGxl ZCB0ZXN0X2NvbmZpZy5qc29uIGJlZm9yZSBtb2RpZnlpbmcgdGhlIGZpbGUg Y29udGVudHMuCisyKSBUaGUgcGdBZG1pbjQgc291cmNlIHRyZWUgaW5jbHVk ZXMgMiBkaWZmZXJlbnQgY29uZmlndXJhdGlvbiBmaWxlIHRlbXBsYXRlcy4K KyAgIE9uZSBmaWxlIHRlbXBsYXRlIGZvciB0aGUgc2VydmVyIGNvbmZpZ3Vy YXRpb24KKyAgIG5hbWVkIOKAmHRlc3RfY29uZmlnLmpzb24uaW4nIGFuZCBh bm90aGVyIGZvciB0ZXN0IGNvbmZpZ3VyYXRpb24gbmFtZWQKKyAgICd0ZXN0 X2FkdmFuY2VfY29uZmlnLmpzb24uaW4nIGluIHRoZSDigJhwZ0FkbWluNC93 ZWIvcmVncmVzc2lvbuKAmSBkaXJlY3RvcnkuCisgICBBZnRlciBjb21wbGV0 aW5nIHRoZSBwZ0FkbWluNCBjb25maWd1cmF0aW9uLCB5b3UgbXVzdCBtYWtl IGEgd29ya2luZyBjb3B5IG9mCisgICB0aGUgdGVtcGxhdGVzIGNhbGxlZCB0 ZXN0X2NvbmZpZy5qc29uIGFuZCB0ZXN0X2FkdmFuY2VfY29uZmlnLmpzb24K KyAgIGJlZm9yZSBtb2RpZnlpbmcgdGhlIGZpbGUgY29udGVudHMuCiAKLQky YSkgVGhlIGZvbGxvd2luZyBjb21tYW5kIGNvcGllcyB0aGUgdGVzdF9jb25m aWcuanNvbi5pbiBmaWxlLCBjcmVhdGluZyBhCi0JICAgIGNvbmZpZ3VyYXRp b24gZmlsZSBuYW1lZCB0ZXN0X2NvbmZpZy5qc29uCisgICAgMmEpIFRoZSBm b2xsb3dpbmcgY29tbWFuZCBjb3BpZXMgdGhlIHRlc3RfY29uZmlnLmpzb24u aW4gZmlsZSwgY3JlYXRpbmcgYQorICAgICAgICBjb25maWd1cmF0aW9uIGZp bGUgbmFtZWQgdGVzdF9jb25maWcuanNvbiAoc2FtZSB3YXkgdXNlciBjYW4g Y29weQorICAgICAgICB0ZXN0X2FkdmFuY2VfY29uZmlnLmpzb24uaW4gZmls ZSBpbnRvIHRlc3RfYWR2YW5jZV9jb25maWcuanNvbikKIAotICAgICAgICAg ICAgIyBjcCBwZ2FkbWluNC93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5q c29uLmluIFwKLSAgICAgICAgICAgICAgcGdhZG1pbjQvd2ViL3JlZ3Jlc3Np b24vdGVzdF9jb25maWcuanNvbgorICAgICAgICAgICAgICMgY3AgcGdhZG1p bjQvd2ViL3JlZ3Jlc3Npb24vdGVzdF9jb25maWcuanNvbi5pbiBcCisgICAg ICAgICAgICAgICBwZ2FkbWluNC93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZp Zy5qc29uCiAKLQkyYikgQWZ0ZXIgY3JlYXRpbmcgdGhlIHNlcnZlciBjb25m aWd1cmF0aW9uIGZpbGUsIGFkZCAob3IgbW9kaWZ5KQotCSAgICBwYXJhbWV0 ZXIgdmFsdWVzIGFzIHBlciByZXF1aXJlbWVudHMuIFRoZSBjb25maWd1cmF0 aW9uCi0JICAgIGZpbGVzIGFyZSBvd25lZCBieSByb290L3VzZXIuIFRoZSBw Z0FkbWluNCByZWdyZXNzaW9uIGZyYW1ld29yayBleHBlY3RzCi0JICAgIHRv IGZpbmQgdGhlIGZpbGVzIGluIHRoZSAgZGlyZWN0b3J5ICcvPGluc3RhbGxh dGlvbiBkaXI+L3dlYi9yZWdyZXNzaW9uLycuCi0JICAgIElmIHlvdSBtb3Zl IHRoZSBmaWxlIHRvIGFub3RoZXIgbG9jYXRpb24sIHlvdSBtdXN0IGNyZWF0 ZSBhIHN5bWJvbGljIGxpbmsKLQkgICAgdGhhdCBzcGVjaWZpZXMgdGhlIG5l dyBsb2NhdGlvbi4KKyAgICAyYikgQWZ0ZXIgY3JlYXRpbmcgdGhlIHNlcnZl ciBhbmQgdGVzdCBjb25maWd1cmF0aW9uIGZpbGUsIGFkZCAob3IgbW9kaWZ5 KQorICAgICAgICBwYXJhbWV0ZXIgdmFsdWVzIGFzIHBlciByZXF1aXJlbWVu dHMuIFRoZSBjb25maWd1cmF0aW9uCisgICAgICAgIGZpbGVzIGFyZSBvd25l ZCBieSByb290L3VzZXIuIFRoZSBwZ0FkbWluNCByZWdyZXNzaW9uIGZyYW1l d29yayBleHBlY3RzCisgICAgICAgIHRvIGZpbmQgdGhlIGZpbGVzIGluIHRo ZSAgZGlyZWN0b3J5ICcvPGluc3RhbGxhdGlvbiBkaXI+L3dlYi9yZWdyZXNz aW9uLycuCisgICAgICAgIElmIHlvdSBtb3ZlIHRoZSBmaWxlIHRvIGFub3Ro ZXIgbG9jYXRpb24sIHlvdSBtdXN0IGNyZWF0ZSBhIHN5bWJvbGljCisgICAg ICAgIGxpbmsgdGhhdCBzcGVjaWZpZXMgdGhlIG5ldyBsb2NhdGlvbi4KIAot CTJjKSBTcGVjaWZ5aW5nIFNlcnZlciBDb25maWd1cmF0aW9uIGZpbGU6Cisg ICAgMmMpIFNwZWNpZnlpbmcgU2VydmVyIENvbmZpZ3VyYXRpb24gZmlsZToK KworICAgICAgICBzZXJ2ZXIgZGV0YWlscyBhbmQgY29ubmVjdGlvbiBwcm9w ZXJ0aWVzIGFzIHBlciB0aGVpciBsb2NhbCBzZXR1cC4gVGhlCisgICAgICAg IHRlc3RfY29uZmlnIGZpbGUgaXMgaW4ganNvbiBmb3JtYXQgYW5kIHByb3Bl cnR5IHZhbHVlcyBhcmUKKyAgICAgICAgY2FzZS1zZW5zaXRpdmUuCisKKyAg ICAyZCkgU3BlY2lmeWluZyB0aGUgVGVzdCBDb25maWd1cmF0aW9uIGZpbGU6 CisKKyAgICAgICAgVGhlIHVzZXIgY2FuIGFkZC9jaGFuZ2UgdGVzdCBkYXRh IGFzIHBlciB0aGVpciBuZWVkLiBUaGUKKyAgICAgICAgdGVzdF9hZHZhbmNl X2NvbmZpZyBmaWxlIGlzIGluIGpzb24gZm9ybWF0IGFuZCBwcm9wZXJ0eSB2 YWx1ZXMgYXJlCisgICAgICAgIGNhc2Utc2Vuc2l0aXZlLgogCi0JICAgIFRo ZSB1c2VyIGNhbiB1c2UgdGhlIHBhcmFtZXRlcnMgaW4gdGhlIGNvbmZpZ3Vy YXRpb24gZmlsZSB0byBzcGVjaWZ5IHRoZQotCSAgICBzZXJ2ZXIgZGV0YWls cyBhbmQgY29ubmVjdGlvbiBwcm9wZXJ0aWVzIGFzIHBlciB0aGVpciBsb2Nh bCBzZXR1cC4gVGhlCi0JICAgIHRlc3RfY29uZmlnIGZpbGUgaXMgaW4ganNv biBmb3JtYXQgYW5kIHByb3BlcnR5IHZhbHVlcyBhcmUgY2FzZS1zZW5zaXRp dmUuCiAKIFRlc3QgRGF0YSBEZXRhaWxzCiAtLS0tLS0tLS0tLS0tLS0tLQpA QCAtOTIsNSArMTAzLDE2IEBAIEV4ZWN1dGlvbjoKICAgYW5kIHJlZ2lzdGVy ZWQgYXV0b21hdGljYWxseSBieSBpdHMgbW9kdWxlIG5hbWUgaW4KICAgJ3Bn YWRtaW40L3dlYi9wZ2FkbWluL3V0aWxzL3Rlc3QucHknIGZpbGUuCiAKLS0g RXhlY3V0ZSB0ZXN0IGZyYW1ld29yayBydW4gJ3JlZ3Jlc3Npb24vdGVzdHN1 aXRlLnB5JyBmaWxlLgorLSBBcyB0aGUgdGVzdCBmcmFtZXdvcmsgaXMgbW9k dWxhciBhbmQgZHluYW1pY2FsbHkgbG9jYXRlcyB0aGUgdGVzdHMKKyAgcGFj a2FnZSwgV2UgY2FuIG5vdyBleGVjdXRlcyB0ZXN0IGZyYW1ld29yayBub2Rl IHdpc2UKKworLSBFeGVjdXRlIHRlc3QgZnJhbWV3b3JrIGZvciBhbGwgbm9k ZXMKKyAgICAgcnVuICdyZWdyZXNzaW9uL3Rlc3RzdWl0ZS5weSAtLXBrZyBh bGwnCisKKy0gRXhlY3V0ZSB0ZXN0IGZyYW1ld29yayBmb3Igc2luZ2xlIG5v ZGUgYXQgYSB0aW1lCisKKyAgICAgRXhhbXBsZSAxKSBSdW4gdGVzdCBmcmFt ZXdvcmsgZm9yICdicm93c2VyJyBub2RlCisgICAgIHJ1biAncmVncmVzc2lv bi90ZXN0c3VpdGUucHkgLS1wa2cgYnJvd3NlcicKIAorICAgICBFeGFtcGxl IDIpIFJ1biB0ZXN0IGZyYW1ld29yayBmb3IgJ2RhdGFiYXNlJyBub2RlCisg ICAgIHJ1biAncmVncmVzc2lvbi90ZXN0c3VpdGUucHkgLS1wa2cgYnJvd3Nl ci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0YWJhc2VzJwpkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vY29uZmlnLnB5IGIvd2ViL3JlZ3Jlc3Npb24v Y29uZmlnLnB5CmluZGV4IGJlZjY1ZmIuLjU2NGQxYzIgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL2NvbmZpZy5weQorKysgYi93ZWIvcmVncmVzc2lv bi9jb25maWcucHkKQEAgLTEwLDcgKzEwLDEyIEBACiBpbXBvcnQganNvbgog aW1wb3J0IG9zCiAKLXJvb3QgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5y ZWFscGF0aChfX2ZpbGVfXykpCitmcm9tIHJlZ3Jlc3Npb24udGVzdHN1aXRl IGltcG9ydCBDVVJSRU5UX1BBVEgKIAotd2l0aCBvcGVuKHJvb3QgKyAnL3Rl c3RfY29uZmlnLmpzb24nKSBhcyBkYXRhX2ZpbGU6Cit3aXRoIG9wZW4oQ1VS UkVOVF9QQVRIICsgJy90ZXN0X2NvbmZpZy5qc29uJykgYXMgZGF0YV9maWxl OgogICAgIGNvbmZpZ19kYXRhID0ganNvbi5sb2FkKGRhdGFfZmlsZSkKKwor d2l0aCBvcGVuKENVUlJFTlRfUEFUSCArICcvdGVzdF9hZHZhbmNlX2NvbmZp Zy5qc29uJykgYXMgZGF0YV9maWxlOgorICAgIGFkdmFuY2VfY29uZmlnX2Rh dGEgPSBqc29uLmxvYWQoZGF0YV9maWxlKQorCitwaWNrbGVfcGF0aCA9IG9z LnBhdGguam9pbihDVVJSRU5UX1BBVEgsICdwYXJlbnRfaWQucGtsJykKZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfYWR2YW5jZV9jb25maWcu anNvbi5pbiBiL3dlYi9yZWdyZXNzaW9uL3Rlc3RfYWR2YW5jZV9jb25maWcu anNvbi5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i Y2I4NjdjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vdGVz dF9hZHZhbmNlX2NvbmZpZy5qc29uLmluCkBAIC0wLDAgKzEsMTA1IEBACit7 CisgICJ0ZXN0X2FkZF9kYXRhYmFzZV9kYXRhIjogWworICAgeworICAgICJ0 ZXN0X3ByaXZpbGVnZXNfYWNsIjogWworICAgICAgeworICAgICAgICAiZ3Jh bnRlZSI6ICJwb3N0Z3JlcyIsCisgICAgICAgICJncmFudG9yIjogInBvc3Rn cmVzIiwKKyAgICAgICAgInByaXZpbGVnZXMiOiBbCisgICAgICAgICAgewor ICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjogIkMiLAorICAgICAgICAg ICAgInByaXZpbGVnZSI6IHRydWUsCisgICAgICAgICAgICAid2l0aF9ncmFu dCI6IHRydWUKKyAgICAgICAgICB9LAorICAgICAgICAgIHsKKyAgICAgICAg ICAgICJwcml2aWxlZ2VfdHlwZSI6ICJUIiwKKyAgICAgICAgICAgICJwcml2 aWxlZ2UiOiB0cnVlLAorICAgICAgICAgICAgIndpdGhfZ3JhbnQiOiBmYWxz ZQorICAgICAgICAgIH0KKyAgICAgICAgXQorICAgICAgfQorICAgIF0sCisg ICAgInRlc3RfY29ubl9saW1pdCI6IC0xLAorICAgICJ0ZXN0X293bmVyIjog InBvc3RncmVzIiwKKyAgICAidGVzdF9mdW5fYWNsIjogWworICAgICAgewor ICAgICAgICAiZ3JhbnRlZSI6ICJwb3N0Z3JlcyIsCisgICAgICAgICJncmFu dG9yIjogInBvc3RncmVzIiwKKyAgICAgICAgInByaXZpbGVnZXMiOiBbCisg ICAgICAgICAgeworICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjogIlgi LAorICAgICAgICAgICAgInByaXZpbGVnZSI6IHRydWUsCisgICAgICAgICAg ICAid2l0aF9ncmFudCI6IGZhbHNlCisgICAgICAgICAgfQorICAgICAgICBd CisgICAgICB9CisgICAgXSwKKyAgICAidGVzdF9zZXFfYWNsIjogWworICAg ICAgeworICAgICAgICAiZ3JhbnRlZSI6ICJwb3N0Z3JlcyIsCisgICAgICAg ICJncmFudG9yIjogInBvc3RncmVzIiwKKyAgICAgICAgInByaXZpbGVnZXMi OiBbCisgICAgICAgICAgeworICAgICAgICAgICAgInByaXZpbGVnZV90eXBl IjogInIiLAorICAgICAgICAgICAgInByaXZpbGVnZSI6IHRydWUsCisgICAg ICAgICAgICAid2l0aF9ncmFudCI6IGZhbHNlCisgICAgICAgICAgfSwKKyAg ICAgICAgICB7CisgICAgICAgICAgICAicHJpdmlsZWdlX3R5cGUiOiAidyIs CisgICAgICAgICAgICAicHJpdmlsZWdlIjogdHJ1ZSwKKyAgICAgICAgICAg ICJ3aXRoX2dyYW50IjogZmFsc2UKKyAgICAgICAgICB9LAorICAgICAgICAg IHsKKyAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6ICJVIiwKKyAgICAg ICAgICAgICJwcml2aWxlZ2UiOiB0cnVlLAorICAgICAgICAgICAgIndpdGhf Z3JhbnQiOiBmYWxzZQorICAgICAgICAgIH0KKyAgICAgICAgXQorICAgICAg fQorICAgIF0sCisgICAgInRlc3RfdGJsX2FjbCI6IFsKKyAgICAgIHsKKyAg ICAgICAgImdyYW50ZWUiOiAicG9zdGdyZXMiLAorICAgICAgICAiZ3JhbnRv ciI6ICJwb3N0Z3JlcyIsCisgICAgICAgICJwcml2aWxlZ2VzIjogWworICAg ICAgICAgIHsKKyAgICAgICAgICAgICJwcml2aWxlZ2VfdHlwZSI6ICJhIiwK KyAgICAgICAgICAgICJwcml2aWxlZ2UiOiB0cnVlLAorICAgICAgICAgICAg IndpdGhfZ3JhbnQiOiB0cnVlCisgICAgICAgICAgfSwKKyAgICAgICAgICB7 CisgICAgICAgICAgICAicHJpdmlsZWdlX3R5cGUiOiAiciIsCisgICAgICAg ICAgICAicHJpdmlsZWdlIjogdHJ1ZSwKKyAgICAgICAgICAgICJ3aXRoX2dy YW50IjogZmFsc2UKKyAgICAgICAgICB9CisgICAgICAgIF0KKyAgICAgIH0K KyAgICBdLAorICAgICJ0ZXN0X3R5cGVfYWNsIjogWworICAgICAgeworICAg ICAgICAiZ3JhbnRlZSI6ICJwb3N0Z3JlcyIsCisgICAgICAgICJncmFudG9y IjogInBvc3RncmVzIiwKKyAgICAgICAgInByaXZpbGVnZXMiOiBbCisgICAg ICAgICAgeworICAgICAgICAgICAgInByaXZpbGVnZV90eXBlIjogIlUiLAor ICAgICAgICAgICAgInByaXZpbGVnZSI6IHRydWUsCisgICAgICAgICAgICAi d2l0aF9ncmFudCI6IGZhbHNlCisgICAgICAgICAgfQorICAgICAgICBdCisg ICAgICB9CisgICAgXSwKKyAgICAidGVzdF9lbmNvZGluZyI6ICJVVEY4IiwK KyAgICAidGVzdF9uYW1lIjogInRlc3RfZGJfYXV0b21hdGlvbiIsCisgICAg InRlc3RfcHJpdmlsZWdlcyI6IFtdLAorICAgICJ0ZXN0X3NlY3VyaXRpZXMi OiBbXSwKKyAgICAidGVzdF92YXJpYWJsZXMiOiBbXQorICB9CisgXSwKKwor ICAidGVzdF9kYl91cGRhdGVfZGF0YSI6IFsKKyAgeworICAgICAgInRlc3Rf Y29tbWVudCI6ICJUaGlzIGlzIGRiIHVwZGF0ZSBjb21tZW50IgorICB9Cisg XQorCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vdGVzdF91dGlscy5weSBiL3dlYi9yZWdyZXNz aW9uL3Rlc3RfdXRpbHMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMTRkMTg2YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdy ZXNzaW9uL3Rlc3RfdXRpbHMucHkKQEAgLTAsMCArMSwzNzEgQEAKKyMgIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE2LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyAj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IG9zCitpbXBvcnQgcGlj a2xlCitpbXBvcnQganNvbgoraW1wb3J0IHV1aWQKKworZnJvbSByZWdyZXNz aW9uLmNvbmZpZyBpbXBvcnQgY29uZmlnX2RhdGEsIGFkdmFuY2VfY29uZmln X2RhdGEsIHBpY2tsZV9wYXRoCisKK1NFUlZFUl9VUkwgPSAnL2Jyb3dzZXIv c2VydmVyL29iai8nCitTRVJWRVJfQ09OTkVDVF9VUkwgPSAnYnJvd3Nlci9z ZXJ2ZXIvY29ubmVjdC8nCitEQVRBQkFTRV9DT05ORUNUX1VSTCA9ICcvYnJv d3Nlci9kYXRhYmFzZS9vYmovJworCisKK2RlZiBnZXRfaWRzKHVybD1waWNr bGVfcGF0aCk6CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiByZWFkIHRo ZSBwYXJlbnQgbm9kZSdzIGlkIGFuZCByZXR1cm4gaXQKKworICAgIDpwYXJh bSB1cmw6IGZpbGUgcGF0aCBmcm9tIHdoaWNoIGl0IHdpbGwgcmVkIHRoZSBp ZHMKKyAgICA6dHlwZSB1cmw6IHN0cgorICAgIDpyZXR1cm46IG5vZGUgaWRz CisgICAgOnJ0eXBlOiBkaWN0CisgICAgIiIiCisKKyAgICBvdXRwdXQgPSBv cGVuKHVybCwgJ3JiJykKKyAgICBpZHMgPSBwaWNrbGUubG9hZChvdXRwdXQp CisgICAgb3V0cHV0LmNsb3NlKCkKKworICAgIHJldHVybiBpZHMKKworCitk ZWYgdGVzdF9nZXRub2Rlcyh0ZXN0ZXI9Tm9uZSk6CisgICAgIyBDb25uZWN0 IHRvIHNlcnZlciBhbmQgZGF0YWJhc2UuCisKKyAgICBpZiBub3QgdGVzdGVy OgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgYWxsX2lkID0gZ2V0X2lk cygpCisKKyAgICBzZXJ2ZXJfaWRzID0gYWxsX2lkWyJzaWQiXQorICAgIGRi X2lkID0gYWxsX2lkWyJkaWQiXVswXQorICAgIHNydl9ncnAgPSBjb25maWdf ZGF0YVsndGVzdF9zZXJ2ZXJfZ3JvdXAnXQorCisgICAgIyBUT0RPOiBuZWVk IHRvIGFkZCBjb2RlIHRvIGhhbmRsZSBtdWx0aXBsZSBkYXRhYmFzZXMgd2l0 aCBzZXJ2ZXJzCisgICAgZm9yIHNlcnZlcl9pZCBpbiBzZXJ2ZXJfaWRzOgor ICAgICAgICAjIENvbm5lY3QgdG8gc2VydmVyCisgICAgICAgIHJlc3BvbnNl ID0gdGVzdGVyLnBvc3QoJ2Jyb3dzZXIvc2VydmVyL2Nvbm5lY3QvezB9L3sx fScuZm9ybWF0KAorICAgICAgICAgICAgc3J2X2dycCwgc2VydmVyX2lkKSwg ZGF0YT1kaWN0KAorICAgICAgICAgICAgcGFzc3dvcmQ9Y29uZmlnX2RhdGFb J3Rlc3Rfc2VydmVyX2NyZWRlbnRpYWxzJ11bMF1bCisgICAgICAgICAgICAg ICAgJ3Rlc3RfZGJfcGFzc3dvcmQnXSksCisgICAgICAgICAgICBmb2xsb3df cmVkaXJlY3RzPVRydWUpCisKKyAgICAgICAgIyBDb25uZWN0IHRvIGRhdGFi YXNlCisgICAgICAgIGNvbl9yZXNwb25zZSA9IHRlc3Rlci5wb3N0KAorICAg ICAgICAgICAgJ2Jyb3dzZXIvZGF0YWJhc2UvY29ubmVjdC97MH0vezF9L3sy fScuZm9ybWF0KAorICAgICAgICAgICAgICAgIHNydl9ncnAsIHNlcnZlcl9p ZCwgZGJfaWQpLCBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIGRi X2NvbiA9IGpzb24ubG9hZHMoY29uX3Jlc3BvbnNlLmRhdGEuZGVjb2RlKCd1 dGYtOCcpKQorCisgICAgcmV0dXJuIGRiX2NvbgorCisKK2RlZiBnZXRfZGJf ZGF0YShzZXJ2ZXJfY29ubmVjdF9kYXRhKToKKyAgICAiIiIKKyAgICBUaGlz IGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGFkdmFuY2UgY29uZmlnIHRlc3Qg ZGF0YSBmb3IgYXBwcm9wcmlhdGUKKyAgICBzZXJ2ZXIKKworICAgIDpwYXJh bSBzZXJ2ZXJfY29ubmVjdF9kYXRhOiBsaXN0IG9mIHNlcnZlciBkZXRhaWxz CisgICAgOnJldHVybiBkYXRhOiBkYXRhYmFzZSBkZXRhaWxzCisgICAgOnJ0 eXBlOiBkaWN0CisgICAgIiIiCisKKyAgICBkYl91c2VyID0gc2VydmVyX2Nv bm5lY3RfZGF0YVsnZGF0YSddWyd1c2VyJ11bJ25hbWUnXQorCisgICAgaWYg ZGJfdXNlciA9PSAicG9zdGdyZXMiOgorICAgICAgICAjIEdldCB0aGUgYWR2 YW5jZSB0ZXN0IGRhdGEgb2YgJ3Bvc3RncmVzJyB1c2VyCisgICAgICAgIGFk dl9jb25maWdfZGF0YSA9IGFkdmFuY2VfY29uZmlnX2RhdGFbCisgICAgICAg ICAgICAndGVzdF9hZGRfZGF0YWJhc2VfZGF0YSddWzBdCisgICAgZWxzZToK KyAgICAgICAgIyBHZXQgdGhlIGFkdmFuY2UgdGVzdCBkYXRhIG9mICdlbnRl cnByaXNlZGInIHVzZXIKKyAgICAgICAgYWR2X2NvbmZpZ19kYXRhID0gYWR2 YW5jZV9jb25maWdfZGF0YVsKKyAgICAgICAgICAgICd0ZXN0X2FkZF9kYXRh YmFzZV9kYXRhJ11bMV0KKworICAgIGRhdGEgPSB7CisgICAgICAgICJkYXRh Y2wiOiBhZHZfY29uZmlnX2RhdGFbJ3Rlc3RfcHJpdmlsZWdlc19hY2wnXSwK KyAgICAgICAgImRhdGNvbm5saW1pdCI6IGFkdl9jb25maWdfZGF0YVsndGVz dF9jb25uX2xpbWl0J10sCisgICAgICAgICJkYXRvd25lciI6IGFkdl9jb25m aWdfZGF0YVsndGVzdF9vd25lciddLAorICAgICAgICAiZGVmZnVuY2FjbCI6 IGFkdl9jb25maWdfZGF0YVsndGVzdF9mdW5fYWNsJ10sCisgICAgICAgICJk ZWZzZXFhY2wiOiBhZHZfY29uZmlnX2RhdGFbJ3Rlc3Rfc2VxX2FjbCddLAor ICAgICAgICAiZGVmdGJsYWNsIjogYWR2X2NvbmZpZ19kYXRhWyd0ZXN0X3Ri bF9hY2wnXSwKKyAgICAgICAgImRlZnR5cGVhY2wiOiBhZHZfY29uZmlnX2Rh dGFbJ3Rlc3RfdHlwZV9hY2wnXSwKKyAgICAgICAgImVuY29kaW5nIjogYWR2 X2NvbmZpZ19kYXRhWyd0ZXN0X2VuY29kaW5nJ10sCisgICAgICAgICJuYW1l Ijogc3RyKHV1aWQudXVpZDQoKSlbMTo4XSwKKyAgICAgICAgInByaXZpbGVn ZXMiOiBhZHZfY29uZmlnX2RhdGFbJ3Rlc3RfcHJpdmlsZWdlcyddLAorICAg ICAgICAic2VjdXJpdGllcyI6IGFkdl9jb25maWdfZGF0YVsndGVzdF9zZWN1 cml0aWVzJ10sCisgICAgICAgICJ2YXJpYWJsZXMiOiBhZHZfY29uZmlnX2Rh dGFbJ3Rlc3RfdmFyaWFibGVzJ10KKyAgICB9CisKKyAgICByZXR1cm4gZGF0 YQorCisKK2RlZiBsb2dpbl90ZXN0ZXJfYWNjb3VudCh0ZXN0ZXIpOgorICAg ICIiIgorICAgIFRoaXMgZnVuY3Rpb24gbG9naW4gdGhlIHRlc3QgYWNjb3Vu dCB1c2luZyBjcmVkZW50aWFscyBtZW50aW9uZWQgaW4KKyAgICBjb25maWcg ZmlsZQorCisgICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQKKyAgICA6 dHlwZSB0ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50IG9iamVjdAorICAgIDpy ZXR1cm46IE5vbmUKKyAgICAiIiIKKworICAgIGVtYWlsID0gXAorICAgICAg ICBjb25maWdfZGF0YVsncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXVsn dGVzdF9sb2dpbl91c2VybmFtZSddCisgICAgcGFzc3dvcmQgPSBcCisgICAg ICAgIGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscydd Wyd0ZXN0X2xvZ2luX3Bhc3N3b3JkJ10KKyAgICByZXNwb25zZSA9IHRlc3Rl ci5wb3N0KCcvbG9naW4nLCBkYXRhPWRpY3QoCisgICAgICAgIGVtYWlsPWVt YWlsLCBwYXNzd29yZD1wYXNzd29yZCksIGZvbGxvd19yZWRpcmVjdHM9VHJ1 ZSkKKworCitkZWYgbG9nb3V0X3Rlc3Rlcl9hY2NvdW50KHRlc3Rlcik6Cisg ICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiBsb2dvdXQgdGhlIHRlc3QgYWNj b3VudAorCisgICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQKKyAgICA6 dHlwZSB0ZXN0ZXI6IGZsYXNrIHRlc3QgY2xpZW50IG9iamVjdAorICAgIDpy ZXR1cm46IE5vbmUKKyAgICAiIiIKKworICAgIHJlc3BvbnNlID0gdGVzdGVy LmdldCgnL2xvZ291dCcpCisKKworZGVmIGdldF9jb25maWdfZGF0YSgpOgor ICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkYXRhIHJlbGF0 ZWQgdG8gc2VydmVyIGdyb3VwIGFuZCBkYXRhYmFzZQorICAgIGxpa2UgZGIg bmFtZSwgaG9zdCwgcG9ydCBhbmQgdXNlcm5hbWUgZXRjLgorCisgICAgOnJl dHVybjogc2VydmVyX2dyb3VwLCBkYl9kYXRhLCBwaWNrbGVfaWRfZGljdAor ICAgIDpydHlwZTogc2VydmVyX2dyb3VwOmRpY3QsIGRiX2RhdGE6bGlzdCwg cGlja2xlX2lkX2RpY3Q6ZGljdAorICAgICIiIgorCisgICAgZGJfZGF0YSA9 IFtdCisKKyAgICBwaWNrbGVfaWRfZGljdCA9IHsKKyAgICAgICAgInNpZCI6 IFtdLCAgIyBzZXJ2ZXIKKyAgICAgICAgImRpZCI6IFtdICAjIGRhdGFiYXNl CisgICAgfQorCisgICAgc2VydmVyX2dyb3VwID0gY29uZmlnX2RhdGFbJ3Rl c3Rfc2VydmVyX2dyb3VwJ10KKworICAgIGZvciBzcnYgaW4gY29uZmlnX2Rh dGFbJ3Rlc3Rfc2VydmVyX2NyZWRlbnRpYWxzJ106CisgICAgICAgIGRhdGEg PSB7Im5hbWUiOiBzcnZbJ3Rlc3RfbmFtZSddLAorICAgICAgICAgICAgICAg ICJjb21tZW50IjogIiIsCisgICAgICAgICAgICAgICAgImhvc3QiOiBzcnZb J3Rlc3RfaG9zdCddLAorICAgICAgICAgICAgICAgICJwb3J0Ijogc3J2Wyd0 ZXN0X2RiX3BvcnQnXSwKKyAgICAgICAgICAgICAgICAiZGIiOiBzcnZbJ3Rl c3RfbWFpbnRlbmFuY2VfZGInXSwKKyAgICAgICAgICAgICAgICAidXNlcm5h bWUiOiBzcnZbJ3Rlc3RfZGJfdXNlcm5hbWUnXSwKKyAgICAgICAgICAgICAg ICAicm9sZSI6ICIiLAorICAgICAgICAgICAgICAgICJzc2xtb2RlIjogc3J2 Wyd0ZXN0X3NzbG1vZGUnXX0KKyAgICAgICAgZGJfZGF0YS5hcHBlbmQoZGF0 YSkKKyAgICByZXR1cm4gc2VydmVyX2dyb3VwLCBkYl9kYXRhLCBwaWNrbGVf aWRfZGljdAorCisKK2RlZiB3cml0ZV9wYXJlbnRfaWQocmVzcG9uc2VfZGF0 YSwgcGlja2xlX2lkX2RpY3QpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gd3JpdGVzIHRoZSBzZXJ2ZXIncyBkZXRhaWxzIHRvIGZpbGUgcGFyZW50 X2lkLnBrbAorCisgICAgOnBhcmFtIHJlc3BvbnNlX2RhdGE6IHNlcnZlcidz IGRhdGEKKyAgICA6dHlwZSByZXNwb25zZV9kYXRhOiBsaXN0IG9mIGRpY3Rp b25hcnkKKyAgICA6cGFyYW0gcGlja2xlX2lkX2RpY3Q6IGNvbnRhaW5zIGlk cyBvZiBzZXJ2ZXIsZGF0YWJhc2UsdGFibGVzIGV0Yy4KKyAgICA6dHlwZSBw aWNrbGVfaWRfZGljdDogZGljdAorICAgIDpyZXR1cm46IE5vbmUKKyAgICAi IiIKKworICAgIHNlcnZlcl9pZCA9IHJlc3BvbnNlX2RhdGFbJ25vZGUnXVsn X2lkJ10KKyAgICBpZiBvcy5wYXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6Cisg ICAgICAgIGV4aXN0ZWRfc2VydmVyX2lkID0gb3BlbihwaWNrbGVfcGF0aCwg J3JiJykKKyAgICAgICAgcGlja2xlX2lkX2RpY3QgPSBwaWNrbGUubG9hZChl eGlzdGVkX3NlcnZlcl9pZCkKKworICAgIHBpY2tsZV9pZF9kaWN0WyJzaWQi XS5hcHBlbmQoc2VydmVyX2lkKQorICAgIG91dHB1dCA9IG9wZW4ocGlja2xl X3BhdGgsICd3YicpCisgICAgcGlja2xlLmR1bXAocGlja2xlX2lkX2RpY3Qs IG91dHB1dCkKKyAgICBvdXRwdXQuY2xvc2UoKQorCisKK2RlZiB3cml0ZV9k Yl9wYXJlbnRfaWQocmVzcG9uc2VfZGF0YSk6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiB3cml0ZXMgdGhlIHNlcnZlciBhbmQgZGF0YWJhc2UgcmVs YXRlZCBkYXRhIGxpa2Ugc2VydmVyCisgICAgbmFtZSwgc2VydmVyIGlkICwg ZGF0YWJhc2UgbmFtZSwgZGF0YWJhc2UgaWQgZXRjLgorCisgICAgOnBhcmFt IHJlc3BvbnNlX2RhdGE6IHNlcnZlciBhbmQgZGF0YWJhc2VzIGRldGFpbHMK KyAgICA6dHlwZSByZXNwb25zZV9kYXRhOiBkaWN0CisgICAgOnJldHVybjog Tm9uZQorICAgICIiIgorCisgICAgZGJfaWQgPSByZXNwb25zZV9kYXRhWydu b2RlJ11bJ19pZCddCisgICAgaWYgb3MucGF0aC5pc2ZpbGUocGlja2xlX3Bh dGgpOgorICAgICAgICBleGlzdGluZ19zZXJ2ZXJfaWQgPSBvcGVuKHBpY2ts ZV9wYXRoLCAncmInKQorICAgICAgICB0b2xfc2VydmVyX2lkID0gcGlja2xl LmxvYWQoZXhpc3Rpbmdfc2VydmVyX2lkKQorICAgICAgICBwaWNrbGVfaWRf ZGljdCA9IHRvbF9zZXJ2ZXJfaWQKKworICAgICAgICBwaWNrbGVfaWRfZGlj dFsiZGlkIl0uYXBwZW5kKGRiX2lkKQorCisgICAgICAgIGRiX291dHB1dCA9 IG9wZW4ocGlja2xlX3BhdGgsICd3YicpCisgICAgICAgIHBpY2tsZS5kdW1w KHBpY2tsZV9pZF9kaWN0LCBkYl9vdXRwdXQpCisgICAgICAgIGRiX291dHB1 dC5jbG9zZSgpCisKKworZGVmIGRlbGV0ZV9wYXJlbnRfaWRfZmlsZSgpOgor ICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgZmlsZSBw YXJlbnRfaWQucGtsIHdoaWNoIGNvbnRhaW5zIHNlcnZlciBhbmQKKyAgICBk YXRhYmFzZSBkZXRhaWxzCisKKyAgICA6cmV0dXJuOiBOb25lCisgICAgIiIi CisKKyAgICBpZiBvcy5wYXRoLmlzZmlsZShwaWNrbGVfcGF0aCk6CisgICAg ICAgIG9zLnJlbW92ZShwaWNrbGVfcGF0aCkKKworCitkZWYgYWRkX3NlcnZl cih0ZXN0ZXIpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gYWRkIHRo ZSBzZXJ2ZXIgaW4gdGhlIGV4aXN0aW5nIHNlcnZlciBncm91cAorCisgICAg OnBhcmFtIHRlc3RlcjogdGVzdCBvYmplY3QKKyAgICA6dHlwZSB0ZXN0ZXI6 IGZsYXNrIHRlc3Qgb2JqZWN0CisgICAgOnJldHVybjpOb25lCisgICAgIiIi CisKKyAgICBzZXJ2ZXJfZ3JvdXAsIGRiX2RhdGEsIHBpY2tsZV9pZF9kaWN0 ID0gZ2V0X2NvbmZpZ19kYXRhKCkKKyAgICB1cmwgPSAiezB9ezF9LyIuZm9y bWF0KFNFUlZFUl9VUkwsIHNlcnZlcl9ncm91cCkKKyAgICBmb3IgZGJfZGV0 YWlsIGluIGRiX2RhdGE6CisgICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLnBv c3QodXJsLCBkYXRhPWpzb24uZHVtcHMoZGJfZGV0YWlsKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNv bicpCisgICAgICAgIHJlc3BvbnNlX2RhdGEgPSBqc29uLmxvYWRzKHJlc3Bv bnNlLmRhdGEuZGVjb2RlKCkpCisgICAgICAgIHdyaXRlX3BhcmVudF9pZChy ZXNwb25zZV9kYXRhLCBwaWNrbGVfaWRfZGljdCkKKworCitkZWYgZ2V0X3Nl cnZlcih0ZXN0ZXIpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rpb24gZ2V0 cyB0aGUgYWRkZWQgc2VyZXIgZGV0YWlscworCisgICAgOnBhcmFtIHRlc3Rl cjogdGVzdCBjbGllbnQgb2JqZWN0CisgICAgOnR5cGUgdGVzdGVyOiBmbGFz ayB0ZXN0IG9iamVjdAorICAgIDpyZXR1cm46IHJlc3BvbnNlX2RhdGEKKyAg ICA6cnR5cGU6IGxpc3QKKyAgICAiIiIKKworICAgIGFsbF9pZCA9IGdldF9p ZHMoKQorICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCisgICAgc2Vy dmVyX2dyb3VwID0gY29uZmlnX2RhdGFbJ3Rlc3Rfc2VydmVyX2dyb3VwJ10K KyAgICBmb3Igc2VydmVyX2lkIGluIHNlcnZlcl9pZHM6CisgICAgICAgIHJl c3BvbnNlID0gdGVzdGVyLmdldChTRVJWRVJfVVJMICsgc3RyKHNlcnZlcl9n cm91cCkgKyAnLycgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RyKHNlcnZlcl9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCisgICAgICAgIHJlc3BvbnNlX2Rh dGEgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCisKKwor ZGVmIGNvbm5lY3Rfc2VydmVyKHRlc3Rlcik6CisgICAgIiIiCisgICAgVGhp cyBmdW5jdGlvbiB1c2VkIHRvIGNvbm5lY3QgYWRkZWQgc2VydmVyCisKKyAg ICA6cGFyYW0gdGVzdGVyOnRlc3QgY2xpZW50IG9iamVjdAorICAgIDp0eXBl IHRlc3RlcjogZmxhc2sgdGVzdCBvYmplY3QKKyAgICA6cmV0dXJuOiBzZXJ2 ZXJfY29ubmVjdCwgc2VydmVyX2dyb3VwLCBzZXJ2ZXJfaWQKKyAgICA6cnR5 cGU6IHNlcnZlcl9jb25uZWN0OmRpY3QsIHNlcnZlcl9ncm91cDpkaWN0LCBz ZXJ2ZXJfaWQ6c3RyCisgICAgIiIiCisKKyAgICBzZXJ2ZXJfY29ubmVjdCA9 IFtdCisgICAgc2VydmVycyA9IFtdCisKKyAgICBzcnZfaWQgPSBnZXRfaWRz KCkKKyAgICBzZXJ2ZXJfaWRzID0gc3J2X2lkWyJzaWQiXQorICAgIHNlcnZl cl9ncm91cCA9IGNvbmZpZ19kYXRhWyd0ZXN0X3NlcnZlcl9ncm91cCddCisK KyAgICAjIENvbm5lY3QgdG8gYWxsIHNlcnZlcnMKKyAgICBmb3Igc2VydmVy X2lkIGluIHNlcnZlcl9pZHM6CisgICAgICAgIHJlc3BvbnNlID0gdGVzdGVy LnBvc3QoU0VSVkVSX0NPTk5FQ1RfVVJMICsgc3RyKHNlcnZlcl9ncm91cCkg KworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJyArIHNlcnZl cl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRp Y3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3N3 b3JkPWNvbmZpZ19kYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFsndGVzdF9zZXJ2ZXJfY3JlZGVudGlhbHMnXVswXQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Rlc3RfZGJfcGFzc3dv cmQnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93 X3JlZGlyZWN0cz1UcnVlKQorICAgICAgICBzZXJ2ZXJfY29ubmVjdF9kZXRh aWwgPSBqc29uLmxvYWRzKHJlc3BvbnNlLmRhdGEuZGVjb2RlKCkpCisgICAg ICAgIGNvbm5lY3RfZGF0YWJhc2UodGVzdGVyLCBzZXJ2ZXJfY29ubmVjdF9k ZXRhaWwsIHNlcnZlcl9pZCwgc2VydmVyX2dyb3VwKQorICAgICAgICBzZXJ2 ZXJfY29ubmVjdC5hcHBlbmQoc2VydmVyX2Nvbm5lY3RfZGV0YWlsKQorICAg ICAgICBzZXJ2ZXJzLmFwcGVuZChzZXJ2ZXJfaWQpCisgICAgcmV0dXJuIHNl cnZlcl9jb25uZWN0LCBzZXJ2ZXJfZ3JvdXAsIHNlcnZlcnMKKworCitkZWYg Y29ubmVjdF9kYXRhYmFzZSh0ZXN0ZXIsIHNlcnZlcl9jb25uZWN0LCBzZXJ2 ZXJfaWQsIHNlcnZlcl9ncm91cCk6CisgICAgIiIiCisgICAgVGhpcyBmdW5j dGlvbiBpcyB1c2VkIHRvIGNvbm5lY3QgZGF0YWJhc2UgYW5kIHdyaXRlcyBp dCdzIGRldGFpbHMgdG8KKyAgICBmaWxlICdwYXJlbnRfaWQucGtsJworCisg ICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQgb2JqZWN0CisgICAgOnR5 cGUgdGVzdGVyOiBmbGFzayB0ZXN0IGNsaWVudCBvYmplY3QKKyAgICA6cGFy YW0gc2VydmVyX2Nvbm5lY3Q6IHNlcnZlcidzIGRhdGEKKyAgICA6dHlwZSBz ZXJ2ZXJfY29ubmVjdDogZGljdAorICAgIDpwYXJhbSBzZXJ2ZXJfaWQ6IHNl cnZlciBpZAorICAgIDp0eXBlIHNlcnZlcl9pZDogc3RyCisgICAgOnBhcmFt IHNlcnZlcl9ncm91cDogc2VydmVyIGdyb3VwIG5hbWUKKyAgICA6dHlwZSBz ZXJ2ZXJfZ3JvdXA6IHN0cgorICAgIDpyZXR1cm46IE5vbmUKKyAgICAiIiIK KworICAgIGlmIHNlcnZlcl9jb25uZWN0WydkYXRhJ11bJ2Nvbm5lY3RlZCdd OgorICAgICAgICBkYl9kYXRhID0gZ2V0X2RiX2RhdGEoc2VydmVyX2Nvbm5l Y3QpCisgICAgICAgIGRiX3Jlc3BvbnNlID0gdGVzdGVyLnBvc3QoCisgICAg ICAgICAgICBEQVRBQkFTRV9DT05ORUNUX1VSTCArIHN0cihzZXJ2ZXJfZ3Jv dXApICsgIi8iICsgc2VydmVyX2lkICsgIi8iLAorICAgICAgICAgICAgZGF0 YT1qc29uLmR1bXBzKGRiX2RhdGEpLAorICAgICAgICAgICAgY29udGVudF90 eXBlPSdodG1sL2pzb24nKQorICAgICAgICByZXNwb25zZV9kYXRhID0ganNv bi5sb2FkcyhkYl9yZXNwb25zZS5kYXRhLmRlY29kZSgpKQorICAgICAgICB3 cml0ZV9kYl9wYXJlbnRfaWQocmVzcG9uc2VfZGF0YSkKKworCitkZWYgZGVs ZXRlX3NlcnZlcih0ZXN0ZXIpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gdXNlZCB0byBkZWxldGUgdGhlIGFkZGVkIHNlcnZlcnMKKworICAgIDpw YXJhbSB0ZXN0ZXI6IHRlc3QgY2xpZW50IG9iamVjdAorICAgIDpyZXR1cm46 IE5vbmUKKyAgICAiIiIKKworICAgIHNydl9ncnAgPSBjb25maWdfZGF0YVsn dGVzdF9zZXJ2ZXJfZ3JvdXAnXQorICAgIGFsbF9pZCA9IGdldF9pZHMoKQor ICAgIHNlcnZlcl9pZHMgPSBhbGxfaWRbInNpZCJdCisgICAgdXJsID0gU0VS VkVSX1VSTCArIHN0cihzcnZfZ3JwKSArICIvIgorCisgICAgIyBDYWxsIGFw aSB0byBkZWxldGUgdGhlIHNlcnZlcnMKKyAgICBmb3Igc2VydmVyX2lkIGlu IHNlcnZlcl9pZHM6CisgICAgICAgIHJlc3BvbnNlID0gdGVzdGVyLmRlbGV0 ZSh1cmwgKyBzdHIoc2VydmVyX2lkKSkKKyAgICAgICAgYXNzZXJ0IHJlc3Bv bnNlLnN0YXR1c19jb2RlID09IDIwMAorICAgICAgICByZXNwb25zZV9kYXRh ID0ganNvbi5sb2FkcyhyZXNwb25zZS5kYXRhLmRlY29kZSgpKQorICAgICAg ICBhc3NlcnQgcmVzcG9uc2VfZGF0YVsnc3VjY2VzcyddID09IDEKKworCitk ZWYgZGVsZXRlX2RhdGFiYXNlKHRlc3RlciwgZGJfaWQpOgorICAgICIiIgor ICAgIFRoaXMgZnVuY3Rpb24gdXNlZCB0byBkZWxldGUgdGhlIGFkZGVkIGRh dGFiYXNlcworCisgICAgOnBhcmFtIHRlc3RlcjogdGVzdCBjbGllbnQgb2Jq ZWN0CisgICAgOnBhcmFtIGRiX2lkOiBkYXRhYmFzZSBpZCB0byBiZSBkZWxl dGUKKyAgICA6dHlwZSBkYl9pZDogaW50CisgICAgOnJldHVybjogTm9uZQor ICAgICIiIgorCisgICAgc3J2X2dycCA9IGNvbmZpZ19kYXRhWyd0ZXN0X3Nl cnZlcl9ncm91cCddCisgICAgYWxsX2lkID0gZ2V0X2lkcygpCisgICAgc2Vy dmVyX2lkcyA9IGFsbF9pZFsic2lkIl0KKworICAgICMgVE9ETzogTmVlZCB0 byBtb2RpZnkgdGhlIGNvZGUgLCB0byBkZWxldGUgdGhlIGRhdGFiYXNlcyBm b3IgYWxsCisgICAgIyBUT0RPOiBzZXJ2ZXJzLiBDdXJyZW50bHkgaXQgZGVs ZXRlIG9ubHkgb25lIGRhdGFiYXNlLgorICAgICNkYl9pZCA9IGFsbF9pZFsi ZGlkIl1bMF0KKworICAgIGRiX2NvbiA9IHRlc3RfZ2V0bm9kZXModGVzdGVy KQorICAgIGlmIGxlbihkYl9jb24pID09IDA6CisgICAgICAgIHJhaXNlIEV4 Y2VwdGlvbigiTm8gZGF0YWJhc2UocykgdG8gZGVsZXRlISEhIikKKworICAg IGZvciBzZXJ2ZXJfaWQgaW4gc2VydmVyX2lkczoKKyAgICAgICAgcmVzcG9u c2UgPSB0ZXN0ZXIuZGVsZXRlKERBVEFCQVNFX0NPTk5FQ1RfVVJMICsgc3Ry KHNydl9ncnApICsgJy8nICsgc3RyKAorICAgICAgICAgICAgc2VydmVyX2lk KSArICcvJyArIHN0cihkYl9pZCksIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZSkK KyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlLnN0YXR1c19jb2RlID09IDIwMAor ICAgICAgICByZXNwb25zZV9kYXRhID0ganNvbi5sb2FkcyhyZXNwb25zZS5k YXRhLmRlY29kZSgndXRmLTgnKSkKKyAgICAgICAgYXNzZXJ0IHJlc3BvbnNl X2RhdGFbJ3N1Y2Nlc3MnXSA9PSAxCmRpZmYgLS1naXQgYS93ZWIvcmVncmVz c2lvbi90ZXN0c3VpdGUucHkgYi93ZWIvcmVncmVzc2lvbi90ZXN0c3VpdGUu cHkKaW5kZXggNzVkNDM3Yi4uOWM1N2MzZSAxMDA2NDQKLS0tIGEvd2ViL3Jl Z3Jlc3Npb24vdGVzdHN1aXRlLnB5CisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rl c3RzdWl0ZS5weQpAQCAtMTAsMTYgKzEwLDE4IEBACiAiIiIgVGhpcyBmaWxl IGNvbGxlY3QgYWxsIG1vZHVsZXMvZmlsZXMgcHJlc2VudCBpbiB0ZXN0cyBk aXJlY3RvcnkgYW5kIGFkZAogdGhlbSB0byBUZXN0U3VpdGUuICIiIgogCitp bXBvcnQgYXJncGFyc2UKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0 IHVuaXR0ZXN0CitpbXBvcnQgbG9nZ2luZwogCiBmcm9tIHRlc3RzY2VuYXJp b3Muc2NlbmFyaW9zIGltcG9ydCBnZW5lcmF0ZV9zY2VuYXJpb3MKIAotIyBX ZSBuZWVkIHRvIGluY2x1ZGUgdGhlIHJvb3QgZGlyZWN0b3J5IGluIHN5cy5w YXRoIHRvIGVuc3VyZSB0aGF0IHdlIGNhbgotIyBmaW5kIGV2ZXJ5dGhpbmcg d2UgbmVlZCB3aGVuIHJ1bm5pbmcgaW4gdGhlIHN0YW5kYWxvbmUgcnVudGlt ZS4KLWN1cnJlbnRfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJl YWxwYXRoKF9fZmlsZV9fKSkKLXJvb3QgPSBvcy5wYXRoLmRpcm5hbWUoY3Vy cmVudF9wYXRoKQorQ1VSUkVOVF9QQVRIID0gb3MucGF0aC5kaXJuYW1lKG9z LnBhdGgucmVhbHBhdGgoX19maWxlX18pKQorCisjIFNldCBzeXMgcGF0aCB0 byBjdXJyZW50IGRpcmVjdG9yeSBzbyB0aGF0IHdlIGNhbiBpbXBvcnQgcGdh ZG1pbiBwYWNrYWdlCityb290ID0gb3MucGF0aC5kaXJuYW1lKENVUlJFTlRf UEFUSCkKIAogaWYgc3lzLnBhdGhbMF0gIT0gcm9vdDoKICAgICBzeXMucGF0 aC5pbnNlcnQoMCwgcm9vdCkKQEAgLTMwLDUwICszMiwxMTMgQEAgaW1wb3J0 IGNvbmZpZwogIyBHZXQgdGhlIGNvbmZpZyBkYXRhYmFzZSBzY2hlbWEgdmVy c2lvbi4gV2Ugc3RvcmUgdGhpcyBpbiBwZ2FkbWluLm1vZGVsCiAjIGFzIGl0 IHR1cm5zIG91dCB0aGF0IHB1dHRpbmcgaXQgaW4gdGhlIGNvbmZpZyBmaWxl cyBpc24ndCBhIGdyZWF0IGlkZWEKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBv cnQgU0NIRU1BX1ZFUlNJT04KKwogY29uZmlnLlNFVFRJTkdTX1NDSEVNQV9W RVJTSU9OID0gU0NIRU1BX1ZFUlNJT04KIAotIyBDcmVhdGUgdGhlIGFwcCEK KyMgQ3JlYXRlIHRoZSBhcHAKIGFwcCA9IGNyZWF0ZV9hcHAoKQotCi0jIERp c2FibGluZyBDcm9zcy1zaXRlIHJlcXVlc3QgZm9yZ2VyeShDU1JGIHRva2Vu KSBmb3IgdGVzdGluZyBwdXJwb3NlLgotIyBDU1JGIHByZXZlbnQgc2Vzc2lv biBhZ2FpbnN0IG1hbGljaW91cyBXZWIgc2l0ZSwgb3IgZW5kIHVzZXJzIHdo byB3YW50cyB0bwotIyBleGVjdXRlIHVud2FudGVkIGFjdGlvbnMuCiBhcHAu Y29uZmlnWydXVEZfQ1NSRl9FTkFCTEVEJ10gPSBGYWxzZQordGVzdF9jbGll bnQgPSBhcHAudGVzdF9jbGllbnQoKQogCi1mcm9tIHBnYWRtaW4udXRpbHMu cm91dGUgaW1wb3J0IFRlc3RzR2VuZXJhdG9yUmVnaXN0cnkKLQotIyBSZWdp c3RyeSB3aWxsIGxvYWQgYWxsIHRoZSB0ZXN0Y2FzZXMvbW9kdWxlcyBmcm9t IHBnYWRtaW4gcGF0aCB0aG9zZSBhcmUKLSMgcmVnaXN0ZXIgYXMgQmFzZVRl c3RHZW5lcmF0b3IuCi1UZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LmxvYWRfZ2Vu ZXJhdG9ycygncGdhZG1pbicpCiAKLSMgQ3JlYXRlIHRlc3QgY2xpZW50Ci0j IHdlcmt6ZXVnIHByb3ZpZGVzIGEgdGVzdCBjbGllbnQgd2hpY2ggZ2l2ZXMg YSBzaW1wbGUgaW50ZXJmYWNlIHRvIHRoZQotIyBhcHBsaWNhdGlvbi4gV2Ug Y2FuIHRyaWdnZXIgdGVzdCByZXF1ZXN0IHRvIHRoZSBhcHBsaWNhdGlvbi4K LXRlc3RfY2xpZW50ID0gYXBwLnRlc3RfY2xpZW50KCkKK2RlZiBnZXRfc3Vp dGUoYXJndW1lbnRzLCB0ZXN0X2FwcF9jbGllbnQpOgorICAgICIiIgorICAg ICBUaGlzIGZ1bmN0aW9uIGxvYWRzIHRoZSBhbGwgbW9kdWxlcyBpbiB0aGUg dGVzdHMgZGlyZWN0b3J5IGludG8gdGVzdGluZworICAgICBlbnZpcm9ubWVu dC4KIAorICAgIDpwYXJhbSBhcmd1bWVudHM6IHRoaXMgaXMgY29tbWFuZCBs aW5lIGFyZ3VtZW50cyBmb3IgbW9kdWxlIG5hbWUgdG8KKyAgICB3aGljaCB0 ZXN0IHN1aXRlIHdpbGwgcnVuCisgICAgOnR5cGUgYXJndW1lbnRzOiBzdHIK KyAgICA6cGFyYW0gdGVzdF9hcHBfY2xpZW50OiB0ZXN0IGNsaWVudAorICAg IDp0eXBlIHRlc3RfYXBwX2NsaWVudDogcGdhZG1pbiBhcHAgb2JqZWN0Cisg ICAgOnJldHVybiBwZ2FkbWluX3N1aXRlOiB0ZXN0IHN1aXRlIHdpdGggdGVz dCBjYXNlcworICAgIDpydHlwZTogVGVzdFN1aXRlCisgICAgIiIiCiAKLWRl ZiBzdWl0ZSgpOgotICAgICIiIiBEZWZpbmluZyB0ZXN0IHN1aXRlIHdoaWNo IHdpbGwgZXhlY3V0ZSBhbGwgdGhlIHRlc3RjYXNlcyBwcmVzZW50IGluCi0g ICAgdGVzdHMgZGlyZWN0b3J5IGFjY29yZGluZyB0byBzZXQgcHJpb3JpdHku IiIiCisgICAgZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBUZXN0 c0dlbmVyYXRvclJlZ2lzdHJ5CiAKKyAgICBtb2R1bGVzID0gW10KICAgICBw Z2FkbWluX3N1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKIAotICAgIG1v ZHVsZXMgPSBbXQorICAgICMgTG9hZCB0aGUgdGVzdCBtb2R1bGVzIHdoaWNo IGFyZSBpbiBnaXZlbiBwYWNrYWdlKGkuZS4gaW4gYXJndW1lbnRzLnBrZykK KyAgICBpZiBhcmd1bWVudHMucGtnID09ICJhbGwiOgorICAgICAgICBUZXN0 c0dlbmVyYXRvclJlZ2lzdHJ5LmxvYWRfZ2VuZXJhdG9ycygncGdhZG1pbicp CisgICAgZWxzZToKKyAgICAgICAgVGVzdHNHZW5lcmF0b3JSZWdpc3RyeS5s b2FkX2dlbmVyYXRvcnMoJ3BnYWRtaW4ue30udGVzdHMnLmZvcm1hdCgKKyAg ICAgICAgICAgIGFyZ3VtZW50cy5wa2cpKQogCisgICAgIyBHZXQgdGhlIGVh Y2ggdGVzdCBtb2R1bGUgYW5kIGFkZCBpbnRvIGxpc3QKICAgICBmb3Iga2V5 LCBrbGFzcyBpbiBUZXN0c0dlbmVyYXRvclJlZ2lzdHJ5LnJlZ2lzdHJ5Lml0 ZW1zKCk6CiAgICAgICAgIGdlbiA9IGtsYXNzCisgICAgICAgIG1vZHVsZXMu YXBwZW5kKGdlbikKIAotICAgICAgICBtb2R1bGVzLmluc2VydChnZW4ucHJp b3JpdHksIGdlbikKLQotICAgIGZvciBtIGluIG1vZHVsZXM6Ci0gICAgICAg IG9iaiA9IG0oKQotICAgICAgICBvYmouc2V0VGVzdENsaWVudCh0ZXN0X2Ns aWVudCkKKyAgICAjIFNldCB0aGUgdGVzdCBjbGllbnQgdG8gZWFjaCBtb2R1 bGUgJiBnZW5lcmF0ZSB0aGUgc2NlbmFyaW9zCisgICAgZm9yIG1vZHVsZSBp biBtb2R1bGVzOgorICAgICAgICBvYmogPSBtb2R1bGUoKQorICAgICAgICBv Ymouc2V0VGVzdENsaWVudCh0ZXN0X2FwcF9jbGllbnQpCiAgICAgICAgIHNj ZW5hcmlvID0gZ2VuZXJhdGVfc2NlbmFyaW9zKG9iaikKICAgICAgICAgcGdh ZG1pbl9zdWl0ZS5hZGRUZXN0cyhzY2VuYXJpbykKIAogICAgIHJldHVybiBw Z2FkbWluX3N1aXRlCiAKIAorZGVmIGFkZF9hcmd1bWVudHMoKToKKyAgICAi IiIKKyAgICBUaGlzIGZ1bmN0aW9uIHBhcnNlIHRoZSBjb21tYW5kIGxpbmUg YXJndW1lbnRzKHByb2plY3QncyBwYWNrYWdlIG5hbWUKKyAgICBlLmcuIGJy b3dzZXIpICYgYWRkIGludG8gcGFyc2VyCisKKyAgICA6cmV0dXJuIGFyZ3M6 IGNvbW1hbmQgbGluZSBhcmd1bWVudCBmb3IgcGdhZG1pbidzIHBhY2thZ2Ug bmFtZQorICAgIDpydHlwZTogYXJncGFyc2UgbmFtZXNwYWNlCisgICAgIiIi CisKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNj cmlwdGlvbj0nVGVzdCBzdWl0ZSBmb3IgcGdBZG1pbjQnKQorICAgIHBhcnNl ci5hZGRfYXJndW1lbnQoJy0tcGtnJywgaGVscD0nRXhlY3V0ZXMgdGhlIHRl c3QgY2FzZXMgb2YgcGFydGljdWxhcicKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJyBwYWNrYWdlJykKKyAgICBhcmcgPSBwYXJz ZXIucGFyc2VfYXJncygpCisKKyAgICByZXR1cm4gYXJnCisKKworY2xhc3Mg U3RyZWFtVG9Mb2dnZXIob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2Vs ZiwgbG9nZ2VyLCBsb2dfbGV2ZWw9bG9nZ2luZy5JTkZPKToKKyAgICAgICAg c2VsZi50ZXJtaW5hbCA9IHN5cy5zdGRlcnIKKyAgICAgICAgc2VsZi5sb2dn ZXIgPSBsb2dnZXIKKyAgICAgICAgc2VsZi5sb2dfbGV2ZWwgPSBsb2dfbGV2 ZWwKKyAgICAgICAgc2VsZi5saW5lYnVmID0gJycKKworICAgIGRlZiB3cml0 ZShzZWxmLCBidWYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3cml0ZXMgdGhlIGxvZyBpbiB0aGUgbG9nZ2VyIGZpbGUgYXMgd2Vs bCBhcyBvbiBjb25zb2xlCisKKyAgICAgICAgOnBhcmFtIGJ1ZjogbG9nIG1l c3NhZ2UKKyAgICAgICAgOnR5cGUgYnVmOiBzdHIKKyAgICAgICAgOnJldHVy bjogTm9uZQorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLnRlcm1pbmFs LndyaXRlKGJ1ZikKKyAgICAgICAgZm9yIGxpbmUgaW4gYnVmLnJzdHJpcCgp LnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmxvZyhz ZWxmLmxvZ19sZXZlbCwgbGluZS5yc3RyaXAoKSkKKworICAgIGRlZiBmbHVz aChzZWxmKToKKyAgICAgICAgcGFzcworCisKIGlmIF9fbmFtZV9fID09ICdf X21haW5fXyc6Ci0gICAgc3VpdGUgPSBzdWl0ZSgpCi0gICAgdGVzdHMgPSB1 bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihkZXNjcmlwdGlvbnM9VHJ1ZSwgdmVy Ym9zaXR5PTIpLnJ1bihzdWl0ZSkKKyAgICAjIFNldCBiYXNpYyBsb2dnaW5n IGNvbmZpZ3VyYXRpb24gZm9yIGxvZyBmaWxlCisgICAgbG9nZ2luZy5iYXNp Y0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHLAorICAgICAgICAgICAgICAg ICAgICAgICAgZm9ybWF0PSclKGFzY3RpbWUpczolKGxldmVsbmFtZSlzOiUo bmFtZSlzOiUobWVzc2FnZSlzJywKKyAgICAgICAgICAgICAgICAgICAgICAg IGZpbGVuYW1lPUNVUlJFTlRfUEFUSCArICIvIiArICJsb2dnZXIubG9nIiwK KyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVtb2RlPSd3JworICAgICAg ICAgICAgICAgICAgICAgICAgKQorCisgICAgIyBDcmVhdGUgbG9nZ2VyIHRv IHdyaXRlIGxvZyBpbiB0aGUgbG9nZ2VyIGZpbGUgYXMgd2VsbCBhcyBvbiBj b25zb2xlCisgICAgc3RkZXJyX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy KCdTVERFUlInKQorICAgIHN5cy5zdGRlcnIgPSBTdHJlYW1Ub0xvZ2dlcihz dGRlcnJfbG9nZ2VyLCBsb2dnaW5nLkVSUk9SKQorCisgICAgYXJncyA9IGFk ZF9hcmd1bWVudHMoKQorICAgIHN1aXRlID0gZ2V0X3N1aXRlKGFyZ3MsIHRl c3RfY2xpZW50KQorICAgIHRlc3RzID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5u ZXIoc3RyZWFtPXN5cy5zdGRlcnIsIGRlc2NyaXB0aW9ucz1UcnVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIp LnJ1bihzdWl0ZSkKKworICAgIHByaW50KCJQbGVhc2UgY2hlY2sgb3V0cHV0 IGluIGZpbGU6IGxvZ2dlci5sb2cgcGxhY2VkIGF0ICIsCisgICAgICAgICAg Q1VSUkVOVF9QQVRIKQo= --001a1149cd502930730537e857dd Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1149cd502930730537e857dd--