Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dFHHy-00078f-Bx for pgadmin-hackers@arkaria.postgresql.org; Mon, 29 May 2017 09:48:38 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1dFHHx-0004nr-Uq for pgadmin-hackers@arkaria.postgresql.org; Mon, 29 May 2017 09:48:37 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1dFHHw-0004ni-3s for pgadmin-hackers@postgresql.org; Mon, 29 May 2017 09:48:36 +0000 Received: from mail-it0-x233.google.com ([2607:f8b0:4001:c0b::233]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1dFHHm-0002VV-2C for pgadmin-hackers@postgresql.org; Mon, 29 May 2017 09:48:35 +0000 Received: by mail-it0-x233.google.com with SMTP id c15so24433994ith.0 for ; Mon, 29 May 2017 02:48:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=vC7Ht9qws8CLiP4jiNaQ9S2/8uC6swrwgUdCcngevGU=; b=kv/4O+Hc0BLDY6ijMcTYJYRrDYxi99tmC89S01y3TZZDsFDIc1vxApPAtdhfjbp+cv n+4C0w0scl3w+Yq+V+rIlc/XFnSeFGMDU8ZOLXN+rmHI1h1A0H4CbqGwp0Al7lSsF1bo zf+1pXWpXVj/KPSDxJ9a/p9elWDn9W6ZjdYfTN0Mp8uHi3iTy5mbATtqIUk1dh2bb28f 8K8/BmMKRI7LsvUncsxaU7jop0HTb0kU22bgWSFzSzzfxhoaB9NoI5/lGgh4Zc6WOfz7 rb6YcRPv85P1Fn9YAnzD8VkXOICbfP36k+v8d+G/ZwdKXg0ZpMtWLq4HppGNfzTtqAB4 Stug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=vC7Ht9qws8CLiP4jiNaQ9S2/8uC6swrwgUdCcngevGU=; b=RbIIynt7bNIlPENzXgqnrV9aY5BJ6ArbQ2sXlHqcYYJQyl4dOKdT0dG3rm+XVEl0u1 BL//wKVC6cQ1IxniQwNZG4KcLKrjbP58Y5xV0CyAaOQUrVQrEaTleHEYXk54qJOTFrdB /n2xw5lGOppCNXt/oDU+3EZ8XVVcb0E0+xyMYgbtr04kwkkZ3yjUsSY4k+RX8UjEWsXN TJ1sDxAjubazAfx02sOLTQ/8BjZQNjYr04qwRni2pG5DoAfGypasTto39kmTaCOQm1VQ dP7hk1IhgF39xg6ewF+SCEmJY/IBsCJ0nLNnfakNjHne30wg6MKrBJ7nfm9zjjwNiXNT 7RhA== X-Gm-Message-State: AODbwcAs3yPY2OuDGiVJzrikG2KLWzwZysm2/R5hi86eRjC/b3murpL7 KNEgDUZepmJteeNvTz7yNVfOGQH8JVyW X-Received: by 10.36.55.149 with SMTP id r143mr28899286itr.53.1496051303852; Mon, 29 May 2017 02:48:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.38.15 with HTTP; Mon, 29 May 2017 02:48:23 -0700 (PDT) In-Reply-To: References: From: Harshal Dhumal Date: Mon, 29 May 2017 15:18:23 +0530 Message-ID: Subject: Re: Fix for RM2421 [pgAdmin4][patch] To: Joao Pedro De Almeida Pereira Cc: pgadmin-hackers , Shruti B Iyer Content-Type: multipart/mixed; boundary="001a1140c8388925420550a69675" X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a1140c8388925420550a69675 Content-Type: multipart/alternative; boundary="001a1140c83889253c0550a69673" --001a1140c83889253c0550a69673 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, Here is updated patch for RM2421. Now I have moved all Numeric control level validations to datamodel. As existing implementation was causing issues with error messages in create/edit dialog when schema contains two or more Numeric controls. This is generic issue and not related to resource group. Also I have updated all other nodes which uses Numeric controls --=20 *Harshal Dhumal* *Sr. Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Fri, May 19, 2017 at 12:22 PM, Harshal Dhumal < harshal.dhumal@enterprisedb.com> wrote: > Hi, > > On Thu, May 18, 2017 at 7:57 PM, Joao Pedro De Almeida Pereira < > jdealmeidapereira@pivotal.io> wrote: > >> Hello Harshal, >> >> We review the patch and have some questions: >> 1) Is there any particular reason to initialize variables and functions >> in the same place? We believe that it would be more readable there were = no >> chaining of variable creation, specially if those variables are function= s. >> Check line: >> > That function is only going to be used in checkNumeric function (in case > of Number control) and checkInt function (in case of Integer control) so > declared them locally. > Anyway I'm going to refactor both the controls as Number and Integer > shares some common properties. > > +++ b/web/pgadmin/static/js/backform.pgadmin.js >> @@ -1528,7 +1528,18 @@ >> max_value =3D field.max, >> isValid =3D true, >> intPattern =3D new RegExp("^-?[0-9]*$"), >> - isMatched =3D intPattern.test(value); >> + isMatched =3D intPattern.test(value), >> + trigger_invalid_event =3D function(msg) { >> >> =E2=80=8B >> 2) The functions added in both places look very similar, can they be >> merged and extracted? We are talking about the trigger_invalid_event >> function. >> > Yes they can be merged. As of now both NumericControl and IntegerControl > are derived from InputControl. Ideally > only NumericControl should be derived from InputControl and IntegerControl > should be derive from NumericControl. > > > >> 3) The following change is very similar to the trigger_invalid_event, >> was there a reason not to use it? >> > Below code triggers "model valid" event; opposite to "model invalid" event > (trigger_invalid_event) > >> +++ b/web/pgadmin/static/js/backform.pgadmin.js >> @@ -1573,25 +1584,23 @@ >> this.model.errorModel.unset(name); >> this.model.set(name, value); >> this.listenTo(this.model, "change:" + name, this.render); >> - if (this.model.collection || this.model.handler) { >> - (this.model.collection || this.model.handler).trigger( >> - 'pgadmin-session:model:valid', this.model, (this.model.col= lection || this.model.handler) >> - ); >> + // Check if other fields of same model are valid before >> + // triggering 'session:valid' event >> + if(_.size(this.model.errorModel.attributes) =3D=3D 0) { >> + if (this.model.collection || this.model.handler) { >> + (this.model.collection || this.model.handler).trigger( >> + 'pgadmin-session:model:valid', this.model, (this.model.c= ollection || this.model.handler) >> + ); >> + } else { >> + (this.model).trigger( >> + 'pgadmin-session:valid', this.model.sessChanged(), this.= model >> + ); >> + } >> >> =E2=80=8B >> 4) We also noticed that the following change sets look very similiar. Is >> there any reason to have this code duplicated? If not this could be a go= od >> time to refactor it. >> > As said earlier in response of point 2 code duplication is because the way > controls are derived. > > >> +++ b/web/pgadmin/static/js/backform.pgadmin.js >> @@ -1528,7 +1528,18 @@ >> >> @@ -1573,25 +1584,23 @@ >> >> @@ -1631,7 +1640,18 @@ >> >> @@ -1676,25 +1696,23 @@ >> >> =E2=80=8B >> >> Thanks >> Joao & Shruti >> >> On Thu, May 18, 2017 at 6:01 AM, Harshal Dhumal < >> harshal.dhumal@enterprisedb.com> wrote: >> >>> Hi, >>> >>> Please find attached patch for RM2421 >>> >>> Issue fixed: 1. Integer/numeric Validation is not working properly. >>> 2. Wrong CPU rate unit >>> -- >>> *Harshal Dhumal* >>> *Sr. Software Engineer* >>> >>> EnterpriseDB India: http://www.enterprisedb.com >>> The Enterprise PostgreSQL Company >>> >>> >>> -- >>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>> To make changes to your subscription: >>> http://www.postgresql.org/mailpref/pgadmin-hackers >>> >>> >> > --001a1140c83889253c0550a69673 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Here is updated patch for RM2421.

Now I have moved all Numeric control level validati= ons to datamodel. As existing implementation was causing=C2=A0
is= sues with error messages in create/edit dialog when schema contains two or = more Numeric controls.

This is generic issue and n= ot related to resource group. Also I have updated all other nodes which use= s Numeric controls



--=C2=A0
Harshal Dhumal
Sr. Software Engineer

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL Company
=

On Fri, May 19, 2017 at 12:22 PM, Harshal Dh= umal <harshal.dhumal@enterprisedb.com> wrote:<= br>
Hi,

On Thu, May 18, 2017 at 7:57 PM, Joao Pedro De = Almeida Pereira <jdealmeidapereira@pivotal.io> wr= ote:
<= /div>
He= llo Harshal,

We review the patch and have some questions= :
1) Is there any particular reason to initialize variables and f= unctions in the same place? We believe that it would be more readable there= were no chaining of variable creation, specially if those variables are fu= nctions. Check line:=C2=A0
That functio= n is only going to be used in checkNumeric function (in case of Number cont= rol) and checkInt function (in case of Integer control) so declared them lo= cally.
Anyway I'm going to refactor both the controls as Numb= er and Integer shares some common properties.
=
+++ b/web/pgadmin/static/js/backform.pgadmin=
.js
@@ -1528,7 +1528,18 @@
           max_value =3D field.max,
           isValid =3D true,
           intPattern =3D new RegExp("^-?[0-9]*$"),
-          isMatched =3D intPattern.test(value);
+          isMatched =3D intPattern.test(value),
+          trigger_invalid_event =3D function(msg) {
=E2=80=8B
2) The functions added in both pl= aces look very similar, can they be merged and extracted? We are talking ab= out the trigger_invalid_event=C2= =A0function.
Yes they can be merge= d. As of now both NumericControl and IntegerControl are derived from InputC= ontrol. Ideally=C2=A0
only NumericControl should be derived from = InputControl and IntegerControl should be derive from NumericControl.
=

=C2=A0
3) The following c= hange is very similar to the trigger_in= valid_event, was there a reason not to use it?
Below code triggers "model valid" event; opposite = to "model invalid" event (trigger_invalid_event)
=
+++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -1573,25 +1584,23 @@
         this.model.errorModel.unset(name);
         this.model.set(name, value);
         this.listenTo(this.model, "change:" + name, this.render);
