Received: from malur.postgresql.org ([2a02:16a8:dc51::56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.89) (envelope-from ) id 1fLkE1-00073J-GQ for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 May 2018 06:59:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1fLkE0-0003mR-6f for pgadmin-hackers@arkaria.postgresql.org; Thu, 24 May 2018 06:59:48 +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.89) (envelope-from ) id 1fLkDz-0003mH-MM for pgadmin-hackers@lists.postgresql.org; Thu, 24 May 2018 06:59:47 +0000 Received: from mail-oi0-x236.google.com ([2607:f8b0:4003:c06::236]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1fLkDr-0006A5-JU for pgadmin-hackers@postgresql.org; Thu, 24 May 2018 06:59:46 +0000 Received: by mail-oi0-x236.google.com with SMTP id p62-v6so505005oie.10 for ; Wed, 23 May 2018 23:59:39 -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=MCbo+FT32XrAP5xBj0E0G1I3F3Tg2Ki9kdZ9NcxdfeM=; b=WjU6OXCWPwhodlDsahME1VPqMqQ3nTd4n/PnRr5he0qL97EdpJ0yp5OmuySQeUKGlh 0vSn2SjKXE75r3wLyct0Jo+yC+BtfKBO0F6Z4gfxs/gY5RBMoXpQ89WmjL6vJeQ3TCGO h1B+pb8Xuc6/zCMFTPIj8iLH+LFV3LYpCCGgBgRoH4PeLJY3h4+2vLWpdd9HUK88aKoP UukqL5r+91+dTfT/7FWCGQYvpuig4Wg7sfMvB3YM2GJg4dJ17N5TBTXrv9ne2DEHF3fj tov2R/Gn/fpk+MpGoINSiAOiP0BJVB1iMwnp8URyTpuqMJKDtEqPb5+kNckEel3urlsS L2lA== 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=MCbo+FT32XrAP5xBj0E0G1I3F3Tg2Ki9kdZ9NcxdfeM=; b=kG5zzzK6hzDviCqJr00wRZkN28D7oX41UEFmXd+6LzmbVl425roK/kTB6CO5WRsI6H RjFS7J0W0tQyjZ1pKKiX2nnAunQJ31n2adyyOvDqRZKbGkJCPvH98fdJPaWe9W1Pd/D5 K1j5JZOPM6+3bFUsQ+bXtm0S8Pe5oBoKgZke4aRV3Qss3Ra5Qr9RUAGm8v+x2/BLLRoy Vfdyje43avI2Q4Y/QQ0onGgCT8G1z5XgQ+oGmfnLp/o/zH/+zrIllg/dHy2Bfh8rPjhH EavNiOaemJAwryU8sJqJwCNtYz2MeLM7tSU0ovP3t8l5d9VF6oHCrxYEg8PkPpj8ZU0H lnnQ== X-Gm-Message-State: ALKqPwdVxW41PsJzGdSe6n7uaVEh+vQ/4jIdwdJXIsKuvqlxQ9EnWzU1 elkTcejSLGQtgnC1J83fuC9ySH8j17N8KzsCQqIdTQ== X-Google-Smtp-Source: AB8JxZqRS23sivo8Ov7w/Xf5Q0yNDH0q/db5bXdKcEJzkfwoG2YsplOdNaOHdkjmnbl4zjxZ2aQVD/AhvlH/VyMICoU= X-Received: by 2002:aca:bac2:: with SMTP id k185-v6mr3461763oif.269.1527145177232; Wed, 23 May 2018 23:59:37 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a8a:582:0:0:0:0:0 with HTTP; Wed, 23 May 2018 23:59:16 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Thu, 24 May 2018 12:29:16 +0530 Message-ID: Subject: Re: [pgadmin4][patch] Initial patch to decouple from ACI Tree To: Anthony Emengo Cc: Joao De Almeida Pereira , Dave Page , Akshay Joshi , Murtuza Zabuawala , pgadmin-hackers , Khushboo Vashi Content-Type: multipart/mixed; boundary="000000000000cf7a62056cee3172" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --000000000000cf7a62056cee3172 Content-Type: multipart/alternative; boundary="000000000000cf7a5e056cee3170" --000000000000cf7a5e056cee3170 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sorry for the late reply. On Wed, May 16, 2018 at 8:55 PM, Anthony Emengo wrote: > export function canCreate(pgBrowser, childOfCatalogType) { > return canCreateObject.bind({ > browser: pgBrowser, > childOfCatalogType: childOfCatalogType, > }); > } > > With respect to the above code: this bind pattern looks good and seems > like the idiomatic way to handle this in JavaScript. On a lighter node, I > don=E2=80=99t even see the need for an additional method to wrap it. The = invocation > could have easily been like canCreate: canCreateObject.bind({ browser: > pgBrowser, childOfCatalogType: childOfCatalogType }), I don=E2=80=99t fee= l too > strongly here. > I do agree - we can handle the same problem many ways. I prefer object oriented pardigm more in general. Any way - I have modified the code with some other changes. > I renamed it as isValidTreeNodeData, because - we were using it in for > testing the tree data. Please suggest me the right place, and name. > > We=E2=80=99re not sure; maybe after continued refactoring, we will come a= cross > more generic functions. At that point we can revisit this and create a > utils.js file. > Sure. > The original patch was separating them in different places, but - still > uses some of the functionalities directly from the tree, which was > happening because we have contextual menu. > To give a better solution, I can think of putting the menus related code > understand =E2=80=98sources/tree/menu=E2=80=99 directory. > > We=E2=80=99re particularly worried because we=E2=80=99re trying to avoid = the coupling that > we see in the code base today. We want to decouple *application state* > from *business domain* logic as much as we can - because this makes the > code much easier to understand. We achieve lower coupling by have more > suitable interfaces to retrieve *application state* like: anyParent (the > menu doesn=E2=80=99t care how this happens). This is the direction that w= e=E2=80=99re > trying to move towards, we just don=E2=80=99t want the package structure = to > undermine that developer intent. > I realized after revisiting the code, menu/can_create.js was only applicable to the children of the schema/catalog nodes, same as 'can_drop_child'. We should have put both scripts in the same directory. Please find the updated patch for the same. Please review it, and let me know your concerns. -- Thanks, Ashesh > How about nodeMenu.isSupportedNode(=E2=80=A6)? > > Naming is one of the hardest problems in programming. I don=E2=80=99t fee= l too > strongly about this one. For now, let=E2=80=99s keep it as is > > Thanks > Anthony && Victoria > =E2=80=8B > > > > --000000000000cf7a5e056cee3170 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Sorry for the late reply.
On Wed, May 16, 2018 at 8:55 PM, Anthony Emengo <aemeng= o@pivotal.io> wrote:
export function canCreate(pgBrowser, childOfCatalogTyp=
e) {
  return canCreateObject.bind({
    browser: pgBrowser,
    childOfCatalogType: childOfCatalogType,
  });
}

With respect to the above co= de: this bind pattern looks good and seems like the idiomatic way to handle= this in JavaScript. On a lighter node, I don=E2=80=99t even see the need f= or an additional method to wrap it. The invocation could have easily been l= ike canCreate: canCreateObject.bind({ browser: pgBrowser, = childOfCatalogType: childOfCatalogType }), I don=E2=80=99t feel too = strongly here.

I do agree - we can handle = the same problem many ways.
I prefer object oriented pardigm more= in general.
Any way - I have modified the code with some other c= hanges.

I renamed it as isValidTreeNodeData, beca= use - we were using it in for testing the tree data. Please suggest me the = right place, and name.

We=E2=80=99re not sure; maybe after conti= nued refactoring, we will come across more generic functions. At that poin= t we can revisit this and create a utils.js file.

Sure.=C2=A0

The original patch was separating them in= different places, but - still uses some of the functionalities directly fr= om the tree, which was happening because we have contextual menu.
To giv= e a better solution, I can think of putting the menus related code understa= nd =E2=80=98sources/tree/menu=E2=80=99 directory.

We=E2=80=99re particularly worried= because we=E2=80=99re trying to avoid the coupling that we see in the code= base today. We want to decouple application state from busine= ss domain logic as much as we can - because this makes the code much e= asier to understand. We achieve lower coupling by have more suitable interf= aces to retrieve application state like: anyParen= t (the menu doesn=E2=80=99t care how this happens). This is the dire= ction that we=E2=80=99re trying to move towards, we just don=E2=80=99t want= the package structure to undermine that developer intent.

<= /blockquote>
I realized after revisiting the code, menu/can_create.js w= as only applicable to the children of the schema/catalog nodes, same as = 9;can_drop_child'.
We should have put both scripts in the sam= e directory.

Please find the updated patch for the= same.

Please review it, and let me know your conc= erns.

-- Thanks, Ashesh

How= about nodeMenu.isSupportedNode(=E2=80=A6)?

Naming is one of the hardest problems in = programming. I don=E2=80=99t feel too strongly about this one. For now, let= =E2=80=99s keep it as is

Thanks
Anthony && Victoria

=E2=80=8B

=



--000000000000cf7a5e056cee3170-- --000000000000cf7a62056cee3172 Content-Type: application/octet-stream; name="0001-Extract-test-and-refactor-methods.patch" Content-Disposition: attachment; filename="0001-Extract-test-and-refactor-methods.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jhk6sh0l0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcyBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Nv bGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcwppbmRleCA5MDE1ZDhkMi4uN2ZkMjhhN2Mg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL2NvbGxhdGlvbnMvc3RhdGljL2pzL2NvbGxhdGlvbi5qcworKysgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9jb2xsYXRpb25zL3N0YXRpYy9qcy9jb2xsYXRpb24uanMKQEAgLTEsOCArMSw4IEBACiBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgICdzb3VyY2VzL2dldHRleHQnLCAnc291 cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3VuZGVyc2NvcmUuc3Ry aW5nJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAotICAncGdhZG1pbi5i cm93c2VyLmNvbGxlY3Rpb24nLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywg UywgcGdBZG1pbiwgcGdCcm93c2VyKSB7CisgICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGls ZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbihnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIHNjaGVtYUNoaWxkKSB7CiAKICAg aWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9uJ10pIHsKICAgICBwZ0FkbWluLkJy b3dzZXIuTm9kZXNbJ2NvbGwtY29sbGF0aW9uJ10gPQpAQCAtMTUsNyArMTUsNyBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBbCiAgIH0KIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1snY29sbGF0aW9uJ10pIHsKLSAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2NvbGxhdGlvbidd ID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Nv bGxhdGlvbiddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0 eXBlOiAnY29sbGF0aW9uJywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcmNvbGxhdGlv bi5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRlY29sbGF0aW9uLmh0bWwn LApAQCAtMjIyLDM0ICsyMjIsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2xsYXRpb24nLCBb CiAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNh bkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgICAvL0lm IGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAg IGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJuIHRydWU7 Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0 YTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9k ZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRo ZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgY29sbGF0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhP ZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0K LSAgICAgICAgICBpZiAoJ2NvbGwtY29sbGF0aW9uJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAg ICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2 YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAg ICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAg ICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFy ZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0 YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5v dCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAg fSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21h aW4uanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKaW5kZXggNDAzY2E0NzEuLmE5 MWRhYTVmIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy9kb21haW5zL3N0YXRpYy9qcy9kb21haW4uanMKKysrIGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZG9tYWlucy9zdGF0aWMvanMvZG9tYWluLmpzCkBAIC0yLDkgKzIsMTAgQEAKIGRlZmluZSgn cGdhZG1pbi5ub2RlLmRvbWFpbicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3Vy bF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAnYmFja2JvbmUnLAogICAnc291cmNlcy9w Z2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4u YmFja2dyaWQnLAotICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5u b2RlLnNjaGVtYS5kaXIvY2hpbGQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAogXSwg ZnVuY3Rpb24oCi0gIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBw Z0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBC YWNrYm9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIHNjaGVt YUNoaWxkCiApIHsKIAogICAvLyBEZWZpbmUgRG9tYWluIENvbGxlY3Rpb24gTm9kZQpAQCAtNzks NyArODAsNyBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5kb21haW4nLCBbCiAKICAgLy8gRG9tYWlu IE5vZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2RvbWFpbiddKSB7Ci0gICAgcGdCcm93c2Vy Lk5vZGVzWydkb21haW4nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgcGdCcm93c2Vy Lk5vZGVzWydkb21haW4nXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQoewog ICAgICAgdHlwZTogJ2RvbWFpbicsCiAgICAgICBzcWxBbHRlckhlbHA6ICdzcWwtYWx0ZXJkb21h aW4uaHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWRvbWFpbi5odG1sJywK QEAgLTg4LDcgKzg5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZG9tYWluJywgWwogICAgICAg Y29sbGVjdGlvbl90eXBlOiAnY29sbC1kb21haW4nLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAg ICAgaGFzRGVwZW5kczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLy8gQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpA QCAtMTE4LDggKzExOCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmRvbWFpbicsIFsKICAgICAg ICAgXSk7CiAKICAgICAgIH0sCi0gICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVt YSddLmNhbkNoaWxkRHJvcCwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNb J3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKICAgICAgIC8vIERvbWFpbiBOb2RlIE1vZGVsCiAgICAg ICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0ZW5kKHsKICAgICAgICAgaW5pdGlhbGl6 ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKQEAgLTI5NiwzNCArMjk0LDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUuZG9tYWluJywgWwogICAgICAgICAgIHJldHVybiBlcnJtc2c7CiAgICAgICAg IH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0s IGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQot ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs IGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVl IHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8g SWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZG9tYWluCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZG9tYWluJyA9PSBkLl90eXBlKSB7 Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAg ICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxs LAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBu dWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkg PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/ IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQg d2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7 Ci0gICAgICB9LAogICAgICAgaXNEaXNhYmxlZDogZnVuY3Rpb24obSl7CiAgICAgICAgIGlmICgh bS5pc05ldygpKSB7CiAgICAgICAgICAgdmFyIHNlcnZlciA9IHRoaXMubm9kZV9pbmZvLnNlcnZl cjsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL2ZvcmVpZ25fdGFibGVzL3N0YXRpYy9qcy9mb3JlaWduX3RhYmxl LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvZm9yZWlnbl90YWJsZXMvc3RhdGljL2pzL2ZvcmVpZ25fdGFibGUuanMKaW5kZXgg MTYwZGI4M2YuLjI0ZjVlMWE3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMv anMvZm9yZWlnbl90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mb3JlaWduX3RhYmxlcy9zdGF0aWMvanMvZm9y ZWlnbl90YWJsZS5qcwpAQCAtMiw5ICsyLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3Jl aWduX3RhYmxlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdq cXVlcnknLCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAn cGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3JpZCcs Ci0gICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICdwZ2FkbWluLm5vZGUuc2NoZW1h LmRpci9jaGlsZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiBdLCBmdW5jdGlvbigK LSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBw Z0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCwKKyAgc2NoZW1hQ2hpbGQKICkg ewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLWZvcmVpZ25fdGFibGUnXSkgewpAQCAt NDY5LDcgKzQ3MCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZvcmVpZ25fdGFibGUnLCBbCiAK IAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl90YWJsZSddKSB7Ci0gICAgcGdCcm93 c2VyLk5vZGVzWydmb3JlaWduX3RhYmxlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAg IHBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl90YWJsZSddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hp bGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAnZm9yZWlnbl90YWJsZScsCiAgICAgICBzcWxB bHRlckhlbHA6ICdzcWwtYWx0ZXJmb3JlaWdudGFibGUuaHRtbCcsCiAgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZWZvcmVpZ250YWJsZS5odG1sJywKQEAgLTUwOSw4ICs1MTAsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3RhYmxlJywgWwogICAgICAgICBdKTsKIAogICAg ICAgfSwKLSAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGRE cm9wLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2Fu Q2hpbGREcm9wLAogICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CiAg ICAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CiAgICAgICAgICAgdmFy IGlzTmV3ID0gKF8uc2l6ZShhdHRycykgPT09IDApOwpAQCAtNjU5LDM0ICs2NTgsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX3RhYmxlJywgWwogICAgICAgICAgIHJldHVybiBlcnJt c2c7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRl bURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwg d2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNr ID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdC cm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJh dGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0g ICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZm9y ZWlnbiB0YWJsZQotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkg PiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZv cmVpZ25fdGFibGUnID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAKICAgfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvZnRzX2NvbmZpZ3VyYXRpb25zL3N0YXRpYy9qcy9mdHNfY29uZmlndXJhdGlv bi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL2Z0c19jb25maWd1cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24u anMKaW5kZXggODk4MDY2ODEuLmNiYTYyNzg5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfY29uZmlndXJh dGlvbnMvc3RhdGljL2pzL2Z0c19jb25maWd1cmF0aW9uLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19jb25maWd1 cmF0aW9ucy9zdGF0aWMvanMvZnRzX2NvbmZpZ3VyYXRpb24uanMKQEAgLTEsOSArMSwxMCBAQAog ZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRzX2NvbmZpZ3VyYXRpb24nLCBbCiAgICdzb3VyY2VzL2dl dHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2JhY2ti b25lJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5i YWNrZm9ybScsICdwZ2FkbWluLmJhY2tncmlkJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJywKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywgJ3BnYWRtaW4uYnJvd3Nl ci5jb2xsZWN0aW9uJywKIF0sIGZ1bmN0aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBC YWNrYm9uZSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQKKyAgZ2V0dGV4 dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0s IEJhY2tncmlkLAorICBzY2hlbWFDaGlsZAogKSB7CiAKICAgLy8gTW9kZWwgZm9yIHRva2VucyBj b250cm9sCkBAIC00MTAsMTQgKzQxMSwxMSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29u ZmlndXJhdGlvbicsIFsKIAogICAvLyBFeHRlbmQgdGhlIG5vZGUgY2xhc3MgZm9yIEZUUyBDb25m aWd1cmF0aW9uCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbiddKSB7 Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbiddID0gcGdBZG1p bi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdj YXRhbG9nJ10sCisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfY29uZmlndXJhdGlvbidd ID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAnZnRz X2NvbmZpZ3VyYXRpb24nLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydHNjb25maWcu aHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZXRzY29uZmlnLmh0bWwnLAog ICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2Z0 c19jb25maWd1cmF0aW9uX2RpYWxvZy5odG1sJ30pLAotICAgICAgY2FuRHJvcDogdHJ1ZSwKLSAg ICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAogICAgICAgbGFiZWw6IGdldHRleHQoJ0ZUUyBDb25m aWd1cmF0aW9uJyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVl LApAQCAtNTc3LDM0ICs1NzUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfY29uZmlndXJh dGlvbicsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwKICAgICAgIH0pLAot ICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAg ICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBtZW51Ci0g ICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBp dGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50 IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEg dGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgY29uZmlndXJhdGlvbgotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c19jb25maWd1cmF0aW9uJyA9PSBkLl90 eXBlKSB7Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxv ZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg ICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBk ID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRl ZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICB9LAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19kaWN0 aW9uYXJpZXMvc3RhdGljL2pzL2Z0c19kaWN0aW9uYXJ5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX2RpY3Rpb25hcmll cy9zdGF0aWMvanMvZnRzX2RpY3Rpb25hcnkuanMKaW5kZXggZWQ4M2ZlYjEuLmNmNzMzOTIyIDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy9mdHNfZGljdGlvbmFyaWVzL3N0YXRpYy9qcy9mdHNfZGljdGlvbmFyeS5qcwpA QCAtMSw4ICsxLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfZGljdGlvbmFyeScsIFsK ICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xs ZWN0aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4s IHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxk JywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKK10sIGZ1bmN0aW9uKAorICBnZXR0ZXh0 LCB1cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBzY2hlbWFD aGlsZAorKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBtb2RlbCBjbGFzcyB0 byBjcmVhdGUgYSBvcHRpb24vdmFsdWUgcGFpcgogICB2YXIgT3B0aW9uTGFiZWxNb2RlbCA9IHBn QWRtaW4uQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CkBAIC01NSwxNCArNTcsMTEgQEAgZGVm aW5lKCdwZ2FkbWluLm5vZGUuZnRzX2RpY3Rpb25hcnknLCBbCiAKICAgLy8gRXh0ZW5kIHRoZSBu b2RlIGNsYXNzIGZvciBGVFMgRGljdGlvbmFyeQogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZnRz X2RpY3Rpb25hcnknXSkgewotICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2RpY3Rpb25h cnknXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJlbnRfdHlwZTog WydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snZnRzX2Rp Y3Rpb25hcnknXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQoewogICAgICAg dHlwZTogJ2Z0c19kaWN0aW9uYXJ5JywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnRz ZGljdGlvbmFyeS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRldHNkaWN0 aW9uYXJ5Lmh0bWwnLAogICAgICAgZGlhbG9nSGVscDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7 J2ZpbGVuYW1lJzogJ2Z0c19kaWN0aW9uYXJ5X2RpYWxvZy5odG1sJ30pLAotICAgICAgY2FuRHJv cDogdHJ1ZSwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiB0cnVlLAogICAgICAgbGFiZWw6IGdldHRl eHQoJ0ZUUyBEaWN0aW9uYXJ5JyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBl bmRzOiB0cnVlLApAQCAtMTg2LDM0ICsxODUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNf ZGljdGlvbmFyeScsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwKICAgICAg IH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewot ICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNyZWF0ZSBt ZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9IGl0ZW0s IGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sg cGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBpdCBpcyBz Y2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgZGljdGlvbmFyeQotICAgICAgICAg IGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJl dHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c19kaWN0aW9uYXJ5JyA9PSBkLl90 eXBlKSB7Ci0gICAgICAgICAgICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxv ZwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZf aSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsK LSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAg ICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBk ID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRl ZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICB9LAogICAgIH0pOwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z0c19wYXJz ZXIvc3RhdGljL2pzL2Z0c19wYXJzZXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9n cm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9qcy9mdHNf cGFyc2VyLmpzCmluZGV4IDkyYzA3ODZlLi5iZWJjOWRjNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Bh cnNlci9zdGF0aWMvanMvZnRzX3BhcnNlci5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfcGFyc2VyL3N0YXRpYy9q cy9mdHNfcGFyc2VyLmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnRz X3BhcnNlcicsIFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1 ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3Nl cicsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIpIHsKKyAgJ3NvdXJjZXMvcGdhZG1pbics ICdwZ2FkbWluLmJyb3dzZXInLCAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvY2hpbGQnLAorICAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBzY2hlbWFDaGlsZCkgewogCiAgIC8vIEV4dGVu ZCB0aGUgY29sbGVjdGlvbiBjbGFzcyBmb3IgZnRzIHBhcnNlcgogICBpZiAoIXBnQnJvd3Nlci5O b2Rlc1snY29sbC1mdHNfcGFyc2VyJ10pIHsKQEAgLTE2LDE0ICsxNywxMSBAQCBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS5mdHNfcGFyc2VyJywgWwogCiAgIC8vIEV4dGVuZCB0aGUgbm9kZSBjbGFzcyBm b3IgZnRzIHBhcnNlcgogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZnRzX3BhcnNlciddKSB7Ci0g ICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydmdHNfcGFyc2VyJ10gPSBwZ0FkbWluLkJyb3dzZXIu Tm9kZS5leHRlbmQoewotICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwK KyAgICBwZ0FkbWluLkJyb3dzZXIuTm9kZXNbJ2Z0c19wYXJzZXInXSA9IHNjaGVtYUNoaWxkLlNj aGVtYUNoaWxkTm9kZS5leHRlbmQoewogICAgICAgdHlwZTogJ2Z0c19wYXJzZXInLAogICAgICAg c3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVydHNwYXJzZXIuaHRtbCcsCiAgICAgICBzcWxDcmVhdGVI ZWxwOiAnc3FsLWNyZWF0ZXRzcGFyc2VyLmh0bWwnLAogICAgICAgZGlhbG9nSGVscDogdXJsX2Zv cignaGVscC5zdGF0aWMnLCB7J2ZpbGVuYW1lJzogJ2Z0c19wYXJzZXJfZGlhbG9nLmh0bWwnfSks Ci0gICAgICBjYW5Ecm9wOiB0cnVlLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAg ICBsYWJlbDogZ2V0dGV4dCgnRlRTIFBhcnNlcicpLAogICAgICAgaGFzU1FMOiB0cnVlLAogICAg ICAgaGFzRGVwZW5kczogdHJ1ZSwKQEAgLTE5OSwzNCArMTk3LDYgQEAgZGVmaW5lKCdwZ2FkbWlu Lm5vZGUuZnRzX3BhcnNlcicsIFsKICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfSwK ICAgICAgIH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0 YSkgewotICAgICAgICAvL0lmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFsbG93IGNy ZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT0gZmFsc2UpCi0gICAg ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwgaSA9 IGl0ZW0sIGQgPSBpdGVtRGF0YTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8g Y2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJZiBp dCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGNyZWF0ZSBmdHMgcGFyc2VyCi0gICAgICAg ICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnRzX3BhcnNlcicgPT0gZC5fdHlw ZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cK LSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kp IDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0g ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg ICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9 IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZh dWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxh dGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9q cy9mdHNfdGVtcGxhdGUuanMKaW5kZXggNjA2YTU3YTYuLmNkMDIwN2FiIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy9mdHNfdGVtcGxhdGVzL3N0YXRpYy9qcy9mdHNfdGVtcGxhdGUuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnRzX3Rl bXBsYXRlcy9zdGF0aWMvanMvZnRzX3RlbXBsYXRlLmpzCkBAIC0xLDcgKzEsOCBAQAogZGVmaW5l KCdwZ2FkbWluLm5vZGUuZnRzX3RlbXBsYXRlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCi0gICdzb3VyY2VzL3BnYWRt aW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3Nlcikgewor ICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLm5vZGUuc2No ZW1hLmRpci9jaGlsZCcsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5j dGlvbihnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIHNjaGVtYUNo aWxkKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBjb2xsZWN0aW9uIGNsYXNzIGZvciBmdHMgdGVtcGxh dGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtZnRzX3RlbXBsYXRlJ10pIHsKQEAgLTE2 LDE0ICsxNywxMSBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVtcGxhdGUnLCBbCiAKICAg Ly8gRXh0ZW5kIHRoZSBub2RlIGNsYXNzIGZvciBmdHMgdGVtcGxhdGUKICAgaWYgKCFwZ0Jyb3dz ZXIuTm9kZXNbJ2Z0c190ZW1wbGF0ZSddKSB7Ci0gICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydm dHNfdGVtcGxhdGUnXSA9IHBnQWRtaW4uQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJl bnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZyddLAorICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rl c1snZnRzX3RlbXBsYXRlJ10gPSBzY2hlbWFDaGlsZC5TY2hlbWFDaGlsZE5vZGUuZXh0ZW5kKHsK ICAgICAgIHR5cGU6ICdmdHNfdGVtcGxhdGUnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFs dGVydHN0ZW1wbGF0ZS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRldHN0 ZW1wbGF0ZS5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywg eydmaWxlbmFtZSc6ICdmdHNfdGVtcGxhdGVfZGlhbG9nLmh0bWwnfSksCi0gICAgICBjYW5Ecm9w OiB0cnVlLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCiAgICAgICBsYWJlbDogZ2V0dGV4 dCgnRlRTIFRlbXBsYXRlJyksCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRz OiB0cnVlLApAQCAtMTM5LDM0ICsxMzcsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdHNfdGVt cGxhdGUnLCBbCiAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0sCiAgICAgICB9KSwK LSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAg ICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0g aXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVu dCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1h IHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgZnRzIGZ0c190ZW1wbGF0ZQotICAgICAgICAgIGlm IChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xsLWZ0c190ZW1wbGF0ZScgPT0gZC5fdHlwZSkg ewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cKLSAg ICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVs bCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kpIDog bnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBp ID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkg PyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0 IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVl OwotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9mdW5jdGlvbnMvc3Rh dGljL2pzL2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlvbi5qcwpp bmRleCA2ZTQwNTE2NS4uYzRjZDkxYWEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMv anMvZnVuY3Rpb24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy9mdW5jdGlvbi5qcwpA QCAtMiw4ICsyLDExIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdW5jdGlvbicsIFsKICAgJ3Nv dXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUn LCAnYmFja2JvbmUnLAogICAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdw Z2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRt aW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9m b3IsICQsIF8sIEJhY2tib25lLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtKSB7CisgICdw Z2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGlsZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlv bicsCisgICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyLnByaXZpbGVnZScsCitdLCBmdW5jdGlvbigK KyAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIHNjaGVtYUNoaWxkCispIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29s bC1mdW5jdGlvbiddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2xsLWZ1bmN0aW9uJ10gPQpA QCAtODMsNyArODYsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mdW5jdGlvbicsIFsKICAgfSk7 CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Z1bmN0aW9uJ10pIHsKLSAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ2Z1bmN0aW9uJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworCisgICAgcGdCcm93 c2VyLk5vZGVzWydmdW5jdGlvbiddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVu ZCh7CiAgICAgICB0eXBlOiAnZnVuY3Rpb24nLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFs dGVyZnVuY3Rpb24uaHRtbCcsCiAgICAgICBzcWxDcmVhdGVIZWxwOiAnc3FsLWNyZWF0ZWZ1bmN0 aW9uLmh0bWwnLApAQCAtOTYsNyArMTAwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnVuY3Rp b24nLCBbCiAgICAgICAgIHJldHVybiB0cmVlSW5mb3JtYXRpb24uc2VydmVyLnNlcnZlcl90eXBl ICE9PSAnZ3BkYic7CiAgICAgICB9LAogICAgICAgaGFzU2NyaXB0VHlwZXM6IFsnY3JlYXRlJywg J3NlbGVjdCddLAotICAgICAgcGFyZW50X3R5cGU6IFsnc2NoZW1hJywgJ2NhdGFsb2cnXSwKICAg ICAgIEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvKiBBdm9pZCBtdWxpdHBsZSByZWdpc3Ry YXRpb24gb2YgbWVudXMgKi8KICAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCkBAIC0xMjYs OCArMTI5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuZnVuY3Rpb24nLCBbCiAgICAgICAgIF0p OwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5j YW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hl bWEnXS5jYW5DaGlsZERyb3AsCiAgICAgICBtb2RlbDogcGdCcm93c2VyLk5vZGUuTW9kZWwuZXh0 ZW5kKHsKICAgICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKICAgICAg ICAgICB2YXIgaXNOZXcgPSAoXy5zaXplKGF0dHJzKSA9PT0gMCk7CkBAIC00MzgsMzQgKzQzOSw2 IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLmZ1bmN0aW9uJywgWwogICAgICAgICAgIHJldHVybiB0 cnVlOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAs IHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVj ayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBn QnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVy YXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewot ICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1 bmN0aW9uCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0x KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtZnVuY3Rp b24nID09IGQuX3R5cGUpIHsKLSAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5vdCBjaGls ZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZfaSA/IHQuaXRl bURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90eXBlID09ICdj YXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwot ICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAg ICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQotICAg ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAKICAgfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVt YXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25z L3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCmluZGV4IGFlYjgyNzFiLi5mY2RmMjhmYiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvZnVuY3Rpb25zL3N0YXRpYy9qcy90cmlnZ2VyX2Z1bmN0aW9uLmpzCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL2Z1bmN0aW9ucy9zdGF0aWMvanMvdHJpZ2dlcl9mdW5jdGlvbi5qcwpAQCAtMiw4ICsy LDExIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAnc291 cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScs CiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zv cm0nLAotICAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLCAncGdhZG1pbi5icm93c2VyLnNl cnZlci5wcml2aWxlZ2UnLAotXSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdB ZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSkgeworICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIv Y2hpbGQnLCAncGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5icm93c2Vy LnNlcnZlci5wcml2aWxlZ2UnLAorXSwgZnVuY3Rpb24oCisgIGdldHRleHQsIHVybF9mb3IsICQs IF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0sIHNjaGVtYUNoaWxkCispIHsKIAogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10cmlnZ2VyX2Z1bmN0aW9uJ10pIHsKICAgICBwZ0Jy b3dzZXIuTm9kZXNbJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbiddID0KQEAgLTE3LDcgKzIwLDcgQEAg ZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcl9mdW5jdGlvbicsIFsKICAgfQogCiAgIGlmICgh cGdCcm93c2VyLk5vZGVzWyd0cmlnZ2VyX2Z1bmN0aW9uJ10pIHsKLSAgICBwZ0Jyb3dzZXIuTm9k ZXNbJ3RyaWdnZXJfZnVuY3Rpb24nXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7CisgICAgcGdC cm93c2VyLk5vZGVzWyd0cmlnZ2VyX2Z1bmN0aW9uJ10gPSBzY2hlbWFDaGlsZC5TY2hlbWFDaGls ZE5vZGUuZXh0ZW5kKHsKICAgICAgIHR5cGU6ICd0cmlnZ2VyX2Z1bmN0aW9uJywKICAgICAgIHNx bEFsdGVySGVscDogJ3BscGdzcWwtdHJpZ2dlci5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdwbHBnc3FsLXRyaWdnZXIuaHRtbCcsCkBAIC0yNyw3ICszMCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLnRyaWdnZXJfZnVuY3Rpb24nLCBbCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBo YXNEZXBlbmRzOiB0cnVlLAogICAgICAgaGFzU3RhdGlzdGljczogdHJ1ZSwKLSAgICAgIHBhcmVu dF90eXBlOiBbJ3NjaGVtYScsICdjYXRhbG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsK ICAgICAgICAgLyogQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAg ICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQpAQCAtNTcsOCArNTksNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAgICBdKTsKIAogICAgICAgfSwKLSAg ICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAg ICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9w LAogICAgICAgbW9kZWw6IHBnQnJvd3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CiAgICAgICAgIGlu aXRpYWxpemU6IGZ1bmN0aW9uKGF0dHJzLCBhcmdzKSB7CiAgICAgICAgICAgdmFyIGlzTmV3ID0g KF8uc2l6ZShhdHRycykgPT09IDApOwpAQCAtMzU3LDM0ICszNTcsNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS50cmlnZ2VyX2Z1bmN0aW9uJywgWwogICAgICAgICAgIHJldHVybiAhKHRoaXMubm9k ZV9pbmZvICYmICAnY2F0YWxvZycgaW4gdGhpcy5ub2RlX2luZm8pOwogICAgICAgICB9LAogICAg ICAgfSksCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7 Ci0gICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2UgdGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRl IG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAg ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRl bSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVj ayBwYXJlbnQgbm9kZQotICAgICAgICB3aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlz IHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIEZ1bmN0aW9uCi0gICAgICAgICAgaWYg KF8uaW5kZXhPZihbJ3NjaGVtYSddLCBkLl90eXBlKSA+IC0xKQotICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0KLSAgICAgICAgICBpZiAoJ2NvbGwtdHJpZ2dlcl9mdW5jdGlvbicgPT0gZC5fdHlw ZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIGNhdGFsb2cK LSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2X2kp IDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7Ci0g ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg ICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9 IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZh dWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgfSwKICAgICB9KTsKIAogICB9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zZXF1ZW5jZXMv c3RhdGljL2pzL3NlcXVlbmNlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5q cwppbmRleCA1N2M5NWFjZC4uMzAwZjBiMTAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3NlcXVlbmNlcy9zdGF0 aWMvanMvc2VxdWVuY2UuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc2VxdWVuY2VzL3N0YXRpYy9qcy9zZXF1ZW5jZS5q cwpAQCAtMSw4ICsxLDEwIEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5zZXF1ZW5jZScsIFsKICAg J3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2Nv cmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4u YnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0 aW9uJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBn QnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywg J3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKK10sIGZ1bmN0aW9uKAorICBnZXR0ZXh0LCB1 cmxfZm9yLCAkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBzY2hlbWFDaGls ZAorKSB7CiAKICAgLy8gRXh0ZW5kIHRoZSBicm93c2VyJ3MgY29sbGVjdGlvbiBjbGFzcyBmb3Ig c2VxdWVuY2UgY29sbGVjdGlvbgogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1zZXF1ZW5j ZSddKSB7CkBAIC0xOCw3ICsyMCw3IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnNlcXVlbmNlJywg WwogCiAgIC8vIEV4dGVuZCB0aGUgYnJvd3NlcidzIG5vZGUgY2xhc3MgZm9yIHNlcXVlbmNlIG5v ZGUKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3NlcXVlbmNlJ10pIHsKLSAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ3NlcXVlbmNlJ10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRlbmQoeworICAgIHBnQnJvd3Nl ci5Ob2Rlc1snc2VxdWVuY2UnXSA9IHNjaGVtYUNoaWxkLlNjaGVtYUNoaWxkTm9kZS5leHRlbmQo ewogICAgICAgdHlwZTogJ3NlcXVlbmNlJywKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRl cnNlcXVlbmNlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGVzZXF1ZW5j ZS5odG1sJywKQEAgLTI4LDcgKzMwLDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2Un LCBbCiAgICAgICBoYXNTUUw6IHRydWUsCiAgICAgICBoYXNEZXBlbmRzOiB0cnVlLAogICAgICAg aGFzU3RhdGlzdGljczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAgLyogQXZvaWQgbXVsaXRw bGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVk KQpAQCAtNTgsMzYgKzU5LDYgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2VxdWVuY2UnLCBbCiAg ICAgICAgIF0pOwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydz Y2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5v ZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9uKGl0 ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVu ICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNo ZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0g cGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgICAgLy8gVG8g aXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkp IHsKLSAgICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3Jl YXRlIGNvbGxhdGlvbgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xs LXNlcXVlbmNlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJl IG5vdCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0gICAgICAgICAgICAgIHByZXZfZCA9IHByZXZf aSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiggcHJldl9kLl90 eXBlID09ICdjYXRhbG9nJykgewotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkg OiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAg IH0KLSAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUK LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAogICAgICAgLy8gRGVmaW5lIHRoZSBtb2Rl bCBmb3Igc2VxdWVuY2Ugbm9kZS4KICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5l eHRlbmQoewogICAgICAgICBkZWZhdWx0czogewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL2No aWxkLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvc3RhdGljL2pzL2NoaWxkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwLi5mOGU1OTUxYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9jaGls ZC5qcwpAQCAtMCwwICsxLDIyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0ICogYXMgTm9kZSBmcm9tICdwZ2Jy b3dzZXIvbm9kZSc7CitpbXBvcnQgeworICBpc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLCBjaGls ZENyZWF0ZU1lbnVFbmFibGVkLAorfSBmcm9tICcuL3NjaGVtYV9jaGlsZF90cmVlX25vZGUnOwor CitsZXQgU2NoZW1hQ2hpbGROb2RlID0gTm9kZS5leHRlbmQoeworICBwYXJlbnRfdHlwZTogWydz Y2hlbWEnLCAnY2F0YWxvZyddLAorICBjYW5Ecm9wOiBpc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1h LAorICBjYW5Ecm9wQ2FzY2FkZTogaXNUcmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSwKKyAgY2FuQ3Jl YXRlOiBjaGlsZENyZWF0ZU1lbnVFbmFibGVkLAorfSwgZmFsc2UpOworCitleHBvcnQge1NjaGVt YUNoaWxkTm9kZX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy9zdGF0aWMvanMvc2NoZW1hLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3Rh dGljL2pzL3NjaGVtYS5qcwppbmRleCBhN2ZkNGM3Yy4uM2I5YjBmMzUgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3N0YXRpYy9qcy9zY2hlbWEuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYS5qcwpAQCAtNDI1 LDU0ICs0MjUsMTAgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUuc2NoZW1hJywgWwogICAgICAgICAg IHJldHVybiBudWxsOwogICAgICAgICB9LAogICAgICAgfSksCi0gICAgICAvLyBUaGlzIGZ1bmN0 aW9uIHdpbGwgY2hlY2tzIHdoZXRoZXIgd2UgY2FuIGFsbG93IHVzZXIgdG8KLSAgICAgIC8vIGRy b3Agb2JqZWN0IG9yIG5vdCBiYXNlZCBvbiBsb2NhdGlvbiB3aXRoaW4gc2NoZW1hICYgY2F0YWxv ZwotICAgICAgY2FuQ2hpbGREcm9wOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSkgewotICAgICAg ICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAg ICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICB3 aGlsZSAoaSkgewotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIg dG8gY3JlYXRlIGNvbGxhdGlvbgotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwg ZC5fdHlwZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICAv L0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgIHZhciBwcmV2 X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgIHBy ZXZfZCA9IHByZXZfaSA/IHQuaXRlbURhdGEocHJldl9pKSA6IG51bGw7Ci0gICAgICAgICAgaWYo cHJldl9kICYmIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IG51bGw7 Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxv dyBjcmVhdGUgbWVudQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0sCiAgICAgfSk7CiAK ICAgICBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5ID0gZnVuY3Rpb24oaSkg ewotICAgICAgdmFyIGlkeCA9IDAsCi0gICAgICAgIHJlcyA9IHt9LAotICAgICAgICB0ID0gcGdC cm93c2VyLnRyZWU7Ci0KLSAgICAgIGRvIHsKLSAgICAgICAgdmFyIGQgPSB0Lml0ZW1EYXRhKGkp OwotICAgICAgICBpZiAoCi0gICAgICAgICAgZC5fdHlwZSBpbiBwZ0Jyb3dzZXIuTm9kZXMgJiYg cGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLmhhc0lkCi0gICAgICAgICkgewotICAgICAgICAgIGlm IChkLl90eXBlID09PSAncGFydGl0aW9uJyB8fCBkLl90eXBlID09PSAndGFibGUnKSB7Ci0gICAg ICAgICAgICBpZiAoISgndGFibGUnIGluIHJlcykpIHsKLSAgICAgICAgICAgICAgcmVzWyd0YWJs ZSddID0gXy5leHRlbmQoe30sIGQsIHsncHJpb3JpdHknOiBpZHh9KTsKLSAgICAgICAgICAgICAg aWR4IC09IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJlc1tkLl90eXBlXSA9IF8uZXh0ZW5kKHt9LCBkLCB7J3ByaW9yaXR5JzogaWR4fSk7Ci0gICAg ICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaSA9IHQu aGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgfSB3aGlsZSAoaSk7Ci0K LSAgICAgIHJldHVybiByZXM7CisgICAgICByZXR1cm4gdGhpcy5nZXRUcmVlTm9kZUhpZXJhcmNo eShpKTsKICAgICB9OwogICB9CiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcy9zY2hlbWFfY2hp bGRfdHJlZV9ub2RlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYV9jaGlsZF90cmVlX25vZGUuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjFmNjdkMWFmCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvc3RhdGljL2pzL3NjaGVtYV9jaGlsZF90cmVlX25vZGUuanMKQEAgLTAsMCAr MSw0MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisv LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisKK2ltcG9ydCAqIGFzIHBnQnJvd3NlciBmcm9tICdwZ2Jyb3dzZXIvYnJv d3Nlcic7CisKK2V4cG9ydCBmdW5jdGlvbiBjaGlsZENyZWF0ZU1lbnVFbmFibGVkKGl0ZW1EYXRh LCBpdGVtLCBkYXRhKSB7CisgIC8vIElmIGNoZWNrIGlzIGZhbHNlIHRoZW4gLCB3ZSB3aWxsIGFs bG93IGNyZWF0ZSBtZW51CisgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZhbHNlKSB7Cisg ICAgcmV0dXJuIHRydWU7CisgIH0KKworICBsZXQgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5m aW5kTm9kZUJ5RG9tRWxlbWVudChpdGVtKTsKKworICBpZiAobm9kZSkKKyAgICByZXR1cm4gbm9k ZS5hbnlGYW1pbHlNZW1iZXIoCisgICAgICAobm9kZSkgPT4gKG5vZGUuZ2V0RGF0YSgpLl90eXBl ID09PSAnc2NoZW1hJykKKyAgICApOworCisgIHJldHVybiBmYWxzZTsKK30KKworZXhwb3J0IGZ1 bmN0aW9uIGlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEoaXRlbURhdGEsIGl0ZW0pIHsKKyAgbGV0 IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoaXRlbSk7CisK KyAgaWYgKG5vZGUpCisgICAgcmV0dXJuIGlzVHJlZU5vZGVPZlNjaGVtYUNoaWxkKG5vZGUpOwor CisgIHJldHVybiBmYWxzZTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIGlzVHJlZU5vZGVPZlNjaGVt YUNoaWxkKG5vZGUpIHsKKyAgcmV0dXJuIG5vZGUuYW55UGFyZW50KAorICAgIChwYXJlbnROb2Rl KSA9PiAocGFyZW50Tm9kZS5nZXREYXRhKCkuX3R5cGUgPT09ICdzY2hlbWEnKQorICApOworfQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCmluZGV4IDcyYjZlYjBjLi40ZGQ4MDRhNiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbHVtbi9zdGF0aWMvanMvY29sdW1uLmpzCisrKyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb2x1bW4vc3RhdGljL2pzL2NvbHVtbi5qcwpAQCAtODgsNyArODgsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLCBbCiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2Nv bHVtbiddKSB7CiAgICAgcGdCcm93c2VyLk5vZGVzWydjb2x1bW4nXSA9IHBnQnJvd3Nlci5Ob2Rl LmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hp bGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcn LCAnbXZpZXcnXSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogWydjb2xsLXRhYmxlJywgJ2NvbGwt dmlldycsICdjb2xsLW12aWV3J10sCiAgICAgICB0eXBlOiAnY29sdW1uJywKQEAgLTk3LDI3ICs5 NiwyNCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5jb2x1bW4nLCBbCiAgICAgICBzcWxBbHRlckhl bHA6ICdzcWwtYWx0ZXJ0YWJsZS5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtYWx0 ZXJ0YWJsZS5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywg eydmaWxlbmFtZSc6ICdjb2x1bW5fZGlhbG9nLmh0bWwnfSksCi0gICAgICBjYW5Ecm9wOiBmdW5j dGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSl7Ci0gICAgICAgIGlmIChwZ0Jyb3dzZXIuTm9kZXNb J3NjaGVtYSddLmNhbkNoaWxkRHJvcC5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFd KSkgewotICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRl bURhdGEsIHBhcmVudHMgPSBbXTsKLSAgICAgICAgICAvLyBUbyBpdGVyYXRlIG92ZXIgdHJlZSB0 byBjaGVjayBwYXJlbnQgbm9kZQotICAgICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgICBw YXJlbnRzLnB1c2goZC5fdHlwZSk7Ci0gICAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0 LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBu dWxsOwotICAgICAgICAgIH0KKyAgICAgIGNhbkRyb3A6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVt KXsKKyAgICAgICAgbGV0IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVs ZW1lbnQoaXRlbSk7CiAKLSAgICAgICAgICAvLyBDaGVjayBpZiBtZW51IGlzIGFsbG93ZWQgPwot ICAgICAgICAgIGlmKF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEgfHwKLSAgICAg ICAgICAgICBfLmluZGV4T2YocGFyZW50cywgJ3ZpZXcnKSA+IC0xIHx8Ci0gICAgICAgICAgICAg Xy5pbmRleE9mKHBhcmVudHMsICdtdmlldycpID4gLTEpIHsKLSAgICAgICAgICAgIHJldHVybiBm YWxzZTsKLSAgICAgICAgICB9IGVsc2UgaWYoXy5pbmRleE9mKHBhcmVudHMsICd0YWJsZScpID4g LTEpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg ICAgfQorCisgICAgICAgIC8vIE9ubHkgYSBjb2x1bW4gb2YgYSB0YWJsZSBjYW4gYmUgZHJvcGVk LCBhbmQgb25seSB3aGVuIGl0IGlzIG5vdCBvZgorICAgICAgICAvLyBjYXRhbG9nLgorICAgICAg ICByZXR1cm4gbm9kZS5hbnlQYXJlbnQoCisgICAgICAgICAgKHBhcmVudE5vZGUpID0+ICgKKyAg ICAgICAgICAgIHBhcmVudE5vZGUuZ2V0RGF0YSgpLl90eXBlID09PSAndGFibGUnICYmCisgICAg ICAgICAgICAgICFwYXJlbnROb2RlLmFueVBhcmVudCgKKyAgICAgICAgICAgICAgICAoZ3JhbmRQ YXJlbnROb2RlKSA9PiAoCisgICAgICAgICAgICAgICAgICBncmFuZFBhcmVudE5vZGUuZ2V0RGF0 YSgpLl90eXBlID09PSAnY2F0YWxvZycKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAg ICkKKyAgICAgICAgICApCisgICAgICAgICk7CiAgICAgICB9LAogICAgICAgaGFzRGVwZW5kczog dHJ1ZSwKICAgICAgIGhhc1N0YXRpc3RpY3M6IHRydWUsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvY2hlY2tfY29uc3RyYWludC9zdGF0aWMvanMvY2hlY2tfY29uc3RyYWludC5q cyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9jaGVja19jb25zdHJhaW50L3N0YXRpYy9qcy9jaGVj a19jb25zdHJhaW50LmpzCmluZGV4IDg1N2NmNGM0Li5hYjI4YTg2YiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMv dGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3RhdGljL2pzL2NoZWNrX2NvbnN0 cmFpbnQuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2NoZWNrX2NvbnN0cmFpbnQvc3Rh dGljL2pzL2NoZWNrX2NvbnN0cmFpbnQuanMKQEAgLTgsNyArOCw2IEBAIGRlZmluZSgncGdhZG1p bi5ub2RlLmNoZWNrX2NvbnN0cmFpbnQnLCBbCiAgIC8vIENoZWNrIENvbnN0cmFpbnQgTm9kZQog ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY2hlY2tfY29uc3RyYWludCddKSB7CiAgICAgcGdBZG1p bi5Ccm93c2VyLk5vZGVzWydjaGVja19jb25zdHJhaW50J10gPSBwZ0Jyb3dzZXIuTm9kZS5leHRl bmQoewotICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJl ZU5vZGVIaWVyYXJjaHksCiAgICAgICB0eXBlOiAnY2hlY2tfY29uc3RyYWludCcsCiAgICAgICBs YWJlbDogZ2V0dGV4dCgnQ2hlY2snKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29u c3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2V4Y2x1c2lvbl9j b25zdHJhaW50L3N0YXRpYy9qcy9leGNsdXNpb25fY29uc3RyYWludC5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWludC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0 cmFpbnQuanMKaW5kZXggMGJiZjY2YTEuLmFkY2NmMmU5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMv Y29uc3RyYWludHMvZXhjbHVzaW9uX2NvbnN0cmFpbnQvc3RhdGljL2pzL2V4Y2x1c2lvbl9jb25z dHJhaW50LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9leGNsdXNpb25fY29uc3RyYWlu dC9zdGF0aWMvanMvZXhjbHVzaW9uX2NvbnN0cmFpbnQuanMKQEAgLTYwNSw3ICs2MDUsNiBAQCBk ZWZpbmUoJ3BnYWRtaW4ubm9kZS5leGNsdXNpb25fY29uc3RyYWludCcsIFsKICAgLy8gRXh0ZW5k IHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZXhjbHVzaW9uIGNvbnN0cmFpbnQgbm9kZQog ICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXSkgewogICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1snZXhjbHVzaW9uX2NvbnN0cmFpbnQnXSA9IHBnQnJvd3Nlci5O b2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxl Q2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdleGNsdXNpb25fY29uc3RyYWlu dCcsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRXhjbHVzaW9uIGNvbnN0cmFpbnQnKSwKICAgICAg IGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2ZvcmVpZ25fa2V5L3N0YXRpYy9qcy9mb3JlaWduX2tleS5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMK aW5kZXggM2M0Yjg5ZjMuLjk4OTlkZjkyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVpZ25fa2V5LmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9j b25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMvZm9yZWlnbl9rZXkuanMKQEAgLTYwMyw3 ICs2MDMsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5mb3JlaWduX2tleScsIFsKICAgLy8gRXh0 ZW5kIHRoZSBicm93c2VyJ3Mgbm9kZSBjbGFzcyBmb3IgZm9yZWlnbiBrZXkgbm9kZQogICBpZiAo IXBnQnJvd3Nlci5Ob2Rlc1snZm9yZWlnbl9rZXknXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5O b2Rlc1snZm9yZWlnbl9rZXknXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRU cmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwK ICAgICAgIHR5cGU6ICdmb3JlaWduX2tleScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnRm9yZWln biBrZXknKSwKICAgICAgIGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pz L3ByaW1hcnlfa2V5LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQv c3RhdGljL2pzL3ByaW1hcnlfa2V5LmpzCmluZGV4IGQzYTZjZmY0Li4wYWQwZjA1NCAxMDA2NDQK LS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2Vz L3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pzL3By aW1hcnlfa2V5LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9pbmRleF9jb25zdHJhaW50 L3N0YXRpYy9qcy9wcmltYXJ5X2tleS5qcwpAQCAtMjAsNyArMjAsNiBAQCBkZWZpbmUoJ3BnYWRt aW4ubm9kZS5wcmltYXJ5X2tleScsIFsKICAgICAgIHBhcmVudF90eXBlOiBbJ3RhYmxlJywncGFy dGl0aW9uJ10sCiAgICAgICBjYW5Ecm9wOiB0cnVlLAogICAgICAgY2FuRHJvcENhc2NhZGU6IHRy dWUsCi0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVl Tm9kZUhpZXJhcmNoeSwKICAgICAgIEluaXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAvKiBBdm9p ZCBtdWx0aXBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMgKi8KICAgICAgICAgaWYgKHRoaXMuaW5p dGlhbGl6ZWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5kZXhfY29uc3Ry YWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMgYi93ZWIvcGdhZG1pbi9icm93c2Vy L3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWlu dHMvaW5kZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMKaW5kZXgg NzY5MTg1ZDYuLjE4ZDNjYTMzIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvaW5k ZXhfY29uc3RyYWludC9zdGF0aWMvanMvdW5pcXVlX2NvbnN0cmFpbnQuanMKKysrIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFi bGVzL2NvbnN0cmFpbnRzL2luZGV4X2NvbnN0cmFpbnQvc3RhdGljL2pzL3VuaXF1ZV9jb25zdHJh aW50LmpzCkBAIC0yMCw3ICsyMCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnVuaXF1ZV9jb25z dHJhaW50JywgWwogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCdwYXJ0aXRpb24nXSwKICAg ICAgIGNhbkRyb3A6IHRydWUsCiAgICAgICBjYW5Ecm9wQ2FzY2FkZTogdHJ1ZSwKLSAgICAgIGdl dFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGllcmFyY2h5 LAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAgICAgICAgIC8qIEF2b2lkIG11bHRpcGxlIHJl Z2lzdHJhdGlvbiBvZiBtZW51cyAqLwogICAgICAgICBpZiAodGhpcy5pbml0aWFsaXplZCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9zdGF0aWMvanMvY29uc3RyYWludHMuanMg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGljL2pzL2NvbnN0cmFpbnRzLmpzCmluZGV4IGNi MjQyY2QyLi45YzBlMjRmZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2NvbnN0cmFpbnRzL3N0YXRp Yy9qcy9jb25zdHJhaW50cy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvc3RhdGljL2pz L2NvbnN0cmFpbnRzLmpzCkBAIC0xMiwxNCArMTIsMTIgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUu Y29uc3RyYWludHMnLCBbCiAgICAgICAgIG5vZGU6ICdjb25zdHJhaW50cycsCiAgICAgICAgIGxh YmVsOiBnZXR0ZXh0KCdDb25zdHJhaW50cycpLAogICAgICAgICB0eXBlOiAnY29sbC1jb25zdHJh aW50cycsCi0gICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGls ZFRyZWVOb2RlSGllcmFyY2h5LAogICAgICAgICBjb2x1bW5zOiBbJ25hbWUnLCAnY29tbWVudCdd LAogICAgICAgfSk7CiAgIH0KIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29uc3RyYWludHMn XSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snY29uc3RyYWludHMnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdCcm93c2VyLnRh YmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHR5cGU6ICdjb25zdHJhaW50cycsCiAg ICAgICBsYWJlbDogZ2V0dGV4dCgnQ29uc3RyYWludHMnKSwKICAgICAgIGNvbGxlY3Rpb25fdHlw ZTogJ2NvbGwtY29uc3RyYWludHMnLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3Rh dGljL2pzL2luZGV4LmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3RhdGljL2pzL2luZGV4LmpzCmlu ZGV4IGVjMmI0ZGExLi5lNThiYjQ2MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL2luZGV4ZXMvc3Rh dGljL2pzL2luZGV4LmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9pbmRleGVzL3N0YXRpYy9qcy9pbmRleC5q cwpAQCAtMSwxMCArMSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUuaW5kZXgnLCBbCiAgICdz b3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywKICAgJ2JhY2tib25lJywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLCAn cGdhZG1pbi5hbGVydGlmeWpzJywKLSAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNr Z3JpZCcsICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCisgICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvc2NoZW1h X2NoaWxkX3RyZWVfbm9kZScsCisgICdwZ2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiBdLCBm dW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIHBnQWRtaW4sIHBn QnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3JtLAotICBCYWNrZ3JpZAorICBCYWNrZ3JpZCwgU2No ZW1hQ2hpbGRUcmVlTm9kZQogKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtaW5k ZXgnXSkgewpAQCAtMTMsNyArMTUsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5pbmRleCcsIFsK ICAgICAgICAgbm9kZTogJ2luZGV4JywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0luZGV4ZXMn KSwKICAgICAgICAgdHlwZTogJ2NvbGwtaW5kZXgnLAotICAgICAgICBnZXRUcmVlTm9kZUhpZXJh cmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAgc3Fs QWx0ZXJIZWxwOiAnc3FsLWFsdGVyaW5kZXguaHRtbCcsCiAgICAgICAgIHNxbENyZWF0ZUhlbHA6 ICdzcWwtY3JlYXRlaW5kZXguaHRtbCcsCiAgICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hl bHAuc3RhdGljJywgeydmaWxlbmFtZSc6ICdpbmRleF9kaWFsb2cuaHRtbCd9KSwKQEAgLTIxNSw3 ICsyMTYsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5pbmRleCcsIFsKIAogICBpZiAoIXBnQnJv d3Nlci5Ob2Rlc1snaW5kZXgnXSkgewogICAgIHBnQWRtaW4uQnJvd3Nlci5Ob2Rlc1snaW5kZXgn XSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTog cGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgIHBhcmVudF90eXBl OiBbJ3RhYmxlJywgJ3ZpZXcnLCAnbXZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xsZWN0 aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHNxbEFsdGVySGVs cDogJ3NxbC1hbHRlcmluZGV4Lmh0bWwnLApAQCAtMjY2LDggKzI2Niw4IEBAIGRlZmluZSgncGdh ZG1pbi5ub2RlLmluZGV4JywgWwogICAgICAgICB9LAogICAgICAgICBdKTsKICAgICAgIH0sCi0g ICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJvcCwKLSAg ICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxkRHJv cCwKKyAgICAgIGNhbkRyb3A6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKKyAgICAgIGNhbkRyb3BDYXNjYWRlOiBTY2hlbWFDaGlsZFRyZWVOb2RlLmlzVHJl ZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93c2VyLk5vZGUu TW9kZWwuZXh0ZW5kKHsKICAgICAgICAgaWRBdHRyaWJ1dGU6ICdvaWQnLAogCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90YWJsZXMvcGFydGl0aW9ucy9zdGF0aWMvanMvcGFydGl0aW9uLmpzIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVz L3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwppbmRleCBkODA3MzA0ZS4uNzQ2NDk3 MjEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9wYXJ0aXRpb25zL3N0YXRpYy9qcy9wYXJ0aXRpb24u anMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3BhcnRpdGlvbnMvc3RhdGljL2pzL3BhcnRpdGlvbi5qcwpAQCAt MiwxMCArMiwxMiBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJs X2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdz b3VyY2VzL3BnYWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYWxlcnRpZnlq cycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAorICAncGdhZG1pbi5u b2RlLnNjaGVtYS5kaXIvc2NoZW1hX2NoaWxkX3RyZWVfbm9kZScsCiAgICdwZ2FkbWluLmJyb3dz ZXIuY29sbGVjdGlvbicsICdwZ2FkbWluLmJyb3dzZXIudGFibGUucGFydGl0aW9uLnV0aWxzJywK IF0sCiBmdW5jdGlvbigKLSAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgcGdBZG1pbiwgcGdC cm93c2VyLCBBbGVydGlmeSwgQmFja2Zvcm0sIEJhY2tncmlkCisgIGdldHRleHQsIHVybF9mb3Is ICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3JtLCBCYWNrZ3Jp ZCwKKyAgU2NoZW1hQ2hpbGRUcmVlTm9kZQogKSB7CiAKICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNb J2NvbGwtcGFydGl0aW9uJ10pIHsKQEAgLTEzLDcgKzE1LDYgQEAgZnVuY3Rpb24oCiAgICAgICBw Z0FkbWluLkJyb3dzZXIuQ29sbGVjdGlvbi5leHRlbmQoewogICAgICAgICBub2RlOiAncGFydGl0 aW9uJywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1BhcnRpdGlvbnMnKSwKLSAgICAgICAgZ2V0 VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVIaWVyYXJjaHks CiAgICAgICAgIHR5cGU6ICdjb2xsLXBhcnRpdGlvbicsCiAgICAgICAgIGNvbHVtbnM6IFsKICAg ICAgICAgICAnbmFtZScsICdzY2hlbWEnLCAncGFydGl0aW9uX3ZhbHVlJywgJ2lzX3BhcnRpdGlv bmVkJywgJ2Rlc2NyaXB0aW9uJywKQEAgLTgwLDM2ICs4MSw2IEBAIGZ1bmN0aW9uKAogICAgICAg ICB9LAogICAgICAgICBdKTsKICAgICAgIH0sCi0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTog ZnVuY3Rpb24oaSkgewotICAgICAgICB2YXIgaWR4ID0gMCwKLSAgICAgICAgICByZXMgPSB7fSwK LSAgICAgICAgICB0ID0gcGdCcm93c2VyLnRyZWU7Ci0KLSAgICAgICAgZG8gewotICAgICAgICAg IHZhciBkID0gdC5pdGVtRGF0YShpKTsKLSAgICAgICAgICBpZiAoCi0gICAgICAgICAgICBkLl90 eXBlIGluIHBnQnJvd3Nlci5Ob2RlcyAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV0uaGFzSWQK LSAgICAgICAgICApIHsKLSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdwYXJ0aXRpb24nICYm ICdwYXJ0aXRpb24nIGluIHJlcykgewotICAgICAgICAgICAgICBpZiAoISgndGFibGUnIGluIHJl cykpIHsKLSAgICAgICAgICAgICAgICByZXNbJ3RhYmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydw cmlvcml0eSc6IGlkeH0pOwotICAgICAgICAgICAgICAgIGlkeCAtPSAxOwotICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGQuX3R5cGUgPT0gJ3RhYmxlJykgewotICAgICAg ICAgICAgICBpZiAoISgndGFibGUnIGluIHJlcykpIHsKLSAgICAgICAgICAgICAgICByZXNbJ3Rh YmxlJ10gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlkeH0pOwotICAgICAgICAgICAg ICAgIGlkeCAtPSAxOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAg ICAgICAgICAgICByZXNbZC5fdHlwZV0gPSBfLmV4dGVuZCh7fSwgZCwgeydwcmlvcml0eSc6IGlk eH0pOwotICAgICAgICAgICAgICBpZHggLT0gMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9 Ci0gICAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAg ICAgICB9IHdoaWxlIChpKTsKLQotICAgICAgICByZXR1cm4gcmVzOwotICAgICAgfSwKICAgICAg IGdlbmVyYXRlX3VybDogZnVuY3Rpb24oaXRlbSwgdHlwZSwgZCwgd2l0aF9pZCwgaW5mbykgewog ICAgICAgICBpZiAoXy5pbmRleE9mKFsKICAgICAgICAgICAnc3RhdHMnLCAnc3RhdGlzdGljcycs ICdkZXBlbmRlbmN5JywgJ2RlcGVuZGVudCcsICdyZXNldCcsCkBAIC0xMzMsOCArMTA0LDggQEAg ZnVuY3Rpb24oCiAgICAgICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoaW5mb1sncGFydGl0aW9u J10uX2lkKQogICAgICAgICAgICAgKS52YWx1ZSgpOwogICAgICAgfSwKLSAgICAgIGNhbkRyb3A6 IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENh c2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgY2Fu RHJvcDogU2NoZW1hQ2hpbGRUcmVlTm9kZS5pc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAvKiBFbmFibGUgdHJpZ2dlcihz KSBvbiB0YWJsZSAqLwogICAgICAgICBlbmFibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0aW9u KGFyZ3MpIHsKQEAgLTExODksMzQgKzExNjAsNyBAQCBmdW5jdGlvbigKICAgICAgICAgICByZXR1 cm4gZGF0YTsKICAgICAgICAgfSwKICAgICAgIH0pLAotICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlv bihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAgICAgIC8vSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiAsIHdlIHdpbGwgYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgaWYgKGRhdGEgJiYgZGF0 YS5jaGVjayA9PSBmYWxzZSkKLSAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOwotICAgICAgICAgIC8v IFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxl IChpKSB7Ci0gICAgICAgICAgICAvLyBJZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRv IGNyZWF0ZSB0YWJsZQotICAgICAgICAgIGlmIChfLmluZGV4T2YoWydzY2hlbWEnXSwgZC5fdHlw ZSkgPiAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgaWYgKCdjb2xs LXRhYmxlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAgICAgIC8vQ2hlY2sgaWYgd2UgYXJlIG5v dCBjaGlsZCBvZiBjYXRhbG9nCi0gICAgICAgICAgICB2YXIgcHJldl9pID0gdC5oYXNQYXJlbnQo aSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgICB2YXIgcHJldl9kID0gcHJldl9p ID8gdC5pdGVtRGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5 cGUgPT0gJ2NhdGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot ICAgICAgICAgIH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6 IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAg fQotICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRl IG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAorICAgICAgY2FuQ3JlYXRlOiBT Y2hlbWFDaGlsZFRyZWVOb2RlLmlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hlbWEsCiAgICAgICAvLyBD aGVjayB0byB3aGV0aGVyIHRhYmxlIGhhcyBkaXNhYmxlIHRyaWdnZXIocykKICAgICAgIGNhbkNy ZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg ewogICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBz L3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpz IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3Nj aGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCmluZGV4IDNhZjYxNzU0Li4zNTQ5 MDlmMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3J1bGVzL3N0YXRpYy9qcy9ydWxlLmpzCisrKyBi L3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hl bWFzL3RhYmxlcy9ydWxlcy9zdGF0aWMvanMvcnVsZS5qcwpAQCAtMTYsNyArMTYsNiBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS5ydWxlJywgWwogICAgICAgICBub2RlOiAncnVsZScsCiAgICAgICAg IGxhYmVsOiBnZXR0ZXh0KCdSdWxlcycpLAogICAgICAgICB0eXBlOiAnY29sbC1ydWxlJywKLSAg ICAgICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IHBnQnJvd3Nlci50YWJsZUNoaWxkVHJlZU5vZGVI aWVyYXJjaHksCiAgICAgICAgIGNvbHVtbnM6IFsnbmFtZScsICdvd25lcicsICdjb21tZW50J10s CiAgICAgICB9KTsKICAgfQpAQCAtMzUsNyArMzQsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS5y dWxlJywgWwogICAgKi8KICAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ3J1bGUnXSkgewogICAgIHBn QWRtaW4uQnJvd3Nlci5Ob2Rlc1sncnVsZSddID0gcGdCcm93c2VyLk5vZGUuZXh0ZW5kKHsKLSAg ICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBwZ0Jyb3dzZXIudGFibGVDaGlsZFRyZWVOb2RlSGll cmFyY2h5LAogICAgICAgcGFyZW50X3R5cGU6IFsndGFibGUnLCd2aWV3JywgJ3BhcnRpdGlvbidd LAogICAgICAgdHlwZTogJ3J1bGUnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVycnVs ZS5odG1sJywKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVf dHJpZ2dlcnMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJz LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yZDc5MjA0MwotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvZW5hYmxlX2Rpc2FibGVfdHJpZ2dlcnMu anMKQEAgLTAsMCArMSw1MiBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOwor CitleHBvcnQgZnVuY3Rpb24gZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0 ZVVybCwgYXJncykgeworICByZXR1cm4gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVy YXRlVXJsLCBhcmdzLCB7ZW5hYmxlOiAnZmFsc2UnIH0pOworfQorZXhwb3J0IGZ1bmN0aW9uIGVu YWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybCwgYXJncykgeworICByZXR1 cm4gc2V0VHJpZ2dlcnModHJlZSwgYWxlcnRpZnksIGdlbmVyYXRlVXJsLCBhcmdzLCB7ZW5hYmxl OiAndHJ1ZScgfSk7Cit9CisKK2Z1bmN0aW9uIHNldFRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBn ZW5lcmF0ZVVybCwgYXJncywgcGFyYW1zKSB7CisgIGNvbnN0IHRyZWVOb2RlID0gcmV0cmlldmVU cmVlTm9kZShhcmdzLCB0cmVlKTsKKworICBpZiAoIXRyZWVOb2RlIHx8IHRyZWVOb2RlLmdldERh dGEoKSA9PT0gbnVsbCB8fCB0cmVlTm9kZS5nZXREYXRhKCkgPT09IHVuZGVmaW5lZCkKKyAgICBy ZXR1cm4gZmFsc2U7CisKKyAgYXhpb3MucHV0KAorICAgIGdlbmVyYXRlVXJsKHRyZWVOb2RlLmdl dEh0bWxJZGVudGlmaWVyKCksICdzZXRfdHJpZ2dlcicsIHRyZWVOb2RlLmdldERhdGEoKSwgdHJ1 ZSksCisgICAgcGFyYW1zCisgICkKKyAgICAudGhlbigocmVzKSA9PiB7CisgICAgICBpZiAocmVz LmRhdGEuc3VjY2VzcyA9PT0gMSkgeworICAgICAgICBhbGVydGlmeS5zdWNjZXNzKHJlcy5kYXRh LmluZm8pOworICAgICAgICB0cmVlTm9kZS5yZWxvYWQodHJlZSk7CisgICAgICB9CisgICAgfSkK KyAgICAuY2F0Y2goKHhocikgPT4geworICAgICAgdHJ5IHsKKyAgICAgICAgY29uc3QgZXJyID0g eGhyLnJlc3BvbnNlLmRhdGE7CisgICAgICAgIGlmIChlcnIuc3VjY2VzcyA9PT0gMCkgeworICAg ICAgICAgIGFsZXJ0aWZ5LmVycm9yKGVyci5lcnJvcm1zZyk7CisgICAgICAgIH0KKyAgICAgIH0g Y2F0Y2ggKGUpIHsKKyAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICB9 CisgICAgICB0cmVlTm9kZS51bmxvYWQodHJlZSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIHJl dHJpZXZlVHJlZU5vZGUoYXJncywgdHJlZSkgeworICBjb25zdCBpbnB1dCA9IGFyZ3MgfHwge307 CisgIGNvbnN0IGRvbUVsZW1lbnRJZGVudGlmaWVyID0gaW5wdXQuaXRlbSB8fCB0cmVlLnNlbGVj dGVkKCk7CisgIHJldHVybiB0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KGRvbUVsZW1lbnRJZGVu dGlmaWVyKTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUuanMgYi93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1h cy90YWJsZXMvc3RhdGljL2pzL3RhYmxlLmpzCmluZGV4IGQ0NDBiZjA0Li4xZjliY2Y5NyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJh c2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS5qcworKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3Rh dGljL2pzL3RhYmxlLmpzCkBAIC0xLDEzICsxLDE2IEBACiBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50 YWJsZScsIFsKKyAgJ3BnYWRtaW4udGFibGVzLmpzL2VuYWJsZV9kaXNhYmxlX3RyaWdnZXJzJywK ICAgJ3NvdXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVy c2NvcmUnLAogICAndW5kZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRt aW4uYnJvd3NlcicsCiAgICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5iYWNrZm9ybScs ICdwZ2FkbWluLmJhY2tncmlkJywKICAgJ3BnYWRtaW4udGFibGVzLmpzL3Nob3dfYWR2YW5jZWRf dGFiJywKLSAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywgJ3BnYWRtaW4ubm9kZS5jb2x1 bW4nLAotICAncGdhZG1pbi5ub2RlLmNvbnN0cmFpbnRzJywgJ3BnYWRtaW4uYnJvd3Nlci50YWJs ZS5wYXJ0aXRpb24udXRpbHMnLAorICAncGdhZG1pbi5ub2RlLnNjaGVtYS5kaXIvY2hpbGQnLCAn cGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24nLAorICAncGdhZG1pbi5ub2RlLmNvbHVtbicsICdw Z2FkbWluLm5vZGUuY29uc3RyYWludHMnLAorICAncGdhZG1pbi5icm93c2VyLnRhYmxlLnBhcnRp dGlvbi51dGlscycsCiBdLCBmdW5jdGlvbigKKyAgdGFibGVGdW5jdGlvbnMsCiAgIGdldHRleHQs IHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3NlciwgQWxlcnRpZnksIEJhY2tmb3Jt LCBCYWNrZ3JpZCwKLSAgU2hvd0FkdmFuY2VkVGFiCisgIFNob3dBZHZhbmNlZFRhYiwgU2NoZW1h Q2hpbGQKICkgewogCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydjb2xsLXRhYmxlJ10pIHsKQEAg LTI1LDggKzI4LDcgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgIH0KIAogICBp ZiAoIXBnQnJvd3Nlci5Ob2Rlc1sndGFibGUnXSkgewotICAgIHBnQnJvd3Nlci5Ob2Rlc1sndGFi bGUnXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9kZUhpZXJhcmNo eTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKKyAgICBwZ0Jyb3dzZXIu Tm9kZXNbJ3RhYmxlJ10gPSBTY2hlbWFDaGlsZC5TY2hlbWFDaGlsZE5vZGUuZXh0ZW5kKHsKICAg ICAgIHR5cGU6ICd0YWJsZScsCiAgICAgICBsYWJlbDogZ2V0dGV4dCgnVGFibGUnKSwKICAgICAg IGNvbGxlY3Rpb25fdHlwZTogJ2NvbGwtdGFibGUnLApAQCAtMzksNyArNDEsNiBAQCBkZWZpbmUo J3BnYWRtaW4ubm9kZS50YWJsZScsIFsKICAgICAgIHNxbEFsdGVySGVscDogJ3NxbC1hbHRlcnRh YmxlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGV0YWJsZS5odG1sJywK ICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgeydmaWxlbmFtZSc6ICd0 YWJsZV9kaWFsb2cuaHRtbCd9KSwKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRh bG9nJ10sCiAgICAgICBoYXNTY3JpcHRUeXBlczogWydjcmVhdGUnLCAnc2VsZWN0JywgJ2luc2Vy dCcsICd1cGRhdGUnLCAnZGVsZXRlJ10sCiAgICAgICBoZWlnaHQ6ICc5NSUnLAogICAgICAgd2lk dGg6ICc4NSUnLApAQCAtMTEzLDUxICsxMTQsMjQgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFi bGUnLCBbCiAgICAgICAgICAgdGhpcy5oYW5kbGVfY2FjaGUsIHRoaXMKICAgICAgICAgKTsKICAg ICAgIH0sCi0gICAgICBjYW5Ecm9wOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNhbkNoaWxk RHJvcCwKLSAgICAgIGNhbkRyb3BDYXNjYWRlOiBwZ0Jyb3dzZXIuTm9kZXNbJ3NjaGVtYSddLmNh bkNoaWxkRHJvcCwKICAgICAgIGNhbGxiYWNrczogewogICAgICAgICAvKiBFbmFibGUgdHJpZ2dl cihzKSBvbiB0YWJsZSAqLwogICAgICAgICBlbmFibGVfdHJpZ2dlcnNfb25fdGFibGU6IGZ1bmN0 aW9uKGFyZ3MpIHsKLSAgICAgICAgICB2YXIgcGFyYW1zID0geydlbmFibGUnOiB0cnVlIH07Ci0g ICAgICAgICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdzLCBw YXJhbXNdKTsKKyAgICAgICAgICB0YWJsZUZ1bmN0aW9ucy5lbmFibGVUcmlnZ2VycygKKyAgICAg ICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSwKKyAgICAgICAgICAgIEFsZXJ0aWZ5LAorICAgICAg ICAgICAgdGhpcy5nZW5lcmF0ZV91cmwuYmluZCh0aGlzKSwKKyAgICAgICAgICAgIGFyZ3MKKyAg ICAgICAgICApOwogICAgICAgICB9LAogICAgICAgICAvKiBEaXNhYmxlIHRyaWdnZXIocykgb24g dGFibGUgKi8KICAgICAgICAgZGlzYWJsZV90cmlnZ2Vyc19vbl90YWJsZTogZnVuY3Rpb24oYXJn cykgewotICAgICAgICAgIHZhciBwYXJhbXMgPSB7J2VuYWJsZSc6IGZhbHNlIH07Ci0gICAgICAg ICAgdGhpcy5jYWxsYmFja3Muc2V0X3RyaWdnZXJzLmFwcGx5KHRoaXMsIFthcmdzLCBwYXJhbXNd KTsKLSAgICAgICAgfSwKLSAgICAgICAgc2V0X3RyaWdnZXJzOiBmdW5jdGlvbihhcmdzLCBwYXJh bXMpIHsKLSAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgc2VuZCByZXF1ZXN0IHRvIGVu YWJsZSBvcgotICAgICAgICAgIC8vIGRpc2FibGUgdHJpZ2dlcnMgb24gdGFibGUgbGV2ZWwKLSAg ICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAotICAgICAgICAgICAgb2JqID0gdGhpcywK LSAgICAgICAgICAgIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICAgIGkgPSBpbnB1dC5p dGVtIHx8IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEg PyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkOwotICAgICAgICAgIGlmICghZCkKLSAgICAgICAg ICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICB1cmw6 IG9iai5nZW5lcmF0ZV91cmwoaSwgJ3NldF90cmlnZ2VyJyAsIGQsIHRydWUpLAotICAgICAgICAg ICAgdHlwZTonUFVUJywKLSAgICAgICAgICAgIGRhdGE6IHBhcmFtcywKLSAgICAgICAgICAgIGRh dGFUeXBlOiAnanNvbicsCi0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKLSAg ICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzID09IDEpIHsKLSAgICAgICAgICAgICAgICBBbGVy dGlmeS5zdWNjZXNzKHJlcy5pbmZvKTsKLSAgICAgICAgICAgICAgICB0LnVubG9hZChpKTsKLSAg ICAgICAgICAgICAgICB0LnNldElub2RlKGkpOwotICAgICAgICAgICAgICAgIHQuZGVzZWxlY3Qo aSk7Ci0gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg ICAgICAgIHQuc2VsZWN0KGkpOwotICAgICAgICAgICAgICAgIH0sIDEwKTsKLSAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0 YXR1cywgZXJyb3IpIHsKLSAgICAgICAgICAgICAgQWxlcnRpZnkucGdSZXNwRXJyb3JOb3RpZnko eGhyLCBlcnJvcik7Ci0gICAgICAgICAgICAgIHQudW5sb2FkKGkpOwotICAgICAgICAgICAgfSwK LSAgICAgICAgICB9KTsKKyAgICAgICAgICB0YWJsZUZ1bmN0aW9ucy5kaXNhYmxlVHJpZ2dlcnMo CisgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUsCisgICAgICAgICAgICBBbGVydGlmeSwK KyAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVfdXJsLmJpbmQodGhpcyksCisgICAgICAgICAgICBh cmdzCisgICAgICAgICAgKTsKICAgICAgICAgfSwKICAgICAgICAgLyogVHJ1bmNhdGUgdGFibGUg Ki8KICAgICAgICAgdHJ1bmNhdGVfdGFibGU6IGZ1bmN0aW9uKGFyZ3MpIHsKQEAgLTEyOTksNTUg KzEyNzMsMTUgQEAgZGVmaW5lKCdwZ2FkbWluLm5vZGUudGFibGUnLCBbCiAgICAgICAgICAgcmV0 dXJuIGRhdGE7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKLSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0 aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRh LmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRv IGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChp KSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVh dGUgdGFibGUKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4g LTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10YWJs ZScgPT0gZC5fdHlwZSkgewotICAgICAgICAgICAgLy9DaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxk IG9mIGNhdGFsb2cKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQu cGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVt RGF0YShwcmV2X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2Nh dGFsb2cnKSB7Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg IH0KLSAgICAgICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0g ICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAg ICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgfSwKICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdGFi bGUgaGFzIGRpc2FibGUgdHJpZ2dlcihzKQogICAgICAgY2FuQ3JlYXRlX3dpdGhfdHJpZ2dlcl9l bmFibGU6IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAgIGlmKHRoaXMu Y2FuQ3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0pKSB7Ci0gICAgICAg ICAgLy8gV2UgYXJlIGhlcmUgbWVhbnMgd2UgY2FuIGNyZWF0ZSBtZW51LCBub3cgbGV0J3MgY2hl Y2sgY29uZGl0aW9uCi0gICAgICAgICAgaWYoaXRlbURhdGEudGlnZ2VyX2NvdW50ID4gMCkgewot ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0 ZW1EYXRhLnRpZ2dlcl9jb3VudCA+IDAgJiYKKyAgICAgICAgICB0aGlzLmNhbkNyZWF0ZS5hcHBs eSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKTsKICAgICAgIH0sCiAgICAgICAvLyBDaGVj ayB0byB3aGV0aGVyIHRhYmxlIGhhcyBlbmFibGUgdHJpZ2dlcihzKQogICAgICAgY2FuQ3JlYXRl X3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewot ICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRh dGFdKSkgewotICAgICAgICAgIC8vIFdlIGFyZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVu dSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgotICAgICAgICAgIGlmKGl0ZW1EYXRhLnRpZ2dl cl9jb3VudCA+IDAgJiYgaXRlbURhdGEuaGFzX2VuYWJsZV90cmlnZ2VycyA+IDApIHsKLSAgICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHJldHVybiBpdGVtRGF0 YS50aWdnZXJfY291bnQgPiAwICYmIGl0ZW1EYXRhLmhhc19lbmFibGVfdHJpZ2dlcnMgPiAwICYm CisgICAgICAgICAgdGhpcy5jYW5DcmVhdGUuYXBwbHkodGhpcywgW2l0ZW1EYXRhLCBpdGVtLCBk YXRhXSk7CiAgICAgICB9LAogICAgICAgb25UYWJsZVVwZGF0ZWQ6IGZ1bmN0aW9uKF9ub2RlLCBf b2xkTm9kZURhdGEsIF9uZXdOb2RlRGF0YSkgewogICAgICAgICB2YXIga2V5LCBjaGlsZElEczsK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcyBiL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFz L3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5qcwppbmRleCBhMmMyNzE4OC4uYTZl NzljZTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy90cmlnZ2Vycy9zdGF0aWMvanMvdHJpZ2dlci5q cworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvdHJpZ2dlcnMvc3RhdGljL2pzL3RyaWdnZXIuanMKQEAgLTEsOCAr MSwxMyBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudHJpZ2dlcicsIFsKICAgJ3NvdXJjZXMvZ2V0 dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAotICAndW5k ZXJzY29yZS5zdHJpbmcnLCAnc291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdi YWNrZm9ybScsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLAorICAndW5kZXJzY29yZS5zdHJpbmcnLCAn c291cmNlcy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsCisgICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsCisgICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9zY2hl bWFfY2hpbGRfdHJlZV9ub2RlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci5jb2xsZWN0aW9uJywKLV0s IGZ1bmN0aW9uKGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMsIHBnQWRtaW4sIHBnQnJvd3Nlciwg QmFja2Zvcm0sIGFsZXJ0aWZ5KSB7CitdLCBmdW5jdGlvbigKKyAgZ2V0dGV4dCwgdXJsX2Zvciwg JCwgXywgUywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgYWxlcnRpZnksCisgIFNjaGVt YUNoaWxkVHJlZU5vZGUKKykgewogCiAgIEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2wgPSBC YWNrZm9ybS5Td2l0Y2hDb250cm9sLmV4dGVuZCh7CiAgICAgdGVtcGxhdGU6IF8udGVtcGxhdGUo WwpAQCAtMjksMTQgKzM0LDEyIEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAg ICAgICAgIG5vZGU6ICd0cmlnZ2VyJywKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1RyaWdnZXJz JyksCiAgICAgICAgIHR5cGU6ICdjb2xsLXRyaWdnZXInLAotICAgICAgICBnZXRUcmVlTm9kZUhp ZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAgICAg Y29sdW1uczogWyduYW1lJywgJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICB9KTsKICAgfQogCiAgIGlm ICghcGdCcm93c2VyLk5vZGVzWyd0cmlnZ2VyJ10pIHsKICAgICBwZ0FkbWluLkJyb3dzZXIuTm9k ZXNbJ3RyaWdnZXInXSA9IHBnQnJvd3Nlci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBnZXRUcmVlTm9k ZUhpZXJhcmNoeTogcGdCcm93c2VyLnRhYmxlQ2hpbGRUcmVlTm9kZUhpZXJhcmNoeSwKICAgICAg IHBhcmVudF90eXBlOiBbJ3RhYmxlJywgJ3ZpZXcnLCAncGFydGl0aW9uJ10sCiAgICAgICBjb2xs ZWN0aW9uX3R5cGU6IFsnY29sbC10YWJsZScsICdjb2xsLXZpZXcnXSwKICAgICAgIHR5cGU6ICd0 cmlnZ2VyJywKQEAgLTE3NSw4ICsxNzgsOCBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS50cmlnZ2Vy JywgWwogICAgICAgICAgIH0pOwogICAgICAgICB9LAogICAgICAgfSwKLSAgICAgIGNhbkRyb3A6 IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENh c2NhZGU6IHBnQnJvd3Nlci5Ob2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAorICAgICAgY2Fu RHJvcDogU2NoZW1hQ2hpbGRUcmVlTm9kZS5pc1RyZWVJdGVtT2ZDaGlsZE9mU2NoZW1hLAorICAg ICAgY2FuRHJvcENhc2NhZGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNUcmVlSXRlbU9mQ2hpbGRP ZlNjaGVtYSwKICAgICAgIG1vZGVsOiBwZ0FkbWluLkJyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQo ewogICAgICAgICBkZWZhdWx0czogewogICAgICAgICAgIG5hbWU6IHVuZGVmaW5lZCwKQEAgLTYx OCw1MCArNjIxLDE2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLnRyaWdnZXInLCBbCiAgICAgICAg ICAgcmV0dXJuIGZsYWc7CiAgICAgICAgIH0sCiAgICAgICB9KSwKLSAgICAgIC8vIEJlbG93IGZ1 bmN0aW9uIHdpbGwgZW5hYmxlIHJpZ2h0IGNsaWNrIG1lbnUgZm9yIGNyZWF0aW5nIGNvbHVtbgot ICAgICAgY2FuQ3JlYXRlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAg ICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVy biB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0g aXRlbURhdGEsIHBhcmVudHMgPSBbXTsKLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBvdmVyIHRyZWUg dG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgICAvLyBJ ZiBpdCBpcyBzY2hlbWEgdGhlbiBhbGxvdyB1c2VyIHRvIGMgcmVhdGUgdGFibGUKLSAgICAgICAg ICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICBwYXJlbnRzLnB1c2goZC5fdHlwZSk7Ci0gICAgICAgICAg aSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsOwotICAgICAgICAgIGQgPSBp ID8gdC5pdGVtRGF0YShpKSA6IG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgbm9kZSBp cyB1bmRlciBjYXRhbG9nIHRoZW4gZG8gbm90IGFsbG93ICdjcmVhdGUnIG1lbnUKLSAgICAgICAg aWYgKF8uaW5kZXhPZihwYXJlbnRzLCAnY2F0YWxvZycpID4gLTEpIHsKLSAgICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg ICAgIH0KLSAgICAgIH0sCisgICAgICBjYW5DcmVhdGU6IFNjaGVtYUNoaWxkVHJlZU5vZGUuaXNU cmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSwKICAgICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdHJpZ2dl ciBpcyBkaXNhYmxlID8KICAgICAgIGNhbkNyZWF0ZV93aXRoX3RyaWdnZXJfZW5hYmxlOiBmdW5j dGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkgewotICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5h cHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0sIGRhdGFdKSkgewotICAgICAgICAgIC8vIFdlIGFy ZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUgbWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlv bgotICAgICAgICAgIGlmKGl0ZW1EYXRhLmljb24gPT09ICdpY29uLXRyaWdnZXItYmFkJykgewot ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl0 ZW1EYXRhLmljb24gPT09ICdpY29uLXRyaWdnZXItYmFkJyAmJgorICAgICAgICAgIHRoaXMuY2Fu Q3JlYXRlLmFwcGx5KHRoaXMsIFtpdGVtRGF0YSwgaXRlbSwgZGF0YV0pOwogICAgICAgfSwKICAg ICAgIC8vIENoZWNrIHRvIHdoZXRoZXIgdHJpZ2dlciBpcyBlbmFibGUgPwogICAgICAgY2FuQ3Jl YXRlX3dpdGhfdHJpZ2dlcl9kaXNhYmxlOiBmdW5jdGlvbihpdGVtRGF0YSwgaXRlbSwgZGF0YSkg ewotICAgICAgICBpZih0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKSkgewotICAgICAgICAgIC8vIFdlIGFyZSBoZXJlIG1lYW5zIHdlIGNhbiBjcmVhdGUg bWVudSwgbm93IGxldCdzIGNoZWNrIGNvbmRpdGlvbgotICAgICAgICAgIGlmKGl0ZW1EYXRhLmlj b24gPT09ICdpY29uLXRyaWdnZXInKSB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLSAg ICAgICAgfQorICAgICAgICByZXR1cm4gaXRlbURhdGEuaWNvbiA9PT0gJ2ljb24tdHJpZ2dlcicg JiYKKyAgICAgICAgICB0aGlzLmNhbkNyZWF0ZS5hcHBseSh0aGlzLCBbaXRlbURhdGEsIGl0ZW0s IGRhdGFdKTsKICAgICAgIH0sCiAgICAgfSk7CiAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3R5cGVzL3N0 YXRpYy9qcy90eXBlLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZl cnMvZGF0YWJhc2VzL3NjaGVtYXMvdHlwZXMvc3RhdGljL2pzL3R5cGUuanMKaW5kZXggYzFjMjQ4 NjEuLjU4NjBhNzUyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcworKysg Yi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2No ZW1hcy90eXBlcy9zdGF0aWMvanMvdHlwZS5qcwpAQCAtMSw4ICsxLDEyIEBACiBkZWZpbmUoJ3Bn YWRtaW4ubm9kZS50eXBlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2Zv cicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdzb3VyY2VzL3BnYWRtaW4nLCAncGdhZG1p bi5icm93c2VyJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAotICAncGdhZG1pbi5iYWNrZ3JpZCcsICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCi1dLCBmdW5jdGlvbihnZXR0ZXh0LCB1cmxfZm9y LCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLCBCYWNrZ3JpZCkgeworICAncGdh ZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLm5vZGUuc2NoZW1hLmRpci9jaGlsZCcsCisgICdwZ2Fk bWluLmJyb3dzZXIuY29sbGVjdGlvbicsCitdLCBmdW5jdGlvbigKKyAgZ2V0dGV4dCwgdXJsX2Zv ciwgJCwgXywgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrZm9ybSwgQmFja2dyaWQsCisgIHNjaGVt YUNoaWxkCispIHsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC10eXBlJ10pIHsKICAg ICBwZ0Jyb3dzZXIuTm9kZXNbJ2NvbGwtdHlwZSddID0KQEAgLTI0NSw3ICsyNDksNyBAQCBkZWZp bmUoJ3BnYWRtaW4ubm9kZS50eXBlJywgWwogICB9KTsKIAogICBpZiAoIXBnQnJvd3Nlci5Ob2Rl c1sndHlwZSddKSB7Ci0gICAgcGdCcm93c2VyLk5vZGVzWyd0eXBlJ10gPSBwZ0Jyb3dzZXIuTm9k ZS5leHRlbmQoeworICAgIHBnQnJvd3Nlci5Ob2Rlc1sndHlwZSddID0gc2NoZW1hQ2hpbGQuU2No ZW1hQ2hpbGROb2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAndHlwZScsCiAgICAgICBzcWxBbHRl ckhlbHA6ICdzcWwtYWx0ZXJ0eXBlLmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1j cmVhdGV0eXBlLmh0bWwnLApAQCAtMjU0LDcgKzI1OCw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnR5cGUnLCBbCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXR5cGUnLAogICAgICAgaGFz U1FMOiB0cnVlLAogICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKLSAgICAgIHBhcmVudF90eXBlOiBb J3NjaGVtYScsICdjYXRhbG9nJ10sCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKICAgICAgICAg LyogQXZvaWQgbXVsdGlwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzICovCiAgICAgICAgIGlmICh0 aGlzLmluaXRpYWxpemVkKQpAQCAtMjg0LDggKzI4Nyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2Rl LnR5cGUnLCBbCiAgICAgICAgIF0pOwogCiAgICAgICB9LAotICAgICAgY2FuRHJvcDogcGdCcm93 c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCi0gICAgICBjYW5Ecm9wQ2FzY2FkZTog cGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3AsCiAgICAgICBleHRfZnVuY3M6 IHVuZGVmaW5lZCwKICAgICAgIG1vZGVsOiBwZ0Jyb3dzZXIuTm9kZS5Nb2RlbC5leHRlbmQoewog ICAgICAgICBkZWZhdWx0czogewpAQCAtOTExLDM0ICs5MTIsNiBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS50eXBlJywgWwogICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0sCiAgICAg ICB9KSwKLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsK LSAgICAgICAgLy9JZiBjaGVjayBpcyBmYWxzZSB0aGVuICwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUg bWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRhLmNoZWNrID09IGZhbHNlKQotICAgICAgICAg IHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVt LCBkID0gaXRlbURhdGE7Ci0gICAgICAgIC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNr IHBhcmVudCBub2RlCi0gICAgICAgIHdoaWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMg c2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0byBjcmVhdGUgdGFibGUKLSAgICAgICAgICBpZiAoXy5p bmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKLQotICAgICAgICAgIGlmICgnY29sbC10eXBlJyA9PSBkLl90eXBlKSB7Ci0gICAgICAgICAg ICAvL0NoZWNrIGlmIHdlIGFyZSBub3QgY2hpbGQgb2YgY2F0YWxvZwotICAgICAgICAgICAgdmFy IHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAg ICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAg ICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVu dChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsKLSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEo aSkgOiBudWxsOwotICAgICAgICB9Ci0gICAgICAgIC8vIGJ5IGRlZmF1bHQgd2UgZG8gbm90IHdh bnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9LAog ICAgIH0pOwogICB9CiAgIHJldHVybiBwZ0Jyb3dzZXIuTm9kZXNbJ3R5cGUnXTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9z Y2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmlldy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRpYy9qcy9tdmll dy5qcwppbmRleCAwNzNlZjVjYi4uZGNmZGQ1NGIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRp Yy9qcy9tdmlldy5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvbXZpZXcuanMKQEAgLTEsOCAr MSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUubXZpZXcnLCBbCiAgICdzb3VyY2VzL2dldHRl eHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAgJ3NvdXJj ZXMvcGdhZG1pbicsICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKLSAg J3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2UnLAot XSwgZnVuY3Rpb24oZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgcGdBZG1pbiwgQWxlcnRpZnksIHBn QnJvd3NlciwgQmFja2Zvcm0pIHsKKyAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5ub2Rl LnNjaGVtYS5kaXIvY2hpbGQnLAorICAncGdhZG1pbi5icm93c2VyLnNlcnZlci5wcml2aWxlZ2Un LAorXSwgZnVuY3Rpb24oCisgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIHBnQWRtaW4sIEFsZXJ0 aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tmb3JtLAorICBzY2hlbWFDaGlsZAorKSB7CiAKICAgLyoqCiAg ICAgQ3JlYXRlIGFuZCBhZGQgYSB2aWV3IGNvbGxlY3Rpb24gaW50byBub2RlcwpAQCAtMzMsMTkg KzM3LDE2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogICAgIHZpZXcgb3B0aW9u IGluIHRoZSBjb250ZXh0IG1lbnUKICAgICovCiAgIGlmICghcGdCcm93c2VyLk5vZGVzWydtdmll dyddKSB7Ci0gICAgcGdCcm93c2VyLk5vZGVzWydtdmlldyddID0gcGdCcm93c2VyLk5vZGUuZXh0 ZW5kKHsKLSAgICAgIHBhcmVudF90eXBlOiBbJ3NjaGVtYScsICdjYXRhbG9nJ10sCisgICAgcGdC cm93c2VyLk5vZGVzWydtdmlldyddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGROb2RlLmV4dGVu ZCh7CiAgICAgICB0eXBlOiAnbXZpZXcnLAogICAgICAgc3FsQWx0ZXJIZWxwOiAnc3FsLWFsdGVy bWF0ZXJpYWxpemVkdmlldy5odG1sJywKICAgICAgIHNxbENyZWF0ZUhlbHA6ICdzcWwtY3JlYXRl bWF0ZXJpYWxpemVkdmlldy5odG1sJywKICAgICAgIGRpYWxvZ0hlbHA6IHVybF9mb3IoJ2hlbHAu c3RhdGljJywgeydmaWxlbmFtZSc6ICdtYXRlcmlhbGl6ZWRfdmlld19kaWFsb2cuaHRtbCd9KSwK ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYXRlcmlhbGl6ZWQgVmlldycpLAotICAgICAgaGFzU1FM OiAgdHJ1ZSwKKyAgICAgIGhhc1NRTDogdHJ1ZSwKICAgICAgIGhhc0RlcGVuZHM6IHRydWUsCiAg ICAgICBoYXNTY3JpcHRUeXBlczogWydjcmVhdGUnLCAnc2VsZWN0J10sCiAgICAgICBjb2xsZWN0 aW9uX3R5cGU6ICdjb2xsLW12aWV3JywKLSAgICAgIGNhbkRyb3A6IHBnQnJvd3Nlci5Ob2Rlc1sn c2NoZW1hJ10uY2FuQ2hpbGREcm9wLAotICAgICAgY2FuRHJvcENhc2NhZGU6IHBnQnJvd3Nlci5O b2Rlc1snc2NoZW1hJ10uY2FuQ2hpbGREcm9wLAogICAgICAgSW5pdDogZnVuY3Rpb24oKSB7CiAK ICAgICAgICAgLy8gQXZvaWQgbXVsaXRwbGUgcmVnaXN0cmF0aW9uIG9mIG1lbnVzCkBAIC0yMzYs NDMgKzIzNyw2IEBAIGRlZmluZSgncGdhZG1pbi5ub2RlLm12aWV3JywgWwogCiAgICAgICB9KSwK IAotICAgICAgLyoqCi0gICAgICAgIFNob3cgb3IgaGlkZSBjcmVhdGUgdmlldyBtZW51IG9wdGlv biBvbiBwYXJlbnQgbm9kZQotICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0 YWxvZ3MuCi0gICAgICAgKi8KLSAgICAgIGNhbkNyZWF0ZTogZnVuY3Rpb24oaXRlbURhdGEsIGl0 ZW0sIGRhdGEpIHsKLQotICAgICAgICAvLyBJZiBjaGVjayBpcyBmYWxzZSB0aGVuLCB3ZSB3aWxs IGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIGlmIChkYXRhICYmIGRhdGEuY2hlY2sgPT09IGZh bHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0ID0gcGdCcm93c2Vy LnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8gVG8gaXRlcmF0ZSBv dmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUgKGkpIHsKLQotICAg ICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8gY3JlYXRlIHZpZXcK LSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUpID4gLTEpCi0gICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC1tdmlldycgPT0gZC5f dHlwZSkgewotCi0gICAgICAgICAgICAvLyBDaGVjayBpZiB3ZSBhcmUgbm90IGNoaWxkIG9mIHZp ZXcKLSAgICAgICAgICAgIHZhciBwcmV2X2kgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp IDogbnVsbCwKLSAgICAgICAgICAgICAgcHJldl9kID0gcHJldl9pID8gdC5pdGVtRGF0YShwcmV2 X2kpIDogbnVsbDsKLSAgICAgICAgICAgIGlmKCBwcmV2X2QuX3R5cGUgPT0gJ2NhdGFsb2cnKSB7 Ci0gICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg ICAgICBpID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAg ZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogbnVsbDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGJ5 IGRlZmF1bHQgd2UgZG8gbm90IHdhbnQgdG8gYWxsb3cgY3JlYXRlIG1lbnUKLSAgICAgICAgcmV0 dXJuIHRydWU7Ci0gICAgICB9LAogICAgICAgcmVmcmVzaF9tdmlldzogZnVuY3Rpb24oYXJncykg ewogICAgICAgICB2YXIgaW5wdXQgPSBhcmdzIHx8IHt9LAogICAgICAgICAgIG9iaiA9IHRoaXMs CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9k YXRhYmFzZXMvc2NoZW1hcy92aWV3cy9zdGF0aWMvanMvdmlldy5qcyBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3ZpZXdzL3N0YXRp Yy9qcy92aWV3LmpzCmluZGV4IDU3NTVhNTA5Li5jZDYxZWYyMSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmll d3Mvc3RhdGljL2pzL3ZpZXcuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3Jv dXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdmlld3Mvc3RhdGljL2pzL3ZpZXcuanMKQEAg LTEsOSArMSwxMiBAQAogZGVmaW5lKCdwZ2FkbWluLm5vZGUudmlldycsIFsKLSAgJ3NvdXJjZXMv Z2V0dGV4dCcsCi0gICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAn c291cmNlcy9wZ2FkbWluJywKLSAgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3Jt JywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJpdmlsZWdlJywKKyAgJ3NvdXJjZXMvZ2V0dGV4 dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLAorICAnc291cmNl cy9wZ2FkbWluJywgJ3BnYWRtaW4uYnJvd3NlcicsICdwZ2FkbWluLmJhY2tmb3JtJywKKyAgJ3Bn YWRtaW4ubm9kZS5zY2hlbWEuZGlyL2NoaWxkJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJp dmlsZWdlJywKICAgJ3BnYWRtaW4ubm9kZS5ydWxlJywKLV0sIGZ1bmN0aW9uKGdldHRleHQsIHVy bF9mb3IsICQsIF8sIHBnQWRtaW4sIHBnQnJvd3NlciwgQmFja2Zvcm0pIHsKK10sIGZ1bmN0aW9u KAorICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBfLCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tmb3Jt LCBzY2hlbWFDaGlsZAorKSB7CisKIAogICAvKioKICAgICBDcmVhdGUgYW5kIGFkZCBhIHZpZXcg Y29sbGVjdGlvbiBpbnRvIG5vZGVzCkBAIC0yOCwxNCArMzEsOSBAQCBkZWZpbmUoJ3BnYWRtaW4u bm9kZS52aWV3JywgWwogICAgIHVuZGVyIHdoaWNoIHRoaXMgbm9kZSB0byBkaXNwbGF5CiAgICAg QHBhcmFtIHt2YXJpYWJsZX0gdHlwZSAtIFR5cGUgb2YgTm9kZQogICAgIEBwYXJhbSB7dmFyaWFi bGV9IGhhc1NRTCAtIFRvIHNob3cgU1FMIHRhYgotICAgIEBwYXJhbSB7dmFyaWFibGV9IGNhbkRy b3AgLSBBZGRzIGRyb3AgdmlldyBvcHRpb24KLSAgICBpbiB0aGUgY29udGV4dCBtZW51Ci0gICAg QHBhcmFtIHt2YXJpYWJsZX0gY2FuRHJvcENhc2NhZGUgLSBBZGRzIGRyb3AgQ2FzY2FkZQotICAg IHZpZXcgb3B0aW9uIGluIHRoZSBjb250ZXh0IG1lbnUKICAgICovCiAgIGlmICghcGdCcm93c2Vy Lk5vZGVzWyd2aWV3J10pIHsKLSAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3ZpZXcnXSA9IHBnQnJvd3Nl ci5Ob2RlLmV4dGVuZCh7Ci0gICAgICBwYXJlbnRfdHlwZTogWydzY2hlbWEnLCAnY2F0YWxvZydd LAorICAgIHBnQnJvd3Nlci5Ob2Rlc1sndmlldyddID0gc2NoZW1hQ2hpbGQuU2NoZW1hQ2hpbGRO b2RlLmV4dGVuZCh7CiAgICAgICB0eXBlOiAndmlldycsCiAgICAgICBzcWxBbHRlckhlbHA6ICdz cWwtYWx0ZXJ2aWV3Lmh0bWwnLAogICAgICAgc3FsQ3JlYXRlSGVscDogJ3NxbC1jcmVhdGV2aWV3 Lmh0bWwnLApAQCAtNDUsOCArNDMsNiBAQCBkZWZpbmUoJ3BnYWRtaW4ubm9kZS52aWV3JywgWwog ICAgICAgaGFzRGVwZW5kczogdHJ1ZSwKICAgICAgIGhhc1NjcmlwdFR5cGVzOiBbJ2NyZWF0ZScs ICdzZWxlY3QnLCAnaW5zZXJ0J10sCiAgICAgICBjb2xsZWN0aW9uX3R5cGU6ICdjb2xsLXZpZXcn LAotICAgICAgY2FuRHJvcDogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGlsZERyb3As Ci0gICAgICBjYW5Ecm9wQ2FzY2FkZTogcGdCcm93c2VyLk5vZGVzWydzY2hlbWEnXS5jYW5DaGls ZERyb3AsCiAgICAgICBJbml0OiBmdW5jdGlvbigpIHsKIAogICAgICAgICAvLyBBdm9pZCBtdWxp dHBsZSByZWdpc3RyYXRpb24gb2YgbWVudXMKQEAgLTE5Nyw0NSArMTkzLDYgQEAgZGVmaW5lKCdw Z2FkbWluLm5vZGUudmlldycsIFsKICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0s CiAgICAgICB9KSwKLQotICAgICAgLyoqCi0gICAgICAgIFNob3cgb3IgaGlkZSBjcmVhdGUgdmll dyBtZW51IG9wdGlvbiBvbiBwYXJlbnQgbm9kZQotICAgICAgICBhbmQgaGlkZSBmb3Igc3lzdGVt IHZpZXcgaW4gY2F0YWxvZ3MuCi0gICAgICAgICovCi0gICAgICBjYW5DcmVhdGU6IGZ1bmN0aW9u KGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0KLSAgICAgICAgLy8gSWYgY2hlY2sgaXMgZmFsc2Ug dGhlbiwgd2Ugd2lsbCBhbGxvdyBjcmVhdGUgbWVudQotICAgICAgICBpZiAoZGF0YSAmJiBkYXRh LmNoZWNrID09IGZhbHNlKQotICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7Ci0KLSAgICAgICAgLy8g VG8gaXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKLSAgICAgICAgd2hpbGUg KGkpIHsKLQotICAgICAgICAgIC8vIElmIGl0IGlzIHNjaGVtYSB0aGVuIGFsbG93IHVzZXIgdG8g Y3JlYXRlIHZpZXcKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKFsnc2NoZW1hJ10sIGQuX3R5cGUp ID4gLTEpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgIGlmICgnY29sbC12 aWV3JyA9PSBkLl90eXBlKSB7Ci0KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBub3Qg Y2hpbGQgb2YgdmlldwotICAgICAgICAgICAgdmFyIHByZXZfaSA9IHQuaGFzUGFyZW50KGkpID8g dC5wYXJlbnQoaSkgOiBudWxsLAotICAgICAgICAgICAgICBwcmV2X2QgPSBwcmV2X2kgPyB0Lml0 ZW1EYXRhKHByZXZfaSkgOiBudWxsOwotICAgICAgICAgICAgaWYoIHByZXZfZC5fdHlwZSA9PSAn Y2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAg ICAgfQotICAgICAgICAgIGkgPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbDsK LSAgICAgICAgICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOwotICAgICAgICB9Ci0KLSAg ICAgICAgLy8gYnkgZGVmYXVsdCB3ZSBkbyBub3Qgd2FudCB0byBhbGxvdyBjcmVhdGUgbWVudQot ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgfSwKICAgICB9KTsKICAgfQogCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9jb2xsZWN0aW9uLmpzIGIvd2ViL3Bn YWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcwppbmRleCAwNWYwZWRkNS4uNjdl NDQyMTQgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2NvbGxlY3Rp b24uanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcwpA QCAtMTE1LDE3ICsxMTUsMTcgQEAgZGVmaW5lKFsKICAgICAgICAgLy8gRmV0Y2ggRGF0YQogICAg ICAgICBjb2xsZWN0aW9uLmZldGNoKHsKICAgICAgICAgICByZXNldDogdHJ1ZSwKLSAgICAgICAg ICBlcnJvcjogZnVuY3Rpb24oeGhyLCBlcnJvciwgbWVzc2FnZSkgeworICAgICAgICAgIGVycm9y OiBmdW5jdGlvbihtb2RlbCwgZXJyb3IsIHhocikgewogICAgICAgICAgICAgcGdCcm93c2VyLkV2 ZW50cy50cmlnZ2VyKAogICAgICAgICAgICAgICAncGdhZG1pbjpjb2xsZWN0aW9uOnJldHJpZXZh bDplcnJvcicsICdwcm9wZXJ0aWVzJywgeGhyLCBlcnJvciwKLSAgICAgICAgICAgICAgbWVzc2Fn ZSwgaXRlbSwgdGhhdAorICAgICAgICAgICAgICBlcnJvci5tZXNzYWdlLCBpdGVtLCB0aGF0CiAg ICAgICAgICAgICApOwogICAgICAgICAgICAgaWYgKCFBbGVydGlmeS5wZ0hhbmRsZUl0ZW1FcnJv cigKLSAgICAgICAgICAgICAgeGhyLCBlcnJvciwgbWVzc2FnZSwge2l0ZW06IGl0ZW0sIGluZm86 IGluZm99CisgICAgICAgICAgICAgIHhociwgZXJyb3IsIGVycm9yLm1lc3NhZ2UsIHtpdGVtOiBp dGVtLCBpbmZvOiBpbmZvfQogICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICBBbGVydGlm eS5wZ05vdGlmaWVyKGVycm9yLCB4aHIsIFMoCiAgICAgICAgICAgICAgICAgZ2V0dGV4dCgnRXJy b3IgcmV0cmlldmluZyBwcm9wZXJ0aWVzIC0gJXMuJykKLSAgICAgICAgICAgICAgKS5zcHJpbnRm KG1lc3NhZ2UgfHwgdGhhdC5sYWJlbCkudmFsdWUoKSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICkuc3ByaW50ZihlcnJvci5tZXNzYWdlIHx8IHRoYXQubGFiZWwpLnZhbHVlKCksIGZ1bmN0 aW9uKCkgewogICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihhcmd1bWVudHMpOwogICAgICAg ICAgICAgICB9KTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvc3RhdGljL2pzL25vZGUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9ub2Rl LmpzCmluZGV4IGFkNTgyNDgzLi45NGJhZWFiZiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvbm9kZS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9q cy9ub2RlLmpzCkBAIC0xLDkgKzEsMTMgQEAKIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUn LCBbCisgICdzb3VyY2VzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnLAogICAnc291cmNlcy9nZXR0 ZXh0JywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3NvdXJj ZXMvcGdhZG1pbicsCiAgICdwZ2FkbWluLmJyb3dzZXIubWVudScsICdiYWNrYm9uZScsICdwZ2Fk bWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyLmRhdGFtb2RlbCcsCiAgICdiYWNrZm9y bScsICdzb3VyY2VzL2Jyb3dzZXIvZ2VuZXJhdGVfdXJsJywgJ3NvdXJjZXMvdXRpbHMnLCAncGdh ZG1pbi5icm93c2VyLnV0aWxzJywKICAgJ3BnYWRtaW4uYmFja2Zvcm0nLAotXSwgZnVuY3Rpb24o Z2V0dGV4dCwgJCwgXywgUywgcGdBZG1pbiwgTWVudSwgQmFja2JvbmUsIEFsZXJ0aWZ5LCBwZ0Jy b3dzZXIsIEJhY2tmb3JtLCBnZW5lcmF0ZVVybCwgY29tbW9uVXRpbHMpIHsKK10sIGZ1bmN0aW9u KAorICBwZ2FkbWluVHJlZU5vZGUsCisgIGdldHRleHQsICQsIF8sIFMsIHBnQWRtaW4sIE1lbnUs IEJhY2tib25lLCBBbGVydGlmeSwgcGdCcm93c2VyLCBCYWNrZm9ybSwgZ2VuZXJhdGVVcmwsIGNv bW1vblV0aWxzCispIHsKIAogICB2YXIgd2NEb2NrZXIgPSB3aW5kb3cud2NEb2NrZXIsCiAgICAg a2V5Q29kZSA9IHsKQEAgLTI4LDcgKzMyLDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9k ZScsIFsKICAgLy8KICAgLy8gSXQgaXMgdW5saWtlbHkgLSB3ZSB3aWxsIGluc3RhbnRpYXRlIGFu IG9iamVjdCBmb3IgdGhpcyBjbGFzcy4KICAgLy8gKEluc3BpcmVkIGJ5IEJhY2tib25lLmV4dGVu ZCBmdW5jdGlvbikKLSAgcGdCcm93c2VyLk5vZGUuZXh0ZW5kID0gZnVuY3Rpb24ocHJvcHMpIHsK KyAgcGdCcm93c2VyLk5vZGUuZXh0ZW5kID0gZnVuY3Rpb24ocHJvcHMsIGluaXRpYWxpemUpIHsK ICAgICB2YXIgcGFyZW50ID0gdGhpczsKICAgICB2YXIgY2hpbGQ7CiAKQEAgLTQ0LDYgKzQ4LDEw IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgLy8gTWFrZSBzdXJlIC0g YSBjaGlsZCBoYXZlIGFsbCB0aGUgY2FsbGJhY2tzIG9mIHRoZSBwYXJlbnQuCiAgICAgY2hpbGQu Y2FsbGJhY2tzID0gXy5leHRlbmQoe30sIHBhcmVudC5jYWxsYmFja3MsIHByb3BzLmNhbGxiYWNr cyk7CiAKKyAgICAvLyBMZXQncyBub3QgYmluZCB0aGUgY2FsbGJhY2tzLCBvciBpbml0aWFsaXpl IHRoZSBjaGlsZC4KKyAgICBpZiAoaW5pdGlhbGl6ZSA9PT0gZmFsc2UpCisgICAgICByZXR1cm4g Y2hpbGQ7CisKICAgICB2YXIgYmluZFRvQ2hpbGQgPSBmdW5jdGlvbihjYikgewogICAgICAgICBp ZiAodHlwZW9mKGNoaWxkLmNhbGxiYWNrc1tjYl0pID09ICdmdW5jdGlvbicpIHsKICAgICAgICAg ICBjaGlsZC5jYWxsYmFja3NbY2JdID0gY2hpbGQuY2FsbGJhY2tzW2NiXS5iaW5kKGNoaWxkKTsK QEAgLTE1NjYsNyArMTU3NCw2IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAg ICAgICogZGVwZW5kcywgc3RhdGlzdGljcwogICAgICAqLwogICAgIGdlbmVyYXRlX3VybDogZnVu Y3Rpb24oaXRlbSwgdHlwZSwgZCwgd2l0aF9pZCwgaW5mbykgewotCiAgICAgICB2YXIgb3BVUkwg PSB7CiAgICAgICAgICAgJ2NyZWF0ZSc6ICdvYmonLAogICAgICAgICAgICdkcm9wJzogJ29iaics CkBAIC0xNjA4LDI0ICsxNjE1LDcgQEAgZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXIubm9kZScsIFsK ICAgICBDb2xsZWN0aW9uOiBwZ0Jyb3dzZXIuRGF0YUNvbGxlY3Rpb24sCiAgICAgLy8gQmFzZSBj bGFzcyBmb3IgTm9kZSBEYXRhIE1vZGVsCiAgICAgTW9kZWw6IHBnQnJvd3Nlci5EYXRhTW9kZWws Ci0gICAgZ2V0VHJlZU5vZGVIaWVyYXJjaHk6IGZ1bmN0aW9uKGkpIHsKLSAgICAgIHZhciBpZHgg PSAwLAotICAgICAgICByZXMgPSB7fSwKLSAgICAgICAgdCA9IHBnQnJvd3Nlci50cmVlLAotICAg ICAgICBkOwotICAgICAgZG8gewotICAgICAgICBkID0gdC5pdGVtRGF0YShpKTsKLSAgICAgICAg aWYgKGQuX3R5cGUgaW4gcGdCcm93c2VyLk5vZGVzICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBl XS5oYXNJZCkgewotICAgICAgICAgIHJlc1tkLl90eXBlXSA9IF8uZXh0ZW5kKHt9LCBkLCB7Ci0g ICAgICAgICAgICAncHJpb3JpdHknOiBpZHgsCi0gICAgICAgICAgfSk7Ci0gICAgICAgICAgaWR4 IC09IDE7Ci0gICAgICAgIH0KLSAgICAgICAgaSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQo aSkgOiBudWxsOwotICAgICAgfSB3aGlsZSAoaSk7Ci0KLSAgICAgIHJldHVybiByZXM7Ci0gICAg fSwKKyAgICBnZXRUcmVlTm9kZUhpZXJhcmNoeTogcGdhZG1pblRyZWVOb2RlLmdldFRyZWVOb2Rl SGllcmFyY2h5RnJvbUlkZW50aWZpZXIuYmluZChwZ0Jyb3dzZXIpLAogICAgIGNhY2hlOiBmdW5j dGlvbih1cmwsIG5vZGVfaW5mbywgbGV2ZWwsIGRhdGEpIHsKICAgICAgIHZhciBjYWNoZWQgPSB0 aGlzLmNhY2hlZCA9IHRoaXMuY2FjaGVkIHx8IHt9LAogICAgICAgICBoYXNoID0gdXJsLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZy5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjVhODY0NmY5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZy5qcwpAQCAtMCwwICsxLDEyOSBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitp bXBvcnQgZ2V0dGV4dCBmcm9tICcuLi9nZXR0ZXh0JzsKK2ltcG9ydCB7c3ByaW50Zn0gZnJvbSAn c3ByaW50Zi1qcyc7CitpbXBvcnQge0RpYWxvZ0ZhY3Rvcnl9IGZyb20gJy4vZGlhbG9nX2ZhY3Rv cnknOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uL2JhY2tmb3JtLnBnYWRtaW4nOworaW1wb3J0 IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi90cmVlL3BnYWRt aW5fdHJlZV9ub2RlJzsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNhbiBiZSBleHRlbmRlZCB0byBj cmVhdGUgbmV3IGRpYWxvZyBib3hlcy4KKyAqIEV4YW1wbGVzIG9mIHRoaXMgY2FuIGJlIGZvdW5k IGluOgorICogYHdlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrdXAvYmFja3VwX2RpYWxvZy5qc2AK KyAqCisgKiBEbyBub3QgZm9yZ2V0IHRvIGFkZCB0aGUgbmV3IERpYWxvZyB0eXBlIHRvIHRoZSBg RGlhbG9nRmFjdG9yeWAKKyAqLworZXhwb3J0IGNsYXNzIERpYWxvZyB7CisgIGNvbnN0cnVjdG9y KGVycm9yQWxlcnRUaXRsZSwKKyAgICAgICAgICAgICAgZGlhbG9nQ29udGFpbmVyU2VsZWN0b3Is CisgICAgICAgICAgICAgIHBnQnJvd3NlciwgJCwgYWxlcnRpZnksIERpYWxvZ01vZGVsLAorICAg ICAgICAgICAgICBiYWNrZm9ybSA9IEJhY2tmb3JtKSB7CisgICAgdGhpcy5lcnJvckFsZXJ0VGl0 bGUgPSBlcnJvckFsZXJ0VGl0bGU7CisgICAgdGhpcy5hbGVydGlmeSA9IGFsZXJ0aWZ5OworICAg IHRoaXMucGdCcm93c2VyID0gcGdCcm93c2VyOworICAgIHRoaXMuanF1ZXJ5ID0gJDsKKyAgICB0 aGlzLmRpYWxvZ01vZGVsID0gRGlhbG9nTW9kZWw7CisgICAgdGhpcy5iYWNrZm9ybSA9IGJhY2tm b3JtOworICAgIHRoaXMuZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IgPSBkaWFsb2dDb250YWluZXJT ZWxlY3RvcjsKKyAgfQorCisgIHJldHJpZXZlQW5jZXN0b3JPZlR5cGVTZXJ2ZXIoaXRlbSkgewor ICAgIGxldCBzZXJ2ZXJJbmZvcm1hdGlvbiA9IG51bGw7CisgICAgbGV0IGFjaVRyZWVJdGVtID0g aXRlbSB8fCB0aGlzLnBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RlZCgpOworICAgIGxldCB0cmVl Tm9kZSA9IHRoaXMucGdCcm93c2VyLnRyZWVNZW51LmZpbmROb2RlQnlEb21FbGVtZW50KGFjaVRy ZWVJdGVtKTsKKworICAgIHdoaWxlICh0cmVlTm9kZSkgeworICAgICAgY29uc3Qgbm9kZV9kYXRh ID0gdHJlZU5vZGUuZ2V0RGF0YSgpOworICAgICAgaWYgKG5vZGVfZGF0YS5fdHlwZSA9PT0gJ3Nl cnZlcicpIHsKKyAgICAgICAgc2VydmVySW5mb3JtYXRpb24gPSBub2RlX2RhdGE7CisgICAgICAg IGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAodHJlZU5vZGUuaGFzUGFyZW50KCkpIHsKKyAg ICAgICAgdHJlZU5vZGUgPSB0cmVlTm9kZS5wYXJlbnQoKTsKKyAgICAgIH0gZWxzZSB7CisgICAg ICAgIHRoaXMuYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgZ2V0dGV4dCh0aGlzLmVycm9yQWxl cnRUaXRsZSksCisgICAgICAgICAgZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hp bGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJykKKyAgICAgICAgKTsKKyAgICAgICAgYnJl YWs7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBzZXJ2ZXJJbmZvcm1hdGlvbjsKKyAgfQor CisgIGhhc0JpbmFyaWVzQ29uZmlndXJhdGlvbihzZXJ2ZXJJbmZvcm1hdGlvbikgeworICAgIGNv bnN0IG1vZHVsZSA9ICdwYXRocyc7CisgICAgbGV0IHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5f ZGlyJzsKKyAgICBsZXQgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdy ZVNRTCBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOworCisgICAgaWYg KChzZXJ2ZXJJbmZvcm1hdGlvbi50eXBlICYmIHNlcnZlckluZm9ybWF0aW9uLnR5cGUgPT09ICdw cGFzJykgfHwKKyAgICAgIHNlcnZlckluZm9ybWF0aW9uLnNlcnZlcl90eXBlID09PSAncHBhcycp IHsKKyAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jpbl9kaXInOworICAgICAgbXNnID0g Z2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgRURCIEFkdmFuY2VkIFNlcnZlciBCaW5hcnkg UGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOworICAgIH0KKyAgICBjb25zdCBwcmVm ZXJlbmNlID0gdGhpcy5wZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UobW9kdWxlLCBwcmVmZXJlbmNl X25hbWUpOworCisgICAgaWYgKHByZWZlcmVuY2UpIHsKKyAgICAgIGlmICghcHJlZmVyZW5jZS52 YWx1ZSkgeworICAgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KGdldHRleHQoJ0NvbmZpZ3VyYXRp b24gcmVxdWlyZWQnKSwgbXNnKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAg IH0gZWxzZSB7CisgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICBnZXR0ZXh0KHRo aXMuZXJyb3JBbGVydFRpdGxlKSwKKyAgICAgICAgc3ByaW50ZihnZXR0ZXh0KCdGYWlsZWQgdG8g bG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpLCBwcmVmZXJlbmNlX25hbWUsIG1vZHVs ZSkKKyAgICAgICk7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVl OworICB9CisKKyAgZGlhbG9nTmFtZSgpIHsKKyAgICByZXR1cm4gdW5kZWZpbmVkOworICB9CisK KyAgY3JlYXRlT3JHZXREaWFsb2coZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZykgeworICAgIGNv bnN0IGRpYWxvZ05hbWUgPSB0aGlzLmRpYWxvZ05hbWUodHlwZU9mRGlhbG9nKTsKKworICAgIGlm ICghdGhpcy5hbGVydGlmeVtkaWFsb2dOYW1lXSkgeworICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7 CisgICAgICB0aGlzLmFsZXJ0aWZ5LmRpYWxvZyhkaWFsb2dOYW1lLCBmdW5jdGlvbiBmYWN0b3J5 KCkgeworICAgICAgICByZXR1cm4gc2VsZi5kaWFsb2dGYWN0b3J5KGRpYWxvZ1RpdGxlLCB0eXBl T2ZEaWFsb2cpOworICAgICAgfSk7CisgICAgfQorICAgIHJldHVybiB0aGlzLmFsZXJ0aWZ5W2Rp YWxvZ05hbWVdOworICB9CisKKyAgZGlhbG9nRmFjdG9yeShkaWFsb2dUaXRsZSwgdHlwZU9mRGlh bG9nKSB7CisgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBEaWFsb2dGYWN0b3J5KAorICAgICAgdGhp cy5wZ0Jyb3dzZXIsCisgICAgICB0aGlzLmpxdWVyeSwKKyAgICAgIHRoaXMuYWxlcnRpZnksCisg ICAgICB0aGlzLmRpYWxvZ01vZGVsLAorICAgICAgdGhpcy5iYWNrZm9ybSwKKyAgICAgIHRoaXMu ZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IpOworICAgIHJldHVybiBmYWN0b3J5LmNyZWF0ZShkaWFs b2dUaXRsZSwgdHlwZU9mRGlhbG9nKTsKKyAgfQorCisgIGNhbkV4ZWN1dGVPbkN1cnJlbnREYXRh YmFzZShhY2lUcmVlSXRlbSkgeworICAgIGNvbnN0IHRyZWVJbmZvID0gZ2V0VHJlZU5vZGVIaWVy YXJjaHlGcm9tSWRlbnRpZmllci5hcHBseSh0aGlzLnBnQnJvd3NlciwgW2FjaVRyZWVJdGVtXSk7 CisKKyAgICBpZiAodHJlZUluZm8uZGF0YWJhc2UgJiYgdHJlZUluZm8uZGF0YWJhc2UuX2xhYmVs LmluZGV4T2YoJz0nKSA+PSAwKSB7CisgICAgICB0aGlzLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAg ICBnZXR0ZXh0KHRoaXMuZXJyb3JBbGVydFRpdGxlKSwKKyAgICAgICAgZ2V0dGV4dCgnRGF0YWJh c2VzIHdpdGggPSBzeW1ib2xzIGluIHRoZSBuYW1lIGNhbm5vdCBiZSBiYWNrZWQgdXAgb3IgcmVz dG9yZWQgdXNpbmcgdGhpcyB1dGlsaXR5LicpCisgICAgICApOworICAgICAgcmV0dXJuIGZhbHNl OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX2ZhY3RvcnkuanMgYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX2ZhY3RvcnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAuLjUwMDE0MGI4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ19mYWN0b3J5LmpzCkBAIC0wLDAgKzEsNTIgQEAKKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0 IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8KKworaW1wb3J0ICogYXMgQmFja3VwRGlhbG9nIGZyb20gJy4uLy4uLy4uL3Rvb2xzL2JhY2t1 cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCB7UmVzdG9yZURpYWxv Z1dyYXBwZXJ9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVf ZGlhbG9nX3dyYXBwZXInOworCitleHBvcnQgY2xhc3MgRGlhbG9nRmFjdG9yeSB7CisgIGNvbnN0 cnVjdG9yKHBnQnJvd3NlciwgJCwKKyAgICAgICAgICAgICAgYWxlcnRpZnksIERpYWxvZ01vZGVs LAorICAgICAgICAgICAgICBiYWNrZm9ybSwgZGlhbG9nQ29udGFpbmVyU2VsZWN0b3IpIHsKKyAg ICB0aGlzLnBnQnJvd3NlciA9IHBnQnJvd3NlcjsKKyAgICB0aGlzLmpxdWVyeSA9ICQ7CisgICAg dGhpcy5hbGVydGlmeSA9IGFsZXJ0aWZ5OworICAgIHRoaXMuZGlhbG9nTW9kZWwgPSBEaWFsb2dN b2RlbDsKKyAgICB0aGlzLmJhY2tmb3JtID0gYmFja2Zvcm07CisgICAgdGhpcy5kaWFsb2dDb250 YWluZXJTZWxlY3RvciA9IGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yOworICB9CisKKyAgY3JlYXRl KGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAgICBpZiAodHlwZU9mRGlhbG9nID09PSAn cmVzdG9yZScpIHsKKyAgICAgIHJldHVybiB0aGlzLmNyZWF0ZVJlc3RvcmVEaWFsb2coZGlhbG9n VGl0bGUsIHR5cGVPZkRpYWxvZyk7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldHVybiB0aGlzLmNy ZWF0ZUJhY2t1cERpYWxvZyhkaWFsb2dUaXRsZSwgdHlwZU9mRGlhbG9nKTsKKyAgICB9CisgIH0K KworICBjcmVhdGVSZXN0b3JlRGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAg ICByZXR1cm4gbmV3IFJlc3RvcmVEaWFsb2dXcmFwcGVyKAorICAgICAgdGhpcy5kaWFsb2dDb250 YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZywKKyAgICAgIHRoaXMuanF1 ZXJ5LAorICAgICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAgICB0aGlzLmFsZXJ0aWZ5LAorICAgICAg dGhpcy5kaWFsb2dNb2RlbCwKKyAgICAgIHRoaXMuYmFja2Zvcm0pOworICB9CisKKyAgY3JlYXRl QmFja3VwRGlhbG9nKGRpYWxvZ1RpdGxlLCB0eXBlT2ZEaWFsb2cpIHsKKyAgICByZXR1cm4gbmV3 IEJhY2t1cERpYWxvZy5CYWNrdXBEaWFsb2dXcmFwcGVyKAorICAgICAgdGhpcy5kaWFsb2dDb250 YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZywKKyAgICAgIHRoaXMuanF1 ZXJ5LAorICAgICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAgICB0aGlzLmFsZXJ0aWZ5LAorICAgICAg dGhpcy5kaWFsb2dNb2RlbCwKKyAgICAgIHRoaXMuYmFja2Zvcm0pOworICB9Cit9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX3dyYXBwZXIuanMgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nX3dyYXBwZXIuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmI1ZmY4MjA0Ci0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2FsZXJ0aWZ5L2RpYWxvZ193cmFwcGVyLmpzCkBAIC0wLDAg KzEsNTcgQEAKK2ltcG9ydCAqIGFzIGNvbW1vblV0aWxzIGZyb20gJy4uL3V0aWxzJzsKKworZXhw b3J0IGNsYXNzIERpYWxvZ1dyYXBwZXIgeworICBjb25zdHJ1Y3RvcigKKyAgICBkaWFsb2dDb250 YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIGpxdWVyeSwgcGdCcm93c2VyLAorICAgIGFsZXJ0 aWZ5LCBkaWFsb2dNb2RlbCwgYmFja2Zvcm0pIHsKKyAgICB0aGlzLmhvb2tzID0geworICAgICAg b25jbG9zZTogZnVuY3Rpb24gKCkgeworICAgICAgICBpZiAodGhpcy52aWV3KSB7CisgICAgICAg ICAgdGhpcy52aWV3LnJlbW92ZSh7CisgICAgICAgICAgICBkYXRhOiB0cnVlLAorICAgICAgICAg ICAgaW50ZXJuYWw6IHRydWUsCisgICAgICAgICAgICBzaWxlbnQ6IHRydWUsCisgICAgICAgICAg fSk7CisgICAgICAgIH0KKyAgICAgIH0sCisgICAgfTsKKyAgICB0aGlzLmRpYWxvZ0NvbnRhaW5l clNlbGVjdG9yID0gZGlhbG9nQ29udGFpbmVyU2VsZWN0b3I7CisgICAgdGhpcy5kaWFsb2dUaXRs ZSA9IGRpYWxvZ1RpdGxlOworICAgIHRoaXMuanF1ZXJ5ID0ganF1ZXJ5OworICAgIHRoaXMucGdC cm93c2VyID0gcGdCcm93c2VyOworICAgIHRoaXMuYWxlcnRpZnkgPSBhbGVydGlmeTsKKyAgICB0 aGlzLmRpYWxvZ01vZGVsID0gZGlhbG9nTW9kZWw7CisgICAgdGhpcy5iYWNrZm9ybSA9IGJhY2tm b3JtOworICB9CisKKyAgYnVpbGQoKSB7CisgICAgdGhpcy5hbGVydGlmeS5wZ0RpYWxvZ0J1aWxk LmFwcGx5KHRoaXMpOworICB9CisKKyAgd2FzSGVscEJ1dHRvblByZXNzZWQoZSkgeworICAgIHJl dHVybiBlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT09ICdkaWFsb2dfaGVscCcKKyAgICAgIHx8IGUu YnV0dG9uLmVsZW1lbnQubmFtZSA9PT0gJ29iamVjdF9oZWxwJzsKKyAgfQorCisgIGdldFNlbGVj dGVkTm9kZURhdGEoc2VsZWN0ZWRUcmVlTm9kZSkgeworICAgIGlmICghdGhpcy5pc05vZGVTZWxl Y3RlZChzZWxlY3RlZFRyZWVOb2RlKSkgeworICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgICB9 CisgICAgY29uc3QgdHJlZU5vZGVEYXRhID0gc2VsZWN0ZWRUcmVlTm9kZS5nZXREYXRhKCk7Cisg ICAgaWYgKHRyZWVOb2RlRGF0YSkgeworICAgICAgcmV0dXJuIHRyZWVOb2RlRGF0YTsKKyAgICB9 CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKKyAgfQorCisgIGZvY3VzT25EaWFsb2coZGlhbG9nKSB7 CisgICAgZGlhbG9nLiRlbC5hdHRyKCd0YWJpbmRleCcsIC0xKTsKKyAgICB0aGlzLnBnQnJvd3Nl ci5rZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKGRpYWxvZyk7CisgICAg Y29uc3QgY29udGFpbmVyID0gZGlhbG9nLiRlbC5maW5kKCcudGFiLWNvbnRlbnQ6Zmlyc3QgPiAu dGFiLXBhbmUuYWN0aXZlOmZpcnN0Jyk7CisgICAgY29tbW9uVXRpbHMuZmluZEFuZFNldEZvY3Vz KGNvbnRhaW5lcik7CisgIH0KKworICBpc05vZGVTZWxlY3RlZChzZWxlY3RlZFRyZWVOb2RlKSB7 CisgICAgcmV0dXJuIHNlbGVjdGVkVHJlZU5vZGU7CisgIH0KK30KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJhc2Vfbm9kZS5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJhc2Vfbm9kZS5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uZmRlMWNmOTgKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvbm9kZXMvc3VwcG9ydGVkX2RhdGFiYXNlX25vZGUuanMK QEAgLTAsMCArMSwzNyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge2lzVmFsaWRUcmVlTm9kZURhdGF9IGZy b20gJ3NvdXJjZXMvdHJlZS90cmVlJzsKKworZnVuY3Rpb24gY2hlY2tBbGxvd0Nvbm5JZkRhdGFi YXNlTm9kZSh0cmVlTm9kZURhdGEpIHsKKyAgcmV0dXJuICh0cmVlTm9kZURhdGEuX3R5cGUgPT09 ICdkYXRhYmFzZScgJiYgdHJlZU5vZGVEYXRhLmFsbG93Q29ubikKKyAgICB8fCB0cmVlTm9kZURh dGEuX3R5cGUgIT09ICdkYXRhYmFzZSc7Cit9CisKK2Z1bmN0aW9uIGFuY2VzdG9yV2l0aFR5cGVD YXRhbG9nKHRyZWVOb2RlKSB7CisgIHJldHVybiB0cmVlTm9kZS5hbnlGYW1pbHlNZW1iZXIoKG5v ZGUpID0+IHsKKyAgICByZXR1cm4gbm9kZS5nZXREYXRhKCkuX3R5cGUgPT09ICdjYXRhbG9nJzsK KyAgfSk7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBlbmFibGVkKHRyZWUsIHN1cHBvcnRlZE5vZGVz LCB0cmVlTm9kZURhdGEsIGRvbVRyZWVOb2RlKSB7CisgIGlmICghaXNWYWxpZFRyZWVOb2RlRGF0 YSh0cmVlTm9kZURhdGEpKQorICAgIHJldHVybiBmYWxzZTsKKworICBsZXQgdHJlZU5vZGUgPSB0 cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KGRvbVRyZWVOb2RlKTsKKyAgaWYgKCF0cmVlTm9kZSkg eworICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHJldHVybiBjaGVja0FsbG93Q29ubklmRGF0 YWJhc2VOb2RlKHRyZWVOb2RlRGF0YSkgJiYKKyAgICBfLmluZGV4T2Yoc3VwcG9ydGVkTm9kZXMs IHRyZWVOb2RlRGF0YS5fdHlwZSkgIT09IC0xICYmCisgICAgIWFuY2VzdG9yV2l0aFR5cGVDYXRh bG9nKHRyZWVOb2RlKTsKK30KKworCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv dHJlZS9wZ2FkbWluX3RyZWVfbm9kZS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3Bn YWRtaW5fdHJlZV9ub2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4w MGYxMGQyNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3Bn YWRtaW5fdHJlZV9ub2RlLmpzCkBAIC0wLDAgKzEsNzIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisv LworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykg MjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisKKy8qKgorICogVGhpcyBtZXRob2QgcmVjZWl2ZWQgcGdCcm93c2VyIGFuZCBu ZXcgVHJlZU5vZGUgb2JqZWN0CisgKgorICogVGhpcyBtZXRob2QgcmV0cmlldmVzIGFsbCB0aGUg ZGF0YSB0aGF0IGV4aXN0cyBpbiB0aGUgdHJlZSBub2RlIGFuZCBpbgorICogYHBnQnJvd3Nlci5O b2Rlc2AgZm9yIGFsbCB0aGUgcGFyZW50IG5vZGUgb2YgdGhlIHByb3ZpZGVkIG5vZGUuCisgKgor ICogVGhlIDIgY29uZGl0aW9uIHRvIGdldCB0aGUgaW5mb3JtYXRpb24gZnJvbSBwZ0Jyb3dzZXIu Tm9kZXMgYXJlOgorICogIDEgLSB0aGUgdmFyaWFibGUgX3R5cGUgb2YgdGhlIHRyZWUgbm9kZQor ICogIDIgLSB0aGUgcHJlc2VuY2Ugb2YgaGFzSWQgaW4gdGhlIHBnQnJvd3Nlci5Ob2RlcyBmb3Ig dGhlIHNwZWNpZmljIG5vZGUKKyAqCisgKiBOdW1iZXIgMiBpcyB1c2VkIHRvIGlnbm9yZSBjb2xs LSogbm9kZXMgYXMgdGhleSBkbyBub3QgYWRkIGFueSB1c2VmdWwKKyAqIGluZm9ybWF0aW9uCisg Ki8KK2V4cG9ydCBmdW5jdGlvbiBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KHBnQnJv d3NlciwgdHJlZU5vZGUpIHsKKyAgcmV0dXJuIGdldFRyZWVOb2RlSGllcmFyY2h5LmNhbGwocGdC cm93c2VyLCB0cmVlTm9kZSk7Cit9CisKKy8qKgorICogVGhpcyBtZXRob2QgcmVjZWl2ZWQgYW4g QUNJIFRyZWUgSlF1ZXJ5IG5vZGUKKyAqCisgKiBOT1RFOiB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8g YmUgY2FsbGVkIG9uIHBnQnJvd3NlciBpbnN0YW5jZS4KKyAqIGdldFRyZWVOb2RlSGllcmFyY2h5 RnJvbUlkZW50aWZpZXIuYXBwbHkocGdCcm93c2VyLCBbYWNpVHJlZU5vZGVJZGVudGlmaWVyXSkK KyAqCisgKiBUaGlzIG1ldGhvZCByZXRyaWV2ZXMgYWxsIHRoZSBkYXRhIHRoYXQgZXhpc3RzIGlu IHRoZSB0cmVlIG5vZGUgYW5kIGluCisgKiBgcGdCcm93c2VyLk5vZGVzYCBmb3IgYWxsIHRoZSBw YXJlbnQgbm9kZSBvZiB0aGUgcHJvdmlkZWQgbm9kZS4KKyAqCisgKiBUaGUgMiBjb25kaXRpb24g dG8gZ2V0IHRoZSBpbmZvcm1hdGlvbiBmcm9tIHBnQnJvd3Nlci5Ob2RlcyBhcmU6CisgKiAgMSAt IHRoZSB2YXJpYWJsZSBfdHlwZSBvZiB0aGUgdHJlZSBub2RlCisgKiAgMiAtIHRoZSBwcmVzZW5j ZSBvZiBoYXNJZCBpbiB0aGUgcGdCcm93c2VyLk5vZGVzIGZvciB0aGUgc3BlY2lmaWMgbm9kZQor ICoKKyAqIE51bWJlciAyIGlzIHVzZWQgdG8gaWdub3JlIGNvbGwtKiBub2RlcyBhcyB0aGV5IGRv IG5vdCBhZGQgYW55IHVzZWZ1bAorICogaW5mb3JtYXRpb24KKyAqLworZXhwb3J0IGZ1bmN0aW9u IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIoYWNpVHJlZU5vZGVJZGVudGlmaWVy KSB7CisgIGxldCBpZGVudGlmaWVyID0gdGhpcy50cmVlTWVudS50cmFuc2xhdGVUcmVlTm9kZUlk RnJvbUFDSVRyZWUoYWNpVHJlZU5vZGVJZGVudGlmaWVyKTsKKyAgbGV0IGN1cnJlbnROb2RlID0g dGhpcy50cmVlTWVudS5maW5kTm9kZShpZGVudGlmaWVyKTsKKyAgcmV0dXJuIGdldFRyZWVOb2Rl SGllcmFyY2h5LmNhbGwodGhpcywgY3VycmVudE5vZGUpOworfQorCitleHBvcnQgZnVuY3Rpb24g Z2V0VHJlZU5vZGVIaWVyYXJjaHkoY3VycmVudE5vZGUpIHsKKyAgbGV0IGlkeCA9IDA7CisgIGxl dCByZXN1bHQgPSB7fTsKKworICBkbyB7CisgICAgY29uc3QgY3VycmVudE5vZGVEYXRhID0gY3Vy cmVudE5vZGUuZ2V0RGF0YSgpOworICAgIGlmIChjdXJyZW50Tm9kZURhdGEuX3R5cGUgaW4gdGhp cy5Ob2RlcyAmJiB0aGlzLk5vZGVzW2N1cnJlbnROb2RlRGF0YS5fdHlwZV0uaGFzSWQpIHsKKyAg ICAgIGNvbnN0IG5vZGVUeXBlID0gbWFwVHlwZShjdXJyZW50Tm9kZURhdGEuX3R5cGUpOworICAg ICAgaWYgKHJlc3VsdFtub2RlVHlwZV0gPT09IHVuZGVmaW5lZCkgeworICAgICAgICByZXN1bHRb bm9kZVR5cGVdID0gXy5leHRlbmQoe30sIGN1cnJlbnROb2RlRGF0YSwgeworICAgICAgICAgICdw cmlvcml0eSc6IGlkeCwKKyAgICAgICAgfSk7CisgICAgICAgIGlkeCAtPSAxOworICAgICAgfQor ICAgIH0KKyAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhhc1BhcmVudCgpID8gY3VycmVu dE5vZGUucGFyZW50KCkgOiBudWxsOworICB9IHdoaWxlIChjdXJyZW50Tm9kZSk7CisKKyAgcmV0 dXJuIHJlc3VsdDsKK30KKworZnVuY3Rpb24gbWFwVHlwZSh0eXBlKSB7CisgIHJldHVybiB0eXBl ID09PSAncGFydGl0aW9uJyA/ICd0YWJsZScgOiB0eXBlOworfQpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZS5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVl L3RyZWUuanMKaW5kZXggMDFlZGI2YzMuLjY1MzMwNDY5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvdHJlZS90cmVlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy90cmVl L3RyZWUuanMKQEAgLTU5LDE3ICs1OSwyMCBAQCBleHBvcnQgY2xhc3MgVHJlZU5vZGUgewogICAg IHRyZWUuYWNpVHJlZUFwaS51bmxvYWQodGhpcy5kb21Ob2RlKTsKICAgfQogCi0gIGFueVBhcmVu dChjb25kaXRpb24pIHsKKyAgLyoKKyAgICogRmluZCB0aGUgYW5jZXN0b3Igd2l0aCBtYXRjaGVz IHRoaXMgY29uZGl0aW9uCisgICAqLworICBhbmNlc3Rvck5vZGUoY29uZGl0aW9uKSB7CiAgICAg bGV0IG5vZGUgPSB0aGlzOwogCiAgICAgd2hpbGUgKG5vZGUuaGFzUGFyZW50KCkpIHsKICAgICAg IG5vZGUgPSBub2RlLnBhcmVudCgpOwogICAgICAgaWYgKGNvbmRpdGlvbihub2RlKSkgewotICAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICB9CiAgICAgfQog Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBudWxsOwogICB9CiAKICAgLyoqCkBAIC04 MSw3ICs4NCwxMCBAQCBleHBvcnQgY2xhc3MgVHJlZU5vZGUgewogICAgICAgcmV0dXJuIHRydWU7 CiAgICAgfQogCi0gICAgcmV0dXJuIHRoaXMuYW55UGFyZW50KGNvbmRpdGlvbik7CisgICAgcmV0 dXJuICEhdGhpcy5hbmNlc3Rvck5vZGUoY29uZGl0aW9uKTsKKyAgfQorICBhbnlQYXJlbnQoY29u ZGl0aW9uKSB7CisgICAgcmV0dXJuICEhdGhpcy5hbmNlc3Rvck5vZGUoY29uZGl0aW9uKTsKICAg fQogfQogCkBAIC0yMTAsMyArMjE2LDcgQEAgZnVuY3Rpb24gZmluZEluVHJlZShyb290Tm9kZSwg cGF0aCkgewogICAgIH0KICAgfSkocm9vdE5vZGUpOwogfQorCitleHBvcnQgZnVuY3Rpb24gaXNW YWxpZFRyZWVOb2RlRGF0YSh0cmVlTm9kZURhdGEpIHsKKyAgcmV0dXJuICFfLmlzVW5kZWZpbmVk KHRyZWVOb2RlRGF0YSkgJiYgIV8uaXNOdWxsKHRyZWVOb2RlRGF0YSk7Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cC5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwLmpzCmluZGV4IDFiMGIzNjI4Li5kNmZk NDhjNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXAuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXAuanMK QEAgLTMsOSArMywxMiBAQCBkZWZpbmUoWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMv dXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycs ICdwZ2FkbWluLmFsZXJ0aWZ5anMnLCAnYmFja2JvbmUnLCAncGdhZG1pbi5iYWNrZ3JpZCcsCiAg ICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYnJvd3NlcicsICdzb3VyY2VzL3V0aWxzJywK KyAgJ3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvbWVudV91dGlscycsCisgICd0b29scy9iYWNrdXAv c3RhdGljL2pzL2JhY2t1cF9kaWFsb2cnLAorICAnc291cmNlcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0 YWJhc2Vfbm9kZScsCiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywg YWxlcnRpZnksIEJhY2tib25lLCBCYWNrZ3JpZCwgQmFja2Zvcm0sIHBnQnJvd3NlciwKLWNvbW1v blV0aWxzCisgIGNvbW1vblV0aWxzLCBtZW51VXRpbHMsIGdsb2JhbEJhY2t1cERpYWxvZywgc3Vw cG9ydGVkTm9kZXMKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluaXRpYWxpemVk LCByZWZlciB0byB0aGF0LgpAQCAtMzk0LDQ4ICszOTcsNiBAQCBjb21tb25VdGlscwogCiAgICAg ICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9k ZXMgb24gd2hpY2ggYmFja3VwIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFy IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXMgPSBbCi0gICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEn LCAndGFibGUnLCAncGFydGl0aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBF bmFibGUvZGlzYWJsZSBiYWNrdXAgbWVudSBpbiB0b29scyBiYXNlZAotICAgICAgICBvbiBub2Rl IHNlbGVjdGVkCi0gICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBpbiBzdXBwb3J0 ZWRfbm9kZXMsCi0gICAgICAgIG1lbnUgd2lsbCBiZSBlbmFibGVkIG90aGVyd2lzZSBkaXNhYmxl ZC4KLSAgICAgICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxvZ3MKLSAg ICAgICovCi0gICAgICB2YXIgbWVudV9lbmFibGVkID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0ZW0p IHsKLSAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgICBpID0gaXRlbSwK LSAgICAgICAgICBkID0gaXRlbURhdGEsCi0gICAgICAgICAgcGFyZW50X2l0ZW0gPSB0Lmhhc1Bh cmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBh cmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotCi0gICAgICAgIGlm ICghXy5pc1VuZGVmaW5lZChkKSAmJiAhXy5pc051bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9k YXRhKSkgewotICAgICAgICAgIGlmIChfLmluZGV4T2YoYmFja3VwX3N1cHBvcnRlZF9ub2Rlcywg ZC5fdHlwZSkgIT09IC0xICYmCi0gICAgICAgICAgICBwYXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0 YWxvZycpIHsKLSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdkYXRhYmFzZScgJiYgZC5hbGxv d0Nvbm4pCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAo ZC5fdHlwZSAhPSAnZGF0YWJhc2UnKQotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0gZWxz ZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICB9OwotCi0gICAgICB2YXIgbWVudV9lbmFibGVkX3NlcnZlciA9 IGZ1bmN0aW9uKGl0ZW1EYXRhKSB7Ci0gICAgICAgIC8vIElmIHNlcnZlciBub2RlIHNlbGVjdGVk ICYmIGNvbm5lY3RlZAotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoaXRlbURhdGEpICYmICFf LmlzTnVsbChpdGVtRGF0YSkpCi0gICAgICAgICAgcmV0dXJuICgoJ3NlcnZlcicgPT09IGl0ZW1E YXRhLl90eXBlKSAmJiBpdGVtRGF0YS5jb25uZWN0ZWQpOwotICAgICAgICBlbHNlCi0gICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBv biB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAg ICAgICBuYW1lOiAnYmFja3VwX2dsb2JhbCcsCkBAIC00NDUsNyArNDA2LDcgQEAgY29tbW9uVXRp bHMKICAgICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3Vw IEdsb2JhbHMuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAg ZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGlscy5t ZW51RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2 ZXInLAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NTQsNyArNDE1LDcgQEAgY29tbW9uVXRp bHMKICAgICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFja3Vw IFNlcnZlci4uLicpLAogICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLAotICAgICAgICBl bmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIsCisgICAgICAgIGVuYWJsZTogbWVudVV0aWxzLm1l bnVFbmFibGVkU2VydmVyLAogICAgICAgfSwgewogICAgICAgICBuYW1lOiAnYmFja3VwX2dsb2Jh bF9jdHgnLAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00NjQsNyArNDI1LDcgQEAgY29tbW9u VXRpbHMKICAgICAgICAgcHJpb3JpdHk6IDEyLAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnQmFj a3VwIEdsb2JhbHMuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAg ICAgZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVVdGls cy5tZW51RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1cF9z ZXJ2ZXJfY3R4JywKICAgICAgICAgbW9kdWxlOiB0aGlzLApAQCAtNDc0LDcgKzQzNSw3IEBAIGNv bW1vblV0aWxzCiAgICAgICAgIHByaW9yaXR5OiAxMiwKICAgICAgICAgbGFiZWw6IGdldHRleHQo J0JhY2t1cCBTZXJ2ZXIuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAg ICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyLAorICAgICAgICBlbmFibGU6IG1lbnVV dGlscy5tZW51RW5hYmxlZFNlcnZlciwKICAgICAgIH0sIHsKICAgICAgICAgbmFtZTogJ2JhY2t1 cF9vYmplY3QnLAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBAIC00ODMsMjAgKzQ0NCwyNCBAQCBj b21tb25VdGlscwogICAgICAgICBwcmlvcml0eTogMTEsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdCYWNrdXAuLi4nKSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywKLSAgICAgICAg ZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgIGVuYWJsZTogc3VwcG9ydGVkTm9kZXMuZW5h YmxlZC5iaW5kKAorICAgICAgICAgIG51bGwsIHBnQnJvd3Nlci50cmVlTWVudSwgbWVudVV0aWxz LmJhY2t1cFN1cHBvcnRlZE5vZGVzCisgICAgICAgICksCiAgICAgICB9XTsKIAotICAgICAgZm9y ICh2YXIgaWR4ID0gMDsgaWR4IDwgYmFja3VwX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsr KSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBtZW51VXRpbHMuYmFja3VwU3VwcG9y dGVkTm9kZXMubGVuZ3RoOyBpZHgrKykgewogICAgICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAg ICBuYW1lOiAnYmFja3VwXycgKyBiYWNrdXBfc3VwcG9ydGVkX25vZGVzW2lkeF0sCi0gICAgICAg ICAgbm9kZTogYmFja3VwX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdi YWNrdXBfJyArIG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAorICAgICAgICAg IG5vZGU6IG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1v ZHVsZTogdGhpcywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBj YWxsYmFjazogJ2JhY2t1cF9vYmplY3RzJywKICAgICAgICAgICBwcmlvcml0eTogMTEsCiAgICAg ICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cC4uLicpLAogICAgICAgICAgIGljb246ICdmYSBm YS1mbG9wcHktbycsCi0gICAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAg ZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5lbmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBw Z0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5iYWNrdXBTdXBwb3J0ZWROb2RlcworICAgICAg ICAgICksCiAgICAgICAgIH0pOwogICAgICAgfQogCkBAIC01MjEsNTQyICs0ODYsMjUgQEAgY29t bW9uVXRpbHMKICAgICB9LAogCiAgICAgLy8gQ2FsbGJhY2sgdG8gZHJhdyBCYWNrdXAgRGlhbG9n IGZvciBnbG9iYWxzL3NlcnZlcgotICAgIHN0YXJ0X2JhY2t1cF9nbG9iYWxfc2VydmVyOiBmdW5j dGlvbihhY3Rpb24sIGl0ZW0sIHBhcmFtcykgewotICAgICAgdmFyIGkgPSBpdGVtIHx8IHBnQnJv d3Nlci50cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIHNlcnZlcl9kYXRhID0gbnVsbDsKLQotICAg ICAgd2hpbGUgKGkpIHsKLSAgICAgICAgdmFyIG5vZGVfZGF0YSA9IHBnQnJvd3Nlci50cmVlLml0 ZW1EYXRhKGkpOwotICAgICAgICBpZiAobm9kZV9kYXRhLl90eXBlID09ICdzZXJ2ZXInKSB7Ci0g ICAgICAgICAgc2VydmVyX2RhdGEgPSBub2RlX2RhdGE7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAg ICAgIH0KLQotICAgICAgICBpZiAocGdCcm93c2VyLnRyZWUuaGFzUGFyZW50KGkpKSB7Ci0gICAg ICAgICAgaSA9ICQocGdCcm93c2VyLnRyZWUucGFyZW50KGkpKTsKLSAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBF cnJvcicpLAotICAgICAgICAgICAgZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hp bGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRyZWUuJykKLSAgICAgICAgICApOwotICAgICAgICAg IGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICghc2VydmVyX2RhdGEpIHsK LSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgbW9kdWxlID0gJ3BhdGhzJywK LSAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BnX2Jpbl9kaXInLAotICAgICAgICBtc2cgPSBn ZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3JlU1FMIEJpbmFyeSBQYXRoIGluIHRo ZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7Ci0KLSAgICAgIGlmICgoc2VydmVyX2RhdGEudHlwZSAm JiBzZXJ2ZXJfZGF0YS50eXBlID09ICdwcGFzJykgfHwKLSAgICAgICAgc2VydmVyX2RhdGEuc2Vy dmVyX3R5cGUgPT0gJ3BwYXMnKSB7Ci0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwcGFzX2Jp bl9kaXInOwotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIg QWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJyk7 Ci0gICAgICB9Ci0KLSAgICAgIHZhciBwcmVmZXJlbmNlID0gcGdCcm93c2VyLmdldF9wcmVmZXJl bmNlKG1vZHVsZSwgcHJlZmVyZW5jZV9uYW1lKTsKLQotICAgICAgaWYgKHByZWZlcmVuY2UpIHsK LSAgICAgICAgaWYgKCFwcmVmZXJlbmNlLnZhbHVlKSB7Ci0gICAgICAgICAgYWxlcnRpZnkuYWxl cnQoZ2V0dGV4dCgnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcpLCBtc2cpOwotICAgICAgICAgIHJl dHVybjsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgYWxlcnRpZnkuYWxlcnQo Ci0gICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIEVycm9yJyksCi0gICAgICAgICAgUyhnZXR0ZXh0 KCdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlICVzIG9mIG1vZHVsZSAlcycpKS5zcHJpbnRmKHBy ZWZlcmVuY2VfbmFtZSwgbW9kdWxlKS52YWx1ZSgpCi0gICAgICAgICk7Ci0gICAgICAgIHJldHVy bjsKLSAgICAgIH0KLQotICAgICAgdmFyIG9mX3R5cGUgPSB1bmRlZmluZWQ7Ci0KLSAgICAgIC8v IFNldCBOb3RlcyBhY2NvcmRpbmcgdG8gdHlwZSBvZiBiYWNrdXAKLSAgICAgIGlmICghXy5pc1Vu ZGVmaW5lZChwYXJhbXNbJ2dsb2JhbHMnXSkgJiYgcGFyYW1zWydnbG9iYWxzJ10pIHsKLSAgICAg ICAgb2ZfdHlwZSA9ICdnbG9iYWxzJzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIG9mX3R5cGUg PSAnc2VydmVyJzsKLSAgICAgIH0KLQotICAgICAgdmFyIERpYWxvZ05hbWUgPSAnQmFja3VwRGlh bG9nXycgKyBvZl90eXBlLAotICAgICAgICBEaWFsb2dUaXRsZSA9ICgob2ZfdHlwZSA9PSAnZ2xv YmFscycpID8KLSAgICAgICAgICBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFscy4uLicpIDoKLSAgICAg ICAgICBnZXR0ZXh0KCdCYWNrdXAgU2VydmVyLi4uJykpOwotCi0gICAgICBpZiAoIWFsZXJ0aWZ5 W0RpYWxvZ05hbWVdKSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmRpYWxvZyhEaWFsb2dOYW1lLCBmdW5j dGlvbiBmYWN0b3J5KCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBtYWluOiBm dW5jdGlvbih0aXRsZSkgewotICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7 Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICBhbGVydGlmeS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOwotICAgICAgICAgICAg fSwKLSAgICAgICAgICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgcmV0dXJu IHsKLSAgICAgICAgICAgICAgICBidXR0b25zOiBbewotICAgICAgICAgICAgICAgICAgdGV4dDog JycsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVsbC1s ZWZ0IGZhIGZhLWxnIGZhLWluZm8nLAotICAgICAgICAgICAgICAgICAgYXR0cnM6IHsKLSAgICAg ICAgICAgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKLSAgICAgICAgICAgICAgICAgICAg dHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIHVybDogJ2JhY2t1cC5odG1sJywK LSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgICB0ZXh0 OiAnJywKLSAgICAgICAgICAgICAgICAgIGtleTogMTEyLAotICAgICAgICAgICAgICAgICAgY2xh c3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1xdWVzdGlvbics Ci0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAgICAgICAgICBuYW1lOiAn ZGlhbG9nX2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKLSAgICAg ICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAg ICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGljJywgewotICAgICAgICAgICAgICAgICAgICAg ICdmaWxlbmFtZSc6ICdiYWNrdXBfZGlhbG9nLmh0bWwnLAotICAgICAgICAgICAgICAgICAgICB9 KSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAg ICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCi0gICAgICAgICAgICAgICAgICBrZXk6 IDEzLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZh LWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRh LWJ0bi1uYW1lJzogJ2JhY2t1cCcsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAg ICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAgICAgICBrZXk6IDI3 LAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEgZmEtbGcg ZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0 bi1uYW1lJzogJ2NhbmNlbCcsCi0gICAgICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAgICAg Ly8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZwotICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsKLSAg ICAgICAgICAgICAgICAgIHRpdGxlOiBEaWFsb2dUaXRsZSwKLSAgICAgICAgICAgICAgICAgIC8v ZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCi0gICAgICAgICAgICAg ICAgICBwYWRkaW5nOiAhMSwKLSAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAhMSwKLSAgICAg ICAgICAgICAgICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVl LAotICAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAg ICBwaW5uYWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBm YWxzZSwKLSAgICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9 LAotICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGhvb2tzOiB7 Ci0gICAgICAgICAgICAgIC8vIFRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2VkCi0g ICAgICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIGlmICh0 aGlzLnZpZXcpIHsKLSAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIG91ciBiYWNrZm9ybSBtb2Rl bC92aWV3Ci0gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsKLSAgICAgICAgICAg ICAgICAgICAgZGF0YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHRydWUs Ci0gICAgICAgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIH0p OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0g ICAgICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdmFyIHNlbGYg PSB0aGlzOwotICAgICAgICAgICAgICAvLyBEaXNhYmxlIEJhY2t1cCBidXR0b24gdW50aWwgdXNl ciBwcm92aWRlcyBGaWxlbmFtZQotICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9u c1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICB2YXIgJGNvbnRh aW5lciA9ICQoJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9nXCc+PC9kaXY+Jyk7Ci0gICAgICAg ICAgICAgIC8vIEZpbmQgY3VycmVudC9zZWxlY3RlZCBub2RlCi0gICAgICAgICAgICAgIHZhciB0 ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKLSAg ICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0YShpKSA6IHVu ZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5f dHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAgICAgICAgICAgIHJldHVybjsK LSAgICAgICAgICAgICAgLy8gQ3JlYXRlIHRyZWVJbmZvCi0gICAgICAgICAgICAgIHZhciB0cmVl SW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKLSAgICAg ICAgICAgICAgLy8gSW5zdGFuY2Ugb2YgYmFja2JvbmUgbW9kZWwKLSAgICAgICAgICAgICAgdmFy IG5ld01vZGVsID0gbmV3IEJhY2t1cE1vZGVsKHsKLSAgICAgICAgICAgICAgICAgIHR5cGU6IG9m X3R5cGUsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgbm9kZV9pbmZv OiB0cmVlSW5mbywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBmaWVsZHMg PSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAgICAgICAgICB0cmVlSW5m bywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRydWUKLSAgICAg ICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3ID0gbmV3 IEJhY2tmb3JtLkRpYWxvZyh7Ci0gICAgICAgICAgICAgICAgZWw6ICRjb250YWluZXIsCi0gICAg ICAgICAgICAgICAgbW9kZWw6IG5ld01vZGVsLAotICAgICAgICAgICAgICAgIHNjaGVtYTogZmll bGRzLAotICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgLy8gQWRkIG91ciBjbGFzcyB0 byBhbGVydGlmeQotICAgICAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVz WzBdKS5hZGRDbGFzcygKLSAgICAgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3By b3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAg IC8vIFJlbmRlciBkaWFsb2cKLSAgICAgICAgICAgICAgdmlldy5yZW5kZXIoKTsKLQotICAgICAg ICAgICAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQo MCkpOwotCi0gICAgICAgICAgICAgIHZhciBjb250YWluZXIgPSB2aWV3LiRlbC5maW5kKCcudGFi LWNvbnRlbnQ6Zmlyc3QgPiAudGFiLXBhbmUuYWN0aXZlOmZpcnN0Jyk7Ci0gICAgICAgICAgICAg IGNvbW1vblV0aWxzLmZpbmRBbmRTZXRGb2N1cyhjb250YWluZXIpOwotCi0gICAgICAgICAgICAg IC8vIExpc3RlbiB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4gZW5hYmxl IEJhY2t1cCBidXR0b24KLSAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2Un LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5n ZXQoJ2ZpbGUnKSkgJiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKLSAgICAgICAgICAgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgICAgICAgICAgICAgc2VsZi5fX2lu dGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1sy XS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JN b2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBhIGZpbGVuYW1lJykpOwot ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9LAotICAg ICAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMg b2YgdGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKLSAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihl KSB7Ci0gICAgICAgICAgICAgIC8vIEZldGNoIGN1cnJlbnQgc2VydmVyIGlkCi0gICAgICAgICAg ICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0 ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVtRGF0 YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIu Tm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLmVsZW1lbnQubmFt ZSA9PSAnZGlhbG9nX2hlbHAnIHx8IGUuYnV0dG9uLmVsZW1lbnQubmFtZSA9PSAnb2JqZWN0X2hl bHAnKSB7Ci0gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAg IHBnQnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1l bnQuZ2V0QXR0cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgICAgIG5vZGUsIGksIGUuYnV0 dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpKTsKLSAgICAgICAgICAgICAgICByZXR1 cm47Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBpZiAoZS5idXR0b25bJ2RhdGEt YnRuLW5hbWUnXSA9PT0gJ2JhY2t1cCcpIHsKLQotICAgICAgICAgICAgICAgIGlmICghZCkKLSAg ICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9 IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKLQotICAgICAgICAg ICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICAgICAgICAgIGJhc2VVcmwgPSB1cmxf Zm9yKCdiYWNrdXAuY3JlYXRlX3NlcnZlcl9qb2InLCB7Ci0gICAgICAgICAgICAgICAgICAgICdz aWQnOiB0cmVlSW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAg ICAgICAgICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwotCi0gICAgICAgICAg ICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwKLSAgICAgICAg ICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgZGF0YTogewotICAg ICAgICAgICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpLAotICAgICAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewot ICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAgICAgICAgICAgICAg ICAgICBhbGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ0JhY2t1cCBqb2IgY3JlYXRlZC4nKSwgNSk7 Ci0gICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWlu LWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcyk7Ci0gICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJvcjog ZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOwotICAgICAg ICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgnQmFja3VwIGpvYiBmYWlsZWQuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBl cnIuZXJyb3Jtc2cKLSAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAg ICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUuc3Rh Y2sgfHwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0g ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAg ICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0gICAgICBhbGVydGlmeVtEaWFsb2dOYW1l XSh0cnVlKS5yZXNpemVUbygnNjAlJywgJzUwJScpOworICAgIHN0YXJ0X2JhY2t1cF9nbG9iYWxf c2VydmVyOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtLCBwYXJhbXMpIHsKKyAgICAgIGxldCBk aWFsb2cgPSBuZXcgZ2xvYmFsQmFja3VwRGlhbG9nLkJhY2t1cERpYWxvZygKKyAgICAgICAgcGdC cm93c2VyLAorICAgICAgICAkLAorICAgICAgICBhbGVydGlmeSwKKyAgICAgICAgQmFja3VwTW9k ZWwKKyAgICAgICk7CisgICAgICBkaWFsb2cuZHJhdyhhY3Rpb24sIHRyZWVJdGVtLCBwYXJhbXMp OwogICAgIH0sCiAKICAgICAvLyBDYWxsYmFjayB0byBkcmF3IEJhY2t1cCBEaWFsb2cgZm9yIG9i amVjdHMKICAgICBiYWNrdXBfb2JqZWN0czogZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSkgewot Ci0gICAgICB2YXIgaSA9IHRyZWVJdGVtIHx8IHBnQnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCi0g ICAgICAgIHNlcnZlcl9kYXRhID0gbnVsbDsKLQotICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAg dmFyIG5vZGVfZGF0YSA9IHBnQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotICAgICAgICBpZiAo bm9kZV9kYXRhLl90eXBlID09ICdzZXJ2ZXInKSB7Ci0gICAgICAgICAgc2VydmVyX2RhdGEgPSBu b2RlX2RhdGE7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGdC cm93c2VyLnRyZWUuaGFzUGFyZW50KGkpKSB7Ci0gICAgICAgICAgaSA9ICQocGdCcm93c2VyLnRy ZWUucGFyZW50KGkpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVy dCgKLSAgICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBFcnJvcicpLAotICAgICAgICAgICAgZ2V0 dGV4dCgnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hpbGQgbm9kZSBmcm9tIHRyZWUuJykKLSAg ICAgICAgICApOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAg IGlmICghc2VydmVyX2RhdGEpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICB2 YXIgbW9kdWxlID0gJ3BhdGhzJywKLSAgICAgICAgcHJlZmVyZW5jZV9uYW1lID0gJ3BnX2Jpbl9k aXInLAotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2Ugc2V0IGJpbmFyeSBwYXRoIGZvciBQ b3N0Z3JlU1FMIFNlcnZlciBmcm9tIHByZWZlcmVuY2VzLicpOwotCi0gICAgICBpZiAoKHNlcnZl cl9kYXRhLnR5cGUgJiYgc2VydmVyX2RhdGEudHlwZSA9PSAncHBhcycpIHx8Ci0gICAgICAgIHNl cnZlcl9kYXRhLnNlcnZlcl90eXBlID09ICdwcGFzJykgewotICAgICAgICBwcmVmZXJlbmNlX25h bWUgPSAncHBhc19iaW5fZGlyJzsKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNldCBi aW5hcnkgcGF0aCBmb3IgRURCIFBvc3RncmVzIEFkdmFuY2VkIFNlcnZlciBmcm9tIHByZWZlcmVu Y2VzLicpOwotICAgICAgfQotCi0gICAgICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRf cHJlZmVyZW5jZShtb2R1bGUsIHByZWZlcmVuY2VfbmFtZSk7Ci0KLSAgICAgIGlmIChwcmVmZXJl bmNlKSB7Ci0gICAgICAgIGlmICghcHJlZmVyZW5jZS52YWx1ZSkgewotICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKLSAgICAg ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KAotICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBFcnJvcicpLAotICAgICAgICAgIFMo Z2V0dGV4dCgnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSAlcyBvZiBtb2R1bGUgJXMnKSkuc3By aW50ZihwcmVmZXJlbmNlX25hbWUsIG1vZHVsZSkudmFsdWUoKQotICAgICAgICApOwotICAgICAg ICByZXR1cm47Ci0gICAgICB9Ci0KLSAgICAgIHZhciB0aXRsZSA9IFMoZ2V0dGV4dCgnQmFja3Vw ICglczogJXMpJykpLAotICAgICAgICB0cmVlID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgIGl0 ZW0gPSB0cmVlSXRlbSB8fCB0cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIGRhdGEgPSBpdGVtICYm IGl0ZW0ubGVuZ3RoID09IDEgJiYgdHJlZS5pdGVtRGF0YShpdGVtKSwKLSAgICAgICAgbm9kZSA9 IGRhdGEgJiYgZGF0YS5fdHlwZSAmJiBwZ0Jyb3dzZXIuTm9kZXNbZGF0YS5fdHlwZV07Ci0KLSAg ICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpdGVtXSk7Ci0KLSAgICAgIGlm ICh0cmVlSW5mby5kYXRhYmFzZS5fbGFiZWwuaW5kZXhPZignPScpID49IDApIHsKLSAgICAgICAg YWxlcnRpZnkuYWxlcnQoCi0gICAgICAgICAgZ2V0dGV4dCgnQmFja3VwIGVycm9yJyksCi0gICAg ICAgICAgZ2V0dGV4dCgnQmFja3VwIGpvYiBjcmVhdGlvbiBmYWlsZWQuICcrCi0gICAgICAgICAg J0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBpbiB0aGUgbmFtZSBjYW5ub3QgYmUgYmFja2VkIHVw IHVzaW5nIHRoaXMgdXRpbGl0eS4nKQotICAgICAgICApOwotICAgICAgICByZXR1cm47Ci0gICAg ICB9Ci0KLSAgICAgIHRpdGxlID0gdGl0bGUuc3ByaW50Zihub2RlLmxhYmVsLCBkYXRhLmxhYmVs KS52YWx1ZSgpOwotCi0gICAgICBpZiAoIWFsZXJ0aWZ5LmJhY2t1cF9vYmplY3RzKSB7Ci0gICAg ICAgIC8vIENyZWF0ZSBEaWFsb2cgdGl0bGUgb24gdGhlIGZseSB3aXRoIG5vZGUgZGV0YWlscwot ICAgICAgICBhbGVydGlmeS5kaWFsb2coJ2JhY2t1cF9vYmplY3RzJywgZnVuY3Rpb24gZmFjdG9y eSgpIHsKLSAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0 bGUpIHsKLSAgICAgICAgICAgICAgdGhpcy5zZXQoJ3RpdGxlJywgdGl0bGUpOwotICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgYWxl cnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAg ICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAg ICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1s ZyBmYS1pbmZvJywKLSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7Ci0gICAgICAgICAgICAgICAg ICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCi0gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0 b24nLAotICAgICAgICAgICAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCi0gICAgICAgICAg ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0gICAg ICAgICAgICAgICAgICBrZXk6IDExMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0 biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVlc3Rpb24nLAotICAgICAgICAg ICAgICAgICAgYXR0cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxw JywKLSAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAgICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdCYWNrdXAnKSwKLSAgICAgICAgICAgICAgICAgICAgdXJsOiB1 cmxfZm9yKCdoZWxwLnN0YXRpYycsIHsKLSAgICAgICAgICAgICAgICAgICAgICAnZmlsZW5hbWUn OiAnYmFja3VwX2RpYWxvZy5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAg ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRl eHQ6IGdldHRleHQoJ0JhY2t1cCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAxMywKLSAgICAg ICAgICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZl IHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6 ICdiYWNrdXAnLAotICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6 IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAyNywKLSAgICAgICAg ICAgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBn LWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdj YW5jZWwnLAotICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAgIC8vIFNldCBvcHRp b25zIGZvciBkaWFsb2cKLSAgICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAg ICAgICB0aXRsZTogdGl0bGUsCi0gICAgICAgICAgICAgICAgICAvL2Rpc2FibGUgYm90aCBwYWRk aW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgotICAgICAgICAgICAgICAgICAgcGFkZGluZzogITEs Ci0gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCi0gICAgICAgICAgICAgICAgICBtb2Rl bDogMCwKLSAgICAgICAgICAgICAgICAgIHJlc2l6YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAg ICAgIG1heGltaXphYmxlOiB0cnVlLAotICAgICAgICAgICAgICAgICAgcGlubmFibGU6IGZhbHNl LAotICAgICAgICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCi0gICAgICAgICAg ICAgICAgICBtb2RhbDogZmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg fTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBob29rczogewotICAgICAgICAgICAgICAv LyB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAotICAgICAgICAgICAgICBvbmNs b3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3KSB7Ci0gICAg ICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsKLSAgICAgICAgICAgICAgICAgICAgZGF0 YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHRydWUsCi0gICAgICAgICAg ICAgICAgICAgIHNpbGVudDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBw cmVwYXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAg ICAgICAgICAgICAvLyBEaXNhYmxlIEJhY2t1cCBidXR0b24gdW50aWwgdXNlciBwcm92aWRlcyBG aWxlbmFtZQotICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50 LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgdmFyICRjb250YWluZXIgPSAkKCc8ZGl2 IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicpOwotICAgICAgICAgICAgICB2YXIgdCA9 IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAg ICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRl ZmluZWQsCi0gICAgICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5 cGVdOwotCi0gICAgICAgICAgICAgIGlmICghZCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K LSAgICAgICAgICAgICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5h cHBseShub2RlLCBbaV0pOwotCi0gICAgICAgICAgICAgIHZhciBuZXdNb2RlbCA9IG5ldyBCYWNr dXBPYmplY3RNb2RlbCh7fSwgewotICAgICAgICAgICAgICAgICAgbm9kZV9pbmZvOiB0cmVlSW5m bywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgICBmaWVsZHMgPSBCYWNrZm9y bS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAgICAgICAgICB0cmVlSW5mbywgbmV3TW9k ZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRydWUKLSAgICAgICAgICAgICAg ICApOwotCi0gICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52aWV3ID0gbmV3IEJhY2tmb3Jt LkRpYWxvZyh7Ci0gICAgICAgICAgICAgICAgZWw6ICRjb250YWluZXIsCi0gICAgICAgICAgICAg ICAgbW9kZWw6IG5ld01vZGVsLAotICAgICAgICAgICAgICAgIHNjaGVtYTogZmllbGRzLAotICAg ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGls ZE5vZGVzWzBdKS5hZGRDbGFzcygKLSAgICAgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlh bG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCi0gICAgICAgICAgICAgICk7Ci0KLSAgICAg ICAgICAgICAgdmlldy5yZW5kZXIoKTsKLQotICAgICAgICAgICAgICB0aGlzLmVsZW1lbnRzLmNv bnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQoMCkpOwotCi0gICAgICAgICAgICAgIGlm KHZpZXcpIHsKLSAgICAgICAgICAgICAgICB2aWV3LiRlbC5hdHRyKCd0YWJpbmRleCcsIC0xKTsK LSAgICAgICAgICAgICAgICAvLyB2YXIgZGlhbG9nVGFiTmF2aWdhdG9yID0gcGdCcm93c2VyLmtl eWJvYXJkTmF2aWdhdGlvbi5nZXREaWFsb2dUYWJOYXZpZ2F0b3Iodmlldyk7Ci0gICAgICAgICAg ICAgICAgcGdCcm93c2VyLmtleWJvYXJkTmF2aWdhdGlvbi5nZXREaWFsb2dUYWJOYXZpZ2F0b3Io dmlldyk7Ci0gICAgICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHZpZXcuJGVsLmZpbmQoJy50 YWItY29udGVudDpmaXJzdCA+IC50YWItcGFuZS5hY3RpdmU6Zmlyc3QnKTsKLSAgICAgICAgICAg ICAgICBjb21tb25VdGlscy5maW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKLSAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgICAvLyBMaXN0ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBw cm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAgYnV0dG9uCi0gICAgICAgICAgICAgIHRoaXMudmll dy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFf LmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcn KSB7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKLSAgICAgICAg ICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBm YWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgc2VsZi5f X2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdmaWxlJywgZ2V0dGV4dCgnUGxlYXNlIHByb3Zp ZGUgZmlsZW5hbWUnKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9KTsKLQot ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNs aWNrIG9uIHRoZSBidXR0b25zIG9mIHRoZSBBbGVydGlmeSBkaWFsb2dzCi0gICAgICAgICAgICBj YWxsYmFjazogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNl cnZlciBpZAotICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAg ICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCi0gICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5n dGggPT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgbm9k ZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOwotCi0gICAgICAgICAgICAgIGlmIChl LmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ2RpYWxvZ19oZWxwJyB8fCBlLmJ1dHRvbi5lbGVtZW50 Lm5hbWUgPT0gJ29iamVjdF9oZWxwJykgewotICAgICAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1 ZTsKLSAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuc2hvd0hlbHAoZS5idXR0b24uZWxlbWVudC5u YW1lLCBlLmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCi0gICAgICAgICAgICAg ICAgICBub2RlLCBpLCBlLmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgnbGFiZWwnKSk7Ci0g ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg aWYgKGUuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdiYWNrdXAnKSB7Ci0gICAgICAgICAg ICAgICAgaWYgKCFkKQotICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAg ICAgdmFyIHRyZWVJbmZvID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBb aV0pOwotCi0gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnQgZGF0YWJhc2UgaW50byBtb2Rl bAotICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ2RhdGFiYXNlJywgdHJlZUlu Zm8uZGF0YWJhc2UuX2xhYmVsKTsKLQotICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVtb3Zl IG9uY2Ugb2JqZWN0IHRyZWUgaXMgaW1wbGVtZW50ZWQKLSAgICAgICAgICAgICAgICAvLyBJZiBz ZWxlY3RlZCBub2RlIGlzIFNjaGVtYSB0aGVuIGFkZCBpdCBpbiBtb2RlbAotICAgICAgICAgICAg ICAgIGlmIChkLl90eXBlID09ICdzY2hlbWEnKSB7Ci0gICAgICAgICAgICAgICAgICB2YXIgc2No ZW1hcyA9IFtdOwotICAgICAgICAgICAgICAgICAgc2NoZW1hcy5wdXNoKGQuX2xhYmVsKTsKLSAg ICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBzY2hlbWFzKTsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gSWYgc2VsZWN0ZWQgbm9kZSBp cyBUYWJsZSB0aGVuIGFkZCBpdCBpbiBtb2RlbCBhbG9uZyB3aXRoCi0gICAgICAgICAgICAgICAg Ly8gaXRzIHNjaGVtYQotICAgICAgICAgICAgICAgIGlmIChkLl90eXBlID09ICd0YWJsZScpIHsK LSAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoCi0gICAgICAgICAgICAgICAg ICAgICd0YWJsZXMnLCBbCi0gICAgICAgICAgICAgICAgICAgICAgW3RyZWVJbmZvLnNjaGVtYS5f bGFiZWwsIGQuX2xhYmVsXSwKLSAgICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAg ICAgKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUgcmF0 aW8gYXR0cmlidXRlIGZyb20gbW9kZWwgaWYgaXQgaGFzIGVtcHR5IHN0cmluZy4KLSAgICAgICAg ICAgICAgICAvLyBUaGUgdmFsaWQgdmFsdWUgY2FuIGJlIGJldHdlZW4gMCB0byA5LgotICAgICAg ICAgICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy52aWV3Lm1vZGVsLmdldCgncmF0aW8nKSkpIHsK LSAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC51bnNldCgncmF0aW8nKTsKLSAgICAg ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAg ICAgICAgICAgICBiYXNlVXJsID0gdXJsX2ZvcignYmFja3VwLmNyZWF0ZV9vYmplY3Rfam9iJywg ewotICAgICAgICAgICAgICAgICAgICAnc2lkJzogdHJlZUluZm8uc2VydmVyLl9pZCwKLSAgICAg ICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgYXJncyA9IHRoaXMudmlldy5tb2Rl bC50b0pTT04oKTsKLQotICAgICAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgICAg ICB1cmw6IGJhc2VVcmwsCi0gICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAg ICAgICAgICAgICAgIGRhdGE6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2RhdGEnOiBKU09OLnN0 cmluZ2lmeShhcmdzKSwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBz dWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNj ZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdC YWNrdXAgam9iIGNyZWF0ZWQuJyksIDUpOwotICAgICAgICAgICAgICAgICAgICAgIHBnQnJvd3Nl ci5FdmVudHMudHJpZ2dlcigncGdhZG1pbi1iZ3Byb2Nlc3M6Y3JlYXRlZCcsIHNlbGYpOwotICAg ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg ICAgZXJyb3I6IGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAg ICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0 KTsKLSAgICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgICAg ICAgICAgICAgIGdldHRleHQoJ0JhY2t1cCBqb2IgZmFpbGVkLicpLAotICAgICAgICAgICAgICAg ICAgICAgICAgZXJyLmVycm9ybXNnCi0gICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAg ICAgICAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUu d2FybihlLnN0YWNrIHx8IGUpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICB9LAotICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgfQotICAgICAgYWxlcnRpZnku YmFja3VwX29iamVjdHModGl0bGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAlJyk7CisgICAgICBsZXQg ZGlhbG9nID0gbmV3IGdsb2JhbEJhY2t1cERpYWxvZy5CYWNrdXBEaWFsb2coCisgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAgJCwKKyAgICAgICAgYWxlcnRpZnksCisgICAgICAgIEJhY2t1cE9i amVjdE1vZGVsCisgICAgICApOworICAgICAgZGlhbG9nLmRyYXcoYWN0aW9uLCB0cmVlSXRlbSwg bnVsbCk7CiAgICAgfSwKICAgfTsKICAgcmV0dXJuIHBnQnJvd3Nlci5CYWNrdXA7CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cuanMg Yi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cF9kaWFsb2cuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmM3NGMzNzZjCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nLmpz CkBAIC0wLDAgKzEsNjkgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxv cG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4v Li4vc3RhdGljL2pzL2dldHRleHQnOworaW1wb3J0IEJhY2tmb3JtIGZyb20gJy4uLy4uLy4uLy4u L3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluJzsKK2ltcG9ydCB7RGlhbG9nfSBmcm9tICcuLi8u Li8uLi8uLi9zdGF0aWMvanMvYWxlcnRpZnkvZGlhbG9nJzsKKworZXhwb3J0IGNsYXNzIEJhY2t1 cERpYWxvZyBleHRlbmRzIERpYWxvZyB7CisgIGNvbnN0cnVjdG9yKHBnQnJvd3NlciwgJCwgYWxl cnRpZnksIEJhY2t1cE1vZGVsLCBiYWNrZm9ybSA9IEJhY2tmb3JtKSB7CisgICAgc3VwZXIoJ0Jh Y2t1cCBFcnJvcicsCisgICAgICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4n LAorICAgICAgcGdCcm93c2VyLCAkLCBhbGVydGlmeSwgQmFja3VwTW9kZWwsIGJhY2tmb3JtKTsK KyAgfQorCisgIGRyYXcoYWN0aW9uLCBhY2lUcmVlSXRlbSwgcGFyYW1zKSB7CisgICAgY29uc3Qg c2VydmVySW5mb3JtYXRpb24gPSB0aGlzLnJldHJpZXZlQW5jZXN0b3JPZlR5cGVTZXJ2ZXIoYWNp VHJlZUl0ZW0pOworCisgICAgaWYgKCFzZXJ2ZXJJbmZvcm1hdGlvbikgeworICAgICAgcmV0dXJu OworICAgIH0KKworICAgIGlmICghdGhpcy5oYXNCaW5hcmllc0NvbmZpZ3VyYXRpb24oc2VydmVy SW5mb3JtYXRpb24pKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgdHlwZU9m RGlhbG9nID0gQmFja3VwRGlhbG9nLnR5cGVPZkRpYWxvZyhwYXJhbXMpOworCisgICAgaWYgKCF0 aGlzLmNhbkV4ZWN1dGVPbkN1cnJlbnREYXRhYmFzZShhY2lUcmVlSXRlbSkpIHsKKyAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgICBjb25zdCBkaWFsb2cgPSB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9n KEJhY2t1cERpYWxvZy5kaWFsb2dUaXRsZSh0eXBlT2ZEaWFsb2cpLAorICAgICAgdHlwZU9mRGlh bG9nKTsKKyAgICBkaWFsb2codHJ1ZSkucmVzaXplVG8oJzYwJScsICc1MCUnKTsKKyAgfQorCisg IHN0YXRpYyB0eXBlT2ZEaWFsb2cocGFyYW1zKSB7CisgICAgaWYgKHBhcmFtcyA9PT0gbnVsbCkg eworICAgICAgcmV0dXJuICdiYWNrdXBfb2JqZWN0cyc7CisgICAgfQorICAgIGxldCB0eXBlT2ZE aWFsb2cgPSAnc2VydmVyJzsKKyAgICBpZiAoIV8uaXNVbmRlZmluZWQocGFyYW1zWydnbG9iYWxz J10pICYmIHBhcmFtc1snZ2xvYmFscyddKSB7CisgICAgICB0eXBlT2ZEaWFsb2cgPSAnZ2xvYmFs cyc7CisgICAgfQorICAgIHJldHVybiB0eXBlT2ZEaWFsb2c7CisgIH0KKworICBzdGF0aWMgZGlh bG9nVGl0bGUodHlwZU9mRGlhbG9nKSB7CisgICAgaWYgKHR5cGVPZkRpYWxvZyA9PT0gJ2JhY2t1 cF9vYmplY3RzJykgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIHJldHVybiAoKHR5 cGVPZkRpYWxvZyA9PT0gJ2dsb2JhbHMnKSA/CisgICAgICBnZXR0ZXh0KCdCYWNrdXAgR2xvYmFs cy4uLicpIDoKKyAgICAgIGdldHRleHQoJ0JhY2t1cCBTZXJ2ZXIuLi4nKSk7CisgIH0KKworICBk aWFsb2dOYW1lKHR5cGVPZkRpYWxvZykgeworICAgIGlmICh0eXBlT2ZEaWFsb2cgPT09ICdiYWNr dXBfb2JqZWN0cycpIHsKKyAgICAgIHJldHVybiB0eXBlT2ZEaWFsb2c7CisgICAgfQorICAgIHJl dHVybiAnQmFja3VwRGlhbG9nXycgKyB0eXBlT2ZEaWFsb2c7CisgIH0KK30KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVy LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nX3dy YXBwZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjJjZWJlM2QxCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNr dXBfZGlhbG9nX3dyYXBwZXIuanMKQEAgLTAsMCArMSwyNTggQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMv anMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5k ZXgnOworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dldHRleHQn OworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9mb3InOwor aW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20g Jy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CisKK2V4cG9y dCBjbGFzcyBCYWNrdXBEaWFsb2dXcmFwcGVyIGV4dGVuZHMgRGlhbG9nV3JhcHBlciB7CisgIGNv bnN0cnVjdG9yKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFsb2dUaXRsZSwgdHlwZU9mRGlh bG9nLAorICAgICAgICAgICAgICBqcXVlcnksIHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01v ZGVsLCBiYWNrZm9ybSkgeworICAgIHN1cGVyKGRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yLCBkaWFs b2dUaXRsZSwganF1ZXJ5LAorICAgICAgcGdCcm93c2VyLCBhbGVydGlmeSwgZGlhbG9nTW9kZWws IGJhY2tmb3JtKTsKKyAgICB0aGlzLnR5cGVPZkRpYWxvZyA9IHR5cGVPZkRpYWxvZzsKKyAgfQor CisgIG1haW4odGl0bGUpIHsKKyAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7CisgIH0KKwor ICBzZXR1cCgpIHsKKyAgICByZXR1cm4geworICAgICAgYnV0dG9uczogW3sKKyAgICAgICAgdGV4 dDogJycsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEg ZmEtbGcgZmEtaW5mbycsCisgICAgICAgIGF0dHJzOiB7CisgICAgICAgICAgbmFtZTogJ29iamVj dF9oZWxwJywKKyAgICAgICAgICB0eXBlOiAnYnV0dG9uJywKKyAgICAgICAgICB1cmw6ICdiYWNr dXAuaHRtbCcsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0JhY2t1cCcpLAorICAgICAgICB9 LAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiAnJywKKyAgICAgICAga2V5OiAxMTIsCisgICAg ICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtcXVl c3Rpb24nLAorICAgICAgICBhdHRyczogeworICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcs CisgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCisgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0Jh Y2t1cCcpLAorICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7CisgICAgICAg ICAgICAnZmlsZW5hbWUnOiAnYmFja3VwX2RpYWxvZy5odG1sJywKKyAgICAgICAgICB9KSwKKyAg ICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDogZ2V0dGV4dCgnQmFja3VwJyksCisg ICAgICAgIGtleTogMTMsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBm YS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCisgICAgICAgICdkYXRhLWJ0bi1uYW1l JzogJ2JhY2t1cCcsCisgICAgICB9LCB7CisgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcp LAorICAgICAgICBrZXk6IDI3LAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRhbmdlciBm YSBmYS1sZyBmYS10aW1lcyBwZy1hbGVydGlmeS1idXR0b24nLAorICAgICAgICAnZGF0YS1idG4t bmFtZSc6ICdjYW5jZWwnLAorICAgICAgfV0sCisgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlh bG9nCisgICAgICBvcHRpb25zOiB7CisgICAgICAgIHRpdGxlOiB0aGlzLmRpYWxvZ1RpdGxlLAor ICAgICAgICAvL2Rpc2FibGUgYm90aCBwYWRkaW5nIGFuZCBvdmVyZmxvdyBjb250cm9sLgorICAg ICAgICBwYWRkaW5nOiAhMSwKKyAgICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICBtb2RlbDog MCwKKyAgICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwK KyAgICAgICAgcGlubmFibGU6IGZhbHNlLAorICAgICAgICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxz ZSwKKyAgICAgICAgbW9kYWw6IGZhbHNlLAorICAgICAgfSwKKyAgICB9OworICB9CisKKyAgcHJl cGFyZSgpIHsKKyAgICB0aGlzLmRpc2FibGVCYWNrdXBCdXR0b24oKTsKKworICAgIGNvbnN0ICRj b250YWluZXIgPSB0aGlzLmpxdWVyeSh0aGlzLmRpYWxvZ0NvbnRhaW5lclNlbGVjdG9yKTsKKyAg ICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhpcy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBj b25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRoaXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxl Y3RlZFRyZWVOb2RlKTsKKyAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKSB7CisgICAgICBy ZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgbm9kZSA9IHRoaXMucGdCcm93c2VyLk5vZGVzW3Nl bGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKyAgICBpZiAodGhpcy5kaWFsb2dUaXRsZSA9PT0g bnVsbCkgeworICAgICAgY29uc3QgdGl0bGUgPSBgQmFja3VwICgke25vZGUubGFiZWx9OiAke3Nl bGVjdGVkVHJlZU5vZGVEYXRhLmxhYmVsfSlgOworICAgICAgdGhpcy5tYWluKHRpdGxlKTsKKyAg ICB9CisKKyAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1l bnQodGhpcy5wZ0Jyb3dzZXIsIHNlbGVjdGVkVHJlZU5vZGUpOworICAgIGNvbnN0IGRpYWxvZyA9 IHRoaXMuY3JlYXRlRGlhbG9nKG5vZGUsIHRyZWVJbmZvLCB0aGlzLnR5cGVPZkRpYWxvZywgJGNv bnRhaW5lcik7CisgICAgdGhpcy5hZGRBbGVydGlmeUNsYXNzVG9CYWNrdXBOb2RlQ2hpbGROb2Rl cygpOworICAgIGRpYWxvZy5yZW5kZXIoKTsKKworICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5h cHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICB0aGlzLmZvY3VzT25EaWFsb2co ZGlhbG9nKTsKKyAgICB0aGlzLnNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpOworICB9 CisKKyAgY2FsbGJhY2soZXZlbnQpIHsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhp cy5nZXRTZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRo aXMuZ2V0U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBjb25zdCBub2Rl ID0gc2VsZWN0ZWRUcmVlTm9kZURhdGEgJiYgdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbc2VsZWN0ZWRU cmVlTm9kZURhdGEuX3R5cGVdOworCisgICAgaWYgKHRoaXMud2FzSGVscEJ1dHRvblByZXNzZWQo ZXZlbnQpKSB7CisgICAgICBldmVudC5jYW5jZWwgPSB0cnVlOworICAgICAgdGhpcy5wZ0Jyb3dz ZXIuc2hvd0hlbHAoCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50Lm5hbWUsCisgICAgICAg IGV2ZW50LmJ1dHRvbi5lbGVtZW50LmdldEF0dHJpYnV0ZSgndXJsJyksCisgICAgICAgIG5vZGUs CisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUsCisgICAgICAgIGV2ZW50LmJ1dHRvbi5lbGVtZW50 LmdldEF0dHJpYnV0ZSgnbGFiZWwnKQorICAgICAgKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBpZiAodGhpcy53YXNCYWNrdXBCdXR0b25QcmVzc2VkKGV2ZW50KSkgeworCisgICAgICBp ZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICAgIGNvbnN0 IHNlcnZlcklkZW50aWZpZXIgPSB0aGlzLnJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBz ZWxlY3RlZFRyZWVOb2RlKTsKKworICAgICAgY29uc3QgZGlhbG9nID0gdGhpczsKKyAgICAgIGxl dCB1cmxTaG9ydGN1dCA9ICdiYWNrdXAuY3JlYXRlX3NlcnZlcl9qb2InOworICAgICAgaWYgKHRo aXMudHlwZU9mRGlhbG9nID09PSAnYmFja3VwX29iamVjdHMnKSB7CisgICAgICAgIHVybFNob3J0 Y3V0ID0gJ2JhY2t1cC5jcmVhdGVfb2JqZWN0X2pvYic7CisgICAgICB9CisgICAgICBjb25zdCBi YXNlVXJsID0gdXJsX2Zvcih1cmxTaG9ydGN1dCwgeworICAgICAgICAnc2lkJzogc2VydmVySWRl bnRpZmllciwKKyAgICAgIH0pOworCisgICAgICBjb25zdCB0cmVlSW5mbyA9IGdldFRyZWVOb2Rl SGllcmFyY2h5RnJvbUVsZW1lbnQoCisgICAgICAgIHRoaXMucGdCcm93c2VyLAorICAgICAgICBz ZWxlY3RlZFRyZWVOb2RlCisgICAgICApOworCisgICAgICB0aGlzLnNldEV4dHJhUGFyYW1ldGVy cyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisKKyAgICAgIGxldCBzZXJ2aWNlID0gYXhp b3MuY3JlYXRlKHt9KTsKKyAgICAgIHNlcnZpY2UucG9zdCgKKyAgICAgICAgYmFzZVVybCwKKyAg ICAgICAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpCisgICAgICApLnRoZW4oZnVuY3Rpb24gKCkg eworICAgICAgICBkaWFsb2cuYWxlcnRpZnkuc3VjY2VzcyhnZXR0ZXh0KCdCYWNrdXAgam9iIGNy ZWF0ZWQuJyksIDUpOworICAgICAgICBkaWFsb2cucGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdw Z2FkbWluLWJncHJvY2VzczpjcmVhdGVkJywgZGlhbG9nKTsKKyAgICAgIH0pLmNhdGNoKGZ1bmN0 aW9uIChlcnJvcikgeworICAgICAgICB0cnkgeworICAgICAgICAgIGNvbnN0IGVyciA9IGVycm9y LnJlc3BvbnNlLmRhdGE7CisgICAgICAgICAgZGlhbG9nLmFsZXJ0aWZ5LmFsZXJ0KAorICAgICAg ICAgICAgZ2V0dGV4dCgnQmFja3VwIGpvYiBmYWlsZWQuJyksCisgICAgICAgICAgICBlcnIuZXJy b3Jtc2cKKyAgICAgICAgICApOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgY29u c29sZS53YXJuKGUuc3RhY2sgfHwgZSk7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0KKyAg fQorCisgIGFkZEFsZXJ0aWZ5Q2xhc3NUb0JhY2t1cE5vZGVDaGlsZE5vZGVzKCkgeworICAgIHRo aXMuanF1ZXJ5KHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKKyAg ICAgICdhbGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKKyAg ICApOworICB9CisKKyAgZ2V0U2VsZWN0ZWROb2RlKCkgeworICAgIGNvbnN0IHRyZWUgPSB0aGlz LnBnQnJvd3Nlci50cmVlTWVudTsKKyAgICBjb25zdCBzZWxlY3RlZE5vZGUgPSB0cmVlLnNlbGVj dGVkKCk7CisgICAgaWYgKHNlbGVjdGVkTm9kZSkgeworICAgICAgcmV0dXJuIHRyZWUuZmluZE5v ZGVCeURvbUVsZW1lbnQoc2VsZWN0ZWROb2RlKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJu IHVuZGVmaW5lZDsKKyAgICB9CisgIH0KKworICBkaXNhYmxlQmFja3VwQnV0dG9uKCkgeworICAg IHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICB9 CisKKyAgZW5hYmxlQmFja3VwQnV0dG9uKCkgeworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25z WzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgfQorCisgIGNyZWF0ZURpYWxvZyhub2Rl LCB0cmVlSW5mbywgdHlwZU9mRGlhbG9nLCAkY29udGFpbmVyKSB7CisgICAgbGV0IGF0dHJpYnV0 ZXMgPSB7fTsKKyAgICBpZiAodHlwZU9mRGlhbG9nICE9PSAnYmFja3VwX29iamVjdHMnKSB7Cisg ICAgICBhdHRyaWJ1dGVzWyd0eXBlJ10gPSB0eXBlT2ZEaWFsb2c7CisgICAgfQorICAgIC8vIElu c3RhbmNlIG9mIGJhY2tib25lIG1vZGVsCisgICAgY29uc3QgbmV3TW9kZWwgPSBuZXcgdGhpcy5k aWFsb2dNb2RlbChhdHRyaWJ1dGVzLCB7CisgICAgICBub2RlX2luZm86IHRyZWVJbmZvLAorICAg IH0pOworICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuYmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1h KAorICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2Vy dmVyLCB0cnVlCisgICAgKTsKKworICAgIHJldHVybiB0aGlzLnZpZXcgPSBuZXcgdGhpcy5iYWNr Zm9ybS5EaWFsb2coeworICAgICAgZWw6ICRjb250YWluZXIsCisgICAgICBtb2RlbDogbmV3TW9k ZWwsCisgICAgICBzY2hlbWE6IGZpZWxkcywKKyAgICB9KTsKKyAgfQorCisgIHJldHJpZXZlU2Vy dmVySWRlbnRpZmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKSB7CisgICAgY29uc3QgdHJlZUlu Zm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KAorICAgICAgdGhpcy5wZ0Jyb3dz ZXIsCisgICAgICBzZWxlY3RlZFRyZWVOb2RlCisgICAgKTsKKyAgICByZXR1cm4gdHJlZUluZm8u c2VydmVyLl9pZDsKKyAgfQorCisgIHNldExpc3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpIHsK KyAgICBjb25zdCBzZWxmID0gdGhpczsKKworICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdl JywgZnVuY3Rpb24gKCkgeworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxl JykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5jbGVhcigpOworICAgICAgICBzZWxmLmVuYWJsZUJhY2t1cEJ1dHRvbigpOworICAgICAgfSBl bHNlIHsKKyAgICAgICAgc2VsZi5kaXNhYmxlQmFja3VwQnV0dG9uKCk7CisgICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCBnZXR0ZXh0KCdQbGVhc2UgcHJvdmlkZSBhIGZpbGVuYW1l JykpOworICAgICAgfQorICAgIH0pOworICB9CisKKyAgc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVj dGVkVHJlZU5vZGUsIHRyZWVJbmZvKSB7CisgICAgaWYgKHRoaXMudHlwZU9mRGlhbG9nID09PSAn YmFja3VwX29iamVjdHMnKSB7CisKKyAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ2RhdGFiYXNl JywgdHJlZUluZm8uZGF0YWJhc2UuX2xhYmVsKTsKKworICAgICAgY29uc3Qgbm9kZURhdGEgPSBz ZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKyAgICAgIGlmIChub2RlRGF0YS5fdHlwZSA9PT0g J3NjaGVtYScpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFtub2Rl RGF0YS5fbGFiZWxdKTsKKyAgICAgIH0KKworICAgICAgaWYgKG5vZGVEYXRhLl90eXBlID09PSAn dGFibGUnKSB7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RhYmxlcycsIFsKKyAgICAg ICAgICBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbCwgbm9kZURhdGEuX2xhYmVsXSwKKyAgICAgICAg XSk7CisgICAgICB9CisKKyAgICAgIGlmIChfLmlzRW1wdHkodGhpcy52aWV3Lm1vZGVsLmdldCgn cmF0aW8nKSkpIHsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnVuc2V0KCdyYXRpbycpOworICAg ICAgfQorICAgIH0KKyAgfQorCisgIHdhc0JhY2t1cEJ1dHRvblByZXNzZWQoZXZlbnQpIHsKKyAg ICByZXR1cm4gZXZlbnQuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdiYWNrdXAnOworICB9 Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVf dXRpbHMuanMgYi93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL21lbnVfdXRpbHMu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjQ3YTlmMGQzCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzCkBAIC0wLDAgKzEsMjMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtpc1ZhbGlkVHJlZU5vZGVEYXRh fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS90cmVlJzsKKworZXhwb3J0IGNvbnN0 IGJhY2t1cFN1cHBvcnRlZE5vZGVzID0gWworICAnZGF0YWJhc2UnLCAnc2NoZW1hJywgJ3RhYmxl JywgJ3BhcnRpdGlvbicsCitdOworCitmdW5jdGlvbiBpc05vZGVBU2VydmVyQW5kQ29ubmVjdGVk KHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gKCgnc2VydmVyJyA9PT0gdHJlZU5vZGVEYXRhLl90 eXBlKSAmJiB0cmVlTm9kZURhdGEuY29ubmVjdGVkKTsKK30KKworZXhwb3J0IGZ1bmN0aW9uIG1l bnVFbmFibGVkU2VydmVyKHRyZWVOb2RlRGF0YSkgeworICByZXR1cm4gaXNWYWxpZFRyZWVOb2Rl RGF0YSh0cmVlTm9kZURhdGEpCisgICAgJiYgaXNOb2RlQVNlcnZlckFuZENvbm5lY3RlZCh0cmVl Tm9kZURhdGEpOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3Rh dGljL2pzL2RhdGFncmlkLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pz L2RhdGFncmlkLmpzCmluZGV4IGIwZWQ2MGY2Li41MjBhOWNlNSAxMDA2NDQKLS0tIGEvd2ViL3Bn YWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkLmpzCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcwpAQCAtMSwxMCArMSwxNCBA QAogZGVmaW5lKCdwZ2FkbWluLmRhdGFncmlkJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3Nv dXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAndW5kZXJzY29yZScsCiAgICdwZ2FkbWluLmFsZXJ0 aWZ5anMnLCAnc291cmNlcy9wZ2FkbWluJywgJ2J1bmRsZWRfY29kZW1pcnJvcicsCi0gICdzb3Vy Y2VzL3NxbGVkaXRvcl91dGlscycsICdiYWNrYm9uZScsICd3Y2RvY2tlcicsCisgICdzb3VyY2Vz L3NxbGVkaXRvcl91dGlscycsICdiYWNrYm9uZScsCisgICd0b29scy9kYXRhZ3JpZC9zdGF0aWMv anMvc2hvd19kYXRhJywKKyAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRfcGFuZWxfdGl0 bGUnLAorICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCcsCisgICd3 Y2RvY2tlcicsCiBdLCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgYWxlcnRp ZnksIHBnQWRtaW4sIGNvZGVtaXJyb3IsIHNxbEVkaXRvclV0aWxzLAotICBCYWNrYm9uZQorICBC YWNrYm9uZSwgc2hvd0RhdGEsIHBhbmVsVGl0bGUsIHNob3dRdWVyeVRvb2wKICkgewogICAvLyBT b21lIHNjcmlwdHMgZG8gZXhwb3J0IHRoZWlyIG9iamVjdCBpbiB0aGUgd2luZG93IG9ubHkuCiAg IC8vIEdlbmVyYWxseSB0aGUgb25lLCB3aGljaCBkbyBubyBoYXZlIEFNRCBzdXBwb3J0LgpAQCAt MTYxLDU1ICsxNjUsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQnLCBbCiAKICAgICAgIC8v IFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGRhdGEgd2hlbiB1c2VyIGNsaWNr IG9uIG1lbnUgaXRlbS4KICAgICAgIHNob3dfZGF0YV9ncmlkOiBmdW5jdGlvbihkYXRhLCBpKSB7 Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICBkID0gcGdBZG1pbi5Ccm93c2Vy LnRyZWUuaXRlbURhdGEoaSk7Ci0gICAgICAgIGlmIChkID09PSB1bmRlZmluZWQpIHsKLSAgICAg ICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdldHRleHQoJ0RhdGEgR3JpZCBFcnJv cicpLAotICAgICAgICAgICAgZ2V0dGV4dCgnTm8gb2JqZWN0IHNlbGVjdGVkLicpCi0gICAgICAg ICAgKTsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdGhl IHBhcmVudCBkYXRhIGZyb20gdGhlIHRyZWUgbm9kZSBoaWVyYXJjaHkuCi0gICAgICAgIHZhciBu b2RlID0gcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdLAotICAgICAgICAgIHBhcmVudERhdGEgPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5KGkpOwotCi0gICAgICAgIC8vIElmIHNlcnZlciwgZGF0 YWJhc2Ugb3Igc2NoZW1hIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlv bi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQgfHwgcGFyZW50 RGF0YS5kYXRhYmFzZSA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAg ICB9Ci0gICAgICAgIC8vIElmIHNjaGVtYSwgdmlldywgY2F0YWxvZyBvYmplY3QgYWxsIGFyZSB1 bmRlZmluZWQgdGhlbiByZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24uCi0gICAgICAgIGlmIChwYXJl bnREYXRhLnNjaGVtYSA9PT0gdW5kZWZpbmVkICYmIHBhcmVudERhdGEudmlldyA9PT0gdW5kZWZp bmVkICYmCi0gICAgICAgICAgICAgcGFyZW50RGF0YS5jYXRhbG9nID09PSB1bmRlZmluZWQpIHsK LSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgbnNwX25hbWUgPSAn JzsKLQotICAgICAgICBpZiAocGFyZW50RGF0YS5zY2hlbWEgIT0gdW5kZWZpbmVkKSB7Ci0gICAg ICAgICAgbnNwX25hbWUgPSBwYXJlbnREYXRhLnNjaGVtYS5sYWJlbDsKLSAgICAgICAgfQotICAg ICAgICBlbHNlIGlmIChwYXJlbnREYXRhLnZpZXcgIT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg bnNwX25hbWUgPSBwYXJlbnREYXRhLnZpZXcubGFiZWw7Ci0gICAgICAgIH0KLSAgICAgICAgZWxz ZSBpZiAocGFyZW50RGF0YS5jYXRhbG9nICE9IHVuZGVmaW5lZCkgewotICAgICAgICAgIG5zcF9u YW1lID0gcGFyZW50RGF0YS5jYXRhbG9nLmxhYmVsOwotICAgICAgICB9Ci0gICAgICAgIHZhciB1 cmxfcGFyYW1zID0gewotICAgICAgICAgICdjbWRfdHlwZSc6IGRhdGEubW51aWQsCi0gICAgICAg ICAgJ29ial90eXBlJzogZC5fdHlwZSwKLSAgICAgICAgICAnc2dpZCc6IHBhcmVudERhdGEuc2Vy dmVyX2dyb3VwLl9pZCwKLSAgICAgICAgICAnc2lkJzogcGFyZW50RGF0YS5zZXJ2ZXIuX2lkLAot ICAgICAgICAgICdkaWQnOiBwYXJlbnREYXRhLmRhdGFiYXNlLl9pZCwKLSAgICAgICAgICAnb2Jq X2lkJzogZC5faWQsCi0gICAgICAgIH07Ci0KLSAgICAgICAgdmFyIGJhc2VVcmwgPSB1cmxfZm9y KCdkYXRhZ3JpZC5pbml0aWFsaXplX2RhdGFncmlkJywgdXJsX3BhcmFtcyk7Ci0gICAgICAgIHZh ciBncmlkX3RpdGxlID0gcGFyZW50RGF0YS5zZXJ2ZXIubGFiZWwgKyAnIC0gJyArIHBhcmVudERh dGEuZGF0YWJhc2UubGFiZWwgKyAnIC0gJwotICAgICAgICAgICAgICAgICAgICAgICAgKyBuc3Bf bmFtZSArICcuJyArIGQubGFiZWw7Ci0KLSAgICAgICAgc2VsZi5jcmVhdGVfdHJhbnNhY3Rpb24o YmFzZVVybCwgbnVsbCwgJ2ZhbHNlJywgcGFyZW50RGF0YS5zZXJ2ZXIuc2VydmVyX3R5cGUsICcn LCBncmlkX3RpdGxlLCAnJyk7CisgICAgICAgIHNob3dEYXRhLnNob3dEYXRhR3JpZCh0aGlzLCBw Z0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkYXRhLCBpKTsKICAgICAgIH0sCiAKICAgICAgIC8vIFRoaXMg aXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGZpbHRlcmVkIGRhdGEgd2hlbiB1c2VyIGNs aWNrIG9uIG1lbnUgaXRlbS4KQEAgLTM4NCw2MyArMzQwLDEyIEBAIGRlZmluZSgncGdhZG1pbi5k YXRhZ3JpZCcsIFsKICAgICAgIH0sCiAKICAgICAgIGdldF9wYW5lbF90aXRsZTogZnVuY3Rpb24o KSB7Ci0gICAgICAgIC8vIEdldCB0aGUgcGFyZW50IGRhdGEgZnJvbSB0aGUgdHJlZSBub2RlIGhp ZXJhcmNoeS4KLSAgICAgICAgdmFyIHRyZWUgPSBwZ0FkbWluLkJyb3dzZXIudHJlZSwKLSAgICAg ICAgICBzZWxlY3RlZF9pdGVtID0gdHJlZS5zZWxlY3RlZCgpLAotICAgICAgICAgIGl0ZW1fZGF0 YSA9IHRyZWUuaXRlbURhdGEoc2VsZWN0ZWRfaXRlbSk7Ci0KLSAgICAgICAgdmFyIG5vZGUgPSBw Z0Jyb3dzZXIuTm9kZXNbaXRlbV9kYXRhLl90eXBlXSwKLSAgICAgICAgICBwYXJlbnREYXRhID0g bm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShzZWxlY3RlZF9pdGVtKTsKLQotICAgICAgICAvLyBJ ZiBzZXJ2ZXIsIGRhdGFiYXNlIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5j dGlvbi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQpIHsKLSAg ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gSWYgRGF0YWJhc2UgaXMgbm90 IGF2YWlsYWJsZSB0aGVuIHVzZSBkZWZhdWx0IGRiCi0gICAgICAgIHZhciBkYl9sYWJlbCA9IHBh cmVudERhdGEuZGF0YWJhc2UgPyBwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJlbnREYXRhLnNlcnZlci5kYjsK LQotICAgICAgICB2YXIgZ3JpZF90aXRsZSA9IGRiX2xhYmVsICsgJyBvbiAnICsgcGFyZW50RGF0 YS5zZXJ2ZXIudXNlci5uYW1lICsgJ0AnICsKLSAgICAgICAgICAgICAgICBwYXJlbnREYXRhLnNl cnZlci5sYWJlbDsKLSAgICAgICAgcmV0dXJuIGdyaWRfdGl0bGU7CisgICAgICAgIHJldHVybiBw YW5lbFRpdGxlLmdldFBhbmVsVGl0bGUocGdCcm93c2VyKTsKICAgICAgIH0sCiAgICAgICAvLyBU aGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gc2hvdyBxdWVyeSB0b29sIHdoZW4gdXNlciBj bGljayBvbiBtZW51IGl0ZW0uCi0gICAgICBzaG93X3F1ZXJ5X3Rvb2w6IGZ1bmN0aW9uKHVybCwg aSwgcGFuZWxfdGl0bGUpIHsKLSAgICAgICAgdmFyIHNVUkwgPSB1cmwgfHwgJycsCi0gICAgICAg ICAgZCA9IHBnQWRtaW4uQnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotCi0gICAgICAgIHBhbmVs X3RpdGxlID0gcGFuZWxfdGl0bGUgfHwgJyc7Ci0gICAgICAgIGlmIChkID09PSB1bmRlZmluZWQp IHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdldHRleHQoJ1F1ZXJ5 IFRvb2wgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ05vIG9iamVjdCBzZWxlY3RlZC4n KQotICAgICAgICAgICk7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAg Ly8gR2V0IHRoZSBwYXJlbnQgZGF0YSBmcm9tIHRoZSB0cmVlIG5vZGUgaGllcmFyY2h5LgotICAg ICAgICB2YXIgbm9kZSA9IHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXSwKLSAgICAgICAgICBwYXJl bnREYXRhID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeShpKTsKLQotICAgICAgICAvLyBJZiBz ZXJ2ZXIsIGRhdGFiYXNlIGlzIHVuZGVmaW5lZCB0aGVuIHJldHVybiBmcm9tIHRoZSBmdW5jdGlv bi4KLSAgICAgICAgaWYgKHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQpIHsKLSAgICAg ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdXJsX3BhcmFtcyA9IHsKLSAg ICAgICAgICAgICdzZ2lkJzogcGFyZW50RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lkLAotICAgICAgICAg ICAgJ3NpZCc6IHBhcmVudERhdGEuc2VydmVyLl9pZCwKLSAgICAgICAgICB9LAotICAgICAgICAg IHVybF9lbmRwb2ludCA9ICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rvb2wnOwotICAgICAg ICAvLyBJZiBkYXRhYmFzZSBub3QgcHJlc2VudCB0aGVuIHVzZSBNYWludGVuYW5jZSBkYXRhYmFz ZQotICAgICAgICAvLyBXZSB3aWxsIGhhbmRsZSB0aGlzIGF0IHNlcnZlciBzaWRlCi0gICAgICAg IGlmIChwYXJlbnREYXRhLmRhdGFiYXNlKSB7Ci0gICAgICAgICAgdXJsX3BhcmFtc1snZGlkJ10g PSBwYXJlbnREYXRhLmRhdGFiYXNlLl9pZDsKLSAgICAgICAgICB1cmxfZW5kcG9pbnQgPSAnZGF0 YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sX3dpdGhfZGlkJzsKLSAgICAgICAgfQotICAgICAg ICB2YXIgYmFzZVVybCA9IHVybF9mb3IodXJsX2VuZHBvaW50LCB1cmxfcGFyYW1zKTsKLQotICAg ICAgICB0aGlzLmNyZWF0ZV90cmFuc2FjdGlvbihiYXNlVXJsLCBudWxsLCAndHJ1ZScsIHBhcmVu dERhdGEuc2VydmVyLnNlcnZlcl90eXBlLCBzVVJMLCBwYW5lbF90aXRsZSwgJycsIGZhbHNlKTsK KyAgICAgIHNob3dfcXVlcnlfdG9vbDogZnVuY3Rpb24odXJsLCBhY2lUcmVlSWRlbnRpZmllciwg cGFuZWxUaXRsZSkgeworICAgICAgICBzaG93UXVlcnlUb29sLnNob3dRdWVyeVRvb2wodGhpcywg cGdCcm93c2VyLCBhbGVydGlmeSwgdXJsLAorICAgICAgICAgIGFjaVRyZWVJZGVudGlmaWVyLCBw YW5lbFRpdGxlKTsKICAgICAgIH0sCiAgICAgICBjcmVhdGVfdHJhbnNhY3Rpb246IGZ1bmN0aW9u KGJhc2VVcmwsIHRhcmdldCwgaXNfcXVlcnlfdG9vbCwgc2VydmVyX3R5cGUsIHNVUkwsIHBhbmVs X3RpdGxlLCBzcWxfZmlsdGVyLCByZWNyZWF0ZSkgewogICAgICAgICB2YXIgc2VsZiA9IHRoaXM7 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZ2V0X3Bh bmVsX3RpdGxlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2dldF9w YW5lbF90aXRsZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNjRiM2Ez ZDIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMv anMvZ2V0X3BhbmVsX3RpdGxlLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAx OCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtn ZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0 aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CisKK2Z1bmN0aW9uIGdldERhdGFiYXNlTGFi ZWwocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0YS5kYXRhYmFzZSA/IHBhcmVudERh dGEuZGF0YWJhc2UubGFiZWwKKyAgICA6IHBhcmVudERhdGEuc2VydmVyLmRiOworfQorCitmdW5j dGlvbiBpc1NlcnZlckluZm9ybWF0aW9uQXZhaWxhYmxlKHBhcmVudERhdGEpIHsKKyAgcmV0dXJu IHBhcmVudERhdGEuc2VydmVyID09PSB1bmRlZmluZWQ7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBn ZXRQYW5lbFRpdGxlKHBnQnJvd3NlcikgeworICBjb25zdCBzZWxlY3RlZF9pdGVtID0gcGdCcm93 c2VyLnRyZWVNZW51LnNlbGVjdGVkKCk7CisKKyAgY29uc3QgcGFyZW50RGF0YSA9IGdldFRyZWVO b2RlSGllcmFyY2h5RnJvbUlkZW50aWZpZXIKKyAgICAuY2FsbChwZ0Jyb3dzZXIsIHNlbGVjdGVk X2l0ZW0pOworICBpZiAoaXNTZXJ2ZXJJbmZvcm1hdGlvbkF2YWlsYWJsZShwYXJlbnREYXRhKSkg eworICAgIHJldHVybjsKKyAgfQorCisgIGNvbnN0IGRiX2xhYmVsID0gZ2V0RGF0YWJhc2VMYWJl bChwYXJlbnREYXRhKTsKKworICByZXR1cm4gYCR7ZGJfbGFiZWx9IG9uICR7cGFyZW50RGF0YS5z ZXJ2ZXIudXNlci5uYW1lfUAke3BhcmVudERhdGEuc2VydmVyLmxhYmVsfWA7Cit9CmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhLmpzIGIv d2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfZGF0YS5qcwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMzczYzk3Y2QKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhLmpzCkBAIC0w LDAgKzEsOTIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9q cy91cmxfZm9yJzsKK2ltcG9ydCB7Z2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllcn0g ZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3RyZWUvcGdhZG1pbl90cmVlX25vZGUnOworCitl eHBvcnQgZnVuY3Rpb24gc2hvd0RhdGFHcmlkKAorICBkYXRhZ3JpZCwKKyAgcGdCcm93c2VyLAor ICBhbGVydGlmeSwKKyAgY29ubmVjdGlvbkRhdGEsCisgIGFjaVRyZWVJZGVudGlmaWVyCispIHsK KyAgY29uc3Qgbm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5maW5kTm9kZUJ5RG9tRWxlbWVudChh Y2lUcmVlSWRlbnRpZmllcik7CisgIGlmIChub2RlID09PSB1bmRlZmluZWQgfHwgIW5vZGUuZ2V0 RGF0YSgpKSB7CisgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICBnZXR0ZXh0KCdEYXRhIEdyaWQg RXJyb3InKSwKKyAgICAgIGdldHRleHQoJ05vIG9iamVjdCBzZWxlY3RlZC4nKQorICAgICk7Cisg ICAgcmV0dXJuOworICB9CisKKyAgY29uc3QgcGFyZW50RGF0YSA9IGdldFRyZWVOb2RlSGllcmFy Y2h5RnJvbUlkZW50aWZpZXIuY2FsbCgKKyAgICBwZ0Jyb3dzZXIsCisgICAgYWNpVHJlZUlkZW50 aWZpZXIKKyAgKTsKKworICBpZiAoaGFzU2VydmVyT3JEYXRhYmFzZUNvbmZpZ3VyYXRpb24ocGFy ZW50RGF0YSkKKyAgICB8fCAhaGFzU2NoZW1hT3JDYXRhbG9nT3JWaWV3SW5mb3JtYXRpb24ocGFy ZW50RGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKworICBsZXQgbmFtZXNwYWNlTmFtZSA9IHJl dHJpZXZlTmFtZVNwYWNlTmFtZShwYXJlbnREYXRhKTsKKyAgY29uc3QgYmFzZVVybCA9IGdlbmVy YXRlVXJsKGNvbm5lY3Rpb25EYXRhLCBub2RlLmdldERhdGEoKSwgcGFyZW50RGF0YSk7CisgIGNv bnN0IGdyaWRfdGl0bGUgPSBnZW5lcmF0ZURhdGFncmlkVGl0bGUocGFyZW50RGF0YSwgbmFtZXNw YWNlTmFtZSwgbm9kZS5nZXREYXRhKCkpOworCisgIGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlv bigKKyAgICBiYXNlVXJsLAorICAgIG51bGwsCisgICAgJ2ZhbHNlJywKKyAgICBwYXJlbnREYXRh LnNlcnZlci5zZXJ2ZXJfdHlwZSwKKyAgICAnJywKKyAgICBncmlkX3RpdGxlLAorICAgICcnCisg ICk7Cit9CisKKworZnVuY3Rpb24gcmV0cmlldmVOYW1lU3BhY2VOYW1lKHBhcmVudERhdGEpIHsK KyAgaWYgKHBhcmVudERhdGEuc2NoZW1hICE9PSB1bmRlZmluZWQpIHsKKyAgICByZXR1cm4gcGFy ZW50RGF0YS5zY2hlbWEubGFiZWw7CisgIH0KKyAgZWxzZSBpZiAocGFyZW50RGF0YS52aWV3ICE9 PSB1bmRlZmluZWQpIHsKKyAgICByZXR1cm4gcGFyZW50RGF0YS52aWV3LmxhYmVsOworICB9Cisg IGVsc2UgaWYgKHBhcmVudERhdGEuY2F0YWxvZyAhPT0gdW5kZWZpbmVkKSB7CisgICAgcmV0dXJu IHBhcmVudERhdGEuY2F0YWxvZy5sYWJlbDsKKyAgfQorICByZXR1cm4gJyc7Cit9CisKK2Z1bmN0 aW9uIGdlbmVyYXRlVXJsKGNvbm5lY3Rpb25EYXRhLCBub2RlRGF0YSwgcGFyZW50RGF0YSkgewor ICBjb25zdCB1cmxfcGFyYW1zID0geworICAgICdjbWRfdHlwZSc6IGNvbm5lY3Rpb25EYXRhLm1u dWlkLAorICAgICdvYmpfdHlwZSc6IG5vZGVEYXRhLl90eXBlLAorICAgICdzZ2lkJzogcGFyZW50 RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lkLAorICAgICdzaWQnOiBwYXJlbnREYXRhLnNlcnZlci5faWQs CisgICAgJ2RpZCc6IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkLAorICAgICdvYmpfaWQnOiBub2Rl RGF0YS5faWQsCisgIH07CisKKyAgcmV0dXJuIHVybF9mb3IoJ2RhdGFncmlkLmluaXRpYWxpemVf ZGF0YWdyaWQnLCB1cmxfcGFyYW1zKTsKK30KKworZnVuY3Rpb24gaGFzU2VydmVyT3JEYXRhYmFz ZUNvbmZpZ3VyYXRpb24ocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0YS5zZXJ2ZXIg PT09IHVuZGVmaW5lZCB8fCBwYXJlbnREYXRhLmRhdGFiYXNlID09PSB1bmRlZmluZWQ7Cit9CisK K2Z1bmN0aW9uIGhhc1NjaGVtYU9yQ2F0YWxvZ09yVmlld0luZm9ybWF0aW9uKHBhcmVudERhdGEp IHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2NoZW1hICE9PSB1bmRlZmluZWQgfHwgcGFyZW50RGF0 YS52aWV3ICE9PSB1bmRlZmluZWQgfHwKKyAgICBwYXJlbnREYXRhLmNhdGFsb2cgIT09IHVuZGVm aW5lZDsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBhcmVudERhdGEsIG5h bWVzcGFjZU5hbWUsIG5vZGVEYXRhKSB7CisgIHJldHVybiBgJHtwYXJlbnREYXRhLnNlcnZlci5s YWJlbH0gLSAke3BhcmVudERhdGEuZGF0YWJhc2UubGFiZWx9IC0gJHtuYW1lc3BhY2VOYW1lfS4k e25vZGVEYXRhLmxhYmVsfWA7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0 YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMC4uMGViMTJiOGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzCkBAIC0wLDAgKzEsNjMg QEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29w eXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8g VGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisv LworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8KKworaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2dl dHRleHQnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL3VybF9m b3InOworaW1wb3J0IHtnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyfSBmcm9tICcu Li8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS9wZ2FkbWluX3RyZWVfbm9kZSc7CisKK2Z1bmN0aW9u IGhhc0RhdGFiYXNlSW5mb3JtYXRpb24ocGFyZW50RGF0YSkgeworICByZXR1cm4gcGFyZW50RGF0 YS5kYXRhYmFzZTsKK30KKworZnVuY3Rpb24gZ2VuZXJhdGVVcmwocGFyZW50RGF0YSkgeworICBs ZXQgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbCc7CisgIGxl dCB1cmxfcGFyYW1zID0geworICAgICdzZ2lkJzogcGFyZW50RGF0YS5zZXJ2ZXJfZ3JvdXAuX2lk LAorICAgICdzaWQnOiBwYXJlbnREYXRhLnNlcnZlci5faWQsCisgIH07CisKKyAgaWYgKGhhc0Rh dGFiYXNlSW5mb3JtYXRpb24ocGFyZW50RGF0YSkpIHsKKyAgICB1cmxfcGFyYW1zWydkaWQnXSA9 IHBhcmVudERhdGEuZGF0YWJhc2UuX2lkOworICAgIHVybF9lbmRwb2ludCA9ICdkYXRhZ3JpZC5p bml0aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOworICB9CisKKyAgcmV0dXJuIHVybF9mb3Io dXJsX2VuZHBvaW50LCB1cmxfcGFyYW1zKTsKK30KKworZnVuY3Rpb24gaGFzU2VydmVySW5mb3Jt YXRpb25zKHBhcmVudERhdGEpIHsKKyAgcmV0dXJuIHBhcmVudERhdGEuc2VydmVyID09PSB1bmRl ZmluZWQ7Cit9CisKK2V4cG9ydCBmdW5jdGlvbiBzaG93UXVlcnlUb29sKGRhdGFncmlkLCBwZ0Jy b3dzZXIsIGFsZXJ0aWZ5LCB1cmwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2lU cmVlSWRlbnRpZmllciwgcGFuZWxUaXRsZSkgeworICBjb25zdCBzVVJMID0gdXJsIHx8ICcnOwor ICBjb25zdCBxdWVyeVRvb2xUaXRsZSA9IHBhbmVsVGl0bGUgfHwgJyc7CisKKyAgY29uc3QgY3Vy cmVudE5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuZmluZE5vZGVCeURvbUVsZW1lbnQoYWNpVHJl ZUlkZW50aWZpZXIpOworICBpZiAoY3VycmVudE5vZGUgPT09IHVuZGVmaW5lZCkgeworICAgIGFs ZXJ0aWZ5LmFsZXJ0KAorICAgICAgZ2V0dGV4dCgnUXVlcnkgVG9vbCBFcnJvcicpLAorICAgICAg Z2V0dGV4dCgnTm8gb2JqZWN0IHNlbGVjdGVkLicpCisgICAgKTsKKyAgICByZXR1cm47CisgIH0K KworICBjb25zdCBwYXJlbnREYXRhID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmll ci5jYWxsKAorICAgIHBnQnJvd3NlciwgYWNpVHJlZUlkZW50aWZpZXIpOworCisgIGlmIChoYXNT ZXJ2ZXJJbmZvcm1hdGlvbnMocGFyZW50RGF0YSkpIHsKKyAgICByZXR1cm47CisgIH0KKworICBj b25zdCBiYXNlVXJsID0gZ2VuZXJhdGVVcmwocGFyZW50RGF0YSk7CisKKyAgZGF0YWdyaWQuY3Jl YXRlX3RyYW5zYWN0aW9uKAorICAgIGJhc2VVcmwsIG51bGwsICd0cnVlJywKKyAgICBwYXJlbnRE YXRhLnNlcnZlci5zZXJ2ZXJfdHlwZSwgc1VSTCwgcXVlcnlUb29sVGl0bGUsICcnLCBmYWxzZSk7 Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudF93aXphcmQvc3RhdGljL2pz L2dyYW50X3dpemFyZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMv anMvZ3JhbnRfd2l6YXJkLmpzCmluZGV4IDc1MDg4N2VjLi43NTM4MTNmMCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9ncmFudF93aXphcmQuanMK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9ncmFudF93aXph cmQuanMKQEAgLTIsMTIgKzIsMTUgQEAKIGRlZmluZShbCiAgICdzb3VyY2VzL2dldHRleHQnLCAn c291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ2JhY2tib25lJywKICAg J3BnYWRtaW4uYWxlcnRpZnlqcycsICdwZ2FkbWluLmJhY2tncmlkJywgJ3BnYWRtaW4uYmFja2Zv cm0nLAotICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5ub2RlJywgJ2JhY2tn cmlkLnNlbGVjdC5hbGwnLAorICAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5u b2RlJywKKyAgJ3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVudV91dGlscycsCisgICdz b3VyY2VzL25vZGVzL3N1cHBvcnRlZF9kYXRhYmFzZV9ub2RlJywKKyAgJ2JhY2tncmlkLnNlbGVj dC5hbGwnLAogICAnYmFja2dyaWQuZmlsdGVyJywgJ3BnYWRtaW4uYnJvd3Nlci5zZXJ2ZXIucHJp dmlsZWdlJywKICAgJ3BnYWRtaW4uYnJvd3Nlci53aXphcmQnLAogXSwgZnVuY3Rpb24oCiAgIGdl dHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBBbGVydGlmeSwgQmFja2dyaWQsIEJhY2tm b3JtLCBwZ0Jyb3dzZXIsCi0gIHBnTm9kZQorICBwZ05vZGUsIG1lbnVVdGlscywgc3VwcG9ydGVk Tm9kZXMKICkgewogCiAgIC8vIGlmIG1vZHVsZSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLCByZWZl ciB0byB0aGF0LgpAQCAtMTQzLDQxICsxNDYsNiBAQCBkZWZpbmUoWwogCiAgICAgICB0aGlzLmlu aXRpYWxpemVkID0gdHJ1ZTsKIAotICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24gd2hp Y2ggZ3JhbnQgd2l6YXJkIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIHN1 cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAgICAgICAnc2NoZW1hJywgJ2NvbGwtZnVuY3Rpb24nLCAn Y29sbC1zZXF1ZW5jZScsCi0gICAgICAgICAgJ2NvbGwtdGFibGUnLCAnY29sbC12aWV3JywgJ2Nv bGwtcHJvY2VkdXJlJywKLSAgICAgICAgICAnY29sbC1tdmlldycsICdkYXRhYmFzZScsICdjb2xs LXRyaWdnZXJfZnVuY3Rpb24nLAotICAgICAgICBdLAotCi0gICAgICAgIC8qKgotICAgICAgICAg IEVuYWJsZS9kaXNhYmxlIGdyYW50d2l6YXJkIG1lbnUgaW4gdG9vbHMgYmFzZWQKLSAgICAgICAg ICBvbiBub2RlIHNlbGVjdGVkCi0gICAgICAgICAgaWYgc2VsZWN0ZWQgbm9kZSBpcyBwcmVzZW50 IGluIHN1cHBvcnRlZF9ub2RlcywKLSAgICAgICAgICBtZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhl cndpc2UgZGlzYWJsZWQuCi0gICAgICAgICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcg aW4gY2F0YWxvZ3MKLSAgICAgICAgKi8KLSAgICAgICAgbWVudV9lbmFibGVkID0gZnVuY3Rpb24o aXRlbURhdGEsIGl0ZW0pIHsKLSAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVlLAotICAg ICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgICBkID0gaXRlbURhdGE7Ci0gICAgICAgICAg dmFyIHBhcmVudF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGwsCi0g ICAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRf aXRlbSkgOiBudWxsOwotICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChkKSAmJiAhXy5pc051 bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkgewotICAgICAgICAgICAgaWYgKF8uaW5k ZXhPZihzdXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgotICAgICAgICAgICAgICBw YXJlbnRfZGF0YS5fdHlwZSAhPSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgICAgaWYgKGQuX3R5 cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93Q29ubikKLSAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgICAgZWxzZSBpZiAoZC5fdHlwZSAhPSAnZGF0YWJhc2UnKQotICAg ICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK LSAgICAgICAgfTsKLQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVu dXMgdG8gYmUgYXBwZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAnZ3Jh bnRfd2l6YXJkX3NjaGVtYScsCkBAIC0xODcsMjEgKzE1NSwyNSBAQCBkZWZpbmUoWwogICAgICAg ICBwcmlvcml0eTogMTQsCiAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdHcmFudCBXaXphcmQuLi4n KSwKICAgICAgICAgaWNvbjogJ2ZhIGZhLXVubG9jay1hbHQnLAotICAgICAgICBlbmFibGU6IG1l bnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5lbmFibGVkLmJpbmQo CisgICAgICAgICAgbnVsbCwgcGdCcm93c2VyLnRyZWVNZW51LCBtZW51VXRpbHMuc3VwcG9ydGVk Tm9kZXMKKyAgICAgICAgKSwKICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQgc3VwcG9ydGVkIG1l bnVzIGludG8gdGhlIG1lbnVzIGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHN1 cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBp ZHggPCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMubGVuZ3RoOyBpZHgrKykgewogICAgICAgICBt ZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYV9jb250ZXh0 XycgKyBzdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBzdXBwb3J0ZWRfbm9k ZXNbaWR4XSwKKyAgICAgICAgICBuYW1lOiAnZ3JhbnRfd2l6YXJkX3NjaGVtYV9jb250ZXh0Xycg KyBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXNbaWR4XSwKKyAgICAgICAgICBub2RlOiBtZW51VXRp bHMuc3VwcG9ydGVkTm9kZXNbaWR4XSwKICAgICAgICAgICBtb2R1bGU6IHRoaXMsCiAgICAgICAg ICAgYXBwbGllczogWydjb250ZXh0J10sCiAgICAgICAgICAgY2FsbGJhY2s6ICdzdGFydF9ncmFu dF93aXphcmQnLAogICAgICAgICAgIHByaW9yaXR5OiAxNCwKICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnR3JhbnQgV2l6YXJkLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXVubG9jay1h bHQnLAotICAgICAgICAgIGVuYWJsZTogbWVudV9lbmFibGVkLAorICAgICAgICAgIGVuYWJsZTog c3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAgICAgbnVsbCwgcGdCcm93c2Vy LnRyZWVNZW51LCBtZW51VXRpbHMuc3VwcG9ydGVkTm9kZXMKKyAgICAgICAgICApLAogICAgICAg ICB9KTsKICAgICAgIH0KICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMobWVudXMpOwpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnRfd2l6YXJkL3N0YXRpYy9qcy9tZW51X3V0aWxz LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5iNTZjZTNjZAotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50X3dpemFyZC9zdGF0aWMvanMvbWVu dV91dGlscy5qcwpAQCAtMCwwICsxLDE2IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCBzdXBwb3J0 ZWROb2RlcyA9IFsKKyAgJ3NjaGVtYScsICdjb2xsLWZ1bmN0aW9uJywgJ2NvbGwtc2VxdWVuY2Un LAorICAnY29sbC10YWJsZScsICdjb2xsLXZpZXcnLCAnY29sbC1wcm9jZWR1cmUnLAorICAnY29s bC1tdmlldycsICdkYXRhYmFzZScsICdjb2xsLXRyaWdnZXJfZnVuY3Rpb24nLAorXTsKKworCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBvcnRfZXhwb3J0L3N0YXRpYy9qcy9pbXBv cnRfZXhwb3J0LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMv aW1wb3J0X2V4cG9ydC5qcwppbmRleCAzMDU4ZjEyMi4uZjllOWFjN2IgMTAwNjQ0Ci0tLSBhL3dl Yi9wZ2FkbWluL3Rvb2xzL2ltcG9ydF9leHBvcnQvc3RhdGljL2pzL2ltcG9ydF9leHBvcnQuanMK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0X2V4cG9ydC9zdGF0aWMvanMvaW1wb3J0X2V4 cG9ydC5qcwpAQCAtMSwxMCArMSwxMiBAQAogZGVmaW5lKFsKICAgJ3NvdXJjZXMvZ2V0dGV4dCcs ICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5z dHJpbmcnLCAncGdhZG1pbi5hbGVydGlmeWpzJywKICAgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2Fk bWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAnYmFja2Zvcm0nLAotICAnc291 cmNlcy91dGlscycsICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLCAncGdh ZG1pbi5icm93c2VyLm5vZGUudWknLAorICAnc291cmNlcy91dGlscycsCisgICdzb3VyY2VzL25v ZGVzL3N1cHBvcnRlZF9kYXRhYmFzZV9ub2RlJywKKyAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdh ZG1pbi5iYWNrZ3JpZCcsICdwZ2FkbWluLmJyb3dzZXIubm9kZS51aScsCiBdLCBmdW5jdGlvbigK ICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgUywgQWxlcnRpZnksIHBnQWRtaW4sIHBnQnJvd3Nl ciwgQmFja2JvbmUsIEJhY2tncmlkLAotQmFja2Zvcm0sIGNvbW1vblV0aWxzCitCYWNrZm9ybSwg Y29tbW9uVXRpbHMsIHN1cHBvcnRlZE5vZGVzCiApIHsKIAogICBwZ0FkbWluID0gcGdBZG1pbiB8 fCB3aW5kb3cucGdBZG1pbiB8fCB7fTsKQEAgLTM4MywyNSArMzg1LDYgQEAgQmFja2Zvcm0sIGNv bW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICAvKgot ICAgICAgICogRW5hYmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMgYmFzZWQgb24gbm9k ZSBzZWxlY3RlZC4gSW1wb3J0Ci0gICAgICAgKiBtZW51IHdpbGwgYmUgZW5hYmxlZCBvbmx5IHdo ZW4gdXNlciBzZWxlY3QgdGFibGUgbm9kZS4KLSAgICAgICAqLwotICAgICAgdmFyIG1lbnVfZW5h YmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwot ICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDog bnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShw YXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8u aXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpCi0gICAgICAgICAgcmV0dXJuICgK LSAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBlKSAhPT0gLTEgJiYKLSAg ICAgICAgICAgICAgcGFyZW50X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSA/IHRydWUgOiBmYWxz ZQotICAgICAgICAgICk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgICB9OwotCiAgICAgICAvLyBJbml0aWFsaXplIHRoZSBjb250ZXh0IG1lbnUgdG8gZGlzcGxh eSB0aGUgaW1wb3J0IG9wdGlvbnMgd2hlbiB1c2VyIG9wZW4gdGhlIGNvbnRleHQgbWVudSBmb3Ig dGFibGUKICAgICAgIHBnQnJvd3Nlci5hZGRfbWVudXMoW3sKICAgICAgICAgbmFtZTogJ2ltcG9y dCcsCkBAIC00MTMsNyArMzk2LDkgQEAgQmFja2Zvcm0sIGNvbW1vblV0aWxzCiAgICAgICAgIHBy aW9yaXR5OiAxMCwKICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ltcG9ydC9FeHBvcnQuLi4nKSwK ICAgICAgICAgaWNvbjogJ2ZhIGZhLXNob3BwaW5nLWNhcnQnLAotICAgICAgICBlbmFibGU6IG1l bnVfZW5hYmxlZCwKKyAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5lbmFibGVkLmJpbmQo CisgICAgICAgICAgbnVsbCwgcGdCcm93c2VyLnRyZWVNZW51LCBbJ3RhYmxlJ10KKyAgICAgICAg KSwKICAgICAgIH1dKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9t YWludGVuYW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMgYi93ZWIvcGdhZG1pbi90b29scy9t YWludGVuYW5jZS9zdGF0aWMvanMvbWFpbnRlbmFuY2UuanMKaW5kZXggZjIxMDI2MDIuLmRmMDVj M2Q1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMv bWFpbnRlbmFuY2UuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGlj L2pzL21haW50ZW5hbmNlLmpzCkBAIC0yLDExICsyLDE0IEBAIGRlZmluZShbCiAgICdzb3VyY2Vz L2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywKICAg J3VuZGVyc2NvcmUuc3RyaW5nJywgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3VyY2VzL3BnYWRt aW4nLCAncGdhZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywKICAgJ2JhY2tncmlkJywgJ2JhY2tm b3JtJywgJ3NvdXJjZXMvdXRpbHMnLAorICAndG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21l bnVfdXRpbHMnLAorICAnc291cmNlcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJhc2Vfbm9kZScsCiAg ICdwZ2FkbWluLmJhY2tmb3JtJywgJ3BnYWRtaW4uYmFja2dyaWQnLAogICAncGdhZG1pbi5icm93 c2VyLm5vZGUudWknLAogXSwgZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIFMs IEFsZXJ0aWZ5LCBwZ0FkbWluLCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwKLSAgQmFj a2Zvcm0sIGNvbW1vblV0aWxzCisgIEJhY2tmb3JtLCBjb21tb25VdGlscywKKyAgbWVudVV0aWxz LCBzdXBwb3J0ZWROb2RlcwogKSB7CiAKICAgcGdBZG1pbiA9IHBnQWRtaW4gfHwgd2luZG93LnBn QWRtaW4gfHwge307CkBAIC0xNjgsMzYgKzE3MSw2IEBAIGRlZmluZShbCiAKICAgICAgIHRoaXMu aW5pdGlhbGl6ZWQgPSB0cnVlOwogCi0gICAgICB2YXIgbWFpbnRlbmFuY2Vfc3VwcG9ydGVkX25v ZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAndGFibGUnLCAncHJpbWFyeV9rZXknLAotICAg ICAgICAndW5pcXVlX2NvbnN0cmFpbnQnLCAnaW5kZXgnLCAncGFydGl0aW9uJywKLSAgICAgIF07 Ci0KLSAgICAgIC8qKgotICAgICAgIEVuYWJsZS9kaXNhYmxlIE1haW50ZW5hbmNlIG1lbnUgaW4g dG9vbHMgYmFzZWQgb24gbm9kZSBzZWxlY3RlZC4KLSAgICAgICBNYWludGVuYW5jZSBtZW51IHdp bGwgYmUgZW5hYmxlZCBvbmx5IHdoZW4gdXNlciBzZWxlY3QgdGFibGUgYW5kIGRhdGFiYXNlIG5v ZGUuCi0gICAgICAqLwotICAgICAgdmFyIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRh LCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9 IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0g PSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRf ZGF0YSA9IHBhcmVudF9pdGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAg ICAgICBpZiAoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChw YXJlbnRfZGF0YSkpIHsKLSAgICAgICAgICBpZiAoXy5pbmRleE9mKG1haW50ZW5hbmNlX3N1cHBv cnRlZF9ub2RlcywgZC5fdHlwZSkgIT09IC0xICYmCi0gICAgICAgICAgICBwYXJlbnRfZGF0YS5f dHlwZSAhPSAnY2F0YWxvZycpIHsKLSAgICAgICAgICAgIGlmIChkLl90eXBlID09ICdkYXRhYmFz ZScgJiYgZC5hbGxvd0Nvbm4pCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg ICAgZWxzZSBpZiAoZC5fdHlwZSAhPSAnZGF0YWJhc2UnKQotICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9IGVsc2UK LSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICB9OwotCiAgICAgICB2YXIgbWVudXMgPSBb ewogICAgICAgICBuYW1lOiAnbWFpbnRlbmFuY2UnLAogICAgICAgICBtb2R1bGU6IHRoaXMsCkBA IC0yMDYsMjEgKzE3OSwyNSBAQCBkZWZpbmUoWwogICAgICAgICBwcmlvcml0eTogMTAsCiAgICAg ICAgIGxhYmVsOiBnZXR0ZXh0KCdNYWludGVuYW5jZS4uLicpLAogICAgICAgICBpY29uOiAnZmEg ZmEtd3JlbmNoJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgIGVuYWJs ZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAgIG51bGwsIHBnQnJvd3Nl ci50cmVlTWVudSwgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9ydGVkTm9kZXMKKyAgICAgICAg KSwKICAgICAgIH1dOwogCiAgICAgICAvLyBBZGQgc3VwcG9ydGVkIG1lbnVzIGludG8gdGhlIG1l bnVzIGxpc3QKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IG1haW50ZW5hbmNlX3N1cHBv cnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHgg PCBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlcy5sZW5ndGg7IGlkeCsrKSB7CiAg ICAgICAgIG1lbnVzLnB1c2goewotICAgICAgICAgIG5hbWU6ICdtYWludGVuYW5jZV9jb250ZXh0 XycgKyBtYWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiBt YWludGVuYW5jZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAgICBuYW1lOiAnbWFpbnRl bmFuY2VfY29udGV4dF8nICsgbWVudVV0aWxzLm1haW50ZW5hbmNlU3VwcG9ydGVkTm9kZXNbaWR4 XSwKKyAgICAgICAgICBub2RlOiBtZW51VXRpbHMubWFpbnRlbmFuY2VTdXBwb3J0ZWROb2Rlc1tp ZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywKICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRl eHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ2NhbGxiYWNrX21haW50ZW5hbmNlJywKICAgICAg ICAgICBwcmlvcml0eTogMTAsCiAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ01haW50ZW5hbmNl Li4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXdyZW5jaCcsCi0gICAgICAgICAgZW5hYmxl OiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5lbmFibGVk LmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVVdGlscy5t YWludGVuYW5jZVN1cHBvcnRlZE5vZGVzCisgICAgICAgICAgKSwKICAgICAgICAgfSk7CiAgICAg ICB9CiAgICAgICBwZ0Jyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tZW51X3V0aWxzLmpzIGIvd2ViL3Bn YWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhjZGUxYmFhCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKQEAg LTAsMCArMSwxMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK Ky8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworCitleHBvcnQgY29uc3QgbWFpbnRlbmFuY2VTdXBwb3J0ZWRO b2RlcyA9IFsKKyAgJ2RhdGFiYXNlJywgJ3RhYmxlJywgJ3ByaW1hcnlfa2V5JywKKyAgJ3VuaXF1 ZV9jb25zdHJhaW50JywgJ2luZGV4JywgJ3BhcnRpdGlvbicsCitdOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL21lbnVfdXRpbHMuanMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAuLjJkMzVjOTUxCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvbWVudV91dGlscy5qcwpAQCAtMCwwICsxLDE4 IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQor Ly8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCisKK2V4cG9ydCBjb25zdCByZXN0b3JlU3VwcG9ydGVkTm9kZXMgPSBbCisgICdk YXRhYmFzZScsCisgICdzY2hlbWEnLAorICAndGFibGUnLAorICAnZnVuY3Rpb24nLAorICAndHJp Z2dlcicsCisgICdpbmRleCcsCisgICdwYXJ0aXRpb24nLAorXTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmUuanMgYi93ZWIvcGdhZG1pbi90 b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpzCmluZGV4IDU4NWI5NzI5Li4zYmRlNmRl NyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9y ZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlLmpz CkBAIC0xLDExICsxLDEzIEBACi0vLyBSZXN0b3JlIGRpYWxvZwogZGVmaW5lKCd0b29scy5yZXN0 b3JlJywgWwogICAnc291cmNlcy9nZXR0ZXh0JywgJ3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnkn LCAndW5kZXJzY29yZScsICdiYWNrYm9uZScsCiAgICd1bmRlcnNjb3JlLnN0cmluZycsICdwZ2Fk bWluLmFsZXJ0aWZ5anMnLCAncGdhZG1pbi5icm93c2VyJywKICAgJ3BnYWRtaW4uYmFja2dyaWQn LCAncGdhZG1pbi5iYWNrZm9ybScsICdzb3VyY2VzL3V0aWxzJywKKyAgJ3Rvb2xzL3Jlc3RvcmUv c3RhdGljL2pzL21lbnVfdXRpbHMnLAorICAnc291cmNlcy9ub2Rlcy9zdXBwb3J0ZWRfZGF0YWJh c2Vfbm9kZScsCisgICd0b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2RpYWxvZycsCiBd LCBmdW5jdGlvbigKICAgZ2V0dGV4dCwgdXJsX2ZvciwgJCwgXywgQmFja2JvbmUsIFMsIGFsZXJ0 aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tncmlkLCBCYWNrZm9ybSwKLWNvbW1vblV0aWxzCitjb21tb25V dGlscywgbWVudVV0aWxzLCBzdXBwb3J0ZWROb2RlcywgcmVzdG9yZURpYWxvZwogKSB7CiAKICAg Ly8gaWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCkBAIC0z MDcsNTkgKzMwOSw2IEBAIGNvbW1vblV0aWxzCiAKICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0 cnVlOwogCi0gICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCByZXN0b3JlIGNv bnRleHQgbWVudSBvcHRpb24gYXBwZWFycwotICAgICAgdmFyIHJlc3RvcmVfc3VwcG9ydGVkX25v ZGVzID0gWwotICAgICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywKLSAgICAgICAgJ3RhYmxlJywg J2Z1bmN0aW9uJywKLSAgICAgICAgJ3RyaWdnZXInLCAnaW5kZXgnLAotICAgICAgICAncGFydGl0 aW9uJywKLSAgICAgIF07Ci0KLSAgICAgIC8qKgotICAgICAgICBFbmFibGUvZGlzYWJsZSByZXN0 b3JlIG1lbnUgaW4gdG9vbHMgYmFzZWQKLSAgICAgICAgb24gbm9kZSBzZWxlY3RlZAotICAgICAg ICBpZiBzZWxlY3RlZCBub2RlIGlzIHByZXNlbnQgaW4gc3VwcG9ydGVkX25vZGVzLAotICAgICAg ICBtZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCi0gICAgICAgIEFsc28s IGhpZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzCi0gICAgICAqLwotICAgICAgdmFy IG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBpdGVtLCBkYXRhKSB7Ci0gICAgICAg IHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAg ZCA9IGl0ZW1EYXRhOwotICAgICAgICB2YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/ IHQucGFyZW50KGkpIDogbnVsbCwKLSAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVt ID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOwotICAgICAgICBpZiAoIV8uaXNVbmRl ZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlzTnVsbChwYXJlbnRfZGF0YSkpIHsKLSAg ICAgICAgICBpZiAoXy5pbmRleE9mKHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzLCBkLl90eXBlKSAh PT0gLTEgJiYKLSAgICAgICAgICAgIGlzX3BhcmVudF9jYXRhbG9nKGl0ZW1EYXRhLCBpdGVtLCBk YXRhKSkgewotICAgICAgICAgICAgaWYgKGQuX3R5cGUgPT0gJ2RhdGFiYXNlJyAmJiBkLmFsbG93 Q29ubikKLSAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChk Ll90eXBlICE9ICdkYXRhYmFzZScpCi0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg ICAgICAgZWxzZQotICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfSBlbHNl Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgIH07Ci0KLSAgICAgIHZhciBpc19wYXJlbnRfY2F0YWxvZyA9IGZ1 bmN0aW9uKGl0ZW1EYXRhLCBpdGVtKSB7Ci0gICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUs Ci0gICAgICAgICAgaSA9IGl0ZW0sCi0gICAgICAgICAgZCA9IGl0ZW1EYXRhOwotCi0gICAgICAg IC8vIFRvIGl0ZXJhdGUgb3ZlciB0cmVlIHRvIGNoZWNrIHBhcmVudCBub2RlCi0gICAgICAgIHdo aWxlIChpKSB7Ci0gICAgICAgICAgLy8gSWYgaXQgaXMgc2NoZW1hIHRoZW4gYWxsb3cgdXNlciB0 byByZXN0b3JlCi0gICAgICAgICAgaWYgKF8uaW5kZXhPZihbJ2NhdGFsb2cnXSwgZC5fdHlwZSkg PiAtMSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICBpID0gdC5oYXNQYXJl bnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7Ci0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRh KGkpIDogbnVsbDsKLSAgICAgICAgfQotICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3 YW50IHRvIGFsbG93IGNyZWF0ZSBtZW51Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgICAgfTsK LQogICAgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBw ZWFyCiAgICAgICB2YXIgbWVudXMgPSBbewogICAgICAgICBuYW1lOiAncmVzdG9yZV9vYmplY3Qn LApAQCAtMzY5LDIwICszMTgsMjQgQEAgY29tbW9uVXRpbHMKICAgICAgICAgcHJpb3JpdHk6IDEz LAogICAgICAgICBsYWJlbDogZ2V0dGV4dCgnUmVzdG9yZS4uLicpLAogICAgICAgICBpY29uOiAn ZmEgZmEtdXBsb2FkJywKLSAgICAgICAgZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgIGVu YWJsZTogc3VwcG9ydGVkTm9kZXMuZW5hYmxlZC5iaW5kKAorICAgICAgICAgIG51bGwsIHBnQnJv d3Nlci50cmVlTWVudSwgbWVudVV0aWxzLnJlc3RvcmVTdXBwb3J0ZWROb2RlcworICAgICAgICAp LAogICAgICAgfV07CiAKLSAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8IHJlc3RvcmVfc3Vw cG9ydGVkX25vZGVzLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlk eCA8IG1lbnVVdGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMubGVuZ3RoOyBpZHgrKykgewogICAg ICAgICBtZW51cy5wdXNoKHsKLSAgICAgICAgICBuYW1lOiAncmVzdG9yZV8nICsgcmVzdG9yZV9z dXBwb3J0ZWRfbm9kZXNbaWR4XSwKLSAgICAgICAgICBub2RlOiByZXN0b3JlX3N1cHBvcnRlZF9u b2Rlc1tpZHhdLAorICAgICAgICAgIG5hbWU6ICdyZXN0b3JlXycgKyBtZW51VXRpbHMucmVzdG9y ZVN1cHBvcnRlZE5vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTogbWVudVV0aWxzLnJlc3RvcmVT dXBwb3J0ZWROb2Rlc1tpZHhdLAogICAgICAgICAgIG1vZHVsZTogdGhpcywKICAgICAgICAgICBh cHBsaWVzOiBbJ2NvbnRleHQnXSwKICAgICAgICAgICBjYWxsYmFjazogJ3Jlc3RvcmVfb2JqZWN0 cycsCiAgICAgICAgICAgcHJpb3JpdHk6IDEzLAogICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdS ZXN0b3JlLi4uJyksCiAgICAgICAgICAgaWNvbjogJ2ZhIGZhLXVwbG9hZCcsCi0gICAgICAgICAg ZW5hYmxlOiBtZW51X2VuYWJsZWQsCisgICAgICAgICAgZW5hYmxlOiBzdXBwb3J0ZWROb2Rlcy5l bmFibGVkLmJpbmQoCisgICAgICAgICAgICBudWxsLCBwZ0Jyb3dzZXIudHJlZU1lbnUsIG1lbnVV dGlscy5yZXN0b3JlU3VwcG9ydGVkTm9kZXMKKyAgICAgICAgICApLAogICAgICAgICB9KTsKICAg ICAgIH0KIApAQCAtMzkxLDMxOCArMzQ0LDggQEAgY29tbW9uVXRpbHMKICAgICB9LAogICAgIC8v IENhbGxiYWNrIHRvIGRyYXcgQmFja3VwIERpYWxvZyBmb3Igb2JqZWN0cwogICAgIHJlc3RvcmVf b2JqZWN0czogZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSkgewotCi0gICAgICB2YXIgaSA9IHRy ZWVJdGVtIHx8IHBnQnJvd3Nlci50cmVlLnNlbGVjdGVkKCksCi0gICAgICAgIHNlcnZlcl9kYXRh ID0gbnVsbDsKLQotICAgICAgd2hpbGUgKGkpIHsKLSAgICAgICAgdmFyIG5vZGVfZGF0YSA9IHBn QnJvd3Nlci50cmVlLml0ZW1EYXRhKGkpOwotICAgICAgICBpZiAobm9kZV9kYXRhLl90eXBlID09 ICdzZXJ2ZXInKSB7Ci0gICAgICAgICAgc2VydmVyX2RhdGEgPSBub2RlX2RhdGE7Ci0gICAgICAg ICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocGdCcm93c2VyLnRyZWUuaGFzUGFy ZW50KGkpKSB7Ci0gICAgICAgICAgaSA9ICQocGdCcm93c2VyLnRyZWUucGFyZW50KGkpKTsKLSAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBhbGVydGlmeS5hbGVydCgKLSAgICAgICAgICAgIGdl dHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKLSAgICAgICAgICAgIGdldHRleHQoJ1BsZWFzZSBzZWxl Y3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJvbSB0cmVlLicpCi0gICAgICAgICAgKTsKLSAgICAg ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoIXNlcnZlcl9kYXRh KSB7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAgICAgdmFyIG1vZHVsZSA9ICdwYXRo cycsCi0gICAgICAgIHByZWZlcmVuY2VfbmFtZSA9ICdwZ19iaW5fZGlyJywKLSAgICAgICAgbXNn ID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUgUG9zdGdyZVNRTCBCaW5hcnkgUGF0aCBp biB0aGUgUHJlZmVyZW5jZXMgZGlhbG9nLicpOwotCi0gICAgICBpZiAoKHNlcnZlcl9kYXRhLnR5 cGUgJiYgc2VydmVyX2RhdGEudHlwZSA9PSAncHBhcycpIHx8Ci0gICAgICAgIHNlcnZlcl9kYXRh LnNlcnZlcl90eXBlID09ICdwcGFzJykgewotICAgICAgICBwcmVmZXJlbmNlX25hbWUgPSAncHBh c19iaW5fZGlyJzsKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGNvbmZpZ3VyZSB0aGUg RURCIEFkdmFuY2VkIFNlcnZlciBCaW5hcnkgUGF0aCBpbiB0aGUgUHJlZmVyZW5jZXMgZGlhbG9n LicpOwotICAgICAgfQotCi0gICAgICB2YXIgcHJlZmVyZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJl ZmVyZW5jZShtb2R1bGUsIHByZWZlcmVuY2VfbmFtZSk7Ci0KLSAgICAgIGlmIChwcmVmZXJlbmNl KSB7Ci0gICAgICAgIGlmICghcHJlZmVyZW5jZS52YWx1ZSkgewotICAgICAgICAgIGFsZXJ0aWZ5 LmFsZXJ0KGdldHRleHQoJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnKSwgbXNnKTsKLSAgICAgICAg ICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGFsZXJ0aWZ5LmFs ZXJ0KAotICAgICAgICAgIGdldHRleHQoJ1Jlc3RvcmUgRXJyb3InKSwKLSAgICAgICAgICBTKGdl dHRleHQoJ0ZhaWxlZCB0byBsb2FkIHByZWZlcmVuY2UgJXMgb2YgbW9kdWxlICVzJykpLnNwcmlu dGYocHJlZmVyZW5jZV9uYW1lLCBtb2R1bGUpLnZhbHVlKCkKLSAgICAgICAgKTsKLSAgICAgICAg cmV0dXJuOwotICAgICAgfQotCi0gICAgICB2YXIgdGl0bGUgPSBTKGdldHRleHQoJ1Jlc3RvcmUg KCVzOiAlcyknKSksCi0gICAgICAgIHRyZWUgPSBwZ0Jyb3dzZXIudHJlZSwKLSAgICAgICAgaXRl bSA9IHRyZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgZGF0YSA9IGl0ZW0gJiYg aXRlbS5sZW5ndGggPT0gMSAmJiB0cmVlLml0ZW1EYXRhKGl0ZW0pLAotICAgICAgICBub2RlID0g ZGF0YSAmJiBkYXRhLl90eXBlICYmIHBnQnJvd3Nlci5Ob2Rlc1tkYXRhLl90eXBlXTsKLQotICAg ICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICAgIHZhciB0cmVlSW5mbyA9IG5v ZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2l0ZW1dKTsKLQotICAgICAgaWYg KHRyZWVJbmZvLmRhdGFiYXNlLl9sYWJlbC5pbmRleE9mKCc9JykgPj0gMCkgewotICAgICAgICBh bGVydGlmeS5hbGVydCgKLSAgICAgICAgICBnZXR0ZXh0KCdSZXN0b3JlIGVycm9yJyksCi0gICAg ICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBqb2IgY3JlYXRpb24gZmFpbGVkLiAnKwotICAgICAgICAg ICdEYXRhYmFzZXMgd2l0aCA9IHN5bWJvbHMgaW4gdGhlIG5hbWUgY2Fubm90IGJlIHJlc3RvcmVk IHVzaW5nIHRoaXMgdXRpbGl0eS4nKQotICAgICAgICApOwotICAgICAgICByZXR1cm47Ci0gICAg ICB9Ci0KLSAgICAgIHRpdGxlID0gdGl0bGUuc3ByaW50Zihub2RlLmxhYmVsLCBkYXRhLmxhYmVs KS52YWx1ZSgpOwotCi0gICAgICBpZiAoIWFsZXJ0aWZ5LnBnX3Jlc3RvcmUpIHsKLSAgICAgICAg Ly8gQ3JlYXRlIERpYWxvZyB0aXRsZSBvbiB0aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxzCi0gICAg ICAgIGFsZXJ0aWZ5LmRpYWxvZygncGdfcmVzdG9yZScsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0g ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG1haW46IGZ1bmN0aW9uKHRpdGxlLCBpdGVt LCBkYXRhLCBub2RlKSB7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsK LSAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdwZ19ub2RlJywgbm9kZSk7Ci0gICAgICAgICAg ICAgIHRoaXMuc2V0dGluZygncGdfaXRlbScsIGl0ZW0pOwotICAgICAgICAgICAgICB0aGlzLnNl dHRpbmcoJ3BnX2l0ZW1fZGF0YScsIGRhdGEpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgYWxlcnRpZnkucGdEaWFsb2dCdWls ZC5hcHBseSh0aGlzKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZXR1cDogZnVuY3Rp b24oKSB7Ci0gICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgYnV0dG9uczog W3sKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAgICAgY2xhc3NO YW1lOiAnYnRuIGJ0bi1kZWZhdWx0IHB1bGwtbGVmdCBmYSBmYS1sZyBmYS1pbmZvJywKLSAgICAg ICAgICAgICAgICAgIGF0dHJzOiB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdvYmplY3Rf aGVscCcsCi0gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAg ICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCi0gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBn ZXR0ZXh0KCdSZXN0b3JlJyksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg IH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAgICAga2V5 OiAxMTIsCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1bHQgcHVs bC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKLSAgICAgICAgICAgICAgICAgIGF0dHJzOiB7 Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCi0gICAgICAgICAgICAg ICAgICAgIHR5cGU6ICdidXR0b24nLAotICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4 dCgnUmVzdG9yZScpLAotICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3Rh dGljJywgewotICAgICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdyZXN0b3JlX2RpYWxv Zy5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ1Jl c3RvcmUnKSwKLSAgICAgICAgICAgICAgICAgIGtleTogMTMsCi0gICAgICAgICAgICAgICAgICBj bGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtdXBsb2FkIHBnLWFsZXJ0aWZ5LWJ1dHRv bicsCi0gICAgICAgICAgICAgICAgICByZXN0b3JlOiB0cnVlLAotICAgICAgICAgICAgICAgICAg J2RhdGEtYnRuLW5hbWUnOiAncmVzdG9yZScsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAg ICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnQ2FuY2VsJyksCi0gICAgICAgICAgICAgICAgICBr ZXk6IDI3LAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEg ZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgIHJl c3RvcmU6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnY2FuY2Vs JywKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBm b3IgZGlhbG9nCi0gICAgICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgICAgICAg dGl0bGU6IHRpdGxlLAotICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBh bmQgb3ZlcmZsb3cgY29udHJvbC4KLSAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICExLAotICAg ICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICExLAotICAgICAgICAgICAgICAgICAgbW9kZWw6IDAs Ci0gICAgICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBt YXhpbWl6YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKLSAg ICAgICAgICAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAotICAgICAgICAgICAgICAg ICAgbW9kYWw6IGZhbHNlLAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIH07Ci0g ICAgICAgICAgICB9LAotICAgICAgICAgICAgaG9va3M6IHsKLSAgICAgICAgICAgICAgLy8gdHJp Z2dlcmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgb25jbG9zZTog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRoaXMudmlldykgewotICAgICAgICAg ICAgICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGE6IHRy dWUsCi0gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB0cnVlLAotICAgICAgICAgICAgICAg ICAgICBzaWxlbnQ6IHRydWUsCi0gICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgc2V0dGlu Z3M6IHsKLSAgICAgICAgICAgICAgcGdfbm9kZTogbnVsbCwKLSAgICAgICAgICAgICAgcGdfaXRl bTogbnVsbCwKLSAgICAgICAgICAgICAgcGdfaXRlbV9kYXRhOiBudWxsLAotICAgICAgICAgICAg fSwKLSAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgewotCi0gICAgICAgICAgICAgIHZh ciBzZWxmID0gdGhpczsKLSAgICAgICAgICAgICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0dG9uIHVu dGlsIHVzZXIgcHJvdmlkZXMgRmlsZW5hbWUKLSAgICAgICAgICAgICAgdGhpcy5fX2ludGVybmFs LmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgIHZhciAk Y29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz1cJ3Jlc3RvcmVfZGlhbG9nXCc+PC9kaXY+Jyk7Ci0g ICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCi0gICAgICAgICAgICAgICAgaSA9 IHQuc2VsZWN0ZWQoKSwKLSAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8g dC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKLSAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBw Z0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07Ci0KLSAgICAgICAgICAgICAgaWYgKCFkKQotICAgICAg ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdl dFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7Ci0KLSAgICAgICAgICAgICAgdmFy IG5ld01vZGVsID0gbmV3IFJlc3RvcmVPYmplY3RNb2RlbCh7Ci0gICAgICAgICAgICAgICAgICBu b2RlX2RhdGE6IG5vZGUsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAg bm9kZV9pbmZvOiB0cmVlSW5mbywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAg ICBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAgICAgICAg ICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRy dWUKLSAgICAgICAgICAgICAgICApOwotCi0gICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52 aWV3ID0gbmV3IEJhY2tmb3JtLkRpYWxvZyh7Ci0gICAgICAgICAgICAgICAgZWw6ICRjb250YWlu ZXIsCi0gICAgICAgICAgICAgICAgbW9kZWw6IG5ld01vZGVsLAotICAgICAgICAgICAgICAgIHNj aGVtYTogZmllbGRzLAotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAkKHRoaXMu ZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKLSAgICAgICAgICAgICAgICAn YWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCi0gICAgICAg ICAgICAgICk7Ci0KLSAgICAgICAgICAgICAgdmlldy5yZW5kZXIoKTsKLQotICAgICAgICAgICAg ICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNvbnRhaW5lci5nZXQoMCkpOwot Ci0gICAgICAgICAgICAgIHZpZXcuJGVsLmF0dHIoJ3RhYmluZGV4JywgLTEpOwotICAgICAgICAg ICAgICAvLyB2YXIgZGlhbG9nVGFiTmF2aWdhdG9yID0gcGdCcm93c2VyLmtleWJvYXJkTmF2aWdh dGlvbi5nZXREaWFsb2dUYWJOYXZpZ2F0b3Iodmlldyk7Ci0gICAgICAgICAgICAgIHBnQnJvd3Nl ci5rZXlib2FyZE5hdmlnYXRpb24uZ2V0RGlhbG9nVGFiTmF2aWdhdG9yKHZpZXcpOwotICAgICAg ICAgICAgICB2YXIgY29udGFpbmVyID0gdmlldy4kZWwuZmluZCgnLnRhYi1jb250ZW50OmZpcnN0 ID4gLnRhYi1wYW5lLmFjdGl2ZTpmaXJzdCcpOwotICAgICAgICAgICAgICBjb21tb25VdGlscy5m aW5kQW5kU2V0Rm9jdXMoY29udGFpbmVyKTsKLQotICAgICAgICAgICAgICAvLyBMaXN0ZW4gdG8g bW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBwcm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAgYnV0dG9u Ci0gICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7 Ci0gICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykpICYm IHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9y TW9kZWwuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5idXR0b25z WzJdLmVsZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ugewot ICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNh YmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdmaWxl JywgZ2V0dGV4dCgnUGxlYXNlIHByb3ZpZGUgZmlsZW5hbWUnKSk7Ci0gICAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIC8vIENh bGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0b25zIG9mIHRoZSBBbGVydGlm eSBkaWFsb2dzCi0gICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oZSkgewotICAgICAgICAg ICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZlciBpZAotICAgICAgICAgICAgICB2YXIgdCA9IHBn QnJvd3Nlci50cmVlLAotICAgICAgICAgICAgICAgIGkgPSB0aGlzLnNldHRpbmdzWydwZ19pdGVt J10gfHwgdC5zZWxlY3RlZCgpLAotICAgICAgICAgICAgICAgIGQgPSB0aGlzLnNldHRpbmdzWydw Z19pdGVtX2RhdGEnXSB8fCAoCi0gICAgICAgICAgICAgICAgICBpICYmIGkubGVuZ3RoID09IDEg PyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkCi0gICAgICAgICAgICAgICAgKSwKLSAgICAgICAg ICAgICAgICBub2RlID0gdGhpcy5zZXR0aW5nc1sncGdfbm9kZSddIHx8ICgKLSAgICAgICAgICAg ICAgICAgIGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdCi0gICAgICAgICAgICAgICAgKTsK LQotICAgICAgICAgICAgICBpZiAoZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdkaWFsb2dfaGVs cCcgfHwgZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdvYmplY3RfaGVscCcpIHsKLSAgICAgICAg ICAgICAgICBlLmNhbmNlbCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcGdCcm93c2VyLnNob3dI ZWxwKGUuYnV0dG9uLmVsZW1lbnQubmFtZSwgZS5idXR0b24uZWxlbWVudC5nZXRBdHRyaWJ1dGUo J3VybCcpLAotICAgICAgICAgICAgICAgICAgbm9kZSwgaSwgZS5idXR0b24uZWxlbWVudC5nZXRB dHRyaWJ1dGUoJ2xhYmVsJykpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg ICAgfQotCi0gICAgICAgICAgICAgIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAn cmVzdG9yZScpIHsKLSAgICAgICAgICAgICAgICBpZiAoIWQpCi0gICAgICAgICAgICAgICAgICBy ZXR1cm47Ci0KLSAgICAgICAgICAgICAgICB2YXIgaW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVy YXJjaHkuYXBwbHkobm9kZSwgW2ldKSwKLSAgICAgICAgICAgICAgICAgIG0gPSB0aGlzLnZpZXcu bW9kZWw7Ci0gICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnQgbm9kZSBpbmZvIGludG8gbW9k ZWwKLSAgICAgICAgICAgICAgICBtLnNldCgnZGF0YWJhc2UnLCBpbmZvLmRhdGFiYXNlLl9sYWJl bCk7Ci0gICAgICAgICAgICAgICAgaWYgKCFtLmdldCgnY3VzdG9tJykpIHsKLSAgICAgICAgICAg ICAgICAgIHN3aXRjaCAoZC5fdHlwZSkgewotICAgICAgICAgICAgICAgICAgY2FzZSAnc2NoZW1h JzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBbZC5fbGFiZWxdKTsKLSAg ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICBjYXNlICd0YWJsZSc6 Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2luZm8uc2NoZW1hLl9sYWJl bF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgndGFibGVzJywgW2QuX2xhYmVsXSk7Ci0g ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rp b24nOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1hcycsIFtpbmZvLnNjaGVtYS5f bGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ2Z1bmN0aW9ucycsIFtkLl9sYWJl bF0pOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgIGNhc2Ug J2luZGV4JzoKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3NjaGVtYXMnLCBbaW5mby5zY2hl bWEuX2xhYmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdpbmRleGVzJywgW2QuX2xh YmVsXSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgY2Fz ZSAndHJpZ2dlcic6Ci0gICAgICAgICAgICAgICAgICAgIG0uc2V0KCdzY2hlbWFzJywgW2luZm8u c2NoZW1hLl9sYWJlbF0pOwotICAgICAgICAgICAgICAgICAgICBtLnNldCgndHJpZ2dlcnMnLCBb ZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg ICBjYXNlICd0cmlnZ2VyX2Z1bmMnOgotICAgICAgICAgICAgICAgICAgICBtLnNldCgnc2NoZW1h cycsIFtpbmZvLnNjaGVtYS5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgbS5zZXQoJ3Ry aWdnZXJfZnVuY3MnLCBbZC5fbGFiZWxdKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgICAgIC8vIFRPRE86OgotICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSB3aWxsIGltcGxl bWVudCB0aGUgb2JqZWN0IHNlbGVjdGlvbiBpbiB0aGUKLSAgICAgICAgICAgICAgICAgIC8vIGlt cG9ydCBkaWFsb2csIHdlIHdpbGwgbmVlZCB0byBzZWxlY3QgdGhlIG9iamVjdHMgZnJvbQotICAg ICAgICAgICAgICAgICAgLy8gdGhlIHRyZWUgc2VsZWN0aW9uIHRhYi4KLSAgICAgICAgICAgICAg ICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICAgICAg ICBiYXNlVXJsID0gdXJsX2ZvcigncmVzdG9yZS5jcmVhdGVfam9iJywgewotICAgICAgICAgICAg ICAgICAgICAnc2lkJzogaW5mby5zZXJ2ZXIuX2lkLAotICAgICAgICAgICAgICAgICAgfSksCi0g ICAgICAgICAgICAgICAgICBhcmdzID0gdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwotCi0gICAg ICAgICAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwKLSAg ICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgZGF0YTog ewotICAgICAgICAgICAgICAgICAgICAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpLAotICAg ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJl cykgewotICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKLSAgICAgICAgICAg ICAgICAgICAgICBhbGVydGlmeS5zdWNjZXNzKAotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0 dGV4dCgnUmVzdG9yZSBqb2IgY3JlYXRlZC4nKSwgNQotICAgICAgICAgICAgICAgICAgICAgICk7 Ci0gICAgICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWlu LWJncHJvY2VzczpjcmVhdGVkJywgc2VsZik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHJlcyk7Ci0gICAgICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICBlcnJvcjog ZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOwotICAgICAg ICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAotICAgICAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgnUmVzdG9yZSBmYWlsZWQuJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnIu ZXJyb3Jtc2cKLSAgICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgICB9 IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGUuc3RhY2sg fHwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgIH0sCi0gICAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAg ICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAgIGFsZXJ0aWZ5LnBnX3Jlc3RvcmUo dGl0bGUsIGl0ZW0sIGRhdGEsIG5vZGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAlJyk7CisgICAgICBs ZXQgZGlhbG9nID0gbmV3IHJlc3RvcmVEaWFsb2cuUmVzdG9yZURpYWxvZyhwZ0Jyb3dzZXIsICQs IGFsZXJ0aWZ5LCBSZXN0b3JlT2JqZWN0TW9kZWwpOworICAgICAgZGlhbG9nLmRyYXcoYWN0aW9u LCB0cmVlSXRlbSk7CiAgICAgfSwKICAgfTsKICAgcmV0dXJuIHBnQnJvd3Nlci5SZXN0b3JlOwpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9k aWFsb2cuanMgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2Rp YWxvZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNDg4NGQ5MDEKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0 b3JlX2RpYWxvZy5qcwpAQCAtMCwwICsxLDU3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0g UG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5k ZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBnZXR0ZXh0IGZy b20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKK2ltcG9ydCB7c3ByaW50Zn0gZnJv bSAnc3ByaW50Zi1qcyc7CitpbXBvcnQgQmFja2Zvcm0gZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGlj L2pzL2JhY2tmb3JtLnBnYWRtaW4nOworaW1wb3J0IHtEaWFsb2d9IGZyb20gJy4uLy4uLy4uLy4u L3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2cnOworCitleHBvcnQgY2xhc3MgUmVzdG9yZURpYWxv ZyBleHRlbmRzIERpYWxvZyB7CisgIGNvbnN0cnVjdG9yKHBnQnJvd3NlciwgJCwgYWxlcnRpZnks IFJlc3RvcmVNb2RlbCwgYmFja2Zvcm0gPSBCYWNrZm9ybSkgeworICAgIHN1cGVyKCdSZXN0b3Jl IEVycm9yJywKKyAgICAgICc8ZGl2IGNsYXNzPVwncmVzdG9yZV9kaWFsb2dcJz48L2Rpdj4nLAor ICAgICAgcGdCcm93c2VyLCAkLCBhbGVydGlmeSwgUmVzdG9yZU1vZGVsLCBiYWNrZm9ybSk7Cisg IH0KKworICBkcmF3KGFjdGlvbiwgYWNpVHJlZUl0ZW0pIHsKKworICAgIGNvbnN0IHNlcnZlcklu Zm9ybWF0aW9uID0gdGhpcy5yZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlU2VydmVyKGFjaVRyZWVJdGVt KTsKKworICAgIGlmICghc2VydmVySW5mb3JtYXRpb24pIHsKKyAgICAgIHJldHVybjsKKyAgICB9 CisKKyAgICBpZiAoIXRoaXMuaGFzQmluYXJpZXNDb25maWd1cmF0aW9uKHNlcnZlckluZm9ybWF0 aW9uKSkgeworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghdGhpcy5jYW5FeGVjdXRl T25DdXJyZW50RGF0YWJhc2UoYWNpVHJlZUl0ZW0pKSB7CisgICAgICByZXR1cm47CisgICAgfQor CisgICAgbGV0IGFjaVRyZWVJdGVtMSA9IGFjaVRyZWVJdGVtIHx8IHRoaXMucGdCcm93c2VyLnRy ZWVNZW51LnNlbGVjdGVkKCk7CisgICAgbGV0IGl0ZW0gPSB0aGlzLnBnQnJvd3Nlci50cmVlTWVu dS5maW5kTm9kZUJ5RG9tRWxlbWVudChhY2lUcmVlSXRlbTEpOworICAgIGNvbnN0IGRhdGEgPSBp dGVtLmdldERhdGEoKTsKKyAgICBjb25zdCBub2RlID0gdGhpcy5wZ0Jyb3dzZXIuTm9kZXNbZGF0 YS5fdHlwZV07CisKKyAgICBpZiAoIW5vZGUpCisgICAgICByZXR1cm47CisKKyAgICBsZXQgdGl0 bGUgPSBzcHJpbnRmKGdldHRleHQoJ1Jlc3RvcmUgKCVzOiAlcyknKSwgbm9kZS5sYWJlbCwgZGF0 YS5sYWJlbCk7CisKKyAgICB0aGlzLmNyZWF0ZU9yR2V0RGlhbG9nKHRpdGxlLCAncmVzdG9yZScp OworCisgICAgdGhpcy5hbGVydGlmeS5wZ19yZXN0b3JlKHRpdGxlLCBhY2lUcmVlSXRlbTEsIGRh dGEsIG5vZGUpLnJlc2l6ZVRvKCc2NSUnLCAnNjAlJyk7CisgIH0KKworICBkaWFsb2dOYW1lKCkg eworICAgIHJldHVybiAncGdfcmVzdG9yZSc7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2dfd3JhcHBlci5qcyBi L3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvc3RhdGljL2pzL3Jlc3RvcmVfZGlhbG9nX3dyYXBw ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjg0NWRhN2EzCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS9zdGF0aWMvanMvcmVzdG9y ZV9kaWFsb2dfd3JhcHBlci5qcwpAQCAtMCwwICsxLDI1NSBAQAoraW1wb3J0IHtnZXRUcmVlTm9k ZUhpZXJhcmNoeUZyb21FbGVtZW50fSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvdHJlZS9w Z2FkbWluX3RyZWVfbm9kZSc7CitpbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MvaW5kZXgnOworaW1w b3J0IF8gZnJvbSAndW5kZXJzY29yZSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICcuLi8uLi8uLi8u Li9zdGF0aWMvanMvZ2V0dGV4dCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICcuLi8uLi8uLi8uLi9z dGF0aWMvanMvdXJsX2Zvcic7CitpbXBvcnQge0RpYWxvZ1dyYXBwZXJ9IGZyb20gJy4uLy4uLy4u Ly4uL3N0YXRpYy9qcy9hbGVydGlmeS9kaWFsb2dfd3JhcHBlcic7CisKK2V4cG9ydCBjbGFzcyBS ZXN0b3JlRGlhbG9nV3JhcHBlciBleHRlbmRzIERpYWxvZ1dyYXBwZXIgeworICBjb25zdHJ1Y3Rv cihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUsIHR5cGVPZkRpYWxvZywKKyAg ICAgICAgICAgICAganF1ZXJ5LCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkaWFsb2dNb2RlbCwgYmFj a2Zvcm0pIHsKKyAgICBzdXBlcihkaWFsb2dDb250YWluZXJTZWxlY3RvciwgZGlhbG9nVGl0bGUs IGpxdWVyeSwKKyAgICAgIHBnQnJvd3NlciwgYWxlcnRpZnksIGRpYWxvZ01vZGVsLCBiYWNrZm9y bSk7CisgIH0KKworICBtYWluKHRpdGxlLCBpdGVtLCBkYXRhLCBub2RlKSB7CisgICAgdGhpcy5z ZXQoJ3RpdGxlJywgdGl0bGUpOworICAgIHRoaXMuc2V0dGluZygncGdfbm9kZScsIG5vZGUpOwor ICAgIHRoaXMuc2V0dGluZygncGdfaXRlbScsIGl0ZW0pOworICAgIHRoaXMuc2V0dGluZygncGdf aXRlbV9kYXRhJywgZGF0YSk7CisgIH0KKworICBzZXR1cCgpIHsKKyAgICByZXR1cm4geworICAg ICAgYnV0dG9uczogW3sKKyAgICAgICAgdGV4dDogJycsCisgICAgICAgIGNsYXNzTmFtZTogJ2J0 biBidG4tZGVmYXVsdCBwdWxsLWxlZnQgZmEgZmEtbGcgZmEtaW5mbycsCisgICAgICAgIGF0dHJz OiB7CisgICAgICAgICAgbmFtZTogJ29iamVjdF9oZWxwJywKKyAgICAgICAgICB0eXBlOiAnYnV0 dG9uJywKKyAgICAgICAgICB1cmw6ICdiYWNrdXAuaHRtbCcsCisgICAgICAgICAgbGFiZWw6IGdl dHRleHQoJ1Jlc3RvcmUnKSwKKyAgICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAgICAgdGV4dDog JycsCisgICAgICAgIGtleTogMTEyLAorICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLWRlZmF1 bHQgcHVsbC1sZWZ0IGZhIGZhLWxnIGZhLXF1ZXN0aW9uJywKKyAgICAgICAgYXR0cnM6IHsKKyAg ICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAorICAgICAgICAgIHR5cGU6ICdidXR0b24nLAor ICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdSZXN0b3JlJyksCisgICAgICAgICAgdXJsOiB1cmxf Zm9yKCdoZWxwLnN0YXRpYycsIHsKKyAgICAgICAgICAgICdmaWxlbmFtZSc6ICdyZXN0b3JlX2Rp YWxvZy5odG1sJywKKyAgICAgICAgICB9KSwKKyAgICAgICAgfSwKKyAgICAgIH0sIHsKKyAgICAg ICAgdGV4dDogZ2V0dGV4dCgnUmVzdG9yZScpLAorICAgICAgICBrZXk6IDEzLAorICAgICAgICBj bGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtdXBsb2FkIHBnLWFsZXJ0aWZ5LWJ1dHRv bicsCisgICAgICAgIHJlc3RvcmU6IHRydWUsCisgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ3Jl c3RvcmUnLAorICAgICAgfSwgeworICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5jZWwnKSwKKyAg ICAgICAga2V5OiAyNywKKyAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1kYW5nZXIgZmEgZmEt bGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKKyAgICAgICAgcmVzdG9yZTogZmFsc2Us CisgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCisgICAgICB9XSwKKyAgICAgIC8v IFNldCBvcHRpb25zIGZvciBkaWFsb2cKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgdGl0bGU6 IHRoaXMuZGlhbG9nVGl0bGUsCisgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92 ZXJmbG93IGNvbnRyb2wuCisgICAgICAgIHBhZGRpbmc6ICExLAorICAgICAgICBvdmVyZmxvdzog ITEsCisgICAgICAgIG1vZGVsOiAwLAorICAgICAgICByZXNpemFibGU6IHRydWUsCisgICAgICAg IG1heGltaXphYmxlOiB0cnVlLAorICAgICAgICBwaW5uYWJsZTogZmFsc2UsCisgICAgICAgIGNs b3NhYmxlQnlEaW1tZXI6IGZhbHNlLAorICAgICAgICBtb2RhbDogZmFsc2UsCisgICAgICB9LAor ICAgIH07CisgIH0KKworICBwcmVwYXJlKCkgeworICAgIHRoaXMuZGlzYWJsZVJlc3RvcmVCdXR0 b24oKTsKKworICAgIGNvbnN0ICRjb250YWluZXIgPSB0aGlzLmpxdWVyeSh0aGlzLmRpYWxvZ0Nv bnRhaW5lclNlbGVjdG9yKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlID0gdGhpcy5nZXRT ZWxlY3RlZE5vZGUoKTsKKyAgICBjb25zdCBzZWxlY3RlZFRyZWVOb2RlRGF0YSA9IHRoaXMuZ2V0 U2VsZWN0ZWROb2RlRGF0YShzZWxlY3RlZFRyZWVOb2RlKTsKKyAgICBpZiAoIXNlbGVjdGVkVHJl ZU5vZGVEYXRhKSB7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3Qgbm9kZSA9IHRo aXMucGdCcm93c2VyLk5vZGVzW3NlbGVjdGVkVHJlZU5vZGVEYXRhLl90eXBlXTsKKworICAgIGNv bnN0IHRyZWVJbmZvID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tRWxlbWVudCh0aGlzLnBnQnJv d3Nlciwgc2VsZWN0ZWRUcmVlTm9kZSk7CisgICAgY29uc3QgZGlhbG9nID0gdGhpcy5jcmVhdGVE aWFsb2cobm9kZSwgdHJlZUluZm8sICRjb250YWluZXIpOworICAgIHRoaXMuYWRkQWxlcnRpZnlD bGFzc1RvUmVzdG9yZU5vZGVDaGlsZE5vZGVzKCk7CisgICAgZGlhbG9nLnJlbmRlcigpOworCisg ICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0KDApKTsK KworICAgIHRoaXMuZm9jdXNPbkRpYWxvZyhkaWFsb2cpOworICAgIHRoaXMuc2V0TGlzdGVuZXJz Rm9yRmlsZW5hbWVDaGFuZ2VzKCk7CisgIH0KKworICBjYWxsYmFjayhldmVudCkgeworICAgIGNv bnN0IHNlbGVjdGVkVHJlZU5vZGUgPSB0aGlzLmdldFNlbGVjdGVkTm9kZSgpOworICAgIGNvbnN0 IHNlbGVjdGVkVHJlZU5vZGVEYXRhID0gdGhpcy5nZXRTZWxlY3RlZE5vZGVEYXRhKHNlbGVjdGVk VHJlZU5vZGUpOworICAgIGNvbnN0IG5vZGUgPSBzZWxlY3RlZFRyZWVOb2RlRGF0YSAmJiB0aGlz LnBnQnJvd3Nlci5Ob2Rlc1tzZWxlY3RlZFRyZWVOb2RlRGF0YS5fdHlwZV07CisKKyAgICBpZiAo dGhpcy53YXNIZWxwQnV0dG9uUHJlc3NlZChldmVudCkpIHsKKyAgICAgIGV2ZW50LmNhbmNlbCA9 IHRydWU7CisgICAgICB0aGlzLnBnQnJvd3Nlci5zaG93SGVscCgKKyAgICAgICAgZXZlbnQuYnV0 dG9uLmVsZW1lbnQubmFtZSwKKyAgICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmli dXRlKCd1cmwnKSwKKyAgICAgICAgbm9kZSwKKyAgICAgICAgc2VsZWN0ZWRUcmVlTm9kZSwKKyAg ICAgICAgZXZlbnQuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCdsYWJlbCcpCisgICAgICAp OworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh0aGlzLndhc1Jlc3RvcmVCdXR0b25Q cmVzc2VkKGV2ZW50KSkgeworCisgICAgICBpZiAoIXNlbGVjdGVkVHJlZU5vZGVEYXRhKQorICAg ICAgICByZXR1cm47CisKKyAgICAgIGNvbnN0IHNlcnZlcklkZW50aWZpZXIgPSB0aGlzLnJldHJp ZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBzZWxlY3RlZFRyZWVOb2RlKTsKKworICAgICAgY29u c3QgZGlhbG9nV3JhcHBlciA9IHRoaXM7CisgICAgICBsZXQgdXJsU2hvcnRjdXQgPSAncmVzdG9y ZS5jcmVhdGVfam9iJzsKKworICAgICAgY29uc3QgYmFzZVVybCA9IHVybF9mb3IodXJsU2hvcnRj dXQsIHsKKyAgICAgICAgJ3NpZCc6IHNlcnZlcklkZW50aWZpZXIsCisgICAgICB9KTsKKworICAg ICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KAorICAg ICAgICB0aGlzLnBnQnJvd3NlciwKKyAgICAgICAgc2VsZWN0ZWRUcmVlTm9kZQorICAgICAgKTsK KworICAgICAgdGhpcy5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUlu Zm8pOworCisgICAgICBsZXQgc2VydmljZSA9IGF4aW9zLmNyZWF0ZSh7fSk7CisgICAgICBzZXJ2 aWNlLnBvc3QoCisgICAgICAgIGJhc2VVcmwsCisgICAgICAgIHRoaXMudmlldy5tb2RlbC50b0pT T04oKQorICAgICAgKS50aGVuKGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZGlhbG9nV3JhcHBlci5h bGVydGlmeS5zdWNjZXNzKGdldHRleHQoJ1Jlc3RvcmUgam9iIGNyZWF0ZWQuJyksIDUpOworICAg ICAgICBkaWFsb2dXcmFwcGVyLnBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1pbi1iZ3By b2Nlc3M6Y3JlYXRlZCcsIGRpYWxvZ1dyYXBwZXIpOworICAgICAgfSkuY2F0Y2goZnVuY3Rpb24g KGVycm9yKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgY29uc3QgZXJyID0gZXJyb3IucmVz cG9uc2UuZGF0YTsKKyAgICAgICAgICBkaWFsb2dXcmFwcGVyLmFsZXJ0aWZ5LmFsZXJ0KAorICAg ICAgICAgICAgZ2V0dGV4dCgnUmVzdG9yZSBqb2IgZmFpbGVkLicpLAorICAgICAgICAgICAgZXJy LmVycm9ybXNnCisgICAgICAgICAgKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg IGNvbnNvbGUud2FybihlLnN0YWNrIHx8IGUpOworICAgICAgICB9CisgICAgICB9KTsKKyAgICB9 CisgIH0KKworICBhZGRBbGVydGlmeUNsYXNzVG9SZXN0b3JlTm9kZUNoaWxkTm9kZXMoKSB7Cisg ICAgdGhpcy5qcXVlcnkodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNz KAorICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVz JworICAgICk7CisgIH0KKworICBnZXRTZWxlY3RlZE5vZGUoKSB7CisgICAgY29uc3QgdHJlZSA9 IHRoaXMucGdCcm93c2VyLnRyZWVNZW51OworICAgIGNvbnN0IHNlbGVjdGVkTm9kZSA9IHRyZWUu c2VsZWN0ZWQoKTsKKyAgICBpZiAoc2VsZWN0ZWROb2RlKSB7CisgICAgICByZXR1cm4gdHJlZS5m aW5kTm9kZUJ5RG9tRWxlbWVudChzZWxlY3RlZE5vZGUpOworICAgIH0gZWxzZSB7CisgICAgICBy ZXR1cm4gdW5kZWZpbmVkOworICAgIH0KKyAgfQorCisgIGRpc2FibGVSZXN0b3JlQnV0dG9uKCkg eworICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVl OworICB9CisKKyAgZW5hYmxlUmVzdG9yZUJ1dHRvbigpIHsKKyAgICB0aGlzLl9faW50ZXJuYWwu YnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7CisgIH0KKworICBjcmVhdGVEaWFs b2cobm9kZSwgdHJlZUluZm8sICRjb250YWluZXIpIHsKKyAgICBjb25zdCBuZXdNb2RlbCA9IG5l dyB0aGlzLmRpYWxvZ01vZGVsKHsKKyAgICAgIG5vZGVfZGF0YTogbm9kZSwKKyAgICB9LCB7Cisg ICAgICBub2RlX2luZm86IHRyZWVJbmZvLAorICAgIH0pOworICAgIGNvbnN0IGZpZWxkcyA9IHRo aXMuYmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorICAgICAgdHJlZUluZm8sIG5ld01vZGVs LCAnY3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCisgICAgKTsKKworICAgIHJl dHVybiB0aGlzLnZpZXcgPSBuZXcgdGhpcy5iYWNrZm9ybS5EaWFsb2coeworICAgICAgZWw6ICRj b250YWluZXIsCisgICAgICBtb2RlbDogbmV3TW9kZWwsCisgICAgICBzY2hlbWE6IGZpZWxkcywK KyAgICB9KTsKKyAgfQorCisgIHJldHJpZXZlU2VydmVySWRlbnRpZmllcihub2RlLCBzZWxlY3Rl ZFRyZWVOb2RlKSB7CisgICAgY29uc3QgdHJlZUluZm8gPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZy b21FbGVtZW50KAorICAgICAgdGhpcy5wZ0Jyb3dzZXIsCisgICAgICBzZWxlY3RlZFRyZWVOb2Rl CisgICAgKTsKKyAgICByZXR1cm4gdHJlZUluZm8uc2VydmVyLl9pZDsKKyAgfQorCisgIHNldExp c3RlbmVyc0ZvckZpbGVuYW1lQ2hhbmdlcygpIHsKKyAgICBjb25zdCBzZWxmID0gdGhpczsKKwor ICAgIHRoaXMudmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgeworICAgICAgaWYg KCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09 ICcnKSB7CisgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAgICBzZWxmLmVu YWJsZVJlc3RvcmVCdXR0b24oKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNlbGYuZGlzYWJs ZVJlc3RvcmVCdXR0b24oKTsKKyAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZmlsZScsIGdl dHRleHQoJ1BsZWFzZSBwcm92aWRlIGEgZmlsZW5hbWUnKSk7CisgICAgICB9CisgICAgfSk7Cisg IH0KKworICBzZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pIHsK KyAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdkYXRhYmFzZScsIHRyZWVJbmZvLmRhdGFiYXNlLl9s YWJlbCk7CisgICAgaWYgKCF0aGlzLnZpZXcubW9kZWwuZ2V0KCdjdXN0b20nKSkgeworICAgICAg Y29uc3Qgbm9kZURhdGEgPSBzZWxlY3RlZFRyZWVOb2RlLmdldERhdGEoKTsKKworICAgICAgc3dp dGNoIChub2RlRGF0YS5fdHlwZSkgeworICAgICAgY2FzZSAnc2NoZW1hJzoKKyAgICAgICAgdGhp cy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAg YnJlYWs7CisgICAgICBjYXNlICd0YWJsZSc6CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQo J3NjaGVtYXMnLCBbdHJlZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlzLnZpZXcu bW9kZWwuc2V0KCd0YWJsZXMnLCBbbm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJyZWFrOwor ICAgICAgY2FzZSAnZnVuY3Rpb24nOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hl bWFzJywgW3RyZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVs LnNldCgnZnVuY3Rpb25zJywgW25vZGVEYXRhLl9sYWJlbF0pOworICAgICAgICBicmVhazsKKyAg ICAgIGNhc2UgJ2luZGV4JzoKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnc2NoZW1hcycs IFt0cmVlSW5mby5zY2hlbWEuX2xhYmVsXSk7CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQo J2luZGV4ZXMnLCBbbm9kZURhdGEuX2xhYmVsXSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2Fz ZSAndHJpZ2dlcic6CisgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYXMnLCBbdHJl ZUluZm8uc2NoZW1hLl9sYWJlbF0pOworICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCd0cmln Z2VycycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlICd0 cmlnZ2VyX2Z1bmMnOgorICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdzY2hlbWFzJywgW3Ry ZWVJbmZvLnNjaGVtYS5fbGFiZWxdKTsKKyAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCgndHJp Z2dlcl9mdW5jcycsIFtub2RlRGF0YS5fbGFiZWxdKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9 CisgICAgfQorICB9CisKKyAgd2FzUmVzdG9yZUJ1dHRvblByZXNzZWQoZXZlbnQpIHsKKyAgICBy ZXR1cm4gZXZlbnQuYnV0dG9uWydkYXRhLWJ0bi1uYW1lJ10gPT09ICdyZXN0b3JlJzsKKyAgfQor fQpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3VwX2Rp YWxvZ19zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi4yNjU1MDU5 ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvYmFja3VwL2Jh Y2t1cF9kaWFsb2dfc3BlYy5qcwpAQCAtMCwwICsxLDIwNSBAQAorLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4 LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHtCYWNr dXBEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9i YWNrdXBfZGlhbG9nJzsKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtl JzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnQmFja3VwRGlhbG9n JywgKCkgPT4geworICBsZXQgYmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQg anF1ZXJ5U3B5OworICBsZXQgYWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNweTsKKwor ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICBwZ0Jyb3dzZXIgPSB7CisgICAgICB0cmVlTWVudTog bmV3IFRyZWVGYWtlKCksCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2ZXI6IHsKKyAgICAg ICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDogJ3NlcnZlcicsCisgICAgICAgICAg Z2V0VHJlZU5vZGVIaWVyYXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdzZXJ2ZXIuZ2V0VHJlZU5v ZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgICAgZGF0YWJhc2U6IHsKKyAgICAgICAg ICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBsYWJlbDogJ2RhdGFiYXNlJywKKyAgICAgICAgICBn ZXRUcmVlTm9kZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2RiLmdldFRyZWVOb2RlSGll cmFyY2h5JyksCisgICAgICAgIH0sCisgICAgICAgIHNjaGVtYTogeworICAgICAgICAgIGhhc0lk OiB0cnVlLAorICAgICAgICAgIGxhYmVsOiAnc2NoZW1hJywKKyAgICAgICAgICBnZXRUcmVlTm9k ZUhpZXJhcmNoeTogamFzbWluZS5jcmVhdGVTcHkoJ2RiLmdldFRyZWVOb2RlSGllcmFyY2h5Jyks CisgICAgICAgIH0sCisgICAgICB9LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVzLnNlcnZl ci5oYXNJZCA9IHRydWU7CisgICAgcGdCcm93c2VyLk5vZGVzLmRhdGFiYXNlLmhhc0lkID0gdHJ1 ZTsKKyAgICBqcXVlcnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnanF1ZXJ5U3B5Jyk7CisgICAg YmFja3VwTW9kZWxTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweSgnYmFja3VwTW9kZWxTcHknKTsKKwor ICAgIGNvbnN0IGhpZXJhcmNoeSA9IHsKKyAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgIHsKKyAg ICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgICAgICB7 CisgICAgICAgICAgICAgIGlkOiAnc2VydmVyVHJlZU5vZGUnLAorICAgICAgICAgICAgICBkYXRh OiB7CisgICAgICAgICAgICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgICAgICBfdHlwZTogJ3Nl cnZlcicsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAg ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgaWQ6ICdzb21lX2RhdGFiYXNlJywKKyAg ICAgICAgICAgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICAgICAgICAgICAgX3R5cGU6ICdkYXRh YmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9pZDogMTEsCisgICAgICAgICAgICAgICAgICAg IGxhYmVsOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICAgIF9sYWJlbDogJ3Nv bWVfZGF0YWJhc2VfbGFiZWwnLAorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg ICB9LCB7CisgICAgICAgICAgICAgICAgICBpZDogJ2RhdGFiYXNlX3dpdGhfZXF1YWxfaW5fbmFt ZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgICAgIF90eXBl OiAnZGF0YWJhc2UnLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWVfZGF0YWJhc2Un LAorICAgICAgICAgICAgICAgICAgICBfbGFiZWw6ICc9c29tZV9kYXRhYmFzZV9sYWJlbCcsCisg ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIF0s CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICBpZDogJ3BwYXNT ZXJ2ZXInLAorICAgICAgICAgICAgICBkYXRhOiB7CisgICAgICAgICAgICAgICAgX3R5cGU6ICdz ZXJ2ZXInLAorICAgICAgICAgICAgICAgIHNlcnZlcl90eXBlOiAncHBhcycsCisgICAgICAgICAg ICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgICAgICAgIHtpZDogJ3NvbWVOb2RlVW5kZXJu ZWF0aFBQQVNTZXJ2ZXInfSwKKyAgICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgfSwKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAgXSwKKyAgICB9 OworCisgICAgcGdCcm93c2VyLnRyZWVNZW51ID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsK KyAgfSk7CisKKyAgZGVzY3JpYmUoJyNkcmF3JywgKCkgPT4geworICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgYWxlcnRpZnlTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnkn LCBbJ2FsZXJ0JywgJ2RpYWxvZyddKTsKKyAgICAgIGFsZXJ0aWZ5U3B5WydiYWNrdXBfb2JqZWN0 cyddID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cF9vYmplY3RzJyk7CisgICAgICBiYWNrdXBE aWFsb2cgPSBuZXcgQmFja3VwRGlhbG9nKAorICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgIGpx dWVyeVNweSwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGJhY2t1cE1vZGVsU3B5Cisg ICAgICApOworCisgICAgICBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UgPSBqYXNtaW5lLmNyZWF0 ZVNweSgnZ2V0X3ByZWZlcmVuY2VzJyk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVyZSBh cmUgbm8gYW5jZXN0b3JzIG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdk b2VzIG5vdCBjcmVhdGUgYSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50cmVl TWVudS5zZWxlY3ROb2RlKFt7aWQ6ICdyb290J31dKTsKKyAgICAgICAgYmFja3VwRGlhbG9nLmRy YXcobnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsnYmFja3Vw X29iamVjdHMnXSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBp dCgnZGlzcGxheSBhbiBhbGVydCB3aXRoIGEgQmFja3VwIEVycm9yJywgKCkgPT4geworICAgICAg ICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncm9vdCd9XSwgbnVsbCk7CisgICAgICAg IGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAg ICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNo aWxkIG5vZGUgZnJvbSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAgIH0pOwor ICAgIH0pOworCisgICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHR5cGUg c2VydmVyJywgKCkgPT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4gYmUgZm91 bmQnLCAoKSA9PiB7CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHBnQnJv d3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAgICAgICAg fSk7CisKKyAgICAgICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7 CisgICAgICAgICAgaXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgp ID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzb21lX2Rh dGFiYXNlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCku dG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdCYWNrdXAgRXJyb3InLAorICAg ICAgICAgICAgICAnRmFpbGVkIHRvIGxvYWQgcHJlZmVyZW5jZSBwZ19iaW5fZGlyIG9mIG1vZHVs ZSBwYXRocycKKyAgICAgICAgICAgICk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg ICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAg ICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJCYWNrdXAgRXJyb3IiJywgKCkgPT4g eworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3BwYXNTZXJ2ZXIn fV0sIG51bGwpOworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAg ICAgICdGYWlsZWQgdG8gbG9hZCBwcmVmZXJlbmNlIHBwYXNfYmluX2RpciBvZiBtb2R1bGUgcGF0 aHMnCisgICAgICAgICAgICApOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0p OworCisgICAgICBjb250ZXh0KCdwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+IHsKKyAg ICAgICAgY29udGV4dCgnYmluYXJ5IGZvbGRlciBpcyBub3QgY29uZmlndXJlZCcsICgpID0+IHsK KyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nlci5nZXRf cHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe30pOworICAgICAgICAgIH0pOworCisgICAgICAg ICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAg ICBpdCgnZGlzcGxheSBhbiBhbGVydCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgp ID0+IHsKKyAgICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3NlcnZl clRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFs ZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlv biByZXF1aXJlZCcsCisgICAgICAgICAgICAgICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3Rn cmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAg ICAgICk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRl eHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0 KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4g eworICAgICAgICAgICAgICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncHBhc1NlcnZl cid9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWly ZWQnLAorICAgICAgICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQg U2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAg ICAgICApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisg ICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xkZXIgaXMgY29uZmlndXJlZCcsICgpID0+IHsKKyAg ICAgICAgICBsZXQgYmFja3VwRGlhbG9nUmVzaXplVG9TcHk7CisgICAgICAgICAgYmVmb3JlRWFj aCgoKSA9PiB7CisgICAgICAgICAgICBiYWNrdXBEaWFsb2dSZXNpemVUb1NweSA9IGphc21pbmUu Y3JlYXRlU3B5T2JqKCdiYWNrdXBEaWFsb2dSZXNpemVUb1NweScsIFsncmVzaXplVG8nXSk7Cisg ICAgICAgICAgICBhbGVydGlmeVNweVsnYmFja3VwX29iamVjdHMnXS5hbmQKKyAgICAgICAgICAg ICAgLnJldHVyblZhbHVlKGJhY2t1cERpYWxvZ1Jlc2l6ZVRvU3B5KTsKKyAgICAgICAgICAgIHBn QnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe3ZhbHVlOiAnL3NvbWUvcGF0 aCd9KTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGl0KCdkaXNwbGF5cyB0aGUgZGlhbG9n JywgKCkgPT4geworICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ3Nl cnZlclRyZWVOb2RlJ31dLCBudWxsKTsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsn YmFja3VwX29iamVjdHMnXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAgICAg ICBleHBlY3QoYmFja3VwRGlhbG9nUmVzaXplVG9TcHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKCc2MCUnLCAnNTAlJyk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0 KCdkYXRhYmFzZSBsYWJlbCBjb250YWluICI9IicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdz aG91bGQgY3JlYXRlIGFsZXJ0IGRpYWxvZyB3aXRoIGJhY2t1cCBlcnJvcicsICgpID0+IHsKKyAg ICAgICAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgW3tpZDogJ2RhdGFiYXNlX3dpdGhf ZXF1YWxfaW5fbmFtZSd9XSwgbnVsbCk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNw eS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAg ICAgICAgJ0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBpbiB0aGUgbmFtZSBjYW5ub3QgYmUgYmFj a2VkIHVwIG9yIHJlc3RvcmVkIHVzaW5nIHRoaXMgdXRpbGl0eS4nKTsKKyAgICAgICAgICAgIH0p OworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsK K30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvYmFja3Vw X2RpYWxvZ193cmFwcGVyX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1 cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMC4uNTg3MDUzMTgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2JhY2t1cC9iYWNrdXBfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcwpAQCAtMCwwICsx LDY3NSBAQAoraW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1w b3J0IHtCYWNrdXBEaWFsb2dXcmFwcGVyfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2Jh Y2t1cC9zdGF0aWMvanMvYmFja3VwX2RpYWxvZ193cmFwcGVyJzsKK2ltcG9ydCBheGlvcyBmcm9t ICdheGlvcy9pbmRleCc7CitpbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3MtbW9jay1hZGFw dGVyJzsKK2ltcG9ydCB7RmFrZU1vZGVsfSBmcm9tICcuLi9mYWtlX21vZGVsJzsKK2ltcG9ydCB7 VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisK K2xldCBjb250ZXh0ID0gZGVzY3JpYmU7CisKK2Rlc2NyaWJlKCdCYWNrdXBEaWFsb2dXcmFwcGVy JywgKCkgPT4geworICBsZXQganF1ZXJ5U3B5OworICBsZXQgcGdCcm93c2VyOworICBsZXQgYWxl cnRpZnlTcHk7CisgIGxldCBkaWFsb2dNb2RlbEtsYXNzU3B5OworICBsZXQgYmFja2Zvcm07Cisg IGxldCBnZW5lcmF0ZWRCYWNrdXBNb2RlbDsKKyAgbGV0IGJhY2t1cERpYWxvZ1dyYXBwZXI7Cisg IGxldCBub0RhdGFOb2RlOworICBsZXQgc2VydmVyVHJlZU5vZGU7CisgIGxldCBkYXRhYmFzZVRy ZWVOb2RlOworICBsZXQgdmlld1NjaGVtYTsKKyAgbGV0IGJhY2t1cEpRdWVyeUNvbnRhaW5lclNw eTsKKyAgbGV0IGJhY2t1cE5vZGVDaGlsZE5vZGVTcHk7CisgIGxldCBiYWNrdXBOb2RlOworCisg IGJlZm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBu ZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogeworICAgICAg ICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgIGdldFRyZWVOb2RlSGllcmFyY2h5OiBqYXNtaW5l LmNyZWF0ZVNweSgnZ2V0VHJlZU5vZGVIaWVyYXJjaHknKSwKKyAgICAgICAgfSwKKyAgICAgICAg ZGF0YWJhc2U6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgIH0s CisgICAgICBrZXlib2FyZE5hdmlnYXRpb246IGphc21pbmUuY3JlYXRlU3B5T2JqKCdrZXlib2Fy ZE5hdmlnYXRpb24nLCBbJ2dldERpYWxvZ1RhYk5hdmlnYXRvciddKSwKKyAgICB9OworICAgIG5v RGF0YU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwxLjEnLCB1bmRl ZmluZWQsIFt7aWQ6ICdsZXZlbDEnfV0pOworICAgIHNlcnZlclRyZWVOb2RlID0gcGdCcm93c2Vy LnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMi4xJywgeworICAgICAgX3R5cGU6ICdzZXJ2ZXIn LAorICAgICAgX2lkOiAxMCwKKyAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICB9 LCBbe2lkOiAnbGV2ZWwyLjEnfV0pOworICAgIGRhdGFiYXNlVHJlZU5vZGUgPSBuZXcgVHJlZU5v ZGUoJ2RhdGFiYXNlLXRyZWUtbm9kZScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAg ICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgfSwgW3tpZDogJ2RhdGFiYXNl LXRyZWUtbm9kZSd9XSk7CisgICAgcGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKHNlcnZlclRy ZWVOb2RlLCBkYXRhYmFzZVRyZWVOb2RlKTsKKworICAgIGpxdWVyeVNweSA9IGphc21pbmUuY3Jl YXRlU3B5KCdqcXVlcnlTcHknKTsKKyAgICBiYWNrdXBOb2RlID0geworICAgICAgX19pbnRlcm5h bDogeworICAgICAgICBidXR0b25zOiBbe30sIHt9LCB7CisgICAgICAgICAgZWxlbWVudDogewor ICAgICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAgICAgIH0sCisgICAgICAgIH1dLAor ICAgICAgfSwKKyAgICAgIGVsZW1lbnRzOiB7CisgICAgICAgIGJvZHk6IHsKKyAgICAgICAgICBj aGlsZE5vZGVzOiBbCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICBdLAorICAgICAgICB9LAor ICAgICAgICBjb250ZW50OiBqYXNtaW5lLmNyZWF0ZVNweU9iaignY29udGVudCcsIFsnYXBwZW5k Q2hpbGQnLCAnYXR0ciddKSwKKyAgICAgIH0sCisgICAgfTsKKworICAgIGJhY2t1cEpRdWVyeUNv bnRhaW5lclNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrdXBKUXVlcnlDb250YWluZXIn LCBbJ2dldCcsICdhdHRyJ10pOworICAgIGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweS5nZXQuYW5k LnJldHVyblZhbHVlKGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweSk7CisKKyAgICBnZW5lcmF0ZWRC YWNrdXBNb2RlbCA9IHt9OworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkgPSBqYXNtaW5lLmNyZWF0 ZVNweSgnZGlhbG9nTW9kZWxLbGFzcycpOworICAgIGRpYWxvZ01vZGVsS2xhc3NTcHkuYW5kLnJl dHVyblZhbHVlKGdlbmVyYXRlZEJhY2t1cE1vZGVsKTsKKworICAgIHZpZXdTY2hlbWEgPSB7fTsK KyAgICBiYWNrZm9ybSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdiYWNrZm9ybScsIFsnZ2VuZXJh dGVWaWV3U2NoZW1hJywgJ0RpYWxvZyddKTsKKyAgICBiYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hl bWEuYW5kLnJldHVyblZhbHVlKHZpZXdTY2hlbWEpOworCisgICAgYmFja3VwTm9kZUNoaWxkTm9k ZVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdzb21ldGhpbmcnLCBbJ2FkZENsYXNzJ10pOwor ICAgIGpxdWVyeVNweS5hbmQuY2FsbEZha2UoKHNlbGVjdG9yKSA9PiB7CisgICAgICBpZiAoc2Vs ZWN0b3IgPT09ICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxvZ1wnPjwvZGl2PicpIHsKKyAgICAg ICAgcmV0dXJuIGJhY2t1cEpRdWVyeUNvbnRhaW5lclNweTsKKyAgICAgIH0gZWxzZSBpZiAoc2Vs ZWN0b3IgPT09IGJhY2t1cE5vZGUuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKSB7CisgICAg ICAgIHJldHVybiBiYWNrdXBOb2RlQ2hpbGROb2RlU3B5OworICAgICAgfQorICAgIH0pOworCisg IH0pOworCisgIGRlc2NyaWJlKCcjcHJlcGFyZScsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5 JywgWydhbGVydCcsICdkaWFsb2cnXSk7CisgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyID0gbmV3 IEJhY2t1cERpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNsYXNzPVwnYmFja3VwX2RpYWxv Z1wnPjwvZGl2PicsCisgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAgICdiYWNr dXAnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBnQnJvd3NlciwKKyAgICAgICAgYWxl cnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAgICAgIGJhY2tmb3Jt CisgICAgICApOworICAgICAgYmFja3VwRGlhbG9nV3JhcHBlciA9IE9iamVjdC5hc3NpZ24oYmFj a3VwRGlhbG9nV3JhcHBlciwgYmFja3VwTm9kZSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdu byB0cmVlIGVsZW1lbnQgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3Qg Y3JlYXRlIGEgYmFja2Zvcm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dX cmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRv SGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1 dHRvbiAic3VibWl0IGJ1dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+ IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVj dChiYWNrdXBEaWFsb2dXcmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2Fi bGVkKS50b0JlKHRydWUpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdzZWxl Y3RlZCB0cmVlIG5vZGUgaGFzIG5vIGRhdGEnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9kZS5k b21Ob2RlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgYmFja2Zv cm0gZGlhbG9nJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUo KTsKKyAgICAgICAgZXhwZWN0KGJhY2tmb3JtLkRpYWxvZykubm90LnRvSGF2ZUJlZW5DYWxsZWQo KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzYWJsZXMgdGhlIGJ1dHRvbiAic3VibWl0IGJ1 dHRvbiIgdW50aWwgYSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAgYmFj a3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBEaWFsb2dX cmFwcGVyLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkKS50b0JlKHRydWUp OworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0cmVlIGVsZW1lbnQgaXMgc2Vs ZWN0ZWQnLCAoKSA9PiB7CisgICAgICBsZXQgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uOworICAg ICAgbGV0IGRpYWxvZ1NweTsKKworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHRy ZWVIaWVyYXJjaHlJbmZvcm1hdGlvbiA9IHsKKyAgICAgICAgICBzZXJ2ZXI6IHsKKyAgICAgICAg ICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAgICBw cmlvcml0eTogMCwKKyAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVlLWxhYmVsJywKKyAgICAg ICAgICB9LAorICAgICAgICB9OworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9k ZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2 ZXInXS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hbmQKKyAgICAgICAgICAucmV0dXJuVmFsdWUodHJl ZUhpZXJhcmNoeUluZm9ybWF0aW9uKTsKKyAgICAgICAgZGlhbG9nU3B5ID0gamFzbWluZS5jcmVh dGVTcHlPYmooJ25ld1ZpZXcnLCBbJ3JlbmRlciddKTsKKyAgICAgICAgZGlhbG9nU3B5LiRlbCA9 IGphc21pbmUuY3JlYXRlU3B5T2JqKCckZWwnLCBbJ2ZpbmQnLCAnYXR0ciddKTsKKyAgICAgICAg ZGlhbG9nU3B5Lm1vZGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ21vZGVsJywgWydvbiddKTsK KyAgICAgICAgZGlhbG9nU3B5LiRlbC5maW5kLmFuZC5yZXR1cm5WYWx1ZShbXSk7CisKKyAgICAg ICAgYmFja2Zvcm0uRGlhbG9nLmFuZC5yZXR1cm5WYWx1ZShkaWFsb2dTcHkpOworICAgICAgfSk7 CisKKyAgICAgIGl0KCdjcmVhdGVzIGEgYmFja2Zvcm0gZGlhbG9nIGFuZCBkaXNwbGF5cyBpdCcs ICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAg IGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHsKKyAgICAgICAg ICBlbDogYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5LAorICAgICAgICAgIG1vZGVsOiBnZW5lcmF0 ZWRCYWNrdXBNb2RlbCwKKyAgICAgICAgICBzY2hlbWE6IHZpZXdTY2hlbWEsCisgICAgICAgIH0p OworCisgICAgICAgIGV4cGVjdChkaWFsb2dTcHkucmVuZGVyKS50b0hhdmVCZWVuQ2FsbGVkKCk7 CisgICAgICB9KTsKKworCisgICAgICBpdCgnYWRkIGFsZXJ0aWZ5IGNsYXNzZXMgdG8gcmVzdG9y ZSBub2RlIGNoaWxkbm9kZScsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5w cmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrdXBOb2RlQ2hpbGROb2RlU3B5LmFkZENsYXNz KQorICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnYWxlcnRpZnlfdG9vbHNfZGlhbG9n X3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlz YWJsZXMgdGhlIGJ1dHRvbiBzdWJtaXQgYnV0dG9uIHVudGlsIGEgZmlsZW5hbWUgaXMgc2VsZWN0 ZWQnLCAoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAg ICAgICBleHBlY3QoYmFja3VwTm9kZS5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNh YmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZ2VuZXJhdGVzIGEgbmV3 IGJhY2t1cCBtb2RlbCcsICgpID0+IHsKKyAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5wcmVw YXJlKCk7CisgICAgICAgIGV4cGVjdChkaWFsb2dNb2RlbEtsYXNzU3B5KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgKKyAgICAgICAgICB7dHlwZTogJ2JhY2t1cCd9LAorICAgICAgICAgIHtub2RlX2lu Zm86IHRyZWVIaWVyYXJjaHlJbmZvcm1hdGlvbn0KKyAgICAgICAgKTsKKyAgICAgIH0pOworCisg ICAgICBpdCgnYWRkIHRoZSBuZXcgZGlhbG9nIHRvIHRoZSBiYWNrdXAgbm9kZSBIVE1MJywgKCkg PT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhw ZWN0KGJhY2t1cE5vZGUuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGlsZCkudG9IYXZlQmVlbkNh bGxlZFdpdGgoYmFja3VwSlF1ZXJ5Q29udGFpbmVyU3B5KTsKKyAgICAgIH0pOworICAgIH0pOwor ICB9KTsKKworICBkZXNjcmliZSgnb25CdXR0b25DbGlja2VkJywgKCkgPT4geworICAgIGxldCBu ZXR3b3JrTW9jazsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrID0g bmV3IE1vY2tBZGFwdGVyKGF4aW9zKTsKKyAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBuZXcg QmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdiYWNrdXBfZGlhbG9n XCc+PC9kaXY+JywKKyAgICAgICAgJ2JhY2t1cERpYWxvZ1RpdGxlJywKKyAgICAgICAgJ2JhY2t1 cCcsCisgICAgICAgIGpxdWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVy dGlmeVNweSwKKyAgICAgICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0K KyAgICAgICk7CisKKyAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBPYmplY3QuYXNzaWduKGJh Y2t1cERpYWxvZ1dyYXBwZXIsIGJhY2t1cE5vZGUpOworICAgIH0pOworCisgICAgYWZ0ZXJFYWNo KCgpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLnJlc3RvcmUoKTsKKyAgICB9KTsKKworICAgIGNv bnRleHQoJ2RpYWxvZyBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAgICAgIGxl dCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5ldHdv cmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVwbHko KCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVy biBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2Vs ZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLnNob3dI ZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAgICAgICAgY29uc3QgZXZl bnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50OiB7CisgICAg ICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgICAgIGdldEF0dHJpYnV0 ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFt ZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwn OworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2xhYmVsJykg eworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisgICAg ICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAg ICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9PiB7Cisg ICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAor ICAgICAgICAgICdkaWFsb2dfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywKKyAg ICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZlclRyZWVO b2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7CisKKyAg ICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICBleHBl Y3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAg IGNvbnRleHQoJ29iamVjdCBoZWxwIGJ1dHRvbiB3YXMgcHJlc3NlZCcsICgpID0+IHsKKyAgICAg IGxldCBuZXR3b3JrQ2FsbGVkOworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIG5l dHdvcmtDYWxsZWQgPSBmYWxzZTsKKyAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVw bHkoKCkgPT4geworICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJl dHVybiBbMjAwLCB7fV07CisgICAgICAgIH0pOworICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUu c2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsKKyAgICAgICAgcGdCcm93c2VyLnNo b3dIZWxwID0gamFzbWluZS5jcmVhdGVTcHkoJ3Nob3dIZWxwJyk7CisKKyAgICAgICAgY29uc3Qg ZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICBlbGVtZW50OiB7Cisg ICAgICAgICAgICAgIG5hbWU6ICdvYmplY3RfaGVscCcsCisgICAgICAgICAgICAgIGdldEF0dHJp YnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRl TmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1 cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ2xhYmVs JykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdzb21lIGxhYmVsJzsKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH0sCisg ICAgICAgIH07CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOwor ICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5cyBoZWxwIGZvciBkaWFsb2cnLCAoKSA9PiB7 CisgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuc2hvd0hlbHApLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICdvYmplY3RfaGVscCcsCisgICAgICAgICAgJ2h0dHA6Ly9zb21ldXJsJywK KyAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddLAorICAgICAgICAgIHNlcnZlclRy ZWVOb2RlLAorICAgICAgICAgICdzb21lIGxhYmVsJworICAgICAgICApOworICAgICAgfSk7CisK KyAgICAgIGl0KCdkb2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICBl eHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICB9KTsKKyAgICB9KTsKKwor ICAgIGNvbnRleHQoJ2JhY2t1cCBidXR0b24gd2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBj b250ZXh0KCdubyB0cmVlIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgICAgIGl0KCdk b2VzIG5vdCBzdGFydCB0aGUgYmFja3VwJywgKCkgPT4geworICAgICAgICAgIGxldCBuZXR3b3Jr Q2FsbGVkID0gZmFsc2U7CisgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVwbHko KCkgPT4geworICAgICAgICAgICAgbmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICBy ZXR1cm4gWzIwMCwge31dOworICAgICAgICAgIH0pOworCisgICAgICAgICAgbGV0IGV2ZW50ID0g eworICAgICAgICAgICAgYnV0dG9uOiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzog J2JhY2t1cCcsCisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRB dHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1 cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9 LAorICAgICAgICAgIH07CisKKyAgICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNr KGV2ZW50KTsKKyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7Cisg ICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBoYXMgbm8g ZGF0YScsICgpID0+IHsKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBiYWNrdXAnLCAo KSA9PiB7CisgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUobm9EYXRhTm9k ZS5kb21Ob2RlKTsKKworICAgICAgICAgIGxldCBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAg ICAgICAgbmV0d29ya01vY2sub25BbnkoLy4qLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAg bmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgICByZXR1cm4gWzIwMCwge31dOworICAg ICAgICAgIH0pOworCisgICAgICAgICAgbGV0IGV2ZW50ID0geworICAgICAgICAgICAgYnV0dG9u OiB7CisgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisgICAgICAgICAg ICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAg ICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgIH07CisKKyAg ICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICBl eHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7 CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBoYXMgZGF0YScsICgpID0+IHsKKyAgICAgICAg Y29udGV4dCgnd2hlbiBkaWFsb2cgdHlwZSBpcyBnbG9iYWwnLCAoKSA9PiB7CisgICAgICAgICAg bGV0IGV2ZW50OworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgcGdC cm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoc2VydmVyVHJlZU5vZGUuZG9tTm9kZSk7CisKKyAg ICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICAgICAgbW9k ZWw6IG5ldyBGYWtlTW9kZWwoKSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIGV2ZW50 ID0geworICAgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAgICAnZGF0YS1idG4t bmFtZSc6ICdiYWNrdXAnLAorICAgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAg ICAgICAgIGdldEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAgICAgICByZXR1cm4g J2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH07CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBjb250ZXh0KCd3aGVuIHRoZSBiYWNrdXAgam9iIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1 bGx5JywgKCkgPT4geworICAgICAgICAgICAgbGV0IGRhdGFTZW50VG9TZXJ2ZXI7CisgICAgICAg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cyA9 IGphc21pbmUuY3JlYXRlU3B5T2JqKCdFdmVudHMnLCBbJ3RyaWdnZXInXSk7CisgICAgICAgICAg ICAgIGFsZXJ0aWZ5U3B5LnN1Y2Nlc3MgPSBqYXNtaW5lLmNyZWF0ZVNweSgnc3VjY2VzcycpOwor CisgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL2JhY2t1cC9qb2IvMTAnKS5yZXBs eSgocmVxdWVzdCkgPT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9TZXJ2ZXIgPSByZXF1 ZXN0LmRhdGE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICAg ICAgfSk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMgYSBzdWNj ZXNzIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNh bGxlZFdpdGgoCisgICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVhdGVkLicsCisgICAg ICAgICAgICAgICAgICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25l KCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg IGl0KCd0cmlnZ2VyIGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25lKSA9PiB7 CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworCisg ICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChw Z0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAg ICAgICAgICAgJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAgICAgICAg YmFja3VwRGlhbG9nV3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAg ZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAg ICAgICBpdCgnc2VuZCB0aGUgY29ycmVjdCBwYXJhbWVudGVycyB0byB0aGUgYmFja2VuZCcsIChk b25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZl bnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICBl eHBlY3QoSlNPTi5wYXJzZShkYXRhU2VudFRvU2VydmVyKSkudG9FcXVhbCgKKyAgICAgICAgICAg ICAgICAgIHt9CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7Cisg ICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0aW5nIGJhY2t1cCBqb2IgZmFpbHMnLCAoKSA9PiB7 CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBhbiBhbGVydCBib3gnLCAoZG9uZSkgPT4geworICAg ICAgICAgICAgICBhbGVydGlmeVNweS5hbGVydCA9IGphc21pbmUuY3JlYXRlU3B5KCdhbGVydCcp OworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9iYWNrdXAvam9iLzEwJykucmVw bHkoKCkgPT4geworICAgICAgICAgICAgICAgIHJldHVybiBbNDAwLCB7CisgICAgICAgICAgICAg ICAgICBlcnJvcm1zZzogJ3NvbWUtZXJyb3ItbWVzc2FnZScsCisgICAgICAgICAgICAgICAgfV07 CisgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIu Y2FsbGJhY2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KAorICAgICAgICAgICAgICAgICAgJ0JhY2t1cCBqb2IgZmFpbGVkLicsCisgICAgICAgICAgICAg ICAgICAnc29tZS1lcnJvci1tZXNzYWdlJworICAgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICAgICAgZG9uZSgpOworICAgICAgICAgICAgICB9LCAwKTsKKworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3doZW4gZGlhbG9n IHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAgICAgIGxldCBldmVudDsKKyAgICAgICAg ICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBu ZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCdiYWNr dXBfZGlhbG9nXCc+PC9kaXY+JywKKyAgICAgICAgICAgICAgJ2JhY2t1cERpYWxvZ1RpdGxlJywK KyAgICAgICAgICAgICAgJ2JhY2t1cF9vYmplY3RzJywKKyAgICAgICAgICAgICAganF1ZXJ5U3B5 LAorICAgICAgICAgICAgICBwZ0Jyb3dzZXIsCisgICAgICAgICAgICAgIGFsZXJ0aWZ5U3B5LAor ICAgICAgICAgICAgICBkaWFsb2dNb2RlbEtsYXNzU3B5LAorICAgICAgICAgICAgICBiYWNrZm9y bQorICAgICAgICAgICAgKTsKKworICAgICAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVj dE5vZGUoZGF0YWJhc2VUcmVlTm9kZS5kb21Ob2RlKTsKKworICAgICAgICAgICAgYmFja3VwRGlh bG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgICAgICBtb2RlbDogbmV3IEZha2VNb2RlbCgp LAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgZXZlbnQgPSB7CisgICAgICAgICAgICAg IGJ1dHRvbjogeworICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2JhY2t1cCcsCisg ICAgICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgICAgZ2V0QXR0cmlidXRl OiAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOwor ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3do ZW4gdGhlIGJhY2t1cCBqb2IgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHknLCAoKSA9PiB7CisgICAg ICAgICAgICBsZXQgZGF0YVNlbnRUb1NlcnZlcjsKKyAgICAgICAgICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ0V2ZW50cycsIFsndHJpZ2dlciddKTsKKyAgICAgICAgICAgICAgYWxlcnRpZnlTcHkuc3Vj Y2VzcyA9IGphc21pbmUuY3JlYXRlU3B5KCdzdWNjZXNzJyk7CisKKyAgICAgICAgICAgICAgbmV0 d29ya01vY2sub25Qb3N0KCcvYmFja3VwL2pvYi8xMC9vYmplY3QnKS5yZXBseSgocmVxdWVzdCkg PT4geworICAgICAgICAgICAgICAgIGRhdGFTZW50VG9TZXJ2ZXIgPSByZXF1ZXN0LmRhdGE7Cisg ICAgICAgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgaXQoJ2NyZWF0ZXMgYSBzdWNjZXNzIGFsZXJ0IGJv eCcsIChkb25lKSA9PiB7CisgICAgICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJh Y2soZXZlbnQpOworICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAg ICAgICBleHBlY3QoYWxlcnRpZnlTcHkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisg ICAgICAgICAgICAgICAgICAnQmFja3VwIGpvYiBjcmVhdGVkLicsCisgICAgICAgICAgICAgICAg ICA1CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAg ICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGl0KCd0cmlnZ2Vy IGFuIGV2ZW50IHRvIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25lKSA9PiB7CisgICAgICAgICAg ICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuY2FsbGJhY2soZXZlbnQpOworCisgICAgICAgICAgICAg IHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuRXZl bnRzLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICAgJ3Bn YWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAgICAgICAgYmFja3VwRGlhbG9n V3JhcHBlcgorICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgZG9uZSgpOworICAg ICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBpdCgnc2Vu ZCB0aGUgY29ycmVjdCBwYXJhbWV0ZXJzIHRvIHRoZSBiYWNrZW5kJywgKGRvbmUpID0+IHsKKyAg ICAgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGV4cGVjdChKU09OLnBh cnNlKGRhdGFTZW50VG9TZXJ2ZXIpKS50b0VxdWFsKAorICAgICAgICAgICAgICAgICAge2RhdGFi YXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCd9CisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICBkb25lKCk7CisgICAgICAgICAgICAgIH0sIDApOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCd3aGVuIGNyZWF0aW5nIGJhY2t1cCBq b2IgZmFpbHMnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnY3JlYXRlcyBhbiBhbGVydCBib3gn LCAoZG9uZSkgPT4geworICAgICAgICAgICAgICBhbGVydGlmeVNweS5hbGVydCA9IGphc21pbmUu Y3JlYXRlU3B5KCdhbGVydCcpOworICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9i YWNrdXAvam9iLzEwL29iamVjdCcpLnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgICAgICByZXR1 cm4gWzQwMCwgeworICAgICAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21lLWVycm9yLW1lc3Nh Z2UnLAorICAgICAgICAgICAgICAgIH1dOworICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg ICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgICAgICAgICAg c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFs ZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAgICAgICAgICdCYWNrdXAgam9i IGZhaWxlZC4nLAorICAgICAgICAgICAgICAgICAgJ3NvbWUtZXJyb3ItbWVzc2FnZScKKyAgICAg ICAgICAgICAgICApOworICAgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICAgICAgfSwg MCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9 KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNzZXRFeHRyYVBhcmFtZXRlcnMnLCAo KSA9PiB7CisgICAgbGV0IHNlbGVjdGVkVHJlZU5vZGU7CisgICAgbGV0IHRyZWVJbmZvOworICAg IGxldCBtb2RlbDsKKworICAgIGNvbnRleHQoJ3doZW4gZGlhbG9nIHR5cGUgaXMgZ2xvYmFsJywg KCkgPT4geworICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dy YXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3JhcHBlcigKKyAgICAgICAgICAnPGRpdiBjbGFzcz1c J2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScs CisgICAgICAgICAgJ2JhY2t1cCcsCisgICAgICAgICAganF1ZXJ5U3B5LAorICAgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAgICBhbGVydGlmeVNweSwKKyAgICAgICAgICBkaWFsb2dNb2RlbEts YXNzU3B5LAorICAgICAgICAgIGJhY2tmb3JtCisgICAgICAgICk7CisKKyAgICAgICAgdHJlZUlu Zm8gPSB7fTsKKyAgICAgICAgbW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7CisgICAgICAgIGJhY2t1 cERpYWxvZ1dyYXBwZXIudmlldyA9IHsKKyAgICAgICAgICBtb2RlbDogbW9kZWwsCisgICAgICAg IH07CisgICAgICB9KTsKKworCisgICAgICBpdCgnc2V0cyBub3RoaW5nIG9uIHRoZSB2aWV3IG1v ZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFyYW1l dGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisgICAgICAgIGV4cGVjdChtb2RlbC50 b0pTT04oKSkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQo J3doZW4gZGlhbG9nIHR5cGUgaXMgb2JqZWN0JywgKCkgPT4geworICAgICAgYmVmb3JlRWFjaCgo KSA9PiB7CisgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIgPSBuZXcgQmFja3VwRGlhbG9nV3Jh cHBlcigKKyAgICAgICAgICAnPGRpdiBjbGFzcz1cJ2JhY2t1cF9kaWFsb2dcJz48L2Rpdj4nLAor ICAgICAgICAgICdiYWNrdXBEaWFsb2dUaXRsZScsCisgICAgICAgICAgJ2JhY2t1cF9vYmplY3Rz JywKKyAgICAgICAgICBqcXVlcnlTcHksCisgICAgICAgICAgcGdCcm93c2VyLAorICAgICAgICAg IGFsZXJ0aWZ5U3B5LAorICAgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAgICAgICAg YmFja2Zvcm0KKyAgICAgICAgKTsKKworICAgICAgICB0cmVlSW5mbyA9IHsKKyAgICAgICAgICBk YXRhYmFzZTogeworICAgICAgICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisg ICAgICAgICAgfSwKKyAgICAgICAgICBzY2hlbWE6IHsKKyAgICAgICAgICAgIF9sYWJlbDogJ3Nv bWUtdHJlZWluZm8tbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07CisKKyAgICAgICAg bW9kZWwgPSBuZXcgRmFrZU1vZGVsKCk7CisgICAgICAgIHNlbGVjdGVkVHJlZU5vZGUgPSBuZXcg VHJlZU5vZGUoJ3NvbWUtc2VsZWN0ZWQtbm9kZScsCisgICAgICAgICAge190eXBlOiAnc29tZS10 eXBlJywgX2xhYmVsOiAnc29tZS1zZWxlY3RlZC1sYWJlbCd9LAorICAgICAgICAgIFtdKTsKKyAg ICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci52aWV3ID0geworICAgICAgICAgIG1vZGVsOiBtb2Rl bCwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBpdCgnc2V0cyB0aGUgZGF0YWJhc2Ug bGFiZWwgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICBiYWNrdXBEaWFsb2dXcmFwcGVy LnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7CisgICAgICAg IGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgJ2RhdGFiYXNlJzog J3NvbWUtZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBj b250ZXh0KCd3aGVuIHRoZSBzZWxlY3RlZCBpcyBhIHNjaGVtYSB0eXBlJywgKCkgPT4geworICAg ICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRyZWVOb2RlID0gbmV3 IFRyZWVOb2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAge190eXBlOiAnc2No ZW1hJywgX2xhYmVsOiAnc29tZS1zY2hlbWEtbGFiZWwnfSwKKyAgICAgICAgICAgIFtdKTsKKyAg ICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3NldHMgdGhlIHNjaGVtYSBsYWJlbCBvbiB0aGUgbW9k ZWwnLCAoKSA9PiB7CisgICAgICAgICAgYmFja3VwRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFt ZXRlcnMoc2VsZWN0ZWRUcmVlTm9kZSwgdHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2Rl bC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAgICAnZGF0YWJhc2UnOiAnc29tZS1kYXRh YmFzZS1sYWJlbCcsCisgICAgICAgICAgICAnc2NoZW1hcyc6IFsnc29tZS1zY2hlbWEtbGFiZWwn XSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4 dCgnd2hlbiB0aGUgc2VsZWN0ZWQgaXMgYSB0YWJsZSB0eXBlJywgKCkgPT4geworICAgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBzZWxlY3RlZFRyZWVOb2RlID0gbmV3IFRyZWVO b2RlKCdzb21lLXNlbGVjdGVkLW5vZGUnLAorICAgICAgICAgICAge190eXBlOiAndGFibGUnLCBf bGFiZWw6ICdzb21lLXRhYmxlLWxhYmVsJ30sCisgICAgICAgICAgICBbXSk7CisgICAgICAgIH0p OworCisgICAgICAgIGl0KCdzZXRzIHRoZSBzY2hlbWEgbGFiZWwgb24gdGhlIG1vZGVsJywgKCkg PT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNl bGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwudG9KU09O KCkpLnRvRXF1YWwoeworICAgICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUtZGF0YWJhc2UtbGFi ZWwnLAorICAgICAgICAgICAgJ3RhYmxlcyc6IFtbJ3NvbWUtdHJlZWluZm8tbGFiZWwnLCAnc29t ZS10YWJsZS1sYWJlbCddXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsK KworICAgICAgY29udGV4dCgnd2hlbiB0aGUgbW9kZWwgaGFzIG5vIHJhdGlvIHZhbHVlJywgKCkg PT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBtb2RlbC5zZXQoJ3Jh dGlvJywgJycpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnc2V0cyBjbGVhcnMgdGhlIHJh dGlvIHZhbHVlJywgKCkgPT4geworICAgICAgICAgIGJhY2t1cERpYWxvZ1dyYXBwZXIuc2V0RXh0 cmFQYXJhbWV0ZXJzKHNlbGVjdGVkVHJlZU5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBl Y3QobW9kZWwuZ2V0KCdyYXRpbycpKS50b0JlVW5kZWZpbmVkKCk7CisgICAgICAgIH0pOworICAg ICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gdGhlIG1vZGVsIGhhcyBhIHZhbGlkIHJhdGlv IHZhbHVlJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBt b2RlbC5zZXQoJ3JhdGlvJywgJzAuMjUnKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3Nl dHMgY2xlYXJzIHRoZSByYXRpbyB2YWx1ZScsICgpID0+IHsKKyAgICAgICAgICBiYWNrdXBEaWFs b2dXcmFwcGVyLnNldEV4dHJhUGFyYW1ldGVycyhzZWxlY3RlZFRyZWVOb2RlLCB0cmVlSW5mbyk7 CisgICAgICAgICAgZXhwZWN0KG1vZGVsLmdldCgncmF0aW8nKSkudG9FcXVhbCgnMC4yNScpOwor ICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9iYWNrdXAvZ2xvYmFsX3NlcnZlcl9iYWNrdXBfZGlh bG9nX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2JhY2t1cC9nbG9iYWxfc2Vy dmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uODZkZjY3MmUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2JhY2t1cC9nbG9iYWxfc2VydmVyX2JhY2t1cF9kaWFsb2dfc3BlYy5qcwpAQCAtMCwwICsx LDE2OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisv LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt CisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLworaW1wb3J0IHtCYWNrdXBEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRt aW4vdG9vbHMvYmFja3VwL3N0YXRpYy9qcy9iYWNrdXBfZGlhbG9nJzsKK2ltcG9ydCB7VHJlZUZh a2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJl OworCitkZXNjcmliZSgnR2xvYmFsU2VydmVyQmFja3VwRGlhbG9nJywgKCkgPT4geworICBsZXQg YmFja3VwRGlhbG9nOworICBsZXQgcGdCcm93c2VyOworICBsZXQganF1ZXJ5U3B5OworICBsZXQg YWxlcnRpZnlTcHk7CisgIGxldCBiYWNrdXBNb2RlbFNweTsKKworCisgIGxldCByb290Tm9kZTsK KyAgbGV0IHNlcnZlclRyZWVOb2RlOworICBsZXQgcHBhc1NlcnZlclRyZWVOb2RlOworCisgIGJl Zm9yZUVhY2goKCkgPT4geworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcg VHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcjogamFzbWluZS5jcmVh dGVTcHlPYmooJ05vZGVbc2VydmVyXScsIFsnZ2V0VHJlZU5vZGVIaWVyYXJjaHknXSksCisgICAg ICB9LAorICAgIH07CisgICAgcGdCcm93c2VyLk5vZGVzLnNlcnZlci5oYXNJZCA9IHRydWU7Cisg ICAganF1ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAgIGJhY2t1 cE1vZGVsU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2JhY2t1cE1vZGVsU3B5Jyk7CisKKyAgICBy b290Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDEnLCB7fSwgdW5k ZWZpbmVkLCBbXSk7CisgICAgc2VydmVyVHJlZU5vZGUgPSBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRk TmV3Tm9kZSgnbGV2ZWwxLjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcicsCisgICAgICBfaWQ6 IDEwLAorICAgIH0sIHVuZGVmaW5lZCwgWydsZXZlbDEnXSk7CisgICAgcHBhc1NlcnZlclRyZWVO b2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMS4yJywgeworICAgICAg X3R5cGU6ICdzZXJ2ZXInLAorICAgICAgc2VydmVyX3R5cGU6ICdwcGFzJywKKyAgICB9LCB1bmRl ZmluZWQsIFsnbGV2ZWwxJ10pOworICAgIHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCds ZXZlbDMnLCB7fSwgdW5kZWZpbmVkLCBbJ2xldmVsMScsICdsZXZlbDEuMiddKTsKKyAgICBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkTmV3Tm9kZSgnbGV2ZWwzLjEnLCB1bmRlZmluZWQsIHVuZGVmaW5l ZCwgWydsZXZlbDEnLCAnbGV2ZWwxLjInLCAnbGV2ZWwzJ10pOworICB9KTsKKworICBkZXNjcmli ZSgnI2RyYXcnLCAoKSA9PiB7CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlm eVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9n J10pOworICAgICAgYWxlcnRpZnlTcHlbJ0JhY2t1cERpYWxvZ19nbG9iYWxzJ10gPSBqYXNtaW5l LmNyZWF0ZVNweSgnQmFja3VwRGlhbG9nX2dsb2JhbHMnKTsKKyAgICAgIGFsZXJ0aWZ5U3B5WydC YWNrdXBEaWFsb2dfc2VydmVyJ10gPSBqYXNtaW5lLmNyZWF0ZVNweSgnQmFja3VwRGlhbG9nX3Nl cnZlcicpOworICAgICAgYmFja3VwRGlhbG9nID0gbmV3IEJhY2t1cERpYWxvZygKKyAgICAgICAg cGdCcm93c2VyLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIGFsZXJ0aWZ5U3B5LAorICAg ICAgICBiYWNrdXBNb2RlbFNweQorICAgICAgKTsKKworICAgICAgcGdCcm93c2VyLmdldF9wcmVm ZXJlbmNlID0gamFzbWluZS5jcmVhdGVTcHkoJ2dldF9wcmVmZXJlbmNlcycpOworICAgIH0pOwor CisgICAgY29udGV4dCgndGhlcmUgYXJlIG5vIGFuY2VzdG9ycyBvZiB0aGUgdHlwZSBzZXJ2ZXIn LCAoKSA9PiB7CisgICAgICBpdCgnZG9lcyBub3QgY3JlYXRlIGEgZGlhbG9nJywgKCkgPT4gewor ICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShbe2lkOiAnbGV2ZWwxJ31dKTsK KyAgICAgICAgYmFja3VwRGlhbG9nLmRyYXcobnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIGV4 cGVjdChhbGVydGlmeVNweVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXSkubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKKyAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfc2VydmVy J10pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3Bs YXkgYW4gYWxlcnQgd2l0aCBhIEJhY2t1cCBFcnJvcicsICgpID0+IHsKKyAgICAgICAgYmFja3Vw RGlhbG9nLmRyYXcobnVsbCwgW3Jvb3ROb2RlXSwgbnVsbCk7CisgICAgICAgIGV4cGVjdChhbGVy dGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ0JhY2t1cCBF cnJvcicsCisgICAgICAgICAgJ1BsZWFzZSBzZWxlY3Qgc2VydmVyIG9yIGNoaWxkIG5vZGUgZnJv bSB0aGUgYnJvd3NlciB0cmVlLicKKyAgICAgICAgKTsKKyAgICAgIH0pOworICAgIH0pOworCisg ICAgY29udGV4dCgndGhlcmUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlIHR5cGUgc2VydmVyJywgKCkg PT4geworICAgICAgY29udGV4dCgnbm8gcHJlZmVyZW5jZSBjYW4gYmUgZm91bmQnLCAoKSA9PiB7 CisgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgIHBnQnJvd3Nlci5nZXRfcHJl ZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUodW5kZWZpbmVkKTsKKyAgICAgICAgfSk7CisKKyAgICAg ICAgY29udGV4dCgnc2VydmVyIGlzIGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAg aXQoJ2Rpc3BsYXkgYW4gYWxlcnQgd2l0aCAiQmFja3VwIEVycm9yIicsICgpID0+IHsKKyAgICAg ICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIG51bGwpOwor ICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCgKKyAgICAgICAgICAgICAgJ0JhY2t1cCBFcnJvcicsCisgICAgICAgICAgICAgICdGYWlsZWQg dG8gbG9hZCBwcmVmZXJlbmNlIHBnX2Jpbl9kaXIgb2YgbW9kdWxlIHBhdGhzJworICAgICAgICAg ICAgKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnc2Vy dmVyIGlzIG5vdCBhIHBwYXMgc2VydmVyJywgKCkgPT4geworICAgICAgICAgIGl0KCdkaXNwbGF5 IGFuIGFsZXJ0IHdpdGggIkJhY2t1cCBFcnJvciInLCAoKSA9PiB7CisgICAgICAgICAgICBiYWNr dXBEaWFsb2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAg ICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAg ICAgICAgICAgICAnQmFja3VwIEVycm9yJywKKyAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBsb2Fk IHByZWZlcmVuY2UgcHBhc19iaW5fZGlyIG9mIG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7 CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQo J3ByZWZlcmVuY2UgY2FuIGJlIGZvdW5kJywgKCkgPT4geworICAgICAgICBjb250ZXh0KCdiaW5h cnkgZm9sZGVyIGlzIG5vdCBjb25maWd1cmVkJywgKCkgPT4geworICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1 cm5WYWx1ZSh7fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdzZXJ2ZXIg aXMgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFs ZXJ0IHdpdGggIkNvbmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAgICAgICAg ICBiYWNrdXBEaWFsb2cuZHJhdyhudWxsLCBbc2VydmVyVHJlZU5vZGVdLCBudWxsKTsKKyAgICAg ICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAgICAgICAg ICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIFBvc3RncmVTUUwgQmluYXJ5IFBhdGggaW4gdGhlIFBy ZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICB9KTsKKyAg ICAgICAgICB9KTsKKworICAgICAgICAgIGNvbnRleHQoJ3NlcnZlciBpcyBub3QgYSBwcGFzIHNl cnZlcicsICgpID0+IHsKKyAgICAgICAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggIkNv bmZpZ3VyYXRpb24gcmVxdWlyZWQiJywgKCkgPT4geworICAgICAgICAgICAgICBiYWNrdXBEaWFs b2cuZHJhdyhudWxsLCBbcHBhc1NlcnZlclRyZWVOb2RlXSwgbnVsbCk7CisgICAgICAgICAgICAg IGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAg ICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAgICAgICAgICAgICdQbGVh c2UgY29uZmlndXJlIHRoZSBFREIgQWR2YW5jZWQgU2VydmVyIEJpbmFyeSBQYXRoIGluIHRoZSBQ cmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ2JpbmFyeSBmb2xk ZXIgaXMgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAgICAgICBsZXQgZ2xvYmFsUmVzaXplVG9T cHk7CisgICAgICAgICAgbGV0IHNlcnZlclJlc2l6ZVRvU3B5OworICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgICAgZ2xvYmFsUmVzaXplVG9TcHkgPSBqYXNtaW5lLmNyZWF0 ZVNweU9iaignZ2xvYmFscycsIFsncmVzaXplVG8nXSk7CisgICAgICAgICAgICBhbGVydGlmeVNw eVsnQmFja3VwRGlhbG9nX2dsb2JhbHMnXS5hbmQKKyAgICAgICAgICAgICAgLnJldHVyblZhbHVl KGdsb2JhbFJlc2l6ZVRvU3B5KTsKKyAgICAgICAgICAgIHNlcnZlclJlc2l6ZVRvU3B5ID0gamFz bWluZS5jcmVhdGVTcHlPYmooJ3NlcnZlcicsIFsncmVzaXplVG8nXSk7CisgICAgICAgICAgICBh bGVydGlmeVNweVsnQmFja3VwRGlhbG9nX3NlcnZlciddLmFuZAorICAgICAgICAgICAgICAucmV0 dXJuVmFsdWUoc2VydmVyUmVzaXplVG9TcHkpOworICAgICAgICAgICAgcGdCcm93c2VyLmdldF9w cmVmZXJlbmNlLmFuZC5yZXR1cm5WYWx1ZSh7dmFsdWU6ICcvc29tZS9wYXRoJ30pOworICAgICAg ICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBnbG9iYWwgYmFja3VwJywg KCkgPT4geworICAgICAgICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7Cisg ICAgICAgICAgICAgIGJhY2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIHtn bG9iYWxzOiB0cnVlfSk7CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweVsnQmFja3Vw RGlhbG9nX2dsb2JhbHMnXSkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAgICAg ICAgIGV4cGVjdChnbG9iYWxSZXNpemVUb1NweS5yZXNpemVUbykudG9IYXZlQmVlbkNhbGxlZFdp dGgoJzYwJScsICc1MCUnKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworCisgICAg ICAgICAgY29udGV4dCgnZGlhbG9nIGZvciBzZXJ2ZXIgYmFja3VwJywgKCkgPT4geworICAgICAg ICAgICAgaXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgICAgICAgIGJh Y2t1cERpYWxvZy5kcmF3KG51bGwsIFtzZXJ2ZXJUcmVlTm9kZV0sIHtzZXJ2ZXI6IHRydWV9KTsK KyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5WydCYWNrdXBEaWFsb2dfc2VydmVyJ10p LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOworICAgICAgICAgICAgICBleHBlY3Qoc2VydmVy UmVzaXplVG9TcHkucmVzaXplVG8pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2MCUnLCAnNTAlJyk7 CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsK KyAgICB9KTsKKyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvYmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv YmFja3VwL21lbnVfdXRpbHNfc3BlYy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMC4uOTQzNWQ2OTkKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L2JhY2t1cC9tZW51X3V0aWxzX3NwZWMuanMKQEAgLTAsMCArMSw1NSBAQAorLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8K Ky8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIw MTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJl IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisK K2ltcG9ydCB7bWVudUVuYWJsZWRTZXJ2ZXJ9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMv YmFja3VwL3N0YXRpYy9qcy9tZW51X3V0aWxzJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJl OworCitkZXNjcmliZSgnYmFja3VwLm1lbnVVdGlscycsICgpID0+IHsKKyAgZGVzY3JpYmUoJyNt ZW51RW5hYmxlZFNlcnZlcicsICgpID0+IHsKKyAgICBjb250ZXh0KCdwcm92aWRlZCBub2RlIGRh dGEgaXMgdW5kZWZpbmVkJywgKCkgPT4geworICAgICAgaXQoJ3JldHVybnMgZmFsc2UnLCAoKSA9 PiB7CisgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih1bmRlZmluZWQpKS50b0JlKGZh bHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgncHJvdmlkZWQgbm9kZSBk YXRhIGlzIG51bGwnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyBmYWxzZScsICgpID0+IHsK KyAgICAgICAgZXhwZWN0KG1lbnVFbmFibGVkU2VydmVyKG51bGwpKS50b0JlKGZhbHNlKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBub2RlIHR5cGUgaXMgbm90 IG9mIHRoZSB0eXBlIHNlcnZlcicsICgpID0+IHsKKyAgICAgIGl0KCdyZXR1cm5zIGZhbHNlJywg KCkgPT4geworICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIoe190eXBlOiAnc2NoZW1h J30pKS50b0JlKGZhbHNlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3Vy cmVudCBub2RlIHR5cGUgaXMgb2YgdGhlIHR5cGUgc2VydmVyJywgKCkgPT4geworICAgICAgY29u dGV4dCgnaXMgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyB0cnVlJywg KCkgPT4geworICAgICAgICAgIGV4cGVjdChtZW51RW5hYmxlZFNlcnZlcih7CisgICAgICAgICAg ICBfdHlwZTogJ3NlcnZlcicsCisgICAgICAgICAgICBjb25uZWN0ZWQ6IHRydWUsCisgICAgICAg ICAgfSkpLnRvQmUodHJ1ZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgICBjb250ZXh0 KCdpcyBub3QgY29ubmVjdGVkJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyBmYWxzZScs ICgpID0+IHsKKyAgICAgICAgICBleHBlY3QobWVudUVuYWJsZWRTZXJ2ZXIoeworICAgICAgICAg ICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgY29ubmVjdGVkOiBmYWxzZSwKKyAgICAg ICAgICB9KSkudG9CZShmYWxzZSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7Cisg IH0pOworfSk7CisKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tbW9u X2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9j b21tb25fa2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKaW5kZXggOWVhMzFlZmQuLmUyNzkyOWJm IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9rZXlib2FyZF9z aG9ydGN1dHNfc3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbW1vbl9r ZXlib2FyZF9zaG9ydGN1dHNfc3BlYy5qcwpAQCAtMTEsMTAgKzExLDYgQEAgaW1wb3J0IGtleWJv YXJkU2hvcnRjdXRzIGZyb20gJ3NvdXJjZXMva2V5Ym9hcmRfc2hvcnRjdXRzJzsKIAogZGVzY3Jp YmUoJ3RoZSBrZXlib2FyZCBzaG9ydGN1dHMnLCAoKSA9PiB7CiAgIGNvbnN0IEYxX0tFWSA9IDEx MjsKLSAgLy8gY29uc3QgRURJVF9LRVkgPSA3MTsgIC8vIEtleTogRyAtPiBHcmlkIHZhbHVlcwot ICAvLyBjb25zdCBMRUZUX0FSUk9XX0tFWSA9IDM3OwotICAvLyBjb25zdCBSSUdIVF9BUlJPV19L RVkgPSAzOTsKLSAgLy8gY29uc3QgTU9WRV9ORVhUID0gJ3JpZ2h0JzsKIAogICBsZXQgZGVidWdn ZXJFbGVtZW50U3B5LCBldmVudCwgZGVidWdnZXJVc2VyU2hvcnRjdXRTcHk7CiAgIGRlYnVnZ2Vy VXNlclNob3J0Y3V0U3B5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooCmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90aXRsZV9zcGVjLmpzIGIv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5q cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uOGEzNDRhODQKLS0tIC9kZXYv bnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL2dldF9wYW5lbF90 aXRsZV9zcGVjLmpzCkBAIC0wLDAgKzEsODIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAxOCwgVGhlIHBn QWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRl ciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHtnZXRQYW5lbFRp dGxlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9nZXRf cGFuZWxfdGl0bGUnOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2Un OworaW1wb3J0IHtUcmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJl ZS90cmVlJzsKKworY29uc3QgY29udGV4dCA9IGRlc2NyaWJlOworCitkZXNjcmliZSgnI2dldFBh bmVsVGl0bGUnLCAoKSA9PiB7CisgIGxldCBwZ0Jyb3dzZXI7CisgIGxldCB0cmVlOworICBiZWZv cmVFYWNoKCgpID0+IHsKKyAgICB0cmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgcGdCcm93c2Vy ID0geworICAgICAgdHJlZU1lbnU6IHRyZWUsCisgICAgICBOb2RlczogeworICAgICAgICBzZXJ2 ZXI6IHsKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgICBfdHlwZTogJ3NlcnZlcics CisgICAgICAgIH0sCisgICAgICAgIGRhdGFiYXNlOiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUs CisgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgIH0sCisgICAgICB9LAorICAg IH07CisgIH0pOworCisgIGNvbnRleHQoJ3NlbGVjdGVkIG5vZGUgZG9lcyBub3QgYmVsb25nIHRv IGEgc2VydmVyJywgKCkgPT4geworICAgIGl0KCdyZXR1cm5zIHVuZGVmaW5lZCcsICgpID0+IHsK KyAgICAgIGNvbnN0IHJvb3QgPSB0cmVlLmFkZE5ld05vZGUoJ2xldmVsMScsIHtfdHlwZTogJ3Nl cnZlcl9ncm91cHMnfSk7CisgICAgICB0cmVlLmFkZENoaWxkKHJvb3QsIG5ldyBUcmVlTm9kZSgn bGV2ZWwxLjEnLCB7X3R5cGU6ICdvdGhlcid9KSk7CisgICAgICB0cmVlLnNlbGVjdE5vZGUoW3tp ZDogJ2xldmVsMSd9XSk7CisgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpKS50 b0JlVW5kZWZpbmVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQoJ3NlbGVjdGVkIG5v ZGUgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4geworICAgIGNvbnRleHQoJ3NlbGVjdGVkIG5v ZGUgZG9lcyBub3QgYmVsb25nIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBpdCgncmV0 dXJucyB0aGUgc2VydmVyIGxhYmVsIGFuZCB0aGUgdXNlcm5hbWUnLCAoKSA9PiB7CisgICAgICAg IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBlOiAnc2VydmVyJywK KyAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1c2VyOiB7bmFtZTog J3NvbWUgdXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIgbGFiZWwnLAorICAg ICAgICB9LCBbXSk7CisKKyAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICdsZXZlbDEnfV0p OworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIpKQorICAgICAgICAgIC50 b0JlKCdvdGhlciBkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFtZUBzZXJ2ZXIgbGFiZWwnKTsKKyAg ICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnc2VsZWN0ZWQgbm9kZSBiZWxvbmdzIHRv IGEgZGF0YWJhc2UnLCAoKSA9PiB7CisgICAgICBpdCgncmV0dXJucyB0aGUgZGF0YWJhc2UgbGFi ZWwgYW5kIHRoZSB1c2VybmFtZScsICgpID0+IHsKKyAgICAgICAgY29uc3Qgcm9vdCA9IHRyZWUu YWRkTmV3Tm9kZSgnbGV2ZWwxJywgeworICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAg ICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKKyAgICAgICAgICB1c2VyOiB7bmFtZTogJ3NvbWUg dXNlciBuYW1lJ30sCisgICAgICAgICAgbGFiZWw6ICdzZXJ2ZXIgbGFiZWwnLAorICAgICAgICB9 KTsKKyAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZlbDEuMScsIHsKKyAg ICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAgICBsYWJlbDogJ2RiIGxhYmVsJywK KyAgICAgICAgfSk7CisgICAgICAgIHRyZWUuYWRkQ2hpbGQocm9vdCwgbGV2ZWwxKTsKKyAgICAg ICAgdHJlZS5hZGRDaGlsZChsZXZlbDEsCisgICAgICAgICAgbmV3IFRyZWVOb2RlKCdsZXZlbDEu MS4xJywge190eXBlOiAndGFibGUnfSkpOworICAgICAgICB0cmVlLnNlbGVjdE5vZGUoW3tpZDog J2xldmVsMS4xLjEnfV0pOworICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jyb3dzZXIp KQorICAgICAgICAgIC50b0JlKCdkYiBsYWJlbCBvbiBzb21lIHVzZXIgbmFtZUBzZXJ2ZXIgbGFi ZWwnKTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcyBiL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3NwZWMuanMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjgwZDI1ZWIzCi0tLSAvZGV2L251bGwKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2RhdGFfc3BlYy5qcwpAQCAtMCww ICsxLDE3MSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8v CisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQge3Nob3dEYXRhR3JpZH0gZnJvbSAnLi4vLi4vLi4v cGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19kYXRhJzsKK2ltcG9ydCB7VHJl ZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20g Jy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2NvbnN0IGNvbnRleHQg PSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93X2RhdGEnLCAoKSA9PiB7CisgIGxldCBkYXRh Z3JpZDsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5OworICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICBhbGVydGlmeSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdhbGVydGlmeScsIFsn YWxlcnQnXSk7CisgICAgZGF0YWdyaWQgPSB7CisgICAgICBjcmVhdGVfdHJhbnNhY3Rpb246IGph c21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJhbnNhY3Rpb24nKSwKKyAgICB9OworICAgIHBnQnJv d3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5vZGVzOiB7 CisgICAgICAgIHNlcnZlcl9ncm91cDogeworICAgICAgICAgIF90eXBlOiAnc2VydmVyX2dyb3Vw JywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgc2VydmVyOiB7 CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAg ICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAgIF90eXBlOiAnZGF0YWJhc2Un LAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBzY2hlbWE6IHsK KyAgICAgICAgICBfdHlwZTogJ3NjaGVtYScsCisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAg ICAgIH0sCisgICAgICAgIHZpZXc6IHsKKyAgICAgICAgICBfdHlwZTogJ3ZpZXcnLAorICAgICAg ICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBjYXRhbG9nOiB7CisgICAgICAg ICAgX3R5cGU6ICdjYXRhbG9nJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwK KyAgICAgIH0sCisgICAgfTsKKyAgICBjb25zdCBwYXJlbnQgPSBwZ0Jyb3dzZXIudHJlZU1lbnUu YWRkTmV3Tm9kZSgncGFyZW50Jywge190eXBlOiAncGFyZW50J30sIFtdKTsKKyAgICBjb25zdCBz ZXJ2ZXJHcm91cDEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcl9ncm91cDEnLCB7CisgICAgICBfdHlw ZTogJ3NlcnZlcl9ncm91cCcsCisgICAgICBfaWQ6IDEsCisgICAgfSk7CisgICAgcGdCcm93c2Vy LnRyZWVNZW51LmFkZENoaWxkKHBhcmVudCwgc2VydmVyR3JvdXAxKTsKKworICAgIGNvbnN0IHNl cnZlcjEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcjEnLCB7CisgICAgICBfdHlwZTogJ3NlcnZlcics CisgICAgICBsYWJlbDogJ3NlcnZlcjEnLAorICAgICAgc2VydmVyX3R5cGU6ICdwZycsCisgICAg ICBfaWQ6IDIsCisgICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMSddKTsKKyAgICBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKKworICAgIGNv bnN0IGRhdGFiYXNlMSA9IG5ldyBUcmVlTm9kZSgnZGF0YWJhc2UxJywgeworICAgICAgX3R5cGU6 ICdkYXRhYmFzZScsCisgICAgICBsYWJlbDogJ2RhdGFiYXNlMScsCisgICAgICBfaWQ6IDMsCisg ICAgfSwgWydwYXJlbnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJ10pOworICAgIHBnQnJv d3Nlci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOworCisgICAgY29uc3Qg c2NoZW1hMSA9IG5ldyBUcmVlTm9kZSgnc2NoZW1hMScsIHsKKyAgICAgIF90eXBlOiAnc2NoZW1h JywKKyAgICAgIGxhYmVsOiAnc2NoZW1hMScsCisgICAgICBfaWQ6IDQsCisgICAgfSk7CisgICAg cGdCcm93c2VyLnRyZWVNZW51LmFkZENoaWxkKGRhdGFiYXNlMSwgc2NoZW1hMSk7CisKKyAgICBj b25zdCB2aWV3MSA9IG5ldyBUcmVlTm9kZSgndmlldzEnLCB7CisgICAgICBfdHlwZTogJ3ZpZXcn LAorICAgICAgbGFiZWw6ICd2aWV3MScsCisgICAgICBfaWQ6IDUsCisgICAgfSwgWydwYXJlbnQn LCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSddKTsKKyAgICBwZ0Jyb3dz ZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCB2aWV3MSk7CisKKyAgICBjb25zdCBjYXRh bG9nMSA9IG5ldyBUcmVlTm9kZSgnY2F0YWxvZzEnLCB7CisgICAgICBfdHlwZTogJ2NhdGFsb2cn LAorICAgICAgbGFiZWw6ICdjYXRhbG9nMScsCisgICAgICBfaWQ6IDYsCisgICAgfSwgWydwYXJl bnQnLCAnc2VydmVyX2dyb3VwMScsICdzZXJ2ZXIxJywgJ2RhdGFiYXNlMSddKTsKKyAgICBwZ0Jy b3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBjYXRhbG9nMSk7CisgIH0pOworCisg IGNvbnRleHQoJ2Nhbm5vdCBmaW5kIHRoZSB0cmVlIG5vZGUnLCAoKSA9PiB7CisgICAgaXQoJ2Rv ZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlk KGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJzEwJ31dKTsKKyAgICAg IGV4cGVjdChkYXRhZ3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLm5vdC50b0hhdmVCZWVuQ2FsbGVk KCk7CisgICAgfSk7CisKKyAgICBpdCgnZGlzcGxheSBhbGVydCcsICgpID0+IHsKKyAgICAgIHNo b3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7aWQ6ICcxMCd9 XSk7CisgICAgICBleHBlY3QoYWxlcnRpZnkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAor ICAgICAgICAnRGF0YSBHcmlkIEVycm9yJywKKyAgICAgICAgJ05vIG9iamVjdCBzZWxlY3RlZC4n CisgICAgICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMg bm90IHVuZGVybmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0 ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBw Z0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ3BhcmVudCd9XSk7CisgICAgICBleHBlY3Qo ZGF0YWdyaWQuY3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAg IH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVuZGVybmVhdGgg YSBzY2hlbWEgb3IgdmlldyBvciBjYXRhbG9nJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBj cmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3Jp ZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge30sIFt7aWQ6ICdkYXRhYmFzZTEnfV0pOworICAgICAg ZXhwZWN0KGRhdGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQo KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVh dGggYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0 aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFs ZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3NjaGVtYTEnfV0pOworICAgICAgZXhwZWN0KGRh dGFncmlkLmNyZWF0ZV90cmFuc2FjdGlvbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAg ICcvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8xMS9zY2hlbWEvMS8yLzMvNCcsCisgICAgICAgIG51bGws CisgICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcnLAorICAgICAgICAn c2VydmVyMSAtIGRhdGFiYXNlMSAtIHNjaGVtYTEuc2NoZW1hMScsCisgICAgICAgICcnCisgICAg ICApOworICAgIH0pOworICB9KTsKKworICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgdW5kZXJu ZWF0aCBhIHZpZXcnLCAoKSA9PiB7CisgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0 aW9uJywgKCkgPT4geworICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFs ZXJ0aWZ5LCB7bW51aWQ6IDExfSwgW3tpZDogJ3ZpZXcxJ31dKTsKKyAgICAgIGV4cGVjdChkYXRh Z3JpZC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAn L2luaXRpYWxpemUvZGF0YWdyaWQvMTEvdmlldy8xLzIvMy81JywKKyAgICAgICAgbnVsbCwKKyAg ICAgICAgJ2ZhbHNlJywKKyAgICAgICAgJ3BnJywKKyAgICAgICAgJycsCisgICAgICAgICdzZXJ2 ZXIxIC0gZGF0YWJhc2UxIC0gdmlldzEudmlldzEnLAorICAgICAgICAnJworICAgICAgKTsKKyAg ICB9KTsKKyAgfSk7CisKKyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVhdGggYSBj YXRhbG9nJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbics ICgpID0+IHsKKyAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlm eSwge21udWlkOiAxMX0sIFt7aWQ6ICdjYXRhbG9nMSd9XSk7CisgICAgICBleHBlY3QoZGF0YWdy aWQuY3JlYXRlX3RyYW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgJy9p bml0aWFsaXplL2RhdGFncmlkLzExL2NhdGFsb2cvMS8yLzMvNicsCisgICAgICAgIG51bGwsCisg ICAgICAgICdmYWxzZScsCisgICAgICAgICdwZycsCisgICAgICAgICcnLAorICAgICAgICAnc2Vy dmVyMSAtIGRhdGFiYXNlMSAtIGNhdGFsb2cxLmNhdGFsb2cxJywKKyAgICAgICAgJycKKyAgICAg ICk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMC4uNjZiZDM3Y2UKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3Nob3dfcXVlcnlfdG9vbF9zcGVjLmpzCkBA IC0wLDAgKzEsMTI1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUv dHJlZV9mYWtlJzsKK2ltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1p bi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsKK2ltcG9ydCB7VHJl ZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2Nv bnN0IGNvbnRleHQgPSBkZXNjcmliZTsKKworZGVzY3JpYmUoJyNzaG93UXVlcnlUb29sJywgKCkg PT4geworICBsZXQgcXVlcnlUb29sOworICBsZXQgcGdCcm93c2VyOworICBsZXQgYWxlcnRpZnk7 CisgIGJlZm9yZUVhY2goKCkgPT4geworICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ2FsZXJ0aWZ5JywgWydhbGVydCddKTsKKyAgICBxdWVyeVRvb2wgPSB7CisgICAgICBjcmVh dGVfdHJhbnNhY3Rpb246IGphc21pbmUuY3JlYXRlU3B5KCdjcmVhdGVfdHJhbnNhY3Rpb24nKSwK KyAgICB9OworICAgIHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2Uo KSwKKyAgICAgIE5vZGVzOiB7CisgICAgICAgIHNlcnZlcl9ncm91cDogeworICAgICAgICAgIF90 eXBlOiAnc2VydmVyX2dyb3VwJywKKyAgICAgICAgICBoYXNJZDogdHJ1ZSwKKyAgICAgICAgfSwK KyAgICAgICAgc2VydmVyOiB7CisgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAg IGhhc0lkOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICBkYXRhYmFzZTogeworICAgICAgICAg IF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICB9LAor ICAgICAgfSwKKyAgICB9OworICAgIGNvbnN0IHBhcmVudCA9IHBnQnJvd3Nlci50cmVlTWVudS5h ZGROZXdOb2RlKCdwYXJlbnQnLCB7X3R5cGU6ICdwYXJlbnQnfSk7CisgICAgY29uc3Qgc2VydmVy R3JvdXAxID0gIG5ldyBUcmVlTm9kZSgnc2VydmVyX2dyb3VwMScsIHsKKyAgICAgIF90eXBlOiAn c2VydmVyX2dyb3VwJywKKyAgICAgIF9pZDogMSwKKyAgICB9LCBbJ3BhcmVudCddKTsKKyAgICBw Z0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQocGFyZW50LCBzZXJ2ZXJHcm91cDEpOworCisgICAg Y29uc3Qgc2VydmVyMSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyMScsIHsKKyAgICAgIF90eXBlOiAn c2VydmVyJywKKyAgICAgIGxhYmVsOiAnc2VydmVyMScsCisgICAgICBzZXJ2ZXJfdHlwZTogJ3Bn JywKKyAgICAgIF9pZDogMiwKKyAgICB9KTsKKyAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hp bGQoc2VydmVyR3JvdXAxLCBzZXJ2ZXIxKTsKKworICAgIGNvbnN0IGRhdGFiYXNlMSA9IG5ldyAg VHJlZU5vZGUoJ2RhdGFiYXNlMScsIHsKKyAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAg bGFiZWw6ICdkYXRhYmFzZTEnLAorICAgICAgX2lkOiAzLAorICAgIH0pOworICAgIHBnQnJvd3Nl ci50cmVlTWVudS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOworICB9KTsKKworICBjb250 ZXh0KCdjYW5ub3QgZmluZCB0aGUgdHJlZSBub2RlJywgKCkgPT4geworICAgIGJlZm9yZUVhY2go KCkgPT4geworICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRp ZnksICcnLCBbe2lkOiAnMTAnfV0sICd0aXRsZScpOworICAgIH0pOworICAgIGl0KCdkb2VzIG5v dCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgIGV4cGVjdChxdWVyeVRvb2wu Y3JlYXRlX3RyYW5zYWN0aW9uKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgIH0pOworCisg ICAgaXQoJ2Rpc3BsYXkgYWxlcnQnLCAoKSA9PiB7CisgICAgICBleHBlY3QoYWxlcnRpZnkuYWxl cnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAnUXVlcnkgVG9vbCBFcnJvcicsCisg ICAgICAgICdObyBvYmplY3Qgc2VsZWN0ZWQuJworICAgICAgKTsKKyAgICB9KTsKKyAgfSk7CisK KyAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIG5vdCB1bmRlcm5lYXRoIGEgc2VydmVyJywgKCkg PT4geworICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAg ICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCAnJywgW3tp ZDogJ3BhcmVudCd9XSwgJ3RpdGxlJyk7CisgICAgICBleHBlY3QocXVlcnlUb29sLmNyZWF0ZV90 cmFuc2FjdGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICB9KTsKKworICAgIGl0KCdu byBhbGVydCBpcyBkaXNwbGF5ZWQnLCAoKSA9PiB7CisgICAgICBleHBlY3QoYWxlcnRpZnkuYWxl cnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7CisgICAgfSk7CisgIH0pOworCisgIGNvbnRleHQo J2N1cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2VydmVyJywgKCkgPT4geworICAgIGNvbnRl eHQoJ2N1cnJlbnQgbm9kZSBpcyBub3QgdW5kZXJuZWF0aCBhIGRhdGFiYXNlJywgKCkgPT4gewor ICAgICAgaXQoJ2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKKyAgICAgICAgc2hvd1F1 ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgYWxlcnRpZnksICdodHRwOi8vc29tZXVybCcs IFt7aWQ6ICdzZXJ2ZXIxJ31dLCAndGl0bGUnKTsKKyAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5j cmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICcvaW5p dGlhbGl6ZS9xdWVyeV90b29sLzEvMicsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAndHJ1 ZScsCisgICAgICAgICAgJ3BnJywKKyAgICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAorICAgICAg ICAgICd0aXRsZScsCisgICAgICAgICAgJycsCisgICAgICAgICAgZmFsc2UKKyAgICAgICAgKTsK KyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVy bmVhdGggYSBkYXRhYmFzZScsICgpID0+IHsKKyAgICAgIGl0KCdjcmVhdGVzIGEgdHJhbnNhY3Rp b24nLCAoKSA9PiB7CisgICAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dzZXIs IGFsZXJ0aWZ5LCAnaHR0cDovL3NvbWV1cmwnLCBbe2lkOiAnZGF0YWJhc2UxJ31dLCAndGl0bGUn KTsKKyAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5jcmVhdGVfdHJhbnNhY3Rpb24pLnRvSGF2ZUJl ZW5DYWxsZWRXaXRoKAorICAgICAgICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzEvMi8zJywK KyAgICAgICAgICBudWxsLAorICAgICAgICAgICd0cnVlJywKKyAgICAgICAgICAncGcnLAorICAg ICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgJ3RpdGxlJywKKyAgICAgICAgICAn JywKKyAgICAgICAgICBmYWxzZQorICAgICAgICApOworICAgICAgfSk7CisgICAgfSk7CisgIH0p OworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfYnJvd3Nl ci9icm93c2VyLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2Jyb3dzZXIvYnJv d3Nlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uMTk1ZTVjNTEKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfYnJvd3Nlci9i cm93c2VyLmpzCkBAIC0wLDAgKzEsMTIgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdB ZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIw MTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVs ZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v CisKK2xldCB0cmVlTWVudSA9IG51bGw7CisKK2V4cG9ydCB7dHJlZU1lbnV9OwpkaWZmIC0tZ2l0 IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcyBiL3dlYi9yZWdy ZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKaW5kZXggNTRiODZhOTQuLmMwNjBi YTc4IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfZW5kcG9pbnRz LmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKQEAg LTEyLDUgKzEyLDExIEBAIGRlZmluZShmdW5jdGlvbiAoKSB7CiAgICAgJ3N0YXRpYyc6ICcvYmFz ZS9wZ2FkbWluL3N0YXRpYy88cGF0aDpmaWxlbmFtZT4nLAogICAgICdzcWxlZGl0b3IucG9sbCc6 ICcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC88cGF0aDp0cmFuc19pZD4nLAogICAgICdzcWxl ZGl0b3IucXVlcnlfdG9vbF9zdGFydCc6ICcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvc3RhcnQvPHBh dGg6dHJhbnNfaWQ+JywKKyAgICAnYmFja3VwLmNyZWF0ZV9zZXJ2ZXJfam9iJzogICcvYmFja3Vw L2pvYi88aW50OnNpZD4nLAorICAgICdiYWNrdXAuY3JlYXRlX29iamVjdF9qb2InOiAgJy9iYWNr dXAvam9iLzxpbnQ6c2lkPi9vYmplY3QnLAorICAgICdkYXRhZ3JpZC5pbml0aWFsaXplX2RhdGFn cmlkJzogJy9pbml0aWFsaXplL2RhdGFncmlkLzxpbnQ6Y21kX3R5cGU+LzxvYmpfdHlwZT4vPGlu dDpzZ2lkPi88aW50OnNpZD4vPGludDpkaWQ+LzxpbnQ6b2JqX2lkPicsCisgICAgJ2RhdGFncmlk LmluaXRpYWxpemVfcXVlcnlfdG9vbCc6ICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzxpbnQ6c2dp ZD4vPGludDpzaWQ+JywKKyAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sX3dpdGhf ZGlkJzogJy9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvPGludDpzZ2lkPi88aW50OnNpZD4vPGludDpk aWQ+JywKKyAgICAncmVzdG9yZS5jcmVhdGVfam9iJzogJy9yZXN0b3JlL2pvYi88aW50OnNpZD4n LAogICB9OwogfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2Vf bW9kZWwuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfbW9kZWwuanMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmFjZmFhNTMyCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9mYWtlX21vZGVsLmpzCkBAIC0wLDAgKzEsMjEg QEAKK2V4cG9ydCBjbGFzcyBGYWtlTW9kZWwgeworICBjb25zdHJ1Y3RvcigpIHsKKyAgICB0aGlz LnZhbHVlcyA9IHt9OworICB9CisKKyAgc2V0KGtleSwgdmFsdWUpIHsKKyAgICB0aGlzLnZhbHVl c1trZXldID0gdmFsdWU7CisgIH0KKworICBnZXQoa2V5KSB7CisgICAgcmV0dXJuIHRoaXMudmFs dWVzW2tleV07CisgIH0KKworICB1bnNldChrZXkpIHsKKyAgICBkZWxldGUgdGhpcy52YWx1ZXNb a2V5XTsKKyAgfQorCisgIHRvSlNPTigpIHsKKyAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwg dGhpcy52YWx1ZXMpOworICB9Cit9CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L25vZGVzL3NjaGVtYS9jaGlsZF9tZW51X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L25vZGVzL3NjaGVtYS9jaGlsZF9tZW51X3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAuLjNkM2RjNTVlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jl c3Npb24vamF2YXNjcmlwdC9ub2Rlcy9zY2hlbWEvY2hpbGRfbWVudV9zcGVjLmpzCkBAIC0wLDAg KzEsMjUzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KKworaW1wb3J0IHsKKyAgaXNUcmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSwg Y2hpbGRDcmVhdGVNZW51RW5hYmxlZCwKK30gZnJvbSAncGdhZG1pbi5zY2hlbWEuZGlyL3NjaGVt YV9jaGlsZF90cmVlX25vZGUnOworCitpbXBvcnQgKiBhcyBwZ0Jyb3dzZXIgZnJvbSAncGdicm93 c2VyL2Jyb3dzZXInOworaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vLi4vdHJlZS90cmVlX2Zh a2UnOworCitkZXNjcmliZSgnI2NoaWxkQ3JlYXRlTWVudUVuYWJsZWQnLCAoKSA9PiB7CisgIGxl dCBkYXRhOworICBsZXQgdHJlZTsKKworICBkZXNjcmliZSgnIC0gd2hlbiBkYXRhIGlzIG5vdCBu dWxsJywgKCkgPT4geworICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgZGF0YSA9IHt9Owor ICAgIH0pOworICAgIGRlc2NyaWJlKCcgYW5kIGNoZWNrIGlzIGZhbHNlJywgKCkgPT4geworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIGRhdGEgPSB7Y2hlY2s6IGZhbHNlfTsKKyAg ICAgIH0pOworICAgICAgaXQoJywgdGhlbiBpdCByZXR1cm5zIHRydWUnLCAoKSA9PiB7CisgICAg ICAgIGV4cGVjdChjaGlsZENyZWF0ZU1lbnVFbmFibGVkKHt9LCB7fSwgZGF0YSkpLnRvQmUodHJ1 ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCcgYW5kIGNoZWNrJywgKCkg PT4geworICAgICAgZGVzY3JpYmUoJyBpcyB0cnVlJywgKCkgPT4geworICAgICAgICBiZWZvcmVF YWNoKCgpID0+IHsKKyAgICAgICAgICBkYXRhID0ge2NoZWNrOiB0cnVlfTsKKyAgICAgICAgfSk7 CisKKyAgICAgICAgZGVzY3JpYmUoJywgb24gc2NoZW1hIG5vZGUnLCAoKSA9PiB7CisgICAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBsZXQgaGllcmFyY2h5ID0geworICAg ICAgICAgICAgICBpZDogJ3Jvb3QnLAorICAgICAgICAgICAgICBjaGlsZHJlbjogW3sKKyAgICAg ICAgICAgICAgICBpZDogJ2xldmVsMicsCisgICAgICAgICAgICAgICAgZGF0YToge190eXBlOiAn c2NoZW1hJ30sCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgfTsKKworICAgICAgICAg ICAgdHJlZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAgICBwZ0Jyb3dz ZXIudHJlZU1lbnUgPSB0cmVlOworICAgICAgICAgIH0pOworICAgICAgICAgIGl0KCcgaXQgaXMg dHJ1ZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChjaGlsZENyZWF0ZU1lbnVFbmFibGVk KAorICAgICAgICAgICAgICB7fSwgW3tpZDogJ2xldmVsMid9XSwgZGF0YQorICAgICAgICAgICAg KSkudG9CZSh0cnVlKTsKKworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBk ZXNjcmliZSgnLCBvbiBjaGlsZCBjb2xsZWN0aW9uIG5vZGUgdW5kZXIgc2NoZW1hIG5vZGUgJywg KCkgPT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgbGV0IGhp ZXJhcmNoeSA9IHsKKyAgICAgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICAgICAgY2hp bGRyZW46IFt7CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICAg IGRhdGE6IHtfdHlwZTogJ3NjaGVtYSd9LAorICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbewor ICAgICAgICAgICAgICAgICAgaWQ6ICdjb2xsLXRhYmxlJywKKyAgICAgICAgICAgICAgICAgIGRh dGE6IHtfdHlwZTogJ2NvbGwtdGFibGUnfSwKKyAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAg ICAgICAgfV0sCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB0cmVlID0gVHJlZUZha2Uu YnVpbGQoaGllcmFyY2h5KTsKKyAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSA9IHRyZWU7 CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBpdCgnIGl0IGlzIHRydWUnLCAoKSA9PiB7Cisg ICAgICAgICAgICBleHBlY3QoY2hpbGRDcmVhdGVNZW51RW5hYmxlZCgKKyAgICAgICAgICAgICAg e30sIFt7aWQ6ICdjb2xsLXRhYmxlJ31dLCBkYXRhCisgICAgICAgICAgICApKS50b0JlKHRydWUp OworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnLCBvbiBv bmUgb2YgdGhlIGNoaWxkIG5vZGUgdW5kZXIgc2NoZW1hIG5vZGUgJywgKCkgPT4geworICAgICAg ICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAg ICAgICAgICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAg ICAgICAgICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTog J3NjaGVtYSd9LAorICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICAg ICAgaWQ6ICdjb2xsLXRhYmxlJywKKyAgICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2Nv bGwtdGFibGUnfSwKKyAgICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAg ICAgICAgICBpZDogJ3RhYmxlLzEnLAorICAgICAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6 ICd0YWJsZSd9LAorICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgfV0sCisg ICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdHJlZSA9IFRy ZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUg PSB0cmVlOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJyBpdCBpcyB0cnVlJywgKCkg PT4geworICAgICAgICAgICAgZXhwZWN0KGNoaWxkQ3JlYXRlTWVudUVuYWJsZWQoCisgICAgICAg ICAgICAgIHt9LCBbe2lkOiAndGFibGUvMSd9XSwgZGF0YQorICAgICAgICAgICAgKSkudG9CZSh0 cnVlKTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgZGVzY3JpYmUoJywg b24gY2F0YWxvZyBub2RlJywgKCkgPT4geworICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAgICAgICAgaWQ6ICdyb290JywK KyAgICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAgICAgICAgaWQ6ICdsZXZlbDIn LAorICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NhdGFsb2cnfSwKKyAgICAgICAgICAg ICAgfV0sCisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB0cmVlID0gVHJlZUZha2UuYnVp bGQoaGllcmFyY2h5KTsKKyAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSA9IHRyZWU7Cisg ICAgICAgICAgfSk7CisgICAgICAgICAgaXQoJyBpdCBpcyBmYWxzZScsICgpID0+IHsKKyAgICAg ICAgICAgIGV4cGVjdCgKKyAgICAgICAgICAgICAgY2hpbGRDcmVhdGVNZW51RW5hYmxlZCh7fSwg W3tpZDogJ2xldmVsMid9XSwgZGF0YSkKKyAgICAgICAgICAgICkudG9CZShmYWxzZSk7CisgICAg ICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGRlc2NyaWJlKCcsIG9uIGNoaWxkIGNv bGxlY3Rpb24gbm9kZSB1bmRlciBjYXRhbG9nIG5vZGUgJywgKCkgPT4geworICAgICAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICAgICAgbGV0IGhpZXJhcmNoeSA9IHsKKyAgICAgICAg ICAgICAgaWQ6ICdyb290JywKKyAgICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAg ICAgICAgaWQ6ICdsZXZlbDInLAorICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ2NhdGFs b2cnfSwKKyAgICAgICAgICAgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgICAgICAgICAgIGlk OiAnY29sbC10YWJsZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjb2xsLXRh YmxlJ30sCisgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgIH1dLAorICAgICAgICAg ICAgfTsKKworICAgICAgICAgICAgdHJlZSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7Cisg ICAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUgPSB0cmVlOworICAgICAgICAgIH0pOworCisg ICAgICAgICAgaXQoJyBpdCBpcyBmYWxzZScsICgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChj aGlsZENyZWF0ZU1lbnVFbmFibGVkKAorICAgICAgICAgICAgICB7fSwgW3tpZDogJ2NvbGwtdGFi bGUnfV0sIGRhdGEKKyAgICAgICAgICAgICkpLnRvQmUoZmFsc2UpOworICAgICAgICAgIH0pOwor ICAgICAgICB9KTsKKworICAgICAgICBkZXNjcmliZSgnLCBvbiBvbmUgb2YgdGhlIGNoaWxkIG5v ZGUgdW5kZXIgY2F0YWxvZyBub2RlICcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgICAgIGxldCBoaWVyYXJjaHkgPSB7CisgICAgICAgICAgICAgIGlkOiAn cm9vdCcsCisgICAgICAgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAgICAgICAgIGlkOiAn bGV2ZWwyJywKKyAgICAgICAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjYXRhbG9nJ30sCisgICAg ICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAgICAgICAgICBpZDogJ2NvbGwtdGFi bGUnLAorICAgICAgICAgICAgICAgICAgZGF0YToge190eXBlOiAnY29sbC10YWJsZSd9LAorICAg ICAgICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAgICAgICAgICAgIGlkOiAndGFi bGUvMScsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ3RhYmxlJ30sCisgICAg ICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgICB9XSwKKyAgICAgICAgICAgICAgfV0s CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGll cmFyY2h5KTsKKyAgICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudSA9IHRyZWU7CisgICAgICAg ICAgfSk7CisKKyAgICAgICAgICBpdCgnIGl0IGlzIGZhbHNlJywgKCkgPT4geworICAgICAgICAg ICAgZXhwZWN0KGNoaWxkQ3JlYXRlTWVudUVuYWJsZWQoCisgICAgICAgICAgICAgIHt9LCBbe2lk OiAndGFibGUvMSd9XSwgZGF0YQorICAgICAgICAgICAgKSkudG9CZShmYWxzZSk7CisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CisKK2Rl c2NyaWJlKCcjY2hpbGREcm9wTWVudUVuYWJsZWQnLCAoKSA9PiB7CisgIGxldCB0cmVlOworCisg IGRlc2NyaWJlKCcgLSB0aGUgY2hpbGQgbm9kZSB1bmRlciBzY2hlbWEgbm9kZSAnLCAoKSA9PiB7 CisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBsZXQgaGllcmFyY2h5ID0geworICAgICAg ICBpZDogJ3Jvb3QnLAorICAgICAgICBjaGlsZHJlbjogW3sKKyAgICAgICAgICBpZDogJ2xldmVs MicsCisgICAgICAgICAgZGF0YToge190eXBlOiAnc2NoZW1hJ30sCisgICAgICAgICAgY2hpbGRy ZW46IFt7CisgICAgICAgICAgICBpZDogJ2NvbGwtdGFibGUnLAorICAgICAgICAgICAgZGF0YTog e190eXBlOiAnY29sbC10YWJsZSd9LAorICAgICAgICAgICAgY2hpbGRyZW46IFt7CisgICAgICAg ICAgICAgIGlkOiAndGFibGUvMScsCisgICAgICAgICAgICAgIGRhdGE6IHtfdHlwZTogJ3RhYmxl J30sCisgICAgICAgICAgICB9XSwKKyAgICAgICAgICB9XSwKKyAgICAgICAgfV0sCisgICAgICB9 OworCisgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsKKyAgICAgIHBnQnJv d3Nlci50cmVlTWVudSA9IHRyZWU7CisgICAgfSk7CisKKyAgICBpdCgnIGl0IGlzIHRydWUnLCAo KSA9PiB7CisgICAgICBleHBlY3QoaXNUcmVlSXRlbU9mQ2hpbGRPZlNjaGVtYSgKKyAgICAgICAg e30sIFt7aWQ6ICd0YWJsZS8xJ31dCisgICAgICApKS50b0JlKHRydWUpOworICAgIH0pOworICB9 KTsKKworICBkZXNjcmliZSgnLSB0aGUgY2hpbGQgbm9kZSB1bmRlciB0aGUgY2F0YWxvZyBub2Rl ICcsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGxldCBoaWVyYXJjaHkg PSB7CisgICAgICAgIGlkOiAncm9vdCcsCisgICAgICAgIGNoaWxkcmVuOiBbeworICAgICAgICAg IGlkOiAnbGV2ZWwyJywKKyAgICAgICAgICBkYXRhOiB7X3R5cGU6ICdjYXRhbG9nJ30sCisgICAg ICAgICAgY2hpbGRyZW46IFt7CisgICAgICAgICAgICBpZDogJ2NvbGwtdGFibGUnLAorICAgICAg ICAgICAgZGF0YToge190eXBlOiAnY29sbC10YWJsZSd9LAorICAgICAgICAgICAgY2hpbGRyZW46 IFt7CisgICAgICAgICAgICAgIGlkOiAndGFibGUvMScsCisgICAgICAgICAgICAgIGRhdGE6IHtf dHlwZTogJ3RhYmxlJ30sCisgICAgICAgICAgICB9XSwKKyAgICAgICAgICB9XSwKKyAgICAgICAg fV0sCisgICAgICB9OworCisgICAgICB0cmVlID0gVHJlZUZha2UuYnVpbGQoaGllcmFyY2h5KTsK KyAgICAgIHBnQnJvd3Nlci50cmVlTWVudSA9IHRyZWU7CisgICAgfSk7CisKKyAgICBpdCgnIGl0 IGlzIGZhbHNlJywgKCkgPT4geworICAgICAgZXhwZWN0KGlzVHJlZUl0ZW1PZkNoaWxkT2ZTY2hl bWEoCisgICAgICAgIHt9LCBbe2lkOiAndGFibGUvMSd9XQorICAgICAgKSkudG9CZShmYWxzZSk7 CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2Ny aXB0L3Jlc3RvcmUvcmVzdG9yZV9kaWFsb2dfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ19zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwLi4xNTZmNTZiYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ19zcGVjLmpzCkBAIC0wLDAgKzEs MjAzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8v IENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K Ky8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5j ZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVlL3RyZWVfZmFrZSc7 CitpbXBvcnQge1Jlc3RvcmVEaWFsb2d9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vdG9vbHMvcmVz dG9yZS9zdGF0aWMvanMvcmVzdG9yZV9kaWFsb2cnOworCitjb25zdCBjb250ZXh0ID0gZGVzY3Jp YmU7CisKK2Rlc2NyaWJlKCdSZXN0b3JlRGlhbG9nJywgKCkgPT4geworICBsZXQgcmVzdG9yZURp YWxvZzsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGpxdWVyeVNweTsKKyAgbGV0IGFsZXJ0aWZ5 U3B5OworICBsZXQgcmVzdG9yZU1vZGVsU3B5OworCisgIGJlZm9yZUVhY2goKCkgPT4geworICAg IHBnQnJvd3NlciA9IHsKKyAgICAgIHRyZWVNZW51OiBuZXcgVHJlZUZha2UoKSwKKyAgICAgIE5v ZGVzOiB7CisgICAgICAgIHNlcnZlcjogamFzbWluZS5jcmVhdGVTcHlPYmooJ05vZGVbc2VydmVy XScsIFsnZ2V0VHJlZU5vZGVIaWVyYXJjaHknXSksCisgICAgICAgIGRhdGFiYXNlOiBqYXNtaW5l LmNyZWF0ZVNweU9iaignTm9kZVtkYXRhYmFzZV0nLCBbJ2dldFRyZWVOb2RlSGllcmFyY2h5J10p LAorICAgICAgfSwKKyAgICB9OworICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIuaGFzSWQgPSB0 cnVlOworICAgIHBnQnJvd3Nlci5Ob2Rlcy5kYXRhYmFzZS5oYXNJZCA9IHRydWU7CisgICAganF1 ZXJ5U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2pxdWVyeVNweScpOworICAgIHJlc3RvcmVNb2Rl bFNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdyZXN0b3JlTW9kZWxTcHknKTsKKworICAgIGNvbnN0 IGhpZXJhcmNoeSA9IHsKKyAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgIHsKKyAgICAgICAgICBp ZDogJ3Jvb3QnLAorICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAgICAgICAgICB7CisgICAgICAg ICAgICAgIGlkOiAnc2VydmVyVHJlZU5vZGUnLAorICAgICAgICAgICAgICBkYXRhOiB7CisgICAg ICAgICAgICAgICAgX2lkOiAxMCwKKyAgICAgICAgICAgICAgICBfdHlwZTogJ3NlcnZlcicsCisg ICAgICAgICAgICAgICAgbGFiZWw6ICdzb21lLXRyZWUtbGFiZWwnLAorICAgICAgICAgICAgICB9 LAorICAgICAgICAgICAgICBjaGlsZHJlbjogWworICAgICAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgICAgIGlkOiAnc29tZV9kYXRhYmFzZScsCisgICAgICAgICAgICAgICAgICBkYXRhOiB7 CisgICAgICAgICAgICAgICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgICAgICAgICAg ICAgICBfaWQ6IDExLAorICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ3NvbWVfZGF0YWJhc2Un LAorICAgICAgICAgICAgICAgICAgICBfbGFiZWw6ICdzb21lX2RhdGFiYXNlX2xhYmVsJywKKyAg ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwgeworICAgICAgICAgICAgICAg ICAgaWQ6ICdkYXRhYmFzZV93aXRoX2VxdWFsX2luX25hbWUnLAorICAgICAgICAgICAgICAgICAg ZGF0YTogeworICAgICAgICAgICAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKKyAgICAgICAg ICAgICAgICAgICAgbGFiZWw6ICdzb21lX2RhdGFiYXNlJywKKyAgICAgICAgICAgICAgICAgICAg X2xhYmVsOiAnPXNvbWVfZGF0YWJhc2VfbGFiZWwnLAorICAgICAgICAgICAgICAgICAgfSwKKyAg ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgfSwKKyAgICAg ICAgICAgIHsKKyAgICAgICAgICAgICAgaWQ6ICdwcGFzU2VydmVyJywKKyAgICAgICAgICAgICAg ZGF0YTogeworICAgICAgICAgICAgICAgIF90eXBlOiAnc2VydmVyJywKKyAgICAgICAgICAgICAg ICBzZXJ2ZXJfdHlwZTogJ3BwYXMnLAorICAgICAgICAgICAgICAgIGNoaWxkcmVuOiBbCisgICAg ICAgICAgICAgICAgICB7aWQ6ICdzb21lTm9kZVVuZGVybmVhdGhQUEFTU2VydmVyJ30sCisgICAg ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAg ICAgXSwKKyAgICAgICAgfSwKKyAgICAgIF0sCisgICAgfTsKKworICAgIHBnQnJvd3Nlci50cmVl TWVudSA9IFRyZWVGYWtlLmJ1aWxkKGhpZXJhcmNoeSk7CisgIH0pOworCisgIGRlc2NyaWJlKCcj ZHJhdycsICgpID0+IHsKKyAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgIGFsZXJ0aWZ5U3B5 ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydhbGVydCcsICdkaWFsb2cnXSk7 CisgICAgICBhbGVydGlmeVNweVsncGdfcmVzdG9yZSddID0gamFzbWluZS5jcmVhdGVTcHkoJ3Bn X3Jlc3RvcmUnKTsKKyAgICAgIHJlc3RvcmVEaWFsb2cgPSBuZXcgUmVzdG9yZURpYWxvZygKKyAg ICAgICAgcGdCcm93c2VyLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIGFsZXJ0aWZ5U3B5 LAorICAgICAgICByZXN0b3JlTW9kZWxTcHkKKyAgICAgICk7CisKKyAgICAgIHBnQnJvd3Nlci5n ZXRfcHJlZmVyZW5jZSA9IGphc21pbmUuY3JlYXRlU3B5KCdnZXRfcHJlZmVyZW5jZXMnKTsKKyAg ICB9KTsKKworICAgIGNvbnRleHQoJ3RoZXJlIGFyZSBubyBhbmNlc3RvcnMgb2YgdGhlIHR5cGUg c2VydmVyJywgKCkgPT4geworICAgICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGRpYWxvZycsICgp ID0+IHsKKyAgICAgICAgcGdCcm93c2VyLnRyZWVNZW51LnNlbGVjdE5vZGUoW3tpZDogJ3Jvb3Qn fV0pOworICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgbnVsbCwgbnVsbCk7CisgICAg ICAgIGV4cGVjdChhbGVydGlmeVNweVsncGdfcmVzdG9yZSddKS5ub3QudG9IYXZlQmVlbkNhbGxl ZCgpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNwbGF5IGFuIGFsZXJ0IHdpdGggYSBSZXN0 b3JlIEVycm9yJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nLmRyYXcobnVsbCwgW3tp ZDogJ3Jvb3QnfV0sIG51bGwpOworICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRv SGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICdSZXN0b3JlIEVycm9yJywKKyAgICAgICAg ICAnUGxlYXNlIHNlbGVjdCBzZXJ2ZXIgb3IgY2hpbGQgbm9kZSBmcm9tIHRoZSBicm93c2VyIHRy ZWUuJworICAgICAgICApOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCd0aGVy ZSBpcyBhbiBhbmNlc3RvciBvZiB0aGUgdHlwZSBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICBjb250 ZXh0KCdubyBwcmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+IHsKKyAgICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICAgICAgcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlLmFuZC5yZXR1 cm5WYWx1ZSh1bmRlZmluZWQpOworICAgICAgICB9KTsKKworICAgICAgICBjb250ZXh0KCdzZXJ2 ZXIgaXMgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBh bGVydCB3aXRoICJSZXN0b3JlIEVycm9yIicsICgpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVE aWFsb2cuZHJhdyhudWxsLCBbe2lkOiAnc2VydmVyVHJlZU5vZGUnfV0sIG51bGwpOworICAgICAg ICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAg ICAgICAgICAgICAgJ1Jlc3RvcmUgRXJyb3InLAorICAgICAgICAgICAgICAnRmFpbGVkIHRvIGxv YWQgcHJlZmVyZW5jZSBwZ19iaW5fZGlyIG9mIG1vZHVsZSBwYXRocycKKyAgICAgICAgICAgICk7 CisgICAgICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGNvbnRleHQoJ3NlcnZlciBp cyBub3QgYSBwcGFzIHNlcnZlcicsICgpID0+IHsKKyAgICAgICAgICBpdCgnZGlzcGxheSBhbiBh bGVydCB3aXRoICJSZXN0b3JlIEVycm9yIicsICgpID0+IHsKKyAgICAgICAgICAgIHJlc3RvcmVE aWFsb2cuZHJhdyhudWxsLCBbe2lkOiAncHBhc1NlcnZlcid9XSwgbnVsbCk7CisgICAgICAgICAg ICBleHBlY3QoYWxlcnRpZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAg ICAgICAgICAnUmVzdG9yZSBFcnJvcicsCisgICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBw cmVmZXJlbmNlIHBwYXNfYmluX2RpciBvZiBtb2R1bGUgcGF0aHMnCisgICAgICAgICAgICApOwor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCdw cmVmZXJlbmNlIGNhbiBiZSBmb3VuZCcsICgpID0+IHsKKyAgICAgICAgY29udGV4dCgnYmluYXJ5 IGZvbGRlciBpcyBub3QgY29uZmlndXJlZCcsICgpID0+IHsKKyAgICAgICAgICBiZWZvcmVFYWNo KCgpID0+IHsKKyAgICAgICAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJu VmFsdWUoe30pOworICAgICAgICAgIH0pOworCisgICAgICAgICAgY29udGV4dCgnc2VydmVyIGlz IGEgcHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVy dCB3aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgpID0+IHsKKyAgICAgICAgICAgICAg cmVzdG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdzZXJ2ZXJUcmVlTm9kZSd9XSwgbnVsbCk7 CisgICAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeVNweS5hbGVydCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCisgICAgICAgICAgICAgICAgJ0NvbmZpZ3VyYXRpb24gcmVxdWlyZWQnLAorICAgICAg ICAgICAgICAgICdQbGVhc2UgY29uZmlndXJlIHRoZSBQb3N0Z3JlU1FMIEJpbmFyeSBQYXRoIGlu IHRoZSBQcmVmZXJlbmNlcyBkaWFsb2cuJworICAgICAgICAgICAgICApOworICAgICAgICAgICAg fSk7CisgICAgICAgICAgfSk7CisKKyAgICAgICAgICBjb250ZXh0KCdzZXJ2ZXIgaXMgbm90IGEg cHBhcyBzZXJ2ZXInLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZGlzcGxheSBhbiBhbGVydCB3 aXRoICJDb25maWd1cmF0aW9uIHJlcXVpcmVkIicsICgpID0+IHsKKyAgICAgICAgICAgICAgcmVz dG9yZURpYWxvZy5kcmF3KG51bGwsIFt7aWQ6ICdwcGFzU2VydmVyJ31dLCBudWxsKTsKKyAgICAg ICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgK KyAgICAgICAgICAgICAgICAnQ29uZmlndXJhdGlvbiByZXF1aXJlZCcsCisgICAgICAgICAgICAg ICAgJ1BsZWFzZSBjb25maWd1cmUgdGhlIEVEQiBBZHZhbmNlZCBTZXJ2ZXIgQmluYXJ5IFBhdGgg aW4gdGhlIFByZWZlcmVuY2VzIGRpYWxvZy4nCisgICAgICAgICAgICAgICk7CisgICAgICAgICAg ICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnYmlu YXJ5IGZvbGRlciBpcyBjb25maWd1cmVkJywgKCkgPT4geworICAgICAgICAgIGxldCBzcHk7Cisg ICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgICBzcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweU9iaignZ2xvYmFscycsIFsncmVzaXplVG8nXSk7CisgICAgICAgICAgICBhbGVydGlm eVNweVsncGdfcmVzdG9yZSddLmFuZAorICAgICAgICAgICAgICAucmV0dXJuVmFsdWUoc3B5KTsK KyAgICAgICAgICAgIHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZS5hbmQucmV0dXJuVmFsdWUoe3Zh bHVlOiAnL3NvbWUvcGF0aCd9KTsKKyAgICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlcy5zZXJ2ZXIu bGFiZWwgPSAnc29tZS1zZXJ2ZXItbGFiZWwnOworICAgICAgICAgIH0pOworCisgICAgICAgICAg aXQoJ2Rpc3BsYXlzIHRoZSBkaWFsb2cnLCAoKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlh bG9nLmRyYXcobnVsbCwgW3tpZDogJ3NlcnZlclRyZWVOb2RlJ31dLCB7c2VydmVyOiB0cnVlfSk7 CisgICAgICAgICAgICBleHBlY3QoYWxlcnRpZnlTcHlbJ3BnX3Jlc3RvcmUnXSkudG9IYXZlQmVl bkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICdSZXN0b3JlIChzb21lLXNlcnZlci1sYWJlbDog c29tZS10cmVlLWxhYmVsKScsCisgICAgICAgICAgICAgIFt7aWQ6ICdzZXJ2ZXJUcmVlTm9kZSd9 XSwKKyAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIF9pZDogMTAsCisgICAgICAgICAg ICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgICAgIGxhYmVsOiAnc29tZS10cmVl LWxhYmVsJywKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgcGdCcm93c2VyLk5vZGVz LnNlcnZlcgorICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIGV4cGVjdChzcHkucmVzaXplVG8p LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCc2NSUnLCAnNjAlJyk7CisgICAgICAgICAgfSk7CisKKyAg ICAgICAgICBjb250ZXh0KCdkYXRhYmFzZSBsYWJlbCBjb250YWluICI9IicsICgpID0+IHsKKyAg ICAgICAgICAgIGl0KCdzaG91bGQgY3JlYXRlIGFsZXJ0IGRpYWxvZyB3aXRoIHJlc3RvcmUgZXJy b3InLCAoKSA9PiB7CisgICAgICAgICAgICAgIHJlc3RvcmVEaWFsb2cuZHJhdyhudWxsLCBbe2lk OiAnZGF0YWJhc2Vfd2l0aF9lcXVhbF9pbl9uYW1lJ31dLCBudWxsKTsKKyAgICAgICAgICAgICAg ZXhwZWN0KGFsZXJ0aWZ5U3B5LmFsZXJ0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnUmVzdG9yZSBF cnJvcicsCisgICAgICAgICAgICAgICAgJ0RhdGFiYXNlcyB3aXRoID0gc3ltYm9scyBpbiB0aGUg bmFtZSBjYW5ub3QgYmUgYmFja2VkIHVwIG9yIHJlc3RvcmVkIHVzaW5nIHRoaXMgdXRpbGl0eS4n KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0p OworICAgIH0pOworICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dyYXBwZXJfc3BlYy5qcyBiL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvcmVzdG9yZS9yZXN0b3JlX2RpYWxvZ193cmFwcGVyX3NwZWMuanMKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmMyYTMxZDU1Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9yZXN0b3JlL3Jlc3RvcmVfZGlhbG9nX3dy YXBwZXJfc3BlYy5qcwpAQCAtMCwwICsxLDU5MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDE4LCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHtUcmVlRmFrZX0g ZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOworaW1wb3J0IHtSZXN0b3JlRGlhbG9nV3JhcHBlcn0g ZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9yZXN0b3JlL3N0YXRpYy9qcy9yZXN0b3JlX2Rp YWxvZ193cmFwcGVyJzsKK2ltcG9ydCBNb2NrQWRhcHRlciBmcm9tICdheGlvcy1tb2NrLWFkYXB0 ZXInOworaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKK2ltcG9ydCB7RmFrZU1vZGVs fSBmcm9tICcuLi9mYWtlX21vZGVsJzsKK2ltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4u L3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CisKK2xldCBjb250ZXh0ID0gZGVzY3JpYmU7 CisKK2Rlc2NyaWJlKCdSZXN0b3JlRGlhbG9nV3JhcHBlcicsICgpID0+IHsKKyAgbGV0IGpxdWVy eVNweTsKKyAgbGV0IHBnQnJvd3NlcjsKKyAgbGV0IGFsZXJ0aWZ5U3B5OworICBsZXQgZGlhbG9n TW9kZWxLbGFzc1NweTsKKyAgbGV0IGJhY2tmb3JtOworICBsZXQgZ2VuZXJhdGVkUmVzdG9yZU1v ZGVsOworICBsZXQgcmVzdG9yZURpYWxvZ1dyYXBwZXI7CisgIGxldCBub0RhdGFOb2RlOworICBs ZXQgc2VydmVyVHJlZU5vZGU7CisgIGxldCB2aWV3U2NoZW1hOworICBsZXQgcmVzdG9yZUpRdWVy eUNvbnRhaW5lclNweTsKKyAgbGV0IHJlc3RvcmVOb2RlQ2hpbGROb2RlU3B5OworICBsZXQgcmVz dG9yZU5vZGU7CisKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgcGdCcm93c2VyID0geworICAg ICAgdHJlZU1lbnU6IG5ldyBUcmVlRmFrZSgpLAorICAgICAgTm9kZXM6IHsKKyAgICAgICAgc2Vy dmVyOiB7CisgICAgICAgICAgaGFzSWQ6IHRydWUsCisgICAgICAgICAgZ2V0VHJlZU5vZGVIaWVy YXJjaHk6IGphc21pbmUuY3JlYXRlU3B5KCdnZXRUcmVlTm9kZUhpZXJhcmNoeScpLAorICAgICAg ICB9LAorICAgICAgfSwKKyAgICAgIGtleWJvYXJkTmF2aWdhdGlvbjogamFzbWluZS5jcmVhdGVT cHlPYmooJ2tleWJvYXJkTmF2aWdhdGlvbicsIFsnZ2V0RGlhbG9nVGFiTmF2aWdhdG9yJ10pLAor ICAgIH07CisKKyAgICBub0RhdGFOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUo J2xldmVsMS4xJywgdW5kZWZpbmVkLCBbe2lkOiAnbGV2ZWwxJ31dKTsKKyAgICBzZXJ2ZXJUcmVl Tm9kZSA9IHBnQnJvd3Nlci50cmVlTWVudS5hZGROZXdOb2RlKCdsZXZlbDIuMScsIHsKKyAgICAg IF90eXBlOiAnc2VydmVyJywKKyAgICAgIF9pZDogMTAsCisgICAgICBsYWJlbDogJ3NvbWUtdHJl ZS1sYWJlbCcsCisgICAgfSwgW3tpZDogJ2xldmVsMi4xJ31dKTsKKyAgICBqcXVlcnlTcHkgPSBq YXNtaW5lLmNyZWF0ZVNweSgnanF1ZXJ5U3B5Jyk7CisgICAgZGlhbG9nTW9kZWxLbGFzc1NweSA9 IGphc21pbmUuY3JlYXRlU3B5KCdkaWFsb2dNb2RlbEtsYXNzJyk7CisgICAgZ2VuZXJhdGVkUmVz dG9yZU1vZGVsID0ge307CisgICAgdmlld1NjaGVtYSA9IHt9OworICAgIGJhY2tmb3JtID0gamFz bWluZS5jcmVhdGVTcHlPYmooJ2JhY2tmb3JtJywgWydnZW5lcmF0ZVZpZXdTY2hlbWEnLCAnRGlh bG9nJ10pOworICAgIGJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVtYS5hbmQucmV0dXJuVmFsdWUo dmlld1NjaGVtYSk7CisgICAgZGlhbG9nTW9kZWxLbGFzc1NweS5hbmQucmV0dXJuVmFsdWUoZ2Vu ZXJhdGVkUmVzdG9yZU1vZGVsKTsKKyAgICByZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5ID0gamFz bWluZS5jcmVhdGVTcHlPYmooJ3Jlc3RvcmVKUXVlcnlDb250YWluZXInLCBbJ2dldCcsICdhdHRy J10pOworICAgIHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHkuZ2V0LmFuZC5yZXR1cm5WYWx1ZShy ZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5KTsKKworICAgIHJlc3RvcmVOb2RlID0geworICAgICAg X19pbnRlcm5hbDogeworICAgICAgICBidXR0b25zOiBbCisgICAgICAgICAge30sIHt9LAorICAg ICAgICAgIHsKKyAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgZGlzYWJsZWQ6 IGZhbHNlLAorICAgICAgICAgICAgfSwKKyAgICAgICAgICB9LAorICAgICAgICBdLAorICAgICAg fSwKKyAgICAgIGVsZW1lbnRzOiB7CisgICAgICAgIGJvZHk6IHsKKyAgICAgICAgICBjaGlsZE5v ZGVzOiBbCisgICAgICAgICAgICB7fSwKKyAgICAgICAgICBdLAorICAgICAgICB9LAorICAgICAg ICBjb250ZW50OiBqYXNtaW5lLmNyZWF0ZVNweU9iaignY29udGVudCcsIFsnYXBwZW5kQ2hpbGQn LCAnYXR0ciddKSwKKyAgICAgIH0sCisgICAgfTsKKworCisgICAgcmVzdG9yZU5vZGVDaGlsZE5v ZGVTcHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignc29tZXRoaW5nJywgWydhZGRDbGFzcyddKTsK KworICAgIGpxdWVyeVNweS5hbmQuY2FsbEZha2UoKHNlbGVjdG9yKSA9PiB7CisgICAgICBpZiAo c2VsZWN0b3IgPT09ICc8ZGl2IGNsYXNzPVwncmVzdG9yZV9kaWFsb2dcJz48L2Rpdj4nKSB7Cisg ICAgICAgIHJldHVybiByZXN0b3JlSlF1ZXJ5Q29udGFpbmVyU3B5OworICAgICAgfSBlbHNlIGlm IChzZWxlY3RvciA9PT0gcmVzdG9yZU5vZGUuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKSB7 CisgICAgICAgIHJldHVybiByZXN0b3JlTm9kZUNoaWxkTm9kZVNweTsKKyAgICAgIH0KKyAgICB9 KTsKKyAgfSk7CisKKyAgZGVzY3JpYmUoJyNwcmVwYXJlJywgKCkgPT4geworCisgICAgYmVmb3Jl RWFjaCgoKSA9PiB7CisgICAgICBhbGVydGlmeVNweSA9IGphc21pbmUuY3JlYXRlU3B5T2JqKCdh bGVydGlmeScsIFsnYWxlcnQnLCAnZGlhbG9nJ10pOworICAgICAgcmVzdG9yZURpYWxvZ1dyYXBw ZXIgPSBuZXcgUmVzdG9yZURpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNsYXNzPVwncmVz dG9yZV9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAncmVzdG9yZURpYWxvZ1RpdGxlJywKKyAg ICAgICAgJ3Jlc3RvcmUnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBnQnJvd3NlciwK KyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NTcHksCisgICAg ICAgIGJhY2tmb3JtCisgICAgICApOworICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIgPSBPYmpl Y3QuYXNzaWduKHJlc3RvcmVEaWFsb2dXcmFwcGVyLCByZXN0b3JlTm9kZSk7CisgICAgfSk7Cisg ICAgY29udGV4dCgnbm8gdHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAg aXQoJ2RvZXMgbm90IGNyZWF0ZSBhIGJhY2tmb3JtIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAg cmVzdG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFja2Zvcm0u RGlhbG9nKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdk aXNhYmxlcyB0aGUgYnV0dG9uICJzdWJtaXQgYnV0dG9uIiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNl bGVjdGVkJywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7 CisgICAgICAgIGV4cGVjdChyZXN0b3JlRGlhbG9nV3JhcHBlci5fX2ludGVybmFsLmJ1dHRvbnNb Ml0uZWxlbWVudC5kaXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworICAgIH0pOworCisg ICAgY29udGV4dCgnc2VsZWN0ZWQgdHJlZSBub2RlIGhhcyBubyBkYXRhJywgKCkgPT4geworICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3RO b2RlKG5vRGF0YU5vZGUuZG9tTm9kZSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2RvZXMgbm90 IGNyZWF0ZSBhIGJhY2tmb3JtIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxv Z1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QoYmFja2Zvcm0uRGlhbG9nKS5ub3Qu dG9IYXZlQmVlbkNhbGxlZCgpOworICAgICAgfSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUg YnV0dG9uICJzdWJtaXQgYnV0dG9uIiB1bnRpbCBhIGZpbGVuYW1lIGlzIHNlbGVjdGVkJywgKCkg PT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4 cGVjdChyZXN0b3JlRGlhbG9nV3JhcHBlci5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5k aXNhYmxlZCkudG9CZSh0cnVlKTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgn dHJlZSBlbGVtZW50IGlzIHNlbGVjdGVkJywgKCkgPT4geworICAgICAgbGV0IHRyZWVIaWVyYXJj aHlJbmZvcm1hdGlvbjsKKyAgICAgIGxldCBkaWFsb2dTcHk7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgdHJlZUhpZXJhcmNoeUluZm9ybWF0aW9uID0geworICAgICAgICAgIHNl cnZlcjogeworICAgICAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAorICAgICAgICAgICAgX2lkOiAx MCwKKyAgICAgICAgICAgIHByaW9yaXR5OiAwLAorICAgICAgICAgICAgbGFiZWw6ICdzb21lLXRy ZWUtbGFiZWwnLAorICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICAgIHBnQnJvd3Nlci50 cmVlTWVudS5zZWxlY3ROb2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOworICAgICAgICBwZ0Jy b3dzZXIuTm9kZXNbJ3NlcnZlciddLmdldFRyZWVOb2RlSGllcmFyY2h5LmFuZAorICAgICAgICAg IC5yZXR1cm5WYWx1ZSh0cmVlSGllcmFyY2h5SW5mb3JtYXRpb24pOworICAgICAgICBkaWFsb2dT cHkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignbmV3VmlldycsIFsncmVuZGVyJ10pOworICAgICAg ICBkaWFsb2dTcHkuJGVsID0gamFzbWluZS5jcmVhdGVTcHlPYmooJyRlbCcsIFsnZmluZCcsICdh dHRyJ10pOworICAgICAgICBkaWFsb2dTcHkubW9kZWwgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaign bW9kZWwnLCBbJ29uJ10pOworICAgICAgICBkaWFsb2dTcHkuJGVsLmZpbmQuYW5kLnJldHVyblZh bHVlKFtdKTsKKworICAgICAgICBiYWNrZm9ybS5EaWFsb2cuYW5kLnJldHVyblZhbHVlKGRpYWxv Z1NweSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2NyZWF0ZXMgYSBiYWNrZm9ybSBkaWFsb2cg YW5kIGRpc3BsYXlzIGl0JywgKCkgPT4geworICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5w cmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChiYWNrZm9ybS5EaWFsb2cpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKHsKKyAgICAgICAgICBlbDogcmVzdG9yZUpRdWVyeUNvbnRhaW5lclNweSwKKyAgICAg ICAgICBtb2RlbDogZ2VuZXJhdGVkUmVzdG9yZU1vZGVsLAorICAgICAgICAgIHNjaGVtYTogdmll d1NjaGVtYSwKKyAgICAgICAgfSk7CisKKyAgICAgICAgZXhwZWN0KGRpYWxvZ1NweS5yZW5kZXIp LnRvSGF2ZUJlZW5DYWxsZWQoKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnYWRkIGFsZXJ0aWZ5 IGNsYXNzZXMgdG8gcmVzdG9yZSBub2RlIGNoaWxkbm9kZScsICgpID0+IHsKKyAgICAgICAgcmVz dG9yZURpYWxvZ1dyYXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZU5vZGVD aGlsZE5vZGVTcHkuYWRkQ2xhc3MpCisgICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdh bGVydGlmeV90b29sc19kaWFsb2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycpOworICAgICAg fSk7CisKKyAgICAgIGl0KCdkaXNhYmxlcyB0aGUgYnV0dG9uIHN1Ym1pdCBidXR0b24gdW50aWwg YSBmaWxlbmFtZSBpcyBzZWxlY3RlZCcsICgpID0+IHsKKyAgICAgICAgcmVzdG9yZURpYWxvZ1dy YXBwZXIucHJlcGFyZSgpOworICAgICAgICBleHBlY3QocmVzdG9yZU5vZGUuX19pbnRlcm5hbC5i dXR0b25zWzJdLmVsZW1lbnQuZGlzYWJsZWQpLnRvQmUodHJ1ZSk7CisgICAgICB9KTsKKworICAg ICAgaXQoJ2dlbmVyYXRlcyBhIG5ldyByZXN0b3JlIG1vZGVsJywgKCkgPT4geworICAgICAgICBy ZXN0b3JlRGlhbG9nV3JhcHBlci5wcmVwYXJlKCk7CisgICAgICAgIGV4cGVjdChkaWFsb2dNb2Rl bEtsYXNzU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICB7bm9kZV9kYXRhOiBw Z0Jyb3dzZXIuTm9kZXNbJ3NlcnZlciddfSwKKyAgICAgICAgICB7bm9kZV9pbmZvOiB0cmVlSGll cmFyY2h5SW5mb3JtYXRpb259CisgICAgICAgICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Fk ZCB0aGUgbmV3IGRpYWxvZyB0byB0aGUgcmVzdG9yZSBub2RlIEhUTUwnLCAoKSA9PiB7CisgICAg ICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnByZXBhcmUoKTsKKyAgICAgICAgZXhwZWN0KHJlc3Rv cmVOb2RlLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KHJlc3RvcmVKUXVlcnlDb250YWluZXJTcHkpOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOwor CisgIGRlc2NyaWJlKCdvbkJ1dHRvbkNsaWNrZWQnLCAoKSA9PiB7CisgICAgbGV0IG5ldHdvcmtN b2NrOworCisgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICBwZ0Jyb3dzZXIuc2hvd0hlbHAg PSBqYXNtaW5lLmNyZWF0ZVNweSgnc2hvd0hlbHAnKTsKKyAgICAgIG5ldHdvcmtNb2NrID0gbmV3 IE1vY2tBZGFwdGVyKGF4aW9zKTsKKyAgICAgIGFsZXJ0aWZ5U3B5ID0gamFzbWluZS5jcmVhdGVT cHlPYmooJ2FsZXJ0aWZ5JywgWydzdWNjZXNzJywgJ2FsZXJ0J10pOworICAgICAgcmVzdG9yZURp YWxvZ1dyYXBwZXIgPSBuZXcgUmVzdG9yZURpYWxvZ1dyYXBwZXIoCisgICAgICAgICc8ZGl2IGNs YXNzPVwncmVzdG9yZV9kaWFsb2dcJz48L2Rpdj4nLAorICAgICAgICAncmVzdG9yZURpYWxvZ1Rp dGxlJywKKyAgICAgICAgJ3Jlc3RvcmUnLAorICAgICAgICBqcXVlcnlTcHksCisgICAgICAgIHBn QnJvd3NlciwKKyAgICAgICAgYWxlcnRpZnlTcHksCisgICAgICAgIGRpYWxvZ01vZGVsS2xhc3NT cHksCisgICAgICAgIGJhY2tmb3JtCisgICAgICApOworICAgICAgcmVzdG9yZURpYWxvZ1dyYXBw ZXIgPSBPYmplY3QuYXNzaWduKHJlc3RvcmVEaWFsb2dXcmFwcGVyLCByZXN0b3JlTm9kZSk7CisK KyAgICB9KTsKKworICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7CisgICAgICBuZXR3b3JrTW9j ay5yZXN0b3JlKCk7CisgICAgfSk7CisKKyAgICBjb250ZXh0KCdkaWFsb2cgaGVscCBidXR0b24g d2FzIHByZXNzZWQnLCAoKSA9PiB7CisgICAgICBsZXQgbmV0d29ya0NhbGxlZDsKKyAgICAgIGJl Zm9yZUVhY2goKCkgPT4geworICAgICAgICBuZXR3b3JrQ2FsbGVkID0gZmFsc2U7CisgICAgICAg IHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKHNlcnZlclRyZWVOb2RlLmRvbU5vZGUpOwor ICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgvLisvKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAg bmV0d29ya0NhbGxlZCA9IHRydWU7CisgICAgICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAg ICAgfSk7CisKKyAgICAgICAgY29uc3QgZXZlbnQgPSB7CisgICAgICAgICAgYnV0dG9uOiB7Cisg ICAgICAgICAgICBlbGVtZW50OiB7CisgICAgICAgICAgICAgIG5hbWU6ICdkaWFsb2dfaGVscCcs CisgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKGF0dHJpYnV0ZU5hbWUpID0+IHsKKyAgICAg ICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PT0gJ3VybCcpIHsKKyAgICAgICAgICAgICAg ICAgIHJldHVybiAnaHR0cDovL3NvbWV1cmwnOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAo YXR0cmlidXRlTmFtZSA9PT0gJ2xhYmVsJykgeworICAgICAgICAgICAgICAgICAgcmV0dXJuICdz b21lIGxhYmVsJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICB9LAorICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgICAgIHJlc3RvcmVEaWFsb2dX cmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZGlzcGxheXMg aGVscCBmb3IgZGlhbG9nJywgKCkgPT4geworICAgICAgICBleHBlY3QocGdCcm93c2VyLnNob3dI ZWxwKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKKyAgICAgICAgICAnZGlhbG9nX2hlbHAnLAorICAg ICAgICAgICdodHRwOi8vc29tZXVybCcsCisgICAgICAgICAgcGdCcm93c2VyLk5vZGVzWydzZXJ2 ZXInXSwKKyAgICAgICAgICBzZXJ2ZXJUcmVlTm9kZSwKKyAgICAgICAgICAnc29tZSBsYWJlbCcK KyAgICAgICAgKTsKKyAgICAgIH0pOworCisgICAgICBpdCgnZG9lcyBub3Qgc3RhcnQgdGhlIHJl c3RvcmUnLCAoKSA9PiB7CisgICAgICAgIGV4cGVjdChuZXR3b3JrQ2FsbGVkKS50b0JlKGZhbHNl KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgnb2JqZWN0IGhlbHAgYnV0dG9u IHdhcyBwcmVzc2VkJywgKCkgPT4geworICAgICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAg ICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9kZShzZXJ2ZXJUcmVlTm9kZS5kb21Ob2RlKTsK KyAgICAgICAgbmV0d29ya01vY2sub25BbnkoLy4rLykucmVwbHkoKCkgPT4geworICAgICAgICAg IG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAgICAgIHJldHVybiBbMjAwLCB7fV07CisgICAg ICAgIH0pOworCisgICAgICAgIGNvbnN0IGV2ZW50ID0geworICAgICAgICAgIGJ1dHRvbjogewor ICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICBuYW1lOiAnb2JqZWN0X2hlbHAn LAorICAgICAgICAgICAgICBnZXRBdHRyaWJ1dGU6IChhdHRyaWJ1dGVOYW1lKSA9PiB7CisgICAg ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT09ICd1cmwnKSB7CisgICAgICAgICAgICAg ICAgICByZXR1cm4gJ2h0dHA6Ly9zb21ldXJsJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg KGF0dHJpYnV0ZU5hbWUgPT09ICdsYWJlbCcpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAn c29tZSBsYWJlbCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgfSwKKyAgICAgICAgICB9LAorICAgICAgICB9OworICAgICAgICByZXN0b3JlRGlhbG9n V3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2Rpc3BsYXlz IGhlbHAgZm9yIGRpYWxvZycsICgpID0+IHsKKyAgICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zaG93 SGVscCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgJ29iamVjdF9oZWxwJywKKyAg ICAgICAgICAnaHR0cDovL3NvbWV1cmwnLAorICAgICAgICAgIHBnQnJvd3Nlci5Ob2Rlc1snc2Vy dmVyJ10sCisgICAgICAgICAgc2VydmVyVHJlZU5vZGUsCisgICAgICAgICAgJ3NvbWUgbGFiZWwn CisgICAgICAgICk7CisgICAgICB9KTsKKworICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSBy ZXN0b3JlJywgKCkgPT4geworICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxz ZSk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ3Jlc3RvcmUgYnV0dG9uIHdh cyBwcmVzc2VkJywgKCkgPT4geworICAgICAgbGV0IG5ldHdvcmtDYWxsZWQ7CisgICAgICBsZXQg ZXZlbnQ7CisKKyAgICAgIGNvbnRleHQoJ25vIHRyZWUgbm9kZSBpcyBzZWxlY3RlZCcsICgpID0+ IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya0NhbGxlZCA9 IGZhbHNlOworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KC8uKy8pLnJlcGx5KCgpID0+IHsK KyAgICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIFsy MDAsIHt9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBldmVudCA9IHsKKyAgICAgICAgICAg IGJ1dHRvbjogeworICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdyZXN0b3JlJywKKyAg ICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgIGdldEF0dHJpYnV0ZTogKCkg PT4geworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29tZXVybCc7CisgICAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg fTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2RvZXMgbm90IHN0YXJ0IHRoZSByZXN0b3Jl JywgKCkgPT4geworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50 KTsKKyAgICAgICAgICBleHBlY3QobmV0d29ya0NhbGxlZCkudG9CZShmYWxzZSk7CisgICAgICAg IH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3RyZWUgbm9kZSBzZWxlY3RlZCBoYXMg bm8gZGF0YScsICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAg bmV0d29ya0NhbGxlZCA9IGZhbHNlOworICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KC8uKy8p LnJlcGx5KCgpID0+IHsKKyAgICAgICAgICAgIG5ldHdvcmtDYWxsZWQgPSB0cnVlOworICAgICAg ICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICBldmVudCA9 IHsKKyAgICAgICAgICAgIGJ1dHRvbjogeworICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6 ICdyZXN0b3JlJywKKyAgICAgICAgICAgICAgZWxlbWVudDogeworICAgICAgICAgICAgICAgIGdl dEF0dHJpYnV0ZTogKCkgPT4geworICAgICAgICAgICAgICAgICAgcmV0dXJuICdodHRwOi8vc29t ZXVybCc7CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg IH0sCisgICAgICAgICAgfTsKKyAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuc2VsZWN0Tm9k ZShub0RhdGFOb2RlLmRvbU5vZGUpOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZG9lcyBu b3Qgc3RhcnQgdGhlIHJlc3RvcmUnLCAoKSA9PiB7CisgICAgICAgICAgcmVzdG9yZURpYWxvZ1dy YXBwZXIuY2FsbGJhY2soZXZlbnQpOworICAgICAgICAgIGV4cGVjdChuZXR3b3JrQ2FsbGVkKS50 b0JlKGZhbHNlKTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAgICAgY29udGV4dCgndHJl ZSBub2RlIHNlbGVjdCBoYXMgZGF0YScsICgpID0+IHsKKworICAgICAgICBsZXQgZGF0YWJhc2VU cmVlTm9kZTsKKworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBkYXRhYmFz ZVRyZWVOb2RlID0gcGdCcm93c2VyLnRyZWVNZW51LmFkZE5ld05vZGUoJ2xldmVsMy4xJywgewor ICAgICAgICAgICAgX3R5cGU6ICdkYXRhYmFzZScsCisgICAgICAgICAgICBfaWQ6IDEwLAorICAg ICAgICAgICAgX2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgfSwgW3tp ZDogJ2xldmVsMy4xJ31dKTsKKyAgICAgICAgICBwZ0Jyb3dzZXIudHJlZU1lbnUuYWRkQ2hpbGQo c2VydmVyVHJlZU5vZGUsIGRhdGFiYXNlVHJlZU5vZGUpOworICAgICAgICAgIHBnQnJvd3Nlci5O b2Rlcy5kYXRhYmFzZSA9IHsKKyAgICAgICAgICAgIGhhc0lkOiB0cnVlLAorICAgICAgICAgICAg X2xhYmVsOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgfTsKKyAgICAgICAgICBs ZXQgZmFrZU1vZGVsID0gbmV3IEZha2VNb2RlbCgpOworICAgICAgICAgIGZha2VNb2RlbC5zZXQo J3NvbWUta2V5JywgJ3NvbWUtdmFsdWUnKTsKKyAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBl ci52aWV3ID0geworICAgICAgICAgICAgbW9kZWw6IGZha2VNb2RlbCwKKyAgICAgICAgICB9Owor ICAgICAgICAgIHBnQnJvd3Nlci50cmVlTWVudS5zZWxlY3ROb2RlKGRhdGFiYXNlVHJlZU5vZGUu ZG9tTm9kZSk7CisgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cyA9IGphc21pbmUuY3JlYXRlU3B5 T2JqKCdwZ0Jyb3dzZXJFdmVudHNTcHknLCBbJ3RyaWdnZXInXSk7CisgICAgICAgICAgZXZlbnQg PSB7CisgICAgICAgICAgICBidXR0b246IHsKKyAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUn OiAncmVzdG9yZScsCisgICAgICAgICAgICAgIGVsZW1lbnQ6IHsKKyAgICAgICAgICAgICAgICBn ZXRBdHRyaWJ1dGU6ICgpID0+IHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiAnaHR0cDovL3Nv bWV1cmwnOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICB9LAorICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBjb250ZXh0KCdyZXN0b3Jl IGpvYiBjcmVhdGVkIHN1Y2Nlc3NmdWxseScsICgpID0+IHsKKyAgICAgICAgICBsZXQgZGF0YVNl bnRUb1NlcnZlcjsKKyAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICAgIG5l dHdvcmtNb2NrLm9uUG9zdCgnL3Jlc3RvcmUvam9iLzEwJykucmVwbHkoKHJlcXVlc3QpID0+IHsK KyAgICAgICAgICAgICAgZGF0YVNlbnRUb1NlcnZlciA9IHJlcXVlc3QuZGF0YTsKKyAgICAgICAg ICAgICAgcmV0dXJuIFsyMDAsIHt9XTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgIH0pOwor CisgICAgICAgICAgaXQoJ2NyZWF0ZSBhbiBzdWNjZXNzIGFsZXJ0IGJveCcsIChkb25lKSA9PiB7 CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAg ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5 U3B5LnN1Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdSZXN0 b3JlIGpvYiBjcmVhdGVkLicsCisgICAgICAgICAgICAgICAgNQorICAgICAgICAgICAgICApOwor ICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAgICB9KTsK KworICAgICAgICAgIGl0KCd0cmlnZ2VyIGJhY2tncm91bmQgcHJvY2VzcycsIChkb25lKSA9PiB7 CisgICAgICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAg ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgZXhwZWN0KHBnQnJvd3Nl ci5FdmVudHMudHJpZ2dlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoCisgICAgICAgICAgICAgICAg J3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLAorICAgICAgICAgICAgICAgIHJlc3RvcmVEaWFs b2dXcmFwcGVyCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgIGRvbmUoKTsKKyAgICAg ICAgICAgIH0sIDApOworICAgICAgICAgIH0pOworCisgICAgICAgICAgaXQoJ3NlbmQgY29ycmVj dCBkYXRhIHRvIHNlcnZlcicsIChkb25lKSA9PiB7CisgICAgICAgICAgICByZXN0b3JlRGlhbG9n V3JhcHBlci5jYWxsYmFjayhldmVudCk7CisgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsK KyAgICAgICAgICAgICAgZXhwZWN0KEpTT04ucGFyc2UoZGF0YVNlbnRUb1NlcnZlcikpLnRvRXF1 YWwoeworICAgICAgICAgICAgICAgICdzb21lLWtleSc6ICdzb21lLXZhbHVlJywKKyAgICAgICAg ICAgICAgICAnZGF0YWJhc2UnOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgICB9LCAwKTsKKyAgICAgICAg ICB9KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgY29udGV4dCgnZXJyb3IgY3JlYXRpbmcgcmVz dG9yZSBqb2InLCAoKSA9PiB7CisgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAg ICAgICBuZXR3b3JrTW9jay5vblBvc3QoJy9yZXN0b3JlL2pvYi8xMCcpLnJlcGx5KCgpID0+IHsK KyAgICAgICAgICAgICAgcmV0dXJuIFs0MDAsIHt9XTsKKyAgICAgICAgICAgIH0pOworICAgICAg ICAgIH0pOworCisgICAgICAgICAgaXQoJ2NyZWF0ZXMgYW4gYWxlcnQgYm94JywgKGRvbmUpID0+ IHsKKyAgICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLmNhbGxiYWNrKGV2ZW50KTsKKyAg ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICBleHBlY3QoYWxlcnRp ZnlTcHkuYWxlcnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAorICAgICAgICAgICAgICAgICdSZXN0 b3JlIGpvYiBmYWlsZWQuJywKKyAgICAgICAgICAgICAgICB1bmRlZmluZWQKKyAgICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgICAgfSwgMCk7CisgICAgICAg ICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworCisgIGRlc2Ny aWJlKCdzZXRFeHRyYVBhcmFtZXRlcnMnLCAoKSA9PiB7CisgICAgbGV0IHNlbGVjdGVkTm9kZTsK KyAgICBsZXQgdHJlZUluZm87CisgICAgbGV0IG1vZGVsOworCisgICAgYmVmb3JlRWFjaCgoKSA9 PiB7CisgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlciA9IG5ldyBSZXN0b3JlRGlhbG9nV3JhcHBl cigKKyAgICAgICAgJzxkaXYgY2xhc3M9XCdyZXN0b3JlX2RpYWxvZ1wnPjwvZGl2PicsCisgICAg ICAgICdyZXN0b3JlRGlhbG9nVGl0bGUnLAorICAgICAgICAncmVzdG9yZScsCisgICAgICAgIGpx dWVyeVNweSwKKyAgICAgICAgcGdCcm93c2VyLAorICAgICAgICBhbGVydGlmeVNweSwKKyAgICAg ICAgZGlhbG9nTW9kZWxLbGFzc1NweSwKKyAgICAgICAgYmFja2Zvcm0KKyAgICAgICk7CisKKyAg ICAgIG1vZGVsID0gbmV3IEZha2VNb2RlbCgpOworICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIu dmlldyA9IHsKKyAgICAgICAgbW9kZWw6IG1vZGVsLAorICAgICAgfTsKKyAgICB9KTsKKworICAg IGNvbnRleHQoJ3doZW4gaXQgaXMgYSBjdXN0b20gbW9kZWwnLCAoKSA9PiB7CisgICAgICBiZWZv cmVFYWNoKCgpID0+IHsKKyAgICAgICAgbW9kZWwuc2V0KCdjdXN0b20nLCB0cnVlKTsKKyAgICAg ICAgdHJlZUluZm8gPSB7CisgICAgICAgICAgJ2RhdGFiYXNlJzogeworICAgICAgICAgICAgJ19s YWJlbCc6ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICB9LAorICAgICAgICB9Owor ICAgICAgfSk7CisKKyAgICAgIGl0KCdvbmx5IHNldHMgdGhlIGRhdGFiYXNlJywgKCkgPT4gewor ICAgICAgICByZXN0b3JlRGlhbG9nV3JhcHBlci5zZXRFeHRyYVBhcmFtZXRlcnMoc2VsZWN0ZWRO b2RlLCB0cmVlSW5mbyk7CisgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7 CisgICAgICAgICAgJ2N1c3RvbSc6IHRydWUsCisgICAgICAgICAgJ2RhdGFiYXNlJzogJ3NvbWUt ZGF0YWJhc2UtbGFiZWwnLAorICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAg Y29udGV4dCgnd2hlbiBpdCBpcyBub3QgYSBjdXN0b20gbW9kZWwnLCAoKSA9PiB7CisgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgbW9kZWwuc2V0KCdjdXN0b20nLCBmYWxzZSk7Cisg ICAgICAgIHRyZWVJbmZvID0geworICAgICAgICAgICdkYXRhYmFzZSc6IHsKKyAgICAgICAgICAg ICdfbGFiZWwnOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgfSwKKyAgICAgICAg ICAnc2NoZW1hJzogeworICAgICAgICAgICAgJ19sYWJlbCc6ICdzb21lLXNjaGVtYS1sYWJlbCcs CisgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3 aGVuIHNlbGVjdGVkIG5vZGUgaXMgYSBzY2hlbWEnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRz IHNjaGVtYXMgb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9 IG5ldyBUcmVlTm9kZSgnc2NoZW1hJywge190eXBlOiAnc2NoZW1hJywgX2xhYmVsOiAnc29tZS1z Y2hlbWEtbGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNldEV4 dHJhUGFyYW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3Qo bW9kZWwudG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBmYWxzZSwKKyAg ICAgICAgICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICBz Y2hlbWFzOiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgfSk7CisgICAgICAgIH0p OworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIHRh YmxlJywgKCkgPT4geworICAgICAgICBpdCgnc2V0cyBzY2hlbWFzIGFuZCB0YWJsZSBvbiB0aGUg bW9kZWwnLCAoKSA9PiB7CisgICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCd0 YWJsZScsIHtfdHlwZTogJ3RhYmxlJywgX2xhYmVsOiAnc29tZS10YWJsZS1sYWJlbCd9LCAnJyk7 CisgICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVj dGVkTm9kZSwgdHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9F cXVhbCh7CisgICAgICAgICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6 ICdzb21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hl bWEtbGFiZWwnXSwKKyAgICAgICAgICAgIHRhYmxlczogWydzb21lLXRhYmxlLWxhYmVsJ10sCisg ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3do ZW4gc2VsZWN0ZWQgbm9kZSBpcyBhIGZ1bmN0aW9uJywgKCkgPT4geworICAgICAgICBpdCgnc2V0 cyBzY2hlbWFzIGFuZCBmdW5jdGlvbiBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAgICAg c2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCdmdW5jdGlvbicsIHtfdHlwZTogJ2Z1bmN0aW9u JywgX2xhYmVsOiAnc29tZS1mdW5jdGlvbi1sYWJlbCd9LCAnJyk7CisgICAgICAgICAgcmVzdG9y ZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwgdHJlZUluZm8p OworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7CisgICAgICAgICAg ICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRhdGFiYXNlLWxh YmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwnXSwKKyAgICAg ICAgICAgIGZ1bmN0aW9uczogWydzb21lLWZ1bmN0aW9uLWxhYmVsJ10sCisgICAgICAgICAgfSk7 CisgICAgICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGNvbnRleHQoJ3doZW4gc2VsZWN0ZWQg bm9kZSBpcyBhbiBpbmRleCcsICgpID0+IHsKKyAgICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQg aW5kZXggb24gdGhlIG1vZGVsJywgKCkgPT4geworICAgICAgICAgIHNlbGVjdGVkTm9kZSA9IG5l dyBUcmVlTm9kZSgnaW5kZXgnLCB7X3R5cGU6ICdpbmRleCcsIF9sYWJlbDogJ3NvbWUtaW5kZXgt bGFiZWwnfSwgJycpOworICAgICAgICAgIHJlc3RvcmVEaWFsb2dXcmFwcGVyLnNldEV4dHJhUGFy YW1ldGVycyhzZWxlY3RlZE5vZGUsIHRyZWVJbmZvKTsKKyAgICAgICAgICBleHBlY3QobW9kZWwu dG9KU09OKCkpLnRvRXF1YWwoeworICAgICAgICAgICAgY3VzdG9tOiBmYWxzZSwKKyAgICAgICAg ICAgIGRhdGFiYXNlOiAnc29tZS1kYXRhYmFzZS1sYWJlbCcsCisgICAgICAgICAgICBzY2hlbWFz OiBbJ3NvbWUtc2NoZW1hLWxhYmVsJ10sCisgICAgICAgICAgICBpbmRleGVzOiBbJ3NvbWUtaW5k ZXgtbGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKworICAg ICAgY29udGV4dCgnd2hlbiBzZWxlY3RlZCBub2RlIGlzIGEgdHJpZ2dlcicsICgpID0+IHsKKyAg ICAgICAgaXQoJ3NldHMgc2NoZW1hcyBhbmQgdHJpZ2dlciBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7 CisgICAgICAgICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCd0cmlnZ2VyJywge190eXBl OiAndHJpZ2dlcicsIF9sYWJlbDogJ3NvbWUtdHJpZ2dlci1sYWJlbCd9LCAnJyk7CisgICAgICAg ICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVkTm9kZSwg dHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVhbCh7Cisg ICAgICAgICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdzb21lLWRh dGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEtbGFiZWwn XSwKKyAgICAgICAgICAgIHRyaWdnZXJzOiBbJ3NvbWUtdHJpZ2dlci1sYWJlbCddLAorICAgICAg ICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBjb250ZXh0KCd3aGVuIHNl bGVjdGVkIG5vZGUgaXMgYSB0cmlnZ2VyX2Z1bmMnLCAoKSA9PiB7CisgICAgICAgIGl0KCdzZXRz IHNjaGVtYXMgYW5kIHRyaWdnZXJfZnVuYyBvbiB0aGUgbW9kZWwnLCAoKSA9PiB7CisgICAgICAg ICAgc2VsZWN0ZWROb2RlID0gbmV3IFRyZWVOb2RlKCd0cmlnZ2VyX2Z1bmMnLCB7X3R5cGU6ICd0 cmlnZ2VyX2Z1bmMnLCBfbGFiZWw6ICdzb21lLXRyaWdnZXJfZnVuYy1sYWJlbCd9LCAnJyk7Cisg ICAgICAgICAgcmVzdG9yZURpYWxvZ1dyYXBwZXIuc2V0RXh0cmFQYXJhbWV0ZXJzKHNlbGVjdGVk Tm9kZSwgdHJlZUluZm8pOworICAgICAgICAgIGV4cGVjdChtb2RlbC50b0pTT04oKSkudG9FcXVh bCh7CisgICAgICAgICAgICBjdXN0b206IGZhbHNlLAorICAgICAgICAgICAgZGF0YWJhc2U6ICdz b21lLWRhdGFiYXNlLWxhYmVsJywKKyAgICAgICAgICAgIHNjaGVtYXM6IFsnc29tZS1zY2hlbWEt bGFiZWwnXSwKKyAgICAgICAgICAgIHRyaWdnZXJfZnVuY3M6IFsnc29tZS10cmlnZ2VyX2Z1bmMt bGFiZWwnXSwKKyAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsK KyAgfSk7Cit9KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRp dG9yL2ZpbHRlcl9kaWFsb2dfc3BlY3MuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Nx bGVkaXRvci9maWx0ZXJfZGlhbG9nX3NwZWNzLmpzCmluZGV4IGVkNzdkZmY1Li5jZWE3NWU2YiAx MDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZmlsdGVyX2Rp YWxvZ19zcGVjcy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9m aWx0ZXJfZGlhbG9nX3NwZWNzLmpzCkBAIC03LDEwICs3LDggQEAKIC8vCiAvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLwogaW1wb3J0IGZpbHRlckRpYWxvZyBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9maWx0ZXJf ZGlhbG9nJzsKLS8vIGltcG9ydCBmaWx0ZXJEaWFsb2dNb2RlbCBmcm9tICdzb3VyY2VzL3NxbGVk aXRvci9maWx0ZXJfZGlhbG9nX21vZGVsJzsKIAogZGVzY3JpYmUoJ2ZpbHRlckRpYWxvZycsICgp ID0+IHsKLSAgamFzbWluZS5jcmVhdGVTcHkoJ3NxbEVkaXRvckNvbnRyb2xsZXInKTsKICAgZGVz Y3JpYmUoJ2ZpbHRlckRpYWxvZycsICgpID0+IHsKICAgICBkZXNjcmliZSgnd2hlbiB1c2luZyBm aWx0ZXIgZGlhbG9nJywgKCkgPT4gewogICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CmRpZmYgLS1n aXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RhYmxlL2VuYWJsZV9kaXNhYmxlX3RyaWdn ZXJzX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RhYmxlL2VuYWJsZV9kaXNh YmxlX3RyaWdnZXJzX3NwZWMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAu LjdiZGQyODRlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90 YWJsZS9lbmFibGVfZGlzYWJsZV90cmlnZ2Vyc19zcGVjLmpzCkBAIC0wLDAgKzEsMjcxIEBACisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdo dCAoQykgMjAxMyAtIDIwMTgsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vCisKK2ltcG9ydCBNb2NrQWRhcHRlciBmcm9tICdheGlvcy1tb2NrLWFkYXB0ZXInOworaW1w b3J0IGF4aW9zIGZyb20gJ2F4aW9zL2luZGV4JzsKK2ltcG9ydCB7CisgIGVuYWJsZVRyaWdnZXJz LAorICBkaXNhYmxlVHJpZ2dlcnMsCit9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vYnJvd3Nlci9z ZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy9l bmFibGVfZGlzYWJsZV90cmlnZ2Vycyc7CitpbXBvcnQge1RyZWVGYWtlfSBmcm9tICcuLi90cmVl L3RyZWVfZmFrZSc7CitpbXBvcnQge1RyZWVOb2RlfSBmcm9tICcuLi8uLi8uLi9wZ2FkbWluL3N0 YXRpYy9qcy90cmVlL3RyZWUnOworCitkZXNjcmliZSgnI2VuYWJsZVRyaWdnZXJzJywgKCkgPT4g eworICBsZXQgbmV0d29ya01vY2s7CisgIGxldCB0cmVlOworICBsZXQgYWxlcnRpZnk7CisgIGxl dCBnZW5lcmF0ZVVybFNweTsKKyAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgbmV0d29ya01vY2sg PSBuZXcgTW9ja0FkYXB0ZXIoYXhpb3MpOworICAgIHRyZWUgPSBuZXcgVHJlZUZha2UoKTsKKyAg ICBjb25zdCBzZXJ2ZXIxID0gdHJlZS5hZGROZXdOb2RlKCdzZXJ2ZXIxJywge19pZDogMX0sIFsn PGxpPnNlcnZlcjE8L2xpPiddKTsKKyAgICBjb25zdCBkYXRhYmFzZTEgPSB0cmVlLmFkZE5ld05v ZGUoJ2RhdGFiYXNlMScsIHtfdHlwZTogJ2RhdGFiYXNlJ30sIFsnPGxpPmRhdGFiYXNlMTwvbGk+ J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2VydmVyMSwgZGF0YWJhc2UxKTsKKworICAgIGNvbnN0 IHNjaGVtYTEgPSB0cmVlLmFkZE5ld05vZGUoJ3NjaGVtYTEnLCB7X3R5cGU6ICdzY2hlbWEnfSwg Wyc8bGk+c2NoZW1hMTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBzY2hl bWExKTsKKworICAgIGNvbnN0IHRhYmxlMSA9IHRyZWUuYWRkTmV3Tm9kZSgndGFibGUxJywge190 eXBlOiAndGFibGUnfSwgWyc8bGk+dGFibGUxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChz Y2hlbWExLCB0YWJsZTEpOworCisgICAgY29uc3QgY29sdW1uMSA9IHRyZWUuYWRkTmV3Tm9kZSgn Y29sdW1uMScsIHtfdHlwZTogJ2NvbHVtbid9LCBbJzxsaT5jb2x1bW4xPC9saT4nXSk7CisgICAg dHJlZS5hZGRDaGlsZCh0YWJsZTEsIGNvbHVtbjEpOworCisgICAgY29uc3QgdGFibGVOb0RhdGEg PSB0cmVlLmFkZE5ld05vZGUoJ3RhYmxlLW5vLWRhdGEnLCB1bmRlZmluZWQsIFsnPGxpPnRhYmxl LW5vLWRhdGE8L2xpPiddKTsKKyAgICB0cmVlLmFkZENoaWxkKHNjaGVtYTEsIHRhYmxlTm9EYXRh KTsKKworICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5JywgWydz dWNjZXNzJywgJ2Vycm9yJ10pOworICAgIGdlbmVyYXRlVXJsU3B5ID0gamFzbWluZS5jcmVhdGVT cHkoJ2dlbmVyYXRlVXJsJyk7CisgICAgZ2VuZXJhdGVVcmxTcHkuYW5kLnJldHVyblZhbHVlKCcv c29tZS9wbGFjZScpOworICB9KTsKKworICBkZXNjcmliZSgnbm8gbm9kZSBpcyBzZWxlY3RlZCcs ICgpID0+IHsKKyAgICBpdCgnZG9lcyBub3Qgc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2Vu ZCcsIChkb25lKSA9PiB7CisgICAgICBuZXR3b3JrTW9jay5vbkFueSgnLionKS5yZXBseSgyMDAs ICgpID0+IHsKKyAgICAgIH0pOworCisgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ZXhwZWN0KGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30p KS50b0JlKGZhbHNlKTsKKyAgICAgICAgZG9uZSgpOworICAgICAgfSwgMCk7CisgICAgfSk7Cisg IH0pOworCisgIGRlc2NyaWJlKCdhIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7CisgICAgZGVz Y3JpYmUoJ25vZGUgYXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5vdCBzZW5k IHRoZSByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kJywgKCkgPT4geworICAgICAgICB0cmVlLnNlbGVj dE5vZGUoW3tpZDogJ3RhYmxlLW5vLWRhdGEnfV0pOworCisgICAgICAgIG5ldHdvcmtNb2NrLm9u QW55KCcuKicpLnJlcGx5KDIwMCwgKCkgPT4geworICAgICAgICB9KTsKKworICAgICAgICBzZXRU aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBleHBlY3QoZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxl cnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7fSkpLnRvQmUoZmFsc2UpOworICAgICAgICB9LCAwKTsK KyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ25vZGUgYXMgIGRhdGEnLCAoKSA9 PiB7CisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25kcyB3aXRoIHN1Y2Nlc3MnLCAoKSA9 PiB7CisgICAgICAgIGxldCBuZXR3b3JrTW9ja0NhbGxlZFdpdGg7CisgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4geworICAgICAgICAgIG5ldHdvcmtNb2NrQ2FsbGVkV2l0aCA9IGZhbHNlOworICAg ICAgICAgIG5ldHdvcmtNb2NrLm9uUHV0KC8uKi8pLnJlcGx5KChjb25maWd1cmF0aW9uKSA9PiB7 CisgICAgICAgICAgICBuZXR3b3JrTW9ja0NhbGxlZFdpdGggPSBjb25maWd1cmF0aW9uOworICAg ICAgICAgICAgcmV0dXJuIFsyMDAsIHsKKyAgICAgICAgICAgICAgc3VjY2VzczogMSwKKyAgICAg ICAgICAgICAgaW5mbzogJ3NvbWUgaW5mb3JtYXRpb24nLAorICAgICAgICAgICAgfV07CisgICAg ICAgICAgfSk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0KCdkaXNwbGF5cyBhbiBhbGVydCBi b3ggd2l0aCBzdWNjZXNzJywgKGRvbmUpID0+IHsKKyAgICAgICAgICB0cmVlLnNlbGVjdE5vZGUo W3tpZDogJ3RhYmxlMSd9XSk7CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwgYWxlcnRp ZnksIGdlbmVyYXRlVXJsU3B5LCB7fSk7CisgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Cisg ICAgICAgICAgICBleHBlY3QoYWxlcnRpZnkuc3VjY2VzcykudG9IYXZlQmVlbkNhbGxlZFdpdGgo J3NvbWUgaW5mb3JtYXRpb24nKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAw KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ3JlbG9hZHMgdGhlIG5vZGUnLCAoZG9uZSkg PT4geworICAgICAgICAgIGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVy bFNweSwge2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgIGV4cGVjdCh0cmVlLnNlbGVjdGVkKCkpLnRvRXF1YWwoWyc8bGk+ dGFibGUxPC9saT4nXSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgfSwgMjApOwor ICAgICAgICB9KTsKKworICAgICAgICBpdCgnY2FsbCBiYWNrZW5kIHdpdGggdGhlIGNvcnJlY3Qg cGFyYW1ldGVycycsIChkb25lKSA9PiB7CisgICAgICAgICAgZW5hYmxlVHJpZ2dlcnModHJlZSwg YWxlcnRpZnksIGdlbmVyYXRlVXJsU3B5LCB7aXRlbTogW3tpZDogJ3RhYmxlMSd9XX0pOworICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KG5ldHdvcmtNb2Nr Q2FsbGVkV2l0aC5kYXRhKS50b0VxdWFsKEpTT04uc3RyaW5naWZ5KHtlbmFibGU6ICd0cnVlJ30p KTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9LCAwKTsKKyAgICAgICAgfSk7Cisg ICAgICB9KTsKKworICAgICAgZGVzY3JpYmUoJ2JhY2tlbmQgcmVzcG9uZHMgd2l0aCBlcnJvcics ICgpID0+IHsKKyAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7CisgICAgICAgICAgbmV0d29ya01v Y2sub25QdXQoLy4qLykucmVwbHkoKCkgPT4geworICAgICAgICAgICAgcmV0dXJuIFs1MDAsIHsK KyAgICAgICAgICAgICAgc3VjY2VzczogMCwKKyAgICAgICAgICAgICAgZXJyb3Jtc2c6ICdzb21l IGVycm9yIG1lc3NhZ2UnLAorICAgICAgICAgICAgfV07CisgICAgICAgICAgfSk7CisgICAgICAg IH0pOworCisgICAgICAgIGl0KCdkaXNwbGF5cyBhbiBlcnJvciBhbGVydCcsIChkb25lKSA9PiB7 CisgICAgICAgICAgdHJlZS5zZWxlY3ROb2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAgICAg IGVuYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pOworICAg ICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KGFsZXJ0aWZ5LmVy cm9yKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnc29tZSBlcnJvciBtZXNzYWdlJyk7CisgICAgICAg ICAgICBkb25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOworCisgICAgICAgIGl0 KCd1bmxvYWQgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICAgIGVuYWJsZVRyaWdnZXJz KHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19 KTsKKworICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0KHRy ZWUuZmluZE5vZGVCeURvbUVsZW1lbnQoW3tpZDogJ3RhYmxlMSd9XSkuY2hpbGRyZW4ubGVuZ3Ro KS50b0JlKDApOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDIwKTsKKyAgICAg ICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7Cit9KTsKKworZGVzY3JpYmUoJyNkaXNh YmxlVHJpZ2dlcnMnLCAoKSA9PiB7CisgIGxldCBuZXR3b3JrTW9jazsKKyAgbGV0IHRyZWU7Cisg IGxldCBhbGVydGlmeTsKKyAgbGV0IGdlbmVyYXRlVXJsU3B5OworICBiZWZvcmVFYWNoKCgpID0+ IHsKKyAgICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRhcHRlcihheGlvcyk7CisgICAgdHJlZSA9 IG5ldyBUcmVlRmFrZSgpOworICAgIGNvbnN0IHNlcnZlcjEgPSB0cmVlLmFkZE5ld05vZGUoJ3Nl cnZlcjEnLCB7X2lkOiAxfSwgWyc8bGk+c2VydmVyMTwvbGk+J10pOworICAgIGNvbnN0IGRhdGFi YXNlMSA9IG5ldyBUcmVlTm9kZSgnZGF0YWJhc2UxJywge190eXBlOiAnZGF0YWJhc2UnfSwgWyc8 bGk+ZGF0YWJhc2UxPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFz ZTEpOworCisgICAgY29uc3Qgc2NoZW1hMSA9IG5ldyBUcmVlTm9kZSgnc2NoZW1hMScsIHtfdHlw ZTogJ3NjaGVtYSd9LCBbJzxsaT5zY2hlbWExPC9saT4nXSk7CisgICAgdHJlZS5hZGRDaGlsZChk YXRhYmFzZTEsIHNjaGVtYTEpOworCisgICAgY29uc3QgdGFibGUxID0gbmV3IFRyZWVOb2RlKCd0 YWJsZTEnLCB7X3R5cGU6ICd0YWJsZSd9LCBbJzxsaT50YWJsZTE8L2xpPiddKTsKKyAgICB0cmVl LmFkZENoaWxkKHNjaGVtYTEsIHRhYmxlMSk7CisKKyAgICBjb25zdCBjb2x1bW4xID0gbmV3IFRy ZWVOb2RlKCdjb2x1bW4xJywge190eXBlOiAnY29sdW1uJ30sIFsnPGxpPmNvbHVtbjE8L2xpPidd KTsKKyAgICB0cmVlLmFkZENoaWxkKHRhYmxlMSwgY29sdW1uMSk7CisKKyAgICBjb25zdCB0YWJs ZU5vRGF0YSA9IG5ldyBUcmVlTm9kZSgndGFibGUtbm8tZGF0YScsIHVuZGVmaW5lZCwgWyc8bGk+ dGFibGUtbm8tZGF0YTwvbGk+J10pOworICAgIHRyZWUuYWRkQ2hpbGQoc2NoZW1hMSwgdGFibGVO b0RhdGEpOworCisgICAgYWxlcnRpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignYWxlcnRpZnkn LCBbJ3N1Y2Nlc3MnLCAnZXJyb3InXSk7CisgICAgZ2VuZXJhdGVVcmxTcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweSgnZ2VuZXJhdGVVcmwnKTsKKyAgICBnZW5lcmF0ZVVybFNweS5hbmQucmV0dXJuVmFs dWUoJy9zb21lL3BsYWNlJyk7CisgIH0pOworCisgIGRlc2NyaWJlKCdubyBub2RlIGlzIHNlbGVj dGVkJywgKCkgPT4geworICAgIGl0KCdkb2VzIG5vdCBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBi YWNrZW5kJywgKGRvbmUpID0+IHsKKyAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcuKicpLnJlcGx5 KDIwMCwgKCkgPT4geworICAgICAgfSk7CisKKyAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAg ICAgICBleHBlY3QoZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNw eSwge30pKS50b0JlKGZhbHNlKTsKKyAgICAgICAgZG9uZSgpOworICAgICAgfSwgMCk7CisgICAg fSk7CisgIH0pOworCisgIGRlc2NyaWJlKCdhIG5vZGUgaXMgc2VsZWN0ZWQnLCAoKSA9PiB7Cisg ICAgZGVzY3JpYmUoJ25vZGUgYXMgbm8gZGF0YScsICgpID0+IHsKKyAgICAgIGl0KCdkb2VzIG5v dCBzZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBiYWNrZW5kJywgKCkgPT4geworICAgICAgICB0cmVl LnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlLW5vLWRhdGEnfV0pOworCisgICAgICAgIG5ldHdvcmtN b2NrLm9uQW55KCcuKicpLnJlcGx5KDIwMCwgKCkgPT4geworICAgICAgICB9KTsKKworICAgICAg ICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICBleHBlY3QoZGlzYWJsZVRyaWdnZXJzKHRy ZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge30pKS50b0JlKGZhbHNlKTsKKyAgICAgICAg fSwgMCk7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdub2RlIGFzICBkYXRh JywgKCkgPT4geworICAgICAgZGVzY3JpYmUoJ2JhY2tlbmQgcmVzcG9uZHMgd2l0aCBzdWNjZXNz JywgKCkgPT4geworICAgICAgICBsZXQgbmV0d29ya01vY2tDYWxsZWRXaXRoOworICAgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgICBuZXR3b3JrTW9ja0NhbGxlZFdpdGggPSBmYWxz ZTsKKyAgICAgICAgICBuZXR3b3JrTW9jay5vblB1dCgvLiovKS5yZXBseSgoY29uZmlndXJhdGlv bikgPT4geworICAgICAgICAgICAgbmV0d29ya01vY2tDYWxsZWRXaXRoID0gY29uZmlndXJhdGlv bjsKKyAgICAgICAgICAgIHJldHVybiBbMjAwLCB7CisgICAgICAgICAgICAgIHN1Y2Nlc3M6IDEs CisgICAgICAgICAgICAgIGluZm86ICdzb21lIGluZm9ybWF0aW9uJywKKyAgICAgICAgICAgIH1d OworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnZGlzcGxheXMgYW4g YWxlcnQgYm94IHdpdGggc3VjY2VzcycsIChkb25lKSA9PiB7CisgICAgICAgICAgdHJlZS5zZWxl Y3ROb2RlKFt7aWQ6ICd0YWJsZTEnfV0pOworICAgICAgICAgIGRpc2FibGVUcmlnZ2Vycyh0cmVl LCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHt9KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgp ID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChhbGVydGlmeS5zdWNjZXNzKS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgnc29tZSBpbmZvcm1hdGlvbicpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAg ICAgIH0sIDApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgncmVsb2FkcyB0aGUgbm9kZScs IChkb25lKSA9PiB7CisgICAgICAgICAgZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBn ZW5lcmF0ZVVybFNweSwge2l0ZW06IFt7aWQ6ICd0YWJsZTEnfV19KTsKKyAgICAgICAgICBzZXRU aW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdCh0cmVlLnNlbGVjdGVkKCkpLnRvRXF1 YWwoWyc8bGk+dGFibGUxPC9saT4nXSk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAg fSwgMjApOworICAgICAgICB9KTsKKworICAgICAgICBpdCgnY2FsbCBiYWNrZW5kIHdpdGggdGhl IGNvcnJlY3QgcGFyYW1ldGVycycsIChkb25lKSA9PiB7CisgICAgICAgICAgZGlzYWJsZVRyaWdn ZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNweSwge2l0ZW06IFt7aWQ6ICd0YWJsZTEn fV19KTsKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgICAgIGV4cGVjdChu ZXR3b3JrTW9ja0NhbGxlZFdpdGguZGF0YSkudG9FcXVhbChKU09OLnN0cmluZ2lmeSh7ZW5hYmxl OiAnZmFsc2UnfSkpOworICAgICAgICAgICAgZG9uZSgpOworICAgICAgICAgIH0sIDApOworICAg ICAgICB9KTsKKyAgICAgIH0pOworCisgICAgICBkZXNjcmliZSgnYmFja2VuZCByZXNwb25kcyB3 aXRoIGVycm9yJywgKCkgPT4geworICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAg ICBuZXR3b3JrTW9jay5vblB1dCgvLiovKS5yZXBseSgoKSA9PiB7CisgICAgICAgICAgICByZXR1 cm4gWzUwMCwgeworICAgICAgICAgICAgICBzdWNjZXNzOiAwLAorICAgICAgICAgICAgICBlcnJv cm1zZzogJ3NvbWUgZXJyb3IgbWVzc2FnZScsCisgICAgICAgICAgICB9XTsKKyAgICAgICAgICB9 KTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgaXQoJ2Rpc3BsYXlzIGFuIGVycm9yIGFsZXJ0Jywg KGRvbmUpID0+IHsKKyAgICAgICAgICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ3RhYmxlMSd9XSk7 CisgICAgICAgICAgZGlzYWJsZVRyaWdnZXJzKHRyZWUsIGFsZXJ0aWZ5LCBnZW5lcmF0ZVVybFNw eSwge30pOworICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgZXhwZWN0 KGFsZXJ0aWZ5LmVycm9yKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnc29tZSBlcnJvciBtZXNzYWdl Jyk7CisgICAgICAgICAgICBkb25lKCk7CisgICAgICAgICAgfSwgMCk7CisgICAgICAgIH0pOwor CisgICAgICAgIGl0KCd1bmxvYWQgdGhlIG5vZGUnLCAoZG9uZSkgPT4geworICAgICAgICAgIGRp c2FibGVUcmlnZ2Vycyh0cmVlLCBhbGVydGlmeSwgZ2VuZXJhdGVVcmxTcHksIHtpdGVtOiBbe2lk OiAndGFibGUxJ31dfSk7CisKKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAg ICAgIGV4cGVjdCh0cmVlLmZpbmROb2RlQnlEb21FbGVtZW50KFt7aWQ6ICd0YWJsZTEnfV0pLmNo aWxkcmVuLmxlbmd0aCkudG9CZSgwKTsKKyAgICAgICAgICAgIGRvbmUoKTsKKyAgICAgICAgICB9 LCAyMCk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisgIH0pOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3RyZWUvcGdhZG1pbl90cmVlX25vZGVf c3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS9wZ2FkbWluX3RyZWVfbm9k ZV9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi40NzllNTE1Ywot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS9wZ2FkbWlu X3RyZWVfbm9kZV9zcGVjLmpzCkBAIC0wLDAgKzEsMzUzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwor Ly8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDE4LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLworCitpbXBvcnQgeworICBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50 LAorICBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21JZGVudGlmaWVyLAorfSBmcm9tICcuLi8uLi8u Li9wZ2FkbWluL3N0YXRpYy9qcy90cmVlL3BnYWRtaW5fdHJlZV9ub2RlJzsKK2ltcG9ydCB7VHJl ZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CitpbXBv cnQge1RyZWVGYWtlfSBmcm9tICcuL3RyZWVfZmFrZSc7CisKK2NvbnN0IGNvbnRleHQgPSBkZXNj cmliZTsKKworZGVzY3JpYmUoJ3RyZWUjbm9kZSNnZXRUcmVlTm9kZUhpZXJhcmNoeScsICgpID0+ IHsKKyAgbGV0IGJyb3dzZXI7CisgIGxldCBuZXdUcmVlOworICBiZWZvcmVFYWNoKCgpID0+IHsK KyAgICBuZXdUcmVlID0gbmV3IFRyZWVGYWtlKCk7CisgICAgYnJvd3NlciA9IHsKKyAgICAgIE5v ZGVzOiB7CisgICAgICAgICdzcGVjaWFsIG9uZSc6IHtoYXNJZDogdHJ1ZX0sCisgICAgICAgICdj aGlsZCBzcGVjaWFsJzoge2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ290aGVyIHR5cGUnOiB7aGFz SWQ6IHRydWV9LAorICAgICAgICAndGFibGUnOiB7aGFzSWQ6IHRydWV9LAorICAgICAgICAncGFy dGl0aW9uJzoge2hhc0lkOiB0cnVlfSwKKyAgICAgICAgJ25vIGlkJzoge2hhc0lkOiBmYWxzZX0s CisgICAgICB9LAorICAgIH07CisgICAgYnJvd3Nlci50cmVlTWVudSA9IG5ld1RyZWU7CisgIH0p OworCisgIGNvbnRleHQoJ2dldFRyZWVOb2RlSGllcmFyY2h5IGlzIGNhbGxlZCB3aXRoIGFjaVRy ZWVOb2RlIG9iamVjdCcsICgpID0+IHsKKyAgICBkZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBu b2RlIGlzIHJvb3QgZWxlbWVudCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgICBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgJ3NvbWUga2V5 JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAg ICAgIH0pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1cm5zIGEgb2JqZWN0IHdpdGggdGhl IGVsZW1lbnQgdHlwZSBwYXNzZWQgZGF0YSBhbmQgcHJpb3JpdHkgPT0gMCcsICgpID0+IHsKKyAg ICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5i aW5kKGJyb3dzZXIpKFt7aWQ6ICdyb290J31dKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9F cXVhbCh7CisgICAgICAgICAgJ3NwZWNpYWwgb25lJzogeworICAgICAgICAgICAgJ3NvbWUga2V5 JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAg ICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAgfSwKKyAgICAgICAgfSk7CisgICAg ICB9KTsKKyAgICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMg bm90IG9mIGEga25vd24gdHlwZScsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4gewor ICAgICAgICBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgJ3NvbWUga2V5 JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdkbyBub3QgZXhpc3QnLAorICAg ICAgICB9LCBbXSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3JldHVybnMgYSBlbXB0eSBvYmpl Y3QnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5 RnJvbUlkZW50aWZpZXIuYmluZChicm93c2VyKSgncm9vdCcpOworICAgICAgICBleHBlY3QocmVz dWx0KS50b0VxdWFsKHt9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgZGVzY3JpYmUoJ1do ZW4gdGhlIGN1cnJlbnQgbm9kZSB0eXBlIGhhcyBubyBpZCcsICgpID0+IHsKKyAgICAgIGJlZm9y ZUVhY2goKCkgPT4geworICAgICAgICBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAg ICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdubyBp ZCcsCisgICAgICAgIH0sIFtdKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0dXJucyBhIGVt cHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVI aWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJyb3dzZXIpKCdyb290Jyk7CisgICAgICAgIGV4 cGVjdChyZXN1bHQpLnRvRXF1YWwoe30pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNj cmliZSgnV2hlbiB0aGUgY3VycmVudCBub2RlIGlzIGF0IHRoZSBzZWNvbmQgbGV2ZWwnLCAoKSA9 PiB7CisgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKKyAgICAgICAgY29uc3Qgcm9vdCA9IG5ld1Ry ZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1 ZScsCisgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgfSk7CisgICAg ICAgIGNvbnN0IGZpcnN0Q2hpbGQgPSBuZXcgVHJlZU5vZGUoJ2ZpcnN0IGNoaWxkJywgeworICAg ICAgICAgICdzb21lIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUn OiAnY2hpbGQgc3BlY2lhbCcsCisgICAgICAgIH0sIFsncm9vdCddKTsKKyAgICAgICAgbmV3VHJl ZS5hZGRDaGlsZChyb290LCBmaXJzdENoaWxkKTsKKyAgICAgIH0pOworCisgICAgICBpdCgncmV0 dXJucyBhIGVtcHR5IG9iamVjdCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0 VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmllci5iaW5kKGJyb3dzZXIpKFt7aWQ6ICdmaXJz dCBjaGlsZCd9XSk7CisgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoeworICAgICAgICAg ICdjaGlsZCBzcGVjaWFsJzogeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgb3RoZXIg dmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAgICAg ICAgJ3ByaW9yaXR5JzogMCwKKyAgICAgICAgICB9LAorICAgICAgICAgICdzcGVjaWFsIG9uZSc6 IHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdf dHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAtMSwKKyAgICAg ICAgICB9LAorICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAgY29udGV4dCgn V2hlbiB0cmVlIGFzICJzcGVjaWFsIHR5cGUiJywgKCkgPT4geworICAgICAgY29udGV4dCgnV2hl biAic3BlY2lhbCB0eXBlIiBoYXZlICJvdGhlciB0eXBlIicsICgpID0+IHsKKyAgICAgICAgY29u dGV4dCgnV2hlbiAib3RoZXIgdHlwZSIgaGF2ZSAic3BlY2lhbCB0eXBlIicsICgpID0+IHsKKyAg ICAgICAgICBkZXNjcmliZSgnV2hlbiByZXRyaWV2aW5nIGxlYWQgbm9kZScsICgpID0+IHsKKyAg ICAgICAgICAgIGl0KCdkb2VzIG5vdCBvdmVycmlkZSBwcmV2aW91cyBub2RlIHR5cGUgZGF0YScs ICgpID0+IHsKKyAgICAgICAgICAgICAgY29uc3Qgcm9vdE5vZGUgPSBuZXdUcmVlLmFkZE5ld05v ZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAor ICAgICAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAgIH0s IFtdKTsKKworICAgICAgICAgICAgICBjb25zdCBsZXZlbDEgPSBuZXcgVHJlZU5vZGUoJ2xldmVs IDEnLCB7CisgICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAg ICAgICAgICAgICdfdHlwZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgIG5ld1RyZWUuYWRkQ2hpbGQocm9vdE5vZGUsIGxldmVsMSk7CisKKyAgICAgICAg ICAgICAgbmV3VHJlZS5hZGRDaGlsZChsZXZlbDEsIG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsK KyAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAgICAgICAg ICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAgICAgJ3NvbWUgb3Ro ZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgICAgICB9KSk7CisKKyAgICAg ICAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVyYXJjaHlGcm9tSWRlbnRpZmll ci5iaW5kKGJyb3dzZXIpKFt7aWQ6ICdsZXZlbCAyJ31dKTsKKyAgICAgICAgICAgICAgZXhwZWN0 KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgICAgICAgJ3NwZWNpYWwgb25lJzogeworICAg ICAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywKKyAgICAgICAgICAg ICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAgICAgICAnc29tZSBv dGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAgICAgICAncHJpb3Jp dHknOiAwLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgJ290aGVyIHR5cGUn OiB7CisgICAgICAgICAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAg ICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIgdHlwZScsCisgICAgICAgICAgICAgICAgICAncHJp b3JpdHknOiAtMSwKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICB9KTsKKyAgICAg ICAgICAgIH0pOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0p OworCisgICAgY29udGV4dCgnV2hlbiB0cmVlIGhhcyB0YWJsZScsICgpID0+IHsKKyAgICAgIGNv bnRleHQoJ3doZW4gdGFibGUgaGFzIHBhcnRpdGlvbicsICgpID0+IHsKKyAgICAgICAgaXQoJ3Jl dHVybnMgdGFibGUgd2l0aCBwYXJ0aXRpb24gcGFyYW1ldGVycycsICgpID0+IHsKKyAgICAgICAg ICBjb25zdCByb290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICAg J3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwg b25lJywKKyAgICAgICAgICB9LCBbXSk7CisgICAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3IFRy ZWVOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUn LAorICAgICAgICAgICAgJ190eXBlJzogJ3RhYmxlJywKKyAgICAgICAgICB9KTsKKyAgICAgICAg ICBuZXdUcmVlLmFkZENoaWxkKHJvb3QsIGxldmVsMSk7CisgICAgICAgICAgbmV3VHJlZS5hZGRD aGlsZChsZXZlbDEsIG5ldyBUcmVlTm9kZSgnbGV2ZWwgMicsIHsKKyAgICAgICAgICAgICdzb21l IGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAncGFydGl0aW9u JywKKyAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAg ICAgICAgICB9KSk7CisKKyAgICAgICAgICBjb25zdCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJh cmNoeUZyb21JZGVudGlmaWVyLmJpbmQoYnJvd3NlcikoW3tpZDonbGV2ZWwgMid9XSk7CisgICAg ICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7CisgICAgICAgICAgICAnc3BlY2lhbCBvbmUn OiB7CisgICAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAg ICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEs CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgJ3RhYmxlJzogeworICAgICAgICAgICAgICAn c29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAgICAgICAgICAgICAnc29tZSBvdGhlciBr ZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAgICdfdHlwZSc6ICdwYXJ0aXRp b24nLAorICAgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgICAgfSwKKyAgICAg ICAgICB9KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9KTsKKyAgfSk7CisKKyAgY29u dGV4dCgnZ2V0VHJlZU5vZGVIaWVyYXJjaHkgaXMgY2FsbGVkIHdpdGggVHJlZU5vZGUgb2JqZWN0 JywgKCkgPT4geworICAgIGxldCB0cmVlTm9kZTsKKyAgICBkZXNjcmliZSgnV2hlbiB0aGUgY3Vy cmVudCBub2RlIGlzIHJvb3QgZWxlbWVudCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkg PT4geworICAgICAgICB0cmVlTm9kZSA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgncm9vdCcsIHsKKyAg ICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgJ190eXBlJzogJ3Nw ZWNpYWwgb25lJywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisKKyAgICAgIGl0KCdyZXR1 cm5zIGEgb2JqZWN0IHdpdGggdGhlIGVsZW1lbnQgdHlwZSBwYXNzZWQgZGF0YSBhbmQgcHJpb3Jp dHkgPT0gMCcsICgpID0+IHsKKyAgICAgICAgY29uc3QgcmVzdWx0ID0gZ2V0VHJlZU5vZGVIaWVy YXJjaHlGcm9tRWxlbWVudChicm93c2VyLCB0cmVlTm9kZSk7CisgICAgICAgIGV4cGVjdChyZXN1 bHQpLnRvRXF1YWwoeworICAgICAgICAgICdzcGVjaWFsIG9uZSc6IHsKKyAgICAgICAgICAgICdz b21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICdfdHlwZSc6ICdzcGVjaWFsIG9u ZScsCisgICAgICAgICAgICAncHJpb3JpdHknOiAwLAorICAgICAgICAgIH0sCisgICAgICAgIH0p OworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBkZXNjcmliZSgnV2hlbiB0aGUgY3VycmVudCBu b2RlIGlzIG5vdCBvZiBhIGtub3duIHR5cGUnLCAoKSA9PiB7CisgICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKKyAgICAgICAgdHJlZU5vZGUgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7Cisg ICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICdfdHlwZSc6ICdk byBub3QgZXhpc3QnLAorICAgICAgICB9LCBbXSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Jl dHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3NlciwgdHJlZU5vZGUpOworICAgICAg ICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHt9KTsKKyAgICAgIH0pOworICAgIH0pOworCisgICAg ZGVzY3JpYmUoJ1doZW4gdGhlIGN1cnJlbnQgbm9kZSB0eXBlIGhhcyBubyBpZCcsICgpID0+IHsK KyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICB0cmVlTm9kZSA9IG5ld1RyZWUuYWRk TmV3Tm9kZSgncm9vdCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSB2YWx1ZScsCisg ICAgICAgICAgJ190eXBlJzogJ25vIGlkJywKKyAgICAgICAgfSwgW10pOworICAgICAgfSk7CisK KyAgICAgIGl0KCdyZXR1cm5zIGEgZW1wdHkgb2JqZWN0JywgKCkgPT4geworICAgICAgICBjb25z dCByZXN1bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVO b2RlKTsKKyAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbCh7fSk7CisgICAgICB9KTsKKyAg ICB9KTsKKworICAgIGRlc2NyaWJlKCdXaGVuIHRoZSBjdXJyZW50IG5vZGUgaXMgYXQgdGhlIHNl Y29uZCBsZXZlbCcsICgpID0+IHsKKyAgICAgIGJlZm9yZUVhY2goKCkgPT4geworICAgICAgICBj b25zdCByb290ID0gbmV3VHJlZS5hZGROZXdOb2RlKCdyb290JywgeworICAgICAgICAgICdzb21l IGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAor ICAgICAgICB9LCBbXSk7CisgICAgICAgIHRyZWVOb2RlID0gbmV3IFRyZWVOb2RlKCdmaXJzdCBj aGlsZCcsIHsKKyAgICAgICAgICAnc29tZSBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAg ICAgICAgJ190eXBlJzogJ2NoaWxkIHNwZWNpYWwnLAorICAgICAgICB9KTsKKyAgICAgICAgbmV3 VHJlZS5hZGRDaGlsZChyb290LCB0cmVlTm9kZSk7CisgICAgICB9KTsKKworICAgICAgaXQoJ3Jl dHVybnMgYSBlbXB0eSBvYmplY3QnLCAoKSA9PiB7CisgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdl dFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1lbnQoYnJvd3NlciwgdHJlZU5vZGUpOworICAgICAg ICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAnY2hpbGQgc3BlY2lhbCc6IHsK KyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAg ICdfdHlwZSc6ICdjaGlsZCBzcGVjaWFsJywKKyAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisg ICAgICAgICAgfSwKKyAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAnc29t ZSBrZXknOiAnc29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUn LAorICAgICAgICAgICAgJ3ByaW9yaXR5JzogLTEsCisgICAgICAgICAgfSwKKyAgICAgICAgfSk7 CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGNvbnRleHQoJ1doZW4gdHJlZSBhcyAic3BlY2lh bCB0eXBlIicsICgpID0+IHsKKyAgICAgIGNvbnRleHQoJ1doZW4gInNwZWNpYWwgdHlwZSIgaGF2 ZSAib3RoZXIgdHlwZSInLCAoKSA9PiB7CisgICAgICAgIGNvbnRleHQoJ1doZW4gIm90aGVyIHR5 cGUiIGhhdmUgInNwZWNpYWwgdHlwZSInLCAoKSA9PiB7CisgICAgICAgICAgZGVzY3JpYmUoJ1do ZW4gcmV0cmlldmluZyBsZWFkIG5vZGUnLCAoKSA9PiB7CisgICAgICAgICAgICBpdCgnZG9lcyBu b3Qgb3ZlcnJpZGUgcHJldmlvdXMgbm9kZSB0eXBlIGRhdGEnLCAoKSA9PiB7CisgICAgICAgICAg ICAgIGNvbnN0IHJvb3QgPSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAg ICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAgICAgICAgICAgICdfdHlwZSc6 ICdzcGVjaWFsIG9uZScsCisgICAgICAgICAgICAgIH0sIFtdKTsKKyAgICAgICAgICAgICAgY29u c3QgbGV2ZWwxID0gbmV3IFRyZWVOb2RlKCdsZXZlbCAxJywgeworICAgICAgICAgICAgICAgICdz b21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAnX3R5cGUnOiAnb3RoZXIg dHlwZScsCisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxk KHJvb3QsIGxldmVsMSk7CisgICAgICAgICAgICAgIHRyZWVOb2RlID0gbmV3IFRyZWVOb2RlKCds ZXZlbCAyJywgeworICAgICAgICAgICAgICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScs CisgICAgICAgICAgICAgICAgJ190eXBlJzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAg ICAnc29tZSBvdGhlciBrZXknOiAnc29tZSBvdGhlciB2YWx1ZScsCisgICAgICAgICAgICAgIH0p OworICAgICAgICAgICAgICBuZXdUcmVlLmFkZENoaWxkKGxldmVsMSwgdHJlZU5vZGUpOworCisg ICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGdldFRyZWVOb2RlSGllcmFyY2h5RnJvbUVsZW1l bnQoYnJvd3NlciwgdHJlZU5vZGUpOworICAgICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0Vx dWFsKHsKKyAgICAgICAgICAgICAgICAnc3BlY2lhbCBvbmUnOiB7CisgICAgICAgICAgICAgICAg ICAnc29tZSBrZXknOiAnZXhwZWN0ZWQgdmFsdWUnLAorICAgICAgICAgICAgICAgICAgJ190eXBl JzogJ3NwZWNpYWwgb25lJywKKyAgICAgICAgICAgICAgICAgICdzb21lIG90aGVyIGtleSc6ICdz b21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAnb3RoZXIgdHlwZSc6IHsKKyAgICAgICAg ICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAgICAgICAgICAgICdf dHlwZSc6ICdvdGhlciB0eXBlJywKKyAgICAgICAgICAgICAgICAgICdwcmlvcml0eSc6IC0xLAor ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7Cisg ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBjb250 ZXh0KCdXaGVuIHRyZWUgaGFzIHRhYmxlJywgKCkgPT4geworICAgICAgY29udGV4dCgnd2hlbiB0 YWJsZSBoYXMgcGFydGl0aW9uJywgKCkgPT4geworICAgICAgICBpdCgncmV0dXJucyB0YWJsZSB3 aXRoIHBhcnRpdGlvbiBwYXJhbWV0ZXJzJywgKCkgPT4geworICAgICAgICAgIGNvbnN0IHJvb3Qg PSBuZXdUcmVlLmFkZE5ld05vZGUoJ3Jvb3QnLCB7CisgICAgICAgICAgICAnc29tZSBrZXknOiAn c29tZSB2YWx1ZScsCisgICAgICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAg ICAgIH0pOworICAgICAgICAgIGNvbnN0IGxldmVsMSA9IG5ld1RyZWUuYWRkTmV3Tm9kZSgnbGV2 ZWwgMScsIHsKKyAgICAgICAgICAgICdzb21lIGtleSc6ICdzb21lIHZhbHVlJywKKyAgICAgICAg ICAgICdfdHlwZSc6ICd0YWJsZScsCisgICAgICAgICAgfSk7CisgICAgICAgICAgbmV3VHJlZS5h ZGRDaGlsZChyb290LCBsZXZlbDEpOworICAgICAgICAgIHRyZWVOb2RlID0gbmV3IFRyZWVOb2Rl KCdsZXZlbCAyJywgeworICAgICAgICAgICAgJ3NvbWUga2V5JzogJ2V4cGVjdGVkIHZhbHVlJywK KyAgICAgICAgICAgICdfdHlwZSc6ICdwYXJ0aXRpb24nLAorICAgICAgICAgICAgJ3NvbWUgb3Ro ZXIga2V5JzogJ3NvbWUgb3RoZXIgdmFsdWUnLAorICAgICAgICAgIH0pOworICAgICAgICAgIG5l d1RyZWUuYWRkQ2hpbGQobGV2ZWwxLCB0cmVlTm9kZSk7CisKKyAgICAgICAgICBjb25zdCByZXN1 bHQgPSBnZXRUcmVlTm9kZUhpZXJhcmNoeUZyb21FbGVtZW50KGJyb3dzZXIsIHRyZWVOb2RlKTsK KyAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHsKKyAgICAgICAgICAgICdzcGVjaWFs IG9uZSc6IHsKKyAgICAgICAgICAgICAgJ3NvbWUga2V5JzogJ3NvbWUgdmFsdWUnLAorICAgICAg ICAgICAgICAnX3R5cGUnOiAnc3BlY2lhbCBvbmUnLAorICAgICAgICAgICAgICAncHJpb3JpdHkn OiAtMSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAndGFibGUnOiB7CisgICAgICAgICAg ICAgICdzb21lIGtleSc6ICdleHBlY3RlZCB2YWx1ZScsCisgICAgICAgICAgICAgICdzb21lIG90 aGVyIGtleSc6ICdzb21lIG90aGVyIHZhbHVlJywKKyAgICAgICAgICAgICAgJ190eXBlJzogJ3Bh cnRpdGlvbicsCisgICAgICAgICAgICAgICdwcmlvcml0eSc6IDAsCisgICAgICAgICAgICB9LAor ICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgIH0pOworICAgIH0pOworICB9KTsKK30p OwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC90cmVlL3RyZWVfZmFrZS5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS90cmVlX2Zha2UuanMKaW5kZXggYjI4 NWE0NWYuLmUwM2Q3MWZiIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3Ry ZWUvdHJlZV9mYWtlLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvdHJlZS90cmVl X2Zha2UuanMKQEAgLTEwLDYgKzEwLDMyIEBACiBpbXBvcnQge1RyZWV9IGZyb20gJy4uLy4uLy4u L3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZSc7CiAKIGV4cG9ydCBjbGFzcyBUcmVlRmFrZSBl eHRlbmRzIFRyZWUgeworICBzdGF0aWMgYnVpbGQoc3RydWN0dXJlKSB7CisgICAgbGV0IHRyZWUg PSBuZXcgVHJlZUZha2UoKTsKKyAgICBsZXQgcm9vdE5vZGUgPSB0cmVlLnJvb3ROb2RlOworCisg ICAgaWYgKHN0cnVjdHVyZS5jaGlsZHJlbiAhPT0gdW5kZWZpbmVkKSB7CisgICAgICBzdHJ1Y3R1 cmUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IHsKKyAgICAgICAgVHJlZUZha2UucmVjdXJz aXZlbHlBZGROb2Rlcyh0cmVlLCBjaGlsZCwgcm9vdE5vZGUpOworICAgICAgfSk7CisgICAgfQor CisgICAgcmV0dXJuIHRyZWU7CisgIH0KKworICBzdGF0aWMgcmVjdXJzaXZlbHlBZGROb2Rlcyh0 cmVlLCBuZXdOb2RlLCBwYXJlbnQpIHsKKyAgICBsZXQgaWQgPSBuZXdOb2RlLmlkOworICAgIGxl dCBkYXRhID0gbmV3Tm9kZS5kYXRhID8gbmV3Tm9kZS5kYXRhIDoge307CisgICAgbGV0IGRvbU5v ZGUgPSBuZXdOb2RlLmRvbU5vZGUgPyBuZXdOb2RlLmRvbU5vZGUgOiBbe2lkOiBpZH1dOworICAg IHRyZWUuYWRkTmV3Tm9kZShpZCwgZGF0YSwgZG9tTm9kZSwgdHJlZS50cmFuc2xhdGVUcmVlTm9k ZUlkRnJvbUFDSVRyZWUoW3BhcmVudF0pKTsKKworICAgIGlmIChuZXdOb2RlLmNoaWxkcmVuICE9 PSB1bmRlZmluZWQpIHsKKyAgICAgIG5ld05vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+ IHsKKyAgICAgICAgVHJlZUZha2UucmVjdXJzaXZlbHlBZGROb2Rlcyh0cmVlLCBjaGlsZCwgbmV3 Tm9kZSk7CisgICAgICB9KTsKKyAgICB9CisgIH0KKwogICBjb25zdHJ1Y3RvcigpIHsKICAgICBz dXBlcigpOwogICAgIHRoaXMuYWNpVHJlZVRvT3VyVHJlZVRyYW5zbGF0b3IgPSB7fTsKQEAgLTQ1 LDcgKzcxLDcgQEAgZXhwb3J0IGNsYXNzIFRyZWVGYWtlIGV4dGVuZHMgVHJlZSB7CiAgIH0KIAog ICB0cmFuc2xhdGVUcmVlTm9kZUlkRnJvbUFDSVRyZWUoYWNpVHJlZU5vZGUpIHsKLSAgICBpZihh Y2lUcmVlTm9kZSA9PT0gdW5kZWZpbmVkIHx8IGFjaVRyZWVOb2RlWzBdID09PSB1bmRlZmluZWQp IHsKKyAgICBpZiAoYWNpVHJlZU5vZGUgPT09IHVuZGVmaW5lZCB8fCBhY2lUcmVlTm9kZVswXSA9 PT0gdW5kZWZpbmVkKSB7CiAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAgICAgcmV0dXJuIHRo aXMuYWNpVHJlZVRvT3VyVHJlZVRyYW5zbGF0b3JbYWNpVHJlZU5vZGVbMF0uaWRdOwpkaWZmIC0t Z2l0IGEvd2ViL3dlYnBhY2suc2hpbS5qcyBiL3dlYi93ZWJwYWNrLnNoaW0uanMKaW5kZXggNjRm MjQzMzYuLmMxMmU3ZjNiIDEwMDY0NAotLS0gYS93ZWIvd2VicGFjay5zaGltLmpzCisrKyBiL3dl Yi93ZWJwYWNrLnNoaW0uanMKQEAgLTEzMCw2ICsxMzAsNyBAQCB2YXIgd2VicGFja1NoaW1Db25m aWcgPSB7CiAgICAgJ3NvdXJjZXMvdXRpbHMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2Fk bWluL3N0YXRpYy9qcy91dGlscycpLAogICAgICdiYWJlbC1wb2x5ZmlsbCc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy9iYWJlbC1wb2x5ZmlsbC9kaXN0L3BvbHlmaWxsJyks CiAgICAgJ3Rvb2xzJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy8nKSwK KyAgICAncGdicm93c2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2Vy L3N0YXRpYy9qcy8nKSwKIAogICAgIC8vIFZlbmRvciBKUwogICAgICdqcXVlcnknOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvanF1ZXJ5L2Rpc3QvanF1ZXJ5JyksCmRpZmYg LS1naXQgYS93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcyBiL3dlYi93ZWJwYWNrLnRlc3QuY29u ZmlnLmpzCmluZGV4IDFiMzc0ZDYyLi5lNzhlNTNlMCAxMDA2NDQKLS0tIGEvd2ViL3dlYnBhY2su dGVzdC5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMKQEAgLTgwLDYg KzgwLDggQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgICAncGdhZG1pbi5hbGVydGlmeWpzJzog c291cmNlc0RpciArICcvanMvYWxlcnRpZnkucGdhZG1pbi5kZWZhdWx0cycsCiAgICAgICAncGdh ZG1pbi5iYWNrZ3JpZCc6IHNvdXJjZXNEaXIgKyAnL2pzL2JhY2tncmlkLnBnYWRtaW4nLAogICAg ICAgJ3BnYWRtaW4uYmFja2Zvcm0nOiBzb3VyY2VzRGlyICsgJy9qcy9iYWNrZm9ybS5wZ2FkbWlu JywKKyAgICAgICdwZ2Jyb3dzZXInOiBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAncmVncmVzc2lv bi9qYXZhc2NyaXB0L2Zha2VfYnJvd3NlcicpLAorICAgICAgJ3BnYWRtaW4uc2NoZW1hLmRpcic6 IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdwZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9qcycpLAogICAgIH0sCiAgIH0sCiB9Owo= --000000000000cf7a62056cee3172--