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 1kzwQP-0007ox-Kb for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 06:48:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1kzwQO-0001HX-JR for pgadmin-hackers@arkaria.postgresql.org; Thu, 14 Jan 2021 06:48:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kzwQO-0001HQ-AH for pgadmin-hackers@lists.postgresql.org; Thu, 14 Jan 2021 06:48:04 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1kzwQK-0003Yo-V2 for pgadmin-hackers@postgresql.org; Thu, 14 Jan 2021 06:48:03 +0000 Received: by mail-lj1-x22e.google.com with SMTP id p13so5291012ljg.2 for ; Wed, 13 Jan 2021 22:48:00 -0800 (PST) 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=qcWNfW8nIxBEjjsvgvOvULHte/oNKiCroJESzMhSsco=; b=YjSwDZc6ETZ8GUCIxeckHcI4WS2w3kWkvazZGSAbYvCyk83xKxEdjTxJtdqxC6blFO MZnzSeosRiugeS0uINcBvdsW2gjPtiZD3wwxplNHCNOgRGtUS9k5Nyvb2S+NToG2TA+D ovTjHRBauep6C52r88owIeHPXLngb1O13fWPoRqmLQkuadDnTFfZ9Ln5GyCaKQw0KaJ9 k/Mg7rYbRx02lzJa/HKu9dxcdRIInb9AgiwexdsqOcrwJV/sb2LtL1+TAFv63DcUKorg Tpk5K11Bl1S2i1M8s6CE/dlE0qpqwRUV/ED05HzIzglDKQyb4q7gG+xiA+4k486lyhoK 8neQ== 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=qcWNfW8nIxBEjjsvgvOvULHte/oNKiCroJESzMhSsco=; b=QVQx78XYUkiUVfK+SMrdhcOJZN36hHAtvrwzevGFsm4jF5fKQs8LClqrG0e8k4ZXD/ jt461bLeOTcbBWWMeZmEeipBPOs4sDXT9t4idds5AtKG5jv2DvDM4DiUtHhAShf0Ku47 mAFazb0LXIezOWlAuu4anNR5HzF+8mhGEPvF0WgQFyJX92aAEibC9gUjZm0NgqGMviPU ZIGhKBgikAv27j9BzgGv1ZZ7Dg/sTgf/TUbwq6a5wMrvIkLZjtxwUvdED3kJSJ4UUeP2 ykQtoQjXtsb+Z/pIhx7bU4hf2XNX63xBDa5cSRisuP4yAERnE9TcLDolBINfbkWzFy6I U0+A== X-Gm-Message-State: AOAM530i75tH76qJqij5INZAP/ShEGkKBVyMC4gWIop4epSXpCUJ/tat GHKRy+JYg4FuneAFHKItx0/xPBsesN+575SSRoiLprpP0gLQGr4EzcVxel55RXOz5aqXH5TW8ua Iat8gggOizAfXFuXBttiW5awsJoHZkKxawjfRJLBoWgEc4PlFM/0BIGAOrZ/KtDU724KFL7B8OP WbV22ugtfBYf9bosx6xI/PEhsrhDUNyBx9+Ivf6vjfsHbI7x8dmK1Yixah0g== X-Google-Smtp-Source: ABdhPJxshEg5KFQIUmJUsc8Cs30Q10CKEhVsO3rHrbP6SkqXIiWxKu+UNiFjpaup9xVBtMYDeUiYfR1WxDxKvGIif/M= X-Received: by 2002:a2e:7806:: with SMTP id t6mr2648921ljc.298.1610606879725; Wed, 13 Jan 2021 22:47:59 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Thu, 14 Jan 2021 12:17:57 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 5457 - Kerberos Authentication - Phase 1 To: Akshay Joshi Cc: Aditya Toshniwal , pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000f08e5e05b8d6a287" X-CLOUD-SEC-AV-Info: enterprisedb,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 --000000000000f08e5e05b8d6a287 Content-Type: multipart/alternative; boundary="000000000000f08e5d05b8d6a285" --000000000000f08e5d05b8d6a285 Content-Type: text/plain; charset="UTF-8" Hi, Please find the attached updated patch. Thanks, Khushboo On Thu, Jan 14, 2021 at 12:00 PM Akshay Joshi wrote: > Hi Khushboo > > Seems you have attached the wrong patch. Please send the updated patch. > > On Wed, Jan 13, 2021 at 2:35 PM Khushboo Vashi < > khushboo.vashi@enterprisedb.com> wrote: > >> Hi, >> >> Please find the attached updated patch. >> >> Thanks, >> Khushboo >> >> On Fri, Jan 1, 2021 at 1:07 PM Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Khushboo, >>> >>> I've just done the code review. Apart from below, the patch looks good >>> to me: >>> >>> 1) Move the auth source constants -ldap, kerberos out of app object. >>> They don't belong there. You can create the constants somewhere else and >>> import them. >>> >>> +app.PGADMIN_LDAP_AUTH_SOURCE = 'ldap' >>> >>> +app.PGADMIN_KERBEROS_AUTH_SOURCE = 'kerberos' >>> >>> >>> Done >> >>> 2) Are we going to make kerberos default for wsgi ? >>> >>> *--- a/web/pgAdmin4.wsgi* >>> >>> *+++ b/web/pgAdmin4.wsgi* >>> >>> @@ -24,6 +24,10 @@ builtins.SERVER_MODE = True >>> >>> >>> >>> import config >>> >>> >>> >>> + >>> >>> +config.AUTHENTICATION_SOURCES = ['kerberos'] >>> >>> +config.KERBEROS_AUTO_CREATE_USER = True >>> >>> + >>> >>> >>> Removed, it was only for testing. >> >>> 3) Remove the commented code. >>> >>> + # if self.form.data['email'] and >>> self.form.data['password'] and \ >>> >>> + # source.get_source_name() ==\ >>> >>> + # current_app.PGADMIN_KERBEROS_AUTH_SOURCE: >>> >>> + # continue >>> >>> >>> Removed the comment, it is actually the part of the code. >> >>> 4) KERBEROSAuthentication could be KerberosAuthentication >>> >>> class KERBEROSAuthentication(BaseAuthentication): >>> >>> >>> Done. >> >>> 5) You can use the constants (ldap, kerberos) you had defined when >>> creating a user. >>> >>> + 'auth_source': 'kerberos' >>> >>> >>> Done. >> >>> 6) The below URLs belong to the authenticate module. Currently they are >>> in the browser module. I would also suggest rephrasing the URL from >>> /kerberos_login to /login/kerberos. Same for logout. >>> >> Done the rephrasing as well as moved to the authentication module. >> >> >>> Also, even though the method GET works, we should use the POST method >>> for login and DELETE for logout. >>> >> Kerberos_login just redirects the page to the actual login, so no need >> for the POST method. >> I followed the same method for the Logout user we have used for the >> normal user. >> >> >>> +@blueprint.route("/kerberos_login", >>> >>> + endpoint="kerberos_login", methods=["GET"]) >>> >>> >>> +@blueprint.route("/kerberos_logout", >>> >>> + endpoint="kerberos_logout", methods=["GET"]) >>> >>> >>> >>> >> >>> On Tue, Dec 22, 2020 at 6:07 PM Akshay Joshi < >>> akshay.joshi@enterprisedb.com> wrote: >>> >>>> Hi Aditya >>>> >>>> Can you please do the code review? >>>> >>>> On Tue, Dec 22, 2020 at 3:44 PM Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find the attached patch to support Kerberos Authentication in >>>>> pgAdmin RM 5457. >>>>> >>>>> The patch introduces a new pluggable option for Kerberos >>>>> authentication, using SPNEGO to forward kerberos tickets through a browser >>>>> which will bypass the login page entirely if the Kerberos Authentication >>>>> succeeds. >>>>> >>>>> The complete setup of the Kerberos Server + pgAdmin Server + Client is >>>>> documented in a separate file and attached. >>>>> >>>>> This patch also includes the small fix related to logging #5829 >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>> >>>> >>>> -- >>>> *Thanks & Regards* >>>> *Akshay Joshi* >>>> *pgAdmin Hacker | Principal Software Architect* >>>> *EDB Postgres * >>>> >>>> *Mobile: +91 976-788-8246* >>>> >>> >>> >>> -- >>> Thanks, >>> Aditya Toshniwal >>> pgAdmin hacker | Sr. Software Engineer | *edbpostgres.com* >>> >>> "Don't Complain about Heat, Plant a TREE" >>> >> > > -- > *Thanks & Regards* > *Akshay Joshi* > *pgAdmin Hacker | Principal Software Architect* > *EDB Postgres * > > *Mobile: +91 976-788-8246* > --000000000000f08e5d05b8d6a285 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached= updated patch.

Thanks,
Khushboo
On Thu, = Jan 14, 2021 at 12:00 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi=C2=A0Khush= boo

Seems you have attached the wrong patch. Please send= the updated patch.

On Wed, Jan 13, 2021 at 2:35 PM Khushboo Vashi <= ;khush= boo.vashi@enterprisedb.com> wrote:
Hi,

Please find the attached updated patch.

Th= anks,
Khushboo

On Fri, Jan 1, 2021 at 1:07 PM Aditya Toshniw= al <aditya.toshniwal@enterprisedb.com> wrote:
Hi Khushboo,

I'= ve just done the code review. Apart from below, the patch looks good to me:=

1) Move the auth source constants -ldap, k= erberos out of app object. They don't belong there. You can create the = constants somewhere=C2=A0else and import them.

+app.PGADMIN_LDAP_AUTH_SOURCE =3D 'ldap'

+app.PGADMIN_KERBEROS_AUTH_SOURCE =3D 'kerberos'


Done=C2= =A0

2) A= re we going to make kerberos default for wsgi ?

--- a/web/pgAdmin4.wsgi

+++ b/web/pgAdmin4.wsgi

@@ -24,6 +24,10 @@<= /span> builtins.= SERVER_MODE =3D True

=C2=A0

=C2=A0import config

=C2=A0

+

+config.AUTHENTICATION_SOURCES =3D ['kerberos']

+config.KERBEROS_AUTO_C= REATE_USER =3D True

+


Removed, it was only for testing.=C2=A0

3) Remove the commented code.

+=C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 # if self.form.data['email'] and self.form= .data['password'] and \

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 source.get_source_name() =3D=3D\=

+=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 =C2=A0 =C2=A0 = current_app.PGADMIN_KERBEROS_AUTH_SOURCE:

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 # =C2=A0 =C2=A0 continue


=
Removed the comment, it is actually the part = of the code.=C2=A0
<= div dir=3D"ltr">

class KERBEROSAuthentication(BaseAuthentication):


Done.=C2=A0
=

5) You can use the = constants (ldap, kerberos) you had defined when creating a user.

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 'auth_source': 'kerberos'


Done.=C2=A0=

6) The below URL= s belong to the authenticate module. Currently they are in the browser modu= le. I would also suggest rephrasing the URL from /kerberos_login to /login/= kerberos. Same for logout.
Done the re= phrasing as well as moved to the authentication module.
=C2=A0
= Also, even though the method GET works, = we should use the POST method for login and DELETE for logout.
=
Kerberos_login just redirects the page to the actua= l login, so no need for the POST method.
I followed the same meth= od for the Logout user we have used for the normal user.
=C2=A0

