Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyH79-0004yv-11 for pgadmin-hackers@arkaria.postgresql.org; Tue, 20 Mar 2018 13:15:43 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1eyH78-00084F-7G for pgadmin-hackers@arkaria.postgresql.org; Tue, 20 Mar 2018 13:15:42 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1eyH3l-0004sZ-8c for pgadmin-hackers@lists.postgresql.org; Tue, 20 Mar 2018 13:12:13 +0000 Received: from mail-qk0-x244.google.com ([2607:f8b0:400d:c09::244]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1eyH3h-0006Oe-5M for pgadmin-hackers@postgresql.org; Tue, 20 Mar 2018 13:12:11 +0000 Received: by mail-qk0-x244.google.com with SMTP id g184so1505562qkd.10 for ; Tue, 20 Mar 2018 06:12:08 -0700 (PDT) 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:from:date:message-id:subject:to :cc; bh=ZjLsVlorMXjMfrxnsvLJkxNaZuvM7dQcNvRvEZXFtf8=; b=xHpcU3hFfL42kSSWA9nvpFoxzJuClIUxLx5hDL3ByXAPNCPNmJsl/X0rGLKXrb4NHW T2j02zp/ptTeu6BZG/7dRKoGmxxNaCJL/7hkzR8uQZHFgoF1497FKdjjcDpRp8mqEEjy H1/v57/39zuslRT7Iw0d3Q2MGA6fvp9ShnEERkp4M9KFwRh61NDl4RSy1dCQBnw7wI1v 0Td0BJryGexsHXCDO9Lx9iCKRuOrAkk43F0CnDAbAmWVl9Emb2H3zrxh8d5g0yRppi7D qIhojWPAFrIf067QN61PLOfmDhtbPiTf/QcSOccb8k9gk/LInPSXEq04inOaKAxraAF5 gxFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=ZjLsVlorMXjMfrxnsvLJkxNaZuvM7dQcNvRvEZXFtf8=; b=HZGQU3Fpt/3rDiogX51eWXCbLxowsFuORHDaoTxGv1R5ZzoRpyfYitVuNYmCTlXQ0B eVlnrWf3NKol8hXogtBR9zI2wh8RK+pEw+5rmQjY/748qU5BtrA6wxJzlGble793ZjTC 60qX+8Xm5vxuMzwRgX3GPfZrPeeKHOFQs+E68Whw0AihASzaRxs5HX39l/awXBNE4VG6 GcHX3DBpyNDSe2ccLtnfu2PNrJdU2Q6NxuqpugqoYPCBCAWmYmJzrlXhUFMPVIVFBodG 69AyYkuR25Z2bepPYGb1BeRXktNVLhdHVxHphzb9bz3tRvzVoRA0rIq4QkxM6Un2nbxS pIKA== X-Gm-Message-State: AElRT7E0+vOmQyEVToRXA1VVskQbrarGKVBzIeIuQw7ZK8G6jhoypyYw bXk0nWUsXqqozGEGSLICZuFKFwPjNhbaAq8jnQ8H+A== X-Google-Smtp-Source: AG47ELs702X8UgfDrSGqPEH4rH1DRW1ciDOE2fr6k/EKVraAEw2KtfMs26Eirhr6yGpCphxghNJkD8D9XaOagbp0PBY= X-Received: by 10.55.194.77 with SMTP id j13mr23747634qkm.213.1521551527275; Tue, 20 Mar 2018 06:12:07 -0700 (PDT) MIME-Version: 1.0 Received: by 10.12.194.131 with HTTP; Tue, 20 Mar 2018 06:12:06 -0700 (PDT) In-Reply-To: References: From: Akshay Joshi Date: Tue, 20 Mar 2018 18:42:06 +0530 Message-ID: Subject: Re: [pgadmin][patch] [GreenPlum] When user press Explain Plan and Explain analyze plan an error is displayed To: Dave Page Cc: Joao Pedro De Almeida Pereira , pgadmin-hackers Content-Type: multipart/mixed; boundary="f4f5e80e55344ab7220567d7d2d0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --f4f5e80e55344ab7220567d7d2d0 Content-Type: multipart/alternative; boundary="f4f5e80e55344ab7200567d7d2ce" --f4f5e80e55344ab7200567d7d2ce Content-Type: text/plain; charset="UTF-8" Hi Hackers Attached is the patch file to fix the RM #2815. On Tue, Mar 20, 2018 at 3:24 PM, Dave Page wrote: > > > On Tue, Mar 20, 2018 at 9:48 AM, Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> >> >> On Tue, Mar 20, 2018 at 3:06 PM, Dave Page >> wrote: >> >>> I'm a little concerned that noone mentioned this earlier; I'm supposed >>> to be building the release this afternoon, and I expect this change to at >>> the very least be complex to fully test and verify. What's the ETA on the >>> patch? What steps are being taken to ensure it's correct and doesn't cause >>> regressions? >>> >> >> Harshal has already mentioned in the RM. Currently I am changing the >> logic, but it may take time to complete, fully test and verify. I'll try my >> best to do it asap. >> > > Sure, but how many of us are watching every comment on every RM? I know > I'm not (I currently average ~400 emails/day). > > >> >>> On Tue, Mar 20, 2018 at 7:51 AM, Akshay Joshi < >>> akshay.joshi@enterprisedb.com> wrote: >>> >>>> Hi Joao >>>> >>>> It seems that this fix broke the functionality of RM #2815. It is >>>> mentioned in the RM what needs to be fixed now and I am currently working >>>> on it. >>>> While fixing the issue following problem that I found >>>> >>>> - In "start_running_query.py" file, we need to remove check "if conn.connected()" >>>> from "__execute_query" function as we required exception to be thrown while >>>> executing the query to identify the ConnectionLost. >>>> - In "execute_query.js" we have used *axios* to execute the query >>>> and in case of exception, object is different then normal javascript >>>> response object. >>>> - We call following functions when exception or error comes and >>>> send the "*.response.data*" as parameter >>>> - wasConnectionLostToServer(): Check for the readyState >>>> parameter, which is not the part of ".response.data". >>>> - extractErrorMessage(): Check for the "responseJSON" and " >>>> responseJSON.info", which is not the part of >>>> ".response.data". >>>> - is_pga_login_required(): Check for the "responseJSON" and " >>>> responseJSON.info", which is not the part of >>>> ".response.data". >>>> - is_new_transaction_required(): Check for the "responseJSON" >>>> and "responseJSON.info", which is not the part of >>>> ".response.data". >>>> >>>> From the above list, some of the function calls are generic where they >>>> need "responseJSON" and "responseJSON.info", so we can't change that. >>>> Possible solution could be pass one extra flag as parameter to identify the >>>> object is a axios response or javascript response to above functions >>>> and change the logic accordingly. >>>> >>>> Please let me know your thoughts or any other suggestion. >>>> >>>> >>>> On Fri, Feb 9, 2018 at 8:17 PM, Dave Page wrote: >>>> >>>>> Thanks, applied. >>>>> >>>>> On Fri, Feb 9, 2018 at 2:35 PM, Joao De Almeida Pereira < >>>>> jdealmeidapereira@pivotal.io> wrote: >>>>> >>>>>> Hello, >>>>>> Attached you can find the fix for the current pronlem >>>>>> >>>>>> >>>>>> On Fri, Feb 9, 2018 at 7:29 AM Dave Page wrote: >>>>>> >>>>>>> Hi Joao, >>>>>>> >>>>>>> It looks like Jenkins has taken umbrage to this change, at least >>>>>>> with Python 3.x. Can you take a look please? >>>>>>> >>>>>>> https://jenkins.pgadmin.org/ >>>>>>> >>>>>>> Thanks. >>>>>>> >>>>>>> On Fri, Feb 9, 2018 at 11:54 AM, Dave Page >>>>>>> wrote: >>>>>>> >>>>>>>> Thanks, patches applied. >>>>>>>> >>>>>>>> On Fri, Feb 2, 2018 at 10:50 PM, Joao De Almeida Pereira < >>>>>>>> jdealmeidapereira@pivotal.io> wrote: >>>>>>>> >>>>>>>>> Hi Hackers, >>>>>>>>> This is quite a big patch in order to solve the problem with the >>>>>>>>> Explain Plan. >>>>>>>>> >>>>>>>>> We sent 2 patches that have the following: >>>>>>>>> *- update-javascript-packages.diff * >>>>>>>>> Add package: >>>>>>>>> is-docker to select a specific setting when running the >>>>>>>>> Chrome tests in >>>>>>>>> Docker >>>>>>>>> >>>>>>>>> Upgrade the version of: >>>>>>>>> - babel-loader >>>>>>>>> - extract-text-webpack-plugin >>>>>>>>> - jasmine-core >>>>>>>>> - jasmine-enzyme >>>>>>>>> - moment >>>>>>>>> *- explain-plan-greenplum.diff* >>>>>>>>> Extract SQLEditor.execute and SQLEditor._poll into their own >>>>>>>>> files and add test around them >>>>>>>>> Extract SQLEditor backend functions that start executing query >>>>>>>>> to their own files and add tests around it >>>>>>>>> Move the Explain SQL from the front-end and now pass the Explain >>>>>>>>> plan parameters as a JSON object in the start query call. >>>>>>>>> Extract the compile_template_name into a function that can be >>>>>>>>> used by the different places that try to select the version of the template >>>>>>>>> and the server type >>>>>>>>> >>>>>>>>> >>>>>>>>> Thanks >>>>>>>>> Joao >>>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Dave Page >>>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>>> Twitter: @pgsnake >>>>>>>> >>>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>>> The Enterprise PostgreSQL Company >>>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Dave Page >>>>>>> Blog: http://pgsnake.blogspot.com >>>>>>> Twitter: @pgsnake >>>>>>> >>>>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>>>> The Enterprise PostgreSQL Company >>>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Dave Page >>>>> Blog: http://pgsnake.blogspot.com >>>>> Twitter: @pgsnake >>>>> >>>>> EnterpriseDB UK: http://www.enterprisedb.com >>>>> The Enterprise PostgreSQL Company >>>>> >>>> >>>> >>>> >>>> -- >>>> *Akshay Joshi* >>>> >>>> *Sr. Software Architect * >>>> >>>> >>>> >>>> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 >>>> 976-788-8246 <+91%2097678%2088246>* >>>> >>> >>> >>> >>> -- >>> Dave Page >>> VP, Chief Architect, Tools & Installers >>> EnterpriseDB: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> Blog: http://pgsnake.blogspot.com >>> Twitter: @pgsnake >>> >> >> >> >> -- >> *Akshay Joshi* >> >> *Sr. Software Architect * >> >> >> >> *Phone: +91 20-3058-9517 <+91%2020%203058%209517>Mobile: +91 976-788-8246 >> <+91%2097678%2088246>* >> > > > > -- > Dave Page > VP, Chief Architect, Tools & Installers > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > -- *Akshay Joshi* *Sr. Software Architect * *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* --f4f5e80e55344ab7200567d7d2ce Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers

Attached is the patch file t= o fix the RM #2815.

On Tue, Mar 20, 2018 at 3:24 PM, Dave Page = <dave.pa= ge@enterprisedb.com> wrote:


On Tue, Mar 20, 2018 at 9:48 AM, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:


=
On Tue, Mar 20, 2018 at 3:06 PM, Dave Page= <d= ave.page@enterprisedb.com> wrote:
I'm a little concerned that noone mentioned th= is earlier; I'm supposed to be building the release this afternoon, and= I expect this change to at the very least be complex to fully test and ver= ify. What's the ETA on the patch? What steps are being taken to ensure = it's correct and doesn't cause regressions?
=
=C2=A0 =C2=A0 Harshal has already mentioned in the RM. Curr= ently I am changing the logic, but it may take time to complete, fully test= and verify. I'll try my best to do it asap.

Sure, but how many of us are watching = every comment on every RM? I know I'm not (I currently average ~400 ema= ils/day).
=C2=A0

On Tue, Mar 20, 2018= at 7:51 AM, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
Hi= Joao

It seems that= this fix broke the functionality of RM #2815. It is mentioned in the RM wh= at needs to be fixed now and I am currently working on it.
While = fixing the issue following problem that I found
  • In "= start_running_query.py" file, we need to remove check "if conn.connected()" from "__execute_query" f= unction as we required exception to be thrown while executing the query to = identify the ConnectionLost.=C2=A0=C2= =A0
  • In "execute_query.js<= /span>" we have used axios= to execute the query and in case of exception, object is different then no= rmal javascript response object.=C2=A0
  • We call following functions = when exception or error comes and send the "<object>.response= .data" as parameter=C2=A0
    • readyState parameter, which is not the part of "<obje= ct>.response.data".=C2=A0
    • ext= ractErrorMessage(): Check for the "responseJSON" and "responseJSON.info",=C2=A0which is not the part of "<object>.response.dat= a".
    • is_pga_login_required(): Check for the=C2=A0"responseJSON" and "r= esponseJSON.info",=C2=A0= which is not the part of "<object>.response.data".
    • is_new_transaction_required():=C2=A0Ch= eck for the=C2=A0= "responseJSON" and "responseJSON.info",=C2=A0which is not the part of "<object>= .response.data".
From the above list, some of the= function calls are generic where they need "responseJSON" and "re= sponseJSON.info", so we can't change that. Possible solutio= n could be pass one extra flag as parameter to identify the object is a axios response or javascript response to= above functions and change the logic accordingly.

Please let me know your thoughts or any other suggestion.=C2=A0
= =C2=A0 =C2=A0 =C2=A0=C2=A0

On Fri, Feb 9, 2018 at 8:17 PM, Dave Page = <dpage@pgadmin.org> wrote:
Thanks, applied.

On Fri, Feb 9, 2018 at 2:35 PM, Joao De Almeida Pereira <jdealmeidapereira@pivotal.io> wrote:
Hello,
Attached you can find the fix for= the current pronlem


On Fri,= Feb 9, 2018 at 7:29 AM Dave Page <dpage@pgadmin.org> wrote:
Hi Joao,

It looks like = Jenkins has taken umbrage to this change, at least with Python 3.x. Can you= take a look please?


Thanks.

On Fri, Feb 9, 2018 at 11:54 AM, Dave Page <dpage@pgadm= in.org> wrote:
Thanks, patches applied.

On Fri, Feb 2, 2018 at 10:50 PM, Jo= ao De Almeida Pereira <jdealmeidapereira@pivotal.io> wrote:
Hi Hackers,This is quite a big patch in order to solve the problem with the Explain= Plan.

We sent 2 patches that have the following:<= /div>
-=C2=A0update-javascript-packages.diff=C2=A0
=C2=A0 =C2=A0 Add package:
=C2=A0 =C2=A0 =C2=A0is-dock= er to select a specific setting when running the Chrome tests in
= =C2=A0 =C2=A0 =C2=A0Docker

=C2=A0 =C2=A0 Upgrade t= he version of:
=C2=A0 =C2=A0 - babel-loader
=C2=A0 =C2= =A0 - extract-text-webpack-plugin
=C2=A0 =C2=A0 - jasmine-core
=C2=A0 =C2=A0 - jasmine-enzyme
=C2=A0 =C2=A0 - moment
-=C2=A0explain-plan-greenplum.diff
=C2=A0 Ext= ract SQLEditor.execute and SQLEditor._poll into their own files and add tes= t around them
=C2=A0 Extract SQLEditor backend functions that sta= rt executing query to their own files and add tests around it
=C2= =A0 Move the Explain SQL from the front-end and now pass the Explain plan p= arameters as a JSON object in the start query call.
=C2=A0 Extrac= t the compile_template_name into a function that can be used by the differe= nt places that try to select the version of the template and the server typ= e


Thanks
Joao
=



-= -
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
=
EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



--
Dave Page
Blog: <= a href=3D"http://pgsnake.blogspot.com" target=3D"_blank">http://pgsnake.blo= gspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.comThe Enterprise PostgreSQL Company



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

E= nterpriseDB UK: h= ttp://www.enterprisedb.com
The Enterprise PostgreSQL Company



<= /div>--
Aks= hay Joshi
Sr. Software Architect

<= /div>
<= span style=3D"color:rgb(0,0,0);font-family:arial,sans-serif;font-size:13px;= border-collapse:collapse">
<= /div>



--
Dave Page
VP, Chief Architect, Tools & Install= ers
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake
=


--
Akshay Joshi
Sr. Software Architect


Phone: +91 20-= 3058-9517
Mobile: +91 976-788-8246



--
Dave Page
VP, Chief Architect, Tools = & Installers
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreS= QL Company

Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake



--
Akshay Joshi
Sr. Software Architect
=

<= /font>

Phone: +91 20-3058-9517
Mob= ile: +91 976-788-8246
--f4f5e80e55344ab7200567d7d2ce-- --f4f5e80e55344ab7220567d7d2d0 Content-Type: application/octet-stream; name="RM_2815.patch" Content-Disposition: attachment; filename="RM_2815.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jezogqpq0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvZGFzaGJvYXJkLmpz IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNoYm9hcmQuanMKaW5kZXggZGQ2 ZWNmOS4uNGQ4MTdhZCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9q cy9kYXNoYm9hcmQuanMKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9kYXNo Ym9hcmQuanMKQEAgLTQ0NCwxOCArNDQ0LDI4IEBAIGRlZmluZSgncGdhZG1pbi5kYXNoYm9hcmQn LCBbCiAgICAgICAgICAgICBwZ0FkbWluLkRhc2hib2FyZC5yZW5kZXJfY2hhcnQoY29udGFpbmVy LCBkYXRhLCBkYXRhc2V0LCBzaWQsIGRpZCwgdXJsLCBvcHRpb25zLCBjb3VudGVyLCByZWZyZXNo KTsKICAgICAgICAgICB9LAogICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIpIHsKLSAgICAg ICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KSwKLSAgICAgICAg ICAgICAgbXNnID0gZXJyLmVycm9ybXNnLAorICAgICAgICAgICAgdmFyIGVyciA9ICcnLAorICAg ICAgICAgICAgICBtc2cgPSAnJywKICAgICAgICAgICAgICAgY2xzOwotICAgICAgICAgICAgLy8g SWYgd2UgZ2V0IGEgNDI4LCBpdCBtZWFucyB0aGUgc2VydmVyIGlzbid0IGNvbm5lY3RlZAotICAg ICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gNDI4KSB7Ci0gICAgICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKG1zZykgfHwgXy5pc051bGwobXNnKSkgewotICAgICAgICAgICAgICAgIG1zZyA9 IGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxlY3RlZCBzZXJ2ZXIgdG8gdmlldyB0 aGUgZ3JhcGguJyk7Ci0gICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHhoci5yZWFk eVN0YXRlID09IDApIHsKKyAgICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnTm90IGNvbm5lY3Rl ZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4g Y2xvc2VkLicpOwogICAgICAgICAgICAgICBjbHMgPSAnaW5mbyc7Ci0gICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdBbiBlcnJvciBvY2N1cnJlZCB3aGls c3QgcmVuZGVyaW5nIHRoZSBncmFwaC4nKTsKLSAgICAgICAgICAgICAgY2xzID0gJ2Rhbmdlcic7 CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZXJyID0g JC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAgICAgICAgICAgIG1zZyA9IGVyci5l cnJvcm1zZzsKKworICAgICAgICAgICAgICAvLyBJZiB3ZSBnZXQgYSA0MjgsIGl0IG1lYW5zIHRo ZSBzZXJ2ZXIgaXNuJ3QgY29ubmVjdGVkCisgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09 IDQyOCkgeworICAgICAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG1zZykgfHwgXy5pc051 bGwobXNnKSkgeworICAgICAgICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbm5l Y3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZlciB0byB2aWV3IHRoZSBncmFwaC4nKTsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2xzID0gJ2luZm8nOworICAgICAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgICAgIG1zZyA9IGdldHRleHQoJ0FuIGVycm9yIG9jY3VycmVk IHdoaWxzdCByZW5kZXJpbmcgdGhlIGdyYXBoLicpOworICAgICAgICAgICAgICAgIGNscyA9ICdk YW5nZXInOworICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICQo Y29udGFpbmVyKS5hZGRDbGFzcygnZ3JhcGgtZXJyb3InKTsKQEAgLTU3NiwxOCArNTg2LDI3IEBA IGRlZmluZSgncGdhZG1pbi5kYXNoYm9hcmQnLCBbCiAgICAgICAgICAgZmlsdGVyLnNlYXJjaCgp OwogICAgICAgICB9LAogICAgICAgICBlcnJvcjogZnVuY3Rpb24obW9kZWwsIHhocikgewotICAg ICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KSwKLSAgICAgICAg ICAgIG1zZyA9IGVyci5lcnJvcm1zZywKKyAgICAgICAgICB2YXIgZXJyID0gJycsCisgICAgICAg ICAgICBtc2cgPSAnJywKICAgICAgICAgICAgIGNsczsKLSAgICAgICAgICAvLyBJZiB3ZSBnZXQg YSA0MjgsIGl0IG1lYW5zIHRoZSBzZXJ2ZXIgaXNuJ3QgY29ubmVjdGVkCi0gICAgICAgICAgaWYg KHhoci5zdGF0dXMgPT0gNDI4KSB7Ci0gICAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChtc2cp IHx8IF8uaXNOdWxsKG1zZykpIHsKLSAgICAgICAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNl IGNvbm5lY3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZlciB0byB2aWV3IHRoZSB0YWJsZS4nKTsKLSAg ICAgICAgICAgIH0KKworICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSAwKSB7CisgICAg ICAgICAgICBtc2cgPSBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhl IGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJyk7CiAgICAgICAgICAg ICBjbHMgPSAnaW5mbyc7CiAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1zZyA9IGdl dHRleHQoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCByZW5kZXJpbmcgdGhlIHRhYmxlLicpOwot ICAgICAgICAgICAgY2xzID0gJ2Rhbmdlcic7CisgICAgICAgICAgICBlcnIgPSAkLnBhcnNlSlNP Tih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgIG1zZyA9IGVyci5lcnJvcm1zZzsKKwor ICAgICAgICAgICAgLy8gSWYgd2UgZ2V0IGEgNDI4LCBpdCBtZWFucyB0aGUgc2VydmVyIGlzbid0 IGNvbm5lY3RlZAorICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gNDI4KSB7CisgICAgICAg ICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG1zZykgfHwgXy5pc051bGwobXNnKSkgeworICAgICAg ICAgICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBzZWxlY3RlZCBz ZXJ2ZXIgdG8gdmlldyB0aGUgdGFibGUuJyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgY2xzID0gJ2luZm8nOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgbXNn ID0gZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHJlbmRlcmluZyB0aGUgdGFibGUu Jyk7CisgICAgICAgICAgICAgIGNscyA9ICdkYW5nZXInOworICAgICAgICAgICAgfQogICAgICAg ICAgIH0KIAogICAgICAgICAgIC8vIFJlcGxhY2UgdGhlIGNvbnRlbnQgd2l0aCB0aGUgZXJyb3Is IGlmIG5vdCBhbHJlYWR5IHByZXNlbnQuIEFsd2F5cyB1cGRhdGUgdGhlIG1lc3NhZ2UKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcwppbmRleCBl OTFjOWU4Li4wZmViMWU2IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRp dG9yL2V4ZWN1dGVfcXVlcnkuanMKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRv ci9leGVjdXRlX3F1ZXJ5LmpzCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7 CiAgICAgICB9LCBzZWxmLnNxbFNlcnZlck9iamVjdC5QT0xMX0ZBTExCQUNLX1RJTUUoKSk7CiAg IH0KIAotICBleGVjdXRlKHNxbFN0YXRlbWVudCwgZXhwbGFpblBsYW4pIHsKKyAgZXhlY3V0ZShz cWxTdGF0ZW1lbnQsIGV4cGxhaW5QbGFuLCBjb25uZWN0KSB7CiAgICAgLy8gSWYgaXQgaXMgYW4g ZW1wdHkgcXVlcnksIGRvIG5vdGhpbmcuCiAgICAgaWYgKHNxbFN0YXRlbWVudC5sZW5ndGggPD0g MCkgcmV0dXJuOwogCkBAIC02NCwxMCArNjQsMjAgQEAgY2xhc3MgRXhlY3V0ZVF1ZXJ5IHsKIAog ICAgIHNlbGYuaW5pdGlhbGl6ZUV4ZWN1dGlvbk9uU3FsRWRpdG9yKHNxbFN0YXRlbWVudFdpdGhB bmFseXplKTsKIAorICAgIGxldCB1cmwgPSB1cmxfZm9yKCdzcWxlZGl0b3IucXVlcnlfdG9vbF9z dGFydCcsIHsKKyAgICAgICd0cmFuc19pZCc6IHNlbGYuc3FsU2VydmVyT2JqZWN0LnRyYW5zSWQs CisgICAgfSk7CisKKyAgICAvKiBJZiBjb25uZWN0IHBhcmFtZXRlciBpcyB0cnVlLCB0aGVuIHNl bmQgdGhpcyBwYXJhbWV0ZXIKKyAgICAgKiBhcyBhIHBhcnQgb2YgcmVxdWVzdGVkIHVybCB0byBj b25uZWN0IHRvIHRoZSBzZXJ2ZXIgaWYgbm90CisgICAgICogYWxyZWFkeSBjb25uZWN0ZWQuCisg ICAgICovCisgICAgaWYgKGNvbm5lY3QpIHsKKyAgICAgIHVybCArPSAnP2Nvbm5lY3Q9MSc7Cisg ICAgfQorCiAgICAgc2VydmljZS5wb3N0KAotICAgICAgdXJsX2Zvcignc3FsZWRpdG9yLnF1ZXJ5 X3Rvb2xfc3RhcnQnLCB7Ci0gICAgICAgICd0cmFuc19pZCc6IHNlbGYuc3FsU2VydmVyT2JqZWN0 LnRyYW5zSWQsCi0gICAgICB9KSwKKyAgICAgIHVybCwKICAgICAgIEpTT04uc3RyaW5naWZ5KHNx bFN0YXRlbWVudFdpdGhBbmFseXplKSwKICAgICAgIHtoZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6 ICdhcHBsaWNhdGlvbi9qc29uJ319KQogICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewpA QCAtOTAsNyArMTAwLDEyIEBAIGNsYXNzIEV4ZWN1dGVRdWVyeSB7CiAgICAgICAgICAgc2VsZi5z cWxTZXJ2ZXJPYmplY3QuX2hpZ2hsaWdodF9lcnJvcihodHRwTWVzc2FnZURhdGEuZGF0YS5yZXN1 bHQpOwogICAgICAgICB9CiAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHsKLSAgICAg ICAgc2VsZi5vbkV4ZWN1dGVIVFRQRXJyb3IoZXJyb3IucmVzcG9uc2UuZGF0YSk7CisgICAgICAg IC8vIElmIHJlc3BvbnNlIGlzIHVuZGVmaW5lZCB0aGVuIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZl ciBoYXMgYmVlbiBsb3N0LgorICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgIT0gdW5kZWZpbmVk ICYmIGVycm9yLnJlc3BvbnNlLmRhdGEgIT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgc2VsZi5v bkV4ZWN1dGVIVFRQRXJyb3IoZXJyb3IpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHNl bGYuaGFuZGxlQ29ubmVjdGlvblRvU2VydmVyTG9zdCgpOworICAgICAgICB9CiAgICAgICB9CiAg ICAgKTsKICAgfQpAQCAtMTI5LDYgKzE0NCwxMiBAQCBjbGFzcyBFeGVjdXRlUXVlcnkgewogICAg ICAgfQogICAgICkuY2F0Y2goCiAgICAgICBlcnJvciA9PiB7CisgICAgICAgIC8vIElmIHJlc3Bv bnNlIGlzIHVuZGVmaW5lZCB0aGVuIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBs b3N0LgorICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2UgPT0gdW5kZWZpbmVkIHx8IGVycm9yLnJl c3BvbnNlLmRhdGEgPT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgc2VsZi5oYW5kbGVDb25uZWN0 aW9uVG9TZXJ2ZXJMb3N0KCk7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAg ICAgY29uc3QgZXJyb3JEYXRhID0gZXJyb3IucmVzcG9uc2UuZGF0YTsKICAgICAgICAgLy8gRW5h YmxlL0Rpc2FibGUgcXVlcnkgdG9vbCBidXR0b24gb25seSBpZiBpc19xdWVyeV90b29sIGlzIHRy dWUuCiAgICAgICAgIHNlbGYuc3FsU2VydmVyT2JqZWN0LnJlc2V0UXVlcnlIaXN0b3J5T2JqZWN0 KHNlbGYuc3FsU2VydmVyT2JqZWN0KTsKQEAgLTEzNyw3ICsxNTgsNyBAQCBjbGFzcyBFeGVjdXRl UXVlcnkgewogICAgICAgICAgIHNlbGYuZW5hYmxlU1FMRWRpdG9yQnV0dG9ucygpOwogICAgICAg ICB9CiAKLSAgICAgICAgaWYgKEV4ZWN1dGVRdWVyeS53YXNDb25uZWN0aW9uTG9zdFRvU2VydmVy KGVycm9yRGF0YSkpIHsKKyAgICAgICAgaWYgKEV4ZWN1dGVRdWVyeS53YXNDb25uZWN0aW9uTG9z dFRvU2VydmVyKGVycm9yLnJlcXVlc3QpKSB7CiAgICAgICAgICAgc2VsZi5oYW5kbGVDb25uZWN0 aW9uVG9TZXJ2ZXJMb3N0KCk7CiAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xNzks NDAgKzIwMCw0MCBAQCBjbGFzcyBFeGVjdXRlUXVlcnkgewogICB9CiAKICAgb25FeGVjdXRlSFRU UEVycm9yKGh0dHBNZXNzYWdlKSB7Ci0gICAgdGhpcy5sb2FkaW5nU2NyZWVuLmhpZGUoKTsKLSAg ICB0aGlzLmVuYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKKyAgICBjb25zdCBzZWxmID0gdGhpczsK IAotICAgIGlmIChFeGVjdXRlUXVlcnkud2FzQ29ubmVjdGlvbkxvc3RUb1NlcnZlcihodHRwTWVz c2FnZSkpIHsKLSAgICAgIHRoaXMuaGFuZGxlQ29ubmVjdGlvblRvU2VydmVyTG9zdCgpOworICAg IHNlbGYubG9hZGluZ1NjcmVlbi5oaWRlKCk7CisgICAgc2VsZi5lbmFibGVTUUxFZGl0b3JCdXR0 b25zKCk7CisKKyAgICBpZiAoRXhlY3V0ZVF1ZXJ5Lndhc0Nvbm5lY3Rpb25Mb3N0VG9TZXJ2ZXIo aHR0cE1lc3NhZ2UucmVxdWVzdCkgfHwKKyAgICAgICAgaHR0cE1lc3NhZ2UucmVzcG9uc2UgPT0g dW5kZWZpbmVkIHx8CisgICAgICAgIGh0dHBNZXNzYWdlLnJlc3BvbnNlLmRhdGEgPT0gdW5kZWZp bmVkKQorICAgIHsKKyAgICAgIHNlbGYuaGFuZGxlQ29ubmVjdGlvblRvU2VydmVyTG9zdCgpOwog ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICh0aGlzLnVzZXJNYW5hZ2VtZW50LmlzX3Bn YV9sb2dpbl9yZXF1aXJlZChodHRwTWVzc2FnZSkpIHsKLSAgICAgIHRoaXMuc3FsU2VydmVyT2Jq ZWN0LnNhdmVfc3RhdGUoJ2V4ZWN1dGUnLCBbdGhpcy5leHBsYWluUGxhbl0pOwotICAgICAgdGhp cy51c2VyTWFuYWdlbWVudC5wZ2FfbG9naW4oKTsKKyAgICBpZiAoc2VsZi51c2VyTWFuYWdlbWVu dC5pc19wZ2FfbG9naW5fcmVxdWlyZWQoaHR0cE1lc3NhZ2UucmVzcG9uc2UpKSB7CisgICAgICBz ZWxmLnNxbFNlcnZlck9iamVjdC5zYXZlX3N0YXRlKCdleGVjdXRlJywgW3NlbGYuZXhwbGFpblBs YW5dKTsKKyAgICAgIHNlbGYudXNlck1hbmFnZW1lbnQucGdhX2xvZ2luKCk7CiAgICAgfQogCi0g ICAgaWYgKHRyYW5zYWN0aW9uLmlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZChodHRwTWVzc2Fn ZSkpIHsKLSAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LnNhdmVfc3RhdGUoJ2V4ZWN1dGUnLCBb dGhpcy5leHBsYWluUGxhbl0pOwotICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuaW5pdF90cmFu c2FjdGlvbigpOworICAgIGlmICh0cmFuc2FjdGlvbi5pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQoaHR0cE1lc3NhZ2UucmVzcG9uc2UpKSB7CisgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC5z YXZlX3N0YXRlKCdleGVjdXRlJywgW3NlbGYuZXhwbGFpblBsYW5dKTsKKyAgICAgIHNlbGYuc3Fs U2VydmVyT2JqZWN0LmluaXRfdHJhbnNhY3Rpb24oKTsKICAgICB9CiAKLSAgICBsZXQgbXNnID0g aHR0cE1lc3NhZ2UuZXJyb3Jtc2c7Ci0gICAgaWYgKGh0dHBNZXNzYWdlLnJlc3BvbnNlSlNPTiAh PT0gdW5kZWZpbmVkKSB7Ci0gICAgICBpZiAoaHR0cE1lc3NhZ2UucmVzcG9uc2VKU09OLmVycm9y bXNnICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgbXNnID0gaHR0cE1lc3NhZ2UucmVzcG9uc2VK U09OLmVycm9ybXNnOwotICAgICAgfQotCi0gICAgICBpZiAoaHR0cE1lc3NhZ2Uuc3RhdHVzID09 PSA1MDMgJiYgaHR0cE1lc3NhZ2UucmVzcG9uc2VKU09OLmluZm8gIT09IHVuZGVmaW5lZCAmJgot ICAgICAgICBodHRwTWVzc2FnZS5yZXNwb25zZUpTT04uaW5mbyA9PT0gJ0NPTk5FQ1RJT05fTE9T VCcpIHsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgdGhpcy5z cWxTZXJ2ZXJPYmplY3Quc2F2ZV9zdGF0ZSgnZXhlY3V0ZScsIFt0aGlzLmV4cGxhaW5QbGFuXSk7 Ci0gICAgICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdChm YWxzZSwgaHR0cE1lc3NhZ2UpOwotICAgICAgICB9KTsKLSAgICAgIH0KKyAgICBsZXQgbXNnID0g aHR0cE1lc3NhZ2UucmVzcG9uc2UuZGF0YS5lcnJvcm1zZzsKKyAgICBpZiAoaHR0cE1lc3NhZ2Uu cmVzcG9uc2Uuc3RhdHVzID09PSA1MDMgJiYKKyAgICAgIGh0dHBNZXNzYWdlLnJlc3BvbnNlLmRh dGEuaW5mbyAhPT0gdW5kZWZpbmVkICYmCisgICAgICBodHRwTWVzc2FnZS5yZXNwb25zZS5kYXRh LmluZm8gPT09ICdDT05ORUNUSU9OX0xPU1QnKSB7CisgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u ICgpIHsKKyAgICAgICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3Quc2F2ZV9zdGF0ZSgnZXhlY3V0ZScs IFtzZWxmLmV4cGxhaW5QbGFuXSk7CisgICAgICAgIHNlbGYuc3FsU2VydmVyT2JqZWN0LmhhbmRs ZV9jb25uZWN0aW9uX2xvc3QoZmFsc2UsIGh0dHBNZXNzYWdlKTsKKyAgICAgIH0pOwogICAgIH0K IAotICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwgbXNn KTsKKyAgICBzZWxmLnNxbFNlcnZlck9iamVjdC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1z Zyk7CiAgIH0KIAogICByZW1vdmVHcmlkVmlld01hcmtlcigpIHsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaXNfbmV3X3RyYW5zYWN0aW9uX3JlcXVpcmVkLmpz IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVx dWlyZWQuanMKaW5kZXggOWQ4M2M5Mi4uODE5N2JhMSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWlyZWQuanMKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9pc19uZXdfdHJhbnNhY3Rpb25fcmVxdWly ZWQuanMKQEAgLTgsNiArOCwxNSBAQAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogZXhwb3J0IGZ1bmN0 aW9uIGlzX25ld190cmFuc2FjdGlvbl9yZXF1aXJlZCh4aHIpIHsKKyAgLyogSWYgcmVzcG9uc2VK U09OIGlzIHVuZGVmaW5lZCB0aGVuIGl0IGNvdWxkIGJlIG9iamVjdCBvZgorICAgKiBheG9pcyhQ cm9taXNlIEhUVFApIHJlc3BvbnNlLCBzbyB3ZSBzaG91bGQgY2hlY2sgYWNjb3JkaW5nbHkuCisg ICAqLworICBpZiAoeGhyLnJlc3BvbnNlSlNPTiA9PSB1bmRlZmluZWQgJiYgeGhyLmRhdGEgIT0g dW5kZWZpbmVkKSB7CisgICAgcmV0dXJuIHhoci5zdGF0dXMgPT09IDQwNCAmJiB4aHIuZGF0YSAm JgorICAgICAgeGhyLmRhdGEuaW5mbyAmJgorICAgICAgeGhyLmRhdGEuaW5mbyA9PT0gJ0RBVEFH UklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJzsKKyAgfQorCiAgIHJldHVybiB4aHIuc3RhdHVzID09 PSA0MDQgJiYgeGhyLnJlc3BvbnNlSlNPTiAmJgogICAgIHhoci5yZXNwb25zZUpTT04uaW5mbyAm JgogICAgIHhoci5yZXNwb25zZUpTT04uaW5mbyA9PT0gJ0RBVEFHUklEX1RSQU5TQUNUSU9OX1JF UVVJUkVEJzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRf Xy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQppbmRleCBjYzBh YTRjLi5lYTlhOTczIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvX19p bml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CkBA IC0yOTgsOCArMjk4LDExIEBAIGRlZiBzdGFydF9xdWVyeV90b29sKHRyYW5zX2lkKToKICAgICAg ICAgcmVxdWVzdC5kYXRhLCByZXF1ZXN0LmFyZ3MsIHJlcXVlc3QuZm9ybQogICAgICkKIAorICAg IGNvbm5lY3QgPSBUcnVlIGlmICdjb25uZWN0JyBpbiByZXF1ZXN0LmFyZ3MgYW5kIFwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXJnc1snY29ubmVjdCddID09ICcxJyBlbHNl IEZhbHNlCisKICAgICByZXR1cm4gU3RhcnRSdW5uaW5nUXVlcnkoYmx1ZXByaW50LCBjdXJyZW50 X2FwcCkuZXhlY3V0ZSgKLSAgICAgICAgc3FsLCB0cmFuc19pZCwgc2Vzc2lvbgorICAgICAgICBz cWwsIHRyYW5zX2lkLCBzZXNzaW9uLCBjb25uZWN0CiAgICAgKQogCiAKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKaW5kZXggZmY1MTM4 ZC4uMGUwN2ExNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRp Yy9qcy9zcWxlZGl0b3IuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRp Yy9qcy9zcWxlZGl0b3IuanMKQEAgLTE4NDgsNyArMTg0OCwxNyBAQCBkZWZpbmUoJ3Rvb2xzLnF1 ZXJ5dG9vbCcsIFsKIAogICAgICAgaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdDogZnVuY3Rpb24oY3Jl YXRlX3RyYW5zYWN0aW9uLCB4aHIpIHsKICAgICAgICAgdmFyIHNlbGY9IHRoaXM7Ci0gICAgICAg IGlmICh4aHIucmVzcG9uc2VKU09OLmRhdGEgJiYgIXhoci5yZXNwb25zZUpTT04uZGF0YS5jb25u X2lkKSB7CisKKyAgICAgICAgLyogSWYgcmVzcG9uc2VKU09OIGlzIHVuZGVmaW5lZCB0aGVuIGl0 IGNvdWxkIGJlIG9iamVjdCBvZgorICAgICAgICAgKiBheG9pcyhQcm9taXNlIEhUVFApIHJlc3Bv bnNlLCBzbyB3ZSBzaG91bGQgY2hlY2sgYWNjb3JkaW5nbHkuCisgICAgICAgICAqLworICAgICAg ICBpZiAoeGhyLnJlc3BvbnNlSlNPTiAhPSB1bmRlZmluZWQgJiYKKyAgICAgICAgICAgIHhoci5y ZXNwb25zZUpTT04uZGF0YSAmJiAheGhyLnJlc3BvbnNlSlNPTi5kYXRhLmNvbm5faWQpIHsKKyAg ICAgICAgICAvLyBpZiBjb25uX2lkIGlzIG51bGwgdGhlbiB0aGlzIGlzIG1haW50ZW5hbmNlIGRi LgorICAgICAgICAgIC8vIHNvIGF0dGVtcHQgY29ubmVjdGlvbiBjb25uZWN0IHdpdGhvdXQgcHJv bXB0LgorICAgICAgICAgIHNlbGYuaW5pdF9jb25uZWN0aW9uKGNyZWF0ZV90cmFuc2FjdGlvbik7 CisgICAgICAgIH0gZWxzZSBpZiAoeGhyLmRhdGEgIT0gdW5kZWZpbmVkICYmCisgICAgICAgICAg eGhyLmRhdGEuZGF0YSAmJiAheGhyLmRhdGEuZGF0YS5jb25uX2lkKSB7CiAgICAgICAgICAgLy8g aWYgY29ubl9pZCBpcyBudWxsIHRoZW4gdGhpcyBpcyBtYWludGVuYW5jZSBkYi4KICAgICAgICAg ICAvLyBzbyBhdHRlbXB0IGNvbm5lY3Rpb24gY29ubmVjdCB3aXRob3V0IHByb21wdC4KICAgICAg ICAgICBzZWxmLmluaXRfY29ubmVjdGlvbihjcmVhdGVfdHJhbnNhY3Rpb24pOwpAQCAtMzc0Nyw3 ICszNzU3LDEzIEBAIGRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwogICAgICAgICAgIHNxbCA9 IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0VmFsdWUoKTsKIAogICAgICAgICBjb25z dCBleGVjdXRlUXVlcnkgPSBuZXcgRXhlY3V0ZVF1ZXJ5LkV4ZWN1dGVRdWVyeSh0aGlzLCBwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQpOwotICAgICAgICBleGVjdXRlUXVlcnkuZXhlY3V0 ZShzcWwsIGV4cGxhaW5fcHJlZml4KTsKKworICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+ IDAgJiYKKyAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID09ICdjb25u ZWN0JykgeworICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKHNxbCwgZXhwbGFpbl9wcmVm aXgsIHRydWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGV4ZWN1dGVRdWVyeS5leGVj dXRlKHNxbCwgZXhwbGFpbl9wcmVmaXgpOworICAgICAgICB9CiAgICAgICB9LAogCiAgICAgICAv KiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBlcnJvciBsaW5lIGFuZApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3Rfc3RhcnRf cXVlcnlfdG9vbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3N0 YXJ0X3F1ZXJ5X3Rvb2wucHkKaW5kZXggMmE1MDI1OS4uYzJmZjIxYyAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3Rfc3RhcnRfcXVlcnlfdG9vbC5weQor KysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVzdF9zdGFydF9xdWVyeV90 b29sLnB5CkBAIC00Miw2ICs0Miw2IEBAIGNsYXNzIFN0YXJ0UXVlcnlUb29sKEJhc2VUZXN0R2Vu ZXJhdG9yKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3BvbnNlLnN0YXR1cywg JzIwMCBPSycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXNwb25zZS5kYXRhLCBi J3NvbWUgcmVzdWx0JykKICAgICAgICAgICAgIFN0YXJ0UnVubmluZ1F1ZXJ5X2V4ZWN1dGVfbW9j ayBcCi0gICAgICAgICAgICAgICAgLmFzc2VydF9jYWxsZWRfd2l0aCgndHJhbnNmb3JtZWQgc3Fs JywgMTIzNCwgQU5ZKQorICAgICAgICAgICAgICAgIC5hc3NlcnRfY2FsbGVkX3dpdGgoJ3RyYW5z Zm9ybWVkIHNxbCcsIDEyMzQsIEFOWSwgRmFsc2UpCiAgICAgICAgICAgICBleHRyYWN0X3NxbF9m cm9tX25ldHdvcmtfcGFyYW1ldGVyc19tb2NrIFwKICAgICAgICAgICAgICAgICAuYXNzZXJ0X2Nh bGxlZF93aXRoKGInInNvbWUgc3FsIHN0YXRlbWVudCInLCBBTlksIEFOWSkKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5 IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnku cHkKaW5kZXggMTFiOTQ2Yi4uM2IzYzUwMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKKysrIGIvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3V0aWxzL3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKQEAgLTM2LDcgKzM2 LDcgQEAgY2xhc3MgU3RhcnRSdW5uaW5nUXVlcnk6CiAgICAgICAgIHNlbGYuY29ubmVjdGlvbl9p ZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKICAgICAgICAgc2VsZi5sb2dnZXIg PSBsb2dnZXIKIAotICAgIGRlZiBleGVjdXRlKHNlbGYsIHNxbCwgdHJhbnNfaWQsIGh0dHBfc2Vz c2lvbik6CisgICAgZGVmIGV4ZWN1dGUoc2VsZiwgc3FsLCB0cmFuc19pZCwgaHR0cF9zZXNzaW9u LCBjb25uZWN0PUZhbHNlKToKICAgICAgICAgc2Vzc2lvbl9vYmogPSBTdGFydFJ1bm5pbmdRdWVy eS5yZXRyaWV2ZV9zZXNzaW9uX2luZm9ybWF0aW9uKAogICAgICAgICAgICAgaHR0cF9zZXNzaW9u LAogICAgICAgICAgICAgdHJhbnNfaWQKQEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgU3RhcnRSdW5u aW5nUXVlcnk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCiAKICAgICAgICAgICAgICMgQ29ubmVjdCB0byB0aGUgU2VydmVyIGlm IG5vdCBjb25uZWN0ZWQuCi0gICAgICAgICAgICBpZiBub3QgY29ubi5jb25uZWN0ZWQoKToKKyAg ICAgICAgICAgIGlmIGNvbm5lY3QgYW5kIG5vdCBjb25uLmNvbm5lY3RlZCgpOgogICAgICAgICAg ICAgICAgIHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0KCkKICAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcihtc2cpCkBA IC0xMDgsMzkgKzEwOCwzNCBAQCBjbGFzcyBTdGFydFJ1bm5pbmdRdWVyeToKICAgICAgICAgICAg IHNlbGYuY29ubmVjdGlvbl9pZCA9IGNvbm5faWQKIAogICAgIGRlZiBfX2V4ZWN1dGVfcXVlcnko c2VsZiwgY29ubiwgc2Vzc2lvbl9vYmosIHNxbCwgdHJhbnNfaWQsIHRyYW5zX29iaik6Ci0gICAg ICAgIGlmIGNvbm4uY29ubmVjdGVkKCk6Ci0gICAgICAgICAgICAjIG9uIHN1Y2Nlc3NmdWwgY29u bmVjdGlvbiBzZXQgdGhlIGNvbm5lY3Rpb24gaWQgdG8gdGhlCi0gICAgICAgICAgICAjIHRyYW5z YWN0aW9uIG9iamVjdAotICAgICAgICAgICAgdHJhbnNfb2JqLnNldF9jb25uZWN0aW9uX2lkKHNl bGYuY29ubmVjdGlvbl9pZCkKKyAgICAgICAgIyBvbiBzdWNjZXNzZnVsIGNvbm5lY3Rpb24gc2V0 IHRoZSBjb25uZWN0aW9uIGlkIHRvIHRoZQorICAgICAgICAjIHRyYW5zYWN0aW9uIG9iamVjdAor ICAgICAgICB0cmFuc19vYmouc2V0X2Nvbm5lY3Rpb25faWQoc2VsZi5jb25uZWN0aW9uX2lkKQor CisgICAgICAgIFN0YXJ0UnVubmluZ1F1ZXJ5LnNhdmVfdHJhbnNhY3Rpb25faW5fc2Vzc2lvbihz ZXNzaW9uX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRyYW5zX2lkLCB0cmFuc19vYmopCisKKyAgICAgICAgIyBJZiBhdXRvIGNvbW1p dCBpcyBGYWxzZSBhbmQgdHJhbnNhY3Rpb24gc3RhdHVzIGlzIElkbGUKKyAgICAgICAgIyB0aGVu IGNhbGwgaXNfYmVnaW5fbm90X3JlcXVpcmVkKCkgZnVuY3Rpb24gdG8gY2hlY2sgQkVHSU4KKyAg ICAgICAgIyBpcyByZXF1aXJlZCBvciBub3QuCisKKyAgICAgICAgaWYgU3RhcnRSdW5uaW5nUXVl cnkuaXNfYmVnaW5fcmVxdWlyZWRfZm9yX3NxbF9xdWVyeSh0cmFuc19vYmosCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwg c3FsKToKKyAgICAgICAgICAgIGNvbm4uZXhlY3V0ZV92b2lkKCJCRUdJTjsiKQorCisgICAgICAg ICMgRXhlY3V0ZSBzcWwgYXN5bmNocm9ub3VzbHkgd2l0aCBwYXJhbXMgaXMgTm9uZQorICAgICAg ICAjIGFuZCBmb3JtYXR0ZWRfZXJyb3IgaXMgVHJ1ZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAg ICAgc3RhdHVzLCByZXN1bHQgPSBjb25uLmV4ZWN1dGVfYXN5bmMoc3FsKQorICAgICAgICBleGNl cHQgQ29ubmVjdGlvbkxvc3Q6CisgICAgICAgICAgICByYWlzZQorCisgICAgICAgICMgSWYgdGhl IHRyYW5zYWN0aW9uIGFib3J0ZWQgZm9yIHNvbWUgcmVhc29uIGFuZAorICAgICAgICAjIEF1dG8g Um9sbEJhY2sgaXMgVHJ1ZSB0aGVuIGlzc3VlIGEgcm9sbGJhY2sgdG8gY2xlYW51cC4KKyAgICAg ICAgaWYgU3RhcnRSdW5uaW5nUXVlcnkuaXNfcm9sbGJhY2tfc3RhdGVtZW50X3JlcXVpcmVkKHRy YW5zX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbm4pOgorICAgICAgICAgICAgY29ubi5leGVjdXRlX3ZvaWQoIlJPTExC QUNLOyIpCiAKLSAgICAgICAgICAgIFN0YXJ0UnVubmluZ1F1ZXJ5LnNhdmVfdHJhbnNhY3Rpb25f aW5fc2Vzc2lvbihzZXNzaW9uX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc19pZCwgdHJhbnNfb2JqKQotCi0gICAgICAg ICAgICAjIElmIGF1dG8gY29tbWl0IGlzIEZhbHNlIGFuZCB0cmFuc2FjdGlvbiBzdGF0dXMgaXMg SWRsZQotICAgICAgICAgICAgIyB0aGVuIGNhbGwgaXNfYmVnaW5fbm90X3JlcXVpcmVkKCkgZnVu Y3Rpb24gdG8gY2hlY2sgQkVHSU4KLSAgICAgICAgICAgICMgaXMgcmVxdWlyZWQgb3Igbm90Lgot Ci0gICAgICAgICAgICBpZiBTdGFydFJ1bm5pbmdRdWVyeS5pc19iZWdpbl9yZXF1aXJlZF9mb3Jf c3FsX3F1ZXJ5KHRyYW5zX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubiwgc3FsKToKLSAgICAgICAgICAgICAg ICBjb25uLmV4ZWN1dGVfdm9pZCgiQkVHSU47IikKLQotICAgICAgICAgICAgIyBFeGVjdXRlIHNx bCBhc3luY2hyb25vdXNseSB3aXRoIHBhcmFtcyBpcyBOb25lCi0gICAgICAgICAgICAjIGFuZCBm b3JtYXR0ZWRfZXJyb3IgaXMgVHJ1ZS4KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg ICBzdGF0dXMsIHJlc3VsdCA9IGNvbm4uZXhlY3V0ZV9hc3luYyhzcWwpCi0gICAgICAgICAgICBl eGNlcHQgQ29ubmVjdGlvbkxvc3Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLQotICAgICAgICAg ICAgIyBJZiB0aGUgdHJhbnNhY3Rpb24gYWJvcnRlZCBmb3Igc29tZSByZWFzb24gYW5kCi0gICAg ICAgICAgICAjIEF1dG8gUm9sbEJhY2sgaXMgVHJ1ZSB0aGVuIGlzc3VlIGEgcm9sbGJhY2sgdG8g Y2xlYW51cC4KLSAgICAgICAgICAgIGlmIFN0YXJ0UnVubmluZ1F1ZXJ5LmlzX3JvbGxiYWNrX3N0 YXRlbWVudF9yZXF1aXJlZCh0cmFuc19vYmosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubik6Ci0gICAgICAgICAgICAg ICAgY29ubi5leGVjdXRlX3ZvaWQoIlJPTExCQUNLOyIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg ICAgICBzdGF0dXMgPSBGYWxzZQotICAgICAgICAgICAgcmVzdWx0ID0gZ2V0dGV4dCgKLSAgICAg ICAgICAgICAgICAnTm90IGNvbm5lY3RlZCB0byBzZXJ2ZXIgb3IgY29ubmVjdGlvbiB3aXRoIHRo ZSBzZXJ2ZXIgaGFzICcKLSAgICAgICAgICAgICAgICAnYmVlbiBjbG9zZWQuJykKICAgICAgICAg cmV0dXJuIHJlc3VsdCwgc3RhdHVzCiAKICAgICBAc3RhdGljbWV0aG9kCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvdGVzdHMvdGVzdF9zdGFydF9ydW5uaW5n X3F1ZXJ5LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3Rf c3RhcnRfcnVubmluZ19xdWVyeS5weQppbmRleCAyM2E1YzdmLi40YWQwODkxIDEwMDY0NAotLS0g YS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvdGVzdHMvdGVzdF9zdGFydF9ydW5u aW5nX3F1ZXJ5LnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0 cy90ZXN0X3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKQEAgLTIxLDYgKzIxLDcgQEAgZWxzZToKICAg ICBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoLCBNYWdpY01vY2sKIAogZ2V0X2RyaXZl cl9leGNlcHRpb24gPSBFeGNlcHRpb24oJ2dldF9kcml2ZXIgZXhjZXB0aW9uJykKK2dldF9jb25u ZWN0aW9uX2xvc3RfZXhjZXB0aW9uID0gRXhjZXB0aW9uKCdVbmFibGUgdG8gY29ubmVjdCB0byBz ZXJ2ZXInKQogCiAKIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRv cik6CkBAIC0zOCw2ICszOSw3IEBAIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVz dEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBwaWNrbGVfbG9hZF9y ZXR1cm49Tm9uZSwKICAgICAgICAgICAgICBnZXRfZHJpdmVyX2V4Y2VwdGlvbj1GYWxzZSwKKyAg ICAgICAgICAgICBnZXRfY29ubmVjdGlvbl9sb3N0X2V4Y2VwdGlvbj1GYWxzZSwKICAgICAgICAg ICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCiAKICAgICAgICAgICAgICBp c19jb25uZWN0ZWRfdG9fc2VydmVyPUZhbHNlLApAQCAtNjcsNiArNjksNyBAQCBjbGFzcyBTdGFy dFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICksCiAg ICAgICAgICAgICAgcGlja2xlX2xvYWRfcmV0dXJuPU5vbmUsCiAgICAgICAgICAgICAgZ2V0X2Ry aXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICAgZ2V0X2Nvbm5lY3Rpb25fbG9zdF9l eGNlcHRpb249RmFsc2UsCiAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uX2V4Y2VwdGlv bj1Ob25lLAogCiAgICAgICAgICAgICAgaXNfY29ubmVjdGVkX3RvX3NlcnZlcj1GYWxzZSwKQEAg LTk3LDYgKzEwMCw3IEBAIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVy YXRvcik6CiAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICBwaWNrbGVfbG9hZF9yZXR1cm49 Tm9uZSwKICAgICAgICAgICAgICBnZXRfZHJpdmVyX2V4Y2VwdGlvbj1GYWxzZSwKKyAgICAgICAg ICAgICBnZXRfY29ubmVjdGlvbl9sb3N0X2V4Y2VwdGlvbj1GYWxzZSwKICAgICAgICAgICAgICBt YW5hZ2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCiAKICAgICAgICAgICAgICBpc19jb25u ZWN0ZWRfdG9fc2VydmVyPUZhbHNlLApAQCAtMTMxLDYgKzEzNSw3IEBAIGNsYXNzIFN0YXJ0UnVu bmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgcGlja2xlX2xv YWRfcmV0dXJuPU1hZ2ljTW9jayhjb25uX2lkPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB1cGRhdGVfZmV0Y2hlZF9yb3dfY250PU1hZ2ljTW9jaygpKSwKICAg ICAgICAgICAgICBnZXRfZHJpdmVyX2V4Y2VwdGlvbj1UcnVlLAorICAgICAgICAgICAgIGdldF9j b25uZWN0aW9uX2xvc3RfZXhjZXB0aW9uPUZhbHNlLAogICAgICAgICAgICAgIG1hbmFnZXJfY29u bmVjdGlvbl9leGNlcHRpb249Tm9uZSwKIAogICAgICAgICAgICAgIGlzX2Nvbm5lY3RlZF90b19z ZXJ2ZXI9RmFsc2UsCkBAIC0xNjEsNiArMTY2LDcgQEAgY2xhc3MgU3RhcnRSdW5uaW5nUXVlcnlU ZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgdXBkYXRlX2ZldGNoZWRf cm93X2NudD1NYWdpY01vY2soKQogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgZ2V0X2Ry aXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICAgZ2V0X2Nvbm5lY3Rpb25fbG9zdF9l eGNlcHRpb249RmFsc2UsCiAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uX2V4Y2VwdGlv bj1Db25uZWN0aW9uTG9zdCgnMScsICcyJywgJzMnKSwKIAogICAgICAgICAgICAgIGlzX2Nvbm5l Y3RlZF90b19zZXJ2ZXI9RmFsc2UsCkBAIC0xODgsNiArMTk0LDcgQEAgY2xhc3MgU3RhcnRSdW5u aW5nUXVlcnlUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgdXBkYXRl X2ZldGNoZWRfcm93X2NudD1NYWdpY01vY2soKQogICAgICAgICAgICAgICksCiAgICAgICAgICAg ICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICAgZ2V0X2Nvbm5lY3Rp b25fbG9zdF9leGNlcHRpb249VHJ1ZSwKICAgICAgICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb25f ZXhjZXB0aW9uPU5vbmUsCiAKICAgICAgICAgICAgICBpc19jb25uZWN0ZWRfdG9fc2VydmVyPUZh bHNlLApAQCAtMjAyLDcgKzIwOSw3IEBAIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNl VGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgZXhwZWN0X2ludGVybmFsX3NlcnZlcl9lcnJv cl9jYWxsZWRfd2l0aD1kaWN0KAogICAgICAgICAgICAgICAgICBlcnJvcm1zZz0nVW5hYmxlIHRv IGNvbm5lY3QgdG8gc2VydmVyJwogICAgICAgICAgICAgICksCi0gICAgICAgICAgICAgZXhwZWN0 ZWRfbG9nZ2VyX2Vycm9yPSdVbmFibGUgdG8gY29ubmVjdCB0byBzZXJ2ZXInLAorICAgICAgICAg ICAgIGV4cGVjdGVkX2xvZ2dlcl9lcnJvcj1nZXRfY29ubmVjdGlvbl9sb3N0X2V4Y2VwdGlvbiwK ICAgICAgICAgICAgICBleHBlY3RfZXhlY3V0ZV92b2lkX2NhbGxlZF93aXRoPSdzb21lIHNxbCcs CiAgICAgICAgICApKSwKICAgICAgICAgKCdXaGVuIHNlcnZlciBpcyBjb25uZWN0ZWQgYW5kIHN0 YXJ0IHF1ZXJ5IGFzeW5jIHJlcXVlc3QsICcKQEAgLTIyMyw2ICsyMzAsNyBAQCBjbGFzcyBTdGFy dFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICBj YW5fZmlsdGVyPWxhbWJkYTogVHJ1ZQogICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgZ2V0 X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisgICAgICAgICAgICAgZ2V0X2Nvbm5lY3Rpb25fbG9z dF9leGNlcHRpb249RmFsc2UsCiAgICAgICAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uX2V4Y2Vw dGlvbj1Ob25lLAogCiAgICAgICAgICAgICAgaXNfY29ubmVjdGVkX3RvX3NlcnZlcj1UcnVlLApA QCAtMjY1LDYgKzI3Myw3IEBAIGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdl bmVyYXRvcik6CiAgICAgICAgICAgICAgICAgIGNhbl9maWx0ZXI9bGFtYmRhOiBUcnVlCiAgICAg ICAgICAgICAgKSwKICAgICAgICAgICAgICBnZXRfZHJpdmVyX2V4Y2VwdGlvbj1GYWxzZSwKKyAg ICAgICAgICAgICBnZXRfY29ubmVjdGlvbl9sb3N0X2V4Y2VwdGlvbj1GYWxzZSwKICAgICAgICAg ICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb25fZXhjZXB0aW9uPU5vbmUsCiAKICAgICAgICAgICAgICBp c19jb25uZWN0ZWRfdG9fc2VydmVyPVRydWUsCkBAIC0zMDcsNiArMzE2LDcgQEAgY2xhc3MgU3Rh cnRSdW5uaW5nUXVlcnlUZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAg Y2FuX2ZpbHRlcj1sYW1iZGE6IFRydWUKICAgICAgICAgICAgICApLAogICAgICAgICAgICAgIGdl dF9kcml2ZXJfZXhjZXB0aW9uPUZhbHNlLAorICAgICAgICAgICAgIGdldF9jb25uZWN0aW9uX2xv c3RfZXhjZXB0aW9uPUZhbHNlLAogICAgICAgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbl9leGNl cHRpb249Tm9uZSwKIAogICAgICAgICAgICAgIGlzX2Nvbm5lY3RlZF90b19zZXJ2ZXI9VHJ1ZSwK QEAgLTM0OSw2ICszNTksNyBAQCBjbGFzcyBTdGFydFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RH ZW5lcmF0b3IpOgogICAgICAgICAgICAgICAgICBjYW5fZmlsdGVyPWxhbWJkYTogVHJ1ZQogICAg ICAgICAgICAgICksCiAgICAgICAgICAgICAgZ2V0X2RyaXZlcl9leGNlcHRpb249RmFsc2UsCisg ICAgICAgICAgICAgZ2V0X2Nvbm5lY3Rpb25fbG9zdF9leGNlcHRpb249RmFsc2UsCiAgICAgICAg ICAgICAgbWFuYWdlcl9jb25uZWN0aW9uX2V4Y2VwdGlvbj1Ob25lLAogCiAgICAgICAgICAgICAg aXNfY29ubmVjdGVkX3RvX3NlcnZlcj1UcnVlLApAQCAtNDMxLDYgKzQ0Miw4IEBAIGNsYXNzIFN0 YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgIG1hbmFnZXIg PSBzZWxmLl9fY3JlYXRlX21hbmFnZXIoKQogICAgICAgICBpZiBzZWxmLmdldF9kcml2ZXJfZXhj ZXB0aW9uOgogICAgICAgICAgICAgZ2V0X2RyaXZlcl9tb2NrLnNpZGVfZWZmZWN0ID0gZ2V0X2Ry aXZlcl9leGNlcHRpb24KKyAgICAgICAgZWxpZiBzZWxmLmdldF9jb25uZWN0aW9uX2xvc3RfZXhj ZXB0aW9uOgorICAgICAgICAgICAgZ2V0X2RyaXZlcl9tb2NrLnNpZGVfZWZmZWN0ID0gZ2V0X2Nv bm5lY3Rpb25fbG9zdF9leGNlcHRpb24KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGdldF9k cml2ZXJfbW9jay5yZXR1cm5fdmFsdWUgPSBNYWdpY01vY2soCiAgICAgICAgICAgICAgICAgY29u bmVjdGlvbl9tYW5hZ2VyPWxhbWJkYSBzZXNzaW9uX2lkOiBtYW5hZ2VyKQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2VyX21hbmFnZW1l bnQuanMgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJf bWFuYWdlbWVudC5qcwppbmRleCAyYTNiMmYwLi4zMzUyYzE1IDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFuYWdlbWVudC5qcwor KysgYi93ZWIvcGdhZG1pbi90b29scy91c2VyX21hbmFnZW1lbnQvc3RhdGljL2pzL3VzZXJfbWFu YWdlbWVudC5qcwpAQCAtMTMwLDYgKzEzMCwxNSBAQCBkZWZpbmUoWwogICAgIH0sCiAKICAgICBp c19wZ2FfbG9naW5fcmVxdWlyZWQoeGhyKSB7CisgICAgICAvKiBJZiByZXNwb25zZUpTT04gaXMg dW5kZWZpbmVkIHRoZW4gaXQgY291bGQgYmUgb2JqZWN0IG9mCisgICAgICAgKiBheG9pcyhQcm9t aXNlIEhUVFApIHJlc3BvbnNlLCBzbyB3ZSBzaG91bGQgY2hlY2sgYWNjb3JkaW5nbHkuCisgICAg ICAgKi8KKyAgICAgIGlmICh4aHIucmVzcG9uc2VKU09OID09IHVuZGVmaW5lZCAmJiB4aHIuZGF0 YSAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgcmV0dXJuIHhoci5zdGF0dXMgPT0gNDAxICYmIHho ci5kYXRhICYmCisgICAgICAgICAgICAgICAgICB4aHIuZGF0YS5pbmZvICYmCisgICAgICAgICAg ICAgICAgICB4aHIuZGF0YS5pbmZvID09ICdQR0FETUlOX0xPR0lOX1JFUVVJUkVEJzsKKyAgICAg IH0KKwogICAgICAgcmV0dXJuIHhoci5zdGF0dXMgPT0gNDAxICYmIHhoci5yZXNwb25zZUpTT04g JiYKICAgICAgICAgICAgICAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gJiYKICAgICAgICAgICAg ICAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gPT0gJ1BHQURNSU5fTE9HSU5fUkVRVUlSRUQnOwo= --f4f5e80e55344ab7220567d7d2d0--