Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aYVgW-0004Hj-7Q for pgadmin-hackers@arkaria.postgresql.org; Wed, 24 Feb 2016 09:24:40 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aYVgV-0006vc-Ms for pgadmin-hackers@arkaria.postgresql.org; Wed, 24 Feb 2016 09:24:39 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1aYVgQ-0006v0-9E for pgadmin-hackers@postgresql.org; Wed, 24 Feb 2016 09:24:34 +0000 Received: from mail-lf0-x229.google.com ([2a00:1450:4010:c07::229]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aYVgI-0006Ry-Bl for pgadmin-hackers@postgresql.org; Wed, 24 Feb 2016 09:24:33 +0000 Received: by mail-lf0-x229.google.com with SMTP id m1so7824245lfg.0 for ; Wed, 24 Feb 2016 01:24:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=S/69u5lW+txXdcVGbFWuCANTxgdSfp2L2GEJsIkP00s=; b=oQink87YhnajLVL4iijNii63tfkcUfo+j2I3tLggdTOKp2ABcOtjwuea7+y7YHFAYf +hFcSxnlH076EBxnvlABdGkhaXNY0x4E10w2et6SoL9RO4WCFNXBz7RTkyyuYXOk8H0s 5tNS59JI/LieuSg/haBJpGtfdB31H9EBim9Gk+K3zkxXk6v76NjeJon6VAzeeB+sUqCv cYKt1Wju0lis2/l7kCt8s7MbWeBPj77k3hV+EtmL/tyzlV7EXSX/dCi3kJesNSVHENXJ zKb946s/MC3QgR7hqpl+LtiDJ8KZeN0PVZjulKnhhVqhalmtkZRyZ8xc9GhGNyrnVEMm i7AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=S/69u5lW+txXdcVGbFWuCANTxgdSfp2L2GEJsIkP00s=; b=nLazH09Y3ayx2YfPeXtRRrPJp2PO96XzVUHgVHbKegCprnU1UGx3XKe08u0OwrEGHB gKceicJAjmxI/FWEaol+pAFJD/teD3xsD9qvKcejD0craWak1aC8oBqo1bPd2VY0nPwg XDuztOs+Jhx6InY8QBaH8GqGfiiWufxTE8yL+3Mr5J4N/bm5tOyzFSBQ3/OnwP79g0jR xEkI8M6+sEp0Rur2TaQC0FNoL9uDr9ZdrBA8FUa8giIJ+gpfIRzGM5N3LRRNqJx6DSCK wawDLoyqoOyPHdS7V0832SW21NVXmtCKgfhB3sQwX4GfLVKzjRbdl7tFJht27O5brf7o /5jg== X-Gm-Message-State: AG10YOQgy1VQtkJDrrCvm+G7p4w45Gn6ljahggT5BBY8D6ncQQXJkLxqm1DsBqTZcJaZ8L0B0tMx5ghGUUcVAmjn MIME-Version: 1.0 X-Received: by 10.25.29.8 with SMTP id d8mr13888702lfd.92.1456305865579; Wed, 24 Feb 2016 01:24:25 -0800 (PST) Received: by 10.25.159.85 with HTTP; Wed, 24 Feb 2016 01:24:25 -0800 (PST) In-Reply-To: References: Date: Wed, 24 Feb 2016 14:54:25 +0530 Message-ID: Subject: Re: pgAdmin4 PATCH: Domain Module From: Khushboo Vashi To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114020bacdc566052c80a192 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114020bacdc566052c80a192 Content-Type: multipart/alternative; boundary=001a114020bacdc560052c80a190 --001a114020bacdc560052c80a190 Content-Type: text/plain; charset=UTF-8 Hi, I have updated the Domain module as below: - Used 'NodeByListControl' to get schemas, in domains.js file as suggested by Ashesh to avoid code redundancy. - Applied *'Security Label Macro'* Patch (Implemented by Harshal) and removed same changes from the Domain Patch. To test Domain patch, 'Security Label Macro' patch must be applied first as that is not committed yet. Please find attached Domain Module Patch. Thanks, Khushboo On Tue, Feb 23, 2016 at 12:37 PM, Khushboo Vashi < khushboo.vashi@enterprisedb.com> wrote: > Hi, > > Please find attached Revised patch for the Domain module and also my > comments inline as below. > > Thanks, > Khushboo > > On Wed, Feb 3, 2016 at 4:22 PM, Neel Patel > wrote: > >> Hi Khushboo, >> >> Please find below review comments. >> >> - Reverse engineering SQL generation is not implemented for domain node. >> > Done > >> - "Length" and "Precision" fields should be enabled/disabled based on >> the selection of "Base Type" value. >> > This implementation is dependent on the 'Type' module. Once that will be > done, I will merge my code. > >> - Query is not getting generated properly. Some of the parameters are >> not reflected in query. As we have provided Length and Precision value in >> below numeric base type. Also do proper indentation in generated query. >> >> * Wrong Query :- * >> CREATE DOMAIN my_schema.test_123 >> AS "numeric" >> DEFAULT 5 >> ; >> >> * Correct Query :- * >> CREATE DOMAIN my_schema.test_123 >> AS numeric(22,4) >> DEFAULT 5 >> NOT NULL; >> >> Done > >> - After creation of new domain with base type "aclitem" , wrong "Length" >> field value is getting displayed. >> > Done > >> - We are getting error saying "*TypeError: the JSON object must be str, >> not 'dict*'" when we add constraint w >> > ith "NOT VALID" and NO INHERIT. >> > Done > >> - We should add property "System Domain?" when we select any domain node. >> > Done > >> - We think for creation of Security Label, we should include the schema >> name along with domain name. >> *Wrong Query :- * >> SECURITY LABEL FOR pv_label ON DOMAIN test_123 IS 'label_val'; >> Correct Query :- >> SECURITY LABEL FOR pv_label ON DOMAIN .test_123 IS >> 'label_val'; >> >> >> Done > >> Let us know in case of any issues. >> >> Thanks, >> Neel Patel >> >> On Tue, Feb 2, 2016 at 3:51 PM, Khushboo Vashi < >> khushboo.vashi@enterprisedb.com> wrote: >> >>> Hi Neel, >>> >>> Thanks for reviewing my patch. >>> >>> I have modified the code as per your suggestions and also fixed some of >>> the issues got while doing unit testing. >>> Please find attached patch for the same. >>> >>> >>> Thanks, >>> Khushboo >>> >>> >>> >>> On Wed, Jan 20, 2016 at 10:56 PM, Neel Patel < >>> neel.patel@enterprisedb.com> wrote: >>> >>>> Hi Khushboo, >>>> >>>> Please find below review comments. >>>> >>>> - While creating new Domain and clicking on SQL tab, python side we are >>>> getting error saying "*TypeError: 'bool' object is not callable".* >>>> We are not able to create any domain. Fix this issue so that we can >>>> test other functionality. >>>> - Implement the reverse engineering SQL generation for the domain node. >>>> - As per the checklist, remove the "Use Slony" from Constraints tab, as >>>> it is not required. >>>> - No need to pass "*qtIdent=self.qtIdent*" as function argument in >>>> "create" and "getSQL" function in domains/__init__.py >>>> - In "Security" tab , provider and security label fields are not >>>> editable. >>>> - In PG version 9.1, when we update the existing domain name then >>>> "ALTER DOMAIN" is not supported. >>>> Currently there is no checking for the PG version 9.1 and 9.2_plus. >>>> It will fail when we connect to database 9.1 >>>> >>>> e.g. >>>> For PG version 9.1 - Update command should be as below. >>>> ALTER TYPE xyz RENAME TO abc; >>>> For PG version 9.2 onwards - Update command should be as below. >>>> ALTER DOMAIN xyz RENAME TO abc; >>>> >>>> - Some of the SQL file, qtIdent is not used. Please check all the >>>> related SQL files. >>>> e.g. - In update.sql file "data.owner" should be >>>> "conn|qtIdent(data.owner)" >>>> >>>> {% if data.owner %} >>>> ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }} >>>> OWNER TO {{ data.owner }}; >>>> {% endif %} >>>> >>>> Let us know for any issues. >>>> >>>> Thanks, >>>> Neel Patel >>>> >>>> On Wed, Jan 20, 2016 at 2:50 PM, Khushboo Vashi < >>>> khushboo.vashi@enterprisedb.com> wrote: >>>> >>>>> Hi Neel, >>>>> >>>>> Please find updated patch. >>>>> >>>>> Thanks, >>>>> Khushboo >>>>> >>>>> On Wed, Jan 20, 2016 at 12:50 PM, Neel Patel < >>>>> neel.patel@enterprisedb.com> wrote: >>>>> >>>>>> Hi Khushboo, >>>>>> >>>>>> While applying the patch file, we are getting below warnings. >>>>>> >>>>>> ######################################### >>>>>> domains (1).patch:1340: trailing whitespace. >>>>>> oid: undefined, >>>>>> domains (1).patch:1483: trailing whitespace. >>>>>> (nspname = 'pg_catalog' AND EXISTS >>>>>> domains (1).patch:1487: trailing whitespace. >>>>>> OR (nspname = 'information_schema' AND EXISTS >>>>>> domains (1).patch:1489: trailing whitespace. >>>>>> OR (nspname LIKE '_%' AND EXISTS >>>>>> domains (1).patch:1642: trailing whitespace. >>>>>> (select 1 from pg_class where relnamespace=typnamespace and relname >>>>>> = typname and relkind != 'c') AND (typname not like '_%' OR NOT EXISTS >>>>>> (select 1 from pg_class where relnamespace=typnamespace and relname = >>>>>> substring(typname from 2)::name and relkind != 'c')) >>>>>> warning: squelched 4 whitespace errors >>>>>> warning: 9 lines add whitespace errors. >>>>>> ######################################### >>>>>> >>>>>> Can you please remove the whitespace and regenerate the patch ? >>>>>> >>>>>> Thanks, >>>>>> Neel Patel >>>>>> >>>>>> On Wed, Jan 20, 2016 at 12:37 PM, Khushboo Vashi < >>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>> >>>>>>> Resending patch with binary option. >>>>>>> >>>>>>> On Wed, Jan 20, 2016 at 10:18 AM, Khushboo Vashi < >>>>>>> khushboo.vashi@enterprisedb.com> wrote: >>>>>>> >>>>>>>> Hi, >>>>>>>> >>>>>>>> Please find attached patch for the Domain Module. >>>>>>>> >>>>>>>> The patch will be modified after Types module implementation as we >>>>>>>> need to populate Base Type and some Type related validations from the >>>>>>>> Types module. >>>>>>>> >>>>>>>> Please review it and let me know the feedback. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Khushboo >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Sent via pgadmin-hackers mailing list ( >>>>>>> pgadmin-hackers@postgresql.org) >>>>>>> To make changes to your subscription: >>>>>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > --001a114020bacdc560052c80a190 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

I have updated the Do= main module as below:

- Used 'NodeByListControl= ' to get schemas, in domains.js file as suggested by Ashesh to avoid co= de redundancy.

- Applied 'Security Label Macro'= =C2=A0 Patch (Implemented by Harshal) and removed same changes from the Do= main Patch.
=C2=A0 To test Domain patch, 'Security Label = Macro' patch must be applied first as that is not committed yet.

Please find attached Domain Module Patch.

Thanks,
Khushboo



On Tue, Feb 23, 2016 at 12:37 PM, Khushboo Vashi <<= a href=3D"mailto:khushboo.vashi@enterprisedb.com" target=3D"_blank">khushbo= o.vashi@enterprisedb.com> wrote:
Hi,

Please find attached Revised pa= tch for the Domain module=C2=A0 and also my comments inline as below.
Thanks,
Khushboo

On Wed, Feb 3, 201= 6 at 4:22 PM, Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi Khushboo,

Please= find below review comments.

=C2=A0- Reverse engineering SQL= generation is not implemented for domain node.
Done
=C2=A0- "Length" and "Precision" fields s= hould be enabled/disabled based on the selection of "Base Type" v= alue.
This implementation is dependent on the 'Type' module. Once that = will be done, I will merge my code.=C2=A0
= =C2=A0- Query is not getting generated properly. Some of the parameters are= not reflected in query.=C2=A0 As we have provided Length and Precision val= ue in=C2=A0
=C2=A0 =C2=A0below numeric base type. Also do proper = indentation in generated query.

=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0Wrong Query :-=C2=A0
=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 CREATE DOMAIN my_schema.test_123
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 AS "numeric"
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 DEFAULT 5
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;<= /div>

=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0Correct= Query :-=C2=A0
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0CREATE= DOMAIN my_schema.test_123
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0AS n= umeric(22,4)
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0DEFAULT 5
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0NOT NULL;

=C2=A0Done <= /span>
=C2=A0- After creation of new domain w= ith base type "aclitem" , wrong "Length" field value is= getting displayed.
Done=C2=A0
=C2=A0- We are ge= tting error saying "TypeError: the JSON object must be str, not = 9;dict'" when we add constraint w
ith &qu= ot;NOT VALID" and NO INHERIT.
Done=C2=A0
= =C2=A0- We should add property "System Domain?" when we select an= y domain node.
Done=C2=A0
=C2=A0- We think for= creation of Security Label, we should include the schema name along with d= omain name.
=C2=A0 =C2=A0 Wrong Query :-=C2=A0
= =C2=A0 =C2=A0 =C2=A0 =C2=A0SECURITY LABEL FOR pv_label ON DOMAIN test_123 I= S 'label_val';
=C2=A0 =C2=A0 Correct Query :-=C2=A0
=
=C2=A0 =C2=A0 =C2=A0 =C2=A0SECURITY LABEL FOR=C2=A0pv_label=C2=A0ON DO= MAIN <schema_name>.test_123 IS 'label_val';


Done=C2=A0
Let us = know in case of any issues.

Thanks,
Neel= Patel

On Tue, Feb 2, 2016 at 3:51 PM, Khushboo Vashi <k= hushboo.vashi@enterprisedb.com> wrote:
= Hi Neel,

Thanks for reviewing my patch.

I have mo= dified the code as per your suggestions and also fixed some of the issues g= ot while doing unit testing.
Please find attached patch for the sa= me.


Thanks,
Khushboo



On Wed, Jan 20, 2016 at 10:56 PM, Neel Patel <n= eel.patel@enterprisedb.com> wrote:
Hi Khushboo,

Please find below review comments.

- While creati= ng new Domain and clicking on SQL tab, python side we are getting error say= ing "TypeError: 'bool' object is not callable".
=C2=A0 We are not able to create any domain. Fix this issue = so that we can test other functionality.
- Implement the reverse = engineering SQL generation for the domain node.
- As per the chec= klist, remove the "Use Slony" from Constraints tab, as it is not = required.
- No need to pass "qtIdent=3Dself.qtIdent&q= uot; as function argument in "create" and "getSQL" func= tion in domains/__init__.py
- In "Security" tab , provi= der and security label fields are not editable.
- In PG version 9= .1, when we update the existing domain name then "ALTER DOMAIN" i= s not supported.=C2=A0
=C2=A0 Currently there is no checking for = the PG version 9.1 and 9.2_plus. It will fail when we connect to database 9= .1

=C2=A0 e.g.
=C2=A0 For PG version 9.1= - Update command should be as below.
=C2=A0 ALTER TYPE xyz RENAM= E TO abc;
=C2=A0 For PG version 9.2 onwards - Update command shou= ld be as below.
=C2=A0 ALTER DOMAIN xyz RENAME TO abc;
=
- Some of the SQL file, qtIdent is not used. Please check al= l the related SQL files.
=C2=A0 e.g. =C2=A0- In update.sql file &= quot;data.owner" should be "conn|qtIdent(data.owner)"
<= div>
=C2=A0 =C2=A0 {% if data.owner %}
=C2=A0 =C2= =A0 ALTER DOMAIN {{ conn|qtIdent(o_data.basensp, name) }}
=C2=A0 = =C2=A0 =C2=A0 OWNER TO {{ data.owner }};
=C2=A0 {% endif %}
=

Let us know for any issues.

Th= anks,
Neel Patel
=
On Wed, Jan 20, 2016 at 2:50 PM, Khushboo Va= shi <khushboo.vashi@enterprisedb.com> wrote:
<= div>
Hi Neel,

Please find updated patch.

Than= ks,
Khushboo

On Wed, Jan 20, 2016 at 12:50 PM, Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi Khushboo,

While applying the patch file, we are getting below warnings.
=

