Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qZRoo-005MlN-Rg for pgadmin-hackers@arkaria.postgresql.org; Fri, 25 Aug 2023 08:05:23 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1qZRom-000lCf-Vd for pgadmin-hackers@arkaria.postgresql.org; Fri, 25 Aug 2023 08:05:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1qZRom-000lCP-C3 for pgadmin-hackers@lists.postgresql.org; Fri, 25 Aug 2023 08:05:20 +0000 Received: from mail-pj1-x1034.google.com ([2607:f8b0:4864:20::1034]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qZRod-000vzp-HO for pgadmin-hackers@postgresql.org; Fri, 25 Aug 2023 08:05:19 +0000 Received: by mail-pj1-x1034.google.com with SMTP id 98e67ed59e1d1-26f4bc74131so494159a91.1 for ; Fri, 25 Aug 2023 01:05:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692950709; x=1693555509; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=uGF9/x0uoHuNhsoajCIC79O1vvZ9WAEtX6vYfUBWqFM=; b=OhP9D+8uszuDvMiaOAOA8FZJ9YUrB/J3AgUD1gQYFEIXFCv7+NzJbEu3Y6xuS0BAJI ODAPRlrReuXdj/RAEQNPsuzP9o++UX/TSQy16jUH/qCkme+A60DrT4WeC34wBqI9s+br oHE78VVteikZ6mghs13qjjSeev+rZtMTNiLI1hlkic4MKnSooiDJleMnc7dixkx4OMWC 21Ju6OEh+CNAAziwiyQtwQKDuacmx+NgOXmCMEVe43TkkXs2fddIWwbvqd5YIgvyFHb2 iBT3R7Ng5J40308VoB1WFuXPnfUeZGC4EaL+ItomsGM5LXdXJQCOXWoRJjJwid+PqsUw i5PA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692950709; x=1693555509; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uGF9/x0uoHuNhsoajCIC79O1vvZ9WAEtX6vYfUBWqFM=; b=mFQO1x2uulPzbfqVBD2ZBybVDl/nci5vdF1dplvrbYS9ssYkwdF+MpLMJBTmhPPnfI 4dqbnGf/pU4DjLqG43b8xBFpdqVOzvKGdG7S3dSMX36XTJ2bPAMdqICj3KEkn4bK4MrF pA+VJ73kUnKu1CjXn/35Sqbd/kLIZ/R2oiumsMxQKiDfzjxnf6Lp8tG44IEtAzE+Jrr/ r0iH8IDRk7iJNJd2DgJ19DbMpsyoWic0iGUBosYoCX3XQqwVwd6r/WzAtF/fT3ANiNlF RquGCYDgIXrTJu+BcsGsVWzlvH/pqmxqrsOAeqoxSwhNgC3TsX280rxiIrTxrFXhE1AC QNpA== X-Gm-Message-State: AOJu0YyE2kmo1g5ghIq8v96drEl8MzJrDeSnErAhN3m8hfRQ4avdUPm2 8DBog/xOj3dMi0LQlsgDXx6LtdxLxllkKZZtN8DCnSRYbQeUN6Si X-Google-Smtp-Source: AGHT+IHIfWcwHqrrWxVsTHDqzFEGxssp3Rg5Gfqd3u3xNG2/PY4eLjTaDgJx06RnWFKYOaehN0rb0mdspopJ37JT+nw= X-Received: by 2002:a17:90b:33c2:b0:263:5376:b952 with SMTP id lk2-20020a17090b33c200b002635376b952mr27582989pjb.9.1692950708901; Fri, 25 Aug 2023 01:05:08 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sahil Harpal Date: Fri, 25 Aug 2023 13:34:57 +0530 Message-ID: Subject: Re: Pgadmin4 System Stats Extension Design To: Aditya Toshniwal Cc: Khushboo Vashi , pgadmin-hackers@postgresql.org, Dave Page , Akshay Joshi , Ashesh Vashi Content-Type: multipart/mixed; boundary="000000000000a081960603bacd77" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a081960603bacd77 Content-Type: multipart/related; boundary="000000000000a081960603bacd76" --000000000000a081960603bacd76 Content-Type: multipart/alternative; boundary="000000000000a081940603bacd75" --000000000000a081940603bacd75 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Aditya, On Fri, 25 Aug 2023 at 12:32, Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > > On Fri, Aug 25, 2023 at 12:15=E2=80=AFPM Sahil Harpal > wrote: > >> Hi Aditya, >> >> On Fri, 25 Aug 2023 at 12:06, Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Sahil, >>> >>> On Fri, Aug 25, 2023 at 12:02=E2=80=AFPM Sahil Harpal >>> wrote: >>> >>>> Hi Aditya, >>>> On Fri, 25 Aug 2023 at 11:29, Aditya Toshniwal < >>>> aditya.toshniwal@enterprisedb.com> wrote: >>>> [image: image.gif] >>>> >>>>> Hi Sahil, >>>>> On Thu, Aug 24, 2023 at 8:07=E2=80=AFPM Sahil Harpal < >>>>> sahilharpal1234@gmail.com> wrote: >>>>> >>>>>> Hi, >>>>>> Can we include total space stats (left pie chart) in the same bar >>>>>> chart? or would it be better if we keep it separate? >>>>>> [image: image.png] >>>>>> >>>>> How do you propose to merge both? I would also suggest using a stacke= d >>>>> bar chart on the right. And format from bytes to MBs. >>>>> >>>>>> [image: image.gif] >>>>>> >>>>> >>>> Currently, I have implemented like this: >>>> [image: image.png] >>>> So, I was thinking of adding one more column for total space for each >>>> disk. >>>> Regarding the stacked bar chart, we will need to increase the height o= f >>>> the default chart container; otherwise, the proportion of different >>>> categories won't be clearly visible in some cases. >>>> And I believe that if we use a stacked bar chart, there won't be a nee= d >>>> to provide total space details, as the height of that stacked bar will= be >>>> nothing but the total space, right? >>>> >>> I don't think we'll need to increase the height though. Even if you use >>> stacks, they will show total for each drive and not total available spa= ce. >>> >> >> Ahh yes, users won't be able to see the absolute total value. So should = I >> change it to a stacked bar with 3 categories then? >> > I would suggest keeping the pie chart and making the stacks of used and > unused. If possible please keep the pie chart colors different from bar > chart. > Ok, sure I'll do it. On Fri, 25 Aug 2023 at 11:56, Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Hi Sahil, > Can you please share the rebased patch? > Please find the attached patch with recent changes. It doesn't include this stacked bar, but it contains things suggested in the second review, and I also tried to resolve the tooltip issue. Let me know if it's working correctly. I have also pushed these changes here: https://github.com/Sahil1479/pgadmin4/tree/system_stats [Branch: system_stats] I will share the final patch with a detailed summary of all the things that have been changed once I complete this stacked/pie chart and a few more refinements. Thank you, Sahil --000000000000a081940603bacd75 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Aditya,
On Fri, 25 Aug 2023 = at 12:32, Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
3D""

=
On Fri, Aug 25, 2023 at 12:15=E2=80= =AFPM Sahil Harpal <sahilharpal1234@gmail.com> wrote:
Hi A= ditya,

On Fri, 25 Aug 2023= at 12:06, Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote= :
3D""
Hi=C2=A0Sahil,

On Fri, Aug 25, 2023 at 12:02=E2=80= =AFPM Sahil Harpal <sahilharpal1234@gmail.com> wrote:
Hi A= ditya,
On Fri, 25 Aug 2023 at 11:29, Aditya Toshniwal <aditya.toshniwal@e= nterprisedb.com> wrote:
=3D"image.gif"
Hi=C2=A0Sahil,
On Thu, Aug = 24, 2023 at 8:07=E2=80=AFPM Sahil Harpal <sahilharpal1234@gmail.com> wrote:
=
Hi,
Can we include total space stats (left pie chart) = in the same bar chart? or would it be better if we keep it separate?
<= div>3D"image.png"
How do you propose to merge both?= I would also suggest using a stacked bar chart on the right.=C2=A0<= span class=3D"gmail_default" style=3D"font-family:verdana,sans-serif">And f= ormat from bytes to MBs.
3D"image.gif"
=C2=A0
Currently, I have imple= mented like this:
3D"image.png"=
So, I was thinking of adding o= ne more column for total space for each disk.
Regarding the stack= ed bar chart, we will need to increase the height of the default chart cont= ainer; otherwise, the proportion of different categories won't be clear= ly visible in some cases.
And I believe that if we use a stac= ked bar chart, there won't be a need to provide total space details, as= the height of that stacked bar will be nothing but the total space, right?=
I don't think we'll need to inc= rease the height though. Even if you use stacks, they will show total for e= ach drive and not total available space.
=C2=A0
Ahh yes, users won't be able to see the absolu= te total value. So should I change it to a stacked bar with 3 categories th= en?
I would suggest keeping the pie chart and making the stacks of used an= d unused. If possible please keep the pie chart colors different from bar c= hart.
Ok, sure I'll do it.

On Fri, 25 Aug 2023 a= t 11:56, Aditya Toshniwal <aditya.toshniwal@enterprisedb.com> wrote:
=
Hi=C2=A0Sahil,
Can you please share the rebased patch?
Please find the attached patch with r= ecent changes. It doesn't include this stacked bar, but it contains thi= ngs suggested in the second review, and I also tried to resolve the tooltip= issue. Let me know if it's working correctly.
I have also pu= shed these changes here:=C2=A0https://github.com/Sahil1479/pgadmin4/tree/system_sta= ts=C2=A0[Branch: system_stats]

I will share th= e final patch with a detailed summary of all the things that have been chan= ged once I complete this stacked/pie chart and a few more refinements.
<= /div>

Thank you,
Sahil
--000000000000a081940603bacd75-- --000000000000a081960603bacd76 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_llp9ohsk1 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 --000000000000a081960603bacd76 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_llq7j7pn1 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 9/bvKh2u+bJ86VyRLFqcL6+3v0ESPz1lzzNrwTY5U1snAzN+JF+9wb+LDcT2lusuFEn+b1bXL3f0 4DZZNj9Xtp2ZJA8/Olp6d9DMVij5W/fJ3i075GzPntLhVLkUF86R6Qtfl95Tfys/H5Mo1mxyrVRK /u9/J0VWWtTXXrpzpfxs2nwpPG5N/OJdkjX2NunsvKb8n8tTr9ZJ70SRU4eLpfCx6ZK7f7j8/Jcz ZKB1xhP7xVsk4cAaWfb0n+Xdq7vKteesfXurSHIfni6/KfmipN9zm3TVjQbJ3xd84/LLM3Vg4FXI Rtl6+clPt8mXpz8hD/TrbBoDdLBezMk8Wb7xWrn7e/8kCfo+x/aUmEN5snJ7hYwOWq5z5yp57Zk1 UvC3v0tsl65S9XaB/HrOw7JsjyZX6+TwR18Va40iH/xVfvPiXrmj/n08K+9sypc/i3NMoz32H8pf f7Ne9ta8I1u2HpXO13WWs4es9/vHs2R16QB5dPF/yB3Xuq//8t6PWOl9XZ0U5f9GVhd3kBsS6qz3 ulS2LX9Mcv9SJZN+9KiM7mMtZF7f3//y1/p1l762TLLnPi+VI63Pyf+wvgvWsYz2ePn3dbn8/Nev SF3v3iL6nbE/r/tk+M+fkhkDuop0v036W9+Z/8rLl9c+SZCe7aqk/OBOWTM3S35aFCP/NParUf8K VPnxJxIb4acQeugBAPCQ3vevlF0vLZEJV2+T3H+fLJO/P0Vy/1Ahg3NelO1PT5De9XX2CZL+9HZZ 8z9T5OCy6dZ81ryPF0r8/Uuk6NkHL9ZZ3zhBVv5ljcwZcFzy5/rXt2BrrGQ8s11WTvSX3GhwSp21 RtZYJwsly7OteaZL3t7bZP6z80WLcUKzlssulKJfTZD4wsf8+/BQnhy85WFZo2URDTLKaJn/v/5D 4v+cK9Ot+bKXl8gd2dY2Z6WafbDWdud82f7cw3JHyWqZY732x545LsN/q2VE1sTtpRfvJ66v6U9r ZMa1RfKYbvP7j0nh1Vmy5k8rZYKWdqj2vWWCHp+cfnL8dzn2vk1ZuEViM9b4j2OUYasplWzfJMXW cUi7s/EFvX6xMvzrD4roPenrO37jZfg96dajy3JJD8pzf8iVCbHWZ+WhyTJ9yQ7p+v1CeekJfdfe kYP19+SPLOpjb4nNXCYF34+VTfOmyOR/ny9bYidYn9Hn5MFwdeOX+X7Epj4shX/Q70Ohea+tz2ZJ ijz83HaZf2fDhbKeXiKjjzwr2T+w1j3PWve3c6XQ+mzWf2eiPV7Ovk7rKUWP6zat41EYL1n6nbnf +WZZn/0c/ew/KD2358oU3bdHVsqR1IXy0otzZPgVX5zSUIzeu9I8d1VVdVr6JtnnbwAAIJysJ8yT K5T/E/OkbdB/KXbYIyK5/9cK3Jd8J53P1tDVJ8yzK7P7wR7mGZqd/kux38mXrBdKZc4Q0+Yh75eV S3x8+GoZeugBAAAADyPQAwAAAB5GoAcAAAA8jBp6AAAAoIWihh4AAABo5Qj0AAAAgIcR6AEAAAAP I9ADAAAAHkagBwAAADyMQA8AAAB4WFS3rQQAAADw+Yh020ruQw8AAAC0UNyHHgAAAGjlCPQAAACA hxHoAQAAAA8j0AMAAAAeRqAHAAAAPIxADwAAAHgYgR4AAADwMAI9AAAA4GEEegAAAMDDCPQAAACA h7XIQF9SUiLjxo2zHwPp+MiRIyU5OdkeCgoKzBS/4Ok66HjweoLpesLNX1lZKePHj6+fZ9GiRWZK ZDqvs1yo9QduP3C4lO0AAACgbWpxgf7cuXOSl5cnJ06cMC1+u3fvlrS0NFm8eLGUlpZKUVGRLF26 1G53nDx5UhISEmTPnj32PDq8+uqrkpKSYuZoTEPzunXr6peZOXOmPPLII3aIVxq+x44dKxMnTrSn 63y6zeCTiWDOyYVy9kUH3X99HcHLp6eny/79++vnc7ZDqAcAAEA4LS7Qb968WcrKyqRHjx6mxR/y NXRPmzZNhg4dardpSB8zZoxs377dHleHDx+WPn36SKdOnUxLeBq6dXuzZ8+Wbt262W133XWX/fje e+/Zjxs3bpTBgwfb21I6n4b7HTt22Pvlxjkp0WV03YF0/9euXWu/HuekwY2znfLy8pDbAQAAAFpU oNceaQ262kMeqLq62g7ro0aNMi1+GpYDA/OhQ4ckMTFR4uLiTEt4To/+zTffbFr8QXrDhg128NYg rYF6xIgRDdaZkZEhS5YsCbmdY8eO2SclWjbkRtet23BOIgAAAIDL1WICvfZWa3mJBvTu3bubVj8N 3j6fz34eWMseWLbihO/ly5fXT49UP+/06L/11luuyzgnEhr6s7Oz6+eJVAZTXFwsSUlJ0qtXL9Ny 6fR4bNmyRWbMmBH1CQoAAADanhYT6FesWGH3XDslNcG0pl6DdH5+vl1j7tTQO6HeCd9alhNYr56Z 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 --000000000000a081960603bacd76 Content-Type: image/gif; name="image.gif" Content-Disposition: inline; filename="image.gif" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_llqatl103 R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 --000000000000a081960603bacd76 Content-Type: image/gif; name="image.gif" Content-Disposition: inline; filename="image.gif" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_llqatkzr2 R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7 --000000000000a081960603bacd76-- --000000000000a081960603bacd77 Content-Type: application/octet-stream; name="system_stats.patch" Content-Disposition: attachment; filename="system_stats.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_llqb3rqe4 RnJvbSA5MjlkOGYxZWQwYmNjZTc4ZGI3OTVmZTdjYWI5NDg0YzRlNjEwYTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYWhpbCBIYXJwYWwgPHNhbnRvc2guMkBpaXRqLmFjLmluPgpE YXRlOiBXZWQsIDE2IEF1ZyAyMDIzIDE1OjE5OjE1ICswNTMwClN1YmplY3Q6IFtQQVRDSCAxLzNd IFN5c3RlbSBzdGF0cyBjaGFuZ2VzIGV4Y2VwdCBwcm9jZXNzIGFuZCBkaXNrIGluZm9ybWF0aW9u CgotLS0KIHdlYi9wZ2FkbWluL2Rhc2hib2FyZC9fX2luaXRfXy5weSAgICAgICAgICAgICB8IDEz MSArKysrKysKIHdlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeCB8 IDIzNCArKysrKysrLS0tCiAuLi4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9DUFUu anN4ICAgfCAzNzcgKysrKysrKysrKysrKysrKwogLi4uL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9N ZW1vcnkuanN4ICAgICAgICAgIHwgMzcyICsrKysrKysrKysrKysrKwogLi4uL3N0YXRpYy9qcy9T eXN0ZW1TdGF0cy9TdG9yYWdlLmpzeCAgICAgICAgIHwgMzI5ICsrKysrKysrKysrKysrCiAuLi4v c3RhdGljL2pzL1N5c3RlbVN0YXRzL1N1bW1hcnkuanN4ICAgICAgICAgfCA0MjIgKysrKysrKysr KysrKysrKysrCiAuLi4vc3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsICAgICAgICAg fCAxMDAgKysrKysKIC4uLi9qcy9jb21wb25lbnRzL1BnQ2hhcnQvRG9udXRDaGFydC5qc3ggICAg ICB8ICA3MCArKysKIC4uLi9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQuanN4 ICB8IDE0NiArKysrLS0KIDkgZmlsZXMgY2hhbmdlZCwgMjA5MCBpbnNlcnRpb25zKCspLCA5MSBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3Rh dGljL2pzL1N5c3RlbVN0YXRzL0NQVS5qc3gKIGNyZWF0ZSBtb2RlIDEwMDY0NCB3ZWIvcGdhZG1p bi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL01lbW9yeS5qc3gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCB3ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL1N0b3Jh Z2UuanN4CiBjcmVhdGUgbW9kZSAxMDA2NDQgd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9q cy9TeXN0ZW1TdGF0cy9TdW1tYXJ5LmpzeAogY3JlYXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2FkbWlu L2Rhc2hib2FyZC90ZW1wbGF0ZXMvZGFzaGJvYXJkL3NxbC9kZWZhdWx0L3N5c3RlbV9zdGF0aXN0 aWNzLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25l bnRzL1BnQ2hhcnQvRG9udXRDaGFydC5qc3gKCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvX19pbml0X18ucHkKaW5k ZXggMWRhYzU0ZTc0Li5jMThmNWQzZGUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Rhc2hib2Fy ZC9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvX19pbml0X18ucHkKQEAg LTExMiw2ICsxMTIsNzIgQEAgY2xhc3MgRGFzaGJvYXJkTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgog ICAgICAgICAgICAgaGVscF9zdHI9aGVscF9zdHJpbmcKICAgICAgICAgKQogCisgICAgICAgIHNl bGYuaHBjX3N0YXRzX3JlZnJlc2ggPSBzZWxmLmRhc2hib2FyZF9wcmVmZXJlbmNlLnJlZ2lzdGVy KAorICAgICAgICAgICAgJ2Rhc2hib2FyZHMnLCAnaHBjX3N0YXRzX3JlZnJlc2gnLAorICAgICAg ICAgICAgZ2V0dGV4dCgiSGFuZGxlICYgUHJvY2VzcyBjb3VudCBzdGF0aXN0aWNzIHJlZnJlc2gg cmF0ZSIpLAorICAgICAgICAgICAgJ2ludGVnZXInLCA1LCBtaW5fdmFsPTEsIG1heF92YWw9OTk5 OTk5LAorICAgICAgICAgICAgY2F0ZWdvcnlfbGFiZWw9UFJFRl9MQUJFTF9SRUZSRVNIX1JBVEVT LAorICAgICAgICAgICAgaGVscF9zdHI9aGVscF9zdHJpbmcKKyAgICAgICAgKQorCisgICAgICAg IHNlbGYuY3Vfc3RhdHNfcmVmcmVzaCA9IHNlbGYuZGFzaGJvYXJkX3ByZWZlcmVuY2UucmVnaXN0 ZXIoCisgICAgICAgICAgICAnZGFzaGJvYXJkcycsICdjdV9zdGF0c19yZWZyZXNoJywKKyAgICAg ICAgICAgIGdldHRleHQoCisgICAgICAgICAgICAgICAgIlBlcmNlbnRhZ2Ugb2YgQ1BVIHRpbWUg dXNlZCBieSBkaWZmZXJlbnQgcHJvY2VzcyBcCisgICAgICAgICAgICAgICAgbW9kZXMgc3RhdGlz dGljcyByZWZyZXNoIHJhdGUiCisgICAgICAgICAgICApLCAnaW50ZWdlcicsIDUsIG1pbl92YWw9 MSwgbWF4X3ZhbD05OTk5OTksCisgICAgICAgICAgICBjYXRlZ29yeV9sYWJlbD1QUkVGX0xBQkVM X1JFRlJFU0hfUkFURVMsCisgICAgICAgICAgICBoZWxwX3N0cj1oZWxwX3N0cmluZworICAgICAg ICApCisKKyAgICAgICAgc2VsZi5sYV9zdGF0c19yZWZyZXNoID0gc2VsZi5kYXNoYm9hcmRfcHJl ZmVyZW5jZS5yZWdpc3RlcigKKyAgICAgICAgICAgICdkYXNoYm9hcmRzJywgJ2xhX3N0YXRzX3Jl ZnJlc2gnLAorICAgICAgICAgICAgZ2V0dGV4dCgiQXZlcmFnZSBsb2FkIHN0YXRpc3RpY3MgcmVm cmVzaCByYXRlIiksICdpbnRlZ2VyJywKKyAgICAgICAgICAgIDUsIG1pbl92YWw9MSwgbWF4X3Zh bD05OTk5OTksCisgICAgICAgICAgICBjYXRlZ29yeV9sYWJlbD1QUkVGX0xBQkVMX1JFRlJFU0hf UkFURVMsCisgICAgICAgICAgICBoZWxwX3N0cj1oZWxwX3N0cmluZworICAgICAgICApCisKKyAg ICAgICAgc2VsZi5wY3Vfc3RhdHNfcmVmcmVzaCA9IHNlbGYuZGFzaGJvYXJkX3ByZWZlcmVuY2Uu cmVnaXN0ZXIoCisgICAgICAgICAgICAnZGFzaGJvYXJkcycsICdwY3Vfc3RhdHNfcmVmcmVzaCcs CisgICAgICAgICAgICBnZXR0ZXh0KCJDUFUgdXNhZ2UgcGVyIHByb2Nlc3Mgc3RhdGlzdGljcyBy ZWZyZXNoIHJhdGUiKSwKKyAgICAgICAgICAgICdpbnRlZ2VyJywgNSwgbWluX3ZhbD0xLCBtYXhf dmFsPTk5OTk5OSwKKyAgICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZfTEFCRUxfUkVGUkVT SF9SQVRFUywKKyAgICAgICAgICAgIGhlbHBfc3RyPWhlbHBfc3RyaW5nCisgICAgICAgICkKKwor ICAgICAgICBzZWxmLm1fc3RhdHNfcmVmcmVzaCA9IHNlbGYuZGFzaGJvYXJkX3ByZWZlcmVuY2Uu cmVnaXN0ZXIoCisgICAgICAgICAgICAnZGFzaGJvYXJkcycsICdtX3N0YXRzX3JlZnJlc2gnLAor ICAgICAgICAgICAgZ2V0dGV4dCgiTWVtb3J5IHVzYWdlIHN0YXRpc3RpY3MgcmVmcmVzaCByYXRl IiksICdpbnRlZ2VyJywKKyAgICAgICAgICAgIDUsIG1pbl92YWw9MSwgbWF4X3ZhbD05OTk5OTks CisgICAgICAgICAgICBjYXRlZ29yeV9sYWJlbD1QUkVGX0xBQkVMX1JFRlJFU0hfUkFURVMsCisg ICAgICAgICAgICBoZWxwX3N0cj1oZWxwX3N0cmluZworICAgICAgICApCisKKyAgICAgICAgc2Vs Zi5zbV9zdGF0c19yZWZyZXNoID0gc2VsZi5kYXNoYm9hcmRfcHJlZmVyZW5jZS5yZWdpc3RlcigK KyAgICAgICAgICAgICdkYXNoYm9hcmRzJywgJ3NtX3N0YXRzX3JlZnJlc2gnLAorICAgICAgICAg ICAgZ2V0dGV4dCgiU3dhcCBtZW1vcnkgdXNhZ2Ugc3RhdGlzdGljcyByZWZyZXNoIHJhdGUiKSwg J2ludGVnZXInLAorICAgICAgICAgICAgNSwgbWluX3ZhbD0xLCBtYXhfdmFsPTk5OTk5OSwKKyAg ICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZfTEFCRUxfUkVGUkVTSF9SQVRFUywKKyAgICAg ICAgICAgIGhlbHBfc3RyPWhlbHBfc3RyaW5nCisgICAgICAgICkKKworICAgICAgICBzZWxmLnBt dV9zdGF0c19yZWZyZXNoID0gc2VsZi5kYXNoYm9hcmRfcHJlZmVyZW5jZS5yZWdpc3RlcigKKyAg ICAgICAgICAgICdkYXNoYm9hcmRzJywgJ3BtdV9zdGF0c19yZWZyZXNoJywKKyAgICAgICAgICAg IGdldHRleHQoIk1lbW9yeSB1c2FnZSBwZXIgcHJvY2VzcyBzdGF0aXN0aWNzIHJlZnJlc2ggcmF0 ZSIpLAorICAgICAgICAgICAgJ2ludGVnZXInLCA1LCBtaW5fdmFsPTEsIG1heF92YWw9OTk5OTk5 LAorICAgICAgICAgICAgY2F0ZWdvcnlfbGFiZWw9UFJFRl9MQUJFTF9SRUZSRVNIX1JBVEVTLAor ICAgICAgICAgICAgaGVscF9zdHI9aGVscF9zdHJpbmcKKyAgICAgICAgKQorCisgICAgICAgIHNl bGYuaW9fc3RhdHNfcmVmcmVzaCA9IHNlbGYuZGFzaGJvYXJkX3ByZWZlcmVuY2UucmVnaXN0ZXIo CisgICAgICAgICAgICAnZGFzaGJvYXJkcycsICdpb19zdGF0c19yZWZyZXNoJywKKyAgICAgICAg ICAgIGdldHRleHQoIkkvTyBhbmFseXNpcyBzdGF0aXN0aWNzIHJlZnJlc2ggcmF0ZSIpLCAnaW50 ZWdlcicsCisgICAgICAgICAgICA1LCBtaW5fdmFsPTEsIG1heF92YWw9OTk5OTk5LAorICAgICAg ICAgICAgY2F0ZWdvcnlfbGFiZWw9UFJFRl9MQUJFTF9SRUZSRVNIX1JBVEVTLAorICAgICAgICAg ICAgaGVscF9zdHI9aGVscF9zdHJpbmcKKyAgICAgICAgKQorCiAgICAgICAgIHNlbGYuZGlzcGxh eV9ncmFwaHMgPSBzZWxmLmRhc2hib2FyZF9wcmVmZXJlbmNlLnJlZ2lzdGVyKAogICAgICAgICAg ICAgJ2Rpc3BsYXknLCAnc2hvd19ncmFwaHMnLAogICAgICAgICAgICAgZ2V0dGV4dCgiU2hvdyBn cmFwaHM/IiksICdib29sZWFuJywgVHJ1ZSwKQEAgLTE5Nyw2ICsyNjMsMTIgQEAgY2xhc3MgRGFz aGJvYXJkTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRf cHJlcGFyZWRfYnlfZGF0YWJhc2VfaWQnLAogICAgICAgICAgICAgJ2Rhc2hib2FyZC5jb25maWcn LAogICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRfY29uZmlnX2J5X3NlcnZlcl9pZCcsCisgICAg ICAgICAgICAnZGFzaGJvYXJkLmNoZWNrX3N5c3RlbV9zdGF0aXN0aWNzJywKKyAgICAgICAgICAg ICdkYXNoYm9hcmQuY2hlY2tfc3lzdGVtX3N0YXRpc3RpY3Nfc2lkJywKKyAgICAgICAgICAgICdk YXNoYm9hcmQuY2hlY2tfc3lzdGVtX3N0YXRpc3RpY3NfZGlkJywKKyAgICAgICAgICAgICdkYXNo Ym9hcmQuc3lzdGVtX3N0YXRpc3RpY3MnLAorICAgICAgICAgICAgJ2Rhc2hib2FyZC5zeXN0ZW1f c3RhdGlzdGljc19zaWQnLAorICAgICAgICAgICAgJ2Rhc2hib2FyZC5zeXN0ZW1fc3RhdGlzdGlj c19kaWQnLAogICAgICAgICBdCiAKIApAQCAtNTM2LDMgKzYwOCw2MiBAQCBkZWYgdGVybWluYXRl X3Nlc3Npb24oc2lkPU5vbmUsIGRpZD1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgIHJlc3BvbnNl PWdldHRleHQoIlN1Y2Nlc3MiKSBpZiByZXMgZWxzZSBnZXR0ZXh0KCJGYWlsZWQiKSwKICAgICAg ICAgc3RhdHVzPTIwMAogICAgICkKKworCisjIFRvIGNoZWNrIHdoZXRoZXIgc3lzdGVtIHN0YXRz IGV4dGVzaW9uIGlzIHByZXNlbnQgb3Igbm90CitAYmx1ZXByaW50LnJvdXRlKCdjaGVja19leHRl bnNpb24vc3lzdGVtX3N0YXRpc3RpY3MnLAorICAgICAgICAgICAgICAgICBlbmRwb2ludD0nY2hl Y2tfc3lzdGVtX3N0YXRpc3RpY3MnLCBtZXRob2RzPVsnR0VUJ10pCitAYmx1ZXByaW50LnJvdXRl KCdjaGVja19leHRlbnNpb24vc3lzdGVtX3N0YXRpc3RpY3MvPGludDpzaWQ+JywKKyAgICAgICAg ICAgICAgICAgZW5kcG9pbnQ9J2NoZWNrX3N5c3RlbV9zdGF0aXN0aWNzX3NpZCcsIG1ldGhvZHM9 WydHRVQnXSkKK0BibHVlcHJpbnQucm91dGUoJ2NoZWNrX2V4dGVuc2lvbi9zeXN0ZW1fc3RhdGlz dGljcy88aW50OnNpZD4vPGludDpkaWQ+JywKKyAgICAgICAgICAgICAgICAgZW5kcG9pbnQ9J2No ZWNrX3N5c3RlbV9zdGF0aXN0aWNzX2RpZCcsIG1ldGhvZHM9WydHRVQnXSkKK0Bsb2dpbl9yZXF1 aXJlZAorQGNoZWNrX3ByZWNvbmRpdGlvbgorZGVmIGNoZWNrX3N5c3RlbV9zdGF0aXN0aWNzKHNp ZD1Ob25lLCBkaWQ9Tm9uZSk6CisgICAgc3FsID0gIlNFTEVDVCAqIEZST00gcGdfZXh0ZW5zaW9u IFdIRVJFIGV4dG5hbWUgPSAnc3lzdGVtX3N0YXRzJzsiCisgICAgc3RhdHVzLCByZXMgPSBnLmNv bm4uZXhlY3V0ZV9zY2FsYXIoc3FsKQorICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgIGRhdGEgPSB7fQorICAg IGlmIHJlcyBpcyBub3QgTm9uZToKKyAgICAgICAgZGF0YVsnc3NfcHJlc2VudCddID0gVHJ1ZQor ICAgIGVsc2U6CisgICAgICAgIGRhdGFbJ3NzX3ByZXNlbnQnXSA9IEZhbHNlCisgICAgcmV0dXJu IGFqYXhfcmVzcG9uc2UoCisgICAgICAgIHJlc3BvbnNlPWRhdGEsCisgICAgICAgIHN0YXR1cz0y MDAKKyAgICApCisKKworIyBTeXN0ZW0gU3RhdGlzdGljcyBCYWNrZW5kCitAYmx1ZXByaW50LnJv dXRlKCcvc3lzdGVtX3N0YXRpc3RpY3MnLAorICAgICAgICAgICAgICAgICBlbmRwb2ludD0nc3lz dGVtX3N0YXRpc3RpY3MnLCBtZXRob2RzPVsnR0VUJ10pCitAYmx1ZXByaW50LnJvdXRlKCcvc3lz dGVtX3N0YXRpc3RpY3MvPGludDpzaWQ+JywKKyAgICAgICAgICAgICAgICAgZW5kcG9pbnQ9J3N5 c3RlbV9zdGF0aXN0aWNzX3NpZCcsIG1ldGhvZHM9WydHRVQnXSkKK0BibHVlcHJpbnQucm91dGUo Jy9zeXN0ZW1fc3RhdGlzdGljcy88aW50OnNpZD4vPGludDpkaWQ+JywKKyAgICAgICAgICAgICAg ICAgZW5kcG9pbnQ9J3N5c3RlbV9zdGF0aXN0aWNzX2RpZCcsIG1ldGhvZHM9WydHRVQnXSkKK0Bs b2dpbl9yZXF1aXJlZAorQGNoZWNrX3ByZWNvbmRpdGlvbgorZGVmIHN5c3RlbV9zdGF0aXN0aWNz KHNpZD1Ob25lLCBkaWQ9Tm9uZSk6CisgICAgcmVzcF9kYXRhID0ge30KKworICAgIGlmIHJlcXVl c3QuYXJnc1snY2hhcnRfbmFtZXMnXSAhPSAnJzoKKyAgICAgICAgY2hhcnRfbmFtZXMgPSByZXF1 ZXN0LmFyZ3NbJ2NoYXJ0X25hbWVzJ10uc3BsaXQoJywnKQorCisgICAgICAgIGlmIG5vdCBzaWQ6 CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPSdTZXJ2 ZXIgSUQgbm90IHNwZWNpZmllZC4nKQorCisgICAgICAgIHNxbCA9IHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICIvIi5qb2luKFtnLnRlbXBsYXRlX3BhdGgsICdzeXN0ZW1fc3RhdGlzdGlj cy5zcWwnXSksIGRpZD1kaWQsCisgICAgICAgICAgICBjaGFydF9uYW1lcz1jaGFydF9uYW1lcywK KyAgICAgICAgKQorICAgICAgICBzdGF0dXMsIHJlcyA9IGcuY29ubi5leGVjdXRlX2RpY3Qoc3Fs KQorCisgICAgICAgIGZvciBjaGFydF9yb3cgaW4gcmVzWydyb3dzJ106CisgICAgICAgICAgICBy ZXNwX2RhdGFbY2hhcnRfcm93WydjaGFydF9uYW1lJ11dID0ganNvbi5sb2FkcygKKyAgICAgICAg ICAgICAgICBjaGFydF9yb3dbJ2NoYXJ0X2RhdGEnXSkKKworICAgIHJldHVybiBhamF4X3Jlc3Bv bnNlKAorICAgICAgICByZXNwb25zZT1yZXNwX2RhdGEsCisgICAgICAgIHN0YXR1cz0yMDAKKyAg ICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0Rhc2hib2Fy ZC5qc3ggYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0Rhc2hib2FyZC5qc3gKaW5k ZXggNzE5NGZjYzEwLi5lNmFmZWZmMDcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Rhc2hib2Fy ZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeAorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3Rh dGljL2pzL0Rhc2hib2FyZC5qc3gKQEAgLTI5LDYgKzI5LDEwIEBAIGltcG9ydCBfIGZyb20gJ2xv ZGFzaCc7CiBpbXBvcnQgQ2FjaGVkT3V0bGluZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29u cy9DYWNoZWRPdXRsaW5lZCc7CiBpbXBvcnQgRW1wdHlQYW5lbE1lc3NhZ2UgZnJvbSAnLi4vLi4v Li4vc3RhdGljL2pzL2NvbXBvbmVudHMvRW1wdHlQYW5lbE1lc3NhZ2UnOwogaW1wb3J0IFRhYlBh bmVsIGZyb20gJy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL1RhYlBhbmVsJzsKK2ltcG9y dCBTdW1tYXJ5IGZyb20gJ1N5c3RlbVN0YXRzL1N1bW1hcnknOworaW1wb3J0IENQVSBmcm9tICdT eXN0ZW1TdGF0cy9DUFUnOworaW1wb3J0IE1lbW9yeSBmcm9tICdTeXN0ZW1TdGF0cy9NZW1vcnkn OworaW1wb3J0IFN0b3JhZ2UgZnJvbSAnU3lzdGVtU3RhdHMvU3RvcmFnZSc7CiAKIGZ1bmN0aW9u IHBhcnNlRGF0YShkYXRhKSB7CiAgIGxldCByZXMgPSBbXTsKQEAgLTE0OCwxMiArMTUyLDIxIEBA IGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCh7CiB9KSB7CiAgIGNvbnN0IGNsYXNz ZXMgPSB1c2VTdHlsZXMoKTsKICAgbGV0IHRhYnMgPSBbZ2V0dGV4dCgnU2Vzc2lvbnMnKSwgZ2V0 dGV4dCgnTG9ja3MnKSwgZ2V0dGV4dCgnUHJlcGFyZWQgVHJhbnNhY3Rpb25zJyldOworICBsZXQg bWFpblRhYnMgPSBbZ2V0dGV4dCgnR2VuZXJhbCcpLCBnZXR0ZXh0KCdTeXN0ZW0gU3RhdGlzdGlj cycpXTsKKyAgbGV0IHN5c3RlbVN0YXRzVGFicyA9IFtnZXR0ZXh0KCdTdW1tYXJ5JyksIGdldHRl eHQoJ0NQVScpLCBnZXR0ZXh0KCdNZW1vcnknKSwgZ2V0dGV4dCgnU3RvcmFnZScpXTsKICAgY29u c3QgW2Rhc2hEYXRhLCBzZXRkYXNoRGF0YV0gPSB1c2VTdGF0ZShbXSk7CiAgIGNvbnN0IFttc2cs IHNldE1zZ10gPSB1c2VTdGF0ZSgnJyk7CisgIGNvbnN0IFtzc01zZywgc2V0U3NNc2ddID0gdXNl U3RhdGUoJycpOwogICBjb25zdCBbdGFiVmFsLCBzZXRUYWJWYWxdID0gdXNlU3RhdGUoMCk7Cisg IGNvbnN0IFttYWluVGFiVmFsLCBzZXRtYWluVGFiVmFsXSA9IHVzZVN0YXRlKDApOwogICBjb25z dCBbcmVmcmVzaCwgc2V0UmVmcmVzaF0gPSB1c2VTdGF0ZShmYWxzZSk7CiAgIGNvbnN0IFthY3Rp dmVPbmx5LCBzZXRBY3RpdmVPbmx5XSA9IHVzZVN0YXRlKGZhbHNlKTsKICAgY29uc3QgW3NjaGVt YURpY3QsIHNldFNjaGVtYURpY3RdID0gUmVhY3QudXNlU3RhdGUoe30pOworICBjb25zdCBbc3lz dGVtU3RhdHNUYWJWYWwsIHNldFN5c3RlbVN0YXRzVGFiVmFsXSA9IHVzZVN0YXRlKDApOworCisg IGNvbnN0IHN5c3RlbVN0YXRzVGFiQ2hhbmdlZCA9IChlLCB0YWJWYWwpID0+IHsKKyAgICBzZXRT eXN0ZW1TdGF0c1RhYlZhbCh0YWJWYWwpOworICB9OwogCiAgIGlmICghZGlkKSB7CiAgICAgdGFi cy5wdXNoKGdldHRleHQoJ0NvbmZpZ3VyYXRpb24nKSk7CkBAIC0xNjMsNiArMTc2LDEwIEBAIGV4 cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhc2hib2FyZCh7CiAgICAgc2V0VGFiVmFsKHRhYlZhbCk7 CiAgIH07CiAKKyAgY29uc3QgbWFpblRhYkNoYW5nZWQgPSAoZSwgdGFiVmFsKSA9PiB7CisgICAg c2V0bWFpblRhYlZhbCh0YWJWYWwpOworICB9OworCiAgIGNvbnN0IHNlcnZlckNvbmZpZ0NvbHVt bnMgPSBbCiAgICAgewogICAgICAgYWNjZXNzb3I6ICduYW1lJywKQEAgLTc0NSw2ICs3NjIsNyBA QCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoewogCiAgIHVzZUVmZmVjdCgoKSA9 PiB7CiAgICAgbGV0IHVybCwKKyAgICAgIHNzX2V4dGVuc2lvbl9jaGVja191cmwgPSB1cmxfZm9y KCdkYXNoYm9hcmQuY2hlY2tfc3lzdGVtX3N0YXRpc3RpY3MnKSwKICAgICAgIG1lc3NhZ2UgPSBn ZXR0ZXh0KAogICAgICAgICAnUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZlciB0 byB2aWV3IHRoZSBkYXNoYm9hcmQuJwogICAgICAgKTsKQEAgLTc3MCw2ICs3ODgsMTAgQEAgZXhw b3J0IGRlZmF1bHQgZnVuY3Rpb24gRGFzaGJvYXJkKHsKICAgICAgIGlmIChkaWQpIHVybCArPSBz aWQgKyAnLycgKyBkaWQ7CiAgICAgICBlbHNlIHVybCArPSBzaWQ7CiAKKyAgICAgIGlmIChkaWQg JiYgIXByb3BzLmRiQ29ubmVjdGVkKSByZXR1cm47CisgICAgICBpZiAoZGlkKSBzc19leHRlbnNp b25fY2hlY2tfdXJsICs9ICcvJyArIHNpZCArICcvJyArIGRpZDsKKyAgICAgIGVsc2Ugc3NfZXh0 ZW5zaW9uX2NoZWNrX3VybCArPSAnLycgKyBzaWQ7CisKICAgICAgIGNvbnN0IGFwaSA9IGdldEFw aUluc3RhbmNlKCk7CiAgICAgICBpZiAobm9kZSkgewogICAgICAgICBhcGkoewpAQCAtNzg3LDYg KzgwOSwyMCBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEYXNoYm9hcmQoewogICAgICAgICAg ICAgLy8gc2hvdyBmYWlsZWQgbWVzc2FnZS4KICAgICAgICAgICAgIHNldE1zZyhnZXR0ZXh0KCdG YWlsZWQgdG8gcmV0cmlldmUgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuJykpOwogICAgICAgICAgIH0p OworCisgICAgICAgIGFwaSh7CisgICAgICAgICAgdXJsOiBzc19leHRlbnNpb25fY2hlY2tfdXJs LAorICAgICAgICAgIHR5cGU6ICdHRVQnLAorICAgICAgICB9KQorICAgICAgICAgIC50aGVuKChy ZXMpID0+IHsKKyAgICAgICAgICAgIGNvbnN0IGRhdGEgPSByZXMuZGF0YTsKKyAgICAgICAgICAg IGlmKGRhdGFbJ3NzX3ByZXNlbnQnXSA9PSBmYWxzZSl7CisgICAgICAgICAgICAgIHNldFNzTXNn KGdldHRleHQoJ1N5c3RlbSBzdGF0cyBleHRlbnNpb24gaXMgbm90IGluc3RhbGxlZC4gWW91IGNh biBpbnN0YWxsIHRoZSBleHRlbnNpb24gaW4gYSBkYXRhYmFzZSB1c2luZyB0aGUgIkNSRUFURSBF WFRFTlNJT04gc3lzdGVtX3N0YXRzOyIgU1FMIGNvbW1hbmQuIFJlbG9hZCB0aGUgcGdBZG1pbiBv bmNlIHlvdSBpbnN0YWxsZWQuJykpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0pCisgICAg ICAgICAgLmNhdGNoKCgpID0+IHsKKyAgICAgICAgICAgIHNldFNzTXNnKGdldHRleHQoJ0ZhaWxl ZCB0byB2ZXJpZnkgdGhlIHByZXNlbmNlIG9mIHN5c3RlbSBzdGF0cyBleHRlbnNpb24uJykpOwor ICAgICAgICAgIH0pOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgc2V0TXNnKG1lc3NhZ2UpOwog ICAgICAgfQpAQCAtODY3LDY4ICs5MDMsMTQ4IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERh c2hib2FyZCh7CiAgICAgICB7c2lkICYmIHByb3BzLnNlcnZlckNvbm5lY3RlZCA/ICgKICAgICAg ICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMuZGFzaGJvYXJkUGFuZWx9PgogICAgICAgICAgIDxC b3ggY2xhc3NOYW1lPXtjbGFzc2VzLmVtcHR5UGFuZWx9PgotICAgICAgICAgICAgeyFfLmlzVW5k ZWZpbmVkKHByZWZlcmVuY2VzKSAmJiBwcmVmZXJlbmNlcy5zaG93X2dyYXBocyAmJiAoCi0gICAg ICAgICAgICAgIDxHcmFwaHMKLSAgICAgICAgICAgICAgICBrZXk9e3NpZCArIGRpZH0KLSAgICAg ICAgICAgICAgICBwcmVmZXJlbmNlcz17cHJlZmVyZW5jZXN9Ci0gICAgICAgICAgICAgICAgc2lk PXtzaWR9Ci0gICAgICAgICAgICAgICAgZGlkPXtkaWR9Ci0gICAgICAgICAgICAgICAgcGFnZVZp c2libGU9e3Byb3BzLnBhbmVsVmlzaWJsZX0KLSAgICAgICAgICAgICAgPjwvR3JhcGhzPgotICAg ICAgICAgICAgKX0KLSAgICAgICAgICAgIHshXy5pc1VuZGVmaW5lZChwcmVmZXJlbmNlcykgJiYg cHJlZmVyZW5jZXMuc2hvd19hY3Rpdml0eSAmJiAoCi0gICAgICAgICAgICAgIDxCb3ggY2xhc3NO YW1lPXtjbGFzc2VzLnBhbmVsQ29udGVudH0+Ci0gICAgICAgICAgICAgICAgPEJveAotICAgICAg ICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmNhcmRIZWFkZXJ9Ci0gICAgICAgICAgICAg ICAgICB0aXRsZT17cHJvcHMuZGJDb25uZWN0ZWQgPyAgZ2V0dGV4dCgnRGF0YWJhc2UgYWN0aXZp dHknKSA6IGdldHRleHQoJ1NlcnZlciBhY3Rpdml0eScpfQotICAgICAgICAgICAgICAgID4KLSAg ICAgICAgICAgICAgICAgIHtwcm9wcy5kYkNvbm5lY3RlZCA/ICBnZXR0ZXh0KCdEYXRhYmFzZSBh Y3Rpdml0eScpIDogZ2V0dGV4dCgnU2VydmVyIGFjdGl2aXR5Jyl9eycgJ30KKyAgICAgICAgICAg IDxCb3ggY2xhc3NOYW1lPXtjbGFzc2VzLnBhbmVsQ29udGVudH0+CisgICAgICAgICAgICAgIDxC b3ggaGVpZ2h0PSIxMDAlIiBkaXNwbGF5PSJmbGV4IiBmbGV4RGlyZWN0aW9uPSJjb2x1bW4iPgor ICAgICAgICAgICAgICAgIDxCb3g+CisgICAgICAgICAgICAgICAgICA8VGFicworICAgICAgICAg ICAgICAgICAgICB2YWx1ZT17bWFpblRhYlZhbH0KKyAgICAgICAgICAgICAgICAgICAgb25DaGFu Z2U9e21haW5UYWJDaGFuZ2VkfQorICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAgICAg ICAgICB7bWFpblRhYnMubWFwKCh0YWJWYWx1ZSkgPT4geworICAgICAgICAgICAgICAgICAgICAg IHJldHVybiA8VGFiIGtleT17dGFiVmFsdWV9IGxhYmVsPXt0YWJWYWx1ZX0gLz47CisgICAgICAg ICAgICAgICAgICAgIH0pfQorICAgICAgICAgICAgICAgICAgICA8UmVmcmVzaEJ1dHRvbi8+Cisg ICAgICAgICAgICAgICAgICA8L1RhYnM+CiAgICAgICAgICAgICAgICAgPC9Cb3g+Ci0gICAgICAg ICAgICAgICAgPEJveCBoZWlnaHQ9IjEwMCUiIGRpc3BsYXk9ImZsZXgiIGZsZXhEaXJlY3Rpb249 ImNvbHVtbiI+Ci0gICAgICAgICAgICAgICAgICA8Qm94PgotICAgICAgICAgICAgICAgICAgICA8 VGFicwotICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0YWJWYWx9Ci0gICAgICAgICAgICAg ICAgICAgICAgb25DaGFuZ2U9e3RhYkNoYW5nZWR9Ci0gICAgICAgICAgICAgICAgICAgID4KLSAg ICAgICAgICAgICAgICAgICAgICB7dGFicy5tYXAoKHRhYlZhbHVlKSA9PiB7Ci0gICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gPFRhYiBrZXk9e3RhYlZhbHVlfSBsYWJlbD17dGFiVmFsdWV9 IC8+OwotICAgICAgICAgICAgICAgICAgICAgIH0pfQotICAgICAgICAgICAgICAgICAgICAgIDxS ZWZyZXNoQnV0dG9uLz4KLSAgICAgICAgICAgICAgICAgICAgPC9UYWJzPgorICAgICAgICAgICAg ICAgIHsvKiBHZW5lcmFsIFN0YXRpc3RpY3MgKi99CisgICAgICAgICAgICAgICAgPFRhYlBhbmVs IHZhbHVlPXttYWluVGFiVmFsfSBpbmRleD17MH0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQ YW5lbH0+CisgICAgICAgICAgICAgICAgICB7IV8uaXNVbmRlZmluZWQocHJlZmVyZW5jZXMpICYm IHByZWZlcmVuY2VzLnNob3dfZ3JhcGhzICYmICgKKyAgICAgICAgICAgICAgICAgICAgPEdyYXBo cworICAgICAgICAgICAgICAgICAgICAgIGtleT17c2lkICsgZGlkfQorICAgICAgICAgICAgICAg ICAgICAgIHByZWZlcmVuY2VzPXtwcmVmZXJlbmNlc30KKyAgICAgICAgICAgICAgICAgICAgICBz aWQ9e3NpZH0KKyAgICAgICAgICAgICAgICAgICAgICBkaWQ9e2RpZH0KKyAgICAgICAgICAgICAg ICAgICAgICBwYWdlVmlzaWJsZT17cHJvcHMucGFuZWxWaXNpYmxlfQorICAgICAgICAgICAgICAg ICAgICA+PC9HcmFwaHM+CisgICAgICAgICAgICAgICAgICApfQorICAgICAgICAgICAgICAgICAg eyFfLmlzVW5kZWZpbmVkKHByZWZlcmVuY2VzKSAmJiBwcmVmZXJlbmNlcy5zaG93X2FjdGl2aXR5 ICYmICgKKyAgICAgICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMucGFuZWxD b250ZW50fT4KKyAgICAgICAgICAgICAgICAgICAgICA8Qm94CisgICAgICAgICAgICAgICAgICAg ICAgICBjbGFzc05hbWU9e2NsYXNzZXMuY2FyZEhlYWRlcn0KKyAgICAgICAgICAgICAgICAgICAg ICAgIHRpdGxlPXtwcm9wcy5kYkNvbm5lY3RlZCA/ICBnZXR0ZXh0KCdEYXRhYmFzZSBhY3Rpdml0 eScpIDogZ2V0dGV4dCgnU2VydmVyIGFjdGl2aXR5Jyl9CisgICAgICAgICAgICAgICAgICAgICAg PgorICAgICAgICAgICAgICAgICAgICAgICAge3Byb3BzLmRiQ29ubmVjdGVkID8gIGdldHRleHQo J0RhdGFiYXNlIGFjdGl2aXR5JykgOiBnZXR0ZXh0KCdTZXJ2ZXIgYWN0aXZpdHknKX17JyAnfQor ICAgICAgICAgICAgICAgICAgICAgIDwvQm94PgorICAgICAgICAgICAgICAgICAgICAgIDxCb3gg aGVpZ2h0PSIxMDAlIiBkaXNwbGF5PSJmbGV4IiBmbGV4RGlyZWN0aW9uPSJjb2x1bW4iPgorICAg ICAgICAgICAgICAgICAgICAgICAgPEJveD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPFRh YnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17dGFiVmFsfQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt0YWJDaGFuZ2VkfQorICAgICAgICAgICAgICAg ICAgICAgICAgICA+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAge3RhYnMubWFwKCh0YWJW YWx1ZSkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxUYWIga2V5 PXt0YWJWYWx1ZX0gbGFiZWw9e3RhYlZhbHVlfSAvPjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9KX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVmcmVzaEJ1dHRvbi8+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFicz4KKyAgICAgICAgICAgICAgICAgICAgICAg IDwvQm94PgorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9 IGluZGV4PXswfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgPFBnVGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXZl VGFibGU9e2ZhbHNlfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUhlYWRlcj17 Q3VzdG9tQWN0aXZlT25seUhlYWRlcn0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1 bW5zPXthY3Rpdml0eUNvbHVtbnN9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YT17 ZmlsdGVyZWREYXNoRGF0YX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWE9e3Nj aGVtYURpY3R9CisgICAgICAgICAgICAgICAgICAgICAgICAgID48L1BnVGFibGU+CisgICAgICAg ICAgICAgICAgICAgICAgICA8L1RhYlBhbmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRh YlBhbmVsIHZhbHVlPXt0YWJWYWx9IGluZGV4PXsxfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRh YlBhbmVsfT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPFBnVGFibGUKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYXZlVGFibGU9e2ZhbHNlfQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbHVtbnM9e2RhdGFiYXNlTG9ja3NDb2x1bW5zfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRhdGE9e2Rhc2hEYXRhfQorICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9Q Z1RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9UYWJQYW5lbD4KKyAgICAgICAgICAg ICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dGFiVmFsfSBpbmRleD17Mn0gY2xhc3NOYW1l Um9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxQZ1Rh YmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F2ZVRhYmxlPXtmYWxzZX0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtkYXRhYmFzZVByZXBhcmVkQ29sdW1uc30K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXtkYXNoRGF0YX0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFi UGFuZWw+CisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3RhYlZhbH0g aW5kZXg9ezN9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9PgorICAgICAgICAgICAg ICAgICAgICAgICAgICA8UGdUYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdmVU YWJsZT17ZmFsc2V9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1ucz17c2VydmVy Q29uZmlnQ29sdW1uc30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPXtkYXNoRGF0 YX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KKyAgICAgICAgICAgICAg ICAgICAgICAgIDwvVGFiUGFuZWw+CisgICAgICAgICAgICAgICAgICAgICAgPC9Cb3g+CisgICAg ICAgICAgICAgICAgICAgIDwvQm94PgorICAgICAgICAgICAgICAgICAgKX0KKyAgICAgICAgICAg ICAgICA8L1RhYlBhbmVsPgorICAgICAgICAgICAgICAgIHsvKiBTeXN0ZW0gU3RhdGlzdGljcyAq L30KKyAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e21haW5UYWJWYWx9IGluZGV4PXsx fSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgICAgICAgICAgIDxC b3ggaGVpZ2h0PSIxMDAlIiBkaXNwbGF5PSJmbGV4IiBmbGV4RGlyZWN0aW9uPSJjb2x1bW4iPgor ICAgICAgICAgICAgICAgICAgICB7c3NNc2cgPT09ICcnID8KKyAgICAgICAgICAgICAgICAgICAg ICA8PgorICAgICAgICAgICAgICAgICAgICAgICAgPEJveD4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgPFRhYnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c3lzdGVtU3Rh dHNUYWJWYWx9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3N5c3RlbVN0 YXRzVGFiQ2hhbmdlZH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHtzeXN0ZW1TdGF0c1RhYnMubWFwKCh0YWJWYWx1ZSkgPT4geworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDxUYWIga2V5PXt0YWJWYWx1ZX0gbGFi ZWw9e3RhYlZhbHVlfSAvPjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KX0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9UYWJzPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9C b3g+CisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3N5c3RlbVN0YXRz VGFiVmFsfSBpbmRleD17MH0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAg ICAgICAgICAgICAgICAgICAgICAgIDxTdW1tYXJ5CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5PXtzaWQgKyBkaWR9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVyZW5j ZXM9e3ByZWZlcmVuY2VzfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZD17c2lkfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD17ZGlkfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZ2VWaXNpYmxlPXtwcm9wcy5wYW5lbFZpc2libGV9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGVkPXtwcm9wcy5zZXJ2ZXJDb25uZWN0ZWR9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rh YlBhbmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0ZW1T dGF0c1RhYlZhbH0gaW5kZXg9ezF9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9Pgor ICAgICAgICAgICAgICAgICAgICAgICAgICA8Q1BVCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAga2V5PXtzaWQgKyBkaWR9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVyZW5j ZXM9e3ByZWZlcmVuY2VzfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZD17c2lkfQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD17ZGlkfQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBhZ2VWaXNpYmxlPXtwcm9wcy5wYW5lbFZpc2libGV9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGVkPXtwcm9wcy5zZXJ2ZXJDb25uZWN0ZWR9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rh YlBhbmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0ZW1T dGF0c1RhYlZhbH0gaW5kZXg9ezJ9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9Pgor ICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVtb3J5CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAga2V5PXtzaWQgKyBkaWR9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZmVy ZW5jZXM9e3ByZWZlcmVuY2VzfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZD17c2lk fQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZD17ZGlkfQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhZ2VWaXNpYmxlPXtwcm9wcy5wYW5lbFZpc2libGV9CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmVyQ29ubmVjdGVkPXtwcm9wcy5zZXJ2ZXJDb25uZWN0ZWR9 CisgICAgICAgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgICAgICAgICA8 L1RhYlBhbmVsPgorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXtzeXN0 ZW1TdGF0c1RhYlZhbH0gaW5kZXg9ezN9IGNsYXNzTmFtZVJvb3Q9e2NsYXNzZXMudGFiUGFuZWx9 PgorICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RvcmFnZQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGtleT17c2lkICsgZGlkfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy ZWZlcmVuY2VzPXtwcmVmZXJlbmNlc30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWQ9 e3NpZH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWQ9e2RpZH0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYWdlVmlzaWJsZT17cHJvcHMucGFuZWxWaXNpYmxlfQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlckNvbm5lY3RlZD17cHJvcHMuc2VydmVyQ29ubmVj dGVkfQorICAgICAgICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgICAgICAg ICAgPC9UYWJQYW5lbD4KKyAgICAgICAgICAgICAgICAgICAgICA8Lz4gOgorICAgICAgICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmVtcHR5UGFuZWx9PgorICAgICAgICAg ICAgICAgICAgICAgICAgPEVtcHR5UGFuZWxNZXNzYWdlIHRleHQ9e3NzTXNnfS8+CisgICAgICAg ICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg ICAgICAgIDwvQm94PgotICAgICAgICAgICAgICAgICAgPFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9 IGluZGV4PXswfSBjbGFzc05hbWVSb290PXtjbGFzc2VzLnRhYlBhbmVsfT4KLSAgICAgICAgICAg ICAgICAgICAgPFBnVGFibGUKLSAgICAgICAgICAgICAgICAgICAgICBjYXZlVGFibGU9e2ZhbHNl fQotICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbUhlYWRlcj17Q3VzdG9tQWN0aXZlT25seUhl YWRlcn0KLSAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXthY3Rpdml0eUNvbHVtbnN9Ci0g ICAgICAgICAgICAgICAgICAgICAgZGF0YT17ZmlsdGVyZWREYXNoRGF0YX0KLSAgICAgICAgICAg ICAgICAgICAgICBzY2hlbWE9e3NjaGVtYURpY3R9Ci0gICAgICAgICAgICAgICAgICAgID48L1Bn VGFibGU+Ci0gICAgICAgICAgICAgICAgICA8L1RhYlBhbmVsPgotICAgICAgICAgICAgICAgICAg PFRhYlBhbmVsIHZhbHVlPXt0YWJWYWx9IGluZGV4PXsxfSBjbGFzc05hbWVSb290PXtjbGFzc2Vz LnRhYlBhbmVsfT4KLSAgICAgICAgICAgICAgICAgICAgPFBnVGFibGUKLSAgICAgICAgICAgICAg ICAgICAgICBjYXZlVGFibGU9e2ZhbHNlfQotICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9 e2RhdGFiYXNlTG9ja3NDb2x1bW5zfQotICAgICAgICAgICAgICAgICAgICAgIGRhdGE9e2Rhc2hE YXRhfQotICAgICAgICAgICAgICAgICAgICA+PC9QZ1RhYmxlPgotICAgICAgICAgICAgICAgICAg PC9UYWJQYW5lbD4KLSAgICAgICAgICAgICAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dGFiVmFsfSBp bmRleD17Mn0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+Ci0gICAgICAgICAgICAg ICAgICAgIDxQZ1RhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgY2F2ZVRhYmxlPXtmYWxzZX0K LSAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zPXtkYXRhYmFzZVByZXBhcmVkQ29sdW1uc30K LSAgICAgICAgICAgICAgICAgICAgICBkYXRhPXtkYXNoRGF0YX0KLSAgICAgICAgICAgICAgICAg ICAgPjwvUGdUYWJsZT4KLSAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+Ci0gICAgICAgICAg ICAgICAgICA8VGFiUGFuZWwgdmFsdWU9e3RhYlZhbH0gaW5kZXg9ezN9IGNsYXNzTmFtZVJvb3Q9 e2NsYXNzZXMudGFiUGFuZWx9PgotICAgICAgICAgICAgICAgICAgICA8UGdUYWJsZQotICAgICAg ICAgICAgICAgICAgICAgIGNhdmVUYWJsZT17ZmFsc2V9Ci0gICAgICAgICAgICAgICAgICAgICAg Y29sdW1ucz17c2VydmVyQ29uZmlnQ29sdW1uc30KLSAgICAgICAgICAgICAgICAgICAgICBkYXRh PXtkYXNoRGF0YX0KLSAgICAgICAgICAgICAgICAgICAgPjwvUGdUYWJsZT4KLSAgICAgICAgICAg ICAgICAgIDwvVGFiUGFuZWw+Ci0gICAgICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAgICAg ICAgPC9UYWJQYW5lbD4KICAgICAgICAgICAgICAgPC9Cb3g+Ci0gICAgICAgICAgICApfQorICAg ICAgICAgICAgPC9Cb3g+CiAgICAgICAgICAgPC9Cb3g+CiAgICAgICAgIDwvQm94PgogICAgICAg KSA6IHNob3dEZWZhdWx0Q29udGVudHMoKSB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNo Ym9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL0NQVS5qc3ggYi93ZWIvcGdhZG1pbi9kYXNoYm9h cmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL0NQVS5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi4yNzYwMzRkOWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9k YXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL0NQVS5qc3gKQEAgLTAsMCArMSwzNzcgQEAK Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJp Z2h0IChDKSAyMDEzIC0gMjAyMywgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhp cyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLwor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8KKy8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9kaXNwbGF5LW5hbWUKK2lt cG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVJlZHVjZXIsIHVz ZU1lbW8gfSBmcm9tICdyZWFjdCc7CitpbXBvcnQgUGdUYWJsZSBmcm9tICdzb3VyY2VzL2NvbXBv bmVudHMvUGdUYWJsZSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOwor aW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKK2ltcG9ydCB7IG1ha2VTdHlsZXMg fSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnOworaW1wb3J0IHVybF9mb3IgZnJvbSAn c291cmNlcy91cmxfZm9yJzsKK2ltcG9ydCB7Z2V0R0NELCBnZXRFcG9jaH0gZnJvbSAnc291cmNl cy91dGlscyc7CitpbXBvcnQge0NoYXJ0Q29udGFpbmVyfSBmcm9tICcuLi9EYXNoYm9hcmQnOwor aW1wb3J0IHsgR3JpZCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IERBVEFf UE9JTlRfU0laRSB9IGZyb20gJ3NvdXJjZXMvY2hhcnRqcyc7CitpbXBvcnQgU3RyZWFtaW5nQ2hh cnQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1p bmdDaGFydCc7CitpbXBvcnQge3VzZUludGVydmFsLCB1c2VQcmV2aW91c30gZnJvbSAnc291cmNl cy9jdXN0b21faG9va3MnOworaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJzsKKworZXhwb3J0IGNv bnN0IFhfQVhJU19MRU5HVEggPSA3NTsKKworY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygo dGhlbWUpID0+ICh7CisgIGF1dG9SZXNpemVyOiB7CisgICAgaGVpZ2h0OiAnMTAwJSAhaW1wb3J0 YW50JywKKyAgICB3aWR0aDogJzEwMCUgIWltcG9ydGFudCcsCisgICAgYmFja2dyb3VuZDogdGhl bWUucGFsZXR0ZS5ncmV5WzQwMF0sCisgICAgcGFkZGluZzogJzcuNXB4JywKKyAgICBvdmVyZmxv d1g6ICdhdXRvICFpbXBvcnRhbnQnLAorICAgIG92ZXJmbG93WTogJ2hpZGRlbiAhaW1wb3J0YW50 JywKKyAgICBtaW5IZWlnaHQ6ICcxMDAlJywKKyAgICBtaW5XaWR0aDogJzEwMCUnLAorICB9LAor ICBjb250YWluZXI6IHsKKyAgICBoZWlnaHQ6ICdhdXRvJywKKyAgICBiYWNrZ3JvdW5kOiB0aGVt ZS5wYWxldHRlLmdyZXlbMjAwXSwKKyAgICBwYWRkaW5nOiAnMTBweCcsCisgICAgbWFyZ2luQm90 dG9tOiAnMzBweCcsCisgIH0sCisgIGZpeGVkQ29udGFpbmVyOiB7CisgICAgaGVpZ2h0OiAnNTc3 cHgnLAorICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3JleVsyMDBdLAorICAgIHBhZGRp bmc6ICcxMHB4JywKKyAgICBtYXJnaW5Cb3R0b206ICczMHB4JywKKyAgfSwKKyAgY29udGFpbmVy SGVhZGVyOiB7CisgICAgZm9udFNpemU6ICcxNnB4JywKKyAgICBmb250V2VpZ2h0OiAnYm9sZCcs CisgICAgbWFyZ2luQm90dG9tOiAnNXB4JywKKyAgfQorfSkpOworCitleHBvcnQgZnVuY3Rpb24g Zm9ybWF0Qnl0ZXMoYnl0ZXMpIHsKKyAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAn R0InLCAnVEInXTsKKyAgbGV0IHVuaXRJbmRleCA9IDA7CisKKyAgd2hpbGUgKGJ5dGVzID49IDEw MjQgJiYgdW5pdEluZGV4IDwgdW5pdHMubGVuZ3RoIC0gMSkgeworICAgIGJ5dGVzIC89IDEwMjQ7 CisgICAgdW5pdEluZGV4Kys7CisgIH0KKworICByZXR1cm4gYCR7Ynl0ZXMudG9GaXhlZCgyKX0g JHt1bml0c1t1bml0SW5kZXhdfWA7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRh KGxhYmVscywgcmVmcmVzaFJhdGUpIHsKKyAgY29uc3QgY29sb3JzID0gWycjRkY2Mzg0JywnIzM2 QTJFQicsJyNGRkNFNTYnLCcjNEJDMEMwJywnIzk5NjZGRicsJyNGRjlGNDAnLCcjOEQ2RTYzJywn IzIxOTZGMycsJyNGRkVCM0InLCcjOUMyN0IwJywnIzAwQkNENCcsJyNDRERDMzknXTsKKyAgbGV0 IGRhdGFzZXRzID0gT2JqZWN0LmtleXMobGFiZWxzKS5tYXAoKGxhYmVsLCBpKT0+eworICAgIHJl dHVybiB7CisgICAgICBsYWJlbDogbGFiZWwsCisgICAgICBkYXRhOiBsYWJlbHNbbGFiZWxdIHx8 IFtdLAorICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yc1tpXSwKKyAgICAgIHBvaW50SGl0UmFkaXVz OiBEQVRBX1BPSU5UX1NJWkUsCisgICAgfTsKKyAgfSkgfHwgW107CisKKyAgcmV0dXJuIHsKKyAg ICBkYXRhc2V0czogZGF0YXNldHMsCisgICAgcmVmcmVzaFJhdGU6IHJlZnJlc2hSYXRlLAorICB9 OworfQorCisvKiBVUkwgZm9yIGZldGNoaW5nIGdyYXBocyBkYXRhICovCitleHBvcnQgZnVuY3Rp b24gZ2V0U3RhdHNVcmwoc2lkPS0xLCBkaWQ9LTEsIGNoYXJ0X25hbWVzPVtdKSB7CisgIGxldCBi YXNlX3VybCA9IHVybF9mb3IoJ2Rhc2hib2FyZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICBiYXNl X3VybCArPSAnLycgKyBzaWQ7CisgIGJhc2VfdXJsICs9IChkaWQgPiAwKSA/ICgnLycgKyBkaWQp IDogJyc7CisgIGJhc2VfdXJsICs9ICc/Y2hhcnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzLmpvaW4o JywnKTsKKworICByZXR1cm4gYmFzZV91cmw7Cit9CisKKy8qIFRoaXMgd2lsbCBwcm9jZXNzIGlu Y29taW5nIGNoYXJ0cyBkYXRhIGFkZCBpdCB0aGUgcHJldmlvdXMgY2hhcnRzCisgKiBkYXRhIHRv IGdldCB0aGUgbmV3IHN0YXRlLgorICovCitleHBvcnQgZnVuY3Rpb24gc3RhdHNSZWR1Y2VyKHN0 YXRlLCBhY3Rpb24pIHsKKworICBpZihhY3Rpb24ucmVzZXQpIHsKKyAgICByZXR1cm4gYWN0aW9u LnJlc2V0OworICB9CisKKyAgaWYoIWFjdGlvbi5pbmNvbWluZykgeworICAgIHJldHVybiBzdGF0 ZTsKKyAgfQorCisgIGlmKCFhY3Rpb24uY291bnRlckRhdGEpIHsKKyAgICBhY3Rpb24uY291bnRl ckRhdGEgPSBhY3Rpb24uaW5jb21pbmc7CisgIH0KKworICBsZXQgbmV3U3RhdGUgPSB7fTsKKyAg T2JqZWN0LmtleXMoYWN0aW9uLmluY29taW5nKS5mb3JFYWNoKGxhYmVsID0+IHsKKyAgICBpZihz dGF0ZVtsYWJlbF0pIHsKKyAgICAgIG5ld1N0YXRlW2xhYmVsXSA9IFsKKyAgICAgICAgYWN0aW9u LmNvdW50ZXIgPyAgYWN0aW9uLmluY29taW5nW2xhYmVsXSAtIGFjdGlvbi5jb3VudGVyRGF0YVts YWJlbF0gOiBhY3Rpb24uaW5jb21pbmdbbGFiZWxdLAorICAgICAgICAuLi5zdGF0ZVtsYWJlbF0u c2xpY2UoMCwgWF9BWElTX0xFTkdUSC0xKSwKKyAgICAgIF07CisgICAgfSBlbHNlIHsKKyAgICAg IG5ld1N0YXRlW2xhYmVsXSA9IFsKKyAgICAgICAgYWN0aW9uLmNvdW50ZXIgPyAgYWN0aW9uLmlu Y29taW5nW2xhYmVsXSAtIGFjdGlvbi5jb3VudGVyRGF0YVtsYWJlbF0gOiBhY3Rpb24uaW5jb21p bmdbbGFiZWxdLAorICAgICAgXTsKKyAgICB9CisgIH0pOworICByZXR1cm4gbmV3U3RhdGU7Cit9 CisKK2NvbnN0IGNoYXJ0c0RlZmF1bHQgPSB7CisgICdjdV9zdGF0cyc6IHsnVXNlciBOb3JtYWwn OiBbXSwgJ1VzZXIgTmljZWQnOiBbXSwgJ0tlcm5lbCc6IFtdLCAnSWRsZSc6IFtdfSwKKyAgJ2xh X3N0YXRzJzogeycxIG1pbic6IFtdLCAnNSBtaW5zJzogW10sICcxMCBtaW5zJzogW10sICcxNSBt aW5zJzogW119LAorICAncGN1X3N0YXRzJzoge30sCit9OworCitleHBvcnQgZGVmYXVsdCBmdW5j dGlvbiBDUFUoe3ByZWZlcmVuY2VzLCBzaWQsIGRpZCwgcGFnZVZpc2libGUsIGVuYWJsZVBvbGw9 dHJ1ZX0pIHsKKyAgY29uc3QgcmVmcmVzaE9uID0gdXNlUmVmKG51bGwpOworICBjb25zdCBwcmV2 UHJlZmVybmNlcyA9IHVzZVByZXZpb3VzKHByZWZlcmVuY2VzKTsKKworICBjb25zdCBbY3B1VXNh Z2VJbmZvLCBjcHVVc2FnZUluZm9SZWR1Y2VdID0gdXNlUmVkdWNlcihzdGF0c1JlZHVjZXIsIGNo YXJ0c0RlZmF1bHRbJ2N1X3N0YXRzJ10pOworICBjb25zdCBbbG9hZEF2Z0luZm8sIGxvYWRBdmdJ bmZvUmVkdWNlXSA9IHVzZVJlZHVjZXIoc3RhdHNSZWR1Y2VyLCBjaGFydHNEZWZhdWx0WydsYV9z dGF0cyddKTsKKyAgY29uc3QgW3Byb2Nlc3NDcHVVc2FnZVN0YXRzLCBzZXRQcm9jZXNzQ3B1VXNh Z2VTdGF0c10gPSB1c2VTdGF0ZShbXSk7CisKKyAgY29uc3QgWywgc2V0Q291bnRlckRhdGFdID0g dXNlU3RhdGUoe30pOworCisgIGNvbnN0IFtwb2xsRGVsYXksIHNldFBvbGxEZWxheV0gPSB1c2VT dGF0ZSg1MDAwKTsKKworICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRl KG51bGwpOworICBjb25zdCBbY2hhcnREcmF3bk9uY2UsIHNldENoYXJ0RHJhd25PbmNlXSA9IHVz ZVN0YXRlKGZhbHNlKTsKKworICBjb25zdCB0YWJsZUhlYWRlciA9IFsKKyAgICB7CisgICAgICBI ZWFkZXI6ICdQSUQnLAorICAgICAgYWNjZXNzb3I6ICdwaWQnLAorICAgICAgc29ydGFibGU6IHRy dWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBm YWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ05hbWUnLAorICAgICAgYWNjZXNz b3I6ICduYW1lJywKKyAgICAgIHNvcnRhYmxlOiB0cnVlLAorICAgICAgcmVzaXphYmxlOiB0cnVl LAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwKKyAgICB7CisgICAg ICBIZWFkZXI6ICdDUFUgVXNhZ2UnLAorICAgICAgYWNjZXNzb3I6ICdjcHVfdXNhZ2UnLAorICAg ICAgc29ydGFibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNhYmxl R2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICBdOworCisgIHVzZUVmZmVjdCgoKT0+ewor ICAgIGxldCBjYWxjUG9sbERlbGF5ID0gZmFsc2U7CisgICAgaWYocHJldlByZWZlcm5jZXMpIHsK KyAgICAgIGlmKHByZXZQcmVmZXJuY2VzWydjdV9zdGF0c19yZWZyZXNoJ10gIT0gcHJlZmVyZW5j ZXNbJ2N1X3N0YXRzX3JlZnJlc2gnXSkgeworICAgICAgICBjcHVVc2FnZUluZm9SZWR1Y2Uoe3Jl c2V0OiBjaGFydHNEZWZhdWx0WydjdV9zdGF0cyddfSk7CisgICAgICAgIGNhbGNQb2xsRGVsYXkg PSB0cnVlOworICAgICAgfQorICAgICAgaWYocHJldlByZWZlcm5jZXNbJ2xhX3N0YXRzX3JlZnJl c2gnXSAhPSBwcmVmZXJlbmNlc1snbGFfc3RhdHNfcmVmcmVzaCddKSB7CisgICAgICAgIGxvYWRB dmdJbmZvUmVkdWNlKHtyZXNldDogY2hhcnRzRGVmYXVsdFsnbGFfc3RhdHMnXX0pOworICAgICAg ICBjYWxjUG9sbERlbGF5ID0gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIGlmKHByZXZQcmVmZXJuY2Vz WydwY3Vfc3RhdHNfcmVmcmVzaCddICE9IHByZWZlcmVuY2VzWydwY3Vfc3RhdHNfcmVmcmVzaCdd KSB7CisgICAgICAgIHNldFByb2Nlc3NDcHVVc2FnZVN0YXRzKHtyZXNldDogY2hhcnRzRGVmYXVs dFsncGN1X3N0YXRzJ119KTsKKyAgICAgICAgY2FsY1BvbGxEZWxheSA9IHRydWU7CisgICAgICB9 CisgICAgfSBlbHNlIHsKKyAgICAgIGNhbGNQb2xsRGVsYXkgPSB0cnVlOworICAgIH0KKyAgICBp ZihjYWxjUG9sbERlbGF5KSB7CisgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hhcnRz RGVmYXVsdCk7CisgICAgICBjb25zdCBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICAgIGlmKGxl bmd0aCA9PSAxKXsKKyAgICAgICAgc2V0UG9sbERlbGF5KAorICAgICAgICAgIHByZWZlcmVuY2Vz W2tleXNbMF0rJ19yZWZyZXNoJ10qMTAwMAorICAgICAgICApOworICAgICAgfSBlbHNlIHsKKyAg ICAgICAgc2V0UG9sbERlbGF5KAorICAgICAgICAgIGdldEdDRChPYmplY3Qua2V5cyhjaGFydHNE ZWZhdWx0KS5tYXAoKG5hbWUpPT5wcmVmZXJlbmNlc1tuYW1lKydfcmVmcmVzaCddKSkqMTAwMAor ICAgICAgICApOworICAgICAgfQorICAgIH0KKyAgfSwgW3ByZWZlcmVuY2VzXSk7CisKKyAgdXNl RWZmZWN0KCgpPT57CisgICAgLyogQ2hhcnRzIHJlbmRlcmVkIGFyZSBub3QgdmlzaWJsZSB3aGVu LCB0aGUgZGFzaGJvYXJkIGlzIGhpZGRlbiBidXQgbGF0ZXIgdmlzaWJsZSAqLworICAgIGlmKHBh Z2VWaXNpYmxlICYmICFjaGFydERyYXduT25jZSkgeworICAgICAgc2V0Q2hhcnREcmF3bk9uY2Uo dHJ1ZSk7CisgICAgfQorICB9LCBbcGFnZVZpc2libGVdKTsKKworICB1c2VJbnRlcnZhbCgoKT0+ eworICAgIGNvbnN0IGN1cnJFcG9jaCA9IGdldEVwb2NoKCk7CisgICAgaWYocmVmcmVzaE9uLmN1 cnJlbnQgPT09IG51bGwpIHsKKyAgICAgIGxldCB0bXBSZWYgPSB7fTsKKyAgICAgIE9iamVjdC5r ZXlzKGNoYXJ0c0RlZmF1bHQpLmZvckVhY2goKG5hbWUpPT57CisgICAgICAgIHRtcFJlZltuYW1l XSA9IGN1cnJFcG9jaDsKKyAgICAgIH0pOworICAgICAgcmVmcmVzaE9uLmN1cnJlbnQgPSB0bXBS ZWY7CisgICAgfQorCisgICAgbGV0IGdldEZvciA9IFtdOworICAgIE9iamVjdC5rZXlzKGNoYXJ0 c0RlZmF1bHQpLmZvckVhY2goKG5hbWUpPT57CisgICAgICBpZihjdXJyRXBvY2ggPj0gcmVmcmVz aE9uLmN1cnJlbnRbbmFtZV0pIHsKKyAgICAgICAgZ2V0Rm9yLnB1c2gobmFtZSk7CisgICAgICAg IHJlZnJlc2hPbi5jdXJyZW50W25hbWVdID0gY3VyckVwb2NoICsgcHJlZmVyZW5jZXNbbmFtZSsn X3JlZnJlc2gnXTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGxldCBwYXRoID0gZ2V0U3RhdHNV cmwoc2lkLCBkaWQsIGdldEZvcik7CisgICAgaWYgKCFwYWdlVmlzaWJsZSl7CisgICAgICByZXR1 cm47CisgICAgfQorICAgIGF4aW9zLmdldChwYXRoKQorICAgICAgLnRoZW4oKHJlc3ApPT57Cisg ICAgICAgIGxldCBkYXRhID0gcmVzcC5kYXRhOworICAgICAgICBzZXRFcnJvck1zZyhudWxsKTsK KyAgICAgICAgaWYoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnY3Vfc3RhdHMnKSl7CisgICAgICAgICAg bGV0IG5ld19jdV9zdGF0cyA9IHsKKyAgICAgICAgICAgICdVc2VyIE5vcm1hbCc6IGRhdGFbJ2N1 X3N0YXRzJ11bJ3VzZXJtb2RlX25vcm1hbF9wcm9jZXNzX3BlcmNlbnQnXT9kYXRhWydjdV9zdGF0 cyddWyd1c2VybW9kZV9ub3JtYWxfcHJvY2Vzc19wZXJjZW50J106MCwKKyAgICAgICAgICAgICdV c2VyIE5pY2VkJzogZGF0YVsnY3Vfc3RhdHMnXVsndXNlcm1vZGVfbmljZWRfcHJvY2Vzc19wZXJj ZW50J10/ZGF0YVsnY3Vfc3RhdHMnXVsndXNlcm1vZGVfbmljZWRfcHJvY2Vzc19wZXJjZW50J106 MCwKKyAgICAgICAgICAgICdLZXJuZWwnOiBkYXRhWydjdV9zdGF0cyddWydrZXJuZWxtb2RlX3By b2Nlc3NfcGVyY2VudCddP2RhdGFbJ2N1X3N0YXRzJ11bJ2tlcm5lbG1vZGVfcHJvY2Vzc19wZXJj ZW50J106MCwKKyAgICAgICAgICAgICdJZGxlJzogZGF0YVsnY3Vfc3RhdHMnXVsnaWRsZV9tb2Rl X3BlcmNlbnQnXT9kYXRhWydjdV9zdGF0cyddWydpZGxlX21vZGVfcGVyY2VudCddOjAsCisgICAg ICAgICAgfTsKKyAgICAgICAgICBjcHVVc2FnZUluZm9SZWR1Y2Uoe2luY29taW5nOiBuZXdfY3Vf c3RhdHN9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKGRhdGEuaGFzT3duUHJvcGVydHkoJ2xh X3N0YXRzJykpeworICAgICAgICAgIGxldCBuZXdfbGFfc3RhdHMgPSB7CisgICAgICAgICAgICAn MSBtaW4nOiBkYXRhWydsYV9zdGF0cyddWydsb2FkX2F2Z19vbmVfbWludXRlJ10/ZGF0YVsnbGFf c3RhdHMnXVsnbG9hZF9hdmdfb25lX21pbnV0ZSddOjAsCisgICAgICAgICAgICAnNSBtaW5zJzog ZGF0YVsnbGFfc3RhdHMnXVsnbG9hZF9hdmdfZml2ZV9taW51dGVzJ10/ZGF0YVsnbGFfc3RhdHMn XVsnbG9hZF9hdmdfZml2ZV9taW51dGVzJ106MCwKKyAgICAgICAgICAgICcxMCBtaW5zJzogZGF0 YVsnbGFfc3RhdHMnXVsnbG9hZF9hdmdfdGVuX21pbnV0ZXMnXT9kYXRhWydsYV9zdGF0cyddWyds b2FkX2F2Z190ZW5fbWludXRlcyddOjAsCisgICAgICAgICAgICAnMTUgbWlucyc6IGRhdGFbJ2xh X3N0YXRzJ11bJ2xvYWRfYXZnX2ZpZnRlZW5fbWludXRlcyddP2RhdGFbJ2xhX3N0YXRzJ11bJ2xv YWRfYXZnX2ZpZnRlZW5fbWludXRlcyddOjAsCisgICAgICAgICAgfTsKKyAgICAgICAgICBsb2Fk QXZnSW5mb1JlZHVjZSh7aW5jb21pbmc6IG5ld19sYV9zdGF0c30pOworICAgICAgICB9CisKKyAg ICAgICAgaWYoZGF0YS5oYXNPd25Qcm9wZXJ0eSgncGN1X3N0YXRzJykpeworICAgICAgICAgIGxl dCBwY3VfaW5mb19saXN0ID0gW107CisgICAgICAgICAgY29uc3QgcGN1X2luZm9fb2JqID0gZGF0 YVsncGN1X3N0YXRzJ107CisgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcGN1X2luZm9fb2Jq KSB7CisgICAgICAgICAgICBwY3VfaW5mb19saXN0LnB1c2goeyBpY29uOiAnJywgcGlkOiBwY3Vf aW5mb19vYmpba2V5XVsncGlkJ10sIG5hbWU6IHBjdV9pbmZvX29ialtrZXldWyduYW1lJ10sIGNw dV91c2FnZTogZm9ybWF0Qnl0ZXMocGN1X2luZm9fb2JqW2tleV1bJ2NwdV91c2FnZSddKSB9KTsK KyAgICAgICAgICB9CisKKyAgICAgICAgICBzZXRQcm9jZXNzQ3B1VXNhZ2VTdGF0cyhwY3VfaW5m b19saXN0KTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENvdW50ZXJEYXRhKChwcmV2Q291bnRl ckRhdGEpPT57CisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIC4uLnByZXZDb3VudGVy RGF0YSwKKyAgICAgICAgICAgIC4uLmRhdGEsCisgICAgICAgICAgfTsKKyAgICAgICAgfSk7Cisg ICAgICB9KQorICAgICAgLmNhdGNoKChlcnJvcik9PnsKKyAgICAgICAgaWYoIWVycm9yTXNnKSB7 CisgICAgICAgICAgY3B1VXNhZ2VJbmZvUmVkdWNlKHtyZXNldDpjaGFydHNEZWZhdWx0WydjdV9z dGF0cyddfSk7CisgICAgICAgICAgbG9hZEF2Z0luZm9SZWR1Y2Uoe3Jlc2V0OmNoYXJ0c0RlZmF1 bHRbJ2xhX3N0YXRzJ119KTsKKyAgICAgICAgICBzZXRDb3VudGVyRGF0YSh7fSk7CisgICAgICAg ICAgaWYoZXJyb3IucmVzcG9uc2UpIHsKKyAgICAgICAgICAgIGlmIChlcnJvci5yZXNwb25zZS5z dGF0dXMgPT09IDQyOCkgeworICAgICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdQbGVh c2UgY29ubmVjdCB0byB0aGUgc2VsZWN0ZWQgc2VydmVyIHRvIHZpZXcgdGhlIGdyYXBoLicpKTsK KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHNldEVycm9yTXNnKGdldHRleHQo J0FuIGVycm9yIG9jY3VycmVkIHdoaWxzdCByZW5kZXJpbmcgdGhlIGdyYXBoLicpKTsKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICB9IGVsc2UgaWYoZXJyb3IucmVxdWVzdCkgeworICAgICAgICAg ICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRo ZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicpKTsKKyAgICAgICAg ICAgIHJldHVybjsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29uc29sZS5lcnJv cihlcnJvcik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9KTsKKyAgfSwgZW5hYmxl UG9sbCA/IHBvbGxEZWxheSA6IC0xKTsKKworICByZXR1cm4gKAorICAgIDw+CisgICAgICA8ZGl2 IGRhdGEtdGVzdGlkPSdncmFwaC1wb2xsLWRlbGF5JyBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319 Pntwb2xsRGVsYXl9PC9kaXY+CisgICAgICB7Y2hhcnREcmF3bk9uY2UgJiYKKyAgICAgICAgPENQ VVdyYXBwZXIKKyAgICAgICAgICBjcHVVc2FnZUluZm89e3RyYW5zZm9ybURhdGEoY3B1VXNhZ2VJ bmZvLCBwcmVmZXJlbmNlc1snY3Vfc3RhdHNfcmVmcmVzaCddKX0KKyAgICAgICAgICBsb2FkQXZn SW5mbz17dHJhbnNmb3JtRGF0YShsb2FkQXZnSW5mbywgcHJlZmVyZW5jZXNbJ2xhX3N0YXRzX3Jl ZnJlc2gnXSl9CisgICAgICAgICAgcHJvY2Vzc0NwdVVzYWdlU3RhdHM9e3Byb2Nlc3NDcHVVc2Fn ZVN0YXRzfQorICAgICAgICAgIHRhYmxlSGVhZGVyPXt0YWJsZUhlYWRlcn0KKyAgICAgICAgICBl cnJvck1zZz17ZXJyb3JNc2d9CisgICAgICAgICAgc2hvd1Rvb2x0aXA9e3ByZWZlcmVuY2VzWydn cmFwaF9tb3VzZV90cmFjayddfQorICAgICAgICAgIHNob3dEYXRhUG9pbnRzPXtwcmVmZXJlbmNl c1snZ3JhcGhfZGF0YV9wb2ludHMnXX0KKyAgICAgICAgICBsaW5lQm9yZGVyV2lkdGg9e3ByZWZl cmVuY2VzWydncmFwaF9saW5lX2JvcmRlcl93aWR0aCddfQorICAgICAgICAgIGlzRGF0YWJhc2U9 e2RpZCA+IDB9CisgICAgICAgICAgaXNUZXN0PXtmYWxzZX0KKyAgICAgICAgLz4KKyAgICAgIH0K KyAgICA8Lz4KKyAgKTsKK30KKworQ1BVLnByb3BUeXBlcyA9IHsKKyAgcHJlZmVyZW5jZXM6IFBy b3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCwKKyAgc2lkOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQ cm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsIFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZF0p LAorICBkaWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJl ZCwgUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXSksCisgIHBhZ2VWaXNpYmxlOiBQcm9wVHlw ZXMuYm9vbCwKKyAgZW5hYmxlUG9sbDogUHJvcFR5cGVzLmJvb2wsCit9OworCitleHBvcnQgZnVu Y3Rpb24gQ1BVV3JhcHBlcihwcm9wcykgeworICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7 CisgIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpPT4oeworICAgIHNob3dEYXRhUG9pbnRzOiBw cm9wcy5zaG93RGF0YVBvaW50cywKKyAgICBzaG93VG9vbHRpcDogcHJvcHMuc2hvd1Rvb2x0aXAs CisgICAgbGluZUJvcmRlcldpZHRoOiBwcm9wcy5saW5lQm9yZGVyV2lkdGgsCisgIH0pLCBbcHJv cHMuc2hvd1Rvb2x0aXAsIHByb3BzLnNob3dEYXRhUG9pbnRzLCBwcm9wcy5saW5lQm9yZGVyV2lk dGhdKTsKKyAgcmV0dXJuICgKKyAgICA8PgorICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9 ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJ9PgorICAgICAgICA8R3JpZCBpdGVtIG1k PXs2fSBzbT17MTJ9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5l ckhlYWRlcn0+e2dldHRleHQoJ0NQVSBVc2FnZSAoKScpfTwvZGl2PgorICAgICAgICAgIDxDaGFy dENvbnRhaW5lciBpZD0nY3UtZ3JhcGgnIHRpdGxlPXtnZXR0ZXh0KCcnKX0gZGF0YXNldHM9e3By b3BzLmNwdVVzYWdlSW5mby5kYXRhc2V0c30gIGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNU ZXN0PXtwcm9wcy5pc1Rlc3R9PgorICAgICAgICAgICAgPFN0cmVhbWluZ0NoYXJ0IGRhdGE9e3By b3BzLmNwdVVzYWdlSW5mb30gZGF0YVBvaW50U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9 e1hfQVhJU19MRU5HVEh9IG9wdGlvbnM9e29wdGlvbnN9IC8+CisgICAgICAgICAgPC9DaGFydENv bnRhaW5lcj4KKyAgICAgICAgPC9HcmlkPgorICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fSBzbT17 MTJ9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lckhlYWRlcn0+ e2dldHRleHQoJ0xvYWQgQXZlcmFnZScpfTwvZGl2PgorICAgICAgICAgIDxDaGFydENvbnRhaW5l ciBpZD0nbGEtZ3JhcGgnIHRpdGxlPXtnZXR0ZXh0KCcnKX0gZGF0YXNldHM9e3Byb3BzLmxvYWRB dmdJbmZvLmRhdGFzZXRzfSAgZXJyb3JNc2c9e3Byb3BzLmVycm9yTXNnfSBpc1Rlc3Q9e3Byb3Bz LmlzVGVzdH0+CisgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQgZGF0YT17cHJvcHMubG9hZEF2 Z0luZm99IGRhdGFQb2ludFNpemU9e0RBVEFfUE9JTlRfU0laRX0geFJhbmdlPXtYX0FYSVNfTEVO R1RIfSBvcHRpb25zPXtvcHRpb25zfSAvPgorICAgICAgICAgIDwvQ2hhcnRDb250YWluZXI+Cisg ICAgICAgIDwvR3JpZD4KKyAgICAgIDwvR3JpZD4KKyAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFj aW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuZml4ZWRDb250YWluZXJ9PgorICAgICAgICA8UGdU YWJsZQorICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5hdXRvUmVzaXplcn0KKyAgICAgICAg ICBjb2x1bW5zPXtwcm9wcy50YWJsZUhlYWRlcn0KKyAgICAgICAgICBkYXRhPXtwcm9wcy5wcm9j ZXNzQ3B1VXNhZ2VTdGF0c30KKyAgICAgICAgICBtc2c9e3Byb3BzLmVycm9yTXNnfQorICAgICAg ICAgIHR5cGU9eydwYW5lbCd9CisgICAgICAgID48L1BnVGFibGU+CisgICAgICA8L0dyaWQ+Cisg ICAgPC8+CisgICk7Cit9CisKK2NvbnN0IHByb3BUeXBlU3RhdHMgPSBQcm9wVHlwZXMuc2hhcGUo eworICBkYXRhc2V0czogUHJvcFR5cGVzLmFycmF5LAorICByZWZyZXNoUmF0ZTogUHJvcFR5cGVz Lm51bWJlci5pc1JlcXVpcmVkLAorfSk7CitDUFVXcmFwcGVyLnByb3BUeXBlcyA9IHsKKyAgY3B1 VXNhZ2VJbmZvOiBwcm9wVHlwZVN0YXRzLmlzUmVxdWlyZWQsCisgIGxvYWRBdmdJbmZvOiBwcm9w VHlwZVN0YXRzLmlzUmVxdWlyZWQsCisgIHByb2Nlc3NDcHVVc2FnZVN0YXRzOiBQcm9wVHlwZXMu YXJyYXkuaXNSZXF1aXJlZCwKKyAgdGFibGVIZWFkZXI6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVp cmVkLAorICBlcnJvck1zZzogUHJvcFR5cGVzLnN0cmluZywKKyAgc2hvd1Rvb2x0aXA6IFByb3BU eXBlcy5ib29sLmlzUmVxdWlyZWQsCisgIHNob3dEYXRhUG9pbnRzOiBQcm9wVHlwZXMuYm9vbC5p c1JlcXVpcmVkLAorICBsaW5lQm9yZGVyV2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJl ZCwKKyAgaXNEYXRhYmFzZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCwKKyAgaXNUZXN0OiBQ cm9wVHlwZXMuYm9vbCwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4 IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNzRlOGY0MjRiCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9N ZW1vcnkuanN4CkBAIC0wLDAgKzEsMzcyIEBACitpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVz ZUVmZmVjdCwgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnOworaW1w b3J0IFBnVGFibGUgZnJvbSAnc291cmNlcy9jb21wb25lbnRzL1BnVGFibGUnOworaW1wb3J0IGdl dHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJv cC10eXBlcyc7CitpbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUv c3R5bGVzJzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zvcic7CitpbXBvcnQg e2dldEdDRCwgZ2V0RXBvY2h9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOworaW1wb3J0IHtDaGFydENv bnRhaW5lcn0gZnJvbSAnLi4vRGFzaGJvYXJkJzsKK2ltcG9ydCB7IEdyaWQgfSBmcm9tICdAbWF0 ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgeyBEQVRBX1BPSU5UX1NJWkUgfSBmcm9tICdzb3VyY2Vz L2NoYXJ0anMnOworaW1wb3J0IFN0cmVhbWluZ0NoYXJ0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQnOworaW1wb3J0IHt1c2VJbnRl cnZhbCwgdXNlUHJldmlvdXN9IGZyb20gJ3NvdXJjZXMvY3VzdG9tX2hvb2tzJzsKK2ltcG9ydCBh eGlvcyBmcm9tICdheGlvcyc7CisKK2V4cG9ydCBjb25zdCBYX0FYSVNfTEVOR1RIID0gNzU7CisK K2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoeworICBhdXRvUmVzaXpl cjogeworICAgIGhlaWdodDogJzEwMCUgIWltcG9ydGFudCcsCisgICAgd2lkdGg6ICcxMDAlICFp bXBvcnRhbnQnLAorICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3JleVs0MDBdLAorICAg IHBhZGRpbmc6ICc3LjVweCcsCisgICAgb3ZlcmZsb3dYOiAnYXV0byAhaW1wb3J0YW50JywKKyAg ICBvdmVyZmxvd1k6ICdoaWRkZW4gIWltcG9ydGFudCcsCisgICAgbWluSGVpZ2h0OiAnMTAwJScs CisgICAgbWluV2lkdGg6ICcxMDAlJywKKyAgfSwKKyAgY29udGFpbmVyOiB7CisgICAgaGVpZ2h0 OiAnYXV0bycsCisgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzIwMF0sCisgICAg cGFkZGluZzogJzEwcHgnLAorICAgIG1hcmdpbkJvdHRvbTogJzMwcHgnLAorICB9LAorICBmaXhl ZENvbnRhaW5lcjogeworICAgIGhlaWdodDogJzU3N3B4JywKKyAgICBiYWNrZ3JvdW5kOiB0aGVt ZS5wYWxldHRlLmdyZXlbMjAwXSwKKyAgICBwYWRkaW5nOiAnMTBweCcsCisgICAgbWFyZ2luQm90 dG9tOiAnMzBweCcsCisgIH0sCisgIGNvbnRhaW5lckhlYWRlcjogeworICAgIGZvbnRTaXplOiAn MTZweCcsCisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICAgIG1hcmdpbkJvdHRvbTogJzVweCcs CisgIH0KK30pKTsKKworZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzKSB7CisgIGNv bnN0IHVuaXRzID0gWydCJywgJ0tCJywgJ01CJywgJ0dCJywgJ1RCJ107CisgIGxldCB1bml0SW5k ZXggPSAwOworCisgIHdoaWxlIChieXRlcyA+PSAxMDI0ICYmIHVuaXRJbmRleCA8IHVuaXRzLmxl bmd0aCAtIDEpIHsKKyAgICBieXRlcyAvPSAxMDI0OworICAgIHVuaXRJbmRleCsrOworICB9CisK KyAgcmV0dXJuIGAke2J5dGVzLnRvRml4ZWQoMil9ICR7dW5pdHNbdW5pdEluZGV4XX1gOworfQor CitleHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRGF0YShsYWJlbHMsIHJlZnJlc2hSYXRlKSB7Cisg IGNvbnN0IGNvbG9ycyA9IFsnI0ZGNjM4NCcsJyMzNkEyRUInLCcjRkZDRTU2JywnIzRCQzBDMCcs JyM5OTY2RkYnLCcjRkY5RjQwJywnIzhENkU2MycsJyMyMTk2RjMnLCcjRkZFQjNCJywnIzlDMjdC MCcsJyMwMEJDRDQnLCcjQ0REQzM5J107CisgIGxldCBkYXRhc2V0cyA9IE9iamVjdC5rZXlzKGxh YmVscykubWFwKChsYWJlbCwgaSk9PnsKKyAgICByZXR1cm4geworICAgICAgbGFiZWw6IGxhYmVs LAorICAgICAgZGF0YTogbGFiZWxzW2xhYmVsXSB8fCBbXSwKKyAgICAgIGJvcmRlckNvbG9yOiBj b2xvcnNbaV0sCisgICAgICBwb2ludEhpdFJhZGl1czogREFUQV9QT0lOVF9TSVpFLAorICAgIH07 CisgIH0pIHx8IFtdOworCisgIHJldHVybiB7CisgICAgZGF0YXNldHM6IGRhdGFzZXRzLAorICAg IHJlZnJlc2hSYXRlOiByZWZyZXNoUmF0ZSwKKyAgfTsKK30KKworLyogVVJMIGZvciBmZXRjaGlu ZyBncmFwaHMgZGF0YSAqLworZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXRzVXJsKHNpZD0tMSwgZGlk PS0xLCBjaGFydF9uYW1lcz1bXSkgeworICBsZXQgYmFzZV91cmwgPSB1cmxfZm9yKCdkYXNoYm9h cmQuc3lzdGVtX3N0YXRpc3RpY3MnKTsKKyAgYmFzZV91cmwgKz0gJy8nICsgc2lkOworICBiYXNl X3VybCArPSAoZGlkID4gMCkgPyAoJy8nICsgZGlkKSA6ICcnOworICBiYXNlX3VybCArPSAnP2No YXJ0X25hbWVzPScgKyBjaGFydF9uYW1lcy5qb2luKCcsJyk7CisKKyAgcmV0dXJuIGJhc2VfdXJs OworfQorCisvKiBUaGlzIHdpbGwgcHJvY2VzcyBpbmNvbWluZyBjaGFydHMgZGF0YSBhZGQgaXQg dGhlIHByZXZpb3VzIGNoYXJ0cworICogZGF0YSB0byBnZXQgdGhlIG5ldyBzdGF0ZS4KKyAqLwor ZXhwb3J0IGZ1bmN0aW9uIHN0YXRzUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7CisKKyAgaWYoYWN0 aW9uLnJlc2V0KSB7CisgICAgcmV0dXJuIGFjdGlvbi5yZXNldDsKKyAgfQorCisgIGlmKCFhY3Rp b24uaW5jb21pbmcpIHsKKyAgICByZXR1cm4gc3RhdGU7CisgIH0KKworICBpZighYWN0aW9uLmNv dW50ZXJEYXRhKSB7CisgICAgYWN0aW9uLmNvdW50ZXJEYXRhID0gYWN0aW9uLmluY29taW5nOwor ICB9CisKKyAgbGV0IG5ld1N0YXRlID0ge307CisgIE9iamVjdC5rZXlzKGFjdGlvbi5pbmNvbWlu ZykuZm9yRWFjaChsYWJlbCA9PiB7CisgICAgaWYoc3RhdGVbbGFiZWxdKSB7CisgICAgICBuZXdT dGF0ZVtsYWJlbF0gPSBbCisgICAgICAgIGFjdGlvbi5jb3VudGVyID8gIGFjdGlvbi5pbmNvbWlu Z1tsYWJlbF0gLSBhY3Rpb24uY291bnRlckRhdGFbbGFiZWxdIDogYWN0aW9uLmluY29taW5nW2xh YmVsXSwKKyAgICAgICAgLi4uc3RhdGVbbGFiZWxdLnNsaWNlKDAsIFhfQVhJU19MRU5HVEgtMSks CisgICAgICBdOworICAgIH0gZWxzZSB7CisgICAgICBuZXdTdGF0ZVtsYWJlbF0gPSBbCisgICAg ICAgIGFjdGlvbi5jb3VudGVyID8gIGFjdGlvbi5pbmNvbWluZ1tsYWJlbF0gLSBhY3Rpb24uY291 bnRlckRhdGFbbGFiZWxdIDogYWN0aW9uLmluY29taW5nW2xhYmVsXSwKKyAgICAgIF07CisgICAg fQorICB9KTsKKyAgcmV0dXJuIG5ld1N0YXRlOworfQorCitjb25zdCBjaGFydHNEZWZhdWx0ID0g eworICAnbV9zdGF0cyc6IHsnVG90YWwnOiBbXSwgJ1VzZWQnOiBbXSwgJ0ZyZWUnOiBbXX0sCisg ICdzbV9zdGF0cyc6IHsnVG90YWwnOiBbXSwgJ1VzZWQnOiBbXSwgJ0ZyZWUnOiBbXX0sCisgICdw bXVfc3RhdHMnOiB7fSwKK307CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1lbW9yeSh7cHJl ZmVyZW5jZXMsIHNpZCwgZGlkLCBwYWdlVmlzaWJsZSwgZW5hYmxlUG9sbD10cnVlfSkgeworICBj b25zdCByZWZyZXNoT24gPSB1c2VSZWYobnVsbCk7CisgIGNvbnN0IHByZXZQcmVmZXJuY2VzID0g dXNlUHJldmlvdXMocHJlZmVyZW5jZXMpOworCisgIGNvbnN0IFttZW1vcnlVc2FnZUluZm8sIG1l bW9yeVVzYWdlSW5mb1JlZHVjZV0gPSB1c2VSZWR1Y2VyKHN0YXRzUmVkdWNlciwgY2hhcnRzRGVm YXVsdFsnbV9zdGF0cyddKTsKKyAgY29uc3QgW3N3YXBNZW1vcnlVc2FnZUluZm8sIHN3YXBNZW1v cnlVc2FnZUluZm9SZWR1Y2VdID0gdXNlUmVkdWNlcihzdGF0c1JlZHVjZXIsIGNoYXJ0c0RlZmF1 bHRbJ3NtX3N0YXRzJ10pOworICBjb25zdCBbcHJvY2Vzc01lbW9yeVVzYWdlU3RhdHMsIHNldFBy b2Nlc3NNZW1vcnlVc2FnZVN0YXRzXSA9IHVzZVN0YXRlKFtdKTsKKworICBjb25zdCBbLCBzZXRD b3VudGVyRGF0YV0gPSB1c2VTdGF0ZSh7fSk7CisKKyAgY29uc3QgW3BvbGxEZWxheSwgc2V0UG9s bERlbGF5XSA9IHVzZVN0YXRlKDUwMDApOworICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNn XSA9IHVzZVN0YXRlKG51bGwpOworICBjb25zdCBbY2hhcnREcmF3bk9uY2UsIHNldENoYXJ0RHJh d25PbmNlXSA9IHVzZVN0YXRlKGZhbHNlKTsKKworICBjb25zdCB0YWJsZUhlYWRlciA9IFsKKyAg ICB7CisgICAgICBIZWFkZXI6ICdQSUQnLAorICAgICAgYWNjZXNzb3I6ICdwaWQnLAorICAgICAg c29ydGFibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNhYmxlR2xv YmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ05hbWUnLAor ICAgICAgYWNjZXNzb3I6ICduYW1lJywKKyAgICAgIHNvcnRhYmxlOiB0cnVlLAorICAgICAgcmVz aXphYmxlOiB0cnVlLAorICAgICAgZGlzYWJsZUdsb2JhbEZpbHRlcjogZmFsc2UsCisgICAgfSwK KyAgICB7CisgICAgICBIZWFkZXI6ICdNZW1vcnkgVXNhZ2UnLAorICAgICAgYWNjZXNzb3I6ICdt ZW1vcnlfdXNhZ2UnLAorICAgICAgc29ydGFibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRy dWUsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAg ICAgIEhlYWRlcjogJ01lbW9yeSBCeXRlcycsCisgICAgICBhY2Nlc3NvcjogJ21lbW9yeV9ieXRl cycsCisgICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKKyAgICAg IGRpc2FibGVHbG9iYWxGaWx0ZXI6IGZhbHNlLAorICAgIH0sCisgIF07CisKKyAgdXNlRWZmZWN0 KCgpPT57CisgICAgbGV0IGNhbGNQb2xsRGVsYXkgPSBmYWxzZTsKKyAgICBpZihwcmV2UHJlZmVy bmNlcykgeworICAgICAgaWYocHJldlByZWZlcm5jZXNbJ21fc3RhdHNfcmVmcmVzaCddICE9IHBy ZWZlcmVuY2VzWydtX3N0YXRzX3JlZnJlc2gnXSkgeworICAgICAgICBtZW1vcnlVc2FnZUluZm9S ZWR1Y2Uoe3Jlc2V0OiBjaGFydHNEZWZhdWx0WydtX3N0YXRzJ119KTsKKyAgICAgICAgY2FsY1Bv bGxEZWxheSA9IHRydWU7CisgICAgICB9CisgICAgICBpZihwcmV2UHJlZmVybmNlc1snc21fc3Rh dHNfcmVmcmVzaCddICE9IHByZWZlcmVuY2VzWydzbV9zdGF0c19yZWZyZXNoJ10pIHsKKyAgICAg ICAgc3dhcE1lbW9yeVVzYWdlSW5mb1JlZHVjZSh7cmVzZXQ6IGNoYXJ0c0RlZmF1bHRbJ3NtX3N0 YXRzJ119KTsKKyAgICAgICAgY2FsY1BvbGxEZWxheSA9IHRydWU7CisgICAgICB9CisgICAgICBp ZihwcmV2UHJlZmVybmNlc1sncG11X3N0YXRzX3JlZnJlc2gnXSAhPSBwcmVmZXJlbmNlc1sncG11 X3N0YXRzX3JlZnJlc2gnXSkgeworICAgICAgICBzZXRQcm9jZXNzTWVtb3J5VXNhZ2VTdGF0cyh7 cmVzZXQ6IGNoYXJ0c0RlZmF1bHRbJ3BtdV9zdGF0cyddfSk7CisgICAgICAgIGNhbGNQb2xsRGVs YXkgPSB0cnVlOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBjYWxjUG9sbERlbGF5ID0g dHJ1ZTsKKyAgICB9CisgICAgaWYoY2FsY1BvbGxEZWxheSkgeworICAgICAgY29uc3Qga2V5cyA9 IE9iamVjdC5rZXlzKGNoYXJ0c0RlZmF1bHQpOworICAgICAgY29uc3QgbGVuZ3RoID0ga2V5cy5s ZW5ndGg7CisgICAgICBpZihsZW5ndGggPT0gMSl7CisgICAgICAgIHNldFBvbGxEZWxheSgKKyAg ICAgICAgICBwcmVmZXJlbmNlc1trZXlzWzBdKydfcmVmcmVzaCddKjEwMDAKKyAgICAgICAgKTsK KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNldFBvbGxEZWxheSgKKyAgICAgICAgICBnZXRHQ0Qo T2JqZWN0LmtleXMoY2hhcnRzRGVmYXVsdCkubWFwKChuYW1lKT0+cHJlZmVyZW5jZXNbbmFtZSsn X3JlZnJlc2gnXSkpKjEwMDAKKyAgICAgICAgKTsKKyAgICAgIH0KKyAgICB9CisgIH0sIFtwcmVm ZXJlbmNlc10pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIC8qIENoYXJ0cyByZW5kZXJlZCBh cmUgbm90IHZpc2libGUgd2hlbiwgdGhlIGRhc2hib2FyZCBpcyBoaWRkZW4gYnV0IGxhdGVyIHZp c2libGUgKi8KKyAgICBpZihwYWdlVmlzaWJsZSAmJiAhY2hhcnREcmF3bk9uY2UpIHsKKyAgICAg IHNldENoYXJ0RHJhd25PbmNlKHRydWUpOworICAgIH0KKyAgfSwgW3BhZ2VWaXNpYmxlXSk7CisK KyAgdXNlSW50ZXJ2YWwoKCk9PnsKKyAgICBjb25zdCBjdXJyRXBvY2ggPSBnZXRFcG9jaCgpOwor ICAgIGlmKHJlZnJlc2hPbi5jdXJyZW50ID09PSBudWxsKSB7CisgICAgICBsZXQgdG1wUmVmID0g e307CisgICAgICBPYmplY3Qua2V5cyhjaGFydHNEZWZhdWx0KS5mb3JFYWNoKChuYW1lKT0+ewor ICAgICAgICB0bXBSZWZbbmFtZV0gPSBjdXJyRXBvY2g7CisgICAgICB9KTsKKyAgICAgIHJlZnJl c2hPbi5jdXJyZW50ID0gdG1wUmVmOworICAgIH0KKworICAgIGxldCBnZXRGb3IgPSBbXTsKKyAg ICBPYmplY3Qua2V5cyhjaGFydHNEZWZhdWx0KS5mb3JFYWNoKChuYW1lKT0+eworICAgICAgaWYo Y3VyckVwb2NoID49IHJlZnJlc2hPbi5jdXJyZW50W25hbWVdKSB7CisgICAgICAgIGdldEZvci5w dXNoKG5hbWUpOworICAgICAgICByZWZyZXNoT24uY3VycmVudFtuYW1lXSA9IGN1cnJFcG9jaCAr IHByZWZlcmVuY2VzW25hbWUrJ19yZWZyZXNoJ107CisgICAgICB9CisgICAgfSk7CisKKyAgICBs ZXQgcGF0aCA9IGdldFN0YXRzVXJsKHNpZCwgZGlkLCBnZXRGb3IpOworICAgIGlmICghcGFnZVZp c2libGUpeworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBheGlvcy5nZXQocGF0aCkKKyAgICAg IC50aGVuKChyZXNwKT0+eworICAgICAgICBsZXQgZGF0YSA9IHJlc3AuZGF0YTsKKyAgICAgICAg c2V0RXJyb3JNc2cobnVsbCk7CisgICAgICAgIGlmKGRhdGEuaGFzT3duUHJvcGVydHkoJ21fc3Rh dHMnKSl7CisgICAgICAgICAgbGV0IG5ld19tX3N0YXRzID0geworICAgICAgICAgICAgJ1RvdGFs JzogZGF0YVsnbV9zdGF0cyddWyd0b3RhbF9tZW1vcnknXT9kYXRhWydtX3N0YXRzJ11bJ3RvdGFs X21lbW9yeSddOjAsCisgICAgICAgICAgICAnVXNlZCc6IGRhdGFbJ21fc3RhdHMnXVsndXNlZF9t ZW1vcnknXT9kYXRhWydtX3N0YXRzJ11bJ3VzZWRfbWVtb3J5J106MCwKKyAgICAgICAgICAgICdG cmVlJzogZGF0YVsnbV9zdGF0cyddWydmcmVlX21lbW9yeSddP2RhdGFbJ21fc3RhdHMnXVsnZnJl ZV9tZW1vcnknXTowLAorICAgICAgICAgIH07CisgICAgICAgICAgbWVtb3J5VXNhZ2VJbmZvUmVk dWNlKHtpbmNvbWluZzogbmV3X21fc3RhdHN9KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKGRh dGEuaGFzT3duUHJvcGVydHkoJ3NtX3N0YXRzJykpeworICAgICAgICAgIGxldCBuZXdfc21fc3Rh dHMgPSB7CisgICAgICAgICAgICAnVG90YWwnOiBkYXRhWydzbV9zdGF0cyddWydzd2FwX3RvdGFs J10/ZGF0YVsnc21fc3RhdHMnXVsnc3dhcF90b3RhbCddOjAsCisgICAgICAgICAgICAnVXNlZCc6 IGRhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBfdXNlZCddP2RhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBfdXNl ZCddOjAsCisgICAgICAgICAgICAnRnJlZSc6IGRhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBfZnJlZSdd P2RhdGFbJ3NtX3N0YXRzJ11bJ3N3YXBfZnJlZSddOjAsCisgICAgICAgICAgfTsKKyAgICAgICAg ICBzd2FwTWVtb3J5VXNhZ2VJbmZvUmVkdWNlKHtpbmNvbWluZzogbmV3X3NtX3N0YXRzfSk7Cisg ICAgICAgIH0KKworICAgICAgICBpZihkYXRhLmhhc093blByb3BlcnR5KCdwbXVfc3RhdHMnKSl7 CisgICAgICAgICAgbGV0IHBtdV9pbmZvX2xpc3QgPSBbXTsKKyAgICAgICAgICBjb25zdCBwbXVf aW5mb19vYmogPSBkYXRhWydwbXVfc3RhdHMnXTsKKyAgICAgICAgICBmb3IgKGNvbnN0IGtleSBp biBwbXVfaW5mb19vYmopIHsKKyAgICAgICAgICAgIHBtdV9pbmZvX2xpc3QucHVzaCh7IGljb246 ICcnLCBwaWQ6IHBtdV9pbmZvX29ialtrZXldWydwaWQnXSwgbmFtZTogcG11X2luZm9fb2JqW2tl eV1bJ25hbWUnXSwgbWVtb3J5X3VzYWdlOiBmb3JtYXRCeXRlcyhwbXVfaW5mb19vYmpba2V5XVsn bWVtb3J5X3VzYWdlJ10pLCBtZW1vcnlfYnl0ZXM6IGZvcm1hdEJ5dGVzKHBtdV9pbmZvX29ialtr ZXldWydtZW1vcnlfYnl0ZXMnXSkgfSk7CisgICAgICAgICAgfQorCisgICAgICAgICAgc2V0UHJv Y2Vzc01lbW9yeVVzYWdlU3RhdHMocG11X2luZm9fbGlzdCk7CisgICAgICAgIH0KKworICAgICAg ICBzZXRDb3VudGVyRGF0YSgocHJldkNvdW50ZXJEYXRhKT0+eworICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICAuLi5wcmV2Q291bnRlckRhdGEsCisgICAgICAgICAgICAuLi5kYXRhLAor ICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgfSkKKyAgICAgIC5jYXRjaCgoZXJyb3Ip PT57CisgICAgICAgIGlmKCFlcnJvck1zZykgeworICAgICAgICAgIG1lbW9yeVVzYWdlSW5mb1Jl ZHVjZSh7cmVzZXQ6Y2hhcnRzRGVmYXVsdFsnbV9zdGF0cyddfSk7CisgICAgICAgICAgc3dhcE1l bW9yeVVzYWdlSW5mb1JlZHVjZSh7cmVzZXQ6Y2hhcnRzRGVmYXVsdFsnc21fc3RhdHMnXX0pOwor ICAgICAgICAgIHNldENvdW50ZXJEYXRhKHt9KTsKKyAgICAgICAgICBpZihlcnJvci5yZXNwb25z ZSkgeworICAgICAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDI4KSB7Cisg ICAgICAgICAgICAgIHNldEVycm9yTXNnKGdldHRleHQoJ1BsZWFzZSBjb25uZWN0IHRvIHRoZSBz ZWxlY3RlZCBzZXJ2ZXIgdG8gdmlldyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnQW4gZXJyb3Igb2NjdXJyZWQg d2hpbHN0IHJlbmRlcmluZyB0aGUgZ3JhcGguJykpOworICAgICAgICAgICAgfQorICAgICAgICAg IH0gZWxzZSBpZihlcnJvci5yZXF1ZXN0KSB7CisgICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0 ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhl IHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICAgIH0pOworICB9LCBlbmFibGVQb2xsID8gcG9sbERlbGF5IDog LTEpOworICByZXR1cm4gKAorICAgIDw+CisgICAgICA8ZGl2IGRhdGEtdGVzdGlkPSdncmFwaC1w b2xsLWRlbGF5JyBzdHlsZT17e2Rpc3BsYXk6ICdub25lJ319Pntwb2xsRGVsYXl9PC9kaXY+Cisg ICAgICB7Y2hhcnREcmF3bk9uY2UgJiYKKyAgICAgICAgPE1lbW9yeVdyYXBwZXIKKyAgICAgICAg ICBtZW1vcnlVc2FnZUluZm89e3RyYW5zZm9ybURhdGEobWVtb3J5VXNhZ2VJbmZvLCBwcmVmZXJl bmNlc1snbV9zdGF0c19yZWZyZXNoJ10pfQorICAgICAgICAgIHN3YXBNZW1vcnlVc2FnZUluZm89 e3RyYW5zZm9ybURhdGEoc3dhcE1lbW9yeVVzYWdlSW5mbywgcHJlZmVyZW5jZXNbJ3NtX3N0YXRz X3JlZnJlc2gnXSl9CisgICAgICAgICAgcHJvY2Vzc01lbW9yeVVzYWdlU3RhdHM9e3Byb2Nlc3NN ZW1vcnlVc2FnZVN0YXRzfQorICAgICAgICAgIHRhYmxlSGVhZGVyPXt0YWJsZUhlYWRlcn0KKyAg ICAgICAgICBlcnJvck1zZz17ZXJyb3JNc2d9CisgICAgICAgICAgc2hvd1Rvb2x0aXA9e3ByZWZl cmVuY2VzWydncmFwaF9tb3VzZV90cmFjayddfQorICAgICAgICAgIHNob3dEYXRhUG9pbnRzPXtw cmVmZXJlbmNlc1snZ3JhcGhfZGF0YV9wb2ludHMnXX0KKyAgICAgICAgICBsaW5lQm9yZGVyV2lk dGg9e3ByZWZlcmVuY2VzWydncmFwaF9saW5lX2JvcmRlcl93aWR0aCddfQorICAgICAgICAgIGlz RGF0YWJhc2U9e2RpZCA+IDB9CisgICAgICAgICAgaXNUZXN0PXtmYWxzZX0KKyAgICAgICAgLz4K KyAgICAgIH0KKyAgICA8Lz4KKyAgKTsKK30KKworTWVtb3J5LnByb3BUeXBlcyA9IHsKKyAgcHJl ZmVyZW5jZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCwKKyAgc2lkOiBQcm9wVHlwZXMu b25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsIFByb3BUeXBlcy5udW1iZXIu aXNSZXF1aXJlZF0pLAorICBkaWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJp bmcuaXNSZXF1aXJlZCwgUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXSksCisgIHBhZ2VWaXNp YmxlOiBQcm9wVHlwZXMuYm9vbCwKKyAgZW5hYmxlUG9sbDogUHJvcFR5cGVzLmJvb2wsCit9Owor CitleHBvcnQgZnVuY3Rpb24gTWVtb3J5V3JhcHBlcihwcm9wcykgeworICBjb25zdCBjbGFzc2Vz ID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpPT4oeworICAgIHNo b3dEYXRhUG9pbnRzOiBwcm9wcy5zaG93RGF0YVBvaW50cywKKyAgICBzaG93VG9vbHRpcDogcHJv cHMuc2hvd1Rvb2x0aXAsCisgICAgbGluZUJvcmRlcldpZHRoOiBwcm9wcy5saW5lQm9yZGVyV2lk dGgsCisgIH0pLCBbcHJvcHMuc2hvd1Rvb2x0aXAsIHByb3BzLnNob3dEYXRhUG9pbnRzLCBwcm9w cy5saW5lQm9yZGVyV2lkdGhdKTsKKworICByZXR1cm4gKAorICAgIDw+CisgICAgICA8R3JpZCBj b250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lcn0+CisgICAg ICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9IHNtPXsxMn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9 e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnTWVtb3J5Jyl9PC9kaXY+CisgICAg ICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdtLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9IGRh dGFzZXRzPXtwcm9wcy5tZW1vcnlVc2FnZUluZm8uZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMu ZXJyb3JNc2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgIDxTdHJlYW1pbmdD aGFydCBkYXRhPXtwcm9wcy5tZW1vcnlVc2FnZUluZm99IGRhdGFQb2ludFNpemU9e0RBVEFfUE9J TlRfU0laRX0geFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSAvPgorICAg ICAgICAgIDwvQ2hhcnRDb250YWluZXI+CisgICAgICAgIDwvR3JpZD4KKyAgICAgICAgPEdyaWQg aXRlbSBtZD17Nn0gc209ezEyfT4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5j b250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdTd2FwIE1lbW9yeScpfTwvZGl2PgorICAgICAgICAg IDxDaGFydENvbnRhaW5lciBpZD0nc20tZ3JhcGgnIHRpdGxlPXtnZXR0ZXh0KCcnKX0gZGF0YXNl dHM9e3Byb3BzLnN3YXBNZW1vcnlVc2FnZUluZm8uZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMu ZXJyb3JNc2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgIDxTdHJlYW1pbmdD aGFydCBkYXRhPXtwcm9wcy5zd2FwTWVtb3J5VXNhZ2VJbmZvfSBkYXRhUG9pbnRTaXplPXtEQVRB X1BPSU5UX1NJWkV9IHhSYW5nZT17WF9BWElTX0xFTkdUSH0gb3B0aW9ucz17b3B0aW9uc30gLz4K KyAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgorICAgICAgICA8L0dyaWQ+CisgICAgICA8L0dy aWQ+CisgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2Vz LmZpeGVkQ29udGFpbmVyfT4KKyAgICAgICAgPFBnVGFibGUKKyAgICAgICAgICBjbGFzc05hbWU9 e2NsYXNzZXMuYXV0b1Jlc2l6ZXJ9CisgICAgICAgICAgY29sdW1ucz17cHJvcHMudGFibGVIZWFk ZXJ9CisgICAgICAgICAgZGF0YT17cHJvcHMucHJvY2Vzc01lbW9yeVVzYWdlU3RhdHN9CisgICAg ICAgICAgbXNnPXtwcm9wcy5lcnJvck1zZ30KKyAgICAgICAgICB0eXBlPXsncGFuZWwnfQorICAg ICAgICA+PC9QZ1RhYmxlPgorICAgICAgPC9HcmlkPgorICAgIDwvPgorICApOworfQorCitjb25z dCBwcm9wVHlwZVN0YXRzID0gUHJvcFR5cGVzLnNoYXBlKHsKKyAgZGF0YXNldHM6IFByb3BUeXBl cy5hcnJheSwKKyAgcmVmcmVzaFJhdGU6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwKK30p OworTWVtb3J5V3JhcHBlci5wcm9wVHlwZXMgPSB7CisgIG1lbW9yeVVzYWdlSW5mbzogcHJvcFR5 cGVTdGF0cy5pc1JlcXVpcmVkLAorICBzd2FwTWVtb3J5VXNhZ2VJbmZvOiBwcm9wVHlwZVN0YXRz LmlzUmVxdWlyZWQsCisgIHByb2Nlc3NNZW1vcnlVc2FnZVN0YXRzOiBQcm9wVHlwZXMuYXJyYXku aXNSZXF1aXJlZCwKKyAgdGFibGVIZWFkZXI6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLAor ICBlcnJvck1zZzogUHJvcFR5cGVzLnN0cmluZywKKyAgc2hvd1Rvb2x0aXA6IFByb3BUeXBlcy5i b29sLmlzUmVxdWlyZWQsCisgIHNob3dEYXRhUG9pbnRzOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVp cmVkLAorICBsaW5lQm9yZGVyV2lkdGg6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCwKKyAg aXNEYXRhYmFzZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCwKKyAgaXNUZXN0OiBQcm9wVHlw ZXMuYm9vbCwKK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9TdG9yYWdlLmpzeCBiL3dl Yi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3lzdGVtU3RhdHMvU3RvcmFnZS5qc3gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yYWNiMjE3YmQKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL1N0b3Jh Z2UuanN4CkBAIC0wLDAgKzEsMzI5IEBACitpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVm ZmVjdCwgdXNlUmVmLCB1c2VSZWR1Y2VyLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnOworaW1wb3J0 IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAn cHJvcC10eXBlcyc7CitpbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2Nv cmUvc3R5bGVzJzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zvcic7CitpbXBv cnQge2dldEdDRCwgZ2V0RXBvY2h9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOworaW1wb3J0IHtDaGFy dENvbnRhaW5lcn0gZnJvbSAnLi4vRGFzaGJvYXJkJzsKK2ltcG9ydCB7IEdyaWQgfSBmcm9tICdA bWF0ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgeyBEQVRBX1BPSU5UX1NJWkUgfSBmcm9tICdzb3Vy Y2VzL2NoYXJ0anMnOworaW1wb3J0IFN0cmVhbWluZ0NoYXJ0IGZyb20gJy4uLy4uLy4uLy4uL3N0 YXRpYy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQnOworaW1wb3J0IHt1c2VJ bnRlcnZhbCwgdXNlUHJldmlvdXN9IGZyb20gJ3NvdXJjZXMvY3VzdG9tX2hvb2tzJzsKK2ltcG9y dCBheGlvcyBmcm9tICdheGlvcyc7CisKK2V4cG9ydCBjb25zdCBYX0FYSVNfTEVOR1RIID0gNzU7 CisKK2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoeworICBhdXRvUmVz aXplcjogeworICAgIGhlaWdodDogJzEwMCUgIWltcG9ydGFudCcsCisgICAgd2lkdGg6ICcxMDAl ICFpbXBvcnRhbnQnLAorICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3JleVs0MDBdLAor ICAgIHBhZGRpbmc6ICc3LjVweCcsCisgICAgb3ZlcmZsb3dYOiAnYXV0byAhaW1wb3J0YW50JywK KyAgICBvdmVyZmxvd1k6ICdoaWRkZW4gIWltcG9ydGFudCcsCisgICAgbWluSGVpZ2h0OiAnMTAw JScsCisgICAgbWluV2lkdGg6ICcxMDAlJywKKyAgfSwKKyAgY29udGFpbmVyOiB7CisgICAgaGVp Z2h0OiAnYXV0bycsCisgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzIwMF0sCisg ICAgcGFkZGluZzogJzEwcHgnLAorICAgIG1hcmdpbkJvdHRvbTogJzMwcHgnLAorICB9LAorICBp b0Rpc2tDb250YWluZXI6IHsKKyAgICBoZWlnaHQ6ICdhdXRvJywKKyAgICBiYWNrZ3JvdW5kOiB0 aGVtZS5wYWxldHRlLmdyZXlbMjAwXSwKKyAgICBwYWRkaW5nOiAnMTBweCcsCisgIH0sCisgIGZp eGVkQ29udGFpbmVyOiB7CisgICAgaGVpZ2h0OiAnNTc3cHgnLAorICAgIGJhY2tncm91bmQ6IHRo ZW1lLnBhbGV0dGUuZ3JleVsyMDBdLAorICAgIHBhZGRpbmc6ICcxMHB4JywKKyAgICBtYXJnaW5C b3R0b206ICczMHB4JywKKyAgfSwKKyAgY29udGFpbmVySGVhZGVyOiB7CisgICAgZm9udFNpemU6 ICcxNnB4JywKKyAgICBmb250V2VpZ2h0OiAnYm9sZCcsCisgICAgbWFyZ2luQm90dG9tOiAnNXB4 JywKKyAgfSwKKyAgY2hhcnRIZWFkZXI6IHsKKyAgICBmb250U2l6ZTogJzE0cHgnLAorICAgIGZv bnRXZWlnaHQ6ICdib2xkJywKKyAgICBtYXJnaW5Cb3R0b206ICc1cHgnLAorICB9Cit9KSk7CisK K2V4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1EYXRhKGxhYmVscywgcmVmcmVzaFJhdGUpIHsKKyAg Y29uc3QgY29sb3JzID0gWycjRkY2Mzg0JywnIzM2QTJFQicsJyNGRkNFNTYnLCcjNEJDMEMwJywn Izk5NjZGRicsJyNGRjlGNDAnLCcjOEQ2RTYzJywnIzIxOTZGMycsJyNGRkVCM0InLCcjOUMyN0Iw JywnIzAwQkNENCcsJyNDRERDMzknXTsKKyAgbGV0IGRhdGFzZXRzID0gT2JqZWN0LmtleXMobGFi ZWxzKS5tYXAoKGxhYmVsLCBpKT0+eworICAgIHJldHVybiB7CisgICAgICBsYWJlbDogbGFiZWws CisgICAgICBkYXRhOiBsYWJlbHNbbGFiZWxdIHx8IFtdLAorICAgICAgYm9yZGVyQ29sb3I6IGNv bG9yc1tpXSwKKyAgICAgIHBvaW50SGl0UmFkaXVzOiBEQVRBX1BPSU5UX1NJWkUsCisgICAgfTsK KyAgfSkgfHwgW107CisKKyAgcmV0dXJuIHsKKyAgICBkYXRhc2V0czogZGF0YXNldHMsCisgICAg cmVmcmVzaFJhdGU6IHJlZnJlc2hSYXRlLAorICB9OworfQorCisvKiBVUkwgZm9yIGZldGNoaW5n IGdyYXBocyBkYXRhICovCitleHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHNVcmwoc2lkPS0xLCBkaWQ9 LTEsIGNoYXJ0X25hbWVzPVtdKSB7CisgIGxldCBiYXNlX3VybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICBiYXNlX3VybCArPSAnLycgKyBzaWQ7CisgIGJhc2Vf dXJsICs9IChkaWQgPiAwKSA/ICgnLycgKyBkaWQpIDogJyc7CisgIGJhc2VfdXJsICs9ICc/Y2hh cnRfbmFtZXM9JyArIGNoYXJ0X25hbWVzLmpvaW4oJywnKTsKKworICByZXR1cm4gYmFzZV91cmw7 Cit9CisKKy8qIFRoaXMgd2lsbCBwcm9jZXNzIGluY29taW5nIGNoYXJ0cyBkYXRhIGFkZCBpdCB0 aGUgcHJldmlvdXMgY2hhcnRzCisgKiBkYXRhIHRvIGdldCB0aGUgbmV3IHN0YXRlLgorICovCitl eHBvcnQgZnVuY3Rpb24gaW9TdGF0c1JlZHVjZXIoc3RhdGUsIGFjdGlvbikgeworCisgIGlmKGFj dGlvbi5yZXNldCkgeworICAgIHJldHVybiBhY3Rpb24ucmVzZXQ7CisgIH0KKworICBpZighYWN0 aW9uLmluY29taW5nKSB7CisgICAgcmV0dXJuIHN0YXRlOworICB9CisKKyAgaWYoIWFjdGlvbi5j b3VudGVyRGF0YSkgeworICAgIGFjdGlvbi5jb3VudGVyRGF0YSA9IGFjdGlvbi5pbmNvbWluZzsK KyAgfQorCisgIGxldCBuZXdTdGF0ZSA9IHt9OworICBPYmplY3Qua2V5cyhhY3Rpb24uaW5jb21p bmcpLmZvckVhY2goZGlza19zdGF0cyA9PiB7CisgICAgbmV3U3RhdGVbZGlza19zdGF0c10gPSB7 fTsKKyAgICBPYmplY3Qua2V5cyhhY3Rpb24uaW5jb21pbmdbZGlza19zdGF0c10pLmZvckVhY2go bGFiZWwgPT4geworICAgICAgaWYoc3RhdGVbZGlza19zdGF0c11bbGFiZWxdKSB7CisgICAgICAg IG5ld1N0YXRlW2Rpc2tfc3RhdHNdW2xhYmVsXSA9IFsKKyAgICAgICAgICBhY3Rpb24uY291bnRl ciA/ICBhY3Rpb24uaW5jb21pbmdbZGlza19zdGF0c11bbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJE YXRhW2Rpc2tfc3RhdHNdW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1tkaXNrX3N0YXRzXVtsYWJl bF0sCisgICAgICAgICAgLi4uc3RhdGVbZGlza19zdGF0c11bbGFiZWxdLnNsaWNlKDAsIFhfQVhJ U19MRU5HVEgtMSksCisgICAgICAgIF07CisgICAgICB9IGVsc2UgeworICAgICAgICBuZXdTdGF0 ZVtkaXNrX3N0YXRzXVtsYWJlbF0gPSBbCisgICAgICAgICAgYWN0aW9uLmNvdW50ZXIgPyAgYWN0 aW9uLmluY29taW5nW2Rpc2tfc3RhdHNdW2xhYmVsXSAtIGFjdGlvbi5jb3VudGVyRGF0YVtkaXNr X3N0YXRzXVtsYWJlbF0gOiBhY3Rpb24uaW5jb21pbmdbZGlza19zdGF0c11bbGFiZWxdLAorICAg ICAgICBdOworICAgICAgfQorICAgIH0pOworICB9KTsKKyAgcmV0dXJuIG5ld1N0YXRlOworfQor Citjb25zdCBjaGFydHNEZWZhdWx0ID0geworICAnaW9fc3RhdHMnOiB7fSwKK307CisKK2V4cG9y dCBkZWZhdWx0IGZ1bmN0aW9uIFN0b3JhZ2Uoe3ByZWZlcmVuY2VzLCBzaWQsIGRpZCwgcGFnZVZp c2libGUsIGVuYWJsZVBvbGw9dHJ1ZX0pIHsKKyAgY29uc3QgcmVmcmVzaE9uID0gdXNlUmVmKG51 bGwpOworICBjb25zdCBwcmV2UHJlZmVybmNlcyA9IHVzZVByZXZpb3VzKHByZWZlcmVuY2VzKTsK KworICBjb25zdCBbaW9JbmZvLCBpb0luZm9SZWR1Y2VdID0gdXNlUmVkdWNlcihpb1N0YXRzUmVk dWNlciwgY2hhcnRzRGVmYXVsdFsnaW9fc3RhdHMnXSk7CisKKyAgY29uc3QgWywgc2V0Q291bnRl ckRhdGFdID0gdXNlU3RhdGUoe30pOworCisgIGNvbnN0IFtwb2xsRGVsYXksIHNldFBvbGxEZWxh eV0gPSB1c2VTdGF0ZSg1MDAwKTsKKyAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1 c2VTdGF0ZShudWxsKTsKKyAgY29uc3QgW2NoYXJ0RHJhd25PbmNlLCBzZXRDaGFydERyYXduT25j ZV0gPSB1c2VTdGF0ZShmYWxzZSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgbGV0IGNhbGNQ b2xsRGVsYXkgPSBmYWxzZTsKKyAgICBpZihwcmV2UHJlZmVybmNlcykgeworICAgICAgaWYocHJl dlByZWZlcm5jZXNbJ2lvX3N0YXRzX3JlZnJlc2gnXSAhPSBwcmVmZXJlbmNlc1snaW9fc3RhdHNf cmVmcmVzaCddKSB7CisgICAgICAgIGlvSW5mb1JlZHVjZSh7cmVzZXQ6IGNoYXJ0c0RlZmF1bHRb J2lvX3N0YXRzJ119KTsKKyAgICAgICAgY2FsY1BvbGxEZWxheSA9IHRydWU7CisgICAgICB9Cisg ICAgfSBlbHNlIHsKKyAgICAgIGNhbGNQb2xsRGVsYXkgPSB0cnVlOworICAgIH0KKyAgICBpZihj YWxjUG9sbERlbGF5KSB7CisgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoY2hhcnRzRGVm YXVsdCk7CisgICAgICBjb25zdCBsZW5ndGggPSBrZXlzLmxlbmd0aDsKKyAgICAgIGlmKGxlbmd0 aCA9PSAxKXsKKyAgICAgICAgc2V0UG9sbERlbGF5KAorICAgICAgICAgIHByZWZlcmVuY2VzW2tl eXNbMF0rJ19yZWZyZXNoJ10qMTAwMAorICAgICAgICApOworICAgICAgfSBlbHNlIHsKKyAgICAg ICAgc2V0UG9sbERlbGF5KAorICAgICAgICAgIGdldEdDRChPYmplY3Qua2V5cyhjaGFydHNEZWZh dWx0KS5tYXAoKG5hbWUpPT5wcmVmZXJlbmNlc1tuYW1lKydfcmVmcmVzaCddKSkqMTAwMAorICAg ICAgICApOworICAgICAgfQorICAgIH0KKyAgfSwgW3ByZWZlcmVuY2VzXSk7CisKKyAgdXNlRWZm ZWN0KCgpPT57CisgICAgLyogQ2hhcnRzIHJlbmRlcmVkIGFyZSBub3QgdmlzaWJsZSB3aGVuLCB0 aGUgZGFzaGJvYXJkIGlzIGhpZGRlbiBidXQgbGF0ZXIgdmlzaWJsZSAqLworICAgIGlmKHBhZ2VW aXNpYmxlICYmICFjaGFydERyYXduT25jZSkgeworICAgICAgc2V0Q2hhcnREcmF3bk9uY2UodHJ1 ZSk7CisgICAgfQorICB9LCBbcGFnZVZpc2libGVdKTsKKworICB1c2VJbnRlcnZhbCgoKT0+ewor ICAgIGNvbnN0IGN1cnJFcG9jaCA9IGdldEVwb2NoKCk7CisgICAgaWYocmVmcmVzaE9uLmN1cnJl bnQgPT09IG51bGwpIHsKKyAgICAgIGxldCB0bXBSZWYgPSB7fTsKKyAgICAgIE9iamVjdC5rZXlz KGNoYXJ0c0RlZmF1bHQpLmZvckVhY2goKG5hbWUpPT57CisgICAgICAgIHRtcFJlZltuYW1lXSA9 IGN1cnJFcG9jaDsKKyAgICAgIH0pOworICAgICAgcmVmcmVzaE9uLmN1cnJlbnQgPSB0bXBSZWY7 CisgICAgfQorCisgICAgbGV0IGdldEZvciA9IFtdOworICAgIE9iamVjdC5rZXlzKGNoYXJ0c0Rl ZmF1bHQpLmZvckVhY2goKG5hbWUpPT57CisgICAgICBpZihjdXJyRXBvY2ggPj0gcmVmcmVzaE9u LmN1cnJlbnRbbmFtZV0pIHsKKyAgICAgICAgZ2V0Rm9yLnB1c2gobmFtZSk7CisgICAgICAgIHJl ZnJlc2hPbi5jdXJyZW50W25hbWVdID0gY3VyckVwb2NoICsgcHJlZmVyZW5jZXNbbmFtZSsnX3Jl ZnJlc2gnXTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIGxldCBwYXRoID0gZ2V0U3RhdHNVcmwo c2lkLCBkaWQsIGdldEZvcik7CisgICAgaWYgKCFwYWdlVmlzaWJsZSl7CisgICAgICByZXR1cm47 CisgICAgfQorICAgIGF4aW9zLmdldChwYXRoKQorICAgICAgLnRoZW4oKHJlc3ApPT57CisgICAg ICAgIGxldCBkYXRhID0gcmVzcC5kYXRhOworICAgICAgICBzZXRFcnJvck1zZyhudWxsKTsKKyAg ICAgICAgaWYoZGF0YS5oYXNPd25Qcm9wZXJ0eSgnaW9fc3RhdHMnKSl7CisgICAgICAgICAgY29u c3QgaW9faW5mb19vYmogPSBkYXRhWydpb19zdGF0cyddOworICAgICAgICAgIGZvciAoY29uc3Qg ZGlzayBpbiBpb19pbmZvX29iaikgeworICAgICAgICAgICAgaWYoIWNoYXJ0c0RlZmF1bHQuaW9f c3RhdHMuaGFzT3duUHJvcGVydHkoYCR7ZGlza31fdG90YWxfcndgKSl7CisgICAgICAgICAgICAg IGNoYXJ0c0RlZmF1bHQuaW9fc3RhdHNbYCR7ZGlza31fdG90YWxfcndgXSA9IHsnUmVhZCc6IFtd LCAnV3JpdGUnOiBbXX07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZighaW9JbmZvLmhh c093blByb3BlcnR5KGAke2Rpc2t9X3RvdGFsX3J3YCkpeworICAgICAgICAgICAgICBpb0luZm9b YCR7ZGlza31fdG90YWxfcndgXSA9IHsnUmVhZCc6IFtdLCAnV3JpdGUnOiBbXX07CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmKCFjaGFydHNEZWZhdWx0LmlvX3N0YXRzLmhhc093blBy b3BlcnR5KGAke2Rpc2t9X2J5dGVzX3J3YCkpeworICAgICAgICAgICAgICBjaGFydHNEZWZhdWx0 LmlvX3N0YXRzW2Ake2Rpc2t9X2J5dGVzX3J3YF0gPSB7J1JlYWQnOiBbXSwgJ1dyaXRlJzogW119 OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoIWlvSW5mby5oYXNPd25Qcm9wZXJ0eShg JHtkaXNrfV9ieXRlc19yd2ApKXsKKyAgICAgICAgICAgICAgaW9JbmZvW2Ake2Rpc2t9X2J5dGVz X3J3YF0gPSB7J1JlYWQnOiBbXSwgJ1dyaXRlJzogW119OworICAgICAgICAgICAgfQorCisgICAg ICAgICAgICBpZighY2hhcnRzRGVmYXVsdC5pb19zdGF0cy5oYXNPd25Qcm9wZXJ0eShgJHtkaXNr fV90aW1lX3J3YCkpeworICAgICAgICAgICAgICBjaGFydHNEZWZhdWx0LmlvX3N0YXRzW2Ake2Rp c2t9X3RpbWVfcndgXSA9IHsnUmVhZCc6IFtdLCAnV3JpdGUnOiBbXX07CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBpZighaW9JbmZvLmhhc093blByb3BlcnR5KGAke2Rpc2t9X3RpbWVfcndg KSl7CisgICAgICAgICAgICAgIGlvSW5mb1tgJHtkaXNrfV90aW1lX3J3YF0gPSB7J1JlYWQnOiBb XSwgJ1dyaXRlJzogW119OworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKworICAgICAgICAg IGxldCBuZXdfaW9fc3RhdHMgPSB7fTsKKyAgICAgICAgICBmb3IgKGNvbnN0IGRpc2sgaW4gaW9f aW5mb19vYmopIHsKKyAgICAgICAgICAgIG5ld19pb19zdGF0c1tgJHtkaXNrfV90b3RhbF9yd2Bd ID0geydSZWFkJzogaW9faW5mb19vYmpbYCR7ZGlza31gXVsndG90YWxfcmVhZHMnXT9pb19pbmZv X29ialtgJHtkaXNrfWBdWyd0b3RhbF9yZWFkcyddOjAsICdXcml0ZSc6IGlvX2luZm9fb2JqW2Ak e2Rpc2t9YF1bJ3RvdGFsX3dyaXRlcyddP2lvX2luZm9fb2JqW2Ake2Rpc2t9YF1bJ3RvdGFsX3dy aXRlcyddOjB9OworICAgICAgICAgICAgbmV3X2lvX3N0YXRzW2Ake2Rpc2t9X2J5dGVzX3J3YF0g PSB7J1JlYWQnOiBpb19pbmZvX29ialtgJHtkaXNrfWBdWydyZWFkX2J5dGVzJ10/aW9faW5mb19v YmpbYCR7ZGlza31gXVsncmVhZF9ieXRlcyddOjAsICdXcml0ZSc6IGlvX2luZm9fb2JqW2Ake2Rp c2t9YF1bJ3dyaXRlX2J5dGVzJ10/aW9faW5mb19vYmpbYCR7ZGlza31gXVsnd3JpdGVfYnl0ZXMn XTowfTsKKyAgICAgICAgICAgIG5ld19pb19zdGF0c1tgJHtkaXNrfV90aW1lX3J3YF0gPSB7J1Jl YWQnOiBpb19pbmZvX29ialtgJHtkaXNrfWBdWydyZWFkX3RpbWVfbXMnXT9pb19pbmZvX29ialtg JHtkaXNrfWBdWydyZWFkX3RpbWVfbXMnXTowLCAnV3JpdGUnOiBpb19pbmZvX29ialtgJHtkaXNr fWBdWyd3cml0ZV90aW1lX21zJ10/aW9faW5mb19vYmpbYCR7ZGlza31gXVsnd3JpdGVfdGltZV9t cyddOjB9OworICAgICAgICAgIH0KKyAgICAgICAgICBpb0luZm9SZWR1Y2Uoe2luY29taW5nOiBu ZXdfaW9fc3RhdHN9KTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENvdW50ZXJEYXRhKChwcmV2 Q291bnRlckRhdGEpPT57CisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIC4uLnByZXZD b3VudGVyRGF0YSwKKyAgICAgICAgICAgIC4uLmRhdGEsCisgICAgICAgICAgfTsKKyAgICAgICAg fSk7CisgICAgICB9KQorICAgICAgLmNhdGNoKChlcnJvcik9PnsKKyAgICAgICAgaWYoIWVycm9y TXNnKSB7CisgICAgICAgICAgaW9JbmZvUmVkdWNlKHtyZXNldDpjaGFydHNEZWZhdWx0Wydpb19z dGF0cyddfSk7CisgICAgICAgICAgc2V0Q291bnRlckRhdGEoe30pOworICAgICAgICAgIGlmKGVy cm9yLnJlc3BvbnNlKSB7CisgICAgICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09 PSA0MjgpIHsKKyAgICAgICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnUGxlYXNlIGNvbm5l Y3QgdG8gdGhlIHNlbGVjdGVkIHNlcnZlciB0byB2aWV3IHRoZSBncmFwaC4nKSk7CisgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdBbiBlcnJv ciBvY2N1cnJlZCB3aGlsc3QgcmVuZGVyaW5nIHRoZSBncmFwaC4nKSk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgfSBlbHNlIGlmKGVycm9yLnJlcXVlc3QpIHsKKyAgICAgICAgICAgIHNldEVy cm9yTXNnKGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVj dGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKSk7CisgICAgICAgICAgICByZXR1 cm47CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3Ip OworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfSk7CisgIH0sIGVuYWJsZVBvbGwgPyBw b2xsRGVsYXkgOiAtMSk7CisKKyAgcmV0dXJuICgKKyAgICA8PgorICAgICAgPGRpdiBkYXRhLXRl c3RpZD0nZ3JhcGgtcG9sbC1kZWxheScgc3R5bGU9e3tkaXNwbGF5OiAnbm9uZSd9fT57cG9sbERl bGF5fTwvZGl2PgorICAgICAge2NoYXJ0RHJhd25PbmNlICYmCisgICAgICAgIDxTdG9yYWdlV3Jh cHBlcgorICAgICAgICAgIGlvSW5mbz17aW9JbmZvfQorICAgICAgICAgIGlvUmVmcmVzaFJhdGU9 e3ByZWZlcmVuY2VzWydpb19zdGF0c19yZWZyZXNoJ119CisgICAgICAgICAgZXJyb3JNc2c9e2Vy cm9yTXNnfQorICAgICAgICAgIHNob3dUb29sdGlwPXtwcmVmZXJlbmNlc1snZ3JhcGhfbW91c2Vf dHJhY2snXX0KKyAgICAgICAgICBzaG93RGF0YVBvaW50cz17cHJlZmVyZW5jZXNbJ2dyYXBoX2Rh dGFfcG9pbnRzJ119CisgICAgICAgICAgbGluZUJvcmRlcldpZHRoPXtwcmVmZXJlbmNlc1snZ3Jh cGhfbGluZV9ib3JkZXJfd2lkdGgnXX0KKyAgICAgICAgICBpc0RhdGFiYXNlPXtkaWQgPiAwfQor ICAgICAgICAgIGlzVGVzdD17ZmFsc2V9CisgICAgICAgIC8+CisgICAgICB9CisgICAgPC8+Cisg ICk7Cit9CisKK1N0b3JhZ2UucHJvcFR5cGVzID0geworICBwcmVmZXJlbmNlczogUHJvcFR5cGVz Lm9iamVjdC5pc1JlcXVpcmVkLAorICBzaWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBl cy5zdHJpbmcuaXNSZXF1aXJlZCwgUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXSksCisgIGRp ZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLCBQcm9w VHlwZXMubnVtYmVyLmlzUmVxdWlyZWRdKSwKKyAgcGFnZVZpc2libGU6IFByb3BUeXBlcy5ib29s LAorICBlbmFibGVQb2xsOiBQcm9wVHlwZXMuYm9vbCwKK307CisKK2V4cG9ydCBmdW5jdGlvbiBT dG9yYWdlV3JhcHBlcihwcm9wcykgeworICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7Cisg IGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpPT4oeworICAgIHNob3dEYXRhUG9pbnRzOiBwcm9w cy5zaG93RGF0YVBvaW50cywKKyAgICBzaG93VG9vbHRpcDogcHJvcHMuc2hvd1Rvb2x0aXAsCisg ICAgbGluZUJvcmRlcldpZHRoOiBwcm9wcy5saW5lQm9yZGVyV2lkdGgsCisgIH0pLCBbcHJvcHMu c2hvd1Rvb2x0aXAsIHByb3BzLnNob3dEYXRhUG9pbnRzLCBwcm9wcy5saW5lQm9yZGVyV2lkdGhd KTsKKworICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMuaW9JbmZvKTsKKyAgcmV0dXJu ICgKKyAgICA8PgorICAgICAge2tleXMubWFwKChrZXksIGluZGV4KSA9PiAoCisgICAgICAgIGlu ZGV4ICUgMyA9PT0gMCAmJiAoCisgICAgICAgICAgPEdyaWQga2V5PXtgZGlzay0ke2luZGV4fWB9 IGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVyfT4KKyAg ICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMu aW9EaXNrQ29udGFpbmVyfT4KKyAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMu Y29udGFpbmVySGVhZGVyfT57Z2V0dGV4dChgRGlzayAke01hdGguZmxvb3IoaW5kZXggLyAzKSAr IDF9YCl9PC9kaXY+CisgICAgICAgICAgICA8L0dyaWQ+CisgICAgICAgICAgICA8R3JpZCBjb250 YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2VzLmlvRGlza0NvbnRhaW5lcn0+Cisg ICAgICAgICAgICAgIHtrZXlzLnNsaWNlKGluZGV4LCBpbmRleCArIDMpLm1hcCgoaW5uZXJLZXks IGlubmVyS2V5SW5kZXgpID0+ICgKKyAgICAgICAgICAgICAgICA8R3JpZCBrZXk9e2Ake2lubmVy S2V5fWB9IGl0ZW0gbWQ9ezR9IHNtPXs2fT4KKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NO YW1lPXtjbGFzc2VzLmNoYXJ0SGVhZGVyfT57aW5uZXJLZXlJbmRleD09MCA/IGdldHRleHQoJ0kv TyBPcGVyYXRpb25zIENvdW50Jyk6IGlubmVyS2V5SW5kZXg9PTE/IGdldHRleHQoJ0RhdGEgVHJh bnNmZXIgKEJ5dGVzKScpOmdldHRleHQoJ1RpbWUgU3BlbnQgaW4gSS9PIE9wZXJhdGlvbnMgKE1p bGxpc2Vjb25kcyknKX08L2Rpdj4KKyAgICAgICAgICAgICAgICAgIDxDaGFydENvbnRhaW5lciBp ZD17YGlvLWdyYXBoLSR7aW5uZXJLZXl9YH0gdGl0bGU9e2dldHRleHQoJycpfSBkYXRhc2V0cz17 dHJhbnNmb3JtRGF0YShwcm9wcy5pb0luZm9baW5uZXJLZXldLCBwcm9wcy5pb1JlZnJlc2hSYXRl KS5kYXRhc2V0c30gIGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtwcm9wcy5pc1Rl c3R9PgorICAgICAgICAgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQgZGF0YT17dHJhbnNmb3Jt RGF0YShwcm9wcy5pb0luZm9baW5uZXJLZXldLCBwcm9wcy5pb1JlZnJlc2hSYXRlKX0gZGF0YVBv aW50U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5HVEh9IG9wdGlvbnM9 e29wdGlvbnN9IC8+CisgICAgICAgICAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgorICAgICAg ICAgICAgICAgIDwvR3JpZD4KKyAgICAgICAgICAgICAgKSl9CisgICAgICAgICAgICA8L0dyaWQ+ CisgICAgICAgICAgPC9HcmlkPgorICAgICAgICApCisgICAgICApKX0KKyAgICA8Lz4KKyAgKTsK K30KKworU3RvcmFnZVdyYXBwZXIucHJvcFR5cGVzID0geworICBpb0luZm86IFByb3BUeXBlcy5v YmplY3RPZigKKyAgICBQcm9wVHlwZXMuc2hhcGUoeworICAgICAgUmVhZDogUHJvcFR5cGVzLmFy cmF5LAorICAgICAgV3JpdGU6IFByb3BUeXBlcy5hcnJheSwKKyAgICB9KQorICApLAorICBpb1Jl ZnJlc2hSYXRlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsCisgIGVycm9yTXNnOiBQcm9w VHlwZXMuc3RyaW5nLAorICBzaG93VG9vbHRpcDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCwK KyAgc2hvd0RhdGFQb2ludHM6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsCisgIGxpbmVCb3Jk ZXJXaWR0aDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLAorICBpc0RhdGFiYXNlOiBQcm9w VHlwZXMuYm9vbC5pc1JlcXVpcmVkLAorICBpc1Rlc3Q6IFByb3BUeXBlcy5ib29sLAorfTsKXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9h cmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL1N1bW1hcnkuanN4IGIvd2ViL3BnYWRtaW4vZGFzaGJv YXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9TdW1tYXJ5LmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLjliMmVlOWEzMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3lzdGVtU3RhdHMvU3VtbWFyeS5qc3gKQEAgLTAsMCAr MSw0MjIgQEAKK2ltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VSZWYsIHVz ZVJlZHVjZXIsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdz b3VyY2VzL2dldHRleHQnOworaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKK2lt cG9ydCB7IG1ha2VTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnOworaW1w b3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9yJzsKK2ltcG9ydCBnZXRBcGlJbnN0YW5j ZSBmcm9tICdzb3VyY2VzL2FwaV9pbnN0YW5jZSc7CitpbXBvcnQge2dldEdDRCwgZ2V0RXBvY2h9 IGZyb20gJ3NvdXJjZXMvdXRpbHMnOworaW1wb3J0IHtDaGFydENvbnRhaW5lcn0gZnJvbSAnLi4v RGFzaGJvYXJkJzsKK2ltcG9ydCB7IEdyaWQgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZSc7Citp bXBvcnQgeyBEQVRBX1BPSU5UX1NJWkUgfSBmcm9tICdzb3VyY2VzL2NoYXJ0anMnOworaW1wb3J0 IFN0cmVhbWluZ0NoYXJ0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL1Bn Q2hhcnQvU3RyZWFtaW5nQ2hhcnQnOworaW1wb3J0IERvbnV0Q2hhcnQgZnJvbSAnLi4vLi4vLi4v Li4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9Eb251dENoYXJ0JzsKK2ltcG9ydCB7dXNl SW50ZXJ2YWwsIHVzZVByZXZpb3VzfSBmcm9tICdzb3VyY2VzL2N1c3RvbV9ob29rcyc7CitpbXBv cnQgYXhpb3MgZnJvbSAnYXhpb3MnOworCitleHBvcnQgY29uc3QgWF9BWElTX0xFTkdUSCA9IDc1 OworCitjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkgPT4gKHsKKyAgYXV0b1Jl c2l6ZXI6IHsKKyAgICBoZWlnaHQ6ICcxMDAlICFpbXBvcnRhbnQnLAorICAgIHdpZHRoOiAnMTAw JSAhaW1wb3J0YW50JywKKyAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlbNDAwXSwK KyAgICBwYWRkaW5nOiAnNy41cHgnLAorICAgIG92ZXJmbG93WDogJ2F1dG8gIWltcG9ydGFudCcs CisgICAgb3ZlcmZsb3dZOiAnaGlkZGVuICFpbXBvcnRhbnQnLAorICAgIG1pbkhlaWdodDogJzEw MCUnLAorICAgIG1pbldpZHRoOiAnMTAwJScsCisgIH0sCisgIHRhYmxlOiB7CisgICAgd2lkdGg6 ICcxMDAlJywKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLm90aGVyVmFycy50YWJsZUJnLAor ICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2IoMjIxLCAyMjQsIDIzMCknLAorICB9LAorICB0YWJs ZVZhbDogeworICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2IoMjIxLCAyMjQsIDIzMCkgIWltcG9y dGFudCcsCisgICAgcGFkZGluZzogJzEwcHggIWltcG9ydGFudCcsCisgIH0sCisgIGNvbnRhaW5l cjogeworICAgIGhlaWdodDogJ2F1dG8nLAorICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUu Z3JleVsyMDBdLAorICAgIHBhZGRpbmc6ICcxMHB4JywKKyAgICBtYXJnaW5Cb3R0b206ICczMHB4 JywKKyAgfSwKKyAgY29udGFpbmVySGVhZGVyOiB7CisgICAgZm9udFNpemU6ICcxNnB4JywKKyAg ICBmb250V2VpZ2h0OiAnYm9sZCcsCisgICAgbWFyZ2luQm90dG9tOiAnNXB4JywKKyAgfSwKK30p KTsKKworZXhwb3J0IGZ1bmN0aW9uIHRyYW5zZm9ybURhdGEobGFiZWxzLCByZWZyZXNoUmF0ZSkg eworICBjb25zdCBjb2xvcnMgPSBbJyNGRjYzODQnLCcjMzZBMkVCJywnI0ZGQ0U1NicsJyM0QkMw QzAnLCcjOTk2NkZGJywnI0ZGOUY0MCcsJyM4RDZFNjMnLCcjMjE5NkYzJywnI0ZGRUIzQicsJyM5 QzI3QjAnLCcjMDBCQ0Q0JywnI0NEREMzOSddOworICBsZXQgZGF0YXNldHMgPSBPYmplY3Qua2V5 cyhsYWJlbHMpLm1hcCgobGFiZWwsIGkpPT57CisgICAgcmV0dXJuIHsKKyAgICAgIGxhYmVsOiBs YWJlbCwKKyAgICAgIGRhdGE6IGxhYmVsc1tsYWJlbF0gfHwgW10sCisgICAgICBib3JkZXJDb2xv cjogY29sb3JzW2ldLAorICAgICAgcG9pbnRIaXRSYWRpdXM6IERBVEFfUE9JTlRfU0laRSwKKyAg ICB9OworICB9KSB8fCBbXTsKKworICByZXR1cm4geworICAgIGRhdGFzZXRzOiBkYXRhc2V0cywK KyAgICByZWZyZXNoUmF0ZTogcmVmcmVzaFJhdGUsCisgIH07Cit9CisKKy8qIFVSTCBmb3IgZmV0 Y2hpbmcgZ3JhcGhzIGRhdGEgKi8KK2V4cG9ydCBmdW5jdGlvbiBnZXRTdGF0c1VybChzaWQ9LTEs IGRpZD0tMSwgY2hhcnRfbmFtZXM9W10pIHsKKyAgbGV0IGJhc2VfdXJsID0gdXJsX2ZvcignZGFz aGJvYXJkLnN5c3RlbV9zdGF0aXN0aWNzJyk7CisgIGJhc2VfdXJsICs9ICcvJyArIHNpZDsKKyAg YmFzZV91cmwgKz0gKGRpZCA+IDApID8gKCcvJyArIGRpZCkgOiAnJzsKKyAgYmFzZV91cmwgKz0g Jz9jaGFydF9uYW1lcz0nICsgY2hhcnRfbmFtZXMuam9pbignLCcpOworCisgIHJldHVybiBiYXNl X3VybDsKK30KKworLyogVGhpcyB3aWxsIHByb2Nlc3MgaW5jb21pbmcgY2hhcnRzIGRhdGEgYWRk IGl0IHRoZSBwcmV2aW91cyBjaGFydHMKKyAqIGRhdGEgdG8gZ2V0IHRoZSBuZXcgc3RhdGUuCisg Ki8KK2V4cG9ydCBmdW5jdGlvbiBzdGF0c1JlZHVjZXIoc3RhdGUsIGFjdGlvbikgeworCisgIGlm KGFjdGlvbi5yZXNldCkgeworICAgIHJldHVybiBhY3Rpb24ucmVzZXQ7CisgIH0KKworICBpZigh YWN0aW9uLmluY29taW5nKSB7CisgICAgcmV0dXJuIHN0YXRlOworICB9CisKKyAgaWYoIWFjdGlv bi5jb3VudGVyRGF0YSkgeworICAgIGFjdGlvbi5jb3VudGVyRGF0YSA9IGFjdGlvbi5pbmNvbWlu ZzsKKyAgfQorCisgIGxldCBuZXdTdGF0ZSA9IHt9OworICBPYmplY3Qua2V5cyhhY3Rpb24uaW5j b21pbmcpLmZvckVhY2gobGFiZWwgPT4geworICAgIGlmKHN0YXRlW2xhYmVsXSkgeworICAgICAg bmV3U3RhdGVbbGFiZWxdID0gWworICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24uaW5j b21pbmdbbGFiZWxdIC0gYWN0aW9uLmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWlu Z1tsYWJlbF0sCisgICAgICAgIC4uLnN0YXRlW2xhYmVsXS5zbGljZSgwLCBYX0FYSVNfTEVOR1RI LTEpLAorICAgICAgXTsKKyAgICB9IGVsc2UgeworICAgICAgbmV3U3RhdGVbbGFiZWxdID0gWwor ICAgICAgICBhY3Rpb24uY291bnRlciA/ICBhY3Rpb24uaW5jb21pbmdbbGFiZWxdIC0gYWN0aW9u LmNvdW50ZXJEYXRhW2xhYmVsXSA6IGFjdGlvbi5pbmNvbWluZ1tsYWJlbF0sCisgICAgICBdOwor ICAgIH0KKyAgfSk7CisgIHJldHVybiBuZXdTdGF0ZTsKK30KKworY29uc3QgY2hhcnRzRGVmYXVs dCA9IHsKKyAgJ2hwY19zdGF0cyc6IHsnSGFuZGxlJzogbmV3IEFycmF5KFhfQVhJU19MRU5HVEgp LmZpbGwobnVsbCksICdQcm9jZXNzJzogbmV3IEFycmF5KFhfQVhJU19MRU5HVEgpLmZpbGwobnVs bCl9LAorfTsKKworY29uc3QgU3VtbWFyeVRhYmxlID0gKHByb3BzKSA9PiB7CisgIGNvbnN0IGNs YXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgZGF0YSA9IHByb3BzLmRhdGE7CisgIHJldHVy biAoCisgICAgPHRhYmxlIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZX0+CisgICAgICA8dGhlYWQ+ CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGggY2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlVmFs fT5Qcm9wZXJ0eTwvdGg+CisgICAgICAgICAgPHRoIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZVZh bH0+VmFsdWU8L3RoPgorICAgICAgICA8L3RyPgorICAgICAgPC90aGVhZD4KKyAgICAgIDx0Ym9k eT4KKyAgICAgICAge2RhdGEubWFwKChpdGVtLCBpbmRleCkgPT4gKAorICAgICAgICAgIDx0ciBj bGFzc05hbWU9e2NsYXNzZXMudGFibGVWYWx9IGtleT17aW5kZXh9PgorICAgICAgICAgICAgPHRk IGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZVZhbH0+e2l0ZW0ubmFtZX08L3RkPgorICAgICAgICAg ICAgPHRkIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZVZhbH0+e2l0ZW0udmFsdWV9PC90ZD4KKyAg ICAgICAgICA8L3RyPgorICAgICAgICApKX0KKyAgICAgIDwvdGJvZHk+CisgICAgPC90YWJsZT4K KyAgKTsKK307CisKK1N1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7CisgIGRhdGE6IFByb3BUeXBl cy5hbnksCit9OworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdW1tYXJ5KHtwcmVmZXJlbmNl cywgc2lkLCBkaWQsIHBhZ2VWaXNpYmxlLCBlbmFibGVQb2xsPXRydWV9KSB7CisgIGNvbnN0IHJl ZnJlc2hPbiA9IHVzZVJlZihudWxsKTsKKyAgY29uc3QgcHJldlByZWZlcm5jZXMgPSB1c2VQcmV2 aW91cyhwcmVmZXJlbmNlcyk7CisKKyAgY29uc3QgW3Byb2Nlc3NIYW5kbGVDb3VudCwgcHJvY2Vz c0hhbmRsZUNvdW50UmVkdWNlXSA9IHVzZVJlZHVjZXIoc3RhdHNSZWR1Y2VyLCBjaGFydHNEZWZh dWx0WydocGNfc3RhdHMnXSk7CisgIGNvbnN0IFtvc1N0YXRzLCBzZXRPc1N0YXRzXSA9IHVzZVN0 YXRlKFtdKTsKKyAgY29uc3QgW2NwdVN0YXRzLCBzZXRDcHVTdGF0c10gPSB1c2VTdGF0ZShbXSk7 CisgIGNvbnN0IFtwcm9jZXNzSW5mb1N0YXRzXSA9IHVzZVN0YXRlKHsnUnVubmluZyc6IDQsICdT bGVlcGluZyc6IDIsICdTdG9wcGVkJzogMSwgJ1pvbWJpZSc6IDJ9KTsKKworICBjb25zdCBbLCBz ZXRDb3VudGVyRGF0YV0gPSB1c2VTdGF0ZSh7fSk7CisKKyAgY29uc3QgW3BvbGxEZWxheSwgc2V0 UG9sbERlbGF5XSA9IHVzZVN0YXRlKDUwMDApOworICBjb25zdCBbbG9uZ1BvbGxEZWxheV0gPSB1 c2VTdGF0ZSgxODAwMDApOworICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0 YXRlKG51bGwpOworICBjb25zdCBbY2hhcnREcmF3bk9uY2UsIHNldENoYXJ0RHJhd25PbmNlXSA9 IHVzZVN0YXRlKGZhbHNlKTsKKworICBjb25zdCB0YWJsZUhlYWRlciA9IFsKKyAgICB7CisgICAg ICBIZWFkZXI6ICdQcm9wZXJ0eScsCisgICAgICBhY2Nlc3NvcjogJ25hbWUnLAorICAgICAgc29y dGFibGU6IHRydWUsCisgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICBkaXNhYmxlR2xvYmFs RmlsdGVyOiBmYWxzZSwKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ1ZhbHVlJywKKyAg ICAgIGFjY2Vzc29yOiAndmFsdWUnLAorICAgICAgc29ydGFibGU6IHRydWUsCisgICAgICByZXNp emFibGU6IHRydWUsCisgICAgICBkaXNhYmxlR2xvYmFsRmlsdGVyOiBmYWxzZSwKKyAgICB9LAor ICBdOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGxldCBjYWxjUG9sbERlbGF5ID0gZmFsc2U7 CisgICAgaWYocHJldlByZWZlcm5jZXMpIHsKKyAgICAgIGlmKHByZXZQcmVmZXJuY2VzWydocGNf c3RhdHNfcmVmcmVzaCddICE9IHByZWZlcmVuY2VzWydocGNfc3RhdHNfcmVmcmVzaCddKSB7Cisg ICAgICAgIHByb2Nlc3NIYW5kbGVDb3VudFJlZHVjZSh7cmVzZXQ6IGNoYXJ0c0RlZmF1bHRbJ2hw Y19zdGF0cyddfSk7CisgICAgICAgIGNhbGNQb2xsRGVsYXkgPSB0cnVlOworICAgICAgfQorICAg IH0gZWxzZSB7CisgICAgICBjYWxjUG9sbERlbGF5ID0gdHJ1ZTsKKyAgICB9CisgICAgaWYoY2Fs Y1BvbGxEZWxheSkgeworICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGNoYXJ0c0RlZmF1 bHQpOworICAgICAgY29uc3QgbGVuZ3RoID0ga2V5cy5sZW5ndGg7CisgICAgICBpZihsZW5ndGgg PT0gMSl7CisgICAgICAgIHNldFBvbGxEZWxheSgKKyAgICAgICAgICBwcmVmZXJlbmNlc1trZXlz WzBdKydfcmVmcmVzaCddKjEwMDAKKyAgICAgICAgKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAg IHNldFBvbGxEZWxheSgKKyAgICAgICAgICBnZXRHQ0QoT2JqZWN0LmtleXMoY2hhcnRzRGVmYXVs dCkubWFwKChuYW1lKT0+cHJlZmVyZW5jZXNbbmFtZSsnX3JlZnJlc2gnXSkpKjEwMDAKKyAgICAg ICAgKTsKKyAgICAgIH0KKyAgICB9CisgIH0sIFtwcmVmZXJlbmNlc10pOworCisgIHVzZUVmZmVj dCgoKT0+eworICAgIC8qIENoYXJ0cyByZW5kZXJlZCBhcmUgbm90IHZpc2libGUgd2hlbiwgdGhl IGRhc2hib2FyZCBpcyBoaWRkZW4gYnV0IGxhdGVyIHZpc2libGUgKi8KKyAgICBpZihwYWdlVmlz aWJsZSAmJiAhY2hhcnREcmF3bk9uY2UpIHsKKyAgICAgIHNldENoYXJ0RHJhd25PbmNlKHRydWUp OworICAgIH0KKyAgfSwgW3BhZ2VWaXNpYmxlXSk7CisKKyAgdXNlRWZmZWN0KCgpID0+IHsKKyAg ICB0cnkgeworICAgICAgLy8gRmV0Y2ggdGhlIGxhdGVzdCBkYXRhIHBvaW50IGZyb20gdGhlIEFQ SSBlbmRwb2ludAorICAgICAgbGV0IHVybDsKKyAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICAgICAgdXJsICs9ICcvJyArIHNpZDsKKyAgICAgIHVy bCArPSBkaWQgPiAwID8gJy8nICsgZGlkIDogJyc7CisgICAgICB1cmwgKz0gJz9jaGFydF9uYW1l cz0nICsgJ3BnX3N5c19vc19pbmZvLHBnX3N5c19jcHVfaW5mbyc7CisgICAgICBjb25zdCBhcGkg PSBnZXRBcGlJbnN0YW5jZSgpOworICAgICAgYXBpKHsKKyAgICAgICAgdXJsOiB1cmwsCisgICAg ICAgIHR5cGU6ICdHRVQnLAorICAgICAgfSkKKyAgICAgICAgLnRoZW4oKHJlcykgPT4geworICAg ICAgICAgIGxldCBkYXRhID0gcmVzLmRhdGE7CisKKyAgICAgICAgICBjb25zdCBvc19pbmZvX29i aiA9IGRhdGFbJ3BnX3N5c19vc19pbmZvJ107CisgICAgICAgICAgbGV0IG9zX2luZm9fbGlzdCA9 IFsKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdOYW1lJywgdmFsdWU6IG9zX2luZm9f b2JqWyduYW1lJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdWZXJzaW9uJywg dmFsdWU6IG9zX2luZm9fb2JqWyd2ZXJzaW9uJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycs IG5hbWU6ICdIb3N0IG5hbWUnLCB2YWx1ZTogb3NfaW5mb19vYmpbJ2hvc3RfbmFtZSddIH0sCisg ICAgICAgICAgICB7IGljb246ICcnLCBuYW1lOiAnRG9tYWluIG5hbWUnLCB2YWx1ZTogb3NfaW5m b19vYmpbJ2RvbWFpbl9uYW1lJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdB cmNoaXRlY3R1cmUnLCB2YWx1ZTogb3NfaW5mb19vYmpbJ2FyY2hpdGVjdHVyZSddIH0sCisgICAg ICAgICAgICB7IGljb246ICcnLCBuYW1lOiAnT3MgdXAgc2luY2Ugc2Vjb25kcycsIHZhbHVlOiBv c19pbmZvX29ialsnb3NfdXBfc2luY2Vfc2Vjb25kcyddIH0sCisgICAgICAgICAgXTsKKyAgICAg ICAgICBzZXRPc1N0YXRzKG9zX2luZm9fbGlzdCk7CisKKyAgICAgICAgICBjb25zdCBjcHVfaW5m b19vYmogPSBkYXRhWydwZ19zeXNfY3B1X2luZm8nXTsKKyAgICAgICAgICBsZXQgY3B1X2luZm9f bGlzdCA9IFsKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdWZW5kb3InLCB2YWx1ZTog Y3B1X2luZm9fb2JqWyd2ZW5kb3InXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTog J0Rlc2NyaXB0aW9uJywgdmFsdWU6IGNwdV9pbmZvX29ialsnZGVzY3JpcHRpb24nXSB9LAorICAg ICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ01vZGVsIG5hbWUnLCB2YWx1ZTogY3B1X2luZm9f b2JqWydtb2RlbF9uYW1lJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdObyBv ZiBjb3JlcycsIHZhbHVlOiBjcHVfaW5mb19vYmpbJ25vX29mX2NvcmVzJ10gfSwKKyAgICAgICAg ICAgIHsgaWNvbjogJycsIG5hbWU6ICdBcmNoaXRlY3R1cmUnLCB2YWx1ZTogY3B1X2luZm9fb2Jq WydhcmNoaXRlY3R1cmUnXSB9LAorICAgICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ0Nsb2Nr IHNwZWVkIEh6JywgdmFsdWU6IGNwdV9pbmZvX29ialsnY2xvY2tfc3BlZWRfaHonXSB9LAorICAg ICAgICAgICAgeyBpY29uOiAnJywgbmFtZTogJ0wxIGRjYWNoZSBzaXplJywgdmFsdWU6IGNwdV9p bmZvX29ialsnbDFkY2FjaGVfc2l6ZSddIH0sCisgICAgICAgICAgICB7IGljb246ICcnLCBuYW1l OiAnTDEgaWNhY2hlIHNpemUnLCB2YWx1ZTogY3B1X2luZm9fb2JqWydsMWljYWNoZV9zaXplJ10g fSwKKyAgICAgICAgICAgIHsgaWNvbjogJycsIG5hbWU6ICdMMiBjYWNoZSBzaXplJywgdmFsdWU6 IGNwdV9pbmZvX29ialsnbDJjYWNoZV9zaXplJ10gfSwKKyAgICAgICAgICAgIHsgaWNvbjogJycs IG5hbWU6ICdMMyBjYWNoZSBzaXplJywgdmFsdWU6IGNwdV9pbmZvX29ialsnbDNjYWNoZV9zaXpl J10gfSwKKyAgICAgICAgICBdOworICAgICAgICAgIHNldENwdVN0YXRzKGNwdV9pbmZvX2xpc3Qp OworCisgICAgICAgICAgc2V0RXJyb3JNc2cobnVsbCk7CisgICAgICAgIH0pCisgICAgICAgIC5j YXRjaCgoZXJyb3IpID0+IHsKKyAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGlu ZyBkYXRhOicsIGVycm9yKTsKKyAgICAgICAgfSk7CisgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAg ICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhdGE6JywgZXJyb3IpOworICAgIH0K KyAgfSwgW3NpZCwgZGlkLCBlbmFibGVQb2xsLCBwYWdlVmlzaWJsZV0pOworCisgIHVzZUludGVy dmFsKCgpPT57CisgICAgY29uc3QgY3VyckVwb2NoID0gZ2V0RXBvY2goKTsKKyAgICBpZihyZWZy ZXNoT24uY3VycmVudCA9PT0gbnVsbCkgeworICAgICAgbGV0IHRtcFJlZiA9IHt9OworICAgICAg T2JqZWN0LmtleXMoY2hhcnRzRGVmYXVsdCkuZm9yRWFjaCgobmFtZSk9PnsKKyAgICAgICAgdG1w UmVmW25hbWVdID0gY3VyckVwb2NoOworICAgICAgfSk7CisgICAgICByZWZyZXNoT24uY3VycmVu dCA9IHRtcFJlZjsKKyAgICB9CisKKyAgICBsZXQgZ2V0Rm9yID0gW107CisgICAgT2JqZWN0Lmtl eXMoY2hhcnRzRGVmYXVsdCkuZm9yRWFjaCgobmFtZSk9PnsKKyAgICAgIGlmKGN1cnJFcG9jaCA+ PSByZWZyZXNoT24uY3VycmVudFtuYW1lXSkgeworICAgICAgICBnZXRGb3IucHVzaChuYW1lKTsK KyAgICAgICAgcmVmcmVzaE9uLmN1cnJlbnRbbmFtZV0gPSBjdXJyRXBvY2ggKyBwcmVmZXJlbmNl c1tuYW1lKydfcmVmcmVzaCddOworICAgICAgfQorICAgIH0pOworCisgICAgbGV0IHBhdGggPSBn ZXRTdGF0c1VybChzaWQsIGRpZCwgZ2V0Rm9yKTsKKyAgICBpZiAoIXBhZ2VWaXNpYmxlKXsKKyAg ICAgIHJldHVybjsKKyAgICB9CisgICAgYXhpb3MuZ2V0KHBhdGgpCisgICAgICAudGhlbigocmVz cCk9PnsKKyAgICAgICAgbGV0IGRhdGEgPSByZXNwLmRhdGE7CisgICAgICAgIHNldEVycm9yTXNn KG51bGwpOworICAgICAgICBwcm9jZXNzSGFuZGxlQ291bnRSZWR1Y2Uoe2luY29taW5nOiBkYXRh WydocGNfc3RhdHMnXX0pOworCisgICAgICAgIHNldENvdW50ZXJEYXRhKChwcmV2Q291bnRlckRh dGEpPT57CisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIC4uLnByZXZDb3VudGVyRGF0 YSwKKyAgICAgICAgICAgIC4uLmRhdGEsCisgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAg ICB9KQorICAgICAgLmNhdGNoKChlcnJvcik9PnsKKyAgICAgICAgaWYoIWVycm9yTXNnKSB7Cisg ICAgICAgICAgcHJvY2Vzc0hhbmRsZUNvdW50UmVkdWNlKHtyZXNldDpjaGFydHNEZWZhdWx0Wydo cGNfc3RhdHMnXX0pOworICAgICAgICAgIHNldENvdW50ZXJEYXRhKHt9KTsKKyAgICAgICAgICBp ZihlcnJvci5yZXNwb25zZSkgeworICAgICAgICAgICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1 cyA9PT0gNDI4KSB7CisgICAgICAgICAgICAgIHNldEVycm9yTXNnKGdldHRleHQoJ1BsZWFzZSBj b25uZWN0IHRvIHRoZSBzZWxlY3RlZCBzZXJ2ZXIgdG8gdmlldyB0aGUgZ3JhcGguJykpOworICAg ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnQW4g ZXJyb3Igb2NjdXJyZWQgd2hpbHN0IHJlbmRlcmluZyB0aGUgZ3JhcGguJykpOworICAgICAgICAg ICAgfQorICAgICAgICAgIH0gZWxzZSBpZihlcnJvci5yZXF1ZXN0KSB7CisgICAgICAgICAgICBz ZXRFcnJvck1zZyhnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNv bm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJykpOworICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVy cm9yKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0pOworICB9LCBlbmFibGVQb2xs ID8gcG9sbERlbGF5IDogLTEpOworCisgIHVzZUludGVydmFsKCgpPT57CisgICAgLy8gbGV0IHVy bDsKKyAgICAvLyB1cmwgPSB1cmxfZm9yKCdkYXNoYm9hcmQuc3lzdGVtX3N0YXRpc3RpY3MnKTsK KyAgICAvLyB1cmwgKz0gJy8nICsgc2lkOworICAgIC8vIHVybCArPSBkaWQgPiAwID8gJy8nICsg ZGlkIDogJyc7CisgICAgLy8gdXJsICs9ICc/Y2hhcnRfbmFtZXM9JyArICdwaV9zdGF0cyc7Cisg ICAgLy8gYXhpb3MuZ2V0KHVybCkKKyAgICAvLyAgIC50aGVuKChyZXNwKT0+eworICAgIC8vICAg ICBsZXQgZGF0YSA9IHJlc3AuZGF0YTsKKyAgICAvLyAgICAgY29uc29sZS5sb2coInBpIGRhdGE6 ICIsIGRhdGEpOworICAgIC8vICAgfSkKKyAgICAvLyAgIC5jYXRjaCgoZXJyb3IpPT57CisgICAg Ly8gICAgIGlmKCFlcnJvck1zZykgeworICAgIC8vICAgICAgIGlmKGVycm9yLnJlc3BvbnNlKSB7 CisgICAgLy8gICAgICAgICBpZiAoZXJyb3IucmVzcG9uc2Uuc3RhdHVzID09PSA0MjgpIHsKKyAg ICAvLyAgICAgICAgICAgc2V0RXJyb3JNc2coZ2V0dGV4dCgnUGxlYXNlIGNvbm5lY3QgdG8gdGhl IHNlbGVjdGVkIHNlcnZlciB0byB2aWV3IHRoZSBncmFwaC4nKSk7CisgICAgLy8gICAgICAgICB9 IGVsc2UgeworICAgIC8vICAgICAgICAgICBzZXRFcnJvck1zZyhnZXR0ZXh0KCdBbiBlcnJvciBv Y2N1cnJlZCB3aGlsc3QgcmVuZGVyaW5nIHRoZSBncmFwaC4nKSk7CisgICAgLy8gICAgICAgICB9 CisgICAgLy8gICAgICAgfSBlbHNlIGlmKGVycm9yLnJlcXVlc3QpIHsKKyAgICAvLyAgICAgICAg IHNldEVycm9yTXNnKGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUg Y29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3NlZC4nKSk7CisgICAgLy8gICAg ICAgICByZXR1cm47CisgICAgLy8gICAgICAgfSBlbHNlIHsKKyAgICAvLyAgICAgICAgIGNvbnNv bGUuZXJyb3IoZXJyb3IpOworICAgIC8vICAgICAgIH0KKyAgICAvLyAgICAgfQorICAgIC8vICAg fSk7CisgIH0sIGVuYWJsZVBvbGwgPyBsb25nUG9sbERlbGF5IDogLTEpOworCisgIHJldHVybiAo CisgICAgPD4KKyAgICAgIDxkaXYgZGF0YS10ZXN0aWQ9J2dyYXBoLXBvbGwtZGVsYXknIHN0eWxl PXt7ZGlzcGxheTogJ25vbmUnfX0+e3BvbGxEZWxheX08L2Rpdj4KKyAgICAgIHtjaGFydERyYXdu T25jZSAmJgorICAgICAgICA8U3VtbWFyeVdyYXBwZXIKKyAgICAgICAgICBwcm9jZXNzSGFuZGxl Q291bnQ9e3RyYW5zZm9ybURhdGEocHJvY2Vzc0hhbmRsZUNvdW50LCBwcmVmZXJlbmNlc1snaHBj X3N0YXRzX3JlZnJlc2gnXSl9CisgICAgICAgICAgb3NTdGF0cz17b3NTdGF0c30KKyAgICAgICAg ICBjcHVTdGF0cz17Y3B1U3RhdHN9CisgICAgICAgICAgcHJvY2Vzc0luZm9TdGF0cz17dHJhbnNm b3JtRGF0YShwcm9jZXNzSW5mb1N0YXRzLCA1KX0KKyAgICAgICAgICB0YWJsZUhlYWRlcj17dGFi bGVIZWFkZXJ9CisgICAgICAgICAgZXJyb3JNc2c9e2Vycm9yTXNnfQorICAgICAgICAgIHNob3dU b29sdGlwPXtwcmVmZXJlbmNlc1snZ3JhcGhfbW91c2VfdHJhY2snXX0KKyAgICAgICAgICBzaG93 RGF0YVBvaW50cz17cHJlZmVyZW5jZXNbJ2dyYXBoX2RhdGFfcG9pbnRzJ119CisgICAgICAgICAg bGluZUJvcmRlcldpZHRoPXtwcmVmZXJlbmNlc1snZ3JhcGhfbGluZV9ib3JkZXJfd2lkdGgnXX0K KyAgICAgICAgICBpc0RhdGFiYXNlPXtkaWQgPiAwfQorICAgICAgICAgIGlzVGVzdD17ZmFsc2V9 CisgICAgICAgIC8+CisgICAgICB9CisgICAgPC8+CisgICk7Cit9CisKK1N1bW1hcnkucHJvcFR5 cGVzID0geworICBwcmVmZXJlbmNlczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLAorICBz aWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCwgUHJv cFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXSksCisgIGRpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShb UHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLCBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRd KSwKKyAgcGFnZVZpc2libGU6IFByb3BUeXBlcy5ib29sLAorICBlbmFibGVQb2xsOiBQcm9wVHlw ZXMuYm9vbCwKK307CisKK2V4cG9ydCBmdW5jdGlvbiBTdW1tYXJ5V3JhcHBlcihwcm9wcykgewor ICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1v KCgpPT4oeworICAgIHNob3dEYXRhUG9pbnRzOiBwcm9wcy5zaG93RGF0YVBvaW50cywKKyAgICBz aG93VG9vbHRpcDogcHJvcHMuc2hvd1Rvb2x0aXAsCisgICAgbGluZUJvcmRlcldpZHRoOiBwcm9w cy5saW5lQm9yZGVyV2lkdGgsCisgIH0pLCBbcHJvcHMuc2hvd1Rvb2x0aXAsIHByb3BzLnNob3dE YXRhUG9pbnRzLCBwcm9wcy5saW5lQm9yZGVyV2lkdGhdKTsKKyAgcmV0dXJuICgKKyAgICA8Pgor ICAgICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250 YWluZXJ9PgorICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fSBzbT17MTJ9PgorICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lckhlYWRlcn0+e2dldHRleHQoJ09TIEluZm9y bWF0aW9uJyl9PC9kaXY+CisgICAgICAgICAgPFN1bW1hcnlUYWJsZSBkYXRhPXtwcm9wcy5vc1N0 YXRzfSAvPgorICAgICAgICA8L0dyaWQ+CisgICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9IHNtPXsx Mn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57 Z2V0dGV4dCgnSGFuZGxlICYgUHJvY2VzcyBDb3VudCcpfTwvZGl2PgorICAgICAgICAgIDxDaGFy dENvbnRhaW5lciBpZD0naHBjLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9IGRhdGFzZXRzPXtw cm9wcy5wcm9jZXNzSGFuZGxlQ291bnQuZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMuZXJyb3JN c2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgIDxTdHJlYW1pbmdDaGFydCBk YXRhPXtwcm9wcy5wcm9jZXNzSGFuZGxlQ291bnR9IGRhdGFQb2ludFNpemU9e0RBVEFfUE9JTlRf U0laRX0geFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSBzaG93U2Vjb25k QXhpcz17dHJ1ZX0gLz4KKyAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgorICAgICAgICA8L0dy aWQ+CisgICAgICA8L0dyaWQ+CisgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xh c3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lcn0+CisgICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9IHNt PXsxMn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVy fT57Z2V0dGV4dCgnQ1BVIEluZm9ybWF0aW9uJyl9PC9kaXY+CisgICAgICAgICAgPFN1bW1hcnlU YWJsZSBkYXRhPXtwcm9wcy5jcHVTdGF0c30gLz4KKyAgICAgICAgPC9HcmlkPgorICAgICAgICA8 R3JpZCBpdGVtIG1kPXs2fSBzbT17MTJ9PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFz c2VzLmNvbnRhaW5lckhlYWRlcn0+e2dldHRleHQoJ1Byb2Nlc3MgSW5mb3JtYXRpb24nKX08L2Rp dj4KKyAgICAgICAgICA8Q2hhcnRDb250YWluZXIgaWQ9J3BpLWdyYXBoJyB0aXRsZT17Z2V0dGV4 dCgnJyl9IGRhdGFzZXRzPXtwcm9wcy5wcm9jZXNzSW5mb1N0YXRzLmRhdGFzZXRzfSAgZXJyb3JN c2c9e3Byb3BzLmVycm9yTXNnfSBpc1Rlc3Q9e3Byb3BzLmlzVGVzdH0+CisgICAgICAgICAgICA8 RG9udXRDaGFydCBkYXRhPXtwcm9wcy5wcm9jZXNzSW5mb1N0YXRzLmRhdGFzZXRzfSAvPgorICAg ICAgICAgIDwvQ2hhcnRDb250YWluZXI+CisgICAgICAgIDwvR3JpZD4KKyAgICAgIDwvR3JpZD4K KyAgICA8Lz4KKyAgKTsKK30KKworU3VtbWFyeVdyYXBwZXIucHJvcFR5cGVzID0geworICBwcm9j ZXNzSGFuZGxlQ291bnQ6IFByb3BUeXBlcy5hbnkuaXNSZXF1aXJlZCwKKyAgb3NTdGF0czogUHJv cFR5cGVzLmFueS5pc1JlcXVpcmVkLAorICBjcHVTdGF0czogUHJvcFR5cGVzLmFueS5pc1JlcXVp cmVkLAorICBwcm9jZXNzSW5mb1N0YXRzOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsCisgIHRh YmxlSGVhZGVyOiBQcm9wVHlwZXMuYW55LmlzUmVxdWlyZWQsCisgIGVycm9yTXNnOiBQcm9wVHlw ZXMuYW55LAorICBzaG93VG9vbHRpcDogUHJvcFR5cGVzLmJvb2wsCisgIHNob3dEYXRhUG9pbnRz OiBQcm9wVHlwZXMuYm9vbCwKKyAgbGluZUJvcmRlcldpZHRoOiBQcm9wVHlwZXMubnVtYmVyLAor ICBpc0RhdGFiYXNlOiBQcm9wVHlwZXMuYm9vbCwKKyAgaXNUZXN0OiBQcm9wVHlwZXMuYm9vbCwK K307CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvdGVtcGxhdGVzL2Rhc2hib2Fy ZC9zcWwvZGVmYXVsdC9zeXN0ZW1fc3RhdGlzdGljcy5zcWwgYi93ZWIvcGdhZG1pbi9kYXNoYm9h cmQvdGVtcGxhdGVzL2Rhc2hib2FyZC9zcWwvZGVmYXVsdC9zeXN0ZW1fc3RhdGlzdGljcy5zcWwK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi45MDI0YTJjNWUKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvdGVtcGxhdGVzL2Rhc2hib2FyZC9zcWwv ZGVmYXVsdC9zeXN0ZW1fc3RhdGlzdGljcy5zcWwKQEAgLTAsMCArMSwxMDAgQEAKK3slIHNldCBh ZGRfdW5pb24gPSBmYWxzZSAlfQoreyUgaWYgJ3BnX3N5c19vc19pbmZvJyBpbiBjaGFydF9uYW1l cyAlfQoreyUgc2V0IGFkZF91bmlvbiA9IHRydWUgJX0KKyAgICBTRUxFQ1QgJ3BnX3N5c19vc19p bmZvJyBBUyBjaGFydF9uYW1lLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpIEFTIGNoYXJ0X2Rh dGEKKyAgICBGUk9NIChTRUxFQ1QgKiBGUk9NIHBnX3N5c19vc19pbmZvKCkpIHQKK3slIGVuZGlm ICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdwZ19zeXNfY3B1X2luZm8nIGluIGNoYXJ0X25hbWVz ICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQoreyUgaWYgJ3BnX3N5c19jcHVfaW5mbycg aW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNU ICdwZ19zeXNfY3B1X2luZm8nIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24o dCkgQVMgY2hhcnRfZGF0YQorICAgIEZST00gKFNFTEVDVCAqIEZST00gcGdfc3lzX2NwdV9pbmZv KCkpIHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdocGNfc3RhdHMnIGluIGNo YXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQoreyUgaWYgJ2hwY19zdGF0 cycgaW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VM RUNUICdocGNfc3RhdHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkg QVMgY2hhcnRfZGF0YQorICAgIEZST00gKFNFTEVDVAorICAgICAgICAoU0VMRUNUIGhhbmRsZV9j b3VudCBGUk9NIHBnX3N5c19vc19pbmZvKCkpICBBUyAie3sgXygnSGFuZGxlJykgfX0iLAorICAg ICAgICAoU0VMRUNUIHByb2Nlc3NfY291bnQgRlJPTSBwZ19zeXNfb3NfaW5mbygpKSAgQVMgInt7 IF8oJ1Byb2Nlc3MnKSB9fSIKKyAgICApIHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24g YW5kICdjdV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KKyAgICBVTklPTiBBTEwKK3slIGVuZGlm ICV9Cit7JSBpZiAnY3Vfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9Cit7JSBzZXQgYWRkX3VuaW9u ID0gdHJ1ZSAlfQorICAgIFNFTEVDVCAnY3Vfc3RhdHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFs b2cucm93X3RvX2pzb24odCkgQVMgY2hhcnRfZGF0YQorICAgIEZST00gKFNFTEVDVCAqIEZST00g cGdfc3lzX2NwdV91c2FnZV9pbmZvKCkpIHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24g YW5kICdsYV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KKyAgICBVTklPTiBBTEwKK3slIGVuZGlm ICV9Cit7JSBpZiAnbGFfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9Cit7JSBzZXQgYWRkX3VuaW9u ID0gdHJ1ZSAlfQorICAgIFNFTEVDVCAnbGFfc3RhdHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFs b2cucm93X3RvX2pzb24odCkgQVMgY2hhcnRfZGF0YSBGUk9NIChTRUxFQ1QgKiBGUk9NIHBnX3N5 c19sb2FkX2F2Z19pbmZvKCkpIHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdw Y3Vfc3RhdHMnIGluIGNoYXJ0X25hbWVzICV9CisgICAgVU5JT04gQUxMCit7JSBlbmRpZiAlfQor eyUgaWYgJ3BjdV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0 cnVlICV9CisgICAgU0VMRUNUICdwY3Vfc3RhdHMnIEFTIGNoYXJ0X25hbWUsICgKKyAgICBTRUxF Q1QgdG9fanNvbihwZ19jYXRhbG9nLmpzb25iX29iamVjdF9hZ2coJ3Byb2Nlc3MnfHxyb3dfbnVt YmVyLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpKSkKKyAgICBGUk9NICgKKyAgICAgICAgU0VM RUNUIHBpZCwgbmFtZSwgY3B1X3VzYWdlLCBST1dfTlVNQkVSKCkgT1ZFUiAoT1JERVIgQlkgcGlk KSBBUyByb3dfbnVtYmVyCisgICAgICAgIEZST00gcGdfc3lzX2NwdV9tZW1vcnlfYnlfcHJvY2Vz cygpCisgICAgKSB0CisgICAgKSBBUyBjaGFydF9kYXRhCit7JSBlbmRpZiAlfQoreyUgaWYgYWRk X3VuaW9uIGFuZCAnbV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KKyAgICBVTklPTiBBTEwKK3sl IGVuZGlmICV9Cit7JSBpZiAnbV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KK3slIHNldCBhZGRf dW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNUICdtX3N0YXRzJyBBUyBjaGFydF9uYW1lLCBwZ19j YXRhbG9nLnJvd190b19qc29uKHQpIEFTIGNoYXJ0X2RhdGEgRlJPTSAoU0VMRUNUIHRvdGFsX21l bW9yeSwgdXNlZF9tZW1vcnksIGZyZWVfbWVtb3J5IEZST00gcGdfc3lzX21lbW9yeV9pbmZvKCkp IHQKK3slIGVuZGlmICV9Cit7JSBpZiBhZGRfdW5pb24gYW5kICdzbV9zdGF0cycgaW4gY2hhcnRf bmFtZXMgJX0KKyAgICBVTklPTiBBTEwKK3slIGVuZGlmICV9Cit7JSBpZiAnc21fc3RhdHMnIGlu IGNoYXJ0X25hbWVzICV9Cit7JSBzZXQgYWRkX3VuaW9uID0gdHJ1ZSAlfQorICAgIFNFTEVDVCAn c21fc3RhdHMnIEFTIGNoYXJ0X25hbWUsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkgQVMgY2hh cnRfZGF0YSBGUk9NIChTRUxFQ1Qgc3dhcF90b3RhbCwgc3dhcF91c2VkLCBzd2FwX2ZyZWUgRlJP TSBwZ19zeXNfbWVtb3J5X2luZm8oKSkgdAoreyUgZW5kaWYgJX0KK3slIGlmIGFkZF91bmlvbiBh bmQgJ3BtdV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KKyAgICBVTklPTiBBTEwKK3slIGVuZGlm ICV9Cit7JSBpZiAncG11X3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQoreyUgc2V0IGFkZF91bmlv biA9IHRydWUgJX0KKyAgICBTRUxFQ1QgJ3BtdV9zdGF0cycgQVMgY2hhcnRfbmFtZSwgKAorICAg IFNFTEVDVCB0b19qc29uKHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2FnZygncHJvY2Vzcyd8fHJv d19udW1iZXIsIHBnX2NhdGFsb2cucm93X3RvX2pzb24odCkpKQorICAgIEZST00gKAorICAgICAg ICBTRUxFQ1QgcGlkLCBuYW1lLCBtZW1vcnlfdXNhZ2UsIG1lbW9yeV9ieXRlcywgUk9XX05VTUJF UigpIE9WRVIgKE9SREVSIEJZIHBpZCkgQVMgcm93X251bWJlcgorICAgICAgICBGUk9NIHBnX3N5 c19jcHVfbWVtb3J5X2J5X3Byb2Nlc3MoKQorICAgICkgdAorICAgICkgQVMgY2hhcnRfZGF0YQor eyUgZW5kaWYgJX0KK3slIGlmIGFkZF91bmlvbiBhbmQgJ2lvX3N0YXRzJyBpbiBjaGFydF9uYW1l cyAlfQorICAgIFVOSU9OIEFMTAoreyUgZW5kaWYgJX0KK3slIGlmICdpb19zdGF0cycgaW4gY2hh cnRfbmFtZXMgJX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNUICdpb19z dGF0cycgQVMgY2hhcnRfbmFtZSwgKAorICAgIFNFTEVDVCB0b19qc29uKHBnX2NhdGFsb2cuanNv bmJfb2JqZWN0X2FnZygnZGlzayd8fHJvd19udW1iZXIsIHBnX2NhdGFsb2cucm93X3RvX2pzb24o dCkpKQorICAgIEZST00gKAorICAgICAgICBTRUxFQ1QgKiwgUk9XX05VTUJFUigpIE9WRVIgKE9S REVSIEJZIGRldmljZV9uYW1lKSBBUyByb3dfbnVtYmVyCisgICAgICAgIEZST00gcGdfc3lzX2lv X2FuYWx5c2lzX2luZm8oKQorICAgICkgdAorICAgICkgQVMgY2hhcnRfZGF0YQoreyUgZW5kaWYg JX0KK3slIGlmIGFkZF91bmlvbiBhbmQgJ3BpX3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQorICAg IFVOSU9OIEFMTAoreyUgZW5kaWYgJX0KK3slIGlmICdwaV9zdGF0cycgaW4gY2hhcnRfbmFtZXMg JX0KK3slIHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNUICdwaV9zdGF0cycgQVMg Y2hhcnRfbmFtZSwgcGdfY2F0YWxvZy5yb3dfdG9fanNvbih0KSBBUyBjaGFydF9kYXRhIEZST00g KFNFTEVDVCAqIEZST00gcGdfc3lzX3Byb2Nlc3NfaW5mbygpKSB0Cit7JSBlbmRpZiAlfQpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9jb21wb25lbnRzL1BnQ2hhcnQvRG9udXRDaGFydC5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvY29tcG9uZW50cy9QZ0NoYXJ0L0RvbnV0Q2hhcnQuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uNGRhMWQ0NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9Eb251dENoYXJ0LmpzeApAQCAtMCwwICsx LDcwIEBACitpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7 CitpbXBvcnQgQ2hhcnQgZnJvbSAnY2hhcnQuanMvYXV0byc7CitpbXBvcnQgUHJvcFR5cGVzIGZy b20gJ3Byb3AtdHlwZXMnOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb251dENoYXJ0KHsg ZGF0YSB9KSB7CisgIGNvbnN0IGNoYXJ0UmVmID0gdXNlUmVmKG51bGwpOworICBjb25zdCBjaGFy dEluc3RhbmNlID0gdXNlUmVmKG51bGwpOworCisgIHVzZUVmZmVjdCgoKSA9PiB7CisgICAgaWYg KGRhdGEgJiYgT2JqZWN0LmtleXMoZGF0YSkubGVuZ3RoID4gMCkgeworICAgICAgaWYgKGNoYXJ0 SW5zdGFuY2UuY3VycmVudCkgeworICAgICAgICAvLyBJZiBjaGFydCBpbnN0YW5jZSBleGlzdHMs IHVwZGF0ZSB0aGUgZGF0YQorICAgICAgICBjaGFydEluc3RhbmNlLmN1cnJlbnQuZGF0YS5sYWJl bHMgPSBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCk7CisgICAgICAgIGNoYXJ0SW5zdGFu Y2UuY3VycmVudC5kYXRhLmRhdGFzZXRzWzBdLmRhdGEgPSBkYXRhLm1hcCgoaXRlbSkgPT4gaXRl bS5kYXRhKTsKKyAgICAgICAgY2hhcnRJbnN0YW5jZS5jdXJyZW50LnVwZGF0ZSgpOworICAgICAg fSBlbHNlIHsKKyAgICAgICAgLy8gSWYgY2hhcnQgaW5zdGFuY2UgZG9lc24ndCBleGlzdCwgY3Jl YXRlIGEgbmV3IGNoYXJ0CisgICAgICAgIGNvbnN0IGNoYXJ0T3B0aW9ucyA9IHsKKyAgICAgICAg ICByZXNwb25zaXZlOiB0cnVlLAorICAgICAgICAgIG1haW50YWluQXNwZWN0UmF0aW86IGZhbHNl LAorICAgICAgICAgIHBsdWdpbnM6IHsKKyAgICAgICAgICAgIGxlZ2VuZDogeworICAgICAgICAg ICAgICBkaXNwbGF5OiBmYWxzZSwgLy8gSGlkZSB0aGUgbGFiZWxzIGF0IHRoZSB0b3AKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAgICBhbmltYXRpb246IHsKKyAgICAgICAg ICAgIGR1cmF0aW9uOiAwLCAvLyBEaXNhYmxlIHRoZSBhbmltYXRpb24KKyAgICAgICAgICB9LAor ICAgICAgICAgIHRvb2x0aXBzOiB7CisgICAgICAgICAgICBjYWxsYmFja3M6IHsKKyAgICAgICAg ICAgICAgbGFiZWw6IGZ1bmN0aW9uICh0b29sdGlwSXRlbSwgY2hhcnREYXRhKSB7CisgICAgICAg ICAgICAgICAgY29uc3QgZGF0YXNldCA9IGNoYXJ0RGF0YS5kYXRhc2V0c1t0b29sdGlwSXRlbS5k YXRhc2V0SW5kZXhdOworICAgICAgICAgICAgICAgIGNvbnN0IHRvdGFsID0gZGF0YXNldC5kYXRh LnJlZHVjZSgocHJldmlvdXNWYWx1ZSwgY3VycmVudFZhbHVlKSA9PiBwcmV2aW91c1ZhbHVlICsg Y3VycmVudFZhbHVlKTsKKyAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50VmFsdWUgPSBkYXRh c2V0LmRhdGFbdG9vbHRpcEl0ZW0uaW5kZXhdOworICAgICAgICAgICAgICAgIGNvbnN0IHBlcmNl bnRhZ2UgPSAoKGN1cnJlbnRWYWx1ZSAvIHRvdGFsKSAqIDEwMCkudG9GaXhlZCgyKSArICclJzsK KyAgICAgICAgICAgICAgICByZXR1cm4gZGF0YXNldC5sYWJlbCArICc6ICcgKyBjdXJyZW50VmFs dWUgKyAnICgnICsgcGVyY2VudGFnZSArICcpJzsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAg ICAgIH0sCisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKworICAgICAgICBjb25zdCBjaGFydERh dGEgPSB7CisgICAgICAgICAgbGFiZWxzOiBkYXRhLm1hcCgoaXRlbSkgPT4gaXRlbS5sYWJlbCks CisgICAgICAgICAgZGF0YXNldHM6IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZGF0 YTogZGF0YS5tYXAoKGl0ZW0pID0+IGl0ZW0uZGF0YSksCisgICAgICAgICAgICAgIGJhY2tncm91 bmRDb2xvcjogZGF0YS5tYXAoKGl0ZW0pID0+IGl0ZW0uYm9yZGVyQ29sb3IpLAorICAgICAgICAg ICAgICBob3ZlckJhY2tncm91bmRDb2xvcjogZGF0YS5tYXAoKGl0ZW0pID0+IGl0ZW0uYm9yZGVy Q29sb3IpLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9OworCisgICAg ICAgIGNvbnN0IGN0eCA9IGNoYXJ0UmVmLmN1cnJlbnQuZ2V0Q29udGV4dCgnMmQnKTsKKyAgICAg ICAgY2hhcnRJbnN0YW5jZS5jdXJyZW50ID0gbmV3IENoYXJ0KGN0eCwgeworICAgICAgICAgIHR5 cGU6ICdkb3VnaG51dCcsCisgICAgICAgICAgZGF0YTogY2hhcnREYXRhLAorICAgICAgICAgIG9w dGlvbnM6IGNoYXJ0T3B0aW9ucywKKyAgICAgICAgfSk7CisgICAgICB9CisgICAgfQorICB9LCBb ZGF0YV0pOworCisgIHJldHVybiAoCisgICAgPGNhbnZhcyByZWY9e2NoYXJ0UmVmfSAvPgorICAp OworfQorCitEb251dENoYXJ0LnByb3BUeXBlcyA9IHsKKyAgZGF0YTogUHJvcFR5cGVzLmFycmF5 LmlzUmVxdWlyZWQsCit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQu anN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1pbmdD aGFydC5qc3gKaW5kZXggYmQ0NjVlM2RhLi41Y2NmZTM0NjQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQuanN4CisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1BnQ2hhcnQvU3RyZWFtaW5nQ2hhcnQu anN4CkBAIC0zMiw3ICszMiw3IEBAIGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW4ocmVmcmVzaFJhdGUp IHsKICAgICBzaG93VG9vbHRpcCgpOwogICAgIGxldCB0b29sdGlwSHRtbD1gPGRpdj4keyh1LmRh dGFbMV0ubGVuZ3RoLTEtcGFyc2VJbnQodS5sZWdlbmQudmFsdWVzWzBdWydfJ10pKSAqIHJlZnJl c2hSYXRlICsgZ2V0dGV4dCgnIHNlY29uZHMgYWdvJyl9PC9kaXY+YDsKICAgICBmb3IobGV0IGk9 MTsgaTx1LnNlcmllcy5sZW5ndGg7IGkrKykgewotICAgICAgdG9vbHRpcEh0bWwgKz0gYDxkaXYg Y2xhc3M9InVwbG90LXRvb2x0aXAtbGFiZWwiPjxkaXYgc3R5bGU9ImhlaWdodDoxMnB4OyB3aWR0 aDoxMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiR7dS5zZXJpZXNbaV0uc3Ryb2tlKCl9Ij48L2Rpdj4g JHt1LnNlcmllc1tpXS5sYWJlbH06ICR7dS5sZWdlbmQudmFsdWVzW2ldWydfJ119PC9kaXY+YDsK KyAgICAgIHRvb2x0aXBIdG1sICs9IGA8ZGl2IGNsYXNzPSd1cGxvdC10b29sdGlwLWxhYmVsJz48 ZGl2IHN0eWxlPSdoZWlnaHQ6MTJweDsgd2lkdGg6MTJweDsgYmFja2dyb3VuZC1jb2xvcjoke3Uu c2VyaWVzW2ldLnN0cm9rZSgpfSc+PC9kaXY+ICR7dS5zZXJpZXNbaV0ubGFiZWx9OiAke3UubGVn ZW5kLnZhbHVlc1tpXVsnXyddfTwvZGl2PmA7CiAgICAgfQogICAgIHRvb2x0aXAuaW5uZXJIVE1M ID0gdG9vbHRpcEh0bWw7CiAKQEAgLTU4LDQ0ICs1OCwzMiBAQCBmdW5jdGlvbiB0b29sdGlwUGx1 Z2luKHJlZnJlc2hSYXRlKSB7CiAgIH07CiB9CiAKLWV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN0 cmVhbWluZ0NoYXJ0KHt4UmFuZ2U9NzUsIGRhdGEsIG9wdGlvbnN9KSB7CitleHBvcnQgZGVmYXVs dCBmdW5jdGlvbiBTdHJlYW1pbmdDaGFydCh7eFJhbmdlPTc1LCBkYXRhLCBvcHRpb25zLCBzaG93 U2Vjb25kQXhpcz1mYWxzZX0pIHsKICAgY29uc3QgY2hhcnRSZWYgPSB1c2VSZWYoKTsKICAgY29u c3QgdGhlbWUgPSB1c2VUaGVtZSgpOwogICBjb25zdCB7IHdpZHRoLCBoZWlnaHQsIHJlZjpjb250 YWluZXJSZWYgfSA9IHVzZVJlc2l6ZURldGVjdG9yKCk7Ci0gIGNvbnN0IGRlZmF1bHRPcHRpb25z ID0gdXNlTWVtbygoKT0+KHsKLSAgICB0aXRsZTogJycsCi0gICAgd2lkdGg6IHdpZHRoLAotICAg IGhlaWdodDogaGVpZ2h0LAotICAgIHBhZGRpbmc6IFsxMCwgMCwgMTAsIDBdLAotICAgIGZvY3Vz OiB7Ci0gICAgICBhbHBoYTogMC4zLAotICAgIH0sCi0gICAgY3Vyc29yOiB7Ci0gICAgICB5OiBm YWxzZSwKLSAgICAgIGRyYWc6IHsKLSAgICAgICAgc2V0U2NhbGU6IGZhbHNlLAotICAgICAgfQot ICAgIH0sCi0gICAgc2VyaWVzOiBbCisgIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdXNlTWVtbygo KT0+IHsKKyAgICBjb25zdCBzZXJpZXMgPSBbCiAgICAgICB7fSwKLSAgICAgIC4uLihkYXRhLmRh dGFzZXRzPy5tYXAoKGRhdHVtKT0+KHsKKyAgICAgIC4uLihkYXRhLmRhdGFzZXRzPy5tYXAoKGRh dHVtLCBpbmRleCkgPT4gKHsKICAgICAgICAgbGFiZWw6IGRhdHVtLmxhYmVsLAogICAgICAgICBz dHJva2U6IGRhdHVtLmJvcmRlckNvbG9yLAogICAgICAgICB3aWR0aDogb3B0aW9ucy5saW5lQm9y ZGVyV2lkdGggPz8gMSwKLSAgICAgICAgcG9pbnRzOiB7IHNob3c6IG9wdGlvbnMuc2hvd0RhdGFQ b2ludHMgPz8gZmFsc2UsIHNpemU6IGRhdHVtLnBvaW50SGl0UmFkaXVzKjIgfQotICAgICAgfSkp Pz97fSkKLSAgICBdLAotICAgIHNjYWxlczogewotICAgICAgeDogewotICAgICAgICB0aW1lOiBm YWxzZSwKLSAgICAgIH0KLSAgICB9LAotICAgIGF4ZXM6IFsKKyAgICAgICAgc2NhbGU6IHNob3dT ZWNvbmRBeGlzICYmIChpbmRleCA9PT0gMSkgPyAneTEnIDogJ3knLAorICAgICAgICBwb2ludHM6 IHsgc2hvdzogb3B0aW9ucy5zaG93RGF0YVBvaW50cyA/PyBmYWxzZSwgc2l6ZTogZGF0dW0ucG9p bnRIaXRSYWRpdXMgKiAyIH0sCisgICAgICB9KSkgPz8gW10pLAorICAgIF07CisKKyAgICBjb25z dCBheGVzID0gWwogICAgICAgewogICAgICAgICBzaG93OiBmYWxzZSwKICAgICAgICAgc3Ryb2tl OiB0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwKICAgICAgIH0sCi0gICAgICB7CisgICAgXTsK KworICAgIGlmKHNob3dTZWNvbmRBeGlzKXsKKyAgICAgIGF4ZXMucHVzaCh7CisgICAgICAgIHNj YWxlOiAneScsCiAgICAgICAgIGdyaWQ6IHsKICAgICAgICAgICBzdHJva2U6IHRoZW1lLm90aGVy VmFycy5ib3JkZXJDb2xvciwKICAgICAgICAgICB3aWR0aDogMC41LApAQCAtMTA4LDExICs5Niwx MDQgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RyZWFtaW5nQ2hhcnQoe3hSYW5nZT03NSwg ZGF0YSwgb3B0aW9uc30pIHsKICAgICAgICAgICAgIGlmKHNpemUgPCA0MCkgc2l6ZSA9IDQwOwog ICAgICAgICAgIH0KICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgfSwKKyAgICAgICAg Ly8geS1heGlzIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgdmFsdWVzOiAoc2VsZiwgdGlja3MpID0+ IHsKKyAgICAgICAgICAvLyBGb3JtYXQgdGhlIGxhYmVsCisgICAgICAgICAgcmV0dXJuIHRpY2tz Lm1hcCgodmFsdWUpID0+IHsKKyAgICAgICAgICAgIGlmKHZhbHVlIDwgMSl7CisgICAgICAgICAg ICAgIHJldHVybiB2YWx1ZSsnJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IHN1 ZmZpeGVzID0gWycnLCAnaycsICdNJywgJ0InLCAnVCddOworICAgICAgICAgICAgY29uc3Qgc3Vm Zml4TnVtID0gTWF0aC5mbG9vcihNYXRoLmxvZzEwKHZhbHVlKSAvIDMpOworICAgICAgICAgICAg Y29uc3Qgc2hvcnRWYWx1ZSA9ICh2YWx1ZSAvIE1hdGgucG93KDEwMDAsIHN1ZmZpeE51bSkpLnRv Rml4ZWQoMSk7CisgICAgICAgICAgICByZXR1cm4gc2hvcnRWYWx1ZSArIHN1ZmZpeGVzW3N1ZmZp eE51bV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgYXhlcy5w dXNoKHsKKyAgICAgICAgc2NhbGU6ICd5MScsCisgICAgICAgIHNpZGU6IDEsCisgICAgICAgIHN0 cm9rZTogdGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksCisgICAgICAgIGdyaWQ6IHtzaG93OiBm YWxzZX0sCisgICAgICAgIHNpemU6IGZ1bmN0aW9uKF9vYmosIHZhbHVlcykgeworICAgICAgICAg IGxldCBzaXplID0gNDA7CisgICAgICAgICAgaWYodmFsdWVzPy5sZW5ndGggPiAwKSB7CisgICAg ICAgICAgICBzaXplID0gdmFsdWVzW3ZhbHVlcy5sZW5ndGgtMV0ubGVuZ3RoKjEyOworICAgICAg ICAgICAgaWYoc2l6ZSA8IDQwKSBzaXplID0gNDA7CisgICAgICAgICAgfQorICAgICAgICAgIHJl dHVybiBzaXplOworICAgICAgICB9LAorICAgICAgICAvLyB5LWF4aXMgY29uZmlndXJhdGlvbgor ICAgICAgICB2YWx1ZXM6IChzZWxmLCB0aWNrcykgPT4geworICAgICAgICAgIC8vIEZvcm1hdCB0 aGUgbGFiZWwKKyAgICAgICAgICByZXR1cm4gdGlja3MubWFwKCh2YWx1ZSkgPT4geworICAgICAg ICAgICAgaWYodmFsdWUgPCAxKXsKKyAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlKycnOworICAg ICAgICAgICAgfQorICAgICAgICAgICAgY29uc3Qgc3VmZml4ZXMgPSBbJycsICdrJywgJ00nLCAn QicsICdUJ107CisgICAgICAgICAgICBjb25zdCBzdWZmaXhOdW0gPSBNYXRoLmZsb29yKE1hdGgu bG9nMTAodmFsdWUpIC8gMyk7CisgICAgICAgICAgICBjb25zdCBzaG9ydFZhbHVlID0gKHZhbHVl IC8gTWF0aC5wb3coMTAwMCwgc3VmZml4TnVtKSkudG9GaXhlZCgxKTsKKyAgICAgICAgICAgIHJl dHVybiBzaG9ydFZhbHVlICsgc3VmZml4ZXNbc3VmZml4TnVtXTsKKyAgICAgICAgICB9KTsKICAg ICAgICAgfQotICAgICAgfQotICAgIF0sCi0gICAgcGx1Z2luczogb3B0aW9ucy5zaG93VG9vbHRp cCA/IFt0b29sdGlwUGx1Z2luKGRhdGEucmVmcmVzaFJhdGUpXSA6IFtdLAotICB9KSwgW2RhdGEu cmVmcmVzaFJhdGUsIGRhdGE/LmRhdGFzZXRzPy5sZW5ndGgsIHdpZHRoLCBoZWlnaHQsIG9wdGlv bnNdKTsKKyAgICAgIH0pOworICAgIH0gZWxzZXsKKyAgICAgIGF4ZXMucHVzaCh7CisgICAgICAg IHNjYWxlOiAneScsCisgICAgICAgIGdyaWQ6IHsKKyAgICAgICAgICBzdHJva2U6IHRoZW1lLm90 aGVyVmFycy5ib3JkZXJDb2xvciwKKyAgICAgICAgICB3aWR0aDogMC41LAorICAgICAgICB9LAor ICAgICAgICBzdHJva2U6IHRoZW1lLnBhbGV0dGUudGV4dC5wcmltYXJ5LAorICAgICAgICBzaXpl OiBmdW5jdGlvbihfb2JqLCB2YWx1ZXMpIHsKKyAgICAgICAgICBsZXQgc2l6ZSA9IDQwOworICAg ICAgICAgIGlmKHZhbHVlcz8ubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgc2l6ZSA9IHZhbHVl c1t2YWx1ZXMubGVuZ3RoLTFdLmxlbmd0aCoxMjsKKyAgICAgICAgICAgIGlmKHNpemUgPCA0MCkg c2l6ZSA9IDQwOworICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAg fSwKKyAgICAgICAgLy8geS1heGlzIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgdmFsdWVzOiAoc2Vs ZiwgdGlja3MpID0+IHsKKyAgICAgICAgICAvLyBGb3JtYXQgdGhlIGxhYmVsCisgICAgICAgICAg cmV0dXJuIHRpY2tzLm1hcCgodmFsdWUpID0+IHsKKyAgICAgICAgICAgIGlmKHZhbHVlIDwgMSl7 CisgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSsnJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAg ICAgIGNvbnN0IHN1ZmZpeGVzID0gWycnLCAnaycsICdNJywgJ0InLCAnVCddOworICAgICAgICAg ICAgY29uc3Qgc3VmZml4TnVtID0gTWF0aC5mbG9vcihNYXRoLmxvZzEwKHZhbHVlKSAvIDMpOwor ICAgICAgICAgICAgY29uc3Qgc2hvcnRWYWx1ZSA9ICh2YWx1ZSAvIE1hdGgucG93KDEwMDAsIHN1 ZmZpeE51bSkpLnRvRml4ZWQoMSk7CisgICAgICAgICAgICByZXR1cm4gc2hvcnRWYWx1ZSArIHN1 ZmZpeGVzW3N1ZmZpeE51bV07CisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgIH0pOwor ICAgIH0KKworICAgIHJldHVybiB7CisgICAgICB0aXRsZTogJycsCisgICAgICB3aWR0aDogd2lk dGgsCisgICAgICBoZWlnaHQ6IGhlaWdodCwKKyAgICAgIHBhZGRpbmc6IFsxMCwgMCwgMTAsIDBd LAorICAgICAgZm9jdXM6IHsKKyAgICAgICAgYWxwaGE6IDAuMywKKyAgICAgIH0sCisgICAgICBj dXJzb3I6IHsKKyAgICAgICAgeTogZmFsc2UsCisgICAgICAgIGRyYWc6IHsKKyAgICAgICAgICBz ZXRTY2FsZTogZmFsc2UsCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBzZXJpZXM6IHNlcmll cywKKyAgICAgIHNjYWxlczogeworICAgICAgICB4OiB7CisgICAgICAgICAgdGltZTogZmFsc2Us CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgICBheGVzOiBheGVzLAorICAgICAgcGx1Z2luczog b3B0aW9ucy5zaG93VG9vbHRpcCA/IFt0b29sdGlwUGx1Z2luKGRhdGEucmVmcmVzaFJhdGUpXSA6 IFtdLAorICAgIH07CisgIH0sIFtkYXRhLnJlZnJlc2hSYXRlLCBkYXRhPy5kYXRhc2V0cz8ubGVu Z3RoLCB3aWR0aCwgaGVpZ2h0LCBvcHRpb25zXSk7CiAKICAgY29uc3QgaW5pdGlhbFN0YXRlID0g WwogICAgIEFycmF5LmZyb20obmV3IEFycmF5KHhSYW5nZSkua2V5cygpKSwKQEAgLTE0MCw0ICsy MjEsNSBAQCBTdHJlYW1pbmdDaGFydC5wcm9wVHlwZXMgPSB7CiAgIHhSYW5nZTogUHJvcFR5cGVz Lm51bWJlci5pc1JlcXVpcmVkLAogICBkYXRhOiBwcm9wVHlwZURhdGEuaXNSZXF1aXJlZCwKICAg b3B0aW9uczogUHJvcFR5cGVzLm9iamVjdCwKKyAgc2hvd1NlY29uZEF4aXM6IFByb3BUeXBlcy5i b29sLAogfTsKLS0gCjIuNDEuMC53aW5kb3dzLjEKCgpGcm9tIDc4OTNiNTBkMWI2NDJlYzljOGI2 NmJiNjhmYjhkMTkxNDVhNmI0N2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IFNhaGls IEhhcnBhbCA8c2FudG9zaC4yQGlpdGouYWMuaW4+CkRhdGU6IFRodSwgMTcgQXVnIDIwMjMgMTU6 MzE6NTkgKzA1MzAKU3ViamVjdDogW1BBVENIIDIvM10gSGFuZGxlIG51bGwgdmFsdWVzIGZvciBD UFUgJiBtZW1vcnkgdXNhZ2UKCi0tLQogd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9T eXN0ZW1TdGF0cy9DUFUuanN4ICAgIHwgNCArKysrCiB3ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3Rh dGljL2pzL1N5c3RlbVN0YXRzL01lbW9yeS5qc3ggfCA0ICsrKysKIDIgZmlsZXMgY2hhbmdlZCwg OCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRp Yy9qcy9TeXN0ZW1TdGF0cy9DUFUuanN4IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9q cy9TeXN0ZW1TdGF0cy9DUFUuanN4CmluZGV4IDI3NjAzNGQ5ZS4uYTYzNDE5NTRmIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL0NQVS5qc3gK KysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9DUFUuanN4 CkBAIC01NCw2ICs1NCwxMCBAQCBjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkg PT4gKHsKIH0pKTsKIAogZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzKSB7CisgIGlm IChieXRlcyA9PT0gbnVsbCkgeworICAgIHJldHVybiAnbnVsbCc7CisgIH0KKwogICBjb25zdCB1 bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQiddOwogICBsZXQgdW5pdEluZGV4ID0g MDsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1T dGF0cy9NZW1vcnkuanN4IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1T dGF0cy9NZW1vcnkuanN4CmluZGV4IDc0ZThmNDI0Yi4uOWQzMjc5NWRkIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL01lbW9yeS5qc3gKKysr IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4 CkBAIC00NSw2ICs0NSwxMCBAQCBjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkg PT4gKHsKIH0pKTsKIAogZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzKSB7CisgIGlm IChieXRlcyA9PT0gbnVsbCkgeworICAgIHJldHVybiAnbnVsbCc7CisgIH0KKwogICBjb25zdCB1 bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQiddOwogICBsZXQgdW5pdEluZGV4ID0g MDsKIAotLSAKMi40MS4wLndpbmRvd3MuMQoKCkZyb20gOGQ4NzE3ZjhmYmI5MzQ1YWM1MWMzNTky Y2RiNmMxZjRmODY3YWE3ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogU2FoaWwgSGFy cGFsIDxzYW50b3NoLjJAaWl0ai5hYy5pbj4KRGF0ZTogRnJpLCAyNSBBdWcgMjAyMyAxMzoxMDox MCArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMy8zXSBSZXZpZXctMiBjaGFuZ2VzCgotLS0KIHdlYi9w Z2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvRGFzaGJvYXJkLmpzeCB8ICAgMyArCiAuLi4vZGFz aGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9DUFUuanN4ICAgfCAgIDYgKy0KIC4uLi9zdGF0 aWMvanMvU3lzdGVtU3RhdHMvTWVtb3J5LmpzeCAgICAgICAgICB8ICAgNCArLQogLi4uL3N0YXRp Yy9qcy9TeXN0ZW1TdGF0cy9TdG9yYWdlLmpzeCAgICAgICAgIHwgMjY3ICsrKysrKysrKysrKysr KystLQogLi4uL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9TdW1tYXJ5LmpzeCAgICAgICAgIHwgIDEy ICstCiAuLi4vc3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsICAgICAgICAgfCAgMTMg KwogLi4uL2pzL2NvbXBvbmVudHMvUGdDaGFydC9TdHJlYW1pbmdDaGFydC5qc3ggIHwgIDE1ICst CiA3IGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNlcnRpb25zKCspLCAzNyBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0Rhc2hib2FyZC5qc3gg Yi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL0Rhc2hib2FyZC5qc3gKaW5kZXggZTZh ZmVmZjA3Li4yOTQ0YTRlODMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvRGFzaGJvYXJkLmpzeAorKysgYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pz L0Rhc2hib2FyZC5qc3gKQEAgLTgxOCw2ICs4MTgsOCBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlv biBEYXNoYm9hcmQoewogICAgICAgICAgICAgY29uc3QgZGF0YSA9IHJlcy5kYXRhOwogICAgICAg ICAgICAgaWYoZGF0YVsnc3NfcHJlc2VudCddID09IGZhbHNlKXsKICAgICAgICAgICAgICAgc2V0 U3NNc2coZ2V0dGV4dCgnU3lzdGVtIHN0YXRzIGV4dGVuc2lvbiBpcyBub3QgaW5zdGFsbGVkLiBZ b3UgY2FuIGluc3RhbGwgdGhlIGV4dGVuc2lvbiBpbiBhIGRhdGFiYXNlIHVzaW5nIHRoZSAiQ1JF QVRFIEVYVEVOU0lPTiBzeXN0ZW1fc3RhdHM7IiBTUUwgY29tbWFuZC4gUmVsb2FkIHRoZSBwZ0Fk bWluIG9uY2UgeW91IGluc3RhbGxlZC4nKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICBzZXRTc01zZyhnZXR0ZXh0KCcnKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg fSkKICAgICAgICAgICAuY2F0Y2goKCkgPT4gewpAQCAtMTAzNCw2ICsxMDM2LDcgQEAgZXhwb3J0 IGRlZmF1bHQgZnVuY3Rpb24gRGFzaGJvYXJkKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkaWQ9e2RpZH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlVmlzaWJsZT17cHJv cHMucGFuZWxWaXNpYmxlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlckNvbm5l Y3RlZD17cHJvcHMuc2VydmVyQ29ubmVjdGVkfQorICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN5c3RlbVN0YXRzVGFiVmFsPXtzeXN0ZW1TdGF0c1RhYlZhbH0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgLz4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGFiUGFuZWw+CiAgICAgICAg ICAgICAgICAgICAgICAgPC8+IDoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9z dGF0aWMvanMvU3lzdGVtU3RhdHMvQ1BVLmpzeCBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvU3lzdGVtU3RhdHMvQ1BVLmpzeAppbmRleCBhNjM0MTk1NGYuLmU2Yjc2Njc2NyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9DUFUu anN4CisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3lzdGVtU3RhdHMvQ1BV LmpzeApAQCAtMzYsMTMgKzM2LDExIEBAIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRo ZW1lKSA9PiAoewogICB9LAogICBjb250YWluZXI6IHsKICAgICBoZWlnaHQ6ICdhdXRvJywKLSAg ICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlbMjAwXSwKICAgICBwYWRkaW5nOiAnMTBw eCcsCiAgICAgbWFyZ2luQm90dG9tOiAnMzBweCcsCiAgIH0sCiAgIGZpeGVkQ29udGFpbmVyOiB7 CiAgICAgaGVpZ2h0OiAnNTc3cHgnLAotICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUuZ3Jl eVsyMDBdLAogICAgIHBhZGRpbmc6ICcxMHB4JywKICAgICBtYXJnaW5Cb3R0b206ICczMHB4JywK ICAgfSwKQEAgLTMzOCwxMyArMzM2LDEzIEBAIGV4cG9ydCBmdW5jdGlvbiBDUFVXcmFwcGVyKHBy b3BzKSB7CiAgICAgPD4KICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05h bWU9e2NsYXNzZXMuY29udGFpbmVyfT4KICAgICAgICAgPEdyaWQgaXRlbSBtZD17Nn0gc209ezEy fT4KLSAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9Pntn ZXR0ZXh0KCdDUFUgVXNhZ2UgKCknKX08L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17 Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdDUFUgdXNhZ2UnKX08L2Rpdj4KICAg ICAgICAgICA8Q2hhcnRDb250YWluZXIgaWQ9J2N1LWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9 IGRhdGFzZXRzPXtwcm9wcy5jcHVVc2FnZUluZm8uZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMu ZXJyb3JNc2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KICAgICAgICAgICAgIDxTdHJlYW1pbmdD aGFydCBkYXRhPXtwcm9wcy5jcHVVc2FnZUluZm99IGRhdGFQb2ludFNpemU9e0RBVEFfUE9JTlRf U0laRX0geFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSAvPgogICAgICAg ICAgIDwvQ2hhcnRDb250YWluZXI+CiAgICAgICAgIDwvR3JpZD4KICAgICAgICAgPEdyaWQgaXRl bSBtZD17Nn0gc209ezEyfT4KLSAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250 YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdMb2FkIEF2ZXJhZ2UnKX08L2Rpdj4KKyAgICAgICAgICA8 ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdMb2FkIGF2 ZXJhZ2UnKX08L2Rpdj4KICAgICAgICAgICA8Q2hhcnRDb250YWluZXIgaWQ9J2xhLWdyYXBoJyB0 aXRsZT17Z2V0dGV4dCgnJyl9IGRhdGFzZXRzPXtwcm9wcy5sb2FkQXZnSW5mby5kYXRhc2V0c30g IGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtwcm9wcy5pc1Rlc3R9PgogICAgICAg ICAgICAgPFN0cmVhbWluZ0NoYXJ0IGRhdGE9e3Byb3BzLmxvYWRBdmdJbmZvfSBkYXRhUG9pbnRT aXplPXtEQVRBX1BPSU5UX1NJWkV9IHhSYW5nZT17WF9BWElTX0xFTkdUSH0gb3B0aW9ucz17b3B0 aW9uc30gLz4KICAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4IGIvd2ViL3Bn YWRtaW4vZGFzaGJvYXJkL3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4CmluZGV4IDlk MzI3OTVkZC4uOGU4ZTBlYjg5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3Rh dGljL2pzL1N5c3RlbVN0YXRzL01lbW9yeS5qc3gKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJk L3N0YXRpYy9qcy9TeXN0ZW1TdGF0cy9NZW1vcnkuanN4CkBAIC0yNywxMyArMjcsMTEgQEAgY29u c3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpID0+ICh7CiAgIH0sCiAgIGNvbnRhaW5l cjogewogICAgIGhlaWdodDogJ2F1dG8nLAotICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUu Z3JleVsyMDBdLAogICAgIHBhZGRpbmc6ICcxMHB4JywKICAgICBtYXJnaW5Cb3R0b206ICczMHB4 JywKICAgfSwKICAgZml4ZWRDb250YWluZXI6IHsKICAgICBoZWlnaHQ6ICc1NzdweCcsCi0gICAg YmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5ncmV5WzIwMF0sCiAgICAgcGFkZGluZzogJzEwcHgn LAogICAgIG1hcmdpbkJvdHRvbTogJzMwcHgnLAogICB9LApAQCAtMzM5LDcgKzMzNyw3IEBAIGV4 cG9ydCBmdW5jdGlvbiBNZW1vcnlXcmFwcGVyKHByb3BzKSB7CiAgICAgICAgICAgPC9DaGFydENv bnRhaW5lcj4KICAgICAgICAgPC9HcmlkPgogICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fSBzbT17 MTJ9PgotICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lckhlYWRlcn0+ e2dldHRleHQoJ1N3YXAgTWVtb3J5Jyl9PC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9 e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnU3dhcCBtZW1vcnknKX08L2Rpdj4K ICAgICAgICAgICA8Q2hhcnRDb250YWluZXIgaWQ9J3NtLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgn Jyl9IGRhdGFzZXRzPXtwcm9wcy5zd2FwTWVtb3J5VXNhZ2VJbmZvLmRhdGFzZXRzfSAgZXJyb3JN c2c9e3Byb3BzLmVycm9yTXNnfSBpc1Rlc3Q9e3Byb3BzLmlzVGVzdH0+CiAgICAgICAgICAgICA8 U3RyZWFtaW5nQ2hhcnQgZGF0YT17cHJvcHMuc3dhcE1lbW9yeVVzYWdlSW5mb30gZGF0YVBvaW50 U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5HVEh9IG9wdGlvbnM9e29w dGlvbnN9IC8+CiAgICAgICAgICAgPC9DaGFydENvbnRhaW5lcj4KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3lzdGVtU3RhdHMvU3RvcmFnZS5qc3ggYi93ZWIv cGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRzL1N0b3JhZ2UuanN4CmluZGV4 IDJhY2IyMTdiZC4uOWRiMDhiMDkzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQv c3RhdGljL2pzL1N5c3RlbVN0YXRzL1N0b3JhZ2UuanN4CisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hi b2FyZC9zdGF0aWMvanMvU3lzdGVtU3RhdHMvU3RvcmFnZS5qc3gKQEAgLTEwLDYgKzEwLDcgQEAg aW1wb3J0IHsgREFUQV9QT0lOVF9TSVpFIH0gZnJvbSAnc291cmNlcy9jaGFydGpzJzsKIGltcG9y dCBTdHJlYW1pbmdDaGFydCBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9Q Z0NoYXJ0L1N0cmVhbWluZ0NoYXJ0JzsKIGltcG9ydCB7dXNlSW50ZXJ2YWwsIHVzZVByZXZpb3Vz fSBmcm9tICdzb3VyY2VzL2N1c3RvbV9ob29rcyc7CiBpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3Mn OworaW1wb3J0IHsgQmFyQ2hhcnQgfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvY2hhcnRq cyc7CiAKIGV4cG9ydCBjb25zdCBYX0FYSVNfTEVOR1RIID0gNzU7CiAKQEAgLTI2LDIyICsyNywy NCBAQCBjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSkgPT4gKHsKICAgfSwKICAg Y29udGFpbmVyOiB7CiAgICAgaGVpZ2h0OiAnYXV0bycsCi0gICAgYmFja2dyb3VuZDogdGhlbWUu cGFsZXR0ZS5ncmV5WzIwMF0sCiAgICAgcGFkZGluZzogJzEwcHgnLAotICAgIG1hcmdpbkJvdHRv bTogJzMwcHgnLAorICAgIG1hcmdpbkJvdHRvbTogJzE1cHgnLAogICB9LAogICBpb0Rpc2tDb250 YWluZXI6IHsKICAgICBoZWlnaHQ6ICdhdXRvJywKLSAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxl dHRlLmdyZXlbMjAwXSwKICAgICBwYWRkaW5nOiAnMTBweCcsCiAgIH0sCiAgIGZpeGVkQ29udGFp bmVyOiB7CiAgICAgaGVpZ2h0OiAnNTc3cHgnLAotICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0 dGUuZ3JleVsyMDBdLAogICAgIHBhZGRpbmc6ICcxMHB4JywKICAgICBtYXJnaW5Cb3R0b206ICcz MHB4JywKKyAgICBvdmVyZmxvd1g6ICdhdXRvJywKICAgfSwKICAgY29udGFpbmVySGVhZGVyOiB7 CisgICAgaGVpZ2h0OiAnYXV0bycsCisgICAgcGFkZGluZzogJzEwcHgnLAorICB9LAorICBjb250 YWluZXJIZWFkZXJUZXh0OiB7CiAgICAgZm9udFNpemU6ICcxNnB4JywKICAgICBmb250V2VpZ2h0 OiAnYm9sZCcsCiAgICAgbWFyZ2luQm90dG9tOiAnNXB4JywKQEAgLTUwLDkgKzUzLDM3IEBAIGNv bnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKSA9PiAoewogICAgIGZvbnRTaXplOiAn MTRweCcsCiAgICAgZm9udFdlaWdodDogJ2JvbGQnLAogICAgIG1hcmdpbkJvdHRvbTogJzVweCcs Ci0gIH0KKyAgfSwKKyAgdGFibGU6IHsKKyAgICB3aWR0aDogJzEwMCUnLAorICAgIGJhY2tncm91 bmRDb2xvcjogdGhlbWUub3RoZXJWYXJzLnRhYmxlQmcsCisgICAgYm9yZGVyOiAnMXB4IHNvbGlk IHJnYigyMjEsIDIyNCwgMjMwKScsCisgICAgYm9yZGVyQ29sbGFwc2U6ICdjb2xsYXBzZScsCisg ICAgYm9yZGVyUmFkaXVzOiAnNHB4JywKKyAgICBvdmVyZmxvdzogJ2hpZGRlbicsCisgIH0sCisg IHRhYmxlVmFsOiB7CisgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYigyMjEsIDIyNCwgMjMwKSAh aW1wb3J0YW50JywKKyAgICBwYWRkaW5nOiAnMTBweCAhaW1wb3J0YW50JywKKyAgfSwKIH0pKTsK IAorZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEJ5dGVzKGJ5dGVzKSB7CisgIGlmIChieXRlcyA9PT0g bnVsbCkgeworICAgIHJldHVybiAnbnVsbCc7CisgIH0KKworICBjb25zdCB1bml0cyA9IFsnQics ICdLQicsICdNQicsICdHQicsICdUQiddOworICBsZXQgdW5pdEluZGV4ID0gMDsKKworICB3aGls ZSAoYnl0ZXMgPj0gMTAyNCAmJiB1bml0SW5kZXggPCB1bml0cy5sZW5ndGggLSAxKSB7CisgICAg Ynl0ZXMgLz0gMTAyNDsKKyAgICB1bml0SW5kZXgrKzsKKyAgfQorCisgIHJldHVybiBgJHtieXRl cy50b0ZpeGVkKDIpfSAke3VuaXRzW3VuaXRJbmRleF19YDsKK30KKwogZXhwb3J0IGZ1bmN0aW9u IHRyYW5zZm9ybURhdGEobGFiZWxzLCByZWZyZXNoUmF0ZSkgewogICBjb25zdCBjb2xvcnMgPSBb JyNGRjYzODQnLCcjMzZBMkVCJywnI0ZGQ0U1NicsJyM0QkMwQzAnLCcjOTk2NkZGJywnI0ZGOUY0 MCcsJyM4RDZFNjMnLCcjMjE5NkYzJywnI0ZGRUIzQicsJyM5QzI3QjAnLCcjMDBCQ0Q0JywnI0NE REMzOSddOwogICBsZXQgZGF0YXNldHMgPSBPYmplY3Qua2V5cyhsYWJlbHMpLm1hcCgobGFiZWws IGkpPT57CkBAIC0xMjAsMTAgKzE1MSw0MyBAQCBjb25zdCBjaGFydHNEZWZhdWx0ID0gewogICAn aW9fc3RhdHMnOiB7fSwKIH07CiAKLWV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN0b3JhZ2Uoe3By ZWZlcmVuY2VzLCBzaWQsIGRpZCwgcGFnZVZpc2libGUsIGVuYWJsZVBvbGw9dHJ1ZX0pIHsKKwor Y29uc3QgRGlza1N0YXRzVGFibGUgPSAocHJvcHMpID0+IHsKKyAgY29uc3QgY2xhc3NlcyA9IHVz ZVN0eWxlcygpOworICBjb25zdCB0YWJsZUhlYWRlciA9IHByb3BzLnRhYmxlSGVhZGVyOworICBj b25zdCBkYXRhID0gcHJvcHMuZGF0YTsKKyAgcmV0dXJuICgKKyAgICA8dGFibGUgY2xhc3NOYW1l PXtjbGFzc2VzLnRhYmxlfT4KKyAgICAgIDx0aGVhZD4KKyAgICAgICAgPHRyPgorICAgICAgICAg IHt0YWJsZUhlYWRlci5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoCisgICAgICAgICAgICA8dGggY2xh c3NOYW1lPXtjbGFzc2VzLnRhYmxlVmFsfSBrZXk9e2luZGV4fT57aXRlbS5IZWFkZXJ9PC90aD4K KyAgICAgICAgICApKX0KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGhlYWQ+CisgICAgICA8dGJv ZHk+CisgICAgICAgIHtkYXRhLm1hcCgoaXRlbSwgaW5kZXgpID0+ICgKKyAgICAgICAgICA8dHIg Y2xhc3NOYW1lPXtjbGFzc2VzLnRhYmxlVmFsfSBrZXk9e2luZGV4fT4KKyAgICAgICAgICAgIHt0 YWJsZUhlYWRlci5tYXAoKGhlYWRlciwgaWQpID0+ICgKKyAgICAgICAgICAgICAgPHRkIGNsYXNz TmFtZT17Y2xhc3Nlcy50YWJsZVZhbH0ga2V5PXtoZWFkZXIuYWNjZXNzb3IrJy0nK2lkfT57aXRl bVtoZWFkZXIuYWNjZXNzb3JdfTwvdGQ+CisgICAgICAgICAgICApKX0KKyAgICAgICAgICA8L3Ry PgorICAgICAgICApKX0KKyAgICAgIDwvdGJvZHk+CisgICAgPC90YWJsZT4KKyAgKTsKK307CisK K0Rpc2tTdGF0c1RhYmxlLnByb3BUeXBlcyA9IHsKKyAgZGF0YTogUHJvcFR5cGVzLmFycmF5Lmlz UmVxdWlyZWQsCisgIHRhYmxlSGVhZGVyOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCwKK307 CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN0b3JhZ2Uoe3ByZWZlcmVuY2VzLCBzaWQsIGRp ZCwgcGFnZVZpc2libGUsIGVuYWJsZVBvbGw9dHJ1ZSwgc3lzdGVtU3RhdHNUYWJWYWx9KSB7CiAg IGNvbnN0IHJlZnJlc2hPbiA9IHVzZVJlZihudWxsKTsKICAgY29uc3QgcHJldlByZWZlcm5jZXMg PSB1c2VQcmV2aW91cyhwcmVmZXJlbmNlcyk7CiAKKyAgY29uc3QgW2Rpc2tTdGF0cywgc2V0RGlz a1N0YXRzXSA9IHVzZVN0YXRlKFtdKTsKICAgY29uc3QgW2lvSW5mbywgaW9JbmZvUmVkdWNlXSA9 IHVzZVJlZHVjZXIoaW9TdGF0c1JlZHVjZXIsIGNoYXJ0c0RlZmF1bHRbJ2lvX3N0YXRzJ10pOwog CiAgIGNvbnN0IFssIHNldENvdW50ZXJEYXRhXSA9IHVzZVN0YXRlKHt9KTsKQEAgLTEzMiw2ICsx OTYsNDkgQEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcmFnZSh7cHJlZmVyZW5jZXMsIHNp ZCwgZGlkLCBwYWdlVmlzaWJsZSwgZW5hYmxlUG9sbD0KICAgY29uc3QgW2Vycm9yTXNnLCBzZXRF cnJvck1zZ10gPSB1c2VTdGF0ZShudWxsKTsKICAgY29uc3QgW2NoYXJ0RHJhd25PbmNlLCBzZXRD aGFydERyYXduT25jZV0gPSB1c2VTdGF0ZShmYWxzZSk7CiAKKyAgY29uc3QgdGFibGVIZWFkZXIg PSBbCisgICAgeworICAgICAgSGVhZGVyOiAnRmlsZSBzeXN0ZW0nLAorICAgICAgYWNjZXNzb3I6 ICdmaWxlX3N5c3RlbScsCisgICAgfSwKKyAgICB7CisgICAgICBIZWFkZXI6ICdGaWxlIHN5c3Rl bSB0eXBlJywKKyAgICAgIGFjY2Vzc29yOiAnZmlsZV9zeXN0ZW1fdHlwZScsCisgICAgfSwKKyAg ICB7CisgICAgICBIZWFkZXI6ICdNb3VudCBwb2ludCcsCisgICAgICBhY2Nlc3NvcjogJ21vdW50 X3BvaW50JywKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ0RyaXZlIGxldHRlcicsCisg ICAgICBhY2Nlc3NvcjogJ2RyaXZlX2xldHRlcicsCisgICAgfSwKKyAgICB7CisgICAgICBIZWFk ZXI6ICdUb3RhbCBzcGFjZScsCisgICAgICBhY2Nlc3NvcjogJ3RvdGFsX3NwYWNlJywKKyAgICB9 LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ1VzZWQgc3BhY2UnLAorICAgICAgYWNjZXNzb3I6ICd1 c2VkX3NwYWNlJywKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ0ZyZWUgc3BhY2UnLAor ICAgICAgYWNjZXNzb3I6ICdmcmVlX3NwYWNlJywKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRl cjogJ1RvdGFsIGlub2RlcycsCisgICAgICBhY2Nlc3NvcjogJ3RvdGFsX2lub2RlcycsCisgICAg fSwKKyAgICB7CisgICAgICBIZWFkZXI6ICdVc2VkIGlub2RlcycsCisgICAgICBhY2Nlc3Nvcjog J3VzZWRfaW5vZGVzJywKKyAgICB9LAorICAgIHsKKyAgICAgIEhlYWRlcjogJ0ZyZWUgaW5vZGVz JywKKyAgICAgIGFjY2Vzc29yOiAnZnJlZV9pbm9kZXMnLAorICAgIH0sCisgIF07CisKICAgdXNl RWZmZWN0KCgpPT57CiAgICAgbGV0IGNhbGNQb2xsRGVsYXkgPSBmYWxzZTsKICAgICBpZihwcmV2 UHJlZmVybmNlcykgewpAQCAtMTY0LDYgKzI3MSw1MCBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlv biBTdG9yYWdlKHtwcmVmZXJlbmNlcywgc2lkLCBkaWQsIHBhZ2VWaXNpYmxlLCBlbmFibGVQb2xs PQogICAgIH0KICAgfSwgW3BhZ2VWaXNpYmxlXSk7CiAKKyAgdXNlRWZmZWN0KCgpID0+IHsKKyAg ICB0cnkgeworICAgICAgLy8gRmV0Y2ggdGhlIGxhdGVzdCBkYXRhIHBvaW50IGZyb20gdGhlIEFQ SSBlbmRwb2ludAorICAgICAgbGV0IHVybDsKKyAgICAgIHVybCA9IHVybF9mb3IoJ2Rhc2hib2Fy ZC5zeXN0ZW1fc3RhdGlzdGljcycpOworICAgICAgdXJsICs9ICcvJyArIHNpZDsKKyAgICAgIHVy bCArPSBkaWQgPiAwID8gJy8nICsgZGlkIDogJyc7CisgICAgICB1cmwgKz0gJz9jaGFydF9uYW1l cz0nICsgJ2RpX3N0YXRzJzsKKyAgICAgIGF4aW9zLmdldCh1cmwpCisgICAgICAgIC50aGVuKChy ZXMpID0+IHsKKyAgICAgICAgICBsZXQgZGF0YSA9IHJlcy5kYXRhOworICAgICAgICAgIHNldEVy cm9yTXNnKG51bGwpOworICAgICAgICAgIGlmKGRhdGEuaGFzT3duUHJvcGVydHkoJ2RpX3N0YXRz JykpeworICAgICAgICAgICAgbGV0IGRpX2luZm9fbGlzdCA9IFtdOworICAgICAgICAgICAgY29u c3QgZGlfaW5mb19vYmogPSBkYXRhWydkaV9zdGF0cyddOworICAgICAgICAgICAgZm9yIChjb25z dCBrZXkgaW4gZGlfaW5mb19vYmopIHsKKyAgICAgICAgICAgICAgZGlfaW5mb19saXN0LnB1c2go eyAKKyAgICAgICAgICAgICAgICBpY29uOiAnJywgCisgICAgICAgICAgICAgICAgZmlsZV9zeXN0 ZW06IGRpX2luZm9fb2JqW2tleV1bJ2ZpbGVfc3lzdGVtJ10/ZGlfaW5mb19vYmpba2V5XVsnZmls ZV9zeXN0ZW0nXTonbnVsbCcsCisgICAgICAgICAgICAgICAgZmlsZV9zeXN0ZW1fdHlwZTogZGlf aW5mb19vYmpba2V5XVsnZmlsZV9zeXN0ZW1fdHlwZSddP2RpX2luZm9fb2JqW2tleV1bJ2ZpbGVf c3lzdGVtX3R5cGUnXTonbnVsbCcsCisgICAgICAgICAgICAgICAgbW91bnRfcG9pbnQ6IGRpX2lu Zm9fb2JqW2tleV1bJ21vdW50X3BvaW50J10/ZGlfaW5mb19vYmpba2V5XVsnbW91bnRfcG9pbnQn XTonbnVsbCcsCisgICAgICAgICAgICAgICAgZHJpdmVfbGV0dGVyOiBkaV9pbmZvX29ialtrZXld Wydkcml2ZV9sZXR0ZXInXT9kaV9pbmZvX29ialtrZXldWydkcml2ZV9sZXR0ZXInXTonbnVsbCcs CisgICAgICAgICAgICAgICAgdG90YWxfc3BhY2U6IGRpX2luZm9fb2JqW2tleV1bJ3RvdGFsX3Nw YWNlJ10/Zm9ybWF0Qnl0ZXMoZGlfaW5mb19vYmpba2V5XVsndG90YWxfc3BhY2UnXSk6J251bGwn LAorICAgICAgICAgICAgICAgIHVzZWRfc3BhY2U6IGRpX2luZm9fb2JqW2tleV1bJ3VzZWRfc3Bh Y2UnXT9mb3JtYXRCeXRlcyhkaV9pbmZvX29ialtrZXldWyd1c2VkX3NwYWNlJ10pOidudWxsJywK KyAgICAgICAgICAgICAgICBmcmVlX3NwYWNlOiBkaV9pbmZvX29ialtrZXldWydmcmVlX3NwYWNl J10/Zm9ybWF0Qnl0ZXMoZGlfaW5mb19vYmpba2V5XVsnZnJlZV9zcGFjZSddKTonbnVsbCcsCisg ICAgICAgICAgICAgICAgdG90YWxfaW5vZGVzOiBkaV9pbmZvX29ialtrZXldWyd0b3RhbF9pbm9k ZXMnXT9kaV9pbmZvX29ialtrZXldWyd0b3RhbF9pbm9kZXMnXTonbnVsbCcsCisgICAgICAgICAg ICAgICAgdXNlZF9pbm9kZXM6IGRpX2luZm9fb2JqW2tleV1bJ3VzZWRfaW5vZGVzJ10/ZGlfaW5m b19vYmpba2V5XVsndXNlZF9pbm9kZXMnXTonbnVsbCcsCisgICAgICAgICAgICAgICAgZnJlZV9p bm9kZXM6IGRpX2luZm9fb2JqW2tleV1bJ2ZyZWVfaW5vZGVzJ10/ZGlfaW5mb19vYmpba2V5XVsn ZnJlZV9pbm9kZXMnXTonbnVsbCcsCisgICAgICAgICAgICAgICAgdG90YWxfc3BhY2VfYWN0dWFs OiBkaV9pbmZvX29ialtrZXldWyd0b3RhbF9zcGFjZSddP2RpX2luZm9fb2JqW2tleV1bJ3RvdGFs X3NwYWNlJ106bnVsbCwKKyAgICAgICAgICAgICAgICB1c2VkX3NwYWNlX2FjdHVhbDogZGlfaW5m b19vYmpba2V5XVsndXNlZF9zcGFjZSddP2RpX2luZm9fb2JqW2tleV1bJ3VzZWRfc3BhY2UnXTpu dWxsLAorICAgICAgICAgICAgICAgIGZyZWVfc3BhY2VfYWN0dWFsOiBkaV9pbmZvX29ialtrZXld WydmcmVlX3NwYWNlJ10/ZGlfaW5mb19vYmpba2V5XVsnZnJlZV9zcGFjZSddOm51bGwsCisgICAg ICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2V0RGlza1N0YXRzKGRp X2luZm9fbGlzdCk7CisgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICAuY2F0Y2goKGVy cm9yKSA9PiB7CisgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgZGF0YTon LCBlcnJvcik7CisgICAgICAgIH0pOworICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICBjb25z b2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBkYXRhOicsIGVycm9yKTsKKyAgICB9CisgIH0sIFtz eXN0ZW1TdGF0c1RhYlZhbCwgc2lkLCBkaWQsIGVuYWJsZVBvbGwsIHBhZ2VWaXNpYmxlXSk7CisK ICAgdXNlSW50ZXJ2YWwoKCk9PnsKICAgICBjb25zdCBjdXJyRXBvY2ggPSBnZXRFcG9jaCgpOwog ICAgIGlmKHJlZnJlc2hPbi5jdXJyZW50ID09PSBudWxsKSB7CkBAIC0yNTgsNiArNDA5LDggQEAg ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvcmFnZSh7cHJlZmVyZW5jZXMsIHNpZCwgZGlkLCBw YWdlVmlzaWJsZSwgZW5hYmxlUG9sbD0KICAgICAgICAgPFN0b3JhZ2VXcmFwcGVyCiAgICAgICAg ICAgaW9JbmZvPXtpb0luZm99CiAgICAgICAgICAgaW9SZWZyZXNoUmF0ZT17cHJlZmVyZW5jZXNb J2lvX3N0YXRzX3JlZnJlc2gnXX0KKyAgICAgICAgICBkaXNrU3RhdHM9e2Rpc2tTdGF0c30KKyAg ICAgICAgICB0YWJsZUhlYWRlcj17dGFibGVIZWFkZXJ9CiAgICAgICAgICAgZXJyb3JNc2c9e2Vy cm9yTXNnfQogICAgICAgICAgIHNob3dUb29sdGlwPXtwcmVmZXJlbmNlc1snZ3JhcGhfbW91c2Vf dHJhY2snXX0KICAgICAgICAgICBzaG93RGF0YVBvaW50cz17cHJlZmVyZW5jZXNbJ2dyYXBoX2Rh dGFfcG9pbnRzJ119CkBAIC0yNzYsNiArNDI5LDcgQEAgU3RvcmFnZS5wcm9wVHlwZXMgPSB7CiAg IGRpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLCBQ cm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRdKSwKICAgcGFnZVZpc2libGU6IFByb3BUeXBlcy5i b29sLAogICBlbmFibGVQb2xsOiBQcm9wVHlwZXMuYm9vbCwKKyAgc3lzdGVtU3RhdHNUYWJWYWw6 IFByb3BUeXBlcy5udW1iZXIsCiB9OwogCiBleHBvcnQgZnVuY3Rpb24gU3RvcmFnZVdyYXBwZXIo cHJvcHMpIHsKQEAgLTI4OSwyNSArNDQzLDg4IEBAIGV4cG9ydCBmdW5jdGlvbiBTdG9yYWdlV3Jh cHBlcihwcm9wcykgewogICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcHMuaW9JbmZvKTsK ICAgcmV0dXJuICgKICAgICA8PgotICAgICAge2tleXMubWFwKChrZXksIGluZGV4KSA9PiAoCi0g ICAgICAgIGluZGV4ICUgMyA9PT0gMCAmJiAoCi0gICAgICAgICAgPEdyaWQga2V5PXtgZGlzay0k e2luZGV4fWB9IGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFp bmVyfT4KLSAgICAgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9 e2NsYXNzZXMuaW9EaXNrQ29udGFpbmVyfT4KLSAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9 e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dChgRGlzayAke01hdGguZmxvb3IoaW5k ZXggLyAzKSArIDF9YCl9PC9kaXY+Ci0gICAgICAgICAgICA8L0dyaWQ+Ci0gICAgICAgICAgICA8 R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2VzLmlvRGlza0NvbnRh aW5lcn0+Ci0gICAgICAgICAgICAgIHtrZXlzLnNsaWNlKGluZGV4LCBpbmRleCArIDMpLm1hcCgo aW5uZXJLZXksIGlubmVyS2V5SW5kZXgpID0+ICgKLSAgICAgICAgICAgICAgICA8R3JpZCBrZXk9 e2Ake2lubmVyS2V5fWB9IGl0ZW0gbWQ9ezR9IHNtPXs2fT4KLSAgICAgICAgICAgICAgICAgIDxk aXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNoYXJ0SGVhZGVyfT57aW5uZXJLZXlJbmRleD09MCA/IGdl dHRleHQoJ0kvTyBPcGVyYXRpb25zIENvdW50Jyk6IGlubmVyS2V5SW5kZXg9PTE/IGdldHRleHQo J0RhdGEgVHJhbnNmZXIgKEJ5dGVzKScpOmdldHRleHQoJ1RpbWUgU3BlbnQgaW4gSS9PIE9wZXJh dGlvbnMgKE1pbGxpc2Vjb25kcyknKX08L2Rpdj4KLSAgICAgICAgICAgICAgICAgIDxDaGFydENv bnRhaW5lciBpZD17YGlvLWdyYXBoLSR7aW5uZXJLZXl9YH0gdGl0bGU9e2dldHRleHQoJycpfSBk YXRhc2V0cz17dHJhbnNmb3JtRGF0YShwcm9wcy5pb0luZm9baW5uZXJLZXldLCBwcm9wcy5pb1Jl ZnJlc2hSYXRlKS5kYXRhc2V0c30gIGVycm9yTXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtw cm9wcy5pc1Rlc3R9PgotICAgICAgICAgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQgZGF0YT17 dHJhbnNmb3JtRGF0YShwcm9wcy5pb0luZm9baW5uZXJLZXldLCBwcm9wcy5pb1JlZnJlc2hSYXRl KX0gZGF0YVBvaW50U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5HVEh9 IG9wdGlvbnM9e29wdGlvbnN9IC8+Ci0gICAgICAgICAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVy PgotICAgICAgICAgICAgICAgIDwvR3JpZD4KLSAgICAgICAgICAgICAgKSl9Ci0gICAgICAgICAg ICA8L0dyaWQ+CisgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtj bGFzc2VzLmNvbnRhaW5lcn0+CisgICAgICAgIDxHcmlkIGNvbnRhaW5lciBzcGFjaW5nPXsxfSBj bGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT4KKyAgICAgICAgICA8ZGl2IGNsYXNz TmFtZT17Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJUZXh0fT57Z2V0dGV4dCgnRGlzayBpbmZvcm1h dGlvbicpfTwvZGl2PgorICAgICAgICA8L0dyaWQ+CisgICAgICAgIDxHcmlkIGNvbnRhaW5lciBz cGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVyfT4KKyAgICAgICAgICA8RGlz a1N0YXRzVGFibGUgdGFibGVIZWFkZXI9e3Byb3BzLnRhYmxlSGVhZGVyfSBkYXRhPXtwcm9wcy5k aXNrU3RhdHN9IC8+CisgICAgICAgIDwvR3JpZD4KKyAgICAgICAgPEdyaWQgY29udGFpbmVyIHNw YWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJ9PgorICAgICAgICAgIDxHcmlk IGl0ZW0gbWQ9ezZ9IHNtPXsxMn0+CisgICAgICAgICAgICA8Q2hhcnRDb250YWluZXIgaWQ9J3Vh LXNwYWNlLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9IGRhdGFzZXRzPXtbe2JvcmRlckNvbG9y OiAnI0ZGNjM4NCcsIGxhYmVsOiAnVXNlZCBzcGFjZSd9LCB7Ym9yZGVyQ29sb3I6ICcjMzZhMmVi JywgbGFiZWw6ICdBdmFpbGFibGUgc3BhY2UnfV19ICBlcnJvck1zZz17cHJvcHMuZXJyb3JNc2d9 IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgICAgPEJhckNoYXJ0IGRhdGE9e3sK KyAgICAgICAgICAgICAgICBsYWJlbHM6IHByb3BzLmRpc2tTdGF0cy5tYXAoKGl0ZW0sIGluZGV4 KSA9PiBpdGVtLm1vdW50X3BvaW50IT0nbnVsbCc/aXRlbS5tb3VudF9wb2ludDppdGVtLmRyaXZl X2xldHRlciE9J251bGwnP2l0ZW0uZHJpdmVfbGV0dGVyOidkaXNrJytpbmRleCksCisgICAgICAg ICAgICAgICAgZGF0YXNldHM6IFsKKyAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg ICAgICAgbGFiZWw6ICdVc2VkIHNwYWNlJywKKyAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJv cHMuZGlza1N0YXRzLm1hcCgoaXRlbSkgPT4gaXRlbS51c2VkX3NwYWNlX2FjdHVhbD9pdGVtLnVz ZWRfc3BhY2VfYWN0dWFsOjApLAorICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6 ICcjRkY2Mzg0JywKKyAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjRkY2Mzg0JywK KyAgICAgICAgICAgICAgICAgICAgYm9yZGVyV2lkdGg6IDEsCisgICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0F2YWls YWJsZSBzcGFjZScsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IHByb3BzLmRpc2tTdGF0cy5t YXAoKGl0ZW0pID0+IGl0ZW0uZnJlZV9zcGFjZV9hY3R1YWw/aXRlbS5mcmVlX3NwYWNlX2FjdHVh bDowKSwKKyAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzM2YTJlYicsCisg ICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnIzM2YTJlYicsCisgICAgICAgICAgICAg ICAgICAgIGJvcmRlcldpZHRoOiAxLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgICBdLAorICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICBvcHRpb25zPXsKKyAgICAg ICAgICAgICAgICB7IAorICAgICAgICAgICAgICAgICAgc2NhbGVzOiB7CisgICAgICAgICAgICAg ICAgICAgIHg6IHsKKyAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0cnVlLAorICAgICAg ICAgICAgICAgICAgICAgIHRpY2tzOiB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5 OiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgICAgICAgIHk6IHsKKyAgICAgICAgICAgICAgICAgICAgICBiZWdpbkF0 WmVybzogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICB0aWNrczogeworICAgICAgICAgICAg ICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uICh2YWx1ZSkgeworICAgICAgICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZm9ybWF0Qnl0ZXModmFsdWUpOworICAgICAgICAgICAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgIHBsdWdpbnM6IHsKKyAg ICAgICAgICAgICAgICAgICAgbGVnZW5kOiB7CisgICAgICAgICAgICAgICAgICAgICAgZGlzcGxh eTogZmFsc2UsCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAvPgorICAg ICAgICAgICAgPC9DaGFydENvbnRhaW5lcj4KICAgICAgICAgICA8L0dyaWQ+Ci0gICAgICAgICkK LSAgICAgICkpfQorICAgICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9IHNtPXsxMn0+CisgICAgICAg ICAgPC9HcmlkPgorICAgICAgICA8L0dyaWQ+CisgICAgICA8L0dyaWQ+CisgICAgICA8R3JpZCBj b250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lcn0+CisgICAg ICAgIHtrZXlzLm1hcCgoa2V5LCBpbmRleCkgPT4gKAorICAgICAgICAgIGluZGV4ICUgMyA9PT0g MCAmJiAoCisgICAgICAgICAgICA8R3JpZCBrZXk9e2BkaXNrLSR7aW5kZXh9YH0gY29udGFpbmVy IHNwYWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWluZXJ9PgorICAgICAgICAgICAg ICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5l ckhlYWRlcn0+CisgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFp bmVySGVhZGVyVGV4dH0+e2dldHRleHQoYERpc2sgJHtNYXRoLmZsb29yKGluZGV4IC8gMykgKyAx fWApfTwvZGl2PgorICAgICAgICAgICAgICA8L0dyaWQ+CisgICAgICAgICAgICAgIDxHcmlkIGNv bnRhaW5lciBzcGFjaW5nPXsxfSBjbGFzc05hbWU9e2NsYXNzZXMuaW9EaXNrQ29udGFpbmVyfT4K KyAgICAgICAgICAgICAgICB7a2V5cy5zbGljZShpbmRleCwgaW5kZXggKyAzKS5tYXAoKGlubmVy S2V5LCBpbm5lcktleUluZGV4KSA9PiAoCisgICAgICAgICAgICAgICAgICA8R3JpZCBrZXk9e2Ak e2lubmVyS2V5fWB9IGl0ZW0gbWQ9ezR9IHNtPXs2fT4KKyAgICAgICAgICAgICAgICAgICAgPGRp diBjbGFzc05hbWU9e2NsYXNzZXMuY2hhcnRIZWFkZXJ9Pntpbm5lcktleUluZGV4PT0wID8gZ2V0 dGV4dCgnSS9PIG9wZXJhdGlvbnMgY291bnQnKTogaW5uZXJLZXlJbmRleD09MT8gZ2V0dGV4dCgn RGF0YSB0cmFuc2ZlciAoYnl0ZXMpJyk6Z2V0dGV4dCgnVGltZSBzcGVudCBpbiBJL08gb3BlcmF0 aW9ucyAobWlsbGlzZWNvbmRzKScpfTwvZGl2PgorICAgICAgICAgICAgICAgICAgICA8Q2hhcnRD b250YWluZXIgaWQ9e2Bpby1ncmFwaC0ke2lubmVyS2V5fWB9IHRpdGxlPXtnZXR0ZXh0KCcnKX0g ZGF0YXNldHM9e3RyYW5zZm9ybURhdGEocHJvcHMuaW9JbmZvW2lubmVyS2V5XSwgcHJvcHMuaW9S ZWZyZXNoUmF0ZSkuZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMuZXJyb3JNc2d9IGlzVGVzdD17 cHJvcHMuaXNUZXN0fT4KKyAgICAgICAgICAgICAgICAgICAgICA8U3RyZWFtaW5nQ2hhcnQgZGF0 YT17dHJhbnNmb3JtRGF0YShwcm9wcy5pb0luZm9baW5uZXJLZXldLCBwcm9wcy5pb1JlZnJlc2hS YXRlKX0gZGF0YVBvaW50U2l6ZT17REFUQV9QT0lOVF9TSVpFfSB4UmFuZ2U9e1hfQVhJU19MRU5H VEh9IG9wdGlvbnM9e29wdGlvbnN9IC8+CisgICAgICAgICAgICAgICAgICAgIDwvQ2hhcnRDb250 YWluZXI+CisgICAgICAgICAgICAgICAgICA8L0dyaWQ+CisgICAgICAgICAgICAgICAgKSl9Cisg ICAgICAgICAgICAgIDwvR3JpZD4KKyAgICAgICAgICAgIDwvR3JpZD4KKyAgICAgICAgICApCisg ICAgICAgICkpfQorICAgICAgPC9HcmlkPgogICAgIDwvPgogICApOwogfQpAQCAtMzIwLDYgKzUz Nyw4IEBAIFN0b3JhZ2VXcmFwcGVyLnByb3BUeXBlcyA9IHsKICAgICB9KQogICApLAogICBpb1Jl ZnJlc2hSYXRlOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsCisgIGRpc2tTdGF0czogUHJv cFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsCisgIHRhYmxlSGVhZGVyOiBQcm9wVHlwZXMuYXJyYXku aXNSZXF1aXJlZCwKICAgZXJyb3JNc2c6IFByb3BUeXBlcy5zdHJpbmcsCiAgIHNob3dUb29sdGlw OiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLAogICBzaG93RGF0YVBvaW50czogUHJvcFR5cGVz LmJvb2wuaXNSZXF1aXJlZCwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0 aWMvanMvU3lzdGVtU3RhdHMvU3VtbWFyeS5qc3ggYi93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3Rh dGljL2pzL1N5c3RlbVN0YXRzL1N1bW1hcnkuanN4CmluZGV4IDliMmVlOWEzMC4uMWNkYTI3YTAx IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL1N5c3RlbVN0YXRz L1N1bW1hcnkuanN4CisrKyBiL3dlYi9wZ2FkbWluL2Rhc2hib2FyZC9zdGF0aWMvanMvU3lzdGVt U3RhdHMvU3VtbWFyeS5qc3gKQEAgLTMwLDYgKzMwLDkgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFr ZVN0eWxlcygodGhlbWUpID0+ICh7CiAgICAgd2lkdGg6ICcxMDAlJywKICAgICBiYWNrZ3JvdW5k Q29sb3I6IHRoZW1lLm90aGVyVmFycy50YWJsZUJnLAogICAgIGJvcmRlcjogJzFweCBzb2xpZCBy Z2IoMjIxLCAyMjQsIDIzMCknLAorICAgIGJvcmRlckNvbGxhcHNlOiAnY29sbGFwc2UnLAorICAg IGJvcmRlclJhZGl1czogJzRweCcsCisgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLAogICB9LAogICB0 YWJsZVZhbDogewogICAgIGJvcmRlcjogJzFweCBzb2xpZCByZ2IoMjIxLCAyMjQsIDIzMCkgIWlt cG9ydGFudCcsCkBAIC0zNyw3ICs0MCw2IEBAIGNvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMo KHRoZW1lKSA9PiAoewogICB9LAogICBjb250YWluZXI6IHsKICAgICBoZWlnaHQ6ICdhdXRvJywK LSAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlbMjAwXSwKICAgICBwYWRkaW5nOiAn MTBweCcsCiAgICAgbWFyZ2luQm90dG9tOiAnMzBweCcsCiAgIH0sCkBAIC0zODEsMTEgKzM4Mywx MSBAQCBleHBvcnQgZnVuY3Rpb24gU3VtbWFyeVdyYXBwZXIocHJvcHMpIHsKICAgICA8PgogICAg ICAgPEdyaWQgY29udGFpbmVyIHNwYWNpbmc9ezF9IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb250YWlu ZXJ9PgogICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fSBzbT17MTJ9PgotICAgICAgICAgIDxkaXYg Y2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lckhlYWRlcn0+e2dldHRleHQoJ09TIEluZm9ybWF0 aW9uJyl9PC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVy SGVhZGVyfT57Z2V0dGV4dCgnT1MgaW5mb3JtYXRpb24nKX08L2Rpdj4KICAgICAgICAgICA8U3Vt bWFyeVRhYmxlIGRhdGE9e3Byb3BzLm9zU3RhdHN9IC8+CiAgICAgICAgIDwvR3JpZD4KICAgICAg ICAgPEdyaWQgaXRlbSBtZD17Nn0gc209ezEyfT4KLSAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17 Y2xhc3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdIYW5kbGUgJiBQcm9jZXNzIENvdW50 Jyl9PC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVh ZGVyfT57Z2V0dGV4dCgnSGFuZGxlICYgcHJvY2VzcyBjb3VudCcpfTwvZGl2PgogICAgICAgICAg IDxDaGFydENvbnRhaW5lciBpZD0naHBjLWdyYXBoJyB0aXRsZT17Z2V0dGV4dCgnJyl9IGRhdGFz ZXRzPXtwcm9wcy5wcm9jZXNzSGFuZGxlQ291bnQuZGF0YXNldHN9ICBlcnJvck1zZz17cHJvcHMu ZXJyb3JNc2d9IGlzVGVzdD17cHJvcHMuaXNUZXN0fT4KICAgICAgICAgICAgIDxTdHJlYW1pbmdD aGFydCBkYXRhPXtwcm9wcy5wcm9jZXNzSGFuZGxlQ291bnR9IGRhdGFQb2ludFNpemU9e0RBVEFf UE9JTlRfU0laRX0geFJhbmdlPXtYX0FYSVNfTEVOR1RIfSBvcHRpb25zPXtvcHRpb25zfSBzaG93 U2Vjb25kQXhpcz17dHJ1ZX0gLz4KICAgICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgpAQCAtMzkz LDExICszOTUsMTEgQEAgZXhwb3J0IGZ1bmN0aW9uIFN1bW1hcnlXcmFwcGVyKHByb3BzKSB7CiAg ICAgICA8L0dyaWQ+CiAgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0gY2xhc3NOYW1l PXtjbGFzc2VzLmNvbnRhaW5lcn0+CiAgICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezZ9IHNtPXsxMn0+ Ci0gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0 dGV4dCgnQ1BVIEluZm9ybWF0aW9uJyl9PC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9 e2NsYXNzZXMuY29udGFpbmVySGVhZGVyfT57Z2V0dGV4dCgnQ1BVIGluZm9ybWF0aW9uJyl9PC9k aXY+CiAgICAgICAgICAgPFN1bW1hcnlUYWJsZSBkYXRhPXtwcm9wcy5jcHVTdGF0c30gLz4KICAg ICAgICAgPC9HcmlkPgogICAgICAgICA8R3JpZCBpdGVtIG1kPXs2fSBzbT17MTJ9PgotICAgICAg ICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmNvbnRhaW5lckhlYWRlcn0+e2dldHRleHQoJ1By b2Nlc3MgSW5mb3JtYXRpb24nKX08L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xh c3Nlcy5jb250YWluZXJIZWFkZXJ9PntnZXR0ZXh0KCdQcm9jZXNzIGluZm9ybWF0aW9uJyl9PC9k aXY+CiAgICAgICAgICAgPENoYXJ0Q29udGFpbmVyIGlkPSdwaS1ncmFwaCcgdGl0bGU9e2dldHRl eHQoJycpfSBkYXRhc2V0cz17cHJvcHMucHJvY2Vzc0luZm9TdGF0cy5kYXRhc2V0c30gIGVycm9y TXNnPXtwcm9wcy5lcnJvck1zZ30gaXNUZXN0PXtwcm9wcy5pc1Rlc3R9PgogICAgICAgICAgICAg PERvbnV0Q2hhcnQgZGF0YT17cHJvcHMucHJvY2Vzc0luZm9TdGF0cy5kYXRhc2V0c30gLz4KICAg ICAgICAgICA8L0NoYXJ0Q29udGFpbmVyPgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vZGFzaGJv YXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvc3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3Fs IGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3RlbXBsYXRlcy9kYXNoYm9hcmQvc3FsL2RlZmF1bHQv c3lzdGVtX3N0YXRpc3RpY3Muc3FsCmluZGV4IDkwMjRhMmM1ZS4uMzVmZTkwNDJkIDEwMDY0NAot LS0gYS93ZWIvcGdhZG1pbi9kYXNoYm9hcmQvdGVtcGxhdGVzL2Rhc2hib2FyZC9zcWwvZGVmYXVs dC9zeXN0ZW1fc3RhdGlzdGljcy5zcWwKKysrIGIvd2ViL3BnYWRtaW4vZGFzaGJvYXJkL3RlbXBs YXRlcy9kYXNoYm9hcmQvc3FsL2RlZmF1bHQvc3lzdGVtX3N0YXRpc3RpY3Muc3FsCkBAIC05MSw2 ICs5MSwxOSBAQAogICAgICkgdAogICAgICkgQVMgY2hhcnRfZGF0YQogeyUgZW5kaWYgJX0KK3sl IGlmIGFkZF91bmlvbiBhbmQgJ2RpX3N0YXRzJyBpbiBjaGFydF9uYW1lcyAlfQorICAgIFVOSU9O IEFMTAoreyUgZW5kaWYgJX0KK3slIGlmICdkaV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KK3sl IHNldCBhZGRfdW5pb24gPSB0cnVlICV9CisgICAgU0VMRUNUICdkaV9zdGF0cycgQVMgY2hhcnRf bmFtZSwgKAorICAgIFNFTEVDVCB0b19qc29uKHBnX2NhdGFsb2cuanNvbmJfb2JqZWN0X2FnZygn RHJpdmUnfHxyb3dfbnVtYmVyLCBwZ19jYXRhbG9nLnJvd190b19qc29uKHQpKSkKKyAgICBGUk9N ICgKKyAgICAgICAgU0VMRUNUICosIFJPV19OVU1CRVIoKSBPVkVSIChPUkRFUiBCWSB0b3RhbF9z cGFjZSkgQVMgcm93X251bWJlcgorICAgICAgICBGUk9NIHBnX3N5c19kaXNrX2luZm8oKSBXSEVS RSBtb3VudF9wb2ludCBJUyBOT1QgTlVMTCBPUiBkcml2ZV9sZXR0ZXIgSVMgTk9UIE5VTEwKKyAg ICApIHQKKyAgICApIEFTIGNoYXJ0X2RhdGEKK3slIGVuZGlmICV9CiB7JSBpZiBhZGRfdW5pb24g YW5kICdwaV9zdGF0cycgaW4gY2hhcnRfbmFtZXMgJX0KICAgICBVTklPTiBBTEwKIHslIGVuZGlm ICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ0NoYXJ0 L1N0cmVhbWluZ0NoYXJ0LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL1Bn Q2hhcnQvU3RyZWFtaW5nQ2hhcnQuanN4CmluZGV4IDVjY2ZlMzQ2NC4uMzRhMWE4ZmVhIDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ0NoYXJ0L1N0cmVhbWlu Z0NoYXJ0LmpzeAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY29tcG9uZW50cy9QZ0NoYXJ0 L1N0cmVhbWluZ0NoYXJ0LmpzeApAQCAtNSw2ICs1LDE2IEBAIGltcG9ydCBnZXR0ZXh0IGZyb20g J3NvdXJjZXMvZ2V0dGV4dCc7CiBpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOwog aW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tICdAbWF0ZXJpYWwtdWkvc3R5bGVzJzsKIAorY29uc3Qg cmVtb3ZlRXhpc3RpbmdUb29sdGlwcyA9ICgpID0+IHsKKyAgLy8gU2VsZWN0IGFsbCBlbGVtZW50 cyB3aXRoIHRoZSBjbGFzcyBuYW1lICJ1cGxvdC10b29sdGlwIgorICBjb25zdCB0b29sdGlwTGFi ZWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnVwbG90LXRvb2x0aXAnKTsKKworICAv LyBSZW1vdmUgZWFjaCBzZWxlY3RlZCBlbGVtZW50CisgIHRvb2x0aXBMYWJlbHMuZm9yRWFjaCgo dG9vbHRpcExhYmVsKSA9PiB7CisgICAgdG9vbHRpcExhYmVsLnJlbW92ZSgpOworICB9KTsKK307 CisKIGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW4ocmVmcmVzaFJhdGUpIHsKICAgbGV0IHRvb2x0aXBU b3BPZmZzZXQgPSAtMjA7CiAgIGxldCB0b29sdGlwTGVmdE9mZnNldCA9IDEwOwpAQCAtMTIsMTMg KzIyLDE0IEBAIGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW4ocmVmcmVzaFJhdGUpIHsKIAogICBmdW5j dGlvbiBzaG93VG9vbHRpcCgpIHsKICAgICBpZighdG9vbHRpcCkgeworICAgICAgcmVtb3ZlRXhp c3RpbmdUb29sdGlwcygpOwogICAgICAgdG9vbHRpcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo J2RpdicpOwogICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAndXBsb3QtdG9vbHRpcCc7CiAgICAg ICB0b29sdGlwLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogICAgICAgZG9jdW1lbnQuYm9keS5h cHBlbmRDaGlsZCh0b29sdGlwKTsKICAgICB9CiAgIH0KLQorICAKICAgZnVuY3Rpb24gaGlkZVRv b2x0aXAoKSB7CiAgICAgdG9vbHRpcD8ucmVtb3ZlKCk7CiAgICAgdG9vbHRpcCA9IG51bGw7CkBA IC02Miw2ICs3Myw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFN0cmVhbWluZ0NoYXJ0KHt4 UmFuZ2U9NzUsIGRhdGEsIG9wdGlvbnMsIHNob3dTZWNvbmRBeGlzCiAgIGNvbnN0IGNoYXJ0UmVm ID0gdXNlUmVmKCk7CiAgIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTsKICAgY29uc3QgeyB3aWR0 aCwgaGVpZ2h0LCByZWY6Y29udGFpbmVyUmVmIH0gPSB1c2VSZXNpemVEZXRlY3RvcigpOworCiAg IGNvbnN0IGRlZmF1bHRPcHRpb25zID0gdXNlTWVtbygoKT0+IHsKICAgICBjb25zdCBzZXJpZXMg PSBbCiAgICAgICB7fSwKQEAgLTE3MCw2ICsxODIsNyBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlv biBTdHJlYW1pbmdDaGFydCh7eFJhbmdlPTc1LCBkYXRhLCBvcHRpb25zLCBzaG93U2Vjb25kQXhp cwogICAgICAgfSk7CiAgICAgfQogCisKICAgICByZXR1cm4gewogICAgICAgdGl0bGU6ICcnLAog ICAgICAgd2lkdGg6IHdpZHRoLAotLSAKMi40MS4wLndpbmRvd3MuMQoK --000000000000a081960603bacd77--