Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aWir2-0008Gw-Gq for pgadmin-hackers@arkaria.postgresql.org; Fri, 19 Feb 2016 11:04:08 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aWir1-0004Ql-T6 for pgadmin-hackers@arkaria.postgresql.org; Fri, 19 Feb 2016 11:04:07 +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 1aWiqz-0004Qf-B4 for pgadmin-hackers@postgresql.org; Fri, 19 Feb 2016 11:04:05 +0000 Received: from mail-yw0-x22f.google.com ([2607:f8b0:4002:c05::22f]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aWiqm-0007dq-3J for pgadmin-hackers@postgresql.org; Fri, 19 Feb 2016 11:04:03 +0000 Received: by mail-yw0-x22f.google.com with SMTP id e63so64232764ywc.3 for ; Fri, 19 Feb 2016 03:03:51 -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=/AYR9KKpFo2teI48nbeMf6pcuskDvAaRfw/uEaX7Nic=; b=tWZkbprCebdGEiN6hodZ6FHQmB+0q+vWRYO9h8HPbuujRpTiFKlKW8LEWXC2Dbw0Ag 4oBNi4UNhbGt0e1ypHp9a+d5AEn2NPQhiUzHEXWThpS2Wjg76sF+gf2opj1VzWujKNgL dgRWKWp0aHwfY4JgwIGRG0skW4PUyYhMqttDAzNVIPftv0nifmJTakOfZQfgUB4Z5nC5 XJM75d55zmjFGlBWg6NRWocrB9fyoReuGLVZfHBYeW5+kNqOAXhq2r2MaDaFb+lGxFBc Ch3Z7cBtLNsrLfa06BpDCXMlqCZC+vcA64JtqVLX9pVJAidVakIv6mjZflfCCUXTwyYF x5Cg== 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=/AYR9KKpFo2teI48nbeMf6pcuskDvAaRfw/uEaX7Nic=; b=DWbXm/C3HYSgnpffx5l7a5mKpoZDtkAgm3HLR6k/8w7bgNJM7V1/Z39GN7/uXfRY+u WA4uBYTcZyT8INbYxli/iWhAoKcOORYEfXhPL7aqgBcVtjM0n6Sii1xuse+Yc9NsaaqO st/jfJdLsBUDeJZbmYTg92A0ESXnoQiCbAMliXjDLmX7ZcJu58YF+w4MWX3UaT9emWr8 NJswrSt4PrYNjsyjRmFFfKId+12ywBT3t8o74fv55XdKvQog1dgoaD0NOu6LIIL+CjMX qSYNQg7SY0vxxdx9/Bd9MZhV+Q5hYzg/4ZMeR+h98Us2VEG5yaQtm4/AkpbqByLluMKC qr6Q== X-Gm-Message-State: AG10YORTeHo+EzAIUAJbBhEt1Wr0qc4kzIoMXTsHujgRWbrzLzAcn5fJGZelU50aLWJHQnYoqsgdktI44CYu3+rq MIME-Version: 1.0 X-Received: by 10.129.55.73 with SMTP id e70mr7876113ywa.277.1455879830674; Fri, 19 Feb 2016 03:03:50 -0800 (PST) Received: by 10.129.84.198 with HTTP; Fri, 19 Feb 2016 03:03:50 -0800 (PST) In-Reply-To: References: Date: Fri, 19 Feb 2016 16:33:50 +0530 Message-ID: Subject: Re: patch for cast module From: Sanket Mehta To: Dave Page Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1143f8e0251f4d052c1d7000 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 --001a1143f8e0251f4d052c1d7000 Content-Type: multipart/alternative; boundary=001a1143f8e0251f48052c1d70fe --001a1143f8e0251f48052c1d70fe Content-Type: text/plain; charset=UTF-8 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 > --001a1143f8e0251f48052c1d70fe Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
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 anythi= ng is missing.

<= div class=3D"gmail_signature">
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 Mon, Feb 15, 2016 at 4:53 PM, Dave Page <dpage@pgadmin.org&= gt; wrote:
That&#= 39;s much better. Just a couple of comments now, partly based on an email I= wrote earlier:

- There is still inconsistency in commen= t style. Please see the attachment for an example. Note that there is *alwa= ys* a space between the comment marker and text.

-= If I try to edit a cast, I can change the description - but no SQL is show= n on the SQL tab, despite the comment being correctly applied when I hit sa= ve. 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.m= ehta@enterprisedb.com> wrote:
Hi,

PFA the revised patch with all th= e required comments.



Regards,
Sanket Mehta
Sr Software 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

--001a1143f8e0251f48052c1d70fe-- --001a1143f8e0251f4d052c1d7000 Content-Type: text/x-patch; charset=US-ASCII; name="castv9.patch" Content-Disposition: attachment; filename="castv9.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iktl7n421 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9fX2luaXRfXy5weSBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9jYXN0cy9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi5hZTdkYmFmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L2Nhc3RzL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsNjQ2IEBACisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxNiwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKyMKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyIiIgorRGVmaW5lcyB2aWV3 cyBmb3IgbWFuYWdlbWVudCBvZiBjYXN0IG5vZGUKKyIiIgoraW1wb3J0IGpz b24KK2Zyb20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgbWFrZV9y ZXNwb25zZSwgY3VycmVudF9hcHAsIHJlcXVlc3QsIGpzb25pZnkKK2Zyb20g Zmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0Citmcm9tIHBnYWRtaW4u dXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBcCisgICAg bWFrZV9yZXNwb25zZSBhcyBhamF4X3Jlc3BvbnNlLCBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi5icm93c2VyLnV0aWxzIGltcG9ydCBO b2RlVmlldworZnJvbSBwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbiBpbXBv cnQgQ29sbGVjdGlvbk5vZGVNb2R1bGUKK2ltcG9ydCBwZ2FkbWluLmJyb3dz ZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcyBhcyBkYXRhYmFz ZXMKK2Zyb20gcGdhZG1pbi51dGlscy5hamF4IGltcG9ydCBwcmVjb25kaXRp b25fcmVxdWlyZWQKK2Zyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0 IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RS SVZFUgorZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHdyYXBzCitmcm9tIHBnYWRt aW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGVwZW5kcyBpbXBv cnQgZ2V0X2RlcGVuZGVuY2llcywgZ2V0X2RlcGVuZGVudHMKKworY2xhc3Mg Q2FzdE1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAgIiIiCisg ICAgIGNsYXNzIENhc3RNb2R1bGUoQ29sbGVjdGlvbk5vZGVNb2R1bGUpCisK KyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9yIENhc3Qgbm9kZSBkZXJpdmVk IGZyb20gQ29sbGVjdGlvbk5vZGVNb2R1bGUuCisKKyAgICBNZXRob2RzOgor ICAgIC0tLS0tLS0KKyAgICAqIF9faW5pdF9fKCphcmdzLCAqKmt3YXJncykK KyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQ2Fz dE1vZHVsZSBhbmQgaXQncyBiYXNlIG1vZHVsZS4KKworICAgICogZ2V0X25v ZGVzKGdpZCwgc2lkLCBkaWQpCisgICAgICAtIE1ldGhvZCBpcyB1c2VkIHRv IGdlbmVyYXRlIHRoZSBicm93c2VyIGNvbGxlY3Rpb24gbm9kZS4KKworICAg ICogbm9kZV9pbm9kZSgpCisgICAgICAtIE1ldGhvZCBpcyBvdmVycmlkZGVu IGZyb20gaXRzIGJhc2UgY2xhc3MgdG8gbWFrZSB0aGUgbm9kZSBhcyBsZWFm IG5vZGUuCisKKyAgICAqIHNjcmlwdF9sb2FkKCkKKyAgICAgIC0gTG9hZCB0 aGUgbW9kdWxlIHNjcmlwdCBmb3IgY2FzdCwgd2hlbiBhbnkgb2YgdGhlIGRh dGFiYXNlIG5vZGUgaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuCisgICAgIiIi CisKKyAgICBOT0RFX1RZUEUgPSAnY2FzdCcKKyAgICBDT0xMRUNUSU9OX0xB QkVMID0gJ0Nhc3RzJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdz LCAqKmt3YXJncyk6CisgICAgICAgIHN1cGVyKENhc3RNb2R1bGUsIHNlbGYp Ll9faW5pdF9fKCphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBnZXRfbm9k ZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAgICAg ICBHZW5lcmF0ZSB0aGUgY29sbGVjdGlvbiBub2RlCisgICAgICAgIDpwYXJh bSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBp ZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICAi IiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9icm93c2VyX2NvbGxl Y3Rpb25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbm9k ZV9pbm9kZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIE92ZXJyaWRl IHRoZSBwcm9wZXJ0eSB0byBtYWtlIHRoZSBub2RlIGFzIGxlYWYgbm9kZQor ICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAcHJv cGVydHkKKyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIi IgorICAgICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBjYXN0LCB3 aGVuIGFueSBvZiB0aGUgZGF0YWJhc2Ugbm9kZSBpcworICAgICAgICBpbml0 aWFsaXplZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBkYXRhYmFz ZXMuRGF0YWJhc2VNb2R1bGUuTk9ERV9UWVBFCisKKworYmx1ZXByaW50ID0g Q2FzdE1vZHVsZShfX25hbWVfXykKKworCitjbGFzcyBDYXN0VmlldyhOb2Rl Vmlldyk6CisgICAgIiIiCisgICAgY2xhc3MgQ2FzdFZpZXcoTm9kZVZpZXcp CisKKyAgICAgICAgQSB2aWV3IGNsYXNzIGZvciBjYXN0IG5vZGUgZGVyaXZl ZCBmcm9tIE5vZGVWaWV3LiBUaGlzIGNsYXNzIGlzCisgICAgICAgIHJlc3Bv bnNpYmxlIGZvciBhbGwgdGhlIHN0dWZmIHJlbGF0ZWQgdG8gdmlldyBsaWtl IGNyZWF0ZS91cGRhdGUvZGVsZXRlIGNhc3QsCisgICAgICAgIHNob3dpbmcg cHJvcGVydGllcyBvZiBjYXN0IG5vZGUsIHNob3dpbmcgc3FsIGluIHNxbCBw YW5lLgorCisgICAgTWV0aG9kczoKKyAgICAtLS0tLS0tCisgICAgKiBfX2lu aXRfXygqKmt3YXJncykKKyAgICAgIC0gTWV0aG9kIGlzIHVzZWQgdG8gaW5p dGlhbGl6ZSB0aGUgQ2FzdFZpZXcgYW5kIGl0J3MgYmFzZSB2aWV3LgorCisg ICAgKiBtb2R1bGVfanMoKQorICAgICAgLSBUaGlzIHByb3BlcnR5IGRlZmlu ZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBub2RlLgorICAg ICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IGZvciB5b3VyIG93biBsb2dp YworCisgICAgKiBjaGVja19wcmVjb25kaXRpb24oKQorICAgICAgLSBUaGlz IGZ1bmN0aW9uIHdpbGwgYmVoYXZlIGFzIGEgZGVjb3JhdG9yIHdoaWNoIHdp bGwgY2hlY2tzCisgICAgICAgIGRhdGFiYXNlIGNvbm5lY3Rpb24gYmVmb3Jl IHJ1bm5pbmcgdmlldywgaXQgd2lsbCBhbHNvIGF0dGFjaGVzCisgICAgICAg IG1hbmFnZXIsY29ubiAmIHRlbXBsYXRlX3BhdGggcHJvcGVydGllcyB0byBz ZWxmCisKKyAgICAqIGxpc3QoKQorICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlz IHVzZWQgdG8gbGlzdCBhbGwgdGhlIGNhc3Qgbm9kZXMgd2l0aGluIHRoYXQg Y29sbGVjdGlvbi4KKworICAgICogbm9kZXMoKQorICAgICAgLSBUaGlzIGZ1 bmN0aW9uIHdpbGwgdXNlZCB0byBjcmVhdGUgYWxsIHRoZSBjaGlsZCBub2Rl IHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24uCisgICAgICAgIEhlcmUgaXQgd2ls bCBjcmVhdGUgYWxsIHRoZSBjYXN0IG5vZGVzLgorCisgICAgKiBwcm9wZXJ0 aWVzKGdpZCwgc2lkLCBkaWQsIHJnX2lkKQorICAgICAgLSBUaGlzIGZ1bmN0 aW9uIHdpbGwgc2hvdyB0aGUgcHJvcGVydGllcyBvZiB0aGUgc2VsZWN0ZWQg Y2FzdCBub2RlCisKKyAgICAqIGNyZWF0ZShnaWQsIHNpZCwgZGlkLCByZ19p ZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIGNyZWF0ZSB0aGUgbmV3 IGNhc3Qgb2JqZWN0CisKKyAgICAqIHVwZGF0ZShnaWQsIHNpZCwgZGlkLCBy Z19pZCkKKyAgICAgIC0gVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSB0aGUg ZGF0YSBmb3IgdGhlIHNlbGVjdGVkIGNhc3Qgbm9kZQorCisgICAgKiBkZWxl dGUoc2VsZiwgZ2lkLCBzaWQsIHJnX2lkKToKKyAgICAgIC0gVGhpcyBmdW5j dGlvbiB3aWxsIGRyb3AgdGhlIGNhc3Qgb2JqZWN0CisKKyAgICAqIG1zcWwo Z2lkLCBzaWQsIGRpZCwgcmdfaWQpCisgICAgICAtIFRoaXMgZnVuY3Rpb24g aXMgdXNlZCB0byByZXR1cm4gbW9kaWZpZWQgU1FMIGZvciB0aGUgc2VsZWN0 ZWQgY2FzdCBub2RlCisKKyAgICAqIGdldF9zcWwoZGF0YSwgcmdfaWQpCisg ICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgZnJvbSBt b2RlbCBkYXRhCisKKyAgICAqIHNxbChnaWQsIHNpZCwgZGlkLCByZ19pZCk6 CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBnZW5lcmF0ZSBzcWwgdG8g c2hvdyBpdCBpbiBzcWwgcGFuZSBmb3IgdGhlIHNlbGVjdGVkIGNhc3Qgbm9k ZS4KKworICAgICogZ2V0X3R5cGUoKToKKyAgICAgIC0gVGhpcyBmdW5jdGlv biB3aWxsIGZldGNoIGFsbCB0aGUgdHlwZXMgZm9yIHNvdXJjZSBhbmQgdGFy Z2V0IHR5cGVzIHNlbGVjdCBjb250cm9sLgorCisgICAgKiBnZXRfZnVuY3Rp b25zKCk6CisgICAgICAtIFRoaXMgZnVuY3Rpb24gd2lsbCBmZXRjaCBhc3Nv Y2lhdGVkIGZ1bmN0aW9ucyBsaXN0IGRlcGVuZGluZyBvbiBzZWxlY3RlZCBz b3VyY2UKKyAgICAgICAgYW5kIHRhcmdldCB0eXBlcyB3aGlsZSBjcmVhdGlu ZyBhIG5ldyBjYXN0IG5vZGUuCisgICAgIiIiCisKKyAgICBub2RlX3R5cGUg PSBibHVlcHJpbnQubm9kZV90eXBlCisKKyAgICBwYXJlbnRfaWRzID0gWwor ICAgICAgICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ2dpZCd9LAorICAgICAg ICB7J3R5cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ2RpZCd9CisgICAgXQorICAgIGlkcyA9IFsK KyAgICAgICAgeyd0eXBlJzogJ2ludCcsICdpZCc6ICdjaWQnfQorICAgIF0K KworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsKKyAgICAgICAgJ29iaic6IFsK KyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3BlcnRpZXMnLCAnZGVsZXRlJzog J2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30sCisgICAgICAgICAgICB7J2dl dCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRlJ30KKyAgICAgICAgXSwKKyAg ICAgICAgJ2NoaWxkcmVuJzogW3sKKyAgICAgICAgICAgICdnZXQnOiAnY2hp bGRyZW4nCisgICAgICAgIH1dLAorICAgICAgICAnZGVsZXRlJzogW3snZGVs ZXRlJzogJ2RlbGV0ZSd9XSwKKyAgICAgICAgJ25vZGVzJzogW3snZ2V0Jzog J25vZGUnfSwgeydnZXQnOiAnbm9kZXMnfV0sCisgICAgICAgICdzcWwnOiBb eydnZXQnOiAnc3FsJ31dLAorICAgICAgICAnbXNxbCc6IFt7J2dldCc6ICdt c3FsJ30sIHsnZ2V0JzogJ21zcWwnfV0sCisgICAgICAgICdzdGF0cyc6IFt7 J2dldCc6ICdzdGF0aXN0aWNzJ31dLAorICAgICAgICAnZGVwZW5kZW5jeSc6 IFt7J2dldCc6ICdkZXBlbmRlbmNpZXMnfV0sCisgICAgICAgICdkZXBlbmRl bnQnOiBbeydnZXQnOiAnZGVwZW5kZW50cyd9XSwKKyAgICAgICAgJ21vZHVs ZS5qcyc6IFt7fSwge30sIHsnZ2V0JzogJ21vZHVsZV9qcyd9XSwKKyAgICAg ICAgJ2dldF90eXBlJzogW3snZ2V0JzogJ2dldF9zcmNfYW5kX3RyZ190eXBl J30sIHsnZ2V0JzogJ2dldF9zcmNfYW5kX3RyZ190eXBlJ31dLAorICAgICAg ICAnZ2V0X2Z1bmN0aW9ucyc6IFt7J3Bvc3QnOiAnZ2V0X2Z1bmN0aW9ucyd9 LCB7J3Bvc3QnOiAnZ2V0X2Z1bmN0aW9ucyd9XQorICAgIH0pCisKKyAgICBk ZWYgX2luaXRfKHNlbGYsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5jb25u ID0gTm9uZQorICAgICAgICBzZWxmLnRlbXBsYXRlX3BhdGggPSBOb25lCisg ICAgICAgIHNlbGYubWFuYWdlciA9IE5vbmUKKyAgICAgICAgc3VwZXIoQ2Fz dFZpZXcsIHNlbGYpLl9faW5pdF9fKCoqa3dhcmdzKQorCisgICAgZGVmIG1v ZHVsZV9qcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgcHJv cGVydHkgZGVmaW5lcyAoaWYgamF2YXNjcmlwdCkgZXhpc3RzIGZvciB0aGlz IG5vZGUuCisgICAgICAgIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgZm9yIHlv dXIgb3duIGxvZ2ljLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIG1h a2VfcmVzcG9uc2UoCisgICAgICAgICAgICByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgImNhc3QvanMvY2FzdHMuanMiLAorICAgICAgICAg ICAgICAgIF89Z2V0dGV4dAorICAgICAgICAgICAgKSwKKyAgICAgICAgICAg IDIwMCwgeydDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2Ny aXB0J30KKyAgICAgICAgKQorCisgICAgZGVmIGNoZWNrX3ByZWNvbmRpdGlv bihmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2ls bCBiZWhhdmUgYXMgYSBkZWNvcmF0b3Igd2hpY2ggd2lsbCBjaGVja3MKKyAg ICAgICAgZGF0YWJhc2UgY29ubmVjdGlvbiBiZWZvcmUgcnVubmluZyB2aWV3 LCBpdCB3aWxsIGFsc28gYXR0YWNoZXMKKyAgICAgICAgbWFuYWdlcixjb25u ICYgdGVtcGxhdGVfcGF0aCBwcm9wZXJ0aWVzIHRvIHNlbGYKKyAgICAgICAg IiIiCisKKyAgICAgICAgQHdyYXBzKGYpCisgICAgICAgIGRlZiB3cmFwKCph cmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAjIEhlcmUgYXJnc1swXSB3 aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3aWxsIGhvbGQgZ2lkLHNpZCxkaWQK KyAgICAgICAgICAgIHNlbGYgPSBhcmdzWzBdCisgICAgICAgICAgICBzZWxm Lm1hbmFnZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25u ZWN0aW9uX21hbmFnZXIoa3dhcmdzWydzaWQnXSkKKyAgICAgICAgICAgIHNl bGYuY29ubiA9IHNlbGYubWFuYWdlci5jb25uZWN0aW9uKGRpZD1rd2FyZ3Nb J2RpZCddKQorICAgICAgICAgICAgIyBJZiBEQiBub3QgY29ubmVjdGVkIHRo ZW4gcmV0dXJuIGVycm9yIHRvIGJyb3dzZXIKKyAgICAgICAgICAgIGlmIG5v dCBzZWxmLmNvbm4uY29ubmVjdGVkKCk6CisgICAgICAgICAgICAgICAgcmV0 dXJuIHByZWNvbmRpdGlvbl9yZXF1aXJlZCgKKyAgICAgICAgICAgICAgICAg ICAgZ2V0dGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICJDb25uZWN0 aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdCEiCisgICAgICAgICAg ICAgICAgICAgICkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICB2 ZXIgPSBzZWxmLm1hbmFnZXIudmVyc2lvbgorICAgICAgICAgICAgIyB3ZSB3 aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZvciBzcWwgc2NyaXB0cworICAgICAg ICAgICAgaWYgdmVyID49IDkwMTAwOgorICAgICAgICAgICAgICAgIHNlbGYu dGVtcGxhdGVfcGF0aCA9ICdjYXN0L3NxbC85LjFfcGx1cycKKworICAgICAg ICAgICAgcmV0dXJuIGYoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIHJl dHVybiB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVm IGxpc3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAg ICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gbGlzdCBhbGwgdGhlIGNh c3Qgbm9kZXMgd2l0aGluIHRoYXQgY29sbGVjdGlvbi4KKyAgICAgICAgOnBh cmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVy IGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAg IDpyZXR1cm46CisgICAgICAgICIiIgorICAgICAgICBzcWwgPSByZW5kZXJf dGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBkYXRs YXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3Rz eXNvaWQnXQorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVzID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIGZvciByb3cgaW4gcmVzWydy b3dzJ106CisgICAgICAgICAgICByb3dbJ2Nhc3Rjb250ZXh0J10gPSBUcnVl IGlmIHJvd1snY2FzdGNvbnRleHQnXSA9PSAnSU1QTElDSVQnIGVsc2UgRmFs c2UKKworICAgICAgICByZXR1cm4gYWpheF9yZXNwb25zZSgKKyAgICAgICAg ICAgIHJlc3BvbnNlPXJlc1sncm93cyddLAorICAgICAgICAgICAgc3RhdHVz PTIwMAorICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIG5vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVzZWQgdG8gY3JlYXRl IGFsbCB0aGUgY2hpbGQgbm9kZSB3aXRoaW4gdGhhdCBjb2xsZWN0aW9uLgor ICAgICAgICBIZXJlIGl0IHdpbGwgY3JlYXRlIGFsbCB0aGUgY2FzdCBub2Rl cy4KKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBh cmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFi YXNlIGlkCisgICAgICAgIDpyZXR1cm46CisgICAgICAgICIiIgorICAgICAg ICByZXMgPSBbXQorICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBkYXRsYXN0c3lzb2lkPXNl bGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2RhdGxhc3RzeXNvaWQnXQorICAg ICAgICApCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYuY29ubi5leGVj dXRlXzJkYXJyYXkoc3FsKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgor ICAgICAgICAgICAgcm93WydjYXN0Y29udGV4dCddID0gVHJ1ZSBpZiByb3db J2Nhc3Rjb250ZXh0J10gPT0gJ0lNUExJQ0lUJyBlbHNlIEZhbHNlCisgICAg ICAgICAgICByZXMuYXBwZW5kKAorICAgICAgICAgICAgICAgIHNlbGYuYmx1 ZXByaW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAg ICAgICAgcm93WydvaWQnXSwKKyAgICAgICAgICAgICAgICAgICAgZGlkLAor ICAgICAgICAgICAgICAgICAgICByb3dbJ25hbWUnXSwKKyAgICAgICAgICAg ICAgICAgICAgaWNvbj0iaWNvbi1jYXN0IgorICAgICAgICAgICAgICAgICkp CisKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAg ICAgICAgIGRhdGE9cmVzLAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHBy b3BlcnRpZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCBzaG93IHRoZSBwcm9w ZXJ0aWVzIG9mIHRoZSBzZWxlY3RlZCBjYXN0IG5vZGUKKyAgICAgICAgOnBh cmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVy IGlkCisgICAgICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAg IDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgOnJldHVybjoKKyAgICAg ICAgIiIiCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgIGNpZD1jaWQsCisgICAgICAgICAg ICBkYXRsYXN0c3lzb2lkPXNlbGYubWFuYWdlci5kYl9pbmZvW2RpZF1bJ2Rh dGxhc3RzeXNvaWQnXQorICAgICAgICApCisgICAgICAgIHN0YXR1cywgcmVz ID0gc2VsZi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXN1bHQgPSByZXNb J3Jvd3MnXVswXQorCisgICAgICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKAor ICAgICAgICAgICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAg ICAgICBzdGF0dXM9MjAwCisgICAgICAgICkKKworICAgIEBjaGVja19wcmVj b25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGNy ZWF0ZXMgbmV3IHRoZSBjYXN0IG9iamVjdAorICAgICAgICA6cGFyYW0gZGlk OiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gc2lkOiBzZXJ2ZXIgaWQK KyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgOnJldHVy bjoKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmVxdWlyZWRfYXJncyA9IFsK KyAgICAgICAgICAgICdzcmN0eXAnLAorICAgICAgICAgICAgJ3RyZ3R5cCcK KyAgICAgICAgXQorCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0gaWYg cmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVj b2RlKCkpCisgICAgICAgIGZvciBhcmcgaW4gcmVxdWlyZWRfYXJnczoKKyAg ICAgICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAg ICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAg ICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNz PTAsCisgICAgICAgICAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoCisg ICAgICAgICAgICAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCB0aGUgcmVx dWlyZWQgcGFyYW1ldGVyICglcykuIiAlIGFyZworICAgICAgICAgICAgICAg ICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICB0cnk6CisgICAg ICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYu dGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0YT1kYXRhLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbm49c2VsZi5jb25uLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHN0 YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAg ICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisKKyAg ICAgICAgICAgICMgd2UgbmVlZCBvaWQgdG8gdG8gYWRkIG9iamVjdCBpbiB0 cmVlIGF0IGJyb3dzZXIsIGJlbG93IHNxbCB3aWxsIGdpdmVzIHRoZSBzYW1l CisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3R5cD1kYXRhWydz cmN0eXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 cmd0eXA9ZGF0YVsndHJndHlwJ10sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLm1hbmFnZXIuZGJfaW5m b1tkaWRdWydkYXRsYXN0c3lzb2lkJ10KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICApCisgICAgICAgICAgICBzdGF0dXMsIGNpZCA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihzcWwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9Y2lkKQorCisgICAgICAgICAgICByZXR1 cm4ganNvbmlmeSgKKyAgICAgICAgICAgICAgICBub2RlPXNlbGYuYmx1ZXBy aW50LmdlbmVyYXRlX2Jyb3dzZXJfbm9kZSgKKyAgICAgICAgICAgICAgICAg ICAgY2lkLAorICAgICAgICAgICAgICAgICAgICBkaWQsCisgICAgICAgICAg ICAgICAgICAgIGRhdGFbJ25hbWUnXSwKKyAgICAgICAgICAgICAgICAgICAg aWNvbj0iaWNvbi1jYXN0IgorICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHVw ZGF0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBjYXN0IG9iamVj dAorICAgICAgICA6cGFyYW0gY2lkOiBjYXN0IGlkCisgICAgICAgIDpwYXJh bSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZl ciBpZAorICAgICAgICA6cGFyYW0gZ2lkOiBncm91cCBpZAorICAgICAgICA6 cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgZGF0YSA9IHJlcXVlc3Qu Zm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJlcXVlc3Qu ZGF0YS5kZWNvZGUoKSkKKyAgICAgICAgc3FsID0gc2VsZi5nZXRfc3FsKGdp ZCwgc2lkLCBkaWQsIGRhdGEsIGNpZCkKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgaWYgc3FsIGFuZCBzcWwuc3RyaXAoJ1xuJykgYW5kIHNxbC5zdHJp cCgnICcpOgorICAgICAgICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5j b25uLmV4ZWN1dGVfc2NhbGFyKHNxbCkKKyAgICAgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAgICAg ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAgICAgaW5mbz0i Q2FzdCB1cGRhdGVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YT17Cisg ICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiBjaWQsCisgICAgICAgICAg ICAgICAgICAgICAgICAnc2lkJzogc2lkLAorICAgICAgICAgICAgICAgICAg ICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdk aWQnOiBkaWQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICAgICAg c3VjY2Vzcz0xLAorICAgICAgICAgICAgICAgICAgICBpbmZvPSJOb3RoaW5n IHRvIHVwZGF0ZSIsCisgICAgICAgICAgICAgICAgICAgIGRhdGE9eworICAg ICAgICAgICAgICAgICAgICAgICAgJ2lkJzogY2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICdnaWQnOiBnaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAnZGlk JzogZGlkCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRl bGV0ZShzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIK KyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGRyb3AgdGhlIGNhc3Qgb2Jq ZWN0CisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3QgaWQKKyAgICAgICAgOnBh cmFtIGRpZDogZGF0YWJhc2UgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2Vy dmVyIGlkCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAg IDpyZXR1cm46CisgICAgICAgICIiIgorICAgICAgICAjIEJlbG93IHdpbGwg ZGVjaWRlIGlmIGl0J3Mgc2ltcGxlIGRyb3Agb3IgZHJvcCB3aXRoIGNhc2Nh ZGUgY2FsbAorICAgICAgICBpZiBzZWxmLmNtZCA9PSAnZGVsZXRlJzoKKyAg ICAgICAgICAgICMgVGhpcyBpcyBhIGNhc2NhZGUgb3BlcmF0aW9uCisgICAg ICAgICAgICBjYXNjYWRlID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgY2FzY2FkZSA9IEZhbHNlCisKKyAgICAgICAgdHJ5OgorICAgICAg ICAgICAgIyBHZXQgbmFtZSBmb3IgY2FzdCBmcm9tIGNpZAorICAgICAgICAg ICAgc3FsID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBs YXRlX3BhdGgsICdkZWxldGUuc3FsJ10pLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNpZD1jaWQpCisgICAgICAgICAgICBzdGF0dXMs IHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3Qoc3FsKQorICAgICAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAgICAgICAg ICAgIyBkcm9wIGNhc3QKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc1sncm93 cyddWzBdCisgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oW3NlbGYudGVtcGxhdGVfcGF0aCwgJ2RlbGV0ZS5zcWwnXSksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzdHNvdXJjZT1y ZXN1bHRbJ2Nhc3Rzb3VyY2UnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYXN0dGFyZ2V0PXJlc3VsdFsnY2FzdHRhcmdldCddLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2NhZGU9Y2Fz Y2FkZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAg ICAgICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5jb25uLmV4ZWN1dGVfc2Nh bGFyKHNxbCkKKyAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1z Zz1yZXMpCisKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICAgICAgc3VjY2Vzcz0xLAorICAgICAgICAgICAg ICAgIGluZm89Z2V0dGV4dCgiQ2FzdCBkcm9wcGVkIiksCisgICAgICAgICAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGNpZCwK KyAgICAgICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAg ICAgICAgICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICAgICAgJ2Rp ZCc6IGRpZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICkKKwor ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBy ZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkK KworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgbXNxbChzZWxm LCBnaWQsIHNpZCwgZGlkLCBjaWQ9Tm9uZSk6CisgICAgICAgICIiIgorICAg ICAgICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIG1vZGlmaWVkIFNRTAorICAg ICAgICAgOnBhcmFtIGNpZDogY2FzdCBpZAorICAgICAgICAgOnBhcmFtIGRp ZDogZGF0YWJhc2UgaWQKKyAgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBp ZAorICAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQKKyAgICAgICAgIDpy ZXR1cm46CisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5h cmdzCisgICAgICAgIHNxbCA9IHNlbGYuZ2V0X3NxbChnaWQsIHNpZCwgZGlk LCBkYXRhLCBjaWQpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3FsLCBzdHIp IGFuZCBzcWwgYW5kIHNxbC5zdHJpcCgnXG4nKSBhbmQgc3FsLnN0cmlwKCcg Jyk6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgICAgIGRhdGE9c3FsLAorICAgICAgICAgICAgICAgIHN0 YXR1cz0yMDAKKyAgICAgICAgICAgICkKKyAgICAgICAgZWxzZToKKyAgICAg ICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgICAg ICAgICAgZGF0YT0iLS1tb2RpZmllZCBTUUwiLAorICAgICAgICAgICAgICAg IHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfc3Fs KHNlbGYsIGdpZCwgc2lkLCBkaWQsIGRhdGEsIGNpZD1Ob25lKToKKyAgICAg ICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gc3Fs IGZvciBtb2RlbCBkYXRhCisgICAgICAgIDpwYXJhbSBnaWQ6IGdyb3VwIGlk CisgICAgICAgIDpwYXJhbSBzaWQ6IHNlcnZlciBpZAorICAgICAgICA6cGFy YW0gZGlkOiBkYXRhYmFzZSBpZAorICAgICAgICA6cGFyYW0gY2lkOiBjYXN0 IGlkCisgICAgICAgIDpwYXJhbSBkYXRhOiBtb2RlbCBkYXRhCisgICAgICAg IDpyZXR1cm46CisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAg ICAgICBpZiBjaWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc3Fs ID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3Bh dGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY2lkPWNpZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZGF0bGFzdHN5c29pZD1zZWxmLm1hbmFn ZXIuZGJfaW5mb1tkaWRdWydkYXRsYXN0c3lzb2lkJ10pCisgICAgICAgICAg ICAgICAgc3RhdHVzLCByZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KHNx bCkKKworICAgICAgICAgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAg ICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJy b3Jtc2c9cmVzKQorCisgICAgICAgICAgICAgICAgb2xkX2RhdGEgPSByZXNb J3Jvd3MnXVswXQorICAgICAgICAgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1w bGF0ZSgKKyAgICAgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksCisgICAgICAgICAgICAgICAg ICAgIGRhdGE9ZGF0YSwgb19kYXRhPW9sZF9kYXRhCisgICAgICAgICAgICAg ICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiAn c3JjdHlwJyBpbiBkYXRhIGFuZCAndHJndHlwJyBpbiBkYXRhOgorICAgICAg ICAgICAgICAgICAgICBzcWwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0 YSwgY29ubj1zZWxmLmNvbm4pCisgICAgICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICAgICAgc3FsID0gIi0tIGluY29tcGxldGUgZGVmaW5p dGlvbiIKKyAgICAgICAgICAgIHJldHVybiBzdHIoc3FsKQorCisgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAg QGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBnZXRfZnVuY3Rpb25zKHNl bGYsIGdpZCwgc2lkLCBkaWQsIGNpZD1Ob25lKToKKyAgICAgICAgIiIiCisg ICAgICAgIFRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gZnVuY3Rpb25zIGxp c3QgYXNzb2NpYXRlZCB0byBhIGNhc3QKKyAgICAgICAgOnBhcmFtIGdpZDog Z3JvdXAgaWQKKyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAg ICAgIDpwYXJhbSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBj aWQ6IGNhc3QgaWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisg ICAgICAgIHJlcyA9IFtdCisgICAgICAgIGRhdGEgPSByZXF1ZXN0LmZvcm0g aWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEu ZGVjb2RlKCkpCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgiLyIu am9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZnVuY3Rpb25zLnNxbCddKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY3R5cD1kYXRhWydz cmN0eXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyZ3R5 cD1kYXRhWyd0cmd0eXAnXSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2Vs Zi5jb25uLmV4ZWN1dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0 YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgcmVzLmFwcGVuZCh7J2xhYmVs JzogJycsCisgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6ICcnfSkKKwor ICAgICAgICBmb3Igcm93IGluIHJzZXRbJ3Jvd3MnXToKKyAgICAgICAgICAg IHJlcy5hcHBlbmQoeydsYWJlbCc6IHJvd1sncHJvbmFtZSddLAorICAgICAg ICAgICAgICAgICAgICAgICAgJ3ZhbHVlJzogcm93Wydwcm9uYW1lJ119KQor ICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAg ICAgZGF0YT1yZXMsCisgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAg ICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24KKyAgICBkZWYgZ2V0X3Ny Y19hbmRfdHJnX3R5cGUoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgY2lkPU5vbmUp OgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJl dHVybiB0eXBlIGxpc3QKKyAgICAgICAgOnBhcmFtIGdpZDogZ3JvdXAgaWQK KyAgICAgICAgOnBhcmFtIHNpZDogc2VydmVyIGlkCisgICAgICAgIDpwYXJh bSBkaWQ6IGRhdGFiYXNlIGlkCisgICAgICAgIDpwYXJhbSBjaWQ6IGNhc3Qg aWQKKyAgICAgICAgOnJldHVybjoKKyAgICAgICAgIiIiCisgICAgICAgIHJl cyA9IFtdCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdnZXRzcmNh bmR0cmd0dHlwZS5zcWwnXSksCisgICAgICAgICAgICBjaWQ9Y2lkCisgICAg ICAgICkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1 dGVfZGljdChzcWwpCisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAg ICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9 cnNldCkKKworICAgICAgICByZXMgPSBbeydsYWJlbCc6ICcnLCAndmFsdWUn OiAnJ31dCisgICAgICAgIGZvciByb3cgaW4gcnNldFsncm93cyddOgorICAg ICAgICAgICAgcmVzLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgJ2xhYmVs Jzogcm93Wyd0eXBuYW1lJ10sCisgICAgICAgICAgICAgICAgJ3ZhbHVlJzog cm93Wyd0eXBuYW1lJ10KKyAgICAgICAgICAgIH0pCisKKyAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIGRhdGE9cmVz LAorICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICApCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIHNxbChzZWxmLCBnaWQsIHNp ZCwgZGlkLCBjaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5j dGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBmb3Igc3FsIHBhbmVsCisgICAgICAg IDpwYXJhbSBnaWQ6IGdyb3VwIGlkCisgICAgICAgIDpwYXJhbSBzaWQ6IHNl cnZlciBpZAorICAgICAgICA6cGFyYW0gZGlkOiBkYXRhYmFzZSBpZAorICAg ICAgICA6cGFyYW0gY2lkOiBjYXN0IGlkCisgICAgICAgIDpyZXR1cm46Cisg ICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcWwgPSBy ZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3NxbC5zcWwnXSksCisgICAgICAgICAgICAg ICAgY2lkPWNpZCwKKyAgICAgICAgICAgICAgICBjb25uPXNlbGYuY29ubgor ICAgICAgICAgICAgKQorICAgICAgICAgICAgc3RhdHVzLCByZXMgPSBzZWxm LmNvbm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgICAgICAgICAgaWYgbm90 IHN0YXR1czoKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2Vy dmVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBfKCJFUlJPUjogQ291 bGRuJ3QgZ2VuZXJhdGUgcmV2ZXJzZWQgZW5naW5lZXJlZCBRdWVyeSBmb3Ig dGhlIGNhc3QhXG57MH0iKS5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAg ICAgICByZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICBpZiByZXMgaXMgTm9uZToK KyAgICAgICAgICAgICAgICByZXR1cm4gZ29uZSgKKyAgICAgICAgICAgICAg ICAgICAgXygiRVJST1I6IENvdWxkbid0IGdlbmVyYXRlIHJldmVyc2VkIGVu Z2luZWVyZWQgUXVlcnkgZm9yIHRoZSBjYXN0IG5vZGUhIikKKyAgICAgICAg ICAgICAgICAgICAgKQorCisgICAgICAgICAgICByZXR1cm4gYWpheF9yZXNw b25zZShyZXNwb25zZT1yZXMpCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0 aW9uCisgICAgZGVmIGRlcGVuZGVudHMoc2VsZiwgZ2lkLCBzaWQsIGRpZCwg Y2lkKToKKyAgICAgICAgIiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZ2V0 IHRoZSBkZXBlbmRlbnRzIGFuZCByZXR1cm4gYWpheCByZXNwb25zZQorICAg ICAgICBmb3IgdGhlIGNhc3Qgbm9kZS4KKworICAgICAgICBBcmdzOgorICAg ICAgICAgICAgZ2lkOiBTZXJ2ZXIgR3JvdXAgSUQKKyAgICAgICAgICAgIHNp ZDogU2VydmVyIElECisgICAgICAgICAgICBkaWQ6IERhdGFiYXNlIElECisg ICAgICAgICAgICBjaWQ6IENhc3QgSUQKKyAgICAgICAgIiIiCisgICAgICAg IGRlcGVuZGVudHNfcmVzdWx0ID0gZ2V0X2RlcGVuZGVudHMoc2VsZi5jb25u LCBjaWQsICdsYW5ndWFnZScpCisgICAgICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAorICAgICAgICAgICAgICAgIHJlc3BvbnNlPWRlcGVuZGVudHNfcmVz dWx0LAorICAgICAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRl cGVuZGVuY2llcyhzZWxmLCBnaWQsIHNpZCwgZGlkLCBjaWQpOgorICAgICAg ICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBnZXQgdGhlIGRlcGVuZGVu Y2llcyBhbmQgcmV0dXJuIGFqYXggcmVzcG9uc2UKKyAgICAgICAgZm9yIHRo ZSBjYXN0IG5vZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICAgIGdp ZDogU2VydmVyIEdyb3VwIElECisgICAgICAgICAgICBzaWQ6IFNlcnZlciBJ RAorICAgICAgICAgICAgZGlkOiBEYXRhYmFzZSBJRAorICAgICAgICAgICAg Y2lkOiBDYXN0IElECisgICAgICAgICIiIgorICAgICAgICBkZXBlbmRlbmNp ZXNfcmVzdWx0ID0gZ2V0X2RlcGVuZGVuY2llcyhzZWxmLmNvbm4sIGNpZCwg J2xhbmd1YWdlJykKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisg ICAgICAgICAgICAgICAgcmVzcG9uc2U9ZGVwZW5kZW5jaWVzX3Jlc3VsdCwK KyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAgICAgICAg KQorCisKKworQ2FzdFZpZXcucmVnaXN0ZXJfbm9kZV92aWV3KGJsdWVwcmlu dCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy9zdGF0aWMvaW1nL2Nhc3Qu cG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9pbWcvY2FzdC5wbmcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMC4uMmJlN2YzNzQyYTc2MGZhYTc3MDkwNTI2Njlm NDQ0YmE4OTQ5YzMzMApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgNDI2Cnpj bWVBU0BOPyhvbEh5YHVWQnEhaWEwdnBeMHdCITYzP3d5bGBHYkt9YSkze1dF MEE4PVhMSVl+YGJocz5iRWpYcwp6ZHRjKDwjKV9We15HbGNoS2VlfiMtVUdR NkVCQGJxc0loTHt8QSZ1X0gqZnlgPGY7OXhVSF9qd19jP2cqfEJJSlYKekNy PG8te1d7fnFoNXY4Z21SYEh8fE5aLT5kLXdpLXtNaF5XQCZDYENyb0RMYWY2 dztFKFF7KHNmen5qVjFvO0lzCnpJNlMrTjJJTyFTY3RqUWhYJThAVkpERl88 V1lsQE9JRUZ9RSZPTHV5c0w0UXBgTkZaUXl3akRHSXlgcCVfI2RCbgp6UTAo YEVPN0NVSFhRZSpOYD8pPXReUTdEOHc4fTlWKk0mT1htWWNTUU1UVHhYYTVl Wl5zWWJ6VmpvSHRsQU02WD4KencpVnQ3O1hVaHU/YUNnOC1xKVQjZGpzcD8x dlFuMCgjSFp7JmF2Sz5HOzdNfEtlemkqMUp8OUB3TUBBOEdJdTVhCno3a0BT dktBJWxMZmk2KWthZzhXUk5pMGRWTi1qelRRVmQyMGg2Y0taTSFFKXVBd352 UENkTzdLQ2ZXdzNSdDUkWgpzR2dha0tIMDApfFdUc1VARyNGVGRIR291RzhK SXlkb1NHaUcyQj85LSk3OCZxb2xgOyswNnpAM2h5VlpwCgpsaXRlcmFsIDAK SGNtVj9kMDAwMDEKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvc3RhdGlj L2ltZy9jb2xsLWNhc3QucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3N0YXRpYy9pbWcv Y29sbC1jYXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wOWViNjVh ZjAyYzY2YmQ2NGFiMzQwNWM1OTJlZmU0ZDkwZDQxYzk4CkdJVCBiaW5hcnkg cGF0Y2gKbGl0ZXJhbCA0MDIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB2cF4w d0IhNjM/d3lsYEdiS31SRGUmMkUwOHw1d2BYYWVPPGxxNE5kSH1QCnpyKGU1 IVUhcCMqZGc7PnRfWn0hdFo0QXAjb2NpI1F7PVNYb1BvQ1FFLSg8VUwpJkdx ZnxMQHhNfExGRkY9UHY+ZQp6QU84UjBlY1AqN0RRRDBBfE1ZM3srcWIzSHVL bUElfE5wYVJ8MVpoUmowYyp8U1E2d0glOzUwc01qRFhBUz5PPl8KejQ1VTU0 KnpJSnQ5Z3ZhbD5FYWs3YWs9I1RaTjZwJjBoU0E/eUdwJjVYNlElaGUqMGVe VG9aWldOVHNyK2IpdClsCnpqOSU0THE0cVpPd2ZGRGN6Y3tPcTw2KXJta3NF SiZuRWlPRndAeTNEVnoqWk89OCtUQVo9SlFDJkNoPUlsSiVxMAp6biNhJWQk T241fWVRIV97YE8wPDFQa1dzXmBnKU8hIUpBbS11eztYZzR6eWFlIzVKTk1D OXgjY0QhQ3tYTkhHezAKejcjaXByOHRFRHNoOFApR25IWER7bX1uY0FTe1dF diV2NjtfKFU2OztsOV5UcyhPX1QrKSZOcCVXbmMhO2FCNnohClE4bFZPU1Bn ZyZlYnhzTFEwOVhmfmZkQnZpCgpsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3QvanMvY2Fz dHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3QvanMvY2FzdHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTMyOTM2 YgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMv Y2FzdC9qcy9jYXN0cy5qcwpAQCAtMCwwICsxLDMwMiBAQAorZGVmaW5lKAor ICAgICAgICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUu c3RyaW5nJywgJ3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2FsZXJ0 aWZ5JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJ10sCitmdW5jdGlv bigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CisK KyAgICAvLyBFeHRlbmQgdGhlIGNvbGxlY3Rpb24gY2xhc3MgZm9yIGNhc3QK KyAgICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1jYXN0J10pIHsKKyAg ICAgIHZhciBjYXN0cyA9IHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29sbC1j YXN0J10gPQorICAgICAgICBwZ0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5l eHRlbmQoeworICAgICAgICAgIG5vZGU6ICdjYXN0JywKKyAgICAgICAgICBs YWJlbDogJ3t7IF8oJ0Nhc3RzJykgfX0nLAorICAgICAgICAgIHR5cGU6ICdj b2xsLWNhc3QnLAorICAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsICdkZXNj cmlwdGlvbiddCisgICAgICAgIH0pOworICAgIH07CisKKyAgICAvLyBFeHRl bmQgdGhlIG5vZGUgY2xhc3MgZm9yIGNhc3QKKyAgICBpZiAoIXBnQnJvd3Nl ci5Ob2Rlc1snY2FzdCddKSB7CisgICAgICBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ2Nhc3QnXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Cisg ICAgICAgIHBhcmVudF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICB0eXBl OiAnY2FzdCcsCisgICAgICAgIGNhbkRyb3A6IHRydWUsCisgICAgICAgIGNh bkRyb3BDYXNjYWRlOiB0cnVlLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0Nh c3QnKSB9fScsCisgICAgICAgIGhhc1NRTDogdHJ1ZSwKKyAgICAgICAgaGFz RGVwZW5kczogdHJ1ZSwKKyAgICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CisK KyAgICAgICAgICAvLyBBdm9pZCBtdWx0aXBsZSByZWdpc3RyYXRpb24gb2Yg bWVudXMKKyAgICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKKyAgICAg ICAgICAgIHJldHVybjsKKworICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQg PSB0cnVlOworCisgICAgICAgICAgLy8gQWRkIGNvbnRleHQgbWVudXMgZm9y IGNhc3QKKyAgICAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKFt7CisgICAg ICAgICAgICBuYW1lOiAnY3JlYXRlX2Nhc3Rfb25fZGF0YWJhc2UnLCBub2Rl OiAnZGF0YWJhc2UnLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgICBhcHBs aWVzOiBbJ29iamVjdCcsICdjb250ZXh0J10sIGNhbGxiYWNrOiAnc2hvd19v YmpfcHJvcGVydGllcycsCisgICAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0 ZScsIHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0Nhc3QuLi4nKSB9fScs CisgICAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIGljb24tY2FzdCcsIGRh dGE6IHthY3Rpb246ICdjcmVhdGUnfQorICAgICAgICAgIH0seworICAgICAg ICAgICAgbmFtZTogJ2NyZWF0ZV9jYXN0X29uX2NvbGwnLCBub2RlOiAnY29s bC1jYXN0JywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgICAgYXBwbGllczog WydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3By b3BlcnRpZXMnLAorICAgICAgICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBw cmlvcml0eTogNCwgbGFiZWw6ICd7eyBfKCdDYXN0Li4uJykgfX0nLAorICAg ICAgICAgICAgaWNvbjogJ3djVGFiSWNvbiBpY29uLWNhc3QnLCBkYXRhOiB7 YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAgICB9LHsKKyAgICAgICAgICAg IG5hbWU6ICdjcmVhdGVfY2FzdCcsIG5vZGU6ICdjYXN0JywgbW9kdWxlOiB0 aGlzLAorICAgICAgICAgICAgYXBwbGllczogWydvYmplY3QnLCAnY29udGV4 dCddLCBjYWxsYmFjazogJ3Nob3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAg ICAgICAgY2F0ZWdvcnk6ICdjcmVhdGUnLCBwcmlvcml0eTogNCwgbGFiZWw6 ICd7eyBfKCdDYXN0Li4uJykgfX0nLAorICAgICAgICAgICAgaWNvbjogJ3dj VGFiSWNvbiBpY29uLWNhc3QnLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30K KyAgICAgICAgICB9XSk7CisKKyAgICAgICAgfSwKKworICAgICAgICAvLyBE ZWZpbmluZyBiYWNrZm9ybSBtb2RlbCBmb3IgY2FzdCBub2RlCisgICAgICAg IG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewor ICAgICAgICAgIGRlZmF1bHRzOiB7CisgICAgICAgICAgICBuYW1lOiB1bmRl ZmluZWQsICAgICAgICAgICAgLy8gTmFtZSBvZiB0aGUgY2FzdAorICAgICAg ICAgICAgZW5jb2Rpbmc6ICdVVEY4JywKKyAgICAgICAgICAgIHNyY3R5cDog dW5kZWZpbmVkLCAgICAgICAgICAvLyBTb3VyY2UgdHlwZQorICAgICAgICAg ICAgdHJndHlwOiB1bmRlZmluZWQsICAgICAgICAgIC8vIFRhcmdldCB0eXBl CisgICAgICAgICAgICBwcm9uYW1lOiB1bmRlZmluZWQsICAgICAgICAgLy8g RnVuY3Rpb24KKyAgICAgICAgICAgIGNhc3Rjb250ZXh0OiB1bmRlZmluZWQs ICAgICAvLyBDb250ZXh0IChJTVBMSUNJVC9FWFBMSUNJVC9BU1NJR05NRU5U KQorICAgICAgICAgICAgc3lzY2FzdDogdW5kZWZpbmVkLCAgICAgICAgIC8v IElzIHRoaXMgY2FzdCBpcyBzeXN0ZW0gb2JqZWN0PyBZZXMvTm8KKyAgICAg ICAgICAgIGRlc2NyaXB0aW9uOiB1bmRlZmluZWQgICAgICAvLyBDb21tZW50 IG9uIHRoZSBjYXN0CisgICAgICAgICAgfSwKKworICAgICAgICAgIC8vIERl ZmluaW5nIHNjaGVtYSBmb3IgY2FzdAorICAgICAgICAgIHNjaGVtYTogW3sK KyAgICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiAne3sgXygnTmFtZScp IH19JywgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAne3sgXygnRGVmaW5pdGlv bicpIH19JywKKyAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZSwgdHlwZTog J3RleHQnLCBkaXNhYmxlZDogdHJ1ZSwgY2VsbEhlYWRlckNsYXNzZXM6ICd3 aWR0aF9wZXJjZW50XzUwJworICAgICAgICAgIH0seworICAgICAgICAgICAg aWQ6ICdvaWQnLCBsYWJlbDone3sgXygnT2lkJykgfX0nLCBjZWxsOiAnc3Ry aW5nJywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAorICAgICAg ICAgICAgZWRpdGFibGU6IGZhbHNlLCB0eXBlOiAndGV4dCcsIGRpc2FibGVk OiB0cnVlCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ3NyY3R5 cCcsIGxhYmVsOid7eyBfKCdTb3VyY2UgdHlwZScpIH19JywgdXJsOiAnZ2V0 X3R5cGUnLAorICAgICAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ0Rl ZmluaXRpb24nLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAg ICAgcmV0dXJuICFtLmlzTmV3KCkKKyAgICAgICAgICAgIH0sIG1vZGU6IFsn Y3JlYXRlJ10sCisKKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24o cm93cykgeworICAgICAgICAgICAgICBfLmVhY2gocm93cywgZnVuY3Rpb24o cikgeworICAgICAgICAgICAgICAgIHJbJ2ltYWdlJ10gPSAnaWNvbi1jYXN0 JzsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHJldHVybiBy b3dzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIENvbnRyb2wgaXMgZXh0ZW5kZWQgdG8gY3JlYXRlIGNhc3Qg bmFtZSBmcm9tIHNvdXJjZSB0eXBlIGFuZCBkZXN0aW5hdGlvbiB0eXBlCisg ICAgICAgICAgICAgKiBvbmNlIHRoZWlyIHZhbHVlcyBhcmUgY2hhbmdlZAor ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zv cm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworCisgICAgICAg ICAgICAgICBvbkNoYW5nZTogZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg ICAgIEJhY2tmb3JtLk5vZGVBamF4T3B0aW9uc0NvbnRyb2wucHJvdG90eXBl Lm9uQ2hhbmdlLmFwcGx5KAorICAgICAgICAgICAgICAgICAgICB0aGlzLCBh cmd1bWVudHMKKyAgICAgICAgICAgICAgICAgICAgKTsKKworICAgICAgICAg ICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgKiBPbiBzb3VyY2UgdHlw ZSBjaGFuZ2UsIGNoZWNrIGlmIGJvdGggc291cmNlIHR5cGUgYW5kCisgICAg ICAgICAgICAgICAgICAqIHRhcmdldCB0eXBlIGFyZSBzZXQsIGlmIHllcyB0 aGVuIGZldGNoIHZhbHVlcyBmcm9tIGJvdGgKKyAgICAgICAgICAgICAgICAg ICogY29udHJvbHMgYW5kIGdlbmVyYXRlIGNhc3QgbmFtZQorICAgICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgdmFyIHNyY3R5cGUgPSB0 aGlzLm1vZGVsLmdldCgnc3JjdHlwJyk7CisgICAgICAgICAgICAgICAgIHZh ciB0cmd0eXBlID0gdGhpcy5tb2RlbC5nZXQoJ3RyZ3R5cCcpOworICAgICAg ICAgICAgICAgICBpZihzcmN0eXBlICE9IHVuZGVmaW5lZCAmJiBzcmN0eXBl ICE9ICcnICYmCisgICAgICAgICAgICAgICAgICAgIHRyZ3R5cGUgIT0gdW5k ZWZpbmVkICYmIHRyZ3R5cGUgIT0gJycpCisgICAgICAgICAgICAgICAgICAg dGhpcy5tb2RlbC5zZXQoIm5hbWUiLCBzcmN0eXBlKyItPiIrdHJndHlwZSk7 CisgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICB0 aGlzLm1vZGVsLnVuc2V0KCJuYW1lIik7CisgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9KQorICAgICAgICAgIH0sCisKKyAgICAgICAgICAvKgor ICAgICAgICAgICAqIFRleHQgY29udHJvbCBmb3Igdmlld2luZyBzb3VyY2Ug dHlwZSBpbiBwcm9wZXJ0aWVzIGFuZAorICAgICAgICAgICAqIGVkaXQgbW9k ZSBvbmx5CisgICAgICAgICAgICovCisgICAgICAgICAgeworICAgICAgICAg ICAgaWQ6ICdzcmN0eXAnLCBsYWJlbDone3sgXygnU291cmNlIHR5cGUnKSB9 fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAgICAgIGdyb3VwOiAnRGVmaW5p dGlvbicsIGRpc2FibGVkOiB0cnVlLCBtb2RlOlsncHJvcGVydGllcycsJ2Vk aXQnXQorICAgICAgICAgIH0seworICAgICAgICAgICAgaWQ6ICd0cmd0eXAn LCBsYWJlbDone3sgXygnVGFyZ2V0IHR5cGUnKSB9fScsIHVybDogJ2dldF90 eXBlJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZ3JvdXA6ICdEZWZp bml0aW9uJywgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg ICAgcmV0dXJuICFtLmlzTmV3KCkKKyAgICAgICAgICAgICAgfSwgbW9kZTog WydjcmVhdGUnXSwKKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24o cm93cykgeworICAgICAgICAgICAgICBfLmVhY2gocm93cywgZnVuY3Rpb24o cikgeworICAgICAgICAgICAgICAgIHJbJ2ltYWdlJ10gPSAnaWNvbi1jYXN0 JzsKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHJldHVybiBy b3dzOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoKKyAgICAg ICAgICAgICAqIENvbnRyb2wgaXMgZXh0ZW5kZWQgdG8gY3JlYXRlIGNhc3Qg bmFtZSBmcm9tIHNvdXJjZSB0eXBlIGFuZCBkZXN0aW5hdGlvbiB0eXBlCisg ICAgICAgICAgICAgKiBvbmNlIHRoZWlyIHZhbHVlcyBhcmUgY2hhbmdlZAor ICAgICAgICAgICAgICovCisgICAgICAgICAgICAgY29udHJvbDogQmFja2Zv cm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworCisgICAgICAg ICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg QmFja2Zvcm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5wcm90b3R5cGUub25D aGFuZ2UuYXBwbHkoCisgICAgICAgICAgICAgICAgIHRoaXMsIGFyZ3VtZW50 cworICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgIC8q CisgICAgICAgICAgICAgICAgICAqIG9uIHRhcmdldCB0eXBlIGNoYW5nZSwg Y2hlY2sgaWYgYm90aCBzb3VyY2UgdHlwZSBhbmQKKyAgICAgICAgICAgICAg ICAgICogdGFyZ2V0IHR5cGUgYXJlIHNldCwgaWYgeWVzIHRoZW4gZmV0Y2gg dmFsdWVzIGZyb20gYm90aAorICAgICAgICAgICAgICAgICAgKiBjb250cm9s cyBhbmQgZ2VuZXJhdGUgY2FzdCBuYW1lCisgICAgICAgICAgICAgICAgICAq LworICAgICAgICAgICAgICAgdmFyIHNyY1R5cGUgPSB0aGlzLm1vZGVsLmdl dCgnc3JjdHlwJyk7CisgICAgICAgICAgICAgICB2YXIgdHJndHlwZSA9IHRo aXMubW9kZWwuZ2V0KCd0cmd0eXAnKTsKKyAgICAgICAgICAgICAgIGlmKHNy Y1R5cGUgIT0gdW5kZWZpbmVkICYmIHNyY1R5cGUgIT0gJycgJiYKKyAgICAg ICAgICAgICAgICAgIHRyZ3R5cGUgIT0gdW5kZWZpbmVkICYmIHRyZ3R5cGUg IT0gJycpCisgICAgICAgICAgICAgICAgIHRoaXMubW9kZWwuc2V0KCJuYW1l Iiwgc3JjVHlwZSsiLT4iK3RyZ3R5cGUpOworICAgICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnVuc2V0KCJuYW1lIik7 CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0pCisgICAgICAgICAg fSwKKyAgICAgICAgICAvKgorICAgICAgICAgICAqIFRleHQgY29udHJvbCBm b3Igdmlld2luZyB0YXJnZXQgdHlwZSBpbiBwcm9wZXJ0aWVzIGFuZAorICAg ICAgICAgICAqIGVkaXQgbW9kZSBvbmx5CisgICAgICAgICAgICovCisgICAg ICAgICAgeworICAgICAgICAgICAgaWQ6ICd0cmd0eXAnLCBsYWJlbDone3sg XygnVGFyZ2V0IHR5cGUnKSB9fScsIHR5cGU6ICd0ZXh0JywKKyAgICAgICAg ICAgIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRpc2FibGVkOiB0cnVlLCBtb2Rl OlsncHJvcGVydGllcycsJ2VkaXQnXQorICAgICAgICAgIH0sCisKKyAgICAg ICAgICAvKgorICAgICAgICAgICAqIFByb25hbWUgZmllbGQgaXMgZGVwZW5k ZW50IG9uIHNvdXJjZSB0eXBlIGFuZCB0YXJnZXQgdHlwZS4KKyAgICAgICAg ICAgKiBPbiBzb3VyY2UgYW5kIHRhcmdldCB0eXBlIGNoYW5nZWQgZXZlbnQs CisgICAgICAgICAgICogYXNzb2NpYXRlZCBmdW5jdGlvbnMgd2lsbCBiZSBm ZXRjaCB1c2luZyBhamF4IGNhbGwKKyAgICAgICAgICAgKi8KKyAgICAgICAg ICB7CisgICAgICAgICAgICBpZDogJ3Byb25hbWUnLCBsYWJlbDone3sgXygn RnVuY3Rpb24nKSB9fScsIGRlcHM6WydzcmN0eXAnLCAndHJndHlwJ10sCisg ICAgICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmdW5jdGlvbiht KSB7IHJldHVybiAhbS5pc05ldygpOyB9LAorICAgICAgICAgICAgZ3JvdXA6 ICdEZWZpbml0aW9uJywgbW9kZTogWydjcmVhdGUnXSwKKyAgICAgICAgICAg IGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsCisgICAgICAgICAgICBv cHRpb25zOiBmdW5jdGlvbigpIHsKKworICAgICAgICAgICAgICB2YXIgc3Jj VHlwID0gdGhpcy5tb2RlbC5nZXQoJ3NyY3R5cCcpOworICAgICAgICAgICAg ICB2YXIgdHJndHlwID0gdGhpcy5tb2RlbC5nZXQoJ3RyZ3R5cCcpOworICAg ICAgICAgICAgICB2YXIgcmVzID0gW107CisKKyAgICAgICAgICAgICAgaWYo c3JjVHlwICE9IHVuZGVmaW5lZCAmJiBzcmNUeXAgIT0gJycgJiYKKyAgICAg ICAgICAgICAgICAgdHJndHlwICE9IHVuZGVmaW5lZCAmJiB0cmd0eXAgIT0g JycpCisgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgdmFyIG5v ZGUgPSB0aGlzLmZpZWxkLmdldCgnc2NoZW1hX25vZGUnKSwKKyAgICAgICAg ICAgICAgICAgX3VybCA9IG5vZGUuZ2VuZXJhdGVfdXJsLmFwcGx5KAorICAg ICAgICAgICAgICAgICBub2RlLCBbCisgICAgICAgICAgICAgICAgICAgbnVs bCwgJ2dldF9mdW5jdGlvbnMnLCB0aGlzLmZpZWxkLmdldCgnbm9kZV9kYXRh JyksIGZhbHNlLAorICAgICAgICAgICAgICAgICAgIHRoaXMuZmllbGQuZ2V0 KCdub2RlX2luZm8nKQorICAgICAgICAgICAgICAgICBdKTsKKyAgICAgICAg ICAgICAgICAgJC5hamF4KHsKKyAgICAgICAgICAgICAgICAgdHlwZTogJ1BP U1QnLAorICAgICAgICAgICAgICAgICB0aW1lb3V0OiAzMDAwMCwKKyAgICAg ICAgICAgICAgICAgdXJsOiBfdXJsLAorICAgICAgICAgICAgICAgICBjYWNo ZTogZmFsc2UsCisgICAgICAgICAgICAgICAgIGFzeW5jOiBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgZGF0YTogeyJzcmN0eXAiIDogc3JjVHlwLCAidHJn dHlwIiA6IHRyZ3R5cH0sCisKKyAgICAgICAgICAgICAgICAgLy8gT24gc3Vj Y2VzcyByZXR1cm4gZnVuY3Rpb24gbGlzdCBmcm9tIHNlcnZlcgorICAgICAg ICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAg ICAgICAgICAgICAgICByZXMgPSByZXN1bHQuZGF0YTsKKyAgICAgICAgICAg ICAgICAgICByZXR1cm4gcmVzOworICAgICAgICAgICAgICAgICB9LAorCisg ICAgICAgICAgICAgICAgIC8vIE9uIGZhaWx1cmUgc2hvdyBlcnJvciBhcHBy b3ByaWF0ZSBlcnJvciBtZXNzYWdlIHRvIHVzZXIKKyAgICAgICAgICAgICAg ICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgeworICAg ICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICB2 YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4dCk7CisgICAg ICAgICAgICAgICAgICAgICBpZiAoZXJyLnN1Y2Nlc3MgPT0gMCkgeworICAg ICAgICAgICAgICAgICAgICAgICBtc2cgPSBTKCd7eyBfKCcgKyBlcnIuZXJy b3Jtc2cgKyAnKX19JykudmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgYWxlcnRpZnkuZXJyb3IoInt7IF8oJyIgKyBlcnIuZXJyb3Jtc2cgKyAi JykgfX0iKTsKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg ICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIHJldHVybiByZXM7CisgICAgICAgICAgfQorICAgICAgICB9LAorICAg ICAgICAvKgorICAgICAgICAgKiBUZXh0IHR5cGUgY29udHJvbCBmb3Igdmll d2luZyBmdW5jdGlvbiBuYW1lIGluIHByb3BlcnRpZXMgYW5kCisgICAgICAg ICAqIGVkaXQgbW9kZSBvbmx5CisgICAgICAgICAqLworICAgICAgICB7Cisg ICAgICAgICAgaWQ6ICdwcm9uYW1lJywgbGFiZWw6J3t7IF8oJ0Z1bmN0aW9u JykgfX0nLCB0eXBlOiAndGV4dCcsCisgICAgICAgICAgZ3JvdXA6ICdEZWZp bml0aW9uJywgZGlzYWJsZWQ6IHRydWUsIG1vZGU6Wydwcm9wZXJ0aWVzJywn ZWRpdCddCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnY2FzdGNvbnRl eHQnLCBsYWJlbDone3sgXygnQ29udGV4dCcpIH19JywKKyAgICAgICAgICBv cHRpb25zOnsnb25UZXh0JzonSU1QTElDSVQnLCdvZmZUZXh0JzonRVhQTElD SVQnfSwKKyAgICAgICAgICBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdzdHJp bmcnLCBncm91cDogJ0RlZmluaXRpb24nLAorICAgICAgICAgIG1vZGU6Wydj cmVhdGUnXSwKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5Td2l0Y2hD b250cm9sLmV4dGVuZCh7CisgICAgICAgICAgICBnZXRWYWx1ZUZyb21ET006 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICByZXR1cm4gdGhpcy4kaW5w dXQucHJvcCgnY2hlY2tlZCcpID8gJ0lNUExJQ0lUJyA6ICdFWFBMSUNJVCc7 CisgICAgICAgICAgICB9CisgICAgICAgICAgfSkKKyAgICAgICAgfSwKKyAg ICAgICAgLyoKKyAgICAgICAgICogVGV4dCBjb250cm9sIGZvciB2aWV3aW5n IGNvbnRleHQgaW4gcHJvcGVydGllcyBhbmQKKyAgICAgICAgICogZWRpdCBt b2RlCisgICAgICAgICAqLworICAgICAgICB7CisgICAgICAgICAgaWQ6ICdj YXN0Y29udGV4dCcsIGxhYmVsOid7eyBfKCdDb250ZXh0JykgfX0nLCBkaXNh YmxlZDogdHJ1ZSwKKyAgICAgICAgICBvcHRpb25zOlt7CisgICAgICAgICAg ICBsYWJlbDogJ0lNUExJQ0lUJywgdmFsdWU6ICdJTVBMSUNJVCcKKyAgICAg ICAgICB9LHsKKyAgICAgICAgICAgIGxhYmVsOiAnRVhQTElDSVQnLCB2YWx1 ZTogJ0VYUExJQ0lUJworICAgICAgICAgIH0seworICAgICAgICAgICAgbGFi ZWw6ICdBU1NJR05NRU5UJywgdmFsdWU6ICdBU1NJR05NRU5UJworICAgICAg ICAgIH1dLCBlZGl0YWJsZTogZmFsc2UsIHR5cGU6ICdzZWxlY3QyJywgZ3Jv dXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICBtb2RlOlsncHJvcGVydGll cycsICdlZGl0J10KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdzeXNj YXN0JywgbGFiZWw6J3t7IF8oJ1N5c3RlbSBDYXN0PycpIH19JywgbW9kZTog Wydwcm9wZXJ0aWVzJ10sCisgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLCB0 eXBlOiAndGV4dCcKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkZXNj cmlwdGlvbicsIGxhYmVsOid7eyBfKCdDb21tZW50JykgfX0nLHR5cGU6ICd0 ZXh0JywgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICB0eXBlOiAn bXVsdGlsaW5lJywgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50 XzUwJworICAgICAgICB9CisgICAgICAgIF0sCisKKyAgICAgICAgLyoKKyAg ICAgICAgICogVHJpZ2dlcnMgY29udHJvbCBzcGVjaWZpYyBlcnJvciBtZXNz YWdlcyBmb3Igc291cmNlIHR5cGUgYW5kCisgICAgICAgICAqIHRhcmdldCB0 eXBlIGlmIGFueSBvbmUgb2YgdGhlbSBpcyBub3Qgc2VsZWN0ZWQgd2hpbGUg Y3JlYXRpbmcKKyAgICAgICAgICogbmV3IGNhc3QKKyAgICAgICAgICovCisg ICAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbihrZXlzKXsKKworICAgICAgICAg IHZhciBzcmN0eXBlID0gdGhpcy5nZXQoJ3NyY3R5cCcpOworICAgICAgICAg IHZhciB0cmd0eXBlID0gdGhpcy5nZXQoJ3RyZ3R5cCcpOworCisgICAgICAg ICAgLy8gdmFsaWRhdGUgc291cmNlIHR5cGUgY29udHJvbAorICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKHNyY3R5cGUpIHx8IF8uaXNOdWxsKHNyY3R5 cGUpIHx8IFN0cmluZyhzcmN0eXBlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywg JycpID09ICcnKSB7CisgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ1Nv dXJjZSB0eXBlIG11c3QgYmUgc2VsZWN0ZWQhJykgfX0nOworICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc3JjdHlwJywgbXNnKTsKKyAgICAg ICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfQorICAgICAgICAgIGVs c2UKKyAgICAgICAgICB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ3NyY3R5cCcpOworICAgICAgICAgIH0KKworICAgICAgICAgIC8v IHZhbGlkYXRlIHRhcmdldCB0eXBlIGNvbnRyb2wKKyAgICAgICAgICBpZiAo Xy5pc1VuZGVmaW5lZCh0cmd0eXBlKSB8fCBfLmlzTnVsbCh0cmd0eXBlKSB8 fCBTdHJpbmcodHJndHlwZSkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdUYXJnZXQg dHlwZSBtdXN0IGJlIHNlbGVjdGVkIScpIH19JzsKKyAgICAgICAgICAgIHRo aXMuZXJyb3JNb2RlbC5zZXQoJ3RyZ3R5cCcsIG1zZyk7CisgICAgICAgICAg ICByZXR1cm4gbXNnOworICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisg ICAgICAgICAgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0 KCd0cmd0eXAnKTsKKyAgICAgICAgICB9CisgICAgICAgICAgdGhpcy50cmln Z2VyKCdvbi1zdGF0dXMtY2xlYXInKTsKKyAgICAgICAgICByZXR1cm4gbnVs bDsKKyAgICAgICAgfQorICAgICAgfSkKKyAgfSk7CisKKyAgfQorICAgIHJl dHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtY2FzdCddOworfSk7ClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nh c3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9jcmVhdGUuc3FsIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9jcmVh dGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEz MDMxNjQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxh dGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2NyZWF0ZS5zcWwKQEAgLTAsMCArMSwy MCBAQAoreyMgQ1JFQVRFIENBU1QgU3RhdGVtZW50ICN9Cit7JSBpZiBpc19z cWwgJX0KKy0tIENhc3Q6IHt7Y29ubnxxdFR5cGVJZGVudChkYXRhLnNyY3R5 cCl9fS0+e3sgY29ubnxxdFR5cGVJZGVudChkYXRhLnRyZ3R5cCkgfX07CisK Ky0tIERST1AgQ0FTVCAoe3sgY29ubnxxdFR5cGVJZGVudChkYXRhLnNyY3R5 cCkgfX0gQVMge3sgY29ubnxxdFR5cGVJZGVudChkYXRhLnRyZ3R5cCkgfX0p OworCit7JSBlbmRpZiAlfQoreyUgaWYgZGF0YSBhbmQgZGF0YS5zcmN0eXAg YW5kIGRhdGEudHJndHlwICV9CitDUkVBVEUgQ0FTVCAoe3sgY29ubnxxdFR5 cGVJZGVudChkYXRhLnNyY3R5cCkgfX0gQVMge3sgY29ubnxxdFR5cGVJZGVu dChkYXRhLnRyZ3R5cCkgfX0pCit7JSBpZiBkYXRhLnByb25hbWUgYW5kIGRh dGEucHJvbmFtZSAhPSAnYmluYXJ5IGNvbXBhdGlibGUnJX0KKyAgICBXSVRI IEZVTkNUSU9OIHt7ZGF0YS5wcm9uYW1lfX17JSBlbHNlICV9CisgICAgV0lU SE9VVCBGVU5DVElPTnslIGVuZGlmICV9Cit7JSBpZiBkYXRhLmNhc3Rjb250 ZXh0IGFuZCBkYXRhLmNhc3Rjb250ZXh0ICE9ICdFWFBMSUNJVCcgJX0KKwor ICAgIEFTIHt7ZGF0YS5jYXN0Y29udGV4dH19eyUgZW5kaWYgJX07Cit7IyBE ZXNjcmlwdGlvbiBmb3IgQ0FTVCAjfQoreyUgaWYgZGF0YS5kZXNjcmlwdGlv biAlfQorQ09NTUVOVCBPTiBDQVNUICh7eyBjb25ufHF0VHlwZUlkZW50KGRh dGEuc3JjdHlwKSB9fSBBUyB7eyBjb25ufHF0VHlwZUlkZW50KGRhdGEudHJn dHlwKSB9fSkKKyAgICAgIElTIHt7IGRhdGEuZGVzY3JpcHRpb258cXRMaXRl cmFsIH19OworeyUgZW5kaWYgJX17JSBlbmRpZiAlfQpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1w bGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbCBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9j YXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvZGVsZXRlLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjhkOGI2Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0 L3NxbC85LjFfcGx1cy9kZWxldGUuc3FsCkBAIC0wLDAgKzEsMTQgQEAKK3sj IEZFVENIIENBU1QgU09VUkNFIFRZUEUgQU5EIFRBUkdFVCBUWVBFIFN0YXRl bWVudCAjfQoreyUgaWYgY2lkICV9CisgIFNFTEVDVAorICAgIGZvcm1hdF90 eXBlKGNhLmNhc3Rzb3VyY2UsIG51bGwpIGFzIGNhc3Rzb3VyY2UsCisgICAg Zm9ybWF0X3R5cGUoY2EuY2FzdHRhcmdldCwgbnVsbCkgYXMgY2FzdHRhcmdl dAorICBGUk9NCisgICAgcGdfY2FzdCBjYQorICBXSEVSRQorICAgIGNhLm9p ZCA9IHt7Y2lkfX06Ok9JRDsKK3slIGVuZGlmICV9Cit7IyBEUk9QIENBU1Qg U3RhdGVtZW50ICN9Cit7JSBpZiBjYXN0c291cmNlIGFuZCBjYXN0dGFyZ2V0 ICV9CitEUk9QIENBU1QgKHt7Y2FzdHNvdXJjZX19IEFTIHt7Y2FzdHRhcmdl dH19KSB7JSBpZiBjYXNjYWRlICV9Q0FTQ0FERXslZW5kaWYlfTsKK3slIGVu ZGlmICV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9m dW5jdGlvbnMuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3Nx bC85LjFfcGx1cy9mdW5jdGlvbnMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLmJjNmFjYTkKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL2Z1bmN0 aW9ucy5zcWwKQEAgLTAsMCArMSwxOCBAQAoreyMgRkVUQ0ggRlVOQ1RJT05T IGRlcGVuZGluZyB1cG9uIFNPVVJDRSBUWVBFIGFuZCBUQVJHRVQgVFlQRSBJ TiBDQVNUICAjfQorU0VMRUNUCisgIHByb25hbWUgfHwgJygnIHx8IHBnX2Nh dGFsb2cucGdfZ2V0X2Z1bmN0aW9uX2lkZW50aXR5X2FyZ3VtZW50cyhwLm9p ZCkgfHwgJyknIGFzIHByb25hbWUsCisgIG5zcG5hbWUsCisgIHByb2FyZ3R5 cGVzCitGUk9NCisgIHBnX3Byb2MgcCBKT0lOIHBnX25hbWVzcGFjZSBuIE9O IG4ub2lkPXAucHJvbmFtZXNwYWNlCitXSEVSRQorICBwcm9hcmd0eXBlc1sw XSA9IChTRUxFQ1QgdC5vaWQgRlJPTSBwZ190eXBlIHQgV0hFUkUgZm9ybWF0 X3R5cGUodC5vaWQsIE5VTEwpID0ge3tzcmN0eXB8cXRMaXRlcmFsfX0pCisg IEFORCBwcm9yZXR0eXBlID0gKFNFTEVDVCB0Lm9pZCBGUk9NIHBnX3R5cGUg dCBXSEVSRSBmb3JtYXRfdHlwZSh0Lm9pZCwgTlVMTCkgPSB7e3RyZ3R5cHxx dExpdGVyYWx9fSkKKyAgQU5ECisgICAgQ0FTRQorICAgIFdIRU4gYXJyYXlf bGVuZ3RoKHByb2FyZ3R5cGVzLDEpICA9IDIgVEhFTgorICAgICAgcHJvYXJn dHlwZXNbMV0gPSAyMworICAgIFdIRU4gYXJyYXlfbGVuZ3RoKHByb2FyZ3R5 cGVzLDEpICA+PSAzIFRIRU4KKyAgICAgIHByb2FyZ3R5cGVzWzFdID0gMjMg QU5EIHByb2FyZ3R5cGVzWzJdID0gMTYKKyAgICBFTFNFIFRSVUUKKyAgICBF TkQKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9z cWwvOS4xX3BsdXMvZ2V0c3JjYW5kdHJndHR5cGUuc3FsIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nh c3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9nZXRzcmNhbmR0cmd0 dHlwZS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MWUwNWNjYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9jYXN0cy90ZW1w bGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvZ2V0c3JjYW5kdHJndHR5cGUuc3Fs CkBAIC0wLDAgKzEsNDMgQEAKK1NFTEVDVAorICAgICoKK0ZST00gKAorCSAg ICBTRUxFQ1QgZm9ybWF0X3R5cGUodC5vaWQsTlVMTCkgQVMgdHlwbmFtZSwK KwkJQ0FTRQorCQkgIFdIRU4gdHlwZWxlbSA+IDAgVEhFTiB0eXBlbGVtCisJ ICAgICAgRUxTRSB0Lm9pZAorCQlFTkQgYXMgZWxlbW9pZCwKKwkJICB0eXBs ZW4sCisJCSAgdHlwdHlwZSwKKwkJICB0Lm9pZCwKKwkgICAgICBuc3BuYW1l LAorCQkgIChTRUxFQ1QgQ09VTlQoMSkgRlJPTSBwZ190eXBlIHQyIFdIRVJF IHQyLnR5cG5hbWUgPSB0LnR5cG5hbWUpID4gMSBBUyBpc2R1cAorCSAgICBG Uk9NCisJICAgICAgcGdfdHlwZSB0CisJICAgICAgSk9JTiBwZ19uYW1lc3Bh Y2UgbnNwIE9OIHR5cG5hbWVzcGFjZT1uc3Aub2lkCisJCVdIRVJFCisJCSAg KE5PVCAodHlwbmFtZSA9ICd1bmtub3duJworCQkgICBBTkQgbnNwbmFtZSA9 ICdwZ19jYXRhbG9nJykpCisJCSAgIEFORCB0eXBpc2RlZmluZWQKKwkJICAg QU5EIHR5cHR5cGUgSU4gKCdiJywgJ2MnLCAnZScsICdyJykKKwkJICAgQU5E IE5PVCBFWElTVFMgKAorCQkgICAgICAgICAgICAgICAgICAgICBTRUxFQ1QK KwkJICAgICAgICAgICAgICAgICAgICAgICAxCisJCSAgICAgICAgICAgICAg ICAgICAgIEZST00KKwkJICAgICAgICAgICAgICAgICAgICAgICBwZ19jbGFz cworCQkgICAgICAgICAgICAgICAgICAgICBXSEVSRQorCQkgICAgICAgICAg ICAgICAgICAgICAgIHJlbG5hbWVzcGFjZSA9IHR5cG5hbWVzcGFjZQorCQkg ICAgICAgICAgICAgICAgICAgICAgIEFORCByZWxuYW1lID0gdHlwbmFtZQor CQkgICAgICAgICAgICAgICAgICAgICAgIEFORCByZWxraW5kICE9ICdjJykK KwkJICAgICAgICAgICAgICAgICAgICAgICBBTkQgKHR5cG5hbWUgTk9UIExJ S0UgJ18lJworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1IgTk9U IEVYSVNUUyAoCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFNFTEVDVAorCQkgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDEKKwkJICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTQorCQkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2Ns YXNzCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFdIRVJFCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVsbmFtZXNwYWNlID0gdHlwbmFtZXNwYWNl CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQU5EIHJlbG5hbWUgPSBTVUJTVFJJTkcodHlwbmFtZSBGUk9NIDIp OjpuYW1lCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQU5EIHJlbGtpbmQgIT0gJ2MnKSkKKwkJICAgQU5EIG5z cC5uc3BuYW1lICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnICkgQVMgZHVtbXkK K09SREVSIEJZCisgIG5zcG5hbWUgPD4gJ3BnX2NhdGFsb2cnLCBuc3BuYW1l IDw+ICdwdWJsaWMnLCBuc3BuYW1lLCAxCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv Y2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVzL3Byb3BlcnRpZXMu c3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1 cy9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4zYjRjMzMwCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nh c3RzL3RlbXBsYXRlcy9jYXN0L3NxbC85LjFfcGx1cy9wcm9wZXJ0aWVzLnNx bApAQCAtMCwwICsxLDYxIEBACit7IyBHZXQgT0lEIGZvciBDQVNUICN9Cit7 JSBpZiBzcmN0eXAgYW5kIHRyZ3R5cCAlfQorICBTRUxFQ1QKKyAgICBjYS5v aWQKKyAgRlJPTSBwZ19jYXN0IGNhCisgIFdIRVJFIGNhLmNhc3Rzb3VyY2Ug PSAoU0VMRUNUIHQub2lkIEZST00gcGdfdHlwZSB0IFdIRVJFIGZvcm1hdF90 eXBlKHQub2lkLCBOVUxMKSA9IHt7c3JjdHlwfHF0TGl0ZXJhbH19KQorICBB TkQgY2EuY2FzdHRhcmdldCA9IChTRUxFQ1QgdC5vaWQgRlJPTSBwZ190eXBl IHQgV0hFUkUgZm9ybWF0X3R5cGUodC5vaWQsIE5VTEwpID0ge3t0cmd0eXB8 cXRMaXRlcmFsfX0pCisgIHslIGlmIGRhdGxhc3RzeXNvaWQgJX0KKyAgIEFO RCBjYS5vaWQgPiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lECisgIHslIGVuZGlm ICV9CisKK3sjIEZFVENIIHByb3BlcnRpZXMgZm9yIENBU1QgI30KK3slIGVs c2UgJX0KKyAgU0VMRUNUCisgICAgY2Eub2lkLAorICBDQVNFCisgICAgV0hF TiB7e2RhdGxhc3RzeXNvaWR9fTo6T0lEID4gY2Eub2lkIHRoZW4gJ1llcycg RUxTRSAnTm8nCisgIEVORCBBUyBzeXNjYXN0LAorICBDQVNFCisgICAgV0hF TiBjYS5jYXN0Y29udGV4dCA9ICdhJyBUSEVOICdBU1NJR05NRU5UJworICAg IFdIRU4gY2EuY2FzdGNvbnRleHQgPSAnaScgVEhFTiAnSU1QTElDSVQnCisg ICAgV0hFTiBjYS5jYXN0Y29udGV4dCA9ICdlJyBUSEVOICdFWFBMSUNJVCcK KyAgRU5EIEFTIGNhc3Rjb250ZXh0LAorICBDQVNFCisgICAgV0hFTiBwcm9u YW1lIElTIE5VTEwgVEhFTiAnYmluYXJ5IGNvbXBhdGlibGUnCisgICAgRUxT RSBwcm9uYW1lIHx8ICcoJyB8fCBwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlv bl9pZGVudGl0eV9hcmd1bWVudHMocHIub2lkKSB8fCAnKScKKyAgRU5EIEFT IHByb25hbWUsCisgICAgY2EuY2FzdGZ1bmMsCisgICAgZm9ybWF0X3R5cGUo c3Qub2lkLE5VTEwpIEFTIHNyY3R5cCwKKyAgICBmb3JtYXRfdHlwZSh0dC5v aWQsdHQudHlwdHlwbW9kKSBBUyB0cmd0eXAsCisgICAgbnMubnNwbmFtZSBB UyBzcmNuc3BuYW1lLAorICAgIG50Lm5zcG5hbWUgQVMgdHJnbnNwbmFtZSwK KyAgICBucC5uc3BuYW1lIEFTIHByb25zcG5hbWUsCisgICAgZGVzY3JpcHRp b24sCisgICAgY29uY2F0KGZvcm1hdF90eXBlKHN0Lm9pZCxOVUxMKSwnLT4n LGZvcm1hdF90eXBlKHR0Lm9pZCx0dC50eXB0eXBtb2QpKSBhcyBuYW1lCisg IEZST00gcGdfY2FzdCBjYQorICBKT0lOIHBnX3R5cGUgc3QgT04gc3Qub2lk PWNhc3Rzb3VyY2UKKyAgSk9JTiBwZ19uYW1lc3BhY2UgbnMgT04gbnMub2lk PXN0LnR5cG5hbWVzcGFjZQorICBKT0lOIHBnX3R5cGUgdHQgT04gdHQub2lk PWNhc3R0YXJnZXQKKyAgSk9JTiBwZ19uYW1lc3BhY2UgbnQgT04gbnQub2lk PXR0LnR5cG5hbWVzcGFjZQorICBMRUZUIEpPSU4gcGdfcHJvYyBwciBPTiBw ci5vaWQ9Y2FzdGZ1bmMKKyAgTEVGVCBKT0lOIHBnX25hbWVzcGFjZSBucCBP TiBucC5vaWQ9cHIucHJvbmFtZXNwYWNlCisgIExFRlQgT1VURVIgSk9JTiBw Z19kZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9Y2Eub2lkIEFORCBk ZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jYXN0Jzo6cmVn Y2xhc3MpCisKKyAgeyUgaWYgY2lkICV9CisgICAgV0hFUkUgY2Eub2lkPXt7 Y2lkfX06OmludAorICB7JSBlbmRpZiAlfQorCistLVRPRE86IGFkZCBjaGVj ayBmb3Igc2hvd1N5c3RlbU9iamVjdCgpLiBjdXJyZW50bHkgYXNzdW1lZCBh cyBmYWxzZQorICB7IworICB7JSBpZiBkYXRsYXN0c3lzb2lkICV9CisgICAg eyUgaWYgY2lkICV9CisgICAgICBBTkQKKyAgICB7JSBlbHNlICV9CisgICAg ICBXSEVSRQorICAgIHslIGVuZGlmICV9CisgICAgY2Eub2lkID4ge3tkYXRs YXN0c3lzb2lkfX06Ok9JRAorICB7JSBlbmRpZiAlfQorICAjfQorICBPUkRF UiBCWSBzdC50eXBuYW1lLCB0dC50eXBuYW1lCit7JSBlbmRpZiAlfQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9j YXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvc3FsLnNxbCBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9jYXN0cy90ZW1wbGF0ZXMvY2FzdC9zcWwvOS4xX3BsdXMvc3FsLnNx bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGM1MmFk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9j YXN0L3NxbC85LjFfcGx1cy9zcWwuc3FsCkBAIC0wLDAgKzEsNDQgQEAKK1NF TEVDVAorICAgICAgICBhcnJheV90b19zdHJpbmcoYXJyYXlfYWdnKHNxbCks IEUnXG5cbicpIGFzIHNxbAorRlJPTQorKFNFTEVDVAorICAgRSctLSBDYXN0 OiAnIHx8CisgICBmb3JtYXRfdHlwZShzdC5vaWQsIG51bGwpfHwgRScgLT4g JyB8fAorICAgZm9ybWF0X3R5cGUodHQub2lkLCB0dC50eXB0eXBtb2QpIHx8 CisgICBFJ1xuXG4tLSBEUk9QIENBU1QgKCcgfHwgZm9ybWF0X3R5cGUoc3Qu b2lkLCBudWxsKSB8fAorICAgRScgQVMgJyB8fCBmb3JtYXRfdHlwZSh0dC5v aWQsdHQudHlwdHlwbW9kKSB8fAorICAgRScpO1xuXG4gIENSRUFURSBDQVNU ICgnIHx8IGZvcm1hdF90eXBlKHN0Lm9pZCwgbnVsbCkgfHwKKyAgIEUnIEFT ICcgfHwgZm9ybWF0X3R5cGUodHQub2lkLHR0LnR5cHR5cG1vZCkgfHwgRScp XG4nIHx8CisgICBDQVNFIFdIRU4gY2EuY2FzdGZ1bmMgIT0gMCBUSEVOCisg ICBFJ1x0V0lUSCBGVU5DVElPTiAnIHx8CisgICBwci5wcm9uYW1lIHx8ICco JyB8fCBDT0FMRVNDRShwZ19jYXRhbG9nLnBnX2dldF9mdW5jdGlvbl9pZGVu dGl0eV9hcmd1bWVudHMocHIub2lkKSwgJycpIHx8IEUnKScKKyAgIFdIRU4g Y2EuY2FzdGZ1bmMgPSAwIEFORCBjYS5jYXN0bWV0aG9kID0gJ2knIFRIRU4K KyAgIEUnXHRXSVRIIElOT1VUJworICAgRUxTRSBFJ1x0V0lUSE9VVCBGVU5D VElPTicgRU5EIHx8CisgICBDQVNFIFdIRU4gY2EuY2FzdGNvbnRleHQgPSAn YScgVEhFTiBFJ1xuXHRBUyBBU1NJR05NRU5UOycKKyAgIFdIRU4gY2EuY2Fz dGNvbnRleHQgPSAnaScgVEhFTiBFJ1xuXHRBUyBJTVBMSUNJVDsnCisgICBF TFNFIEUnOycgRU5EIHx8CisgICBDQVNFIFdIRU4gYS5kZXNjcmlwdGlvbiBJ UyBOT1QgTlVMTCBUSEVOCisgICAgICAgRSdcblxuQ09NTUVOVCBPTiBDQVNU ICgnIHx8IChmb3JtYXRfdHlwZShzdC5vaWQsTlVMTCkpIHx8CisgICAgICAg RScgQVMgJyB8fCAoZm9ybWF0X3R5cGUodHQub2lkLHR0LnR5cHR5cG1vZCkp IHx8CisgICAgICAgRScpIElTICcgfHwgcGdfY2F0YWxvZy5xdW90ZV9saXRl cmFsKGRlc2NyaXB0aW9uKSB8fCBFJzsnCisgICBFTFNFICcnICBFTkQgYXMg c3FsCisgRlJPTQorICAgIHBnX2Nhc3QgY2EKKyAgICBKT0lOIHBnX3R5cGUg c3QgT04gc3Qub2lkPWNhLmNhc3Rzb3VyY2UKKyAgICBKT0lOIHBnX25hbWVz cGFjZSBucyBPTiBucy5vaWQ9c3QudHlwbmFtZXNwYWNlCisgICAgSk9JTiBw Z190eXBlIHR0IE9OIHR0Lm9pZD1jYS5jYXN0dGFyZ2V0CisgICAgSk9JTiBw Z19uYW1lc3BhY2UgbnQgT04gbnQub2lkPXR0LnR5cG5hbWVzcGFjZQorICAg IExFRlQgSk9JTiBwZ19wcm9jIHByIE9OIHByLm9pZD1jYS5jYXN0ZnVuYwor ICAgIExFRlQgSk9JTiAoCisgICAgICAgIFNFTEVDVAorICAgICAgICAgICAg ICAgIGRlcy5kZXNjcmlwdGlvbiBhcyBkZXNjcmlwdGlvbiwKKyAgICAgICAg ICAgICAgICBkZXMub2Jqb2lkIGFzIGRlc2NvaWQKKyAgICAgICAgRlJPTQor ICAgICAgICAgICAgICAgIHBnX2Rlc2NyaXB0aW9uIGRlcworICAgICAgICBX SEVSRQorICAgICAgICAgICAgICAgIGRlcy5vYmpvaWQ9e3tjaWR9fTo6T0lE IEFORCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jYXN0 Jzo6cmVnY2xhc3MKKyAgICAgICAgKSBhIE9OIChhLmRlc2NvaWQgPSBjYS5v aWQpCisgV0hFUkUKKyAgICBjYS5vaWQ9e3tjaWR9fTo6T0lECisgICAgKSBj OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRlcy9jYXN0L3Nx bC85LjFfcGx1cy91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2Nhc3RzL3RlbXBsYXRl cy9jYXN0L3NxbC85LjFfcGx1cy91cGRhdGUuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiOTBhMjMKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9kYXRhYmFzZXMvY2FzdHMvdGVtcGxhdGVzL2Nhc3Qvc3FsLzkuMV9wbHVz L3VwZGF0ZS5zcWwKQEAgLTAsMCArMSw2IEBACit7IyBVUERBVEUgRGVzY3Jp cHRpb24gZm9yIENBU1QgI30KKworeyUgIGlmIGRhdGEgYW5kICdkZXNjcmlw dGlvbicgaW4gZGF0YSBhbmQgZGF0YS5kZXNjcmlwdGlvbiAhPSBvX2RhdGEu ZGVzY3JpcHRpb24gJX0KKyAgQ09NTUVOVCBPTiBDQVNUICh7eyBjb25ufHF0 VHlwZUlkZW50KG9fZGF0YS5zcmN0eXApIH19IEFTIHt7IGNvbm58cXRUeXBl SWRlbnQob19kYXRhLnRyZ3R5cCkgfX0pCisgICAgSVMge3sgZGF0YS5kZXNj cmlwdGlvbnxxdExpdGVyYWwgfX07Cit7JSBlbmRpZiAlfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUK --001a1143f8e0251f4d052c1d7000 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 --001a1143f8e0251f4d052c1d7000--