Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aYD6g-0000Yj-0q for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 13:34:26 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aYD6f-0002i9-Jf for pgadmin-hackers@arkaria.postgresql.org; Tue, 23 Feb 2016 13:34:25 +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.84) (envelope-from ) id 1aYD6N-0002LZ-I6 for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 13:34:07 +0000 Received: from mail-yk0-x234.google.com ([2607:f8b0:4002:c07::234]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aYD6J-0004m1-EA for pgadmin-hackers@postgresql.org; Tue, 23 Feb 2016 13:34:06 +0000 Received: by mail-yk0-x234.google.com with SMTP id r207so76262250ykd.2 for ; Tue, 23 Feb 2016 05:34:03 -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 :cc:content-type; bh=h5Ismex3GhRzow5N12nOhyfCchWFCGppUx6By9XZ/m8=; b=VlCQ9H+i6cgZbg9jfMQtqJGkfEcBolzQOellGISwbsOB+U9yE7dl1YisO53zUnTcIs 2YRK21Skl2mcUv7/QY9tKNnaB9WukzoadP7hWnQaG9izCO5rOj57U7CWPjfnJfOmaF9r gPSCIOysxkXwRGD1zxdYSL77p+cN11nxvM6ItrwzfmZ9oCP4CdxuRw7f1k5ceEChH1nM RuTN8Zb8AEMBuoFeSgUid1vUWl92USAzwxD8ehttzEhXoS78uiUfIhzWXFHuaQGI2/5g oDTwYBo3eZLUP3cr1r/8JbZM6Kyk7LZg6NvnxbZMgWBtSt+mQ6qzYssxh+hayiweEHWo yOGA== 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:cc:content-type; bh=h5Ismex3GhRzow5N12nOhyfCchWFCGppUx6By9XZ/m8=; b=OkP33MGTlAxjtprsJWGUUaXRoROPwhSMRBiNOvye1I5qsW4Z8OFqC/An8GXBIwfCdr W/YBAjTihecylOxQ8Ww0arhVbi6eiufmP2Dd1apNhhL7jH1cdFG7zaVy1kc8IqSEkc7Q hIKFTeb0QO4PvpQcqVv1CSyIITrkYgOdDCr8VPD9xeboDmgVwX6onBJEihYPFSQLkdp9 qt+0eKGFK8epPs247eLzZHzhCmE2WKJJA/LzhOF4w915RfTiZy1C6UdYVRvD68dNJsvK fNBW4kmL8PvSI+N0vbOYGFiPZgFfo8lOZJUnqsFoV27rHzGT0Me1Oc/rIIyYQbQq89SN jSiA== X-Gm-Message-State: AG10YOQMDtnrdBTFOwduFh5H0qAcWsbtfJ8C7f8jJhAlPwxpFhFgSQz5Dq0t+tT5FEF+V63KGBacmbbcp7D1RafG MIME-Version: 1.0 X-Received: by 10.37.47.151 with SMTP id v145mr14803850ybv.61.1456234442516; Tue, 23 Feb 2016 05:34:02 -0800 (PST) Received: by 10.13.207.199 with HTTP; Tue, 23 Feb 2016 05:34:02 -0800 (PST) In-Reply-To: References: Date: Tue, 23 Feb 2016 19:04:02 +0530 Message-ID: Subject: Re: patch for cast module From: Sanket Mehta To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1140ad6ea879ee052c70008d 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 --001a1140ad6ea879ee052c70008d Content-Type: multipart/alternative; boundary=001a1140ad6ea879e9052c70008b --001a1140ad6ea879e9052c70008b Content-Type: text/plain; charset=UTF-8 Hi, PFA the revised patch as per your comments. Please review it and let me know the feedback. Regards, Sanket Mehta Sr Software engineer Enterprisedb On Tue, Feb 23, 2016 at 4:10 PM, Dave Page wrote: > Hi > > I've attached an update to this patch, in which I've done some > word-smithing on various comments, and adjusted the SQL templates to > improve the formatting. > > However, it looks like it's bit-rotted, as the dependents/dependencies > display is throwing Python errors. Please fix and then I think it's just > about ready to commit. > > Thanks. > > > On Fri, Feb 19, 2016 at 11:03 AM, Sanket Mehta < > sanket.mehta@enterprisedb.com> wrote: > >> Hi Dave, >> >> PFA the revise patch. >> >> It includes changes according to your review comments as well as >> dependency/dependent part also. >> >> Let me know in case anything is missing. >> >> Regards, >> Sanket Mehta >> Sr Software engineer >> Enterprisedb >> >> On Mon, Feb 15, 2016 at 10:25 PM, Dave Page wrote: >> >>> And this time with the attachment... >>> >>> On Mon, Feb 15, 2016 at 4:53 PM, Dave Page wrote: >>> >>>> That's much better. Just a couple of comments now, partly based on an >>>> email I wrote earlier: >>>> >>>> - There is still inconsistency in comment style. Please see the >>>> attachment for an example. Note that there is *always* a space between the >>>> comment marker and text. >>>> >>>> - If I try to edit a cast, I can change the description - but no SQL is >>>> shown on the SQL tab, despite the comment being correctly applied when I >>>> hit save. The properties pane of the main window is also not updated. >>>> >>>> Otherwise, it looks fine. >>>> >>>> Thanks. >>>> >>>> On Mon, Feb 15, 2016 at 1:28 PM, Sanket Mehta < >>>> sanket.mehta@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> PFA the revised patch with all the required comments. >>>>> >>>>> >>>>> >>>>> Regards, >>>>> Sanket Mehta >>>>> Sr Software engineer >>>>> Enterprisedb >>>>> >>>>> On Mon, Feb 15, 2016 at 4:18 PM, Dave Page wrote: >>>>> >>>>>> >>>>>> >>>>>> On Mon, Feb 15, 2016 at 8:10 AM, Sanket Mehta < >>>>>> sanket.mehta@enterprisedb.com> wrote: >>>>>> >>>>>>> Hi Dave, >>>>>>> >>>>>>> Regarding your suggestion of putting some comments in javascript, I >>>>>>> think I have already put some comments regarding model data and their >>>>>>> controls if any extended. >>>>>>> >>>>>>> Can you please let me know where exactly you think more comments are >>>>>>> required? >>>>>>> >>>>>> >>>>>> Hi >>>>>> >>>>>> The issue for me is that jQuery code isn't the easiest to read at the >>>>>> best of times, with nested/anonymous functions and inline JSON etc. As I >>>>>> look through the code for the various nodes in isolation, it's extremely >>>>>> difficult to get a sense of what exactly each part of the code is doing. In >>>>>> this example, what I see by reading the code is: >>>>>> >>>>>> - Define the required libraries (require.js stuff) >>>>>> - Extend the collection class >>>>>> - Extend the node class >>>>>> - Define an init function inline >>>>>> - Add the menu options >>>>>> >>>>>> That part is fairly easy to figure out (easier because there are >>>>>> blank lines between the logical sections). From there though, it becomes >>>>>> much harder; >>>>>> >>>>>> - There are no blank lines to separate logical code sections at all >>>>>> between line 48 and 235 (there is one blank line, but it doesn't separate >>>>>> code sections). >>>>>> - There are 4 comments that I can see. The first two are identical, >>>>>> and appear to have identical code blocks following them for reasons that >>>>>> are not even remotely obvious. >>>>>> - As a newcomer to this code, I'm wondering if it's purpose is to >>>>>> define the backform model. If so, why is it not broken up into sections >>>>>> with a comment to tell me what field each block handles, and any other >>>>>> useful information I may need to know? If it's not, then what is it for? >>>>>> >>>>>> So... I'm not going to tell you exactly where to put comments, >>>>>> because the point is that without spending a couple of hours understanding >>>>>> this, I simply don't know. The point of the comments (and separation of >>>>>> logical sections of code with blank lines) is to make it easy for another >>>>>> developer (especially one as rusty as me) to read and understand, then fix >>>>>> and improve. Be generous with comments, but don't use them unnecessarily >>>>>> (e.g. "a = 1 // Set a to one"). >>>>>> >>>>>> Of course, this is not just directed at you Sanket - it's something >>>>>> all of us working on pgAdmin need to keep in mind. >>>>>> >>>>>> Thanks. >>>>>> >>>>>> -- >>>>>> 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 >>> >> >> > > > -- > Dave Page > Blog: http://pgsnake.blogspot.com > Twitter: @pgsnake > > EnterpriseDB UK: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > --001a1140ad6ea879e9052c70008b Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA the revised patch as per your co= mments.
Please review it and let me know the feedback.

Regards,
Sanket Mehta
Sr Software engineer
Enterprisedb

On Tue, Feb 23, 2016 at 4:10 PM, Dave Page <= span dir=3D"ltr"><dpage@pgadmin.org> wrote:
=
Hi

I've attached an update to this = patch, in which I've done some word-smithing on various comments, and a= djusted the SQL templates to improve the formatting.

However, it looks like it's bit-rotted, as the dependents/dependenci= es display is throwing Python errors. Please fix and then I think it's = just about ready to commit.

Thanks.


On Fr= i, Feb 19, 2016 at 11:03 AM, Sanket Mehta <sanket.mehta@enterp= risedb.com> wrote:
Hi Dave,

PFA the revise patch.

=
It includes changes according to your review comments as well as depe= ndency/dependent part also.

Let me know in case anything is mi= ssing.

Regards,
Sanket Mehta
Sr Software engineer=
Enterprisedb

On Mon, Feb 15, 2016 at 10:= 25 PM, Dave Page <dpage@pgadmin.org> wrote:
And this time with the attachment...

On Mo= n, Feb 15, 2016 at 4:53 PM, Dave Page <dpage@pgadmin.org> wr= ote:
That's much bet= ter. Just a couple of comments now, partly based on an email I wrote earlie= r:

- There is still inconsistency in comment style. Plea= se see the attachment for an example. Note that there is *always* a space b= etween the comment marker and text.

- If I try to = edit a cast, I can change the description - but no SQL is shown on the SQL = tab, despite the comment being correctly applied when I hit save. The prope= rties pane of the main window is also not updated.

Otherwise, it looks fine.
<= div class=3D"gmail_extra">
Thanks.

On Mon= , Feb 15, 2016 at 1:28 PM, Sanket Mehta <sanket.mehta@enterpri= sedb.com> wrote:
Hi,

PFA the revised patch with all the required = comments.



Regards,
Sanket Mehta
Sr Softwa= re engineer
Enterprisedb

On Mon, Feb 15, 2016 at 4:1= 8 PM, Dave Page <dpage@pgadmin.org> wrote:


On Mon, Feb 15, 2016 at 8:10 AM, Sanket Mehta <sanket.mehta@enterprisedb.com> wrote:
Hi Dave,

Reg= arding your suggestion of putting some comments in javascript, I think I ha= ve already put some comments regarding model data and their controls if any= extended.

Can you please let me know where exactly you think = more comments are required?

Hi=

The issue for me is that jQuery code isn't th= e easiest to read at the best of times, with nested/anonymous functions and= inline JSON etc. As I look through the code for the various nodes in isola= tion, it's extremely difficult to get a sense of what exactly each part= of the code is doing. In this example, what I see by reading the code is:<= /div>

- Define the required libraries (require.js stuff)=
- Extend the collection class
- Extend the node class<= /div>
=C2=A0 - Define an init function inline
=C2=A0 - Add th= e menu options

That part is fairly easy to figure = out (easier because there are blank lines between the logical sections). Fr= om there though, it becomes much harder;