#########################################
domains (1).patch:1340: trailing whitespace.
=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 oid: undefined,=C2=A0
domains (1).patch:1483: t= railing whitespace.
=C2=A0 =C2=A0 (nspname =3D 'pg_catalog= 9; AND EXISTS=C2=A0
domains (1).patch:1487: trailing whitespace.<= /div>
=C2=A0 =C2=A0 OR (nspname =3D 'information_schema' AND EX= ISTS=C2=A0
domains (1).patch:1489: trailing whitespace.
=C2=A0 =C2=A0 OR (nspname LIKE '_%' AND EXISTS=C2=A0
dom= ains (1).patch:1642: trailing whitespace.
=C2=A0(select 1 from pg= _class where relnamespace=3Dtypnamespace and relname =3D typname and relkin= d !=3D 'c') AND (typname not like '_%' OR NOT EXISTS (selec= t 1 from pg_class where relnamespace=3Dtypnamespace and relname =3D substri= ng(typname from 2)::name and relkind !=3D 'c'))=C2=A0
war= ning: squelched 4 whitespace errors
warning: 9 lines add whitespa= ce errors.
#########################################

Can you please remove the whitespace and regenerate = the patch ?

Thanks,
Neel Patel

On We= d, Jan 20, 2016 at 12:37 PM, Khushboo Vashi <khushboo.vash= i@enterprisedb.com> wrote:
Resending patch= with binary option.

On Wed, Jan 20, 2016 at 10:18 AM, Khushboo Vashi <khushboo.vashi@enterprisedb.com> wrote:
Hi,

Please find attached patch for the Domain Module.
The patch will be modified after Types module implementation as= we need to populate Base Type=C2=A0 and some Type related validations from= the Types module.

Please review it and let me know the f= eedback.

Thanks,
Khushboo



--
Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers=








--001a114020bacdc560052c80a190-- --001a114020bacdc566052c80a192 Content-Type: text/x-patch; charset=US-ASCII; name="Domains_ver_3.patch" Content-Disposition: attachment; filename="Domains_ver_3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_il0mvr4z1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvX19pbml0X18u cHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9fLnB5Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNDE5YmIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL19faW5pdF9f LnB5CkBAIC0wLDAgKzEsNzc4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisj CisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisiIiJUaGUgRG9tYWluIE1vZHVsZS4iIiIK KworaW1wb3J0IGpzb24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1w bGF0ZSwgbWFrZV9yZXNwb25zZSwgcmVxdWVzdCwganNvbmlmeQorZnJvbSBm bGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBtYWtlX2pzb25fcmVzcG9uc2UsIFwKKyAgICBt YWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVzcG9uc2UsIGludGVybmFsX3NlcnZl cl9lcnJvcgorZnJvbSBwZ2FkbWluLmJyb3dzZXIudXRpbHMgaW1wb3J0IFBH Q2hpbGROb2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv biBpbXBvcnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9ydCBwZ2FkbWlu LmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzIGFzIHNjaGVtYXMKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9y dCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5k cml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQ R19ERUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBz CisKKworY2xhc3MgRG9tYWluTW9kdWxlKENvbGxlY3Rpb25Ob2RlTW9kdWxl KToKKyAgICAiIiIKKyAgICBjbGFzcyBEb21haW5Nb2R1bGUoQ29sbGVjdGlv bk5vZGVNb2R1bGUpOgorCisgICAgICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50 cyBUaGUgRG9tYWluIE1vZHVsZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0t LS0tLQorICAgICogX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorICAgICAg LSBJbml0aWFsaXplIHRoZSBEb21haW4gTW9kdWxlLgorCisgICAgKiBnZXRf bm9kZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gR2VuZXJhdGUg dGhlIGRvbWFpbiBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIHNjcmlwdF9s b2FkKCkKKyAgICAgIC0gTG9hZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZG9t YWluLCB3aGVuIHNjaGVtYSBub2RlIGlzCisgICAgICAgIGluaXRpYWxpemVk LgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0gJ2RvbWFpbicKKyAgICBD T0xMRUNUSU9OX0xBQkVMID0gZ2V0dGV4dCgiRG9tYWlucyIpCisKKyAgICBk ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAg c3VwZXIoRG9tYWluTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKipr d2FyZ3MpCisgICAgICAgIHNlbGYubWluX3ZlciA9IE5vbmUKKyAgICAgICAg c2VsZi5tYXhfdmVyID0gTm9uZQorCisgICAgZGVmIGdldF9ub2RlcyhzZWxm LCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IEdlbmVyYXRlIHRoZSBkb21haW4gY29sbGVjdGlvbiBub2RlLgorICAgICAg ICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2VyX2Nv bGxlY3Rpb25fbm9kZShzY2lkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVm IHNjcmlwdF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9h ZCB0aGUgbW9kdWxlIHNjcmlwdCBmb3IgZG9tYWluLCB3aGVuIHNjaGVtYSBu b2RlIGlzCisgICAgICAgIGluaXRpYWxpemVkLgorICAgICAgICAiIiIKKyAg ICAgICAgcmV0dXJuIHNjaGVtYXMuU2NoZW1hTW9kdWxlLk5PREVfVFlQRQor CisKK2JsdWVwcmludCA9IERvbWFpbk1vZHVsZShfX25hbWVfXykKKworCitj bGFzcyBEb21haW5WaWV3KFBHQ2hpbGROb2RlVmlldyk6CisgICAgIiIiCisg ICAgY2xhc3MgRG9tYWluVmlldworCisgICAgVGhpcyBjbGFzcyBpbmhlcml0 cyBQR0NoaWxkTm9kZVZpZXcgdG8gZ2V0IHRoZSBkaWZmZXJlbnQgcm91dGVz IGZvcgorICAgIHRoZSBtb2R1bGUuCisKKyAgICBUaGUgY2xhc3MgaXMgcmVz cG9uc2libGUgdG8gQ3JlYXRlLCBSZWFkLCBVcGRhdGUgYW5kIERlbGV0ZSBv cGVyYXRpb25zIGZvcgorICAgIHRoZSBEb21haW4uCisKKyAgICBNZXRob2Rz OgorICAgIC0tLS0tLS0KKyAgICAqIHZhbGlkYXRlX3JlcXVlc3QoZik6Cisg ICAgICAtIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgorICAgICAgICBWYWxpZGF0 aW5nIHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2YgY3JlYXRlLCB1cGRhdGUg YW5kIG1vZGlmaWVkIFNRTC4KKworICAgICogbW9kdWxlX2pzKCk6CisgICAg ICAtIE92ZXJyaWRlcyB0aGlzIHByb3BlcnR5IHRvIGRlZmluZSBqYXZhc2Ny aXB0IGZvciBEb21haW4gbm9kZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0 aW9uKGYpOgorICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg IC0gIENoZWNrcyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAg IC0gIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0 aC4KKworICAgICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToK KyAgICAgIC0gTGlzdCB0aGUgRG9tYWlucy4KKworICAgICogbm9kZXMoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIFJldHVybnMgYWxsIHRoZSBE b21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93c2VyLgorCisg ICAgKiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgor ICAgICAgLSBSZXR1cm5zIHRoZSBEb21haW4gcHJvcGVydGllcy4KKworICAg ICogZ2V0X2NvbGxhdGlvbnMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1O b25lKToKKyAgICAgIC0gUmV0dXJucyBDb2xsYXRpb25zLgorCisgICAgKiBn ZXRfdHlwZXMoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAg ICAgIC0gUmV0dXJucyBEYXRhIFR5cGVzLgorCisgICAgKiBjcmVhdGUoZ2lk LCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAtIENyZWF0ZXMgYSBuZXcgRG9t YWluIG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQsIHNj aWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21haW4gb2JqZWN0 LgorCisgICAgKiBkZWxldGUoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6 CisgICAgICAtIERyb3BzIHRoZSBEb21haW4gb2JqZWN0LgorCisgICAgKiBz cWwoZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgIC0g UmV0dXJucyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIG9iamVjdC4KKworICAg ICogbXNxbChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAg ICAgLSBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAqIGdldF9z cWwoZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAt IEdlbmVyYXRlcyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0 ZSB0aGUgRG9tYWluIG9iamVjdC4KKworICAgICogZGVwZW5kZW50cyhnaWQs IHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUg ZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisKKyAgICAqIGRl cGVuZGVuY2llcyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAg IC0gUmV0dXJucyB0aGUgZGVwZW5kZW5jaWVzIGZvciB0aGUgRG9tYWluIG9i amVjdC4KKyAgICAiIiIKKworICAgIG5vZGVfdHlwZSA9IGJsdWVwcmludC5u b2RlX3R5cGUKKworICAgIHBhcmVudF9pZHMgPSBbCisgICAgICAgIHsndHlw ZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdp bnQnLCAnaWQnOiAnc2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAn aWQnOiAnZGlkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAn c2NpZCd9CisgICAgXQorICAgIGlkcyA9IFsKKyAgICAgICAgeyd0eXBlJzog J2ludCcsICdpZCc6ICdkb2lkJ30KKyAgICBdCisKKyAgICBvcGVyYXRpb25z ID0gZGljdCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dl dCc6ICdwcm9wZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0Jzog J3VwZGF0ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0 JzogJ2NyZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdkZWxldGUnOiBb eydkZWxldGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBb eydnZXQnOiAnY2hpbGRyZW4nfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dl dCc6ICdub2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3Fs JzogW3snZ2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQn OiAnbXNxbCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMn OiBbeydnZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVu Y3knOiBbeydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVw ZW5kZW50JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdt b2R1bGUuanMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisg ICAgICAgICdnZXRfY29sbGF0aW9ucyc6IFsKKyAgICAgICAgICAgIHsnZ2V0 JzogJ2dldF9jb2xsYXRpb25zJ30sCisgICAgICAgICAgICB7J2dldCc6ICdn ZXRfY29sbGF0aW9ucyd9CisgICAgICAgIF0sCisgICAgICAgICdnZXRfdHlw ZXMnOiBbeydnZXQnOiAnZ2V0X3R5cGVzJ30sIHsnZ2V0JzogJ2dldF90eXBl cyd9XQorICAgIH0pCisKKyAgICBkZWYgdmFsaWRhdGVfcmVxdWVzdChmKToK KyAgICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFzIGEgZGVjb3JhdG9yLgor ICAgICAgICBWYWxpZGF0aW5nIHJlcXVlc3Qgb24gdGhlIHJlcXVlc3Qgb2Yg Y3JlYXRlLCB1cGRhdGUgYW5kIG1vZGlmaWVkIFNRTC4KKworICAgICAgICBS ZXF1aXJlZCBBcmdzOgorICAgICAgICAgICAgICAgICAgICBuYW1lOiBOYW1l IG9mIHRoZSBEb21haW4KKyAgICAgICAgICAgICAgICAgICAgb3duZXI6IERv bWFpbiBPd25lcgorICAgICAgICAgICAgICAgICAgICBiYXNlbnNwOiBTY2hl bWEgTmFtZQorICAgICAgICAgICAgICAgICAgICBiYXN0dHlwZTogRGF0YSBU eXBlIG9mIHRoZSBEb21haW4KKworICAgICAgICBBYm92ZSBib3RoIHRoZSBh cmd1bWVudHMgd2lsbCBub3QgYmUgdmFsaWRhdGVkIGluIHRoZSB1cGRhdGUg YWN0aW9uLgorICAgICAgICAiIiIKKworICAgICAgICBAd3JhcHMoZikKKyAg ICAgICAgZGVmIHdyYXAoc2VsZiwgKiprd2FyZ3MpOgorCisgICAgICAgICAg ICBkYXRhID0ge30KKyAgICAgICAgICAgIGlmIHJlcXVlc3QuZGF0YToKKyAg ICAgICAgICAgICAgICByZXEgPSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YSkK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmVxID0gcmVx dWVzdC5hcmdzIG9yIHJlcXVlc3QuZm9ybQorCisgICAgICAgICAgICBpZiAn ZG9pZCcgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICByZXF1aXJl ZF9hcmdzID0gWworICAgICAgICAgICAgICAgICAgICAnbmFtZScsCisgICAg ICAgICAgICAgICAgICAgICdvd25lcicsCisgICAgICAgICAgICAgICAgICAg ICdiYXNlbnNwJywKKyAgICAgICAgICAgICAgICAgICAgJ2Jhc2V0eXBlJwor ICAgICAgICAgICAgICAgIF0KKworICAgICAgICAgICAgICAgIGZvciBhcmcg aW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICAgICAgaWYgYXJn IG5vdCBpbiByZXEgb3IgcmVxW2FyZ10gPT0gJyc6CisgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJl ZCBwYXJhbWV0ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAp CisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHRy eToKKyAgICAgICAgICAgICAgICBsaXN0X3BhcmFtcyA9IFtdCisgICAgICAg ICAgICAgICAgaWYgcmVxdWVzdC5tZXRob2QgPT0gJ0dFVCc6CisgICAgICAg ICAgICAgICAgICAgIGxpc3RfcGFyYW1zID0gWydjb25zdHJhaW50cycsICdz ZWNsYWJlbHMnXQorCisgICAgICAgICAgICAgICAgZm9yIGtleSBpbiByZXE6 CisgICAgICAgICAgICAgICAgICAgIGlmIGtleSBpbiBsaXN0X3BhcmFtcyBh bmQgcmVxW2tleV0gIT0gJycgXAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFuZCByZXFba2V5XSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg ICAgICAgICAgICMgQ292ZXJ0cyBzdHJpbmcgaW50byBweXRob24gbGlzdCBh cyBleHBlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5 XSA9IGpzb24ubG9hZHMocmVxW2tleV0pCisgICAgICAgICAgICAgICAgICAg IGVsaWYga2V5ID09ICd0eXBub3RudWxsJzoKKyAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFba2V5XSA9IFRydWUgaWYgcmVxW2tleV0gPT0gJ3RydWUn IG9yIHJlcVtrZXldIGlzXAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSBl bHNlXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSBpZiBy ZXFba2V5XSA9PSAnZmFsc2UnIG9yIHJlcVtrZXldIGlzCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgRmFsc2UgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgZWxz ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHJlcVtr ZXldCisKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXN0cihlKSkKKworICAgICAgICAgICAgc2VsZi5yZXF1ZXN0ID0g ZGF0YQorICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgKiprd2FyZ3MpCisK KyAgICAgICAgcmV0dXJuIHdyYXAKKworICAgIGRlZiBtb2R1bGVfanMoc2Vs Zik6CisgICAgICAgICIiIgorICAgICAgICBPdmVycmlkZXMgdGhpcyBwcm9w ZXJ0eSB0byBkZWZpbmUgamF2YXNjcmlwdCBmb3IgRG9tYWluIG5vZGUuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNwb25zZSgKKyAg ICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAi ZG9tYWlucy9qcy9kb21haW5zLmpzIiwKKyAgICAgICAgICAgICAgICBfPWdl dHRleHQKKyAgICAgICAgICAgICksCisgICAgICAgICAgICAyMDAsIHsnQ29u dGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCd9CisgICAg ICAgICkKKworICAgIGRlZiBjaGVja19wcmVjb25kaXRpb24oZik6CisgICAg ICAgICIiIgorICAgICAgICBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAg ICAgQ2hlY2tzIGRhdGFiYXNlIGNvbm5lY3Rpb24gc3RhdHVzLgorICAgICAg ICBBdHRhY2ggY29ubmVjdGlvbiBvYmplY3QgYW5kIHRlbXBsYXRlIHBhdGgu CisgICAgICAgICIiIgorICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVm IHdyYXAoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIHNlbGYgPSBh cmdzWzBdCisgICAgICAgICAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RF RkFVTFRfRFJJVkVSKQorICAgICAgICAgICAgc2VsZi5tYW5hZ2VyID0gZHJp dmVyLmNvbm5lY3Rpb25fbWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAg ICAgICAgIyBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbgorICAgICAgICAgICAg c2VsZi5jb25uID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJn c1snZGlkJ10pCisgICAgICAgICAgICBzZWxmLnF0SWRlbnQgPSBkcml2ZXIu cXRJZGVudAorCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5l Y3RlZCgpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25f cmVxdWlyZWQoCisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkNvbm5l Y3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisgICAgICAg ICAgICAgICAgKQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIu dmVyc2lvbgorICAgICAgICAgICAgc2VydmVyX3R5cGUgPSBzZWxmLm1hbmFn ZXIuc2VydmVyX3R5cGUKKworICAgICAgICAgICAgIyB3ZSB3aWxsIHNldCB0 ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAgICAgICAgaWYg dmVyID49IDkwMjAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxhdGVf cGF0aCA9ICdkb21haW5zL3NxbC85LjJfcGx1cycKKyAgICAgICAgICAgIGVs aWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYudGVtcGxh dGVfcGF0aCA9ICdkb21haW5zL3NxbC85LjFfcGx1cycKKworICAgICAgICAg ICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJldHVy biB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxp c3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCk6CisgICAgICAgICIiIgor ICAgICAgICBMaXN0IHRoZSBEb21haW5zLgorCisgICAgICAgIEFyZ3M6Cisg ICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAg c2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQK KyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAiIiIKKwor ICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgIGlm IG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXSwK KyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBub2RlcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMg YWxsIHRoZSBEb21haW5zIHRvIGdlbmVyYXRlIE5vZGVzIGluIHRoZSBicm93 c2VyLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZl ciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAg ICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNj aGVtYSBJZAorICAgICAgICAiIiIKKworICAgICAgICByZXMgPSBbXQorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ25vZGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NpZD1zY2lkKQorICAgICAgICBzdGF0dXMsIHJzZXQg PSBzZWxmLmNvbm4uZXhlY3V0ZV8yZGFycmF5KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKworICAgICAgICBmb3Igcm93IGlu IHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoCisgICAg ICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9u b2RlKAorICAgICAgICAgICAgICAgICAgICByb3dbJ29pZCddLAorICAgICAg ICAgICAgICAgICAgICBzY2lkLAorICAgICAgICAgICAgICAgICAgICByb3db J25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21h aW4iCisgICAgICAgICAgICAgICAgKSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFJl dHVybnMgdGhlIERvbWFpbiBwcm9wZXJ0aWVzLgorCisgICAgICAgIEFyZ3M6 CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAg ICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2Ug SWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAg ZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9pZCkKKyAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAg aWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGEgPSBy ZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICMgVGhlIExlbmd0aCBhbmQgdGhl IHByZWNpc2lvbiBvZiB0aGUgRGF0YXR5cGUgc2hvdWxkIGJlIHNlcGFyYXRl LgorICAgICAgICAjIFRoZSBGb3JtYXQgd2UgZ2V0dGluZyBmcm9tIGRhdGFi YXNlIGlzOiBudW1lcmljKDEsMSkKKyAgICAgICAgIyBTbywgd2UgbmVlZCB0 byBzZXBhcmF0ZSBMZW5ndGg6IDEsIFByZWNpc2lvbjogMQorICAgICAgICBp ZiBkYXRhWydmdWxsdHlwZSddICE9ICcnIGFuZCBkYXRhWydmdWxsdHlwZSdd LmZpbmQoIigiKSA+IDA6CisgICAgICAgICAgICBzdWJzdHIgPSBkYXRhWydm dWxsdHlwZSddW2RhdGFbJ2Z1bGx0eXBlJ10uZmluZCgiKCIpICsgMTpsZW4o CisgICAgICAgICAgICAgICAgZGF0YVsnZnVsbHR5cGUnXSkgLSAxXQorICAg ICAgICAgICAgdHlwbGVuID0gc3Vic3RyLnNwbGl0KCIsIikKKyAgICAgICAg ICAgIGlmIGxlbih0eXBsZW4pID4gMToKKyAgICAgICAgICAgICAgICBkYXRh Wyd0eXBsZW4nXSA9IHR5cGxlblswXQorICAgICAgICAgICAgICAgIGRhdGFb J3ByZWNpc2lvbiddID0gdHlwbGVuWzFdCisgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgIGRhdGFbJ3R5cGxlbiddID0gdHlwbGVuCisgICAg ICAgICAgICAgICAgZGF0YVsncHJlY2lzaW9uJ10gPSAnJworCisgICAgICAg ICMgR2V0IERvbWFpbiBDb25zdHJhaW50cworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2Nv bnN0cmFpbnRzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvaWQ9ZG9pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNv bm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoK KyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgIGRhdGFbJ2NvbnN0cmFpbnRzJ10gPSBy ZXNbJ3Jvd3MnXQorCisgICAgICAgICMgU2V0IFN5c3RlbSBEb21haW4gU3Rh dHVzCisgICAgICAgIGRhdGFbJ3N5c2RvbWFpbiddID0gRmFsc2UKKyAgICAg ICAgaWYgZG9pZCA8PSBzZWxmLm1hbmFnZXIuZGJfaW5mb1tkaWRdWydkYXRs YXN0c3lzb2lkJ106CisgICAgICAgICAgICBkYXRhWydzeXNkb21haW4nXSA9 IFRydWUKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAg ICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgICAgICBzdGF0dXM9MjAw CisgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZ2V0X2NvbGxhdGlvbnMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwg ZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgIFJldHVybnMgQ29s bGF0aW9ucy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAg ICAgICAiIiIKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFs dWUnOiAnJ31dCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn Z2V0X2NvbGxhdGlvbnMuc3FsJ10pKQorICAgICAgICAgICAgc3RhdHVzLCBy c2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAgICAg ICByZXMuYXBwZW5kKHsnbGFiZWwnOiByb3dbJ2NvcHlfY29sbGF0aW9uJ10s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydj b3B5X2NvbGxhdGlvbiddfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgICAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgZ2V0X3R5cGVzKHNlbGYsIGdpZCwgc2lkLCBk aWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAgICAgICBS ZXR1cm5zIFR5cGVzLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBn aWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIg SWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElk CisgICAgICAgICIiIgorCisgICAgICAgICMgVE9ETzogVGhpcyBmdW5jdGlv biBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlCisgICAgICAgICMgVHlwZXMgbW9k dWxlIHdpbGwgYmUgY29tcGxldGVkLgorCisgICAgICAgIHJlcyA9IFt7J2xh YmVsJzogJycsICd2YWx1ZSc6ICcnfV0KKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdnZXRfdHlwZXMuc3FsJ10pKQorICAgICAgICAgICAg c3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwp CisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAg ICAgICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICB7 J2xhYmVsJzogcm93Wyd0eXBuYW1lJ10sCisgICAgICAgICAgICAgICAgICAg ICAndmFsdWUnOiByb3dbJ3R5cG5hbWUnXX0KKyAgICAgICAgICAgICAgICAp CisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICAgICAgKQorCisgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNoZWNrX3ByZWNv bmRpdGlvbgorICAgIEB2YWxpZGF0ZV9yZXF1ZXN0CisgICAgZGVmIGNyZWF0 ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgICAgIiIiCisg ICAgICAgIENyZWF0ZXMgYSBuZXcgRG9tYWluIG9iamVjdC4KKworICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGRvaWQ6IERvbWFpbiBJZAorCisgICAgICAgIFJlcXVpcmVkIEFy Z3M6CisgICAgICAgICAgICBuYW1lOiBEb21haW4gTmFtZQorICAgICAgICAg ICAgb3duZXI6IE93bmVyIE5hbWUKKyAgICAgICAgICAgIGJhc2Vuc3A6IFNj aGVtYSBOYW1lCisgICAgICAgICAgICBiYXNldHlwZTogRG9tYWluIEJhc2Ug VHlwZQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBEb21haW4g b2JqZWN0IGluIGpzb24gZm9ybWF0LgorICAgICAgICAiIiIKKworICAgICAg ICBkYXRhID0gc2VsZi5yZXF1ZXN0CisgICAgICAgIHRyeToKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICAjIFdlIG5lZWQgb2lkIHRvIHRvIGFkZCBvYmplY3QgaW4gdHJl ZSBhdCBicm93c2VyLCBiZWxvdyBzcWwgd2lsbAorICAgICAgICAgICAgIyBn aXZlcyB0aGUgc2FtZQorICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBs YXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfb2lkLnNx bCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl bnNwPWRhdGFbJ2Jhc2Vuc3AnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBuYW1lPWRhdGFbJ25hbWUnXSkKKyAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICBkb2lkLCBzY2lkID0gcmVzWydyb3dzJ11bMF0KKworICAg ICAgICAgICAgcmV0dXJuIGpzb25pZnkoCisgICAgICAgICAgICAgICAgbm9k ZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93c2VyX25vZGUoCisgICAg ICAgICAgICAgICAgICAgIGRvaWQsCisgICAgICAgICAgICAgICAgICAgIHNj aWQsCisgICAgICAgICAgICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAg ICAgICAgICAgICAgICAgaWNvbj0iaWNvbi1kb21haW4iCisgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgRXhjZXB0 aW9uIGFzIGU6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25k aXRpb24KKyAgICBkZWYgZGVsZXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNj aWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgRHJvcHMgdGhlIERv bWFpbiBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ ZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAg c2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQK KyAgICAgICAgIiIiCisKKyAgICAgICAgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0 ZSc6CisgICAgICAgICAgICAjIFRoaXMgaXMgYSBjYXNjYWRlIG9wZXJhdGlv bgorICAgICAgICAgICAgY2FzY2FkZSA9IFRydWUKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIGNhc2NhZGUgPSBGYWxzZQorCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9ZG9p ZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1 dGVfMmRhcnJheShTUUwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3Io ZXJyb3Jtc2c9bmFtZSkKKworICAgICAgICAgICAgbmFtZSwgYmFzZW5zcCA9 IHJlc1sncm93cyddWzBdCisKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90 ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVsZXRl LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu YW1lPW5hbWUsIGJhc2Vuc3A9YmFzZW5zcCwgY2FzY2FkZT1jYXNjYWRlKQor ICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9z Y2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAg ICAgICAgaW5mbz1nZXR0ZXh0KCJEb21haW4gZHJvcHBlZCIpLAorICAgICAg ICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAgICAgICAnaWQnOiBk b2lkLAorICAgICAgICAgICAgICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAg ICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAg ICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICdkaWQnOiBk aWQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICApCisKKyAgICAg ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJu IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAg ICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgQHZhbGlkYXRlX3JlcXVlc3QK KyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVXBkYXRlcyB0aGUgRG9tYWlu IG9iamVjdC4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBT ZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisg ICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lk OiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAg ICAgICAiIiIKKworICAgICAgICBzdGF0dXMsIFNRTCA9IHNlbGYuZ2V0X3Nx bChnaWQsIHNpZCwgc2VsZi5yZXF1ZXN0LCBzY2lkLCBkb2lkKQorCisgICAg ICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPVNRTCkKKworICAgICAgICB0cnk6 CisgICAgICAgICAgICBpZiBTUUw6CisgICAgICAgICAgICAgICAgc3RhdHVz LCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoU1FMKQorICAgICAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQor CisgICAgICAgICAgICAgICAgIyBHZXQgU2NoZW1hIElkCisgICAgICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAnZ2V0X29pZC5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9pZCkKKyAgICAg ICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlXzJk YXJyYXkoU1FMKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgc2NpZCA9IHJl c1sncm93cyddWzBdWydzY2lkJ10KKworICAgICAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1 Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0iRG9tYWluIHVw ZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGRvaWQsCisgICAgICAgICAgICAgICAg ICAgICAgICAnc2NpZCc6IHNjaWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6 IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQKKyAg ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAor ICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5nIHRvIHVwZGF0ZSIs CisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAgICAgICAg ICAgICAgICAgJ2lkJzogZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQn OiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBzcWwoc2VsZiwgZ2lkLCBzaWQs IGRpZCwgc2NpZCwgZG9pZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAg IFJldHVybnMgdGhlIFNRTCBmb3IgdGhlIERvbWFpbiBvYmplY3QuCisKKyAg ICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElk CisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlk OiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisg ICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgIiIiCisKKyAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2NpZD1zY2lkLCBkb2lkPWRvaWQpCisgICAgICAg IHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChTUUwpCisg ICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gRmFs c2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAg ICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICMgR2V0IERv bWFpbiBDb25zdHJhaW50cworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxh dGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZ2V0X2NvbnN0cmFpbnRz LnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9 ZG9pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAg ICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVz KQorCisgICAgICAgIGRhdGFbJ2NvbnN0cmFpbnRzJ10gPSByZXNbJ3Jvd3Mn XQorCisgICAgICAgICMgVG9nZ2xlIFZhbGlkYXRlIGFuZCBpbmhlcml0IG9w dGlvbnMgZm9yICdDUkVBVEUgUXVlcnknCisgICAgICAgIGZvciBjIGluIGRh dGFbJ2NvbnN0cmFpbnRzJ106CisgICAgICAgICAgICBjWydjb252YWxpZGF0 ZWQnXSA9IEZhbHNlIGlmIGNbJ2NvbnZhbGlkYXRlZCddIGVsc2UgVHJ1ZQor ICAgICAgICAgICAgY1snY29ubm9pbmhlcml0J10gPSBGYWxzZSBpZiBjWydj b25ub2luaGVyaXQnXSBlbHNlIFRydWUKKworICAgICAgICBTUUwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRl LnNxbCddKSwgZGF0YT1kYXRhKQorCisgICAgICAgIHJldHVybiBhamF4X3Jl c3BvbnNlKHJlc3BvbnNlPVNRTCkKKworICAgIEBjaGVja19wcmVjb25kaXRp b24KKyAgICBAdmFsaWRhdGVfcmVxdWVzdAorICAgIGRlZiBtc3FsKHNlbGYs IGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAgICIi IgorICAgICAgICBSZXR1cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAg ICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisg ICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBE YXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAg ICAgICAgICBkb2lkOiBEb21haW4gSWQKKworICAgICAgICBSZXF1aXJlZCBB cmdzOgorICAgICAgICAgICAgbmFtZTogRG9tYWluIE5hbWUKKyAgICAgICAg ICAgIG93bmVyOiBPd25lciBOYW1lCisgICAgICAgICAgICBiYXNlbnNwOiBT Y2hlbWEgTmFtZQorICAgICAgICAgICAgYmFzZXR5cGU6IERvbWFpbiBCYXNl IFR5cGUKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgU1FMIHN0 YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9tYWluLgorICAgICAg ICAiIiIKKworICAgICAgICBzdGF0dXMsIFNRTCA9IHNlbGYuZ2V0X3NxbChn aWQsIHNpZCwgc2VsZi5yZXF1ZXN0LCBzY2lkLCBkb2lkKQorCisgICAgICAg IGlmIFNRTDoKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgZGF0YT1TUUwsCisgICAgICAgICAgICAg ICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgor ICAgICAgICAgICAgcmV0dXJuIFNRTAorCisgICAgZGVmIGdldF9zcWwoc2Vs ZiwgZ2lkLCBzaWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAg ICIiIgorICAgICAgICBHZW5lcmF0ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRv IGNyZWF0ZS91cGRhdGUgdGhlIERvbWFpbi4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRv aWQ6IERvbWFpbiBJZAorICAgICAgICAiIiIKKworICAgICAgICB0cnk6Cisg ICAgICAgICAgICBpZiBkb2lkIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2lkPXNjaWQsIGRvaWQ9 ZG9pZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlX2RpY3QoU1FMKQorCisgICAgICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAg ICAgICAgICAgb2xkX2RhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAgICAg ICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAg ICAgICAgIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3VwZGF0ZS5z cWwnXSksCisgICAgICAgICAgICAgICAgICAgIGRhdGE9ZGF0YSwgb19kYXRh PW9sZF9kYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisgICAgICAgICAg ICByZXR1cm4gVHJ1ZSwgU1FMCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBlCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0 dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRoZSBEb21haW4gbm9k ZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIg R3JvdXAgSWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAg ICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hl bWEgSWQKKyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAi IiIKKyAgICAgICAgZGVwZW5kZW50c19yZXN1bHQgPSBzZWxmLmdldF9kZXBl bmRlbnRzKHNlbGYuY29ubiwgZG9pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50 c19yZXN1bHQsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAg ICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBk ZWYgZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRv aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQg dGhlIGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAg ICAgICAgZm9yIHRoZSBEb21haW4gbm9kZS4KKworICAgICAgICBBcmdzOgor ICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAgICAgICAgICAg IHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElk CisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAgICAgICAgIGRv aWQ6IERvbWFpbiBJZAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5j aWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4s IGRvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVuY2llc19yZXN1bHQsCisgICAg ICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKwor RG9tYWluVmlldy5yZWdpc3Rlcl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2Rv bWFpbi1jb25zdHJhaW50cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4zNzBlNTg1Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv X19pbml0X18ucHkKQEAgLTAsMCArMSw2NDAgQEAKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIlRoZSBEb21haW4gQ29u c3RyYWludCBNb2R1bGUuIiIiCisKK2ltcG9ydCBqc29uCitmcm9tIGZsYXNr IGltcG9ydCByZW5kZXJfdGVtcGxhdGUsIG1ha2VfcmVzcG9uc2UsIHJlcXVl c3QsIGpzb25pZnkKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0 ZXh0Citmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29u X3Jlc3BvbnNlLCBcCisgICAgbWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3Bv bnNlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93 c2VyLnV0aWxzIGltcG9ydCBQR0NoaWxkTm9kZVZpZXcKK2Zyb20gcGdhZG1p bi5icm93c2VyLmNvbGxlY3Rpb24gaW1wb3J0IENvbGxlY3Rpb25Ob2RlTW9k dWxlCitpbXBvcnQgcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5kYXRhYmFzZXMuc2NoZW1hcy5kb21haW5zIFwKKyAgICBhcyBkb21h aW5zCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0 aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9y dCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9E UklWRVIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNz IERvbWFpbkNvbnN0cmFpbnRNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUp OgorICAgICIiIgorICAgIGNsYXNzIERvbWFpbkNvbnN0cmFpbnRNb2R1bGUo Q29sbGVjdGlvbk5vZGVNb2R1bGUpOgorCisgICAgICAgIFRoaXMgY2xhc3Mg cmVwcmVzZW50cyBUaGUgRG9tYWluIENvbnN0cmFpbnQgTW9kdWxlLgorCisg ICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2luaXRfXygqYXJn cywgKiprd2FyZ3MpCisgICAgICAtIEluaXRpYWxpemUgdGhlIERvbWFpbiBD b25zdHJhaW50IE1vZHVsZS4KKworICAgICogZ2V0X25vZGVzKGdpZCwgc2lk LCBkaWQsIHNjaWQpCisgICAgICAtIEdlbmVyYXRlIHRoZSBEb21haW4gQ29u c3RyYWludCBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUo Z2lkLCBzaWQsIGRpZCwgc2NpZCkKKyAgICAgIC0gT3ZlcnJpZGUgdGhpcyBw cm9wZXJ0eSB0byBtYWtlIHRoZSBEb21haW4gQ29uc3RyYWludCBub2RlIGFz IGxlYWYgbm9kZS4KKworICAgICogc2NyaXB0X2xvYWQoKQorICAgICAgLSBM b2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciB0aGUgRG9tYWluIENvbnN0cmFp bnQsIHdoZW4gYW55IG9mIHRoZQorICAgICAgICBEb21haW4gbm9kZSBpcyBp bml0aWFsaXplZC4KKyAgICAiIiIKKyAgICBOT0RFX1RZUEUgPSAnZG9tYWlu LWNvbnN0cmFpbnRzJworICAgIENPTExFQ1RJT05fTEFCRUwgPSBnZXR0ZXh0 KCJEb21haW4gQ29uc3RyYWludHMiKQorCisgICAgZGVmIF9faW5pdF9fKHNl bGYsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKERvbWFpbkNv bnN0cmFpbnRNb2R1bGUsIHNlbGYpLl9faW5pdF9fKCphcmdzLCAqKmt3YXJn cykKKyAgICAgICAgc2VsZi5taW5fdmVyID0gTm9uZQorICAgICAgICBzZWxm Lm1heF92ZXIgPSBOb25lCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdp ZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQpOgorICAgICAgICAiIiIKKyAgICAg ICAgR2VuZXJhdGUgdGhlIERvbWFpbiBDb25zdHJhaW50IGNvbGxlY3Rpb24g bm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNlbGYuZ2VuZXJh dGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoZG9pZCkKKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBub2RlX2lub2RlKHNlbGYpOgorICAgICAgICAiIiIK KyAgICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSB0byBtYWtlIHRoZSBu b2RlIGFzIGxlYWYgbm9kZS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy biBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlwdF9sb2Fk KHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUgbW9kdWxl IHNjcmlwdCBmb3IgdGhlIERvbWFpbiBDb25zdHJhaW50LCB3aGVuIGFueSBv ZiB0aGUKKyAgICAgICAgRG9tYWluIG5vZGUgaXMgaW5pdGlhbGl6ZWQuCisg ICAgICAgICIiIgorICAgICAgICByZXR1cm4gZG9tYWlucy5Eb21haW5Nb2R1 bGUuTk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0gRG9tYWluQ29uc3RyYWlu dE1vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBEb21haW5Db25zdHJhaW50 VmlldyhQR0NoaWxkTm9kZVZpZXcpOgorICAgICIiIgorICAgIGNsYXNzIERv bWFpbkNvbnN0cmFpbnRWaWV3KFBHQ2hpbGROb2RlVmlldyk6CisKKyAgICBU aGlzIGNsYXNzIGluaGVyaXRzIFBHQ2hpbGROb2RlVmlldyB0byBnZXQgdGhl IGRpZmZlcmVudCByb3V0ZXMgZm9yCisgICAgdGhlIG1vZHVsZS4KKworICAg IFRoZSBjbGFzcyBpcyByZXNwb25zaWJsZSB0byBDcmVhdGUsIFJlYWQsIFVw ZGF0ZSBhbmQgRGVsZXRlIG9wZXJhdGlvbnMgZm9yCisgICAgdGhlIERvbWFp biBDb25zdHJhaW50LgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisK KyAgICAqIG1vZHVsZV9qcygpOgorICAgICAgLSBPdmVycmlkZXMgdGhpcyBw cm9wZXJ0eSB0byBkZWZpbmUgamF2YXNjcmlwdCBmb3IgRG9tYWluIENvbnN0 cmFpbnQgbm9kZS4KKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKGYpOgor ICAgICAgLSBXb3JrcyBhcyBhIGRlY29yYXRvci4KKyAgICAgIC0gIENoZWNr cyBkYXRhYmFzZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgIC0gIEF0dGFj aCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVtcGxhdGUgcGF0aC4KKworICAg ICogbGlzdChnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkKToKKyAgICAgIC0g TGlzdCB0aGUgRG9tYWluIENvbnN0cmFpbnRzLgorCisgICAgKiBub2Rlcyhn aWQsIHNpZCwgZGlkLCBzY2lkKToKKyAgICAgIC0gUmV0dXJucyBhbGwgdGhl IERvbWFpbiBDb25zdHJhaW50cyB0byBnZW5lcmF0ZSBOb2RlcyBpbiB0aGUg YnJvd3Nlci4KKworICAgICogcHJvcGVydGllcyhnaWQsIHNpZCwgZGlkLCBz Y2lkLCBkb2lkKToKKyAgICAgIC0gUmV0dXJucyB0aGUgRG9tYWluIENvbnN0 cmFpbnQgcHJvcGVydGllcy4KKworICAgICogY3JlYXRlKGdpZCwgc2lkLCBk aWQsIHNjaWQpOgorICAgICAgLSBDcmVhdGVzIGEgbmV3IERvbWFpbiBDb25z dHJhaW50IG9iamVjdC4KKworICAgICogdXBkYXRlKGdpZCwgc2lkLCBkaWQs IHNjaWQsIGRvaWQpOgorICAgICAgLSBVcGRhdGVzIHRoZSBEb21haW4gQ29u c3RyYWludCBvYmplY3QuCisKKyAgICAqIGRlbGV0ZShnaWQsIHNpZCwgZGlk LCBzY2lkLCBkb2lkKToKKyAgICAgIC0gRHJvcHMgdGhlIERvbWFpbiBDb25z dHJhaW50IG9iamVjdC4KKworICAgICogc3FsKGdpZCwgc2lkLCBkaWQsIHNj aWQsIGRvaWQ9Tm9uZSk6CisgICAgICAtIFJldHVybnMgdGhlIFNRTCBmb3Ig dGhlIERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKworICAgICogbXNxbChn aWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkPU5vbmUpOgorICAgICAgLSBSZXR1 cm5zIHRoZSBtb2RpZmllZCBTUUwuCisKKyAgICAqIGdldF9zcWwoZ2lkLCBz aWQsIGRhdGEsIHNjaWQsIGRvaWQ9Tm9uZSk6CisgICAgICAtIEdlbmVyYXRl cyB0aGUgU1FMIHN0YXRlbWVudHMgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgRG9t YWluIENvbnN0cmFpbnQuCisgICAgICAgIG9iamVjdC4KKworICAgICogZGVw ZW5kZW50cyhnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lkKToKKyAg ICAgIC0gUmV0dXJucyB0aGUgZGVwZW5kZW50cyBmb3IgdGhlIERvbWFpbiBD b25zdHJhaW50IG9iamVjdC4KKworICAgICogZGVwZW5kZW5jaWVzKGdpZCwg c2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQpOgorICAgICAgLSBSZXR1cm5z IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBEb21haW4gQ29uc3RyYWludCBv YmplY3QuCisgICAgIiIiCisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5v ZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdnaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2lu dCcsICdpZCc6ICdzaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdp ZCc6ICdkaWQnfSwKKyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdz Y2lkJ30sCisgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZG9pZCd9 CisgICAgXQorICAgIGlkcyA9IFsKKyAgICAgICAgeyd0eXBlJzogJ2ludCcs ICdpZCc6ICdjb2lkJ30KKyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gZGlj dCh7CisgICAgICAgICdvYmonOiBbCisgICAgICAgICAgICB7J2dldCc6ICdw cm9wZXJ0aWVzJywgJ2RlbGV0ZSc6ICdkZWxldGUnLCAncHV0JzogJ3VwZGF0 ZSd9LAorICAgICAgICAgICAgeydnZXQnOiAnbGlzdCcsICdwb3N0JzogJ2Ny ZWF0ZSd9CisgICAgICAgIF0sCisgICAgICAgICdkZWxldGUnOiBbeydkZWxl dGUnOiAnZGVsZXRlJ31dLAorICAgICAgICAnY2hpbGRyZW4nOiBbeydnZXQn OiAnY2hpbGRyZW4nfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dldCc6ICdu b2RlJ30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3FsJzogW3sn Z2V0JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQnOiAnbXNx bCd9LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMnOiBbeydn ZXQnOiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVuY3knOiBb eydnZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVwZW5kZW50 JzogW3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdtb2R1bGUu anMnOiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0KKyAgICB9KQor CisgICAgZGVmIG1vZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAg ICAgIE92ZXJyaWRlcyB0aGlzIHByb3BlcnR5IHRvIGRlZmluZSBqYXZhc2Ny aXB0IGZvciBEb21haW4gQ29uc3RyYWludCBub2RlLgorICAgICAgICAiIiIK KyAgICAgICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCisgICAgICAgICAgICBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgImRvbWFpbi1jb25z dHJhaW50cy9qcy9kb21haW4tY29uc3RyYWludHMuanMiLAorICAgICAgICAg ICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg IDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2Ny aXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlv bihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFdvcmtzIGFzIGEgZGVjb3Jh dG9yLgorICAgICAgICBDaGVja3MgZGF0YWJhc2UgY29ubmVjdGlvbiBzdGF0 dXMuCisgICAgICAgIEF0dGFjaCBjb25uZWN0aW9uIG9iamVjdCBhbmQgdGVt cGxhdGUgcGF0aC4KKyAgICAgICAgIiIiCisgICAgICAgIEB3cmFwcyhmKQor ICAgICAgICBkZWYgd3JhcCgqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAg ICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIGRyaXZlciA9IGdldF9k cml2ZXIoUEdfREVGQVVMVF9EUklWRVIpCisgICAgICAgICAgICBzZWxmLm1h bmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKGt3YXJnc1snc2lk J10pCisgICAgICAgICAgICBzZWxmLmNvbm4gPSBzZWxmLm1hbmFnZXIuY29u bmVjdGlvbihkaWQ9a3dhcmdzWydkaWQnXSkKKyAgICAgICAgICAgIHNlbGYu cXRJZGVudCA9IGRyaXZlci5xdElkZW50CisKKyAgICAgICAgICAgICMgSWYg REIgbm90IGNvbm5lY3RlZCB0aGVuIHJldHVybiBlcnJvciB0byBicm93c2Vy CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5jb25uLmNvbm5lY3RlZCgpOgor ICAgICAgICAgICAgICAgIHJldHVybiBwcmVjb25kaXRpb25fcmVxdWlyZWQo CisgICAgICAgICAgICAgICAgICAgIGdldHRleHQoIkNvbm5lY3Rpb24gdG8g dGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIpCisgICAgICAgICAgICAgICAg KQorCisgICAgICAgICAgICB2ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgor CisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0IHRlbXBsYXRlIHBhdGggZm9y IHNxbCBzY3JpcHRzCisgICAgICAgICAgICBpZiB2ZXIgPj0gOTAyMDA6Cisg ICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZV9wYXRoID0gJ2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4yX3BsdXMnCisgICAgICAgICAgICBlbGlmIHZl ciA+PSA5MDEwMDoKKyAgICAgICAgICAgICAgICBzZWxmLnRlbXBsYXRlX3Bh dGggPSAnZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cycKKworICAg ICAgICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAg IHJldHVybiB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6Cisg ICAgICAgICIiIgorICAgICAgICBMaXN0IHRoZSBEb21haW4gQ29uc3RyYWlu dHMuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVy IEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAg ICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2No ZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAg IiIiCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9pZCkKKyAgICAgICAgc3Rh dHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKworICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVy bmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJldHVy biBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydy b3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKwor ICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbm9kZXMoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAg ICAgICBSZXR1cm5zIGFsbCB0aGUgRG9tYWluIENvbnN0cmFpbnRzLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJ ZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRp ZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAor ICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICIiIgorICAg ICAgICByZXMgPSBbXQorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQpCisg ICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVjdXRlXzJkYXJy YXkoU1FMKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp CisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg ICAgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgZG9pZCwKKyAg ICAgICAgICAgICAgICAgICAgcm93WyduYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgIGljb249Imljb24tZG9tYWluLWNvbnN0cmFpbnRzIgorICAgICAg ICAgICAgICAgICkpCisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3Rh dHVzPTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9u CisgICAgZGVmIHByb3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2Np ZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm5z IHRoZSBEb21haW4gQ29uc3RyYWludHMgcHJvcGVydHkuCisKKyAgICAgICAg QXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3VwIElkCisgICAg ICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAgZGlkOiBEYXRh YmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElkCisgICAgICAg ICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFp biBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorCisgICAgICAgIFNRTCA9 IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRo LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdw cm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvaWQ9ZG9pZCwgY29pZD1jb2lkKQorICAgICAgICBzdGF0dXMsIHJl cyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAgICAgcmV0dXJuIGFqYXhf cmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXVsw XSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgc2NpZCwgZG9pZCk6CisgICAgICAgICIiIgorICAgICAg ICBDcmVhdGVzIGEgbmV3IERvbWFpbiBDb25zdHJhaW50IG9iamVjdC4KKwor ICAgICAgICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBk aWQ6IERhdGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQK KyAgICAgICAgICAgIGRvaWQ6IERvbWFpbiBJZAorCisgICAgICAgIFJlcXVp cmVkIEFyZ3M6CisgICAgICAgICAgICBuYW1lOiAgQ29uc3RyYWludHMgTmFt ZQorICAgICAgICAgICAgY29uc3JjOiBDb25zdHJhaW50cyBDaGVjaworCisg ICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBEb21haW4gQ29uc3RyYWlu dCBvYmplY3QgaW4ganNvbiBmb3JtYXQuCisgICAgICAgICIiIgorCisgICAg ICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2Ug XAorICAgICAgICAgICAganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2Rl KCkpCisgICAgICAgIHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAn bmFtZScsCisgICAgICAgICAgICAnY29uc3JjJworICAgICAgICBdCisKKyAg ICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAgICAg aWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0YXR1 cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAg ICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAgICAg ICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBwYXJh bWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgICAgICApCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg IyBHZXQgU2NoZW1hIGFuZCBEb21haW4uCisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J2dldF9kb21haW4uc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvaWQ9ZG9pZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJheShTUUwpCisgICAgICAgICAg ICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAg ICBkb21haW4sIHNjaGVtYSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIGRvbWFpbj1kb21haW4sIHNj aGVtYT1zY2hlbWEpCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYu Y29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBub3Qg c3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIEdldCB0 aGUgcmVjZW50bHkgYWRkZWQgY29uc3RyYWludHMgb2lkCisgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ2dldF9vaWQuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGRvaWQ9ZG9pZCwgbmFtZT1kYXRhWyduYW1lJ10p CisgICAgICAgICAgICBzdGF0dXMsIGNvaWQgPSBzZWxmLmNvbm4uZXhlY3V0 ZV9zY2FsYXIoU1FMKQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAg ICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPWRvaWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29uaWZ5KAor ICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVf YnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBjb2lkLAorICAg ICAgICAgICAgICAgICAgICBkb2lkLAorICAgICAgICAgICAgICAgICAgICBk YXRhWyduYW1lJ10sCisgICAgICAgICAgICAgICAgICAgIGljb249Imljb24t ZG9tYWluLWNvbnN0cmFpbnRzIgorICAgICAgICAgICAgICAgICkKKyAgICAg ICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGRlbGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBjb2lk KToKKyAgICAgICAgIiIiCisgICAgICAgIERyb3BzIHRoZSBEb21haW4gQ29u c3RyYWludCBvYmplY3QuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAg IGdpZDogU2VydmVyIEdyb3VwIElkCisgICAgICAgICAgICBzaWQ6IFNlcnZl ciBJZAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAg ICAgc2NpZDogU2NoZW1hIElkCisgICAgICAgICAgICBkb2lkOiBEb21haW4g SWQKKyAgICAgICAgICAgIGNvaWQ6IERvbWFpbiBDb25zdHJhaW50IElkCisg ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg J3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRvaWQ9ZG9pZCwgY29pZD1jb2lkKQorICAgICAgICAgICAg c3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKwor ICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKwor ICAgICAgICAgICAgZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAgICAg ICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBkYXRhPWRhdGEpCisgICAgICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAg ICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdldHRl eHQoIkRvbWFpbiBDb25zdHJhaW50IGRyb3BwZWQiKSwKKyAgICAgICAgICAg ICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogZG9pZCwK KyAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lkLAorICAgICAgICAg ICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlkCisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgQGNo ZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiB1cGRhdGUoc2VsZiwgZ2lkLCBz aWQsIGRpZCwgc2NpZCwgZG9pZCwgY29pZCk6CisgICAgICAgICIiIgorICAg ICAgICBVcGRhdGVzIHRoZSBEb21haW4gQ29uc3RyYWludCBvYmplY3QuCisK KyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdpZDogU2VydmVyIEdyb3Vw IElkCisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiBEYXRhYmFzZSBJZAorICAgICAgICAgICAgc2NpZDogU2NoZW1hIElk CisgICAgICAgICAgICBkb2lkOiBEb21haW4gSWQKKyAgICAgICAgICAgIGNv aWQ6IERvbWFpbiBDb25zdHJhaW50IElkCisgICAgICAgICIiIgorICAgICAg ICBkYXRhID0gcmVxdWVzdC5mb3JtIGlmIHJlcXVlc3QuZm9ybSBlbHNlIFwK KyAgICAgICAgICAgIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgp KQorCisgICAgICAgIHN0YXR1cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwg c2lkLCBkYXRhLCBzY2lkLCBkb2lkLCBjb2lkKQorCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIGlmIFNRTCBhbmQgc3RhdHVzOgorICAgICAgICAgICAg ICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKFNR TCkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAg ICAgICAgICAgICAgICAgICAgaW5mbz0iRG9tYWluIENvbnN0cmFpbnQgdXBk YXRlZCIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAgICAgICAg ICAgICAgICAgICAgICAgJ2lkJzogY29pZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdkb2lkJzogZG9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICdzY2lkJzogc2NpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQn OiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkLAor ICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRpZAorICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAg ZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAg ICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcgdG8gdXBkYXRlIiwKKyAgICAg ICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICAg ICAnaWQnOiBjb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RvaWQn OiBkb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NjaWQnOiBzY2lk LAorICAgICAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAnZGlkJzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBk b2lkLCBjb2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJu cyB0aGUgU1FMIGZvciB0aGUgRG9tYWluIENvbnN0cmFpbnQgb2JqZWN0Lgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBj b2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKworICAg ICAgICAjIEdldCBTY2hlbWEgYW5kIERvbWFpbi4KKyAgICAgICAgU1FMID0g cmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dl dF9kb21haW4uc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG9pZD1kb2lkKQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29u bi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1uYW1lKQorCisgICAgICAgIGRvbWFpbiwgc2NoZW1hID0gcmVz Wydyb3dzJ11bMF0KKworICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUo Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2lkPWRvaWQsIGNv aWQ9Y29pZCkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cmVzKQorCisgICAgICAgIGRhdGEgPSByZXNbJ3Jvd3MnXVswXQorICAgICAg ICBkYXRhWydjb252YWxpZGF0ZWQnXSA9IEZhbHNlIGlmIGRhdGFbJ2NvbnZh bGlkYXRlZCddIGVsc2UgVHJ1ZQorICAgICAgICBkYXRhWydjb25ub2luaGVy aXQnXSA9IEZhbHNlIGlmIGRhdGFbJ2Nvbm5vaW5oZXJpdCddIGVsc2UgVHJ1 ZQorCisgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICdjcmVhdGUuc3FsJ10pLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBkb21haW49ZG9tYWluLCBz Y2hlbWE9c2NoZW1hKQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNl KHJlc3BvbnNlPVNRTCkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgbXNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBzY2lkLCBkb2lkLCBj b2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAgUmV0dXJucyB0aGUg bW9kaWZpZWQgU1FMLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBn aWQ6IFNlcnZlciBHcm91cCBJZAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIg SWQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSWQKKyAgICAgICAgICAg IHNjaWQ6IFNjaGVtYSBJZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElk CisgICAgICAgICAgICBjb2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorCisg ICAgICAgIFJlcXVpcmVkIEFyZ3M6CisgICAgICAgICAgICBuYW1lOiAgIENv bnN0cmFpbnRzIE5hbWUKKyAgICAgICAgICAgIGNvbnNyYzogQ29uc3RyYWlu dHMgQ2hlY2sKKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgRG9t YWluIENvbnN0cmFpbnQgb2JqZWN0IGluIGpzb24gZm9ybWF0LgorICAgICAg ICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuYXJncworCisgICAgICAg IGlmIGNvaWQgaXMgTm9uZToKKyAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3Mg PSBbCisgICAgICAgICAgICAgICAgJ25hbWUnLAorICAgICAgICAgICAgICAg ICdjb25zcmMnCisgICAgICAgICAgICBdCisKKyAgICAgICAgICAgIGZvciBh cmcgaW4gcmVxdWlyZWRfYXJnczoKKyAgICAgICAgICAgICAgICBpZiBhcmcg bm90IGluIGRhdGE6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYWtl X2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0 dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2Vzcz0wLAor ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCB0aGUg cmVxdWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFyZworICAgICAgICAgICAg ICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAg IHN0YXR1cywgU1FMID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkYXRhLCBz Y2lkLCBkb2lkLCBjb2lkKQorICAgICAgICBpZiBzdGF0dXMgYW5kIFNRTDoK KyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgZGF0YT1TUUwsCisgICAgICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcmV0dXJuIFNRTAorCisgICAgZGVmIGdldF9zcWwoc2VsZiwgZ2lkLCBz aWQsIGRhdGEsIHNjaWQsIGRvaWQsIGNvaWQ9Tm9uZSk6CisgICAgICAgICIi IgorICAgICAgICBHZW5lcmF0ZXMgdGhlIFNRTCBzdGF0ZW1lbnRzIHRvIGNy ZWF0ZS91cGRhdGUgdGhlIERvbWFpbiBDb25zdHJhaW50LgorCisgICAgICAg ICBBcmdzOgorICAgICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSWQKKyAg ICAgICAgICAgIHNpZDogU2VydmVyIElkCisgICAgICAgICAgICBkaWQ6IERh dGFiYXNlIElkCisgICAgICAgICAgICBzY2lkOiBTY2hlbWEgSWQKKyAgICAg ICAgICAgIGRvaWQ6IERvbWFpbiBJZAorICAgICAgICAgICAgY29pZDogRG9t YWluIENvbnN0cmFpbnQgSWQKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToK KyAgICAgICAgICAgIGlmIGNvaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAg ICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRl bXBsYXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvaWQ9ZG9pZCwgY29p ZD1jb2lkKQorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfZGljdChTUUwpCisKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2Us IGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAgICAg ICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cyddWzBdCisKKyAgICAg ICAgICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAg ICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICd1cGRh dGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICBkYXRhPWRhdGEsIG9f ZGF0YT1vbGRfZGF0YSwgY29ubj1zZWxmLmNvbm4KKyAgICAgICAgICAgICAg ICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICdnZXRfZG9tYWluLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZG9pZD1kb2lkKQorICAgICAgICAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRhcnJh eShTUUwpCisKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1uYW1lKQorCisgICAgICAgICAgICAgICAgZG9t YWluLCBzY2hlbWEgPSByZXNbJ3Jvd3MnXVswXQorCisgICAgICAgICAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLCBkb21haW49ZG9t YWluLCBzY2hlbWE9c2NoZW1hKQorICAgICAgICAgICAgcmV0dXJuIFRydWUs IFNRTAorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAg ICAgICByZXR1cm4gRmFsc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgc2NpZCwgZG9p ZCwgY29pZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9u IGdldCB0aGUgZGVwZW5kZW50cyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UK KyAgICAgICAgZm9yIHRoZSBEb21haW4gQ29uc3RyYWludCBub2RlLgorCisg ICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6ICBTZXJ2ZXIgR3JvdXAg SWQKKyAgICAgICAgICAgIHNpZDogIFNlcnZlciBJZAorICAgICAgICAgICAg ZGlkOiAgRGF0YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJ ZAorICAgICAgICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBj b2lkOiBEb21haW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAg ICAgZGVwZW5kZW50c19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKHNl bGYuY29ubiwgY29pZCkKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW50c19yZXN1bHQs CisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVwZW5k ZW5jaWVzKHNlbGYsIGdpZCwgc2lkLCBkaWQsIHNjaWQsIGRvaWQsIGNvaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhl IGRlcGVuZGVuY2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAg ICAgZm9yIHRoZSBEb21haW4gQ29uc3RyYWludCBub2RlLgorCisgICAgICAg IEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91cCBJZAorICAg ICAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKKyAgICAgICAgICAgIGRpZDogRGF0 YWJhc2UgSWQKKyAgICAgICAgICAgIHNjaWQ6IFNjaGVtYSBJZAorICAgICAg ICAgICAgZG9pZDogRG9tYWluIElkCisgICAgICAgICAgICBjb2lkOiBEb21h aW4gQ29uc3RyYWludCBJZAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5k ZW5jaWVzX3Jlc3VsdCA9IHNlbGYuZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNv bm4sIGNvaWQpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAg ICAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVuY2llc19yZXN1bHQsCisg ICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkK KworRG9tYWluQ29uc3RyYWludFZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJs dWVwcmludCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvY29sbC1kb21haW4tY29u c3RyYWludHMucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4t Y29uc3RyYWludHMvc3RhdGljL2ltZy9jb2xsLWRvbWFpbi1jb25zdHJhaW50 cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDYyZTEzNzA1YzUwZTZj MGNmOGYxOWQ2ODAwNTNlODY0M2UyODc1MQpHSVQgYmluYXJ5IHBhdGNoCmxp dGVyYWwgMzE0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITczPyQj KWVGUEZ2M0dmTVYxPTJUck84NDd7SmxgfHRgUXBhcwp6bjxoUytsPXJNWT5S R1Bxdmx5ZGl6UkomPkJgT20jVn1SLXlPTT83QDg2Mk03TkNSPj4zcF5yPWZ3 VHUweVBlRm8KejEyVEwpVF52ST10fHVvUFV8fFpGPHRnYUhHKlFzUSE/bSZU cT0/M21DdX1KI0R4M3hAbU19fV5pRT01TklXWG5rCnprcG5DNGFpJWE+QDtH Zzc9dXVtcz05YklLPUVnZH4odXMtM2dASXYwMmdmc0teSlBeKWdIPW1oQlQ3 O2RPSCE/cAp6aSZCOVVnT1AhdWZ2JXlFdTdQMlFrJTUob3Y2WUY1d3Q9YVlm cX0oTFJYRyQ1eCVueFhYX1hLUzI5e3RBQWt8Z3wKWFcpS2FocmlaUXBZR0Nr bV4+YlAwbCtYa0t5eVJVfQoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3Ry YWludHMvc3RhdGljL2ltZy9kb21haW4tY29uc3RyYWludHMtYmFkLnBuZyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3N0 YXRpYy9pbWcvZG9tYWluLWNvbnN0cmFpbnRzLWJhZC5wbmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMC4uMzJhMDQ1YjhmYWZkYzA4NjQwZDUzYjJhODZiMWRj YWJjYjBmZTBmZApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNTc5CnpjbVYt SjA9KWYrUCk8aDszS3xMazAwMGUxTkpMVHEwMDBtRzAwMG1PMHt7UjNDQGx8 RDAwMDAxYjVjaF8wSXRwKQp6PT5QeCRBVyUkSE1SMVo5I1EqQFJFSG1kSEFt PDw7PXBgbFREbDYkTEUxNSR8bk02eXhKMyM2JkZ9XilReDxwM24KekgjaDR6 SUspT3UjNzlmVE1AI0hKS2tZKDg/TCRRRUxgQ2pKTWVhc00/bmcoO1FCPnxv TmJYMlU/bitBVU9IMSFlCnpPeiV4aT9AZG5jUEVYS1JTP15DeiNhbXRRUUJt K3hRdChxI0BLYVJxUjg7VSlScTw5PEBtRSpZVnEoYH5WKTB2Qgp6K0dTPClW UFclUFYlPSRKYWchSkhYbFY2cVpTYCgkX0h1SDNwZDxFbmNKX0M3ZjFAWFdx Ykd1PkR1PTh1aHBqSikKenZONGFnSDxpM1VyTVlnV3lLPGV5TjFWcStwMnRi QSFHNUMzUE8hbSRxfEh2ViNEJH5KT3N2O2Z0a19xdi1DZVFYCnpUKmNDJSRK Mzs+PDZfTCR0PEtyOCkhd3xyQG8+Y1BhbTRYKit+bWlgXkt7R2xjfHhoPE5k TiE8MGQhSk1Rdmc4Ygp6KmslOSMwMENsNE0/P1VLMXN6QkwwMDBTYU5MaDBM MDFGY1UwMUZjVjBHZ1pfMDAwMDdiVipHYDJpcGYzNDxST2cKeihwNzJ6MDA1 NmtMX3QmLSkxezJaM2NecVQxbURFb2R5NkladUNXJnMxViFgXjR9JGdvZT8o MThAYjJEYipqKncxCnolNE0ocDsmWnc/OVphS0F4byp4O0NPWH08OGZ6anFL UnZeMmtGMXNweW1ZSE1qRTJtN0hsfGF+ZW1DTndHOChpPwp6OEkjYGAoa2lC ckViaH0oUW44VEwyKyR9YjNIbl43cGBLNlIjXzZ6UTIkP3V4O2xYQllCPmhr TkBDJWc/NHZWQk0KUiRiYkw8MDAyb3ZQREhMa1YxbWluME9TQXcKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvZG9tYWlu LWNvbnN0cmFpbnRzLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVy X2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9t YWluLWNvbnN0cmFpbnRzL3N0YXRpYy9pbWcvZG9tYWluLWNvbnN0cmFpbnRz LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZDFkMmEwNjFjNzk0ODE2 OGQ3YjFjMjQ3NGQ3NjliMzE3MDlmMWNmCkdJVCBiaW5hcnkgcGF0Y2gKbGl0 ZXJhbCA0MDYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4wd0IhNjM/d3ls YEdiS31YQEYwTkUwOHtWWTJuaEhjXmVNYVUlamBkCnphSSQjK0h1RUtDe3BL RVpLWW4+aCgrYUlNSF5NakdqY3MzfWY5Q3F5dCZmdng3QVQqKXh2XmBMO2hm e0hpX2lQNAp6eGdLJSZWP3E2NV80Yyo7OH1HJTtKTU1ZPFNMTV9fX000Qmk5 e0VeITxZVXBYJm4xZ2FgN1BnRndFa2RTISgjUDwKek5uJkBOOU9xaUsoaSYo blZAWiUtRm9WT2g4KS1sZVhNc20jRl84OEVXNER2cGMwZmppcjtCNVYjTzM2 SzFzbiFPCnpoUlZmfTVqU3NHUEg/Zjx4dWRjfHZCb1k8JjVjYj11VEdCOXYx ODdKNElJK2l0NT9qaG44RntUc0NaSVdSYWQkRAp6ZzEqSzlXJWN1Mk5zRCho RWZWVCMqd20jcFl3O0QwNCswRSh1UUU/c2BaNipaWG9xVHZZZVkjKFZvOW8x YSMxUmYKelZsWGw9R3wpOVAobHN5KUYqMnwrRn01LT4oS2F4KEdCQnsxc1Zh d31BdlpySUdwIVAkIU4zeCUwaUBjPnp6bXx7ClQpYiE5YktuKUNAdTZ7MS1v RCFNPD00T15rCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90 ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL2Nzcy9kb21haW4tY29uc3Ry YWludHMuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9jc3MvZG9t YWluLWNvbnN0cmFpbnRzLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi41N2I2NjEyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9jc3MvZG9tYWluLWNvbnN0cmFpbnRzLmNz cwpAQCAtMCwwICsxLDggQEAKKy5wZy1pY29uLWRvbWFpbi1jb25zdHJhaW50 cyB7CisgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgne3sgdXJsX2ZvcignTk9E RS1kb21haW4tY29uc3RyYWludHMuc3RhdGljJywgZmlsZW5hbWU9J2ltZy9k b21haW4tY29uc3RyYWludHMucG5nJykgfX0nKSAhaW1wb3J0YW50OworICBi b3JkZXItcmFkaXVzOiAxMHB4OworICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8t cmVwZWF0OworICBhbGlnbi1jb250ZW50OiBjZW50ZXI7CisgIHZlcnRpY2Fs LWFsaWduOiBtaWRkbGU7CisgIGhlaWdodDogMS4zZW07Cit9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL2pzL2RvbWFpbi1jb25z dHJhaW50cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNv bnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvanMvZG9t YWluLWNvbnN0cmFpbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmQ5ZTIzYTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMv ZG9tYWluLWNvbnN0cmFpbnRzL2pzL2RvbWFpbi1jb25zdHJhaW50cy5qcwpA QCAtMCwwICsxLDEyOSBAQAorLy8gRG9tYWluIENvbnN0cmFpbnQgTW9kdWxl OiBDb2xsZWN0aW9uIGFuZCBOb2RlCitkZWZpbmUoCisgICAgICAgIFsnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdh ZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1p bi5icm93c2VyLmNvbGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBn QWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKKworICAvLyBEZWZpbmUg RG9tYWluIENvbnN0cmFpbnQgQ29sbGVjdGlvbiBOb2RlCisgIGlmICghcGdC cm93c2VyLk5vZGVzWydjb2xsLWRvbWFpbi1jb25zdHJhaW50cyddKSB7Cisg ICAgdmFyIGRvbWFpbl9jb25zdHJhaW50cyA9IHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1snY29sbC1kb21haW4tY29uc3RyYWludHMnXSA9CisgICAgICBwZ0Fk bWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoeworICAgICAgICBub2Rl OiAnZG9tYWluLWNvbnN0cmFpbnRzJywKKyAgICAgICAgbGFiZWw6ICd7eyBf KCdEb21haW4gQ29uc3RyYWludHMnKSB9fScsCisgICAgICAgIHR5cGU6ICdj b2xsLWRvbWFpbi1jb25zdHJhaW50cycKKyAgICAgIH0pOworICB9OworCisg IC8vIERvbWFpbiBDb25zdHJhaW50IE5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIu Tm9kZXNbJ2RvbWFpbi1jb25zdHJhaW50cyddKSB7CisgICAgcGdBZG1pbi5C cm93c2VyLk5vZGVzWydkb21haW4tY29uc3RyYWludHMnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7CisgICAgICB0eXBlOiAnZG9tYWluLWNvbnN0cmFp bnRzJywKKyAgICAgIGxhYmVsOiAne3sgXygnRG9tYWluIENvbnN0cmFpbnRz JykgfX0nLAorICAgICAgY29sbGVjdGlvbl90eXBlOiAnY29sbC1kb21haW4t Y29uc3RyYWludHMnLAorICAgICAgaGFzU1FMOiB0cnVlLAorICAgICAgaGFz RGVwZW5kczogdHJ1ZSwKKyAgICAgIHBhcmVudF90eXBlOiBbJ2RvbWFpbidd LAorICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIC8vIEF2b2lk IG11bGl0cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAgICBpZiAo dGhpcy5pbml0aWFsaXplZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAg ICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICBwZ0Jy b3dzZXIuYWRkX21lbnVzKFt7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9k b21haW5fb25fY29sbCcsIG5vZGU6ICdjb2xsLWRvbWFpbi1jb25zdHJhaW50 cycsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVj dCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGll cycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTog NCwgbGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywK KyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0 cmFpbnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRz Jywgbm9kZTogJ2RvbWFpbi1jb25zdHJhaW50cycsIG1vZHVsZTogdGhpcywK KyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgY2F0 ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdE b21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAn d2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFpbnRzJywgZGF0YToge2Fj dGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVlfSwKKyAgICAgICAgICBlbmFi bGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6 ICdjcmVhdGVfZG9tYWluLWNvbnN0cmFpbnRzJywgbm9kZTogJ2RvbWFpbics IG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcs ICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycs CisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwg bGFiZWw6ICd7eyBfKCdEb21haW4gQ29uc3RyYWludC4uLicpIH19JywKKyAg ICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tZG9tYWluLWNvbnN0cmFp bnRzJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiBmYWxzZX0s CisgICAgICAgICAgZW5hYmxlOiAnY2FuQ3JlYXRlJworICAgICAgICB9Cisg ICAgICAgIF0pOworCisgICAgICB9LAorICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCisgICAgICBtb2Rl bDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKKyAgICAg ICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRlZmluZWQsCisg ICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAgICAgICAgICBj b25zcmM6IHVuZGVmaW5lZCwKKyAgICAgICAgICBjb25ub2luaGVyaXQ6IHVu ZGVmaW5lZCwKKyAgICAgICAgICBjb252YWxpZGF0ZWQ6IHVuZGVmaW5lZAor ICAgICAgICB9LAorICAgICAgICAvLyBEb21haW4gQ29uc3RyYWludCBTY2hl bWEKKyAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgIGlkOiAnbmFtZScs IGxhYmVsOiAne3sgXygnTmFtZScpIH19JywgdHlwZTondGV4dCcsIGNlbGw6 J3N0cmluZycsCisgICAgICAgICAgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFi ZWw6ICd7eyBfKCdDb21tZW50JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJywg Y2VsbDoKKyAgICAgICAgICAnc3RyaW5nJywgbW9kZTogWydwcm9wZXJ0aWVz JywgJ2NyZWF0ZScsICdlZGl0J10sIGRpc2FibGVkOiBmdW5jdGlvbgorICAg ICAgICAgKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdjb25zcmMnLCBsYWJlbDogJ3t7IF8oJ0NoZWNr JykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJywgY2VsOgorICAgICAgICAgICdz dHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIG1vZGU6 IFsncHJvcGVydGllcycsCisgICAgICAgICAgJ2NyZWF0ZScsICdlZGl0J10s IGRpc2FibGVkOiBmdW5jdGlvbihtKSB7IHJldHVybiAhbS5pc05ldygpOyB9 CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY29ubm9pbmhlcml0Jywg bGFiZWw6ICd7eyBfKCdObyBJbmhlcml0JykgfX0nLCB0eXBlOgorICAgICAg ICAgICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3VwOiAne3sgXygn RGVmaW5pdGlvbicpIH19JywgbW9kZToKKyAgICAgICAgICBbJ3Byb3BlcnRp ZXMnLCAnY3JlYXRlJywgJ2VkaXQnXSwgZGlzYWJsZWQ6ICdpc0Rpc2FibGVk JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2NvbnZhbGlkYXRlZCcs IGxhYmVsOiAiRG9uJ3QgVmFsaWRhdGUiLCB0eXBlOiAnc3dpdGNoJywgY2Vs bDoKKyAgICAgICAgICAnYm9vbGVhbicsIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywKKyAgICAgICAg ICBtb2RlOiBbJ2NyZWF0ZScsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDogJ3t7IF8oJ1ZhbGlk PycpIH19JywgdHlwZTogJ3N3aXRjaCcsIGNlbGw6CisgICAgICAgICAgJ2Jv b2xlYW4nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsIGRpc2Fi bGVkOiAnaXNEaXNhYmxlZCcsCisgICAgICAgICAgbW9kZTogWydwcm9wZXJ0 aWVzJ10KKyAgICAgICAgfV0sCisgICAgICAgIC8vIENsaWVudCBTaWRlIFZh bGlkYXRpb24KKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgIHZhciBlcnIgPSB7fSwKKyAgICAgICAgICAgICAgZXJybXNnOwor CisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ25hbWUn KSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCduYW1lJykpLnJlcGxhY2UoL15ccyt8 XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnbmFtZSdd ID0gJ3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAg ICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1lJ107CisgICAg ICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ2NvbnNyYycpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2NvbnNyYycpKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAg ICBlcnJbJ2NvbnNyYyddID0gJ3t7IF8oJ0NoZWNrIGNhbiBub3QgYmUgZW1w dHkhJykgfX0nOworICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IGVy clsnY29uc3JjJ107CisgICAgICAgICAgfQorCisgICAgICAgICAgdGhpcy5l cnJvck1vZGVsLmNsZWFyKCkuc2V0KGVycik7CisKKyAgICAgICAgICBpZiAo Xy5zaXplKGVycikpIHsKKyAgICAgICAgICAgIHRoaXMudHJpZ2dlcignb24t c3RhdHVzJywge21zZzogZXJybXNnfSk7CisgICAgICAgICAgICByZXR1cm4g ZXJybXNnOworICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVybiBudWxs OworCisgICAgICAgIH0sCisgICAgICAgIGlzRGlzYWJsZWQ6IGZ1bmN0aW9u KG0peworICAgICAgICAgIGlmICghbS5pc05ldygpKSB7CisgICAgICAgICAg ICB2YXIgc2VydmVyID0gdGhpcy5ub2RlX2luZm8uc2VydmVyOworICAgICAg ICAgICAgaWYgKHNlcnZlci52ZXJzaW9uIDwgOTAyMDApCisgICAgICAgICAg ICB7CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg fQorICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg ICAgIH0KKyAgICAgIH0pLAorICB9KTsKKworICB9CisKKyAgcmV0dXJuIHBn QnJvd3Nlci5Ob2Rlc1snZG9tYWluJ107Cit9KTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBs YXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2NyZWF0ZS5z cWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9j cmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjIyYmFkNzIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEs NCBAQAoreyUgaWYgZGF0YSBhbmQgc2NoZW1hIGFuZCBkb21haW4gJX0KK0FM VEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoc2NoZW1hLCBkb21haW4pIH19 CisgICAgQUREIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFt ZSkgfX0gQ0hFQ0sgKHt7IGRhdGEuY29uc3JjIH19KTsKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4yNjBjM2MwCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVt cGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvZGVsZXRl LnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlmIGRhdGEgJX0KK0FMVEVSIERP TUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uc3BuYW1lLCBkYXRhLnJlbG5h bWUpIH19CisgICAgRFJPUCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChk YXRhLm5hbWUpIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9kb21haW4u c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWlu dHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMv Z2V0X2RvbWFpbi5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uMTA0MGMwZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21h aW4tY29uc3RyYWludHMvc3FsLzkuMV9wbHVzL2dldF9kb21haW4uc3FsCkBA IC0wLDAgKzEsOCBAQAorU0VMRUNUCisgICAgZC50eXBuYW1lIGFzIGRvbWFp biwgYm4ubnNwbmFtZSBhcyBzY2hlbWEKK0ZST00KKyAgICBwZ190eXBlIGQK K0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4ub2lkPWQudHlwbmFt ZXNwYWNlCitXSEVSRQorICAgIGQub2lkID0ge3tkb2lkfX07CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50 cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9n ZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNv bnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzku MV9wbHVzL2dldF9vaWQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmY1OWUwOGMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMv ZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy9nZXRfb2lkLnNxbApA QCAtMCwwICsxLDcgQEAKK1NFTEVDVAorICAgIG9pZCwgY29ubmFtZSBhcyBu YW1lCitGUk9NCisgICAgcGdfY29uc3RyYWludAorV0hFUkUKKyAgICBjb250 eXBpZCA9IHt7ZG9pZH19OjpvaWQKKyAgICBBTkQgY29ubmFtZT17eyBuYW1l fHF0TGl0ZXJhbCB9fTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTViNzMx MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv ZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWlu dHMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMzAg QEAKK1NFTEVDVAorICAgICdUQUJMRScgQVMgb2JqZWN0a2luZCwgYy5vaWQs IGNvbm5hbWUgYXMgbmFtZSwgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRp b24sCisgICAgcGdfZ2V0X2V4cHIoY29uYmluLCBjb25yZWxpZCwgdHJ1ZSkg YXMgY29uc3JjCitGUk9NCisgICAgcGdfY29uc3RyYWludCBjCitKT0lOCisg ICAgcGdfY2xhc3MgY2wgT04gY2wub2lkPWNvbnJlbGlkCitKT0lOCisgICAg cGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1yZWxuYW1lc3BhY2UKK0xFRlQg T1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9i am9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jb25zdHJhaW50Jzo6 cmVnY2xhc3MpCitXSEVSRQorICAgIGNvbnR5cGUgPSAnYycgQU5EIGNvbnJl bGlkID0gIHt7ZG9pZH19OjpvaWQKK1VOSU9OCitTRUxFQ1QKKyAgICAnRE9N QUlOJyBBUyBvYmplY3RraW5kLCBjLm9pZCwgY29ubmFtZSBhcyBuYW1lLCB0 eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUsIGRlc2NyaXB0aW9uLAorICAg IHJlZ2V4cF9yZXBsYWNlKHBnX2dldF9jb25zdHJhaW50ZGVmKGMub2lkLCB0 cnVlKSwgRSdDSEVDSyBcXCgoLiopXFwpLionLCBFJ1xcMScpIGFzIGNvbnNy YworRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5 cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFj ZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQor V0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7e2Rv aWR9fTo6b2lkCit7JSBpZiBjb2lkICV9CisgIEFORCBjLm9pZCA9IHt7IGNv aWQgfX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWlu LWNvbnN0cmFpbnRzL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVz L2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4xX3BsdXMvdXBkYXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTc0NDMwCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21h aW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9z cWwvOS4xX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3slIGlm IGRhdGEubmFtZSAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChv X2RhdGEubnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgUkVOQU1F IENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0YS5uYW1lKSB9fSBU TyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1j b25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85 LjJfcGx1cy9jcmVhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4yX3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5jNTBlNDg2Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVt cGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvY3JlYXRl LnNxbApAQCAtMCwwICsxLDggQEAKK3slIGlmIGRhdGEgYW5kIHNjaGVtYSBh bmQgZG9tYWluICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KHNj aGVtYSwgZG9tYWluKSB9fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58 cXRJZGVudChkYXRhLm5hbWUpIH19IENIRUNLICh7eyBkYXRhLmNvbnNyYyB9 fSl7JSBpZiBkYXRhLmNvbnZhbGlkYXRlZCAlfQorCisgICAgTk9UIFZBTElE eyUgZW5kaWYgJX17JSBpZiBkYXRhLmNvbm5vaW5oZXJpdCAlfQorCisgICAg Tk8gSU5IRVJJVHslIGVuZGlmICV9OworeyUgZW5kaWYgJX0KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRz L3RlbXBsYXRlcy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2Rl bGV0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25z dHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJf cGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjI2MGMzYzAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9kZWxldGUuc3FsCkBAIC0w LDAgKzEsNCBAQAoreyUgaWYgZGF0YSAlfQorQUxURVIgRE9NQUlOIHt7IGNv bm58cXRJZGVudChkYXRhLm5zcG5hbWUsIGRhdGEucmVsbmFtZSkgfX0KKyAg ICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkg fX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1j b25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0X2RvbWFpbi5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0 ZXMvZG9tYWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy9nZXRfZG9tYWlu LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDQw YzBlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9kb21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJh aW50cy9zcWwvOS4yX3BsdXMvZ2V0X2RvbWFpbi5zcWwKQEAgLTAsMCArMSw4 IEBACitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMgZG9tYWluLCBibi5uc3Bu YW1lIGFzIHNjaGVtYQorRlJPTQorICAgIHBnX3R5cGUgZAorSk9JTgorICAg IHBnX25hbWVzcGFjZSBibiBPTiBibi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dI RVJFCisgICAgZC5vaWQgPSB7e2RvaWR9fTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRl cy9kb21haW4tY29uc3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMv dGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvZ2V0 X29pZC5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjU5ZTA4YwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Rv bWFpbnMvZG9tYWluLWNvbnN0cmFpbnRzL3RlbXBsYXRlcy9kb21haW4tY29u c3RyYWludHMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3FsCkBAIC0wLDAgKzEs NyBAQAorU0VMRUNUCisgICAgb2lkLCBjb25uYW1lIGFzIG5hbWUKK0ZST00K KyAgICBwZ19jb25zdHJhaW50CitXSEVSRQorICAgIGNvbnR5cGlkID0ge3tk b2lkfX06Om9pZAorICAgIEFORCBjb25uYW1lPXt7IG5hbWV8cXRMaXRlcmFs IH19OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21h aW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9z cWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9tYWluLWNv bnN0cmFpbnRzL3NxbC85LjJfcGx1cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGI3Y2VkCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29u c3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4y X3BsdXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwyOSBAQAorU0VMRUNU CisgICAgJ1RBQkxFJyBBUyBvYmplY3RraW5kLCBjLm9pZCwgY29ubmFtZSBh cyBuYW1lLCByZWxuYW1lLCBuc3BuYW1lLCBkZXNjcmlwdGlvbiwKKyAgICBw Z19nZXRfZXhwcihjb25iaW4sIGNvbnJlbGlkLCB0cnVlKSBhcyBjb25zcmMs IGNvbm5vaW5oZXJpdCwgY29udmFsaWRhdGVkCitGUk9NCisgICAgcGdfY29u c3RyYWludCBjCitKT0lOCisgICAgcGdfY2xhc3MgY2wgT04gY2wub2lkPWNv bnJlbGlkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIG5sIE9OIG5sLm9pZD1y ZWxuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rlc2NyaXB0 aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jLm9pZCBBTkQgZGVzLmNsYXNzb2lk PSdwZ19jb25zdHJhaW50Jzo6cmVnY2xhc3MpCitXSEVSRQorICAgIGNvbnR5 cGUgPSAnYycgQU5EIGNvbnJlbGlkID0gIHt7ZG9pZH19OjpvaWQKK1VOSU9O CitTRUxFQ1QKKyAgICAnRE9NQUlOJyBBUyBvYmplY3RraW5kLCBjLm9pZCwg Y29ubmFtZSBhcyBuYW1lLCB0eXBuYW1lIGFzIHJlbG5hbWUsIG5zcG5hbWUs IGRlc2NyaXB0aW9uLAorICAgIHJlZ2V4cF9yZXBsYWNlKHBnX2dldF9jb25z dHJhaW50ZGVmKGMub2lkLCB0cnVlKSwgRSdDSEVDSyBcXCgoLiopXFwpLion LAorICAgICAgRSdcXDEnKSBhcyBjb25zcmMsIGNvbm5vaW5oZXJpdCwgY29u dmFsaWRhdGVkICBGUk9NIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBn X3R5cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVz cGFjZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5v aWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNz KQorV0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7 e2RvaWR9fTo6b2lkCit7JSBpZiBjb2lkICV9CisgIEFORCBjLm9pZCA9IHt7 IGNvaWQgfX0KK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL2RvbWFpbi1jb25zdHJhaW50cy90ZW1wbGF0ZXMvZG9t YWluLWNvbnN0cmFpbnRzL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy9kb21haW4tY29uc3RyYWludHMvdGVtcGxh dGVzL2RvbWFpbi1jb25zdHJhaW50cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTc0NDMw Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9k b21haW4tY29uc3RyYWludHMvdGVtcGxhdGVzL2RvbWFpbi1jb25zdHJhaW50 cy9zcWwvOS4yX3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDQgQEAKK3sl IGlmIGRhdGEubmFtZSAlfQorQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVu dChvX2RhdGEubnNwbmFtZSwgb19kYXRhLnJlbG5hbWUpIH19CisgICAgUkVO QU1FIENPTlNUUkFJTlQge3sgY29ubnxxdElkZW50KG9fZGF0YS5uYW1lKSB9 fSBUTyB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fTsKK3slIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRp Yy9pbWcvY29sbC1kb21haW4ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy9zdGF0aWMvaW1nL2NvbGwtZG9tYWluLnBuZwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwLi41NTYyMTUyOGExZGJhNDkyODUzOGZlNTU1N2I5Yjk4OGVkNzhk NmFiCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0NjIKemNtZUFTQE4/KG9s SHlgdVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiS31VNFQhQkUwQkplb3FmVz07 Z0Z7MFBEOF9vCnppJnBOXyhLKUI3YEZQaSUyaXhgQHY5TFUodE5VUSohSzFj elhPeHVnZ29HVF8oI3BAemY0SnchIXpIVilgM0Y3VAp6ZC1VbX1IfWBpUklp amNjQFdxIz4mcHRrUmBTc3pHNTRVejZ6VzRtZz9NTHNnWjlqYmI+RX55IXpU U0I5YFJlMSgKempTMVM5OShfOWhAWUM0YEE1WSleX14+QEozK012SWt8NGll MjhVLWkodHNTITAqfWFJQW5nSWhaWVEodGZRKXVlCno3c244WiVifFVAI2hN Z0VTVXZzNHdLb1N4Tz5+e089LVlxJDhfIXIpLV5lJTQtbDZmLUpveDElOH1G SVZ4PkZDVwp6UE1Wd2x1UUdia1AxYmNTd1ZWMGRfP1BaYlpWaXMlSGVZVFd5 VSokT3ZZcCR1VGMzUUxiRD8ydHJPbkR1aFphPmYKej0zZF97KHpFUjl4dCg8 bjNVc0JJNFNOQz9ZIXJCVzxtMmBuPnlEUnlnJHVvRThReH1ibzFEMHF3O3Qj dSllX2Y7CnpsOWFAZlJJQjhvUjNPRCpXTUY4WllpT2l2VT5JVSNVfWEpI1du IVhqVX18TXhVQD1vdzRuOyQ1ZW9BSXFCfTlYUAplQzBHTVV3VXZQeE04bTEr cD0qRXw3KDhBNVQtR0B5R3l3b1JDQzJMagoKbGl0ZXJhbCAwCkhjbVY/ZDAw MDAxCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy9zdGF0 aWMvaW1nL2RvbWFpbi1zbS5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvZG9tYWluLXNtLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwLi43NTIxY2RkZWFhYWYwZWU0ZTNjNjBlOTQ4MDc4ZDcwZTE3ZTA2ODkz CkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCA0MDEKemNtZUFTQE4/KG9sSHlg dVZCcSFpYTB2cF4wd0IhNjM/d3lsYEdiS31UN1haOEUwRGV1OWV1KlY7Z0Z7 MEtgcElnCnpjNktgcjRJZUlBY31RM0h4VmA9M3krQHh1ZFVKcEdrdDJGflBv STUhXjc4QSRDbShMQEpiY1lSPTs0Ym1fbnY+Ygp6e3BrSSo/VDdEI2d5aVN2 S1lSN3tfUzRUZG9feE9nXztYYHxfTjdPayZPaUtnX1FBKX5fZGxMbzg1e3ck aUxvVGUKekZQT3BNKl5NK0hocUomVnZLVUJ2ZlUoPWpZJiMkJCQ8eEkjTUI7 TXFgSUFCcDIwUlQ5d1VYa2FMKDFSKHBPbj9jCno+Mzg8K2U+S2FOMnslMEpk QHNNYlkkKzEzWiYlWjwlIVArKlNOdSsjKHtScj17X0t4VWhzd0hkSUQwUVdU Q0J2RAp6KV5reTtAZ3VgRSNSQUMjbGBKY25lbFMwcnhrS043YjFCPkg1NmdY KTAmUDwqYWc4V1JOaTBkVk4tanpUUVZkMjAKemg2Y0taTSFFKXVBd352UENk TzdLQ2ZXdzNSdDUkWkdnYWtLSDAwKXxXVHNVQEcjRlRkSEdvdUc4Skl5ZG9T R2lHClEyQj85LSk3OCZxb2xgOyswM19xM2dhN35sCgpsaXRlcmFsIDAKSGNt Vj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3N0YXRpYy9pbWcvZG9tYWluLnBuZyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvc3RhdGljL2ltZy9kb21haW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAuLjQyY2E5MjkzMjU4NTRiOGYzNDc4NzQyNWU4MDk0ZDA4Yzc1OTgzYmMK R0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQyNAp6Y21lQVNATj8ob2xIeWB1 VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVBKbUJ7RTBCSmVvcWZXPTtnRnsw UEQ4XjcKemkmczZgYkw4b3hIfWBpUmRIVT8qbGIycn5KXjZUaD1peF4kelRT V1M8P2Y+b0grQ0hVYV59cFZmYGFXdk10N2ZtCnp4JjhGPmpmZH5BWShIRmBt VWlSRz1XOTxzVXdRQkBLUj5AUUxIbyslUFp1QTNJeyl5fiokMURfSm90Rih7 enZIdAp6byV1bGY3KXlmdWYqQm0xLUFEcytJMTQtP2ktRUtVN2B2VSF3Z1dQ WEp6WDNfQnJjYnBlPVhGY0FtU0ZOZUMzcSYKemwhWisoUnNZTjEyJi1OV3tQ Kl4jPHJ4ODJfMi0raWkmU3FmR2dPYEpjakA7MDFASFRIeyYmNyN2P2p9SSk9 SjZtCnplYH5ocHBabjc/V0F8JXohfVQ2cGY+ejBJamJaclM1SUNEKjI3NSpf YkFvKXI4dCNWZzRBKkx6KTt4YzRKS3EwMwp6WFhDfXpkKVl3aVJaQ25XTj5V T19RbXZBVVFoXmtNayU2SXN1QXp+eGZua1Z8ZnQ4N3xtNUdWQWZ2Sl4mZnlH USEKcUlUUWBLYDYtIWNsQEpYRW1TN0RhKW04Pig1RGxsTWhwcXU/VkROUEhi Nk13PCY7JFZPUj1GcXUKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvY3NzL2RvbWFpbnMuY3NzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9jc3MvZG9tYWlucy5jc3MKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWI5ZTc3NgotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvY3NzL2RvbWFpbnMuY3NzCkBAIC0wLDAgKzEsOCBAQAorLnBnLWljb24t ZG9tYWluIHsKKyAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd7eyB1cmxfZm9y KCdOT0RFLWRvbWFpbi5zdGF0aWMnLCBmaWxlbmFtZT0naW1nL2RvbWFpbi5w bmcnKSB9fScpICFpbXBvcnRhbnQ7CisgIGJvcmRlci1yYWRpdXM6IDEwcHg7 CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIGFsaWduLWNv bnRlbnQ6IGNlbnRlcjsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKKyAg aGVpZ2h0OiAxLjNlbTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvanMvZG9tYWlucy5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvanMvZG9t YWlucy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41 MDQ0MGZjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9qcy9kb21haW5zLmpzCkBAIC0wLDAg KzEsMjkwIEBACisvLyBEb21haW4gTW9kdWxlOiBDb2xsZWN0aW9uIGFuZCBO b2RlLgorZGVmaW5lKAorICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5i cm93c2VyJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIs IGFsZXJ0aWZ5KSB7CisKKyAgLy8gRGVmaW5lIERvbWFpbiBDb2xsZWN0aW9u IE5vZGUKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZG9tYWluJ10p IHsKKyAgICB2YXIgZG9tYWlucyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1sn Y29sbC1kb21haW4nXSA9CisgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVj dGlvbi5leHRlbmQoeworICAgICAgICBub2RlOiAnZG9tYWluJywKKyAgICAg ICAgbGFiZWw6ICd7eyBfKCdEb21haW5zJykgfX0nLAorICAgICAgICB0eXBl OiAnY29sbC1kb21haW4nLAorICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAn b2lkJywgJ293bmVyJywgJ2Jhc2Vuc3AnLCAnZGVzY3JpcHRpb24nLCAnYmFz ZXR5cGUnLAorICAgICAgICAgICAgICAgICAgJ3R5cGRlZmF1bHQnLCAndHlw bm90bnVsbCcsICdzeXNkb21haW4nXQorICAgICAgfSk7CisgIH07CisKKyAg Ly8gU2VjdXJpdHkgTW9kZWwKKyAgdmFyIFNlY3VyaXR5TW9kZWwgPSBCYWNr Zm9ybS5TZWN1cml0eU1vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9k ZWwuZXh0ZW5kKHsKKyAgICBkZWZhdWx0czogeworICAgICAgcHJvdmlkZXI6 IG51bGwsCisgICAgICBzZWN1cml0eV9sYWJlbDogbnVsbAorICAgIH0sCisg ICAgc2NoZW1hOiBbeworICAgICAgaWQ6ICdwcm92aWRlcicsIGxhYmVsOiAn e3sgXygnUHJvdmlkZXInKSB9fScsCisgICAgICB0eXBlOiAndGV4dCcKKyAg ICB9LHsKKyAgICAgIGlkOiAnc2VjdXJpdHlfbGFiZWwnLCBsYWJlbDogJ3t7 IF8oJ1NlY3VyaXR5IExhYmVsJykgfX0nLAorICAgICAgdHlwZTogJ3RleHQn CisgICAgfV0sCisgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgeworICAgICAg dmFyIGVyciA9IHt9LAorICAgICAgICAgIGVycm1zZyA9IG51bGwsCisgICAg ICAgICAgZGF0YSA9IHRoaXMudG9KU09OKCk7CisKKyAgICAgIGlmIChfLmlz VW5kZWZpbmVkKGRhdGEubGFiZWwpIHx8CisgICAgICAgIF8uaXNOdWxsKGRh dGEubGFiZWwpIHx8CisgICAgICAgIFN0cmluZyhkYXRhLmxhYmVsKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgIHJldHVy biBfKCJQbGVhc2Ugc3BlY2lmeSB0aGUgdmFsdWUgZm9yIGFsbCB0aGUgc2Vj dXJpdHkgcHJvdmlkZXJzLiIpOworICAgICAgfQorICAgICAgcmV0dXJuIG51 bGw7CisgICAgfQorICB9KTsKKworICAvLyBDb25zdHJhaW50IE1vZGVsCisg IHZhciBDb25zdHJhaW50c01vZGVsID0gcGdBZG1pbi5Ccm93c2VyLk5vZGUu TW9kZWwuZXh0ZW5kKHsKKyAgICBpZEF0dHJpYnV0ZTogJ2Nvbm5hbWUnLAor ICAgIGRlZmF1bHRzOiB7CisgICAgICBjb25uYW1lOiB1bmRlZmluZWQsCisg ICAgICBkZXNjcmlwdGlvbjogdW5kZWZpbmVkLAorICAgICAgY29uc3JjOiB1 bmRlZmluZWQsCisgICAgICBjb25ub2luaGVyaXQ6IHVuZGVmaW5lZCwKKyAg ICAgIGNvbnZhbGlkYXRlZDogdW5kZWZpbmVkCisgICAgfSwKKyAgICBzY2hl bWE6IFt7CisgICAgICBpZDogJ2Nvbm5hbWUnLCBsYWJlbDogJ3t7IF8oJ05h bWUnKSB9fScsIHR5cGU6ICd0ZXh0JywgY2VsbDogJ3N0cmluZycKKyAgICB9 LHsKKyAgICAgIGlkOiAnZGVzY3JpcHRpb24nLCBsYWJlbDogJ3t7IF8oJ0Nv bW1lbnQnKSB9fScsIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsOiAnc3RyaW5n JworICAgIH0seworICAgICAgaWQ6ICdjb25zcmMnLCBsYWJlbDogJ3t7IF8o J0NoZWNrJykgfX0nLCB0eXBlOiAnbXVsdGlsaW5lJywKKyAgICAgIGNlbGw6 ICdzdHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScKKyAg ICB9LHsKKyAgICAgIGlkOiAnY29ubm9pbmhlcml0JywgbGFiZWw6ICd7eyBf KCdObyBJbmhlcml0JykgfX0nLCB0eXBlOiAnc3dpdGNoJywKKyAgICAgIGNl bGw6J2Jvb2xlYW4nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScK KyAgICB9LHsKKyAgICAgIGlkOiAnY29udmFsaWRhdGVkJywgbGFiZWw6ICd7 eyBfKCdWYWxpZD8nKSB9fScsIHR5cGU6CisgICAgICAnc3dpdGNoJywgY2Vs bDogJ2Jvb2xlYW4nLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScs IG1vZGU6CisgICAgICBbJ3Byb3BlcnRpZXMnXQorICAgIH0seworICAgICAg aWQ6ICdjb252YWxpZGF0ZWQnLCBsYWJlbDogIkRvbid0IFZhbGlkYXRlIiwg dHlwZToKKyAgICAgICdzd2l0Y2gnLCBjZWxsOiAnYm9vbGVhbicsIGdyb3Vw OiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgbW9kZToKKyAgICAgIFsnY3Jl YXRlJywgJ2VkaXQnXQorICAgIH1dLAorICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgIC8vIFRPRE86IEFkZCB2YWxpZGF0aW9uIGhlcmUKKyAg ICB9LAorICAgIHRvSlNPTjogQmFja2JvbmUuTW9kZWwucHJvdG90eXBlLnRv SlNPTgorICB9KTsKKworICAvLyBEb21haW4gTm9kZQorICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1snZG9tYWluJ10pIHsKKyAgICBwZ0FkbWluLkJyb3dzZXIu Tm9kZXNbJ2RvbWFpbiddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAg ICAgIHR5cGU6ICdkb21haW4nLAorICAgICAgbGFiZWw6ICd7eyBfKCdEb21h aW4nKSB9fScsCisgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLWRvbWFp bicsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBoYXNEZXBlbmRzOiB0 cnVlLAorICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJ10sCisgICAgICBJ bml0OiBmdW5jdGlvbigpIHsKKyAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUg cmVnaXN0cmF0aW9uIG9mIG1lbnVzCisgICAgICAgIGlmICh0aGlzLmluaXRp YWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu aW5pdGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIHBnQnJvd3Nlci5hZGRf bWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnY3JlYXRlX2RvbWFpbl9vbl9j b2xsJywgbm9kZTogJ2NvbGwtZG9tYWluJywgbW9kdWxlOiB0aGlzLAorICAg ICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJh Y2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29y eTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0RvbWFp bi4uLicpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24t ZG9tYWluJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZScsIGNoZWNrOiB0cnVl fSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAgICAgIH0s eworICAgICAgICAgIG5hbWU6ICdjcmVhdGVfZG9tYWluJywgbm9kZTogJ2Rv bWFpbicsIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBsaWVzOiBbJ29i amVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpfcHJvcGVy dGllcycsCisgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0 eTogNCwgbGFiZWw6ICd7eyBfKCdEb21haW4uLi4nKSB9fScsCisgICAgICAg ICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWRvbWFpbicsIGRhdGE6IHthY3Rp b246ICdjcmVhdGUnLCBjaGVjazogdHJ1ZX0sCisgICAgICAgICAgZW5hYmxl OiAnY2FuQ3JlYXRlJworICAgICAgICB9LHsKKyAgICAgICAgICBuYW1lOiAn Y3JlYXRlX2RvbWFpbicsIG5vZGU6ICdzY2hlbWEnLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBj YWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNh dGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygn RG9tYWluLi4uJykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24g aWNvbi1kb21haW4nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJywgY2hlY2s6 IGZhbHNlfSwKKyAgICAgICAgICBlbmFibGU6ICdjYW5DcmVhdGUnCisgICAg ICAgIH0KKyAgICAgICAgXSk7CisKKyAgICAgIH0sCisgICAgICBjYW5Ecm9w OiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKKyAg ICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSdd LmNhbkNoaWxkRHJvcCwKKyAgICAgIC8vIERvbWFpbiBOb2RlIE1vZGVsCisg ICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5k KHsKKyAgICAgICAgZGVmYXVsdHM6IHsKKyAgICAgICAgICBuYW1lOiB1bmRl ZmluZWQsCisgICAgICAgICAgb2lkOiB1bmRlZmluZWQsCisgICAgICAgICAg b3duZXI6IHVuZGVmaW5lZCwKKyAgICAgICAgICBiYXNlbnNwOiB1bmRlZmlu ZWQsCisgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVmaW5lZCwKKyAgICAg ICAgICBiYXNldHlwZTogdW5kZWZpbmVkLAorICAgICAgICAgIHR5cGxlbjog dW5kZWZpbmVkLAorICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLAor ICAgICAgICAgIHR5cGRlZmF1bHQ6IHVuZGVmaW5lZCwKKyAgICAgICAgICB0 eXBub3RudWxsOiB1bmRlZmluZWQsCisgICAgICAgICAgc3lzZG9tYWluOiB1 bmRlZmluZWQsCisgICAgICAgICAgY29sbG5hbWU6IHVuZGVmaW5lZCwKKyAg ICAgICAgICBjb25zdHJhaW50czogW10sCisgICAgICAgICAgc2VjbGFiZWxz OiBbXQorICAgICAgICB9LAorICAgICAgICAvLyBEb21haW4gU2NoZW1hCisg ICAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgICBpZDogJ25hbWUnLCBsYWJl bDogJ3t7IF8oJ05hbWUnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvaWQn LCBsYWJlbDone3sgXygnT2lkJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcgLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXQor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ293bmVyJywgbGFiZWw6J3t7 IF8oJ093bmVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgY29udHJvbDogQmFj a2Zvcm0uTm9kZUxpc3RCeU5hbWVDb250cm9sLAorICAgICAgICAgIG5vZGU6 ICdyb2xlJywgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydlZGl0JywgJ2NyZWF0 ZScsICdwcm9wZXJ0aWVzJ10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdiYXNlbnNwJywgbGFiZWw6J3t7IF8oJ1NjaGVtYScpIH19JywgY2VsbDog J25vZGUtbGlzdC1ieS1uYW1lJywKKyAgICAgICAgICAgY29udHJvbDogJ25v ZGUtbGlzdC1ieS1uYW1lJywgY2FjaGVfbGV2ZWw6ICdkYXRhYmFzZScsIHR5 cGU6ICd0ZXh0JywKKyAgICAgICAgICAgbm9kZTogJ3NjaGVtYScKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNjcmlwdGlvbicsIGxhYmVsOid7 eyBfKCdDb21tZW50JykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAnbXVsdGlsaW5lJworICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ2Jhc2V0eXBlJywgbGFiZWw6J3t7IF8oJ0Jhc2UgVHlwZScpIH19Jywg Y2VsbDogJ3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycs CisgICAgICAgICAgdHlwZTogJ3RleHQnLCBtb2RlOlsncHJvcGVydGllcycs ICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24n KSB9fScsIHVybDogJ2dldF90eXBlcycsCisgICAgICAgICAgZGlzYWJsZWQ6 IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAgICAg fSx7CisgICAgICAgICAgaWQ6ICd0eXBsZW4nLCBsYWJlbDone3sgXygnTGVu Z3RoJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICB0eXBlOiAn dGV4dCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0KKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdwcmVjaXNpb24nLCBsYWJlbDone3sg XygnUHJlY2lzaW9uJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAgICAgICAg ICB0eXBlOiAndGV4dCcsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19 JywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7 IH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd0eXBkZWZhdWx0Jywg bGFiZWw6J3t7IF8oJ0RlZmF1bHQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAor ICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0 aW9uJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAndHlwbm90 bnVsbCcsIGxhYmVsOid7eyBfKCdOb3QgTnVsbCcpIH19JywgY2VsbDogJ2Jv b2xlYW4nLAorICAgICAgICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7 IF8oJ0RlZmluaXRpb24nKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdzeXNkb21haW4nLCBsYWJlbDone3sgXygnU3lzdGVtIERvbWFpbj8n KSB9fScsIGNlbGw6ICdib29sZWFuJywKKyAgICAgICAgICB0eXBlOiAnc3dp dGNoJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLCBtb2RlOiBb J3Byb3BlcnRpZXMnXQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Nv bGxuYW1lJywgbGFiZWw6J3t7IF8oJ0NvbGxhdGlvbicpIH19JywgY2VsbDog J3N0cmluZycsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAg ICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24n KSB9fScsIHVybDogJ2dldF9jb2xsYXRpb25zJywgZGlzYWJsZWQ6IGZ1bmN0 aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhbS5pc05ldygpOworICAg ICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdjb25zdHJh aW50cycsIGxhYmVsOid7eyBfKCdDb25zdHJhaW50cycpIH19JywgY2VsbDog J3N0cmluZycsCisgICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLCBncm91 cDogJ3t7IF8oJ0NvbnN0cmFpbnRzJykgfX0nLCB2aXNpYmxlOiBmYWxzZSwg bW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1vZGVsOiBD b25zdHJhaW50c01vZGVsLCBjYW5BZGQ6IHRydWUsIGNhbkRlbGV0ZTogdHJ1 ZSwgY2FuRWRpdDogZnVuY3Rpb24obykgeworICAgICAgICAgICAgaWYgKG8g aW5zdGFuY2VvZiBCYWNrYm9uZS5Nb2RlbCkgeworICAgICAgICAgICAgICBp ZiAobyBpbnN0YW5jZW9mIENvbnN0cmFpbnRzTW9kZWwpIHsKKyAgICAgICAg ICAgICAgICByZXR1cm4gby5pc05ldygpOworICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICB9CisgICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3NlY2xhYmVs cycsIGxhYmVsOiAne3sgXygnU2VjdXJpdHkgTGFiZWxzJykgfX0nLAorICAg ICAgICAgIG1vZGVsOiBTZWN1cml0eU1vZGVsLCB0eXBlOiAnY29sbGVjdGlv bicsCisgICAgICAgICAgZ3JvdXA6ICd7eyBfKCdTZWN1cml0eScpIH19Jywg bW9kZTogWydlZGl0JywgJ2NyZWF0ZSddLAorICAgICAgICAgIG1pbl92ZXJz aW9uOiA5MDEwMCwgY2FuQWRkOiB0cnVlLAorICAgICAgICAgIGNhbkVkaXQ6 IHRydWUsIGNhbkRlbGV0ZTogdHJ1ZQorICAgICAgICB9CisgICAgICAgIF0s CisgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIC8vIENsaWVudCBTaWRl IFZhbGlkYXRpb24KKyAgICAgICAgeworICAgICAgICAgIHZhciBlcnIgPSB7 fSwKKyAgICAgICAgICAgICAgZXJybXNnLAorICAgICAgICAgICAgICBzZWNs YWJlbHMgPSB0aGlzLmdldCgnc2VjbGFiZWxzJyk7CisKKyAgICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKSB8fCBTdHJpbmco dGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgZXJyWyduYW1lJ10gPSAne3sgXygnTmFt ZSBjYW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1z ZyA9IGVycm1zZyB8fCBlcnJbJ25hbWUnXTsKKyAgICAgICAgICB9CisKKyAg ICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnb3duZXInKSkg fHwgU3RyaW5nKHRoaXMuZ2V0KCdvd25lcicpKQorICAgICAgICAgIC5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBl cnJbJ293bmVyJ10gPSAne3sgXygnT3duZXIgY2FuIG5vdCBiZSBlbXB0eSEn KSB9fSc7CisgICAgICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydv d25lciddOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzVW5k ZWZpbmVkKHRoaXMuZ2V0KCdiYXNlbnNwJykpIHx8IFN0cmluZyh0aGlzLmdl dCgnYmFzZW5zcCcpKQorICAgICAgICAgIC5yZXBsYWNlKC9eXHMrfFxzKyQv ZywgJycpID09ICcnKSB7CisgICAgICAgICAgICBlcnJbJ2Jhc2Vuc3AnXSA9 ICd7eyBfKCdTY2hlbWEgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAg ICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydiYXNlbnNwJ107Cisg ICAgICAgICAgfQorCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhp cy5nZXQoJ2Jhc2V0eXBlJykpIHx8IFN0cmluZyh0aGlzLmdldCgnYmFzZXR5 cGUnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAg ICAgICAgICAgZXJyWydiYXNldHlwZSddID0gJ3t7IF8oJ0Jhc2UgVHlwZSBj YW4gbm90IGJlIGVtcHR5IScpIH19JzsKKyAgICAgICAgICAgIGVycm1zZyA9 IGVycm1zZyB8fCBlcnJbJ2Jhc2V0eXBlJ107CisgICAgICAgICAgfQorCisg ICAgICAgICAgaWYgKHNlY2xhYmVscykgeworICAgICAgICAgICAgdmFyIHNl Y0xhYmVsc0VycjsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg c2VjbGFiZWxzLm1vZGVscy5sZW5ndGggJiYgIXNlY0xhYmVsc0VycjsgaSsr KSB7CisgICAgICAgICAgICAgIHNlY0xhYmVsc0VyciA9IChzZWNsYWJlbHMu bW9kZWxzW2ldKS52YWxpZGF0ZS5hcHBseShzZWNsYWJlbHMubW9kZWxzW2ld KTsKKyAgICAgICAgICAgICAgaWYgKHNlY0xhYmVsc0VycikgeworICAgICAg ICAgICAgICAgIGVyclsnc2VjbGFiZWxzJ10gPSBzZWNMYWJlbHNFcnI7Cisg ICAgICAgICAgICAgICAgZXJybXNnID0gZXJybXNnIHx8IHNlY0xhYmVsc0Vy cjsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg IH0KKworICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpLnNldChl cnIpOworCisgICAgICAgICAgaWYgKF8uc2l6ZShlcnIpKSB7CisgICAgICAg ICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cycsIHttc2c6IGVycm1zZ30p OworICAgICAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgICAgICB9CisK KyAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgfSks CisgICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBk YXRhKSB7CisgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdl IHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKKyAgICAgICAgaWYgKGRhdGEgJiYg ZGF0YS5jaGVjayA9PSBmYWxzZSkKKyAgICAgICAgICByZXR1cm4gdHJ1ZTsK KworICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwg ZCA9IGl0ZW1EYXRhOworICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJl ZSB0byBjaGVjayBwYXJlbnQgbm9kZQorICAgICAgICB3aGlsZSAoaSkgewor ICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIg dG8gY3JlYXRlIGRvbWFpbgorICAgICAgICAgIGlmIChfLmluZGV4T2YoWydz Y2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKKyAgICAgICAgICAgIHJldHVybiB0 cnVlOworCisgICAgICAgICAgaWYgKCdjb2xsLWRvbWFpbicgPT0gZC5fdHlw ZSkgeworICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxk IG9mIGNhdGFsb2cKKyAgICAgICAgICAgIHByZXZfaSA9IHQuaGFzUGFyZW50 KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOworICAgICAgICAgICAgcHJldl9k ID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKKyAgICAg ICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7CisgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor ICAgICAgICAgIH0KKyAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAgZCA9IGkgPyB0Lml0ZW1E YXRhKGkpIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBieSBkZWZh dWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51CisgICAg ICAgIHJldHVybiB0cnVlOworICAgICAgfSwKKyAgICAgIGlzRGlzYWJsZWQ6 IGZ1bmN0aW9uKG0peworICAgICAgICAgIGlmICghbS5pc05ldygpKSB7Cisg ICAgICAgICAgICB2YXIgc2VydmVyID0gdGhpcy5ub2RlX2luZm8uc2VydmVy OworICAgICAgICAgICAgaWYgKHNlcnZlci52ZXJzaW9uIDwgOTAyMDApCisg ICAgICAgICAgICB7CisgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgIH0KKyAgfSk7CisKKyAgfQorCisgIHJldHVybiBwZ0Jy b3dzZXIuTm9kZXNbJ2RvbWFpbiddOworfSk7CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFf cGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvYmFja2VuZF9z dXBwb3J0LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44ZjNkYjhlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvYmFja2Vu ZF9zdXBwb3J0LnNxbApAQCAtMCwwICsxLDIwIEBACitTRUxFQ1QKKyAgICBD QVNFIFdIRU4gbnNwLm5zcG5hbWUgSU4gKCdzeXMnLCAnZGJvJywgJ2luZm9y bWF0aW9uX3NjaGVtYScpIFRIRU4gdHJ1ZSBFTFNFIGZhbHNlIEVORCBBUyBk YlN1cHBvcnQKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitXSEVSRQor ICAgIG5zcC5vaWQ9e3tzY2lkfX06OmludAorICAgIEFORCAoCisgICAgICAg IChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFORCBFWElTVFMKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00gcGdf Y2xhc3MgV0hFUkUgcmVsbmFtZSA9ICdwZ19jbGFzcycgQU5EIHJlbG5hbWVz cGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAgT1IgKG5zcG5hbWUgPSAn cGdhZ2VudCcgQU5EIEVYSVNUUworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxu YW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBuc3Aub2lkIExJ TUlUIDEpKQorICAgIE9SIChuc3BuYW1lID0gJ2luZm9ybWF0aW9uX3NjaGVt YScgQU5EIEVYSVNUUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0g J3RhYmxlcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkp CisgICAgT1IgKG5zcG5hbWUgTElLRSAnXyUnIEFORCBFWElTVFMKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNFTEVDVCAxIEZST00g cGdfcHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZlcnNpb24nIEFORCBwcm9u YW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorICAgICkKKyAgICBBTkQK KyAgICAgICAgbnNwbmFtZSBOT1QgTElLRSBFJ3BnXFx0ZW1wXFwlJworICAg IEFORAorICAgICAgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdcXHRvYXN0X3Rl bXBcXCUnCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4x X3BsdXMvY3JlYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4xZmUxNTg1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv Y3JlYXRlLnNxbApAQCAtMCwwICsxLDM3IEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK0NSRUFURSBET01BSU4ge3sgY29ubnxxdElkZW50KGRh dGEuYmFzZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIEFTIHt7IGNvbm58cXRU eXBlSWRlbnQoZGF0YS5iYXNldHlwZSkgfX17JSBpZiBkYXRhLnR5cGxlbiAl fSh7e2RhdGEudHlwbGVufX0geyUgaWYgZGF0YS5wcmVjaXNpb24gJX0sIHt7 ZGF0YS5wcmVjaXNpb259fXslIGVuZGlmICV9KXslIGVuZGlmICV9eyUgaWYg ZGF0YS5jb2xsbmFtZSAlfQorCisgICAgQ09MTEFURSB7eyBkYXRhLmNvbGxu YW1lIGFuZCBkYXRhLmNvbGxuYW1lICE9ICJwZ19jYXRhbG9nLlwiZGVmYXVs dFwiIiB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS50eXBkZWZhdWx0ICV9CisK KyAgICBERUZBVUxUIHt7IGRhdGEudHlwZGVmYXVsdCB9fXslIGVuZGlmICV9 eyUgaWYgZGF0YS50eXBub3RudWxsICV9CisKKyAgICBOT1QgTlVMTAoreyUg ZW5kaWYgLSV9OworCit7JSBpZiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBm b3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBpZiBjLmNvbm5hbWUg YW5kIGMuY29uc3JjICV9QUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChk YXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAgICBBREQgQ09OU1RSQUlO VCB7eyBjb25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fSBDSEVDSyAoe3sgYy5j b25zcmMgfX0pOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUgZW5k aWYgLSV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoZGF0YS5i YXNlbnNwLCBkYXRhLm5hbWUpIH19IE9XTkVSIFRPIHt7IGNvbm58cXRJZGVu dChkYXRhLm93bmVyKSB9fTsKKworeyUgaWYgZGF0YS5kZXNjcmlwdGlvbiAl fQorQ09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElkZW50KGRhdGEuYmFz ZW5zcCwgZGF0YS5uYW1lKSB9fQorICAgIElTICd7eyBkYXRhLmRlc2NyaXB0 aW9uIH19JzsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLnNlY2xhYmVs cyAlfQoreyUgZm9yIHIgaW4gZGF0YS5zZWNsYWJlbHMgJX0KK3slIGlmIHIu c2VjdXJpdHlfbGFiZWwgYW5kIHIucHJvdmlkZXIgJX0KKwore3sgU0VDTEFC TEUuU0VUKGNvbm4sICdET01BSU4nLCBkYXRhLm5hbWUsIHIucHJvdmlkZXIs IHIuc2VjdXJpdHlfbGFiZWwsIGRhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGlm ICV9Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlmICV9CisKK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRl cy9kb21haW5zL3NxbC85LjFfcGx1cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv ZGVsZXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li40YjFlNDlmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZGVsZXRl LnNxbApAQCAtMCwwICsxLDE1IEBACit7JSBpZiBzY2lkIGFuZCBkb2lkICV9 CitTRUxFQ1QKKyAgICBkLnR5cG5hbWUgYXMgbmFtZSwgYm4ubnNwbmFtZSBh cyBiYXNlbnNwCitGUk9NCisgICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdf bmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUK KyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQKKyAgICBBTkQg ZC5vaWQ9e3tkb2lkfX06OmludDsKK3slIGVuZGlmICV9CisKK3slIGlmIG5h bWUgJX0KKyAgICBEUk9QIERPTUFJTiB7eyBjb25ufHF0SWRlbnQoYmFzZW5z cCwgbmFtZSkgfX17JSBpZiBjYXNjYWRlJX0gQ0FTQ0FERXslIGVuZGlmICV9 Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxh dGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMv ZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X2NvbGxhdGlvbnMuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxOWZkYmIKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRl cy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29sbGF0aW9ucy5zcWwKQEAg LTAsMCArMSwxMCBAQAorU0VMRUNUIC0tbnNwbmFtZSwgY29sbG5hbWUsCisg ICAgQ0FTRSBXSEVOIGxlbmd0aChuc3BuYW1lKSA+IDAgQU5EIGxlbmd0aChj b2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQobnNwbmFtZSwgJy4iJywg Y29sbG5hbWUsJyInKQorICAgIEVMU0UgJycgRU5EIEFTIGNvcHlfY29sbGF0 aW9uCitGUk9NCisgICAgcGdfY29sbGF0aW9uIGMsIHBnX25hbWVzcGFjZSBu CitXSEVSRQorICAgIGMuY29sbG5hbWVzcGFjZT1uLm9pZAorT1JERVIgQlkK KyAgICBuc3BuYW1lLCBjb2xsbmFtZTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L2dldF9jb25zdHJhaW50cy5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5z L3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29uc3RyYWlu dHMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0 NDg4NDQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfY29uc3Ry YWludHMuc3FsCkBAIC0wLDAgKzEsMjkgQEAKK1NFTEVDVAorICAgICdUQUJM RScgQVMgb2JqZWN0a2luZCwgYy5vaWQsIGNvbm5hbWUsIHJlbG5hbWUsIG5z cG5hbWUsIGRlc2NyaXB0aW9uLAorICAgIHBnX2dldF9leHByKGNvbmJpbiwg Y29ucmVsaWQsIHRydWUpIGFzIGNvbnNyYworRlJPTQorICAgIHBnX2NvbnN0 cmFpbnQgYworSk9JTgorICAgIHBnX2NsYXNzIGNsIE9OIGNsLm9pZD1jb25y ZWxpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBubC5vaWQ9cmVs bmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19kZXNjcmlwdGlv biBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5jbGFzc29pZD0n cGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUKKyAgICBjb250eXBl ID0gJ2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9fTo6b2lkCitVTklPTgor U0VMRUNUCisgICAgJ0RPTUFJTicgQVMgb2JqZWN0a2luZCwgYy5vaWQsIGNv bm5hbWUsIHR5cG5hbWUgYXMgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRp b24sCisgICAgcmVnZXhwX3JlcGxhY2UocGdfZ2V0X2NvbnN0cmFpbnRkZWYo Yy5vaWQsIHRydWUpLCBFJ0NIRUNLIFxcKCguKilcXCkuKicsIEUnXFwxJykg YXMgY29ucworRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAg IHBnX3R5cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25h bWVzcGFjZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVS IEpPSU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9 dC5vaWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2Ns YXNzKQorV0hFUkUKKyAgICBjb250eXBlID0gJ2MnCitBTkQgY29udHlwaWQg PSAge3tkb2lkfX06Om9pZAorT1JERVIgQlkgY29ubmFtZTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X29pZC5z cWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3YjU4 MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMv dGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVzL2dldF9vaWQuc3FsCkBA IC0wLDAgKzEsMTkgQEAKK3slIGlmIGRvaWQgJX0KK1NFTEVDVAorICAgIGQu dHlwbmFtZXNwYWNlIGFzIHNjaWQKK0ZST00KKyAgICBwZ190eXBlIGQKK1dI RVJFCisgICAgZC5vaWQ9e3sgZG9pZCB9fTo6b2lkOworCit7JSBlbHNlICV9 CitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBuYW1lc3BhY2UKK0ZST00KKyAg ICBwZ190eXBlIGQKK0pPSU4KKyAgICBwZ19uYW1lc3BhY2UgYm4gT04gYm4u b2lkPWQudHlwbmFtZXNwYWNlCitXSEVSRQorICAgIGJuLm5zcG5hbWUgPSB7 eyBiYXNlbnNwfHF0TGl0ZXJhbCB9fQorICAgIEFORCBkLnR5cG5hbWU9e3sg bmFtZXxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwv OS4xX3BsdXMvZ2V0X3NjaGVtYXMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9t YWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X3NjaGVt YXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFk YjMzMzgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21h aW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFfcGx1cy9nZXRfc2NoZW1h cy5zcWwKQEAgLTAsMCArMSwyNCBAQAorU0VMRUNUCisgICAgbnNwLm5zcG5h bWUKK0ZST00KKyAgICBwZ19uYW1lc3BhY2UgbnNwCitMRUZUIE9VVEVSIEpP SU4KKyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9bnNw Lm9pZCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19uYW1lc3BhY2UnOjpyZWdjbGFz cykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2NhdGFsb2cucGdfZGVmYXVs dF9hY2wgZGFjbCBPTiAoZGFjbC5kZWZhY2xuYW1lc3BhY2UgPSBuc3Aub2lk KQorV0hFUkUKKyAgICBOT1QgKChuc3BuYW1lID0gJ3BnX2NhdGFsb2cnIEFO RCBFWElTVFMKKyAgICAgICAgKFNFTEVDVCAxIEZST00gcGdfY2xhc3MgV0hF UkUgcmVsbmFtZSA9ICdwZ19jbGFzcycgQU5EIHJlbG5hbWVzcGFjZSA9IG5z cC5vaWQgTElNSVQgMSkpIE9SCisgICAgKG5zcG5hbWUgPSAncGdhZ2VudCcg QU5EIEVYSVNUUworICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBX SEVSRSByZWxuYW1lID0gJ3BnYV9qb2InIEFORCByZWxuYW1lc3BhY2UgPSBu c3Aub2lkIExJTUlUIDEpKSBPUgorICAgIChuc3BuYW1lID0gJ2luZm9ybWF0 aW9uX3NjaGVtYScgQU5EIEVYSVNUUworICAgICAgICAoU0VMRUNUIDEgRlJP TSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3RhYmxlcycgQU5EIHJlbG5h bWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpIE9SCisgICAgKG5zcG5hbWUg TElLRSAnXyUnIEFORCBFWElTVFMKKyAgICAgICAgKFNFTEVDVCAxIEZST00g cGdfcHJvYyBXSEVSRSBwcm9uYW1lPSdzbG9ueXZlcnNpb24nIEFORCBwcm9u YW1lc3BhY2UgPSBuc3Aub2lkIExJTUlUIDEpKQorICAgIClBTkQKKyAgICBu c3BuYW1lIE5PVCBMSUtFIEUncGdcXHRlbXBcXCUnIEFORAorICAgIG5zcG5h bWUgTk9UIExJS0UgRSdwZ1xcdG9hc3RfdGVtcFxcJScgQU5ECisgICAgLS0g QURERUQ6IEJlY2F1c2UgV2UgbmVlZCB0byBvbWl0IHN5c3RlbSBzY2hlbWEg ZXhjZXB0IHRoZSBvbmUgb24gd2hpY2ggd2UgYXJlIHRyeWluZyB0byAgY3Jl YXRlIGNvbGxhdGlvbgorICAgICggbnNwLm9pZCA9IHt7IHNjaWQgfX0gT1Ig bnNwbmFtZSBOT1QgTElLRSBFJ3BnXFxfJScgKQorT1JERVIgQlkKKyAgICBu c3BuYW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvZ2V0X3R5cGVzLnNxbCBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3Fs LzkuMV9wbHVzL2dldF90eXBlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uOTc2MjFiMAotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku MV9wbHVzL2dldF90eXBlcy5zcWwKQEAgLTAsMCArMSwyMiBAQAorU0VMRUNU CisgICAgKgorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAgZm9ybWF0X3R5 cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAgICAgICAgQ0FTRSBXSEVO IHR5cGVsZW0gPiAwIFRIRU4gdHlwZWxlbSBFTFNFIHQub2lkIEVORCBhcyBl bGVtb2lkLAorICAgICAgICB0eXBsZW4sIHR5cHR5cGUsIHQub2lkLCBuc3Bu YW1lLAorICAgICAgICAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0 MiBXSEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAK KyAgICBGUk9NCisgICAgICAgIHBnX3R5cGUgdAorICAgIEpPSU4KKyAgICAg ICAgcGdfbmFtZXNwYWNlIG5zcCBPTiB0eXBuYW1lc3BhY2U9bnNwLm9pZAor ICAgIFdIRVJFCisgICAgICAgIChOT1QgKHR5cG5hbWUgPSAndW5rbm93bicg QU5EIG5zcG5hbWUgPSAncGdfY2F0YWxvZycpKQorICAgICAgICAgQU5EIHR5 cGlzZGVmaW5lZCBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdlJywgJ3In KQorICAgICAgICAgQU5EIE5PVCBFWElTVFMKKyAgICAgICAgIChzZWxlY3Qg MSBmcm9tIHBnX2NsYXNzIHdoZXJlIHJlbG5hbWVzcGFjZT10eXBuYW1lc3Bh Y2UgYW5kIHJlbG5hbWUgPSB0eXBuYW1lIGFuZCByZWxraW5kICE9ICdjJykK KyAgICAgICAgIEFORCAodHlwbmFtZSBub3QgbGlrZSAnXyUnIE9SIE5PVCBF WElTVFMKKyAgICAgICAgIChzZWxlY3QgMSBmcm9tIHBnX2NsYXNzIHdoZXJl IHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgYW5kIHJlbG5hbWUgPSBzdWJz dHJpbmcodHlwbmFtZSBmcm9tIDIpOjpuYW1lIGFuZCByZWxraW5kICE9ICdj JykpCisgICAgICAgICAgKSBBUyBkdW1teQorT1JERVIgQlkKKyAgICBuc3Bu YW1lIDw+ICdwZ19jYXRhbG9nJywgbnNwbmFtZSA8PiAncHVibGljJywgbnNw bmFtZSwgMQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90 ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9kZS5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjFf cGx1cy9ub2RlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43YmQzZTViCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvbm9k ZS5zcWwKQEAgLTAsMCArMSwxMyBAQAorU0VMRUNUCisgICAgZC5vaWQsIGQu dHlwbmFtZSBhcyBuYW1lLCBwZ19nZXRfdXNlcmJ5aWQoZC50eXBvd25lcikg YXMgb3duZXIsCisgICAgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisg ICAgcGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0g ZC50eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBi bi5vaWQ9ZC50eXBuYW1lc3BhY2UKK1dIRVJFCisgICAgZC50eXBuYW1lc3Bh Y2UgPSB7e3NjaWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGQudHlwbmFtZTsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVz L2RvbWFpbnMvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3Bs dXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uMjE2ZmFmZQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMV9wbHVz L3Byb3BlcnRpZXMuc3FsCkBAIC0wLDAgKzEsMjggQEAKK1NFTEVDVAorICAg IGQub2lkLCBkLnR5cG5hbWUgYXMgbmFtZSwgZC50eXBiYXNldHlwZSwgZm9y bWF0X3R5cGUoYi5vaWQsTlVMTCkgYXMgYmFzZXR5cGUsIHBnX2dldF91c2Vy YnlpZChkLnR5cG93bmVyKSBhcyBvd25lciwKKyAgICBjLm9pZCBBUyBjb2xs b2lkLCBmb3JtYXRfdHlwZShiLm9pZCwgZC50eXB0eXBtb2QpIEFTIGZ1bGx0 eXBlLAorICAgIENBU0UgV0hFTiBsZW5ndGgoY24ubnNwbmFtZSkgPiAwIEFO RCBsZW5ndGgoYy5jb2xsbmFtZSkgPiAwIFRIRU4KKyAgICBjb25jYXQoY24u bnNwbmFtZSwgJy4iJywgYy5jb2xsbmFtZSwnIicpCisgICAgRUxTRSAnJyBF TkQgQVMgY29sbG5hbWUsCisgICAgZC50eXB0eXBtb2QsIGQudHlwbm90bnVs bCwgZC50eXBkZWZhdWx0LCBkLnR5cG5kaW1zLCBkLnR5cGRlbGltLCBibi5u c3BuYW1lIGFzIGJhc2Vuc3AsCisgICAgZGVzY3JpcHRpb24sIChTRUxFQ1Qg Q09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJFIHQyLnR5cG5hbWU9ZC50 eXBuYW1lKSA+IDEgQVMgZG9taXNkdXAsCisgICAgKFNFTEVDVCBDT1VOVCgx KSBGUk9NIHBnX3R5cGUgdDMgV0hFUkUgdDMudHlwbmFtZT1iLnR5cG5hbWUp ID4gMSBBUyBiYXNlaXNkdXAKK0ZST00KKyAgICBwZ190eXBlIGQKK0pPSU4K KyAgICBwZ190eXBlIGIgT04gYi5vaWQgPSBkLnR5cGJhc2V0eXBlCitKT0lO CisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9pZD1kLnR5cG5hbWVzcGFj ZQorTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9O IChkZXMub2Jqb2lkPWQub2lkIEFORCBkZXMuY2xhc3NvaWQ9J3BnX3R5cGUn OjpyZWdjbGFzcykKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2NvbGxhdGlv biBjIE9OIGQudHlwY29sbGF0aW9uPWMub2lkCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19uYW1lc3BhY2UgY24gT04gYy5jb2xsbmFtZXNwYWNlPWNuLm9p ZAorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9IHt7c2NpZH19OjpvaWQK KyAgICB7JSBpZiBkb2lkICV9CisgICAgQU5EIGQub2lkPXt7ZG9pZH19Ojpp bnQKKyAgICB7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBkLnR5cG5hbWU7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRl cy9kb21haW5zL3NxbC85LjFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMv dXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44MWEyMTBiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv ZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4xX3BsdXMvdXBkYXRl LnNxbApAQCAtMCwwICsxLDg0IEBACit7JSBpbXBvcnQgJ21hY3Jvcy9zY2hl bWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3slIGlmIGRh dGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3slIGlmIGRh dGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5uYW1lICV9 CitBTFRFUiBUWVBFIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg b19kYXRhLm5hbWUpIH19CisgICAgUkVOQU1FIFRPIHt7IGNvbm58cXRJZGVu dChkYXRhLm5hbWUpIH19OworeyUgc2V0IG5hbWUgPSBkYXRhLm5hbWUgJX0K K3slIGVuZGlmICV9Cit7JSBlbmRpZiAtJX0KKworeyUgaWYgZGF0YS50eXBu b3RudWxsIGFuZCBub3Qgb19kYXRhLnR5cG5vdG51bGwgJX0KKworQUxURVIg RE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFtZSkg fX0KKyAgICBTRVQgTk9UIE5VTEw7Cit7JSBlbGlmICd0eXBub3RudWxsJyBp biBkYXRhIGFuZCBub3QgZGF0YS50eXBub3RudWxsIGFuZCBvX2RhdGEudHlw bm90bnVsbCV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRlbnQob19k YXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBOT1QgTlVMTDsKK3sl IGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0KKworQUxU RVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1bHR8cXRM aXRlcmFsIH19OworeyUgZWxpZiBub3QgZGF0YS50eXBkZWZhdWx0IGFuZCBv X2RhdGEudHlwZGVmYXVsdCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxx dElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERST1AgREVG QVVMVDsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5vd25lciAlfQorCitB TFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBu YW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChkYXRhLm93 bmVyKSB9fTsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLmNvbnN0cmFp bnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmRlbGV0ZWQg JX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFz ZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sgY29ubnxx dElkZW50KGMuY29ubmFtZSkgfX0KK3slIGVuZGZvciAlfQoreyUgZm9yIGMg aW4gZGF0YS5jb25zdHJhaW50cy5hZGRlZCAlfQoreyUgaWYgYy5jb25uYW1l IGFuZCBjLmNvbnNyYyAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElk ZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIEFERCBDT05TVFJB SU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5hbWUpIH19IENIRUNLICh7eyBj LmNvbnNyYyB9fSApOworeyUgZW5kaWYgJX0KK3slIGVuZGZvciAlfQoreyUg ZW5kaWYgLSV9CisKK3slIHNldCBzZWNsYWJlbHMgPSBkYXRhLnNlY2xhYmVs cyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBhbmQgc2VjbGFi ZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFi ZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQoY29ubiwgJ0RP TUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNlbnNwKSB9fQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAlfQoreyUgaWYgJ2FkZGVkJyBpbiBz ZWNsYWJlbHMgYW5kIHNlY2xhYmVscy5hZGRlZHxsZW5ndGggPiAwICV9Cit7 JSBmb3IgciBpbiBzZWNsYWJlbHMuYWRkZWQgJX0KKwore3sgU0VDTEFCTEUu U0VUKGNvbm4sICdET01BSU4nLCBuYW1lLCByLnByb3ZpZGVyLCByLnNlY3Vy aXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAlfQor eyUgZW5kaWYgJX0KK3slIGlmICdjaGFuZ2VkJyBpbiBzZWNsYWJlbHMgYW5k IHNlY2xhYmVscy5jaGFuZ2VkfGxlbmd0aCA+IDAgJX0KK3slIGZvciByIGlu IHNlY2xhYmVscy5jaGFuZ2VkICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25u LCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRlciwgci5zZWN1cml0eV9sYWJl bCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBlbmRmb3IgJX0KK3slIGVuZGlm IC0lfQorCit7JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQg T04gRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwgbmFt ZSkgfX0KKyAgICBJUyB7eyBkYXRhLmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9 fTsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLmJhc2Vuc3AgJX0KKwor QUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBTRVQgU0NIRU1BIHt7IGNvbm58cXRJZGVudChkYXRh LmJhc2Vuc3ApIH19OworeyUgZW5kaWYgJX0KKworeyUgZW5kaWYgJX0KZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2Rv bWFpbnMvc3FsLzkuMl9wbHVzL2JhY2tlbmRfc3VwcG9ydC5zcWwgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJf cGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjhmM2RiOGUKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85 LjJfcGx1cy9iYWNrZW5kX3N1cHBvcnQuc3FsCkBAIC0wLDAgKzEsMjAgQEAK K1NFTEVDVAorICAgIENBU0UgV0hFTiBuc3AubnNwbmFtZSBJTiAoJ3N5cycs ICdkYm8nLCAnaW5mb3JtYXRpb25fc2NoZW1hJykgVEhFTiB0cnVlIEVMU0Ug ZmFsc2UgRU5EIEFTIGRiU3VwcG9ydAorRlJPTQorICAgIHBnX25hbWVzcGFj ZSBuc3AKK1dIRVJFCisgICAgbnNwLm9pZD17e3NjaWR9fTo6aW50CisgICAg QU5EICgKKyAgICAgICAgKG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5EIEVY SVNUUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0VM RUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ3BnX2NsYXNz JyBBTkQgcmVsbmFtZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkKKyAgICBP UiAobnNwbmFtZSA9ICdwZ2FnZW50JyBBTkQgRVhJU1RTCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2Ns YXNzIFdIRVJFIHJlbG5hbWUgPSAncGdhX2pvYicgQU5EIHJlbG5hbWVzcGFj ZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAgT1IgKG5zcG5hbWUgPSAnaW5m b3JtYXRpb25fc2NoZW1hJyBBTkQgRVhJU1RTCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAndGFibGVzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNw Lm9pZCBMSU1JVCAxKSkKKyAgICBPUiAobnNwbmFtZSBMSUtFICdfJScgQU5E IEVYSVNUUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo U0VMRUNUIDEgRlJPTSBwZ19wcm9jIFdIRVJFIHByb25hbWU9J3Nsb255dmVy c2lvbicgQU5EIHByb25hbWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisg ICAgKQorICAgIEFORAorICAgICAgICBuc3BuYW1lIE5PVCBMSUtFIEUncGdc XHRlbXBcXCUnCisgICAgQU5ECisgICAgICAgIG5zcG5hbWUgTk9UIExJS0Ug RSdwZ1xcdG9hc3RfdGVtcFxcJScKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2Ny ZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9k b21haW5zL3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODE5ZTMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5z L3NxbC85LjJfcGx1cy9jcmVhdGUuc3FsCkBAIC0wLDAgKzEsNDAgQEAKK3sl IGltcG9ydCAnbWFjcm9zL3NjaGVtYXMvc2VjdXJpdHkubWFjcm9zJyBhcyBT RUNMQUJMRSAlfQoreyUgaWYgZGF0YSAlfQorQ1JFQVRFIERPTUFJTiB7eyBj b25ufHF0SWRlbnQoZGF0YS5iYXNlbnNwLCBkYXRhLm5hbWUpIH19CisgICAg QVMge3sgY29ubnxxdFR5cGVJZGVudChkYXRhLmJhc2V0eXBlKSB9fXslIGlm IGRhdGEudHlwbGVuICV9KHt7ZGF0YS50eXBsZW59fSB7JSBpZiBkYXRhLnBy ZWNpc2lvbiAlfSwge3tkYXRhLnByZWNpc2lvbn19eyUgZW5kaWYgJX0peyUg ZW5kaWYgJX17JSBpZiBkYXRhLmNvbGxuYW1lIGFuZCBkYXRhLmNvbGxuYW1l ICE9ICJwZ19jYXRhbG9nLlwiZGVmYXVsdFwiIiAlfQorCisgICAgQ09MTEFU RSB7eyBkYXRhLmNvbGxuYW1lIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5 cGRlZmF1bHQgJX0KKworICAgIERFRkFVTFQge3sgZGF0YS50eXBkZWZhdWx0 IH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLnR5cG5vdG51bGwgJX0KKworICAg IE5PVCBOVUxMeyUgZW5kaWYgLSV9OworCit7JSBpZiBkYXRhLmNvbnN0cmFp bnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzICV9Cit7JSBp ZiBjLmNvbm5hbWUgYW5kIGMuY29uc3JjICV9QUxURVIgRE9NQUlOIHt7IGNv bm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAgICBB REQgQ09OU1RSQUlOVCB7eyBjb25ufHF0SWRlbnQoYy5jb25uYW1lKSB9fSBD SEVDSyAoe3sgYy5jb25zcmMgfX0peyUgaWYgYy5jb252YWxpZGF0ZWQgJX0K KworICAgIE5PVCBWQUxJRCB7JSBlbmRpZiAlfXslIGlmIGMuY29ubm9pbmhl cml0ICV9IE5PIElOSEVSSVR7JSBlbmRpZiAlfTsKK3slIGVuZGlmIC0lfQor eyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KKworQUxURVIgRE9NQUlOIHt7 IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0gT1dO RVIgVE8ge3sgY29ubnxxdElkZW50KGRhdGEub3duZXIpIH19OworCit7JSBp ZiBkYXRhLmRlc2NyaXB0aW9uICV9CisKK0NPTU1FTlQgT04gRE9NQUlOIHt7 IGNvbm58cXRJZGVudChkYXRhLmJhc2Vuc3AsIGRhdGEubmFtZSkgfX0KKyAg ICBJUyAne3sgZGF0YS5kZXNjcmlwdGlvbiB9fSc7Cit7JSBlbmRpZiAtJX0K KworeyUgaWYgZGF0YS5zZWNsYWJlbHMgJX0KK3slIGZvciByIGluIGRhdGEu c2VjbGFiZWxzICV9Cit7JSBpZiByLnNlY3VyaXR5X2xhYmVsIGFuZCByLnBy b3ZpZGVyICV9CisKK3t7IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlOJywg ZGF0YS5uYW1lLCByLnByb3ZpZGVyLCByLnNlY3VyaXR5X2xhYmVsLCBkYXRh CisuYmFzZW5zcCkgfX0KK3slIGVuZGlmICV9Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9CisKK3slIGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv c2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1 cy9kZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0 ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjQzN2VmCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvZGVsZXRlLnNxbApAQCAtMCwwICsxLDE2IEBA Cit7JSBpZiBzY2lkIGFuZCBkb2lkICV9CitTRUxFQ1QKKyAgICBkLnR5cG5h bWUgYXMgbmFtZSwgYm4ubnNwbmFtZSBhcyBiYXNlbnNwCitGUk9NCisgICAg cGdfdHlwZSBkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9p ZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9 IHt7c2NpZH19OjpvaWQKK0FORAorICAgIGQub2lkPXt7ZG9pZH19OjppbnQ7 Cit7JSBlbmRpZiAlfQorCit7JSBpZiBuYW1lICV9CisgICAgRFJPUCBET01B SU4ge3sgY29ubnxxdElkZW50KGJhc2Vuc3AsIG5hbWUpIH19eyUgaWYgY2Fz Y2FkZSV9IENBU0NBREV7JSBlbmRpZiAlfQoreyUgZW5kaWYgJX0KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2dldF9jb2xsYXRpb25zLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L2dldF9jb2xsYXRpb25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5lNTljMTdkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3Bs dXMvZ2V0X2NvbGxhdGlvbnMuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK1NFTEVD VCAtLW5zcG5hbWUsIGNvbGxuYW1lLAorICAgIENBU0UgV0hFTiBsZW5ndGgo bnNwbmFtZSkgPiAwIEFORCBsZW5ndGgoY29sbG5hbWUpID4gMCAgVEhFTgor ICAgIGNvbmNhdChuc3BuYW1lLCAnLiInLCBjb2xsbmFtZSwnIicpCisgICAg RUxTRSAnJyBFTkQgQVMgY29weV9jb2xsYXRpb24KK0ZST00KKyAgICBwZ19j b2xsYXRpb24gYywgcGdfbmFtZXNwYWNlIG4KK1dIRVJFCisgICAgYy5jb2xs bmFtZXNwYWNlPW4ub2lkCitPUkRFUiBCWQorICAgIG5zcG5hbWUsIGNvbGxu YW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X2NvbnN0cmFpbnRzLnNx bCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMv c3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFjODQ3NQotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFp bnMvc3FsLzkuMl9wbHVzL2dldF9jb25zdHJhaW50cy5zcWwKQEAgLTAsMCAr MSwyOSBAQAorU0VMRUNUCisgICAgJ1RBQkxFJyBBUyBvYmplY3RraW5kLCBj Lm9pZCwgY29ubmFtZSwgcmVsbmFtZSwgbnNwbmFtZSwgZGVzY3JpcHRpb24s CisgICAgcGdfZ2V0X2V4cHIoY29uYmluLCBjb25yZWxpZCwgdHJ1ZSkgYXMg Y29uc3JjLCBjb25ub2luaGVyaXQsIGNvbnZhbGlkYXRlZAorRlJPTQorICAg IHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX2NsYXNzIGNsIE9OIGNs Lm9pZD1jb25yZWxpZAorSk9JTgorICAgIHBnX25hbWVzcGFjZSBubCBPTiBu bC5vaWQ9cmVsbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4KKyAgICBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Yy5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQorV0hFUkUKKyAg ICBjb250eXBlID0gJ2MnIEFORCBjb25yZWxpZCA9ICB7e2RvaWR9fTo6b2lk CitVTklPTgorU0VMRUNUCisgICAgJ0RPTUFJTicgQVMgb2JqZWN0a2luZCwg Yy5vaWQsIGNvbm5hbWUsIHR5cG5hbWUgYXMgcmVsbmFtZSwgbnNwbmFtZSwg ZGVzY3JpcHRpb24sCisgICAgcmVnZXhwX3JlcGxhY2UocGdfZ2V0X2NvbnN0 cmFpbnRkZWYoYy5vaWQsIHRydWUpLCBFJ0NIRUNLIFxcKCguKilcXCkuKics IEUnXFwxJykgYXMgY29uc3JjLCBjb25ub2luaGVyaXQsIGNvbnZhbGlkYXRl ZAorRlJPTQorICAgIHBnX2NvbnN0cmFpbnQgYworSk9JTgorICAgIHBnX3R5 cGUgdCBPTiB0Lm9pZD1jb250eXBpZAorSk9JTgorICAgIHBnX25hbWVzcGFj ZSBubCBPTiBubC5vaWQ9dHlwbmFtZXNwYWNlCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9dC5vaWQg QU5EIGRlcy5jbGFzc29pZD0ncGdfY29uc3RyYWludCc6OnJlZ2NsYXNzKQor V0hFUkUKKyAgICBjb250eXBlID0gJ2MnIEFORCBjb250eXBpZCA9ICB7e2Rv aWR9fTo6b2lkCitPUkRFUiBCWQorICAgIGNvbm5hbWU7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3Nx bC85LjJfcGx1cy9nZXRfb2lkLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9vaWQuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyN2I1ODMK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9nZXRfb2lkLnNxbApAQCAt MCwwICsxLDE5IEBACit7JSBpZiBkb2lkICV9CitTRUxFQ1QKKyAgICBkLnR5 cG5hbWVzcGFjZSBhcyBzY2lkCitGUk9NCisgICAgcGdfdHlwZSBkCitXSEVS RQorICAgIGQub2lkPXt7IGRvaWQgfX06Om9pZDsKKworeyUgZWxzZSAlfQor U0VMRUNUCisgICAgZC5vaWQsIGQudHlwbmFtZXNwYWNlCitGUk9NCisgICAg cGdfdHlwZSBkCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9p ZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBibi5uc3BuYW1lID0ge3sg YmFzZW5zcHxxdExpdGVyYWwgfX0KKyAgICBBTkQgZC50eXBuYW1lPXt7IG5h bWV8cXRMaXRlcmFsIH19OworeyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL2dldF9zY2hlbWFzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2RvbWFp bnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVzL2dldF9zY2hlbWFz LnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzYy ZGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlu cy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X3NjaGVtYXMu c3FsCkBAIC0wLDAgKzEsMjQgQEAKK1NFTEVDVAorICAgIG5zcC5uc3BuYW1l CitGUk9NCisgICAgcGdfbmFtZXNwYWNlIG5zcAorTEVGVCBPVVRFUiBKT0lO CisgICAgcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMub2Jqb2lkPW5zcC5v aWQgQU5EIGRlcy5jbGFzc29pZD0ncGdfbmFtZXNwYWNlJzo6cmVnY2xhc3Mp CisgTEVGVCBPVVRFUiBKT0lOCisgICAgcGdfY2F0YWxvZy5wZ19kZWZhdWx0 X2FjbCBkYWNsIE9OIChkYWNsLmRlZmFjbG5hbWVzcGFjZSA9IG5zcC5vaWQp CitXSEVSRQorICAgIE5PVCAoKG5zcG5hbWUgPSAncGdfY2F0YWxvZycgQU5E IEVYSVNUUworICAgICAgICAoU0VMRUNUIDEgRlJPTSBwZ19jbGFzcyBXSEVS RSByZWxuYW1lID0gJ3BnX2NsYXNzJyBBTkQgcmVsbmFtZXNwYWNlID0gbnNw Lm9pZCBMSU1JVCAxKSkgT1IKKyAgICAobnNwbmFtZSA9ICdwZ2FnZW50JyBB TkQgRVhJU1RTCisgICAgICAgIChTRUxFQ1QgMSBGUk9NIHBnX2NsYXNzIFdI RVJFIHJlbG5hbWUgPSAncGdhX2pvYicgQU5EIHJlbG5hbWVzcGFjZSA9IG5z cC5vaWQgTElNSVQgMSkpIE9SCisgICAgKG5zcG5hbWUgPSAnaW5mb3JtYXRp b25fc2NoZW1hJyBBTkQgRVhJU1RTCisgICAgICAgIChTRUxFQ1QgMSBGUk9N IHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAndGFibGVzJyBBTkQgcmVsbmFt ZXNwYWNlID0gbnNwLm9pZCBMSU1JVCAxKSkgT1IKKyAgICAobnNwbmFtZSBM SUtFICdfJScgQU5EIEVYSVNUUworICAgICAgICAoU0VMRUNUIDEgRlJPTSBw Z19wcm9jIFdIRVJFIHByb25hbWU9J3Nsb255dmVyc2lvbicgQU5EIHByb25h bWVzcGFjZSA9IG5zcC5vaWQgTElNSVQgMSkpCisgICAgKUFORAorICAgIG5z cG5hbWUgTk9UIExJS0UgRSdwZ1xcdGVtcFxcJScgQU5ECisgICAgbnNwbmFt ZSBOT1QgTElLRSBFJ3BnXFx0b2FzdF90ZW1wXFwlJyBBTkQKKyAgLS0gQURE RUQ6IEJlY2F1c2UgV2UgbmVlZCB0byBvbWl0IHN5c3RlbSBzY2hlbWEgZXhj ZXB0IHRoZSBvbmUgb24gd2hpY2ggd2UgYXJlIHRyeWluZyB0byAgY3JlYXRl IGNvbGxhdGlvbgorICAgICggbnNwLm9pZCA9IHt7IHNjaWQgfX0gT1IgbnNw bmFtZSBOT1QgTElLRSBFJ3BnXFxfJScgKQorT1JERVIgQlkKKyAgICBuc3Bu YW1lOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1w bGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvZ2V0X3R5cGVzLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzku Ml9wbHVzL2dldF90eXBlcy5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYzRkNDZmNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9w bHVzL2dldF90eXBlcy5zcWwKQEAgLTAsMCArMSwyMiBAQAorU0VMRUNUCisg ICAgKgorRlJPTQorICAgIChTRUxFQ1QKKyAgICAgICAgZm9ybWF0X3R5cGUo dC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwKKyAgICAgICAgQ0FTRSBXSEVOIHR5 cGVsZW0gPiAwIFRIRU4gdHlwZWxlbSBFTFNFIHQub2lkIEVORCBhcyBlbGVt b2lkLAorICAgICAgICB0eXBsZW4sIHR5cHR5cGUsIHQub2lkLCBuc3BuYW1l LAorICAgICAgICAoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBX SEVSRSB0Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAKKyAg ICBGUk9NCisgICAgICAgIHBnX3R5cGUgdAorICAgIEpPSU4KKyAgICAgICAg cGdfbmFtZXNwYWNlIG5zcCBPTiB0eXBuYW1lc3BhY2U9bnNwLm9pZAorICAg IFdIRVJFCisgICAgICAgIChOT1QgKHR5cG5hbWUgPSAndW5rbm93bicgQU5E IG5zcG5hbWUgPSAncGdfY2F0YWxvZycpKQorICAgICAgICAgQU5EIHR5cGlz ZGVmaW5lZCBBTkQgdHlwdHlwZSBJTiAoJ2InLCAnYycsICdlJywgJ3InKQor ICAgICAgICAgQU5EIE5PVCBFWElTVFMKKyAgICAgICAgIChzZWxlY3QgMSBm cm9tIHBnX2NsYXNzIHdoZXJlIHJlbG5hbWVzcGFjZT10eXBuYW1lc3BhY2Ug YW5kIHJlbG5hbWUgPSB0eXBuYW1lIGFuZCByZWxraW5kICE9ICdjJykKKyAg ICAgICAgIEFORCAodHlwbmFtZSBub3QgbGlrZSAnXyUnIE9SIE5PVCBFWElT VFMKKyAgICAgICAgIChzZWxlY3QgMSBmcm9tIHBnX2NsYXNzIHdoZXJlIHJl bG5hbWVzcGFjZT10eXBuYW1lc3BhY2UgYW5kIHJlbG5hbWUgPSBzdWJzdHJp bmcodHlwbmFtZSBmcm9tIDIpOjpuYW1lIGFuZCByZWxraW5kICE9ICdjJykp CisgICAgICAgICApIEFTIGR1bW15CitPUkRFUiBCWQorICAgIG5zcG5hbWUg PD4gJ3BnX2NhdGFsb2cnLCBuc3BuYW1lIDw+ICdwdWJsaWMnLCBuc3BuYW1l LCAxCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3RlbXBs YXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9ub2RlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2RvbWFpbnMvdGVtcGxhdGVzL2RvbWFpbnMvc3FsLzkuMl9wbHVz L25vZGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjdiZDNlNWIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9k b21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9ub2RlLnNx bApAQCAtMCwwICsxLDEzIEBACitTRUxFQ1QKKyAgICBkLm9pZCwgZC50eXBu YW1lIGFzIG5hbWUsIHBnX2dldF91c2VyYnlpZChkLnR5cG93bmVyKSBhcyBv d25lciwKKyAgICBibi5uc3BuYW1lIGFzIGJhc2Vuc3AKK0ZST00KKyAgICBw Z190eXBlIGQKK0pPSU4KKyAgICBwZ190eXBlIGIgT04gYi5vaWQgPSBkLnR5 cGJhc2V0eXBlCitKT0lOCisgICAgcGdfbmFtZXNwYWNlIGJuIE9OIGJuLm9p ZD1kLnR5cG5hbWVzcGFjZQorV0hFUkUKKyAgICBkLnR5cG5hbWVzcGFjZSA9 IHt7c2NpZH19OjpvaWQKK09SREVSIEJZCisgICAgZC50eXBuYW1lOwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9t YWlucy9zcWwvOS4yX3BsdXMvcHJvcGVydGllcy5zcWwgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy9kb21haW5zL3RlbXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy9w cm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi41ZGQyZDAxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMvcHJv cGVydGllcy5zcWwKQEAgLTAsMCArMSwyOSBAQAorU0VMRUNUCisgICAgZC5v aWQsIGQudHlwbmFtZSBhcyBuYW1lLCBkLnR5cGJhc2V0eXBlLCBmb3JtYXRf dHlwZShiLm9pZCxOVUxMKSBhcyBiYXNldHlwZSwgcGdfZ2V0X3VzZXJieWlk KGQudHlwb3duZXIpIGFzIG93bmVyLAorICAgIGMub2lkIEFTIGNvbGxvaWQs IGZvcm1hdF90eXBlKGIub2lkLCBkLnR5cHR5cG1vZCkgQVMgZnVsbHR5cGUs CisgICAgQ0FTRSBXSEVOIGxlbmd0aChjbi5uc3BuYW1lKSA+IDAgQU5EIGxl bmd0aChjLmNvbGxuYW1lKSA+IDAgVEhFTgorICAgIGNvbmNhdChjbi5uc3Bu YW1lLCAnLiInLCBjLmNvbGxuYW1lLCciJykKKyAgICBFTFNFICcnIEVORCBB UyBjb2xsbmFtZSwKKyAgICBkLnR5cHR5cG1vZCwgZC50eXBub3RudWxsLCBk LnR5cGRlZmF1bHQsIGQudHlwbmRpbXMsIGQudHlwZGVsaW0sIGJuLm5zcG5h bWUgYXMgYmFzZW5zcCwKKyAgICBkZXNjcmlwdGlvbiwgKFNFTEVDVCBDT1VO VCgxKSBGUk9NIHBnX3R5cGUgdDIgV0hFUkUgdDIudHlwbmFtZT1kLnR5cG5h bWUpID4gMSBBUyBkb21pc2R1cCwKKyAgICAoU0VMRUNUIENPVU5UKDEpIEZS T00gcGdfdHlwZSB0MyBXSEVSRSB0My50eXBuYW1lPWIudHlwbmFtZSkgPiAx IEFTIGJhc2Vpc2R1cCwKKyAgICAoU0VMRUNUIGFycmF5X2FnZyhwcm92aWRl ciB8fCAnPScgfHwgbGFiZWwpIEZST00gcGdfc2hzZWNsYWJlbCBzbDEgV0hF UkUgc2wxLm9iam9pZD1kLm9pZCkgQVMgc2VjbGFiZWxzCitGUk9NCisgICAg cGdfdHlwZSBkCitKT0lOCisgICAgcGdfdHlwZSBiIE9OIGIub2lkID0gZC50 eXBiYXNldHlwZQorSk9JTgorICAgIHBnX25hbWVzcGFjZSBibiBPTiBibi5v aWQ9ZC50eXBuYW1lc3BhY2UKK0xFRlQgT1VURVIgSk9JTgorICAgIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1kLm9pZCBBTkQgZGVzLmNs YXNzb2lkPSdwZ190eXBlJzo6cmVnY2xhc3MpCitMRUZUIE9VVEVSIEpPSU4K KyAgICBwZ19jb2xsYXRpb24gYyBPTiBkLnR5cGNvbGxhdGlvbj1jLm9pZAor TEVGVCBPVVRFUiBKT0lOCisgICAgcGdfbmFtZXNwYWNlIGNuIE9OIGMuY29s bG5hbWVzcGFjZT1jbi5vaWQKK1dIRVJFCisgICAgZC50eXBuYW1lc3BhY2Ug PSB7e3NjaWR9fTo6b2lkCit7JSBpZiBkb2lkICV9CisgIEFORCBkLm9pZD17 e2RvaWR9fTo6aW50Cit7JSBlbmRpZiAlfQorT1JERVIgQlkKKyAgICBkLnR5 cG5hbWU7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3Rl bXBsYXRlcy9kb21haW5zL3NxbC85LjJfcGx1cy91cGRhdGUuc3FsIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4y X3BsdXMvdXBkYXRlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi42NTc4NTljCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvZG9tYWlucy90ZW1wbGF0ZXMvZG9tYWlucy9zcWwvOS4yX3BsdXMv dXBkYXRlLnNxbApAQCAtMCwwICsxLDgyIEBACit7JSBpbXBvcnQgJ21hY3Jv cy9zY2hlbWFzL3NlY3VyaXR5Lm1hY3JvcycgYXMgU0VDTEFCTEUgJX0KK3sl IGlmIGRhdGEgJX0KK3slIHNldCBuYW1lID0gb19kYXRhLm5hbWUgJX0KK3sl IGlmIGRhdGEubmFtZSAlfQoreyUgaWYgZGF0YS5uYW1lICE9IG9fZGF0YS5u YW1lICV9CitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBvX2RhdGEubmFtZSkgfX0KKyAgICBSRU5BTUUgVE8ge3sgY29u bnxxdElkZW50KGRhdGEubmFtZSkgfX07Cit7JSBzZXQgbmFtZSA9IGRhdGEu bmFtZSAlfQoreyUgZW5kaWYgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0 YS50eXBub3RudWxsIGFuZCBub3Qgb19kYXRhLnR5cG5vdG51bGwgJX0KKwor QUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5zcCwg bmFtZSkgfX0KKyAgICBTRVQgTk9UIE5VTEw7Cit7JSBlbGlmICd0eXBub3Ru dWxsJyBpbiBkYXRhIGFuZCBub3QgZGF0YS50eXBub3RudWxsIGFuZCBvX2Rh dGEudHlwbm90bnVsbCV9CisKK0FMVEVSIERPTUFJTiB7eyBjb25ufHF0SWRl bnQob19kYXRhLmJhc2Vuc3AsIG5hbWUpIH19CisgICAgRFJPUCBOT1QgTlVM TDsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLnR5cGRlZmF1bHQgJX0K KworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2RhdGEuYmFzZW5z cCwgbmFtZSkgfX0KKyAgICBTRVQgREVGQVVMVCB7eyBkYXRhLnR5cGRlZmF1 bHR8cXRMaXRlcmFsIH19OworeyUgZWxpZiBub3QgZGF0YS50eXBkZWZhdWx0 IGFuZCBvX2RhdGEudHlwZGVmYXVsdCAlfQorCitBTFRFUiBET01BSU4ge3sg Y29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIERS T1AgREVGQVVMVDsKK3slIGVuZGlmIC0lfQoreyUgaWYgZGF0YS5vd25lciAl fQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNl bnNwLCBuYW1lKSB9fQorICAgIE9XTkVSIFRPIHt7IGNvbm58cXRJZGVudChk YXRhLm93bmVyKSB9fTsKK3slIGVuZGlmIC0lfQorCit7JSBpZiBkYXRhLmNv bnN0cmFpbnRzICV9Cit7JSBmb3IgYyBpbiBkYXRhLmNvbnN0cmFpbnRzLmRl bGV0ZWQgJX0KKworQUxURVIgRE9NQUlOIHt7IGNvbm58cXRJZGVudChvX2Rh dGEuYmFzZW5zcCwgbmFtZSkgfX0KKyAgICBEUk9QIENPTlNUUkFJTlQge3sg Y29ubnxxdElkZW50KGMuY29ubmFtZSkgfX0KK3slIGVuZGZvciAlfQoreyUg Zm9yIGMgaW4gZGF0YS5jb25zdHJhaW50cy5hZGRlZCAlfQorCitBTFRFUiBE T01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5iYXNlbnNwLCBuYW1lKSB9 fQorICAgIEFERCBDT05TVFJBSU5UIHt7IGNvbm58cXRJZGVudChjLmNvbm5h bWUpIH19IENIRUNLICh7eyBjLmNvbnNyYyB9fSApCit7JSBpZiBjLmNvbnZh bGlkYXRlZCAlfSBOT1QgVkFMSUQgeyUgZW5kaWYgJX0geyUgaWYgYy5jb25u b2luaGVyaXQgJX0gTk8gSU5IRVJJVCB7JSBlbmRpZiAlfTsKK3slIGVuZGZv ciAlfQoreyUgZW5kaWYgLSV9CisKK3slIHNldCBzZWNsYWJlbHMgPSBkYXRh LnNlY2xhYmVscyAlfQoreyUgaWYgJ2RlbGV0ZWQnIGluIHNlY2xhYmVscyBh bmQgc2VjbGFiZWxzLmRlbGV0ZWR8bGVuZ3RoID4gMCAlfQoreyUgZm9yIHIg aW4gc2VjbGFiZWxzLmRlbGV0ZWQgJX0KKwore3sgU0VDTEFCTEUuVU5TRVQo Y29ubiwgJ0RPTUFJTicsIG5hbWUsIHIucHJvdmlkZXIsIG9fZGF0YS5iYXNl bnNwKSB9fQoreyUgZW5kZm9yICV9Cit7JSBlbmRpZiAtJX0KK3slIGlmICdh ZGRlZCcgaW4gc2VjbGFiZWxzIGFuZCBzZWNsYWJlbHMuYWRkZWR8bGVuZ3Ro ID4gMCAlfQoreyUgZm9yIHIgaW4gc2VjbGFiZWxzLmFkZGVkICV9CisKK3t7 IFNFQ0xBQkxFLlNFVChjb25uLCAnRE9NQUlOJywgbmFtZSwgci5wcm92aWRl ciwgci5zZWN1cml0eV9sYWJlbCwgb19kYXRhLmJhc2Vuc3ApIH19Cit7JSBl bmRmb3IgJX0KK3slIGVuZGlmIC0lfQoreyUgaWYgJ2NoYW5nZWQnIGluIHNl Y2xhYmVscyBhbmQgc2VjbGFiZWxzLmNoYW5nZWR8bGVuZ3RoID4gMCAlfQor eyUgZm9yIHIgaW4gc2VjbGFiZWxzLmNoYW5nZWQgJX0KKwore3sgU0VDTEFC TEUuU0VUKGNvbm4sICdET01BSU4nLCBuYW1lLCByLnByb3ZpZGVyLCByLnNl Y3VyaXR5X2xhYmVsLCBvX2RhdGEuYmFzZW5zcCkgfX0KK3slIGVuZGZvciAl fQoreyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuZGVzY3JpcHRpb24gJX0K KworQ09NTUVOVCBPTiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0YS5i YXNlbnNwLCBuYW1lKSB9fQorICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258 cXRMaXRlcmFsIH19OworeyUgZW5kaWYgLSV9CisKK3slIGlmIGRhdGEuYmFz ZW5zcCAlfQorCitBTFRFUiBET01BSU4ge3sgY29ubnxxdElkZW50KG9fZGF0 YS5iYXNlbnNwLCBuYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29ubnxx dElkZW50KGRhdGEuYmFzZW5zcCkgfX07Cit7JSBlbmRpZiAlfQorCit7JSBl bmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvZGF0YW1vZGVsLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvZGF0YW1vZGVsLmpzCmluZGV4IDkzODVhZGYuLjYxZTgxZWQgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFt b2RlbC5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9k YXRhbW9kZWwuanMKQEAgLTM0MCw3ICszNDAsMTMgQEAgZnVuY3Rpb24oXywg cGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICAgICAgICAgIGRl bGV0ZSByZXNba107CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJlc1trXSA9IChvYmogJiYg b2JqLnRvSlNPTigpKTsKKyAgICAgICAgICAgICAgICBpZiAob2JqICYmIChv YmogaW5zdGFuY2VvZiBBcnJheSkpIHsKKyAgICAgICAgICAgICAgICAgIHJl c1trXSA9IG9iajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg IHJlc1trXSA9IG9iaiAmJiBvYmoudG9KU09OKCk7CisgICAgICAgICAgICAg ICAgfQogICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAgICAg ICAgcmV0dXJuIHJlczsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKaW5kZXggNDM0NjE1Ni4uYWU4MDdj YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tmb3Jt LnBnYWRtaW4uanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2JhY2tm b3JtLnBnYWRtaW4uanMKQEAgLTEwNTgsMTEgKzEwNTgsMTMgQEAKICAgICAg IGlmIChkYXRhLmRpc2FibGVkID09IGZhbHNlICYmIGRhdGEuY2FuRWRpdCkg ewogICAgICAgICAgIHZhciBlZGl0Q2VsbCA9IEJhY2tncmlkLkV4dGVuc2lv bi5PYmplY3RDZWxsLmV4dGVuZCh7CiAgICAgICAgICAgICBzY2hlbWE6IGdy aWRTY2hlbWEuc2NoZW1hCi0gICAgICAgICAgfSk7CisgICAgICAgICAgfSks CisgICAgICAgICAgY2FuRWRpdCA9IHNlbGYuZmllbGQuaGFzKCdjYW5FZGl0 JykgJiYKKyAgICAgICAgICBzZWxmLmZpZWxkLmdldCgnY2FuRWRpdCcpIHx8 IHRydWU7CiAKICAgICAgICAgICBncmlkU2NoZW1hLmNvbHVtbnMudW5zaGlm dCh7CiAgICAgICAgICAgICBuYW1lOiAicGctYmFja2Zvcm0tZWRpdCIsIGxh YmVsOiAiIiwgY2VsbCA6IGVkaXRDZWxsLAotICAgICAgICAgICAgY2VsbF9w cmlvcml0eTogLTIKKyAgICAgICAgICAgIGNlbGxfcHJpb3JpdHk6IC0yLCBl ZGl0YWJsZTogY2FuRWRpdAogICAgICAgICAgIH0pOwogICAgICAgfQogCkBA IC0xMTAxLDcgKzExMDMsNyBAQAogICAgICAgICBncmlkLmluc2VydFJvdyh7 fSk7CiAgICAgICAgIHZhciBuZXdSb3cgPSAkKGdyaWQuYm9keS5yb3dzW2Nv bGxlY3Rpb24ubGVuZ3RoIC0gMV0uJGVsKTsKICAgICAgICAgbmV3Um93LmF0 dHIoImNsYXNzIiwgIm5ldyIpLmNsaWNrKGZ1bmN0aW9uKGUpIHsKLSAgICAg ICAgICAkKHRoaXMpLmF0dHIoImNsYXNzIiwgIiIpOworICAgICAgICAgICQo dGhpcykuYXR0cigiY2xhc3MiLCAiZWRpdGFibGUiKTsKICAgICAgICAgfSk7 CiAgICAgICAgICQobmV3Um93KS5wZ01ha2VWaXNpYmxlKCdiYWNrZm9ybS10 YWInKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTUyOCw4ICsxNTMw LDE1IEBACiAgICAgICAvKgogICAgICAgICogQWRkIGVtcHR5IG9wdGlvbiBh cyBTZWxlY3QyIHJlcXVpcmVzIGFueSBlbXB0eSAnPG9wdGlvbj48b3B0aW9u PicgZm9yCiAgICAgICAgKiBzb21lIG9mIGl0cyBmdW5jdGlvbmFsaXR5IHRv IHdvcmsgYW5kIGluaXRpYWxpemUgc2VsZWN0MiBjb250cm9sLgorICAgICAg ICoKKyAgICAgICAqIEJ1dCAtIG5vdCBmb3IgbXVsdGlwbGUgc2VsZWN0aW9u LgogICAgICAgICovCi0gICAgICB0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS5w cmVwZW5kKCQoJzxvcHRpb24+PC9vcHRpb24+JykpLnNlbGVjdDIoY29sLnNl bGVjdDIpOworICAgICAgdmFyIHMgPSB0aGlzLiRlbC5maW5kKCJzZWxlY3Qi KTsKKyAgICAgIGlmICghY29sLnNlbGVjdDIubXVsdGlwbGUpIHsKKyAgICAg ICAgcy5wcmVwZW5kKCQoJzxvcHRpb24+PC9vcHRpb24+JykpOworICAgICAg fQorICAgICAgcy5zZWxlY3QyKGNvbC5zZWxlY3QyKTsKKwogICAgICAgcmV0 dXJuIHRoaXM7CiAgICAgfQogICB9KTsK --001a114020bacdc566052c80a192 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a114020bacdc566052c80a192--