Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJzvt-0002BA-T4 for pgadmin-hackers@arkaria.postgresql.org; Thu, 02 Apr 2020 13:30:58 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jJzvs-0001js-GL for pgadmin-hackers@arkaria.postgresql.org; Thu, 02 Apr 2020 13:30:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jJzvr-0001j1-K9 for pgadmin-hackers@lists.postgresql.org; Thu, 02 Apr 2020 13:30:56 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jJzvn-0008W9-9j for pgadmin-hackers@postgresql.org; Thu, 02 Apr 2020 13:30:54 +0000 Received: by mail-lf1-x134.google.com with SMTP id w145so2732373lff.3 for ; Thu, 02 Apr 2020 06:30:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=i7E24FkmZLdbkgt+6lVAb2RRsqKwLPYa4o+kM3OUhTk=; b=IbRNWz7XnkAr6viUXXOYrmtqnEkkjO4EatXWYEMTfklrTXB4hEtUfFi2sveIkJUKrn dX/uDc/Di7xisOMr1VfSbhh925fkm7SZnRjEusFFSYdU+AU6Wdx/MX59zdAl13KcGR4D XpMlEMiW3l2hWpSRlu7GecWbfCIuxOdMy7CRRkQUtO94WLi9w5Q2QN1XUX2Mm6qNV7J4 vmbKK7UrR3Jb6NJdyDVXGt8r6OWhS2iQYRWzbEpcPUPltHdooojdEj+8IrYsElu4jzvq J1Dv2llInE3Ejb+wj2quZ3WV92CmJibZnihd6byUdnabX9mks9VQg+NfudlZjUIROT6L j0lA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=i7E24FkmZLdbkgt+6lVAb2RRsqKwLPYa4o+kM3OUhTk=; b=YkQHDQhGc/45L0C0ZoaLs44Apjw9oxUDQoUcTPVjZV09ZrokNNpRCofBu5VHh3L8RV +2imTbVX7dA+xU7Sscjy4XLgn9KKn2bc++MZMyC6Ze88oKkoiXkZykUYInCAjcDo7TJz jmau8dHVIbVGVvVpXPebN8vPcExgWxJLli+ZU+yF+pZI+aDtrsd/KrAuMXWJ3sr1SlEh 9OdDIpoqmRA+Y0ce1uuO9hkS+VRKiEOo4P8/Uwt/y2zzyxb/bILmqWXCVIayq0xxg0Qy YZ+G4eeC+uvAcKpTImVNUvMv3CbrrWZbmK4kD6yzPar5Jtl8k36qRxLulejmXs1bOiSD DuGA== X-Gm-Message-State: AGi0PuZAdYcrbPEIOS1B2uFRwaTh6h/qLEHmC+FwpyZEzuRfbsNQVZF5 /CqslTkSulJe72qcdvS0rUYBodFOBEx4l0ch+BpKtWa7rnYzRzD1lnqm5MaDW0lUy3Jb7vpQ/wC BCh1ItvPgUtqQPSbZ3L2Dx798nr5e57VWXQgd7nexqfr+g0l8DYLOtIVJ9OFXwUtJ9QVnaefO3m c2nIgwWzps1E1LW/5yjenj6jWEU0RFe+ly5SrPjnR/hI2SyPa311k= X-Google-Smtp-Source: APiQypJwQJgdsn1L5mrdKvQx+Zh+PDlLHoSSvhXd6AjlTPp0gVHyxNnN4ebwou72Dc9/ZMlBtTjvefpUE5Gz/dM6tM0= X-Received: by 2002:a19:ed14:: with SMTP id y20mr2228460lfy.179.1585834249404; Thu, 02 Apr 2020 06:30:49 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Thu, 2 Apr 2020 19:00:41 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP] To: Akshay Joshi Cc: Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000001c0a3f05a24ecf4c" X-CLOUD-SEC-AV-Info: edb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000001c0a3f05a24ecf4c Content-Type: multipart/alternative; boundary="0000000000001c0a3d05a24ecf4a" --0000000000001c0a3d05a24ecf4a Content-Type: text/plain; charset="UTF-8" Hi Akshay, Please find the attached updated patch. On Thu, Apr 2, 2020 at 4:55 PM Akshay Joshi wrote: > Hi Khushboo > > Following are the initial review comments (GUI): > > *Desktop Mode: * > > - KeyError: '_auth_source_manager_obj' in desktop mode. (*Note* error > occurs when the patch has applied and server mode is False.) > > Fixed. > *Server Mode:* > > AUTHENTICATION_SOURCES = ['internal'] > > > - Try to add a new user with the same email address, it throws a > unique key constraint error. Validation was there previously before saving > it. > > Fixed. > AUTHENTICATION_SOURCES = ['internal', 'ldap'] > > - Try to add a new user with the same email address, it throws > unique key constraint error which should not it may possible that the user > has the same email address for internal and ldap. > > If the source is internal, it will not allow but with ldap, we can add the user with the same email id. > AUTHENTICATION_SOURCES = ['ldap'] > > - If ipAddress or Port is not set in the configuration file then > browser showing the following data, it should be shown proper error message > on the login page > - {"success":0,"errormsg":"Port could not be cast to integer value > as ''","info":"","result":null,"data":null} > > Done > > - If IP address and port is provided but it is wrong, it shows the > following error, can we make a generic error message? Also clicking on the > Close button on that error message is not working. > [image: Screenshot 2020-04-02 at 4.23.55 PM.png] > > I will look into the close button issue as it is an existing issue. > > - > - IP address and port of LDAP server are correct, give wrong user name > and password, it shows error "Error binding to the LDAP Server: None". > Please correct the appropriate error message. > > Fixed. > > - All the configuration parameter is correct and tries to log in on > LDAP server using username (*not email address*) and password got following > error: > > current_user.email.split('@')[0] if config.SERVER_MODE is True > AttributeError: 'NoneType' object has no attribute 'split'. > > Fixed. > Not able to test due to the above error. Please fix and resend the patch. > Thanks, Khushboo Thanks, Khushboo > > On Thu, Apr 2, 2020 at 2:06 PM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Resending the patch. >> Missed the requirements.txt file in the previous patch. >> >> Thanks, >> Khushboo >> >> On Wed, Apr 1, 2020 at 5:38 PM Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find the attached updated patch which includes the review >>> comments given in the review meeting: >>> >>> 1. Do not store password for ldap user in sqlite database >>> 2. Forgot Password : Give error to ldap users >>> 3. User Management dialog changes >>> 4. Authentication source display besides username / email after login >>> >>> Thanks, >>> Khushboo >>> >>> >>> On Tue, Mar 24, 2020 at 3:20 PM Khushboo Vashi < >>> khushboo.vashi@enterprisedb.com> wrote: >>> >>>> Please disregard my previous patch, attached the updated patch. :) >>>> >>>> >>>> On Tue, Mar 24, 2020 at 10:32 AM Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Please disregard my previous patch, attached the updated patch. >>>>> >>>>> On Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi < >>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> Please find the attached updated patch. >>>>>> >>>>>> >>>>>> On Tue, Mar 17, 2020 at 4:11 PM Dave Page wrote: >>>>>> >>>>>>> Hi >>>>>>> >>>>>>> On Tue, Mar 17, 2020 at 10:24 AM Khushboo Vashi < >>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi Dave, >>>>>>>> >>>>>>>> Thanks for the review. >>>>>>>> >>>>>>>> On Tue, Mar 17, 2020 at 3:42 PM Dave Page >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Hi >>>>>>>>> >>>>>>>>> 30 second read of the first version of the patch... >>>>>>>>> >>>>>>>>> - Please move the configuration into config.py. Users should never >>>>>>>>> have to modify a distributed file (it messes up packaging). I don't see any >>>>>>>>> reason to use a different file just for auth config. >>>>>>>>> >>>>>>>>> There are many settings for the LDAP, and in the future we will >>>>>>>> add other external sources also, so I thought it would be better if we have >>>>>>>> different file for the authentication. >>>>>>>> >>>>>>> >>>>>>> Sure, but our config file is small compared to many. Splitting >>>>>>> things out is more confusing for users. If they want to do that themselves >>>>>>> of course, they can add a config_local.py file which includes other files >>>>>>> as needed. >>>>>>> >>>>>> Fixed. >>>>>> >>>>>>> >>>>>>> >>>>>>>> - I think all config options should be prefixed with LDAP_ as we >>>>>>>>> may have things like CERT_FILE for other purposes too. >>>>>>>>> >>>>>>>>> Sure. >>>>>>>> >>>>>>> Done. >>>>>> >>>>>>> - I don't see any test cases. >>>>>>>>> >>>>>>>>> I will think about this, as right now no idea how to write test >>>>>>>> cases for this. >>>>>>>> >>>>>>> >>>>>>> It should be fairly straightforward to write tests for some of the >>>>>>> functions in the auth classes. For testing the actual LDAP stuff, we >>>>>>> probably need to add LDAP config options to test_config.json, and only if >>>>>>> present, run the tests. That would probably need to support a list of LDAP >>>>>>> servers, so we can test with different configurations (LDAP, LDAPS, >>>>>>> LDAP_STARTTLS, AD etc). >>>>>>> >>>>>>> >>>>>> Done. >>>>>> >>>>>> Thanks, >>>>>> Khushboo >>>>>> >>>>>>> Thanks. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>> Khushboo >>>>>>>> >>>>>>>>> >>>>>>>>> On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi < >>>>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>>>> >>>>>>>>>> Hi, >>>>>>>>>> >>>>>>>>>> Please find the attached patch to support LDAP Authentication in >>>>>>>>>> Server mode. >>>>>>>>>> To test the patch, config_auth.py needs to be configured for LDAP >>>>>>>>>> configurations. The config settings are explained in this file in detail. >>>>>>>>>> After configuring the parameters, start the pgadmin server in Server mode >>>>>>>>>> and connect with LDAP server with the valid user via login page. >>>>>>>>>> >>>>>>>>>> I have tested this patch with ldap and ldap + ssl/tls. With the >>>>>>>>>> TLS, I have used the default config of ldap3 without certificates. >>>>>>>>>> >>>>>>>>>> @Dave, can you please review this patch, as you have a better >>>>>>>>>> understanding of LDAP and you can easily pointed out if I have missed >>>>>>>>>> anything. >>>>>>>>>> >>>>>>>>>> Note: For the document update I will create the task and assign >>>>>>>>>> to Nidhi for the same. >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Khushboo >>>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Dave Page >>>>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>>>> Twitter: @pgsnake >>>>>>>>> >>>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>>>> The Enterprise PostgreSQL Company >>>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Dave Page >>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>> Twitter: @pgsnake >>>>>>> >>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>> The Enterprise PostgreSQL Company >>>>>>> >>>>>> > > -- > *Thanks & Regards* > *Akshay Joshi* > > *Sr. Software Architect* > *EnterpriseDB Software India Private Limited* > *Mobile: +91 976-788-8246* > --0000000000001c0a3d05a24ecf4a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Akshay,

Please find the attached updated patch.

On Thu, Apr 2, 2020 at 4:55 P= M Akshay Joshi <akshay.= joshi@enterprisedb.com> wrote:
Hi=C2=A0Khushboo

= Following are the initial review comments (GUI):

<= div>Desktop Mode:=C2=A0
  • KeyError: '_auth_source_man= ager_obj' in desktop mode. (Note error occurs when the patch has= applied and server mode is False.)
= Fixed.=C2=A0
Server Mode:
AUTHENTICATION_SOURCES =3D [&#= 39;internal']
  • Try to add a ne= w user with the same=C2=A0email address, it throws a unique=C2=A0key constr= aint=C2=A0error. Validation was there previously before saving it.
Fixed.=C2=A0
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
AUTHENTICATION_SOURCES =3D ['internal', 'ldap']
    Try to add a new user with the same=C2=A0email address, it throws unique= =C2=A0key constraint=C2=A0error which should not it may possible that=C2=A0= the user has the same email address for internal and ldap.
<= /div>
If the source is internal, = it will not allow but with ldap, we can add the user with the same email id= .=C2=A0
AUTHENTICATION_SOURCES =3D ['ldap']
  • If ip= Address or Port is not set in the configuration file then browser showing t= he following data, it should be shown proper error message on the login pag= e
    • {"= success":0,"errormsg":"Port could not be cast to intege= r value as '<port>'","info":"","= ;result":null,"data":null}
=
Done=C2=A0
  • If IP address and = port is provided but it is wrong, it shows the following error, can we make= a generic error message? Also clicking on the Close button on that error m= essage is not working.
    3D"Screenshot
  • IP address and port of LDAP server are corre= ct, give wrong user name and password, it shows error "Error binding t= o the LDAP Server: None". Please correct the appropriate error message= .
Fix= ed.=C2=A0
  • All the configuration parameter is correct = and tries to log in on LDAP server using username (*not email address*) and= password got following error:
curr= ent_user.email.split('@')[0] if config.SERVER_MODE is True
Attri= buteError: 'NoneType' object has no attribute 'split'.
Fixed.=C2=A0=
Not able to test due to the above error. Please fix and resend the patch= .

Thanks,
Khushboo

Thanks,
Khushboo

On Thu, Apr 2, 2020 at 2:06 PM Khushboo Vashi <<= a href=3D"mailto:khushboo.vashi@enterprisedb.com" target=3D"_blank">khushbo= o.vashi@enterprisedb.com> wrote:
Hi,

Resending t= he patch.=C2=A0
Missed the requirements.txt file in the previous = patch.

Thanks,
Khushboo

<= div class=3D"gmail_quote">
On Wed, Apr= 1, 2020 at 5:38 PM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wr= ote:
Hi,

Please find the attached updated patch which i= ncludes the review comments given in the review meeting:

1. Do not store password=C2=A0for ldap user in sqlite database
=
2. Forgot Password : Give error to ldap users
3. User Manage= ment dialog changes=C2=A0
4. Authentication source display beside= s username / email after login

Thanks,
K= hushboo


On Tue, Mar 24, 2020 at 3:20 PM Khushboo Vash= i <= khushboo.vashi@enterprisedb.com> wrote:
Please d= isregard my previous patch, attached the updated patch. :)

=

= On Tue, Mar 24, 2020 at 10:32 AM Khushboo Vashi <khushboo.vashi@enterprisedb.c= om> wrote:
Please disregard my previous patch, attached the updated= patch.

On Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi <khushboo.vashi@enterpr= isedb.com> wrote:
Hi,

Please = find the attached updated patch.


On Tue, Mar 17, 2020= at 4:11 PM Dave Page <dpage@pgadmin.org> wrote:
Hi

On Tue, Mar 17, 2020 at 10:2= 4 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi D= ave,

Thanks for the review.

On Tue, Mar 17, 2020 at= 3:42 PM Dave Page <dpage@pgadmin.org> wrote:
Hi

30 second read o= f the first version of the patch...

- Please move = the configuration into config.py. Users should never have to modify a distr= ibuted file (it messes up packaging). I don't see any reason to use a d= ifferent file just for auth config.

=
There are many settings for the LDAP, and in the future we will add ot= her external sources also, so I thought it would be better if we have diffe= rent file for the authentication.

Sure, but our config file is small compared to many. Splitting thi= ngs out is more confusing for users. If they want to do that themselves of = course, they can add a config_local.py file which includes other files as n= eeded.
Fixed.=C2=A0
=C2=A0
- I think al= l config options should be prefixed with LDAP_ as we may have things like C= ERT_FILE for other purposes too.

Sure.=C2=A0
D= one.=C2=A0
- I don'= t see any test cases.

I will th= ink about this, as right now no idea how to write test cases for this.=C2= =A0

It should be fairly s= traightforward to write tests for some of the functions in the auth classes= . For testing the actual LDAP stuff, we probably need to add LDAP config op= tions to test_config.json, and only if present, run the tests. That would p= robably need to support a list of LDAP servers, so we can test with differe= nt configurations (LDAP, LDAPS, LDAP_STARTTLS, AD etc).
=C2=A0
Done.

Thanks,
Khushboo
Thanks.<= /div>

Thanks,
Khushboo=C2= =A0

On Tue, Mar 17, 2020 at 8:55 AM Khushboo Vashi <khushboo.vashi@ent= erprisedb.com> wrote:
Hi,

Please find the attach= ed patch to support LDAP Authentication in Server mode.
To test t= he patch, config_auth.py needs to be configured for LDAP configurations. Th= e config settings are explained in this file in detail. After configuring t= he parameters, start the pgadmin server in Server mode and connect with LDA= P server with the valid user via login page.

I hav= e tested this patch with ldap and ldap=C2=A0+ ssl/tls. With the TLS, I have= used the default config of ldap3 without certificates.

@Dave, can you please review this patch, as you have a better underst= anding of LDAP and you can easily pointed out if I have missed anything.

Note: For the document update I will create the task= and assign to Nidhi for the same.

Than= ks,
Khushboo


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company


--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB= UK: http://www.e= nterprisedb.com
The Enterprise PostgreSQL Company