- There a= re no blank lines to separate logical code sections at all between line 48 = and 235 (there is one blank line, but it doesn't separate code sections= ).=C2=A0
- There are 4 comments that I can see. The first two are= identical, and appear to have identical code blocks following them for rea= sons that are not even remotely obvious.=C2=A0
- As a newcomer to= this code, I'm wondering if it's purpose is to define the backform= model. If so, why is it not broken up into sections with a comment to tell= me what field each block handles, and any other useful information I may n= eed to know? If it's not, then what is it for?

So... I'm not going to tell you exactly where to put comments, because= the point is that without spending a couple of hours understanding this, I= simply don't know. The point of the comments (and separation of logica= l sections of code with blank lines) is to make it easy for another develop= er (especially one as rusty as me) to read and understand, then fix and imp= rove. Be generous with comments, but don't use them unnecessarily (e.g.= "a =3D 1 // Set a to one").

Of course, = this is not just directed at you Sanket - it's something all of us work= ing on pgAdmin need to keep in mind.

Thanks.
=

--
Dave Page
Blog: http://pgsnake.blogspot.comTwitter: @pgsnake

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




--
Dave Pa= ge
Blog: http:= //pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterpris= edb.com
The Enterprise PostgreSQL Company



--
Dave Pa= ge
Blog: http:= //pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterpris= edb.com
The Enterprise PostgreSQL Company




--
Dave Pa= ge
Blog: http:= //pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterpris= edb.com
The Enterprise PostgreSQL Company

--001a1140ad6ea879e9052c70008b-- --001a1140ad6ea879ee052c70008d Content-Type: text/x-patch; charset=US-ASCII; name="castv10.patch" Content-Disposition: attachment; filename="castv10.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ikzgdj1l1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi40MGUxMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNjQ3IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIkltcGxlbWVudHMgQ2Fz dCBOb2RlIiIiCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVu ZGVyX3RlbXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCBjdXJyZW50X2FwcCwgcmVx dWVzdCwganNvbmlmeQorZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdl dHRleHQKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX2pz b25fcmVzcG9uc2UsIFwKKyAgICBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhfcmVz cG9uc2UsIGludGVybmFsX3NlcnZlcl9lcnJvcgorZnJvbSBwZ2FkbWluLmJy b3dzZXIudXRpbHMgaW1wb3J0IFBHQ2hpbGROb2RlVmlldworZnJvbSBwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBvcnQgQ29sbGVjdGlvbk5vZGVN b2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5z ZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFzZXMKK2Zyb20gcGdhZG1pbi51 dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRpb25fcmVxdWlyZWQKK2Zyb20g cGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20g Y29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZFUgorZnJvbSBmdW5jdG9v bHMgaW1wb3J0IHdyYXBzCisKK2NsYXNzIENhc3RNb2R1bGUoQ29sbGVjdGlv bk5vZGVNb2R1bGUpOgorICAgICIiIgorICAgICBjbGFzcyBDYXN0TW9kdWxl KENvbGxlY3Rpb25Ob2RlTW9kdWxlKQorCisgICAgICAgIEEgbW9kdWxlIGNs YXNzIGZvciBDYXN0IG5vZGUgZGVyaXZlZCBmcm9tIENvbGxlY3Rpb25Ob2Rl TW9kdWxlLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBf X2luaXRfXygqYXJncywgKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1 c2VkIHRvIGluaXRpYWxpemUgdGhlIENhc3RNb2R1bGUgYW5kIGl0J3MgYmFz ZSBtb2R1bGUuCisKKyAgICAqIGdldF9ub2RlcyhnaWQsIHNpZCwgZGlkKQor ICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYnJvd3Nl ciBjb2xsZWN0aW9uIG5vZGUuCisKKyAgICAqIG5vZGVfaW5vZGUoKQorICAg ICAgLSBNZXRob2QgaXMgb3ZlcnJpZGRlbiBmcm9tIGl0cyBiYXNlIGNsYXNz IHRvIG1ha2UgdGhlIG5vZGUgYXMgbGVhZiBub2RlLgorCisgICAgKiBzY3Jp cHRfbG9hZCgpCisgICAgICAtIExvYWQgdGhlIG1vZHVsZSBzY3JpcHQgZm9y IGNhc3QsIHdoZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAg ICAgIGluaXRpYWxpemVkLgorICAgICIiIgorCisgICAgTk9ERV9UWVBFID0g J2Nhc3QnCisgICAgQ09MTEVDVElPTl9MQUJFTCA9ICdDYXN0cycKKworICAg IGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAg ICBzdXBlcihDYXN0TW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKipr d2FyZ3MpCisKKyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBk aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxl Y3Rpb24gbm9kZQorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAg ICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRp ZDogZGF0YWJhc2UgaWQKKyAgICAgICAgIiIiCisgICAgICAgIHlpZWxkIHNl bGYuZ2VuZXJhdGVfYnJvd3Nlcl9jb2xsZWN0aW9uX25vZGUoZGlkKQorCisg ICAgQHByb3BlcnR5CisgICAgZGVmIG5vZGVfaW5vZGUoc2VsZik6CisgICAg ICAgICIiIgorICAgICAgICBPdmVycmlkZSB0aGUgcHJvcGVydHkgdG8gbWFr ZSB0aGUgbm9kZSBhcyBsZWFmIG5vZGUKKyAgICAgICAgIiIiCisgICAgICAg IHJldHVybiBGYWxzZQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNjcmlw dF9sb2FkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgTG9hZCB0aGUg bW9kdWxlIHNjcmlwdCBmb3IgY2FzdCwgd2hlbiBhbnkgb2YgdGhlIGRhdGFi YXNlIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgICAgICIi IgorICAgICAgICByZXR1cm4gZGF0YWJhc2VzLkRhdGFiYXNlTW9kdWxlLk5P REVfVFlQRQorCisKK2JsdWVwcmludCA9IENhc3RNb2R1bGUoX19uYW1lX18p CisKKworY2xhc3MgQ2FzdFZpZXcoUEdDaGlsZE5vZGVWaWV3KToKKyAgICAi IiIKKyAgICBjbGFzcyBDYXN0VmlldyhQR0NoaWxkTm9kZVZpZXcpCisKKyAg ICAgICAgQSB2aWV3IGNsYXNzIGZvciBjYXN0IG5vZGUgZGVyaXZlZCBmcm9t IFBHQ2hpbGROb2RlVmlldy4gVGhpcyBjbGFzcyBpcworICAgICAgICByZXNw b25zaWJsZSBmb3IgYWxsIHRoZSBzdHVmZiByZWxhdGVkIHRvIHZpZXcgbGlr ZSBjcmVhdGUvdXBkYXRlL2RlbGV0ZSBjYXN0LAorICAgICAgICBzaG93aW5n IHByb3BlcnRpZXMgb2YgY2FzdCBub2RlLCBzaG93aW5nIHNxbCBpbiBzcWwg cGFuZS4KKworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogX19p bml0X18oKiprd2FyZ3MpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRvIGlu aXRpYWxpemUgdGhlIENhc3RWaWV3IGFuZCBpdCdzIGJhc2Ugdmlldy4KKwor ICAgICogbW9kdWxlX2pzKCkKKyAgICAgIC0gVGhpcyBwcm9wZXJ0eSBkZWZp bmVzIChpZiBqYXZhc2NyaXB0KSBleGlzdHMgZm9yIHRoaXMgbm9kZS4KKyAg ICAgICAgT3ZlcnJpZGUgdGhpcyBwcm9wZXJ0eSBmb3IgeW91ciBvd24gbG9n aWMKKworICAgICogY2hlY2tfcHJlY29uZGl0aW9uKCkKKyAgICAgIC0gVGhp cyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3 aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0aW9uIGJlZm9y ZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hlcworICAgICAg ICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8g c2VsZgorCisgICAgKiBsaXN0KCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIGxpc3QgYWxsIHRoZSBjYXN0IG5vZGVzIHdpdGhpbiB0aGF0 IGNvbGxlY3Rpb24uCisKKyAgICAqIG5vZGVzKCkKKyAgICAgIC0gVGhpcyBm dW5jdGlvbiB3aWxsIHVzZWQgdG8gY3JlYXRlIGFsbCB0aGUgY2hpbGQgbm9k ZSB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorICAgICAgICBIZXJlIGl0IHdp bGwgY3JlYXRlIGFsbCB0aGUgY2FzdCBub2Rlcy4KKworICAgICogcHJvcGVy dGllcyhnaWQsIHNpZCwgZGlkLCByZ19pZCkKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHNlbGVjdGVk IGNhc3Qgbm9kZQorCisgICAgKiBjcmVhdGUoZ2lkLCBzaWQsIGRpZCwgcmdf aWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBjcmVhdGUgdGhlIG5l dyBjYXN0IG9iamVjdAorCisgICAgKiB1cGRhdGUoZ2lkLCBzaWQsIGRpZCwg cmdfaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgdGhl IGRhdGEgZm9yIHRoZSBzZWxlY3RlZCBjYXN0IG5vZGUKKworICAgICogZGVs ZXRlKHNlbGYsIGdpZCwgc2lkLCByZ19pZCk6CisgICAgICAtIFRoaXMgZnVu Y3Rpb24gd2lsbCBkcm9wIHRoZSBjYXN0IG9iamVjdAorCisgICAgKiBtc3Fs KGdpZCwgc2lkLCBkaWQsIHJnX2lkKQorICAgICAgLSBUaGlzIGZ1bmN0aW9u IGlzIHVzZWQgdG8gcmV0dXJuIG1vZGlmaWVkIFNRTCBmb3IgdGhlIHNlbGVj dGVkIGNhc3Qgbm9kZQorCisgICAgKiBnZXRfc3FsKGRhdGEsIHJnX2lkKQor ICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIGZyb20g bW9kZWwgZGF0YQorCisgICAgKiBzcWwoZ2lkLCBzaWQsIGRpZCwgcmdfaWQp OgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZ2VuZXJhdGUgc3FsIHRv IHNob3cgaXQgaW4gc3FsIHBhbmUgZm9yIHRoZSBzZWxlY3RlZCBjYXN0IG5v ZGUuCisKKyAgICAqIGdldF90eXBlKCk6CisgICAgICAtIFRoaXMgZnVuY3Rp b24gd2lsbCBmZXRjaCBhbGwgdGhlIHR5cGVzIGZvciBzb3VyY2UgYW5kIHRh cmdldCB0eXBlcyBzZWxlY3QgY29udHJvbC4KKworICAgICogZ2V0X2Z1bmN0 aW9ucygpOgorICAgICAgLSBUaGlzIGZ1bmN0aW9uIHdpbGwgZmV0Y2ggYXNz b2NpYXRlZCBmdW5jdGlvbnMgbGlzdCBkZXBlbmRpbmcgb24gc2VsZWN0ZWQg c291cmNlCisgICAgICAgIGFuZCB0YXJnZXQgdHlwZXMgd2hpbGUgY3JlYXRp bmcgYSBuZXcgY2FzdCBub2RlLgorCisgICAgKiBkZXBlbmRlbnRzKGdpZCwg c2lkLCBkaWQsIGxpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZSBmb3IgdGhl IGNhc3Qgbm9kZS4KKworICAgICogZGVwZW5kZW5jaWVzKHNlbGYsIGdpZCwg c2lkLCBkaWQsIGxpZCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gZ2V0IHRo ZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlIGZvciB0 aGUgY2FzdCBub2RlLgorCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUgPSBi bHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWworICAg ICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAgICB7 J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5cGUn OiAnaW50JywgJ2lkJzogJ2RpZCd9CisgICAgXQorICAgIGlkcyA9IFsKKyAg ICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdjaWQnfQorICAgIF0KKwor ICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsKKyAg ICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzogJ2Rl bGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dldCc6 ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAgICAg ICAgJ2NoaWxkcmVuJzogW3sKKyAgICAgICAgICAgICdnZXQnOiAnY2hpbGRy ZW4nCisgICAgICAgIH1dLAorICAgICAgICAnZGVsZXRlJzogW3snZGVsZXRl JzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0JzogJ25v ZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBbeydn ZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdtc3Fs J30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7J2dl dCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6IFt7 J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRlbnQn OiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVsZS5q cyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAgICAg J2dldF90eXBlJzogW3snZ2V0JzogJ2dldF9zcmNfYW5kX3RyZ190eXBlJ30s IHsnZ2V0JzogJ2dldF9zcmNfYW5kX3RyZ190eXBlJ31dLAorICAgICAgICAn Z2V0X2Z1bmN0aW9ucyc6IFt7J3Bvc3QnOiAnZ2V0X2Z1bmN0aW9ucyd9LCB7 J3Bvc3QnOiAnZ2V0X2Z1bmN0aW9ucyd9XQorICAgIH0pCisKKyAgICBkZWYg X2luaXRfKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5jb25uID0g Tm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSBOb25lCisgICAg ICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3VwZXIoQ2FzdFZp ZXcsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisgICAgZGVmIG1vZHVs ZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgcHJvcGVy dHkgZGVmaW5lcyB3aGV0aGVyIGphdmFzY3JpcHQgZXhpc3RzIGZvciB0aGlz IG5vZGUuCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gbWFrZV9yZXNw b25zZSgKKyAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICAgICAiY2FzdC9qcy9jYXN0cy5qcyIsCisgICAgICAgICAgICAgICAg Xz1nZXR0ZXh0CisgICAgICAgICAgICApLAorICAgICAgICAgICAgMjAwLCB7 J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQnfQor ICAgICAgICApCisKKyAgICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2 ZSBhcyBhIGRlY29yYXRvciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBk YXRhYmFzZSBjb25uZWN0aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdp bGwgYWxzbyBhdHRhY2hlcworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1w bGF0ZV9wYXRoIHByb3BlcnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKwor ICAgICAgICBAd3JhcHMoZikKKyAgICAgICAgZGVmIHdyYXAoKmFyZ3MsICoq a3dhcmdzKToKKyAgICAgICAgICAgICMgSGVyZSBhcmdzWzBdIHdpbGwgaG9s ZCBzZWxmICYga3dhcmdzIHdpbGwgaG9sZCBnaWQsc2lkLGRpZAorICAgICAg ICAgICAgc2VsZiA9IGFyZ3NbMF0KKyAgICAgICAgICAgIHNlbGYubWFuYWdl ciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25f bWFuYWdlcihrd2FyZ3NbJ3NpZCddKQorICAgICAgICAgICAgc2VsZi5jb25u ID0gc2VsZi5tYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWt3YXJnc1snZGlkJ10p CisgICAgICAgICAgICAjIElmIERCIG5vdCBjb25uZWN0ZWQgdGhlbiByZXR1 cm4gZXJyb3IgdG8gYnJvd3NlcgorICAgICAgICAgICAgaWYgbm90IHNlbGYu Y29ubi5jb25uZWN0ZWQoKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJl Y29uZGl0aW9uX3JlcXVpcmVkKAorICAgICAgICAgICAgICAgICAgICBnZXR0 ZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvbm5lY3Rpb24gdG8g dGhlIHNlcnZlciBoYXMgYmVlbiBsb3N0ISIKKyAgICAgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHZlciA9IHNl bGYubWFuYWdlci52ZXJzaW9uCisgICAgICAgICAgICAjIHdlIHdpbGwgc2V0 IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCisgICAgICAgICAgICBp ZiB2ZXIgPj0gOTAxMDA6CisgICAgICAgICAgICAgICAgc2VsZi50ZW1wbGF0 ZV9wYXRoID0gJ2Nhc3Qvc3FsLzkuMV9wbHVzJworCisgICAgICAgICAgICBy ZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgcmV0dXJuIHdy YXAKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbGlzdChz ZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRo aXMgZnVuY3Rpb24gaXMgdXNlZCB0byBsaXN0IGFsbCB0aGUgY2FzdCBub2Rl cyB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgorICAgICAgICA6cGFyYW0gZ2lk OiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAg ICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnJldHVy bjoKKyAgICAgICAgIiIiCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0 ZSgKKyAgICAgICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgs ICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGRhdGxhc3RzeXNv aWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCdd CisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yZXMpCisKKyAgICAgICAgZm9yIHJvdyBpbiByZXNbJ3Jvd3MnXToK KyAgICAgICAgICAgIHJvd1snY2FzdGNvbnRleHQnXSA9IFRydWUgaWYgcm93 WydjYXN0Y29udGV4dCddID09ICdJTVBMSUNJVCcgZWxzZSBGYWxzZQorCisg ICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVz cG9uc2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICBzdGF0dXM9MjAwCisg ICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYg bm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRo ZSBjaGlsZCBub2RlIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisgICAgICAg IEhlcmUgaXQgd2lsbCBjcmVhdGUgYWxsIHRoZSBjYXN0IG5vZGVzLgorICAg ICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lk OiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQK KyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJlcyA9 IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAg ICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVz LnNxbCddKSwKKyAgICAgICAgICAgIGRhdGxhc3RzeXNvaWQ9c2VsZi5tYW5h Z2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5c29pZCddCisgICAgICAgICkK KyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVfMmRh cnJheShzcWwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp CisKKyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAg ICAgICByb3dbJ2Nhc3Rjb250ZXh0J10gPSBUcnVlIGlmIHJvd1snY2FzdGNv bnRleHQnXSA9PSAnSU1QTElDSVQnIGVsc2UgRmFsc2UKKyAgICAgICAgICAg IHJlcy5hcHBlbmQoCisgICAgICAgICAgICAgICAgc2VsZi5ibHVlcHJpbnQu Z2VuZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBy b3dbJ29pZCddLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAg ICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAgICAgICAg ICBpY29uPSJpY29uLWNhc3QiCisgICAgICAgICAgICAgICAgKSkKKworICAg ICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAg ZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGll cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIHByb3BlcnRpZXMg b2YgdGhlIHNlbGVjdGVkIGNhc3Qgbm9kZQorICAgICAgICA6cGFyYW0gZ2lk OiBncm91cCBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAg ICAgICAgOnBhcmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFt IGNpZDogY2FzdCBpZAorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIK KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3Fs J10pLAorICAgICAgICAgICAgY2lkPWNpZCwKKyAgICAgICAgICAgIGRhdGxh c3RzeXNvaWQ9c2VsZi5tYW5hZ2VyLmRiX2luZm9bZGlkXVsnZGF0bGFzdHN5 c29pZCddCisgICAgICAgICkKKyAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yZXMpCisgICAgICAgIHJlc3VsdCA9IHJlc1sncm93cydd WzBdCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAg ICAgICByZXNwb25zZT1yZXNbJ3Jvd3MnXVswXSwKKyAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlv bgorICAgIGRlZiBjcmVhdGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgY3JlYXRlcyBu ZXcgdGhlIGNhc3Qgb2JqZWN0CisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFi YXNlIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAg ICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6cmV0dXJuOgorICAg ICAgICAiIiIKKworICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAg ICAgICAgJ3NyY3R5cCcsCisgICAgICAgICAgICAndHJndHlwJworICAgICAg ICBdCisKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1ZXN0 LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkK KyAgICAgICAgZm9yIGFyZyBpbiByZXF1aXJlZF9hcmdzOgorICAgICAgICAg ICAgaWYgYXJnIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgICAgIHJldHVy biBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN0 YXR1cz00MTAsCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAg ICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgKKyAgICAgICAg ICAgICAgICAgICAgICAgICJDb3VsZG4ndCBmaW5kIHRoZSByZXF1aXJlZCBw YXJhbWV0ZXIgKCVzKS4iICUgYXJnCisgICAgICAgICAgICAgICAgICAgICkK KyAgICAgICAgICAgICAgICApCisgICAgICAgIHRyeToKKyAgICAgICAgICAg IHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29ubj1zZWxmLmNvbm4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgIyB3ZSBuZWVkIG9pZCB0byB0byBhZGQgb2JqZWN0IGluIHRyZWUgYXQg YnJvd3NlciwgYmVsb3cgc3FsIHdpbGwgZ2l2ZXMgdGhlIHNhbWUKKyAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3JjdHlwPWRhdGFbJ3NyY3R5cCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZ3R5cD1k YXRhWyd0cmd0eXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1b J2RhdGxhc3RzeXNvaWQnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICkKKyAgICAgICAgICAgIHN0YXR1cywgY2lkID0gc2VsZi5jb25u LmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1jaWQpCisKKyAgICAgICAgICAgIHJldHVybiBqc29u aWZ5KAorICAgICAgICAgICAgICAgIG5vZGU9c2VsZi5ibHVlcHJpbnQuZ2Vu ZXJhdGVfYnJvd3Nlcl9ub2RlKAorICAgICAgICAgICAgICAgICAgICBjaWQs CisgICAgICAgICAgICAgICAgICAgIGRpZCwKKyAgICAgICAgICAgICAgICAg ICAgZGF0YVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICBpY29uPSJp Y29uLWNhc3QiCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgdXBkYXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIGNpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIGNhc3Qgb2JqZWN0CisgICAg ICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgOnBhcmFtIGRpZDog ZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisg ICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpyZXR1cm46 CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3JtIGlm IHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRhLmRl Y29kZSgpKQorICAgICAgICBzcWwgPSBzZWxmLmdldF9zcWwoZ2lkLCBzaWQs IGRpZCwgZGF0YSwgY2lkKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBp ZiBzcWwgYW5kIHNxbC5zdHJpcCgnXG4nKSBhbmQgc3FsLnN0cmlwKCcgJyk6 CisgICAgICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhl Y3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0 dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg c3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJDYXN0IHVw ZGF0ZWQiLAorICAgICAgICAgICAgICAgICAgICBkYXRhPXsKKyAgICAgICAg ICAgICAgICAgICAgICAgICdpZCc6IGNpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICdzaWQnOiBzaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAn Z2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2RpZCc6IGRp ZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKQor ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTEsCisgICAgICAgICAgICAgICAgICAgIGluZm89Ik5vdGhpbmcgdG8gdXBk YXRlIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17CisgICAgICAgICAg ICAgICAgICAgICAgICAnaWQnOiBjaWQsCisgICAgICAgICAgICAgICAgICAg ICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgJ2dp ZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdkaWQnOiBkaWQK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZGVsZXRlKHNl bGYsIGdpZCwgc2lkLCBkaWQsIGNpZCk6CisgICAgICAgICIiIgorICAgICAg ICBUaGlzIGZ1bmN0aW9uIHdpbGwgZHJvcCB0aGUgY2FzdCBvYmplY3QKKyAg ICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAgICAgICA6cGFyYW0gZGlk OiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnJldHVy bjoKKyAgICAgICAgIiIiCisgICAgICAgICMgQmVsb3cgd2lsbCBkZWNpZGUg aWYgaXQncyBzaW1wbGUgZHJvcCBvciBkcm9wIHdpdGggY2FzY2FkZSBjYWxs CisgICAgICAgIGlmIHNlbGYuY21kID09ICdkZWxldGUnOgorICAgICAgICAg ICAgIyBUaGlzIGlzIGEgY2FzY2FkZSBvcGVyYXRpb24KKyAgICAgICAgICAg IGNhc2NhZGUgPSBUcnVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBj YXNjYWRlID0gRmFsc2UKKworICAgICAgICB0cnk6CisgICAgICAgICAgICAj IEdldCBuYW1lIGZvciBjYXN0IGZyb20gY2lkCisgICAgICAgICAgICBzcWwg PSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0 aCwgJ2RlbGV0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY2lkPWNpZCkKKyAgICAgICAgICAgIHN0YXR1cywgcmVzID0g c2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgICAgICAjIGRy b3AgY2FzdAorICAgICAgICAgICAgcmVzdWx0ID0gcmVzWydyb3dzJ11bMF0K KyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihb c2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCddKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjYXN0c291cmNlPXJlc3VsdFsn Y2FzdHNvdXJjZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNhc3R0YXJnZXQ9cmVzdWx0WydjYXN0dGFyZ2V0J10sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzY2FkZT1jYXNjYWRlCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAg ICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3Fs KQorICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgICAgICAgICBzdWNjZXNzPTEsCisgICAgICAgICAgICAgICAgaW5m bz1nZXR0ZXh0KCJDYXN0IGRyb3BwZWQiKSwKKyAgICAgICAgICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICAgICAgICAgJ2lkJzogY2lkLAorICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAnZ2lkJzogZ2lkLAorICAgICAgICAgICAgICAgICAgICAnZGlkJzogZGlk CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBtc3FsKHNlbGYsIGdpZCwg c2lkLCBkaWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisgICAgICAgICBU aGlzIGZ1bmN0aW9uIHJldHVybnMgbW9kaWZpZWQgU1FMCisgICAgICAgICA6 cGFyYW0gY2lkOiBjYXN0IGlkCisgICAgICAgICA6cGFyYW0gZGlkOiBkYXRh YmFzZSBpZAorICAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAg ICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICAgOnJldHVybjoK KyAgICAgICAgIiIiCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmFyZ3MKKyAg ICAgICAgc3FsID0gc2VsZi5nZXRfc3FsKGdpZCwgc2lkLCBkaWQsIGRhdGEs IGNpZCkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzcWwsIHN0cikgYW5kIHNx bCBhbmQgc3FsLnN0cmlwKCdcbicpIGFuZCBzcWwuc3RyaXAoJyAnKToKKyAg ICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1zcWwsCisgICAgICAgICAgICAgICAgc3RhdHVzPTIw MAorICAgICAgICAgICAgKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg cmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBk YXRhPSItLW1vZGlmaWVkIFNRTCIsCisgICAgICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9zcWwoc2VsZiwg Z2lkLCBzaWQsIGRpZCwgZGF0YSwgY2lkPU5vbmUpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBzcWwgZm9yIG1v ZGVsIGRhdGEKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAg ICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6 IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAg ICAgICAgOnBhcmFtIGRhdGE6IG1vZGVsIGRhdGEKKyAgICAgICAgOnJldHVy bjoKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlm IGNpZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzcWwgPSByZW5k ZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ3By b3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjaWQ9Y2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9p bmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXSkKKyAgICAgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorCisg ICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1y ZXMpCisKKyAgICAgICAgICAgICAgICBvbGRfZGF0YSA9IHJlc1sncm93cydd WzBdCisgICAgICAgICAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAor ICAgICAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9w YXRoLCAndXBkYXRlLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAgZGF0 YT1kYXRhLCBvX2RhdGE9b2xkX2RhdGEKKyAgICAgICAgICAgICAgICApCisg ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmICdzcmN0eXAn IGluIGRhdGEgYW5kICd0cmd0eXAnIGluIGRhdGE6CisgICAgICAgICAgICAg ICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50 ZW1wbGF0ZV9wYXRoLCAnY3JlYXRlLnNxbCddKSwgZGF0YT1kYXRhLCBjb25u PXNlbGYuY29ubikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg ICAgICAgICAgICBzcWwgPSAiLS0gaW5jb21wbGV0ZSBkZWZpbml0aW9uIgor ICAgICAgICAgICAgcmV0dXJuIHN0cihzcWwpCisKKyAgICAgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFs X3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tf cHJlY29uZGl0aW9uCisgICAgZGVmIGdldF9mdW5jdGlvbnMoc2VsZiwgZ2lk LCBzaWQsIGRpZCwgY2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAgICAgICAg VGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBmdW5jdGlvbnMgbGlzdCBhc3Nv Y2lhdGVkIHRvIGEgY2FzdAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBp ZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBh cmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIGNpZDogY2Fz dCBpZAorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAg cmVzID0gW10KKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZm9ybSBpZiByZXF1 ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUo KSkKKyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtz ZWxmLnRlbXBsYXRlX3BhdGgsICdmdW5jdGlvbnMuc3FsJ10pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3JjdHlwPWRhdGFbJ3NyY3R5cCdd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJndHlwPWRhdGFb J3RyZ3R5cCddKQorICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4u ZXhlY3V0ZV9kaWN0KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1yc2V0KQorICAgICAgICByZXMuYXBwZW5kKHsnbGFiZWwnOiAnJywK KyAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogJyd9KQorCisgICAgICAg IGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAgICAgICAgICAgcmVzLmFw cGVuZCh7J2xhYmVsJzogcm93Wydwcm9uYW1lJ10sCisgICAgICAgICAgICAg ICAgICAgICAgICAndmFsdWUnOiByb3dbJ3Byb25hbWUnXX0pCisgICAgICAg IHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICBkYXRh PXJlcywKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgKQorCisg ICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfc3JjX2FuZF90 cmdfdHlwZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQ9Tm9uZSk6CisgICAg ICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHR5 cGUgbGlzdAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAg ICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQKKyAgICAgICAgOnBhcmFtIGRpZDog ZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAg ICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgcmVzID0gW10K KyAgICAgICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg Ii8iLmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2dldHNyY2FuZHRyZ3R0 eXBlLnNxbCddKSwKKyAgICAgICAgICAgIGNpZD1jaWQKKyAgICAgICAgKQor ICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0 KHNxbCkKKworICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yc2V0KQor CisgICAgICAgIHJlcyA9IFt7J2xhYmVsJzogJycsICd2YWx1ZSc6ICcnfV0K KyAgICAgICAgZm9yIHJvdyBpbiByc2V0Wydyb3dzJ106CisgICAgICAgICAg ICByZXMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnbGFiZWwnOiByb3db J3R5cG5hbWUnXSwKKyAgICAgICAgICAgICAgICAndmFsdWUnOiByb3dbJ3R5 cG5hbWUnXQorICAgICAgICAgICAgfSkKKworICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgZGF0YT1yZXMsCisgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgc3FsKHNlbGYsIGdpZCwgc2lkLCBkaWQs IGNpZCk6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdp bGwgZ2VuZXJhdGUgc3FsIGZvciBzcWwgcGFuZWwKKyAgICAgICAgOnBhcmFt IGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlk CisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpw YXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAg IiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90 ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1w bGF0ZV9wYXRoLCAnc3FsLnNxbCddKSwKKyAgICAgICAgICAgICAgICBjaWQ9 Y2lkLAorICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uCisgICAgICAg ICAgICApCisgICAgICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5l eGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVz OgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoCisgICAgICAgICAgICAgICAgICAgIF8oIkVSUk9SOiBDb3VsZG4ndCBn ZW5lcmF0ZSByZXZlcnNlZCBlbmdpbmVlcmVkIFF1ZXJ5IGZvciB0aGUgY2Fz dCFcbnswfSIpLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl cworICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgIGlmIHJlcyBpcyBOb25lOgorICAgICAg ICAgICAgICAgIHJldHVybiBnb25lKAorICAgICAgICAgICAgICAgICAgICBf KCJFUlJPUjogQ291bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJl ZCBRdWVyeSBmb3IgdGhlIGNhc3Qgbm9kZSEiKQorICAgICAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHJl c3BvbnNlPXJlcykKKworICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVy cm9ybXNnPXN0cihlKSkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAg ICBkZWYgZGVwZW5kZW50cyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRl cGVuZGVudHMgYW5kIHJldHVybiBhamF4IHJlc3BvbnNlCisgICAgICAgIGZv ciB0aGUgY2FzdCBub2RlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAg ICBnaWQ6IFNlcnZlciBHcm91cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2 ZXIgSUQKKyAgICAgICAgICAgIGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAg ICAgIGNpZDogQ2FzdCBJRAorICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5k ZW50c19yZXN1bHQgPSBzZWxmLmdldF9kZXBlbmRlbnRzKHNlbGYuY29ubiwg Y2lkKQorICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAg ICAgICAgICByZXNwb25zZT1kZXBlbmRlbnRzX3Jlc3VsdCwKKyAgICAgICAg ICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBkZXBlbmRlbmNpZXMoc2Vs ZiwgZ2lkLCBzaWQsIGRpZCwgY2lkKToKKyAgICAgICAgIiIiCisgICAgICAg IFRoaXMgZnVuY3Rpb24gZ2V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIHJldHVy biBhamF4IHJlc3BvbnNlCisgICAgICAgIGZvciB0aGUgY2FzdCBub2RlLgor CisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICBnaWQ6IFNlcnZlciBHcm91 cCBJRAorICAgICAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKyAgICAgICAgICAg IGRpZDogRGF0YWJhc2UgSUQKKyAgICAgICAgICAgIGNpZDogQ2FzdCBJRAor ICAgICAgICAiIiIKKyAgICAgICAgZGVwZW5kZW5jaWVzX3Jlc3VsdCA9IHNl bGYuZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4sIGNpZCkKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9u c2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwKKyAgICAgICAgICAgICAgICBzdGF0 dXM9MjAwCisgICAgICAgICAgICAgICAgKQorCitDYXN0Vmlldy5yZWdpc3Rl cl9ub2RlX3ZpZXcoYmx1ZXByaW50KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nh c3RzL3N0YXRpYy9pbWcvY2FzdC5wbmcgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvc3RhdGlj L2ltZy9jYXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYmU3ZjM3 NDJhNzYwZmFhNzcwOTA1MjY2OWY0NDRiYTg5NDljMzMwCkdJVCBiaW5hcnkg cGF0Y2gKbGl0ZXJhbCA0MjYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4w d0IhNjM/d3lsYEdiS31hKTN7V0UwQTg9WExJWX5gYmhzPmJFalhzCnpkdGMo PCMpX1Z7XkdsY2hLZWV+Iy1VR1E2RUJAYnFzSWhMe3xBJnVfSCpmeWA8Zjs5 eFVIX2p3X2M/Zyp8QklKVgp6Q3I8by17V3t+cWg1djhnbVJgSHx8TlotPmQt d2kte01oXldAJkNgQ3JvRExhZjZ3O0UoUXsoc2Z6fmpWMW87SXMKekk2UytO MklPIVNjdGpRaFglOEBWSkRGXzxXWWxAT0lFRn1FJk9MdXlzTDRRcGBORlpR eXdqREdJeWBwJV8jZEJuCnpRMChgRU83Q1VIWFFlKk5gPyk9dF5RN0Q4dzh9 OVYqTSZPWG1ZY1NRTVRUeFhhNWVaXnNZYnpWam9IdGxBTTZYPgp6dylWdDc7 WFVodT9hQ2c4LXEpVCNkanNwPzF2UW4wKCNIWnsmYXZLPkc7N018S2V6aSox Snw5QHdNQEE4R0l1NWEKejdrQFN2S0ElbExmaTYpa2FnOFdSTmkwZFZOLWp6 VFFWZDIwaDZjS1pNIUUpdUF3fnZQQ2RPN0tDZld3M1J0NSRaCnNHZ2FrS0gw MCl8V1RzVUBHI0ZUZEhHb3VHOEpJeWRvU0dpRzJCPzktKTc4JnFvbGA7KzA2 ekAzaHlWWnAKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy9zdGF0aWMvaW1nL2NvbGwtY2FzdC5wbmcgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvY2FzdHMvc3RhdGljL2ltZy9jb2xsLWNhc3QucG5nCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLjA5ZWI2NWFmMDJjNjZiZDY0YWIzNDA1YzU5MmVmZTRk OTBkNDFjOTgKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDQwMgp6Y21lQVNA Tj8ob2xIeWB1VkJxIWlhMHZwXjB3QiE2Mz93eWxgR2JLfVJEZSYyRTA4fDV3 YFhhZU88bHE0TmRIfVAKenIoZTUhVSFwIypkZzs+dF9afSF0WjRBcCNvY2kj UXs9U1hvUG9DUUUtKDxVTCkmR3FmfExAeE18TEZGRj1Qdj5lCnpBTzhSMGVj UCo3RFFEMEF8TVkzeytxYjNIdUttQSV8TnBhUnwxWmhSajBjKnxTUTZ3SCU7 NTBzTWpEWEFTPk8+Xwp6NDVVNTQqeklKdDlndmFsPkVhazdhaz0jVFpONnAm MGhTQT95R3AmNVg2USVoZSowZV5Ub1paV05Uc3IrYil0KWwKemo5JTRMcTRx Wk93ZkZEY3pje09xPDYpcm1rc0VKJm5FaU9Gd0B5M0RWeipaTz04K1RBWj1K UUMmQ2g9SWxKJXEwCnpuI2ElZCRPbjV9ZVEhX3tgTzA8MVBrV3NeYGcpTyEh SkFtLXV7O1hnNHp5YWUjNUpOTUM5eCNjRCFDe1hOSEd7MAp6NyNpcHI4dEVE c2g4UClHbkhYRHttfW5jQVN7V0V2JXY2O18oVTY7O2w5XlRzKE9fVCspJk5w JVduYyE7YUI2eiEKUThsVk9TUGdnJmVieHNMUTA5WGZ+ZmRCdmkKCmxpdGVy YWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90 ZW1wbGF0ZXMvY2FzdC9qcy9jYXN0cy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1w bGF0ZXMvY2FzdC9qcy9jYXN0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi41MzI5MzZiCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L2pzL2Nhc3RzLmpzCkBAIC0wLDAg KzEsMzAyIEBACitkZWZpbmUoCisgICAgICAgIFsnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdwZ2Fk bWluLmJyb3dzZXInLCAnYWxlcnRpZnknLCAncGdhZG1pbi5icm93c2VyLmNv bGxlY3Rpb24nXSwKK2Z1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJv d3NlciwgYWxlcnRpZnkpIHsKKworICAgIC8vIEV4dGVuZCB0aGUgY29sbGVj dGlvbiBjbGFzcyBmb3IgY2FzdAorICAgIGlmICghcGdCcm93c2VyLk5vZGVz Wydjb2xsLWNhc3QnXSkgeworICAgICAgdmFyIGNhc3RzID0gcGdBZG1pbi5C cm93c2VyLk5vZGVzWydjb2xsLWNhc3QnXSA9CisgICAgICAgIHBnQWRtaW4u QnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgICAgbm9kZTog J2Nhc3QnLAorICAgICAgICAgIGxhYmVsOiAne3sgXygnQ2FzdHMnKSB9fScs CisgICAgICAgICAgdHlwZTogJ2NvbGwtY2FzdCcsCisgICAgICAgICAgY29s dW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10KKyAgICAgICAgfSk7Cisg ICAgfTsKKworICAgIC8vIEV4dGVuZCB0aGUgbm9kZSBjbGFzcyBmb3IgY2Fz dAorICAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjYXN0J10pIHsKKyAgICAg IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY2FzdCddID0gcGdBZG1pbi5Ccm93 c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICAgICAgcGFyZW50X3R5cGU6ICdkYXRh YmFzZScsCisgICAgICAgIHR5cGU6ICdjYXN0JywKKyAgICAgICAgY2FuRHJv cDogdHJ1ZSwKKyAgICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCisgICAg ICAgIGxhYmVsOiAne3sgXygnQ2FzdCcpIH19JywKKyAgICAgICAgaGFzU1FM OiB0cnVlLAorICAgICAgICBoYXNEZXBlbmRzOiB0cnVlLAorICAgICAgICBJ bml0OiBmdW5jdGlvbigpIHsKKworICAgICAgICAgIC8vIEF2b2lkIG11bHRp cGxlIHJlZ2lzdHJhdGlvbiBvZiBtZW51cworICAgICAgICAgIGlmICh0aGlz LmluaXRpYWxpemVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg ICAgdGhpcy5pbml0aWFsaXplZCA9IHRydWU7CisKKyAgICAgICAgICAvLyBB ZGQgY29udGV4dCBtZW51cyBmb3IgY2FzdAorICAgICAgICAgIHBnQnJvd3Nl ci5hZGRfbWVudXMoW3sKKyAgICAgICAgICAgIG5hbWU6ICdjcmVhdGVfY2Fz dF9vbl9kYXRhYmFzZScsIG5vZGU6ICdkYXRhYmFzZScsIG1vZHVsZTogdGhp cywKKyAgICAgICAgICAgIGFwcGxpZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQn XSwgY2FsbGJhY2s6ICdzaG93X29ial9wcm9wZXJ0aWVzJywKKyAgICAgICAg ICAgIGNhdGVnb3J5OiAnY3JlYXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAn e3sgXygnQ2FzdC4uLicpIH19JywKKyAgICAgICAgICAgIGljb246ICd3Y1Rh Ykljb24gaWNvbi1jYXN0JywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9Cisg ICAgICAgICAgfSx7CisgICAgICAgICAgICBuYW1lOiAnY3JlYXRlX2Nhc3Rf b25fY29sbCcsIG5vZGU6ICdjb2xsLWNhc3QnLCBtb2R1bGU6IHRoaXMsCisg ICAgICAgICAgICBhcHBsaWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNh bGxiYWNrOiAnc2hvd19vYmpfcHJvcGVydGllcycsCisgICAgICAgICAgICBj YXRlZ29yeTogJ2NyZWF0ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8o J0Nhc3QuLi4nKSB9fScsCisgICAgICAgICAgICBpY29uOiAnd2NUYWJJY29u IGljb24tY2FzdCcsIGRhdGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAg ICAgIH0seworICAgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9jYXN0Jywgbm9k ZTogJ2Nhc3QnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgICBhcHBsaWVz OiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19vYmpf cHJvcGVydGllcycsCisgICAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScs IHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0Nhc3QuLi4nKSB9fScsCisg ICAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tY2FzdCcsIGRhdGE6 IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICAgIH1dKTsKKworICAgICAg ICB9LAorCisgICAgICAgIC8vIERlZmluaW5nIGJhY2tmb3JtIG1vZGVsIGZv ciBjYXN0IG5vZGUKKyAgICAgICAgbW9kZWw6IHBnQWRtaW4uQnJvd3Nlci5O b2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgICAgZGVmYXVsdHM6IHsKKyAg ICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwgICAgICAgICAgICAvLyBOYW1l IG9mIHRoZSBjYXN0CisgICAgICAgICAgICBlbmNvZGluZzogJ1VURjgnLAor ICAgICAgICAgICAgc3JjdHlwOiB1bmRlZmluZWQsICAgICAgICAgIC8vIFNv dXJjZSB0eXBlCisgICAgICAgICAgICB0cmd0eXA6IHVuZGVmaW5lZCwgICAg ICAgICAgLy8gVGFyZ2V0IHR5cGUKKyAgICAgICAgICAgIHByb25hbWU6IHVu ZGVmaW5lZCwgICAgICAgICAvLyBGdW5jdGlvbgorICAgICAgICAgICAgY2Fz dGNvbnRleHQ6IHVuZGVmaW5lZCwgICAgIC8vIENvbnRleHQgKElNUExJQ0lU L0VYUExJQ0lUL0FTU0lHTk1FTlQpCisgICAgICAgICAgICBzeXNjYXN0OiB1 bmRlZmluZWQsICAgICAgICAgLy8gSXMgdGhpcyBjYXN0IGlzIHN5c3RlbSBv YmplY3Q/IFllcy9ObworICAgICAgICAgICAgZGVzY3JpcHRpb246IHVuZGVm aW5lZCAgICAgIC8vIENvbW1lbnQgb24gdGhlIGNhc3QKKyAgICAgICAgICB9 LAorCisgICAgICAgICAgLy8gRGVmaW5pbmcgc2NoZW1hIGZvciBjYXN0Cisg ICAgICAgICAgc2NoZW1hOiBbeworICAgICAgICAgICAgaWQ6ICduYW1lJywg bGFiZWw6ICd7eyBfKCdOYW1lJykgfX0nLCBjZWxsOiAnc3RyaW5nJywgZ3Jv dXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAgICAgICAgZWRp dGFibGU6IGZhbHNlLCB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiB0cnVlLCBj ZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAg ICAgfSx7CisgICAgICAgICAgICBpZDogJ29pZCcsIGxhYmVsOid7eyBfKCdP aWQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmlu aXRpb24nKSB9fScsCisgICAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5 cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IHRydWUKKyAgICAgICAgICB9LHsKKyAg ICAgICAgICAgIGlkOiAnc3JjdHlwJywgbGFiZWw6J3t7IF8oJ1NvdXJjZSB0 eXBlJykgfX0nLCB1cmw6ICdnZXRfdHlwZScsCisgICAgICAgICAgICB0eXBl OiAndGV4dCcsIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRpc2FibGVkOiBmdW5j dGlvbihtKSB7CisgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKQorICAg ICAgICAgICAgfSwgbW9kZTogWydjcmVhdGUnXSwKKworICAgICAgICAgICAg dHJhbnNmb3JtOiBmdW5jdGlvbihyb3dzKSB7CisgICAgICAgICAgICAgIF8u ZWFjaChyb3dzLCBmdW5jdGlvbihyKSB7CisgICAgICAgICAgICAgICAgclsn aW1hZ2UnXSA9ICdpY29uLWNhc3QnOworICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgcmV0dXJuIHJvd3M7CisgICAgICAgICAgICB9LAorCisg ICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ29udHJvbCBpcyBleHRl bmRlZCB0byBjcmVhdGUgY2FzdCBuYW1lIGZyb20gc291cmNlIHR5cGUgYW5k IGRlc3RpbmF0aW9uIHR5cGUKKyAgICAgICAgICAgICAqIG9uY2UgdGhlaXIg dmFsdWVzIGFyZSBjaGFuZ2VkCisgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9s LmV4dGVuZCh7CisKKyAgICAgICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgICAgQmFja2Zvcm0uTm9kZUFqYXhPcHRp b25zQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2UuYXBwbHkoCisgICAgICAg ICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50cworICAgICAgICAgICAgICAg ICAgICApOworCisgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg ICAgICAqIE9uIHNvdXJjZSB0eXBlIGNoYW5nZSwgY2hlY2sgaWYgYm90aCBz b3VyY2UgdHlwZSBhbmQKKyAgICAgICAgICAgICAgICAgICogdGFyZ2V0IHR5 cGUgYXJlIHNldCwgaWYgeWVzIHRoZW4gZmV0Y2ggdmFsdWVzIGZyb20gYm90 aAorICAgICAgICAgICAgICAgICAgKiBjb250cm9scyBhbmQgZ2VuZXJhdGUg Y2FzdCBuYW1lCisgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAg ICAgICB2YXIgc3JjdHlwZSA9IHRoaXMubW9kZWwuZ2V0KCdzcmN0eXAnKTsK KyAgICAgICAgICAgICAgICAgdmFyIHRyZ3R5cGUgPSB0aGlzLm1vZGVsLmdl dCgndHJndHlwJyk7CisgICAgICAgICAgICAgICAgIGlmKHNyY3R5cGUgIT0g dW5kZWZpbmVkICYmIHNyY3R5cGUgIT0gJycgJiYKKyAgICAgICAgICAgICAg ICAgICAgdHJndHlwZSAhPSB1bmRlZmluZWQgJiYgdHJndHlwZSAhPSAnJykK KyAgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldCgibmFtZSIsIHNy Y3R5cGUrIi0+Iit0cmd0eXBlKTsKKyAgICAgICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwudW5zZXQoIm5hbWUiKTsK KyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pCisgICAgICAgICAg fSwKKworICAgICAgICAgIC8qCisgICAgICAgICAgICogVGV4dCBjb250cm9s IGZvciB2aWV3aW5nIHNvdXJjZSB0eXBlIGluIHByb3BlcnRpZXMgYW5kCisg ICAgICAgICAgICogZWRpdCBtb2RlIG9ubHkKKyAgICAgICAgICAgKi8KKyAg ICAgICAgICB7CisgICAgICAgICAgICBpZDogJ3NyY3R5cCcsIGxhYmVsOid7 eyBfKCdTb3VyY2UgdHlwZScpIH19JywgdHlwZTogJ3RleHQnLAorICAgICAg ICAgICAgZ3JvdXA6ICdEZWZpbml0aW9uJywgZGlzYWJsZWQ6IHRydWUsIG1v ZGU6Wydwcm9wZXJ0aWVzJywnZWRpdCddCisgICAgICAgICAgfSx7CisgICAg ICAgICAgICBpZDogJ3RyZ3R5cCcsIGxhYmVsOid7eyBfKCdUYXJnZXQgdHlw ZScpIH19JywgdXJsOiAnZ2V0X3R5cGUnLAorICAgICAgICAgICAgdHlwZTog J3RleHQnLCBncm91cDogJ0RlZmluaXRpb24nLCBkaXNhYmxlZDogZnVuY3Rp b24obSkgeworICAgICAgICAgICAgICByZXR1cm4gIW0uaXNOZXcoKQorICAg ICAgICAgICAgICB9LCBtb2RlOiBbJ2NyZWF0ZSddLAorICAgICAgICAgICAg dHJhbnNmb3JtOiBmdW5jdGlvbihyb3dzKSB7CisgICAgICAgICAgICAgIF8u ZWFjaChyb3dzLCBmdW5jdGlvbihyKSB7CisgICAgICAgICAgICAgICAgclsn aW1hZ2UnXSA9ICdpY29uLWNhc3QnOworICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgcmV0dXJuIHJvd3M7CisgICAgICAgICAgICB9LAorCisg ICAgICAgICAgICAvKgorICAgICAgICAgICAgICogQ29udHJvbCBpcyBleHRl bmRlZCB0byBjcmVhdGUgY2FzdCBuYW1lIGZyb20gc291cmNlIHR5cGUgYW5k IGRlc3RpbmF0aW9uIHR5cGUKKyAgICAgICAgICAgICAqIG9uY2UgdGhlaXIg dmFsdWVzIGFyZSBjaGFuZ2VkCisgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICBjb250cm9sOiBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnNDb250cm9s LmV4dGVuZCh7CisKKyAgICAgICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICBCYWNrZm9ybS5Ob2RlQWpheE9wdGlvbnND b250cm9sLnByb3RvdHlwZS5vbkNoYW5nZS5hcHBseSgKKyAgICAgICAgICAg ICAgICAgdGhpcywgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICk7CisK KyAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICogb24g dGFyZ2V0IHR5cGUgY2hhbmdlLCBjaGVjayBpZiBib3RoIHNvdXJjZSB0eXBl IGFuZAorICAgICAgICAgICAgICAgICAgKiB0YXJnZXQgdHlwZSBhcmUgc2V0 LCBpZiB5ZXMgdGhlbiBmZXRjaCB2YWx1ZXMgZnJvbSBib3RoCisgICAgICAg ICAgICAgICAgICAqIGNvbnRyb2xzIGFuZCBnZW5lcmF0ZSBjYXN0IG5hbWUK KyAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICB2YXIgc3Jj VHlwZSA9IHRoaXMubW9kZWwuZ2V0KCdzcmN0eXAnKTsKKyAgICAgICAgICAg ICAgIHZhciB0cmd0eXBlID0gdGhpcy5tb2RlbC5nZXQoJ3RyZ3R5cCcpOwor ICAgICAgICAgICAgICAgaWYoc3JjVHlwZSAhPSB1bmRlZmluZWQgJiYgc3Jj VHlwZSAhPSAnJyAmJgorICAgICAgICAgICAgICAgICAgdHJndHlwZSAhPSB1 bmRlZmluZWQgJiYgdHJndHlwZSAhPSAnJykKKyAgICAgICAgICAgICAgICAg dGhpcy5tb2RlbC5zZXQoIm5hbWUiLCBzcmNUeXBlKyItPiIrdHJndHlwZSk7 CisgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHRoaXMu bW9kZWwudW5zZXQoIm5hbWUiKTsKKyAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgfSkKKyAgICAgICAgICB9LAorICAgICAgICAgIC8qCisgICAgICAg ICAgICogVGV4dCBjb250cm9sIGZvciB2aWV3aW5nIHRhcmdldCB0eXBlIGlu IHByb3BlcnRpZXMgYW5kCisgICAgICAgICAgICogZWRpdCBtb2RlIG9ubHkK KyAgICAgICAgICAgKi8KKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDog J3RyZ3R5cCcsIGxhYmVsOid7eyBfKCdUYXJnZXQgdHlwZScpIH19JywgdHlw ZTogJ3RleHQnLAorICAgICAgICAgICAgZ3JvdXA6ICdEZWZpbml0aW9uJywg ZGlzYWJsZWQ6IHRydWUsIG1vZGU6Wydwcm9wZXJ0aWVzJywnZWRpdCddCisg ICAgICAgICAgfSwKKworICAgICAgICAgIC8qCisgICAgICAgICAgICogUHJv bmFtZSBmaWVsZCBpcyBkZXBlbmRlbnQgb24gc291cmNlIHR5cGUgYW5kIHRh cmdldCB0eXBlLgorICAgICAgICAgICAqIE9uIHNvdXJjZSBhbmQgdGFyZ2V0 IHR5cGUgY2hhbmdlZCBldmVudCwKKyAgICAgICAgICAgKiBhc3NvY2lhdGVk IGZ1bmN0aW9ucyB3aWxsIGJlIGZldGNoIHVzaW5nIGFqYXggY2FsbAorICAg ICAgICAgICAqLworICAgICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAncHJv bmFtZScsIGxhYmVsOid7eyBfKCdGdW5jdGlvbicpIH19JywgZGVwczpbJ3Ny Y3R5cCcsICd0cmd0eXAnXSwKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0Jywg ZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsgcmV0dXJuICFtLmlzTmV3KCk7IH0s CisgICAgICAgICAgICBncm91cDogJ0RlZmluaXRpb24nLCBtb2RlOiBbJ2Ny ZWF0ZSddLAorICAgICAgICAgICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRp b25zJywKKyAgICAgICAgICAgIG9wdGlvbnM6IGZ1bmN0aW9uKCkgeworCisg ICAgICAgICAgICAgIHZhciBzcmNUeXAgPSB0aGlzLm1vZGVsLmdldCgnc3Jj dHlwJyk7CisgICAgICAgICAgICAgIHZhciB0cmd0eXAgPSB0aGlzLm1vZGVs LmdldCgndHJndHlwJyk7CisgICAgICAgICAgICAgIHZhciByZXMgPSBbXTsK KworICAgICAgICAgICAgICBpZihzcmNUeXAgIT0gdW5kZWZpbmVkICYmIHNy Y1R5cCAhPSAnJyAmJgorICAgICAgICAgICAgICAgICB0cmd0eXAgIT0gdW5k ZWZpbmVkICYmIHRyZ3R5cCAhPSAnJykKKyAgICAgICAgICAgICAgeworICAg ICAgICAgICAgICAgICB2YXIgbm9kZSA9IHRoaXMuZmllbGQuZ2V0KCdzY2hl bWFfbm9kZScpLAorICAgICAgICAgICAgICAgICBfdXJsID0gbm9kZS5nZW5l cmF0ZV91cmwuYXBwbHkoCisgICAgICAgICAgICAgICAgIG5vZGUsIFsKKyAg ICAgICAgICAgICAgICAgICBudWxsLCAnZ2V0X2Z1bmN0aW9ucycsIHRoaXMu ZmllbGQuZ2V0KCdub2RlX2RhdGEnKSwgZmFsc2UsCisgICAgICAgICAgICAg ICAgICAgdGhpcy5maWVsZC5nZXQoJ25vZGVfaW5mbycpCisgICAgICAgICAg ICAgICAgIF0pOworICAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAg ICAgICAgICAgICB0eXBlOiAnUE9TVCcsCisgICAgICAgICAgICAgICAgIHRp bWVvdXQ6IDMwMDAwLAorICAgICAgICAgICAgICAgICB1cmw6IF91cmwsCisg ICAgICAgICAgICAgICAgIGNhY2hlOiBmYWxzZSwKKyAgICAgICAgICAgICAg ICAgYXN5bmM6IGZhbHNlLAorICAgICAgICAgICAgICAgICBkYXRhOiB7InNy Y3R5cCIgOiBzcmNUeXAsICJ0cmd0eXAiIDogdHJndHlwfSwKKworICAgICAg ICAgICAgICAgICAvLyBPbiBzdWNjZXNzIHJldHVybiBmdW5jdGlvbiBsaXN0 IGZyb20gc2VydmVyCisgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0 aW9uKHJlc3VsdCkgeworICAgICAgICAgICAgICAgICAgIHJlcyA9IHJlc3Vs dC5kYXRhOworICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7CisgICAg ICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgLy8gT24gZmFp bHVyZSBzaG93IGVycm9yIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UgdG8g dXNlcgorICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyLCBz dGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAg ICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIu cmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIu c3VjY2VzcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9 IFMoJ3t7IF8oJyArIGVyci5lcnJvcm1zZyArICcpfX0nKS52YWx1ZSgpOwor ICAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5lcnJvcigie3sgXygn IiArIGVyci5lcnJvcm1zZyArICInKSB9fSIpOworICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9Cisg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAg ICB9CisgICAgICAgIH0sCisgICAgICAgIC8qCisgICAgICAgICAqIFRleHQg dHlwZSBjb250cm9sIGZvciB2aWV3aW5nIGZ1bmN0aW9uIG5hbWUgaW4gcHJv cGVydGllcyBhbmQKKyAgICAgICAgICogZWRpdCBtb2RlIG9ubHkKKyAgICAg ICAgICovCisgICAgICAgIHsKKyAgICAgICAgICBpZDogJ3Byb25hbWUnLCBs YWJlbDone3sgXygnRnVuY3Rpb24nKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAg ICAgICAgICBncm91cDogJ0RlZmluaXRpb24nLCBkaXNhYmxlZDogdHJ1ZSwg bW9kZTpbJ3Byb3BlcnRpZXMnLCdlZGl0J10KKyAgICAgICAgfSx7CisgICAg ICAgICAgaWQ6ICdjYXN0Y29udGV4dCcsIGxhYmVsOid7eyBfKCdDb250ZXh0 JykgfX0nLAorICAgICAgICAgIG9wdGlvbnM6eydvblRleHQnOidJTVBMSUNJ VCcsJ29mZlRleHQnOidFWFBMSUNJVCd9LAorICAgICAgICAgIGVkaXRhYmxl OiBmYWxzZSwgdHlwZTogJ3N0cmluZycsIGdyb3VwOiAnRGVmaW5pdGlvbics CisgICAgICAgICAgbW9kZTpbJ2NyZWF0ZSddLAorICAgICAgICAgIGNvbnRy b2w6IEJhY2tmb3JtLlN3aXRjaENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAg ICAgIGdldFZhbHVlRnJvbURPTTogZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgIHJldHVybiB0aGlzLiRpbnB1dC5wcm9wKCdjaGVja2VkJykgPyAnSU1Q TElDSVQnIDogJ0VYUExJQ0lUJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICB9KQorICAgICAgICB9LAorICAgICAgICAvKgorICAgICAgICAgKiBUZXh0 IGNvbnRyb2wgZm9yIHZpZXdpbmcgY29udGV4dCBpbiBwcm9wZXJ0aWVzIGFu ZAorICAgICAgICAgKiBlZGl0IG1vZGUKKyAgICAgICAgICovCisgICAgICAg IHsKKyAgICAgICAgICBpZDogJ2Nhc3Rjb250ZXh0JywgbGFiZWw6J3t7IF8o J0NvbnRleHQnKSB9fScsIGRpc2FibGVkOiB0cnVlLAorICAgICAgICAgIG9w dGlvbnM6W3sKKyAgICAgICAgICAgIGxhYmVsOiAnSU1QTElDSVQnLCB2YWx1 ZTogJ0lNUExJQ0lUJworICAgICAgICAgIH0seworICAgICAgICAgICAgbGFi ZWw6ICdFWFBMSUNJVCcsIHZhbHVlOiAnRVhQTElDSVQnCisgICAgICAgICAg fSx7CisgICAgICAgICAgICBsYWJlbDogJ0FTU0lHTk1FTlQnLCB2YWx1ZTog J0FTU0lHTk1FTlQnCisgICAgICAgICAgfV0sIGVkaXRhYmxlOiBmYWxzZSwg dHlwZTogJ3NlbGVjdDInLCBncm91cDogJ0RlZmluaXRpb24nLAorICAgICAg ICAgIG1vZGU6Wydwcm9wZXJ0aWVzJywgJ2VkaXQnXQorICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ3N5c2Nhc3QnLCBsYWJlbDone3sgXygnU3lzdGVt IENhc3Q/JykgfX0nLCBtb2RlOiBbJ3Byb3BlcnRpZXMnXSwKKyAgICAgICAg ICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICd0ZXh0JworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6J3t7IF8oJ0Nv bW1lbnQnKSB9fScsdHlwZTogJ3RleHQnLCBncm91cDogJ0RlZmluaXRpb24n LAorICAgICAgICAgIHR5cGU6ICdtdWx0aWxpbmUnLCBjZWxsSGVhZGVyQ2xh c3NlczogJ3dpZHRoX3BlcmNlbnRfNTAnCisgICAgICAgIH0KKyAgICAgICAg XSwKKworICAgICAgICAvKgorICAgICAgICAgKiBUcmlnZ2VycyBjb250cm9s IHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIGZvciBzb3VyY2UgdHlwZSBhbmQK KyAgICAgICAgICogdGFyZ2V0IHR5cGUgaWYgYW55IG9uZSBvZiB0aGVtIGlz IG5vdCBzZWxlY3RlZCB3aGlsZSBjcmVhdGluZworICAgICAgICAgKiBuZXcg Y2FzdAorICAgICAgICAgKi8KKyAgICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9u KGtleXMpeworCisgICAgICAgICAgdmFyIHNyY3R5cGUgPSB0aGlzLmdldCgn c3JjdHlwJyk7CisgICAgICAgICAgdmFyIHRyZ3R5cGUgPSB0aGlzLmdldCgn dHJndHlwJyk7CisKKyAgICAgICAgICAvLyB2YWxpZGF0ZSBzb3VyY2UgdHlw ZSBjb250cm9sCisgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc3JjdHlw ZSkgfHwgXy5pc051bGwoc3JjdHlwZSkgfHwgU3RyaW5nKHNyY3R5cGUpLnJl cGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAg IHZhciBtc2cgPSAne3sgXygnU291cmNlIHR5cGUgbXVzdCBiZSBzZWxlY3Rl ZCEnKSB9fSc7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdz cmN0eXAnLCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAg ICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgIHsKKyAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnc3JjdHlwJyk7CisgICAgICAg ICAgfQorCisgICAgICAgICAgLy8gdmFsaWRhdGUgdGFyZ2V0IHR5cGUgY29u dHJvbAorICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRyZ3R5cGUpIHx8 IF8uaXNOdWxsKHRyZ3R5cGUpIHx8IFN0cmluZyh0cmd0eXBlKS5yZXBsYWNl KC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIg bXNnID0gJ3t7IF8oJ1RhcmdldCB0eXBlIG11c3QgYmUgc2VsZWN0ZWQhJykg fX0nOworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgndHJndHlw JywgbXNnKTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAg fQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICB7CisgICAgICAgICAgICB0 aGlzLmVycm9yTW9kZWwudW5zZXQoJ3RyZ3R5cCcpOworICAgICAgICAgIH0K KyAgICAgICAgICB0aGlzLnRyaWdnZXIoJ29uLXN0YXR1cy1jbGVhcicpOwor ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICB9KQor ICB9KTsKKworICB9CisgICAgcmV0dXJuIHBnQnJvd3Nlci5Ob2Rlc1snY29s bC1jYXN0J107Cit9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzku MV9wbHVzL2NyZWF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nh c3Qvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uYTMwMzE2NAotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvY3Jl YXRlLnNxbApAQCAtMCwwICsxLDIwIEBACit7IyBDUkVBVEUgQ0FTVCBTdGF0 ZW1lbnQgI30KK3slIGlmIGlzX3NxbCAlfQorLS0gQ2FzdDoge3tjb25ufHF0 VHlwZUlkZW50KGRhdGEuc3JjdHlwKX19LT57eyBjb25ufHF0VHlwZUlkZW50 KGRhdGEudHJndHlwKSB9fTsKKworLS0gRFJPUCBDQVNUICh7eyBjb25ufHF0 VHlwZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBBUyB7eyBjb25ufHF0VHlwZUlk ZW50KGRhdGEudHJndHlwKSB9fSk7CisKK3slIGVuZGlmICV9Cit7JSBpZiBk YXRhIGFuZCBkYXRhLnNyY3R5cCBhbmQgZGF0YS50cmd0eXAgJX0KK0NSRUFU RSBDQVNUICh7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEuc3JjdHlwKSB9fSBB UyB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEudHJndHlwKSB9fSkKK3slIGlm IGRhdGEucHJvbmFtZSBhbmQgZGF0YS5wcm9uYW1lICE9ICdiaW5hcnkgY29t cGF0aWJsZSclfQorICAgIFdJVEggRlVOQ1RJT04ge3tkYXRhLnByb25hbWV9 fXslIGVsc2UgJX0KKyAgICBXSVRIT1VUIEZVTkNUSU9OeyUgZW5kaWYgJX0K K3slIGlmIGRhdGEuY2FzdGNvbnRleHQgYW5kIGRhdGEuY2FzdGNvbnRleHQg IT0gJ0VYUExJQ0lUJyAlfQorCisgICAgQVMge3tkYXRhLmNhc3Rjb250ZXh0 fX17JSBlbmRpZiAlfTsKK3sjIERlc2NyaXB0aW9uIGZvciBDQVNUICN9Cit7 JSBpZiBkYXRhLmRlc2NyaXB0aW9uICV9CitDT01NRU5UIE9OIENBU1QgKHt7 IGNvbm58cXRUeXBlSWRlbnQoZGF0YS5zcmN0eXApIH19IEFTIHt7IGNvbm58 cXRUeXBlSWRlbnQoZGF0YS50cmd0eXApIH19KQorICAgICAgSVMge3sgZGF0 YS5kZXNjcmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfXslIGVu ZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9k ZWxldGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85 LjFfcGx1cy9kZWxldGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLjFlYTIzNDMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2RlbGV0ZS5zcWwK QEAgLTAsMCArMSwxNCBAQAoreyMgRkVUQ0ggQ0FTVCBTT1VSQ0UgVFlQRSBB TkQgVEFSR0VUIFRZUEUgU3RhdGVtZW50ICN9Cit7JSBpZiBjaWQgJX0KK1NF TEVDVAorICAgIGZvcm1hdF90eXBlKGNhLmNhc3Rzb3VyY2UsIG51bGwpIGFz IGNhc3Rzb3VyY2UsCisgICAgZm9ybWF0X3R5cGUoY2EuY2FzdHRhcmdldCwg bnVsbCkgYXMgY2FzdHRhcmdldAorRlJPTQorICAgIHBnX2Nhc3QgY2EKK1dI RVJFCisgICAgY2Eub2lkID0ge3tjaWR9fTo6T0lEOworeyUgZW5kaWYgJX0K K3sjIERST1AgQ0FTVCBTdGF0ZW1lbnQgI30KK3slIGlmIGNhc3Rzb3VyY2Ug YW5kIGNhc3R0YXJnZXQgJX0KK0RST1AgQ0FTVCAoe3tjYXN0c291cmNlfX0g QVMge3tjYXN0dGFyZ2V0fX0pIHslIGlmIGNhc2NhZGUgJX1DQVNDQURFeyVl bmRpZiV9OworeyUgZW5kaWYgJX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qv c3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVt cGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2Z1bmN0aW9ucy5zcWwKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjljMDQxYQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwv OS4xX3BsdXMvZnVuY3Rpb25zLnNxbApAQCAtMCwwICsxLDE3IEBACit7IyBG RVRDSCBGVU5DVElPTlMgZGVwZW5kaW5nIHVwb24gU09VUkNFIFRZUEUgYW5k IFRBUkdFVCBUWVBFIElOIENBU1QgICN9CitTRUxFQ1QKKyAgICBwcm9uYW1l IHx8ICcoJyB8fCBwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0 eV9hcmd1bWVudHMocC5vaWQpIHx8ICcpJyBhcyBwcm9uYW1lLAorICAgIG5z cG5hbWUsCisgICAgcHJvYXJndHlwZXMKK0ZST00KKyAgICBwZ19wcm9jIHAg Sk9JTiBwZ19uYW1lc3BhY2UgbiBPTiBuLm9pZD1wLnByb25hbWVzcGFjZQor V0hFUkUKKyAgICBwcm9hcmd0eXBlc1swXSA9IChTRUxFQ1QgdC5vaWQgRlJP TSBwZ190eXBlIHQgV0hFUkUgZm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0g e3tzcmN0eXB8cXRMaXRlcmFsfX0pCisgICAgQU5EIHByb3JldHR5cGUgPSAo U0VMRUNUIHQub2lkIEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90eXBl KHQub2lkLCBOVUxMKSA9IHt7dHJndHlwfHF0TGl0ZXJhbH19KQorICAgIEFO RCBDQVNFCisgICAgICAgIFdIRU4gYXJyYXlfbGVuZ3RoKHByb2FyZ3R5cGVz LDEpICA9IDIgVEhFTgorICAgICAgICAgICAgcHJvYXJndHlwZXNbMV0gPSAy MworICAgICAgICBXSEVOIGFycmF5X2xlbmd0aChwcm9hcmd0eXBlcywxKSAg Pj0gMyBUSEVOCisgICAgICAgICAgICBwcm9hcmd0eXBlc1sxXSA9IDIzIEFO RCBwcm9hcmd0eXBlc1syXSA9IDE2CisgICAgICAgIEVMU0UgVFJVRQorICAg IEVORApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0 L3NxbC85LjFfcGx1cy9nZXRzcmNhbmR0cmd0dHlwZS5zcWwgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2dldHNyY2FuZHRy Z3R0eXBlLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5mYzc4ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3Rl bXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRzcmNhbmR0cmd0dHlwZS5z cWwKQEAgLTAsMCArMSw0NiBAQAorU0VMRUNUCisgICAgKgorRlJPTSAoCisJ U0VMRUNUCisJICAgIGZvcm1hdF90eXBlKHQub2lkLE5VTEwpIEFTIHR5cG5h bWUsCisJCUNBU0UKKwkJICAgIFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBl bGVtCisJICAgICAgICBFTFNFIHQub2lkCisJCUVORCBhcyBlbGVtb2lkLAor CQl0eXBsZW4sCisJCXR5cHR5cGUsCisJCXQub2lkLAorCSAgICBuc3BuYW1l LAorCQkoU0VMRUNUIENPVU5UKDEpIEZST00gcGdfdHlwZSB0MiBXSEVSRSB0 Mi50eXBuYW1lID0gdC50eXBuYW1lKSA+IDEgQVMgaXNkdXAKKwlGUk9NCisJ ICAgIHBnX3R5cGUgdAorCSAgICBKT0lOIHBnX25hbWVzcGFjZSBuc3AgT04g dHlwbmFtZXNwYWNlPW5zcC5vaWQKKyAgICBXSEVSRQorICAgICAgICAoTk9U ICh0eXBuYW1lID0gJ3Vua25vd24nCisJCUFORCBuc3BuYW1lID0gJ3BnX2Nh dGFsb2cnKSkKKwkJQU5EIHR5cGlzZGVmaW5lZAorCQlBTkQgdHlwdHlwZSBJ TiAoJ2InLCAnYycsICdlJywgJ3InKQorCQlBTkQgTk9UIEVYSVNUUyAoCisJ CSAgICBTRUxFQ1QKKwkJICAgICAgICAxCisJCSAgICBGUk9NCisJCSAgICAg ICAgcGdfY2xhc3MKKwkJICAgIFdIRVJFCisJCSAgICAgICAgcmVsbmFtZXNw YWNlID0gdHlwbmFtZXNwYWNlCisJCSAgICAgICAgQU5EIHJlbG5hbWUgPSB0 eXBuYW1lCisJCSAgICAgICAgQU5EIHJlbGtpbmQgIT0gJ2MnKQorCQkgICAg ICAgIEFORCAodHlwbmFtZSBOT1QgTElLRSAnXyUnCisJCSAgICAgICAgICAg IE9SIE5PVCBFWElTVFMgKAorCQkgICAgICAgICAgICAgICBTRUxFQ1QKKwkJ ICAgICAgICAgICAgICAgICAgIDEKKwkJICAgICAgICAgICAgICAgRlJPTQor CQkgICAgICAgICAgICAgICAgICAgcGdfY2xhc3MKKwkJICAgICAgICAgICAg ICAgV0hFUkUKKwkJICAgICAgICAgICAgICAgICAgIHJlbG5hbWVzcGFjZSA9 IHR5cG5hbWVzcGFjZQorCQkgICAgICAgICAgICAgICAgICAgQU5EIHJlbG5h bWUgPSBTVUJTVFJJTkcodHlwbmFtZSBGUk9NIDIpOjpuYW1lCisJCSAgICAg ICAgICAgICAgICAgICBBTkQgcmVsa2luZCAhPSAnYycKKwkJICAgICAgICAg ICAgKQorCQkgICAgICAgICkKKwkJICAgICAgICBBTkQgbnNwLm5zcG5hbWUg IT0gJ2luZm9ybWF0aW9uX3NjaGVtYScgKSBBUyBkdW1teQorICAgICAgICAg ICAgT1JERVIgQlkKKyAgICAgICAgICAgICAgICBuc3BuYW1lIDw+ICdwZ19j YXRhbG9nJywgbnNwbmFtZSA8PiAncHVibGljJywgbnNwbmFtZSwgMQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFf cGx1cy9wcm9wZXJ0aWVzLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMv Y2FzdC9zcWwvOS4xX3BsdXMvcHJvcGVydGllcy5zcWwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM4NjZlMAotLS0gL2Rldi9udWxs CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3Bs dXMvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSw2MyBAQAoreyMgR2V0IE9J RCBmb3IgQ0FTVCAjfQoreyUgaWYgc3JjdHlwIGFuZCB0cmd0eXAgJX0KKyAg U0VMRUNUCisgICAgICBjYS5vaWQKKyAgRlJPTQorICAgICAgcGdfY2FzdCBj YQorICBXSEVSRQorICAgICAgY2EuY2FzdHNvdXJjZSA9IChTRUxFQ1QgdC5v aWQgRlJPTSBwZ190eXBlIHQgV0hFUkUgZm9ybWF0X3R5cGUodC5vaWQsIE5V TEwpID0ge3tzcmN0eXB8cXRMaXRlcmFsfX0pCisgIEFORCBjYS5jYXN0dGFy Z2V0ID0gKFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5cGUgdCBXSEVSRSBmb3Jt YXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSB7e3RyZ3R5cHxxdExpdGVyYWx9fSkK KyAgeyUgaWYgZGF0bGFzdHN5c29pZCAlfQorICAgICAgQU5EIGNhLm9pZCA+ IHt7ZGF0bGFzdHN5c29pZH19OjpPSUQKKyAgeyUgZW5kaWYgJX0KKworeyMg RkVUQ0ggcHJvcGVydGllcyBmb3IgQ0FTVCAjfQoreyUgZWxzZSAlfQorICAg IFNFTEVDVAorICAgICAgICBjYS5vaWQsCisgICAgQ0FTRQorICAgICAgICBX SEVOIHt7ZGF0bGFzdHN5c29pZH19OjpPSUQgPiBjYS5vaWQgdGhlbiAnWWVz JyBFTFNFICdObycKKyAgICBFTkQgQVMgc3lzY2FzdCwKKyAgICBDQVNFCisg ICAgICAgIFdIRU4gY2EuY2FzdGNvbnRleHQgPSAnYScgVEhFTiAnQVNTSUdO TUVOVCcKKyAgICAgICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdpJyBUSEVO ICdJTVBMSUNJVCcKKyAgICAgICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdl JyBUSEVOICdFWFBMSUNJVCcKKyAgICBFTkQgQVMgY2FzdGNvbnRleHQsCisg ICAgQ0FTRQorICAgICAgICBXSEVOIHByb25hbWUgSVMgTlVMTCBUSEVOICdi aW5hcnkgY29tcGF0aWJsZScKKyAgICAgICAgRUxTRSBwcm9uYW1lIHx8ICco JyB8fCBwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVudGl0eV9hcmd1 bWVudHMocHIub2lkKSB8fCAnKScKKyAgICBFTkQgQVMgcHJvbmFtZSwKKyAg ICAgICAgY2EuY2FzdGZ1bmMsCisgICAgICAgIGZvcm1hdF90eXBlKHN0Lm9p ZCxOVUxMKSBBUyBzcmN0eXAsCisgICAgICAgIGZvcm1hdF90eXBlKHR0Lm9p ZCx0dC50eXB0eXBtb2QpIEFTIHRyZ3R5cCwKKyAgICAgICAgbnMubnNwbmFt ZSBBUyBzcmNuc3BuYW1lLAorICAgICAgICBudC5uc3BuYW1lIEFTIHRyZ25z cG5hbWUsCisgICAgICAgIG5wLm5zcG5hbWUgQVMgcHJvbnNwbmFtZSwKKyAg ICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgIGNvbmNhdChmb3JtYXRfdHlw ZShzdC5vaWQsTlVMTCksJy0+Jyxmb3JtYXRfdHlwZSh0dC5vaWQsdHQudHlw dHlwbW9kKSkgYXMgbmFtZQorICBGUk9NIHBnX2Nhc3QgY2EKKyAgSk9JTiBw Z190eXBlIHN0IE9OIHN0Lm9pZD1jYXN0c291cmNlCisgIEpPSU4gcGdfbmFt ZXNwYWNlIG5zIE9OIG5zLm9pZD1zdC50eXBuYW1lc3BhY2UKKyAgSk9JTiBw Z190eXBlIHR0IE9OIHR0Lm9pZD1jYXN0dGFyZ2V0CisgIEpPSU4gcGdfbmFt ZXNwYWNlIG50IE9OIG50Lm9pZD10dC50eXBuYW1lc3BhY2UKKyAgTEVGVCBK T0lOIHBnX3Byb2MgcHIgT04gcHIub2lkPWNhc3RmdW5jCisgIExFRlQgSk9J TiBwZ19uYW1lc3BhY2UgbnAgT04gbnAub2lkPXByLnByb25hbWVzcGFjZQor ICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChkZXMu b2Jqb2lkPWNhLm9pZCBBTkQgZGVzLm9ianN1YmlkPTAgQU5EIGRlcy5jbGFz c29pZD0ncGdfY2FzdCc6OnJlZ2NsYXNzKQorCisgIHslIGlmIGNpZCAlfQor ICAgICAgV0hFUkUgY2Eub2lkPXt7Y2lkfX06OmludAorICB7JSBlbmRpZiAl fQorCistLVRPRE86IGFkZCBjaGVjayBmb3Igc2hvd1N5c3RlbU9iamVjdCgp LiBjdXJyZW50bHkgYXNzdW1lZCBhcyBmYWxzZQorICAgIHsjCisgICAgeyUg aWYgZGF0bGFzdHN5c29pZCAlfQorICAgICAgICB7JSBpZiBjaWQgJX0KKyAg ICAgICAgICAgIEFORAorICAgICAgICB7JSBlbHNlICV9CisgICAgICAgICAg ICBXSEVSRQorICAgICAgICB7JSBlbmRpZiAlfQorICAgICAgICBjYS5vaWQg PiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lECisgICAgeyUgZW5kaWYgJX0KKyAg ICAjfQorICAgIE9SREVSIEJZIHN0LnR5cG5hbWUsIHR0LnR5cG5hbWUKK3sl IGVuZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1 cy9zcWwuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85 LjFfcGx1cy9zcWwuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjY0ZWQxNjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2Fz dHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3NxbC5zcWwKQEAgLTAs MCArMSw0NCBAQAorU0VMRUNUCisgICAgYXJyYXlfdG9fc3RyaW5nKGFycmF5 X2FnZyhzcWwpLCBFJ1xuXG4nKSBhcyBzcWwKK0ZST00KKyhTRUxFQ1QKKyAg ICBFJy0tIENhc3Q6ICcgfHwKKyAgICBmb3JtYXRfdHlwZShzdC5vaWQsIG51 bGwpfHwgRScgLT4gJyB8fAorICAgIGZvcm1hdF90eXBlKHR0Lm9pZCwgdHQu dHlwdHlwbW9kKSB8fAorICAgIEUnXG5cbi0tIERST1AgQ0FTVCAoJyB8fCBm b3JtYXRfdHlwZShzdC5vaWQsIG51bGwpIHx8CisgICAgRScgQVMgJyB8fCBm b3JtYXRfdHlwZSh0dC5vaWQsdHQudHlwdHlwbW9kKSB8fAorICAgIEUnKTtc blxuICBDUkVBVEUgQ0FTVCAoJyB8fCBmb3JtYXRfdHlwZShzdC5vaWQsIG51 bGwpIHx8CisgICAgRScgQVMgJyB8fCBmb3JtYXRfdHlwZSh0dC5vaWQsdHQu dHlwdHlwbW9kKSB8fCBFJylcbicgfHwKKyAgICBDQVNFIFdIRU4gY2EuY2Fz dGZ1bmMgIT0gMCBUSEVOCisgICAgRSdcdFdJVEggRlVOQ1RJT04gJyB8fAor ICAgIHByLnByb25hbWUgfHwgJygnIHx8IENPQUxFU0NFKHBnX2NhdGFsb2cu cGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwci5vaWQpLCAn JykgfHwgRScpJworICAgIFdIRU4gY2EuY2FzdGZ1bmMgPSAwIEFORCBjYS5j YXN0bWV0aG9kID0gJ2knIFRIRU4KKyAgICBFJ1x0V0lUSCBJTk9VVCcKKyAg ICBFTFNFIEUnXHRXSVRIT1VUIEZVTkNUSU9OJyBFTkQgfHwKKyAgICBDQVNF IFdIRU4gY2EuY2FzdGNvbnRleHQgPSAnYScgVEhFTiBFJ1xuXHRBUyBBU1NJ R05NRU5UOycKKyAgICBXSEVOIGNhLmNhc3Rjb250ZXh0ID0gJ2knIFRIRU4g RSdcblx0QVMgSU1QTElDSVQ7JworICAgIEVMU0UgRSc7JyBFTkQgfHwKKyAg ICBDQVNFIFdIRU4gYS5kZXNjcmlwdGlvbiBJUyBOT1QgTlVMTCBUSEVOCisg ICAgICAgIEUnXG5cbkNPTU1FTlQgT04gQ0FTVCAoJyB8fCAoZm9ybWF0X3R5 cGUoc3Qub2lkLE5VTEwpKSB8fAorICAgICAgICBFJyBBUyAnIHx8IChmb3Jt YXRfdHlwZSh0dC5vaWQsdHQudHlwdHlwbW9kKSkgfHwKKyAgICAgICAgRScp IElTICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9saXRlcmFsKGRlc2NyaXB0aW9u KSB8fCBFJzsnCisgICAgRUxTRSAnJyAgRU5EIGFzIHNxbAorRlJPTQorICAg IHBnX2Nhc3QgY2EKKyAgICBKT0lOIHBnX3R5cGUgc3QgT04gc3Qub2lkPWNh LmNhc3Rzb3VyY2UKKyAgICBKT0lOIHBnX25hbWVzcGFjZSBucyBPTiBucy5v aWQ9c3QudHlwbmFtZXNwYWNlCisgICAgSk9JTiBwZ190eXBlIHR0IE9OIHR0 Lm9pZD1jYS5jYXN0dGFyZ2V0CisgICAgSk9JTiBwZ19uYW1lc3BhY2UgbnQg T04gbnQub2lkPXR0LnR5cG5hbWVzcGFjZQorICAgIExFRlQgSk9JTiBwZ19w cm9jIHByIE9OIHByLm9pZD1jYS5jYXN0ZnVuYworICAgIExFRlQgSk9JTiAo CisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAgZGVzLmRlc2NyaXB0aW9u IGFzIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgZGVzLm9iam9pZCBhcyBk ZXNjb2lkCisgICAgICAgIEZST00KKyAgICAgICAgICAgIHBnX2Rlc2NyaXB0 aW9uIGRlcworICAgICAgICBXSEVSRQorICAgICAgICAgICAgZGVzLm9iam9p ZD17e2NpZH19OjpPSUQgQU5EIGRlcy5vYmpzdWJpZD0wIEFORCBkZXMuY2xh c3NvaWQ9J3BnX2Nhc3QnOjpyZWdjbGFzcworICAgICkgYSBPTiAoYS5kZXNj b2lkID0gY2Eub2lkKQorV0hFUkUKKyAgICBjYS5vaWQ9e3tjaWR9fTo6T0lE CispIGM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nh c3Qvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwgYi93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVt cGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3VwZGF0ZS5zcWwKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGI5MGEyMwotLS0gL2Rldi9u dWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4x X3BsdXMvdXBkYXRlLnNxbApAQCAtMCwwICsxLDYgQEAKK3sjIFVQREFURSBE ZXNjcmlwdGlvbiBmb3IgQ0FTVCAjfQorCit7JSAgaWYgZGF0YSBhbmQgJ2Rl c2NyaXB0aW9uJyBpbiBkYXRhIGFuZCBkYXRhLmRlc2NyaXB0aW9uICE9IG9f ZGF0YS5kZXNjcmlwdGlvbiAlfQorICBDT01NRU5UIE9OIENBU1QgKHt7IGNv bm58cXRUeXBlSWRlbnQob19kYXRhLnNyY3R5cCkgfX0gQVMge3sgY29ubnxx dFR5cGVJZGVudChvX2RhdGEudHJndHlwKSB9fSkKKyAgICBJUyB7eyBkYXRh LmRlc2NyaXB0aW9ufHF0TGl0ZXJhbCB9fTsKK3slIGVuZGlmICV9ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo= --001a1140ad6ea879ee052c70008d 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 --001a1140ad6ea879ee052c70008d--