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 1jJcAv-0003TZ-3M for pgadmin-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 12:08:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jJcAu-0003Gg-08 for pgadmin-hackers@arkaria.postgresql.org; Wed, 01 Apr 2020 12:08:52 +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 1jJcAt-0003GZ-Km for pgadmin-hackers@lists.postgresql.org; Wed, 01 Apr 2020 12:08:51 +0000 Received: from mail-lj1-x244.google.com ([2a00:1450:4864:20::244]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1jJcAq-00078v-AU for pgadmin-hackers@postgresql.org; Wed, 01 Apr 2020 12:08:51 +0000 Received: by mail-lj1-x244.google.com with SMTP id r24so25512631ljd.4 for ; Wed, 01 Apr 2020 05:08:47 -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=O1ss68eReHS4Ldd+n8bmL+EkLOLNGjsf9dmxK96lUnA=; b=KQfOU+OfjJi7zCwp7DlPMV+UHAjjbfI3JumcskF9UpXccnYAW5Ug0e/0qz/5OW1JDX IfldWZXZm4ZPz0pdvG+LSyzmR3r7vrOncbr6GUfnE4Zuk/+2Xjg6vsYv5kgh0b3bG/Fr K7DDAMYErStyK+itPGcKAXjuqoJ05MvGEHA4jDKdQMW7ozC2UnWeZNKKdUzyrrucW+IQ eSl5VcCNVnm0WGGxrvoasfKc7/tAZVZN1zMs1xWVSEontyh8fUJwHqBAVxdKEcniGRyt V1SH5EADoG0tB1qIDW0SZzNscUowwIAeKnMzKcNu9PTsr5rzCmCpJ7gEYq6GeO5Yfrwc UU8w== 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=O1ss68eReHS4Ldd+n8bmL+EkLOLNGjsf9dmxK96lUnA=; b=jWFGDiQkvVhMe4myYu2hQMOw61jp3D08E810yz/I+zigwI1YW0ICYae/GeUE8MOXK+ ZygFb4Vn92EMowTwanOPqy2KgNK9WoTJRXR1s2cA6d684U1lCGPK+Sa7hPUA3lgE8OnO j4Q7dp1yz/Tcxw8c7Rr0N2+EDX4cdAKlmLtAOBvW9uAvGSnhxgE3JUIwuYpl+OdSl+cI AJ6R6T/4bKrQlA0tSgTIw7OjLM/5Qfdi5PsRr3myQ/UTiByUtomSfht0Egb23NJmg2oX WBAVs/isFUTNN5fFtS27uaxGXkWbFjUe3gD94dXuTPv0kYjkm3ZigtuzHJWsJn7JjRah PkZw== X-Gm-Message-State: AGi0PuYhXC0zU7Q1L46Sd4udrDg/LjM6jDr9KVpKJ5f9x1KYnJhKzlZZ EbfV2AgAJVUUT3dWMPUCjgIqF91DH7rAAwSEeN1PROx9Kp6vHjwFXQcStPTI5Yf/0f34OMgRxiT M0Aw8gDPVF89v++f0amNImGYTrOKztTAmqDuaWbN8oXa2em8EeQy1/NHmc/dtQQRv+YUr5KHSrF kiF/cIzPdYPbM1mTdI2Fz7P7KJIbQrgCtEuClaWfO5d1vKFJoxKWk= X-Google-Smtp-Source: APiQypKvAkbP6sKO1GyG5Sh9D+bS9+LCCEhddRrUl992cMx8I84nsYqPzOim2FgDLET06F4pdSbig1mzyFE+W9W9khs= X-Received: by 2002:a2e:9706:: with SMTP id r6mr12635556lji.183.1585742926866; Wed, 01 Apr 2020 05:08:46 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Khushboo Vashi Date: Wed, 1 Apr 2020 17:38:39 +0530 Message-ID: Subject: Re: [pgAdmin4][Patch] - RM 2186 - Support external authentication sources [LDAP] To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000dd06e405a2398b3a" 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 --000000000000dd06e405a2398b3a Content-Type: multipart/alternative; boundary="000000000000dd06e005a2398b38" --000000000000dd06e005a2398b38 Content-Type: text/plain; charset="UTF-8" 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 >>>> >>> --000000000000dd06e005a2398b38 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Please find the attached updated pa= tch which includes the review comments given in the review meeting:

1. Do not store password=C2=A0for ldap user in sqlite dat= abase
2. Forgot Password : Give error to ldap users
3. = User Management dialog changes=C2=A0
4. Authentication source dis= play besides username / email after login

Thanks,<= /div>
Khushboo


On Tue, Mar 24, 2020 at 3:20 PM Khus= hboo 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> w= rote:
Please disregard my previous patch, attached the updated patch.
On = Tue, Mar 24, 2020 at 10:29 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com<= /a>> wrote:
<= div dir=3D"ltr">
Hi,

Please find the att= ached updated patch.


Hi

On Tue, Mar 17, 2020 at 10:24 AM Khushbo= o Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi Dave,

Thanks for the review.

On Tue, Mar 17, 2020 at 3:42 PM Dav= e Page <dpage@pga= dmin.org> wrote:
Hi

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

- Please move the configur= ation 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 fil= e just for auth config.

There a= re 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 fo= r the authentication.

Sur= e, but our config file is small compared to many. Splitting things out is m= ore 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.=C2=A0
=C2=A0
- I think all config options= should be prefixed with LDAP_ as we may have things like CERT_FILE for oth= er purposes too.

Sure.=C2=A0
Done.=C2=A0
=
- I don't see any test ca= ses.

I will think about this, a= s right now no idea how to write test cases for this.=C2=A0

It should be fairly straightforward to w= rite tests for some of the functions in the auth classes. For testing the a= ctual LDAP stuff, we probably need to add LDAP config options to test_confi= g.json, and only if present, run the tests. That would probably need to sup= port a list of LDAP servers, so we can test with different configurations (= LDAP, LDAPS, LDAP_STARTTLS, AD etc).
=C2=A0
Done.

Thanks,
Khushboo
Thanks.

Thanks,
Khushboo=C2=A0
On Tue, M= ar 17, 2020 at 8:55 AM Khushboo Vashi <khushboo.vashi@enterprisedb.com>= wrote:
Hi,

Please find the attached patch to support L= DAP 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 val= id user via login page.

I have tested this patch w= ith ldap and ldap=C2=A0+ ssl/tls. With the TLS, I have used the default con= fig of ldap3 without certificates.

@Dave, can you = please review this patch, as you have a better understanding of LDAP and yo= u 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,
Khushbo= o


--
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
--000000000000dd06e005a2398b38-- --000000000000dd06e405a2398b3a Content-Type: application/octet-stream; name="RM_2186_v2.patch" Content-Disposition: attachment; filename="RM_2186_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k8hadfmn0 ZGlmZiAtLWdpdCBhL3dlYi9jb25maWcucHkgYi93ZWIvY29uZmlnLnB5CmluZGV4IGMyNjkwMzMx MC4uNTViZWQ1NTVmIDEwMDY0NAotLS0gYS93ZWIvY29uZmlnLnB5CisrKyBiL3dlYi9jb25maWcu cHkKQEAgLTQ4OCw2ICs0ODgsNjUgQEAgTUFTVEVSX1BBU1NXT1JEX1JFUVVJUkVEID0gVHJ1ZQog IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKIEVOSEFOQ0VEX0NPT0tJRV9QUk9URUNUSU9OID0gVHJ1ZQogCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBFeHRlcm5hbCBBdXRoZW50aWNhdGlvbiBTb3VyY2VzCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjIERlZmF1bHQgc2V0dGluZyBpcyBpbnRlcm5hbAorIyBFeHRlcm5h bCBTdXBwb3J0ZWQgU291cmNlczogbGRhcAorIyBNdWx0aXBsZSBhdXRoZW50aWNhdGlvbiBjYW4g YmUgYWNoaWV2ZWQgYnkgc2V0dGluZyB0aGlzIHBhcmFtZXRlciB0bworIyBbJ2xkYXAnLCAnaW50 ZXJuYWwnXS4gcGdBZG1pbiB3aWxsIGF1dGhlbnRpY2F0ZSB0aGUgdXNlciB3aXRoIGxkYXAgZmly c3QsCisjIGluIGNhc2Ugb2YgZmFpbHVyZSBpbnRlcm5hbCBhdXRoZW50aWNhdGlvbiB3aWxsIGJl IGRvbmUuCisKK0FVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBbJ2ludGVybmFsJ10KKworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgTERBUCBDb25maWd1cmF0aW9uCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisj IEFmdGVyIGxkYXAgYXV0aGVudGljYXRpb24sIHVzZXIgd2lsbCBiZSBhZGRlZCBpbnRvIHRoZSBT UUxpdGUgZGF0YWJhc2UKKyMgYXV0b21hdGljYWxseSwgaWYgc2V0IHRvIFRydWUuCisjIFNldCBp dCB0byBGYWxzZSwgaWYgdXNlciBzaG91bGQgbm90IGJlIGFkZGVkIGF1dG9tYXRpY2FsbHksCisj IGluIHRoaXMgY2FzZSBBZG1pbiBoYXMgdG8gYWRkIHRoZSB1c2VyIG1hbnVhbGx5IGluIHRoZSBT UUxpdGUgZGF0YWJhc2UuCisKK0xEQVBfQVVUT19DUkVBVEVfVVNFUiA9IFRydWUKKworIyBDb25u ZWN0aW9uIHRpbWVvdXQKK0xEQVBfQ09OTkVDVElPTl9USU1FT1VUID0gMTAKKworIyBTZXJ2ZXIg Y29ubmVjdGlvbiBkZXRhaWxzIChSRVFVSVJFRCkKKyMgZXhhbXBsZTogbGRhcDovLzxpcC1hZGRy ZXNzPjo8cG9ydD4gb3IgbGRhcDovLzxob3N0bmFtZT46PHBvcnQ+CitMREFQX1NFUlZFUl9VUkkg PSAnbGRhcDovLzxpcC1hZGRyZXNzPjo8cG9ydD4nCisKKyMgQmFzZUROIChSRVFVSVJFRCkKKyMg QUQgZXhhbXBsZToKKyMgKCYob2JqZWN0Q2xhc3M9dXNlcikobWVtYmVyb2Y9Q049TVlHUk9VUCxD Tj1Vc2VycyxkYz1leGFtcGxlLGRjPWNvbSkpCisjIE9wZW5MREFQIGV4YW1wbGU6IENOPVVzZXJz LGRjPWV4YW1wbGUsZGM9Y29tCitMREFQX0JBU0VfRE4gPSAnPEJhc2UtRE4+JworCisjIFRoZSBM REFQIGF0dHJpYnV0ZSBjb250YWluaW5nIHVzZXIgbmFtZXMuIEluIE9wZW5MREFQLCB0aGlzIG1h eSBiZSAndWlkJworIyB3aGlsc3QgaW4gQUQsICdzQU1BY2NvdW50TmFtZScgbWlnaHQgYmUgYXBw cm9wcmlhdGUuIChSRVFVSVJFRCkKK0xEQVBfVVNFUk5BTUVfQVRUUklCVVRFID0gJzxVc2VyLWlk PicKKworIyBTZWFyY2ggbGRhcCBmb3IgZnVydGhlciBhdXRoZW50aWNhdGlvbgorTERBUF9TRUFS Q0hfQkFTRV9ETiA9ICc8U2VhcmNoLUJhc2UtRE4+JworCisjIEZpbHRlciBzdHJpbmcgZm9yIHRo ZSB1c2VyIHNlYXJjaC4KKyMgRm9yIE9wZW5MREFQLCAnKGNuPSopJyBtYXkgd2VsbCBiZSBlbm91 Z2guCisjIEZvciBBRCwgeW91IG1pZ2h0IHVzZSAnKG9iamVjdENsYXNzPXVzZXIpJyAoUkVRVUlS RUQpCitMREFQX1NFQVJDSF9GSUxURVIgPSAnKG9iamVjdGNsYXNzPSopJworCisjIFNlYXJjaCBz Y29wZSBmb3IgdXNlcnMgKG9uZSBvZiBCQVNFLCBMRVZFTCBvciBTVUJUUkVFKQorTERBUF9TRUFS Q0hfU0NPUEUgPSAnU1VCVFJFRScKKworIyBVc2UgVExTPyBJZiB0aGUgVVJJIHNjaGVtZSBpcyBs ZGFwczovLywgdGhpcyBpcyBpZ25vcmVkLgorTERBUF9VU0VfU1RBUlRUTFMgPSBGYWxzZQorCisj IFRMUy9TU0wgY2VydGlmaWNhdGVzLiBTcGVjaWZ5IGlmIHJlcXVpcmVkLCBvdGhlcndpc2UgbGVh dmUgZW1wdHkKK0xEQVBfQ0FfQ0VSVF9GSUxFID0gJycKK0xEQVBfQ0VSVF9GSUxFID0gJycKK0xE QVBfS0VZX0ZJTEUgPSAnJworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBMb2NhbCBjb25maWcgc2V0 dGluZ3MKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS93ZWIvbWlncmF0aW9ucy92ZXJz aW9ucy83ZmVkZjg1MzE4MDJfLnB5IGIvd2ViL21pZ3JhdGlvbnMvdmVyc2lvbnMvN2ZlZGY4NTMx ODAyXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjg5NDAxNjg2YQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9taWdyYXRpb25zL3ZlcnNpb25zLzdmZWRmODUzMTgwMl8u cHkKQEAgLTAsMCArMSw1MSBAQAorCisiIiJlbXB0eSBtZXNzYWdlCisKK1JldmlzaW9uIElEOiA3 ZmVkZjg1MzE4MDIKK1JldmlzZXM6IGFmZjE0MzZlM2M4YworQ3JlYXRlIERhdGU6IDIwMjAtMDIt MjYgMTE6MjQ6NTQuMzUzMjg4CisKKyIiIgorZnJvbSBhbGVtYmljIGltcG9ydCBvcAoraW1wb3J0 IHNxbGFsY2hlbXkgYXMgc2EKK2Zyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgZGIKKworIyByZXZp c2lvbiBpZGVudGlmaWVycywgdXNlZCBieSBBbGVtYmljLgorcmV2aXNpb24gPSAnN2ZlZGY4NTMx ODAyJworZG93bl9yZXZpc2lvbiA9ICdhZmYxNDM2ZTNjOGMnCiticmFuY2hfbGFiZWxzID0gTm9u ZQorZGVwZW5kc19vbiA9IE5vbmUKKworCitkZWYgdXBncmFkZSgpOgorCisgICAgZGIuZW5naW5l LmV4ZWN1dGUoIkFMVEVSIFRBQkxFIHVzZXIgUkVOQU1FIFRPIHVzZXJfb2xkIikKKworICAgIGRi LmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBDUkVBVEUgVEFCTEUgdXNlciAoCisgICAgICAg ICAgICBpZCBJTlRFR0VSIE5PVCBOVUxMLAorICAgICAgICAgICAgdXNlcm5hbWUgVkFSQ0hBUigy NTYpIE5PVCBOVUxMLAorICAgICAgICAgICAgZW1haWwgVkFSQ0hBUigyNTYpLAorICAgICAgICAg ICAgcGFzc3dvcmQgVkFSQ0hBUigyNTYpLAorICAgICAgICAgICAgYWN0aXZlIEJPT0xFQU4gTk9U IE5VTEwsCisgICAgICAgICAgICBjb25maXJtZWRfYXQgREFURVRJTUUsCisgICAgICAgICAgICBt YXN0ZXJwYXNzX2NoZWNrIFZBUkNIQVIoMjU2KSwKKyAgICAgICAgICAgIGF1dGhfc291cmNlIFZB UkNIQVIoMjU2KSBOT1QgTlVMTCBERUZBVUxUICdpbnRlcm5hbCcsCisgICAgICAgICAgICBQUklN QVJZIEtFWSAoaWQpLAorICAgICAgICAgICAgVU5JUVVFICh1c2VybmFtZSwgYXV0aF9zb3VyY2Up LAorICAgICAgICAgICAgQ0hFQ0sgKGFjdGl2ZSBJTiAoMCwgMSkpCisgICAgICAgICk7CisgICAg ICAgICIiIikKKworICAgIGRiLmVuZ2luZS5leGVjdXRlKCIiIgorICAgICAgICBJTlNFUlQgSU5U TyB1c2VyICgKKyAgICAgICAgICAgIGlkLCB1c2VybmFtZSwgZW1haWwsIHBhc3N3b3JkLCBhY3Rp dmUsIGNvbmZpcm1lZF9hdCwgbWFzdGVycGFzc19jaGVjaworICAgICAgICApIFNFTEVDVAorICAg ICAgICAgICAgaWQsIGVtYWlsLCBlbWFpbCwgcGFzc3dvcmQsIGFjdGl2ZSwgY29uZmlybWVkX2F0 LCBtYXN0ZXJwYXNzX2NoZWNrCisgICAgICAgIEZST00gdXNlcl9vbGQiIiIpCisKKyAgICBkYi5l bmdpbmUuZXhlY3V0ZSgiRFJPUCBUQUJMRSB1c2VyX29sZCIpCisKKworZGVmIGRvd25ncmFkZSgp OgorICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ0FkbWluNC5weSBiL3dlYi9wZ0FkbWluNC5w eQppbmRleCA4MWVmNmMzOTYuLmI5M2I3Y2ZkNCAxMDA2NDQKLS0tIGEvd2ViL3BnQWRtaW40LnB5 CisrKyBiL3dlYi9wZ0FkbWluNC5weQpAQCAtMTYwLDYgKzE2MCwxNiBAQCBpZiAnUEdBRE1JTl9J TlRfS0VZJyBpbiBnbG9iYWxzKCk6CiBlbHNlOgogICAgIGFwcC5QR0FETUlOX0lOVF9LRVkgPSAn JwogCisjIEF1dGhlbnRpY2F0aW9uIHNvdXJjZXMKK2FwcC5QR0FETUlOX0RFRkFVTFRfQVVUSF9T T1VSQ0UgPSAnaW50ZXJuYWwnCitpZiBsZW4oY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMp ID4gMDoKKyAgICBhcHAuUEdBRE1JTl9FWFRFUk5BTF9BVVRIX1NPVVJDRSA9IGNvbmZpZy5BVVRI RU5USUNBVElPTl9TT1VSQ0VTWzBdCitlbHNlOgorICAgIGFwcC5QR0FETUlOX0VYVEVSTkFMX0FV VEhfU09VUkNFID0gYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJDRQorCithcHAubG9nZ2Vy LmRlYnVnKAorICAgICJBdXRoZW50aWNhdGlvbiBTb3VyY2U6ICVzIiAlIGFwcC5QR0FETUlOX0RF RkFVTFRfQVVUSF9TT1VSQ0UpCisKICMgT3V0cHV0IGEgc3RhcnR1cCBtZXNzYWdlIGlmIHdlJ3Jl IG5vdCB1bmRlciB0aGUgcnVudGltZSBhbmQgc3RhcnR1cC4KICMgSWYgd2UncmUgdW5kZXIgV1NH SSwgd2UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzCiBpZiBfX25hbWVfXyA9PSAnX19t YWluX18nOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vX19pbml0X18ucHkgYi93ZWIvcGdhZG1p bi9fX2luaXRfXy5weQppbmRleCA4MjBjODAxNWEuLjVjYTJhZTY3YSAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vX19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vX19pbml0X18ucHkKQEAgLTM4 LDcgKzM4LDcgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCiBmcm9tIHBnYWRtaW4u c2V0dXAgaW1wb3J0IGdldF92ZXJzaW9uLCBzZXRfdmVyc2lvbgogZnJvbSBwZ2FkbWluLnV0aWxz LmFqYXggaW1wb3J0IGludGVybmFsX3NlcnZlcl9lcnJvcgogZnJvbSBwZ2FkbWluLnV0aWxzLmNz cmYgaW1wb3J0IHBnQ1NSRlByb3RlY3QKLQorZnJvbSBwZ2FkbWluIGltcG9ydCBhdXRoZW50aWNh dGUKIAogIyBJZiBzY3JpcHQgaXMgcnVubmluZyB1bmRlciBweXRob24zLCBpdCB3aWxsIG5vdCBo YXZlIHRoZSB4cmFuZ2UgZnVuY3Rpb24KICMgZGVmaW5lZApAQCAtMzk4LDYgKzM5OCw3IEBAIGRl ZiBjcmVhdGVfYXBwKGFwcF9uYW1lPU5vbmUpOgogICAgICMgTG9hZCBhbGwgYXZhaWxhYmxlIHNl cnZlciBkcml2ZXJzCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICAgICBkcml2ZXIuaW5pdF9hcHAo YXBwKQorICAgIGF1dGhlbnRpY2F0ZS5pbml0X2FwcChhcHApCiAKICAgICAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogICAgICMgUmVnaXN0ZXIgbGFuZ3VhZ2UgdG8gdGhlIHByZWZlcmVuY2VzIGFmdGVyIGxv Z2luCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkgYi93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi42M2Y1MjRlMjMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9hdXRoZW50aWNhdGUvX19pbml0X18ucHkKQEAgLTAsMCArMSwxNTYgQEAKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXByaW50IG1vZHVsZSBpbXBsZW1lbnRpbmcgdGhlIEF1 dGhlbnRpY2F0aW9uLiIiIgorCitpbXBvcnQgZmxhc2sKK2ltcG9ydCBwaWNrbGUKK2Zyb20gZmxh c2sgaW1wb3J0IGN1cnJlbnRfYXBwLCBmbGFzaAorZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBn ZXR0ZXh0Citmcm9tIGZsYXNrX3NlY3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIKK2Zyb20gZmxh c2tfc2VjdXJpdHkudmlld3MgaW1wb3J0IF9zZWN1cml0eSwgX2N0eAorZnJvbSBmbGFza19zZWN1 cml0eS51dGlscyBpbXBvcnQgY29uZmlnX3ZhbHVlLCBnZXRfcG9zdF9sb2dvdXRfcmVkaXJlY3QK K2Zyb20gZmxhc2sgaW1wb3J0IHNlc3Npb24KKworaW1wb3J0IGNvbmZpZworZnJvbSBwZ2FkbWlu LnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlCitmcm9tIC5yZWdpc3RyeSBpbXBvcnQgQXV0aFNv dXJjZVJlZ2lzdHJ5CisKK01PRFVMRV9OQU1FID0gJ2F1dGhlbnRpY2F0ZScKKworCitjbGFzcyBB dXRoZW50aWNhdGVNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CisgICAgZGVmIGdldF9leHBvc2VkX3Vy bF9lbmRwb2ludHMoc2VsZik6CisgICAgICAgIHJldHVybiBbJ2F1dGhlbnRpY2F0ZS5sb2dpbidd CisKKworYmx1ZXByaW50ID0gQXV0aGVudGljYXRlTW9kdWxlKE1PRFVMRV9OQU1FLCBfX25hbWVf Xywgc3RhdGljX3VybF9wYXRoPScnKQorCisKK0BibHVlcHJpbnQucm91dGUoJy9sb2dpbicsIGVu ZHBvaW50PSdsb2dpbicsIG1ldGhvZHM9WydHRVQnLCAnUE9TVCddKQorZGVmIGxvZ2luKCk6Cisg ICAgIiIiCisgICAgRW50cnkgcG9pbnQgZm9yIGFsbCB0aGUgYXV0aGVudGljYXRpb24gc291cmNl cy4KKyAgICBUaGUgdXNlciBpbnB1dCB3aWxsIGJlIHZhbGlkYXRlZCBhbmQgYXV0aGVudGljYXRl ZC4KKyAgICAiIiIKKyAgICBmb3JtID0gX3NlY3VyaXR5LmxvZ2luX2Zvcm0oKQorICAgIGF1dGhf b2JqID0gQXV0aFNvdXJjZU1hbmFnZXIoZm9ybSwgY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJD RVMpCisgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2JqJ10gPSBOb25lCisKKyAg ICAjIFZhbGlkYXRlIHRoZSB1c2VyCisgICAgaWYgbm90IGF1dGhfb2JqLnZhbGlkYXRlKCk6Cisg ICAgICAgIGZvciBmaWVsZCBpbiBmb3JtLmVycm9yczoKKyAgICAgICAgICAgIGZvciBlcnJvciBp biBmb3JtLmVycm9yc1tmaWVsZF06CisgICAgICAgICAgICAgICAgZmxhc2goZXJyb3IsICd3YXJu aW5nJykKKyAgICAgICAgICAgIHJldHVybiBmbGFzay5yZWRpcmVjdChnZXRfcG9zdF9sb2dvdXRf cmVkaXJlY3QoKSkKKworICAgICMgQXV0aGVudGljYXRlIHRoZSB1c2VyCisgICAgc3RhdHVzLCBt c2cgPSBhdXRoX29iai5hdXRoZW50aWNhdGUoKQorICAgIGlmIHN0YXR1czoKKyAgICAgICAgIyBM b2dpbiB0aGUgdXNlcgorICAgICAgICBzdGF0dXMsIG1zZyA9IGF1dGhfb2JqLmxvZ2luKCkKKyAg ICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIGZsYXNoKGdldHRleHQobXNnKSwgJ2Rh bmdlcicpCisgICAgICAgICAgICByZXR1cm4gZmxhc2sucmVkaXJlY3QoZ2V0X3Bvc3RfbG9nb3V0 X3JlZGlyZWN0KCkpCisKKyAgICAgICAgc2Vzc2lvblsnX2F1dGhfc291cmNlX21hbmFnZXJfb2Jq J10gPSBhdXRoX29iai5hc19kaWN0KCkKKyAgICAgICAgcmV0dXJuIGZsYXNrLnJlZGlyZWN0KCcv JykKKworICAgIGZsYXNoKGdldHRleHQobXNnKSwgJ2RhbmdlcicpCisgICAgcmV0dXJuIGZsYXNr LnJlZGlyZWN0KGdldF9wb3N0X2xvZ291dF9yZWRpcmVjdCgpKQorCisKK2NsYXNzIEF1dGhTb3Vy Y2VNYW5hZ2VyKCk6CisgICAgIiIiVGhpcyBjbGFzcyB3aWxsIG1hbmFnZSBhbGwgdGhlIGF1dGhl bnRpY2F0aW9uIHNvdXJjZXMuCisgICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb3Jt LCBzb3VyY2VzKToKKyAgICAgICAgc2VsZi5mb3JtID0gZm9ybQorICAgICAgICBzZWxmLmF1dGhf c291cmNlcyA9IHNvdXJjZXMKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBOb25lCisgICAgICAgIHNl bGYuc291cmNlX2ZyaWVuZGx5X25hbWUgPSBOb25lCisKKyAgICBkZWYgYXNfZGljdChzZWxmKToK KyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgdGhlIGRpY3Rpb25hcnkgb2JqZWN0IHJlcHJl c2VudGluZyB0aGlzIG9iamVjdC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVzID0gZGljdCgp CisgICAgICAgIHJlc1snc291cmNlX2ZyaWVuZGx5X25hbWUnXSA9IHNlbGYuc291cmNlX2ZyaWVu ZGx5X25hbWUKKyAgICAgICAgcmVzWydhdXRoX3NvdXJjZXMnXSA9IHNlbGYuYXV0aF9zb3VyY2Vz CisKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVmIHNldF9zb3VyY2Uoc2VsZiwgc291cmNl KToKKyAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKKworICAgIEBwcm9wZXJ0eQorICAgIGRl ZiBnZXRfc291cmNlKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2UKKworICAgIGRl ZiBzZXRfc291cmNlX2ZyaWVuZGx5X25hbWUoc2VsZiwgbmFtZSk6CisgICAgICAgIHNlbGYuc291 cmNlX2ZyaWVuZGx5X25hbWUgPSBuYW1lCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZ2V0X3Nv dXJjZV9mcmllbmRseV9uYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zb3VyY2VfZnJp ZW5kbHlfbmFtZQorCisgICAgZGVmIHZhbGlkYXRlKHNlbGYpOgorICAgICAgICAiIiJWYWxpZGF0 ZSB0aHJvdWdoIGFsbCB0aGUgc291cmNlcy4iIiIKKyAgICAgICAgZm9yIHNyYyBpbiBzZWxmLmF1 dGhfc291cmNlczoKKyAgICAgICAgICAgIHNvdXJjZSA9IGdldF9hdXRoX3NvdXJjZXMoc3JjKQor ICAgICAgICAgICAgaWYgc291cmNlLnZhbGlkYXRlKHNlbGYuZm9ybSk6CisgICAgICAgICAgICAg ICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgYXV0aGVudGlj YXRlKHNlbGYpOgorICAgICAgICAiIiJBdXRoZW50aWNhdGUgdGhyb3VnaCBhbGwgdGhlIHNvdXJj ZXMuIiIiCisgICAgICAgIHN0YXR1cyA9IEZhbHNlCisgICAgICAgIG1zZyA9IE5vbmUKKyAgICAg ICAgZm9yIHNyYyBpbiBzZWxmLmF1dGhfc291cmNlczoKKyAgICAgICAgICAgIHNvdXJjZSA9IGdl dF9hdXRoX3NvdXJjZXMoc3JjKQorICAgICAgICAgICAgc3RhdHVzLCBtc2cgPSBzb3VyY2UuYXV0 aGVudGljYXRlKHNlbGYuZm9ybSkKKyAgICAgICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAg ICAgICBzZWxmLnNldF9zb3VyY2Uoc291cmNlKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0 dXMsIG1zZworICAgICAgICByZXR1cm4gc3RhdHVzLCBtc2cKKworICAgIGRlZiBsb2dpbihzZWxm KToKKyAgICAgICAgc3RhdHVzLCBtc2cgPSBzZWxmLnNvdXJjZS5sb2dpbihzZWxmLmZvcm0pCisg ICAgICAgIGlmIHN0YXR1czoKKyAgICAgICAgICAgIHNlbGYuc2V0X3NvdXJjZV9mcmllbmRseV9u YW1lKHNlbGYuc291cmNlLmdldF9mcmllbmRseV9uYW1lKCkpCisgICAgICAgIHJldHVybiBzdGF0 dXMsIG1zZworCisKK2RlZiBnZXRfYXV0aF9zb3VyY2VzKHR5cGUpOgorICAgICIiIkdldCB0aGUg YXV0aGVudGljYXRlZCBzb3VyY2Ugb2JqZWN0IGZyb20gdGhlIHJlZ2lzdHJ5IiIiCisKKyAgICBh dXRoX3NvdXJjZXMgPSBnZXRhdHRyKGN1cnJlbnRfYXBwLCAnX3BnYWRtaW5fYXV0aF9zb3VyY2Vz JywgTm9uZSkKKworICAgIGlmIGF1dGhfc291cmNlcyBpcyBOb25lIG9yIG5vdCBpc2luc3RhbmNl KGF1dGhfc291cmNlcywgZGljdCk6CisgICAgICAgIGF1dGhfc291cmNlcyA9IGRpY3QoKQorCisg ICAgaWYgdHlwZSBpbiBhdXRoX3NvdXJjZXM6CisgICAgICAgIHJldHVybiBhdXRoX3NvdXJjZXNb dHlwZV0KKworICAgIGF1dGhfc291cmNlID0gQXV0aFNvdXJjZVJlZ2lzdHJ5LmNyZWF0ZSh0eXBl KQorCisgICAgaWYgYXV0aF9zb3VyY2UgaXMgbm90IE5vbmU6CisgICAgICAgIGF1dGhfc291cmNl c1t0eXBlXSA9IGF1dGhfc291cmNlCisgICAgICAgIHNldGF0dHIoY3VycmVudF9hcHAsICdfcGdh ZG1pbl9hdXRoX3NvdXJjZXMnLCBhdXRoX3NvdXJjZXMpCisKKyAgICByZXR1cm4gYXV0aF9zb3Vy Y2UKKworCitkZWYgaW5pdF9hcHAoYXBwKToKKyAgICBhdXRoX3NvdXJjZXMgPSBkaWN0KCkKKwor ICAgIHNldGF0dHIoYXBwLCAnX3BnYWRtaW5fYXV0aF9zb3VyY2VzJywgYXV0aF9zb3VyY2VzKQor ICAgIEF1dGhTb3VyY2VSZWdpc3RyeS5sb2FkX2F1dGhfc291cmNlcygpCisKKyAgICByZXR1cm4g YXV0aF9zb3VyY2VzCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJu YWwucHkgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi44MDQyMjM5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvaW50ZXJuYWwucHkKQEAgLTAsMCArMSw5NiBAQAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIiSW1wbGVtZW50cyBJbnRlcm5hbCBBdXRoZW50aWNh dGlvbiIiIgorCitpbXBvcnQgc2l4Citmcm9tIGZsYXNrIGltcG9ydCBjdXJyZW50X2FwcAorZnJv bSBmbGFza19zZWN1cml0eSBpbXBvcnQgbG9naW5fdXNlcgorZnJvbSBhYmMgaW1wb3J0IGFic3Ry YWN0bWV0aG9kLCBhYnN0cmFjdHByb3BlcnR5Citmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdl dHRleHQKKworZnJvbSAucmVnaXN0cnkgaW1wb3J0IEF1dGhTb3VyY2VSZWdpc3RyeQorZnJvbSBw Z2FkbWluLm1vZGVsIGltcG9ydCBVc2VyCisKKworQHNpeC5hZGRfbWV0YWNsYXNzKEF1dGhTb3Vy Y2VSZWdpc3RyeSkKK2NsYXNzIEJhc2VBdXRoZW50aWNhdGlvbihvYmplY3QpOgorCisgICAgREVG QVVMVF9NU0cgPSB7CisgICAgICAgICdVU0VSX0RPRVNfTk9UX0VYSVNUJzogJ1NwZWNpZmllZCB1 c2VyIGRvZXMgbm90IGV4aXN0JywKKyAgICAgICAgJ0xPR0lOX0ZBSUxFRCc6ICdMb2dpbiBmYWls ZWQnLAorICAgICAgICAnRU1BSUxfTk9UX1BST1ZJREVEJzogJ0VtYWlsL1VzZXJuYW1lIG5vdCBw cm92aWRlZCcsCisgICAgICAgICdQQVNTV09SRF9OT1RfUFJPVklERUQnOiAnUGFzc3dvcmQgbm90 IHByb3ZpZGVkJworICAgIH0KKworICAgIEBhYnN0cmFjdHByb3BlcnR5CisgICAgZGVmIGdldF9m cmllbmRseV9uYW1lKGNscyk6CisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAor ICAgIGRlZiBhdXRoZW50aWNhdGUoY2xzKToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHZhbGlk YXRlKHNlbGYsIGZvcm0pOgorICAgICAgICB1c2VybmFtZSA9IGZvcm0uZGF0YVsnZW1haWwnXQor ICAgICAgICBwYXNzd29yZCA9IGZvcm0uZGF0YVsncGFzc3dvcmQnXQorCisgICAgICAgIGlmIHVz ZXJuYW1lIGlzIE5vbmUgb3IgdXNlcm5hbWUgPT0gJyc6CisgICAgICAgICAgICBmb3JtLmVtYWls LmVycm9ycyA9IGxpc3QoZm9ybS5lbWFpbC5lcnJvcnMpCisgICAgICAgICAgICBmb3JtLmVtYWls LmVycm9ycy5hcHBlbmQoZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICBzZWxmLm1lc3NhZ2VzKCdF TUFJTF9OT1RfUFJPVklERUQnKSkpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg aWYgcGFzc3dvcmQgaXMgTm9uZSBvciBwYXNzd29yZCA9PSAnJzoKKyAgICAgICAgICAgIGZvcm0u cGFzc3dvcmQuZXJyb3JzID0gbGlzdChmb3JtLnBhc3N3b3JkLmVycm9ycykKKyAgICAgICAgICAg IGZvcm0ucGFzc3dvcmQuZXJyb3JzLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBzZWxmLm1lc3Nh Z2VzKCdQQVNTV09SRF9OT1RfUFJPVklERUQnKSkKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgbG9naW4oc2VsZiwgZm9ybSk6CisgICAg ICAgIHVzZXJuYW1lID0gZm9ybS5kYXRhWydlbWFpbCddCisgICAgICAgIHVzZXIgPSBnZXRhdHRy KGZvcm0sICd1c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgVXNlci5xdWVyeS5maWx0ZXJf YnkodXNlcm5hbWU9dXNlcm5hbWUpLmZpcnN0KCkpCisKKyAgICAgICAgaWYgdXNlciBpcyBOb25l OgorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbigKKyAgICAgICAgICAg ICAgICBzZWxmLm1lc3NhZ2VzKCdVU0VSX0RPRVNfTk9UX0VYSVNUJykpCisgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsIHNlbGYubWVzc2FnZXMoJ1VTRVJfRE9FU19OT1RfRVhJU1QnKQorCisgICAg ICAgICMgTG9naW4gdXNlciB0aHJvdWdoIGZsYXNrX3NlY3VyaXR5CisgICAgICAgIHN0YXR1cyA9 IGxvZ2luX3VzZXIodXNlcikKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIGN1 cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oc2VsZi5tZXNzYWdlcygnTE9HSU5fRkFJTEVEJykp CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIHNlbGYubWVzc2FnZXMoJ0xPR0lOX0ZBSUxFRCcp CisgICAgICAgIHJldHVybiBUcnVlLCBOb25lCisKKyAgICBkZWYgbWVzc2FnZXMoc2VsZiwgbXNn X2tleSk6CisgICAgICAgIHJldHVybiBzZWxmLkRFRkFVTFRfTVNHW21zZ19rZXldIGlmIG1zZ19r ZXkgaW4gc2VsZi5ERUZBVUxUX01TR1wKKyAgICAgICAgICAgIGVsc2UgTm9uZQorCisKK2NsYXNz IEludGVybmFsQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKKworICAgIGRlZiBn ZXRfZnJpZW5kbHlfbmFtZShjbHMpOgorICAgICAgICByZXR1cm4gZ2V0dGV4dCgiaW50ZXJuYWwi KQorCisgICAgZGVmIHZhbGlkYXRlKHNlbGYsIGZvcm0pOgorICAgICAgICAiIiJVc2VyIHZhbGlk YXRpb24iIiIKKworICAgICAgICAjIEZsYXNrIHNlY3VyaXR5IHZhbGlkYXRpb24KKyAgICAgICAg cmV0dXJuIGZvcm0udmFsaWRhdGVfb25fc3VibWl0KCkKKworICAgIGRlZiBhdXRoZW50aWNhdGUo c2VsZiwgZm9ybSk6CisgICAgICAgIHVzZXJuYW1lID0gZm9ybS5kYXRhWydlbWFpbCddCisgICAg ICAgIHVzZXIgPSBnZXRhdHRyKGZvcm0sICd1c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAg VXNlci5xdWVyeS5maWx0ZXJfYnkodXNlcm5hbWU9dXNlcm5hbWUpLmZpcnN0KCkpCisgICAgICAg IGlmIHVzZXIgYW5kIHVzZXIuaXNfYXV0aGVudGljYXRlZCBhbmQgZm9ybS52YWxpZGF0ZV9vbl9z dWJtaXQoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlLCBOb25lCisgICAgICAgIHJldHVybiBG YWxzZSwgc2VsZi5tZXNzYWdlcygnVVNFUl9ET0VTX05PVF9FWElTVCcpCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvbGRhcC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0 ZS9sZGFwLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYmUyNGVjMTkz Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRlL2xkYXAucHkKQEAg LTAsMCArMSwxODAgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQ b3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkEgYmx1ZXByaW50 IG1vZHVsZSBpbXBsZW1lbnRpbmcgdGhlIGxkYXAgYXV0aGVudGljYXRpb24uIiIiCisKK2ltcG9y dCBzc2wKK2ltcG9ydCBjb25maWcKK2Zyb20gbGRhcDMgaW1wb3J0IENvbm5lY3Rpb24sIFNlcnZl ciwgVGxzLCBBTEwsIEFMTF9BVFRSSUJVVEVTCitmcm9tIGxkYXAzLmNvcmUuZXhjZXB0aW9ucyBp bXBvcnQgTERBUFNvY2tldE9wZW5FcnJvciwgTERBUEJpbmRFcnJvcixcCisgICAgTERBUEludmFs aWRTY29wZUVycm9yLCBMREFQQXR0cmlidXRlRXJyb3IsIExEQVBJbnZhbGlkRmlsdGVyRXJyb3Is XAorICAgIExEQVBTdGFydFRMU0Vycm9yCitmcm9tIGZsYXNrX2JhYmVsZXggaW1wb3J0IGdldHRl eHQKKworZnJvbSAuaW50ZXJuYWwgaW1wb3J0IEJhc2VBdXRoZW50aWNhdGlvbgorZnJvbSBwZ2Fk bWluLm1vZGVsIGltcG9ydCBVc2VyLCBTZXJ2ZXJHcm91cCwgZGIsIFJvbGUKK2Zyb20gZmxhc2tf c2VjdXJpdHkgaW1wb3J0IGxvZ2luX3VzZXIKK2Zyb20gZmxhc2sgaW1wb3J0IGN1cnJlbnRfYXBw Citmcm9tIHBnYWRtaW4udG9vbHMudXNlcl9tYW5hZ2VtZW50IGltcG9ydCBjcmVhdGVfdXNlcgor Cit0cnk6CisgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCitleGNlcHQgSW1w b3J0RXJyb3I6CisgICAgZnJvbSB1cmxwYXJzZSBpbXBvcnQgdXJscGFyc2UKKworCitjbGFzcyBM REFQQXV0aGVudGljYXRpb24oQmFzZUF1dGhlbnRpY2F0aW9uKToKKyAgICAiIiJMZGFwIEF1dGhl bnRpY2F0aW9uIENsYXNzIiIiCisKKyAgICBkZWYgZ2V0X2ZyaWVuZGx5X25hbWUoc2VsZik6Cisg ICAgICAgIHJldHVybiBnZXR0ZXh0KCJsZGFwIikKKworICAgIGRlZiBhdXRoZW50aWNhdGUoc2Vs ZiwgZm9ybSk6CisgICAgICAgIHNlbGYudXNlcm5hbWUgPSBmb3JtLmRhdGFbJ2VtYWlsJ10KKyAg ICAgICAgc2VsZi5wYXNzd29yZCA9IGZvcm0uZGF0YVsncGFzc3dvcmQnXQorCisgICAgICAgIHN0 YXR1cywgbXNnID0gc2VsZi5jb25uZWN0KCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIHN0YXR1cywgbXNnCisKKyAgICAgICAgc3RhdHVzLCB1c2VyX2VtYWls ID0gc2VsZi5zZWFyY2hfbGRhcF91c2VyKCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIHN0YXR1cywgdXNlcl9lbWFpbAorCisgICAgICAgIHJldHVybiBzZWxm Ll9fYXV0b19jcmVhdGVfdXNlcih1c2VyX2VtYWlsKQorCisgICAgZGVmIGNvbm5lY3Qoc2VsZik6 CisgICAgICAgICIiIlNldHVwIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBMREFQIHNlcnZlciBhbmQg YXV0aGVudGljYXRlIHRoZSB1c2VyLgorICAgICAgICAiIiIKKworICAgICAgICAjIFBhcnNlIHRo ZSBzZXJ2ZXIgVVJJCisgICAgICAgIHVyaSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9TRVJWRVJf VVJJJywgTm9uZSkKKworICAgICAgICBpZiB1cmk6CisgICAgICAgICAgICB1cmkgPSB1cmxwYXJz ZSh1cmkpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIFRMUyBjb25maWd1cmF0aW9uIG9iamVjdCBp ZiByZXF1aXJlZAorICAgICAgICB0bHMgPSBOb25lCisgICAgICAgIGlmIHVyaS5zY2hlbWUgPT0g J2xkYXBzJyBvciBjb25maWcuTERBUF9VU0VfU1RBUlRUTFM6CisKKyAgICAgICAgICAgIGNhX2Nl cnRfZmlsZSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9DQV9DRVJUX0ZJTEUnLCBOb25lKQorICAg ICAgICAgICAgY2VydF9maWxlID0gZ2V0YXR0cihjb25maWcsICdMREFQX0NFUlRfRklMRScsIE5v bmUpCisgICAgICAgICAgICBrZXlfZmlsZSA9IGdldGF0dHIoY29uZmlnLCAnTERBUF9LRVlfRklM RScsIE5vbmUpCisgICAgICAgICAgICBjZXJ0X3ZhbGlkYXRlID0gc3NsLkNFUlRfTk9ORQorCisg ICAgICAgICAgICBpZiBjYV9jZXJ0X2ZpbGUgYW5kIGNlcnRfZmlsZSBhbmQga2V5X2ZpbGU6Cisg ICAgICAgICAgICAgICAgY2VydF92YWxpZGF0ZSA9IHNzbC5DRVJUX1JFUVVJUkVECisKKyAgICAg ICAgICAgIHRscyA9IFRscygKKyAgICAgICAgICAgICAgICBsb2NhbF9wcml2YXRlX2tleV9maWxl PWtleV9maWxlLAorICAgICAgICAgICAgICAgIGxvY2FsX2NlcnRpZmljYXRlX2ZpbGU9Y2VydF9m aWxlLAorICAgICAgICAgICAgICAgIHZhbGlkYXRlPWNlcnRfdmFsaWRhdGUsCisgICAgICAgICAg ICAgICAgdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEsCisgICAgICAgICAgICAgICAgY2FfY2Vy dHNfZmlsZT1jYV9jZXJ0X2ZpbGUpCisKKyAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciBvYmpl Y3QKKyAgICAgICAgc2VydmVyID0gU2VydmVyKHVyaS5ob3N0bmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBvcnQ9dXJpLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfc3Ns PSh1cmkuc2NoZW1lID09ICdsZGFwcycpLAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2lu Zm89QUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgdGxzPXRscywKKyAgICAgICAgICAgICAg ICAgICAgICAgIGNvbm5lY3RfdGltZW91dD1jb25maWcuTERBUF9DT05ORUNUSU9OX1RJTUVPVVQp CisKKyAgICAgICAgIyBDcmVhdGUgdGhlIGNvbm5lY3Rpb24KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgdXNlcl9kbiA9ICJ7MH09ezF9LHsyfSIuZm9ybWF0KGNvbmZpZy5MREFQX1VTRVJOQU1F X0FUVFJJQlVURSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz ZWxmLnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbmZpZy5MREFQX0JBU0VfRE4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBDb25uZWN0aW9uKHNlcnZlciwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj11c2VyX2RuLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1zZWxmLnBhc3N3b3JkLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvX2JpbmQ9VHJ1ZQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IExEQVBTb2NrZXRPcGVu RXJyb3IgYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oCisg ICAgICAgICAgICAgICAgIkVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIExEQVAgc2VydmVyOiAlc1xu IiAlIGUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsICJFcnJvciBjb25uZWN0aW5nIHRvIHRo ZSBMREFQIHNlcnZlcjoiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAlIGUu YXJnc1swXQorICAgICAgICBleGNlcHQgTERBUEJpbmRFcnJvciBhcyBlOgorICAgICAgICAgICAg Y3VycmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAiRXJyb3IgYmlu ZGluZyB0byB0aGUgTERBUCBzZXJ2ZXI6ICVzXG4iICUgZSkKKyAgICAgICAgICAgIHJldHVybiBG YWxzZSwgIkVycm9yIGJpbmRpbmcgdG8gdGhlIExEQVAgc2VydmVyOiIgXAorICAgICAgICAgICAg ICAgICAgICAgICAgICAiICVzXG4iICUgZS5hcmdzWzBdCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp b24gYXMgZToKKyAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oCisgICAg ICAgICAgICAgICAgIkVycm9yIGNvbm5lY3RpbmcgdG8gdGhlIExEQVAgc2VydmVyOiAlc1xuIiAl IGUpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UsICJFcnJvciBjb25uZWN0aW5nIHRvIHRoZSBM REFQIHNlcnZlcjoiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAlc1xuIiAlIGUuYXJn c1swXQorCisgICAgICAgICMgRW5hYmxlIFRMUyBpZiBTVEFSVFRMUyBpcyBjb25maWd1cmVkCisg ICAgICAgIGlmIG5vdCB1cmkuc2NoZW1lID09ICdsZGFwcycgYW5kIGNvbmZpZy5MREFQX1VTRV9T VEFSVFRMUzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4uc3Rh cnRfdGxzKCkKKyAgICAgICAgICAgIGV4Y2VwdCBMREFQU3RhcnRUTFNFcnJvciBhcyBlOgorICAg ICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNlcHRpb24oCisgICAgICAgICAgICAg ICAgICAgICJFcnJvciBzdGFydGluZyBUTFM6ICVzXG4iICUgZSkKKyAgICAgICAgICAgICAgICBy ZXR1cm4gRmFsc2UsICJFcnJvciBzdGFydGluZyBUTFM6ICVzXG4iICUgZS5hcmdzWzBdCisKKyAg ICAgICAgcmV0dXJuIFRydWUsIE5vbmUKKworICAgIGRlZiBfX2F1dG9fY3JlYXRlX3VzZXIoc2Vs ZiwgdXNlcl9lbWFpbCk6CisgICAgICAgICIiIkFkZCB0aGUgbGRhcCB1c2VyIHRvIHRoZSBpbnRl cm5hbCBTUUxpdGUgZGF0YWJhc2UuIiIiCisgICAgICAgIGlmIGNvbmZpZy5MREFQX0FVVE9fQ1JF QVRFX1VTRVI6CisgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJfYnkoCisgICAg ICAgICAgICAgICAgdXNlcm5hbWU9c2VsZi51c2VybmFtZSkuZmlyc3QoKQorICAgICAgICAgICAg aWYgdXNlciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVfdXNlcih7Cisg ICAgICAgICAgICAgICAgICAgICd1c2VybmFtZSc6IHNlbGYudXNlcm5hbWUsCisgICAgICAgICAg ICAgICAgICAgICdlbWFpbCc6IHVzZXJfZW1haWwsCisgICAgICAgICAgICAgICAgICAgICdyb2xl JzogMiwKKyAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZSc6IFRydWUsCisgICAgICAgICAgICAg ICAgICAgICdzb3VyY2UnOiAnbGRhcCcKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIHJl 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 LS1naXQgYS93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvX19pbml0X18ucHkgYi93ZWIv cGdhZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi43YWY0NWIxYjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvX19pbml0X18ucHkKQEAgLTAsMCArMSw4IEBACisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMjAsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMg VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisj CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYXV0aGVudGljYXRl L3Rlc3RzL3Rlc3RfbGRhcC5weSBiL3dlYi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS90ZXN0cy90ZXN0 X2xkYXAucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4wMDBmMmQwYjYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9hdXRoZW50aWNhdGUvdGVzdHMvdGVzdF9s ZGFwLnB5CkBAIC0wLDAgKzEsNjggQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4g NCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMCwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Zyb20g cGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKK2Zyb20gcGdhZG1p bi51dGlscyBpbXBvcnQgc2VydmVyX3V0aWxzIGFzIHNlcnZlcl91dGlscworZnJvbSByZWdyZXNz aW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0CitpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCisK KworY2xhc3MgRGFzaGJvYXJkR3JhcGhzVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgorICAg ICIiIgorICAgIFRoaXMgY2xhc3MgdmFsaWRhdGVzIHRoZSB2ZXJzaW9uIGluIHJhbmdlIGZ1bmN0 aW9uYWxpdHkKKyAgICBieSBkZWZpbmluZyBkaWZmZXJlbnQgdmVyc2lvbiBzY2VuYXJpb3M7IHdo ZXJlIGRpY3Qgb2YKKyAgICBwYXJhbWV0ZXJzIGRlc2NyaWJlcyB0aGUgc2NlbmFyaW8gYXBwZW5k ZWQgYnkgdGVzdCBuYW1lLgorICAgICIiIgorCisgICAgc2NlbmFyaW9zID0gWygKKyAgICAgICAg J1Rlc3RDYXNlIGZvciBzZXNzaW9uX3N0YXRzIGdyYXBoJywgZGljdCgKKyAgICAgICAgICAgIGRp ZD0tMSwKKyAgICAgICAgICAgIGNoYXJ0X2RhdGE9eworICAgICAgICAgICAgICAgICdzZXNzaW9u X3N0YXRzJzogWydUb3RhbCcsICdBY3RpdmUnLCAnSWRsZSddLAorICAgICAgICAgICAgfQorICAg ICAgICApKQorICAgIF0KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgcGFzcworCisg ICAgZGVmIGdldFN0YXRzVXJsKHNlbGYsIHNpZD0tMSwgZGlkPS0xLCBjaGFydF9uYW1lcz0nJyk6 CisgICAgICAgIGJhc2VfdXJsID0gJy9kYXNoYm9hcmQvZGFzaGJvYXJkX3N0YXRzJworICAgICAg ICBiYXNlX3VybCA9IGJhc2VfdXJsICsgJy8nICsgc3RyKHNpZCkKKyAgICAgICAgYmFzZV91cmwg Kz0gJy8nICsgc3RyKGRpZCkgaWYgZGlkID4gMCBlbHNlICcnCisgICAgICAgIGJhc2VfdXJsICs9 ICc/Y2hhcnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzCisgICAgICAgIHJldHVybiBiYXNlX3VybAor CisgICAgZGVmIHJ1blRlc3Qoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyX2lkID0gcGFyZW50 X25vZGVfZGljdFsic2VydmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQorICAgICAgICBzZXJ2ZXJfcmVz cG9uc2UgPSBzZXJ2ZXJfdXRpbHMuY29ubmVjdF9zZXJ2ZXIoc2VsZiwgc2VsZi5zZXJ2ZXJfaWQp CisgICAgICAgIGlmIHNlcnZlcl9yZXNwb25zZVsiaW5mbyJdID09ICJTZXJ2ZXIgY29ubmVjdGVk LiI6CisKKyAgICAgICAgICAgIHVybCA9IHNlbGYuZ2V0U3RhdHNVcmwoc2VsZi5zZXJ2ZXJfaWQs IHNlbGYuZGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCIuam9pbihz ZWxmLmNoYXJ0X2RhdGEua2V5cygpKSkKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIuZ2V0KHVybCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1 c19jb2RlLCAyMDApCisKKyAgICAgICAgICAgIHJlc3BfZGF0YSA9IGpzb24ubG9hZHMocmVzcG9u c2UuZGF0YSkKKworICAgICAgICAgICAgIyBBbGwgcmVxdWVzdGVkIGNoYXJ0cyByZWNlaXZlZAor ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKHJlc3BfZGF0YS5rZXlzKCkpLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHNlbGYuY2hhcnRfZGF0YS5rZXlzKCkpKQor CisgICAgICAgICAgICAjIEFsbCByZXF1ZXN0ZWQgY2hhcnRzIGRhdGEgcmVjZWl2ZWQKKyAgICAg ICAgICAgIGZvciBjaGFydF9uYW1lLCBjaGFydF92YWxzIGluIHNlbGYuY2hhcnRfZGF0YS5pdGVt cygpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChyZXNwX2RhdGFbY2hh cnRfbmFtZV0ua2V5cygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQo Y2hhcnRfdmFscykpCisKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv bigiRXJyb3Igd2hpbGUgY29ubmVjdGluZyBzZXJ2ZXIgdG8gYWRkIHRoZSIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAiIGRhdGFiYXNlLiIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6 CisgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CmluZGV4IDMwYWYzZTExYi4uMDli ZGJjMDE1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkKQEAgLTQ1LDYgKzQ1LDcgQEAgZnJvbSBw Z2FkbWluLmJyb3dzZXIucmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcyBpbXBvcnQgXAogZnJv bSBwZ2FkbWluLnV0aWxzLm1hc3Rlcl9wYXNzd29yZCBpbXBvcnQgdmFsaWRhdGVfbWFzdGVyX3Bh c3N3b3JkLCBcCiAgICAgc2V0X21hc3RlcnBhc3NfY2hlY2tfdGV4dCwgY2xlYW51cF9tYXN0ZXJf cGFzc3dvcmQsIGdldF9jcnlwdF9rZXksIFwKICAgICBzZXRfY3J5cHRfa2V5LCBwcm9jZXNzX21h c3RlcnBhc3NfZGlzYWJsZWQKK2Zyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgVXNlcgogCiB0cnk6 CiAgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0IGFzIHVybHJlcQpAQCAtNTgwLDEyICs1ODEsMjAg QEAgZGVmIGluZGV4KCk6CiAKICAgICAgICAgICAgICAgICBmbGFzaChtc2csICd3YXJuaW5nJykK IAorICAgIGF1dGhfb25seV9pbnRlcm5hbCA9IEZhbHNlCisgICAgaWYgbGVuKGNvbmZpZy5BVVRI RU5USUNBVElPTl9TT1VSQ0VTKSA9PSAxXAorICAgICAgICAgICAgYW5kICdpbnRlcm5hbCcgaW4g Y29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVM6CisgICAgICAgIGF1dGhfb25seV9pbnRlcm5h bCA9IFRydWUKKwogICAgIHJlc3BvbnNlID0gUmVzcG9uc2UocmVuZGVyX3RlbXBsYXRlKAogICAg ICAgICBNT0RVTEVfTkFNRSArICIvaW5kZXguaHRtbCIsCi0gICAgICAgIHVzZXJuYW1lPWN1cnJl bnRfdXNlci5lbWFpbCwKKyAgICAgICAgdXNlcm5hbWU9Y3VycmVudF91c2VyLnVzZXJuYW1lLAor ICAgICAgICBhdXRoX3NvdXJjZT1zZXNzaW9uWworICAgICAgICAgICAgJ19hdXRoX3NvdXJjZV9t YW5hZ2VyX29iaiddWydzb3VyY2VfZnJpZW5kbHlfbmFtZSddLAogICAgICAgICBpc19hZG1pbj1j dXJyZW50X3VzZXIuaGFzX3JvbGUoIkFkbWluaXN0cmF0b3IiKSwKICAgICAgICAgbG9nb3V0X3Vy bD1fZ2V0X2xvZ291dF91cmwoKSwKLSAgICAgICAgXz1nZXR0ZXh0CisgICAgICAgIF89Z2V0dGV4 dCwKKyAgICAgICAgYXV0aF9vbmx5X2ludGVybmFsPWF1dGhfb25seV9pbnRlcm5hbAogICAgICkp CiAKICAgICAjIFNldCB0aGUgbGFuZ3VhZ2UgY29va2llIGFmdGVyIGxvZ2luLCBzbyBuZXh0IHRp bWUgdGhlIHVzZXIgd2lsbCBoYXZlIHRoYXQKQEAgLTk5NCw0MyArMTAwMyw2MCBAQCBpZiBoYXNh dHRyKGNvbmZpZywgJ1NFQ1VSSVRZX1JFQ09WRVJBQkxFJykgYW5kIGNvbmZpZy5TRUNVUklUWV9S RUNPVkVSQUJMRToKICAgICAgICAgICAgIGZvcm0gPSBmb3JtX2NsYXNzKCkKIAogICAgICAgICBp ZiBmb3JtLnZhbGlkYXRlX29uX3N1Ym1pdCgpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg ICAgICAgIHNlbmRfcmVzZXRfcGFzc3dvcmRfaW5zdHJ1Y3Rpb25zKGZvcm0udXNlcikKLSAgICAg ICAgICAgIGV4Y2VwdCBTT0NLRVRFcnJvckV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAg ICMgSGFuZGxlIHNvY2tldCBlcnJvcnMgd2hpY2ggYXJlIG5vdCBjb3ZlcmVkIGJ5IFNNVFBFeGNl cHRpb25zLgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKHN0cihlKSwgZXhjX2lu Zm89VHJ1ZSkKLSAgICAgICAgICAgICAgICBmbGFzaChnZXR0ZXh0KHUnU01UUCBTb2NrZXQgZXJy b3I6IHt9XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1J1lvdXIgcGFzc3dvcmQg aGFzIG5vdCBiZWVuIGNoYW5nZWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5m b3JtYXQoZSksCi0gICAgICAgICAgICAgICAgICAgICAgJ2RhbmdlcicpCi0gICAgICAgICAgICAg ICAgaGFzX2Vycm9yID0gVHJ1ZQotICAgICAgICAgICAgZXhjZXB0IChTTVRQQ29ubmVjdEVycm9y LCBTTVRQUmVzcG9uc2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgIFNNVFBTZXJ2ZXJE aXNjb25uZWN0ZWQsIFNNVFBEYXRhRXJyb3IsIFNNVFBIZWxvRXJyb3IsCi0gICAgICAgICAgICAg ICAgICAgIFNNVFBFeGNlcHRpb24sIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yLCBTTVRQU2VuZGVy UmVmdXNlZCwKLSAgICAgICAgICAgICAgICAgICAgU01UUFJlY2lwaWVudHNSZWZ1c2VkKSBhcyBl OgotCi0gICAgICAgICAgICAgICAgIyBIYW5kbGUgc210cCBzcGVjaWZpYyBleGNlcHRpb25zLgot ICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKHN0cihlKSwgZXhjX2luZm89VHJ1ZSkK LSAgICAgICAgICAgICAgICBmbGFzaChnZXR0ZXh0KHUnU01UUCBlcnJvcjoge31cbicKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHUnWW91ciBwYXNzd29yZCBoYXMgbm90IGJlZW4gY2hh bmdlZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLmZvcm1hdChlKSwKLSAgICAg ICAgICAgICAgICAgICAgICAnZGFuZ2VyJykKLSAgICAgICAgICAgICAgICBoYXNfZXJyb3IgPSBU cnVlCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAg IyBIYW5kbGUgb3RoZXIgZXhjZXB0aW9ucy4KLSAgICAgICAgICAgICAgICBsb2dnaW5nLmV4Y2Vw dGlvbihzdHIoZSksIGV4Y19pbmZvPVRydWUpCi0gICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4 dCh1J0Vycm9yOiB7fVxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdZb3VyIHBh c3N3b3JkIGhhcyBub3QgYmVlbiBjaGFuZ2VkLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICkuZm9ybWF0KGUpLAorICAgICAgICAgICAgIyBDaGVjayB0aGUgQXV0aGVudGljYXRpb24g c291cmNlIG9mIHRoZSBVc2VyCisgICAgICAgICAgICB1c2VyID0gVXNlci5xdWVyeS5maWx0ZXJf YnkoCisgICAgICAgICAgICAgICAgZW1haWw9Zm9ybS5kYXRhWydlbWFpbCddLAorICAgICAgICAg ICAgICAgIGF1dGhfc291cmNlPWN1cnJlbnRfYXBwLlBHQURNSU5fREVGQVVMVF9BVVRIX1NPVVJD RQorICAgICAgICAgICAgKS5maXJzdCgpCisKKyAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToK KyAgICAgICAgICAgICAgICAjIElmIHRoZSB1c2VyIGlzIG5vdCBhbiBpbnRlcm5hbCB1c2VyLCBy YWlzZSB0aGUgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCgnWW91ciBh Y2NvdW50IGlzIGF1dGhlbnRpY2F0ZWQgdXNpbmcgYW4gJworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2V4dGVybmFsIHt9IHNvdXJjZS4gJworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9ycyBvZiB0aGlzICcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2aWNlIGlmIHlvdSBuZWVkIHRvIHJlc2V0IHlv dXIgcGFzc3dvcmQuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5mb3JtYXQoZm9y bS51c2VyLmF1dGhfc291cmNlKSwKICAgICAgICAgICAgICAgICAgICAgICAnZGFuZ2VyJykKICAg ICAgICAgICAgICAgICBoYXNfZXJyb3IgPSBUcnVlCisgICAgICAgICAgICBpZiBub3QgaGFzX2Vy cm9yOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VuZF9yZXNl dF9wYXNzd29yZF9pbnN0cnVjdGlvbnMoZm9ybS51c2VyKQorICAgICAgICAgICAgICAgIGV4Y2Vw dCBTT0NLRVRFcnJvckV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICAjIEhhbmRs ZSBzb2NrZXQgZXJyb3JzIHdoaWNoIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgIyBjb3Zl cmVkIGJ5IFNNVFBFeGNlcHRpb25zLgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmV4Y2Vw dGlvbihzdHIoZSksIGV4Y19pbmZvPVRydWUpCisgICAgICAgICAgICAgICAgICAgIGZsYXNoKGdl dHRleHQodSdTTVRQIFNvY2tldCBlcnJvcjoge31cbicKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1J1lvdXIgcGFzc3dvcmQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuJworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuZm9ybWF0KGUpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAnZGFuZ2VyJykKKyAgICAgICAgICAgICAgICAgICAgaGFzX2Vycm9yID0gVHJ1 ZQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoU01UUENvbm5lY3RFcnJvciwgU01UUFJlc3BvbnNl RXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgU01UUFNlcnZlckRpc2Nvbm5lY3Rl ZCwgU01UUERhdGFFcnJvciwgU01UUEhlbG9FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAg IFNNVFBFeGNlcHRpb24sIFNNVFBBdXRoZW50aWNhdGlvbkVycm9yLAorICAgICAgICAgICAgICAg ICAgICAgICAgU01UUFNlbmRlclJlZnVzZWQsIFNNVFBSZWNpcGllbnRzUmVmdXNlZCkgYXMgZToK KworICAgICAgICAgICAgICAgICAgICAjIEhhbmRsZSBzbXRwIHNwZWNpZmljIGV4Y2VwdGlvbnMu CisgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKHN0cihlKSwgZXhjX2luZm89 VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCh1J1NNVFAgZXJyb3I6IHt9 XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdZb3VyIHBhc3N3b3JkIGhh cyBub3QgYmVlbiBjaGFuZ2VkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAp LmZvcm1hdChlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RhbmdlcicpCisgICAgICAg ICAgICAgICAgICAgIGhhc19lcnJvciA9IFRydWUKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICMgSGFuZGxlIG90aGVyIGV4Y2VwdGlv bnMuCisgICAgICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXhjZXB0aW9uKHN0cihlKSwgZXhjX2lu Zm89VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgZmxhc2goZ2V0dGV4dCh1J0Vycm9yOiB7fVxu JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnWW91ciBwYXNzd29yZCBoYXMg bm90IGJlZW4gY2hhbmdlZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5m b3JtYXQoZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICdkYW5nZXInKQorICAgICAgICAg ICAgICAgICAgICBoYXNfZXJyb3IgPSBUcnVlCiAKICAgICAgICAgICAgIGlmIHJlcXVlc3QuanNv biBpcyBOb25lIGFuZCBub3QgaGFzX2Vycm9yOgogICAgICAgICAgICAgICAgIGRvX2ZsYXNoKCpn ZXRfbWVzc2FnZSgnUEFTU1dPUkRfUkVTRVRfUkVRVUVTVCcsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGVtYWlsPWZvcm0udXNlci5lbWFpbCkpCiAKICAgICAgICAgaWYg cmVxdWVzdC5qc29uIGFuZCBub3QgaGFzX2Vycm9yOgotICAgICAgICAgICAgcmV0dXJuIF9yZW5k ZXJfanNvbihmb3JtLCBpbmNsdWRlX3VzZXI9RmFsc2UpCisgICAgICAgICAgICByZXR1cm4gZGVm YXVsdF9yZW5kZXJfanNvbihmb3JtLCBpbmNsdWRlX3VzZXI9RmFsc2UpCiAKICAgICAgICAgcmV0 dXJuIF9zZWN1cml0eS5yZW5kZXJfdGVtcGxhdGUoCiAgICAgICAgICAgICBjb25maWdfdmFsdWUo J0ZPUkdPVF9QQVNTV09SRF9URU1QTEFURScpLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90 ZW1wbGF0ZXMvYnJvd3Nlci9pbmRleC5odG1sCmluZGV4IDY4MmMyM2Q2NS4uYjM4OWI5NTc0IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2luZGV4Lmh0 bWwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9pbmRleC5odG1s CkBAIC0xNDIsNiArMTQyLDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKGUpewogICAgICAg ICAgICAgICAgIDxhIGhyZWY9IiMiIGNsYXNzPSJuYXYtbGluayBkcm9wZG93bi10b2dnbGUiIGRh dGEtdG9nZ2xlPSJkcm9wZG93biIKICAgICAgICAgICAgICAgICAgICByb2xlPSJidXR0b24iIGFy aWEtZXhwYW5kZWQ9ImZhbHNlIiBpZD0ibmF2YmFyLXVzZXIiPjwvYT4KICAgICAgICAgICAgICAg ICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCIgcm9sZT0ibWVu dSI+CisgICAgICAgICAgICAgICAgICAgIHslIGlmIGF1dGhfb25seV9pbnRlcm5hbCAlfQogICAg ICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0i ZHJvcGRvd24taXRlbSIgaHJlZj0iIyIgb25jbGljaz0icGdBZG1pbi5Ccm93c2VyLlVzZXJNYW5h Z2VtZW50LmNoYW5nZV9wYXNzd29yZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3t7IHVy bF9mb3IoJ2Jyb3dzZXIuY2hhbmdlX3Bhc3N3b3JkJykgfX0nCkBAIC0xNTAsNiArMTUxLDcgQEAg d2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgICAgICAgICAgICAgICAgPC9h PgogICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICA8bGkgY2xh c3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIHslIGVuZGlm ICV9CiAgICAgICAgICAgICAgICAgICAgIHslIGlmIGlzX2FkbWluICV9CiAgICAgICAgICAgICAg ICAgICAgIDxsaT48YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaHJlZj0iIyIgb25jbGljaz0icGdB ZG1pbi5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnNob3dfdXNlcnMoKSI+e3sgXygnVXNlcnMnKSB9 fTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlk ZXIiPjwvbGk+CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93 c2VyL21hY3Jvcy9ncmF2YXRhcl9pY29uLm1hY3JvIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1w bGF0ZXMvYnJvd3Nlci9tYWNyb3MvZ3JhdmF0YXJfaWNvbi5tYWNybwppbmRleCA3MmVjOTdlNTku LmVkZWQ4YjY4YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJv d3Nlci9tYWNyb3MvZ3JhdmF0YXJfaWNvbi5tYWNybworKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3RlbXBsYXRlcy9icm93c2VyL21hY3Jvcy9ncmF2YXRhcl9pY29uLm1hY3JvCkBAIC00LDUgKzQs NSBAQCB3ZSB3aWxsIG5vdCBhc3NvY2lhdGUgb3VyIGFwcGxpY2F0aW9uIHdpdGggR3JhdmF0YXIg bW9kdWxlIHdoaWNoIHdpbGwgbWFrZQogJ2dyYXZhdGFyJyBmaWx0ZXIgdW5hdmFpbGFibGUgaW4g SmluamEgdGVtcGxhdGVzCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyN9CiB7JSBtYWNybyBQUkVQQVJFX0hU TUwoKSAtJX0KLSc8aW1nIHNyYyA9ICJ7eyB1c2VybmFtZSB8IGdyYXZhdGFyIH19IiB3aWR0aCA9 ICIxOCIgaGVpZ2h0ID0gIjE4IiBhbHQgPSAiR3JhdmF0YXIgaW1hZ2UgZm9yIHt7IHVzZXJuYW1l IH19IiA+IHt7IHVzZXJuYW1lIH19IDxzcGFuIGNsYXNzPSJjYXJldCI+PC9zcGFuPic7CisnPGlt ZyBzcmMgPSAie3sgdXNlcm5hbWUgfCBncmF2YXRhciB9fSIgd2lkdGggPSAiMTgiIGhlaWdodCA9 ICIxOCIgYWx0ID0gIkdyYXZhdGFyIGltYWdlIGZvciB7eyB1c2VybmFtZSB9fSIgPiB7eyB1c2Vy bmFtZSB9fSAoe3thdXRoX3NvdXJjZX19KSA8c3BhbiBjbGFzcz0iY2FyZXQiPjwvc3Bhbj4nOwog eyUtIGVuZG1hY3JvICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rl c3RfY2hhbmdlX3Bhc3N3b3JkLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2No YW5nZV9wYXNzd29yZC5weQppbmRleCAwNGM0OWEyM2UuLmZiODZlNGRmZCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90ZXN0X2NoYW5nZV9wYXNzd29yZC5weQorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3Rlc3RzL3Rlc3RfY2hhbmdlX3Bhc3N3b3JkLnB5CkBAIC05NSw2 ICs5NSw3IEBAIGNsYXNzIENoYW5nZVBhc3N3b3JkVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3Ip OgogICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KAogICAgICAgICAgICAg ICAgICcvdXNlcl9tYW5hZ2VtZW50L3VzZXIvJywKICAgICAgICAgICAgICAgICBkYXRhPWpzb24u ZHVtcHMoZGljdCgKKyAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU9c2VsZi51c2VybmFtZSwK ICAgICAgICAgICAgICAgICAgICAgZW1haWw9c2VsZi51c2VybmFtZSwKICAgICAgICAgICAgICAg ICAgICAgbmV3UGFzc3dvcmQ9c2VsZi5wYXNzd29yZCwKICAgICAgICAgICAgICAgICAgICAgY29u ZmlybVBhc3N3b3JkPXNlbGYucGFzc3dvcmQsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3Rlc3RzL3Rlc3RfbGRhcF9sb2dpbi5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVzdHMv dGVzdF9sZGFwX2xvZ2luLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4u MmY1OWRmZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZXN0cy90 ZXN0X2xkYXBfbG9naW4ucHkKQEAgLTAsMCArMSw4OCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMK KyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorIworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKworaW1wb3J0IGNvbmZpZyBhcyBhcHBfY29uZmlnCitmcm9tIHBnYWRtaW4udXRpbHMucm91 dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9yCitmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3Rf dXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3Nl dHVwIGltcG9ydCBjb25maWdfZGF0YQorCisKK2NsYXNzIExEQVBMb2dpblRlc3RDYXNlKEJhc2VU ZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAgICBUaGlzIGNsYXNzIGNoZWNrcyBsZGFwIGxvZ2lu IGZ1bmN0aW9uYWxpdHkKKyAgICBieSB2YWxpZGF0aW5nIGRpZmZlcmVudCBzY2VuYXJpb3MuCisg ICAgIiIiCisKKyAgICBzY2VuYXJpb3MgPSBbCisgICAgICAgICgnTERBUCBBdXRoZW50aWNhdGlv bicsIGRpY3QoCisgICAgICAgICAgICBjb25maWdfa2V5X3BhcmFtPSdsZGFwJywKKyAgICAgICAg ICAgIGlzX2dyYXZ0YXJfaW1hZ2VfY2hlY2s9RmFsc2UpKSwKKyAgICAgICAgKCdMREFQIFdpdGgg U1NMIEF1dGhlbnRpY2F0aW9uJywgZGljdCgKKyAgICAgICAgICAgIGNvbmZpZ19rZXlfcGFyYW09 J2xkYXBfd2l0aF9zc2wnLAorICAgICAgICAgICAgaXNfZ3JhdnRhcl9pbWFnZV9jaGVjaz1GYWxz ZSkpLAorICAgICAgICAoJ0xEQVAgV2l0aCBUTFMgQXV0aGVudGljYXRpb24nLCBkaWN0KAorICAg ICAgICAgICAgY29uZmlnX2tleV9wYXJhbT0nbGRhcF93aXRoX3RscycsCisgICAgICAgICAgICBp c19ncmF2dGFyX2ltYWdlX2NoZWNrPUZhbHNlKSksCisgICAgXQorCisgICAgQGNsYXNzbWV0aG9k CisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgIiIiCisgICAgICAgIFdlIG5lZWQg dG8gbG9nb3V0IHRoZSB0ZXN0IGNsaWVudAorICAgICAgICBhcyB3ZSBhcmUgdGVzdGluZyBsZGFw IGxvZ2luIHNjZW5hcmlvcy4KKyAgICAgICAgIiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0 KCkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHlwZShjb25maWdfZGF0YVsn bGRhcF9jb25maWcnXSkgaXMgbGlzdCBhbmRcCisgICAgICAgICAgICAgICAgbGVuKGNvbmZpZ19k YXRhWydsZGFwX2NvbmZpZyddKSA+IDAgYW5kXAorICAgICAgICAgICAgICAgIHNlbGYuY29uZmln X2tleV9wYXJhbSBpbiBjb25maWdfZGF0YVsnbGRhcF9jb25maWcnXVswXToKKyAgICAgICAgICAg IGxkYXBfY29uZmlnID0gY29uZmlnX2RhdGFbJ2xkYXBfY29uZmlnJ11bMF1bc2VsZi5jb25maWdf a2V5X3BhcmFtXQorCisgICAgICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJD RVMgPSBbJ2xkYXAnXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0FVVE9fQ1JFQVRFX1VT RVIgPSBUcnVlCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfU0VSVkVSX1VSSSA9IGxkYXBf Y29uZmlnWyd1cmknXQorICAgICAgICAgICAgYXBwX2NvbmZpZy5MREFQX0JBU0VfRE4gPSBsZGFw X2NvbmZpZ1snYmFzZV9kbiddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfVVNFUk5BTUVf QVRUUklCVVRFID0gbGRhcF9jb25maWdbCisgICAgICAgICAgICAgICAgJ3VzZXJuYW1lX2F0cidd CisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfU0VBUkNIX0JBU0VfRE4gPSBsZGFwX2NvbmZp Z1sKKyAgICAgICAgICAgICAgICAnc2VhcmNoX2Jhc2VfZG4nXQorICAgICAgICAgICAgYXBwX2Nv bmZpZy5MREFQX1NFQVJDSF9GSUxURVIgPSBsZGFwX2NvbmZpZ1snc2VhcmNoX2ZpbHRlciddCisg ICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfVVNFX1NUQVJUVExTID0gbGRhcF9jb25maWdbJ3Vz ZV9zdGFydHRscyddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBfQ0FfQ0VSVF9GSUxFID0g bGRhcF9jb25maWdbJ2NhX2NlcnRfZmlsZSddCisgICAgICAgICAgICBhcHBfY29uZmlnLkxEQVBf Q0VSVF9GSUxFID0gbGRhcF9jb25maWdbJ2NlcnRfZmlsZSddCisgICAgICAgICAgICBhcHBfY29u ZmlnLkxEQVBfS0VZX0ZJTEUgPSBsZGFwX2NvbmZpZ1sna2V5X2ZpbGUnXQorICAgICAgICBlbHNl OgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKKyAgICAgICAgICAgICAgICAiTERBUCBjb25m aWcgbm90IHNldC4iCisgICAgICAgICAgICApCisKKyAgICBkZWYgcnVuVGVzdChzZWxmKToKKyAg ICAgICAgIiIiVGhpcyBmdW5jdGlvbiBjaGVja3MgbG9naW4gZnVuY3Rpb25hbGl0eS4iIiIKKyAg ICAgICAgdXNlcm5hbWUgPSBjb25maWdfZGF0YVsncGdBZG1pbjRfbGRhcF9jcmVkZW50aWFscydd Wydsb2dpbl91c2VybmFtZSddCisgICAgICAgIHBhc3N3b3JkID0gY29uZmlnX2RhdGFbJ3BnQWRt aW40X2xkYXBfY3JlZGVudGlhbHMnXVsnbG9naW5fcGFzc3dvcmQnXQorCisgICAgICAgIHJlcyA9 IHNlbGYudGVzdGVyLmxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCwgVHJ1ZSkKKworICAgICAgICBy ZXNwZGF0YSA9ICdHcmF2YXRhciBpbWFnZSBmb3IgJXMnICVcCisgICAgICAgICAgICAgICAgICAg Y29uZmlnX2RhdGFbJ3BnQWRtaW40X2xkYXBfY3JlZGVudGlhbHMnXVsnbG9naW5fdXNlcm5hbWUn XQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcGRhdGEgaW4gcmVzLmRhdGEuZGVjb2RlKCd1 dGY4JykpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYudGVzdGVyLmxv Z291dCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgor ICAgICAgICAiIiIKKyAgICAgICAgV2UgbmVlZCB0byBhZ2FpbiBsb2dpbiB0aGUgdGVzdCBjbGll bnQgYXMgc29vbiBhcyB0ZXN0IHNjZW5hcmlvcworICAgICAgICBmaW5pc2hlcy4KKyAgICAgICAg IiIiCisgICAgICAgIGNscy50ZXN0ZXIubG9nb3V0KCkKKyAgICAgICAgYXBwX2NvbmZpZy5BVVRI RU5USUNBVElPTl9TT1VSQ0VTID0gWydpbnRlcm5hbCddCisgICAgICAgIHV0aWxzLmxvZ2luX3Rl c3Rlcl9hY2NvdW50KGNscy50ZXN0ZXIpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3Rlc3RzL3Rlc3RfbGRhcF93aXRoX21vY2tpbmcucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Rl c3RzL3Rlc3RfbGRhcF93aXRoX21vY2tpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi45MDM4NTI0MmMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3Rlc3RzL3Rlc3RfbGRhcF93aXRoX21vY2tpbmcucHkKQEAgLTAsMCArMSw4NCBAQAorIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworIworIyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIwLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisj IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaW1wb3J0IHN5cworaW1wb3J0IGNvbmZpZyBhcyBhcHBf Y29uZmlnCitmcm9tIHBnYWRtaW4udXRpbHMucm91dGUgaW1wb3J0IEJhc2VUZXN0R2VuZXJhdG9y Citmcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMg dXRpbHMKK2Zyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQorZnJv bSBwZ2FkbWluLmF1dGhlbnRpY2F0ZS5yZWdpc3RyeSBpbXBvcnQgQXV0aFNvdXJjZVJlZ2lzdHJ5 CisKK2lmIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgMyk6CisgICAgZnJvbSBtb2NrIGltcG9ydCBw YXRjaAorZWxzZToKKyAgICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCisKKworY2xh c3MgTERBUExvZ2luTW9ja1Rlc3RDYXNlKEJhc2VUZXN0R2VuZXJhdG9yKToKKyAgICAiIiIKKyAg ICBUaGlzIGNsYXNzIGNoZWNrcyBsZGFwIGxvZ2luIGZ1bmN0aW9uYWxpdHkgYnkgbW9ja2luZwor ICAgIGxkYXAgY29ubmVjdGlvbiBhbmQgbGRhcCBzZWFyY2ggZnVuY3Rpb25hbGl0eS4KKyAgICAi IiIKKworICAgIHNjZW5hcmlvcyA9IFsKKyAgICAgICAgKCdMREFQIEF1dGhlbnRpY2F0aW9uIHdp dGggQXV0byBDcmVhdGUgVXNlcicsIGRpY3QoCisgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2xk YXAnXSwKKyAgICAgICAgICAgIGF1dG9fY3JlYXRlX3VzZXI9VHJ1ZSwKKyAgICAgICAgICAgIHVz ZXJuYW1lPSdsZGFwX3VzZXInLAorICAgICAgICAgICAgcGFzc3dvcmQ9J2xkYXBfcGFzcycpKSwK KyAgICAgICAgKCdMREFQIEF1dGhlbnRpY2F0aW9uIHdpdGhvdXQgQXV0byBDcmVhdGUgVXNlcics IGRpY3QoCisgICAgICAgICAgICBhdXRoX3NvdXJjZT1bJ2xkYXAnXSwKKyAgICAgICAgICAgIGF1 dG9fY3JlYXRlX3VzZXI9RmFsc2UsCisgICAgICAgICAgICB1c2VybmFtZT0nbGRhcF91c2VyJywK KyAgICAgICAgICAgIHBhc3N3b3JkPSdsZGFwX3Bhc3MnKSksCisgICAgICAgICgnTERBUCArIElu dGVybmFsIEF1dGhlbnRpY2F0aW9uJywgZGljdCgKKyAgICAgICAgICAgIGF1dGhfc291cmNlPVsn bGRhcCcsICdpbnRlcm5hbCddLAorICAgICAgICAgICAgYXV0b19jcmVhdGVfdXNlcj1GYWxzZSwK KyAgICAgICAgICAgIHVzZXJuYW1lPWNvbmZpZ19kYXRhWworICAgICAgICAgICAgICAgICdwZ0Fk bWluNF9sb2dpbl9jcmVkZW50aWFscyddWydsb2dpbl91c2VybmFtZSddLAorICAgICAgICAgICAg cGFzc3dvcmQ9Y29uZmlnX2RhdGFbCisgICAgICAgICAgICAgICAgJ3BnQWRtaW40X2xvZ2luX2Ny ZWRlbnRpYWxzJ11bJ2xvZ2luX3Bhc3N3b3JkJ10KKyAgICAgICAgKSkKKyAgICBdCisKKyAgICBA Y2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICAiIiIKKyAgICAg ICAgV2UgbmVlZCB0byBsb2dvdXQgdGhlIHRlc3QgY2xpZW50IGFzIHdlIGFyZSB0ZXN0aW5nCisg ICAgICAgIGxkYXAgbG9naW4gc2NlbmFyaW9zLgorICAgICAgICAiIiIKKyAgICAgICAgY2xzLnRl c3Rlci5sb2dvdXQoKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBhcHBfY29uZmln LkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBzZWxmLmF1dGhfc291cmNlCisgICAgICAgIGFwcF9j b25maWcuTERBUF9BVVRPX0NSRUFURV9VU0VSID0gc2VsZi5hdXRvX2NyZWF0ZV91c2VyCisKKyAg ICBAcGF0Y2gub2JqZWN0KEF1dGhTb3VyY2VSZWdpc3RyeS5yZWdpc3RyeVsnbGRhcCddLCAnY29u bmVjdCcsCisgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9W1RydWUsICJEb25lIl0pCisg ICAgQHBhdGNoLm9iamVjdChBdXRoU291cmNlUmVnaXN0cnkucmVnaXN0cnlbJ2xkYXAnXSwgJ3Nl YXJjaF9sZGFwX3VzZXInLAorICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVtUcnVlLCAn J10pCisgICAgZGVmIHJ1blRlc3Qoc2VsZiwgY29ubl9tb2NrX29iaiwgc2VhcmNoX21vY2tfb2Jq KToKKyAgICAgICAgIiIiVGhpcyBmdW5jdGlvbiBjaGVja3MgbGRhcCBsb2dpbiBmdW5jdGlvbmFs aXR5LiIiIgorCisgICAgICAgIHJlcyA9IHNlbGYudGVzdGVyLmxvZ2luKHNlbGYudXNlcm5hbWUs IHNlbGYucGFzc3dvcmQsIFRydWUpCisgICAgICAgIHJlc3BkYXRhID0gJ0dyYXZhdGFyIGltYWdl IGZvciAlcycgJSBzZWxmLnVzZXJuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwZGF0 YSBpbiByZXMuZGF0YS5kZWNvZGUoJ3V0ZjgnKSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToK KyAgICAgICAgc2VsZi50ZXN0ZXIubG9nb3V0KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl ZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgICIiIgorICAgICAgICBXZSBuZWVkIHRvIGFn YWluIGxvZ2luIHRoZSB0ZXN0IGNsaWVudCBhcyBzb29uIGFzIHRlc3Qgc2NlbmFyaW9zCisgICAg ICAgIGZpbmlzaGVzLgorICAgICAgICAiIiIKKyAgICAgICAgY2xzLnRlc3Rlci5sb2dvdXQoKQor ICAgICAgICBhcHBfY29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMgPSBbJ2ludGVybmFsJ10K KyAgICAgICAgdXRpbHMubG9naW5fdGVzdGVyX2FjY291bnQoY2xzLnRlc3RlcikKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vbW9kZWwvX19p bml0X18ucHkKaW5kZXggZjU4OGU0MDFjLi5lM2FmNjYwYjAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL21vZGVsL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL21vZGVsL19faW5pdF9fLnB5 CkBAIC0yOSw3ICsyOSw3IEBAIGZyb20gZmxhc2tfc3FsYWxjaGVteSBpbXBvcnQgU1FMQWxjaGVt eQogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotU0NIRU1BX1ZFUlNJT04gPSAyNAorU0NIRU1BX1ZF UlNJT04gPSAyNQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIwpAQCAtNjYsMTMgKzY2LDE1IEBAIGNs YXNzIFVzZXIoZGIuTW9kZWwsIFVzZXJNaXhpbik6CiAgICAgIiIiRGVmaW5lIGEgdXNlciBvYmpl Y3QiIiIKICAgICBfX3RhYmxlbmFtZV9fID0gJ3VzZXInCiAgICAgaWQgPSBkYi5Db2x1bW4oZGIu SW50ZWdlciwgcHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICBlbWFpbCA9IGRiLkNvbHVtbihkYi5TdHJp bmcoMjU2KSwgdW5pcXVlPVRydWUsIG51bGxhYmxlPUZhbHNlKQorICAgIGVtYWlsID0gZGIuQ29s dW1uKGRiLlN0cmluZygyNTYpLCBudWxsYWJsZT1UcnVlKQorICAgIHVzZXJuYW1lID0gZGIuQ29s dW1uKGRiLlN0cmluZyg2NCksIHVuaXF1ZT1UcnVlLCBudWxsYWJsZT1GYWxzZSkKICAgICBwYXNz d29yZCA9IGRiLkNvbHVtbihkYi5TdHJpbmcoMjU2KSkKICAgICBhY3RpdmUgPSBkYi5Db2x1bW4o ZGIuQm9vbGVhbigpLCBudWxsYWJsZT1GYWxzZSkKICAgICBjb25maXJtZWRfYXQgPSBkYi5Db2x1 bW4oZGIuRGF0ZVRpbWUoKSkKICAgICBtYXN0ZXJwYXNzX2NoZWNrID0gZGIuQ29sdW1uKGRiLlN0 cmluZygyNTYpKQogICAgIHJvbGVzID0gZGIucmVsYXRpb25zaGlwKCdSb2xlJywgc2Vjb25kYXJ5 PXJvbGVzX3VzZXJzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tyZWY9ZGIuYmFj a3JlZigndXNlcnMnLCBsYXp5PSdkeW5hbWljJykpCisgICAgYXV0aF9zb3VyY2UgPSBkYi5Db2x1 bW4oZGIuU3RyaW5nKDE2KSwgdW5pcXVlPVRydWUsIG51bGxhYmxlPUZhbHNlKQogCiAKIGNsYXNz IFNldHRpbmcoZGIuTW9kZWwpOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3Nl Y3VyaXR5L2ZpZWxkcy5odG1sIGIvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L2ZpZWxk cy5odG1sCmluZGV4IGVmYjEyNmIyZS4uYzUwNWRhMzY2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi90ZW1wbGF0ZXMvc2VjdXJpdHkvZmllbGRzLmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vdGVtcGxh dGVzL3NlY3VyaXR5L2ZpZWxkcy5odG1sCkBAIC05LDMgKzksMTQgQEAKICAgICB7JSBlbmRpZiAl fQogPC9kaXY+CiB7JSBlbmRtYWNybyAlfQoreyUgbWFjcm8gcmVuZGVyX3VzZXJuYW1lX3dpdGhf ZXJyb3JzKGZpZWxkLCB0eXBlKSAlfQorPGRpdiBjbGFzcz0iZm9ybS1ncm91cCBtYi0zIHslIGlm IGZpZWxkLmVycm9ycyAlfSBoYXMtZXJyb3J7JSBlbmRpZiAlfSI+CisgICAgPGlucHV0IGNsYXNz PSJmb3JtLWNvbnRyb2wiIHBsYWNlaG9sZGVyPSJ7eyBmaWVsZC5sYWJlbC50ZXh0IH19IC8gVXNl cm5hbWUiIG5hbWU9Int7IGZpZWxkLm5hbWUgfX0iCisgICAgICAgICAgIHR5cGU9InslIGlmIHR5 cGUgJX17eyB0eXBlIH19eyUgZWxzZSAlfXt7IGZpZWxkLnR5cGUgfX17JSBlbmRpZiAlfSIgYXV0 b2ZvY3VzPgorICAgIHslIGlmIGZpZWxkLmVycm9ycyAlfQorICAgIHslIGZvciBlcnJvciBpbiBm aWVsZC5lcnJvcnMgJX0KKyAgICA8c3BhbiBjbGFzcz0iZm9ybS10ZXh0Ij57eyBlcnJvciB9fTwv c3Bhbj4KKyAgICB7JSBlbmRmb3IgJX0KKyAgICB7JSBlbmRpZiAlfQorPC9kaXY+Cit7JSBlbmRt YWNybyAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL3NlY3VyaXR5L2xvZ2lu X3VzZXIuaHRtbCBiL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9zZWN1cml0eS9sb2dpbl91c2VyLmh0 bWwKaW5kZXggNzUxNWMyYzJhLi4yZTkyZDdiMTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rl bXBsYXRlcy9zZWN1cml0eS9sb2dpbl91c2VyLmh0bWwKKysrIGIvd2ViL3BnYWRtaW4vdGVtcGxh dGVzL3NlY3VyaXR5L2xvZ2luX3VzZXIuaHRtbApAQCAtNywxMCArNywxMCBAQAogeyUgYmxvY2sg cGFuZWxfdGl0bGUgJX17eyBfKCdMb2dpbicpIH19eyUgZW5kYmxvY2sgJX0KIHslIGJsb2NrIHBh bmVsX2JvZHkgJX0KIHslIGlmIGNvbmZpZy5TRVJWRVJfTU9ERSAlfQotPGZvcm0gYWN0aW9uPSJ7 eyB1cmxfZm9yX3NlY3VyaXR5KCdsb2dpbicpIH19IiBtZXRob2Q9IlBPU1QiIG5hbWU9ImxvZ2lu X3VzZXJfZm9ybSI+Cis8Zm9ybSBhY3Rpb249Int7IHVybF9mb3IoJ2F1dGhlbnRpY2F0ZS5sb2dp bicpIH19IiBtZXRob2Q9IlBPU1QiIG5hbWU9ImxvZ2luX3VzZXJfZm9ybSI+CiAgICAge3sgbG9n aW5fdXNlcl9mb3JtLmhpZGRlbl90YWcoKSB9fQogICAgIHslIHNldCB1c2VyX2xhbmd1YWdlID0g cmVxdWVzdC5jb29raWVzLmdldCgnUEdBRE1JTl9MQU5HVUFHRScpIG9yICdlbicgJX0KLSAgICB7 eyByZW5kZXJfZmllbGRfd2l0aF9lcnJvcnMobG9naW5fdXNlcl9mb3JtLmVtYWlsLCAidGV4dCIp IH19CisgICAge3sgcmVuZGVyX3VzZXJuYW1lX3dpdGhfZXJyb3JzKGxvZ2luX3VzZXJfZm9ybS5l bWFpbCwgInRleHQiKSB9fQogICAgIHt7IHJlbmRlcl9maWVsZF93aXRoX2Vycm9ycyhsb2dpbl91 c2VyX2Zvcm0ucGFzc3dvcmQsICJwYXNzd29yZCIpIH19CiAgICAgPGJ1dHRvbiBjbGFzcz0iYnRu IGJ0bi1wcmltYXJ5IGJ0bi1ibG9jayBidG4tbG9naW4iIHR5cGU9InN1Ym1pdCIgdmFsdWU9Int7 IF8oJ0xvZ2luJykgfX0iPnt7IF8oJ0xvZ2luJykgfX08L2J1dHRvbj4KICAgICA8ZGl2IGNsYXNz PSJmb3JtLWdyb3VwIHJvdyBtYi0zIGMgdXNlci1sYW5ndWFnZSI+CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvcGFuZWwuaHRtbCBiL3dlYi9wZ2FkbWluL3RlbXBs YXRlcy9zZWN1cml0eS9wYW5lbC5odG1sCmluZGV4IDdkZTFkOWQ5MC4uMTQ1MmRlOGNhIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvcGFuZWwuaHRtbAorKysgYi93 ZWIvcGdhZG1pbi90ZW1wbGF0ZXMvc2VjdXJpdHkvcGFuZWwuaHRtbApAQCAtMSw1ICsxLDUgQEAK IHslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGZyb20gInNlY3VyaXR5L2ZpZWxkcy5odG1s IiBpbXBvcnQgcmVuZGVyX2ZpZWxkX3dpdGhfZXJyb3JzICV9Cit7JSBmcm9tICJzZWN1cml0eS9m aWVsZHMuaHRtbCIgaW1wb3J0IHJlbmRlcl9maWVsZF93aXRoX2Vycm9ycywgcmVuZGVyX3VzZXJu YW1lX3dpdGhfZXJyb3JzICV9CiB7JSBibG9jayBib2R5ICV9CiA8ZGl2IGNsYXNzPSJjb250YWlu ZXItZmx1aWQgaC0xMDAgbG9naW5fcGFnZSI+CiAgICAgeyUgaWYgY29uZmlnLkxPR0lOX0JBTk5F UiBpcyBkZWZpbmVkIGFuZCBjb25maWcuTE9HSU5fQkFOTkVSICE9ICIiICV9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkgYi93ZWIvcGdh ZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0X18ucHkKaW5kZXggNTUzNjUxNzNmLi43 NjIyNjQ1YTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9f X2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvX19pbml0 X18ucHkKQEAgLTc0LDcgKzc0LDggQEAgY2xhc3MgVXNlck1hbmFnZW1lbnRNb2R1bGUoUGdBZG1p bk1vZHVsZSk6CiAgICAgICAgICAgICAndXNlcl9tYW5hZ2VtZW50LnJvbGVzJywgJ3VzZXJfbWFu YWdlbWVudC5yb2xlJywKICAgICAgICAgICAgICd1c2VyX21hbmFnZW1lbnQudXBkYXRlX3VzZXIn LCAndXNlcl9tYW5hZ2VtZW50LmRlbGV0ZV91c2VyJywKICAgICAgICAgICAgICd1c2VyX21hbmFn ZW1lbnQuY3JlYXRlX3VzZXInLCAndXNlcl9tYW5hZ2VtZW50LnVzZXJzJywKLSAgICAgICAgICAg ICd1c2VyX21hbmFnZW1lbnQudXNlcicsIGN1cnJlbnRfYXBwLmxvZ2luX21hbmFnZXIubG9naW5f dmlldworICAgICAgICAgICAgJ3VzZXJfbWFuYWdlbWVudC51c2VyJywgY3VycmVudF9hcHAubG9n aW5fbWFuYWdlci5sb2dpbl92aWV3LAorICAgICAgICAgICAgJ3VzZXJfbWFuYWdlbWVudC5hdXRo X3NvdXJjZXMnLCAndXNlcl9tYW5hZ2VtZW50LmF1dGhfc291cmNlcycKICAgICAgICAgXQogCiAK QEAgLTEwMCw3ICsxMDEsNyBAQCBkZWYgdmFsaWRhdGVfdXNlcihkYXRhKToKICAgICAgICAgZWxz ZToKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbihfKCJQYXNzd29yZHMgZG8gbm90IG1hdGNo LiIpKQogCi0gICAgaWYgJ2VtYWlsJyBpbiBkYXRhIGFuZCBkYXRhWydlbWFpbCddICE9ICIiOgor ICAgIGlmICdlbWFpbCcgaW4gZGF0YSBhbmQgZGF0YVsnZW1haWwnXSBhbmQgZGF0YVsnZW1haWwn XSAhPSAiIjoKICAgICAgICAgaWYgZW1haWxfZmlsdGVyLm1hdGNoKGRhdGFbJ2VtYWlsJ10pOgog ICAgICAgICAgICAgbmV3X2RhdGFbJ2VtYWlsJ10gPSBkYXRhWydlbWFpbCddCiAgICAgICAgIGVs c2U6CkBAIC0xMTIsNiArMTEzLDEyIEBAIGRlZiB2YWxpZGF0ZV91c2VyKGRhdGEpOgogICAgIGlm ICdhY3RpdmUnIGluIGRhdGEgYW5kIGRhdGFbJ2FjdGl2ZSddICE9ICIiOgogICAgICAgICBuZXdf ZGF0YVsnYWN0aXZlJ10gPSBkYXRhWydhY3RpdmUnXQogCisgICAgaWYgJ3VzZXJuYW1lJyBpbiBk YXRhIGFuZCBkYXRhWyd1c2VybmFtZSddICE9ICIiOgorICAgICAgICBuZXdfZGF0YVsndXNlcm5h bWUnXSA9IGRhdGFbJ3VzZXJuYW1lJ10KKworICAgIGlmICdzb3VyY2UnIGluIGRhdGEgYW5kIGRh dGFbJ3NvdXJjZSddICE9ICIiOgorICAgICAgICBuZXdfZGF0YVsnYXV0aF9zb3VyY2UnXSA9IGRh dGFbJ3NvdXJjZSddCisKICAgICByZXR1cm4gbmV3X2RhdGEKIAogCkBAIC0xNTUsNiArMTYyLDcg QEAgZGVmIGN1cnJlbnRfdXNlcl9pbmZvKCk6CiAgICAgICAgICAgICBlbHNlICdmYWxzZScsCiAg ICAgICAgICAgICBhbGxvd19zYXZlX3R1bm5lbF9wYXNzd29yZD0ndHJ1ZScKICAgICAgICAgICAg IGlmIGNvbmZpZy5BTExPV19TQVZFX1RVTk5FTF9QQVNTV09SRCBlbHNlICdmYWxzZScsCisgICAg ICAgICAgICBhdXRoX3NvdXJjZXM9Y29uZmlnLkFVVEhFTlRJQ0FUSU9OX1NPVVJDRVMsCiAgICAg ICAgICksCiAgICAgICAgIHN0YXR1cz0yMDAsCiAgICAgICAgIG1pbWV0eXBlPSJhcHBsaWNhdGlv bi9qYXZhc2NyaXB0IgpAQCAtMTgwLDkgKzE4OCwxMSBAQCBkZWYgdXNlcih1aWQpOgogICAgICAg ICB1ID0gVXNlci5xdWVyeS5nZXQodWlkKQogCiAgICAgICAgIHJlcyA9IHsnaWQnOiB1LmlkLAor ICAgICAgICAgICAgICAgJ3VzZXJuYW1lJzogdS51c2VybmFtZSwKICAgICAgICAgICAgICAgICdl bWFpbCc6IHUuZW1haWwsCiAgICAgICAgICAgICAgICAnYWN0aXZlJzogdS5hY3RpdmUsCi0gICAg ICAgICAgICAgICAncm9sZSc6IHUucm9sZXNbMF0uaWQKKyAgICAgICAgICAgICAgICdyb2xlJzog dS5yb2xlc1swXS5pZCwKKyAgICAgICAgICAgICAgICdzb3VyY2VzJzogdS5hdXRoX3NvdXJjZQog ICAgICAgICAgICAgICAgfQogICAgIGVsc2U6CiAgICAgICAgIHVzZXJzID0gVXNlci5xdWVyeS5h bGwoKQpAQCAtMTkwLDkgKzIwMCwxMSBAQCBkZWYgdXNlcih1aWQpOgogICAgICAgICB1c2Vyc19k YXRhID0gW10KICAgICAgICAgZm9yIHUgaW4gdXNlcnM6CiAgICAgICAgICAgICB1c2Vyc19kYXRh LmFwcGVuZCh7J2lkJzogdS5pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNl cm5hbWUnOiB1LnVzZXJuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbWFp bCc6IHUuZW1haWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FjdGl2ZSc6IHUu YWN0aXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb2xlJzogdS5yb2xlc1sw XS5pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb2xlJzogdS5yb2xlc1swXS5p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlJzogdS5hdXRoX3NvdXJj ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pCiAKICAgICAgICAgcmVzID0gdXNl cnNfZGF0YQpAQCAtMjE1LDExICsyMjcsMjkgQEAgZGVmIGNyZWF0ZSgpOgogICAgICAgICByZXF1 ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcKICAgICApCiAKLSAgICBmb3IgZiBpbiAoJ2VtYWls JywgJ3JvbGUnLCAnYWN0aXZlJywgJ25ld1Bhc3N3b3JkJywgJ2NvbmZpcm1QYXNzd29yZCcpOgor ICAgIHN0YXR1cywgcmVzID0gY3JlYXRlX3VzZXIoZGF0YSkKKworICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgIHJlc3BvbnNlPXJlcywKKyAgICAgICAg c3RhdHVzPTIwMAorICAgICkKKworCitkZWYgY3JlYXRlX3VzZXIoZGF0YSk6CisgICAgaWYgJ3Nv dXJjZScgaW4gZGF0YSBhbmQgZGF0YVsnc291cmNlJ10gIT0gJ2ludGVybmFsJzoKKyAgICAgICAg cmVxX3BhcmFtcyA9ICgndXNlcm5hbWUnLCAncm9sZScsICdhY3RpdmUnLCAnc291cmNlJykKKyAg ICBlbHNlOgorICAgICAgICByZXFfcGFyYW1zID0gKCdlbWFpbCcsICdyb2xlJywgJ2FjdGl2ZScs ICduZXdQYXNzd29yZCcsCisgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpcm1QYXNzd29yZCcp CisKKyAgICBmb3IgZiBpbiByZXFfcGFyYW1zOgogICAgICAgICBpZiBmIGluIGRhdGEgYW5kIGRh dGFbZl0gIT0gJyc6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAg ICAgICAgcmV0dXJuIGJhZF9yZXF1ZXN0KGVycm9ybXNnPV8oIk1pc3NpbmcgZmllbGQ6ICd7MH0n Ii5mb3JtYXQoZikpKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBfKCJNaXNzaW5nIGZpZWxk OiAnezB9JyIuZm9ybWF0KGYpKQogCiAgICAgdHJ5OgogICAgICAgICBuZXdfZGF0YSA9IHZhbGlk YXRlX3VzZXIoZGF0YSkKQEAgLTIyOCwxMyArMjU4LDIzIEBAIGRlZiBjcmVhdGUoKToKICAgICAg ICAgICAgIG5ld19kYXRhWydyb2xlcyddID0gW1JvbGUucXVlcnkuZ2V0KG5ld19kYXRhWydyb2xl cyddKV0KIAogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcmV0dXJuIGJhZF9y ZXF1ZXN0KGVycm9ybXNnPV8oc3RyKGUpKSkKKyAgICAgICAgcmV0dXJuIEZhbHNlLCBzdHIoZSkK IAogICAgIHRyeToKLSAgICAgICAgdXNyID0gVXNlcihlbWFpbD1uZXdfZGF0YVsnZW1haWwnXSwK KworICAgICAgICB1c2VybmFtZSA9IG5ld19kYXRhWyd1c2VybmFtZSddIGlmICd1c2VybmFtZScg aW4gbmV3X2RhdGEgXAorICAgICAgICAgICAgZWxzZSBuZXdfZGF0YVsnZW1haWwnXQorICAgICAg ICBlbWFpbCA9IG5ld19kYXRhWydlbWFpbCddIGlmICdlbWFpbCcgaW4gbmV3X2RhdGEgZWxzZSBO b25lCisgICAgICAgIHBhc3N3b3JkID0gbmV3X2RhdGFbJ3Bhc3N3b3JkJ10gaWYgJ3Bhc3N3b3Jk JyBpbiBuZXdfZGF0YSBlbHNlIE5vbmUKKyAgICAgICAgc291cmNlID0gbmV3X2RhdGFbJ3NvdXJj ZSddIGlmICdzb3VyY2UnIGluIG5ld19kYXRhIFwKKyAgICAgICAgICAgIGVsc2UgY3VycmVudF9h cHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhfU09VUkNFCisKKyAgICAgICAgdXNyID0gVXNlcih1c2Vy bmFtZT11c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICBlbWFpbD1lbWFpbCwKICAgICAgICAg ICAgICAgICAgICByb2xlcz1uZXdfZGF0YVsncm9sZXMnXSwKICAgICAgICAgICAgICAgICAgICBh Y3RpdmU9bmV3X2RhdGFbJ2FjdGl2ZSddLAotICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPW5l d19kYXRhWydwYXNzd29yZCddKQorICAgICAgICAgICAgICAgICAgIHBhc3N3b3JkPXBhc3N3b3Jk LAorICAgICAgICAgICAgICAgICAgIGF1dGhfc291cmNlPXNvdXJjZSkKICAgICAgICAgZGIuc2Vz c2lvbi5hZGQodXNyKQogICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgICAgICMgQWRk IGRlZmF1bHQgc2VydmVyIGdyb3VwIGZvciBuZXcgdXNlci4KQEAgLTI0MiwxOCArMjgyLDE1IEBA IGRlZiBjcmVhdGUoKToKICAgICAgICAgZGIuc2Vzc2lvbi5hZGQoc2VydmVyX2dyb3VwKQogICAg ICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg ICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKyAgICAg ICAgcmV0dXJuIEZhbHNlLCBzdHIoZSkKIAotICAgIHJlcyA9IHsnaWQnOiB1c3IuaWQsCi0gICAg ICAgICAgICdlbWFpbCc6IHVzci5lbWFpbCwKLSAgICAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3Rp dmUsCi0gICAgICAgICAgICdyb2xlJzogdXNyLnJvbGVzWzBdLmlkCi0gICAgICAgICAgIH0KLQot ICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAotICAgICAgICByZXNwb25zZT1yZXMsCi0gICAgICAg IHN0YXR1cz0yMDAKLSAgICApCisgICAgcmV0dXJuIFRydWUsIHsKKyAgICAgICAgJ2lkJzogdXNy LmlkLAorICAgICAgICAndXNlcm5hbWUnOiB1c3IudXNlcm5hbWUsCisgICAgICAgICdlbWFpbCc6 IHVzci5lbWFpbCwKKyAgICAgICAgJ2FjdGl2ZSc6IHVzci5hY3RpdmUsCisgICAgICAgICdyb2xl JzogdXNyLnJvbGVzWzBdLmlkCisgICAgfQogCiAKIEBibHVlcHJpbnQucm91dGUoCkBAIC0zMzcs OSArMzc0LDExIEBAIGRlZiB1cGRhdGUodWlkKToKICAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQo KQogCiAgICAgICAgIHJlcyA9IHsnaWQnOiB1c3IuaWQsCisgICAgICAgICAgICAgICAndXNlcm5h bWUnOiB1c3IudXNlcm5hbWUsCiAgICAgICAgICAgICAgICAnZW1haWwnOiB1c3IuZW1haWwsCiAg ICAgICAgICAgICAgICAnYWN0aXZlJzogdXNyLmFjdGl2ZSwKLSAgICAgICAgICAgICAgICdyb2xl JzogdXNyLnJvbGVzWzBdLmlkCisgICAgICAgICAgICAgICAncm9sZSc6IHVzci5yb2xlc1swXS5p ZCwKKyAgICAgICAgICAgICAgICdzb3VyY2UnOiB1c3IuYXV0aF9zb3VyY2UKICAgICAgICAgICAg ICAgIH0KIAogICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKQEAgLTM4NCwzICs0MjMsMTcg QEAgZGVmIHJvbGUocmlkKToKICAgICAgICAgcmVzcG9uc2U9cmVzLAogICAgICAgICBzdGF0dXM9 MjAwCiAgICAgKQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9hdXRoX3NvdXJjZXMvJywg bWV0aG9kcz1bJ0dFVCddLCBlbmRwb2ludD0nYXV0aF9zb3VyY2VzJworKQorZGVmIGF1dGhfc291 cmNlcygpOgorICAgIHNvdXJjZXMgPSBbXQorICAgIGZvciBzb3VyY2UgaW4gY29uZmlnLkFVVEhF TlRJQ0FUSU9OX1NPVVJDRVM6CisgICAgICAgIHNvdXJjZXMuYXBwZW5kKHsnbGFiZWwnOiBzb3Vy Y2UsICd2YWx1ZSc6IHNvdXJjZX0pCisKKyAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgcmVzcG9uc2U9c291cmNlcywKKyAgICAgICAgc3RhdHVzPTIwMAorICAgICkKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9tYW5h Z2VtZW50LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91 c2VyX21hbmFnZW1lbnQuanMKaW5kZXggMmIxZWQxNzI3Li5hODhhMmM0NTAgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMvdXNlcl9tYW5hZ2Vt ZW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC9zdGF0aWMvanMv dXNlcl9tYW5hZ2VtZW50LmpzCkBAIC05LDEyICs5LDEyIEBACiAKIGRlZmluZShbCiAgICdzb3Vy Y2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywg J3BnYWRtaW4uYWxlcnRpZnlqcycsCi0gICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAn YmFja2dyaWQnLCAnYmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyLm5vZGUnLAorICAncGdhZG1p bi5icm93c2VyJywgJ2JhY2tib25lJywgJ2JhY2tncmlkJywgJ2JhY2tmb3JtJywgJ3BnYWRtaW4u YnJvd3Nlci5ub2RlJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAogICAncGdhZG1pbi51c2VyX21hbmFn ZW1lbnQuY3VycmVudF91c2VyJywKICAgJ2JhY2tncmlkLnNlbGVjdC5hbGwnLCAnYmFja2dyaWQu ZmlsdGVyJywKIF0sIGZ1bmN0aW9uKAogICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBhbGVydGlm eSwgcGdCcm93c2VyLCBCYWNrYm9uZSwgQmFja2dyaWQsIEJhY2tmb3JtLAotICBwZ05vZGUsIHVz ZXJJbmZvCisgIHBnTm9kZSwgcGdCYWNrZm9ybSwgdXNlckluZm8KICkgewogCiAgIC8vIGlmIG1v ZHVsZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZWZlciB0byB0aGF0LgpAQCAtMjQsNiArMjQs OCBAQCBkZWZpbmUoWwogCiAgIHZhciBVU0VSVVJMID0gdXJsX2ZvcigndXNlcl9tYW5hZ2VtZW50 LnVzZXJzJyksCiAgICAgUk9MRVVSTCA9IHVybF9mb3IoJ3VzZXJfbWFuYWdlbWVudC5yb2xlcycp LAorICAgIFNPVVJDRVVSTCA9IHVybF9mb3IoJ3VzZXJfbWFuYWdlbWVudC5hdXRoX3NvdXJjZXMn KSwKKyAgICBBVVRIX09OTFlfSU5URVJOQUwgPSAodXNlckluZm9bJ2F1dGhfc291cmNlcyddLmxl bmd0aCAgPT0gMSAmJiB1c2VySW5mb1snYXV0aF9zb3VyY2VzJ10uaW5jbHVkZXMoJ2ludGVybmFs JykpID8gdHJ1ZSA6IGZhbHNlLAogICAgIHVzZXJGaWx0ZXIgPSBmdW5jdGlvbihjb2xsZWN0aW9u KSB7CiAgICAgICByZXR1cm4gKG5ldyBCYWNrZ3JpZC5FeHRlbnNpb24uQ2xpZW50U2lkZUZpbHRl cih7CiAgICAgICAgIGNvbGxlY3Rpb246IGNvbGxlY3Rpb24sCkBAIC0zMyw2ICszNSw0MSBAQCBk ZWZpbmUoWwogICAgICAgfSkpOwogICAgIH07CiAKKyAgLy8gSW50ZWdlciBDZWxsIGZvciBDb2x1 bW5zIExlbmd0aCBhbmQgUHJlY2lzaW9uCisgIHZhciBQYXNzd29yZERlcENlbGwgPSBCYWNrZ3Jp ZC5FeHRlbnNpb24uUGFzc3dvcmREZXBDZWxsID0KKyAgICBCYWNrZ3JpZC5FeHRlbnNpb24uUGFz c3dvcmRDZWxsLmV4dGVuZCh7CisgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAg ICAgQmFja2dyaWQuRXh0ZW5zaW9uLlBhc3N3b3JkQ2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5h cHBseSh0aGlzLCBhcmd1bWVudHMpOworICAgICAgICBCYWNrZ3JpZC5FeHRlbnNpb24uRGVwZW5k ZW50Q2VsbC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOworICAg ICAgfSwKKyAgICAgIGRlcGVuZGVudENoYW5nZWQ6IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgdGhp cy4kZWwuZW1wdHkoKTsKKyAgICAgICAgdmFyIG1vZGVsID0gdGhpcy5tb2RlbCwKKyAgICAgICAg ICBjb2x1bW4gPSB0aGlzLmNvbHVtbiwKKyAgICAgICAgICBlZGl0YWJsZSA9IHRoaXMuY29sdW1u LmdldCgnZWRpdGFibGUnKSwKKyAgICAgICAgICBpc19lZGl0YWJsZSA9IF8uaXNGdW5jdGlvbihl ZGl0YWJsZSkgPyAhIWVkaXRhYmxlLmFwcGx5KGNvbHVtbiwgW21vZGVsXSkgOiAhIWVkaXRhYmxl OworCisgICAgICAgIGlmIChpc19lZGl0YWJsZSl7IHRoaXMuJGVsLmFkZENsYXNzKCdlZGl0YWJs ZScpOyB9CisgICAgICAgIGVsc2UgeyB0aGlzLiRlbC5yZW1vdmVDbGFzcygnZWRpdGFibGUnKTsg fQorCisgICAgICAgIHRoaXMuZGVsZWdhdGVFdmVudHMoKTsKKyAgICAgICAgcmV0dXJuIHRoaXM7 CisgICAgICB9LAorICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKKyAgICAgICAgQmFja2dyaWQu TnVtYmVyQ2VsbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisKKyAg ICAgICAgdmFyIG1vZGVsID0gdGhpcy5tb2RlbCwKKyAgICAgICAgICBjb2x1bW4gPSB0aGlzLmNv bHVtbiwKKyAgICAgICAgICBlZGl0YWJsZSA9IHRoaXMuY29sdW1uLmdldCgnZWRpdGFibGUnKSwK KyAgICAgICAgICBpc19lZGl0YWJsZSA9IF8uaXNGdW5jdGlvbihlZGl0YWJsZSkgPyAhIWVkaXRh YmxlLmFwcGx5KGNvbHVtbiwgW21vZGVsXSkgOiAhIWVkaXRhYmxlOworCisgICAgICAgIGlmIChp c19lZGl0YWJsZSl7IHRoaXMuJGVsLmFkZENsYXNzKCdlZGl0YWJsZScpOyB9CisgICAgICAgIGVs c2UgeyB0aGlzLiRlbC5yZW1vdmVDbGFzcygnZWRpdGFibGUnKTsgfQorICAgICAgICByZXR1cm4g dGhpczsKKyAgICAgIH0sCisgICAgICByZW1vdmU6IEJhY2tncmlkLkV4dGVuc2lvbi5EZXBlbmRl bnRDZWxsLnByb3RvdHlwZS5yZW1vdmUsCisgICAgfSk7CisKICAgcGdCcm93c2VyLlVzZXJNYW5h Z2VtZW50ID0gewogICAgIGluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgaWYgKHRoaXMuaW5pdGlh bGl6ZWQpCkBAIC0yMzUsMjAgKzI3Miw2NyBAQCBkZWZpbmUoWwogICAgIC8vIENhbGxiYWNrIHRv IGRyYXcgVXNlciBNYW5hZ2VtZW50IERpYWxvZy4KICAgICBzaG93X3VzZXJzOiBmdW5jdGlvbigp IHsKICAgICAgIGlmICghdXNlckluZm9bJ2lzX2FkbWluJ10pIHJldHVybjsKLSAgICAgIHZhciBS b2xlcyA9IFtdOworICAgICAgdmFyIFJvbGVzID0gW10sCisgICAgICAgIFNvdXJjZXMgPSBbXTsK IAogICAgICAgdmFyIFVzZXJNb2RlbCA9IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CiAg ICAgICAgICAgaWRBdHRyaWJ1dGU6ICdpZCcsCiAgICAgICAgICAgdXJsUm9vdDogVVNFUlVSTCwK ICAgICAgICAgICBkZWZhdWx0czogewogICAgICAgICAgICAgaWQ6IHVuZGVmaW5lZCwKKyAgICAg ICAgICAgIHVzZXJuYW1lOiB1bmRlZmluZWQsCiAgICAgICAgICAgICBlbWFpbDogdW5kZWZpbmVk LAogICAgICAgICAgICAgYWN0aXZlOiB0cnVlLAogICAgICAgICAgICAgcm9sZTogdW5kZWZpbmVk LAogICAgICAgICAgICAgbmV3UGFzc3dvcmQ6IHVuZGVmaW5lZCwKICAgICAgICAgICAgIGNvbmZp cm1QYXNzd29yZDogdW5kZWZpbmVkLAorICAgICAgICAgICAgc291cmNlOiAnaW50ZXJuYWwnLAor ICAgICAgICAgICAgYXV0aE9ubHlJbnRlcm5hbDogQVVUSF9PTkxZX0lOVEVSTkFMLAogICAgICAg ICAgIH0sCiAgICAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgICAgaWQ6ICd1c2VybmFtZScs CisgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnVXNlcm5hbWUnKSwKKyAgICAgICAgICAgIHR5 cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5TdHJpbmdE ZXBDZWxsLAorICAgICAgICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzMw JywKKyAgICAgICAgICAgIGRlcHM6IFsnaWQnXSwKKyAgICAgICAgICAgIGVkaXRhYmxlOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICAgIGlmIChtLmdldCgnYXV0aE9ubHlJbnRlcm5hbCcpKSBy ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSwK KyAgICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICB9LCB7CisgICAgICAgICAg ICBpZDogJ3NvdXJjZScsCisgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQXV0aGVudGljYXRp b24gU291cmNlJyksCisgICAgICAgICAgICB0eXBlOiAndGV4dCcsCisgICAgICAgICAgICBjb250 cm9sOiAnU2VsZWN0MicsCisgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ3VzZXJfbWFuYWdlbWVu dC5hdXRoX3NvdXJjZXMnKSwKKyAgICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhf cGVyY2VudF8zMCcsCisgICAgICAgICAgICB2aXNpYmxlOiBmdW5jdGlvbihtKSB7CisgICAgICAg ICAgICAgIGlmIChtLmdldCgnYXV0aE9ubHlJbnRlcm5hbCcpKSByZXR1cm4gZmFsc2U7CisgICAg ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIGRpc2Fi bGVkOiBmYWxzZSwKKyAgICAgICAgICAgIGNlbGw6ICdTZWxlY3QyJywKKyAgICAgICAgICAgIHNl bGVjdDI6IHsKKyAgICAgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisgICAgICAgICAgICAg IG9wZW5PbkVudGVyOiBmYWxzZSwKKyAgICAgICAgICAgICAgZmlyc3RfZW1wdHk6IGZhbHNlLAor ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIG9wdGlvbnM6IGZ1bmN0aW9uKCkgeworICAgICAg ICAgICAgICByZXR1cm4gU291cmNlczsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBlZGl0 YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBpZiAobSBpbnN0YW5jZW9mIEJhY2ti b25lLkNvbGxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICBpZiAobS5pc05ldygpICYmICFtLmdldCgnYXV0aE9ubHlJ bnRlcm5hbCcpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sIHsKICAgICAgICAgICAgIGlkOiAnZW1haWwn LAogICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0VtYWlsJyksCiAgICAgICAgICAgICB0eXBl OiAndGV4dCcsCkBAIC0yNTYsNiArMzQwLDggQEAgZGVmaW5lKFsKICAgICAgICAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8zMCcsCiAgICAgICAgICAgICBkZXBzOiBbJ2lk J10sCiAgICAgICAgICAgICBlZGl0YWJsZTogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgICBp ZiAoIW0uZ2V0KCdhdXRoT25seUludGVybmFsJykpIHJldHVybiB0cnVlOworCiAgICAgICAgICAg ICAgIGlmIChtIGluc3RhbmNlb2YgQmFja2JvbmUuQ29sbGVjdGlvbikgewogICAgICAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgfQpAQCAtMzI4LDIzICs0MTQsMzggQEAg ZGVmaW5lKFsKICAgICAgICAgICAgIHR5cGU6ICdwYXNzd29yZCcsCiAgICAgICAgICAgICBkaXNh YmxlZDogZmFsc2UsCiAgICAgICAgICAgICBjb250cm9sOiAnaW5wdXQnLAotICAgICAgICAgICAg Y2VsbDogJ3Bhc3N3b3JkJywKKyAgICAgICAgICAgIGNlbGw6IFBhc3N3b3JkRGVwQ2VsbCwKICAg ICAgICAgICAgIGNlbGxIZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsCisgICAgICAg ICAgICBkZXBzOiBbJ3NvdXJjZSddLAorICAgICAgICAgICAgZWRpdGFibGU6IGZ1bmN0aW9uKG0p IHsKKyAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdzb3VyY2UnKSA9PSAnaW50ZXJuYWwnKSB7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9 LAogICAgICAgICAgIH0sIHsKICAgICAgICAgICAgIGlkOiAnY29uZmlybVBhc3N3b3JkJywKICAg ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdDb25maXJtIHBhc3N3b3JkJyksCiAgICAgICAgICAg ICB0eXBlOiAncGFzc3dvcmQnLAogICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAogICAgICAg ICAgICAgY29udHJvbDogJ2lucHV0JywKLSAgICAgICAgICAgIGNlbGw6ICdwYXNzd29yZCcsCisg ICAgICAgICAgICBjZWxsOiBQYXNzd29yZERlcENlbGwsCiAgICAgICAgICAgICBjZWxsSGVhZGVy Q2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAorICAgICAgICAgICAgZWRpdGFibGU6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgICAgaWYgKG0uZ2V0KCdzb3VyY2UnKSA9PSAnaW50ZXJuYWwn KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9LAogICAgICAgICAgIH1dLAogICAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsK ICAgICAgICAgICAgIHZhciBlcnJtc2cgPSBudWxsLAogICAgICAgICAgICAgICBjaGFuZ2VkQXR0 cnMgPSB0aGlzLmNoYW5nZWQgfHwge30sCiAgICAgICAgICAgICAgIGVtYWlsX2ZpbHRlciA9IC9e W2EtekEtWjAtOS4hIyQlJicqK1wvPT9eX2B7fH1+LV0rQFthLXpBLVowLTldKD86W2EtekEtWjAt OS1dezAsNjF9W2EtekEtWjAtOV0pPyg/OlwuW2EtekEtWjAtOV0oPzpbYS16QS1aMC05LV17MCw2 MX1bYS16QS1aMC05XSk/KSokLzsKIAotICAgICAgICAgICAgaWYgKCgnZW1haWwnIGluIGNoYW5n ZWRBdHRycyB8fCAhdGhpcy5pc05ldygpKSAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZW1h aWwnKSkgfHwKKyAgICAgICAgICAgIGlmICh0aGlzLmdldCgnc291cmNlJykgPT0gJ2ludGVybmFs JyAmJiAoJ2VtYWlsJyBpbiBjaGFuZ2VkQXR0cnMgfHwgIXRoaXMuaXNOZXcoKSkgJiYgKF8uaXNV bmRlZmluZWQodGhpcy5nZXQoJ2VtYWlsJykpIHx8CiAgICAgICAgICAgICAgICAgXy5pc051bGwo dGhpcy5nZXQoJ2VtYWlsJykpIHx8CiAgICAgICAgICAgICAgICAgU3RyaW5nKHRoaXMuZ2V0KCdl bWFpbCcpKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSkgewogICAgICAgICAgICAg ICBlcnJtc2cgPSBnZXR0ZXh0KCdFbWFpbCBhZGRyZXNzIGNhbm5vdCBiZSBlbXB0eS4nKTsKQEAg LTM1NSwxNiArNDU2LDYgQEAgZGVmaW5lKFsKICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4 dCgnSW52YWxpZCBlbWFpbCBhZGRyZXNzOiAlcy4nLAogICAgICAgICAgICAgICAgIHRoaXMuZ2V0 KCdlbWFpbCcpCiAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoJ2VtYWlsJywgZXJybXNnKTsKLSAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAg ICAgICAgICAgIH0gZWxzZSBpZiAoISF0aGlzLmdldCgnZW1haWwnKSAmJiB0aGlzLmNvbGxlY3Rp b24ud2hlcmUoewotICAgICAgICAgICAgICAnZW1haWwnOiB0aGlzLmdldCgnZW1haWwnKSwKLSAg ICAgICAgICAgIH0pLmxlbmd0aCA+IDEpIHsKLQotICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0 ZXh0KCdUaGUgZW1haWwgYWRkcmVzcyAlcyBhbHJlYWR5IGV4aXN0cy4nLAotICAgICAgICAgICAg ICAgIHRoaXMuZ2V0KCdlbWFpbCcpCi0gICAgICAgICAgICAgICk7Ci0KICAgICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgnZW1haWwnLCBlcnJtc2cpOwogICAgICAgICAgICAgICByZXR1 cm4gZXJybXNnOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM4NSwxMTEgKzQ3NiwxMTMgQEAg ZGVmaW5lKFsKICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdyb2xlJyk7CiAg ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0aGlzLmlzTmV3KCkpIHsKLSAgICAgICAg ICAgICAgLy8gUGFzc3dvcmQgaXMgY29tcHVsc29yeSBmb3IgbmV3IHVzZXIuCi0gICAgICAgICAg ICAgIGlmICgnbmV3UGFzc3dvcmQnIGluIGNoYW5nZWRBdHRycyAmJiAoXy5pc1VuZGVmaW5lZCh0 aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgfHwKLSAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHRo aXMuZ2V0KCduZXdQYXNzd29yZCcpKSB8fAotICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25l d1Bhc3N3b3JkJykgPT0gJycpKSB7Ci0KLSAgICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0 KCdQYXNzd29yZCBjYW5ub3QgYmUgZW1wdHkgZm9yIHVzZXIgJXMuJywKLSAgICAgICAgICAgICAg ICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykKLSAgICAgICAgICAgICAgICApOworICAgICAg ICAgICAgaWYgKHRoaXMuZ2V0KCdzb3VyY2UnKSA9PSAnaW50ZXJuYWwnKSB7CisgICAgICAgICAg ICAgIGlmICh0aGlzLmlzTmV3KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBQYXNzd29yZCBpcyBj b21wdWxzb3J5IGZvciBuZXcgdXNlci4KKyAgICAgICAgICAgICAgICBpZiAoJ25ld1Bhc3N3b3Jk JyBpbiBjaGFuZ2VkQXR0cnMgJiYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25ld1Bhc3N3b3Jk JykpIHx8CisgICAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCduZXdQYXNzd29y ZCcpKSB8fAorICAgICAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSA9PSAn JykpIHsKIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25ld1Bhc3N3b3Jk JywgZXJybXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAgICAg ICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpKSAmJgot ICAgICAgICAgICAgICAgICFfLmlzTnVsbCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYKLSAg ICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKS5sZW5ndGggPCA2KSB7CisgICAg ICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdQYXNzd29yZCBjYW5ub3QgYmUgZW1wdHkg Zm9yIHVzZXIgJXMuJywKKyAgICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8 ICcnKQorICAgICAgICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgICAgIGVycm1zZyA9IGdl dHRleHQoJ1Bhc3N3b3JkIG11c3QgYmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzIGZvciB1c2VyICVz LicsCi0gICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2VtYWlsJykgfHwgJycpCi0gICAgICAg ICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25ld1Bh c3N3b3JkJywgZXJybXNnKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAg ICAgICAgICAgICAgfSBlbHNlIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmV3UGFzc3dv cmQnKSkgJiYKKyAgICAgICAgICAgICAgICAgICFfLmlzTnVsbCh0aGlzLmdldCgnbmV3UGFzc3dv cmQnKSkgJiYKKyAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpLmxlbmd0 aCA8IDYpIHsKIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25ld1Bhc3N3 b3JkJywgZXJybXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOwotICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmV3 UGFzc3dvcmQnKTsKLSAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgZXJybXNnID0g Z2V0dGV4dCgnUGFzc3dvcmQgbXVzdCBiZSBhdCBsZWFzdCA2IGNoYXJhY3RlcnMgZm9yIHVzZXIg JXMuJywKKyAgICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQorICAg ICAgICAgICAgICAgICAgKTsKIAotICAgICAgICAgICAgICBpZiAoJ2NvbmZpcm1QYXNzd29yZCcg aW4gY2hhbmdlZEF0dHJzICYmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdjb25maXJtUGFzc3dv cmQnKSkgfHwKLSAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCdjb25maXJtUGFz c3dvcmQnKSkgfHwKLSAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQn KSA9PSAnJykpIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25ld1Bh c3N3b3JkJywgZXJybXNnKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAg ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51 bnNldCgnbmV3UGFzc3dvcmQnKTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAg ICBlcnJtc2cgPSBnZXR0ZXh0KCdDb25maXJtIFBhc3N3b3JkIGNhbm5vdCBiZSBlbXB0eSBmb3Ig dXNlciAlcy4nLAotICAgICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQot ICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgaWYgKCdjb25maXJtUGFzc3dvcmQn IGluIGNoYW5nZWRBdHRycyAmJiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY29uZmlybVBhc3N3 b3JkJykpIHx8CisgICAgICAgICAgICAgICAgICAgIF8uaXNOdWxsKHRoaXMuZ2V0KCdjb25maXJt UGFzc3dvcmQnKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ2NvbmZpcm1QYXNz d29yZCcpID09ICcnKSkgewogCi0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgn Y29uZmlybVBhc3N3b3JkJywgZXJybXNnKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNn OwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC51bnNldCgnY29uZmlybVBhc3N3b3JkJyk7Ci0gICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgIGVycm1zZyA9IGdldHRleHQoJ0NvbmZpcm0gUGFzc3dvcmQgY2Fubm90IGJlIGVtcHR5 IGZvciB1c2VyICVzLicsCisgICAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8 fCAnJykKKyAgICAgICAgICAgICAgICAgICk7CiAKLSAgICAgICAgICAgICAgaWYgKCEhdGhpcy5n ZXQoJ25ld1Bhc3N3b3JkJykgJiYgISF0aGlzLmdldCgnY29uZmlybVBhc3N3b3JkJykgJiYKLSAg ICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSAhPSB0aGlzLmdldCgnY29uZmly bVBhc3N3b3JkJykpIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2Nv bmZpcm1QYXNzd29yZCcsIGVycm1zZyk7CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNn OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwudW5zZXQoJ2NvbmZpcm1QYXNzd29yZCcpOworICAgICAgICAgICAgICAgIH0KIAotICAg ICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2ggZm9y IHVzZXIgJXMuJywKLSAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykK LSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGlmICghIXRoaXMuZ2V0KCduZXdQ YXNzd29yZCcpICYmICEhdGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpICYmCisgICAgICAgICAg ICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSAhPSB0aGlzLmdldCgnY29uZmlybVBhc3N3 b3JkJykpIHsKIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NvbmZpcm1Q YXNzd29yZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKLSAgICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQo J2NvbmZpcm1QYXNzd29yZCcpOwotICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBl cnJtc2cgPSBnZXR0ZXh0KCdQYXNzd29yZHMgZG8gbm90IG1hdGNoIGZvciB1c2VyICVzLicsCisg ICAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1haWwnKSB8fCAnJykKKyAgICAgICAgICAg ICAgICAgICk7CiAKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGlmICgoXy5p c1VuZGVmaW5lZCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgfHwgXy5pc051bGwodGhpcy5nZXQo J25ld1Bhc3N3b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dv cmQnKSA9PSAnJykgJiYKLSAgICAgICAgICAgICAgICAoKF8uaXNVbmRlZmluZWQodGhpcy5nZXQo J2NvbmZpcm1QYXNzd29yZCcpKSB8fCBfLmlzTnVsbCh0aGlzLmdldCgnY29uZmlybVBhc3N3b3Jk JykpIHx8Ci0gICAgICAgICAgICAgICAgICB0aGlzLmdldCgnY29uZmlybVBhc3N3b3JkJykgPT0g JycpKSkgewotCi0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCduZXdQYXNz d29yZCcpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSA9PSAn JykgewotICAgICAgICAgICAgICAgICAgdGhpcy5zZXQoewotICAgICAgICAgICAgICAgICAgICAn bmV3UGFzc3dvcmQnOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NvbmZpcm1QYXNzd29yZCcsIGVycm1zZyk7 CisgICAgICAgICAgICAgICAgICByZXR1cm4gZXJybXNnOworICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2NvbmZpcm1QYXNz d29yZCcpOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC51bnNldCgnY29uZmlybVBhc3N3b3JkJyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMu Z2V0KCdjb25maXJtUGFzc3dvcmQnKSA9PSAnJykgewotICAgICAgICAgICAgICAgICAgdGhpcy5z ZXQoewotICAgICAgICAgICAgICAgICAgICAnY29uZmlybVBhc3N3b3JkJzogdW5kZWZpbmVkLAot ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9 IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpKSAmJgotICAg ICAgICAgICAgICAgICFfLmlzTnVsbCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgJiYKLSAgICAg ICAgICAgICAgICAhdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgPT0gJycgJiYKLSAgICAgICAgICAg ICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKS5sZW5ndGggPCA2KSB7CisgICAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdu ZXdQYXNzd29yZCcpKSB8fCBfLmlzTnVsbCh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSkgfHwKKyAg ICAgICAgICAgICAgICAgICAgdGhpcy5nZXQoJ25ld1Bhc3N3b3JkJykgPT0gJycpICYmCisgICAg ICAgICAgICAgICAgICAoKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcp KSB8fCBfLmlzTnVsbCh0aGlzLmdldCgnY29uZmlybVBhc3N3b3JkJykpIHx8CisgICAgICAgICAg ICAgICAgICAgIHRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQnKSA9PSAnJykpKSB7CisKKyAgICAg ICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmV3UGFzc3dvcmQnKTsKKyAgICAg ICAgICAgICAgICAgIGlmICh0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSA9PSAnJykgeworICAgICAg ICAgICAgICAgICAgICB0aGlzLnNldCh7CisgICAgICAgICAgICAgICAgICAgICAgJ25ld1Bhc3N3 b3JkJzogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg ICAgIH0KIAotICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ1Bhc3N3b3JkIG11c3Qg YmUgYXQgbGVhc3QgNiBjaGFyYWN0ZXJzIGZvciB1c2VyICVzLicsCi0gICAgICAgICAgICAgICAg ICAodGhpcy5nZXQoJ2VtYWlsJykgfHwgJycpCi0gICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnY29uZmlybVBhc3N3b3JkJyk7CisgICAg ICAgICAgICAgICAgICBpZiAodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpID09ICcnKSB7Cisg ICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsKKyAgICAgICAgICAgICAgICAgICAgICAnY29u ZmlybVBhc3N3b3JkJzogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpKSAmJgorICAgICAgICAgICAgICAgICAgIV8uaXNOdWxs KHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpKSAmJgorICAgICAgICAgICAgICAgICAgIXRoaXMuZ2V0 KCduZXdQYXNzd29yZCcpID09ICcnICYmCisgICAgICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3 UGFzc3dvcmQnKS5sZW5ndGggPCA2KSB7CiAKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCduZXdQYXNzd29yZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVy cm1zZzsKLSAgICAgICAgICAgICAgfSBlbHNlIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdj b25maXJtUGFzc3dvcmQnKSkgfHwKLSAgICAgICAgICAgICAgICBfLmlzTnVsbCh0aGlzLmdldCgn Y29uZmlybVBhc3N3b3JkJykpIHx8Ci0gICAgICAgICAgICAgICAgdGhpcy5nZXQoJ2NvbmZpcm1Q YXNzd29yZCcpID09ICcnKSB7CisgICAgICAgICAgICAgICAgICBlcnJtc2cgPSBnZXR0ZXh0KCdQ YXNzd29yZCBtdXN0IGJlIGF0IGxlYXN0IDYgY2hhcmFjdGVycyBmb3IgdXNlciAlcy4nLAorICAg ICAgICAgICAgICAgICAgICAodGhpcy5nZXQoJ2VtYWlsJykgfHwgJycpCisgICAgICAgICAgICAg ICAgICApOwogCi0gICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4dCgnQ29uZmlybSBQYXNz d29yZCBjYW5ub3QgYmUgZW1wdHkgZm9yIHVzZXIgJXMuJywKLSAgICAgICAgICAgICAgICAgICh0 aGlzLmdldCgnZW1haWwnKSB8fCAnJykKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbmV3UGFzc3dvcmQnLCBlcnJtc2cpOworICAgICAg ICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF8u aXNVbmRlZmluZWQodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpKSB8fAorICAgICAgICAgICAg ICAgICAgXy5pc051bGwodGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpKSB8fAorICAgICAgICAg ICAgICAgICAgdGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpID09ICcnKSB7CiAKLSAgICAgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjb25maXJtUGFzc3dvcmQnLCBlcnJtc2cpOwot ICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAo ISF0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSAmJiAhIXRoaXMuZ2V0KCdjb25maXJtUGFzc3dvcmQn KSAmJgotICAgICAgICAgICAgICAgIHRoaXMuZ2V0KCduZXdQYXNzd29yZCcpICE9IHRoaXMuZ2V0 KCdjb25maXJtUGFzc3dvcmQnKSkgeworICAgICAgICAgICAgICAgICAgZXJybXNnID0gZ2V0dGV4 dCgnQ29uZmlybSBQYXNzd29yZCBjYW5ub3QgYmUgZW1wdHkgZm9yIHVzZXIgJXMuJywKKyAgICAg ICAgICAgICAgICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQorICAgICAgICAgICAgICAg ICAgKTsKIAotICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRleHQoJ1Bhc3N3b3JkcyBkbyBu b3QgbWF0Y2ggZm9yIHVzZXIgJXMuJywKLSAgICAgICAgICAgICAgICAgICh0aGlzLmdldCgnZW1h aWwnKSB8fCAnJykKLSAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLnNldCgnY29uZmlybVBhc3N3b3JkJywgZXJybXNnKTsKKyAgICAgICAgICAgICAg ICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghIXRoaXMuZ2V0 KCduZXdQYXNzd29yZCcpICYmICEhdGhpcy5nZXQoJ2NvbmZpcm1QYXNzd29yZCcpICYmCisgICAg ICAgICAgICAgICAgICB0aGlzLmdldCgnbmV3UGFzc3dvcmQnKSAhPSB0aGlzLmdldCgnY29uZmly bVBhc3N3b3JkJykpIHsKIAotICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2Nv bmZpcm1QYXNzd29yZCcsIGVycm1zZyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsK LSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ25ld1Bhc3N3b3JkJyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCdjb25maXJtUGFzc3dvcmQnKTsKKyAgICAgICAgICAgICAgICAgIGVycm1zZyA9IGdldHRl eHQoJ1Bhc3N3b3JkcyBkbyBub3QgbWF0Y2ggZm9yIHVzZXIgJXMuJywKKyAgICAgICAgICAgICAg ICAgICAgKHRoaXMuZ2V0KCdlbWFpbCcpIHx8ICcnKQorICAgICAgICAgICAgICAgICAgKTsKKwor ICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnY29uZmlybVBhc3N3b3JkJywg ZXJybXNnKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgICAg ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnbmV3 UGFzc3dvcmQnKTsKKyAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnY29u ZmlybVBhc3N3b3JkJyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICB9CiAgICAg ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTcxNiw3ICs4MDksMTAgQEAg ZGVmaW5lKFsKICAgICAgICAgICAgICAgICAgIHNhdmVVc2VyOiBmdW5jdGlvbihtKSB7CiAgICAg ICAgICAgICAgICAgICAgIHZhciBkID0gbS50b0pTT04odHJ1ZSk7CiAKLSAgICAgICAgICAgICAg ICAgICAgaWYgKG0uaXNOZXcoKSAmJiAoIW0uZ2V0KCdlbWFpbCcpIHx8ICFtLmdldCgncm9sZScp IHx8CisgICAgICAgICAgICAgICAgICAgIGlmKG0uaXNOZXcoKSAmJiBtLmdldCgnYXV0aE9ubHlJ bnRlcm5hbCcpID09PSBmYWxzZSAmJgorICAgICAgICAgICAgICAgICAgICAgKCFtLmdldCgndXNl cm5hbWUnKSB8fCAhbS5nZXQoJ3NvdXJjZScpIHx8ICFtLmdldCgncm9sZScpKSApIHsKKyAgICAg ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAobS5pc05ldygpICYmIG0uZ2V0KCdhdXRoT25seUludGVybmFsJykgPT09IHRydWUgJiYg ICghbS5nZXQoJ2VtYWlsJykgfHwgIW0uZ2V0KCdyb2xlJykgfHwKICAgICAgICAgICAgICAgICAg ICAgICAgICFtLmdldCgnbmV3UGFzc3dvcmQnKSB8fCAhbS5nZXQoJ2NvbmZpcm1QYXNzd29yZCcp IHx8CiAgICAgICAgICAgICAgICAgICAgICAgICBtLmdldCgnbmV3UGFzc3dvcmQnKSAhPSBtLmdl dCgnY29uZmlybVBhc3N3b3JkJykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgLy8gTmV3IHVz ZXIgbW9kZWwgaXMgdmFsaWQgYnV0IHBhcnRpYWxseSBmaWxsZWQgc28gcmV0dXJuIHdpdGhvdXQg c2F2aW5nLgpAQCAtNzQxLDcgKzgzNyw3IEBAIGRlZmluZShbCiAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgbS5zdGFydE5ld1Nlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAg YWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdVc2VyIFwnJXNcJyBzYXZlZC4nLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG0uZ2V0KCdlbWFpbCcpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbS5nZXQoJ3VzZXJuYW1lJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7CiAg ICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6 IGZ1bmN0aW9uKHJlcywganF4aHIpIHsKQEAgLTc5Nyw2ICs4OTMsMjMgQEAgZGVmaW5lKFsKICAg ICAgICAgICAgICAgICAgIH0sIDEwMCk7CiAgICAgICAgICAgICAgICAgfSk7CiAKKyAgICAgICAg ICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICB1cmw6IFNPVVJDRVVSTCwKKyAgICAgICAg ICAgICAgICBtZXRob2Q6ICdHRVQnLAorICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAg ICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAg ICAgICAgICAgICAgICAgIFNvdXJjZXMgPSByZXM7CisgICAgICAgICAgICAgICAgfSkKKyAgICAg ICAgICAgICAgICAuZmFpbChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAg ICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ0Vycm9yJyksCisgICAgICAgICAgICAgICAgICAg ICAgZ2V0dGV4dCgnQ2Fubm90IGxvYWQgdXNlciBTb3VyY2VzLicpCisgICAgICAgICAgICAgICAg ICAgICk7CisgICAgICAgICAgICAgICAgICB9LCAxMDApOworICAgICAgICAgICAgICAgIH0pOwor CiAgICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3ID0gbmV3IEJhY2tncmlkLkdyaWQo ewogICAgICAgICAgICAgICAgIHJvdzogVXNlclJvdywKICAgICAgICAgICAgICAgICBjb2x1bW5z OiBncmlkU2NoZW1hLmNvbHVtbnMsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy91c2Vy X21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdlbWVudC9qcy9jdXJyZW50X3VzZXIuanMg Yi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdl bWVudC9qcy9jdXJyZW50X3VzZXIuanMKaW5kZXggY2ZjYjc3ODEzLi5jNmUyMTAzNDMgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3VzZXJfbWFuYWdlbWVudC90ZW1wbGF0ZXMvdXNlcl9t YW5hZ2VtZW50L2pzL2N1cnJlbnRfdXNlci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy91c2Vy X21hbmFnZW1lbnQvdGVtcGxhdGVzL3VzZXJfbWFuYWdlbWVudC9qcy9jdXJyZW50X3VzZXIuanMK QEAgLTE0LDYgKzE0LDcgQEAgZGVmaW5lKCdwZ2FkbWluLnVzZXJfbWFuYWdlbWVudC5jdXJyZW50 X3VzZXInLCBbXSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICdpc19hZG1pbic6IHt7IGlzX2FkbWlu IH19LAogICAgICAgICAnbmFtZSc6ICd7eyBuYW1lIH19JywKICAgICAgICAgJ2FsbG93X3NhdmVf cGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3Bhc3N3b3JkIH19LAotICAgICAgICAnYWxsb3dfc2F2 ZV90dW5uZWxfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3R1bm5lbF9wYXNzd29yZCB9fQorICAg ICAgICAnYWxsb3dfc2F2ZV90dW5uZWxfcGFzc3dvcmQnOiB7eyBhbGxvd19zYXZlX3R1bm5lbF9w YXNzd29yZCB9fSwKKyAgICAgICAgJ2F1dGhfc291cmNlcyc6IHt7IGF1dGhfc291cmNlcyB9fQog ICAgIH0KIH0pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMv Y3NyZl90ZXN0X2NsaWVudC5weSBiL3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2Nz cmZfdGVzdF9jbGllbnQucHkKaW5kZXggYmIzZjdkYTcwLi40MmFlNTEwYjUgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL3B5dGhvbl90ZXN0X3V0aWxzL2NzcmZfdGVzdF9jbGllbnQucHkKKysr IGIvd2ViL3JlZ3Jlc3Npb24vcHl0aG9uX3Rlc3RfdXRpbHMvY3NyZl90ZXN0X2NsaWVudC5weQpA QCAtMTA5LDcgKzEwOSw3IEBAIGNsYXNzIFRlc3RDbGllbnQodGVzdGluZy5GbGFza0NsaWVudCk6 CiAgICAgICAgICAgICBjc3JmX3Rva2VuID0gc2VsZi5nZW5lcmF0ZV9jc3JmX3Rva2VuKCkKIAog ICAgICAgICByZXMgPSBzZWxmLnBvc3QoCi0gICAgICAgICAgICAnL2xvZ2luJywgZGF0YT1kaWN0 KAorICAgICAgICAgICAgJy9hdXRoZW50aWNhdGUvbG9naW4nLCBkYXRhPWRpY3QoCiAgICAgICAg ICAgICAgICAgZW1haWw9ZW1haWwsIHBhc3N3b3JkPXBhc3N3b3JkLAogICAgICAgICAgICAgICAg IGNzcmZfdG9rZW49Y3NyZl90b2tlbiwKICAgICAgICAgICAgICksCkBAIC0xMjAsNSArMTIwLDUg QEAgY2xhc3MgVGVzdENsaWVudCh0ZXN0aW5nLkZsYXNrQ2xpZW50KToKICAgICAgICAgcmV0dXJu IHJlcwogCiAgICAgZGVmIGxvZ291dChzZWxmKToKLSAgICAgICAgcmVzID0gc2VsZi5nZXQoJy9s b2dvdXQnLCBmb2xsb3dfcmVkaXJlY3RzPUZhbHNlKQorICAgICAgICByZXMgPSBzZWxmLmdldCgn L2xvZ291dD9uZXh0PS9icm93c2VyLycsIGZvbGxvd19yZWRpcmVjdHM9RmFsc2UpCiAgICAgICAg IHNlbGYuY3NyZl90b2tlbiA9IE5vbmUKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL3J1bnRl c3RzLnB5IGIvd2ViL3JlZ3Jlc3Npb24vcnVudGVzdHMucHkKaW5kZXggZWY1YjQ2MzI4Li5mY2Y3 M2E4ODYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNzaW9uL3J1bnRlc3RzLnB5CisrKyBiL3dlYi9y ZWdyZXNzaW9uL3J1bnRlc3RzLnB5CkBAIC0xMTgsNiArMTE4LDExIEBAIGFwcC5QR0FETUlOX1JV TlRJTUUgPSBUcnVlCiBpZiBjb25maWcuU0VSVkVSX01PREUgaXMgVHJ1ZToKICAgICBhcHAuUEdB RE1JTl9SVU5USU1FID0gRmFsc2UKIGFwcC5jb25maWdbJ1dURl9DU1JGX0VOQUJMRUQnXSA9IFRy dWUKKworIyBBdXRoZW50aWNhdGlvbiBzb3VyY2VzCithcHAuUEdBRE1JTl9ERUZBVUxUX0FVVEhf U09VUkNFID0gJ2ludGVybmFsJworYXBwLlBHQURNSU5fRVhURVJOQUxfQVVUSF9TT1VSQ0UgPSAn bGRhcCcKKwogYXBwLnRlc3RfY2xpZW50X2NsYXNzID0gVGVzdENsaWVudAogdGVzdF9jbGllbnQg PSBhcHAudGVzdF9jbGllbnQoKQogdGVzdF9jbGllbnQuc2V0QXBwKGFwcCkKQEAgLTE5NSw2ICsy MDAsOCBAQCBkZWYgZ2V0X3Rlc3RfbW9kdWxlcyhhcmd1bWVudHMpOgogICAgICAgICAgICAgImJy b3dzZXIudGVzdHMudGVzdF9sb2dpbiIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0 X2xvZ291dCIsCiAgICAgICAgICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X3Jlc2V0X3Bhc3N3b3Jk IiwKKyAgICAgICAgICAgICJicm93c2VyLnRlc3RzLnRlc3RfbGRhcF9sb2dpbiIsCisgICAgICAg ICAgICAiYnJvd3Nlci50ZXN0cy50ZXN0X2xkYXBfd2l0aF9tb2NraW5nIiwKICAgICAgICAgXSkK ICAgICBpZiBhcmd1bWVudHNbJ2V4Y2x1ZGUnXSBpcyBub3QgTm9uZToKICAgICAgICAgZXhjbHVk ZV9wa2dzICs9IGFyZ3VtZW50c1snZXhjbHVkZSddLnNwbGl0KCcsJykKZGlmZiAtLWdpdCBhL3dl Yi9yZWdyZXNzaW9uL3Rlc3RfY29uZmlnLmpzb24uaW4gYi93ZWIvcmVncmVzc2lvbi90ZXN0X2Nv bmZpZy5qc29uLmluCmluZGV4IDE1YjEzM2ExOS4uMGExNTFlNjMzIDEwMDY0NAotLS0gYS93ZWIv cmVncmVzc2lvbi90ZXN0X2NvbmZpZy5qc29uLmluCisrKyBiL3dlYi9yZWdyZXNzaW9uL3Rlc3Rf Y29uZmlnLmpzb24uaW4KQEAgLTExLDYgKzExLDQ5IEBACiAgICAgImxvZ2luX3Bhc3N3b3JkIjog IlBBU1NXT1JEIiwKICAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUkBFWEFNUExFLkNPTSIKICAg fSwKKyAgInBnQWRtaW40X2xkYXBfY3JlZGVudGlhbHMiOiB7CisgICAgImxvZ2luX3Bhc3N3b3Jk IjogIlBBU1NXT1JEIiwKKyAgICAibG9naW5fdXNlcm5hbWUiOiAiVVNFUk5BTUUiCisgIH0sCisg ICJsZGFwX2NvbmZpZyI6IFsKKyAgICB7CisgICAgImxkYXAiOiB7CisgICAgICAibmFtZSI6ICJM ZGFwIHNjZW5hcmlvIG5hbWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNTL0hPU1RO QU1FOjM4OSIsCisgICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFyY2hfYmFz ZV9kbiI6ICJTRUFSQ0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJRCIsCisg ICAgICAic2VhcmNoX2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVzZV9zdGFy dHRscyI6IGZhbHNlLAorICAgICAgImNhX2NlcnRfZmlsZSI6ICIiLAorICAgICAgImNlcnRfZmls ZSI6ICIiLAorICAgICAgImtleV9maWxlIjogIiIKKyAgICB9LAorICAgICJsZGFwX3dpdGhfc3Ns IjogeworICAgICAgIm5hbWUiOiAiTGRhcCBzY2VuYXJpbyBuYW1lIgorICAgICAgInVyaSI6ICJs ZGFwczovL0lQLUFERFJFU1MvSE9TVE5BTUU6NjM2IiwKKyAgICAgICJiYXNlX2RuIjogIkJBU0Ut RE4iLAorICAgICAgInNlYXJjaF9iYXNlX2RuIjogIlNFQVJDSC1CQVNFLUROIiwKKyAgICAgICJ1 c2VybmFtZV9hdHIiOiAiVUlEIiwKKyAgICAgICJzZWFyY2hfZmlsdGVyIjogIihvYmplY3RjbGFz cz0qKSIsCisgICAgICAidXNlX3N0YXJ0dGxzIjogZmFsc2UsCisgICAgICAiY2FfY2VydF9maWxl IjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAgICAia2V5X2ZpbGUiOiAiIgorICAg IH0sCisgICAgImxkYXBfd2l0aF90bHMiOiB7CisgICAgICAibmFtZSI6ICJMZGFwIHNjZW5hcmlv IG5hbWUiCisgICAgICAidXJpIjogImxkYXA6Ly9JUC1BRERSRVNTL0hPU1ROQU1FOjM4OSIsCisg ICAgICAiYmFzZV9kbiI6ICJCQVNFLUROIiwKKyAgICAgICJzZWFyY2hfYmFzZV9kbiI6ICJTRUFS Q0gtQkFTRS1ETiIsCisgICAgICAidXNlcm5hbWVfYXRyIjogIlVJRCIsCisgICAgICAic2VhcmNo X2ZpbHRlciI6ICIob2JqZWN0Y2xhc3M9KikiLAorICAgICAgInVzZV9zdGFydHRscyI6IHRydWUs CisgICAgICAiY2FfY2VydF9maWxlIjogIiIsCisgICAgICAiY2VydF9maWxlIjogIiIsCisgICAg ICAia2V5X2ZpbGUiOiAiIgorICAgIH0KKyAgfV0sCiAgICJzZXJ2ZXJfZ3JvdXAiOiAxLAogICAi c2VydmVyX2NyZWRlbnRpYWxzIjogWwogICAgIHsK --000000000000dd06e405a2398b3a--