Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1d9Ekc-0001B5-8x for pgadmin-hackers@arkaria.postgresql.org; Fri, 12 May 2017 17:53:14 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1d9Ekb-0004X8-Rg for pgadmin-hackers@arkaria.postgresql.org; Fri, 12 May 2017 17:53:13 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1d9EkY-0004OX-6Y for pgadmin-hackers@postgresql.org; Fri, 12 May 2017 17:53:10 +0000 Received: from mail-vk0-x22a.google.com ([2607:f8b0:400c:c05::22a]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1d9EkU-0000c4-EC for pgadmin-hackers@postgresql.org; Fri, 12 May 2017 17:53:08 +0000 Received: by mail-vk0-x22a.google.com with SMTP id h16so21929156vkd.2 for ; Fri, 12 May 2017 10:53:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pivotal-io.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=Sv4wR/S7F0GOgS1pxS/udooscshEUpMgSLa9EBTDFIg=; b=os9p1ppMbx82EYXidWVLfMIReT7wLwfNII1Ecx+iucSZ46Mrj0d4uFMWMqkzRHc0An d7dvEgLYZA8bSVut6IRw1FeZZoPHAjXQ0VFp4XApIWigs4v3DBjsDkoB7ZefvXnNmO4C zpeu3spgY0gn0m1dnUxedkzJUeTSmYsWo8OoJoKXggceCdnNO4ym2eTFOwxqk8O8mzps CbE3oObaOktaWWyhF5UHSFyZe4ndeewGEm7NfhU235ybqVTrrfkq9pgRFjzAxZ5nYHV/ 5wK+iYr6DzeAk/Ox9lFuXqEKN/GZgAQTbPCgZ1re/dtqxitdosNmlBPCvxuw6bvLnDHa ErvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=Sv4wR/S7F0GOgS1pxS/udooscshEUpMgSLa9EBTDFIg=; b=r5YyZP7dFXzcnQggVaGI+96EW02Xo6yFHJAoSVaA1dTA8nkONHNMDnmc+2izorFgcU dw4Cj19u5tKxH8UO0fXWZL5MXIDhSaQcB3Z8lQrq/alHfMC/oShKexEzOWrgNK/XWK4b MJiW7zUu47hVfkwBp8cQg2gOmYn6auKvGyjkHVTLtPepRjb8IrW7qmeIkZseoHAL7OAD NjFeivCaKXTdcZN1HOc01a1/ZvA7fSePKdo26s06bQg2ocYdUl0rdAzcyeB411+fQ8WN 42NvdrmVbmKulIzlcWorfEy0LZTIaNOUZH0oEOPNvvUXV7DDaqjDDquJHnY5Is9uSLPt MyGw== X-Gm-Message-State: AODbwcCSHFxnmdkBKVpcZeDfvC+WT+2cuJKxZiku6KwqvTDXSbU9Oj/L 1Bc8CCa849Kojl+kBbWnD4lw75PSCMDR X-Received: by 10.31.61.131 with SMTP id k125mr2527801vka.33.1494611584839; Fri, 12 May 2017 10:53:04 -0700 (PDT) MIME-Version: 1.0 Received: by 10.103.10.199 with HTTP; Fri, 12 May 2017 10:53:03 -0700 (PDT) In-Reply-To: References: <19B13ECE-CA6A-48E7-BF70-264F490F40B4@pgadmin.org> From: Joao Pedro De Almeida Pereira Date: Fri, 12 May 2017 13:53:03 -0400 Message-ID: Subject: Re: [patch] Dependents and Dependencies in GreenPlum To: Akshay Joshi Cc: pgadmin-hackers , George Gelashvili Content-Type: multipart/mixed; boundary="001a114daf92984938054f5760f4" 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 --001a114daf92984938054f5760f4 Content-Type: multipart/alternative; boundary="001a114daf92984932054f5760f2" --001a114daf92984932054f5760f2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Akshay, You can find attached a new version of the patch that changes the test in question. This new version instead of requiring a creation of a new Role now does the following: 1 - Creates a new Role 2 - Creates a table with that Role 3 - Checks for dependencies Thanks Joao & George On Thu, May 11, 2017 at 7:33 AM, Joao Pedro De Almeida Pereira < jdealmeidapereira@pivotal.io> wrote: > Hello all, > This test is trying to check if the sql to retrieve the role dependencies > of a object in the database is correct. Using a different user to connect > to the database and create tables there is no need for extra setup because > the role depedencies table entry is added automatically. Also we talked > with some internal users and they told us they always used a different us= er > to connect to the database with pgadmin. > > After your comments we realize that the test need to have a different > setup in order to become more readable and resilient. What do we need to = do > in the test setup to ensure an entry is added to the role dependency tabl= e? > > Also the test need to be a little bit more resilient to work independently > of the user that is used on the test. > > Thanks > Joao > > On Thu, May 11, 2017, 3:20 AM Khushboo Vashi com> wrote: > >> On Thu, May 11, 2017 at 12:03 PM, Dave Page wrote: >> >>> >>> >>> On 11 May 2017, at 07:11, Akshay Joshi >>> wrote: >>> >>> Hi Sarah >>> >>> On Thu, May 11, 2017 at 2:30 AM, Sarah McAlear >>> wrote: >>> >>>> Hi Ashkay! >>>> >>>> TestTablesNodeSql hasn't failed but TestRoleDependenciesSql failed with >>>>> below error: >>>>> .....\test_role_dependencies_sql.py\", line 41, in assertions\n >>>>> self.assertEqual(1, len(fetch_result))\nAssertionError: 1 !=3D 0 >>>> >>>> >>>> We experienced a similar problem when we started developing this patch. >>>> We noticed that we were connecting to the database with the super user= (the >>>> db owner user), which did not create the role we are expecting when a = table >>>> is created. To ensure that this role is created, we had to create a new >>>> user and use it to execute all the tests. After we made this change, t= he >>>> tests passed. >>>> >>>> Can you try to create a new user and use it to execute your tests? >>>> >>> >>> I did that and it works. I have created new user 'test' with >>> superuser privileges and update parameter db_username=3D"test" in >>> test_config.json file. But still I am unable to understand why it doesn= 't >>> work with 'postgres' (default) user? >>> >>> >>> Agreed. That suggests something fishy is going on that should be >>> understood. >>> >>> >> We don't check role dependencies for every object. As per the code, the >> role dependencies are executed for columns not for the table itself. >> And in the test cases, the table object is trying to execute the role >> dependencies, so I think this test case is not correct. >> >>> >>>> Thanks, >>>> Jo=C3=A3o & Sarah >>>> >>>> On Wed, May 10, 2017 at 1:56 PM, Akshay Joshi < >>>> akshay.joshi@enterprisedb.com> wrote: >>>> >>>>> >>>>> >>>>> On May 10, 2017 19:07, "Sarah McAlear" wrote: >>>>> >>>>> Hi Akshay! >>>>> >>>>> Does this error occur on 9.6 or 10.0? We tested it in 9.6 and all our >>>>> tests pass. >>>>> >>>>> >>>>> On both 9.6 and 10.0. Query returned 0 rows which is compared >>>>> against 1 in assert statement. >>>>> >>>>> >>>>> Thanks! >>>>> Jo=C3=A3o & Sarah >>>>> >>>>> On Wed, May 10, 2017 at 2:29 AM, Akshay Joshi < >>>>> akshay.joshi@enterprisedb.com> wrote: >>>>> >>>>>> Hi Sarah >>>>>> >>>>>> On Tue, May 9, 2017 at 9:03 PM, Sarah McAlear >>>>>> wrote: >>>>>> >>>>>>> Hi Akshay! >>>>>>> >>>>>>> >>>>>>>> Some test file names ended with "*_sql_template.py*" do we need to >>>>>>>> add that string ? >>>>>>> >>>>>>> we added this suffix after moving the tests up a level to >>>>>>> tables/tests to clarify what subject they applied to. we changed th= e suffix >>>>>>> to "_sql.py" >>>>>>> >>>>>>> - Files "test_column_acl_sql_template.py" and " >>>>>>>> test_column_properties_sql_template.py" should be moved from >>>>>>>> tables->tests to tables->column->tests. As it's related to column. >>>>>>>> - Files "test_trigger_get_oid_sql_template.py" and " >>>>>>>> test_trigger_nodes_sql_template.py" should be moved from >>>>>>>> tables->tests to tables->triggers->tests. As its related to trigge= rs. >>>>>>> >>>>>>> these tests are related to the sql files in tables/templates/column, >>>>>>> not tables/column, so moving them into tables/column would be more >>>>>>> confusing. >>>>>>> >>>>>>> Following test cases are failing >>>>>>> >>>>>>> Thank you, fixed, see new patch. Can you confirm that >>>>>>> TestTablesNodeSql doesn't fail in your environment? >>>>>>> >>>>>> >>>>>> TestTablesNodeSql hasn't failed but TestRoleDependenciesSql >>>>>> failed with below error: >>>>>> .....\test_role_dependencies_sql.py\", line 41, in assertions\n >>>>>> self.assertEqual(1, len(fetch_result))\nAssertionError: 1 !=3D 0 >>>>>> >>>>>> >>>>>>> Thanks, >>>>>>> George & Sarah >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> *Akshay Joshi* >>>>>> *Principal Software Engineer * >>>>>> >>>>>> >>>>>> >>>>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 >>>>>> 976-788-8246 <+91%2097678%2088246>* >>>>>> >>>>> >>>>> >>>>> >>>> >>> >>> >>> -- >>> *Akshay Joshi* >>> *Principal Software Engineer * >>> >>> >>> >>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 >>> 976-788-8246 <+91%2097678%2088246>* >>> >>> --001a114daf92984932054f5760f2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Akshay,

You can find attached a n= ew version of the patch that changes the test in question.=C2=A0
= This new version instead of requiring a creation of a new Role now does the= following:
1 - Creates a new Role
2 - Creates a table = with that Role
3 - Checks for dependencies

Thanks
Joao & George

On Thu, May 11, 2017 at 7:33 AM, Joao Pedro= De Almeida Pereira <jdealmeidapereira@pivotal.io> wrote:

Hello all,
This test is trying to check if the sql to retrieve the role dependencies o= f a object in the database is correct. Using a different user to connect to= the database and create tables there is no need for extra setup because th= e role depedencies table entry is added automatically. Also we talked with = some internal users and they told us they always used a different user to c= onnect to the database with pgadmin.

After your comments we realize that the test need to have a = different setup in order to become more readable and resilient. What do we = need to do in the test setup to ensure an entry is added to the role depend= ency table?

Also the test need to be a little bit more resilient to work= independently of the user that is used on the test.

Thanks
Joao


On Thu, May 11, 2017, 3:20 = AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
On Thu, May 11, 2017 at 12:03 PM, Dave Page <= dpage@pgadmin.org> wrote:


On 11 May 2017, at 07:11, Akshay Joshi = <aksh= ay.joshi@enterprisedb.com> wrote:

Hi Sarah
<= br>
On Thu, May 11, 2017 at 2:30 AM, Sarah McAlear <smc= alear@pivotal.io> wrote:
Hi Ashkay!

TestTablesNodeSql = hasn't failed but TestRoleDependenciesSql failed with below error:
= =C2=A0 =C2=A0 .....\test_role_dependencies_sql.py\", line 41, in assertions\n=C2=A0self.assertEqual(1, len(fetch_result))= \nAssertionError: 1 !=3D 0

We experienced a similar problem when we started d= eveloping this patch. We noticed that we were connecting to the database wi= th the super user (the db owner user), which did not create the role we are= expecting when a table is created. To ensure that this role is created, we= had to create a new user and use it to execute all the tests. After we mad= e this change, the tests passed.=C2=A0

Can you try= to create a new user and use it to execute your tests?

=C2=A0 =C2=A0 I did that and it works. I have crea= ted new user 'test' with superuser privileges and update parameter = db_username=3D"test" in test_config.json file. But still I am una= ble to understand why it doesn't work with 'postgres' (default)= user? =C2=A0

Agreed. That suggests something fishy is going on that should be un= derstood.


We don't check role dependencies for every object. As = per the code, the role dependencies are executed for columns not for the ta= ble itself.
And in the test cases, the table object is trying to = execute the role dependencies, so I think this test case is not correct.

Thanks,
= Jo=C3=A3o & Sarah
=

On Wed, May 10, 2= 017 at 1:56 PM, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:

Thanks!
Jo=C3=A3o & Sarah

On Wed, May 10, 2017 at 2:29 AM, Akshay= Joshi <akshay.joshi@enterprisedb.com> wrot= e:
Hi= Sarah

On Tu= e, May 9, 2017 at 9:03 PM, Sarah McAlear <smcalear@pivotal.io> wrote:
Hi Akshay!
=C2=A0<= /div>
Some test file names en= ded with "_sql_template.py"= do we need to add that string ?=C2=A0
we ad= ded this suffix after moving the tests up a level to tables/tests to clarif= y what subject they applied to. we changed the suffix to "_sql.py"= ;

- File= s "test_column_acl_s= ql_template.py" and "test_column_properties_sql_template.py" should be moved from tables->tests to tables->colu= mn->tests. As it's related to column.
- Files "test_trigger_get_oid_sql_template.py" and "test_= trigger_nodes_sql_template.py"= ; should be moved from tables->tests to tables->triggers->tests. A= s its related to triggers.
these tests are related = to the sql files in tables/templates/column, not tables/column, so moving t= hem into tables/column would be more confusing.=C2=A0

Following test cases are failing
Thank you, fixed, see new patch. Can you confirm that TestTablesN= odeSql doesn't fail in your environment?
= =C2=A0 =C2=A0
=C2=A0 =C2=A0 TestTablesNodeSql hasn't f= ailed but TestRoleDependenciesSql failed with below error:
=C2=A0= =C2=A0 .....\test_role_dependencies_sql.py\&= quot;, line 41, in assertions\n self.assertEqual(1, len(fetch_result))\nAssertionError: 1 !=3D 0

=
Thanks,
George & Sarah




--
Akshay Joshi
Principal Software = Engineer=C2=A0

<= /font>

=






--
=

--001a114daf92984932054f5760f2-- --001a114daf92984938054f5760f4 Content-Type: application/octet-stream; name="0001-Fix-error-while-checking-Dependents-and-Dependencies.patch" Content-Disposition: attachment; filename="0001-Fix-error-while-checking-Dependents-and-Dependencies.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j2m4rnlo0 RnJvbSA3NjkxNjg3NzRlZmY5NTEzOGIwOWNmNTJhMzkxM2MzODk0OWQ2NWYx IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBHZW9yZ2UgR2VsYXNo dmlsaSBhbmQgSm9hbyBQZXJlaXJhCiA8cGFpcitnZ2VsYXNodmlsaStqcGVy ZWlyYUBwaXZvdGFsLmlvPgpEYXRlOiBGcmksIDEyIE1heSAyMDE3IDEyOjMy OjE2IC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gRml4IGVycm9yIHdoaWxlIGNo ZWNraW5nIERlcGVuZGVudHMgYW5kIERlcGVuZGVuY2llcyBvZiAKIG9iamVj dCBpbiBHcmVlblBsdW06CgotIE1ha2UgU1FMIHRlbXBsYXRlIFVUIHZpc2li bGUgdG8gcnVudGVzdAotIEFkZCBTUUwgdG8gcmV0cmlldmUgZGVwZW5kZW5j aWVzIGZvciBHcmVlblBsdW0KLSBFeHRyYWN0IFJvbGUgRGVwZW5kZW5jaWVz IGZyb20gc2luZ2xlIGRlcGVuZGVudHMgZmlsZQotIFNwbGl0IHRlbXBsYXRl IGZvciBkZXBlbmRlbnRzIFNRTAotIEFkZCAnU0VUIExPQ0FMIGpvaW5fY29s bGFwc2VfbGltaXQ9ODsnIHRvIGRlcGVuZGVuY3kvZGVwZW5kZW50cyB0byBt YWtlIHRoZW0gZmFzdGVyLiBPbmx5IGNhdmVhdCBpcyB0aGF0IHRoaXMgd2ls bCByZW1haW4gdW5jaGFuZ2VkIGZvciB0aGUgc2Vzc2lvbgotIEFkZCBtb3Jl IGV4cGVjdGF0aW9ucyB0byByb2xlIGRlcGVuZGVuY2llcwotIFNwZWNpZnkg b3JkZXIgb2YgcXVlcnkgaW4gY29weV9zZWxlY3RlZF9xdWVyeV9yZXN1bHRz X2ZlYXR1cmVfdGVzdCB0byBtYWtlIHRlc3RzIHBhc3MKLSBHcmVlblBsdW0g YW5kIFBvc3RncmVzIG9yZGVyIHRoZXNlIHJlc3VsdHMgZGlmZmVyZW50bHkg YnkgZGVmYXVsdCB3aXRob3V0IGFuIG9yZGVyIGNsYXVzZSBzcGVjaWZpZWQu Ci0gU2tpcCBYU1MgdGVzdCBmb3IgR3JlZW5QbHVtCi0gTW92ZWQgdGVzdHMg dG8gdGhlIGNvcnJlY3QgZm9sZGVycwotLS0KIC4uLi9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL19faW5pdF9fLnB5IHwgIDAKIC4uLi9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL19faW5pdF9fLnB5ICAg IHwgIDAKIC4uLi90ZW1wbGF0ZXMvY29sdW1uL3NxbC85LjJfcGx1cy9fX2lu aXRfXy5weSAgICAgIHwgIDAKIC4uLi90ZW1wbGF0ZXMvY29sdW1uL3NxbC9k ZWZhdWx0L19faW5pdF9fLnB5ICAgICAgIHwgIDAKIC4uLi90ZW1wbGF0ZXMv Y29sdW1uL3NxbC90ZXN0cy90ZXN0X2NvbHVtbl9hY2wucHkgIHwgNDcgLS0t LS0tLS0tLS0tLQogLi4uL2NvbHVtbi9zcWwvdGVzdHMvdGVzdF9jb2x1bW5f cHJvcGVydGllcy5weSAgICAgfCA1NiAtLS0tLS0tLS0tLS0tLS0tCiAuLi4v c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL19faW5pdF9fLnB5ICAg ICB8ICAwCiAuLi4vc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC9fX2luaXRfXy5weSB8ICAwCiAuLi4vdGFibGVzL3RlbXBsYXRlcy90YWJs ZS9zcWwvdGVzdHMvX19pbml0X18ucHkgICB8ICAwCiAuLi4vdGVtcGxhdGVz L3RhYmxlL3NxbC90ZXN0cy90ZXN0X3RhYmxlc19hY2wucHkgICB8IDY2IC0t LS0tLS0tLS0tLS0tLS0tLS0KIC4uLi90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rl c3RzL3Rlc3RfdGFibGVzX25vZGUucHkgIHwgNzQgLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAuLi4vdGFibGUvc3FsL3Rlc3RzL3Rlc3RfdGFibGVzX3Byb3Bl cnRpZXMucHkgICAgICB8IDc3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC4u Li90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvOS4xX3BsdXMvX19pbml0X18ucHkg ICAgIHwgIDAKIC4uLi90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsL19f aW5pdF9fLnB5ICAgICAgIHwgIDAKIC4uLi90ZW1wbGF0ZXMvdHJpZ2dlci9z cWwvZGVmYXVsdC9fX2luaXRfXy5weSAgICAgIHwgIDAKIC4uLi90YWJsZXMv dGVtcGxhdGVzL3RyaWdnZXIvc3FsL3Rlc3RzL19faW5pdF9fLnB5IHwgIDAK IC4uLi90cmlnZ2VyL3NxbC90ZXN0cy90ZXN0X3RyaWdnZXJfZ2V0X29pZC5w eSAgICAgIHwgNjAgLS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9zY2hlbWFzL3Rh Ymxlcy90ZXN0cy90ZXN0X2NvbHVtbl9hY2xfc3FsLnB5ICAgIHwgNTEgKysr KysrKysrKysrKysKIC4uLi90YWJsZXMvdGVzdHMvdGVzdF9jb2x1bW5fcHJv cGVydGllc19zcWwucHkgICAgIHwgNTIgKysrKysrKysrKysrKysrCiAuLi4v c2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNfYWNsX3NxbC5weSAg ICB8IDU0ICsrKysrKysrKysrKysrKwogLi4uL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdGFibGVzX25vZGVfc3FsLnB5ICAgfCA1NSArKysrKysrKysr KysrKysrCiAuLi4vdGFibGVzL3Rlc3RzL3Rlc3RfdGFibGVzX3Byb3BlcnRp ZXNfc3FsLnB5ICAgICB8IDcyICsrKysrKysrKysrKysrKysrKysrCiAuLi4v dGFibGVzL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9nZXRfb2lkX3NxbC5weSAgICAg ICB8IDUyICsrKysrKysrKysrKysrKwogLi4uL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdHJpZ2dlcl9ub2Rlc19zcWwucHkgfCA0MyArKysrKysrKysr KysKIC4uLi9kZXBlbmRzL3NxbC85LjFfcGx1cy9kZXBlbmRlbmNpZXMuc3Fs ICAgICAgICAgIHwgNDUgKysrKysrKysrKysrKwogLi4uL3RlbXBsYXRlcy9k ZXBlbmRzL3NxbC85LjFfcGx1cy9kZXBlbmRlbnRzLnNxbCAgfCA0NCArKysr KysrKysrKysrCiAuLi4vdGVtcGxhdGVzL2RlcGVuZHMvc3FsL2RlZmF1bHQv ZGVwZW5kZW5jaWVzLnNxbCB8IDQyICsrKysrKysrKysrKwogLi4uL3RlbXBs YXRlcy9kZXBlbmRzL3NxbC9kZWZhdWx0L2RlcGVuZGVudHMuc3FsICAgfCA2 NiArLS0tLS0tLS0tLS0tLS0tLS0tCiAuLi4vZGVwZW5kcy9zcWwvZGVmYXVs dC9yb2xlX2RlcGVuZGVuY2llcy5zcWwgICAgICB8ICA0ICsrCiAuLi4vc2Vy dmVycy90ZXN0cy90ZXN0X2RlcGVuZGVuY2llc19zcWwucHkgICAgICAgICB8 IDUxICsrKysrKysrKysrKysrCiAuLi4vc2VydmVycy90ZXN0cy90ZXN0X2Rl cGVuZGVudHNfc3FsLnB5ICAgICAgICAgICB8IDUxICsrKysrKysrKysrKysr CiAuLi4vc2VydmVycy90ZXN0cy90ZXN0X3JvbGVfZGVwZW5kZW5jaWVzX3Nx bC5weSAgICB8IDc2ICsrKysrKysrKysrKysrKysrKysrKwogd2ViL3BnYWRt aW4vYnJvd3Nlci91dGlscy5weSAgICAgICAgICAgICAgICAgICAgICAgfCAx MCArLS0KIC4uLi9jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVhdHVy ZV90ZXN0LnB5ICAgIHwgMTEgKysrLQogLi4uL3hzc19jaGVja3NfcGdhZG1p bl9kZWJ1Z2dlcl90ZXN0LnB5ICAgICAgICAgICAgfCAgNiArLQogLi4uL3B5 dGhvbl90ZXN0X3V0aWxzL3NxbF90ZW1wbGF0ZV90ZXN0X2Jhc2UucHl9ICAg fCA1MiArKysrKysrKy0tLS0tLS0KIDM2IGZpbGVzIGNoYW5nZWQsIDc0NSBp bnNlcnRpb25zKCspLCA0NzIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAx MDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9fX2luaXRf Xy5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy90ZW1wbGF0ZXMvY29sdW1uL19faW5pdF9fLnB5CiBkZWxldGUgbW9kZSAx MDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4v c3FsLzkuMl9wbHVzL19faW5pdF9fLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQg d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsL2Rl ZmF1bHQvX19pbml0X18ucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvdGVzdHMvdGVz dF9jb2x1bW5fYWNsLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsL3Rlc3RzL3Rlc3Rf Y29sdW1uX3Byb3BlcnRpZXMucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL19faW5pdF9fLnB5 CiBkZWxldGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvX19pbml0X18ucHkKIGRlbGV0ZSBtb2RlIDEw MDY0NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3Nx bC90ZXN0cy9fX2luaXRfXy5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3RzL3Rl c3RfdGFibGVzX2FjbC5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3RzL3Rlc3Rf dGFibGVzX25vZGUucHkKIGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC90ZXN0cy90ZXN0X3Rh Ymxlc19wcm9wZXJ0aWVzLnB5CiBkZWxldGUgbW9kZSAxMDA2NDQgd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1 cy9fX2luaXRfXy5weQogZGVsZXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvX19pbml0X18ucHkK IGRlbGV0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVt cGxhdGVzL3RyaWdnZXIvc3FsL2RlZmF1bHQvX19pbml0X18ucHkKIGRlbGV0 ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXIvc3FsL3Rlc3RzL19faW5pdF9fLnB5CiBkZWxldGUgbW9kZSAx MDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2Vy L3NxbC90ZXN0cy90ZXN0X3RyaWdnZXJfZ2V0X29pZC5weQogY3JlYXRlIG1v ZGUgMTAwNjQ0IHdlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X2Nv bHVtbl9hY2xfc3FsLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfY29sdW1uX3Byb3BlcnRpZXNfc3Fs LnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3Rlc3RzL3Rlc3RfdGFibGVzX2FjbF9zcWwucHkKIGNyZWF0ZSBtb2RlIDEw MDY0NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNf bm9kZV9zcWwucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNfcHJvcGVydGllc19zcWwucHkK IGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVz dHMvdGVzdF90cmlnZ2VyX2dldF9vaWRfc3FsLnB5CiBjcmVhdGUgbW9kZSAx MDA2NDQgd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rlc3RzL3Rlc3RfdHJpZ2dl cl9ub2Rlc19zcWwucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvZGVw ZW5kcy9zcWwvOS4xX3BsdXMvZGVwZW5kZW5jaWVzLnNxbAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHdlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3NxbC85LjFfcGx1cy9kZXBlbmRl bnRzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3Nx bC9kZWZhdWx0L2RlcGVuZGVuY2llcy5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0 NCB3ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90 ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvZGVmYXVsdC9yb2xlX2RlcGVuZGVuY2ll cy5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X2RlcGVuZGVuY2ll c19zcWwucHkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZXN0cy90ZXN0X2RlcGVuZGVu dHNfc3FsLnB5CiBjcmVhdGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9yb2xlX2Rl cGVuZGVuY2llc19zcWwucHkKIHJlbmFtZSB3ZWIve3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC90ZXN0cy90ZXN0X3RyaWdnZXJf bm9kZXMucHkgPT4gcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy9zcWxf dGVtcGxhdGVfdGVzdF9iYXNlLnB5fSAoNTklKQoKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL19faW5pdF9fLnB5CmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Yi4uMDAwMDAw MDAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1uL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjliLi4wMDAwMDAwMApkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3Fs LzkuMl9wbHVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy9jb2x1bW4vc3FsLzkuMl9wbHVzL19faW5pdF9fLnB5CmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Yi4uMDAwMDAw MDAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvY29sdW1uL3NxbC9kZWZhdWx0L19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsL2RlZmF1bHQvX19p bml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRl MjliLi4wMDAwMDAwMApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy9jb2x1bW4vc3FsL3Rlc3RzL3Rlc3RfY29sdW1uX2Fj bC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1u L3NxbC90ZXN0cy90ZXN0X2NvbHVtbl9hY2wucHkKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDdiZTk0NWM3Li4wMDAwMDAwMAotLS0gYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvdGVzdHMv dGVzdF9jb2x1bW5fYWNsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAs MCBAQAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gcGdhZG1pbi51 dGlscy5kcml2ZXIgaW1wb3J0IERyaXZlclJlZ2lzdHJ5Ci1mcm9tIHJlZ3Jl c3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMudGVtcGxhdGVfaGVscGVyIGltcG9y dCBmaWxlX2FzX3RlbXBsYXRlCi0KLURyaXZlclJlZ2lzdHJ5LmxvYWRfZHJp dmVycygpCi1mcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VU ZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMgaW1wb3J0IHRlc3RfdXRpbHMKLQotaWYgc3lzLnZlcnNpb25faW5mb1sw XSA+PSAzOgotICAgIGxvbmcgPSBpbnQKLQotCi1jbGFzcyBUZXN0Q29sdW1u QWNsKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICBkZWYgcnVuVGVzdChzZWxm KToKLSAgICAgICAgIiIiIFdoZW4gdGhlcmUgYXJlIG5vIHBlcm1pc3Npb25z IG9uIHRoZSBjb2x1bW4sIGl0IHJldHVybnMgYW4gZW1wdHkgcmVzdWx0ICIi IgotICAgICAgICB3aXRoIHRlc3RfdXRpbHMuRGF0YWJhc2Uoc2VsZi5zZXJ2 ZXIpIGFzIChjb25uZWN0aW9uLCBkYXRhYmFzZV9uYW1lKToKLSAgICAgICAg ICAgIHRlc3RfdXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBkYXRh YmFzZV9uYW1lLCAidGVzdF90YWJsZSIpCi0KLSAgICAgICAgICAgIGN1cnNv ciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgIGN1cnNvci5l eGVjdXRlKCJTRUxFQ1QgcGdfY2xhc3Mub2lkIGFzIHRhYmxlX2lkLCAiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAicGdfYXR0cmlidXRlLmF0dG51 bSBhcyBjb2x1bW5faWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg IkZST00gcGdfY2xhc3Mgam9pbiBwZ19hdHRyaWJ1dGUgb24gYXR0cmVsaWQ9 cGdfY2xhc3Mub2lkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3 aGVyZSBwZ19jbGFzcy5yZWxuYW1lPSd0ZXN0X3RhYmxlJyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgYW5kIHBnX2F0dHJpYnV0ZS5hdHRuYW1l ID0gJ3NvbWVfY29sdW1uJyIpCi0gICAgICAgICAgICB0YWJsZV9pZCwgY29s dW1uX2lkID0gY3Vyc29yLmZldGNob25lKCkKLQotICAgICAgICAgICAgaWYg Y29ubmVjdGlvbi5zZXJ2ZXJfdmVyc2lvbiA8IDkwMTAwOgotICAgICAgICAg ICAgICAgIHNlbGYudmVyc2lvbnNfdG9fdGVzdCA9IFsnZGVmYXVsdCddCi0g ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudmVyc2lv bnNfdG9fdGVzdCA9IFsnOS4xX3BsdXMnXQotCi0gICAgICAgICAgICBmb3Ig dmVyc2lvbiBpbiBzZWxmLnZlcnNpb25zX3RvX3Rlc3Q6Ci0gICAgICAgICAg ICAgICAgdGVtcGxhdGVfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp cm5hbWUoX19maWxlX18pLCAiLi4iLCB2ZXJzaW9uLCAiYWNsLnNxbCIpCi0g ICAgICAgICAgICAgICAgdGVtcGxhdGUgPSBmaWxlX2FzX3RlbXBsYXRlKHRl bXBsYXRlX2ZpbGUpCi0KLSAgICAgICAgICAgICAgICBwdWJsaWNfc2NoZW1h X2lkID0gMjIwMAotICAgICAgICAgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJl bmRlcihzY2lkPXB1YmxpY19zY2hlbWFfaWQsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHRpZD10YWJsZV9pZCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZD1jb2x1bW5faWQK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0g ICAgICAgICAgICAgICAgY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQot ICAgICAgICAgICAgICAgIGN1cnNvci5leGVjdXRlKHNxbCkKLSAgICAgICAg ICAgICAgICBmZXRjaF9yZXN1bHQgPSBjdXJzb3IuZmV0Y2hhbGwoKQotICAg ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGZldGNoX3Jl c3VsdCkpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3RlbXBsYXRlcy9jb2x1bW4vc3Fs L3Rlc3RzL3Rlc3RfY29sdW1uX3Byb3BlcnRpZXMucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL2NvbHVtbi9zcWwvdGVzdHMvdGVzdF9j b2x1bW5fcHJvcGVydGllcy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYjE5ODRiZGEuLjAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvY29sdW1uL3NxbC90ZXN0cy90ZXN0X2NvbHVt bl9wcm9wZXJ0aWVzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBA QAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scwotIwotIyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot aW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gcGdhZG1pbi51dGlscy5k cml2ZXIgaW1wb3J0IERyaXZlclJlZ2lzdHJ5Ci1mcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMudGVtcGxhdGVfaGVscGVyIGltcG9ydCBmaWxl X2FzX3RlbXBsYXRlCi0KLURyaXZlclJlZ2lzdHJ5LmxvYWRfZHJpdmVycygp Ci1mcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2Vu ZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1w b3J0IHRlc3RfdXRpbHMKLQotaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAz OgotICAgIGxvbmcgPSBpbnQKLQotCi1jbGFzcyBUZXN0Q29sdW1uUHJvcGVy dGllcyhCYXNlVGVzdEdlbmVyYXRvcik6Ci0gICAgZGVmIHJ1blRlc3Qoc2Vs Zik6Ci0gICAgICAgICIiIiBUaGlzIHRlc3RzIHRoYXQgY29sdW1uIHByb3Bl cnRpZXMgYXJlIHJldHVybmVkIiIiCi0gICAgICAgIHdpdGggdGVzdF91dGls cy5EYXRhYmFzZShzZWxmLnNlcnZlcikgYXMgKGNvbm5lY3Rpb24sIGRhdGFi YXNlX25hbWUpOgotICAgICAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFi bGUoc2VsZi5zZXJ2ZXIsIGRhdGFiYXNlX25hbWUsICJ0ZXN0X3RhYmxlIikK LQotICAgICAgICAgICAgY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQot ICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBvaWQgRlJPTSBw Z19jbGFzcyB3aGVyZSByZWxuYW1lPSd0ZXN0X3RhYmxlJyIpCi0gICAgICAg ICAgICB0YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCi0KLSAgICAg ICAgICAgIGlmIGNvbm5lY3Rpb24uc2VydmVyX3ZlcnNpb24gPCA5MDEwMDoK LSAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zX3RvX3Rlc3QgPSBbJ2Rl ZmF1bHQnXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz ZWxmLnZlcnNpb25zX3RvX3Rlc3QgPSBbJzkuMV9wbHVzJ10KLQotICAgICAg ICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi52ZXJzaW9uc190b190ZXN0Ogot ICAgICAgICAgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBvcy5wYXRoLmpvaW4o b3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgdmVyc2lvbiwgInBy b3BlcnRpZXMuc3FsIikKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZSA9IGZp bGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKLSAgICAgICAgICAgICAg ICBwdWJsaWNfc2NoZW1hX2lkID0gMjIwMAotICAgICAgICAgICAgICAgIHNx bCA9IHRlbXBsYXRlLnJlbmRlcihzY2lkPXB1YmxpY19zY2hlbWFfaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10YWJs ZV9pZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ci0KLSAgICAgICAgICAgICAgICBjdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNv cigpCi0gICAgICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoc3FsKQotICAg ICAgICAgICAgICAgIGZldGNoX3Jlc3VsdCA9IGN1cnNvci5mZXRjaGFsbCgp Ci0gICAgICAgICAgICAgICAgZmlyc3Rfcm93ID0ge30KLSAgICAgICAgICAg ICAgICBmb3IgaW5kZXgsIGRlc2NyaXB0aW9uIGluIGVudW1lcmF0ZShjdXJz b3IuZGVzY3JpcHRpb24pOgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9y b3dbZGVzY3JpcHRpb24ubmFtZV0gPSBmZXRjaF9yZXN1bHRbMF1baW5kZXhd Ci0KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzb21lX2Nv bHVtbicsIGZpcnN0X3Jvd1snbmFtZSddKQotICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoJ2NoYXJhY3RlciB2YXJ5aW5nJywgZmlyc3Rfcm93 WydjbHR5cGUnXSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KDIsIGxlbihmZXRjaF9yZXN1bHQpKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvX19pbml0X18u cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRlMjliLi4w MDAwMDAwMApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl bXBsYXRlcy90YWJsZS9zcWwvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC9fX2luaXRfXy5weQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOWIuLjAwMDAwMDAw CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RhYmxlL3NxbC90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3RzL19faW5pdF9fLnB5 CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5Yi4uMDAw MDAwMDAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1w bGF0ZXMvdGFibGUvc3FsL3Rlc3RzL3Rlc3RfdGFibGVzX2FjbC5weSBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3Rz L3Rlc3RfdGFibGVzX2FjbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggYTBmN2Y5NGUuLjAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3RzL3Rlc3RfdGFibGVz X2FjbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx NywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQotIyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK LSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLWltcG9ydCBv cwotaW1wb3J0IHN5cwotCi1mcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGlt cG9ydCBEcml2ZXJSZWdpc3RyeQotZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90 ZXN0X3V0aWxzLnRlbXBsYXRlX2hlbHBlciBpbXBvcnQgZmlsZV9hc190ZW1w bGF0ZQotCi1Ecml2ZXJSZWdpc3RyeS5sb2FkX2RyaXZlcnMoKQotZnJvbSBw Z2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgot ZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0 X3V0aWxzCi0KLWlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKLSAgICBs b25nID0gaW50Ci0KLQotY2xhc3MgVGVzdFRhYmxlc0FjbChCYXNlVGVzdEdl bmVyYXRvcik6Ci0gICAgc2NlbmFyaW9zID0gWwotICAgICAgICAoIlRlc3Qg cXVlcnkgcmV0dXJucyB0aGUgcGVybWlzc2lvbnMgd2hlbiB0aGVyZSBhcmUg cGVybWlzc2lvbnMgc2V0IHVwIgotICAgICAgICAgIiBvbiB0aGUgdGFibGUi LCBkaWN0KCkpCi0gICAgXQotCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0g ICAgICAgICIiIiBUaGlzIHRlc3RzIHRoYXQgd2hlbiB0aGVyZSBhcmUgcGVy bWlzc2lvbnMgc2V0IHVwIG9uIHRoZSB0YWJsZSwgYWNsIHF1ZXJ5IHJldHVy bnMgdGhlIHBlcm1pc3Npb25zIiIiCi0gICAgICAgIHdpdGggdGVzdF91dGls cy5EYXRhYmFzZShzZWxmLnNlcnZlcikgYXMgKGNvbm5lY3Rpb24sIGRhdGFi YXNlX25hbWUpOgotICAgICAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFi bGUoc2VsZi5zZXJ2ZXIsIGRhdGFiYXNlX25hbWUsICJ0ZXN0X3RhYmxlIikK LQotICAgICAgICAgICAgY3Vyc29yID0gY29ubmVjdGlvbi5jdXJzb3IoKQot ICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoIkdSQU5UIFNFTEVDVCBPTiB0 ZXN0X3RhYmxlIFRPIFBVQkxJQyIpCi0KLSAgICAgICAgICAgIGN1cnNvciA9 IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgIGN1cnNvci5leGVj dXRlKCJTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZT0n dGVzdF90YWJsZSciKQotICAgICAgICAgICAgdGFibGVfaWQgPSBjdXJzb3Iu ZmV0Y2hvbmUoKVswXQotCi0gICAgICAgICAgICBpZiBjb25uZWN0aW9uLnNl cnZlcl92ZXJzaW9uIDwgOTAxMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi52 ZXJzaW9uc190b190ZXN0ID0gWydkZWZhdWx0J10KLSAgICAgICAgICAgIGVs c2U6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc190b190ZXN0ID0g Wyc5LjFfcGx1cyddCi0KLSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHNl bGYudmVyc2lvbnNfdG9fdGVzdDoKLSAgICAgICAgICAgICAgICB0ZW1wbGF0 ZV9maWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf XyksICIuLiIsIHZlcnNpb24sICJhY2wuc3FsIikKLSAgICAgICAgICAgICAg ICB0ZW1wbGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkK LSAgICAgICAgICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0gMjIwMAotICAg ICAgICAgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcihzY2lkPXB1Ymxp Y19zY2hlbWFfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD10YWJsZV9pZCkKLQotICAgICAgICAgICAgICAgIGN1cnNv ciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgICAgICBjdXJz b3IuZXhlY3V0ZShzcWwpCi0gICAgICAgICAgICAgICAgZmV0Y2hfcmVzdWx0 ID0gY3Vyc29yLmZldGNoYWxsKCkKLSAgICAgICAgICAgICAgICBwdWJsaWNf YWNscyA9IGxpc3QoZmlsdGVyKGxhbWJkYSBhY2w6IGFjbFsxXSA9PSAnUFVC TElDJywgZmV0Y2hfcmVzdWx0KSkKLSAgICAgICAgICAgICAgICBzZWxmLmFz c2VydEVxdWFsKGxlbihwdWJsaWNfYWNscyksIDEpCi0KLSAgICAgICAgICAg ICAgICBuZXdfYWNsX21hcCA9IGRpY3QoemlwKG1hcChsYW1iZGEgY29sdW1u OiBjb2x1bW4ubmFtZSwgY3Vyc29yLmRlc2NyaXB0aW9uKSwgcHVibGljX2Fj bHNbMF0pKQotCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn UFVCTElDJywgbmV3X2FjbF9tYXBbJ2dyYW50ZWUnXSkKLSAgICAgICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2VydmVyWyd1c2VybmFtZSdd LCBuZXdfYWNsX21hcFsnZ3JhbnRvciddKQotICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoJ3JlbGFjbCcsIG5ld19hY2xfbWFwWydkZWZ0eXBl J10pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ3InXSwg bmV3X2FjbF9tYXBbJ3ByaXZpbGVnZXMnXSkKLSAgICAgICAgICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKFtGYWxzZV0sIG5ld19hY2xfbWFwWydncmFudGFi bGUnXSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RhYmxlL3NxbC90 ZXN0cy90ZXN0X3RhYmxlc19ub2RlLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvdGVzdHMvdGVzdF90YWJsZXNfbm9k ZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFlYzMyNzUu LjAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0 ZXMvdGFibGUvc3FsL3Rlc3RzL3Rlc3RfdGFibGVzX25vZGUucHkKKysrIC9k ZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIwotIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz Ci0jCi0jIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KLSMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0jCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMK LQotZnJvbSBqaW5qYTIgaW1wb3J0IEJhc2VMb2FkZXIKLWZyb20gamluamEy IGltcG9ydCBFbnZpcm9ubWVudAotCi1mcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMKLQotaWYgc3lz LnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgIGxvbmcgPSBpbnQKLQotCi1j bGFzcyBUZXN0VGFibGVzTm9kZShCYXNlVGVzdEdlbmVyYXRvcik6Ci0gICAg c2NlbmFyaW9zID0gWwotICAgICAgICAoIlRoaXMgc2NlbmFyaW8gdGVzdHMg dGhhdCBhbGwgYXBwbGljYWJsZSBzcWwgdGVtcGxhdGUgdmVyc2lvbnMgY2Fu ICIKLSAgICAgICAgICJmZXRjaCB0YWJsZSBuYW1lcyIsIGRpY3QoKSkKLSAg ICBdCi0KLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAgICAgICAgIiIiIFRo aXMgdGVzdHMgdGhhdCBhbGwgYXBwbGljYWJsZSBzcWwgdGVtcGxhdGUgdmVy c2lvbnMgY2FuIGZldGNoIHRhYmxlIG5hbWVzICIiIgotICAgICAgICB3aXRo IHRlc3RfdXRpbHMuRGF0YWJhc2Uoc2VsZi5zZXJ2ZXIpIGFzIChjb25uZWN0 aW9uLCBkYXRhYmFzZV9uYW1lKToKLSAgICAgICAgICAgIHRlc3RfdXRpbHMu Y3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBkYXRhYmFzZV9uYW1lLCAidGVz dF90YWJsZSIpCi0KLSAgICAgICAgICAgIGlmIGNvbm5lY3Rpb24uc2VydmVy X3ZlcnNpb24gPCA5MTAwMDoKLSAgICAgICAgICAgICAgICBzZWxmLnZlcnNp b25zX3RvX3Rlc3QgPSBbJ2RlZmF1bHQnXQotICAgICAgICAgICAgZWxzZToK LSAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zX3RvX3Rlc3QgPSBbJ2Rl ZmF1bHQnLCAnOS4xX3BsdXMnXQotCi0gICAgICAgICAgICBmb3IgdmVyc2lv biBpbiBzZWxmLnZlcnNpb25zX3RvX3Rlc3Q6Ci0gICAgICAgICAgICAgICAg dGVtcGxhdGVfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUo X19maWxlX18pLCAiLi4iLCB2ZXJzaW9uLCAibm9kZXMuc3FsIikKLSAgICAg ICAgICAgICAgICBmaWxlX2NvbnRlbnQgPSBvcGVuKHRlbXBsYXRlX2ZpbGUs ICdyJykucmVhZCgpCi0KLSAgICAgICAgICAgICAgICBlbnYgPSBFbnZpcm9u bWVudChsb2FkZXI9U2ltcGxlVGVtcGxhdGVMb2FkZXIoZmlsZV9jb250ZW50 KSkKLQotICAgICAgICAgICAgICAgIHRlbXBsYXRlID0gZW52LmdldF90ZW1w bGF0ZSgiIikKLSAgICAgICAgICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0g MjIwMAotICAgICAgICAgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcihz Y2lkPXB1YmxpY19zY2hlbWFfaWQpCi0KLSAgICAgICAgICAgICAgICBjdXJz b3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCi0gICAgICAgICAgICAgICAgY3Vy c29yLmV4ZWN1dGUoc3FsKQotICAgICAgICAgICAgICAgIGZldGNoX3Jlc3Vs dCA9IGN1cnNvci5mZXRjaGFsbCgpCi0KLSAgICAgICAgICAgICAgICBmaXJz dF9yb3cgPSB7fQotICAgICAgICAgICAgICAgIGZvciBpbmRleCwgZGVzY3Jp cHRpb24gaW4gZW51bWVyYXRlKGN1cnNvci5kZXNjcmlwdGlvbik6Ci0gICAg ICAgICAgICAgICAgICAgIGZpcnN0X3Jvd1tkZXNjcmlwdGlvbi5uYW1lXSA9 IGZldGNoX3Jlc3VsdFswXVtpbmRleF0KLQotICAgICAgICAgICAgICAgIG9p ZCA9IGZpcnN0X3Jvd1snb2lkJ10KLSAgICAgICAgICAgICAgICBuYW1lID0g Zmlyc3Rfcm93WyduYW1lJ10KLSAgICAgICAgICAgICAgICB0cmlnZ2VyY291 bnQgPSBmaXJzdF9yb3dbJ3RyaWdnZXJjb3VudCddCi0gICAgICAgICAgICAg ICAgaGFzX2VuYWJsZV90cmlnZ2VycyA9IGZpcnN0X3Jvd1snaGFzX2VuYWJs ZV90cmlnZ2VycyddCi0KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElz Tm90Tm9uZShsb25nKG9pZCkpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbCgndGVzdF90YWJsZScsIG5hbWUpCi0gICAgICAgICAgICAgICAg IyB0cmlnZ2VyY291bnQgaXMgc29tZXRpbWVzIHJldHVybmVkIGFzIGEgc3Ry aW5nIGZvciBzb21lIHJlYXNvbgotICAgICAgICAgICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoMCwgbG9uZyh0cmlnZ2VyY291bnQpKQotICAgICAgICAgICAg ICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGxvbmcoaGFzX2VuYWJsZV90cmln Z2VycykpCi0KLQotY2xhc3MgU2ltcGxlVGVtcGxhdGVMb2FkZXIoQmFzZUxv YWRlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfY29udGVudCk6 Ci0gICAgICAgIHNlbGYuZmlsZV9jb250ZW50ID0gZmlsZV9jb250ZW50Ci0K LSAgICBkZWYgZ2V0X3NvdXJjZShzZWxmLCAqYXJncyk6Ci0gICAgICAgIHJl dHVybiBzZWxmLmZpbGVfY29udGVudCwgInJlcXVpcmVkLXJldHVybi1ub3Qt YS1yZWFsLWZpbGUudHh0IiwgVHJ1ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90YWJsZS9zcWwvdGVzdHMvdGVzdF90 YWJsZXNfcHJvcGVydGllcy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdGFibGUvc3FsL3Rlc3RzL3Rlc3RfdGFibGVzX3Byb3BlcnRp ZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ODRiZGE1 Li4wMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RhYmxlL3NxbC90ZXN0cy90ZXN0X3RhYmxlc19wcm9wZXJ0aWVzLnB5 CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotIwotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW1wb3J0IG9zCi1pbXBv cnQgc3lzCi0KLWZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IERy aXZlclJlZ2lzdHJ5Ci1mcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMudGVtcGxhdGVfaGVscGVyIGltcG9ydCBmaWxlX2FzX3RlbXBsYXRlCi0K LURyaXZlclJlZ2lzdHJ5LmxvYWRfZHJpdmVycygpCi1mcm9tIHBnYWRtaW4u dXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCi1mcm9tIHJl Z3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMK LQotaWYgc3lzLnZlcnNpb25faW5mb1swXSA+PSAzOgotICAgIGxvbmcgPSBp bnQKLQotCi1jbGFzcyBUZXN0VGFibGVzUHJvcGVydGllcyhCYXNlVGVzdEdl bmVyYXRvcik6Ci0gICAgc2NlbmFyaW9zID0gWwotICAgICAgICAoIlRoaXMg c2NlbmFyaW8gdGVzdHMgdGhhdCBhbGwgYXBwbGljYWJsZSBzcWwgdGVtcGxh dGUgdmVyc2lvbnMgY2FuICIKLSAgICAgICAgICJmZXRjaCBzb21lIGRkbCIs IGRpY3QoKSkKLSAgICBdCi0KLSAgICBkZWYgcnVuVGVzdChzZWxmKToKLSAg ICAgICAgIiIiIFRoaXMgdGVzdHMgdGhhdCBhbGwgYXBwbGljYWJsZSBzcWwg dGVtcGxhdGUgdmVyc2lvbnMgY2FuIGZldGNoIHNvbWUgZGRsICIiIgotICAg ICAgICB3aXRoIHRlc3RfdXRpbHMuRGF0YWJhc2Uoc2VsZi5zZXJ2ZXIpIGFz IChjb25uZWN0aW9uLCBkYXRhYmFzZV9uYW1lKToKLSAgICAgICAgICAgIHRl c3RfdXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBkYXRhYmFzZV9u YW1lLCAidGVzdF90YWJsZSIpCi0KLSAgICAgICAgICAgIGN1cnNvciA9IGNv bm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgIGN1cnNvci5leGVjdXRl KHUiIiIKLSAgICAgICAgICAgIFNFTEVDVAotICAgICAgICAgICAgICAgIGRi Lm9pZCBhcyBkaWQsIGRhdGxhc3RzeXNvaWQKLSAgICAgICAgICAgIEZST00K LSAgICAgICAgICAgICAgICBwZ19kYXRhYmFzZSBkYgotICAgICAgICAgICAg V0hFUkUgZGIuZGF0bmFtZSA9ICd7MH0nIiIiLmZvcm1hdChkYXRhYmFzZV9u YW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg ICAgZGF0YWJhc2VfaWQsIGxhc3Rfc3lzdGVtX29pZCA9IGN1cnNvci5mZXRj aG9uZSgpCi0KLSAgICAgICAgICAgIGN1cnNvciA9IGNvbm5lY3Rpb24uY3Vy c29yKCkKLSAgICAgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1Qgb2lk IEZST00gcGdfY2xhc3Mgd2hlcmUgcmVsbmFtZT0ndGVzdF90YWJsZSciKQot ICAgICAgICAgICAgdGFibGVfaWQgPSBjdXJzb3IuZmV0Y2hvbmUoKVswXQot Ci0gICAgICAgICAgICBpZiBjb25uZWN0aW9uLnNlcnZlcl92ZXJzaW9uIDwg OTAxMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc190b190ZXN0 ID0gWydkZWZhdWx0J10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICAgICAgc2VsZi52ZXJzaW9uc190b190ZXN0ID0gWyc5LjFfcGx1cyddCi0K LSAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYudmVyc2lvbnNfdG9f dGVzdDoKLSAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9maWxlID0gb3MucGF0 aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsIHZlcnNp b24sICJwcm9wZXJ0aWVzLnNxbCIpCi0gICAgICAgICAgICAgICAgdGVtcGxh dGUgPSBmaWxlX2FzX3RlbXBsYXRlKHRlbXBsYXRlX2ZpbGUpCi0KLSAgICAg ICAgICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0gMjIwMAotICAgICAgICAg ICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcihzY2lkPXB1YmxpY19zY2hl bWFfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRpZD1kYXRhYmFzZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1sYXN0X3N5c3RlbV9vaWQsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpZD10YWJs ZV9pZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp Ci0KLSAgICAgICAgICAgICAgICBjdXJzb3IgPSBjb25uZWN0aW9uLmN1cnNv cigpCi0gICAgICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoc3FsKQotICAg ICAgICAgICAgICAgIGZldGNoX3Jlc3VsdCA9IGN1cnNvci5mZXRjaG9uZSgp Ci0KLSAgICAgICAgICAgICAgICBmaXJzdF9yb3cgPSB7fQotICAgICAgICAg ICAgICAgIGZvciBpbmRleCwgZGVzY3JpcHRpb24gaW4gZW51bWVyYXRlKGN1 cnNvci5kZXNjcmlwdGlvbik6Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0 X3Jvd1tkZXNjcmlwdGlvbi5uYW1lXSA9IGZldGNoX3Jlc3VsdFtpbmRleF0K LQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3RfdGFi bGUnLCBmaXJzdF9yb3dbJ25hbWUnXSkKLSAgICAgICAgICAgICAgICAjIHRy aWdnZXJjb3VudCBpcyBzb21ldGltZXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcg Zm9yIHNvbWUgcmVhc29uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbCgwLCBsb25nKGZpcnN0X3Jvd1sndHJpZ2dlcmNvdW50J10pKQotICAg ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZmlyc3Rfcm93 Wyd0eXBuYW1lJ10pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChbXSwgZmlyc3Rfcm93Wydjb2xsX2luaGVyaXRzJ10pCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3Fs LzkuMV9wbHVzL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3RlbXBsYXRlcy90cmlnZ2VyL3NxbC85LjFfcGx1cy9fX2luaXRfXy5weQpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOWIuLjAwMDAw MDAwCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RyaWdnZXIvc3FsL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC9fX2luaXRfXy5weQpkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY5ZGUyOWIuLjAwMDAwMDAw CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVz L3RyaWdnZXIvc3FsL2RlZmF1bHQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsL2RlZmF1bHQvX19p bml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2OWRl MjliLi4wMDAwMDAwMApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC90ZXN0cy9fX2luaXRfXy5weSBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZW1wbGF0ZXMvdHJpZ2dlci9zcWwv dGVzdHMvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGU2OWRlMjliLi4wMDAwMDAwMApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC90ZXN0cy90ZXN0 X3RyaWdnZXJfZ2V0X29pZC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZW1wbGF0ZXMvdHJpZ2dlci9zcWwvdGVzdHMvdGVzdF90cmlnZ2VyX2dldF9v aWQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyYjYzN2Vl Li4wMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxh dGVzL3RyaWdnZXIvc3FsL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9nZXRfb2lkLnB5 CisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotIwotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotaW1wb3J0IG9zCi1pbXBv cnQgc3lzCi0KLWltcG9ydCBqaW5qYTIKLQotZnJvbSBwZ2FkbWluLnV0aWxz LmRyaXZlciBpbXBvcnQgRHJpdmVyUmVnaXN0cnkKLWZyb20gcmVncmVzc2lv bi5weXRob25fdGVzdF91dGlscy50ZW1wbGF0ZV9oZWxwZXIgaW1wb3J0IGZp bGVfYXNfdGVtcGxhdGUKLQotRHJpdmVyUmVnaXN0cnkubG9hZF9kcml2ZXJz KCkKLWZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RH ZW5lcmF0b3IKLWZyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscyBp bXBvcnQgdGVzdF91dGlscwotCi1pZiBzeXMudmVyc2lvbl9pbmZvWzBdID49 IDM6Ci0gICAgbG9uZyA9IGludAotCi0KLWNsYXNzIFRlc3RUcmlnZ2VyR2V0 T2lkKEJhc2VUZXN0R2VuZXJhdG9yKToKLSAgICBkZWYgcnVuVGVzdChzZWxm KToKLSAgICAgICAgIiIiIFdoZW4gdGhlcmUgYXJlIG5vIHBlcm1pc3Npb25z IG9uIHRoZSBjb2x1bW4sIGl0IHJldHVybnMgYW4gZW1wdHkgcmVzdWx0ICIi IgotICAgICAgICB3aXRoIHRlc3RfdXRpbHMuRGF0YWJhc2Uoc2VsZi5zZXJ2 ZXIpIGFzIChjb25uZWN0aW9uLCBkYXRhYmFzZV9uYW1lKToKLSAgICAgICAg ICAgIHRlc3RfdXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBkYXRh YmFzZV9uYW1lLCAidGVzdF90YWJsZSIpCi0KLSAgICAgICAgICAgIGN1cnNv ciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKLSAgICAgICAgICAgIGN1cnNvci5l eGVjdXRlKCJTRUxFQ1QgcGdfY2xhc3Mub2lkIGFzIHRhYmxlX2lkLCAiCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAicGdfYXR0cmlidXRlLmF0dG51 bSBhcyBjb2x1bW5faWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg IkZST00gcGdfY2xhc3Mgam9pbiBwZ19hdHRyaWJ1dGUgb24gYXR0cmVsaWQ9 cGdfY2xhc3Mub2lkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3 aGVyZSBwZ19jbGFzcy5yZWxuYW1lPSd0ZXN0X3RhYmxlJyIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICIgYW5kIHBnX2F0dHJpYnV0ZS5hdHRuYW1l ID0gJ3NvbWVfY29sdW1uJyIpCi0gICAgICAgICAgICB0YWJsZV9pZCwgY29s dW1uX2lkID0gY3Vyc29yLmZldGNob25lKCkKLQotICAgICAgICAgICAgaWYg Y29ubmVjdGlvbi5zZXJ2ZXJfdmVyc2lvbiA8IDkwMTAwOgotICAgICAgICAg ICAgICAgIHNlbGYudmVyc2lvbnNfdG9fdGVzdCA9IFsnZGVmYXVsdCddCi0g ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYudmVyc2lv bnNfdG9fdGVzdCA9IFsnOS4xX3BsdXMnXQotCi0gICAgICAgICAgICBmb3Ig dmVyc2lvbiBpbiBzZWxmLnZlcnNpb25zX3RvX3Rlc3Q6Ci0gICAgICAgICAg ICAgICAgdGVtcGxhdGVfZmlsZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRp cm5hbWUoX19maWxlX18pLCAiLi4iLCB2ZXJzaW9uLCAiZ2V0X29pZC5zcWwi KQotCi0gICAgICAgICAgICAgICAgamluamEyLmZpbHRlcnMuRklMVEVSU1sn cXRMaXRlcmFsJ10gPSBsYW1iZGEgdmFsdWU6ICJOVUxMIgotICAgICAgICAg ICAgICAgIHRlbXBsYXRlID0gZmlsZV9hc190ZW1wbGF0ZSh0ZW1wbGF0ZV9m aWxlKQotCi0gICAgICAgICAgICAgICAgc3FsID0gdGVtcGxhdGUucmVuZGVy KGRhdGE9eyduYW1lJzogTm9uZX0sCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRpZD10YWJsZV9pZAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCi0KLSAgICAgICAgICAgICAgICBj dXJzb3IgPSBjb25uZWN0aW9uLmN1cnNvcigpCi0gICAgICAgICAgICAgICAg Y3Vyc29yLmV4ZWN1dGUoc3FsKQotICAgICAgICAgICAgICAgIGZldGNoX3Jl c3VsdCA9IGN1cnNvci5mZXRjaGFsbCgpCi0gICAgICAgICAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbCgwLCBsZW4oZmV0Y2hfcmVzdWx0KSkKLQotCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF9jb2x1 bW5fYWNsX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90 ZXN0X2NvbHVtbl9hY2xfc3FsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi41YmE1NjBmZAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X2NvbHVtbl9hY2xfc3Fs LnB5CkBAIC0wLDAgKzEsNTEgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBvcworCitmcm9tIHJlZ3Jlc3Np b24ucHl0aG9uX3Rlc3RfdXRpbHMuc3FsX3RlbXBsYXRlX3Rlc3RfYmFzZSBp bXBvcnQgU1FMVGVtcGxhdGVUZXN0QmFzZQorZnJvbSByZWdyZXNzaW9uLnB5 dGhvbl90ZXN0X3V0aWxzLnRlbXBsYXRlX2hlbHBlciBpbXBvcnQgZmlsZV9h c190ZW1wbGF0ZQorCisKK2NsYXNzIFRlc3RDb2x1bW5BY2xTcWwoU1FMVGVt cGxhdGVUZXN0QmFzZSk6CisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAj IEZldGNoaW5nIGRlZmF1bHQgVVJMIGZvciBzY2hlbWEgbm9kZS4KKyAgICAg ICAgKCdUZXN0IENvbHVtbiBBQ0wgU1FMIGZpbGUnLCBkaWN0KCkpCisgICAg XQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzdXBlcihU ZXN0Q29sdW1uQWNsU3FsLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNl bGYudGFibGVfaWQgPSAtMQorICAgICAgICBzZWxmLmNvbHVtbl9pZCA9IC0x CisKKyAgICBkZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBjdXJz b3IpOgorICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiU0VMRUNUIHBnX2NsYXNz Lm9pZCBBUyB0YWJsZV9pZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAi cGdfYXR0cmlidXRlLmF0dG51bSBBUyBjb2x1bW5faWQgIgorICAgICAgICAg ICAgICAgICAgICAgICAiRlJPTSBwZ19jbGFzcyBKT0lOIHBnX2F0dHJpYnV0 ZSBPTiBhdHRyZWxpZD1wZ19jbGFzcy5vaWQgIgorICAgICAgICAgICAgICAg ICAgICAgICAiV0hFUkUgcGdfY2xhc3MucmVsbmFtZT0ndGVzdF90YWJsZSci CisgICAgICAgICAgICAgICAgICAgICAgICIgQU5EIHBnX2F0dHJpYnV0ZS5h dHRuYW1lID0gJ3NvbWVfY29sdW1uJyIpCisgICAgICAgIHNlbGYudGFibGVf aWQsIHNlbGYuY29sdW1uX2lkID0gY3Vyc29yLmZldGNob25lKCkKKworICAg IGRlZiBnZW5lcmF0ZV9zcWwoc2VsZiwgdmVyc2lvbik6CisgICAgICAgIHRl bXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZlcnNpb24s ICJhY2wuc3FsIikKKyAgICAgICAgdGVtcGxhdGUgPSBmaWxlX2FzX3RlbXBs YXRlKHRlbXBsYXRlX2ZpbGUpCisgICAgICAgIHB1YmxpY19zY2hlbWFfaWQg PSAyMjAwCisgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcihzY2lkPXB1 YmxpY19zY2hlbWFfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0aWQ9c2VsZi50YWJsZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNsaWQ9c2VsZi5jb2x1bW5faWQKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKKworICAgICAgICByZXR1cm4gc3FsCisKKyAgICBk ZWYgYXNzZXJ0aW9ucyhzZWxmLCBmZXRjaF9yZXN1bHQsIGRlc2NyaXB0aW9u cyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGZldGNoX3Jl c3VsdCkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF90ZW1w bGF0ZV9maWxlKHZlcnNpb24sIGZpbGVuYW1lKToKKyAgICAgICAgcmV0dXJu IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4i LCAidGVtcGxhdGVzIiwgImNvbHVtbiIsICJzcWwiLCB2ZXJzaW9uLCBmaWxl bmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy90ZXN0X2NvbHVtbl9wcm9wZXJ0aWVzX3NxbC5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy90ZXN0cy90ZXN0X2NvbHVtbl9wcm9wZXJ0aWVzX3NxbC5w eQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uY2U2ZmE5 NzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv dGVzdHMvdGVzdF9jb2x1bW5fcHJvcGVydGllc19zcWwucHkKQEAgLTAsMCAr MSw1MiBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMg cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworaW1wb3J0IG9zCisKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVz dF91dGlscy5zcWxfdGVtcGxhdGVfdGVzdF9iYXNlIGltcG9ydCBTUUxUZW1w bGF0ZVRlc3RCYXNlCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMudGVtcGxhdGVfaGVscGVyIGltcG9ydCBmaWxlX2FzX3RlbXBsYXRlCisK KworY2xhc3MgVGVzdENvbHVtblByb3BlcnRpZXNTcWwoU1FMVGVtcGxhdGVU ZXN0QmFzZSk6CisgICAgc2NlbmFyaW9zID0gWworICAgICAgICAjIEZldGNo aW5nIGRlZmF1bHQgVVJMIGZvciBzY2hlbWEgbm9kZS4KKyAgICAgICAgKCdU ZXN0IENvbHVtbiBQcm9wZXJ0aWVzIFNRTCBmaWxlJywgZGljdCgpKQorICAg IF0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIo VGVzdENvbHVtblByb3BlcnRpZXNTcWwsIHNlbGYpLl9faW5pdF9fKCkKKyAg ICAgICAgc2VsZi50YWJsZV9pZCA9IC0xCisKKyAgICBkZWYgdGVzdF9zZXR1 cChzZWxmLCBjb25uZWN0aW9uLCBjdXJzb3IpOgorICAgICAgICBjdXJzb3Iu ZXhlY3V0ZSgiU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIHdoZXJlIHJlbG5h bWU9J3Rlc3RfdGFibGUnIikKKworICAgICAgICBzZWxmLnRhYmxlX2lkID0g Y3Vyc29yLmZldGNob25lKClbMF0KKworICAgIGRlZiBnZW5lcmF0ZV9zcWwo c2VsZiwgdmVyc2lvbik6CisgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxm LmdldF90ZW1wbGF0ZV9maWxlKHZlcnNpb24sICJwcm9wZXJ0aWVzLnNxbCIp CisgICAgICAgIHRlbXBsYXRlID0gZmlsZV9hc190ZW1wbGF0ZSh0ZW1wbGF0 ZV9maWxlKQorICAgICAgICBwdWJsaWNfc2NoZW1hX2lkID0gMjIwMAorICAg ICAgICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIoc2NpZD1wdWJsaWNfc2NoZW1h X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlkPXNlbGYu dGFibGVfaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKwor ICAgICAgICByZXR1cm4gc3FsCisKKyAgICBkZWYgYXNzZXJ0aW9ucyhzZWxm LCBmZXRjaF9yZXN1bHQsIGRlc2NyaXB0aW9ucyk6CisgICAgICAgIGZpcnN0 X3JvdyA9IHt9CisgICAgICAgIGZvciBpbmRleCwgZGVzY3JpcHRpb24gaW4g ZW51bWVyYXRlKGRlc2NyaXB0aW9ucyk6CisgICAgICAgICAgICBmaXJzdF9y b3dbZGVzY3JpcHRpb24ubmFtZV0gPSBmZXRjaF9yZXN1bHRbMF1baW5kZXhd CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc29tZV9jb2x1bW4nLCBm aXJzdF9yb3dbJ25hbWUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn Y2hhcmFjdGVyIHZhcnlpbmcnLCBmaXJzdF9yb3dbJ2NsdHlwZSddKQorICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihmZXRjaF9yZXN1bHQpKQor CisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfdGVtcGxhdGVfZmls ZSh2ZXJzaW9uLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiBvcy5wYXRo LmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRlbXBs YXRlcyIsICJjb2x1bW4iLCAic3FsIiwgdmVyc2lvbiwgZmlsZW5hbWUpCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90 YWJsZXNfYWNsX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0 cy90ZXN0X3RhYmxlc19hY2xfc3FsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5kZTQ5ODUyYwotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0X3RhYmxlc19hY2xf c3FsLnB5CkBAIC0wLDAgKzEsNTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK KyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBvcworZnJvbSByZWdyZXNz aW9uLnB5dGhvbl90ZXN0X3V0aWxzLnRlbXBsYXRlX2hlbHBlciBpbXBvcnQg ZmlsZV9hc190ZW1wbGF0ZQorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0 X3V0aWxzLnNxbF90ZW1wbGF0ZV90ZXN0X2Jhc2UgaW1wb3J0IFNRTFRlbXBs YXRlVGVzdEJhc2UKKworCitjbGFzcyBUZXN0VGFibGVzQWNsU3FsKFNRTFRl bXBsYXRlVGVzdEJhc2UpOgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAg KCJUZXN0IHF1ZXJ5IHJldHVybnMgdGhlIHBlcm1pc3Npb25zIHdoZW4gdGhl cmUgYXJlIHBlcm1pc3Npb25zIHNldCB1cCIKKyAgICAgICAgICIgb24gdGhl IHRhYmxlIiwgZGljdCgpKQorICAgIF0KKworICAgIGRlZiBfX2luaXRfXyhz ZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdFRhYmxlc0FjbFNxbCwgc2VsZiku X19pbml0X18oKQorICAgICAgICBzZWxmLnRhYmxlX2lkID0gLTEKKworICAg IGRlZiB0ZXN0X3NldHVwKHNlbGYsIGNvbm5lY3Rpb24sIGN1cnNvcik6Cisg ICAgICAgIGN1cnNvci5leGVjdXRlKCJHUkFOVCBTRUxFQ1QgT04gdGVzdF90 YWJsZSBUTyBQVUJMSUMiKQorICAgICAgICBjdXJzb3IgPSBjb25uZWN0aW9u LmN1cnNvcigpCisgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1Qgb2lk IEZST00gcGdfY2xhc3MgV0hFUkUgcmVsbmFtZT0ndGVzdF90YWJsZSciKQor ICAgICAgICBzZWxmLnRhYmxlX2lkID0gY3Vyc29yLmZldGNob25lKClbMF0K KworICAgIGRlZiBnZW5lcmF0ZV9zcWwoc2VsZiwgdmVyc2lvbik6CisgICAg ICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9maWxlKHZl cnNpb24sICJhY2wuc3FsIikKKyAgICAgICAgdGVtcGxhdGUgPSBmaWxlX2Fz X3RlbXBsYXRlKHRlbXBsYXRlX2ZpbGUpCisgICAgICAgIHB1YmxpY19zY2hl bWFfaWQgPSAyMjAwCisgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcihz Y2lkPXB1YmxpY19zY2hlbWFfaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0aWQ9c2VsZi50YWJsZV9pZCkKKyAgICAgICAgcmV0dXJuIHNx bAorCisgICAgZGVmIGFzc2VydGlvbnMoc2VsZiwgZmV0Y2hfcmVzdWx0LCBk ZXNjcmlwdGlvbnMpOgorICAgICAgICBwdWJsaWNfYWNscyA9IGxpc3QoZmls dGVyKGxhbWJkYSBhY2w6IGFjbFsxXSA9PSAnUFVCTElDJywgZmV0Y2hfcmVz dWx0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocHVibGljX2Fj bHMpLCAxKQorCisgICAgICAgIG5ld19hY2xfbWFwID0gZGljdCh6aXAobWFw KGxhbWJkYSBjb2x1bW46IGNvbHVtbi5uYW1lLCBkZXNjcmlwdGlvbnMpLCBw dWJsaWNfYWNsc1swXSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn UFVCTElDJywgbmV3X2FjbF9tYXBbJ2dyYW50ZWUnXSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChzZWxmLnNlcnZlclsndXNlcm5hbWUnXSwgbmV3X2Fj bF9tYXBbJ2dyYW50b3InXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn cmVsYWNsJywgbmV3X2FjbF9tYXBbJ2RlZnR5cGUnXSkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChbJ3InXSwgbmV3X2FjbF9tYXBbJ3ByaXZpbGVnZXMn XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRmFsc2VdLCBuZXdfYWNs X21hcFsnZ3JhbnRhYmxlJ10pCisgICAgICAgIHJldHVybiBwdWJsaWNfYWNs cworCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfdGVtcGxhdGVf ZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiBvcy5w YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgInRl bXBsYXRlcyIsICJ0YWJsZSIsICJzcWwiLCB2ZXJzaW9uLCBmaWxlbmFtZSkK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90ZXN0 X3RhYmxlc19ub2RlX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90 ZXN0cy90ZXN0X3RhYmxlc19ub2RlX3NxbC5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMC4uMWYzNDRkYTMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNf bm9kZV9zcWwucHkKQEAgLTAsMCArMSw1NSBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IG9zCitpbXBvcnQg c3lzCisKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscy5zcWxf dGVtcGxhdGVfdGVzdF9iYXNlIGltcG9ydCBTUUxUZW1wbGF0ZVRlc3RCYXNl Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMudGVtcGxhdGVf aGVscGVyIGltcG9ydCBmaWxlX2FzX3RlbXBsYXRlCisKK2lmIHN5cy52ZXJz aW9uX2luZm9bMF0gPj0gMzoKKyAgICBsb25nID0gaW50CisKKworY2xhc3Mg VGVzdFRhYmxlc05vZGVTcWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6CisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoIlRoaXMgc2NlbmFyaW8gdGVzdHMg dGhhdCBhbGwgYXBwbGljYWJsZSBzcWwgdGVtcGxhdGUgdmVyc2lvbnMgY2Fu ICIKKyAgICAgICAgICJmZXRjaCB0YWJsZSBuYW1lcyIsIGRpY3QoKSkKKyAg ICBdCisKKyAgICBkZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBj dXJzb3IpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgZ2VuZXJhdGVfc3Fs KHNlbGYsIHZlcnNpb24pOgorICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2Vs Zi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAibm9kZXMuc3FsIikKKyAg ICAgICAgdGVtcGxhdGUgPSBmaWxlX2FzX3RlbXBsYXRlKHRlbXBsYXRlX2Zp bGUpCisgICAgICAgIHB1YmxpY19zY2hlbWFfaWQgPSAyMjAwCisgICAgICAg IHNxbCA9IHRlbXBsYXRlLnJlbmRlcihzY2lkPXB1YmxpY19zY2hlbWFfaWQp CisgICAgICAgIHJldHVybiBzcWwKKworICAgIGRlZiBhc3NlcnRpb25zKHNl bGYsIGZldGNoX3Jlc3VsdCwgZGVzY3JpcHRpb25zKToKKworICAgICAgICBm aXJzdF9yb3cgPSB7fQorICAgICAgICBmb3IgaW5kZXgsIGRlc2NyaXB0aW9u IGluIGVudW1lcmF0ZShkZXNjcmlwdGlvbnMpOgorICAgICAgICAgICAgZmly c3Rfcm93W2Rlc2NyaXB0aW9uLm5hbWVdID0gZmV0Y2hfcmVzdWx0WzBdW2lu ZGV4XQorCisgICAgICAgIG9pZCA9IGZpcnN0X3Jvd1snb2lkJ10KKyAgICAg ICAgbmFtZSA9IGZpcnN0X3Jvd1snbmFtZSddCisgICAgICAgIHRyaWdnZXJj b3VudCA9IGZpcnN0X3Jvd1sndHJpZ2dlcmNvdW50J10KKyAgICAgICAgaGFz X2VuYWJsZV90cmlnZ2VycyA9IGZpcnN0X3Jvd1snaGFzX2VuYWJsZV90cmln Z2VycyddCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobG9uZyhv aWQpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0ZXN0X3RhYmxlJywg bmFtZSkKKyAgICAgICAgIyB0cmlnZ2VyY291bnQgaXMgc29tZXRpbWVzIHJl dHVybmVkIGFzIGEgc3RyaW5nIGZvciBzb21lIHJlYXNvbgorICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKDAsIGxvbmcodHJpZ2dlcmNvdW50KSkKKyAgICAg ICAgc2VsZi5hc3NlcnRJc05vdE5vbmUobG9uZyhoYXNfZW5hYmxlX3RyaWdn ZXJzKSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0X3RlbXBs YXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgorICAgICAgICByZXR1cm4g b3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIs ICJ0ZW1wbGF0ZXMiLCAidGFibGUiLCAic3FsIiwgdmVyc2lvbiwgZmlsZW5h bWUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMv dGVzdF90YWJsZXNfcHJvcGVydGllc19zcWwucHkgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvdGVzdHMvdGVzdF90YWJsZXNfcHJvcGVydGllc19zcWwucHkK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjg2MTU2MmI4 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3Rl c3RzL3Rlc3RfdGFibGVzX3Byb3BlcnRpZXNfc3FsLnB5CkBAIC0wLDAgKzEs NzIgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChD KSAyMDEzIC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor IyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisKK2ltcG9ydCBvcworaW1wb3J0IHN5cworCitmcm9tIHJlZ3Jlc3Npb24u cHl0aG9uX3Rlc3RfdXRpbHMudGVtcGxhdGVfaGVscGVyIGltcG9ydCBmaWxl X2FzX3RlbXBsYXRlCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRp bHMuc3FsX3RlbXBsYXRlX3Rlc3RfYmFzZSBpbXBvcnQgU1FMVGVtcGxhdGVU ZXN0QmFzZQorCisKK2lmIHN5cy52ZXJzaW9uX2luZm9bMF0gPj0gMzoKKyAg ICBsb25nID0gaW50CisKKworY2xhc3MgVGVzdFRhYmxlc1Byb3BlcnRpZXNT cWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6CisgICAgc2NlbmFyaW9zID0gWwor ICAgICAgICAoIlRoaXMgc2NlbmFyaW8gdGVzdHMgdGhhdCBhbGwgYXBwbGlj YWJsZSBzcWwgdGVtcGxhdGUgdmVyc2lvbnMgY2FuICIKKyAgICAgICAgICJm ZXRjaCBzb21lIGRkbCIsIGRpY3QoKSkKKyAgICBdCisKKyAgICBkZWYgX19p bml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RUYWJsZXNQcm9wZXJ0 aWVzU3FsLCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuZGF0YWJh c2VfaWQgPSAtMQorICAgICAgICBzZWxmLmxhc3Rfc3lzdGVtX29pZCA9IC0x CisgICAgICAgIHNlbGYudGFibGVfaWQgPSAtMQorCisgICAgZGVmIGFzc2Vy dGlvbnMoc2VsZiwgZmV0Y2hfcmVzdWx0LCBkZXNjcmlwdGlvbnMpOgorCisg ICAgICAgIGZpcnN0X3JvdyA9IHt9CisgICAgICAgIGZvciBpbmRleCwgZGVz Y3JpcHRpb24gaW4gZW51bWVyYXRlKGRlc2NyaXB0aW9ucyk6CisgICAgICAg ICAgICBmaXJzdF9yb3dbZGVzY3JpcHRpb24ubmFtZV0gPSBmZXRjaF9yZXN1 bHRbMF1baW5kZXhdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVz dF90YWJsZScsIGZpcnN0X3Jvd1snbmFtZSddKQorICAgICAgICAjIHRyaWdn ZXJjb3VudCBpcyBzb21ldGltZXMgcmV0dXJuZWQgYXMgYSBzdHJpbmcgZm9y IHNvbWUgcmVhc29uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbG9u ZyhmaXJzdF9yb3dbJ3RyaWdnZXJjb3VudCddKSkKKyAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChOb25lLCBmaXJzdF9yb3dbJ3R5cG5hbWUnXSkKKyAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgZmlyc3Rfcm93Wydjb2xsX2luaGVy aXRzJ10pCisKKyAgICBkZWYgZ2VuZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24p OgorICAgICAgICB0ZW1wbGF0ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxhdGVf ZmlsZSh2ZXJzaW9uLCAicHJvcGVydGllcy5zcWwiKQorICAgICAgICB0ZW1w bGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKKyAgICAg ICAgcHVibGljX3NjaGVtYV9pZCA9IDIyMDAKKyAgICAgICAgc3FsID0gdGVt cGxhdGUucmVuZGVyKHNjaWQ9cHVibGljX3NjaGVtYV9pZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpZD1zZWxmLmRhdGFiYXNlX2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1z ZWxmLmxhc3Rfc3lzdGVtX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD1zZWxmLnRhYmxlX2lkCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisgICAgICAgIHJldHVybiBzcWwKKworICAgIGRlZiB0 ZXN0X3NldHVwKHNlbGYsIGNvbm5lY3Rpb24sIGN1cnNvcik6CisgICAgICAg IGN1cnNvci5leGVjdXRlKHUiIiIKKyAgICAgICAgICAgIFNFTEVDVAorICAg ICAgICAgICAgICAgIGRiLm9pZCBhcyBkaWQsIGRhdGxhc3RzeXNvaWQKKyAg ICAgICAgICAgIEZST00KKyAgICAgICAgICAgICAgICBwZ19kYXRhYmFzZSBk YgorICAgICAgICAgICAgV0hFUkUgZGIuZGF0bmFtZSA9ICd7MH0nIiIiLmZv cm1hdChzZWxmLmRhdGFiYXNlX25hbWUpCisgICAgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgc2VsZi5kYXRhYmFzZV9pZCwgc2VsZi5sYXN0X3N5 c3RlbV9vaWQgPSBjdXJzb3IuZmV0Y2hvbmUoKQorCisgICAgICAgIGN1cnNv ci5leGVjdXRlKCJTRUxFQ1Qgb2lkIEZST00gcGdfY2xhc3Mgd2hlcmUgcmVs bmFtZT0ndGVzdF90YWJsZSciKQorICAgICAgICBzZWxmLnRhYmxlX2lkID0g Y3Vyc29yLmZldGNob25lKClbMF0KKworCisgICAgQHN0YXRpY21ldGhvZAor ICAgIGRlZiBnZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6 CisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l KF9fZmlsZV9fKSwgIi4uIiwgInRlbXBsYXRlcyIsICJ0YWJsZSIsICJzcWwi LCB2ZXJzaW9uLCBmaWxlbmFtZSkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMv dGVzdF90cmlnZ2VyX2dldF9vaWRfc3FsLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3Rlc3RzL3Rlc3RfdHJpZ2dlcl9nZXRfb2lkX3NxbC5weQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMzMwNmZiN2EKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVzdHMv dGVzdF90cmlnZ2VyX2dldF9vaWRfc3FsLnB5CkBAIC0wLDAgKzEsNTIgQEAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEz IC0gMjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2lt cG9ydCBvcworCitpbXBvcnQgamluamEyCitmcm9tIHJlZ3Jlc3Npb24ucHl0 aG9uX3Rlc3RfdXRpbHMuc3FsX3RlbXBsYXRlX3Rlc3RfYmFzZSBpbXBvcnQg U1FMVGVtcGxhdGVUZXN0QmFzZQorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90 ZXN0X3V0aWxzLnRlbXBsYXRlX2hlbHBlciBpbXBvcnQgZmlsZV9hc190ZW1w bGF0ZQorCisKK2NsYXNzIFRlc3RUcmlnZ2VyR2V0T2lkU3FsKFNRTFRlbXBs YXRlVGVzdEJhc2UpOgorICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdU ZXN0IFRyaWdnZXIgdG8gcmV0cmlldmUgT0lEIFNRTCBmaWxlJywgZGljdCgp KQorICAgIF0KKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg c3VwZXIoVGVzdFRyaWdnZXJHZXRPaWRTcWwsIHNlbGYpLl9faW5pdF9fKCkK KyAgICAgICAgc2VsZi50YWJsZV9pZCA9IC0xCisgICAgICAgIHNlbGYuY29s dW1uX2lkID0gLTEKKworICAgIGRlZiB0ZXN0X3NldHVwKHNlbGYsIGNvbm5l Y3Rpb24sIGN1cnNvcik6CisgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxF Q1QgcGdfY2xhc3Mub2lkIEFTIHRhYmxlX2lkLCAiCisgICAgICAgICAgICAg ICAgICAgICAgICJwZ19hdHRyaWJ1dGUuYXR0bnVtIEFTIGNvbHVtbl9pZCAi CisgICAgICAgICAgICAgICAgICAgICAgICJGUk9NIHBnX2NsYXNzIEpPSU4g cGdfYXR0cmlidXRlIE9OIGF0dHJlbGlkPXBnX2NsYXNzLm9pZCAiCisgICAg ICAgICAgICAgICAgICAgICAgICJXSEVSRSBwZ19jbGFzcy5yZWxuYW1lPSd0 ZXN0X3RhYmxlJyIKKyAgICAgICAgICAgICAgICAgICAgICAgIiBBTkQgcGdf YXR0cmlidXRlLmF0dG5hbWUgPSAnc29tZV9jb2x1bW4nIikKKyAgICAgICAg c2VsZi50YWJsZV9pZCwgc2VsZi5jb2x1bW5faWQgPSBjdXJzb3IuZmV0Y2hv bmUoKQorCisgICAgZGVmIGdlbmVyYXRlX3NxbChzZWxmLCB2ZXJzaW9uKToK KyAgICAgICAgdGVtcGxhdGVfZmlsZSA9IHNlbGYuZ2V0X3RlbXBsYXRlX2Zp bGUodmVyc2lvbiwgImdldF9vaWQuc3FsIikKKyAgICAgICAgamluamEyLmZp bHRlcnMuRklMVEVSU1sncXRMaXRlcmFsJ10gPSBsYW1iZGEgdmFsdWU6ICJO VUxMIgorICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVt cGxhdGVfZmlsZSkKKworICAgICAgICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIo ZGF0YT17J25hbWUnOiBOb25lfSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRpZD1zZWxmLnRhYmxlX2lkCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIHNxbAorCisgICAgZGVm IGFzc2VydGlvbnMoc2VsZiwgZmV0Y2hfcmVzdWx0LCBkZXNjcmlwdGlvbnMp OgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihmZXRjaF9yZXN1 bHQpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfdGVtcGxh dGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVybiBv cy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwg InRlbXBsYXRlcyIsICJ0cmlnZ2VyIiwgInNxbCIsIHZlcnNpb24sIGZpbGVu YW1lKQorCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvdGVz dHMvdGVzdF90cmlnZ2VyX25vZGVzX3NxbC5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90ZXN0cy90ZXN0X3RyaWdnZXJfbm9kZXNfc3FsLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi44ZjMyOGE2MAotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90ZXN0cy90 ZXN0X3RyaWdnZXJfbm9kZXNfc3FsLnB5CkBAIC0wLDAgKzEsNDMgQEAKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0g MjAxNywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9y dCBvcworCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMuc3Fs X3RlbXBsYXRlX3Rlc3RfYmFzZSBpbXBvcnQgU1FMVGVtcGxhdGVUZXN0QmFz ZQorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzLnRlbXBsYXRl X2hlbHBlciBpbXBvcnQgZmlsZV9hc190ZW1wbGF0ZQorCisKK2NsYXNzIFRl c3RUcmlnZ2VyTm9kZXNTcWwoU1FMVGVtcGxhdGVUZXN0QmFzZSk6CisgICAg c2NlbmFyaW9zID0gWworICAgICAgICAoJ1Rlc3QgVHJpZ2dlciBOb2RlcyBT UUwgZmlsZScsIGRpY3QoKSkKKyAgICBdCisKKyAgICBkZWYgX19pbml0X18o c2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RUcmlnZ2VyTm9kZXNTcWwsIHNl bGYpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9IC0xCisK KyAgICBkZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBjdXJzb3Ip OgorICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiU0VMRUNUIHBnX2NsYXNzLm9p ZCBBUyB0YWJsZV9pZCAiCisgICAgICAgICAgICAgICAgICAgICAgICJGUk9N IHBnX2NsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIldIRVJFIHBn X2NsYXNzLnJlbG5hbWU9J3Rlc3RfdGFibGUnIikKKyAgICAgICAgc2VsZi50 YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCisKKyAgICBkZWYgZ2Vu ZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgorICAgICAgICB0ZW1wbGF0ZV9m aWxlID0gc2VsZi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAibm9kZXMu c3FsIikKKyAgICAgICAgdGVtcGxhdGUgPSBmaWxlX2FzX3RlbXBsYXRlKHRl bXBsYXRlX2ZpbGUpCisgICAgICAgIHNxbCA9IHRlbXBsYXRlLnJlbmRlcih0 aWQ9c2VsZi50YWJsZV9pZCkKKworICAgICAgICByZXR1cm4gc3FsCisKKyAg ICBkZWYgYXNzZXJ0aW9ucyhzZWxmLCBmZXRjaF9yZXN1bHQsIGRlc2NyaXB0 aW9ucyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKGZldGNo X3Jlc3VsdCkpCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGdldF90 ZW1wbGF0ZV9maWxlKHZlcnNpb24sIGZpbGVuYW1lKToKKyAgICAgICAgcmV0 dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAi Li4iLCAidGVtcGxhdGVzIiwgInRyaWdnZXIiLCAic3FsIiwgdmVyc2lvbiwg ZmlsZW5hbWUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvOS4x X3BsdXMvZGVwZW5kZW5jaWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3NxbC85 LjFfcGx1cy9kZXBlbmRlbmNpZXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi5lNWJiOGNiNgotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rl bXBsYXRlcy9kZXBlbmRzL3NxbC85LjFfcGx1cy9kZXBlbmRlbmNpZXMuc3Fs CkBAIC0wLDAgKzEsNDUgQEAKK1NFTEVDVCBESVNUSU5DVCBkZXAuZGVwdHlw ZSwgZGVwLnJlZmNsYXNzaWQsIGNsLnJlbGtpbmQsIGFkLmFkYmluLCBhZC5h ZHNyYywKKyAgICBDQVNFIFdIRU4gY2wucmVsa2luZCBJUyBOT1QgTlVMTCBU SEVOIGNsLnJlbGtpbmQgfHwgQ09BTEVTQ0UoZGVwLnJlZm9ianN1YmlkOjpj aGFyYWN0ZXIgdmFyeWluZywgJycpCisgICAgICAgIFdIRU4gdGcub2lkIElT IE5PVCBOVUxMIFRIRU4gJ1QnOjp0ZXh0CisgICAgICAgIFdIRU4gdHkub2lk IElTIE5PVCBOVUxMIEFORCB0eS50eXBiYXNldHlwZSA9IDAgVEhFTiAneSc6 OnRleHQKKyAgICAgICAgV0hFTiB0eS5vaWQgSVMgTk9UIE5VTEwgQU5EIHR5 LnR5cGJhc2V0eXBlICE9IDAgVEhFTiAnZCc6OnRleHQKKyAgICAgICAgV0hF TiBucy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnbic6OnRleHQKKyAgICAgICAg V0hFTiBwci5vaWQgSVMgTk9UIE5VTEwgVEhFTiAncCc6OnRleHQKKyAgICAg ICAgV0hFTiBsYS5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnbCc6OnRleHQKKyAg ICAgICAgV0hFTiBydy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnUic6OnRleHQK KyAgICAgICAgV0hFTiBjby5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnQyc6OnRl eHQgfHwgY29udHlwZQorICAgICAgICBXSEVOIGFkLm9pZCBJUyBOT1QgTlVM TCBUSEVOICdBJzo6dGV4dAorICAgICAgICBXSEVOIGZzLm9pZCBJUyBOT1Qg TlVMTCBUSEVOICdGJzo6dGV4dAorICAgICAgICBXSEVOIGZkdy5vaWQgSVMg Tk9UIE5VTEwgVEhFTiAnZic6OnRleHQKKyAgICBFTFNFICcnCisgICAgRU5E IEFTIHR5cGUsCisgICAgQ09BTEVTQ0UoY29jLnJlbG5hbWUsIGNscncucmVs bmFtZSkgQVMgb3duZXJ0YWJsZSwKKyAgICBDQVNFIFdIRU4gY2wucmVsbmFt ZSBJUyBOT1QgTlVMTCBPUiBhdHQuYXR0bmFtZSBJUyBOT1QgTlVMTCBUSEVO IGNsLnJlbG5hbWUgfHwgJy4nIHx8IGF0dC5hdHRuYW1lCisgICAgRUxTRSBD T0FMRVNDRShjbC5yZWxuYW1lLCBjby5jb25uYW1lLCBwci5wcm9uYW1lLCB0 Zy50Z25hbWUsIHR5LnR5cG5hbWUsIGxhLmxhbm5hbWUsIHJ3LnJ1bGVuYW1l LCBucy5uc3BuYW1lLCBmcy5zcnZuYW1lLCBmZHcuZmR3bmFtZSkKKyAgICBF TkQgQVMgcmVmbmFtZSwKKyAgICBDT0FMRVNDRShuc2MubnNwbmFtZSwgbnNv Lm5zcG5hbWUsIG5zcC5uc3BuYW1lLCBuc3QubnNwbmFtZSwgbnNydy5uc3Bu YW1lKSBBUyBuc3BuYW1lCitGUk9NIHBnX2RlcGVuZCBkZXAKK0xFRlQgSk9J TiBwZ19jbGFzcyBjbCBPTiBkZXAucmVmb2JqaWQ9Y2wub2lkCitMRUZUIEpP SU4gcGdfYXR0cmlidXRlIGF0dCBPTiBkZXAucmVmb2JqaWQ9YXR0LmF0dHJl bGlkIEFORCBkZXAucmVmb2Jqc3ViaWQ9YXR0LmF0dG51bQorTEVGVCBKT0lO IHBnX25hbWVzcGFjZSBuc2MgT04gY2wucmVsbmFtZXNwYWNlPW5zYy5vaWQK K0xFRlQgSk9JTiBwZ19wcm9jIHByIE9OIGRlcC5yZWZvYmppZD1wci5vaWQK K0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHByLnByb25hbWVzcGFj ZT1uc3Aub2lkCitMRUZUIEpPSU4gcGdfdHJpZ2dlciB0ZyBPTiBkZXAucmVm b2JqaWQ9dGcub2lkCitMRUZUIEpPSU4gcGdfdHlwZSB0eSBPTiBkZXAucmVm b2JqaWQ9dHkub2lkCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zdCBPTiB0 eS50eXBuYW1lc3BhY2U9bnN0Lm9pZAorTEVGVCBKT0lOIHBnX2NvbnN0cmFp bnQgY28gT04gZGVwLnJlZm9iamlkPWNvLm9pZAorTEVGVCBKT0lOIHBnX2Ns YXNzIGNvYyBPTiBjby5jb25yZWxpZD1jb2Mub2lkCitMRUZUIEpPSU4gcGdf bmFtZXNwYWNlIG5zbyBPTiBjby5jb25uYW1lc3BhY2U9bnNvLm9pZAorTEVG VCBKT0lOIHBnX3Jld3JpdGUgcncgT04gZGVwLnJlZm9iamlkPXJ3Lm9pZAor TEVGVCBKT0lOIHBnX2NsYXNzIGNscncgT04gY2xydy5vaWQ9cncuZXZfY2xh c3MKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNydyBPTiBjbHJ3LnJlbG5h bWVzcGFjZT1uc3J3Lm9pZAorTEVGVCBKT0lOIHBnX2xhbmd1YWdlIGxhIE9O IGRlcC5yZWZvYmppZD1sYS5vaWQKK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2Ug bnMgT04gZGVwLnJlZm9iamlkPW5zLm9pZAorTEVGVCBKT0lOIHBnX2F0dHJk ZWYgYWQgT04gYWQuYWRyZWxpZD1hdHQuYXR0cmVsaWQgQU5EIGFkLmFkbnVt PWF0dC5hdHRudW0KK0xFRlQgSk9JTiBwZ19mb3JlaWduX3NlcnZlciBmcyBP TiBmcy5vaWQ9ZGVwLnJlZm9iamlkCitMRUZUIEpPSU4gcGdfZm9yZWlnbl9k YXRhX3dyYXBwZXIgZmR3IE9OIGZkdy5vaWQ9ZGVwLnJlZm9iamlkCit7e3do ZXJlX2NsYXVzZX19IEFORAorcmVmY2xhc3NpZCBJTiAoIFNFTEVDVCBvaWQg RlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOCisgICAoJ3BnX2NsYXNz JywgJ3BnX2NvbnN0cmFpbnQnLCAncGdfY29udmVyc2lvbicsICdwZ19sYW5n dWFnZScsICdwZ19wcm9jJywgJ3BnX3Jld3JpdGUnLCAncGdfbmFtZXNwYWNl JywKKyAgICdwZ190cmlnZ2VyJywgJ3BnX3R5cGUnLCAncGdfYXR0cmRlZics ICdwZ19ldmVudF90cmlnZ2VyJywgJ3BnX2ZvcmVpZ25fc2VydmVyJywgJ3Bn X2ZvcmVpZ25fZGF0YV93cmFwcGVyJykpCitPUkRFUiBCWSByZWZjbGFzc2lk LCBjbC5yZWxraW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvdGVtcGxhdGVzL2RlcGVuZHMvc3FsLzkuMV9wbHVzL2RlcGVuZGVu dHMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvdGVtcGxhdGVzL2RlcGVuZHMvc3FsLzkuMV9wbHVzL2RlcGVuZGVu dHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4x MjgxNjcyZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3Nx bC85LjFfcGx1cy9kZXBlbmRlbnRzLnNxbApAQCAtMCwwICsxLDQ0IEBACitT RUxFQ1QgRElTVElOQ1QgZGVwLmRlcHR5cGUsIGRlcC5jbGFzc2lkLCBjbC5y ZWxraW5kLCBhZC5hZGJpbiwgYWQuYWRzcmMsCisgICAgQ0FTRSBXSEVOIGNs LnJlbGtpbmQgSVMgTk9UIE5VTEwgVEhFTiBjbC5yZWxraW5kIHx8IENPQUxF U0NFKGRlcC5vYmpzdWJpZDo6dGV4dCwgJycpCisgICAgICAgIFdIRU4gdGcu b2lkIElTIE5PVCBOVUxMIFRIRU4gJ1QnOjp0ZXh0CisgICAgICAgIFdIRU4g dHkub2lkIElTIE5PVCBOVUxMIFRIRU4gJ3knOjp0ZXh0CisgICAgICAgIFdI RU4gbnMub2lkIElTIE5PVCBOVUxMIFRIRU4gJ24nOjp0ZXh0CisgICAgICAg IFdIRU4gcHIub2lkIElTIE5PVCBOVUxMIFRIRU4gJ3AnOjp0ZXh0CisgICAg ICAgIFdIRU4gbGEub2lkIElTIE5PVCBOVUxMIFRIRU4gJ2wnOjp0ZXh0Cisg ICAgICAgIFdIRU4gcncub2lkIElTIE5PVCBOVUxMIFRIRU4gJ1InOjp0ZXh0 CisgICAgICAgIFdIRU4gY28ub2lkIElTIE5PVCBOVUxMIFRIRU4gJ0MnOjp0 ZXh0IHx8IGNvbnR5cGUKKyAgICAgICAgV0hFTiBhZC5vaWQgSVMgTk9UIE5V TEwgVEhFTiAnQSc6OnRleHQKKyAgICAgICAgV0hFTiBmcy5vaWQgSVMgTk9U IE5VTEwgVEhFTiAnRic6OnRleHQKKyAgICAgICAgV0hFTiBmZHcub2lkIElT IE5PVCBOVUxMIFRIRU4gJ2YnOjp0ZXh0CisgICAgICAgIEVMU0UgJycKKyAg ICBFTkQgQVMgdHlwZSwKKyAgICBDT0FMRVNDRShjb2MucmVsbmFtZSwgY2xy dy5yZWxuYW1lKSBBUyBvd25lcnRhYmxlLAorICAgIENBU0UgV0hFTiBjbC5y ZWxuYW1lIElTIE5PVCBOVUxMIEFORCBhdHQuYXR0bmFtZSBJUyBOT1QgTlVM TCBUSEVOIGNsLnJlbG5hbWUgfHwgJy4nIHx8IGF0dC5hdHRuYW1lCisgICAg RUxTRSBDT0FMRVNDRShjbC5yZWxuYW1lLCBjby5jb25uYW1lLCBwci5wcm9u YW1lLCB0Zy50Z25hbWUsIHR5LnR5cG5hbWUsIGxhLmxhbm5hbWUsIHJ3LnJ1 bGVuYW1lLCBucy5uc3BuYW1lLCBmcy5zcnZuYW1lLCBmZHcuZmR3bmFtZSkK KyAgICBFTkQgQVMgcmVmbmFtZSwKKyAgICBDT0FMRVNDRShuc2MubnNwbmFt ZSwgbnNvLm5zcG5hbWUsIG5zcC5uc3BuYW1lLCBuc3QubnNwbmFtZSwgbnNy dy5uc3BuYW1lKSBBUyBuc3BuYW1lCitGUk9NIHBnX2RlcGVuZCBkZXAKK0xF RlQgSk9JTiBwZ19jbGFzcyBjbCBPTiBkZXAub2JqaWQ9Y2wub2lkCitMRUZU IEpPSU4gcGdfYXR0cmlidXRlIGF0dCBPTiBkZXAub2JqaWQ9YXR0LmF0dHJl bGlkIEFORCBkZXAub2Jqc3ViaWQ9YXR0LmF0dG51bQorTEVGVCBKT0lOIHBn X25hbWVzcGFjZSBuc2MgT04gY2wucmVsbmFtZXNwYWNlPW5zYy5vaWQKK0xF RlQgSk9JTiBwZ19wcm9jIHByIE9OIGRlcC5vYmppZD1wci5vaWQKK0xFRlQg Sk9JTiBwZ19uYW1lc3BhY2UgbnNwIE9OIHByLnByb25hbWVzcGFjZT1uc3Au b2lkCitMRUZUIEpPSU4gcGdfdHJpZ2dlciB0ZyBPTiBkZXAub2JqaWQ9dGcu b2lkCitMRUZUIEpPSU4gcGdfdHlwZSB0eSBPTiBkZXAub2JqaWQ9dHkub2lk CitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zdCBPTiB0eS50eXBuYW1lc3Bh Y2U9bnN0Lm9pZAorTEVGVCBKT0lOIHBnX2NvbnN0cmFpbnQgY28gT04gZGVw Lm9iamlkPWNvLm9pZAorTEVGVCBKT0lOIHBnX2NsYXNzIGNvYyBPTiBjby5j b25yZWxpZD1jb2Mub2lkCitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zbyBP TiBjby5jb25uYW1lc3BhY2U9bnNvLm9pZAorTEVGVCBKT0lOIHBnX3Jld3Jp dGUgcncgT04gZGVwLm9iamlkPXJ3Lm9pZAorTEVGVCBKT0lOIHBnX2NsYXNz IGNscncgT04gY2xydy5vaWQ9cncuZXZfY2xhc3MKK0xFRlQgSk9JTiBwZ19u YW1lc3BhY2UgbnNydyBPTiBjbHJ3LnJlbG5hbWVzcGFjZT1uc3J3Lm9pZAor TEVGVCBKT0lOIHBnX2xhbmd1YWdlIGxhIE9OIGRlcC5vYmppZD1sYS5vaWQK K0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gZGVwLm9iamlkPW5zLm9p ZAorTEVGVCBKT0lOIHBnX2F0dHJkZWYgYWQgT04gYWQub2lkPWRlcC5vYmpp ZAorTEVGVCBKT0lOIHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZzLm9pZD1k ZXAub2JqaWQKK0xFRlQgSk9JTiBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciBm ZHcgT04gZmR3Lm9pZD1kZXAub2JqaWQKK3t7d2hlcmVfY2xhdXNlfX0gQU5E CitjbGFzc2lkIElOICggU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJF IHJlbG5hbWUgSU4KKyAgICgncGdfY2xhc3MnLCAncGdfY29uc3RyYWludCcs ICdwZ19jb252ZXJzaW9uJywgJ3BnX2xhbmd1YWdlJywgJ3BnX3Byb2MnLCAn cGdfcmV3cml0ZScsICdwZ19uYW1lc3BhY2UnLAorICAgJ3BnX3RyaWdnZXIn LCAncGdfdHlwZScsICdwZ19hdHRyZGVmJywgJ3BnX2V2ZW50X3RyaWdnZXIn LCAncGdfZm9yZWlnbl9zZXJ2ZXInLCAncGdfZm9yZWlnbl9kYXRhX3dyYXBw ZXInKSkKK09SREVSIEJZIGNsYXNzaWQsIGNsLnJlbGtpbmQKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3RlbXBsYXRlcy9kZXBlbmRzL3NxbC9kZWZhdWx0L2RlcGVuZGVuY2llcy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy90ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvZGVmYXVsdC9kZXBlbmRlbmNpZXMu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5hYWU1 OTgyZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9kZXBlbmRzL3NxbC9k ZWZhdWx0L2RlcGVuZGVuY2llcy5zcWwKQEAgLTAsMCArMSw0MiBAQAorU0VU IExPQ0FMIGpvaW5fY29sbGFwc2VfbGltaXQ9ODsKK1NFTEVDVCBESVNUSU5D VCBkZXAuZGVwdHlwZSwgZGVwLnJlZmNsYXNzaWQsIGNsLnJlbGtpbmQsIGFk LmFkYmluLCBhZC5hZHNyYywKKyAgICBDQVNFIFdIRU4gY2wucmVsa2luZCBJ UyBOT1QgTlVMTCBUSEVOIGNsLnJlbGtpbmQgfHwgQ09BTEVTQ0UoZGVwLnJl Zm9ianN1YmlkOjpjaGFyYWN0ZXIgdmFyeWluZywgJycpCisgICAgICAgIFdI RU4gdGcub2lkIElTIE5PVCBOVUxMIFRIRU4gJ1QnOjp0ZXh0CisgICAgICAg IFdIRU4gdHkub2lkIElTIE5PVCBOVUxMIEFORCB0eS50eXBiYXNldHlwZSA9 IDAgVEhFTiAneSc6OnRleHQKKyAgICAgICAgV0hFTiB0eS5vaWQgSVMgTk9U IE5VTEwgQU5EIHR5LnR5cGJhc2V0eXBlICE9IDAgVEhFTiAnZCc6OnRleHQK KyAgICAgICAgV0hFTiBucy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnbic6OnRl eHQKKyAgICAgICAgV0hFTiBwci5vaWQgSVMgTk9UIE5VTEwgVEhFTiAncCc6 OnRleHQKKyAgICAgICAgV0hFTiBsYS5vaWQgSVMgTk9UIE5VTEwgVEhFTiAn bCc6OnRleHQKKyAgICAgICAgV0hFTiBydy5vaWQgSVMgTk9UIE5VTEwgVEhF TiAnUic6OnRleHQKKyAgICAgICAgV0hFTiBjby5vaWQgSVMgTk9UIE5VTEwg VEhFTiAnQyc6OnRleHQgfHwgY29udHlwZQorICAgICAgICBXSEVOIGFkLm9p ZCBJUyBOT1QgTlVMTCBUSEVOICdBJzo6dGV4dAorICAgIEVMU0UgJycKKyAg ICBFTkQgQVMgdHlwZSwKKyAgICBDT0FMRVNDRShjb2MucmVsbmFtZSwgY2xy dy5yZWxuYW1lKSBBUyBvd25lcnRhYmxlLAorICAgIENBU0UgV0hFTiBjbC5y ZWxuYW1lIElTIE5PVCBOVUxMIE9SIGF0dC5hdHRuYW1lIElTIE5PVCBOVUxM IFRIRU4gY2wucmVsbmFtZSB8fCAnLicgfHwgYXR0LmF0dG5hbWUKKyAgICBF TFNFIENPQUxFU0NFKGNsLnJlbG5hbWUsIGNvLmNvbm5hbWUsIHByLnByb25h bWUsIHRnLnRnbmFtZSwgdHkudHlwbmFtZSwgbGEubGFubmFtZSwgcncucnVs ZW5hbWUsIG5zLm5zcG5hbWUpCisgICAgRU5EIEFTIHJlZm5hbWUsCisgICAg Q09BTEVTQ0UobnNjLm5zcG5hbWUsIG5zby5uc3BuYW1lLCBuc3AubnNwbmFt ZSwgbnN0Lm5zcG5hbWUsIG5zcncubnNwbmFtZSkgQVMgbnNwbmFtZQorRlJP TSBwZ19kZXBlbmQgZGVwCitMRUZUIEpPSU4gcGdfY2xhc3MgY2wgT04gZGVw LnJlZm9iamlkPWNsLm9pZAorTEVGVCBKT0lOIHBnX2F0dHJpYnV0ZSBhdHQg T04gZGVwLnJlZm9iamlkPWF0dC5hdHRyZWxpZCBBTkQgZGVwLnJlZm9ianN1 YmlkPWF0dC5hdHRudW0KK0xFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNjIE9O IGNsLnJlbG5hbWVzcGFjZT1uc2Mub2lkCitMRUZUIEpPSU4gcGdfcHJvYyBw ciBPTiBkZXAucmVmb2JqaWQ9cHIub2lkCitMRUZUIEpPSU4gcGdfbmFtZXNw YWNlIG5zcCBPTiBwci5wcm9uYW1lc3BhY2U9bnNwLm9pZAorTEVGVCBKT0lO IHBnX3RyaWdnZXIgdGcgT04gZGVwLnJlZm9iamlkPXRnLm9pZAorTEVGVCBK T0lOIHBnX3R5cGUgdHkgT04gZGVwLnJlZm9iamlkPXR5Lm9pZAorTEVGVCBK T0lOIHBnX25hbWVzcGFjZSBuc3QgT04gdHkudHlwbmFtZXNwYWNlPW5zdC5v aWQKK0xFRlQgSk9JTiBwZ19jb25zdHJhaW50IGNvIE9OIGRlcC5yZWZvYmpp ZD1jby5vaWQKK0xFRlQgSk9JTiBwZ19jbGFzcyBjb2MgT04gY28uY29ucmVs aWQ9Y29jLm9pZAorTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuc28gT04gY28u Y29ubmFtZXNwYWNlPW5zby5vaWQKK0xFRlQgSk9JTiBwZ19yZXdyaXRlIHJ3 IE9OIGRlcC5yZWZvYmppZD1ydy5vaWQKK0xFRlQgSk9JTiBwZ19jbGFzcyBj bHJ3IE9OIGNscncub2lkPXJ3LmV2X2NsYXNzCitMRUZUIEpPSU4gcGdfbmFt ZXNwYWNlIG5zcncgT04gY2xydy5yZWxuYW1lc3BhY2U9bnNydy5vaWQKK0xF RlQgSk9JTiBwZ19sYW5ndWFnZSBsYSBPTiBkZXAucmVmb2JqaWQ9bGEub2lk CitMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zIE9OIGRlcC5yZWZvYmppZD1u cy5vaWQKK0xFRlQgSk9JTiBwZ19hdHRyZGVmIGFkIE9OIGFkLmFkcmVsaWQ9 YXR0LmF0dHJlbGlkIEFORCBhZC5hZG51bT1hdHQuYXR0bnVtCit7e3doZXJl X2NsYXVzZX19IEFORAorcmVmY2xhc3NpZCBJTiAoIFNFTEVDVCBvaWQgRlJP TSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lIElOCisgICAoJ3BnX2NsYXNzJywg J3BnX2NvbnN0cmFpbnQnLCAncGdfY29udmVyc2lvbicsICdwZ19sYW5ndWFn ZScsICdwZ19wcm9jJywgJ3BnX3Jld3JpdGUnLCAncGdfbmFtZXNwYWNlJywK KyAgICdwZ190cmlnZ2VyJywgJ3BnX3R5cGUnLCAncGdfYXR0cmRlZicsICdw Z19ldmVudF90cmlnZ2VyJywgJ3BnX2ZvcmVpZ25fc2VydmVyJywgJ3BnX2Zv cmVpZ25fZGF0YV93cmFwcGVyJykpCitPUkRFUiBCWSByZWZjbGFzc2lkLCBj bC5yZWxraW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvdGVtcGxhdGVzL2RlcGVuZHMvc3FsL2RlZmF1bHQvZGVwZW5kZW50cy5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy90ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvZGVmYXVsdC9kZXBlbmRlbnRzLnNx bAppbmRleCBlMmJhM2Q2Yi4uMmZlMmVmM2UgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRl cy9kZXBlbmRzL3NxbC9kZWZhdWx0L2RlcGVuZGVudHMuc3FsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBs YXRlcy9kZXBlbmRzL3NxbC9kZWZhdWx0L2RlcGVuZGVudHMuc3FsCkBAIC0x LDU5ICsxLDQgQEAKLXslIGlmIGZldGNoX2RlcGVuZGVuY2llcyAlfQotU0VM RUNUIERJU1RJTkNUIGRlcC5kZXB0eXBlLCBkZXAucmVmY2xhc3NpZCwgY2wu cmVsa2luZCwgYWQuYWRiaW4sIGFkLmFkc3JjLAotICAgIENBU0UgV0hFTiBj bC5yZWxraW5kIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsa2luZCB8fCBDT0FM RVNDRShkZXAucmVmb2Jqc3ViaWQ6OmNoYXJhY3RlciB2YXJ5aW5nLCAnJykK LSAgICAgICAgV0hFTiB0Zy5vaWQgSVMgTk9UIE5VTEwgVEhFTiAnVCc6OnRl eHQKLSAgICAgICAgV0hFTiB0eS5vaWQgSVMgTk9UIE5VTEwgQU5EIHR5LnR5 cGJhc2V0eXBlID0gMCBUSEVOICd5Jzo6dGV4dAotICAgICAgICBXSEVOIHR5 Lm9pZCBJUyBOT1QgTlVMTCBBTkQgdHkudHlwYmFzZXR5cGUgIT0gMCBUSEVO ICdkJzo6dGV4dAotICAgICAgICBXSEVOIG5zLm9pZCBJUyBOT1QgTlVMTCBU SEVOICduJzo6dGV4dAotICAgICAgICBXSEVOIHByLm9pZCBJUyBOT1QgTlVM TCBUSEVOICdwJzo6dGV4dAotICAgICAgICBXSEVOIGxhLm9pZCBJUyBOT1Qg TlVMTCBUSEVOICdsJzo6dGV4dAotICAgICAgICBXSEVOIHJ3Lm9pZCBJUyBO T1QgTlVMTCBUSEVOICdSJzo6dGV4dAotICAgICAgICBXSEVOIGNvLm9pZCBJ UyBOT1QgTlVMTCBUSEVOICdDJzo6dGV4dCB8fCBjb250eXBlCi0gICAgICAg IFdIRU4gYWQub2lkIElTIE5PVCBOVUxMIFRIRU4gJ0EnOjp0ZXh0Ci0gICAg ICAgIFdIRU4gZnMub2lkIElTIE5PVCBOVUxMIFRIRU4gJ0YnOjp0ZXh0Ci0g ICAgICAgIFdIRU4gZmR3Lm9pZCBJUyBOT1QgTlVMTCBUSEVOICdmJzo6dGV4 dAotICAgIEVMU0UgJycKLSAgICBFTkQgQVMgdHlwZSwKLSAgICBDT0FMRVND RShjb2MucmVsbmFtZSwgY2xydy5yZWxuYW1lKSBBUyBvd25lcnRhYmxlLAot ICAgIENBU0UgV0hFTiBjbC5yZWxuYW1lIElTIE5PVCBOVUxMIE9SIGF0dC5h dHRuYW1lIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsbmFtZSB8fCAnLicgfHwg YXR0LmF0dG5hbWUKLSAgICBFTFNFIENPQUxFU0NFKGNsLnJlbG5hbWUsIGNv LmNvbm5hbWUsIHByLnByb25hbWUsIHRnLnRnbmFtZSwgdHkudHlwbmFtZSwg bGEubGFubmFtZSwgcncucnVsZW5hbWUsIG5zLm5zcG5hbWUsIGZzLnNydm5h bWUsIGZkdy5mZHduYW1lKQotICAgIEVORCBBUyByZWZuYW1lLAotICAgIENP QUxFU0NFKG5zYy5uc3BuYW1lLCBuc28ubnNwbmFtZSwgbnNwLm5zcG5hbWUs IG5zdC5uc3BuYW1lLCBuc3J3Lm5zcG5hbWUpIEFTIG5zcG5hbWUKLUZST00g cGdfZGVwZW5kIGRlcAotTEVGVCBKT0lOIHBnX2NsYXNzIGNsIE9OIGRlcC5y ZWZvYmppZD1jbC5vaWQKLUxFRlQgSk9JTiBwZ19hdHRyaWJ1dGUgYXR0IE9O IGRlcC5yZWZvYmppZD1hdHQuYXR0cmVsaWQgQU5EIGRlcC5yZWZvYmpzdWJp ZD1hdHQuYXR0bnVtCi1MRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG5zYyBPTiBj bC5yZWxuYW1lc3BhY2U9bnNjLm9pZAotTEVGVCBKT0lOIHBnX3Byb2MgcHIg T04gZGVwLnJlZm9iamlkPXByLm9pZAotTEVGVCBKT0lOIHBnX25hbWVzcGFj ZSBuc3AgT04gcHIucHJvbmFtZXNwYWNlPW5zcC5vaWQKLUxFRlQgSk9JTiBw Z190cmlnZ2VyIHRnIE9OIGRlcC5yZWZvYmppZD10Zy5vaWQKLUxFRlQgSk9J TiBwZ190eXBlIHR5IE9OIGRlcC5yZWZvYmppZD10eS5vaWQKLUxFRlQgSk9J TiBwZ19uYW1lc3BhY2UgbnN0IE9OIHR5LnR5cG5hbWVzcGFjZT1uc3Qub2lk Ci1MRUZUIEpPSU4gcGdfY29uc3RyYWludCBjbyBPTiBkZXAucmVmb2JqaWQ9 Y28ub2lkCi1MRUZUIEpPSU4gcGdfY2xhc3MgY29jIE9OIGNvLmNvbnJlbGlk PWNvYy5vaWQKLUxFRlQgSk9JTiBwZ19uYW1lc3BhY2UgbnNvIE9OIGNvLmNv bm5hbWVzcGFjZT1uc28ub2lkCi1MRUZUIEpPSU4gcGdfcmV3cml0ZSBydyBP TiBkZXAucmVmb2JqaWQ9cncub2lkCi1MRUZUIEpPSU4gcGdfY2xhc3MgY2xy dyBPTiBjbHJ3Lm9pZD1ydy5ldl9jbGFzcwotTEVGVCBKT0lOIHBnX25hbWVz cGFjZSBuc3J3IE9OIGNscncucmVsbmFtZXNwYWNlPW5zcncub2lkCi1MRUZU IEpPSU4gcGdfbGFuZ3VhZ2UgbGEgT04gZGVwLnJlZm9iamlkPWxhLm9pZAot TEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBkZXAucmVmb2JqaWQ9bnMu b2lkCi1MRUZUIEpPSU4gcGdfYXR0cmRlZiBhZCBPTiBhZC5hZHJlbGlkPWF0 dC5hdHRyZWxpZCBBTkQgYWQuYWRudW09YXR0LmF0dG51bQotTEVGVCBKT0lO IHBnX2ZvcmVpZ25fc2VydmVyIGZzIE9OIGZzLm9pZD1kZXAucmVmb2JqaWQK LUxFRlQgSk9JTiBwZ19mb3JlaWduX2RhdGFfd3JhcHBlciBmZHcgT04gZmR3 Lm9pZD1kZXAucmVmb2JqaWQKLXt7d2hlcmVfY2xhdXNlfX0gQU5ECi1yZWZj bGFzc2lkIElOICggU0VMRUNUIG9pZCBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgSU4KLSAgICgncGdfY2xhc3MnLCAncGdfY29uc3RyYWludCcsICdw Z19jb252ZXJzaW9uJywgJ3BnX2xhbmd1YWdlJywgJ3BnX3Byb2MnLCAncGdf cmV3cml0ZScsICdwZ19uYW1lc3BhY2UnLAotICAgJ3BnX3RyaWdnZXInLCAn cGdfdHlwZScsICdwZ19hdHRyZGVmJywgJ3BnX2V2ZW50X3RyaWdnZXInLCAn cGdfZm9yZWlnbl9zZXJ2ZXInLCAncGdfZm9yZWlnbl9kYXRhX3dyYXBwZXIn KSkKLU9SREVSIEJZIHJlZmNsYXNzaWQsIGNsLnJlbGtpbmQKLXslIGVuZGlm ICV9Ci0KLXslIGlmIGZldGNoX3JvbGVfZGVwZW5kZW5jaWVzICV9Ci1TRUxF Q1Qgcm9sbmFtZSBBUyByZWZuYW1lLCByZWZjbGFzc2lkLCBkZXB0eXBlCi1G Uk9NIHBnX3NoZGVwZW5kIGRlcAotTEVGVCBKT0lOIHBnX3JvbGVzIHIgT04g cmVmY2xhc3NpZD0xMjYwIEFORCByZWZvYmppZD1yLm9pZAote3t3aGVyZV9j bGF1c2V9fSBPUkRFUiBCWSAxCi17JSBlbmRpZiAlfQotCi17JSBpZiBmZXRj aF9kZXBlbmRlbnRzICV9CitTRVQgTE9DQUwgam9pbl9jb2xsYXBzZV9saW1p dD04OwogU0VMRUNUIERJU1RJTkNUIGRlcC5kZXB0eXBlLCBkZXAuY2xhc3Np ZCwgY2wucmVsa2luZCwgYWQuYWRiaW4sIGFkLmFkc3JjLAogICAgIENBU0Ug V0hFTiBjbC5yZWxraW5kIElTIE5PVCBOVUxMIFRIRU4gY2wucmVsa2luZCB8 fCBDT0FMRVNDRShkZXAub2Jqc3ViaWQ6OnRleHQsICcnKQogICAgICAgICBX SEVOIHRnLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdUJzo6dGV4dApAQCAtNjQs MTMgKzksMTEgQEAgU0VMRUNUIERJU1RJTkNUIGRlcC5kZXB0eXBlLCBkZXAu Y2xhc3NpZCwgY2wucmVsa2luZCwgYWQuYWRiaW4sIGFkLmFkc3JjLAogICAg ICAgICBXSEVOIHJ3Lm9pZCBJUyBOT1QgTlVMTCBUSEVOICdSJzo6dGV4dAog ICAgICAgICBXSEVOIGNvLm9pZCBJUyBOT1QgTlVMTCBUSEVOICdDJzo6dGV4 dCB8fCBjb250eXBlCiAgICAgICAgIFdIRU4gYWQub2lkIElTIE5PVCBOVUxM IFRIRU4gJ0EnOjp0ZXh0Ci0gICAgICAgIFdIRU4gZnMub2lkIElTIE5PVCBO VUxMIFRIRU4gJ0YnOjp0ZXh0Ci0gICAgICAgIFdIRU4gZmR3Lm9pZCBJUyBO T1QgTlVMTCBUSEVOICdmJzo6dGV4dAogICAgICAgICBFTFNFICcnCiAgICAg RU5EIEFTIHR5cGUsCiAgICAgQ09BTEVTQ0UoY29jLnJlbG5hbWUsIGNscncu cmVsbmFtZSkgQVMgb3duZXJ0YWJsZSwKICAgICBDQVNFIFdIRU4gY2wucmVs bmFtZSBJUyBOT1QgTlVMTCBBTkQgYXR0LmF0dG5hbWUgSVMgTk9UIE5VTEwg VEhFTiBjbC5yZWxuYW1lIHx8ICcuJyB8fCBhdHQuYXR0bmFtZQotICAgIEVM U0UgQ09BTEVTQ0UoY2wucmVsbmFtZSwgY28uY29ubmFtZSwgcHIucHJvbmFt ZSwgdGcudGduYW1lLCB0eS50eXBuYW1lLCBsYS5sYW5uYW1lLCBydy5ydWxl bmFtZSwgbnMubnNwbmFtZSwgZnMuc3J2bmFtZSwgZmR3LmZkd25hbWUpCisg ICAgRUxTRSBDT0FMRVNDRShjbC5yZWxuYW1lLCBjby5jb25uYW1lLCBwci5w cm9uYW1lLCB0Zy50Z25hbWUsIHR5LnR5cG5hbWUsIGxhLmxhbm5hbWUsIHJ3 LnJ1bGVuYW1lLCBucy5uc3BuYW1lKQogICAgIEVORCBBUyByZWZuYW1lLAog ICAgIENPQUxFU0NFKG5zYy5uc3BuYW1lLCBuc28ubnNwbmFtZSwgbnNwLm5z cG5hbWUsIG5zdC5uc3BuYW1lLCBuc3J3Lm5zcG5hbWUpIEFTIG5zcG5hbWUK IEZST00gcGdfZGVwZW5kIGRlcApAQCAtOTEsMTEgKzM0LDggQEAgTEVGVCBK T0lOIHBnX25hbWVzcGFjZSBuc3J3IE9OIGNscncucmVsbmFtZXNwYWNlPW5z cncub2lkCiBMRUZUIEpPSU4gcGdfbGFuZ3VhZ2UgbGEgT04gZGVwLm9iamlk PWxhLm9pZAogTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBkZXAub2Jq aWQ9bnMub2lkCiBMRUZUIEpPSU4gcGdfYXR0cmRlZiBhZCBPTiBhZC5vaWQ9 ZGVwLm9iamlkCi1MRUZUIEpPSU4gcGdfZm9yZWlnbl9zZXJ2ZXIgZnMgT04g ZnMub2lkPWRlcC5vYmppZAotTEVGVCBKT0lOIHBnX2ZvcmVpZ25fZGF0YV93 cmFwcGVyIGZkdyBPTiBmZHcub2lkPWRlcC5vYmppZAoge3t3aGVyZV9jbGF1 c2V9fSBBTkQKIGNsYXNzaWQgSU4gKCBTRUxFQ1Qgb2lkIEZST00gcGdfY2xh c3MgV0hFUkUgcmVsbmFtZSBJTgogICAgKCdwZ19jbGFzcycsICdwZ19jb25z dHJhaW50JywgJ3BnX2NvbnZlcnNpb24nLCAncGdfbGFuZ3VhZ2UnLCAncGdf cHJvYycsICdwZ19yZXdyaXRlJywgJ3BnX25hbWVzcGFjZScsCiAgICAncGdf dHJpZ2dlcicsICdwZ190eXBlJywgJ3BnX2F0dHJkZWYnLCAncGdfZXZlbnRf dHJpZ2dlcicsICdwZ19mb3JlaWduX3NlcnZlcicsICdwZ19mb3JlaWduX2Rh dGFfd3JhcHBlcicpKQotT1JERVIgQlkgY2xhc3NpZCwgY2wucmVsa2luZAot eyUgZW5kaWYgJX0KK09SREVSIEJZIGNsYXNzaWQsIGNsLnJlbGtpbmQ7CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy90ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvZGVmYXVsdC9yb2xlX2Rl cGVuZGVuY2llcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy90ZW1wbGF0ZXMvZGVwZW5kcy9zcWwvZGVmYXVsdC9y b2xlX2RlcGVuZGVuY2llcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAuLjI1ZmMzZjg1Ci0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxh dGVzL2RlcGVuZHMvc3FsL2RlZmF1bHQvcm9sZV9kZXBlbmRlbmNpZXMuc3Fs CkBAIC0wLDAgKzEsNCBAQAorU0VMRUNUIHJvbG5hbWUgQVMgcmVmbmFtZSwg cmVmY2xhc3NpZCwgZGVwdHlwZQorRlJPTSBwZ19zaGRlcGVuZCBkZXAKK0xF RlQgSk9JTiBwZ19yb2xlcyByIE9OIHJlZmNsYXNzaWQ9MTI2MCBBTkQgcmVm b2JqaWQ9ci5vaWQKK3t7d2hlcmVfY2xhdXNlfX0gT1JERVIgQlkgMQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvdGVzdHMvdGVzdF9kZXBlbmRlbmNpZXNfc3FsLnB5IGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVz dF9kZXBlbmRlbmNpZXNfc3FsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwLi4yYTAyMzVhMgotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3Rz L3Rlc3RfZGVwZW5kZW5jaWVzX3NxbC5weQpAQCAtMCwwICsxLDUxIEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitpbXBv cnQgb3MKKworZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzLnNx bF90ZW1wbGF0ZV90ZXN0X2Jhc2UgaW1wb3J0IFNRTFRlbXBsYXRlVGVzdEJh c2UKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscy50ZW1wbGF0 ZV9oZWxwZXIgaW1wb3J0IGZpbGVfYXNfdGVtcGxhdGUKKworCitjbGFzcyBU ZXN0RGVwZW5kZW5jaWVzU3FsKFNRTFRlbXBsYXRlVGVzdEJhc2UpOgorICAg IHNjZW5hcmlvcyA9IFsKKyAgICAgICAgIyBGZXRjaGluZyBkZWZhdWx0IFVS TCBmb3Igc2NoZW1hIG5vZGUuCisgICAgICAgICgnVGVzdCBkZXBlbmRlbmNp ZXMgU1FMIGZpbGUnLCBkaWN0KCkpCisgICAgXQorCisgICAgZGVmIF9faW5p dF9fKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0RGVwZW5kZW5jaWVzU3Fs LCBzZWxmKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYudGFibGVfaWQgPSAt MQorCisgICAgZGVmIHRlc3Rfc2V0dXAoc2VsZiwgY29ubmVjdGlvbiwgY3Vy c29yKToKKyAgICAgICAgY3Vyc29yLmV4ZWN1dGUoIlNFTEVDVCBwZ19jbGFz cy5vaWQgQVMgdGFibGVfaWQgIgorICAgICAgICAgICAgICAgICAgICAgICAi RlJPTSBwZ19jbGFzcyAiCisgICAgICAgICAgICAgICAgICAgICAgICJXSEVS RSBwZ19jbGFzcy5yZWxuYW1lPSd0ZXN0X3RhYmxlJyIpCisgICAgICAgIHNl bGYudGFibGVfaWQgPSBjdXJzb3IuZmV0Y2hvbmUoKVswXQorCisgICAgZGVm IGdlbmVyYXRlX3NxbChzZWxmLCB2ZXJzaW9uKToKKyAgICAgICAgdGVtcGxh dGVfZmlsZSA9IHNlbGYuZ2V0X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgImRl cGVuZGVuY2llcy5zcWwiKQorICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNf dGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKKyAgICAgICAgc3FsID0gdGVtcGxh dGUucmVuZGVyKHdoZXJlX2NsYXVzZT0iV0hFUkUgZGVwLm9iamlkPSVzOjpv aWQiICUgc2VsZi50YWJsZV9pZCkKKworICAgICAgICByZXR1cm4gc3FsCisK KyAgICBkZWYgYXNzZXJ0aW9ucyhzZWxmLCBmZXRjaF9yZXN1bHQsIGRlc2Ny aXB0aW9ucyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGZl dGNoX3Jlc3VsdCkpCisKKyAgICAgICAgZmlyc3Rfcm93ID0ge30KKyAgICAg ICAgZm9yIGluZGV4LCBkZXNjcmlwdGlvbiBpbiBlbnVtZXJhdGUoZGVzY3Jp cHRpb25zKToKKyAgICAgICAgICAgIGZpcnN0X3Jvd1tkZXNjcmlwdGlvbi5u YW1lXSA9IGZldGNoX3Jlc3VsdFswXVtpbmRleF0KKworICAgICAgICBzZWxm LmFzc2VydEVxdWFsKCduJywgZmlyc3Rfcm93WyJkZXB0eXBlIl0pCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3B1YmxpYycsIGZpcnN0X3Jvd1sicmVm bmFtZSJdKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBnZXRfdGVt cGxhdGVfZmlsZSh2ZXJzaW9uLCBmaWxlbmFtZSk6CisgICAgICAgIHJldHVy biBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4u IiwgInRlbXBsYXRlcyIsICJkZXBlbmRzIiwgInNxbCIsIHZlcnNpb24sIGZp bGVuYW1lKQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9kZXBlbmRlbnRzX3NxbC5w eSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L3Rlc3RzL3Rlc3RfZGVwZW5kZW50c19zcWwucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAuLmI4MmRlNmQ5Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvdGVzdHMvdGVzdF9kZXBlbmRlbnRzX3NxbC5weQpAQCAtMCwwICsxLDUx IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CitpbXBvcnQgb3MKKworZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0 aWxzLnNxbF90ZW1wbGF0ZV90ZXN0X2Jhc2UgaW1wb3J0IFNRTFRlbXBsYXRl VGVzdEJhc2UKK2Zyb20gcmVncmVzc2lvbi5weXRob25fdGVzdF91dGlscy50 ZW1wbGF0ZV9oZWxwZXIgaW1wb3J0IGZpbGVfYXNfdGVtcGxhdGUKKworCitj bGFzcyBUZXN0RGVwZW5kZW50c1NxbChTUUxUZW1wbGF0ZVRlc3RCYXNlKToK KyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICMgRmV0Y2hpbmcgZGVmYXVs dCBVUkwgZm9yIHNjaGVtYSBub2RlLgorICAgICAgICAoJ1Rlc3QgZGVwZW5k ZW5jaWVzIFNRTCBmaWxlJywgZGljdCgpKQorICAgIF0KKworICAgIGRlZiBf X2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdERlcGVuZGVudHNT cWwsIHNlbGYpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi50YWJsZV9pZCA9 IC0xCisKKyAgICBkZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBj dXJzb3IpOgorICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiU0VMRUNUIHBnX2Ns YXNzLm9pZCBBUyB0YWJsZV9pZCAiCisgICAgICAgICAgICAgICAgICAgICAg ICJGUk9NIHBnX2NsYXNzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIldI RVJFIHBnX2NsYXNzLnJlbG5hbWU9J3Rlc3RfdGFibGUnIikKKyAgICAgICAg c2VsZi50YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCisKKyAgICBk ZWYgZ2VuZXJhdGVfc3FsKHNlbGYsIHZlcnNpb24pOgorICAgICAgICB0ZW1w bGF0ZV9maWxlID0gc2VsZi5nZXRfdGVtcGxhdGVfZmlsZSh2ZXJzaW9uLCAi ZGVwZW5kZW50cy5zcWwiKQorICAgICAgICB0ZW1wbGF0ZSA9IGZpbGVfYXNf dGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKKyAgICAgICAgc3FsID0gdGVtcGxh dGUucmVuZGVyKHdoZXJlX2NsYXVzZT0iV0hFUkUgZGVwLm9iamlkPSVzOjpv aWQiICUgc2VsZi50YWJsZV9pZCkKKworICAgICAgICByZXR1cm4gc3FsCisK KyAgICBkZWYgYXNzZXJ0aW9ucyhzZWxmLCBmZXRjaF9yZXN1bHQsIGRlc2Ny aXB0aW9ucyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGZl dGNoX3Jlc3VsdCkpCisKKyAgICAgICAgZmlyc3Rfcm93ID0ge30KKyAgICAg ICAgZm9yIGluZGV4LCBkZXNjcmlwdGlvbiBpbiBlbnVtZXJhdGUoZGVzY3Jp cHRpb25zKToKKyAgICAgICAgICAgIGZpcnN0X3Jvd1tkZXNjcmlwdGlvbi5u YW1lXSA9IGZldGNoX3Jlc3VsdFswXVtpbmRleF0KKworICAgICAgICBzZWxm LmFzc2VydEVxdWFsKCduJywgZmlyc3Rfcm93WyJkZXB0eXBlIl0pCisgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3RfdGFibGUnLCBmaXJzdF9yb3db InJlZm5hbWUiXSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZ2V0 X3RlbXBsYXRlX2ZpbGUodmVyc2lvbiwgZmlsZW5hbWUpOgorICAgICAgICBy ZXR1cm4gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks ICIuLiIsICJ0ZW1wbGF0ZXMiLCAiZGVwZW5kcyIsICJzcWwiLCB2ZXJzaW9u LCBmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3Rlc3RzL3Rlc3Rfcm9sZV9kZXBlbmRl bmNpZXNfc3FsLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9yb2xlX2RlcGVuZGVuY2llc19zcWwu cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjgyN2U0 NGUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVzdHMvdGVzdF9yb2xlX2RlcGVuZGVu Y2llc19zcWwucHkKQEAgLTAsMCArMSw3NiBAQAorIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE3LCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2Zyb20gcGdhZG1pbi5icm93c2Vy LnNlcnZlcl9ncm91cHMuc2VydmVycy5yb2xlcy50ZXN0cy51dGlscyBpbXBv cnQgY3JlYXRlX3JvbGUsIGRlbGV0ZV9yb2xlCitmcm9tIHBnYWRtaW4udXRp bHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitpbXBvcnQgb3MK KworZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0 ZXN0X3V0aWxzCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMu c3FsX3RlbXBsYXRlX3Rlc3RfYmFzZSBpbXBvcnQgU1FMVGVtcGxhdGVUZXN0 QmFzZQorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzLnRlbXBs YXRlX2hlbHBlciBpbXBvcnQgZmlsZV9hc190ZW1wbGF0ZQorZnJvbSByZWdy ZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzLnRlc3RfdXRpbHMgaW1wb3J0IGNy ZWF0ZV9kYXRhYmFzZQorCisKK2NsYXNzIFRlc3RSb2xlRGVwZW5kZW5jaWVz U3FsKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICBzY2VuYXJpb3MgPSBbCisg ICAgICAgICMgRmV0Y2hpbmcgZGVmYXVsdCBVUkwgZm9yIHNjaGVtYSBub2Rl LgorICAgICAgICAoJ1Rlc3QgUm9sZSBEZXBlbmRlbmNpZXMgU1FMIGZpbGUn LCBkaWN0KCkpCisgICAgXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgor ICAgICAgICBzdXBlcihUZXN0Um9sZURlcGVuZGVuY2llc1NxbCwgc2VsZiku X19pbml0X18oKQorICAgICAgICBzZWxmLnRhYmxlX2lkID0gLTEKKworICAg IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgY3JlYXRlX3JvbGUoc2VsZi5z ZXJ2ZXIsICJ0ZXN0cGdhZG1pbiIpCisgICAgICAgIHNlbGYuc2VydmVyX3dp dGhfbW9kaWZpZWRfdXNlciA9IHNlbGYuc2VydmVyLmNvcHkoKQorICAgICAg ICBzZWxmLnNlcnZlcl93aXRoX21vZGlmaWVkX3VzZXJbJ3VzZXJuYW1lJ10g PSAidGVzdHBnYWRtaW4iCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAg ICAgICAgaWYgaGFzYXR0cihzZWxmLCAiaWdub3JlX3Rlc3QiKToKKyAgICAg ICAgICAgIHJldHVybgorCisgICAgICAgIHdpdGggdGVzdF91dGlscy5EYXRh YmFzZShzZWxmLnNlcnZlcikgYXMgKGNvbm5lY3Rpb24sIGRhdGFiYXNlX25h bWUpOgorICAgICAgICAgICAgdGVzdF91dGlscy5jcmVhdGVfdGFibGUoc2Vs Zi5zZXJ2ZXJfd2l0aF9tb2RpZmllZF91c2VyLCBkYXRhYmFzZV9uYW1lLCAi dGVzdF9uZXdfcm9sZV90YWJsZSIpCisgICAgICAgICAgICBjdXJzb3IgPSBj b25uZWN0aW9uLmN1cnNvcigpCisgICAgICAgICAgICBjdXJzb3IuZXhlY3V0 ZSgiU0VMRUNUIHBnX2NsYXNzLm9pZCBBUyB0YWJsZV9pZCAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAiRlJPTSBwZ19jbGFzcyAiCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAiV0hFUkUgcGdfY2xhc3MucmVsbmFtZT0n dGVzdF9uZXdfcm9sZV90YWJsZSciKQorICAgICAgICAgICAgc2VsZi50YWJs ZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCisKKyAgICAgICAgICAgIHNx bCA9IHNlbGYuZ2VuZXJhdGVfc3FsKCdkZWZhdWx0JykKKyAgICAgICAgICAg IGN1cnNvci5leGVjdXRlKHNxbCkKKworICAgICAgICAgICAgZmV0Y2hfcmVz dWx0ID0gY3Vyc29yLmZldGNoYWxsKCkKKyAgICAgICAgICAgIHNlbGYuYXNz ZXJ0aW9ucyhmZXRjaF9yZXN1bHQsIGN1cnNvci5kZXNjcmlwdGlvbikKKwor ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0X3V0 aWxzLkRhdGFiYXNlKHNlbGYuc2VydmVyKSBhcyAoY29ubmVjdGlvbiwgZGF0 YWJhc2VfbmFtZSk6CisgICAgICAgICAgICBjdXJzb3IgPSBjb25uZWN0aW9u LmN1cnNvcigpCisgICAgICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiRFJPUCBS T0xFIHRlc3RwZ2FkbWluIikKKyAgICAgICAgICAgIGNvbm5lY3Rpb24uY29t bWl0KCkKKworICAgIGRlZiBnZW5lcmF0ZV9zcWwoc2VsZiwgdmVyc2lvbik6 CisgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBzZWxmLmdldF90ZW1wbGF0ZV9m aWxlKHZlcnNpb24sICJyb2xlX2RlcGVuZGVuY2llcy5zcWwiKQorICAgICAg ICB0ZW1wbGF0ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkK KyAgICAgICAgc3FsID0gdGVtcGxhdGUucmVuZGVyKHdoZXJlX2NsYXVzZT0i V0hFUkUgZGVwLm9iamlkPSVzOjpvaWQiICUgc2VsZi50YWJsZV9pZCkKKwor ICAgICAgICByZXR1cm4gc3FsCisKKyAgICBkZWYgYXNzZXJ0aW9ucyhzZWxm LCBmZXRjaF9yZXN1bHQsIGRlc2NyaXB0aW9ucyk6CisgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwoMSwgbGVuKGZldGNoX3Jlc3VsdCkpCisKKyAgICAgICAg Zmlyc3Rfcm93ID0ge30KKyAgICAgICAgZm9yIGluZGV4LCBkZXNjcmlwdGlv biBpbiBlbnVtZXJhdGUoZGVzY3JpcHRpb25zKToKKyAgICAgICAgICAgIGZp cnN0X3Jvd1tkZXNjcmlwdGlvbi5uYW1lXSA9IGZldGNoX3Jlc3VsdFswXVtp bmRleF0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvJywgZmlyc3Rf cm93WyJkZXB0eXBlIl0pCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGdldF90ZW1wbGF0ZV9maWxlKHZlcnNpb24sIGZpbGVuYW1lKToKKyAgICAg ICAgcmV0dXJuIG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxl X18pLCAiLi4iLCAidGVtcGxhdGVzIiwgImRlcGVuZHMiLCAic3FsIiwgdmVy c2lvbiwgZmlsZW5hbWUpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3V0aWxzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci91dGlscy5weQpp bmRleCBkMjg5OTg3NS4uNzA4YmZkZmIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdXRpbHMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci91dGlscy5weQpAQCAtMzUzLDE1ICszNTMsMTUgQEAgY2xhc3MgUEdDaGls ZE5vZGVWaWV3KE5vZGVWaWV3KToKICAgICAgICAgZWxzZToKICAgICAgICAg ICAgIHdoZXJlX2NsYXVzZSA9IHdoZXJlCiAKLSAgICAgICAgcXVlcnkgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NxbF9wYXRoLCAnZGVwZW5kZW50 cy5zcWwnXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZl dGNoX2RlcGVuZGVuY2llcz1UcnVlLCB3aGVyZV9jbGF1c2U9d2hlcmVfY2xh dXNlKQorICAgICAgICBxdWVyeSA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9p bihbc3FsX3BhdGgsICdkZXBlbmRlbmNpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB3aGVyZV9jbGF1c2U9d2hlcmVfY2xh dXNlKQogICAgICAgICAjIGZldGNoIHRoZSBkZXBlbmRlbmN5IGZvciB0aGUg c2VsZWN0ZWQgb2JqZWN0CiAgICAgICAgIGRlcGVuZGVuY2llcyA9IHNlbGYu X19mZXRjaF9kZXBlbmRlbmN5KGNvbm4sIHF1ZXJ5KQogCiAgICAgICAgICMg ZmV0Y2ggcm9sZSBkZXBlbmRlbmNpZXMKICAgICAgICAgaWYgd2hlcmVfY2xh dXNlLmZpbmQoJ3N1YmlkJykgPCAwOgotICAgICAgICAgICAgc3FsID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzcWxfcGF0aCwgJ2RlcGVuZGVudHMu c3FsJ10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZl dGNoX3JvbGVfZGVwZW5kZW5jaWVzPVRydWUsIHdoZXJlX2NsYXVzZT13aGVy ZV9jbGF1c2UpCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NxbF9wYXRoLCAncm9sZV9kZXBlbmRlbmNpZXMuc3FsJ10p LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlX2Ns YXVzZT13aGVyZV9jbGF1c2UpCiAKICAgICAgICAgICAgIHN0YXR1cywgcmVz dWx0ID0gY29ubi5leGVjdXRlX2RpY3Qoc3FsKQogICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKQEAgLTQwMiw3ICs0MDIsNyBAQCBjbGFzcyBQR0NoaWxk Tm9kZVZpZXcoTm9kZVZpZXcpOgogICAgICAgICAgICAgd2hlcmVfY2xhdXNl ID0gd2hlcmUKIAogICAgICAgICBxdWVyeSA9IHJlbmRlcl90ZW1wbGF0ZSgi LyIuam9pbihbc3FsX3BhdGgsICdkZXBlbmRlbnRzLnNxbCddKSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmV0Y2hfZGVwZW5kZW50cz1U cnVlLCB3aGVyZV9jbGF1c2U9d2hlcmVfY2xhdXNlKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB3aGVyZV9jbGF1c2U9d2hlcmVfY2xhdXNl KQogICAgICAgICAjIGZldGNoIHRoZSBkZXBlbmRlbmN5IGZvciB0aGUgc2Vs ZWN0ZWQgb2JqZWN0CiAgICAgICAgIGRlcGVuZGVudHMgPSBzZWxmLl9fZmV0 Y2hfZGVwZW5kZW5jeShjb25uLCBxdWVyeSkKIApkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jl c3VsdHNfZmVhdHVyZV90ZXN0LnB5IGIvd2ViL3BnYWRtaW4vZmVhdHVyZV90 ZXN0cy9jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jlc3VsdHNfZmVhdHVyZV90ZXN0 LnB5CmluZGV4IDIyMzU3OWVlLi4zMzhlNWY3MSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vZmVhdHVyZV90ZXN0cy9jb3B5X3NlbGVjdGVkX3F1ZXJ5X3Jl c3VsdHNfZmVhdHVyZV90ZXN0LnB5CisrKyBiL3dlYi9wZ2FkbWluL2ZlYXR1 cmVfdGVzdHMvY29weV9zZWxlY3RlZF9xdWVyeV9yZXN1bHRzX2ZlYXR1cmVf dGVzdC5weQpAQCAtMSwzICsxLDEyIEBACisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz CisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTcsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCiBpbXBvcnQgcHlwZXJjbGlwCiBpbXBv cnQgdGltZQogCkBAIC0zNyw3ICs0Niw3IEBAIGNsYXNzIENvcHlTZWxlY3Rl ZFF1ZXJ5UmVzdWx0c0ZlYXR1cmVUZXN0KEJhc2VGZWF0dXJlVGVzdCk6CiAg ICAgICAgIHNlbGYucGFnZS5maW5kX2J5X3BhcnRpYWxfbGlua190ZXh0KCJR dWVyeSBUb29sIikuY2xpY2soKQogICAgICAgICBzZWxmLnBhZ2UuY2xpY2tf dGFiKCdRdWVyeS0xJykKICAgICAgICAgdGltZS5zbGVlcCg1KQotICAgICAg ICBBY3Rpb25DaGFpbnMoc2VsZi5wYWdlLmRyaXZlcikuc2VuZF9rZXlzKCJT RUxFQ1QgKiBGUk9NIHRlc3RfdGFibGUiKS5wZXJmb3JtKCkKKyAgICAgICAg QWN0aW9uQ2hhaW5zKHNlbGYucGFnZS5kcml2ZXIpLnNlbmRfa2V5cygiU0VM RUNUICogRlJPTSB0ZXN0X3RhYmxlIE9SREVSIEJZIHNvbWVfY29sdW1uIiku cGVyZm9ybSgpCiAgICAgICAgIHNlbGYucGFnZS5kcml2ZXIuc3dpdGNoX3Rv X2ZyYW1lKHNlbGYucGFnZS5kcml2ZXIuZmluZF9lbGVtZW50X2J5X3RhZ19u YW1lKCJpZnJhbWUiKSkKICAgICAgICAgc2VsZi5wYWdlLmZpbmRfYnlfaWQo ImJ0bi1mbGFzaCIpLmNsaWNrKCkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vZmVhdHVyZV90ZXN0cy94c3NfY2hlY2tzX3BnYWRtaW5fZGVidWdnZXJf dGVzdC5weSBiL3dlYi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNr c19wZ2FkbWluX2RlYnVnZ2VyX3Rlc3QucHkKaW5kZXggOGIwMThmZWQuLjE3 YmM3YmY1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9mZWF0dXJlX3Rlc3Rz L3hzc19jaGVja3NfcGdhZG1pbl9kZWJ1Z2dlcl90ZXN0LnB5CisrKyBiL3dl Yi9wZ2FkbWluL2ZlYXR1cmVfdGVzdHMveHNzX2NoZWNrc19wZ2FkbWluX2Rl YnVnZ2VyX3Rlc3QucHkKQEAgLTE2LDEwICsxNiwxNCBAQCBjbGFzcyBDaGVj a0RlYnVnZ2VyRm9yWHNzRmVhdHVyZVRlc3QoQmFzZUZlYXR1cmVUZXN0KToK ICAgICAiIiJUZXN0cyB0byBjaGVjayBpZiBEZWJ1Z2dlciBpcyB2dWxuZXJh YmxlIHRvIFhTUy4iIiIKIAogICAgIHNjZW5hcmlvcyA9IFsKLSAgICAgICAg KCJUZXN0IHRhYmxlIERETCBnZW5lcmF0aW9uIiwgZGljdCgpKQorICAgICAg ICAoIlRlc3RzIHRvIGNoZWNrIGlmIERlYnVnZ2VyIGlzIHZ1bG5lcmFibGUg dG8gWFNTIiwgZGljdCgpKQogICAgIF0KIAogICAgIGRlZiBiZWZvcmUoc2Vs Zik6CisgICAgICAgIHdpdGggdGVzdF91dGlscy5EYXRhYmFzZShzZWxmLnNl cnZlcikgYXMgKGNvbm5lY3Rpb24sIF8pOgorICAgICAgICAgICAgaWYgY29u bmVjdGlvbi5zZXJ2ZXJfdmVyc2lvbiA8IDkwMTAwOgorICAgICAgICAgICAg ICAgIHNlbGYuc2tpcFRlc3QoIkZ1bmN0aW9ucyB0cmVlIG5vZGUgaXMgbm90 IHByZXNlbnQgaW4gcGdBZG1pbiBiZWxvdyBQRyB2OS4xIikKKwogICAgICAg ICAjIFNvbWUgdGVzdCBmdW5jdGlvbiBpcyBuZWVkZWQgZm9yIGRlYnVnZ2Vy CiAgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRlX2RlYnVnX2Z1bmN0aW9uKHNl bGYuc2VydmVyLCAicG9zdGdyZXMiLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAidGVzdF9mdW5jdGlvbiIpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy90YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsL3Rl c3RzL3Rlc3RfdHJpZ2dlcl9ub2Rlcy5weSBiL3dlYi9yZWdyZXNzaW9uL3B5 dGhvbl90ZXN0X3V0aWxzL3NxbF90ZW1wbGF0ZV90ZXN0X2Jhc2UucHkKc2lt aWxhcml0eSBpbmRleCA1OSUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL3RlbXBsYXRlcy90cmlnZ2VyL3NxbC90ZXN0cy90ZXN0X3RyaWdn ZXJfbm9kZXMucHkKcmVuYW1lIHRvIHdlYi9yZWdyZXNzaW9uL3B5dGhvbl90 ZXN0X3V0aWxzL3NxbF90ZW1wbGF0ZV90ZXN0X2Jhc2UucHkKaW5kZXggYjIz YmY2MGEuLjgwMDllMzFlIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90 YWJsZXMvdGVtcGxhdGVzL3RyaWdnZXIvc3FsL3Rlc3RzL3Rlc3RfdHJpZ2dl cl9ub2Rlcy5weQorKysgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91 dGlscy9zcWxfdGVtcGxhdGVfdGVzdF9iYXNlLnB5CkBAIC03LDQ1ICs3LDUz IEBACiAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi1pbXBv cnQgb3MKLWltcG9ydCBzeXMKLQorZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRl IGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5 dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCiBmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBEcml2ZXJSZWdpc3RyeQotZnJvbSBy ZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzLnRlbXBsYXRlX2hlbHBlciBp bXBvcnQgZmlsZV9hc190ZW1wbGF0ZQogCiBEcml2ZXJSZWdpc3RyeS5sb2Fk X2RyaXZlcnMoKQotZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBC YXNlVGVzdEdlbmVyYXRvcgotZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0 X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzCiAKLWlmIHN5cy52ZXJzaW9uX2lu Zm9bMF0gPj0gMzoKLSAgICBsb25nID0gaW50CiAKK2NsYXNzIFNRTFRlbXBs YXRlVGVzdEJhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAgIHNjZW5hcmlv cyA9IFsKKyAgICAgICAgKCJwYXJlbnQgdGVzdCBjbGFzcyIsIGRpY3QoaWdu b3JlX3Rlc3Q9VHJ1ZSkpCisgICAgXQorCisgICAgZGVmIF9faW5pdF9fKHNl bGYpOgorICAgICAgICBzdXBlcihTUUxUZW1wbGF0ZVRlc3RCYXNlLCBzZWxm KS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuZGF0YWJhc2VfbmFtZSA9IC0x CisgICAgICAgIHNlbGYudmVyc2lvbnNfdG9fdGVzdCA9IC0xCisKKyAgICBk ZWYgdGVzdF9zZXR1cChzZWxmLCBjb25uZWN0aW9uLCBjdXJzb3IpOgorICAg ICAgICBwYXNzCisKKyAgICBkZWYgZ2VuZXJhdGVfc3FsKHNlbGYsIHZlcnNp b24pOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgYXNzZXJ0aW9ucyhzZWxm LCBmZXRjaF9yZXN1bHQsIGRlc2NyaXB0aW9ucyk6CisgICAgICAgIHBhc3MK IAotY2xhc3MgVGVzdFRyaWdnZXJOb2RlcyhCYXNlVGVzdEdlbmVyYXRvcik6 CiAgICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBXaGVuIHRo ZXJlIGFyZSBubyB0cmlnZ2VycywgaXQgcmV0dXJucyBhbiBlbXB0eSByZXN1 bHQgIiIiCisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgImlnbm9yZV90ZXN0 Iik6CisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB3aXRoIHRlc3Rf dXRpbHMuRGF0YWJhc2Uoc2VsZi5zZXJ2ZXIpIGFzIChjb25uZWN0aW9uLCBk YXRhYmFzZV9uYW1lKToKICAgICAgICAgICAgIHRlc3RfdXRpbHMuY3JlYXRl X3RhYmxlKHNlbGYuc2VydmVyLCBkYXRhYmFzZV9uYW1lLCAidGVzdF90YWJs ZSIpCi0KLSAgICAgICAgICAgIGN1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29y KCkKLSAgICAgICAgICAgIGN1cnNvci5leGVjdXRlKCJTRUxFQ1QgcGdfY2xh c3Mub2lkIEFTIHRhYmxlX2lkICIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICJGUk9NIHBnX2NsYXNzICIKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICJXSEVSRSBwZ19jbGFzcy5yZWxuYW1lPSd0ZXN0X3RhYmxlJyIpCi0g ICAgICAgICAgICB0YWJsZV9pZCA9IGN1cnNvci5mZXRjaG9uZSgpWzBdCisg ICAgICAgICAgICBzZWxmLmRhdGFiYXNlX25hbWUgPSBkYXRhYmFzZV9uYW1l CiAKICAgICAgICAgICAgIGlmIGNvbm5lY3Rpb24uc2VydmVyX3ZlcnNpb24g PCA5MDEwMDoKICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zX3RvX3Rl c3QgPSBbJ2RlZmF1bHQnXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAg ICAgICAgICBzZWxmLnZlcnNpb25zX3RvX3Rlc3QgPSBbJzkuMV9wbHVzJ10K IAotICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi52ZXJzaW9uc190 b190ZXN0OgotICAgICAgICAgICAgICAgIHRlbXBsYXRlX2ZpbGUgPSBvcy5w YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgdmVy c2lvbiwgIm5vZGVzLnNxbCIpCi0KLSAgICAgICAgICAgICAgICB0ZW1wbGF0 ZSA9IGZpbGVfYXNfdGVtcGxhdGUodGVtcGxhdGVfZmlsZSkKKyAgICAgICAg ICAgIGN1cnNvciA9IGNvbm5lY3Rpb24uY3Vyc29yKCkKKyAgICAgICAgICAg IHNlbGYudGVzdF9zZXR1cChjb25uZWN0aW9uLCBjdXJzb3IpCiAKLSAgICAg ICAgICAgICAgICBzcWwgPSB0ZW1wbGF0ZS5yZW5kZXIodGlkPXRhYmxlX2lk KQorICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi52ZXJzaW9uc190 b190ZXN0OgorICAgICAgICAgICAgICAgIHNxbCA9IHNlbGYuZ2VuZXJhdGVf c3FsKHZlcnNpb24pCiAKICAgICAgICAgICAgICAgICBjdXJzb3IgPSBjb25u ZWN0aW9uLmN1cnNvcigpCiAgICAgICAgICAgICAgICAgY3Vyc29yLmV4ZWN1 dGUoc3FsKQogICAgICAgICAgICAgICAgIGZldGNoX3Jlc3VsdCA9IGN1cnNv ci5mZXRjaGFsbCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh bCgwLCBsZW4oZmV0Y2hfcmVzdWx0KSkKKworICAgICAgICAgICAgICAgIHNl bGYuYXNzZXJ0aW9ucyhmZXRjaF9yZXN1bHQsIGN1cnNvci5kZXNjcmlwdGlv bikKLS0gCjIuMTIuMAoK --001a114daf92984938054f5760f4 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 --001a114daf92984938054f5760f4--