-        if (this.model.collection || this.model.handler) {
-          (this.model.collection || this.model.handler).trigger(
-             'pgadmin-session:model:valid', this.model, (this.mode=
l.collection || this.model.handler)
-            );
+        // Check if other fields of same model are valid before
+        // triggering 'session:valid' event
+        if(_.size(this.model.errorModel.attributes) =3D=3D 0) {
+          if (this.model.collection || this.model.handler) {
+            (this.model.collection || this.model.handler).trigger(
+               'pgadmin-session:model:valid', this.model, (this.mo=
del.collection || this.model.handler)
+              );
+          } else {
+            (this.model).trigger(
+               'pgadmin-session:valid', this.model.sessChanged(), =
this.model
+              );
+          }
=E2=80=8B
4) We also noticed that the following change sets look very similia= r. Is there any reason to have this code duplicated? If not this could be a= good time to refactor it.
As said earl= ier in response of point 2 code duplication is because the way controls are= derived.
=C2=A0
+=
++ b/web/pgadmin/static/js/backform.pgadmin.js
@@ -1528,7 +1528,18 @@

@@ -1573,25 +1584,23 @@

@@ -1631,7 +1640,18 @@

@@ -1676,25 +1696,23 @@
=E2=80=8B

Thanks
Joao & Shruti

On Thu, May 18, 2017 at 6:01 AM, Harshal Dhumal <= harshal.dhumal@enterprisedb.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-l= eft:1px solid rgb(204,204,204);padding-left:1ex">
Hi,

Please fin= d attached patch for RM2421

Issue fixed: 1. Intege= r/numeric Validation is not working properly.
2. Wrong CPU rate u= nit
=
=
--=C2=A0
Harshal Dhumal
Sr. Software Eng= ineer

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL Company


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




--001a1140c83889253c0550a69673-- --001a1140c8388925420550a69675 Content-Type: text/x-patch; charset="US-ASCII"; name="RM2421_V2.patch" Content-Disposition: attachment; filename="RM2421_V2.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_j39yb4r70 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3Rl bXBsYXRlcy9mb3JlaWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3RlbXBsYXRlcy9mb3Jl aWduX3RhYmxlcy9qcy9mb3JlaWduX3RhYmxlcy5qcwppbmRleCA1ZjNkYzY5 Li5iN2RmNTg1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWdu X3RhYmxlcy90ZW1wbGF0ZXMvZm9yZWlnbl90YWJsZXMvanMvZm9yZWlnbl90 YWJsZXMuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZm9yZWlnbl90YWJsZXMv dGVtcGxhdGVzL2ZvcmVpZ25fdGFibGVzL2pzL2ZvcmVpZ25fdGFibGVzLmpz CkBAIC0xMDEsMzQgKzEwMSw1NiBAQCBmdW5jdGlvbigkLCBfLCBTLCBwZ0Fk bWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CiAgICAgICAgIGNlbGw6ICdz dHJpbmcnLCBncm91cDogJ3t7IF8oJ0RlZmluaXRpb24nKSB9fScsCiAgICAg ICAgIHR5cGU6ICdpbnQnLCBkZXBzOiBbJ2RhdGF0eXBlJ10sCiAgICAgICAg IGRpc2FibGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgIC8vIFdlIHdpbGwg c3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9ib3gKKyAgICAg ICAgICB2YXIgdmFsID0gbS5nZXQoJ3R5cGxlbicpOworICAgICAgICAgIC8v IFdlIHdpbGwgc3RvcmUgdHlwZSBmcm9tIHNlbGVjdGVkIGZyb20gY29tYm9i b3gKICAgICAgICAgICBpZighKF8uaXNVbmRlZmluZWQobS5nZXQoJ2luaGVy aXRlZGlkJykpCiAgICAgICAgICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5o ZXJpdGVkaWQnKSkKICAgICAgICAgICAgIHx8IF8uaXNVbmRlZmluZWQobS5n ZXQoJ2luaGVyaXRlZGZyb20nKSkKLSAgICAgICAgICAgIHx8IF8uaXNOdWxs KG0uZ2V0KCdpbmhlcml0ZWRmcm9tJykpKSkgeyByZXR1cm4gdHJ1ZTsgfQor ICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQoJ2luaGVyaXRlZGZyb20n KSkpKSB7CiAKLSAgICAgICAgdmFyIG9mX3R5cGUgPSBtLmdldCgnZGF0YXR5 cGUnKTsKLSAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsKLSAgICAgICAg ICBtLnNldCgnaXNfdGxlbmd0aCcsIGZhbHNlLCB7c2lsZW50OiB0cnVlfSk7 CisgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsKSkgeworICAg ICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgIG0uc2V0KCd0eXBsZW4nLCB1bmRlZmluZWQpOworICAgICAgICAg ICAgICB9LCAxMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICB2YXIgb2ZfdHlw ZSA9IG0uZ2V0KCdkYXRhdHlwZScpLAorICAgICAgICAgICAgICBoYXNfbGVu Z3RoID0gZmFsc2U7CisgICAgICAgICAgaWYobS50eXBlX29wdGlvbnMpIHsK KyAgICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywgZmFsc2UsIHtzaWxl bnQ6IHRydWV9KTsKIAotICAgICAgICAgIC8vIGl0ZXJhdGluZyBvdmVyIGFs bCB0aGUgdHlwZXMKLSAgICAgICAgICBfLmVhY2gobS50eXBlX29wdGlvbnMs IGZ1bmN0aW9uKG8pIHsKLSAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBz ZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucwotICAg ICAgICAgICAgaWYgKCBvZl90eXBlID09IG8udmFsdWUgKSB7Ci0gICAgICAg ICAgICAgICAgIG0uc2V0KCd0eXBsZW4nLCB1bmRlZmluZWQpOworICAgICAg ICAgICAgLy8gaXRlcmF0aW5nIG92ZXIgYWxsIHRoZSB0eXBlcworICAgICAg ICAgICAgXy5lYWNoKG0udHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7Cisg ICAgICAgICAgICAgIC8vIGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNv bWJvYm94IG1hdGNoZXMgaW4gb3B0aW9ucworICAgICAgICAgICAgICBpZiAo IG9mX3R5cGUgPT0gby52YWx1ZSApIHsKICAgICAgICAgICAgICAgICAvLyBp ZiBsZW5ndGggaXMgYWxsb3dlZCBmb3Igc2VsZWN0ZWQgdHlwZQogICAgICAg ICAgICAgICAgIGlmKG8ubGVuZ3RoKQogICAgICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCisg ICAgICAgICAgICAgICAgICBoYXNfbGVuZ3RoID0gdHJ1ZTsKICAgICAgICAg ICAgICAgICAgIG0uc2V0KCdpc190bGVuZ3RoJywgdHJ1ZSwge3NpbGVudDog dHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBv Lm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKICAgICAgICAgICAgICAgICAg IG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7 CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9KTsKKworICAgICAgICAgICAgaWYgKCFoYXNfbGVuZ3RoICYmICFf LmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAgICAgICAgICAgICAgc2V0VGltZW91 dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBtLnNldCgndHlwbGVu JywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgfSwgMTApOwogICAgICAg ICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICAgIHJldHVybiAhKG0u Z2V0KCdpc190bGVuZ3RoJykpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy biB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gIShtLmdldCgnaXNfdGxl bmd0aCcpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCFoYXNfbGVu Z3RoICYmICFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAgICAgICAgICAgICAg c2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICBtLnNl dCgndHlwbGVuJywgdW5kZWZpbmVkKTsKKyAgICAgICAgICAgICAgfSwgMTAp OworICAgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0cnVlOwogICAg ICAgICB9LAogICAgICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3Bl cmNlbnRfMTAnCiAgICAgICB9LHsKQEAgLTEzNiwzMyArMTU4LDU0IEBAIGZ1 bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkp IHsKICAgICAgICAgdHlwZTogJ2ludCcsIGRlcHM6IFsnZGF0YXR5cGUnXSwK ICAgICAgICAgY2VsbDogJ3N0cmluZycsIGdyb3VwOiAne3sgXygnRGVmaW5p dGlvbicpIH19JywKICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICB2YXIgdmFsID0gbS5nZXQoJ3ByZWNpc2lvbicpOwogICAg ICAgICAgIGlmKCEoXy5pc1VuZGVmaW5lZChtLmdldCgnaW5oZXJpdGVkaWQn KSkKICAgICAgICAgICAgIHx8IF8uaXNOdWxsKG0uZ2V0KCdpbmhlcml0ZWRp ZCcpKQogICAgICAgICAgICAgfHwgXy5pc1VuZGVmaW5lZChtLmdldCgnaW5o ZXJpdGVkZnJvbScpKQotICAgICAgICAgICAgfHwgXy5pc051bGwobS5nZXQo J2luaGVyaXRlZGZyb20nKSkpKSB7IHJldHVybiB0cnVlOyB9CisgICAgICAg ICAgICB8fCBfLmlzTnVsbChtLmdldCgnaW5oZXJpdGVkZnJvbScpKSkpIHsK KworICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHZhbCkpIHsKKyAg ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgICBtLnNldCgncHJlY2lzaW9uJywgdW5kZWZpbmVkKTsKKyAgICAg ICAgICAgICAgfSwgMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAg cmV0dXJuIHRydWU7CisgICAgICAgICAgfQorCisgICAgICAgICAgdmFyIG9m X3R5cGUgPSBtLmdldCgnZGF0YXR5cGUnKSwKKyAgICAgICAgICAgICAgaGFz X3ByZWNpc2lvbiA9IGZhbHNlOwogCi0gICAgICAgICAgdmFyIG9mX3R5cGUg PSBtLmdldCgnZGF0YXR5cGUnKTsKICAgICAgICAgICBpZihtLnR5cGVfb3B0 aW9ucykgewogICAgICAgICAgICAgIG0uc2V0KCdpc19wcmVjaXNpb24nLCBm YWxzZSwge3NpbGVudDogdHJ1ZX0pOwogICAgICAgICAgICAgLy8gaXRlcmF0 aW5nIG92ZXIgYWxsIHRoZSB0eXBlcwogICAgICAgICAgICAgXy5lYWNoKG0u dHlwZV9vcHRpb25zLCBmdW5jdGlvbihvKSB7CiAgICAgICAgICAgICAgIC8v IGlmIHR5cGUgZnJvbSBzZWxlY3RlZCBmcm9tIGNvbWJvYm94IG1hdGNoZXMg aW4gb3B0aW9ucwogICAgICAgICAgICAgICBpZiAoIG9mX3R5cGUgPT0gby52 YWx1ZSApIHsKLSAgICAgICAgICAgICAgICBtLnNldCgncHJlY2lzaW9uJywg dW5kZWZpbmVkKTsKICAgICAgICAgICAgICAgICAvLyBpZiBwcmVjZXNzaW9u IGlzIGFsbG93ZWQgZm9yIHNlbGVjdGVkIHR5cGUKICAgICAgICAgICAgICAg ICBpZihvLnByZWNpc2lvbikKICAgICAgICAgICAgICAgICB7CisgICAgICAg ICAgICAgICAgICBoYXNfcHJlY2lzaW9uID0gdHJ1ZTsKICAgICAgICAgICAg ICAgICAgIC8vIHNldCB0aGUgdmFsdWVzIGluIG1vZGVsCiAgICAgICAgICAg ICAgICAgICBtLnNldCgnaXNfcHJlY2lzaW9uJywgdHJ1ZSwge3NpbGVudDog dHJ1ZX0pOwogICAgICAgICAgICAgICAgICAgbS5zZXQoJ21pbl92YWwnLCBv Lm1pbl92YWwsIHtzaWxlbnQ6IHRydWV9KTsKICAgICAgICAgICAgICAgICAg IG0uc2V0KCdtYXhfdmFsJywgby5tYXhfdmFsLCB7c2lsZW50OiB0cnVlfSk7 CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgIGlmICghaGFzX3ByZWNpc2lvbiAmJiAh Xy5pc1VuZGVmaW5lZCh2YWwpKSB7CisgICAgICAgICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgbS5zZXQoJ3ByZWNp c2lvbicsIHVuZGVmaW5lZCk7CisgICAgICAgICAgICAgIH0sIDEwKTsKICAg ICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4g IShtLmdldCgnaXNfcHJlY2lzaW9uJykpOwotICAgICAgICB9Ci0gICAgICAg IHJldHVybiB0cnVlOwotICAgICAgICB9LCBjZWxsSGVhZGVyQ2xhc3Nlczog J3dpZHRoX3BlcmNlbnRfMTAnCisgICAgICAgICAgICByZXR1cm4gIShtLmdl dCgnaXNfcHJlY2lzaW9uJykpOworICAgICAgICAgIH0KKyAgICAgICAgICBp ZiAoIWhhc19wcmVjaXNpb24gJiYgIV8uaXNVbmRlZmluZWQodmFsKSkgewor ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAg ICAgICAgbS5zZXQoJ3ByZWNpc2lvbicsIHVuZGVmaW5lZCk7CisgICAgICAg ICAgICB9LCAxMCk7CisgICAgICAgICAgfQorICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgfSwgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJj ZW50XzEwJwogICAgICAgfSx7CiAgICAgICAgIGlkOiAndHlwZGVmYXVsdCcs IGxhYmVsOid7eyBfKCdEZWZhdWx0JykgfX0nLCB0eXBlOiAndGV4dCcsCiAg ICAgICAgIGNlbGw6ICdzdHJpbmcnLCBtaW5fdmVyc2lvbjogOTAzMDAsIGdy b3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKQEAgLTIxNiwyMiArMjU5 LDIzIEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nlciwg YWxlcnRpZnkpIHsKICAgICAgICAgICBtaW5fdmVyc2lvbjogOTAyMDAKICAg ICAgIH1dLAogICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIHZh ciBlcnIgPSB7fSwKLSAgICAgIGVycm1zZzsKKyAgICAgIHZhciBlcnJtc2cg PSBudWxsOwogCiAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgn YXR0bmFtZScpKSB8fCBTdHJpbmcodGhpcy5nZXQoJ2F0dG5hbWUnKSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICBlcnJb J25hbWUnXSA9ICd7eyBfKCdDb2x1bW4gTmFtZSBjYW5ub3QgYmUgZW1wdHkh JykgfX0nOwotICAgICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWydhdHRu YW1lJ107CisgICAgICAgIGVycm1zZyA9ICd7eyBfKCdDb2x1bW4gTmFtZSBj YW5ub3QgYmUgZW1wdHkhJykgfX0nOworICAgICAgICB0aGlzLmVycm9yTW9k ZWwuc2V0KCdhdHRuYW1lJywgZXJybXNnKTsKKyAgICAgIH0gZWxzZSB7Cisg ICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnYXR0bmFtZScpOwogICAg ICAgfQogCiAgICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZGF0 YXR5cGUnKSkgfHwgU3RyaW5nKHRoaXMuZ2V0KCdkYXRhdHlwZScpKQogICAg ICAgLnJlcGxhY2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAg ICAgZXJyWydiYXNlbnNwJ10gPSAne3sgXygnQ29sdW1uIERhdGF0eXBlIGNh bm5vdCBiZSBlbXB0eSEnKSB9fSc7Ci0gICAgICAgIGVycm1zZyA9IGVycm1z ZyB8fCBlcnJbJ2RhdGF0eXBlJ107CisgICAgICAgIGVycm1zZyA9ICd7eyBf KCdDb2x1bW4gRGF0YXR5cGUgY2Fubm90IGJlIGVtcHR5IScpIH19JzsKKyAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZGF0YXR5cGUnLCBlcnJtc2cp OworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVu c2V0KCdkYXRhdHlwZScpOwogICAgICAgfQogCi0gICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKS5zZXQoZXJyKTsKLQogICAgICAgcmV0dXJuIGVycm1z ZzsKICAgICB9LAogICAgIGlzX2VkaXRhYmxlX2NvbHVtbjogZnVuY3Rpb24o bSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3Rl bXBsYXRlcy9zZXF1ZW5jZS9qcy9zZXF1ZW5jZS5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3NlcXVlbmNlcy90ZW1wbGF0ZXMvc2VxdWVuY2UvanMvc2VxdWVuY2Uu anMKaW5kZXggMmZiN2FlNS4uMWI5ZGI1MCAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvc2VxdWVuY2VzL3RlbXBsYXRlcy9zZXF1ZW5jZS9qcy9zZXF1 ZW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMvdGVtcGxh dGVzL3NlcXVlbmNlL2pzL3NlcXVlbmNlLmpzCkBAIC0xNTMsNyArMTUzLDEw IEBAIGZ1bmN0aW9uKCQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxl cnRpZnkpIHsKICAgICAgICAgICBtaW46IDEKICAgICAgICAgfSx7CiAgICAg ICAgICAgaWQ6ICdzdGFydCcsIGxhYmVsOiAne3sgXygnU3RhcnQnKSB9fScs IHR5cGU6ICdpbnQnLAotICAgICAgICAgIG1vZGU6IFsncHJvcGVydGllcycs ICdjcmVhdGUnXSwgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nCisg ICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0ZScsICdlZGl0 J10sIGdyb3VwOiAne3sgXygnRGVmaW5pdGlvbicpIH19JywKKyAgICAgICAg ICBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJu ICFtLmlzTmV3KCk7CisgICAgICAgICAgfQogICAgICAgICB9LHsKICAgICAg ICAgICBpZDogJ21pbmltdW0nLCBsYWJlbDogJ3t7IF8oJ01pbmltdW0nKSB9 fScsIHR5cGU6ICdpbnQnLAogICAgICAgICAgIG1vZGU6IFsncHJvcGVydGll cycsICdjcmVhdGUnLCAnZWRpdCddLCBncm91cDogJ3t7IF8oJ0RlZmluaXRp b24nKSB9fScKQEAgLTE5OSwxNCArMjAyLDE0IEBAIGZ1bmN0aW9uKCQsIF8s IFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgYWxlcnRpZnkpIHsKICAgICAgICAg ICAgICAgbWluaW11bSA9IHRoaXMuZ2V0KCdtaW5pbXVtJyksCiAgICAgICAg ICAgICAgIG1heGltdW0gPSB0aGlzLmdldCgnbWF4aW11bScpOwogICAgICAg ICAgICAgICBzdGFydCA9IHRoaXMuZ2V0KCdzdGFydCcpOwotICAgICAgICAg IC8vIENsZWFyIGFueSBleGlzdGluZyBlcnJvciBtc2cuCi0gICAgICAgICAg dGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CiAKICAgICAgICAgICBpZiAoXy5p c1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKQogICAgICAgICAgICAgICB8 fCBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgewogICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ05h bWUgY2Fubm90IGJlIGVtcHR5LicpIH19JzsKICAgICAgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwogICAgICAgICAgICAgcmV0 dXJuIG1zZzsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7CiAgICAgICAgICAgfQogCiAg ICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ3NlcW93bmVy JykpCkBAIC0yMTQsNiArMjE3LDggQEAgZnVuY3Rpb24oJCwgXywgUywgcGdB ZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSkgewogICAgICAgICAgICAgbXNn ID0gJ3t7IF8oJ093bmVyIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CiAgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzZXFvd25lcicsIG1zZyk7 CiAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgIH0gZWxzZSB7 CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3NlcW93bmVy Jyk7CiAgICAgICAgICAgfQogCiAgICAgICAgICAgaWYgKF8uaXNVbmRlZmlu ZWQodGhpcy5nZXQoJ3NjaGVtYScpKQpAQCAtMjIxLDI2ICsyMjYsODEgQEAg ZnVuY3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlm eSkgewogICAgICAgICAgICAgbXNnID0gJ3t7IF8oJ1NjaGVtYSBjYW5ub3Qg YmUgZW1wdHkuJykgfX0nOwogICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnNldCgnc2NoZW1hJywgbXNnKTsKICAgICAgICAgICAgIHJldHVybiBtc2c7 CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC51bnNldCgnc2NoZW1hJyk7CisgICAgICAgICAgfQorCisgICAgICAg ICAgaWYgKCF0aGlzLmlzTmV3KCkpIHsKKyAgICAgICAgICAgIGlmIChfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCdjdXJyZW50X3ZhbHVlJykpCisgICAgICAg ICAgICAgIHx8IFN0cmluZyh0aGlzLmdldCgnY3VycmVudF92YWx1ZScpKS5y ZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAg ICAgIG1zZyA9ICd7eyBfKCdDdXJyZW50IHZhbHVlIGNhbm5vdCBiZSBlbXB0 eS4nKSB9fSc7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQo J2N1cnJlbnRfdmFsdWUnLCBtc2cpOworICAgICAgICAgICAgICByZXR1cm4g bXNnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdGhp cy5lcnJvck1vZGVsLnVuc2V0KCdjdXJyZW50X3ZhbHVlJyk7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMu Z2V0KCdpbmNyZW1lbnQnKSkKKyAgICAgICAgICAgICAgfHwgU3RyaW5nKHRo aXMuZ2V0KCdpbmNyZW1lbnQnKSkucmVwbGFjZSgvXlxzK3xccyskL2csICcn KSA9PSAnJykgeworICAgICAgICAgICAgICBtc2cgPSAne3sgXygnSW5jcmVt ZW50IHZhbHVlIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2luY3JlbWVudCcsIG1zZyk7Cisg ICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ2luY3Jl bWVudCcpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoXy5p c1VuZGVmaW5lZCh0aGlzLmdldCgnbWluaW11bScpKQorICAgICAgICAgICAg ICB8fCBTdHJpbmcodGhpcy5nZXQoJ21pbmltdW0nKSkucmVwbGFjZSgvXlxz K3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICBtc2cgPSAn e3sgXygnTWluaW11bSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOwor ICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdtaW5pbXVtJywg bXNnKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAg IH0gZWxzZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNl dCgnbWluaW11bScpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbWF4aW11bScpKQorICAgICAg ICAgICAgICB8fCBTdHJpbmcodGhpcy5nZXQoJ21heGltdW0nKSkucmVwbGFj ZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgICBt c2cgPSAne3sgXygnTWF4aW11bSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykg fX0nOworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdtYXhp bXVtJywgbXNnKTsKKyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC51bnNldCgnbWF4aW11bScpOworICAgICAgICAgICAgfQorCisgICAgICAg ICAgICBpZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnY2FjaGUnKSkKKyAg ICAgICAgICAgICAgfHwgU3RyaW5nKHRoaXMuZ2V0KCdjYWNoZScpKS5yZXBs YWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAgICAgICAg IG1zZyA9ICd7eyBfKCdDYWNoZSB2YWx1ZSBjYW5ub3QgYmUgZW1wdHkuJykg fX0nOworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdjYWNo ZScsIG1zZyk7CisgICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwu dW5zZXQoJ2NhY2hlJyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgfQog CiAgICAgICAgICAgdmFyIG1pbl9sdCA9ICd7eyBfKCdNaW5pbXVtIHZhbHVl IG11c3QgYmUgbGVzcyB0aGFuIG1heGltdW0gdmFsdWUuJykgfX0nLAogICAg ICAgICAgICAgICBzdGFydF9sdCA9ICd7eyBfKCdTdGFydCB2YWx1ZSBjYW5u b3QgYmUgbGVzcyB0aGFuIG1pbmltdW0gdmFsdWUuJykgfX0nLAogICAgICAg ICAgICAgICBzdGFydF9ndCA9ICd7eyBfKCdTdGFydCB2YWx1ZSBjYW5ub3Qg YmUgZ3JlYXRlciB0aGFuIG1heGltdW0gdmFsdWUuJykgfX0nOworCiAgICAg ICAgICAgaWYgKChtaW5pbXVtID09IDAgJiYgbWF4aW11bSA9PSAwKSB8fAog ICAgICAgICAgICAgICAocGFyc2VJbnQobWluaW11bSwgMTApID49IHBhcnNl SW50KG1heGltdW0sIDEwKSkpIHsKLSAgICAgICAgICAgIG1zZyA9IG1pbl9s dAotICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnbWluaW11bScs IG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAg dGhpcy5lcnJvck1vZGVsLnNldCgnbWluaW11bScsIG1pbl9sdCk7CisgICAg ICAgICAgICByZXR1cm4gbWluX2x0OworICAgICAgICAgIH0gZWxzZSB7Cisg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ21pbmltdW0nKTsK ICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZSBpZiAoc3RhcnQgPCBtaW5p bXVtKSB7Ci0gICAgICAgICAgICBtc2cgPSBzdGFydF9sdAotICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnNldCgnc3RhcnQnLCBtc2cpOwotICAgICAg ICAgICAgcmV0dXJuIG1zZzsKKworICAgICAgICAgIGlmIChzdGFydCAmJiBt aW5pbXVtICYmIHBhcnNlSW50KHN0YXJ0KSA8IHBhcnNlSW50KG1pbmltdW0p KSB7CisgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzdGFydCcs IHN0YXJ0X2x0KTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydF9sdDsKKyAg ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVs LnVuc2V0KCdzdGFydCcpOwogICAgICAgICAgIH0KLSAgICAgICAgICBlbHNl IGlmIChzdGFydCA+IG1heGltdW0pIHsKLSAgICAgICAgICAgIG1zZyA9IHN0 YXJ0X2d0Ci0gICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdzdGFy dCcsIG1zZyk7Ci0gICAgICAgICAgICByZXR1cm4gbXNnOworCisgICAgICAg ICAgaWYgKHN0YXJ0ICYmIG1heGltdW0gJiYgcGFyc2VJbnQoc3RhcnQpID4g cGFyc2VJbnQobWF4aW11bSkpIHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ3N0YXJ0Jywgc3RhcnRfZ3QpOworICAgICAgICAgICAgcmV0 dXJuIHN0YXJ0X2d0OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ3N0YXJ0Jyk7CiAgICAgICAgICAg fQogICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVy cy9yZXNvdXJjZV9ncm91cHMvdGVtcGxhdGVzL3Jlc291cmNlX2dyb3Vwcy9q cy9yZXNvdXJjZV9ncm91cHMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9yZXNvdXJjZV9ncm91cHMvdGVtcGxhdGVz L3Jlc291cmNlX2dyb3Vwcy9qcy9yZXNvdXJjZV9ncm91cHMuanMKaW5kZXgg M2NjODIyZS4uMjZlNjNiZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcmVzb3VyY2VfZ3JvdXBzL3Rl bXBsYXRlcy9yZXNvdXJjZV9ncm91cHMvanMvcmVzb3VyY2VfZ3JvdXBzLmpz CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL3Jlc291cmNlX2dyb3Vwcy90ZW1wbGF0ZXMvcmVzb3VyY2VfZ3JvdXBz L2pzL3Jlc291cmNlX2dyb3Vwcy5qcwpAQCAtODUsNTQgKzg1LDM1IEBAIGRl ZmluZSgKICAgICAgICAgICovCiAgICAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bihrZXlzKSB7CiAKLSAgICAgICAgICAvKiBDaGVjayB3aGV0aGVyICduYW1l JyBpcyBwcmVzZW50IGluICdrZXlzJywgaWYgaXQgaXMgcHJlc2VudAotICAg ICAgICAgICAqIGl0IG1lYW5zIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoYXQg ZmllbGQgZnJvbSB0aGUgR1VJLCBzbyB3ZQotICAgICAgICAgICAqIG5lZWQg dG8gdmFsaWRhdGUgaXQuCi0gICAgICAgICAgICovCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihrZXlzLCAnbmFtZScpID49IDApIHsKLSAgICAgICAgICAg IHZhciBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKLSAgICAgICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8IF8uaXNOdWxsKG5hbWUpIHx8Ci0g ICAgICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgICAgdmFyIG1zZyA9ICd7 eyBfKCdOYW1lIGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7Ci0gICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwotICAgICAg ICAgICAgICByZXR1cm4gbXNnOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCduYW1lJyk7Ci0g ICAgICAgICAgICB9CisgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLmdldCgn bmFtZScpOworICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpIHx8 IF8uaXNOdWxsKG5hbWUpIHx8CisgICAgICAgICAgICAgIFN0cmluZyhuYW1l KS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09ICcnKSB7CisgICAgICAg ICAgICB2YXIgbXNnID0gJ3t7IF8oJ05hbWUgY2Fubm90IGJlIGVtcHR5Licp IH19JzsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdu YW1lJyk7CiAgICAgICAgICAgfQogCi0gICAgICAgICAgLyogQ2hlY2sgd2hl dGhlciAnY3B1X3JhdGVfbGltaXQnIGlzIHByZXNlbnQgaW4gJ2tleXMnLCBp ZiBpdCBpcyBwcmVzZW50Ci0gICAgICAgICAgICogaXQgbWVhbnMgdGhlcmUg aXMgYSBjaGFuZ2UgaW4gdGhhdCBmaWVsZCBmcm9tIHRoZSBHVUksIHNvIHdl Ci0gICAgICAgICAgICogbmVlZCB0byB2YWxpZGF0ZSBpdC4KLSAgICAgICAg ICAgKi8KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKGtleXMsICdjcHVfcmF0 ZV9saW1pdCcpID49IDApIHsKLSAgICAgICAgICAgIHZhciBjcHVfcmF0ZV9s aW1pdCA9IHRoaXMuZ2V0KCdjcHVfcmF0ZV9saW1pdCcpOwotICAgICAgICAg ICAgaWYgKF8uaXNVbmRlZmluZWQoY3B1X3JhdGVfbGltaXQpIHx8IF8uaXNO dWxsKGNwdV9yYXRlX2xpbWl0KSB8fAotICAgICAgICAgICAgICAgIFN0cmlu ZyhjcHVfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgewotICAgICAgICAgICAgICB2YXIgbXNnID0gJ3t7IF8oJ0NQVSBy YXRlIGxpbWl0IGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7Ci0gICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2NwdV9yYXRlX2xpbWl0JywgbXNn KTsKLSAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgn Y3B1X3JhdGVfbGltaXQnKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICB2 YXIgY3B1X3JhdGVfbGltaXQgPSB0aGlzLmdldCgnY3B1X3JhdGVfbGltaXQn KTsKKyAgICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChjcHVfcmF0ZV9saW1p dCkgfHwgXy5pc051bGwoY3B1X3JhdGVfbGltaXQpIHx8CisgICAgICAgICAg ICAgIFN0cmluZyhjcHVfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccysk L2csICcnKSA9PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBf KCdDUFUgcmF0ZSBsaW1pdCBjYW5ub3QgYmUgZW1wdHkuJykgfX0nOworICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnY3B1X3JhdGVfbGltaXQn LCBtc2cpOworICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICB9 IGVsc2UgeworICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdj cHVfcmF0ZV9saW1pdCcpOwogICAgICAgICAgIH0KIAotICAgICAgICAgIC8q IENoZWNrIHdoZXRoZXIgJ2RpcnR5X3JhdGVfbGltaXQnIGlzIHByZXNlbnQg aW4gJ2tleXMnLCBpZiBpdCBpcyBwcmVzZW50Ci0gICAgICAgICAgICogaXQg bWVhbnMgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhhdCBmaWVsZCBmcm9tIHRo ZSBHVUksIHNvIHdlCi0gICAgICAgICAgICogbmVlZCB0byB2YWxpZGF0ZSBp dC4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBpZiAoXy5pbmRleE9mKGtl eXMsICdkaXJ0eV9yYXRlX2xpbWl0JykgPj0gMCkgewotICAgICAgICAgICAg dmFyIGRpcnR5X3JhdGVfbGltaXQgPSB0aGlzLmdldCgnZGlydHlfcmF0ZV9s aW1pdCcpOwotICAgICAgICAgICAgaWYgKF8uaXNVbmRlZmluZWQoZGlydHlf cmF0ZV9saW1pdCkgfHwgXy5pc051bGwoZGlydHlfcmF0ZV9saW1pdCkgfHwK LSAgICAgICAgICAgICAgU3RyaW5nKGRpcnR5X3JhdGVfbGltaXQpLnJlcGxh Y2UoL15ccyt8XHMrJC9nLCAnJykgPT0gJycpIHsKLSAgICAgICAgICAgICAg dmFyIG1zZyA9ICd7eyBfKCdEaXJ0eSByYXRlIGxpbWl0IGNhbm5vdCBiZSBl bXB0eS4nKSB9fSc7Ci0gICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2RpcnR5X3JhdGVfbGltaXQnLCBtc2cpOwotICAgICAgICAgICAgICBy ZXR1cm4gbXNnOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgdGhpcy5lcnJvck1vZGVsLnVuc2V0KCdkaXJ0eV9yYXRlX2xpbWl0Jyk7 Ci0gICAgICAgICAgICB9CisgICAgICAgICAgdmFyIGRpcnR5X3JhdGVfbGlt aXQgPSB0aGlzLmdldCgnZGlydHlfcmF0ZV9saW1pdCcpOworICAgICAgICAg IGlmIChfLmlzVW5kZWZpbmVkKGRpcnR5X3JhdGVfbGltaXQpIHx8IF8uaXNO dWxsKGRpcnR5X3JhdGVfbGltaXQpIHx8CisgICAgICAgICAgICBTdHJpbmco ZGlydHlfcmF0ZV9saW1pdCkucmVwbGFjZSgvXlxzK3xccyskL2csICcnKSA9 PSAnJykgeworICAgICAgICAgICAgdmFyIG1zZyA9ICd7eyBfKCdEaXJ0eSBy YXRlIGxpbWl0IGNhbm5vdCBiZSBlbXB0eS4nKSB9fSc7CisgICAgICAgICAg ICB0aGlzLmVycm9yTW9kZWwuc2V0KCdkaXJ0eV9yYXRlX2xpbWl0JywgbXNn KTsKKyAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnZGlydHlf cmF0ZV9saW1pdCcpOwogICAgICAgICAgIH0KLQogICAgICAgICAgIHJldHVy biBudWxsOwogICAgICAgICB9CiAgICAgICB9KQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvcm9sZXMv dGVtcGxhdGVzL3JvbGUvanMvcm9sZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3JvbGVzL3RlbXBsYXRlcy9yb2xl L2pzL3JvbGUuanMKaW5kZXggYTg1NDE2Yy4uYzc0Y2Q1OSAxMDA2NDQKLS0t IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv cm9sZXMvdGVtcGxhdGVzL3JvbGUvanMvcm9sZS5qcworKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9yb2xlcy90ZW1w bGF0ZXMvcm9sZS9qcy9yb2xlLmpzCkBAIC00MjcsNyArNDI3LDcgQEAgZnVu Y3Rpb24oJCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBhbGVydGlmeSwg QmFja2Zvcm0pIHsKICAgICAgICAgICBkZXBzOiBbJ3JvbGNhbmxvZ2luJ10s IG9wdGlvbnM6IHtmb3JtYXQ6ICdZWVlZLU1NLUREIEhIOm1tOnNzIFonfQog ICAgICAgICB9LHsKICAgICAgICAgICBpZDogJ3JvbGNvbm5saW1pdCcsICB0 eXBlOiAnaW50JywgZ3JvdXA6ICd7eyBfKCdEZWZpbml0aW9uJykgfX0nLAot ICAgICAgICAgIGxhYmVsOiAne3sgXygnQ29ubmVjdGlvbiBsaW1pdCcpIH19 JywgY2VsbDogJ251bWJlcicsCisgICAgICAgICAgbGFiZWw6ICd7eyBfKCdD b25uZWN0aW9uIGxpbWl0JykgfX0nLCBjZWxsOiAnbnVtYmVyJywgbWluIDog LTEsCiAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2VkaXQnLCAn Y3JlYXRlJ10sIGRpc2FibGVkOiAncmVhZG9ubHknCiAgICAgICAgIH0sewog ICAgICAgICAgIGlkOiAncm9sY2FubG9naW4nLCBsYWJlbDone3sgXygnQ2Fu IGxvZ2luPycpIH19JywgdHlwZTogJ3N3aXRjaCcsCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1w bGF0ZXMvc2VydmVycy9zZXJ2ZXJzLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdGVtcGxhdGVzL3NlcnZlcnMvc2Vy dmVycy5qcwppbmRleCA5ZWI4MmI4Li5iZjI4NDc0IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy90ZW1w bGF0ZXMvc2VydmVycy9zZXJ2ZXJzLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL3RlbXBsYXRlcy9zZXJ2ZXJz L3NlcnZlcnMuanMKQEAgLTcyNyw2ICs3MjcsOSBAQCBmdW5jdGlvbigkLCBf LCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5KSB7CiAgICAgICAg ICAgY2hlY2tfZm9yX2VtcHR5KAogICAgICAgICAgICAgJ3VzZXJuYW1lJywg J3t7IF8oJ1VzZXJuYW1lIG11c3QgYmUgc3BlY2lmaWVkLicpIH19JwogICAg ICAgICAgICk7CisgICAgICAgICAgY2hlY2tfZm9yX2VtcHR5KAorICAgICAg ICAgICAgJ3BvcnQnLCAne3sgXygnUG9ydCBtdXN0IGJlIHNwZWNpZmllZC4n KSB9fScKKyAgICAgICAgICApOwogICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoZXJyKTsKIAogICAgICAgICAgIGlmIChfLnNpemUoZXJyKSkgewpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0 YW1vZGVsLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZGF0 YW1vZGVsLmpzCmluZGV4IDViMWMzYTcuLmMzYjVmYWMgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2RhdGFtb2RlbC5qcwor KysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9kYXRhbW9kZWwu anMKQEAgLTEsNiArMSw2IEBACiBkZWZpbmUoCi0gICBbJ3VuZGVyc2NvcmUn LCAncGdhZG1pbicsICdqcXVlcnknLCAnYmFja2JvbmUnXSwKLWZ1bmN0aW9u KF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7CisgICBbJ3VuZGVyc2NvcmUn LCAndW5kZXJzY29yZS5zdHJpbmcnLCAncGdhZG1pbicsICdqcXVlcnknLCAn YmFja2JvbmUnXSwKK2Z1bmN0aW9uKF8sIFMsIHBnQWRtaW4sICQsIEJhY2ti b25lKSB7CiAgIHZhciBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJyb3dzZXIgPSBw Z0FkbWluLkJyb3dzZXIgfHwge307CiAKICAgcGdCcm93c2VyLkRhdGFNb2Rl bCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CkBAIC0xMzYsNiArMTM2LDcg QEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAg ICAgfQogCiAgICAgICAgIHNlbGYuc2Vzc0F0dHJzID0ge307CisgICAgICAg IHNlbGYuZmllbGREYXRhID0ge307CiAgICAgICAgIHNlbGYub3JpZ1Nlc3NB dHRycyA9IHt9OwogICAgICAgICBzZWxmLm9iamVjdHMgPSBbXTsKICAgICAg ICAgc2VsZi5hcnJheXMgPSBbXTsKQEAgLTE1Myw2ICsxNTQsMjMgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgICAg IF8uZWFjaChzY2hlbWEsIGZ1bmN0aW9uKHMpIHsKIAogICAgICAgICAgICAg ICBzd2l0Y2gocy50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnaW50 JzoKKyAgICAgICAgICAgICAgICBjYXNlICdudW1lcmljJzoKKyAgICAgICAg ICAgICAgICAgIHNlbGYuZmllbGREYXRhW3MuaWRdID0geworICAgICAgICAg ICAgICAgICAgICBsYWJlbDogcy5pZCwKKyAgICAgICAgICAgICAgICAgICAg dHlwZTogcy50eXBlLAorICAgICAgICAgICAgICAgICAgICBtaW46IHMubWlu IHx8IHVuZGVmaW5lZCwKKyAgICAgICAgICAgICAgICAgICAgbWF4OiBzLm1h eCB8fCB1bmRlZmluZWQKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cisg ICAgICAgICAgICAgICAgICBzZWxmLmZpZWxkRGF0YVtzLmlkXSA9IHsKKyAg ICAgICAgICAgICAgICAgICAgICBsYWJlbDogcy5pZCwKKyAgICAgICAgICAg ICAgICAgICAgICB0eXBlOiBzLnR5cGUKKyAgICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgc3dpdGNoKHMu dHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgJ2FycmF5JzoKICAgICAg ICAgICAgICAgICAgIHNlbGYuYXJyYXlzLnB1c2gocy5pZCk7CiAKQEAgLTI4 MCw2ICsyOTgsMTIgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2Jv bmUpIHsKICAgICAgIH0sCiAgICAgICBzZXNzVmFsaWQ6IGZ1bmN0aW9uKCkg ewogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgIC8vIFBlcmZv cm0gZGVmYXVsdCB2YWxpZGF0aW9ucy4KKyAgICAgICAgaWYgKCdkZWZhdWx0 X3ZhbGlkYXRlJyBpbiBzZWxmICYmIHR5cGVvZihzZWxmLmRlZmF1bHRfdmFs aWRhdGUpID09ICdmdW5jdGlvbicgJiYKKyAgICAgICAgICAgIF8uaXNTdHJp bmcoc2VsZi5kZWZhdWx0X3ZhbGlkYXRlKCkpKSB7CisgICAgICAgICAgcmV0 dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgaWYgKCd2YWxpZGF0 ZScgaW4gc2VsZiAmJiBfLmlzRnVuY3Rpb24oc2VsZi52YWxpZGF0ZSkgJiYK ICAgICAgICAgICAgIF8uaXNTdHJpbmcoc2VsZi52YWxpZGF0ZS5hcHBseShz ZWxmKSkpIHsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDEsOCAr MzI1LDkgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsK ICAgICAgICAgfQogCiAgICAgICAgIGlmIChrZXkgIT0gbnVsbCAmJiByZXMp IHsKLSAgICAgICAgICB2YXIgYXR0cnMgPSB7fTsKLSAgICAgICAgICB2YXIg c2VsZiA9IHRoaXM7CisgICAgICAgICAgdmFyIGF0dHJzID0ge30sCisgICAg ICAgICAgICAgIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICBtc2c7CiAK ICAgICAgICAgICBhdHRyQ2hhbmdlZCA9IGZ1bmN0aW9uKHYsIGspIHsKICAg ICAgICAgICAgIGlmIChrIGluIHNlbGYub2JqZWN0cykgewpAQCAtMzI3LDkg KzM1MiwxOCBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkg ewogICAgICAgICAgIGlmICghb3B0aW9ucyB8fCAhb3B0aW9ucy5zaWxlbnQp IHsKICAgICAgICAgICAgIHNlbGYudHJpZ2dlcignY2hhbmdlJywgc2VsZiwg b3B0aW9ucyk7CiAgICAgICAgICAgfQorCisgICAgICAgICAgLy8gUGVyZm9y bSBkZWZhdWx0IHZhbGlkYXRpb25zLgorCisgICAgICAgICAgaWYgKCdkZWZh dWx0X3ZhbGlkYXRlJyBpbiBzZWxmICYmIHR5cGVvZihzZWxmLmRlZmF1bHRf dmFsaWRhdGUpID09ICdmdW5jdGlvbicpIHsKKyAgICAgICAgICAgIG1zZyA9 IHNlbGYuZGVmYXVsdF92YWxpZGF0ZSgpOworICAgICAgICAgIH0KKwogICAg ICAgICAgIGlmICgndmFsaWRhdGUnIGluIHNlbGYgJiYgdHlwZW9mKHNlbGZb J3ZhbGlkYXRlJ10pID09PSAnZnVuY3Rpb24nKSB7CiAKLSAgICAgICAgICAg IHZhciBtc2cgPSBzZWxmLnZhbGlkYXRlKF8ua2V5cyhhdHRycykpOworICAg ICAgICAgICAgaWYgKCFtc2cpIHsKKyAgICAgICAgICAgICAgbXNnID0gc2Vs Zi52YWxpZGF0ZShfLmtleXMoYXR0cnMpKTsKKyAgICAgICAgICAgIH0KIAog ICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIElmIGFueSBwYXJlbnQg cHJlc2VudCwgd2Ugd2lsbCBuZWVkIHRvIGluZm9ybSB0aGUgcGFyZW50IC0g dGhhdApAQCAtNTYyLDYgKzU5NiwxMyBAQCBmdW5jdGlvbihfLCBwZ0FkbWlu LCAkLCBCYWNrYm9uZSkgewogCiAgICAgICAgICAgdmFyIG1zZyA9IG51bGws CiAgICAgICAgICAgICAgIHZhbGlkYXRlID0gZnVuY3Rpb24obSwgYXR0cnMp IHsKKyAgICAgICAgICAgICAgICBpZiAoJ2RlZmF1bHRfdmFsaWRhdGUnIGlu IG0gJiYgdHlwZW9mKG0uZGVmYXVsdF92YWxpZGF0ZSkgPT0gJ2Z1bmN0aW9u JykgeworICAgICAgICAgICAgICAgICAgbXNnID0gbS5kZWZhdWx0X3ZhbGlk YXRlKCk7CisgICAgICAgICAgICAgICAgICBpZiAoXy5pc1N0cmluZyhtc2cp KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtc2c7CisgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAg ICAgICAgaWYgKCd2YWxpZGF0ZScgaW4gbSAmJiB0eXBlb2YobS52YWxpZGF0 ZSkgPT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAgICAgICAgbXNnID0g bS52YWxpZGF0ZShhdHRycyk7CiAKQEAgLTY1NSw2ICs2OTYsNzkgQEAgZnVu Y3Rpb24oXywgcGdBZG1pbiwgJCwgQmFja2JvbmUpIHsKICAgICAgICAgfSk7 CiAKICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNlc3Npb246c3Rv cCcpOworICAgICAgfSwKKyAgICAgIGRlZmF1bHRfdmFsaWRhdGU6IGZ1bmN0 aW9uKCkgeworICAgICAgICB2YXIgbXNnLCBmaWVsZCwgdmFsdWUsIHR5cGU7 CisKKyAgICAgICAgZm9yICh2YXIgaSA9IDAsIGtleXMgPSBfLmtleXModGhp cy5hdHRyaWJ1dGVzKSwgbCA9IGtleXMubGVuZ3RoOworICAgICAgICAgICAg ICAgICBpPGw7CisgICAgICAgICAgICAgICAgIGkrKykgeworCisgICAgICAg ICAgdmFsdWUgPSB0aGlzLmF0dHJpYnV0ZXNba2V5c1tpXV07CisgICAgICAg ICAgZmllbGQgID0gdGhpcy5maWVsZERhdGFba2V5c1tpXV0KKyAgICAgICAg ICBtc2cgPSBudWxsOworCisgICAgICAgICAgaWYgKCEoXy5pc1VuZGVmaW5l ZCh2YWx1ZSkgfHwgXy5pc051bGwodmFsdWUpIHx8CisgICAgICAgICAgICAg ICAgU3RyaW5nKHZhbHVlKS5yZXBsYWNlKC9eXHMrfFxzKyQvZywgJycpID09 ICcnKSkgeworCisgICAgICAgICAgICBpZiAoIWZpZWxkKSB7CisgICAgICAg ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAg ICB0eXBlID0gZmllbGQudHlwZSB8fCB1bmRlZmluZWQ7CisgICAgICAgICAg ICBpZiAoIXR5cGUpIHsKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCh0eXBlKSB7CisgICAg ICAgICAgICAgIGNhc2UgJ2ludCc6CisgICAgICAgICAgICAgICAgbXNnID0g dGhpcy5pbnRlZ2VyX3ZhbGlkYXRlKHZhbHVlLCBmaWVsZCk7CisgICAgICAg ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgJ251bWVyaWMn OgorICAgICAgICAgICAgICAgIG1zZyA9IHRoaXMubnVtYmVyX3ZhbGlkYXRl KHZhbHVlLCBmaWVsZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtc2cpIHsKKyAgICAgICAg ICAgICAgdGhpcy5lcnJvck1vZGVsLnNldChmaWVsZC5sYWJlbCwgbXNnKTsK KyAgICAgICAgICAgICAgcmV0dXJuIG1zZzsKKyAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldChmaWVs ZC5sYWJlbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIGlmIChmaWVsZCkgeworICAgICAgICAgICAgICB0aGlz LmVycm9yTW9kZWwudW5zZXQoZmllbGQubGFiZWwpOworICAgICAgICAgICAg fQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVs bDsKKyAgICAgIH0sCisKKyAgICAgIGNoZWNrX21pbl9tYXg6IGZ1bmN0aW9u ICh2YWx1ZSwgZmllbGQpIHsKKyAgICAgICAgdmFyIGxhYmVsID0gZmllbGQu bGFiZWwsCisgICAgICAgICAgICBtaW5fdmFsdWUgPSBmaWVsZC5taW4sCisg ICAgICAgICAgICBtYXhfdmFsdWUgPSAgZmllbGQubWF4OworCisgICAgICAg IGlmIChtaW5fdmFsdWUgJiYgdmFsdWUgPCBtaW5fdmFsdWUpIHsKKyAgICAg ICAgICByZXR1cm4gUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9H Ul9FUSkuc3ByaW50ZihsYWJlbCwgbWluX3ZhbHVlKS52YWx1ZSgpOworICAg ICAgICB9IGVsc2UgaWYgKG1heF92YWx1ZSAmJiB2YWx1ZSA+IG1heF92YWx1 ZSkgeworICAgICAgICAgIHJldHVybiBTKHBnQWRtaW4uQnJvd3Nlci5tZXNz YWdlcy5NVVNUX0xFU1NfRVEpLnNwcmludGYobGFiZWwsIG1heF92YWx1ZSku dmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAg ICAgIH0sCisgICAgICBudW1iZXJfdmFsaWRhdGU6IGZ1bmN0aW9uICh2YWx1 ZSwgZmllbGQpIHsKKyAgICAgICAgdmFyIHBhdHRlcm4gPSBuZXcgUmVnRXhw KCJeLT9bMC05XSsoXC4/WzAtOV0qKT8kIik7CisgICAgICAgIGlmICghcGF0 dGVybi50ZXN0KHZhbHVlKSkgeworICAgICAgICAgIHJldHVybiBTKHBnQWRt aW4uQnJvd3Nlci5tZXNzYWdlcy5NVVNUX0JFX05VTSkuc3ByaW50ZihmaWVs ZC5sYWJlbCkudmFsdWUoKQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0 aGlzLmNoZWNrX21pbl9tYXgodmFsdWUsIGZpZWxkKQorICAgICAgfSwKKyAg ICAgIGludGVnZXJfdmFsaWRhdGU6IGZ1bmN0aW9uKHZhbHVlLCBmaWVsZCkg eworICAgICAgICB2YXIgcGF0dGVybiA9IG5ldyBSZWdFeHAoIl4tP1swLTld KiQiKTsKKyAgICAgICAgaWYgKCFwYXR0ZXJuLnRlc3QodmFsdWUpKSB7Cisg ICAgICAgICAgcmV0dXJuIFMocGdBZG1pbi5Ccm93c2VyLm1lc3NhZ2VzLk1V U1RfQkVfSU5UKS5zcHJpbnRmKGZpZWxkLmxhYmVsKS52YWx1ZSgpCisgICAg ICAgIH0KKyAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tfbWluX21heCh2YWx1 ZSwgZmllbGQpCiAgICAgICB9CiAgICAgfSk7CiAKQEAgLTY5Niw3ICs4MTAs OCBAQCBmdW5jdGlvbihfLCBwZ0FkbWluLCAkLCBCYWNrYm9uZSkgewogICAg ICAgICByZXR1cm4gc2VsZjsKICAgICAgIH0sCiAgICAgICBzdGFydE5ld1Nl c3Npb246IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7 CisgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgIG1zZzsK IAogICAgICAgICBpZiAoc2VsZi50cmFja0NoYW5nZXMpIHsKICAgICAgICAg ICAvLyBXZSdyZSBzdG9wcGluZyB0aGUgZXhpc3Rpbmcgc2Vzc2lvbi4KQEAg LTcxOCw4ICs4MzMsMTUgQEAgZnVuY3Rpb24oXywgcGdBZG1pbiwgJCwgQmFj a2JvbmUpIHsKICAgICAgICAgICBpZiAoJ3N0YXJ0TmV3U2Vzc2lvbicgaW4g bSAmJiBfLmlzRnVuY3Rpb24obS5zdGFydE5ld1Nlc3Npb24pKSB7CiAgICAg ICAgICAgICBtLnN0YXJ0TmV3U2Vzc2lvbigpOwogICAgICAgICAgIH0KLSAg ICAgICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBtICYmIHR5cGVvZihtLnZhbGlk YXRlKSA9PT0gJ2Z1bmN0aW9uJykgewotICAgICAgICAgICAgdmFyIG1zZyA9 IG0udmFsaWRhdGUoKTsKKworICAgICAgICAgIGlmICgnZGVmYXVsdF92YWxp ZGF0ZScgaW4gbSAmJiB0eXBlb2YobS5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAn ZnVuY3Rpb24nKSB7CisgICAgICAgICAgICBtc2cgPSBtLmRlZmF1bHRfdmFs aWRhdGUoKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoXy5pc1N0 cmluZyhtc2cpKSB7CisgICAgICAgICAgICBzZWxmLnNlc3NBdHRyc1snaW52 YWxpZCddW20uY2lkXSA9IG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKCd2 YWxpZGF0ZScgaW4gbSAmJiB0eXBlb2YobS52YWxpZGF0ZSkgPT09ICdmdW5j dGlvbicpIHsKKyAgICAgICAgICAgIG1zZyA9IG0udmFsaWRhdGUoKTsKIAog ICAgICAgICAgICAgaWYgKG1zZykgewogICAgICAgICAgICAgICBzZWxmLnNl c3NBdHRyc1snaW52YWxpZCddW20uY2lkXSA9IG1zZzsKQEAgLTkwMCw3ICsx MDIyLDE0IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4sICQsIEJhY2tib25lKSB7 CiAKICAgICAgICAgICAoc2VsZi5oYW5kbGVyIHx8IHNlbGYpLnRyaWdnZXIo J3BnYWRtaW4tc2Vzc2lvbjphZGRlZCcsIHNlbGYsIG9iaik7CiAKLSAgICAg ICAgICBpZiAoJ3ZhbGlkYXRlJyBpbiBvYmogJiYgdHlwZW9mKG9iai52YWxp ZGF0ZSkgPT09ICdmdW5jdGlvbicpIHsKKworICAgICAgICAgIGlmICgnZGVm YXVsdF92YWxpZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmouZGVmYXVsdF92 YWxpZGF0ZSkgPT0gJ2Z1bmN0aW9uJykgeworICAgICAgICAgICAgbXNnID0g b2JqLmRlZmF1bHRfdmFsaWRhdGUoKTsKKyAgICAgICAgICB9CisKKyAgICAg ICAgICBpZiAoXy5pc1N0cmluZyhtc2cpKSB7CisgICAgICAgICAgICAoc2Vs Zi5zZXNzQXR0cnNbJ2ludmFsaWQnXSlbb2JqLmNpZF0gPSBtc2c7CisgICAg ICAgICAgfSBlbHNlIGlmICgndmFsaWRhdGUnIGluIG9iaiAmJiB0eXBlb2Yo b2JqLnZhbGlkYXRlKSA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICAg bXNnID0gb2JqLnZhbGlkYXRlKCk7CiAKICAgICAgICAgICAgIGlmIChtc2cp IHsKQEAgLTkwOCw3ICsxMDM3LDE0IEBAIGZ1bmN0aW9uKF8sIHBnQWRtaW4s ICQsIEJhY2tib25lKSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQog ICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGlmICgndmFsaWRhdGUnIGlu IG9iaiAmJiB0eXBlb2Yob2JqLnZhbGlkYXRlKSA9PT0gJ2Z1bmN0aW9uJykg eworCisgICAgICAgICAgaWYgKCdkZWZhdWx0X3ZhbGlkYXRlJyBpbiBvYmog JiYgdHlwZW9mKG9iai5kZWZhdWx0X3ZhbGlkYXRlKSA9PSAnZnVuY3Rpb24n KSB7CisgICAgICAgICAgICBtc2cgPSBvYmouZGVmYXVsdF92YWxpZGF0ZSgp OworICAgICAgICAgIH0KKworICAgICAgICAgIGlmIChfLmlzU3RyaW5nKG1z ZykpIHsKKyAgICAgICAgICAgIChzZWxmLnNlc3NBdHRyc1snaW52YWxpZCdd KVtvYmouY2lkXSA9IG1zZzsKKyAgICAgICAgICB9IGVsc2UgaWYgKCd2YWxp ZGF0ZScgaW4gb2JqICYmIHR5cGVvZihvYmoudmFsaWRhdGUpID09PSAnZnVu Y3Rpb24nKSB7CiAgICAgICAgICAgICBtc2cgPSBvYmoudmFsaWRhdGUoKTsK IAogICAgICAgICAgICAgaWYgKG1zZykgewpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwppbmRleCA1NTM2 NzZlLi5jZjQxMjk3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwpAQCAtMTQ5MSwxMTUgKzE0OTEs MTMgQEAKIAogICAgICAgQmFja2Zvcm0uQ29udHJvbC5fX3N1cGVyX18ucmVt b3ZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgfQotfSk7Ci0KLSAg LyoKLSAgICogSW50ZWdlciBpbnB1dCBDb250cm9sIGZ1bmN0aW9uYWxpdHkg anVzdCBsaWtlIGJhY2tncmlkCi0gICAqLwotICB2YXIgSW50ZWdlckNvbnRy b2wgPSBCYWNrZm9ybS5JbnRlZ2VyQ29udHJvbCA9IEJhY2tmb3JtLklucHV0 Q29udHJvbC5leHRlbmQoewotICAgIGRlZmF1bHRzOiB7Ci0gICAgICB0eXBl OiAibnVtYmVyIiwKLSAgICAgIGxhYmVsOiAiIiwKLSAgICAgIG1pbjogdW5k ZWZpbmVkLAotICAgICAgbWF4OiB1bmRlZmluZWQsCi0gICAgICBtYXhsZW5n dGg6IDI1NSwKLSAgICAgIGV4dHJhQ2xhc3NlczogW10sCi0gICAgICBoZWxw TWVzc2FnZTogbnVsbAotICAgIH0sCi0gICAgdGVtcGxhdGU6IF8udGVtcGxh dGUoWwotICAgICAgJzxsYWJlbCBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJv bExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48L2xhYmVsPicsCi0gICAg ICAnPGRpdiBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbHNDbGFzc05hbWUl PiI+JywKLSAgICAgICcgIDxpbnB1dCB0eXBlPSI8JT10eXBlJT4iIGNsYXNz PSI8JT1CYWNrZm9ybS5jb250cm9sQ2xhc3NOYW1lJT4gPCU9ZXh0cmFDbGFz c2VzLmpvaW4oXCcgXCcpJT4iIG5hbWU9IjwlPW5hbWUlPiIgbWluPSI8JT1t aW4lPiIgbWF4PSI8JT1tYXglPiJtYXhsZW5ndGg9IjwlPW1heGxlbmd0aCU+ IiB2YWx1ZT0iPCUtdmFsdWUlPiIgcGxhY2Vob2xkZXI9IjwlLXBsYWNlaG9s ZGVyJT4iIDwlPWRpc2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4gPCU9cmVx dWlyZWQgPyAicmVxdWlyZWQiIDogIiIlPiAvPicsCi0gICAgICAnICA8JSBp ZiAoaGVscE1lc3NhZ2UgJiYgaGVscE1lc3NhZ2UubGVuZ3RoKSB7ICU+JywK LSAgICAgICcgICAgPHNwYW4gY2xhc3M9IjwlPUJhY2tmb3JtLmhlbHBNZXNz YWdlQ2xhc3NOYW1lJT4iPjwlPWhlbHBNZXNzYWdlJT48L3NwYW4+JywKLSAg ICAgICcgIDwlIH0gJT4nLAotICAgICAgJzwvZGl2PicKLSAgICBdLmpvaW4o IlxuIikpLAotICAgIGV2ZW50czogewotICAgICAgImNoYW5nZSBpbnB1dCI6 ICJjaGVja0ludCIsCi0gICAgICAiZm9jdXMgaW5wdXQiOiAiY2xlYXJJbnZh bGlkIgotICAgIH0sCi0gICAgY2hlY2tJbnQ6IGZ1bmN0aW9uKGUpIHsKLSAg ICAgIHZhciBmaWVsZCA9IF8uZGVmYXVsdHModGhpcy5maWVsZC50b0pTT04o KSwgdGhpcy5kZWZhdWx0cyksCi0gICAgICAgICAgYXR0ckFyciA9IHRoaXMu ZmllbGQuZ2V0KCJuYW1lIikuc3BsaXQoJy4nKSwKLSAgICAgICAgICBuYW1l ID0gYXR0ckFyci5zaGlmdCgpLAotICAgICAgICAgIHZhbHVlID0gdGhpcy5n ZXRWYWx1ZUZyb21ET00oKSwKLSAgICAgICAgICBtaW5fdmFsdWUgPSBmaWVs ZC5taW4sCi0gICAgICAgICAgbWF4X3ZhbHVlID0gZmllbGQubWF4LAotICAg ICAgICAgIGlzVmFsaWQgPSB0cnVlLAotICAgICAgICAgIGludFBhdHRlcm4g PSBuZXcgUmVnRXhwKCJeLT9bMC05XSokIiksCi0gICAgICAgICAgaXNNYXRj aGVkID0gaW50UGF0dGVybi50ZXN0KHZhbHVlKTsKLQotICAgICAgLy8gQmVs b3cgbG9naWMgd2lsbCB2YWxpZGF0ZSBpbnB1dAotICAgICAgaWYgKCFpc01h dGNoZWQpIHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwotICAgICAgICB0 aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0gICAgICAgIHRo aXMubW9kZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAgICBuYW1lLAot ICAgICAgICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMuTVVTVF9C RV9JTlQpLnNwcmludGYoCi0gICAgICAgICAgICAgIGZpZWxkLmxhYmVsCi0g ICAgICAgICAgICAgICkudmFsdWUoKQotICAgICAgICAgICAgKTsKLSAgICAg IH0KLQotICAgICAgLy8gQmVsb3cgd2lsbCBjaGVjayBpZiBlbnRlcmVkIHZh bHVlIGlzIGluLWJldHdlZW4gbWluICYgbWF4IHJhbmdlCi0gICAgICBpZiAo aXNWYWxpZCAmJiAoIV8uaXNVbmRlZmluZWQobWluX3ZhbHVlKSAmJiB2YWx1 ZSA8IG1pbl92YWx1ZSkpIHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwot ICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0g ICAgICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAg ICBuYW1lLAotICAgICAgICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2Fn ZXMuTVVTVF9HUl9FUSkuc3ByaW50ZigKLSAgICAgICAgICAgICAgZmllbGQu bGFiZWwsCi0gICAgICAgICAgICAgIG1pbl92YWx1ZQotICAgICAgICAgICAg ICApLnZhbHVlKCkKLSAgICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAg IGlmIChpc1ZhbGlkICYmICghXy5pc1VuZGVmaW5lZChtYXhfdmFsdWUpICYm IHZhbHVlID4gbWF4X3ZhbHVlKSkgewotICAgICAgICBpc1ZhbGlkID0gZmFs c2U7Ci0gICAgICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC51bnNldChuYW1l KTsKLSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnNldCgKLSAgICAg ICAgICAgIG5hbWUsCi0gICAgICAgICAgICBTKHBnQWRtaW4uQnJvd3Nlci5t ZXNzYWdlcy5NVVNUX0xFU1NfRVEpLnNwcmludGYoCi0gICAgICAgICAgICAg IGZpZWxkLmxhYmVsLAotICAgICAgICAgICAgICBtYXhfdmFsdWUKLSAgICAg ICAgICAgICAgKS52YWx1ZSgpCi0gICAgICAgICAgICApOwotICAgICAgfQot Ci0gICAgICAvLyBBZnRlciB2YWxpZGF0aW9uIHdlIG5lZWQgdG8gc2V0IHRo YXQgdmFsdWUgaW50byBtb2RlbCAob25seSBpZiBhbGwgZmxhZ3MgYXJlIHRy dWUpCi0gICAgICBpZiAoaXNWYWxpZCkgewotICAgICAgICB0aGlzLnN0b3BM aXN0ZW5pbmcodGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwgdGhpcy5y ZW5kZXIpOwotICAgICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQo bmFtZSk7Ci0gICAgICAgIHRoaXMubW9kZWwuc2V0KG5hbWUsIHZhbHVlKTsK LSAgICAgICAgdGhpcy5saXN0ZW5Ubyh0aGlzLm1vZGVsLCAiY2hhbmdlOiIg KyBuYW1lLCB0aGlzLnJlbmRlcik7Ci0gICAgICAgIGlmICh0aGlzLm1vZGVs LmNvbGxlY3Rpb24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKSB7Ci0gICAgICAg ICAgKHRoaXMubW9kZWwuY29sbGVjdGlvbiB8fCB0aGlzLm1vZGVsLmhhbmRs ZXIpLnRyaWdnZXIoCi0gICAgICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjpt b2RlbDp2YWxpZCcsIHRoaXMubW9kZWwsICh0aGlzLm1vZGVsLmNvbGxlY3Rp b24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKQotICAgICAgICAgICAgKTsKLSAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAodGhpcy5tb2RlbCkudHJpZ2dl cigKLSAgICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9uOnZhbGlkJywgdGhp cy5tb2RlbC5zZXNzQ2hhbmdlZCgpLCB0aGlzLm1vZGVsCi0gICAgICAgICAg ICApOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAo dGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikg ewotICAgICAgICAgICh0aGlzLm1vZGVsLmNvbGxlY3Rpb24gfHwgdGhpcy5t b2RlbC5oYW5kbGVyKS50cmlnZ2VyKAotICAgICAgICAgICAgICdwZ2FkbWlu LXNlc3Npb246bW9kZWw6aW52YWxpZCcsIHRoaXMubW9kZWwuZXJyb3JNb2Rl bC5nZXQobmFtZSksIHRoaXMubW9kZWwKLSAgICAgICAgICAgICk7Ci0gICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgKHRoaXMubW9kZWwpLnRyaWdnZXIo Ci0gICAgICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjppbnZhbGlkJywgdGhp cy5tb2RlbC5lcnJvck1vZGVsLmdldChuYW1lKSwgdGhpcy5tb2RlbAotICAg ICAgICAgICAgKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KICAgfSk7 CiAKICAgIC8qCiAgICAqIE51bWVyaWMgaW5wdXQgQ29udHJvbCBmdW5jdGlv bmFsaXR5IGp1c3QgbGlrZSBiYWNrZ3JpZAogICAgKi8KICAgdmFyIE51bWVy aWNDb250cm9sID0gQmFja2Zvcm0uTnVtZXJpY0NvbnRyb2wgPSBCYWNrZm9y bS5JbnB1dENvbnRyb2wuZXh0ZW5kKHsKKwogICAgIGRlZmF1bHRzOiB7CiAg ICAgICB0eXBlOiAibnVtYmVyIiwKICAgICAgIGxhYmVsOiAiIiwKQEAgLTE2 MTcsODYgKzE1MTUsNyBAQAogICAgICAgJyAgICA8c3BhbiBjbGFzcz0iPCU9 QmFja2Zvcm0uaGVscE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3Nh Z2UlPjwvc3Bhbj4nLAogICAgICAgJyAgPCUgfSAlPicsCiAgICAgICAnPC9k aXY+JwotICAgIF0uam9pbigiXG4iKSksCi0gICAgZXZlbnRzOiB7Ci0gICAg ICAiY2hhbmdlIGlucHV0IjogImNoZWNrTnVtZXJpYyIsCi0gICAgICAiZm9j dXMgaW5wdXQiOiAiY2xlYXJJbnZhbGlkIgotICAgIH0sCi0gICAgY2hlY2tO dW1lcmljOiBmdW5jdGlvbihlKSB7Ci0gICAgICB2YXIgZmllbGQgPSBfLmRl ZmF1bHRzKHRoaXMuZmllbGQudG9KU09OKCksIHRoaXMuZGVmYXVsdHMpLAot ICAgICAgICAgIGF0dHJBcnIgPSB0aGlzLmZpZWxkLmdldCgibmFtZSIpLnNw bGl0KCcuJyksCi0gICAgICAgICAgbmFtZSA9IGF0dHJBcnIuc2hpZnQoKSwK LSAgICAgICAgICB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGcm9tRE9NKCksCi0g ICAgICAgICAgbWluX3ZhbHVlID0gZmllbGQubWluLAotICAgICAgICAgIG1h eF92YWx1ZSA9IGZpZWxkLm1heCwKLSAgICAgICAgICBpc1ZhbGlkID0gdHJ1 ZSwKLSAgICAgICAgICBpbnRQYXR0ZXJuID0gbmV3IFJlZ0V4cCgiXi0/WzAt OV0rKFwuP1swLTldKik/JCIpLAotICAgICAgICAgIGlzTWF0Y2hlZCA9IGlu dFBhdHRlcm4udGVzdCh2YWx1ZSk7Ci0KLSAgICAgIC8vIEJlbG93IGxvZ2lj IHdpbGwgdmFsaWRhdGUgaW5wdXQKLSAgICAgIGlmICghaXNNYXRjaGVkKSB7 Ci0gICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAgdGhpcy5tb2Rl bC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB0aGlzLm1vZGVs LmVycm9yTW9kZWwuc2V0KAotICAgICAgICAgICAgbmFtZSwKLSAgICAgICAg ICAgIFMocGdBZG1pbi5Ccm93c2VyLm1lc3NhZ2VzLk1VU1RfQkVfTlVNKS5z cHJpbnRmKAotICAgICAgICAgICAgICBmaWVsZC5sYWJlbAotICAgICAgICAg ICAgICApLnZhbHVlKCkKLSAgICAgICAgICAgICk7Ci0gICAgICB9Ci0KLSAg ICAgIC8vIEJlbG93IHdpbGwgY2hlY2sgaWYgZW50ZXJlZCB2YWx1ZSBpcyBp bi1iZXR3ZWVuIG1pbiAmIG1heCByYW5nZQotICAgICAgaWYgKGlzVmFsaWQg JiYgKCFfLmlzVW5kZWZpbmVkKG1pbl92YWx1ZSkgJiYgdmFsdWUgPCBtaW5f dmFsdWUpKSB7Ci0gICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKLSAgICAgICAg dGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwotICAgICAgICB0 aGlzLm1vZGVsLmVycm9yTW9kZWwuc2V0KAotICAgICAgICAgICAgbmFtZSwK LSAgICAgICAgICAgIFMocGdBZG1pbi5Ccm93c2VyLm1lc3NhZ2VzLk1VU1Rf R1JfRVEpLnNwcmludGYoCi0gICAgICAgICAgICAgIGZpZWxkLmxhYmVsLAot ICAgICAgICAgICAgICBtaW5fdmFsdWUKLSAgICAgICAgICAgICAgKS52YWx1 ZSgpCi0gICAgICAgICAgICApOwotICAgICAgfQotCi0gICAgICBpZiAoaXNW YWxpZCAmJiAoIV8uaXNVbmRlZmluZWQobWF4X3ZhbHVlKSAmJiB2YWx1ZSA+ IG1heF92YWx1ZSkpIHsKLSAgICAgICAgaXNWYWxpZCA9IGZhbHNlOwotICAg ICAgICB0aGlzLm1vZGVsLmVycm9yTW9kZWwudW5zZXQobmFtZSk7Ci0gICAg ICAgIHRoaXMubW9kZWwuZXJyb3JNb2RlbC5zZXQoCi0gICAgICAgICAgICBu YW1lLAotICAgICAgICAgICAgUyhwZ0FkbWluLkJyb3dzZXIubWVzc2FnZXMu TVVTVF9MRVNTX0VRKS5zcHJpbnRmKAotICAgICAgICAgICAgICBmaWVsZC5s YWJlbCwKLSAgICAgICAgICAgICAgbWF4X3ZhbHVlCi0gICAgICAgICAgICAg ICkudmFsdWUoKQotICAgICAgICAgICAgKTsKLSAgICAgIH0KLQotICAgICAg Ly8gQWZ0ZXIgdmFsaWRhdGlvbiB3ZSBuZWVkIHRvIHNldCB0aGF0IHZhbHVl IGludG8gbW9kZWwgKG9ubHkgaWYgYWxsIGZsYWdzIGFyZSB0cnVlKQotICAg ICAgaWYgKGlzVmFsaWQpIHsKLSAgICAgICAgdGhpcy5zdG9wTGlzdGVuaW5n KHRoaXMubW9kZWwsICJjaGFuZ2U6IiArIG5hbWUsIHRoaXMucmVuZGVyKTsK LSAgICAgICAgdGhpcy5tb2RlbC5lcnJvck1vZGVsLnVuc2V0KG5hbWUpOwot ICAgICAgICB0aGlzLm1vZGVsLnNldChuYW1lLCB2YWx1ZSk7Ci0gICAgICAg IHRoaXMubGlzdGVuVG8odGhpcy5tb2RlbCwgImNoYW5nZToiICsgbmFtZSwg dGhpcy5yZW5kZXIpOwotICAgICAgICBpZiAodGhpcy5tb2RlbC5jb2xsZWN0 aW9uIHx8IHRoaXMubW9kZWwuaGFuZGxlcikgewotICAgICAgICAgICh0aGlz Lm1vZGVsLmNvbGxlY3Rpb24gfHwgdGhpcy5tb2RlbC5oYW5kbGVyKS50cmln Z2VyKAotICAgICAgICAgICAgICdwZ2FkbWluLXNlc3Npb246bW9kZWw6dmFs aWQnLCB0aGlzLm1vZGVsLCAodGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRo aXMubW9kZWwuaGFuZGxlcikKLSAgICAgICAgICAgICk7Ci0gICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgKHRoaXMubW9kZWwpLnRyaWdnZXIoCi0gICAg ICAgICAgICAgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcsIHRoaXMubW9kZWwu c2Vzc0NoYW5nZWQoKSwgdGhpcy5tb2RlbAotICAgICAgICAgICAgKTsKLSAg ICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRoaXMubW9k ZWwuY29sbGVjdGlvbiB8fCB0aGlzLm1vZGVsLmhhbmRsZXIpIHsKLSAgICAg ICAgICAodGhpcy5tb2RlbC5jb2xsZWN0aW9uIHx8IHRoaXMubW9kZWwuaGFu ZGxlcikudHJpZ2dlcigKLSAgICAgICAgICAgICAncGdhZG1pbi1zZXNzaW9u Om1vZGVsOmludmFsaWQnLCB0aGlzLm1vZGVsLmVycm9yTW9kZWwuZ2V0KG5h bWUpLCB0aGlzLm1vZGVsCi0gICAgICAgICAgICApOwotICAgICAgICB9IGVs c2UgewotICAgICAgICAgICh0aGlzLm1vZGVsKS50cmlnZ2VyKAotICAgICAg ICAgICAgICdwZ2FkbWluLXNlc3Npb246aW52YWxpZCcsIHRoaXMubW9kZWwu ZXJyb3JNb2RlbC5nZXQobmFtZSksIHRoaXMubW9kZWwKLSAgICAgICAgICAg ICk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9CisgICAgXS5qb2luKCJc biIpKQogICB9KTsKIAogICAvLy8vLy8vCg== --001a1140c8388925420550a69675 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a1140c8388925420550a69675--