+@blueprint.route("/ke= rberos_login",

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_login", methods=3D["G= ET"])


+@blueprint.route("/kerberos_logout",

<= p style=3D"font-family:Menlo;margin:0px;font-variant-numeric:normal;font-va= riant-east-asian:normal;font-stretch:normal;font-size:16px;line-height:norm= al;color:rgb(57,192,38)">

+ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 endpoint=3D"kerberos_logout", methods=3D["= GET"])



=C2=A0
On Tue, = Dec 22, 2020 at 6:07 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrot= e:
Hi Aditya

Can you please do the code review?



--


--
Thanks,
Aditya Toshniwal=
pgAdmin hacker=C2=A0| Sr. Software Engineer | edbpostgres.com
&quo= t;Don't Complain about Heat, Plant a TREE"


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246

--000000000000f08e5d05b8d6a285-- --000000000000f08e5e05b8d6a287 Content-Type: application/octet-stream; name="RM_5457_v2.patch" Content-Disposition: attachment; filename="RM_5457_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kjwhqkti0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IDJiMzE0ZmU2 OS4uZDAyYTkxMzgwIDEwMDY0NAotLS0gYS93ZWIvY29uZmlnLnB5CisrKyBiL3dlYi9jb25maWcu cHkKQEAgLTUzNSw3ICs1MzUsNyBAQCBFTkhBTkNFRF9DT09LSUVfUFJPVEVDVElPTiA9IFRydWUK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAKICMgRGVmYXVsdCBzZXR0aW5nIGlzIGludGVybmFsCi0jIEV4 dGVybmFsIFN1cHBvcnRlZCBTb3VyY2VzOiBsZGFwCisjIEV4dGVybmFsIFN1cHBvcnRlZCBTb3Vy Y2VzOiBsZGFwLCBrZXJiZXJvcwogIyBNdWx0aXBsZSBhdXRoZW50aWNhdGlvbiBjYW4gYmUgYWNo aWV2ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0bwogIyBbJ2xkYXAnLCAnaW50ZXJuYWwn XS4gcGdBZG1pbiB3aWxsIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB3aXRoIGxkYXAgZmlyc3QsCiAj IGluIGNhc2Ugb2YgZmFpbHVyZSBpbnRlcm5hbCBhdXRoZW50aWNhdGlvbiB3aWxsIGJlIGRvbmUu CkBAIC02MTgsNiArNjE4LDI2IEBAIExEQVBfQ0FfQ0VSVF9GSUxFID0gJycKIExEQVBfQ0VSVF9G SUxFID0gJycKIExEQVBfS0VZX0ZJTEUgPSAnJwogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIEtl cmJlcm9zIENvbmZpZ3VyYXRpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK0tSQl9BUFBfSE9TVF9O QU1FID0gREVGQVVMVF9TRVJWRVIKKworIyBJZiB0aGUgZGVmYXVsdF9rZXl0YWJfbmFtZSBpcyBu b3Qgc2V0IGluIGtyYjUuY29uZiBvcgorIyB0aGUgS1JCX0tUTkFNRSBlbnZpcm9ubWVudCB2YXJp YWJsZSBpcyBub3Qgc2V0IHRoZW4sIGV4cGxpY2l0bHkgc2V0CisjIHRoZSBLZXl0YWIgZmlsZQor CitLUkJfS1ROQU1FID0gJzxLUkI1X0tFWVRBQl9GSUxFPicKKworIyBBZnRlciBrZXJiZXJvcyBh dXRoZW50aWNhdGlvbiwgdXNlciB3aWxsIGJlIGFkZGVkIGludG8gdGhlIFNRTGl0ZSBkYXRhYmFz ZQorIyBhdXRvbWF0aWNhbGx5LCBpZiBzZXQgdG8gVHJ1ZS4KKyMgU2V0IGl0IHRvIEZhbHNlLCBp ZiB1c2VyIHNob3VsZCBub3QgYmUgYWRkZWQgYXV0b21hdGljYWxseSwKKyMgaW4gdGhpcyBjYXNl IEFkbWluIGhhcyB0byBhZGQgdGhlIHVzZXIgbWFudWFsbHkgaW4gdGhlIFNRTGl0ZSBkYXRhYmFz ZS4KKworS1JCX0FVVE9fQ1JFQVRFX1VTRVIgPSBUcnVlCisKICMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAj IExvY2FsIGNvbmZpZyBzZXR0aW5ncwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL3dl Yi9wZ0FkbWluNC5weSBiL3dlYi9wZ0FkbWluNC5weQppbmRleCBmZjljMDBmNTAuLjE0YWZlN2Rj MSAxMDA2NDQKLS0tIGEvd2ViL3BnQWRtaW40LnB5CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAt MzUsNiArMzUsOSBAQCBlbHNlOgogaW1wb3J0IGNvbmZpZwogZnJvbSBwZ2FkbWluIGltcG9ydCBj cmVhdGVfYXBwCiBmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IHVfZW5jb2RlLCBmc19lbmNvZGlu ZywgZmlsZV9xdW90ZQorZnJvbSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgSU5URVJO QUwsIExEQVAsXAorICAgIEtFUkJFUk9TLCBTVVBQT1JURURfQVVUSF9TT1VSQ0VTCisKICMgR2V0 IHRoZSBjb25maWcgZGF0YWJhc2Ugc2NoZW1hIHZlcnNpb24uIFdlIHN0b3JlIHRoaXMgaW4gcGdh ZG1pbi5tb2RlbAogIyBhcyBpdCB0dXJucyBvdXQgdGhhdCBwdXR0aW5nIGl0IGluIHRoZSBjb25m aWcgZmlsZXMgaXNuJ3QgYSBncmVhdCBpZGVhCiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IFND SEVNQV9WRVJTSU9OCkBAIC05NiwxNSArOTksMTEgQEAgaWYgY29uZmlnLlNFUlZFUl9NT0RFOgog ICAgIGFwcC53c2dpX2FwcCA9IFJldmVyc2VQcm94aWVkKGFwcC53c2dpX2FwcCkKIAogIyBBdXRo ZW50aWNhdGlvbiBzb3VyY2VzCi1hcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFID0gJ2lu dGVybmFsJwotYXBwLlBHQURNSU5fU1VQUE9SVEVEX0FVVEhfU09VUkNFID0gWydpbnRlcm5hbCcs ICdsZGFwJ10KKwogaWYgbGVuKGNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTKSA+IDA6CiAg ICAgYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UgPSBjb25maWcuQVVUSEVOVElDQVRJ T05fU09VUkNFU1swXQogZWxzZToKLSAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJD RSA9IGFwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UKLQotYXBwLmxvZ2dlci5kZWJ1ZygK LSAgICAiQXV0aGVudGljYXRpb24gU291cmNlOiAlcyIgJSBhcHAuUEdBRE1JTl9ERUZBVUxUX0FV VEhfU09VUkNFKQorICAgIGFwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09VUkNFID0gSU5URVJO QUwKIAogIyBTdGFydCB0aGUgd2ViIHNlcnZlci4gVGhlIHBvcnQgbnVtYmVyIHNob3VsZCBoYXZl IGFscmVhZHkgYmVlbiBzZXQgYnkgdGhlCiAjIHJ1bnRpbWUgaWYgd2UncmUgcnVubmluZyBpbiBk ZXNrdG9wIG1vZGUsIG90aGVyd2lzZSB3ZSdsbCBqdXN0IHVzZSB0aGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKaW5kZXggZGFl MGI4Y2QyLi5hNzMzMzUzNzEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL19faW5pdF9fLnB5Cisr KyBiL3dlYi9wZ2FkbWluL19faW5pdF9fLnB5CkBAIC00Myw2ICs0Myw3IEBAIGZyb20gcGdhZG1p bi51dGlscy5hamF4IGltcG9ydCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIG1ha2VfanNvbl9yZXNw b25zZQogZnJvbSBwZ2FkbWluLnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKIGZyb20g cGdhZG1pbiBpbXBvcnQgYXV0aGVudGljYXRlCiBmcm9tIHBnYWRtaW4udXRpbHMuc2VjdXJpdHlf aGVhZGVycyBpbXBvcnQgU2VjdXJpdHlIZWFkZXJzCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3Rh bnRzIGltcG9ydCBLRVJCRVJPUwogCiAjIEV4cGxpY2l0bHkgc2V0IHRoZSBtaW1lLXR5cGVzIHNv IHRoYXQgYSBjb3JydXB0ZWQgd2luZG93cyByZWdpc3RyeSB3aWxsIG5vdAogIyBhZmZlY3QgcGdB ZG1pbiA0IHRvIGJlIGxvYWQgcHJvcGVybHkuIFRoaXMgd2lsbCBhdm9pZCB0aGUgaXNzdWVzIHRo YXQgbWF5CkBAIC02NzQsNiArNjc1LDcgQEAgZGVmIGNyZWF0ZV9hcHAoYXBwX25hbWU9Tm9uZSk6 CiAKICAgICAgICAgIyBDaGVjayB0aGUgYXV0aCBrZXkgaXMgdmFsaWQsIGlmIGl0J3Mgc2V0LCBh bmQgd2UncmUgbm90IGluIHNlcnZlcgogICAgICAgICAjIG1vZGUsIGFuZCBpdCdzIG5vdCBhIGhl bHAgZmlsZSByZXF1ZXN0LgorCiAgICAgICAgIGlmIG5vdCBjb25maWcuU0VSVkVSX01PREUgYW5k IGFwcC5QR0FETUlOX0lOVF9LRVkgIT0gJycgYW5kICgoCiAgICAgICAgICAgICAna2V5JyBub3Qg aW4gcmVxdWVzdC5hcmdzIG9yCiAgICAgICAgICAgICByZXF1ZXN0LmFyZ3NbJ2tleSddICE9IGFw cC5QR0FETUlOX0lOVF9LRVkpIGFuZApAQCAtNjk1LDExICs2OTcsMTkgQEAgZGVmIGNyZWF0ZV9h cHAoYXBwX25hbWU9Tm9uZSk6CiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGFi b3J0KDQwMSkKICAgICAgICAgICAgIGxvZ2luX3VzZXIodXNlcikKKyAgICAgICAgZWxpZiBjb25m aWcuU0VSVkVSX01PREUgYW5kXAorICAgICAgICAgICAgICAgIGFwcC5QR0FETUlOX0VYVEVSTkFM X0FVVEhfU09VUkNFID09XAorICAgICAgICAgICAgICAgIEtFUkJFUk9TIGFuZCBcCisgICAgICAg ICAgICAgICAgbm90IGN1cnJlbnRfdXNlci5pc19hdXRoZW50aWNhdGVkIGFuZCBcCisgICAgICAg ICAgICAgICAgcmVxdWVzdC5lbmRwb2ludCBpbiAoJ3JlZGlyZWN0cy5pbmRleCcsICdzZWN1cml0 eS5sb2dpbicpOgorICAgICAgICAgICAgcmV0dXJuIGF1dGhlbnRpY2F0ZS5sb2dpbigpCiAKICAg ICAgICAgIyBpZiB0aGUgc2VydmVyIGlzIHJlc3RhcnRlZCB0aGUgaW4gbWVtb3J5IGtleSB3aWxs IGJlIGxvc3QKICAgICAgICAgIyBidXQgdGhlIHVzZXIgc2Vzc2lvbiBtYXkgc3RpbGwgYmUgYWN0 aXZlLiBMb2dvdXQgdGhlIHVzZXIKICAgICAgICAgIyB0byBnZXQgdGhlIGtleSBhZ2FpbiB3aGVu IGxvZ2luCiAgICAgICAgIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSBhbmQgY3VycmVudF91c2VyLmlz X2F1dGhlbnRpY2F0ZWQgYW5kIFwKKyAgICAgICAgICAgICAgICBhcHAuUEdBRE1JTl9FWFRFUk5B TF9BVVRIX1NPVVJDRSAhPSBcCisgICAgICAgICAgICAgICAgS0VSQkVST1MgYW5kIFwKICAgICAg ICAgICAgICAgICBjdXJyZW50X2FwcC5rZXlNYW5hZ2VyLmdldCgpIGlzIE5vbmUgYW5kIFwKICAg ICAgICAgICAgICAgICByZXF1ZXN0LmVuZHBvaW50IG5vdCBpbiAoJ3NlY3VyaXR5LmxvZ2luJywg J3NlY3VyaXR5LmxvZ291dCcpOgogICAgICAgICAgICAgbG9nb3V0X3VzZXIoKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vYXV0 aGVudGljYXRlL19faW5pdF9fLnB5CmluZGV4IDdlZGU3M2NkOC4uMWZkYjY2Y2Y3IDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRt aW4vYXV0aGVudGljYXRlL19faW5pdF9fLnB5CkBAIC0xMSwxNiArMTEsMjEgQEAKIAogaW1wb3J0 IGZsYXNrCiBpbXBvcnQgcGlja2xlCi1mcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcCwgZmxh c2gKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBwLCBmbGFzaCwgUmVzcG9uc2UsIHJlcXVl c3QsIHVybF9mb3IsXAorICAgIHJlbmRlcl90ZW1wbGF0ZQogZnJvbSBmbGFza19iYWJlbGV4IGlt cG9ydCBnZXR0ZXh0CiBmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIKIGZy b20gZmxhc2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0eSwgX2N0eAogZnJvbSBmbGFz a19zZWN1cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBnZXRfcG9zdF9sb2dvdXRfcmVk aXJlY3QsIFwKLSAgICBnZXRfcG9zdF9sb2dpbl9yZWRpcmVjdAorICAgIGdldF9wb3N0X2xvZ2lu X3JlZGlyZWN0LCBsb2dvdXRfdXNlcgorCiBmcm9tIGZsYXNrIGltcG9ydCBzZXNzaW9uCiAKIGlt cG9ydCBjb25maWcKIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdBZG1pbk1vZHVsZQorZnJv bSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgS0VSQkVST1MKK2Zyb20gcGdhZG1pbi51 dGlscy5jc3JmIGltcG9ydCBwZ0NTUkZQcm90ZWN0CisKIGZyb20gLnJlZ2lzdHJ5IGltcG9ydCBB dXRoU291cmNlUmVnaXN0cnkKIAogTU9EVUxFX05BTUUgPSAnYXV0aGVudGljYXRlJwpAQCAtMjgs MTIgKzMzLDM0IEBAIE1PRFVMRV9OQU1FID0gJ2F1dGhlbnRpY2F0ZScKIAogY2xhc3MgQXV0aGVu dGljYXRlTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgIGRlZiBnZXRfZXhwb3NlZF91cmxfZW5k cG9pbnRzKHNlbGYpOgotICAgICAgICByZXR1cm4gWydhdXRoZW50aWNhdGUubG9naW4nXQorICAg ICAgICByZXR1cm4gWydhdXRoZW50aWNhdGUubG9naW4nLAorICAgICAgICAgICAgICAgICdhdXRo ZW50aWNhdGUua2VyYmVyb3NfbG9naW4nLAorICAgICAgICAgICAgICAgICdhdXRoZW50aWNhdGUu a2VyYmVyb3NfbG9nb3V0J10KIAogCiBibHVlcHJpbnQgPSBBdXRoZW50aWNhdGVNb2R1bGUoTU9E VUxFX05BTUUsIF9fbmFtZV9fLCBzdGF0aWNfdXJsX3BhdGg9JycpCiAKIAorQGJsdWVwcmludC5y b3V0ZSgiL2xvZ2luL2tlcmJlcm9zIiwKKyAgICAgICAgICAgICAgICAgZW5kcG9pbnQ9ImtlcmJl cm9zX2xvZ2luIiwgbWV0aG9kcz1bIkdFVCJdKQorQHBnQ1NSRlByb3RlY3QuZXhlbXB0CitkZWYg a2VyYmVyb3NfbG9naW4oKToKKyAgICBsb2dvdXRfdXNlcigpCisgICAgcmV0dXJuIFJlc3BvbnNl KHJlbmRlcl90ZW1wbGF0ZSgiYnJvd3Nlci9rZXJiZXJvc19sb2dpbi5odG1sIiwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luX3VybD11cmxfZm9yKCdzZWN1cml0eS5s b2dpbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKKworCitAYmx1 ZXByaW50LnJvdXRlKCIvbG9nb3V0L2tlcmJlcm9zIiwKKyAgICAgICAgICAgICAgICAgZW5kcG9p bnQ9ImtlcmJlcm9zX2xvZ291dCIsIG1ldGhvZHM9WyJHRVQiXSkKK0BwZ0NTUkZQcm90ZWN0LmV4 ZW1wdAorZGVmIGtlcmJlcm9zX2xvZ291dCgpOgorICAgIGxvZ291dF91c2VyKCkKKyAgICByZXR1 cm4gUmVzcG9uc2UocmVuZGVyX3RlbXBsYXRlKCJicm93c2VyL2tlcmJlcm9zX2xvZ291dC5odG1s IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luX3VybD11cmxfZm9y KCdzZWN1cml0eS5sb2dpbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KSkKKworCiBAYmx1ZXByaW50LnJvdXRlKCcvbG9naW4nLCBlbmRwb2ludD0nbG9naW4nLCBtZXRo b2RzPVsnR0VUJywgJ1BPU1QnXSkKIGRlZiBsb2dpbigpOgogICAgICIiIgpAQCAtNTYsMTUgKzgz LDI0IEBAIGRlZiBsb2dpbigpOgogICAgIGlmIHN0YXR1czoKICAgICAgICAgIyBMb2dpbiB0aGUg dXNlcgogICAgICAgICBzdGF0dXMsIG1zZyA9IGF1dGhfb2JqLmxvZ2luKCkKKyAgICAgICAgY3Vy cmVudF9hdXRoX29iaiA9IGF1dGhfb2JqLmFzX2RpY3QoKQogICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgaWYgY3VycmVudF9hdXRoX29ialsnY3VycmVudF9zb3VyY2UnXSA9PVwK KyAgICAgICAgICAgICAgICAgICAgS0VSQkVST1M6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZs YXNrLnJlZGlyZWN0KCd7MH0/bmV4dD17MX0nLmZvcm1hdCh1cmxfZm9yKAorICAgICAgICAgICAg ICAgICAgICAnYXV0aGVudGljYXRlLmtlcmJlcm9zX2xvZ2luJyksIHVybF9mb3IoJ2Jyb3dzZXIu aW5kZXgnKSkpCisKICAgICAgICAgICAgIGZsYXNoKGdldHRleHQobXNnKSwgJ2RhbmdlcicpCiAg ICAgICAgICAgICByZXR1cm4gZmxhc2sucmVkaXJlY3QoZ2V0X3Bvc3RfbG9nb3V0X3JlZGlyZWN0 KCkpCiAKLSAgICAgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ10gPSBhdXRo X29iai5hc19kaWN0KCkKKyAgICAgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2Jq J10gPSBjdXJyZW50X2F1dGhfb2JqCiAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRf cG9zdF9sb2dpbl9yZWRpcmVjdCgpKQogCisgICAgZWxpZiBpc2luc3RhbmNlKG1zZywgUmVzcG9u c2UpOgorICAgICAgICByZXR1cm4gbXNnCiAgICAgZmxhc2goZ2V0dGV4dChtc2cpLCAnZGFuZ2Vy JykKLSAgICByZXR1cm4gZmxhc2sucmVkaXJlY3QoZ2V0X3Bvc3RfbG9nb3V0X3JlZGlyZWN0KCkp CisgICAgcmVzcG9uc2UgPSBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3Qo KSkKKyAgICByZXR1cm4gcmVzcG9uc2UKIAogCiBjbGFzcyBBdXRoU291cmNlTWFuYWdlcigpOgpA QCAtNzUsNiArMTExLDcgQEAgY2xhc3MgQXV0aFNvdXJjZU1hbmFnZXIoKToKICAgICAgICAgc2Vs Zi5hdXRoX3NvdXJjZXMgPSBzb3VyY2VzCiAgICAgICAgIHNlbGYuc291cmNlID0gTm9uZQogICAg ICAgICBzZWxmLnNvdXJjZV9mcmllbmRseV9uYW1lID0gTm9uZQorICAgICAgICBzZWxmLmN1cnJl bnRfc291cmNlID0gTm9uZQogCiAgICAgZGVmIGFzX2RpY3Qoc2VsZik6CiAgICAgICAgICIiIgpA QCAtODQsOSArMTIxLDE3IEBAIGNsYXNzIEF1dGhTb3VyY2VNYW5hZ2VyKCk6CiAgICAgICAgIHJl cyA9IGRpY3QoKQogICAgICAgICByZXNbJ3NvdXJjZV9mcmllbmRseV9uYW1lJ10gPSBzZWxmLnNv dXJjZV9mcmllbmRseV9uYW1lCiAgICAgICAgIHJlc1snYXV0aF9zb3VyY2VzJ10gPSBzZWxmLmF1 dGhfc291cmNlcworICAgICAgICByZXNbJ2N1cnJlbnRfc291cmNlJ10gPSBzZWxmLmN1cnJlbnRf c291cmNlCiAKICAgICAgICAgcmV0dXJuIHJlcwogCisgICAgZGVmIHNldF9jdXJyZW50X3NvdXJj ZShzZWxmLCBzb3VyY2UpOgorICAgICAgICBzZWxmLmN1cnJlbnRfc291cmNlID0gc291cmNlCisK KyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ2V0X2N1cnJlbnRfc291cmNlKHNlbGYsIHNvdXJjZSk6 CisgICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRfc291cmNlCisKICAgICBkZWYgc2V0X3NvdXJj ZShzZWxmLCBzb3VyY2UpOgogICAgICAgICBzZWxmLnNvdXJjZSA9IHNvdXJjZQogCkBAIC0xMTUs OSArMTYwLDMzIEBAIGNsYXNzIEF1dGhTb3VyY2VNYW5hZ2VyKCk6CiAgICAgICAgIG1zZyA9IE5v bmUKICAgICAgICAgZm9yIHNyYyBpbiBzZWxmLmF1dGhfc291cmNlczoKICAgICAgICAgICAgIHNv dXJjZSA9IGdldF9hdXRoX3NvdXJjZXMoc3JjKQorICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJBdXRoZW50aWNhdGlvbiBpbml0aWF0ZWQgdmlh IHNvdXJjZTogJXMiICUKKyAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0X3NvdXJjZV9uYW1lKCkp CisKKyAgICAgICAgICAgIGlmIHNlbGYuZm9ybS5kYXRhWydlbWFpbCddIGFuZCBzZWxmLmZvcm0u ZGF0YVsncGFzc3dvcmQnXSBhbmQgXAorICAgICAgICAgICAgICAgICAgICBzb3VyY2UuZ2V0X3Nv dXJjZV9uYW1lKCkgPT0gS0VSQkVST1M6CisgICAgICAgICAgICAgICAgY29udGludWUKKwogICAg ICAgICAgICAgc3RhdHVzLCBtc2cgPSBzb3VyY2UuYXV0aGVudGljYXRlKHNlbGYuZm9ybSkKKwor ICAgICAgICAgICAgIyBXaGVuIHNlcnZlciBzZW5kcyBVbmF1dGhvcml6ZWQgaGVhZGVyIHRvIGdl dCB0aGUgdGlja2V0IG92ZXIgSFRUUAorICAgICAgICAgICAgIyBPUiBXaGVuIGtlcmJlcm9zIGF1 dGhlbnRpY2F0aW9uIGZhaWxlZCB3aGlsZSBhY2Nlc3NpbmcgcGdhZG1pbiwKKyAgICAgICAgICAg ICMgd2UgbmVlZCB0byBicmVhayB0aGUgbG9vcCBhcyBubyBuZWVkIHRvIGF1dGhlbnRpY2F0ZSBm dXJ0aGVyCisgICAgICAgICAgICAjIGV2ZW4gaWYgdGhlIGF1dGhlbnRpY2F0aW9uIHNvdXJjZXMg c2V0IHRvIG11bHRpcGxlCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgIGlmIChoYXNhdHRyKG1zZywgJ3N0YXR1cycpIGFuZAorICAgICAgICAgICAgICAgICAgICBt c2cuc3RhdHVzID09ICc0MDEgVU5BVVRIT1JJWkVEJykgb3JcCisgICAgICAgICAgICAgICAgICAg ICAgICAoc291cmNlLmdldF9zb3VyY2VfbmFtZSgpID09CisgICAgICAgICAgICAgICAgICAgICAg ICAgS0VSQkVST1MgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5tZXRob2Qg PT0gJ0dFVCcpOgorICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAgICAgICAgICBpZiBz dGF0dXM6CiAgICAgICAgICAgICAgICAgc2VsZi5zZXRfc291cmNlKHNvdXJjZSkKKyAgICAgICAg ICAgICAgICBzZWxmLnNldF9jdXJyZW50X3NvdXJjZShzb3VyY2UuZ2V0X3NvdXJjZV9uYW1lKCkp CisgICAgICAgICAgICAgICAgaWYgbXNnIGlzIG5vdCBOb25lIGFuZCAndXNlcm5hbWUnIGluIG1z ZzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mb3JtLl9maWVsZHNbJ2VtYWlsJ10uZGF0YSA9 IG1zZ1sndXNlcm5hbWUnXQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXMsIG1zZwogICAg ICAgICByZXR1cm4gc3RhdHVzLCBtc2cKIApAQCAtMTI1LDYgKzE5NCw5IEBAIGNsYXNzIEF1dGhT b3VyY2VNYW5hZ2VyKCk6CiAgICAgICAgIHN0YXR1cywgbXNnID0gc2VsZi5zb3VyY2UubG9naW4o c2VsZi5mb3JtKQogICAgICAgICBpZiBzdGF0dXM6CiAgICAgICAgICAgICBzZWxmLnNldF9zb3Vy Y2VfZnJpZW5kbHlfbmFtZShzZWxmLnNvdXJjZS5nZXRfZnJpZW5kbHlfbmFtZSgpKQorICAgICAg ICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmRlYnVnKAorICAgICAgICAgICAgICAgICJBdXRoZW50 aWNhdGlvbiBhbmQgTG9naW4gc3VjY2Vzc2Z1bGx5IGRvbmUgdmlhIHNvdXJjZSA6ICVzIiAlCisg ICAgICAgICAgICAgICAgc2VsZi5zb3VyY2UuZ2V0X3NvdXJjZV9uYW1lKCkpCiAgICAgICAgIHJl dHVybiBzdGF0dXMsIG1zZwogCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0 ZS9pbnRlcm5hbC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9pbnRlcm5hbC5weQppbmRl eCA4MDRhNDg3YzcuLjQ4NGE3ZmRjYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYXV0aGVudGlj YXRlL2ludGVybmFsLnB5CisrKyBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9pbnRlcm5hbC5w eQpAQCAtMTgsNiArMTgsNyBAQCBmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRleHQKIGZy b20gLnJlZ2lzdHJ5IGltcG9ydCBBdXRoU291cmNlUmVnaXN0cnkKIGZyb20gcGdhZG1pbi5tb2Rl bCBpbXBvcnQgVXNlcgogZnJvbSBwZ2FkbWluLnV0aWxzLnZhbGlkYXRpb25fdXRpbHMgaW1wb3J0 IHZhbGlkYXRlX2VtYWlsCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBJTlRF Uk5BTAogCiAKIEBzaXguYWRkX21ldGFjbGFzcyhBdXRoU291cmNlUmVnaXN0cnkpCkBAIC0zMSw3 ICszMiwxMSBAQCBjbGFzcyBCYXNlQXV0aGVudGljYXRpb24ob2JqZWN0KToKICAgICAgICAgJ0lO VkFMSURfRU1BSUwnOiBnZXR0ZXh0KCdFbWFpbC9Vc2VybmFtZSBpcyBub3QgdmFsaWQnKQogICAg IH0KIAotICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVm IGdldF9zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgcGFzcworCisgICAgQGFic3RyYWN0bWV0 aG9kCiAgICAgZGVmIGdldF9mcmllbmRseV9uYW1lKHNlbGYpOgogICAgICAgICBwYXNzCiAKQEAg LTgyLDYgKzg3LDkgQEAgY2xhc3MgQmFzZUF1dGhlbnRpY2F0aW9uKG9iamVjdCk6CiAKIGNsYXNz IEludGVybmFsQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKIAorICAgIGRlZiBn ZXRfc291cmNlX25hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBJTlRFUk5BTAorCiAgICAgZGVm IGdldF9mcmllbmRseV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gZ2V0dGV4dCgiaW50ZXJu YWwiKQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUva2VyYmVyb3MucHkg Yi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUva2VyYmVyb3MucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi42MjlmYzdiZjcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9hdXRoZW50aWNhdGUva2VyYmVyb3MucHkKQEAgLTAsMCArMSwxMzggQEAKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXByaW50IG1vZHVsZSBpbXBsZW1lbnRpbmcgdGhl IFNwbmVnby9LZXJiZXJvcyBhdXRoZW50aWNhdGlvbi4iIiIKKworaW1wb3J0IGJhc2U2NAoraW1w b3J0IGdzc2FwaQorZnJvbSBvcyBpbXBvcnQgZW52aXJvbgorCitmcm9tIHdlcmt6ZXVnLmRhdGFz dHJ1Y3R1cmVzIGltcG9ydCBIZWFkZXJzCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRl eHQKK2Zyb20gZmxhc2sgaW1wb3J0IEZsYXNrLCByZXF1ZXN0LCBSZXNwb25zZSwgc2Vzc2lvbixc CisgICAgY3VycmVudF9hcHAsIHJlbmRlcl90ZW1wbGF0ZSwgZmxhc2gKKworaW1wb3J0IGNvbmZp ZworZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBVc2VyLCBTZXJ2ZXJHcm91cCwgZGIsIFJvbGUK K2Zyb20gcGdhZG1pbi50b29scy51c2VyX21hbmFnZW1lbnQgaW1wb3J0IGNyZWF0ZV91c2VyCitm cm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBLRVJCRVJPUworCitmcm9tIGZsYXNr X3NlY3VyaXR5LnZpZXdzIGltcG9ydCBfc2VjdXJpdHksIF9jb21taXQsIF9jdHgKK2Zyb20gd2Vy a3pldWcuZGF0YXN0cnVjdHVyZXMgaW1wb3J0IE11bHRpRGljdAorCitmcm9tIC5pbnRlcm5hbCBp bXBvcnQgQmFzZUF1dGhlbnRpY2F0aW9uCisKKworIyBTZXQgdGhlIEtlcmJlcm9zIGNvbmZpZyBm aWxlCitpZiBjb25maWcuS1JCX0tUTkFNRSBhbmQgY29uZmlnLktSQl9LVE5BTUUgIT0gJzxLUkI1 X0tFWVRBQl9GSUxFPic6CisgICAgZW52aXJvblsnS1JCNV9LVE5BTUUnXSA9IGNvbmZpZy5LUkJf S1ROQU1FCisKKworY2xhc3MgS2VyYmVyb3NBdXRoZW50aWNhdGlvbihCYXNlQXV0aGVudGljYXRp b24pOgorCisgICAgZGVmIGdldF9zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIEtF UkJFUk9TCisKKyAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6CisgICAgICAgIHJldHVy biBnZXR0ZXh0KCJrZXJiZXJvcyIpCisKKyAgICBkZWYgdmFsaWRhdGUoc2VsZiwgZm9ybSk6Cisg ICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYsIGZybSk6Cisg ICAgICAgIHJldHZhbCA9IFtUcnVlLCBOb25lXQorICAgICAgICBuZWdvdGlhdGUgPSBGYWxzZQor ICAgICAgICBoZWFkZXJzID0gSGVhZGVycygpCisgICAgICAgIGF1dGhvcml6YXRpb24gPSByZXF1 ZXN0LmhlYWRlcnMuZ2V0KCJBdXRob3JpemF0aW9uIiwgTm9uZSkKKyAgICAgICAgZm9ybV9jbGFz cyA9IF9zZWN1cml0eS5sb2dpbl9mb3JtCisKKyAgICAgICAgaWYgcmVxdWVzdC5qc29uOgorICAg ICAgICAgICAgZm9ybSA9IGZvcm1fY2xhc3MoTXVsdGlEaWN0KHJlcXVlc3QuanNvbikpCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBmb3JtID0gZm9ybV9jbGFzcygpCisKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgYXV0aG9yaXphdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAg ICAgICBhdXRoX2hlYWRlciA9IGF1dGhvcml6YXRpb24uc3BsaXQoKQorICAgICAgICAgICAgICAg IGlmIGF1dGhfaGVhZGVyWzBdID09ICdOZWdvdGlhdGUnOgorICAgICAgICAgICAgICAgICAgICBz dGF0dXMsIG5lZ290aWF0ZSA9IHNlbGYubmVnb3RpYXRlX3N0YXJ0KGF1dGhfaGVhZGVyWzFdKQor CisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgICAg ICMgU2F2aW5nIHRoZSBmaXJzdCAxNSBjaGFyYWN0ZXJzIG9mIHRoZSBrZXJiZXJvcyBrZXkKKyAg ICAgICAgICAgICAgICAgICAgICAgICMgdG8gZW5jcnlwdC9kZWNyeXB0IGRhdGFiYXNlIHBhc3N3 b3JkCisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydrZXJiZXJvc19rZXknXSA9IGF1 dGhfaGVhZGVyWzFdWzA6MTVdCisgICAgICAgICAgICAgICAgICAgICAgICAjIENyZWF0ZSB1c2Vy CisgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBzZWxmLl9fYXV0b19jcmVhdGVfdXNl cigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIobmVnb3RpYXRlLmluaXRpYXRvcl9u YW1lKSkKKyAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG5lZ290aWF0ZSwgRXhj ZXB0aW9uKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZsYXNoKGdldHRleHQobmVnb3RpYXRl KSwgJ2RhbmdlcicpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBbc3RhdHVzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3BvbnNlKHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlY3VyaXR5L2xvZ2lu X3VzZXIuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2lu X3VzZXJfZm9ybT1mb3JtKSldCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgICAgICAgICAgICBoZWFkZXJzLmFkZCgnV1dXLUF1dGhlbnRpY2F0ZScsICdOZWdvdGlhdGUg JyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoYmFzZTY0LmI2NGVu Y29kZShuZWdvdGlhdGUpLCAndXRmLTgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBGYWxzZSwgUmVzcG9uc2UoIlN1Y2Nlc3MiLCAyMDAsIGhlYWRlcnMpCisgICAgICAgICAgICBl bHNlOgorICAgICAgICAgICAgICAgIGZsYXNoKGdldHRleHQoIktlcmJlcm9zIGF1dGhlbnRpY2F0 aW9uIGZhaWxlZC4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIENvdWxkbid0IGZp bmQga2VyYmVyb3MgdGlja2V0LiIpLCAnZGFuZ2VyJykKKyAgICAgICAgICAgICAgICBoZWFkZXJz LmFkZCgnV1dXLUF1dGhlbnRpY2F0ZScsICdOZWdvdGlhdGUnKQorICAgICAgICAgICAgICAgIHJl dHZhbCA9IFtGYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzcG9uc2UocmVuZGVy X3RlbXBsYXRlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNlY3VyaXR5L2xvZ2lu X3VzZXIuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpbl91c2VyX2Zv cm09Zm9ybSksIDQwMSwgaGVhZGVycyldCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBp ZiBuZWdvdGlhdGUgaXMgbm90IEZhbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubmVnb3RpYXRl X2VuZChuZWdvdGlhdGUpCisgICAgICAgIHJldHVybiByZXR2YWwKKworICAgIGRlZiBuZWdvdGlh dGVfc3RhcnQoc2VsZiwgaW5fdG9rZW4pOgorICAgICAgICBzdmNfcHJpbmMgPSBnc3NhcGkuTmFt ZSgnSFRUUEAlcycgJSBjb25maWcuS1JCX0FQUF9IT1NUX05BTUUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hbWVfdHlwZT1nc3NhcGkuTmFtZVR5cGUuaG9zdGJhc2VkX3NlcnZp Y2UpCisgICAgICAgIGNuYW1lID0gc3ZjX3ByaW5jLmNhbm9uaWNhbGl6ZShnc3NhcGkuTWVjaFR5 cGUua2VyYmVyb3MpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VydmVyX2NyZWRzID0g Z3NzYXBpLkNyZWRlbnRpYWxzKHVzYWdlPSdhY2NlcHQnLCBuYW1lPWNuYW1lKQorICAgICAgICAg ICAgY29udGV4dCA9IGdzc2FwaS5TZWN1cml0eUNvbnRleHQoY3JlZHM9c2VydmVyX2NyZWRzKQor ICAgICAgICAgICAgb3V0X3Rva2VuID0gY29udGV4dC5zdGVwKGJhc2U2NC5iNjRkZWNvZGUoaW5f dG9rZW4pKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjdXJy ZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGUK KworICAgICAgICBpZiBvdXRfdG9rZW4gYW5kIG5vdCBjb250ZXh0LmNvbXBsZXRlOgorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlLCBvdXRfdG9rZW4KKyAgICAgICAgaWYgY29udGV4dC5jb21wbGV0 ZToKKyAgICAgICAgICAgIHJldHVybiBUcnVlLCBjb250ZXh0CisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICByZXR1cm4gRmFsc2UsIE5vbmUKKworICAgIGRlZiBuZWdvdGlhdGVfZW5kKHNlbGYs IGNvbnRleHQpOgorICAgICAgICAjIEZyZWUgZ3NzX2NyZWRfaWRfdAorICAgICAgICBkZWxfY3Jl ZHMgPSBnZXRhdHRyKGNvbnRleHQsICdkZWxlZ2F0ZWRfY3JlZHMnLCBOb25lKQorICAgICAgICBp ZiBkZWxfY3JlZHM6CisgICAgICAgICAgICBkZWxlZ19jcmVkcyA9IGNvbnRleHQuZGVsZWdhdGVk X2NyZWRzCisgICAgICAgICAgICBkZWwoZGVsZWdfY3JlZHMpCisKKyAgICBkZWYgX19hdXRvX2Ny ZWF0ZV91c2VyKHNlbGYsIHVzZXJuYW1lKToKKyAgICAgICAgIiIiQWRkIHRoZSBsZGFwIHVzZXIg dG8gdGhlIGludGVybmFsIFNRTGl0ZSBkYXRhYmFzZS4iIiIKKyAgICAgICAgdXNlcm5hbWUgPSBz dHIodXNlcm5hbWUpCisgICAgICAgIGlmIGNvbmZpZy5LUkJfQVVUT19DUkVBVEVfVVNFUjoKKyAg ICAgICAgICAgIHVzZXIgPSBVc2VyLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAgICAgICAgICB1 c2VybmFtZT11c2VybmFtZSkuZmlyc3QoKQorICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgor ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVfdXNlcih7CisgICAgICAgICAgICAgICAgICAg ICd1c2VybmFtZSc6IHVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAnZW1haWwnOiB1c2Vy bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiAyLAorICAgICAgICAgICAgICAgICAg ICAnYWN0aXZlJzogVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgJ2F1dGhfc291cmNlJzogS0VS QkVST1MKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIHJldHVybiBUcnVlLCB7J3VzZXJu YW1lJzogdXNlcm5hbWV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRh cC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9sZGFwLnB5CmluZGV4IGE5ZWNhMTEwZi4u MmYwZjYxYjdjIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRhcC5weQor KysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRhcC5weQpAQCAtMjMsNiArMjMsNyBAQCBm cm9tIC5pbnRlcm5hbCBpbXBvcnQgQmFzZUF1dGhlbnRpY2F0aW9uCiBmcm9tIHBnYWRtaW4ubW9k ZWwgaW1wb3J0IFVzZXIsIFNlcnZlckdyb3VwLCBkYiwgUm9sZQogZnJvbSBmbGFzayBpbXBvcnQg Y3VycmVudF9hcHAKIGZyb20gcGdhZG1pbi50b29scy51c2VyX21hbmFnZW1lbnQgaW1wb3J0IGNy ZWF0ZV91c2VyCitmcm9tIHBnYWRtaW4udXRpbHMuY29uc3RhbnRzIGltcG9ydCBMREFQCiAKIAog RVJST1JfU0VBUkNISU5HX0xEQVBfRElSRUNUT1JZID0gIkVycm9yIHNlYXJjaGluZyB0aGUgTERB UCBkaXJlY3Rvcnk6IHt9IgpAQCAtMzEsNiArMzIsOSBAQCBFUlJPUl9TRUFSQ0hJTkdfTERBUF9E SVJFQ1RPUlkgPSAiRXJyb3Igc2VhcmNoaW5nIHRoZSBMREFQIGRpcmVjdG9yeToge30iCiBjbGFz cyBMREFQQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKICAgICAiIiJMZGFwIEF1 dGhlbnRpY2F0aW9uIENsYXNzIiIiCiAKKyAgICBkZWYgZ2V0X3NvdXJjZV9uYW1lKHNlbGYpOgor ICAgICAgICByZXR1cm4gTERBUAorCiAgICAgZGVmIGdldF9mcmllbmRseV9uYW1lKHNlbGYpOgog ICAgICAgICByZXR1cm4gZ2V0dGV4dCgibGRhcCIpCiAKQEAgLTE1MSw3ICsxNTUsNyBAQCBjbGFz cyBMREFQQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKICAgICAgICAgICAgICAg ICAgICAgJ2VtYWlsJzogdXNlcl9lbWFpbCwKICAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiAy LAogICAgICAgICAgICAgICAgICAgICAnYWN0aXZlJzogVHJ1ZSwKLSAgICAgICAgICAgICAgICAg ICAgJ2F1dGhfc291cmNlJzogJ2xkYXAnCisgICAgICAgICAgICAgICAgICAgICdhdXRoX3NvdXJj ZSc6IExEQVAKICAgICAgICAgICAgICAgICB9KQogCiAgICAgICAgIHJldHVybiBUcnVlLCBOb25l CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5IGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9fX2luaXRfXy5weQppbmRleCAxYmFlMjhmOWMuLmMwYWQ4NjlhMSAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL19faW5pdF9fLnB5CkBAIC0yOSw3ICsyOSw3IEBAIGZyb20gZmxhc2tfc2VjdXJpdHku cmVjb3ZlcmFibGUgaW1wb3J0IHJlc2V0X3Bhc3N3b3JkX3Rva2VuX3N0YXR1cywgXAogICAgIGdl bmVyYXRlX3Jlc2V0X3Bhc3N3b3JkX3Rva2VuLCB1cGRhdGVfcGFzc3dvcmQKIGZyb20gZmxhc2tf c2VjdXJpdHkuc2lnbmFscyBpbXBvcnQgcmVzZXRfcGFzc3dvcmRfaW5zdHJ1Y3Rpb25zX3NlbnQK IGZyb20gZmxhc2tfc2VjdXJpdHkudXRpbHMgaW1wb3J0IGNvbmZpZ192YWx1ZSwgZG9fZmxhc2gs IGdldF91cmwsIFwKLSAgICBnZXRfbWVzc2FnZSwgc2xhc2hfdXJsX3N1ZmZpeCwgbG9naW5fdXNl ciwgc2VuZF9tYWlsCisgICAgZ2V0X21lc3NhZ2UsIHNsYXNoX3VybF9zdWZmaXgsIGxvZ2luX3Vz ZXIsIHNlbmRfbWFpbCwgbG9nb3V0X3VzZXIKIGZyb20gZmxhc2tfc2VjdXJpdHkudmlld3MgaW1w b3J0IF9zZWN1cml0eSwgX2NvbW1pdCwgX2N0eAogZnJvbSB3ZXJremV1Zy5kYXRhc3RydWN0dXJl cyBpbXBvcnQgTXVsdGlEaWN0CiAKQEAgLTQ3LDcgKzQ3LDggQEAgZnJvbSBwZ2FkbWluLnV0aWxz Lm1hc3Rlcl9wYXNzd29yZCBpbXBvcnQgdmFsaWRhdGVfbWFzdGVyX3Bhc3N3b3JkLCBcCiAgICAg c2V0X21hc3RlcnBhc3NfY2hlY2tfdGV4dCwgY2xlYW51cF9tYXN0ZXJfcGFzc3dvcmQsIGdldF9j cnlwdF9rZXksIFwKICAgICBzZXRfY3J5cHRfa2V5LCBwcm9jZXNzX21hc3RlcnBhc3NfZGlzYWJs ZWQKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgVXNlcgotZnJvbSBwZ2FkbWluLnV0aWxzLmNv bnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBQR0FETUlOX05PREUKK2Zyb20gcGdhZG1p bi51dGlscy5jb25zdGFudHMgaW1wb3J0IE1JTUVUWVBFX0FQUF9KUywgUEdBRE1JTl9OT0RFLFwK KyAgICBJTlRFUk5BTCwgS0VSQkVST1MKIAogdHJ5OgogICAgIGZyb20gZmxhc2tfc2VjdXJpdHku dmlld3MgaW1wb3J0IGRlZmF1bHRfcmVuZGVyX2pzb24KQEAgLTI4MCw3ICsyODEsOCBAQCBjbGFz cyBCcm93c2VyTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgICAgICdicm93c2Vy LmNoZWNrX21hc3Rlcl9wYXNzd29yZCcsCiAgICAgICAgICAgICAgICAgJ2Jyb3dzZXIuc2V0X21h c3Rlcl9wYXNzd29yZCcsCiAgICAgICAgICAgICAgICAgJ2Jyb3dzZXIucmVzZXRfbWFzdGVyX3Bh c3N3b3JkJywKLSAgICAgICAgICAgICAgICAnYnJvd3Nlci5sb2NrX2xheW91dCddCisgICAgICAg ICAgICAgICAgJ2Jyb3dzZXIubG9ja19sYXlvdXQnCisgICAgICAgICAgICAgICAgXQogCiAKIGJs dWVwcmludCA9IEJyb3dzZXJNb2R1bGUoTU9EVUxFX05BTUUsIF9fbmFtZV9fKQpAQCAtNTM5LDYg KzU0MSwxMiBAQCBjbGFzcyBCcm93c2VyUGx1Z2luTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogCiAK IGRlZiBfZ2V0X2xvZ291dF91cmwoKToKKyAgICBpZiBjb25maWcuU0VSVkVSX01PREUgYW5kXAor ICAgICAgICAgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ11bJ2N1cnJlbnRf c291cmNlJ10gPT0gXAorICAgICAgICAgICAgS0VSQkVST1M6CisgICAgICAgIHJldHVybiAnezB9 P25leHQ9ezF9Jy5mb3JtYXQodXJsX2ZvcigKKyAgICAgICAgICAgICdhdXRoZW50aWNhdGUua2Vy YmVyb3NfbG9nb3V0JyksIHVybF9mb3IoQlJPV1NFUl9JTkRFWCkpCisKICAgICByZXR1cm4gJ3sw fT9uZXh0PXsxfScuZm9ybWF0KAogICAgICAgICB1cmxfZm9yKCdzZWN1cml0eS5sb2dvdXQnKSwg dXJsX2ZvcihCUk9XU0VSX0lOREVYKSkKIApAQCAtNjY0LDEzICs2NzIsMTggQEAgZGVmIGluZGV4 KCk6CiAgICAgYXV0aF9vbmx5X2ludGVybmFsID0gRmFsc2UKICAgICBhdXRoX3NvdXJjZSA9IFtd CiAKKyAgICBzZXNzaW9uWydhbGxvd19zYXZlX3Bhc3N3b3JkJ10gPSBUcnVlCisKICAgICBpZiBj b25maWcuU0VSVkVSX01PREU6CiAgICAgICAgIGlmIGxlbihjb25maWcuQVVUSEVOVElDQVRJT05f U09VUkNFUykgPT0gMVwKLSAgICAgICAgICAgICAgICBhbmQgJ2ludGVybmFsJyBpbiBjb25maWcu QVVUSEVOVElDQVRJT05fU09VUkNFUzoKKyAgICAgICAgICAgICAgICBhbmQgSU5URVJOQUwgaW4g Y29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVM6CiAgICAgICAgICAgICBhdXRoX29ubHlfaW50 ZXJuYWwgPSBUcnVlCiAgICAgICAgIGF1dGhfc291cmNlID0gc2Vzc2lvblsnX2F1dGhfc291cmNl X21hbmFnZXJfb2JqJ11bCiAgICAgICAgICAgICAnc291cmNlX2ZyaWVuZGx5X25hbWUnXQogCisg ICAgICAgIGlmIHNlc3Npb25bJ19hdXRoX3NvdXJjZV9tYW5hZ2VyX29iaiddWydjdXJyZW50X3Nv dXJjZSddID09IEtFUkJFUk9TOgorICAgICAgICAgICAgc2Vzc2lvblsnYWxsb3dfc2F2ZV9wYXNz d29yZCddID0gRmFsc2UKKwogICAgIHJlc3BvbnNlID0gUmVzcG9uc2UocmVuZGVyX3RlbXBsYXRl KAogICAgICAgICBNT0RVTEVfTkFNRSArICIvaW5kZXguaHRtbCIsCiAgICAgICAgIHVzZXJuYW1l PWN1cnJlbnRfdXNlci51c2VybmFtZSwKQEAgLTEwODYsNyArMTA5OSw3IEBAIGlmIGhhc2F0dHIo Y29uZmlnLCAnU0VDVVJJVFlfUkVDT1ZFUkFCTEUnKSBhbmQgY29uZmlnLlNFQ1VSSVRZX1JFQ09W RVJBQkxFOgogICAgICAgICAgICAgIyBDaGVjayB0aGUgQXV0aGVudGljYXRpb24gc291cmNlIG9m IHRoZSBVc2VyCiAgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnkoCiAgICAg ICAgICAgICAgICAgZW1haWw9Zm9ybS5kYXRhWydlbWFpbCddLAotICAgICAgICAgICAgICAgIGF1 dGhfc291cmNlPWN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQorICAgICAg ICAgICAgICAgIGF1dGhfc291cmNlPUlOVEVSTkFMCiAgICAgICAgICAgICApLmZpcnN0KCkKIAog ICAgICAgICAgICAgaWYgdXNlciBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9fX2luaXRfXy5weQppbmRleCBlY2MxMjgxYTIuLjVk YWVmODEyMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvX19pbml0X18ucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGltcG9ydCBzaW1wbGVqc29u IGFzIGpzb24KIGltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3VwcyBhcyBzZwogZnJv bSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBtYWtlX3Jlc3BvbnNlLCBq c29uaWZ5LCBcCi0gICAgY3VycmVudF9hcHAsIHVybF9mb3IKKyAgICBjdXJyZW50X2FwcCwgdXJs X2Zvciwgc2Vzc2lvbgogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0CiBmcm9tIGZs YXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIsIGxvZ2luX3JlcXVpcmVkCiBmcm9tIHBn YWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMudHlwZXMgaW1wb3J0IFNlcnZlclR5 cGUKQEAgLTE4MjIsNyArMTgyMiwxMyBAQCBjbGFzcyBTZXJ2ZXJOb2RlKFBHQ2hpbGROb2RlVmll dyk6CiAgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dCwKICAgICAgICAgICAgICAgICAgICAg c2VydmljZT1zZXJ2ZXIuc2VydmljZSwKICAgICAgICAgICAgICAgICAgICAgcHJvbXB0X3R1bm5l bF9wYXNzd29yZD1wcm9tcHRfdHVubmVsX3Bhc3N3b3JkLAotICAgICAgICAgICAgICAgICAgICBw cm9tcHRfcGFzc3dvcmQ9cHJvbXB0X3Bhc3N3b3JkCisgICAgICAgICAgICAgICAgICAgIHByb21w dF9wYXNzd29yZD1wcm9tcHRfcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgIGFsbG93X3Nh dmVfcGFzc3dvcmQ9VHJ1ZSBpZgorICAgICAgICAgICAgICAgICAgICBjb25maWcuQUxMT1dfU0FW RV9QQVNTV09SRCBhbmQKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsnYWxsb3dfc2F2ZV9w YXNzd29yZCddIGVsc2UgRmFsc2UsCisgICAgICAgICAgICAgICAgICAgIGFsbG93X3NhdmVfdHVu bmVsX3Bhc3N3b3JkPVRydWUgaWYKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnLkFMTE9XX1NB VkVfVFVOTkVMX1BBU1NXT1JEIGFuZAorICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydhbGxv d19zYXZlX3Bhc3N3b3JkJ10gZWxzZSBGYWxzZQogICAgICAgICAgICAgICAgICkKICAgICAgICAg ICAgICkKICAgICAgICAgZWxzZToKQEAgLTE4MzYsNiArMTg0Miw5IEBAIGNsYXNzIFNlcnZlck5v ZGUoUEdDaGlsZE5vZGVWaWV3KToKICAgICAgICAgICAgICAgICAgICAgZXJybXNnPWVycm1zZywK ICAgICAgICAgICAgICAgICAgICAgc2VydmljZT1zZXJ2ZXIuc2VydmljZSwKICAgICAgICAgICAg ICAgICAgICAgXz1nZXR0ZXh0LAorICAgICAgICAgICAgICAgICAgICBhbGxvd19zYXZlX3Bhc3N3 b3JkPVRydWUgaWYKKyAgICAgICAgICAgICAgICAgICAgY29uZmlnLkFMTE9XX1NBVkVfUEFTU1dP UkQgYW5kCisgICAgICAgICAgICAgICAgICAgIHNlc3Npb25bJ2FsbG93X3NhdmVfcGFzc3dvcmQn XSBlbHNlIEZhbHNlLAogICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICkKIApkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVz L3NlcnZlcnMvcGFzc3dvcmQuaHRtbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJzL3Bhc3N3b3JkLmh0bWwKaW5kZXggOWIyYzQyNWUz Li4zNWY0ZTJhMTYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJzL3Bhc3N3b3JkLmh0bWwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvcGFzc3dv cmQuaHRtbApAQCAtMTksNyArMTksNyBAQAogICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLXNt LTEwIj4KICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjdXN0b20tY29udHJvbCBjdXN0b20t Y2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImN1c3RvbS1jb250 cm9sLWlucHV0IiBpZD0ic2F2ZV9wYXNzd29yZCIgbmFtZT0ic2F2ZV9wYXNzd29yZCIgdHlwZT0i Y2hlY2tib3giCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBub3QgY29uZmlnLkFM TE9XX1NBVkVfUEFTU1dPUkQgICV9ZGlzYWJsZWR7JSBlbmRpZiAlfQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgeyUgaWYgbm90IGFsbG93X3NhdmVfcGFzc3dvcmQgJX1kaXNhYmxlZHslIGVu ZGlmICV9CiAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgPGxhYmVs IGNsYXNzPSJjdXN0b20tY29udHJvbC1sYWJlbCIgZm9yPSJzYXZlX3Bhc3N3b3JkIj57eyBfKCdT YXZlIFBhc3N3b3JkJykgfX08L2xhYmVsPgogICAgICAgICAgICAgICAgIDwvZGl2PgpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVz L3NlcnZlcnMvdHVubmVsX3Bhc3N3b3JkLmh0bWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy90ZW1wbGF0ZXMvc2VydmVycy90dW5uZWxfcGFzc3dvcmQuaHRtbApp bmRleCA1ZGU2NDJmODUuLmUzNGEyNTdmMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvdHVubmVsX3Bhc3N3b3Jk Lmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVt cGxhdGVzL3NlcnZlcnMvdHVubmVsX3Bhc3N3b3JkLmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAKICAg ICAgICAgICAgIDxkaXYgY2xhc3M9InctMTAwIj4KICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjdXN0b20tY29udHJvbCBjdXN0b20tY2hlY2tib3giPgogICAgICAgICAgICAgICAgICAgICA8 aW5wdXQgY2xhc3M9ImN1c3RvbS1jb250cm9sLWlucHV0IiBpZD0ic2F2ZV90dW5uZWxfcGFzc3dv cmQiIG5hbWU9InNhdmVfdHVubmVsX3Bhc3N3b3JkIiB0eXBlPSJjaGVja2JveCIKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIHslIGlmIG5vdCBjb25maWcuQUxMT1dfU0FWRV9UVU5ORUxfUEFT U1dPUkQgICV9ZGlzYWJsZWR7JSBlbmRpZiAlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg eyUgaWYgbm90IGFsbG93X3NhdmVfdHVubmVsX3Bhc3N3b3JkICAlfWRpc2FibGVkeyUgZW5kaWYg JX0KICAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xh c3M9ImN1c3RvbS1jb250cm9sLWxhYmVsIiBmb3I9InNhdmVfdHVubmVsX3Bhc3N3b3JkIiBjbGFz cz0ibWwtMSI+e3sgXygnU2F2ZSBQYXNzd29yZCcpIH19PC9sYWJlbD4KICAgICAgICAgICAgICAg ICA8L2Rpdj4KQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgICAgIDxkaXYgY2xhc3M9InctMTAw Ij4KICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjdXN0b20tY29udHJvbCBjdXN0b20tY2hl Y2tib3giPgogICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9ImN1c3RvbS1jb250cm9s LWlucHV0IiBpZD0ic2F2ZV9wYXNzd29yZCIgbmFtZT0ic2F2ZV9wYXNzd29yZCIgdHlwZT0iY2hl Y2tib3giCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB7JSBpZiBub3QgY29uZmlnLkFMTE9X X1NBVkVfUEFTU1dPUkQgICV9ZGlzYWJsZWR7JSBlbmRpZiAlfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgeyUgaWYgbm90IGFsbG93X3NhdmVfcGFzc3dvcmQgICV9ZGlzYWJsZWR7JSBlbmRp ZiAlfQogICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBj bGFzcz0iY3VzdG9tLWNvbnRyb2wtbGFiZWwiIGZvcj0ic2F2ZV9wYXNzd29yZCIgY2xhc3M9Im1s LTEiPnt7IF8oJ1NhdmUgUGFzc3dvcmQnKSB9fTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgPC9k aXY+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2tl cmJlcm9zX2xvZ2luLmh0bWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2Vy L2tlcmJlcm9zX2xvZ2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li5jMTEyZTMxOTYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBs YXRlcy9icm93c2VyL2tlcmJlcm9zX2xvZ2luLmh0bWwKQEAgLTAsMCArMSwxNiBAQAoreyUgZXh0 ZW5kcyAiYmFzZS5odG1sIiAlfQoreyUgYmxvY2sgYm9keSAlfQorPGRpdiBjbGFzcz0iY29udGFp bmVyLWZsdWlkIGNoYW5nZV9wYXNzIj4KKyAgICA8ZGl2IGNsYXNzPSJyb3cgYWxpZ24taXRlbXMt Y2VudGVyIGgtMTAwIj4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPjwvZGl2PgorICAg ICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQtNSI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5l bC1oZWFkZXIgaDQiPjxpIGNsYXNzPSJhcHAtaWNvbiBwZy1pY29uLWJsdWUiIGFyaWEtaGlkZGVu PSJ0cnVlIj48L2k+IHt7IF8oJyUoYXBwbmFtZSlzJywgYXBwbmFtZT1jb25maWcuQVBQX05BTUUp IH19PC9kaXY+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5Ij4KKyAgICAgICAg ICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHRleHQtY29sb3IgcGItMyBoNSI+e3sgXygnTG9n aW4gRmFpbGVkLicpIH19PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdj48YSBocmVmPSJ7eyBs b2dpbl91cmwgfX0iPkNsaWNrIGhlcmU8L2E+IHRvIExvZ2luIGFnYWluLjwvZGl2PgorICAgICAg ICAgICAgPC9kaXY+CisgICAgICAgIDwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtbWQt NCI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KK3slIGVuZGJsb2NrICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2tlcmJlcm9zX2xvZ291dC5o dG1sIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9rZXJiZXJvc19sb2dv dXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQzMGRjNmYyNQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIv a2VyYmVyb3NfbG9nb3V0Lmh0bWwKQEAgLTAsMCArMSwxNiBAQAoreyUgZXh0ZW5kcyAiYmFzZS5o dG1sIiAlfQoreyUgYmxvY2sgYm9keSAlfQorPGRpdiBjbGFzcz0iY29udGFpbmVyLWZsdWlkIGNo YW5nZV9wYXNzIj4KKyAgICA8ZGl2IGNsYXNzPSJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGgtMTAw Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iY29sLW1kLTUiPjwvZGl2PgorICAgICAgICA8ZGl2IGNs YXNzPSJjb2wtbWQtNSI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1oZWFkZXIgaDQi PjxpIGNsYXNzPSJhcHAtaWNvbiBwZy1pY29uLWJsdWUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+ IHt7IF8oJyUoYXBwbmFtZSlzJywgYXBwbmFtZT1jb25maWcuQVBQX05BTUUpIH19PC9kaXY+Cisg ICAgICAgICAgICA8ZGl2IGNsYXNzPSJwYW5lbC1ib2R5Ij4KKyAgICAgICAgICAgICAgICA8ZGl2 IGNsYXNzPSJkLWJsb2NrIHRleHQtY29sb3IgcGItMyBoNSI+e3sgXygnTG9nZ2VkIG91dCBzdWNj ZXNzZnVsbHkuJykgfX08L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2PjxhIGhyZWY9Int7IGxv Z2luX3VybCB9fSI+Q2xpY2sgaGVyZTwvYT4gdG8gTG9naW4gYWdhaW4uPC9kaXY+CisgICAgICAg ICAgICA8L2Rpdj4KKyAgICAgICAgPC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9ImNvbC1tZC00 Ij48L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgoreyUgZW5kYmxvY2sgJX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMvdGVzdF9rZXJiZXJvc193aXRoX21vY2tpbmcucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3Rfa2VyYmVyb3Nfd2l0aF9tb2NraW5nLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjg3Y2U1NTIxCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2tlcmJlcm9zX3dpdGhf bW9ja2luZy5weQpAQCAtMCwwICsxLDEwNCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIw LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFz ZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor aW1wb3J0IGNvbmZpZyBhcyBhcHBfY29uZmlnCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1w b3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMg aW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcGdhZG1pbi5hdXRoZW50aWNhdGUucmVn aXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQorZnJvbSB1bml0dGVzdC5tb2NrIGltcG9y dCBwYXRjaCwgTWFnaWNNb2NrCisKKworY2xhc3MgS2VyYmVyb3NMb2dpbk1vY2tUZXN0Q2FzZShC YXNlVGVzdEdlbmVyYXRvcik6CisgICAgIiIiCisgICAgVGhpcyBjbGFzcyBjaGVja3MgU3BuZWdv L0tlcmJlcm9zIGxvZ2luIGZ1bmN0aW9uYWxpdHkgYnkgbW9ja2luZworICAgIEhUVFAgbmVnb3Rp YXRlIGF1dGhlbnRpY2F0aW9uLgorICAgICIiIgorCisgICAgc2NlbmFyaW9zID0gWworICAgICAg ICAoJ1NwbmVnby9LZXJiZXJvcyBBdXRoZW50aWNhdGlvbjogVGVzdCBVbmF1dGhvcml6ZWQnLCBk aWN0KAorICAgICAgICAgICAgYXV0aF9zb3VyY2U9WydrZXJiZXJvcyddLAorICAgICAgICAgICAg YXV0b19jcmVhdGVfdXNlcj1UcnVlLAorICAgICAgICAgICAgZmxhZz0xCisgICAgICAgICkpLAor ICAgICAgICAoJ1NwbmVnby9LZXJiZXJvcyBBdXRoZW50aWNhdGlvbjogVGVzdCBBdXRob3JpemVk JywgZGljdCgKKyAgICAgICAgICAgIGF1dGhfc291cmNlPVsna2VyYmVyb3MnXSwKKyAgICAgICAg ICAgIGF1dG9fY3JlYXRlX3VzZXI9VHJ1ZSwKKyAgICAgICAgICAgIGZsYWc9MgorICAgICAgICAp KQorICAgIF0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6Cisg ICAgICAgICIiIgorICAgICAgICBXZSBuZWVkIHRvIGxvZ291dCB0aGUgdGVzdCBjbGllbnQgYXMg d2UgYXJlIHRlc3RpbmcKKyAgICAgICAgc3BuZWdvL2tlcmJlcm9zIGxvZ2luIHNjZW5hcmlvcy4K KyAgICAgICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKworICAgIGRlZiBzZXRV cChzZWxmKToKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTID0gc2Vs Zi5hdXRoX3NvdXJjZQorICAgICAgICBzZWxmLmFwcC5QR0FETUlOX0VYVEVSTkFMX0FVVEhfU09V UkNFID0gJ2tlcmJlcm9zJworCisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgICIiIlRo aXMgZnVuY3Rpb24gY2hlY2tzIHNwbmVnby9rZXJiZXJvcyBsb2dpbiBmdW5jdGlvbmFsaXR5LiIi IgorICAgICAgICBpZiBzZWxmLmZsYWcgPT0gMToKKyAgICAgICAgICAgIHNlbGYudGVzdF91bmF1 dGhvcml6ZWQoKQorICAgICAgICBlbGlmIHNlbGYuZmxhZyA9PSAyOgorICAgICAgICAgICAgaWYg YXBwX2NvbmZpZy5TRVJWRVJfTU9ERSBpcyBGYWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLnNr aXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAiQ2FuIG5vdCBydW4gS2VyYmVyb3MgQXV0aGVu dGljYXRpb24gaW4gdGhlIERlc2t0b3AgbW9kZS4iCisgICAgICAgICAgICAgICAgKQorCisgICAg ICAgICAgICBzZWxmLnRlc3RfYXV0aG9yaXplZCgpCisKKyAgICBkZWYgdGVzdF91bmF1dGhvcml6 ZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBFbnN1cmUgdGhhdCB3aGVuIGNsaWVudCBz ZW5kcyB0aGUgZmlyc3QgcmVxdWVzdCwKKyAgICAgICAgdGhlIE5lZ290aWF0ZSByZXF1ZXN0IGlz IHNlbnQuCisgICAgICAgICIiIgorICAgICAgICByZXMgPSBzZWxmLnRlc3Rlci5sb2dpbihOb25l LCBOb25lLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXNfY29kZSwg NDAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5oZWFkZXJzLmdldCgnd3d3LWF1dGhl bnRpY2F0ZScpLCAnTmVnb3RpYXRlJykKKworICAgIGRlZiB0ZXN0X2F1dGhvcml6ZWQoc2VsZik6 CisgICAgICAgICIiIgorICAgICAgICBFbnN1cmUgdGhhdCB3aGVuIHRoZSBjbGllbnQgc2VuZHMg YW4gY29ycmVjdCBhdXRob3JpemF0aW9uIHRva2VuLAorICAgICAgICB0aGV5IHJlY2VpdmUgYSAy MDAgT0sgcmVzcG9uc2UgYW5kIHRoZSB1c2VyIHByaW5jaXBhbCBpcyBleHRyYWN0ZWQgYW5kCisg ICAgICAgIHBhc3NlZCBvbiB0byB0aGUgcm91dGVkIG1ldGhvZC4KKyAgICAgICAgIiIiCisKKyAg ICAgICAgY2xhc3MgZGVsQ3JhZHM6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6Cisg ICAgICAgICAgICAgICAgc2VsZi5pbml0aWF0b3JfbmFtZSA9ICd1c2VyQFBHQURNSU4uT1JHJwor ICAgICAgICBkZWxfY3JhZHMgPSBkZWxDcmFkcygpCisKKyAgICAgICAgQXV0aFNvdXJjZVJlZ2lz dHJ5LnJlZ2lzdHJ5WydrZXJiZXJvcyddLm5lZ290aWF0ZV9zdGFydCA9IE1hZ2ljTW9jaygKKyAg ICAgICAgICAgIHJldHVybl92YWx1ZT1bVHJ1ZSwgZGVsX2NyYWRzXSkKKyAgICAgICAgcmVzID0g c2VsZi50ZXN0ZXIubG9naW4oTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaGVhZGVycz17J0F1dGhvcml6YXRpb24nOiAnTmVnb3RpYXRl IENUT0tFTid9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgc2Vs Zi5hc3NlcnRFcXVhbChyZXMuc3RhdHVzX2NvZGUsIDIwMCkKKyAgICAgICAgcmVzcGRhdGEgPSAn R3JhdmF0YXIgaW1hZ2UgZm9yICVzJyAlIGRlbF9jcmFkcy5pbml0aWF0b3JfbmFtZQorICAgICAg ICBzZWxmLmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRhdGEuZGVjb2RlKCd1dGY4JykpCisK KyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYXBwLlBHQURNSU5fRVhURVJO QUxfQVVUSF9TT1VSQ0UgPSAnbGRhcCcKKyAgICAgICAgc2VsZi50ZXN0ZXIubG9nb3V0KCkKKwor ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgICIi IgorICAgICAgICBXZSBuZWVkIHRvIGFnYWluIGxvZ2luIHRoZSB0ZXN0IGNsaWVudCBhcyBzb29u IGFzIHRlc3Qgc2NlbmFyaW9zCisgICAgICAgIGZpbmlzaGVzLgorICAgICAgICAiIiIKKyAgICAg ICAgY2xzLnRlc3Rlci5sb2dvdXQoKQorICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9O X1NPVVJDRVMgPSBbJ2ludGVybmFsJ10KKyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291 bnQoY2xzLnRlc3RlcikKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvX19pbml0X18ucHkKaW5kZXgg MjQwNWE0OThkLi4wNWVkOTk4YzYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFn cmlkL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL19faW5pdF9f LnB5CkBAIC0yNSw3ICsyNSw3IEBAIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdBZG1pbk1v ZHVsZQogZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwg YmFkX3JlcXVlc3QsIFwKICAgICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIHVuYXV0aG9yaXplZAog Ci1mcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gY29uZmlnIGltcG9y dCBQR19ERUZBVUxUX0RSSVZFUiwgQUxMT1dfU0FWRV9QQVNTV09SRAogZnJvbSBwZ2FkbWluLm1v ZGVsIGltcG9ydCBTZXJ2ZXIsIFVzZXIKIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0 IGdldF9kcml2ZXIKIGZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IENvbm5lY3Rp b25Mb3N0LCBTU0hUdW5uZWxDb25uZWN0aW9uTG9zdApAQCAtNDAyLDYgKzQwMiw5IEBAIGRlZiBf aW5pdF9xdWVyeV90b29sKHRyYW5zX2lkLCBjb25uZWN0LCBzZ2lkLCBzaWQsIGRpZCwgKiprd2Fy Z3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lPXVzZXIsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZXJybXNnPW1zZywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBfPWdldHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dfc2F2ZV9w YXNzd29yZD1UcnVlIGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUxMT1dfU0FWRV9Q QVNTV09SRCBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uWydhbGxvd19z YXZlX3Bhc3N3b3JkJ10gZWxzZSBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgICAgICAgICAgKSwgJycsICcnCiAgICAgICAgICAgICAgICAgZWxzZToKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9fX2luaXRfXy5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9fX2luaXRfXy5weQppbmRleCA4NjQxMTMw YzQuLmNlMjgwYTNkMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2Vt ZW50L19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9f X2luaXRfXy5weQpAQCAtMTMsNyArMTMsNyBAQCBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCiBp bXBvcnQgcmUKIAogZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBc Ci0gICAgdXJsX2ZvciwgUmVzcG9uc2UsIGFib3J0LCBjdXJyZW50X2FwcAorICAgIHVybF9mb3Is IFJlc3BvbnNlLCBhYm9ydCwgY3VycmVudF9hcHAsIHNlc3Npb24KIGZyb20gZmxhc2tfYmFiZWxl eCBpbXBvcnQgZ2V0dGV4dCBhcyBfCiBmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBsb2dpbl9y ZXF1aXJlZCwgcm9sZXNfcmVxdWlyZWQsIGN1cnJlbnRfdXNlcgogZnJvbSBmbGFza19zZWN1cml0 eS51dGlscyBpbXBvcnQgZW5jcnlwdF9wYXNzd29yZApAQCAtMjQsNyArMjQsOCBAQCBmcm9tIHBn YWRtaW4udXRpbHMgaW1wb3J0IFBnQWRtaW5Nb2R1bGUKIGZyb20gcGdhZG1pbi51dGlscy5hamF4 IGltcG9ydCBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIFwKICAgICBtYWtlX2pzb25f cmVzcG9uc2UsIGJhZF9yZXF1ZXN0LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIGZvcmJpZGRlbgog ZnJvbSBwZ2FkbWluLnV0aWxzLmNzcmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKLWZyb20gcGdhZG1p bi51dGlscy5jb25zdGFudHMgaW1wb3J0IE1JTUVUWVBFX0FQUF9KUworZnJvbSBwZ2FkbWluLnV0 aWxzLmNvbnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBJTlRFUk5BTCxcCisgICAgU1VQ UE9SVEVEX0FVVEhfU09VUkNFUywgS0VSQkVST1MKIGZyb20gcGdhZG1pbi51dGlscy52YWxpZGF0 aW9uX3V0aWxzIGltcG9ydCB2YWxpZGF0ZV9lbWFpbAogZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9y dCBkYiwgUm9sZSwgVXNlciwgVXNlclByZWZlcmVuY2UsIFNlcnZlciwgXAogICAgIFNlcnZlckdy b3VwLCBQcm9jZXNzLCBTZXR0aW5nCkBAIC0xNjcsMTEgKzE2OCwxMyBAQCBkZWYgY3VycmVudF91 c2VyX2luZm8oKToKICAgICAgICAgICAgICAgICBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZQog ICAgICAgICAgICAgICAgIGVsc2UgJ3Bvc3RncmVzJwogICAgICAgICAgICAgKSwKLSAgICAgICAg ICAgIGFsbG93X3NhdmVfcGFzc3dvcmQ9J3RydWUnIGlmIGNvbmZpZy5BTExPV19TQVZFX1BBU1NX T1JECisgICAgICAgICAgICBhbGxvd19zYXZlX3Bhc3N3b3JkPSd0cnVlJyBpZgorICAgICAgICAg ICAgY29uZmlnLkFMTE9XX1NBVkVfUEFTU1dPUkQgYW5kIHNlc3Npb25bJ2FsbG93X3NhdmVfcGFz c3dvcmQnXQogICAgICAgICAgICAgZWxzZSAnZmFsc2UnLAotICAgICAgICAgICAgYWxsb3dfc2F2 ZV90dW5uZWxfcGFzc3dvcmQ9J3RydWUnCi0gICAgICAgICAgICBpZiBjb25maWcuQUxMT1dfU0FW RV9UVU5ORUxfUEFTU1dPUkQgZWxzZSAnZmFsc2UnLAotICAgICAgICAgICAgYXV0aF9zb3VyY2Vz PWNvbmZpZy5BVVRIRU5USUNBVElPTl9TT1VSQ0VTLAorICAgICAgICAgICAgYWxsb3dfc2F2ZV90 dW5uZWxfcGFzc3dvcmQ9J3RydWUnIGlmCisgICAgICAgICAgICBjb25maWcuQUxMT1dfU0FWRV9U VU5ORUxfUEFTU1dPUkQgYW5kIHNlc3Npb25bCisgICAgICAgICAgICAgICAgJ2FsbG93X3NhdmVf cGFzc3dvcmQnXSBlbHNlICdmYWxzZScsCisgICAgICAgICAgICBhdXRoX3NvdXJjZXM9Y29uZmln LkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMKICAgICAgICAgKSwKICAgICAgICAgc3RhdHVzPTIwMCwK ICAgICAgICAgbWltZXR5cGU9TUlNRVRZUEVfQVBQX0pTCkBAIC0yNTQsMTAgKzI1NywxMCBAQCBk ZWYgX2NyZWF0ZV9uZXdfdXNlcihuZXdfZGF0YSk6CiAgICAgOnJldHVybjogUmV0dXJuIG5ldyBj cmVhdGVkIHVzZXIuCiAgICAgIiIiCiAgICAgYXV0aF9zb3VyY2UgPSBuZXdfZGF0YVsnYXV0aF9z b3VyY2UnXSBpZiAnYXV0aF9zb3VyY2UnIGluIG5ld19kYXRhIFwKLSAgICAgICAgZWxzZSBjdXJy ZW50X2FwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9TT1VSQ0UKKyAgICAgICAgZWxzZSBJTlRFUk5B TAogICAgIHVzZXJuYW1lID0gbmV3X2RhdGFbJ3VzZXJuYW1lJ10gaWYgXAogICAgICAgICAndXNl cm5hbWUnIGluIG5ld19kYXRhIGFuZCBhdXRoX3NvdXJjZSAhPSBcCi0gICAgICAgIGN1cnJlbnRf YXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRSBlbHNlIG5ld19kYXRhWydlbWFpbCddCisg ICAgICAgIElOVEVSTkFMIGVsc2UgbmV3X2RhdGFbJ2VtYWlsJ10KICAgICBlbWFpbCA9IG5ld19k YXRhWydlbWFpbCddIGlmICdlbWFpbCcgaW4gbmV3X2RhdGEgZWxzZSBOb25lCiAgICAgcGFzc3dv cmQgPSBuZXdfZGF0YVsncGFzc3dvcmQnXSBpZiAncGFzc3dvcmQnIGluIG5ld19kYXRhIGVsc2Ug Tm9uZQogCkBAIC0yNzksNyArMjgyLDcgQEAgZGVmIF9jcmVhdGVfbmV3X3VzZXIobmV3X2RhdGEp OgogCiBkZWYgY3JlYXRlX3VzZXIoZGF0YSk6CiAgICAgaWYgJ2F1dGhfc291cmNlJyBpbiBkYXRh IGFuZCBkYXRhWydhdXRoX3NvdXJjZSddICE9IFwKLSAgICAgICAgICAgIGN1cnJlbnRfYXBwLlBH QURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRToKKyAgICAgICAgICAgIElOVEVSTkFMOgogICAgICAg ICByZXFfcGFyYW1zID0gKCd1c2VybmFtZScsICdyb2xlJywgJ2FjdGl2ZScsICdhdXRoX3NvdXJj ZScpCiAgICAgZWxzZToKICAgICAgICAgcmVxX3BhcmFtcyA9ICgnZW1haWwnLCAncm9sZScsICdh Y3RpdmUnLCAnbmV3UGFzc3dvcmQnLApAQCAtMzgwLDcgKzM4Myw3IEBAIGRlZiB1cGRhdGUodWlk KToKICAgICApCiAKICAgICAjIFVzZXJuYW1lIGFuZCBlbWFpbCBjYW4gbm90IGJlIGNoYW5nZWQg Zm9yIGludGVybmFsIHVzZXJzCi0gICAgaWYgdXNyLmF1dGhfc291cmNlID09IGN1cnJlbnRfYXBw LlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRToKKyAgICBpZiB1c3IuYXV0aF9zb3VyY2UgPT0g SU5URVJOQUw6CiAgICAgICAgIG5vbl9lZGl0YWJsZV9wYXJhbXMgPSAoJ3VzZXJuYW1lJywgJ2Vt YWlsJykKIAogICAgICAgICBmb3IgZiBpbiBub25fZWRpdGFibGVfcGFyYW1zOgpAQCAtNDYzLDcg KzQ2Niw3IEBAIGRlZiByb2xlKHJpZCk6CiApCiBkZWYgYXV0aF9zb3VyY2VzKCk6CiAgICAgc291 cmNlcyA9IFtdCi0gICAgZm9yIHNvdXJjZSBpbiBjdXJyZW50X2FwcC5QR0FETUlOX1NVUFBPUlRF RF9BVVRIX1NPVVJDRToKKyAgICBmb3Igc291cmNlIGluIFNVUFBPUlRFRF9BVVRIX1NPVVJDRVM6 CiAgICAgICAgIHNvdXJjZXMuYXBwZW5kKHsnbGFiZWwnOiBzb3VyY2UsICd2YWx1ZSc6IHNvdXJj ZX0pCiAKICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3V0aWxzL2NvbnN0YW50cy5weSBiL3dlYi9wZ2FkbWluL3V0aWxzL2NvbnN0YW50cy5weQppbmRl eCAwYTIyNjFmMDUuLjVmZDk0MjMwNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvY29u c3RhbnRzLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL2NvbnN0YW50cy5weQpAQCAtNDcsMyAr NDcsMTIgQEAgRVJST1JfRkVUQ0hJTkdfUk9MRV9JTkZPUk1BVElPTiA9IGdldHRleHQoCiAgICAg J0Vycm9yIGZldGNoaW5nIHJvbGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2Ugc2VydmVy LicpCiAKIEVSUk9SX0ZFVENISU5HX0RBVEEgPSBnZXR0ZXh0KCdVbmFibGUgdG8gZmV0Y2ggZGF0 YS4nKQorCisjIEF1dGhlbnRpY2F0aW9uIFNvdXJjZXMKK0lOVEVSTkFMID0gJ2ludGVybmFsJwor TERBUCA9ICdsZGFwJworS0VSQkVST1MgPSAna2VyYmVyb3MnCisKK1NVUFBPUlRFRF9BVVRIX1NP VVJDRVMgPSBbSU5URVJOQUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExEQVAsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIEtFUkJFUk9TXQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dXRpbHMvbWFzdGVyX3Bhc3N3b3JkLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvbWFzdGVyX3Bhc3N3 b3JkLnB5CmluZGV4IDc1OWJmMzZlMC4uNjI5ZWVjOTQxIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi91dGlscy9tYXN0ZXJfcGFzc3dvcmQucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvbWFzdGVy X3Bhc3N3b3JkLnB5CkBAIC0xLDggKzEsOSBAQAogaW1wb3J0IGNvbmZpZwotZnJvbSBmbGFzayBp bXBvcnQgY3VycmVudF9hcHAKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBwLCBzZXNzaW9u CiBmcm9tIGZsYXNrX2xvZ2luIGltcG9ydCBjdXJyZW50X3VzZXIKIGZyb20gcGdhZG1pbi5tb2Rl bCBpbXBvcnQgZGIsIFVzZXIsIFNlcnZlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmNyeXB0byBpbXBv cnQgZW5jcnlwdCwgZGVjcnlwdAorZnJvbSBwZ2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQg S0VSQkVST1MKIAogCiBNQVNURVJQQVNTX0NIRUNLX1RFWFQgPSAnaWRlYXMgYXJlIGJ1bGxldHBy b29mJwpAQCAtMzIsNiArMzMsMTEgQEAgZGVmIGdldF9jcnlwdF9rZXkoKToKICAgICBlbGlmIGNv bmZpZy5NQVNURVJfUEFTU1dPUkRfUkVRVUlSRUQgXAogICAgICAgICAgICAgYW5kIG5vdCBjb25m aWcuU0VSVkVSX01PREUgYW5kIGVuY19rZXkgaXMgTm9uZToKICAgICAgICAgcmV0dXJuIEZhbHNl LCBOb25lCisgICAgZWxpZiBjb25maWcuU0VSVkVSX01PREUgYW5kIFwKKyAgICAgICAgICAgIHNl c3Npb25bJ19hdXRoX3NvdXJjZV9tYW5hZ2VyX29iaiddWydzb3VyY2VfZnJpZW5kbHlfbmFtZSdd XAorICAgICAgICAgICAgPT0gS0VSQkVST1M6CisgICAgICAgIHJldHVybiBUcnVlLCBzZXNzaW9u WydrZXJiZXJvc19rZXknXSBpZiAna2VyYmVyb3Nfa2V5JyBpbiBzZXNzaW9uIFwKKyAgICAgICAg ICAgIGVsc2UgTm9uZQogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBUcnVlLCBlbmNfa2V5CiAK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9j bGllbnQucHkgYi93ZWIvcmVncmVzc2lvbi9weXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xp ZW50LnB5CmluZGV4IDExZDJjZmNhNS4uY2E0MTIwZTE4IDEwMDY0NAotLS0gYS93ZWIvcmVncmVz c2lvbi9weXRob25fdGVzdF91dGlscy9jc3JmX3Rlc3RfY2xpZW50LnB5CisrKyBiL3dlYi9yZWdy ZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKQEAgLTEwMSw3ICsx MDEsOCBAQCBjbGFzcyBUZXN0Q2xpZW50KHRlc3RpbmcuRmxhc2tDbGllbnQpOgogCiAgICAgICAg ICAgICByZXR1cm4gY3NyZl90b2tlbgogCi0gICAgZGVmIGxvZ2luKHNlbGYsIGVtYWlsLCBwYXNz d29yZCwgX2ZvbGxvd19yZWRpcmVjdHM9RmFsc2UpOgorICAgIGRlZiBsb2dpbihzZWxmLCBlbWFp bCwgcGFzc3dvcmQsIF9mb2xsb3dfcmVkaXJlY3RzPUZhbHNlLAorICAgICAgICAgICAgICBoZWFk ZXJzPU5vbmUpOgogICAgICAgICBpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKICAgICAg ICAgICAgIHJlcyA9IHNlbGYuZ2V0KCcvbG9naW4nLCBmb2xsb3dfcmVkaXJlY3RzPVRydWUpCiAg ICAgICAgICAgICBjc3JmX3Rva2VuID0gc2VsZi5mZXRjaF9jc3JmKHJlcykKQEAgLTExMyw3ICsx MTQsOCBAQCBjbGFzcyBUZXN0Q2xpZW50KHRlc3RpbmcuRmxhc2tDbGllbnQpOgogICAgICAgICAg ICAgICAgIGVtYWlsPWVtYWlsLCBwYXNzd29yZD1wYXNzd29yZCwKICAgICAgICAgICAgICAgICBj c3JmX3Rva2VuPWNzcmZfdG9rZW4sCiAgICAgICAgICAgICApLAotICAgICAgICAgICAgZm9sbG93 X3JlZGlyZWN0cz1fZm9sbG93X3JlZGlyZWN0cworICAgICAgICAgICAgZm9sbG93X3JlZGlyZWN0 cz1fZm9sbG93X3JlZGlyZWN0cywKKyAgICAgICAgICAgIGhlYWRlcnM9aGVhZGVycwogICAgICAg ICApCiAgICAgICAgIHNlbGYuY3NyZl90b2tlbiA9IGNzcmZfdG9rZW4KIApkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkgYi93ZWIvcmVncmVzc2lvbi9ydW50ZXN0cy5weQpp bmRleCAzMzI4ZWQzZjYuLjliNzk0ZTQxZiAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vcnVu dGVzdHMucHkKKysrIGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKQEAgLTExNyw5ICsxMTcs OSBAQCBpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKIGFwcC5jb25maWdbJ1dURl9DU1JG X0VOQUJMRUQnXSA9IFRydWUKIAogIyBBdXRoZW50aWNhdGlvbiBzb3VyY2VzCi1hcHAuUEdBRE1J Tl9ERUZBVUxUX0FVVEhfU09VUkNFID0gJ2ludGVybmFsJwogYXBwLlBHQURNSU5fRVhURVJOQUxf QVVUSF9TT1VSQ0UgPSAnbGRhcCcKIAorCiBhcHAudGVzdF9jbGllbnRfY2xhc3MgPSBUZXN0Q2xp ZW50CiB0ZXN0X2NsaWVudCA9IGFwcC50ZXN0X2NsaWVudCgpCiB0ZXN0X2NsaWVudC5zZXRBcHAo YXBwKQo= --000000000000f08e5e05b8d6a287--