--
Thanks & Regards
Akshay Joshi
<= font color=3D"#3333FF">Sr. Software Architect=
<= font color=3D"#000000" face=3D"arial, sans-serif">EnterpriseDB Software = India Private Limited
Mobile: +91 976-788-8246=
--0000000000001c0a3d05a24ecf4a-- --0000000000001c0a3f05a24ecf4c Content-Type: application/octet-stream; name="RM_2186_v4.patch" Content-Disposition: attachment; filename="RM_2186_v4.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8ismygm0 ZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy50eHQgYi9yZXF1aXJlbWVudHMudHh0CmluZGV4IGYw Y2M3MTcxNS4uN2Y1ZjVmMmNjIDEwMDY0NAotLS0gYS9yZXF1aXJlbWVudHMudHh0CisrKyBiL3Jl cXVpcmVtZW50cy50eHQKQEAgLTM5LDMgKzM5LDQgQEAgcHl0aG9uLWRhdGV1dGlsPj0yLjguMAog U1FMQWxjaGVteT49MS4zLjEzCiBGbGFzay1TZWN1cml0eS1Ub28+PTMuMC4wCiBzc2h0dW5uZWw+ PTAuMS40CitsZGFwMz49Mi41LjEKZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29u ZmlnLnB5CmluZGV4IGY1MDhmOGZjNi4uMzM0M2Y0YjZkIDEwMDY0NAotLS0gYS93ZWIvY29uZmln LnB5CisrKyBiL3dlYi9jb25maWcucHkKQEAgLTQ4OCw2ICs0ODgsNjUgQEAgTUFTVEVSX1BBU1NX T1JEX1JFUVVJUkVEID0gVHJ1ZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIEVOSEFOQ0VEX0NPT0tJRV9Q Uk9URUNUSU9OID0gVHJ1ZQogCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBFeHRlcm5hbCBBdXRoZW50 aWNhdGlvbiBTb3VyY2VzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIERlZmF1bHQgc2V0dGluZyBp cyBpbnRlcm5hbAorIyBFeHRlcm5hbCBTdXBwb3J0ZWQgU291cmNlczogbGRhcAorIyBNdWx0aXBs ZSBhdXRoZW50aWNhdGlvbiBjYW4gYmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRl ciB0bworIyBbJ2xkYXAnLCAnaW50ZXJuYWwnXS4gcGdBZG1pbiB3aWxsIGF1dGhlbnRpY2F0ZSB0 aGUgdXNlciB3aXRoIGxkYXAgZmlyc3QsCisjIGluIGNhc2Ugb2YgZmFpbHVyZSBpbnRlcm5hbCBh dXRoZW50aWNhdGlvbiB3aWxsIGJlIGRvbmUuCisKK0FVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBb J2ludGVybmFsJ10KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTERBUCBDb25maWd1cmF0aW9uCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisjIEFmdGVyIGxkYXAgYXV0aGVudGljYXRpb24sIHVzZXIgd2ls bCBiZSBhZGRlZCBpbnRvIHRoZSBTUUxpdGUgZGF0YWJhc2UKKyMgYXV0b21hdGljYWxseSwgaWYg c2V0IHRvIFRydWUuCisjIFNldCBpdCB0byBGYWxzZSwgaWYgdXNlciBzaG91bGQgbm90IGJlIGFk ZGVkIGF1dG9tYXRpY2FsbHksCisjIGluIHRoaXMgY2FzZSBBZG1pbiBoYXMgdG8gYWRkIHRoZSB1 c2VyIG1hbnVhbGx5IGluIHRoZSBTUUxpdGUgZGF0YWJhc2UuCisKK0xEQVBfQVVUT19DUkVBVEVf VVNFUiA9IFRydWUKKworIyBDb25uZWN0aW9uIHRpbWVvdXQKK0xEQVBfQ09OTkVDVElPTl9USU1F T1VUID0gMTAKKworIyBTZXJ2ZXIgY29ubmVjdGlvbiBkZXRhaWxzIChSRVFVSVJFRCkKKyMgZXhh bXBsZTogbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4gb3IgbGRhcDovLzxob3N0bmFtZT46PHBv cnQ+CitMREFQX1NFUlZFUl9VUkkgPSAnbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4nCisKKyMg QmFzZUROIChSRVFVSVJFRCkKKyMgQUQgZXhhbXBsZToKKyMgKCYob2JqZWN0Q2xhc3M9dXNlciko bWVtYmVyb2Y9Q049TVlHUk9VUCxDTj1Vc2VycyxkYz1leGFtcGxlLGRjPWNvbSkpCisjIE9wZW5M REFQIGV4YW1wbGU6IENOPVVzZXJzLGRjPWV4YW1wbGUsZGM9Y29tCitMREFQX0JBU0VfRE4gPSAn PEJhc2UtRE4+JworCisjIFRoZSBMREFQIGF0dHJpYnV0ZSBjb250YWluaW5nIHVzZXIgbmFtZXMu IEluIE9wZW5MREFQLCB0aGlzIG1heSBiZSAndWlkJworIyB3aGlsc3QgaW4gQUQsICdzQU1BY2Nv dW50TmFtZScgbWlnaHQgYmUgYXBwcm9wcmlhdGUuIChSRVFVSVJFRCkKK0xEQVBfVVNFUk5BTUVf QVRUUklCVVRFID0gJzxVc2VyLWlkPicKKworIyBTZWFyY2ggbGRhcCBmb3IgZnVydGhlciBhdXRo ZW50aWNhdGlvbgorTERBUF9TRUFSQ0hfQkFTRV9ETiA9ICc8U2VhcmNoLUJhc2UtRE4+JworCisj IEZpbHRlciBzdHJpbmcgZm9yIHRoZSB1c2VyIHNlYXJjaC4KKyMgRm9yIE9wZW5MREFQLCAnKGNu PSopJyBtYXkgd2VsbCBiZSBlbm91Z2guCisjIEZvciBBRCwgeW91IG1pZ2h0IHVzZSAnKG9iamVj dENsYXNzPXVzZXIpJyAoUkVRVUlSRUQpCitMREFQX1NFQVJDSF9GSUxURVIgPSAnKG9iamVjdGNs YXNzPSopJworCisjIFNlYXJjaCBzY29wZSBmb3IgdXNlcnMgKG9uZSBvZiBCQVNFLCBMRVZFTCBv ciBTVUJUUkVFKQorTERBUF9TRUFSQ0hfU0NPUEUgPSAnU1VCVFJFRScKKworIyBVc2UgVExTPyBJ ZiB0aGUgVVJJIHNjaGVtZSBpcyBsZGFwczovLywgdGhpcyBpcyBpZ25vcmVkLgorTERBUF9VU0Vf U1RBUlRUTFMgPSBGYWxzZQorCisjIFRMUy9TU0wgY2VydGlmaWNhdGVzLiBTcGVjaWZ5IGlmIHJl cXVpcmVkLCBvdGhlcndpc2UgbGVhdmUgZW1wdHkKK0xEQVBfQ0FfQ0VSVF9GSUxFID0gJycKK0xE QVBfQ0VSVF9GSUxFID0gJycKK0xEQVBfS0VZX0ZJTEUgPSAnJworCiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBMb2NhbCBjb25maWcgc2V0dGluZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQg YS93ZWIvbWlncmF0aW9ucy92ZXJzaW9ucy83ZmVkZjg1MzE4MDJfLnB5IGIvd2ViL21pZ3JhdGlv bnMvdmVyc2lvbnMvN2ZlZGY4NTMxODAyXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAuLjg5NDAxNjg2YQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9taWdyYXRpb25zL3Zl cnNpb25zLzdmZWRmODUzMTgwMl8ucHkKQEAgLTAsMCArMSw1MSBAQAorCisiIiJlbXB0eSBtZXNz YWdlCisKK1JldmlzaW9uIElEOiA3ZmVkZjg1MzE4MDIKK1JldmlzZXM6IGFmZjE0MzZlM2M4Ywor Q3JlYXRlIERhdGU6IDIwMjAtMDItMjYgMTE6MjQ6NTQuMzUzMjg4CisKKyIiIgorZnJvbSBhbGVt YmljIGltcG9ydCBvcAoraW1wb3J0IHNxbGFsY2hlbXkgYXMgc2EKK2Zyb20gcGdhZG1pbi5tb2Rl bCBpbXBvcnQgZGIKKworIyByZXZpc2lvbiBpZGVudGlmaWVycywgdXNlZCBieSBBbGVtYmljLgor cmV2aXNpb24gPSAnN2ZlZGY4NTMxODAyJworZG93bl9yZXZpc2lvbiA9ICdhZmYxNDM2ZTNjOGMn CiticmFuY2hfbGFiZWxzID0gTm9uZQorZGVwZW5kc19vbiA9IE5vbmUKKworCitkZWYgdXBncmFk ZSgpOgorCisgICAgZGIuZW5naW5lLmV4ZWN1dGUoIkFMVEVSIFRBQkxFIHVzZXIgUkVOQU1FIFRP IHVzZXJfb2xkIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBDUkVBVEUg VEFCTEUgdXNlciAoCisgICAgICAgICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAorICAgICAgICAg ICAgdXNlcm5hbWUgVkFSQ0hBUigyNTYpIE5PVCBOVUxMLAorICAgICAgICAgICAgZW1haWwgVkFS Q0hBUigyNTYpLAorICAgICAgICAgICAgcGFzc3dvcmQgVkFSQ0hBUigyNTYpLAorICAgICAgICAg ICAgYWN0aXZlIEJPT0xFQU4gTk9UIE5VTEwsCisgICAgICAgICAgICBjb25maXJtZWRfYXQgREFU RVRJTUUsCisgICAgICAgICAgICBtYXN0ZXJwYXNzX2NoZWNrIFZBUkNIQVIoMjU2KSwKKyAgICAg ICAgICAgIGF1dGhfc291cmNlIFZBUkNIQVIoMjU2KSBOT1QgTlVMTCBERUZBVUxUICdpbnRlcm5h bCcsCisgICAgICAgICAgICBQUklNQVJZIEtFWSAoaWQpLAorICAgICAgICAgICAgVU5JUVVFICh1 c2VybmFtZSwgYXV0aF9zb3VyY2UpLAorICAgICAgICAgICAgQ0hFQ0sgKGFjdGl2ZSBJTiAoMCwg MSkpCisgICAgICAgICk7CisgICAgICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIi IgorICAgICAgICBJTlNFUlQgSU5UTyB1c2VyICgKKyAgICAgICAgICAgIGlkLCB1c2VybmFtZSwg ZW1haWwsIHBhc3N3b3JkLCBhY3RpdmUsIGNvbmZpcm1lZF9hdCwgbWFzdGVycGFzc19jaGVjawor ICAgICAgICApIFNFTEVDVAorICAgICAgICAgICAgaWQsIGVtYWlsLCBlbWFpbCwgcGFzc3dvcmQs IGFjdGl2ZSwgY29uZmlybWVkX2F0LCBtYXN0ZXJwYXNzX2NoZWNrCisgICAgICAgIEZST00gdXNl cl9vbGQiIiIpCisKKyAgICBkYi5lbmdpbmUuZXhlY3V0ZSgiRFJPUCBUQUJMRSB1c2VyX29sZCIp CisKKworZGVmIGRvd25ncmFkZSgpOgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ0FkbWlu NC5weSBiL3dlYi9wZ0FkbWluNC5weQppbmRleCA4MWVmNmMzOTYuLjQ1ZDMzYjcyZCAxMDA2NDQK LS0tIGEvd2ViL3BnQWRtaW40LnB5CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAtMTYwLDYgKzE2 MCwxOCBAQCBpZiAnUEdBRE1JTl9JTlRfS0VZJyBpbiBnbG9iYWxzKCk6CiBlbHNlOgogICAgIGFw cC5QR0FETUlOX0lOVF9LRVkgPSAnJwogCisjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKK2FwcC5Q R0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UgPSAnaW50ZXJuYWwnCithcHAuUEdBRE1JTl9TVVBQ T1JURURfQVVUSF9TT1VSQ0UgPSBbJ2ludGVybmFsJywgJ2xkYXAnXQorCitpZiBsZW4oY29uZmln LkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMpID4gMDoKKyAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9B VVRIX1NPVVJDRSA9IGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTWzBdCitlbHNlOgorICAg IGFwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9B VVRIX1NPVVJDRQorCithcHAubG9nZ2VyLmRlYnVnKAorICAgICJBdXRoZW50aWNhdGlvbiBTb3Vy Y2U6ICVzIiAlIGFwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UpCisKICMgT3V0cHV0IGEg c3RhcnR1cCBtZXNzYWdlIGlmIHdlJ3JlIG5vdCB1bmRlciB0aGUgcnVudGltZSBhbmQgc3RhcnR1 cC4KICMgSWYgd2UncmUgdW5kZXIgV1NHSSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0 aGlzCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v X19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9fX2luaXRfXy5weQppbmRleCA4MjBjODAxNWEuLjVj YTJhZTY3YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKKysrIGIvd2ViL3Bn YWRtaW4vX19pbml0X18ucHkKQEAgLTM4LDcgKzM4LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQg dGltZWRlbHRhCiBmcm9tIHBnYWRtaW4uc2V0dXAgaW1wb3J0IGdldF92ZXJzaW9uLCBzZXRfdmVy c2lvbgogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJv cgogZnJvbSBwZ2FkbWluLnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKLQorZnJvbSBw Z2FkbWluIGltcG9ydCBhdXRoZW50aWNhdGUKIAogIyBJZiBzY3JpcHQgaXMgcnVubmluZyB1bmRl ciBweXRob24zLCBpdCB3aWxsIG5vdCBoYXZlIHRoZSB4cmFuZ2UgZnVuY3Rpb24KICMgZGVmaW5l ZApAQCAtMzk4LDYgKzM5OCw3IEBAIGRlZiBjcmVhdGVfYXBwKGFwcF9uYW1lPU5vbmUpOgogICAg ICMgTG9hZCBhbGwgYXZhaWxhYmxlIHNlcnZlciBkcml2ZXJzCiAgICAgIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICAgICBkcml2ZXIuaW5pdF9hcHAoYXBwKQorICAgIGF1dGhlbnRpY2F0ZS5pbml0X2FwcChh cHApCiAKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgICMgUmVnaXN0ZXIgbGFuZ3VhZ2UgdG8g dGhlIHByZWZlcmVuY2VzIGFmdGVyIGxvZ2luCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRo ZW50aWNhdGUvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18u cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42M2Y1MjRlMjMKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTAs MCArMSwxNTYgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVT UUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXByaW50IG1v ZHVsZSBpbXBsZW1lbnRpbmcgdGhlIEF1dGhlbnRpY2F0aW9uLiIiIgorCitpbXBvcnQgZmxhc2sK K2ltcG9ydCBwaWNrbGUKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBwLCBmbGFzaAorZnJv bSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0Citmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9y dCBjdXJyZW50X3VzZXIKK2Zyb20gZmxhc2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0 eSwgX2N0eAorZnJvbSBmbGFza19zZWN1cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBn ZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QKK2Zyb20gZmxhc2sgaW1wb3J0IHNlc3Npb24KKworaW1w b3J0IGNvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlCitmcm9t IC5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJlZ2lzdHJ5CisKK01PRFVMRV9OQU1FID0gJ2F1 dGhlbnRpY2F0ZScKKworCitjbGFzcyBBdXRoZW50aWNhdGVNb2R1bGUoUGdBZG1pbk1vZHVsZSk6 CisgICAgZGVmIGdldF9leHBvc2VkX3VybF9lbmRwb2ludHMoc2VsZik6CisgICAgICAgIHJldHVy biBbJ2F1dGhlbnRpY2F0ZS5sb2dpbiddCisKKworYmx1ZXByaW50ID0gQXV0aGVudGljYXRlTW9k dWxlKE1PRFVMRV9OQU1FLCBfX25hbWVfXywgc3RhdGljX3VybF9wYXRoPScnKQorCisKK0BibHVl cHJpbnQucm91dGUoJy9sb2dpbicsIGVuZHBvaW50PSdsb2dpbicsIG1ldGhvZHM9WydHRVQnLCAn UE9TVCddKQorZGVmIGxvZ2luKCk6CisgICAgIiIiCisgICAgRW50cnkgcG9pbnQgZm9yIGFsbCB0 aGUgYXV0aGVudGljYXRpb24gc291cmNlcy4KKyAgICBUaGUgdXNlciBpbnB1dCB3aWxsIGJlIHZh bGlkYXRlZCBhbmQgYXV0aGVudGljYXRlZC4KKyAgICAiIiIKKyAgICBmb3JtID0gX3NlY3VyaXR5 LmxvZ2luX2Zvcm0oKQorICAgIGF1dGhfb2JqID0gQXV0aFNvdXJjZU1hbmFnZXIoZm9ybSwgY29u ZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMpCisgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21h bmFnZXJfb2JqJ10gPSBOb25lCisKKyAgICAjIFZhbGlkYXRlIHRoZSB1c2VyCisgICAgaWYgbm90 IGF1dGhfb2JqLnZhbGlkYXRlKCk6CisgICAgICAgIGZvciBmaWVsZCBpbiBmb3JtLmVycm9yczoK KyAgICAgICAgICAgIGZvciBlcnJvciBpbiBmb3JtLmVycm9yc1tmaWVsZF06CisgICAgICAgICAg ICAgICAgZmxhc2goZXJyb3IsICd3YXJuaW5nJykKKyAgICAgICAgICAgIHJldHVybiBmbGFzay5y ZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QoKSkKKworICAgICMgQXV0aGVudGljYXRl IHRoZSB1c2VyCisgICAgc3RhdHVzLCBtc2cgPSBhdXRoX29iai5hdXRoZW50aWNhdGUoKQorICAg IGlmIHN0YXR1czoKKyAgICAgICAgIyBMb2dpbiB0aGUgdXNlcgorICAgICAgICBzdGF0dXMsIG1z ZyA9IGF1dGhfb2JqLmxvZ2luKCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAg IGZsYXNoKGdldHRleHQobXNnKSwgJ2RhbmdlcicpCisgICAgICAgICAgICByZXR1cm4gZmxhc2su cmVkaXJlY3QoZ2V0X3Bvc3RfbG9nb3V0X3JlZGlyZWN0KCkpCisKKyAgICAgICAgc2Vzc2lvblsn X2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ10gPSBhdXRoX29iai5hc19kaWN0KCkKKyAgICAgICAg cmV0dXJuIGZsYXNrLnJlZGlyZWN0KCcvJykKKworICAgIGZsYXNoKGdldHRleHQobXNnKSwgJ2Rh bmdlcicpCisgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0KGdldF9wb3N0X2xvZ291dF9yZWRpcmVj dCgpKQorCisKK2NsYXNzIEF1dGhTb3VyY2VNYW5hZ2VyKCk6CisgICAgIiIiVGhpcyBjbGFzcyB3 aWxsIG1hbmFnZSBhbGwgdGhlIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMuCisgICAgICIiIgorICAg IGRlZiBfX2luaXRfXyhzZWxmLCBmb3JtLCBzb3VyY2VzKToKKyAgICAgICAgc2VsZi5mb3JtID0g Zm9ybQorICAgICAgICBzZWxmLmF1dGhfc291cmNlcyA9IHNvdXJjZXMKKyAgICAgICAgc2VsZi5z b3VyY2UgPSBOb25lCisgICAgICAgIHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUgPSBOb25lCisK KyAgICBkZWYgYXNfZGljdChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhl IGRpY3Rpb25hcnkgb2JqZWN0IHJlcHJlc2VudGluZyB0aGlzIG9iamVjdC4KKyAgICAgICAgIiIi CisKKyAgICAgICAgcmVzID0gZGljdCgpCisgICAgICAgIHJlc1snc291cmNlX2ZyaWVuZGx5X25h bWUnXSA9IHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUKKyAgICAgICAgcmVzWydhdXRoX3NvdXJj ZXMnXSA9IHNlbGYuYXV0aF9zb3VyY2VzCisKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVm IHNldF9zb3VyY2Uoc2VsZiwgc291cmNlKToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UK KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBnZXRfc291cmNlKHNlbGYpOgorICAgICAgICByZXR1 cm4gc2VsZi5zb3VyY2UKKworICAgIGRlZiBzZXRfc291cmNlX2ZyaWVuZGx5X25hbWUoc2VsZiwg bmFtZSk6CisgICAgICAgIHNlbGYuc291cmNlX2ZyaWVuZGx5X25hbWUgPSBuYW1lCisKKyAgICBA cHJvcGVydHkKKyAgICBkZWYgZ2V0X3NvdXJjZV9mcmllbmRseV9uYW1lKHNlbGYpOgorICAgICAg ICByZXR1cm4gc2VsZi5zb3VyY2VfZnJpZW5kbHlfbmFtZQorCisgICAgZGVmIHZhbGlkYXRlKHNl bGYpOgorICAgICAgICAiIiJWYWxpZGF0ZSB0aHJvdWdoIGFsbCB0aGUgc291cmNlcy4iIiIKKyAg ICAgICAgZm9yIHNyYyBpbiBzZWxmLmF1dGhfc291cmNlczoKKyAgICAgICAgICAgIHNvdXJjZSA9 IGdldF9hdXRoX3NvdXJjZXMoc3JjKQorICAgICAgICAgICAgaWYgc291cmNlLnZhbGlkYXRlKHNl bGYuZm9ybSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZh bHNlCisKKyAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYpOgorICAgICAgICAiIiJBdXRoZW50aWNh dGUgdGhyb3VnaCBhbGwgdGhlIHNvdXJjZXMuIiIiCisgICAgICAgIHN0YXR1cyA9IEZhbHNlCisg ICAgICAgIG1zZyA9IE5vbmUKKyAgICAgICAgZm9yIHNyYyBpbiBzZWxmLmF1dGhfc291cmNlczoK KyAgICAgICAgICAgIHNvdXJjZSA9IGdldF9hdXRoX3NvdXJjZXMoc3JjKQorICAgICAgICAgICAg c3RhdHVzLCBtc2cgPSBzb3VyY2UuYXV0aGVudGljYXRlKHNlbGYuZm9ybSkKKyAgICAgICAgICAg IGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICBzZWxmLnNldF9zb3VyY2Uoc291cmNlKQorICAg ICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIG1zZworICAgICAgICByZXR1cm4gc3RhdHVzLCBt c2cKKworICAgIGRlZiBsb2dpbihzZWxmKToKKyAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLnNv dXJjZS5sb2dpbihzZWxmLmZvcm0pCisgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgIHNl bGYuc2V0X3NvdXJjZV9mcmllbmRseV9uYW1lKHNlbGYuc291cmNlLmdldF9mcmllbmRseV9uYW1l KCkpCisgICAgICAgIHJldHVybiBzdGF0dXMsIG1zZworCisKK2RlZiBnZXRfYXV0aF9zb3VyY2Vz KHR5cGUpOgorICAgICIiIkdldCB0aGUgYXV0aGVudGljYXRlZCBzb3VyY2Ugb2JqZWN0IGZyb20g dGhlIHJlZ2lzdHJ5IiIiCisKKyAgICBhdXRoX3NvdXJjZXMgPSBnZXRhdHRyKGN1cnJlbnRfYXBw LCAnX3BnYWRtaW5fYXV0aF9zb3VyY2VzJywgTm9uZSkKKworICAgIGlmIGF1dGhfc291cmNlcyBp cyBOb25lIG9yIG5vdCBpc2luc3RhbmNlKGF1dGhfc291cmNlcywgZGljdCk6CisgICAgICAgIGF1 dGhfc291cmNlcyA9IGRpY3QoKQorCisgICAgaWYgdHlwZSBpbiBhdXRoX3NvdXJjZXM6CisgICAg ICAgIHJldHVybiBhdXRoX3NvdXJjZXNbdHlwZV0KKworICAgIGF1dGhfc291cmNlID0gQXV0aFNv dXJjZVJlZ2lzdHJ5LmNyZWF0ZSh0eXBlKQorCisgICAgaWYgYXV0aF9zb3VyY2UgaXMgbm90IE5v bmU6CisgICAgICAgIGF1dGhfc291cmNlc1t0eXBlXSA9IGF1dGhfc291cmNlCisgICAgICAgIHNl dGF0dHIoY3VycmVudF9hcHAsICdfcGdhZG1pbl9hdXRoX3NvdXJjZXMnLCBhdXRoX3NvdXJjZXMp CisKKyAgICByZXR1cm4gYXV0aF9zb3VyY2UKKworCitkZWYgaW5pdF9hcHAoYXBwKToKKyAgICBh dXRoX3NvdXJjZXMgPSBkaWN0KCkKKworICAgIHNldGF0dHIoYXBwLCAnX3BnYWRtaW5fYXV0aF9z b3VyY2VzJywgYXV0aF9zb3VyY2VzKQorICAgIEF1dGhTb3VyY2VSZWdpc3RyeS5sb2FkX2F1dGhf c291cmNlcygpCisKKyAgICByZXR1cm4gYXV0aF9zb3VyY2VzCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUv aW50ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42MjAzMmY0 ZTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwu cHkKQEAgLTAsMCArMSw5OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdB ZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVt ZW50cyBJbnRlcm5hbCBBdXRoZW50aWNhdGlvbiIiIgorCitpbXBvcnQgc2l4Citmcm9tIGZsYXNr IGltcG9ydCBjdXJyZW50X2FwcAorZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQgbG9naW5fdXNl cgorZnJvbSBhYmMgaW1wb3J0IGFic3RyYWN0bWV0aG9kLCBhYnN0cmFjdHByb3BlcnR5Citmcm9t IGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKKworZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1 dGhTb3VyY2VSZWdpc3RyeQorZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCisKKworQHNp eC5hZGRfbWV0YWNsYXNzKEF1dGhTb3VyY2VSZWdpc3RyeSkKK2NsYXNzIEJhc2VBdXRoZW50aWNh dGlvbihvYmplY3QpOgorCisgICAgREVGQVVMVF9NU0cgPSB7CisgICAgICAgICdVU0VSX0RPRVNf Tk9UX0VYSVNUJzogJ1NwZWNpZmllZCB1c2VyIGRvZXMgbm90IGV4aXN0JywKKyAgICAgICAgJ0xP R0lOX0ZBSUxFRCc6ICdMb2dpbiBmYWlsZWQnLAorICAgICAgICAnRU1BSUxfTk9UX1BST1ZJREVE JzogJ0VtYWlsL1VzZXJuYW1lIG5vdCBwcm92aWRlZCcsCisgICAgICAgICdQQVNTV09SRF9OT1Rf UFJPVklERUQnOiAnUGFzc3dvcmQgbm90IHByb3ZpZGVkJworICAgIH0KKworICAgIEBhYnN0cmFj dHByb3BlcnR5CisgICAgZGVmIGdldF9mcmllbmRseV9uYW1lKGNscyk6CisgICAgICAgIHBhc3MK KworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRlZiBhdXRoZW50aWNhdGUoY2xzKToKKyAgICAg ICAgcGFzcworCisgICAgZGVmIHZhbGlkYXRlKHNlbGYsIGZvcm0pOgorICAgICAgICB1c2VybmFt ZSA9IGZvcm0uZGF0YVsnZW1haWwnXQorICAgICAgICBwYXNzd29yZCA9IGZvcm0uZGF0YVsncGFz c3dvcmQnXQorCisgICAgICAgIGlmIHVzZXJuYW1lIGlzIE5vbmUgb3IgdXNlcm5hbWUgPT0gJyc6 CisgICAgICAgICAgICBmb3JtLmVtYWlsLmVycm9ycyA9IGxpc3QoZm9ybS5lbWFpbC5lcnJvcnMp CisgICAgICAgICAgICBmb3JtLmVtYWlsLmVycm9ycy5hcHBlbmQoZ2V0dGV4dCgKKyAgICAgICAg ICAgICAgICBzZWxmLm1lc3NhZ2VzKCdFTUFJTF9OT1RfUFJPVklERUQnKSkpCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgcGFzc3dvcmQgaXMgTm9uZSBvciBwYXNzd29yZCA9 PSAnJzoKKyAgICAgICAgICAgIGZvcm0ucGFzc3dvcmQuZXJyb3JzID0gbGlzdChmb3JtLnBhc3N3 b3JkLmVycm9ycykKKyAgICAgICAgICAgIGZvcm0ucGFzc3dvcmQuZXJyb3JzLmFwcGVuZCgKKyAg ICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzKCdQQVNTV09SRF9OT1RfUFJPVklERUQnKSkKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYg bG9naW4oc2VsZiwgZm9ybSk6CisgICAgICAgIHVzZXJuYW1lID0gZm9ybS5kYXRhWydlbWFpbCdd CisgICAgICAgIHVzZXIgPSBnZXRhdHRyKGZvcm0sICd1c2VyJywgTm9uZSkKKworICAgICAgICBp ZiB1c2VyIGlzIE5vbmU6CisgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnko dXNlcm5hbWU9dXNlcm5hbWUpLmZpcnN0KCkKKworICAgICAgICBpZiB1c2VyIGlzIE5vbmU6Cisg ICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAg IHNlbGYubWVzc2FnZXMoJ1VTRVJfRE9FU19OT1RfRVhJU1QnKSkKKyAgICAgICAgICAgIHJldHVy biBGYWxzZSwgc2VsZi5tZXNzYWdlcygnVVNFUl9ET0VTX05PVF9FWElTVCcpCisKKyAgICAgICAg IyBMb2dpbiB1c2VyIHRocm91Z2ggZmxhc2tfc2VjdXJpdHkKKyAgICAgICAgc3RhdHVzID0gbG9n aW5fdXNlcih1c2VyKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgY3VycmVu dF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihzZWxmLm1lc3NhZ2VzKCdMT0dJTl9GQUlMRUQnKSkKKyAg ICAgICAgICAgIHJldHVybiBGYWxzZSwgc2VsZi5tZXNzYWdlcygnTE9HSU5fRkFJTEVEJykKKyAg ICAgICAgcmV0dXJuIFRydWUsIE5vbmUKKworICAgIGRlZiBtZXNzYWdlcyhzZWxmLCBtc2dfa2V5 KToKKyAgICAgICAgcmV0dXJuIHNlbGYuREVGQVVMVF9NU0dbbXNnX2tleV0gaWYgbXNnX2tleSBp biBzZWxmLkRFRkFVTFRfTVNHXAorICAgICAgICAgICAgZWxzZSBOb25lCisKKworY2xhc3MgSW50 ZXJuYWxBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgorCisgICAgZGVmIGdldF9m cmllbmRseV9uYW1lKGNscyk6CisgICAgICAgIHJldHVybiBnZXR0ZXh0KCJpbnRlcm5hbCIpCisK KyAgICBkZWYgdmFsaWRhdGUoc2VsZiwgZm9ybSk6CisgICAgICAgICIiIlVzZXIgdmFsaWRhdGlv biIiIgorCisgICAgICAgICMgRmxhc2sgc2VjdXJpdHkgdmFsaWRhdGlvbgorICAgICAgICByZXR1 cm4gZm9ybS52YWxpZGF0ZV9vbl9zdWJtaXQoKQorCisgICAgZGVmIGF1dGhlbnRpY2F0ZShzZWxm LCBmb3JtKToKKyAgICAgICAgdXNlcm5hbWUgPSBmb3JtLmRhdGFbJ2VtYWlsJ10KKyAgICAgICAg dXNlciA9IGdldGF0dHIoZm9ybSwgJ3VzZXInLAorICAgICAgICAgICAgICAgICAgICAgICBVc2Vy LnF1ZXJ5LmZpbHRlcl9ieSh1c2VybmFtZT11c2VybmFtZSkuZmlyc3QoKSkKKyAgICAgICAgaWYg dXNlciBhbmQgdXNlci5pc19hdXRoZW50aWNhdGVkIGFuZCBmb3JtLnZhbGlkYXRlX29uX3N1Ym1p dCgpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUsIE5vbmUKKyAgICAgICAgcmV0dXJuIEZhbHNl LCBzZWxmLm1lc3NhZ2VzKCdVU0VSX0RPRVNfTk9UX0VYSVNUJykKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5IGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2xk YXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4xZTgzZTJiNjIKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRhcC5weQpAQCAtMCww ICsxLDE4MyBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiQSBibHVlcHJpbnQgbW9k dWxlIGltcGxlbWVudGluZyB0aGUgbGRhcCBhdXRoZW50aWNhdGlvbi4iIiIKKworaW1wb3J0IHNz bAoraW1wb3J0IGNvbmZpZworZnJvbSBsZGFwMyBpbXBvcnQgQ29ubmVjdGlvbiwgU2VydmVyLCBU bHMsIEFMTCwgQUxMX0FUVFJJQlVURVMKK2Zyb20gbGRhcDMuY29yZS5leGNlcHRpb25zIGltcG9y dCBMREFQU29ja2V0T3BlbkVycm9yLCBMREFQQmluZEVycm9yLFwKKyAgICBMREFQSW52YWxpZFNj b3BlRXJyb3IsIExEQVBBdHRyaWJ1dGVFcnJvciwgTERBUEludmFsaWRGaWx0ZXJFcnJvcixcCisg ICAgTERBUFN0YXJ0VExTRXJyb3IKK2Zyb20gZmxhc2tfYmFiZWxleCBpbXBvcnQgZ2V0dGV4dAor Citmcm9tIC5pbnRlcm5hbCBpbXBvcnQgQmFzZUF1dGhlbnRpY2F0aW9uCitmcm9tIHBnYWRtaW4u bW9kZWwgaW1wb3J0IFVzZXIsIFNlcnZlckdyb3VwLCBkYiwgUm9sZQorZnJvbSBmbGFza19zZWN1 cml0eSBpbXBvcnQgbG9naW5fdXNlcgorZnJvbSBmbGFzayBpbXBvcnQgY3VycmVudF9hcHAKK2Zy b20gcGdhZG1pbi50b29scy51c2VyX21hbmFnZW1lbnQgaW1wb3J0IGNyZWF0ZV91c2VyCisKK3Ry eToKKyAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UKK2V4Y2VwdCBJbXBvcnRF cnJvcjoKKyAgICBmcm9tIHVybHBhcnNlIGltcG9ydCB1cmxwYXJzZQorCisKK2NsYXNzIExEQVBB dXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRpb24pOgorICAgICIiIkxkYXAgQXV0aGVudGlj YXRpb24gQ2xhc3MiIiIKKworICAgIGRlZiBnZXRfZnJpZW5kbHlfbmFtZShzZWxmKToKKyAgICAg ICAgcmV0dXJuIGdldHRleHQoImxkYXAiKQorCisgICAgZGVmIGF1dGhlbnRpY2F0ZShzZWxmLCBm b3JtKToKKyAgICAgICAgc2VsZi51c2VybmFtZSA9IGZvcm0uZGF0YVsnZW1haWwnXQorICAgICAg ICBzZWxmLnBhc3N3b3JkID0gZm9ybS5kYXRhWydwYXNzd29yZCddCisKKyAgICAgICAgc3RhdHVz LCBtc2cgPSBzZWxmLmNvbm5lY3QoKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gc3RhdHVzLCBtc2cKKworICAgICAgICBzdGF0dXMsIHVzZXJfZW1haWwgPSBz ZWxmLnNlYXJjaF9sZGFwX3VzZXIoKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICByZXR1cm4gc3RhdHVzLCB1c2VyX2VtYWlsCisKKyAgICAgICAgcmV0dXJuIHNlbGYuX19h dXRvX2NyZWF0ZV91c2VyKHVzZXJfZW1haWwpCisKKyAgICBkZWYgY29ubmVjdChzZWxmKToKKyAg ICAgICAgIiIiU2V0dXAgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIExEQVAgc2VydmVyIGFuZCBhdXRo ZW50aWNhdGUgdGhlIHVzZXIuCisgICAgICAgICIiIgorCisgICAgICAgICMgUGFyc2UgdGhlIHNl cnZlciBVUkkKKyAgICAgICAgdXJpID0gZ2V0YXR0cihjb25maWcsICdMREFQX1NFUlZFUl9VUkkn LCBOb25lKQorCisgICAgICAgIGlmIHVyaToKKyAgICAgICAgICAgIHVyaSA9IHVybHBhcnNlKHVy aSkKKworICAgICAgICAjIENyZWF0ZSB0aGUgVExTIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGlmIHJl cXVpcmVkCisgICAgICAgIHRscyA9IE5vbmUKKworICAgICAgICBpZiB0eXBlKHVyaSkgPT0gc3Ry OgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiTERBUCBjb25maWd1cmF0aW9uIGVycm9yOiBT ZXQgdGhlIHByb3BlciBMREFQIFVSSS4iCisKKyAgICAgICAgaWYgdXJpLnNjaGVtZSA9PSAnbGRh cHMnIG9yIGNvbmZpZy5MREFQX1VTRV9TVEFSVFRMUzoKKworICAgICAgICAgICAgY2FfY2VydF9m aWxlID0gZ2V0YXR0cihjb25maWcsICdMREFQX0NBX0NFUlRfRklMRScsIE5vbmUpCisgICAgICAg ICAgICBjZXJ0X2ZpbGUgPSBnZXRhdHRyKGNvbmZpZywgJ0xEQVBfQ0VSVF9GSUxFJywgTm9uZSkK KyAgICAgICAgICAgIGtleV9maWxlID0gZ2V0YXR0cihjb25maWcsICdMREFQX0tFWV9GSUxFJywg Tm9uZSkKKyAgICAgICAgICAgIGNlcnRfdmFsaWRhdGUgPSBzc2wuQ0VSVF9OT05FCisKKyAgICAg ICAgICAgIGlmIGNhX2NlcnRfZmlsZSBhbmQgY2VydF9maWxlIGFuZCBrZXlfZmlsZToKKyAgICAg ICAgICAgICAgICBjZXJ0X3ZhbGlkYXRlID0gc3NsLkNFUlRfUkVRVUlSRUQKKworICAgICAgICAg ICAgdGxzID0gVGxzKAorICAgICAgICAgICAgICAgIGxvY2FsX3ByaXZhdGVfa2V5X2ZpbGU9a2V5 X2ZpbGUsCisgICAgICAgICAgICAgICAgbG9jYWxfY2VydGlmaWNhdGVfZmlsZT1jZXJ0X2ZpbGUs CisgICAgICAgICAgICAgICAgdmFsaWRhdGU9Y2VydF92YWxpZGF0ZSwKKyAgICAgICAgICAgICAg ICB2ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSwKKyAgICAgICAgICAgICAgICBjYV9jZXJ0c19m aWxlPWNhX2NlcnRfZmlsZSkKKworICAgICAgICAjIENyZWF0ZSB0aGUgc2VydmVyIG9iamVjdAor ICAgICAgICBzZXJ2ZXIgPSBTZXJ2ZXIodXJpLmhvc3RuYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgcG9ydD11cmkucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9zc2w9KHVy aS5zY2hlbWUgPT0gJ2xkYXBzJyksCisgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW5mbz1B TEwsCisgICAgICAgICAgICAgICAgICAgICAgICB0bHM9dGxzLAorICAgICAgICAgICAgICAgICAg ICAgICAgY29ubmVjdF90aW1lb3V0PWNvbmZpZy5MREFQX0NPTk5FQ1RJT05fVElNRU9VVCkKKwor ICAgICAgICAjIENyZWF0ZSB0aGUgY29ubmVjdGlvbgorICAgICAgICB0cnk6CisgICAgICAgICAg ICB1c2VyX2RuID0gInswfT17MX0sezJ9Ii5mb3JtYXQoY29uZmlnLkxEQVBfVVNFUk5BTUVfQVRU UklCVVRFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u ZmlnLkxEQVBfQkFTRV9ETgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IENvbm5lY3Rpb24oc2VydmVyLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPXVzZXJfZG4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPXNlbGYucGFzc3dvcmQsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fYmluZD1UcnVlCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgTERBUFNvY2tldE9wZW5FcnJv ciBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbigKKyAgICAg ICAgICAgICAgICAiRXJyb3IgY29ubmVjdGluZyB0byB0aGUgTERBUCBzZXJ2ZXI6ICVzXG4iICUg ZSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZSwgIkVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIExE QVAgc2VydmVyOiIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiICVzXG4iICUgZS5hcmdz WzBdCisgICAgICAgIGV4Y2VwdCBMREFQQmluZEVycm9yIGFzIGU6CisgICAgICAgICAgICBjdXJy ZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJFcnJvciBiaW5kaW5n IHRvIHRoZSBMREFQIHNlcnZlci4iKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiRXJyb3Ig YmluZGluZyB0byB0aGUgTERBUCBzZXJ2ZXIuIgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6CisgICAgICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAg ICAgICAgICJFcnJvciBjb25uZWN0aW5nIHRvIHRoZSBMREFQIHNlcnZlcjogJXNcbiIgJSBlKQor ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCAiRXJyb3IgY29ubmVjdGluZyB0byB0aGUgTERBUCBz ZXJ2ZXI6IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0K KworICAgICAgICAjIEVuYWJsZSBUTFMgaWYgU1RBUlRUTFMgaXMgY29uZmlndXJlZAorICAgICAg ICBpZiBub3QgdXJpLnNjaGVtZSA9PSAnbGRhcHMnIGFuZCBjb25maWcuTERBUF9VU0VfU1RBUlRU TFM6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLnN0YXJ0X3Rs cygpCisgICAgICAgICAgICBleGNlcHQgTERBUFN0YXJ0VExTRXJyb3IgYXMgZToKKyAgICAgICAg ICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAg ICAiRXJyb3Igc3RhcnRpbmcgVExTOiAlc1xuIiAlIGUpCisgICAgICAgICAgICAgICAgcmV0dXJu IEZhbHNlLCAiRXJyb3Igc3RhcnRpbmcgVExTOiAlc1xuIiAlIGUuYXJnc1swXQorCisgICAgICAg IHJldHVybiBUcnVlLCBOb25lCisKKyAgICBkZWYgX19hdXRvX2NyZWF0ZV91c2VyKHNlbGYsIHVz ZXJfZW1haWwpOgorICAgICAgICAiIiJBZGQgdGhlIGxkYXAgdXNlciB0byB0aGUgaW50ZXJuYWwg U1FMaXRlIGRhdGFiYXNlLiIiIgorICAgICAgICBpZiBjb25maWcuTERBUF9BVVRPX0NSRUFURV9V U0VSOgorICAgICAgICAgICAgdXNlciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICAg ICAgICAgIHVzZXJuYW1lPXNlbGYudXNlcm5hbWUpLmZpcnN0KCkKKyAgICAgICAgICAgIGlmIHVz ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlX3VzZXIoeworICAgICAg ICAgICAgICAgICAgICAndXNlcm5hbWUnOiBzZWxmLnVzZXJuYW1lLAorICAgICAgICAgICAgICAg ICAgICAnZW1haWwnOiB1c2VyX2VtYWlsLAorICAgICAgICAgICAgICAgICAgICAncm9sZSc6IDIs CisgICAgICAgICAgICAgICAgICAgICdhY3RpdmUnOiBUcnVlLAorICAgICAgICAgICAgICAgICAg ICAnYXV0aF9zb3VyY2UnOiAnbGRhcCcKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIHJl dHVybiBUcnVlLCBOb25lCisKKyAgICBkZWYgc2VhcmNoX2xkYXBfdXNlcihzZWxmKToKKyAgICAg ICAgIiIiR2V0IGEgbGlzdCBvZiB1c2VycyBmcm9tIHRoZSBMREFQIHNlcnZlciBiYXNlZCBvbiBj b25maWcKKyAgICAgICAgIHNlYXJjaCBjcml0ZXJpYS4iIiIKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgc2VsZi5jb25uLnNlYXJjaChzZWFyY2hfYmFzZT1jb25maWcuTERBUF9TRUFSQ0hfQkFT RV9ETiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX2ZpbHRlcj1jb25maWcu TERBUF9TRUFSQ0hfRklMVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hf c2NvcGU9Y29uZmlnLkxEQVBfU0VBUkNIX1NDT1BFLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdHRyaWJ1dGVzPUFMTF9BVFRSSUJVVEVTCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkKKworICAgICAgICBleGNlcHQgTERBUEludmFsaWRTY29wZUVycm9yIGFzIGU6CisgICAg ICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICJF cnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiAlc1xuIiAlIGUpCisgICAgICAgICAg ICByZXR1cm4gRmFsc2UsICJFcnJvciBzZWFyY2hpbmcgdGhlIExEQVAgZGlyZWN0b3J5OiIgXAor ICAgICAgICAgICAgICAgICAgICAgICAgICAiICVzXG4iICUgZS5hcmdzWzBdCisgICAgICAgIGV4 Y2VwdCBMREFQQXR0cmlidXRlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxv Z2dlci5leGNlcHRpb24oIkVycm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6IgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICVzXG4iICUgZSkKKyAgICAg ICAgICAgIHJldHVybiBGYWxzZSwgIkVycm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6 IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0KKyAgICAg ICAgZXhjZXB0IExEQVBJbnZhbGlkRmlsdGVyRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJl bnRfYXBwLmxvZ2dlci5leGNlcHRpb24oCisgICAgICAgICAgICAgICAgIkVycm9yIHNlYXJjaGlu ZyB0aGUgTERBUCBkaXJlY3Rvcnk6ICVzXG4iICUgZSkKKyAgICAgICAgICAgIHJldHVybiBGYWxz ZSwgIkVycm9yIHNlYXJjaGluZyB0aGUgTERBUCBkaXJlY3Rvcnk6IiBcCisgICAgICAgICAgICAg ICAgICAgICAgICAgICIgJXNcbiIgJSBlLmFyZ3NbMF0KKworICAgICAgICB1c2VycyA9IFtdCisg ICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmNvbm4uZW50cmllczoKKyAgICAgICAgICAgIHVzZXJf ZW1haWwgPSBOb25lCisgICAgICAgICAgICBpZiBjb25maWcuTERBUF9VU0VSTkFNRV9BVFRSSUJV VEUgaW4gZW50cnkgYW5kIHNlbGYudXNlcm5hbWUgPT0gXAorICAgICAgICAgICAgICAgICAgICBl bnRyeVtjb25maWcuTERBUF9VU0VSTkFNRV9BVFRSSUJVVEVdLnZhbHVlOgorICAgICAgICAgICAg ICAgIGlmICdtYWlsJyBpbiBlbnRyeToKKyAgICAgICAgICAgICAgICAgICAgdXNlcl9lbWFpbCA9 IGVudHJ5WydtYWlsJ10udmFsdWUKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZSwgdXNlcl9l bWFpbAorICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2F1dGhlbnRpY2F0ZS9yZWdpc3RyeS5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9yZWdp c3RyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjkwNWY1NTY0Mwot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9yZWdpc3RyeS5weQpA QCAtMCwwICsxLDY1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJFeHRlcm5hbCBB dXRoZW50aWNhdGlvbiBSZWdpc3RyeS4iIiIKKworCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0 IGdldHRleHQKK2Zyb20gYWJjIGltcG9ydCBBQkNNZXRhCisKKworZGVmIF9kZWNvcmF0ZV9jbHNf bmFtZShtb2R1bGVfbmFtZSk6CisgICAgbGVuZ3RoID0gbGVuKF9fcGFja2FnZV9fKSArIDEKKwor ICAgIGlmIGxlbihtb2R1bGVfbmFtZSkgPiBsZW5ndGggYW5kIG1vZHVsZV9uYW1lLnN0YXJ0c3dp dGgoX19wYWNrYWdlX18pOgorICAgICAgICByZXR1cm4gbW9kdWxlX25hbWVbbGVuZ3RoOl0KKwor ICAgIHJldHVybiBtb2R1bGVfbmFtZQorCisKK2NsYXNzIEF1dGhTb3VyY2VSZWdpc3RyeShBQkNN ZXRhKToKKyAgICByZWdpc3RyeSA9IE5vbmUKKyAgICBhdXRoX3NvdXJjZXMgPSBkaWN0KCkKKwor ICAgIGRlZiBfX2luaXRfXyhjbHMsIG5hbWUsIGJhc2VzLCBkKToKKworICAgICAgICAjIFJlZ2lz dGVyIHRoaXMgdHlwZSBvZiBhdXRoX3NvdXJjZXMsIGJhc2VkIG9uIHRoZSBtb2R1bGUgbmFtZQor ICAgICAgICAjIEF2b2lkIHJlZ2lzdGVyaW5nIHRoZSBCYXNlQXV0aGVudGljYXRpb24gaXRzZWxm CisKKyAgICAgICAgQXV0aFNvdXJjZVJlZ2lzdHJ5LnJlZ2lzdHJ5W19kZWNvcmF0ZV9jbHNfbmFt ZShkWydfX21vZHVsZV9fJ10pXSA9IGNscworICAgICAgICBBQkNNZXRhLl9faW5pdF9fKGNscywg bmFtZSwgYmFzZXMsIGQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgY3JlYXRlKGNscywg bmFtZSwgKiprd2FyZ3MpOgorCisgICAgICAgIGlmIG5hbWUgaW4gQXV0aFNvdXJjZVJlZ2lzdHJ5 LmF1dGhfc291cmNlczoKKyAgICAgICAgICAgIHJldHVybiBBdXRoU291cmNlUmVnaXN0cnkuYXV0 aF9zb3VyY2VzW25hbWVdCisKKyAgICAgICAgaWYgbmFtZSBpbiBBdXRoU291cmNlUmVnaXN0cnku cmVnaXN0cnk6CisgICAgICAgICAgICBBdXRoU291cmNlUmVnaXN0cnkuYXV0aF9zb3VyY2VzW25h bWVdID0gXAorICAgICAgICAgICAgICAgIChBdXRoU291cmNlUmVnaXN0cnkucmVnaXN0cnlbbmFt ZV0pKCoqa3dhcmdzKQorICAgICAgICAgICAgcmV0dXJuIEF1dGhTb3VyY2VSZWdpc3RyeS5hdXRo X3NvdXJjZXNbbmFtZV0KKworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKAorICAg ICAgICAgICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAiQXV0aGVudGljYXRpb24gc291cmNl ICd7MH0nIGhhcyBub3QgYmVlbiBpbXBsZW1lbnRlZC4iCisgICAgICAgICAgICApLmZvcm1hdChu YW1lKQorICAgICAgICApCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZF9hdXRoX3Nv dXJjZXMoY2xzKToKKyAgICAgICAgIyBJbml0aWFsaXplIHRoZSByZWdpc3RyeSBvbmx5IGlmIGl0 IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQKKyAgICAgICAgaWYgQXV0aFNvdXJjZVJlZ2lz dHJ5LnJlZ2lzdHJ5IGlzIE5vbmU6CisgICAgICAgICAgICBBdXRoU291cmNlUmVnaXN0cnkucmVn aXN0cnkgPSBkaWN0KCkKKworICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgaW1wb3J0X21v ZHVsZQorICAgICAgICBmcm9tIHdlcmt6ZXVnLnV0aWxzIGltcG9ydCBmaW5kX21vZHVsZXMKKwor ICAgICAgICBmb3IgbW9kdWxlX25hbWUgaW4gZmluZF9tb2R1bGVzKF9fcGFja2FnZV9fLCBUcnVl KToKKyAgICAgICAgICAgIG1vZHVsZSA9IGltcG9ydF9tb2R1bGUobW9kdWxlX25hbWUpCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9fX2luaXRfXy5weQppbmRleCAzMGFmM2UxMWIuLjg2MjQ5MDgyMCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L19faW5pdF9fLnB5CkBAIC00NSw2ICs0NSw3IEBAIGZyb20gcGdhZG1pbi5icm93c2VyLnJlZ2lz dGVyX2Jyb3dzZXJfcHJlZmVyZW5jZXMgaW1wb3J0IFwKIGZyb20gcGdhZG1pbi51dGlscy5tYXN0 ZXJfcGFzc3dvcmQgaW1wb3J0IHZhbGlkYXRlX21hc3Rlcl9wYXNzd29yZCwgXAogICAgIHNldF9t YXN0ZXJwYXNzX2NoZWNrX3RleHQsIGNsZWFudXBfbWFzdGVyX3Bhc3N3b3JkLCBnZXRfY3J5cHRf a2V5LCBcCiAgICAgc2V0X2NyeXB0X2tleSwgcHJvY2Vzc19tYXN0ZXJwYXNzX2Rpc2FibGVkCitm cm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFVzZXIKIAogdHJ5OgogICAgIGltcG9ydCB1cmxsaWIu cmVxdWVzdCBhcyB1cmxyZXEKQEAgLTU4MCwxMiArNTgxLDI0IEBAIGRlZiBpbmRleCgpOgogCiAg ICAgICAgICAgICAgICAgZmxhc2gobXNnLCAnd2FybmluZycpCiAKKyAgICBhdXRoX29ubHlfaW50 ZXJuYWwgPSBGYWxzZQorICAgIGF1dGhfc291cmNlID0gW10KKworICAgIGlmIGNvbmZpZy5TRVJW RVJfTU9ERToKKyAgICAgICAgaWYgbGVuKGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTKSA9 PSAxXAorICAgICAgICAgICAgICAgIGFuZCAnaW50ZXJuYWwnIGluIGNvbmZpZy5BVVRIRU5USUNB VElPTl9TT1VSQ0VTOgorICAgICAgICAgICAgYXV0aF9vbmx5X2ludGVybmFsID0gVHJ1ZQorICAg ICAgICBhdXRoX3NvdXJjZSA9IHNlc3Npb25bJ19hdXRoX3NvdXJjZV9tYW5hZ2VyX29iaiddWwor ICAgICAgICAgICAgJ3NvdXJjZV9mcmllbmRseV9uYW1lJ10KKwogICAgIHJlc3BvbnNlID0gUmVz cG9uc2UocmVuZGVyX3RlbXBsYXRlKAogICAgICAgICBNT0RVTEVfTkFNRSArICIvaW5kZXguaHRt bCIsCi0gICAgICAgIHVzZXJuYW1lPWN1cnJlbnRfdXNlci5lbWFpbCwKKyAgICAgICAgdXNlcm5h bWU9Y3VycmVudF91c2VyLnVzZXJuYW1lLAorICAgICAgICBhdXRoX3NvdXJjZT1hdXRoX3NvdXJj ZSwKICAgICAgICAgaXNfYWRtaW49Y3VycmVudF91c2VyLmhhc19yb2xlKCJBZG1pbmlzdHJhdG9y IiksCiAgICAgICAgIGxvZ291dF91cmw9X2dldF9sb2dvdXRfdXJsKCksCi0gICAgICAgIF89Z2V0 dGV4dAorICAgICAgICBfPWdldHRleHQsCisgICAgICAgIGF1dGhfb25seV9pbnRlcm5hbD1hdXRo X29ubHlfaW50ZXJuYWwKICAgICApKQogCiAgICAgIyBTZXQgdGhlIGxhbmd1YWdlIGNvb2tpZSBh ZnRlciBsb2dpbiwgc28gbmV4dCB0aW1lIHRoZSB1c2VyIHdpbGwgaGF2ZSB0aGF0CkBAIC05OTQs NDMgKzEwMDcsNjAgQEAgaWYgaGFzYXR0cihjb25maWcsICdTRUNVUklUWV9SRUNPVkVSQUJMRScp IGFuZCBjb25maWcuU0VDVVJJVFlfUkVDT1ZFUkFCTEU6CiAgICAgICAgICAgICBmb3JtID0gZm9y bV9jbGFzcygpCiAKICAgICAgICAgaWYgZm9ybS52YWxpZGF0ZV9vbl9zdWJtaXQoKToKLSAgICAg ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZW5kX3Jlc2V0X3Bhc3N3b3JkX2luc3RydWN0 aW9ucyhmb3JtLnVzZXIpCi0gICAgICAgICAgICBleGNlcHQgU09DS0VURXJyb3JFeGNlcHRpb24g YXMgZToKLSAgICAgICAgICAgICAgICAjIEhhbmRsZSBzb2NrZXQgZXJyb3JzIHdoaWNoIGFyZSBu b3QgY292ZXJlZCBieSBTTVRQRXhjZXB0aW9ucy4KLSAgICAgICAgICAgICAgICBsb2dnaW5nLmV4 Y2VwdGlvbihzdHIoZSksIGV4Y19pbmZvPVRydWUpCi0gICAgICAgICAgICAgICAgZmxhc2goZ2V0 dGV4dCh1J1NNVFAgU29ja2V0IGVycm9yOiB7fVxuJwotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdSdZb3VyIHBhc3N3b3JkIGhhcyBub3QgYmVlbiBjaGFuZ2VkLicKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KGUpLAotICAgICAgICAgICAgICAgICAgICAgICdk YW5nZXInKQotICAgICAgICAgICAgICAgIGhhc19lcnJvciA9IFRydWUKLSAgICAgICAgICAgIGV4 Y2VwdCAoU01UUENvbm5lY3RFcnJvciwgU01UUFJlc3BvbnNlRXhjZXB0aW9uLAotICAgICAgICAg ICAgICAgICAgICBTTVRQU2VydmVyRGlzY29ubmVjdGVkLCBTTVRQRGF0YUVycm9yLCBTTVRQSGVs b0Vycm9yLAotICAgICAgICAgICAgICAgICAgICBTTVRQRXhjZXB0aW9uLCBTTVRQQXV0aGVudGlj YXRpb25FcnJvciwgU01UUFNlbmRlclJlZnVzZWQsCi0gICAgICAgICAgICAgICAgICAgIFNNVFBS ZWNpcGllbnRzUmVmdXNlZCkgYXMgZToKLQotICAgICAgICAgICAgICAgICMgSGFuZGxlIHNtdHAg c3BlY2lmaWMgZXhjZXB0aW9ucy4KLSAgICAgICAgICAgICAgICBsb2dnaW5nLmV4Y2VwdGlvbihz dHIoZSksIGV4Y19pbmZvPVRydWUpCi0gICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCh1J1NN VFAgZXJyb3I6IHt9XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1lvdXIgcGFz c3dvcmQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKS5mb3JtYXQoZSksCi0gICAgICAgICAgICAgICAgICAgICAgJ2RhbmdlcicpCi0gICAgICAg ICAgICAgICAgaGFzX2Vycm9yID0gVHJ1ZQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh cyBlOgotICAgICAgICAgICAgICAgICMgSGFuZGxlIG90aGVyIGV4Y2VwdGlvbnMuCi0gICAgICAg ICAgICAgICAgbG9nZ2luZy5leGNlcHRpb24oc3RyKGUpLCBleGNfaW5mbz1UcnVlKQotICAgICAg ICAgICAgICAgIGZsYXNoKGdldHRleHQodSdFcnJvcjoge31cbicKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHUnWW91ciBwYXNzd29yZCBoYXMgbm90IGJlZW4gY2hhbmdlZC4nCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChlKSwKKyAgICAgICAgICAgICMgQ2hl Y2sgdGhlIEF1dGhlbnRpY2F0aW9uIHNvdXJjZSBvZiB0aGUgVXNlcgorICAgICAgICAgICAgdXNl ciA9IFVzZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICAgICAgICAgIGVtYWlsPWZvcm0uZGF0 YVsnZW1haWwnXSwKKyAgICAgICAgICAgICAgICBhdXRoX3NvdXJjZT1jdXJyZW50X2FwcC5QR0FE TUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UKKyAgICAgICAgICAgICkuZmlyc3QoKQorCisgICAgICAg ICAgICBpZiB1c2VyIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgIyBJZiB0aGUgdXNlciBpcyBu b3QgYW4gaW50ZXJuYWwgdXNlciwgcmFpc2UgdGhlIGV4Y2VwdGlvbgorICAgICAgICAgICAgICAg IGZsYXNoKGdldHRleHQoJ1lvdXIgYWNjb3VudCBpcyBhdXRoZW50aWNhdGVkIHVzaW5nIGFuICcK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRlcm5hbCB7fSBzb3VyY2UuICcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3Ry YXRvcnMgb2YgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VydmljZSBp ZiB5b3UgbmVlZCB0byByZXNldCB5b3VyIHBhc3N3b3JkLicKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICkuZm9ybWF0KGZvcm0udXNlci5hdXRoX3NvdXJjZSksCiAgICAgICAgICAgICAg ICAgICAgICAgJ2RhbmdlcicpCiAgICAgICAgICAgICAgICAgaGFzX2Vycm9yID0gVHJ1ZQorICAg ICAgICAgICAgaWYgbm90IGhhc19lcnJvcjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAg ICAgICAgICAgICAgIHNlbmRfcmVzZXRfcGFzc3dvcmRfaW5zdHJ1Y3Rpb25zKGZvcm0udXNlcikK KyAgICAgICAgICAgICAgICBleGNlcHQgU09DS0VURXJyb3JFeGNlcHRpb24gYXMgZToKKyAgICAg ICAgICAgICAgICAgICAgIyBIYW5kbGUgc29ja2V0IGVycm9ycyB3aGljaCBhcmUgbm90CisgICAg ICAgICAgICAgICAgICAgICMgY292ZXJlZCBieSBTTVRQRXhjZXB0aW9ucy4KKyAgICAgICAgICAg ICAgICAgICAgbG9nZ2luZy5leGNlcHRpb24oc3RyKGUpLCBleGNfaW5mbz1UcnVlKQorICAgICAg ICAgICAgICAgICAgICBmbGFzaChnZXR0ZXh0KHUnU01UUCBTb2NrZXQgZXJyb3I6IHt9XG4nCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdZb3VyIHBhc3N3b3JkIGhhcyBub3Qg YmVlbiBjaGFuZ2VkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1h dChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhbmdlcicpCisgICAgICAgICAgICAg ICAgICAgIGhhc19lcnJvciA9IFRydWUKKyAgICAgICAgICAgICAgICBleGNlcHQgKFNNVFBDb25u ZWN0RXJyb3IsIFNNVFBSZXNwb25zZUV4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAg IFNNVFBTZXJ2ZXJEaXNjb25uZWN0ZWQsIFNNVFBEYXRhRXJyb3IsIFNNVFBIZWxvRXJyb3IsCisg ICAgICAgICAgICAgICAgICAgICAgICBTTVRQRXhjZXB0aW9uLCBTTVRQQXV0aGVudGljYXRpb25F cnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNNVFBTZW5kZXJSZWZ1c2VkLCBTTVRQUmVj aXBpZW50c1JlZnVzZWQpIGFzIGU6CisKKyAgICAgICAgICAgICAgICAgICAgIyBIYW5kbGUgc210 cCBzcGVjaWZpYyBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmV4Y2Vw dGlvbihzdHIoZSksIGV4Y19pbmZvPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGZsYXNoKGdl dHRleHQodSdTTVRQIGVycm9yOiB7fVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHUnWW91ciBwYXNzd29yZCBoYXMgbm90IGJlZW4gY2hhbmdlZC4nCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICdkYW5nZXInKQorICAgICAgICAgICAgICAgICAgICBoYXNfZXJyb3IgPSBUcnVlCisgICAg ICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAj IEhhbmRsZSBvdGhlciBleGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmV4 Y2VwdGlvbihzdHIoZSksIGV4Y19pbmZvPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGZsYXNo KGdldHRleHQodSdFcnJvcjoge31cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB1J1lvdXIgcGFzc3dvcmQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuJworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KGUpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAnZGFuZ2VyJykKKyAgICAgICAgICAgICAgICAgICAgaGFzX2Vycm9yID0gVHJ1ZQogCiAgICAg ICAgICAgICBpZiByZXF1ZXN0Lmpzb24gaXMgTm9uZSBhbmQgbm90IGhhc19lcnJvcjoKICAgICAg ICAgICAgICAgICBkb19mbGFzaCgqZ2V0X21lc3NhZ2UoJ1BBU1NXT1JEX1JFU0VUX1JFUVVFU1Qn LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWFpbD1mb3JtLnVzZXIu ZW1haWwpKQogCiAgICAgICAgIGlmIHJlcXVlc3QuanNvbiBhbmQgbm90IGhhc19lcnJvcjoKLSAg ICAgICAgICAgIHJldHVybiBfcmVuZGVyX2pzb24oZm9ybSwgaW5jbHVkZV91c2VyPUZhbHNlKQor ICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRfcmVuZGVyX2pzb24oZm9ybSwgaW5jbHVkZV91c2Vy PUZhbHNlKQogCiAgICAgICAgIHJldHVybiBfc2VjdXJpdHkucmVuZGVyX3RlbXBsYXRlKAogICAg ICAgICAgICAgY29uZmlnX3ZhbHVlKCdGT1JHT1RfUEFTU1dPUkRfVEVNUExBVEUnKSwKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvaW5kZXguaHRtbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvaW5kZXguaHRtbAppbmRleCA2 ODJjMjNkNjUuLmIzODliOTU3NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1w bGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxh dGVzL2Jyb3dzZXIvaW5kZXguaHRtbApAQCAtMTQyLDYgKzE0Miw3IEBAIHdpbmRvdy5vbmxvYWQg PSBmdW5jdGlvbihlKXsKICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0ibmF2LWxp bmsgZHJvcGRvd24tdG9nZ2xlIiBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iCiAgICAgICAgICAgICAg ICAgICAgcm9sZT0iYnV0dG9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgaWQ9Im5hdmJhci11c2Vy Ij48L2E+CiAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51IGRyb3Bkb3du LW1lbnUtcmlnaHQiIHJvbGU9Im1lbnUiPgorICAgICAgICAgICAgICAgICAgICB7JSBpZiBhdXRo X29ubHlfaW50ZXJuYWwgJX0KICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAg ICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhyZWY9IiMiIG9uY2xpY2s9InBn QWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5jaGFuZ2VfcGFzc3dvcmQoCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICd7eyB1cmxfZm9yKCdicm93c2VyLmNoYW5nZV9wYXNzd29yZCcpIH19 JwpAQCAtMTUwLDYgKzE1MSw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbihlKXsKICAgICAg ICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAg ICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkcm9wZG93bi1kaXZpZGVyIj48L2xpPgorICAgICAg ICAgICAgICAgICAgICB7JSBlbmRpZiAlfQogICAgICAgICAgICAgICAgICAgICB7JSBpZiBpc19h ZG1pbiAlfQogICAgICAgICAgICAgICAgICAgICA8bGk+PGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0i IGhyZWY9IiMiIG9uY2xpY2s9InBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5zaG93X3Vz ZXJzKCkiPnt7IF8oJ1VzZXJzJykgfX08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgPGxp IGNsYXNzPSJkcm9wZG93bi1kaXZpZGVyIj48L2xpPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9tYWNyb3MvZ3JhdmF0YXJfaWNvbi5tYWNybyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvbWFjcm9zL2dyYXZhdGFyX2ljb24u bWFjcm8KaW5kZXggNzJlYzk3ZTU5Li5lZGVkOGI2OGEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvbWFjcm9zL2dyYXZhdGFyX2ljb24ubWFjcm8KKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9tYWNyb3MvZ3JhdmF0YXJf aWNvbi5tYWNybwpAQCAtNCw1ICs0LDUgQEAgd2Ugd2lsbCBub3QgYXNzb2NpYXRlIG91ciBhcHBs aWNhdGlvbiB3aXRoIEdyYXZhdGFyIG1vZHVsZSB3aGljaCB3aWxsIG1ha2UKICdncmF2YXRhcicg ZmlsdGVyIHVuYXZhaWxhYmxlIGluIEppbmphIHRlbXBsYXRlcwogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj fQogeyUgbWFjcm8gUFJFUEFSRV9IVE1MKCkgLSV9Ci0nPGltZyBzcmMgPSAie3sgdXNlcm5hbWUg fCBncmF2YXRhciB9fSIgd2lkdGggPSAiMTgiIGhlaWdodCA9ICIxOCIgYWx0ID0gIkdyYXZhdGFy IGltYWdlIGZvciB7eyB1c2VybmFtZSB9fSIgPiB7eyB1c2VybmFtZSB9fSA8c3BhbiBjbGFzcz0i Y2FyZXQiPjwvc3Bhbj4nOworJzxpbWcgc3JjID0gInt7IHVzZXJuYW1lIHwgZ3JhdmF0YXIgfX0i IHdpZHRoID0gIjE4IiBoZWlnaHQgPSAiMTgiIGFsdCA9ICJHcmF2YXRhciBpbWFnZSBmb3Ige3sg dXNlcm5hbWUgfX0iID4ge3sgdXNlcm5hbWUgfX0gKHt7YXV0aF9zb3VyY2V9fSkgPHNwYW4gY2xh c3M9ImNhcmV0Ij48L3NwYW4+JzsKIHslLSBlbmRtYWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weSBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvdGVzdHMvdGVzdF9jaGFuZ2VfcGFzc3dvcmQucHkKaW5kZXggMDRjNDlhMjNlLi5m Yjg2ZTRkZmQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9jaGFu Z2VfcGFzc3dvcmQucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5n ZV9wYXNzd29yZC5weQpAQCAtOTUsNiArOTUsNyBAQCBjbGFzcyBDaGFuZ2VQYXNzd29yZFRlc3RD YXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCgKICAgICAgICAgICAgICAgICAnL3VzZXJfbWFuYWdlbWVudC91c2VyLycsCiAgICAg ICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKGRpY3QoCisgICAgICAgICAgICAgICAgICAgIHVz ZXJuYW1lPXNlbGYudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIGVtYWlsPXNlbGYudXNl cm5hbWUsCiAgICAgICAgICAgICAgICAgICAgIG5ld1Bhc3N3b3JkPXNlbGYucGFzc3dvcmQsCiAg ICAgICAgICAgICAgICAgICAgIGNvbmZpcm1QYXNzd29yZD1zZWxmLnBhc3N3b3JkLApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfbG9naW4ucHkgYi93ZWIv cGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfbGRhcF9sb2dpbi5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAuLjJmNTlkZmZmNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9sZGFwX2xvZ2luLnB5CkBAIC0wLDAgKzEsODggQEAK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMK KyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBjb25maWcgYXMgYXBwX2NvbmZpZwor ZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSBy ZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitm cm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKKworCitjbGFzcyBM REFQTG9naW5UZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgVGhpcyBj bGFzcyBjaGVja3MgbGRhcCBsb2dpbiBmdW5jdGlvbmFsaXR5CisgICAgYnkgdmFsaWRhdGluZyBk aWZmZXJlbnQgc2NlbmFyaW9zLgorICAgICIiIgorCisgICAgc2NlbmFyaW9zID0gWworICAgICAg ICAoJ0xEQVAgQXV0aGVudGljYXRpb24nLCBkaWN0KAorICAgICAgICAgICAgY29uZmlnX2tleV9w YXJhbT0nbGRhcCcsCisgICAgICAgICAgICBpc19ncmF2dGFyX2ltYWdlX2NoZWNrPUZhbHNlKSks CisgICAgICAgICgnTERBUCBXaXRoIFNTTCBBdXRoZW50aWNhdGlvbicsIGRpY3QoCisgICAgICAg ICAgICBjb25maWdfa2V5X3BhcmFtPSdsZGFwX3dpdGhfc3NsJywKKyAgICAgICAgICAgIGlzX2dy YXZ0YXJfaW1hZ2VfY2hlY2s9RmFsc2UpKSwKKyAgICAgICAgKCdMREFQIFdpdGggVExTIEF1dGhl bnRpY2F0aW9uJywgZGljdCgKKyAgICAgICAgICAgIGNvbmZpZ19rZXlfcGFyYW09J2xkYXBfd2l0 aF90bHMnLAorICAgICAgICAgICAgaXNfZ3JhdnRhcl9pbWFnZV9jaGVjaz1GYWxzZSkpLAorICAg IF0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAg ICIiIgorICAgICAgICBXZSBuZWVkIHRvIGxvZ291dCB0aGUgdGVzdCBjbGllbnQKKyAgICAgICAg YXMgd2UgYXJlIHRlc3RpbmcgbGRhcCBsb2dpbiBzY2VuYXJpb3MuCisgICAgICAgICIiIgorICAg ICAgICBjbHMudGVzdGVyLmxvZ291dCgpCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAg IGlmIHR5cGUoY29uZmlnX2RhdGFbJ2xkYXBfY29uZmlnJ10pIGlzIGxpc3QgYW5kXAorICAgICAg ICAgICAgICAgIGxlbihjb25maWdfZGF0YVsnbGRhcF9jb25maWcnXSkgPiAwIGFuZFwKKyAgICAg ICAgICAgICAgICBzZWxmLmNvbmZpZ19rZXlfcGFyYW0gaW4gY29uZmlnX2RhdGFbJ2xkYXBfY29u ZmlnJ11bMF06CisgICAgICAgICAgICBsZGFwX2NvbmZpZyA9IGNvbmZpZ19kYXRhWydsZGFwX2Nv bmZpZyddWzBdW3NlbGYuY29uZmlnX2tleV9wYXJhbV0KKworICAgICAgICAgICAgYXBwX2NvbmZp Zy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTID0gWydsZGFwJ10KKyAgICAgICAgICAgIGFwcF9jb25m aWcuTERBUF9BVVRPX0NSRUFURV9VU0VSID0gVHJ1ZQorICAgICAgICAgICAgYXBwX2NvbmZpZy5M REFQX1NFUlZFUl9VUkkgPSBsZGFwX2NvbmZpZ1sndXJpJ10KKyAgICAgICAgICAgIGFwcF9jb25m aWcuTERBUF9CQVNFX0ROID0gbGRhcF9jb25maWdbJ2Jhc2VfZG4nXQorICAgICAgICAgICAgYXBw X2NvbmZpZy5MREFQX1VTRVJOQU1FX0FUVFJJQlVURSA9IGxkYXBfY29uZmlnWworICAgICAgICAg ICAgICAgICd1c2VybmFtZV9hdHInXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX1NFQVJD SF9CQVNFX0ROID0gbGRhcF9jb25maWdbCisgICAgICAgICAgICAgICAgJ3NlYXJjaF9iYXNlX2Ru J10KKyAgICAgICAgICAgIGFwcF9jb25maWcuTERBUF9TRUFSQ0hfRklMVEVSID0gbGRhcF9jb25m aWdbJ3NlYXJjaF9maWx0ZXInXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX1VTRV9TVEFS VFRMUyA9IGxkYXBfY29uZmlnWyd1c2Vfc3RhcnR0bHMnXQorICAgICAgICAgICAgYXBwX2NvbmZp Zy5MREFQX0NBX0NFUlRfRklMRSA9IGxkYXBfY29uZmlnWydjYV9jZXJ0X2ZpbGUnXQorICAgICAg ICAgICAgYXBwX2NvbmZpZy5MREFQX0NFUlRfRklMRSA9IGxkYXBfY29uZmlnWydjZXJ0X2ZpbGUn XQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0tFWV9GSUxFID0gbGRhcF9jb25maWdbJ2tl eV9maWxlJ10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCisgICAg ICAgICAgICAgICAgIkxEQVAgY29uZmlnIG5vdCBzZXQuIgorICAgICAgICAgICAgKQorCisgICAg ZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gY2hlY2tzIGxvZ2lu IGZ1bmN0aW9uYWxpdHkuIiIiCisgICAgICAgIHVzZXJuYW1lID0gY29uZmlnX2RhdGFbJ3BnQWRt aW40X2xkYXBfY3JlZGVudGlhbHMnXVsnbG9naW5fdXNlcm5hbWUnXQorICAgICAgICBwYXNzd29y ZCA9IGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sZGFwX2NyZWRlbnRpYWxzJ11bJ2xvZ2luX3Bhc3N3 b3JkJ10KKworICAgICAgICByZXMgPSBzZWxmLnRlc3Rlci5sb2dpbih1c2VybmFtZSwgcGFzc3dv cmQsIFRydWUpCisKKyAgICAgICAgcmVzcGRhdGEgPSAnR3JhdmF0YXIgaW1hZ2UgZm9yICVzJyAl XAorICAgICAgICAgICAgICAgICAgIGNvbmZpZ19kYXRhWydwZ0FkbWluNF9sZGFwX2NyZWRlbnRp YWxzJ11bJ2xvZ2luX3VzZXJuYW1lJ10KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlc3BkYXRh IGluIHJlcy5kYXRhLmRlY29kZSgndXRmOCcpKQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor ICAgICAgICBzZWxmLnRlc3Rlci5sb2dvdXQoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVm IHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gYWdh aW4gbG9naW4gdGhlIHRlc3QgY2xpZW50IGFzIHNvb24gYXMgdGVzdCBzY2VuYXJpb3MKKyAgICAg ICAgZmluaXNoZXMuCisgICAgICAgICIiIgorICAgICAgICBjbHMudGVzdGVyLmxvZ291dCgpCisg ICAgICAgIGFwcF9jb25maWcuQVVUSEVOVElDQVRJT05fU09VUkNFUyA9IFsnaW50ZXJuYWwnXQor ICAgICAgICB1dGlscy5sb2dpbl90ZXN0ZXJfYWNjb3VudChjbHMudGVzdGVyKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0aF9tb2NraW5nLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0aF9tb2NraW5nLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uOTAzODUyNDJjCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2xkYXBfd2l0aF9tb2NraW5nLnB5 CkBAIC0wLDAgKzEsODQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBv c3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2ltcG9ydCBzeXMK K2ltcG9ydCBjb25maWcgYXMgYXBwX2NvbmZpZworZnJvbSBwZ2FkbWluLnV0aWxzLnJvdXRlIGlt cG9ydCBCYXNlVGVzdEdlbmVyYXRvcgorZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxz IGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCitmcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBp bXBvcnQgY29uZmlnX2RhdGEKK2Zyb20gcGdhZG1pbi5hdXRoZW50aWNhdGUucmVnaXN0cnkgaW1w b3J0IEF1dGhTb3VyY2VSZWdpc3RyeQorCitpZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDMpOgor ICAgIGZyb20gbW9jayBpbXBvcnQgcGF0Y2gKK2Vsc2U6CisgICAgZnJvbSB1bml0dGVzdC5tb2Nr IGltcG9ydCBwYXRjaAorCisKK2NsYXNzIExEQVBMb2dpbk1vY2tUZXN0Q2FzZShCYXNlVGVzdEdl bmVyYXRvcik6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBjaGVja3MgbGRhcCBsb2dpbiBmdW5j dGlvbmFsaXR5IGJ5IG1vY2tpbmcKKyAgICBsZGFwIGNvbm5lY3Rpb24gYW5kIGxkYXAgc2VhcmNo IGZ1bmN0aW9uYWxpdHkuCisgICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgn TERBUCBBdXRoZW50aWNhdGlvbiB3aXRoIEF1dG8gQ3JlYXRlIFVzZXInLCBkaWN0KAorICAgICAg ICAgICAgYXV0aF9zb3VyY2U9WydsZGFwJ10sCisgICAgICAgICAgICBhdXRvX2NyZWF0ZV91c2Vy PVRydWUsCisgICAgICAgICAgICB1c2VybmFtZT0nbGRhcF91c2VyJywKKyAgICAgICAgICAgIHBh c3N3b3JkPSdsZGFwX3Bhc3MnKSksCisgICAgICAgICgnTERBUCBBdXRoZW50aWNhdGlvbiB3aXRo b3V0IEF1dG8gQ3JlYXRlIFVzZXInLCBkaWN0KAorICAgICAgICAgICAgYXV0aF9zb3VyY2U9Wyds ZGFwJ10sCisgICAgICAgICAgICBhdXRvX2NyZWF0ZV91c2VyPUZhbHNlLAorICAgICAgICAgICAg dXNlcm5hbWU9J2xkYXBfdXNlcicsCisgICAgICAgICAgICBwYXNzd29yZD0nbGRhcF9wYXNzJykp LAorICAgICAgICAoJ0xEQVAgKyBJbnRlcm5hbCBBdXRoZW50aWNhdGlvbicsIGRpY3QoCisgICAg ICAgICAgICBhdXRoX3NvdXJjZT1bJ2xkYXAnLCAnaW50ZXJuYWwnXSwKKyAgICAgICAgICAgIGF1 dG9fY3JlYXRlX3VzZXI9RmFsc2UsCisgICAgICAgICAgICB1c2VybmFtZT1jb25maWdfZGF0YVsK KyAgICAgICAgICAgICAgICAncGdBZG1pbjRfbG9naW5fY3JlZGVudGlhbHMnXVsnbG9naW5fdXNl cm5hbWUnXSwKKyAgICAgICAgICAgIHBhc3N3b3JkPWNvbmZpZ19kYXRhWworICAgICAgICAgICAg ICAgICdwZ0FkbWluNF9sb2dpbl9jcmVkZW50aWFscyddWydsb2dpbl9wYXNzd29yZCddCisgICAg ICAgICkpCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xz KToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQgdG8gbG9nb3V0IHRoZSB0ZXN0IGNsaWVu dCBhcyB3ZSBhcmUgdGVzdGluZworICAgICAgICBsZGFwIGxvZ2luIHNjZW5hcmlvcy4KKyAgICAg ICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKworICAgIGRlZiBzZXRVcChzZWxm KToKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTID0gc2VsZi5hdXRo X3NvdXJjZQorICAgICAgICBhcHBfY29uZmlnLkxEQVBfQVVUT19DUkVBVEVfVVNFUiA9IHNlbGYu YXV0b19jcmVhdGVfdXNlcgorCisgICAgQHBhdGNoLm9iamVjdChBdXRoU291cmNlUmVnaXN0cnku cmVnaXN0cnlbJ2xkYXAnXSwgJ2Nvbm5lY3QnLAorICAgICAgICAgICAgICAgICAgcmV0dXJuX3Zh bHVlPVtUcnVlLCAiRG9uZSJdKQorICAgIEBwYXRjaC5vYmplY3QoQXV0aFNvdXJjZVJlZ2lzdHJ5 LnJlZ2lzdHJ5WydsZGFwJ10sICdzZWFyY2hfbGRhcF91c2VyJywKKyAgICAgICAgICAgICAgICAg IHJldHVybl92YWx1ZT1bVHJ1ZSwgJyddKQorICAgIGRlZiBydW5UZXN0KHNlbGYsIGNvbm5fbW9j a19vYmosIHNlYXJjaF9tb2NrX29iaik6CisgICAgICAgICIiIlRoaXMgZnVuY3Rpb24gY2hlY2tz IGxkYXAgbG9naW4gZnVuY3Rpb25hbGl0eS4iIiIKKworICAgICAgICByZXMgPSBzZWxmLnRlc3Rl ci5sb2dpbihzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkLCBUcnVlKQorICAgICAgICByZXNw ZGF0YSA9ICdHcmF2YXRhciBpbWFnZSBmb3IgJXMnICUgc2VsZi51c2VybmFtZQorICAgICAgICBz ZWxmLmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRhdGEuZGVjb2RlKCd1dGY4JykpCisKKyAg ICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYudGVzdGVyLmxvZ291dCgpCisKKyAg ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICAiIiIK KyAgICAgICAgV2UgbmVlZCB0byBhZ2FpbiBsb2dpbiB0aGUgdGVzdCBjbGllbnQgYXMgc29vbiBh cyB0ZXN0IHNjZW5hcmlvcworICAgICAgICBmaW5pc2hlcy4KKyAgICAgICAgIiIiCisgICAgICAg IGNscy50ZXN0ZXIubG9nb3V0KCkKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9T T1VSQ0VTID0gWydpbnRlcm5hbCddCisgICAgICAgIHV0aWxzLmxvZ2luX3Rlc3Rlcl9hY2NvdW50 KGNscy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weSBi L3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5CmluZGV4IGY1ODhlNDAxYy4uZTNhZjY2MGIw IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9tb2RlbC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdh ZG1pbi9tb2RlbC9fX2luaXRfXy5weQpAQCAtMjksNyArMjksNyBAQCBmcm9tIGZsYXNrX3NxbGFs Y2hlbXkgaW1wb3J0IFNRTEFsY2hlbXkKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLVNDSEVNQV9W RVJTSU9OID0gMjQKK1NDSEVNQV9WRVJTSU9OID0gMjUKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMK QEAgLTY2LDEzICs2NiwxNSBAQCBjbGFzcyBVc2VyKGRiLk1vZGVsLCBVc2VyTWl4aW4pOgogICAg ICIiIkRlZmluZSBhIHVzZXIgb2JqZWN0IiIiCiAgICAgX190YWJsZW5hbWVfXyA9ICd1c2VyJwog ICAgIGlkID0gZGIuQ29sdW1uKGRiLkludGVnZXIsIHByaW1hcnlfa2V5PVRydWUpCi0gICAgZW1h aWwgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDI1NiksIHVuaXF1ZT1UcnVlLCBudWxsYWJsZT1GYWxz ZSkKKyAgICBlbWFpbCA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMjU2KSwgbnVsbGFibGU9VHJ1ZSkK KyAgICB1c2VybmFtZSA9IGRiLkNvbHVtbihkYi5TdHJpbmcoNjQpLCB1bmlxdWU9VHJ1ZSwgbnVs bGFibGU9RmFsc2UpCiAgICAgcGFzc3dvcmQgPSBkYi5Db2x1bW4oZGIuU3RyaW5nKDI1NikpCiAg ICAgYWN0aXZlID0gZGIuQ29sdW1uKGRiLkJvb2xlYW4oKSwgbnVsbGFibGU9RmFsc2UpCiAgICAg Y29uZmlybWVkX2F0ID0gZGIuQ29sdW1uKGRiLkRhdGVUaW1lKCkpCiAgICAgbWFzdGVycGFzc19j aGVjayA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMjU2KSkKICAgICByb2xlcyA9IGRiLnJlbGF0aW9u c2hpcCgnUm9sZScsIHNlY29uZGFyeT1yb2xlc191c2VycywKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBiYWNrcmVmPWRiLmJhY2tyZWYoJ3VzZXJzJywgbGF6eT0nZHluYW1pYycpKQorICAg IGF1dGhfc291cmNlID0gZGIuQ29sdW1uKGRiLlN0cmluZygxNiksIHVuaXF1ZT1UcnVlLCBudWxs YWJsZT1GYWxzZSkKIAogCiBjbGFzcyBTZXR0aW5nKGRiLk1vZGVsKToKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9maWVsZHMuaHRtbCBiL3dlYi9wZ2FkbWluL3Rl bXBsYXRlcy9zZWN1cml0eS9maWVsZHMuaHRtbAppbmRleCBlZmIxMjZiMmUuLmM1MDVkYTM2NiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L2ZpZWxkcy5odG1sCisr KyBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9maWVsZHMuaHRtbApAQCAtOSwzICs5 LDE0IEBACiAgICAgeyUgZW5kaWYgJX0KIDwvZGl2PgogeyUgZW5kbWFjcm8gJX0KK3slIG1hY3Jv IHJlbmRlcl91c2VybmFtZV93aXRoX2Vycm9ycyhmaWVsZCwgdHlwZSkgJX0KKzxkaXYgY2xhc3M9 ImZvcm0tZ3JvdXAgbWItMyB7JSBpZiBmaWVsZC5lcnJvcnMgJX0gaGFzLWVycm9yeyUgZW5kaWYg JX0iPgorICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIiBwbGFjZWhvbGRlcj0ie3sgZmll bGQubGFiZWwudGV4dCB9fSAvIFVzZXJuYW1lIiBuYW1lPSJ7eyBmaWVsZC5uYW1lIH19IgorICAg ICAgICAgICB0eXBlPSJ7JSBpZiB0eXBlICV9e3sgdHlwZSB9fXslIGVsc2UgJX17eyBmaWVsZC50 eXBlIH19eyUgZW5kaWYgJX0iIGF1dG9mb2N1cz4KKyAgICB7JSBpZiBmaWVsZC5lcnJvcnMgJX0K KyAgICB7JSBmb3IgZXJyb3IgaW4gZmllbGQuZXJyb3JzICV9CisgICAgPHNwYW4gY2xhc3M9ImZv cm0tdGV4dCI+e3sgZXJyb3IgfX08L3NwYW4+CisgICAgeyUgZW5kZm9yICV9CisgICAgeyUgZW5k aWYgJX0KKzwvZGl2PgoreyUgZW5kbWFjcm8gJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rl bXBsYXRlcy9zZWN1cml0eS9sb2dpbl91c2VyLmh0bWwgYi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMv c2VjdXJpdHkvbG9naW5fdXNlci5odG1sCmluZGV4IDc1MTVjMmMyYS4uMmU5MmQ3YjEyIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvbG9naW5fdXNlci5odG1sCisr KyBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9sb2dpbl91c2VyLmh0bWwKQEAgLTcs MTAgKzcsMTAgQEAKIHslIGJsb2NrIHBhbmVsX3RpdGxlICV9e3sgXygnTG9naW4nKSB9fXslIGVu ZGJsb2NrICV9CiB7JSBibG9jayBwYW5lbF9ib2R5ICV9CiB7JSBpZiBjb25maWcuU0VSVkVSX01P REUgJX0KLTxmb3JtIGFjdGlvbj0ie3sgdXJsX2Zvcl9zZWN1cml0eSgnbG9naW4nKSB9fSIgbWV0 aG9kPSJQT1NUIiBuYW1lPSJsb2dpbl91c2VyX2Zvcm0iPgorPGZvcm0gYWN0aW9uPSJ7eyB1cmxf Zm9yKCdhdXRoZW50aWNhdGUubG9naW4nKSB9fSIgbWV0aG9kPSJQT1NUIiBuYW1lPSJsb2dpbl91 c2VyX2Zvcm0iPgogICAgIHt7IGxvZ2luX3VzZXJfZm9ybS5oaWRkZW5fdGFnKCkgfX0KICAgICB7 JSBzZXQgdXNlcl9sYW5ndWFnZSA9IHJlcXVlc3QuY29va2llcy5nZXQoJ1BHQURNSU5fTEFOR1VB R0UnKSBvciAnZW4nICV9Ci0gICAge3sgcmVuZGVyX2ZpZWxkX3dpdGhfZXJyb3JzKGxvZ2luX3Vz ZXJfZm9ybS5lbWFpbCwgInRleHQiKSB9fQorICAgIHt7IHJlbmRlcl91c2VybmFtZV93aXRoX2Vy cm9ycyhsb2dpbl91c2VyX2Zvcm0uZW1haWwsICJ0ZXh0IikgfX0KICAgICB7eyByZW5kZXJfZmll bGRfd2l0aF9lcnJvcnMobG9naW5fdXNlcl9mb3JtLnBhc3N3b3JkLCAicGFzc3dvcmQiKSB9fQog ICAgIDxidXR0b24gY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tYmxvY2sgYnRuLWxvZ2luIiB0 eXBlPSJzdWJtaXQiIHZhbHVlPSJ7eyBfKCdMb2dpbicpIH19Ij57eyBfKCdMb2dpbicpIH19PC9i dXR0b24+CiAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCByb3cgbWItMyBjIHVzZXItbGFuZ3Vh Z2UiPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L3BhbmVsLmh0 bWwgYi93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvcGFuZWwuaHRtbAppbmRleCA3ZGUx ZDlkOTAuLjE0NTJkZThjYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3Vy aXR5L3BhbmVsLmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L3BhbmVs Lmh0bWwKQEAgLTEsNSArMSw1IEBACiB7JSBleHRlbmRzICJiYXNlLmh0bWwiICV9Ci17JSBmcm9t ICJzZWN1cml0eS9maWVsZHMuaHRtbCIgaW1wb3J0IHJlbmRlcl9maWVsZF93aXRoX2Vycm9ycyAl fQoreyUgZnJvbSAic2VjdXJpdHkvZmllbGRzLmh0bWwiIGltcG9ydCByZW5kZXJfZmllbGRfd2l0 aF9lcnJvcnMsIHJlbmRlcl91c2VybmFtZV93aXRoX2Vycm9ycyAlfQogeyUgYmxvY2sgYm9keSAl fQogPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGgtMTAwIGxvZ2luX3BhZ2UiPgogICAgIHsl IGlmIGNvbmZpZy5MT0dJTl9CQU5ORVIgaXMgZGVmaW5lZCBhbmQgY29uZmlnLkxPR0lOX0JBTk5F UiAhPSAiIiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50 L19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L19faW5pdF9f LnB5CmluZGV4IDU1MzY1MTczZi4uNGYxNjAyY2RjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90 b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv dXNlcl9tYW5hZ2VtZW50L19faW5pdF9fLnB5CkBAIC03NCw3ICs3NCw4IEBAIGNsYXNzIFVzZXJN YW5hZ2VtZW50TW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgJ3VzZXJfbWFuYWdl bWVudC5yb2xlcycsICd1c2VyX21hbmFnZW1lbnQucm9sZScsCiAgICAgICAgICAgICAndXNlcl9t YW5hZ2VtZW50LnVwZGF0ZV91c2VyJywgJ3VzZXJfbWFuYWdlbWVudC5kZWxldGVfdXNlcicsCiAg ICAgICAgICAgICAndXNlcl9tYW5hZ2VtZW50LmNyZWF0ZV91c2VyJywgJ3VzZXJfbWFuYWdlbWVu dC51c2VycycsCi0gICAgICAgICAgICAndXNlcl9tYW5hZ2VtZW50LnVzZXInLCBjdXJyZW50X2Fw cC5sb2dpbl9tYW5hZ2VyLmxvZ2luX3ZpZXcKKyAgICAgICAgICAgICd1c2VyX21hbmFnZW1lbnQu dXNlcicsIGN1cnJlbnRfYXBwLmxvZ2luX21hbmFnZXIubG9naW5fdmlldywKKyAgICAgICAgICAg ICd1c2VyX21hbmFnZW1lbnQuYXV0aF9zb3VyY2VzJywgJ3VzZXJfbWFuYWdlbWVudC5hdXRoX3Nv dXJjZXMnCiAgICAgICAgIF0KIAogCkBAIC0xMDAsNyArMTAxLDcgQEAgZGVmIHZhbGlkYXRlX3Vz ZXIoZGF0YSk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oXygi UGFzc3dvcmRzIGRvIG5vdCBtYXRjaC4iKSkKIAotICAgIGlmICdlbWFpbCcgaW4gZGF0YSBhbmQg ZGF0YVsnZW1haWwnXSAhPSAiIjoKKyAgICBpZiAnZW1haWwnIGluIGRhdGEgYW5kIGRhdGFbJ2Vt YWlsJ10gYW5kIGRhdGFbJ2VtYWlsJ10gIT0gIiI6CiAgICAgICAgIGlmIGVtYWlsX2ZpbHRlci5t YXRjaChkYXRhWydlbWFpbCddKToKICAgICAgICAgICAgIG5ld19kYXRhWydlbWFpbCddID0gZGF0 YVsnZW1haWwnXQogICAgICAgICBlbHNlOgpAQCAtMTEyLDYgKzExMywxMiBAQCBkZWYgdmFsaWRh dGVfdXNlcihkYXRhKToKICAgICBpZiAnYWN0aXZlJyBpbiBkYXRhIGFuZCBkYXRhWydhY3RpdmUn XSAhPSAiIjoKICAgICAgICAgbmV3X2RhdGFbJ2FjdGl2ZSddID0gZGF0YVsnYWN0aXZlJ10KIAor ICAgIGlmICd1c2VybmFtZScgaW4gZGF0YSBhbmQgZGF0YVsndXNlcm5hbWUnXSAhPSAiIjoKKyAg ICAgICAgbmV3X2RhdGFbJ3VzZXJuYW1lJ10gPSBkYXRhWyd1c2VybmFtZSddCisKKyAgICBpZiAn YXV0aF9zb3VyY2UnIGluIGRhdGEgYW5kIGRhdGFbJ2F1dGhfc291cmNlJ10gIT0gIiI6CisgICAg ICAgIG5ld19kYXRhWydhdXRoX3NvdXJjZSddID0gZGF0YVsnYXV0aF9zb3VyY2UnXQorCiAgICAg cmV0dXJuIG5ld19kYXRhCiAKIApAQCAtMTQwLDYgKzE0Nyw3IEBAIGRlZiBzY3JpcHQoKToKIEBw Z0NTUkZQcm90ZWN0LmV4ZW1wdAogQGxvZ2luX3JlcXVpcmVkCiBkZWYgY3VycmVudF91c2VyX2lu Zm8oKToKKwogICAgIHJldHVybiBSZXNwb25zZSgKICAgICAgICAgcmVzcG9uc2U9cmVuZGVyX3Rl bXBsYXRlKAogICAgICAgICAgICAgInVzZXJfbWFuYWdlbWVudC9qcy9jdXJyZW50X3VzZXIuanMi LApAQCAtMTQ4LDEzICsxNTYsMTQgQEAgZGVmIGN1cnJlbnRfdXNlcl9pbmZvKCk6CiAgICAgICAg ICAgICB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZCwKICAgICAgICAgICAgIGVtYWlsPWN1cnJlbnRf dXNlci5lbWFpbCwKICAgICAgICAgICAgIG5hbWU9KAotICAgICAgICAgICAgICAgIGN1cnJlbnRf dXNlci5lbWFpbC5zcGxpdCgnQCcpWzBdIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBpcyBUcnVlCisg ICAgICAgICAgICAgICAgY3VycmVudF91c2VyLnVzZXJuYW1lLnNwbGl0KCdAJylbMF0gaWYgY29u ZmlnLlNFUlZFUl9NT0RFIGlzIFRydWUKICAgICAgICAgICAgICAgICBlbHNlICdwb3N0Z3JlcycK ICAgICAgICAgICAgICksCiAgICAgICAgICAgICBhbGxvd19zYXZlX3Bhc3N3b3JkPSd0cnVlJyBp ZiBjb25maWcuQUxMT1dfU0FWRV9QQVNTV09SRAogICAgICAgICAgICAgZWxzZSAnZmFsc2UnLAog ICAgICAgICAgICAgYWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQ9J3RydWUnCiAgICAgICAgICAg ICBpZiBjb25maWcuQUxMT1dfU0FWRV9UVU5ORUxfUEFTU1dPUkQgZWxzZSAnZmFsc2UnLAorICAg ICAgICAgICAgYXV0aF9zb3VyY2VzPWNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTLAogICAg ICAgICApLAogICAgICAgICBzdGF0dXM9MjAwLAogICAgICAgICBtaW1ldHlwZT0iYXBwbGljYXRp b24vamF2YXNjcmlwdCIKQEAgLTE4MCw5ICsxODksMTEgQEAgZGVmIHVzZXIodWlkKToKICAgICAg ICAgdSA9IFVzZXIucXVlcnkuZ2V0KHVpZCkKIAogICAgICAgICByZXMgPSB7J2lkJzogdS5pZCwK KyAgICAgICAgICAgICAgICd1c2VybmFtZSc6IHUudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAn ZW1haWwnOiB1LmVtYWlsLAogICAgICAgICAgICAgICAgJ2FjdGl2ZSc6IHUuYWN0aXZlLAotICAg ICAgICAgICAgICAgJ3JvbGUnOiB1LnJvbGVzWzBdLmlkCisgICAgICAgICAgICAgICAncm9sZSc6 IHUucm9sZXNbMF0uaWQsCisgICAgICAgICAgICAgICAnYXV0aF9zb3VyY2UnOiB1LmF1dGhfc291 cmNlCiAgICAgICAgICAgICAgICB9CiAgICAgZWxzZToKICAgICAgICAgdXNlcnMgPSBVc2VyLnF1 ZXJ5LmFsbCgpCkBAIC0xOTAsOSArMjAxLDExIEBAIGRlZiB1c2VyKHVpZCk6CiAgICAgICAgIHVz ZXJzX2RhdGEgPSBbXQogICAgICAgICBmb3IgdSBpbiB1c2VyczoKICAgICAgICAgICAgIHVzZXJz X2RhdGEuYXBwZW5kKHsnaWQnOiB1LmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICd1c2VybmFtZSc6IHUudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2VtYWlsJzogdS5lbWFpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aXZl JzogdS5hY3RpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiB1LnJv bGVzWzBdLmlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiB1LnJvbGVz WzBdLmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRoX3NvdXJjZSc6IHUu YXV0aF9zb3VyY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQogCiAgICAgICAg IHJlcyA9IHVzZXJzX2RhdGEKQEAgLTIxNSwxMSArMjI4LDI5IEBAIGRlZiBjcmVhdGUoKToKICAg ICAgICAgcmVxdWVzdC5kYXRhLCBlbmNvZGluZz0ndXRmLTgnCiAgICAgKQogCi0gICAgZm9yIGYg aW4gKCdlbWFpbCcsICdyb2xlJywgJ2FjdGl2ZScsICduZXdQYXNzd29yZCcsICdjb25maXJtUGFz c3dvcmQnKToKKyAgICBzdGF0dXMsIHJlcyA9IGNyZWF0ZV91c2VyKGRhdGEpCisKKyAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICByZXNwb25zZT1yZXMs CisgICAgICAgIHN0YXR1cz0yMDAKKyAgICApCisKKworZGVmIGNyZWF0ZV91c2VyKGRhdGEpOgor ICAgIGlmICdhdXRoX3NvdXJjZScgaW4gZGF0YSBhbmQgZGF0YVsnYXV0aF9zb3VyY2UnXSAhPSAn aW50ZXJuYWwnOgorICAgICAgICByZXFfcGFyYW1zID0gKCd1c2VybmFtZScsICdyb2xlJywgJ2Fj dGl2ZScsICdhdXRoX3NvdXJjZScpCisgICAgZWxzZToKKyAgICAgICAgcmVxX3BhcmFtcyA9ICgn ZW1haWwnLCAncm9sZScsICdhY3RpdmUnLCAnbmV3UGFzc3dvcmQnLAorICAgICAgICAgICAgICAg ICAgICAgICdjb25maXJtUGFzc3dvcmQnKQorCisgICAgZm9yIGYgaW4gcmVxX3BhcmFtczoKICAg ICAgICAgaWYgZiBpbiBkYXRhIGFuZCBkYXRhW2ZdICE9ICcnOgogICAgICAgICAgICAgY29udGlu dWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBiYWRfcmVxdWVzdChlcnJvcm1z Zz1fKCJNaXNzaW5nIGZpZWxkOiAnezB9JyIuZm9ybWF0KGYpKSkKKyAgICAgICAgICAgIHJldHVy biBGYWxzZSwgXygiTWlzc2luZyBmaWVsZDogJ3swfSciLmZvcm1hdChmKSkKIAogICAgIHRyeToK ICAgICAgICAgbmV3X2RhdGEgPSB2YWxpZGF0ZV91c2VyKGRhdGEpCkBAIC0yMjgsMTMgKzI1OSwy MyBAQCBkZWYgY3JlYXRlKCk6CiAgICAgICAgICAgICBuZXdfZGF0YVsncm9sZXMnXSA9IFtSb2xl LnF1ZXJ5LmdldChuZXdfZGF0YVsncm9sZXMnXSldCiAKICAgICBleGNlcHQgRXhjZXB0aW9uIGFz IGU6Ci0gICAgICAgIHJldHVybiBiYWRfcmVxdWVzdChlcnJvcm1zZz1fKHN0cihlKSkpCisgICAg ICAgIHJldHVybiBGYWxzZSwgc3RyKGUpCiAKICAgICB0cnk6Ci0gICAgICAgIHVzciA9IFVzZXIo ZW1haWw9bmV3X2RhdGFbJ2VtYWlsJ10sCisKKyAgICAgICAgdXNlcm5hbWUgPSBuZXdfZGF0YVsn dXNlcm5hbWUnXSBpZiAndXNlcm5hbWUnIGluIG5ld19kYXRhIFwKKyAgICAgICAgICAgIGVsc2Ug bmV3X2RhdGFbJ2VtYWlsJ10KKyAgICAgICAgZW1haWwgPSBuZXdfZGF0YVsnZW1haWwnXSBpZiAn ZW1haWwnIGluIG5ld19kYXRhIGVsc2UgTm9uZQorICAgICAgICBwYXNzd29yZCA9IG5ld19kYXRh WydwYXNzd29yZCddIGlmICdwYXNzd29yZCcgaW4gbmV3X2RhdGEgZWxzZSBOb25lCisgICAgICAg IGF1dGhfc291cmNlID0gbmV3X2RhdGFbJ2F1dGhfc291cmNlJ10gaWYgJ2F1dGhfc291cmNlJyBp biBuZXdfZGF0YSBcCisgICAgICAgICAgICBlbHNlIGN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVM VF9BVVRIX1NPVVJDRQorCisgICAgICAgIHVzciA9IFVzZXIodXNlcm5hbWU9dXNlcm5hbWUsCisg ICAgICAgICAgICAgICAgICAgZW1haWw9ZW1haWwsCiAgICAgICAgICAgICAgICAgICAgcm9sZXM9 bmV3X2RhdGFbJ3JvbGVzJ10sCiAgICAgICAgICAgICAgICAgICAgYWN0aXZlPW5ld19kYXRhWydh Y3RpdmUnXSwKLSAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1uZXdfZGF0YVsncGFzc3dvcmQn XSkKKyAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1wYXNzd29yZCwKKyAgICAgICAgICAgICAg ICAgICBhdXRoX3NvdXJjZT1hdXRoX3NvdXJjZSkKICAgICAgICAgZGIuc2Vzc2lvbi5hZGQodXNy KQogICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgICAgICMgQWRkIGRlZmF1bHQgc2Vy dmVyIGdyb3VwIGZvciBuZXcgdXNlci4KQEAgLTI0MiwxOCArMjgzLDE1IEBAIGRlZiBjcmVhdGUo KToKICAgICAgICAgZGIuc2Vzc2lvbi5hZGQoc2VydmVyX2dyb3VwKQogICAgICAgICBkYi5zZXNz aW9uLmNvbW1pdCgpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKyAgICAgICAgcmV0dXJuIEZh bHNlLCBzdHIoZSkKIAotICAgIHJlcyA9IHsnaWQnOiB1c3IuaWQsCi0gICAgICAgICAgICdlbWFp bCc6IHVzci5lbWFpbCwKLSAgICAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCi0gICAgICAg ICAgICdyb2xlJzogdXNyLnJvbGVzWzBdLmlkCi0gICAgICAgICAgIH0KLQotICAgIHJldHVybiBh amF4X3Jlc3BvbnNlKAotICAgICAgICByZXNwb25zZT1yZXMsCi0gICAgICAgIHN0YXR1cz0yMDAK LSAgICApCisgICAgcmV0dXJuIFRydWUsIHsKKyAgICAgICAgJ2lkJzogdXNyLmlkLAorICAgICAg ICAndXNlcm5hbWUnOiB1c3IudXNlcm5hbWUsCisgICAgICAgICdlbWFpbCc6IHVzci5lbWFpbCwK KyAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCisgICAgICAgICdyb2xlJzogdXNyLnJvbGVz WzBdLmlkCisgICAgfQogCiAKIEBibHVlcHJpbnQucm91dGUoCkBAIC0zMzcsOSArMzc1LDExIEBA IGRlZiB1cGRhdGUodWlkKToKICAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQogCiAgICAgICAg IHJlcyA9IHsnaWQnOiB1c3IuaWQsCisgICAgICAgICAgICAgICAndXNlcm5hbWUnOiB1c3IudXNl cm5hbWUsCiAgICAgICAgICAgICAgICAnZW1haWwnOiB1c3IuZW1haWwsCiAgICAgICAgICAgICAg ICAnYWN0aXZlJzogdXNyLmFjdGl2ZSwKLSAgICAgICAgICAgICAgICdyb2xlJzogdXNyLnJvbGVz WzBdLmlkCisgICAgICAgICAgICAgICAncm9sZSc6IHVzci5yb2xlc1swXS5pZCwKKyAgICAgICAg ICAgICAgICdhdXRoX3NvdXJjZSc6IHVzci5hdXRoX3NvdXJjZQogICAgICAgICAgICAgICAgfQog CiAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKApAQCAtMzg0LDMgKzQyNCwxNyBAQCBkZWYg cm9sZShyaWQpOgogICAgICAgICByZXNwb25zZT1yZXMsCiAgICAgICAgIHN0YXR1cz0yMDAKICAg ICApCisKKworQGJsdWVwcmludC5yb3V0ZSgKKyAgICAnL2F1dGhfc291cmNlcy8nLCBtZXRob2Rz PVsnR0VUJ10sIGVuZHBvaW50PSdhdXRoX3NvdXJjZXMnCispCitkZWYgYXV0aF9zb3VyY2VzKCk6 CisgICAgc291cmNlcyA9IFtdCisgICAgZm9yIHNvdXJjZSBpbiBjdXJyZW50X2FwcC5QR0FETUlO X1NVUFBPUlRFRF9BVVRIX1NPVVJDRToKKyAgICAgICAgc291cmNlcy5hcHBlbmQoeydsYWJlbCc6 IHNvdXJjZSwgJ3ZhbHVlJzogc291cmNlfSkKKworICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICByZXNwb25zZT1zb3VyY2VzLAorICAgICAgICBzdGF0dXM9MjAwCisgICAgKQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2Vy X21hbmFnZW1lbnQuanMgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGlj L2pzL3VzZXJfbWFuYWdlbWVudC5qcwppbmRleCAyYjFlZDE3MjcuLjBlMTEwOGY1MiAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21h bmFnZW1lbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRp Yy9qcy91c2VyX21hbmFnZW1lbnQuanMKQEAgLTksMTIgKzksMTIgQEAKIAogZGVmaW5lKFsKICAg J3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2Nv cmUnLCAncGdhZG1pbi5hbGVydGlmeWpzJywKLSAgJ3BnYWRtaW4uYnJvd3NlcicsICdiYWNrYm9u ZScsICdiYWNrZ3JpZCcsICdiYWNrZm9ybScsICdwZ2FkbWluLmJyb3dzZXIubm9kZScsCisgICdw Z2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAnYmFja2Zvcm0nLCAncGdh ZG1pbi5icm93c2VyLm5vZGUnLCAncGdhZG1pbi5iYWNrZm9ybScsCiAgICdwZ2FkbWluLnVzZXJf bWFuYWdlbWVudC5jdXJyZW50X3VzZXInLAogICAnYmFja2dyaWQuc2VsZWN0LmFsbCcsICdiYWNr Z3JpZC5maWx0ZXInLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIGFs ZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwgQmFja2Zvcm0sCi0gIHBnTm9k ZSwgdXNlckluZm8KKyAgcGdOb2RlLCBwZ0JhY2tmb3JtLCB1c2VySW5mbwogKSB7CiAKICAgLy8g aWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCkBAIC0yNCw2 ICsyNCw4IEBAIGRlZmluZShbCiAKICAgdmFyIFVTRVJVUkwgPSB1cmxfZm9yKCd1c2VyX21hbmFn ZW1lbnQudXNlcnMnKSwKICAgICBST0xFVVJMID0gdXJsX2ZvcigndXNlcl9tYW5hZ2VtZW50LnJv bGVzJyksCisgICAgU09VUkNFVVJMID0gdXJsX2ZvcigndXNlcl9tYW5hZ2VtZW50LmF1dGhfc291 cmNlcycpLAorICAgIEFVVEhfT05MWV9JTlRFUk5BTCA9ICh1c2VySW5mb1snYXV0aF9zb3VyY2Vz J10ubGVuZ3RoICA9PSAxICYmIHVzZXJJbmZvWydhdXRoX3NvdXJjZXMnXS5pbmNsdWRlcygnaW50 ZXJuYWwnKSkgPyB0cnVlIDogZmFsc2UsCiAgICAgdXNlckZpbHRlciA9IGZ1bmN0aW9uKGNvbGxl Y3Rpb24pIHsKICAgICAgIHJldHVybiAobmV3IEJhY2tncmlkLkV4dGVuc2lvbi5DbGllbnRTaWRl RmlsdGVyKHsKICAgICAgICAgY29sbGVjdGlvbjogY29sbGVjdGlvbiwKQEAgLTMzLDYgKzM1LDQx IEBAIGRlZmluZShbCiAgICAgICB9KSk7CiAgICAgfTsKIAorICAvLyBJbnRlZ2VyIENlbGwgZm9y IENvbHVtbnMgTGVuZ3RoIGFuZCBQcmVjaXNpb24KKyAgdmFyIFBhc3N3b3JkRGVwQ2VsbCA9IEJh Y2tncmlkLkV4dGVuc2lvbi5QYXNzd29yZERlcENlbGwgPQorICAgIEJhY2tncmlkLkV4dGVuc2lv bi5QYXNzd29yZENlbGwuZXh0ZW5kKHsKKyAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKCkgewor ICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uUGFzc3dvcmRDZWxsLnByb3RvdHlwZS5pbml0aWFs aXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIEJhY2tncmlkLkV4dGVuc2lvbi5E ZXBlbmRlbnRDZWxsLnByb3RvdHlwZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CisgICAgICB9LAorICAgICAgZGVwZW5kZW50Q2hhbmdlZDogZnVuY3Rpb24gKCkgeworICAgICAg ICB0aGlzLiRlbC5lbXB0eSgpOworICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsLAorICAg ICAgICAgIGNvbHVtbiA9IHRoaXMuY29sdW1uLAorICAgICAgICAgIGVkaXRhYmxlID0gdGhpcy5j b2x1bW4uZ2V0KCdlZGl0YWJsZScpLAorICAgICAgICAgIGlzX2VkaXRhYmxlID0gXy5pc0Z1bmN0 aW9uKGVkaXRhYmxlKSA/ICEhZWRpdGFibGUuYXBwbHkoY29sdW1uLCBbbW9kZWxdKSA6ICEhZWRp dGFibGU7CisKKyAgICAgICAgaWYgKGlzX2VkaXRhYmxlKXsgdGhpcy4kZWwuYWRkQ2xhc3MoJ2Vk aXRhYmxlJyk7IH0KKyAgICAgICAgZWxzZSB7IHRoaXMuJGVsLnJlbW92ZUNsYXNzKCdlZGl0YWJs ZScpOyB9CisKKyAgICAgICAgdGhpcy5kZWxlZ2F0ZUV2ZW50cygpOworICAgICAgICByZXR1cm4g dGhpczsKKyAgICAgIH0sCisgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeworICAgICAgICBCYWNr Z3JpZC5OdW1iZXJDZWxsLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTsK KworICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLm1vZGVsLAorICAgICAgICAgIGNvbHVtbiA9IHRo aXMuY29sdW1uLAorICAgICAgICAgIGVkaXRhYmxlID0gdGhpcy5jb2x1bW4uZ2V0KCdlZGl0YWJs ZScpLAorICAgICAgICAgIGlzX2VkaXRhYmxlID0gXy5pc0Z1bmN0aW9uKGVkaXRhYmxlKSA/ICEh ZWRpdGFibGUuYXBwbHkoY29sdW1uLCBbbW9kZWxdKSA6ICEhZWRpdGFibGU7CisKKyAgICAgICAg aWYgKGlzX2VkaXRhYmxlKXsgdGhpcy4kZWwuYWRkQ2xhc3MoJ2VkaXRhYmxlJyk7IH0KKyAgICAg ICAgZWxzZSB7IHRoaXMuJGVsLnJlbW92ZUNsYXNzKCdlZGl0YWJsZScpOyB9CisgICAgICAgIHJl dHVybiB0aGlzOworICAgICAgfSwKKyAgICAgIHJlbW92ZTogQmFja2dyaWQuRXh0ZW5zaW9uLkRl cGVuZGVudENlbGwucHJvdG90eXBlLnJlbW92ZSwKKyAgICB9KTsKKwogICBwZ0Jyb3dzZXIuVXNl ck1hbmFnZW1lbnQgPSB7CiAgICAgaW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICBpZiAodGhpcy5p bml0aWFsaXplZCkKQEAgLTIzNSwyMCArMjcyLDY3IEBAIGRlZmluZShbCiAgICAgLy8gQ2FsbGJh Y2sgdG8gZHJhdyBVc2VyIE1hbmFnZW1lbnQgRGlhbG9nLgogICAgIHNob3dfdXNlcnM6IGZ1bmN0 aW9uKCkgewogICAgICAgaWYgKCF1c2VySW5mb1snaXNfYWRtaW4nXSkgcmV0dXJuOwotICAgICAg dmFyIFJvbGVzID0gW107CisgICAgICB2YXIgUm9sZXMgPSBbXSwKKyAgICAgICAgU291cmNlcyA9 IFtdOwogCiAgICAgICB2YXIgVXNlck1vZGVsID0gcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5k KHsKICAgICAgICAgICBpZEF0dHJpYnV0ZTogJ2lkJywKICAgICAgICAgICB1cmxSb290OiBVU0VS VVJMLAogICAgICAgICAgIGRlZmF1bHRzOiB7CiAgICAgICAgICAgICBpZDogdW5kZWZpbmVkLAor ICAgICAgICAgICAgdXNlcm5hbWU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGVtYWlsOiB1bmRl ZmluZWQsCiAgICAgICAgICAgICBhY3RpdmU6IHRydWUsCiAgICAgICAgICAgICByb2xlOiB1bmRl ZmluZWQsCiAgICAgICAgICAgICBuZXdQYXNzd29yZDogdW5kZWZpbmVkLAogICAgICAgICAgICAg Y29uZmlybVBhc3N3b3JkOiB1bmRlZmluZWQsCisgICAgICAgICAgICBhdXRoX3NvdXJjZTogJ2lu dGVybmFsJywKKyAgICAgICAgICAgIGF1dGhPbmx5SW50ZXJuYWw6IEFVVEhfT05MWV9JTlRFUk5B TCwKICAgICAgICAgICB9LAogICAgICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICAgIGlkOiAn dXNlcm5hbWUnLAorICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1VzZXJuYW1lJyksCisgICAg ICAgICAgICB0eXBlOiAndGV4dCcsCisgICAgICAgICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNp b24uU3RyaW5nRGVwQ2VsbCwKKyAgICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhf cGVyY2VudF8zMCcsCisgICAgICAgICAgICBkZXBzOiBbJ2lkJ10sCisgICAgICAgICAgICBlZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAobS5nZXQoJ2F1dGhPbmx5SW50 ZXJuYWwnKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgfSwgewor ICAgICAgICAgICAgaWQ6ICdhdXRoX3NvdXJjZScsCisgICAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnQXV0aGVudGljYXRpb24gU291cmNlJyksCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsCisg ICAgICAgICAgICBjb250cm9sOiAnU2VsZWN0MicsCisgICAgICAgICAgICB1cmw6IHVybF9mb3Io J3VzZXJfbWFuYWdlbWVudC5hdXRoX3NvdXJjZXMnKSwKKyAgICAgICAgICAgIGNlbGxIZWFkZXJD bGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcsCisgICAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICAgIGlmIChtLmdldCgnYXV0aE9ubHlJbnRlcm5hbCcpKSByZXR1 cm4gZmFsc2U7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICAgIGNlbGw6ICdTZWxlY3QyJywK KyAgICAgICAgICAgIHNlbGVjdDI6IHsKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2Us CisgICAgICAgICAgICAgIG9wZW5PbkVudGVyOiBmYWxzZSwKKyAgICAgICAgICAgICAgZmlyc3Rf ZW1wdHk6IGZhbHNlLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9wdGlvbnM6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICByZXR1cm4gU291cmNlczsKKyAgICAgICAgICAgIH0sCisg ICAgICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAobSBp bnN0YW5jZW9mIEJhY2tib25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBpZiAobS5pc05ldygpICYmICFt LmdldCgnYXV0aE9ubHlJbnRlcm5hbCcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7 CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sIHsKICAgICAgICAg ICAgIGlkOiAnZW1haWwnLAogICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VtYWlsJyksCiAg ICAgICAgICAgICB0eXBlOiAndGV4dCcsCkBAIC0yNTYsNiArMzQwLDggQEAgZGVmaW5lKFsKICAg ICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcsCiAgICAgICAg ICAgICBkZXBzOiBbJ2lkJ10sCiAgICAgICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgICBpZiAoIW0uZ2V0KCdhdXRoT25seUludGVybmFsJykpIHJldHVybiB0cnVl OworCiAgICAgICAgICAgICAgIGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuQ29sbGVjdGlvbikg ewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQpAQCAtMzI4 LDIzICs0MTQsMzggQEAgZGVmaW5lKFsKICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsCiAg ICAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsCiAgICAgICAgICAgICBjb250cm9sOiAnaW5wdXQn LAotICAgICAgICAgICAgY2VsbDogJ3Bhc3N3b3JkJywKKyAgICAgICAgICAgIGNlbGw6IFBhc3N3 b3JkRGVwQ2VsbCwKICAgICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2Vu dF8yMCcsCisgICAgICAgICAgICBkZXBzOiBbJ2F1dGhfc291cmNlJ10sCisgICAgICAgICAgICBl ZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAobS5nZXQoJ2F1dGhfc291 cmNlJykgPT0gJ2ludGVybmFsJykgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgfSwKICAgICAgICAgICB9LCB7CiAgICAgICAgICAgICBp ZDogJ2NvbmZpcm1QYXNzd29yZCcsCiAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQ29uZmly bSBwYXNzd29yZCcpLAogICAgICAgICAgICAgdHlwZTogJ3Bhc3N3b3JkJywKICAgICAgICAgICAg IGRpc2FibGVkOiBmYWxzZSwKICAgICAgICAgICAgIGNvbnRyb2w6ICdpbnB1dCcsCi0gICAgICAg ICAgICBjZWxsOiAncGFzc3dvcmQnLAorICAgICAgICAgICAgY2VsbDogUGFzc3dvcmREZXBDZWxs LAogICAgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzIwJywKKyAg ICAgICAgICAgIGVkaXRhYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgICAgIGlmIChtLmdl dCgnYXV0aF9zb3VyY2UnKSA9PSAnaW50ZXJuYWwnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAogICAgICAgICAgIH1dLAogICAg ICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgIHZhciBlcnJtc2cgPSBu dWxsLAogICAgICAgICAgICAgICBjaGFuZ2VkQXR0cnMgPSB0aGlzLmNoYW5nZWQgfHwge30sCiAg ICAgICAgICAgICAgIGVtYWlsX2ZpbHRlciA9IC9eW2EtekEtWjAtOS4hIyQlJicqK1wvPT9eX2B7 fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAtOS1dezAsNjF9W2EtekEtWjAtOV0pPyg/Olwu W2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2MX1bYS16QS1aMC05XSk/KSokLzsKIAotICAg ICAgICAgICAgaWYgKCgnZW1haWwnIGluIGNoYW5nZWRBdHRycyB8fCAhdGhpcy5pc05ldygpKSAm JiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZW1haWwnKSkgfHwKKyAgICAgICAgICAgIGlmICh0 aGlzLmdldCgnYXV0aF9zb3VyY2UnKSA9PSAnaW50ZXJuYWwnICYmICgnZW1haWwnIGluIGNoYW5n ZWRBdHRycyB8fCAhdGhpcy5pc05ldygpKSAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZW1h aWwnKSkgfHwKICAgICAgICAgICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnZW1haWwnKSkgfHwK ICAgICAgICAgICAgICAgICBTdHJpbmcodGhpcy5nZXQoJ2VtYWlsJykpLnJlcGxhY2UoL15ccyt8 XHMrJC9nLCAnJykgPT0gJycpKSB7CiAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ0Vt YWlsIGFkZHJlc3MgY2Fubm90IGJlIGVtcHR5LicpOwpAQCAtMzU4LDkgKzQ1OSw4IEBAIGRlZmlu ZShbCiAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2VtYWlsJywgZXJybXNnKTsK ICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0 aGlzLmdldCgnZW1haWwnKSAmJiB0aGlzLmNvbGxlY3Rpb24ud2hlcmUoewotICAgICAgICAgICAg ICAnZW1haWwnOiB0aGlzLmdldCgnZW1haWwnKSwKKyAgICAgICAgICAgICAgJ2VtYWlsJzogdGhp cy5nZXQoJ2VtYWlsJyksICdhdXRoX3NvdXJjZSc6ICdpbnRlcm5hbCcsCiAgICAgICAgICAgICB9 KS5sZW5ndGggPiAxKSB7Ci0KICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4dCgnVGhlIGVt YWlsIGFkZHJlc3MgJXMgYWxyZWFkeSBleGlzdHMuJywKICAgICAgICAgICAgICAgICB0aGlzLmdl dCgnZW1haWwnKQogICAgICAgICAgICAgICApOwpAQCAtMzg1LDExMSArNDg1LDExMyBAQCBkZWZp bmUoWwogICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3JvbGUnKTsKICAgICAg ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHRoaXMuaXNOZXcoKSkgewotICAgICAgICAgICAg ICAvLyBQYXNzd29yZCBpcyBjb21wdWxzb3J5IGZvciBuZXcgdXNlci4KLSAgICAgICAgICAgICAg aWYgKCduZXdQYXNzd29yZCcgaW4gY2hhbmdlZEF0dHJzICYmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCduZXdQYXNzd29yZCcpKSB8fAotICAgICAgICAgICAgICAgICAgXy5pc051bGwodGhpcy5n ZXQoJ25ld1Bhc3N3b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFz c3dvcmQnKSA9PSAnJykpIHsKLQotICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ1Bh c3N3b3JkIGNhbm5vdCBiZSBlbXB0eSBmb3IgdXNlciAlcy4nLAotICAgICAgICAgICAgICAgICAg KHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQotICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICBpZiAodGhpcy5nZXQoJ2F1dGhfc291cmNlJykgPT0gJ2ludGVybmFsJykgeworICAgICAgICAg ICAgICBpZiAodGhpcy5pc05ldygpKSB7CisgICAgICAgICAgICAgICAgLy8gUGFzc3dvcmQgaXMg Y29tcHVsc29yeSBmb3IgbmV3IHVzZXIuCisgICAgICAgICAgICAgICAgaWYgKCduZXdQYXNzd29y ZCcgaW4gY2hhbmdlZEF0dHJzICYmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduZXdQYXNzd29y ZCcpKSB8fAorICAgICAgICAgICAgICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnbmV3UGFzc3dv cmQnKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgPT0g JycpKSB7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduZXdQYXNzd29y ZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAgICAgICAgICAg ICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYK LSAgICAgICAgICAgICAgICAhXy5pc051bGwodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykpICYmCi0g ICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykubGVuZ3RoIDwgNikgeworICAg ICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4dCgnUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5 IGZvciB1c2VyICVzLicsCisgICAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8 fCAnJykKKyAgICAgICAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSBn ZXR0ZXh0KCdQYXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyBmb3IgdXNlciAl cy4nLAotICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQotICAgICAg ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduZXdQ YXNzd29yZCcsIGVycm1zZyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAg ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25ld1Bhc3N3 b3JkJykpICYmCisgICAgICAgICAgICAgICAgICAhXy5pc051bGwodGhpcy5nZXQoJ25ld1Bhc3N3 b3JkJykpICYmCisgICAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKS5sZW5n dGggPCA2KSB7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduZXdQYXNz d29yZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAgICAgICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ25l d1Bhc3N3b3JkJyk7Ci0gICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIGVycm1zZyA9 IGdldHRleHQoJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzIGZvciB1c2Vy ICVzLicsCisgICAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykKKyAg ICAgICAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgICAgaWYgKCdjb25maXJtUGFzc3dvcmQn IGluIGNoYW5nZWRBdHRycyAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY29uZmlybVBhc3N3 b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnY29uZmlybVBh c3N3b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgICB0aGlzLmdldCgnY29uZmlybVBhc3N3b3Jk JykgPT0gJycpKSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduZXdQ YXNzd29yZCcsIGVycm1zZyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAg ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ25ld1Bhc3N3b3JkJyk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAg ICAgZXJybXNnID0gZ2V0dGV4dCgnQ29uZmlybSBQYXNzd29yZCBjYW5ub3QgYmUgZW1wdHkgZm9y IHVzZXIgJXMuJywKLSAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykK LSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGlmICgnY29uZmlybVBhc3N3b3Jk JyBpbiBjaGFuZ2VkQXR0cnMgJiYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2NvbmZpcm1QYXNz d29yZCcpKSB8fAorICAgICAgICAgICAgICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgnY29uZmly bVBhc3N3b3JkJykpIHx8CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCdjb25maXJtUGFz c3dvcmQnKSA9PSAnJykpIHsKIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J2NvbmZpcm1QYXNzd29yZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm1z ZzsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwudW5zZXQoJ2NvbmZpcm1QYXNzd29yZCcpOwotICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdDb25maXJtIFBhc3N3b3JkIGNhbm5vdCBiZSBlbXB0 eSBmb3IgdXNlciAlcy4nLAorICAgICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2VtYWlsJykg fHwgJycpCisgICAgICAgICAgICAgICAgICApOwogCi0gICAgICAgICAgICAgIGlmICghIXRoaXMu Z2V0KCduZXdQYXNzd29yZCcpICYmICEhdGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpICYmCi0g ICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgIT0gdGhpcy5nZXQoJ2NvbmZp cm1QYXNzd29yZCcpKSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdj b25maXJtUGFzc3dvcmQnLCBlcnJtc2cpOworICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm1z ZzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgdGhpcy5lcnJv ck1vZGVsLnVuc2V0KCdjb25maXJtUGFzc3dvcmQnKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAg ICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdQYXNzd29yZHMgZG8gbm90IG1hdGNoIGZv ciB1c2VyICVzLicsCi0gICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2VtYWlsJykgfHwgJycp Ci0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBpZiAoISF0aGlzLmdldCgnbmV3 UGFzc3dvcmQnKSAmJiAhIXRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSAmJgorICAgICAgICAg ICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgIT0gdGhpcy5nZXQoJ2NvbmZpcm1QYXNz d29yZCcpKSB7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjb25maXJt UGFzc3dvcmQnLCBlcnJtc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0 KCdjb25maXJtUGFzc3dvcmQnKTsKLSAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ZXJybXNnID0gZ2V0dGV4dCgnUGFzc3dvcmRzIGRvIG5vdCBtYXRjaCBmb3IgdXNlciAlcy4nLAor ICAgICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2VtYWlsJykgfHwgJycpCisgICAgICAgICAg ICAgICAgICApOwogCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBpZiAoKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykpIHx8IF8uaXNOdWxsKHRoaXMuZ2V0 KCduZXdQYXNzd29yZCcpKSB8fAotICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3 b3JkJykgPT0gJycpICYmCi0gICAgICAgICAgICAgICAgKChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0 KCdjb25maXJtUGFzc3dvcmQnKSkgfHwgXy5pc051bGwodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29y ZCcpKSB8fAotICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpID09 ICcnKSkpIHsKLQotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmV3UGFz c3dvcmQnKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgPT0g JycpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsKLSAgICAgICAgICAgICAgICAgICAg J25ld1Bhc3N3b3JkJzogdW5kZWZpbmVkLAotICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjb25maXJtUGFzc3dvcmQnLCBlcnJtc2cp OworICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdjb25maXJtUGFz c3dvcmQnKTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ2NvbmZpcm1QYXNzd29yZCcpOwotICAgICAgICAgICAgICAgIGlmICh0aGlz LmdldCgnY29uZmlybVBhc3N3b3JkJykgPT0gJycpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMu c2V0KHsKLSAgICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1QYXNzd29yZCc6IHVuZGVmaW5lZCwK LSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg fSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYKLSAg ICAgICAgICAgICAgICAhXy5pc051bGwodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykpICYmCi0gICAg ICAgICAgICAgICAgIXRoaXMuZ2V0KCduZXdQYXNzd29yZCcpID09ICcnICYmCi0gICAgICAgICAg ICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykubGVuZ3RoIDwgNikgeworICAgICAgICAgICAg ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICgoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn bmV3UGFzc3dvcmQnKSkgfHwgXy5pc051bGwodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykpIHx8Cisg ICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpID09ICcnKSAmJgorICAg ICAgICAgICAgICAgICAgKChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQn KSkgfHwgXy5pc051bGwodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpKSB8fAorICAgICAgICAg ICAgICAgICAgICB0aGlzLmdldCgnY29uZmlybVBhc3N3b3JkJykgPT0gJycpKSkgeworCisgICAg ICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ25ld1Bhc3N3b3JkJyk7CisgICAg ICAgICAgICAgICAgICBpZiAodGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgPT0gJycpIHsKKyAgICAg ICAgICAgICAgICAgICAgdGhpcy5zZXQoeworICAgICAgICAgICAgICAgICAgICAgICduZXdQYXNz d29yZCc6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg ICAgICB9CiAKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdQYXNzd29yZCBtdXN0 IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyBmb3IgdXNlciAlcy4nLAotICAgICAgICAgICAgICAg ICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQotICAgICAgICAgICAgICAgICk7CisgICAgICAg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2NvbmZpcm1QYXNzd29yZCcpOworICAg ICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSA9PSAnJykgewor ICAgICAgICAgICAgICAgICAgICB0aGlzLnNldCh7CisgICAgICAgICAgICAgICAgICAgICAgJ2Nv bmZpcm1QYXNzd29yZCc6IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5l ZCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYKKyAgICAgICAgICAgICAgICAgICFfLmlzTnVs bCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYKKyAgICAgICAgICAgICAgICAgICF0aGlzLmdl dCgnbmV3UGFzc3dvcmQnKSA9PSAnJyAmJgorICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25l d1Bhc3N3b3JkJykubGVuZ3RoIDwgNikgewogCi0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1v ZGVsLnNldCgnbmV3UGFzc3dvcmQnLCBlcnJtc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBl cnJtc2c7Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn Y29uZmlybVBhc3N3b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgXy5pc051bGwodGhpcy5nZXQo J2NvbmZpcm1QYXNzd29yZCcpKSB8fAotICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCdjb25maXJt UGFzc3dvcmQnKSA9PSAnJykgeworICAgICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4dCgn UGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCA2IGNoYXJhY3RlcnMgZm9yIHVzZXIgJXMuJywKKyAg ICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQorICAgICAgICAgICAg ICAgICAgKTsKIAotICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ0NvbmZpcm0gUGFz c3dvcmQgY2Fubm90IGJlIGVtcHR5IGZvciB1c2VyICVzLicsCi0gICAgICAgICAgICAgICAgICAo dGhpcy5nZXQoJ2VtYWlsJykgfHwgJycpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25ld1Bhc3N3b3JkJywgZXJybXNnKTsKKyAgICAg ICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChf LmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSkgfHwKKyAgICAgICAgICAg ICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSkgfHwKKyAgICAgICAg ICAgICAgICAgIHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSA9PSAnJykgewogCi0gICAgICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnY29uZmlybVBhc3N3b3JkJywgZXJybXNnKTsK LSAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAgICAgICB9IGVsc2UgaWYg KCEhdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgJiYgISF0aGlzLmdldCgnY29uZmlybVBhc3N3b3Jk JykgJiYKLSAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSAhPSB0aGlzLmdl dCgnY29uZmlybVBhc3N3b3JkJykpIHsKKyAgICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRl eHQoJ0NvbmZpcm0gUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5IGZvciB1c2VyICVzLicsCisgICAg ICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykKKyAgICAgICAgICAgICAg ICAgICk7CiAKLSAgICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdQYXNzd29yZHMgZG8g bm90IG1hdGNoIGZvciB1c2VyICVzLicsCi0gICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2Vt YWlsJykgfHwgJycpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2NvbmZpcm1QYXNzd29yZCcsIGVycm1zZyk7CisgICAgICAgICAgICAg ICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmdl dCgnbmV3UGFzc3dvcmQnKSAmJiAhIXRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSAmJgorICAg ICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgIT0gdGhpcy5nZXQoJ2NvbmZp cm1QYXNzd29yZCcpKSB7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdj b25maXJtUGFzc3dvcmQnLCBlcnJtc2cpOwotICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7 Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCduZXdQYXNzd29yZCcpOwotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51 bnNldCgnY29uZmlybVBhc3N3b3JkJyk7CisgICAgICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0 ZXh0KCdQYXNzd29yZHMgZG8gbm90IG1hdGNoIGZvciB1c2VyICVzLicsCisgICAgICAgICAgICAg ICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykKKyAgICAgICAgICAgICAgICAgICk7CisK KyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NvbmZpcm1QYXNzd29yZCcs IGVycm1zZyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ25l d1Bhc3N3b3JkJyk7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2Nv bmZpcm1QYXNzd29yZCcpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC03MTYsNyArODE4LDEwIEBA IGRlZmluZShbCiAgICAgICAgICAgICAgICAgICBzYXZlVXNlcjogZnVuY3Rpb24obSkgewogICAg ICAgICAgICAgICAgICAgICB2YXIgZCA9IG0udG9KU09OKHRydWUpOwogCi0gICAgICAgICAgICAg ICAgICAgIGlmIChtLmlzTmV3KCkgJiYgKCFtLmdldCgnZW1haWwnKSB8fCAhbS5nZXQoJ3JvbGUn KSB8fAorICAgICAgICAgICAgICAgICAgICBpZihtLmlzTmV3KCkgJiYgbS5nZXQoJ2F1dGhPbmx5 SW50ZXJuYWwnKSA9PT0gZmFsc2UgJiYKKyAgICAgICAgICAgICAgICAgICAgICghbS5nZXQoJ3Vz ZXJuYW1lJykgfHwgIW0uZ2V0KCdhdXRoX3NvdXJjZScpIHx8ICFtLmdldCgncm9sZScpKSApIHsK KyAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdhdXRoT25seUludGVybmFsJykgPT09IHRy dWUgJiYgICghbS5nZXQoJ2VtYWlsJykgfHwgIW0uZ2V0KCdyb2xlJykgfHwKICAgICAgICAgICAg ICAgICAgICAgICAgICFtLmdldCgnbmV3UGFzc3dvcmQnKSB8fCAhbS5nZXQoJ2NvbmZpcm1QYXNz d29yZCcpIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICBtLmdldCgnbmV3UGFzc3dvcmQnKSAh PSBtLmdldCgnY29uZmlybVBhc3N3b3JkJykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgLy8g TmV3IHVzZXIgbW9kZWwgaXMgdmFsaWQgYnV0IHBhcnRpYWxseSBmaWxsZWQgc28gcmV0dXJuIHdp dGhvdXQgc2F2aW5nLgpAQCAtNzQxLDcgKzg0Niw3IEBAIGRlZmluZShbCiAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgbS5zdGFydE5ld1Nlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdVc2VyIFwnJXNcJyBzYXZlZC4nLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG0uZ2V0KCdlbWFpbCcpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbS5nZXQoJ3VzZXJuYW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgICAg KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAg ZXJyb3I6IGZ1bmN0aW9uKHJlcywganF4aHIpIHsKQEAgLTc5Nyw2ICs5MDIsMjMgQEAgZGVmaW5l KFsKICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICAgfSk7CiAKKyAg ICAgICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICB1cmw6IFNPVVJDRVVSTCwKKyAg ICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLAorICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxz ZSwKKyAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMp IHsKKyAgICAgICAgICAgICAgICAgIFNvdXJjZXMgPSByZXM7CisgICAgICAgICAgICAgICAgfSkK KyAgICAgICAgICAgICAgICAuZmFpbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIHNl dFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0 KAorICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ0Vycm9yJyksCisgICAgICAgICAgICAg ICAgICAgICAgZ2V0dGV4dCgnQ2Fubm90IGxvYWQgdXNlciBTb3VyY2VzLicpCisgICAgICAgICAg ICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICB9LCAxMDApOworICAgICAgICAgICAgICAg IH0pOworCiAgICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3ID0gbmV3IEJhY2tncmlk LkdyaWQoewogICAgICAgICAgICAgICAgIHJvdzogVXNlclJvdywKICAgICAgICAgICAgICAgICBj b2x1bW5zOiBncmlkU2NoZW1hLmNvbHVtbnMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdlbWVudC9qcy9jdXJyZW50X3Vz ZXIuanMgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJf bWFuYWdlbWVudC9qcy9jdXJyZW50X3VzZXIuanMKaW5kZXggY2ZjYjc3ODEzLi5jNmUyMTAzNDMg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC90ZW1wbGF0ZXMv dXNlcl9tYW5hZ2VtZW50L2pzL2N1cnJlbnRfdXNlci5qcworKysgYi93ZWIvcGdhZG1pbi90b29s cy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdlbWVudC9qcy9jdXJyZW50X3Vz ZXIuanMKQEAgLTE0LDYgKzE0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLnVzZXJfbWFuYWdlbWVudC5j dXJyZW50X3VzZXInLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICdpc19hZG1pbic6IHt7IGlz X2FkbWluIH19LAogICAgICAgICAnbmFtZSc6ICd7eyBuYW1lIH19JywKICAgICAgICAgJ2FsbG93 X3NhdmVfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3Bhc3N3b3JkIH19LAotICAgICAgICAnYWxs b3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3R1bm5lbF9wYXNzd29yZCB9 fQorICAgICAgICAnYWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3R1 bm5lbF9wYXNzd29yZCB9fSwKKyAgICAgICAgJ2F1dGhfc291cmNlcyc6IHt7IGF1dGhfc291cmNl cyB9fQogICAgIH0KIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3Rf dXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weSBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0 aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKaW5kZXggYmIzZjdkYTcwLi40MmFlNTEwYjUgMTAwNjQ0 Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQu cHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVu dC5weQpAQCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0Ns aWVudCk6CiAgICAgICAgICAgICBjc3JmX3Rva2VuID0gc2VsZi5nZW5lcmF0ZV9jc3JmX3Rva2Vu KCkKIAogICAgICAgICByZXMgPSBzZWxmLnBvc3QoCi0gICAgICAgICAgICAnL2xvZ2luJywgZGF0 YT1kaWN0KAorICAgICAgICAgICAgJy9hdXRoZW50aWNhdGUvbG9naW4nLCBkYXRhPWRpY3QoCiAg ICAgICAgICAgICAgICAgZW1haWw9ZW1haWwsIHBhc3N3b3JkPXBhc3N3b3JkLAogICAgICAgICAg ICAgICAgIGNzcmZfdG9rZW49Y3NyZl90b2tlbiwKICAgICAgICAgICAgICksCkBAIC0xMjAsNSAr MTIwLDUgQEAgY2xhc3MgVGVzdENsaWVudCh0ZXN0aW5nLkZsYXNrQ2xpZW50KToKICAgICAgICAg cmV0dXJuIHJlcwogCiAgICAgZGVmIGxvZ291dChzZWxmKToKLSAgICAgICAgcmVzID0gc2VsZi5n ZXQoJy9sb2dvdXQnLCBmb2xsb3dfcmVkaXJlY3RzPUZhbHNlKQorICAgICAgICByZXMgPSBzZWxm LmdldCgnL2xvZ291dD9uZXh0PS9icm93c2VyLycsIGZvbGxvd19yZWRpcmVjdHM9RmFsc2UpCiAg ICAgICAgIHNlbGYuY3NyZl90b2tlbiA9IE5vbmUKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9u L3J1bnRlc3RzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKaW5kZXggZWY1YjQ2MzI4 Li5mY2Y3M2E4ODYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBi L3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0xMTgsNiArMTE4LDExIEBAIGFwcC5QR0FE TUlOX1JVTlRJTUUgPSBUcnVlCiBpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKICAgICBh cHAuUEdBRE1JTl9SVU5USU1FID0gRmFsc2UKIGFwcC5jb25maWdbJ1dURl9DU1JGX0VOQUJMRUQn XSA9IFRydWUKKworIyBBdXRoZW50aWNhdGlvbiBzb3VyY2VzCithcHAuUEdBRE1JTl9ERUZBVUxU X0FVVEhfU09VUkNFID0gJ2ludGVybmFsJworYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VS Q0UgPSAnbGRhcCcKKwogYXBwLnRlc3RfY2xpZW50X2NsYXNzID0gVGVzdENsaWVudAogdGVzdF9j bGllbnQgPSBhcHAudGVzdF9jbGllbnQoKQogdGVzdF9jbGllbnQuc2V0QXBwKGFwcCkKQEAgLTE5 NSw2ICsyMDAsOCBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICAgICAg ICAgImJyb3dzZXIudGVzdHMudGVzdF9sb2dpbiIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0 cy50ZXN0X2xvZ291dCIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X3Jlc2V0X3Bh c3N3b3JkIiwKKyAgICAgICAgICAgICJicm93c2VyLnRlc3RzLnRlc3RfbGRhcF9sb2dpbiIsCisg ICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xkYXBfd2l0aF9tb2NraW5nIiwKICAgICAg ICAgXSkKICAgICBpZiBhcmd1bWVudHNbJ2V4Y2x1ZGUnXSBpcyBub3QgTm9uZToKICAgICAgICAg ZXhjbHVkZV9wa2dzICs9IGFyZ3VtZW50c1snZXhjbHVkZSddLnNwbGl0KCcsJykKZGlmZiAtLWdp dCBhL3dlYi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIvcmVncmVzc2lvbi90 ZXN0X2NvbmZpZy5qc29uLmluCmluZGV4IDE1YjEzM2ExOS4uMGExNTFlNjMzIDEwMDY0NAotLS0g YS93ZWIvcmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9u L3Rlc3RfY29uZmlnLmpzb24uaW4KQEAgLTExLDYgKzExLDQ5IEBACiAgICAgImxvZ2luX3Bhc3N3 b3JkIjogIlBBU1NXT1JEIiwKICAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUkBFWEFNUExFLkNP TSIKICAgfSwKKyAgInBnQWRtaW40X2xkYXBfY3JlZGVudGlhbHMiOiB7CisgICAgImxvZ2luX3Bh c3N3b3JkIjogIlBBU1NXT1JEIiwKKyAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUk5BTUUiCisg IH0sCisgICJsZGFwX2NvbmZpZyI6IFsKKyAgICB7CisgICAgImxkYXAiOiB7CisgICAgICAibmFt ZSI6ICJMZGFwIHNjZW5hcmlvIG5hbWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNT L0hPU1ROQU1FOjM4OSIsCisgICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFy Y2hfYmFzZV9kbiI6ICJTRUFSQ0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJ RCIsCisgICAgICAic2VhcmNoX2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVz ZV9zdGFydHRscyI6IGZhbHNlLAorICAgICAgImNhX2NlcnRfZmlsZSI6ICIiLAorICAgICAgImNl cnRfZmlsZSI6ICIiLAorICAgICAgImtleV9maWxlIjogIiIKKyAgICB9LAorICAgICJsZGFwX3dp dGhfc3NsIjogeworICAgICAgIm5hbWUiOiAiTGRhcCBzY2VuYXJpbyBuYW1lIgorICAgICAgInVy aSI6ICJsZGFwczovL0lQLUFERFJFU1MvSE9TVE5BTUU6NjM2IiwKKyAgICAgICJiYXNlX2RuIjog IkJBU0UtRE4iLAorICAgICAgInNlYXJjaF9iYXNlX2RuIjogIlNFQVJDSC1CQVNFLUROIiwKKyAg ICAgICJ1c2VybmFtZV9hdHIiOiAiVUlEIiwKKyAgICAgICJzZWFyY2hfZmlsdGVyIjogIihvYmpl Y3RjbGFzcz0qKSIsCisgICAgICAidXNlX3N0YXJ0dGxzIjogZmFsc2UsCisgICAgICAiY2FfY2Vy dF9maWxlIjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAgICAia2V5X2ZpbGUiOiAi IgorICAgIH0sCisgICAgImxkYXBfd2l0aF90bHMiOiB7CisgICAgICAibmFtZSI6ICJMZGFwIHNj ZW5hcmlvIG5hbWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNTL0hPU1ROQU1FOjM4 OSIsCisgICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFyY2hfYmFzZV9kbiI6 ICJTRUFSQ0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJRCIsCisgICAgICAi c2VhcmNoX2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVzZV9zdGFydHRscyI6 IHRydWUsCisgICAgICAiY2FfY2VydF9maWxlIjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIs CisgICAgICAia2V5X2ZpbGUiOiAiIgorICAgIH0KKyAgfV0sCiAgICJzZXJ2ZXJfZ3JvdXAiOiAx LAogICAic2VydmVyX2NyZWRlbnRpYWxzIjogWwogICAgIHsK --0000000000001c0a3f05a24ecf4c--