Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b1Bus-0005cR-7A for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 12:10:02 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b1Bur-0000Jp-CF for pgadmin-hackers@arkaria.postgresql.org; Fri, 13 May 2016 12:10:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1b1Bua-0008WU-C4 for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 12:09:44 +0000 Received: from mail-io0-x22b.google.com ([2607:f8b0:4001:c06::22b]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b1BuR-0003Ev-OV for pgadmin-hackers@postgresql.org; Fri, 13 May 2016 12:09:43 +0000 Received: by mail-io0-x22b.google.com with SMTP id d62so129850766iof.2 for ; Fri, 13 May 2016 05:09:35 -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=/6mFuiHUUqkGjhjyvypZj7bnjSbv57FR/diwWmwgxx4=; b=zOq6avgAeudaLjOIwh/20AVvLzX3u2azjw2i5bTWSi827VrNeIOk1javJTyRVtIAT0 VcCUiojT3o54F6CpdXFQD5QT5ENgRmnBMWySWO8b8pT5q8VzJaKBui66cT7/4bdwgjR3 cL/koCU0IKr4K4d0o0qpwE31uwnPAyGFGNgYX5sX0TmkGvI25piw0XF0tXD3W3MZeO0g rgf5OTmg1+2U4ufROgbwQm2av8w/ZtaMCcCXoCYxiOTFcjr5Uwe0LdvH3ANABrxJbPjJ 3nS6bUadRAoUyG+UDHv8q7JoISirldGr/egDeJL9jWvcwIaX6pz+FSDlMKs6I9BoidY9 g1Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=/6mFuiHUUqkGjhjyvypZj7bnjSbv57FR/diwWmwgxx4=; b=TJVU5MfqZ3KqXJRnlDtmYgSMjGqQXwbSYZKiXpxQRPiH1vrJhxwQeOVwF0othTD0Z1 LL0fPlLtgHOtXnJv5+5djoNS5zpqW6n0BHKPoqMLJD6NPjlMQa/9cGYVJwwTMQRDPqtL o5uflqlVt51jOqt9etiRgCm07CKs8AyNLK2JucY+CPg1upCZHVtwJMy509i6mt/2TF10 zqFgrnW+dDwNFBisIs2nkB/erUeDeMGkWVKxSE8ezLsGs9veAHwpg55EqiVqQ5aEBZo4 3BbKqzYchfyWV9Q5V4aMd3pmQ7ZohT4drBfGMFTpxPSwocLMhuhqBxBnzfpbOBMHRE8N SAtA== X-Gm-Message-State: AOPr4FV6UPrNKGR5vGdQs6seAT+ZQUn6XgDcRcLh4DfdU3MUocebvNWY/iXFw+QmzP9KWk/B6E6s4w8F8/eePgHp X-Received: by 10.36.107.17 with SMTP id v17mr1544442itc.51.1463141373866; Fri, 13 May 2016 05:09:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.31.209 with HTTP; Fri, 13 May 2016 05:09:14 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Fri, 13 May 2016 17:39:14 +0530 Message-ID: Subject: Re: PATCH: Initiale backup utility [pgAdmin4] To: Murtuza Zabuawala Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a114a91a6d924d00532b82566 X-Pg-Spam-Score: -2.6 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgadmin-hackers Precedence: bulk Sender: pgadmin-hackers-owner@postgresql.org --001a114a91a6d924d00532b82566 Content-Type: multipart/alternative; boundary=001a114a91a6d924c90532b82564 --001a114a91a6d924c90532b82564 Content-Type: text/plain; charset=UTF-8 On Tue, May 3, 2016 at 5:41 PM, Murtuza Zabuawala < murtuza.zabuawala@enterprisedb.com> wrote: > Hi, > > PFA patch to add backup server/global/database object functionality. > > This patch depends on, > - File manager control patch & job executer. > > > *TODO:* > - Integrate browser tree control > Put that in the TODO list. We will select the current object at the moment for backup at the moment. We will add object selection in later phase. Please take look at the patch. It needs to define the message class properly for better message. -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* > > > -- > Regards, > Murtuza Zabuawala > EnterpriseDB: http://www.enterprisedb.com > The Enterprise PostgreSQL Company > > > -- > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgadmin-hackers > > --001a114a91a6d924c90532b82564 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

On Tue, May 3, 2016 at 5:41 PM, Murtuza Zabuawala &l= t;m= urtuza.zabuawala@enterprisedb.com> wrote:

=
Hi= ,

PFA patch to add backup server/global/database object = functionality.

This patch depends on,
- = File manager control patch & job executer.

=
TODO:
- Integrate bro= wser tree control
Put that in the TODO list.

We will select the current object at the moment for= backup at the moment.

We will add object selectio= n in later phase.

Please take look at the patch.
It needs to define the message class properly for better message.<= /div>

--

Thanks & Regard= s,

Ashesh Vashi

EnterpriseDB INDIA:=C2=A0<= a href=3D"http://www.enterprisedb.com/" target=3D"_blank">Enterprise Postgr= eSQL Company


= http://www.linkedi= n.com/in/asheshvashi



--
Regards,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://www.en= terprisedb.com
The Enterprise PostgreSQL Company



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


--001a114a91a6d924c90532b82564-- --001a114a91a6d924d00532b82566 Content-Type: application/octet-stream; name="Backup_integrated_v1.patch" Content-Disposition: attachment; filename="Backup_integrated_v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io5ohp641 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL3R5cGVzLnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2 ZXJfZ3JvdXBzL3NlcnZlcnMvdHlwZXMucHkKaW5kZXggMjk0ODQ0Zi4uOTk5 YWEwNSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvdHlwZXMucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJv d3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvdHlwZXMucHkKQEAgLTcsMTMg KzcsMTEgQEAKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAK LWltcG9ydCBzaXgKLWZyb20gYWJjIGltcG9ydCBBQkNNZXRhLCBhYnN0cmFj dG1ldGhvZCwgYWJzdHJhY3Rwcm9wZXJ0eQogZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlCiBmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQg Z2V0dGV4dAogCiAKLWNsYXNzIFNlcnZlclR5cGU6CitjbGFzcyBTZXJ2ZXJU eXBlKG9iamVjdCk6CiAgICAgIiIiCiAgICAgU2VydmVyIFR5cGUKIApAQCAt NzIsNSArNzAsMTcgQEAgY2xhc3MgU2VydmVyVHlwZToKICAgICAgICAgICAg ICAgICByZXZlcnNlPVRydWUKICAgICAgICAgICAgICAgICApCiAKKyAgICBA Y2xhc3NtZXRob2QKKyAgICBkZWYgdXRpbGl0eShjbHMsIG9wZXJhdGlvbiwg c3Zlcmlvbik6CisgICAgICAgIGlmIG9wZXJhdGlvbiA9PSAnYmFja3VwJzoK KyAgICAgICAgICAgIHJldHVybiAncGdfZHVtcCcKKyAgICAgICAgaWYgb3Bl cmF0aW9uID09ICdiYWNrdXBfc2VydmVyJzoKKyAgICAgICAgICAgIHJldHVy biAncGdfZHVtcGFsbCcKKyAgICAgICAgaWYgb3BlcmF0aW9uID09ICdyZXN0 b3JlJzoKKyAgICAgICAgICAgIHJldHVybiAncGdfcmVzdG9yZScKKworICAg ICAgICByZXR1cm4gTm9uZQorCisKICMgRGVmYXVsdCBTZXJ2ZXIgVHlwZQog U2VydmVyVHlwZSgncGcnLCBnZXR0ZXh0KCJQb3N0Z3JlU1FMIiksIC0xKQpk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9vdmVycmlkZXMu Y3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2Nzcy9vdmVycmlkZXMuY3NzCmlu ZGV4IGQzN2RiNjQuLmQyOTZhOTggMTAwNzU1Ci0tLSBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9jc3Mvb3ZlcnJpZGVzLmNzcworKysgYi93ZWIvcGdhZG1pbi9z dGF0aWMvY3NzL292ZXJyaWRlcy5jc3MKQEAgLTEwOTgsNiArMTA5OCw3IEBA IGJ1dHRvbi5wZy1hbGVydGlmeS1idXR0b24gewogICB3b3JkLWJyZWFrOiBi cmVhay1hbGw7CiAgIHdvcmQtd3JhcDogYnJlYWstd29yZDsKIH0KKwogZGl2 LmJhY2tmb3JtX2NvbnRyb2xfbm90ZXMgbGFiZWwuY29udHJvbC1sYWJlbCB7 CiAgIG1pbi13aWR0aDogMHB4OwogfQpAQCAtMTEwNiw3ICsxMTA3LDYgQEAg Zm9ybVtuYW1lPSJjaGFuZ2VfcGFzc3dvcmRfZm9ybSJdIC5oZWxwLWJsb2Nr IHsKICAgICBjb2xvcjogI0E5NDQ0MiAhaW1wb3J0YW50OwogfQogCi0KIC5m aWxlX3NlbGVjdGlvbl9jdHJsIC5jcmVhdGVfaW5wdXQgc3BhbiB7CiAgIHBh ZGRpbmctcmlnaHQ6IDEwcHg7CiAgIGZvbnQtd2VpZ2h0OiBib2xkOwpAQCAt MTE1NiwzICsxMTU2LDI1IEBAIGZvcm1bbmFtZT0iY2hhbmdlX3Bhc3N3b3Jk X2Zvcm0iXSAuaGVscC1ibG9jayB7CiAgIGhlaWdodDogMzJweDsKICAgcGFk ZGluZy1sZWZ0OiA1cHg7CiB9CisKKy8qIEZpeCBBbGVydGlmeSBkaWFsb2cg YWxpZ25tZW50IGZvciBCYWNrZm9ybSBjb250cm9scyAqLworLmFsZXJ0aWZ5 X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIHsKKyAgYm90dG9tOiAwICFpbXBv cnRhbnQ7CisgIGxlZnQ6IDAgIWltcG9ydGFudDsKKyAgcG9zaXRpb246IGFi c29sdXRlICFpbXBvcnRhbnQ7CisgIHJpZ2h0OiAwICFpbXBvcnRhbnQ7Cisg IHRvcDogMzVweCAhaW1wb3J0YW50OworfQorCisvKiBGb3IgQmFja3VwICYg UmVzdG9yZSBEaWFsb2cgKi8KKy5jdXN0b21fc3dpdGNoX2xhYmVsX2NsYXNz IHsKKyAgbWluLXdpZHRoOiAwcHggIWltcG9ydGFudDsKKyAgcGFkZGluZy1i b3R0b206IDEwcHggIWltcG9ydGFudDsKKyAgZm9udC1zaXplOiAxM3B4ICFp bXBvcnRhbnQ7CisgIGZvbnQtd2VpZ2h0OiBub3JtYWwgIWltcG9ydGFudDsK K30KKworLmN1c3RvbV9zd2l0Y2hfY29udHJvbF9jbGFzcyB7CisgIG1pbi13 aWR0aDogMHB4ICFpbXBvcnRhbnQ7CisgIHBhZGRpbmctYm90dG9tOiAxMHB4 ICFpbXBvcnRhbnQ7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9iYWNrdXAvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9iYWNr dXAvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjc0Nzc3MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDQ2NSBAQAor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKKyMgcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworIworIyBDb3B5cmlnaHQgKEMpIDIwMTMg LSAyMDE2LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisjIFRoaXMg c29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIiIi SW1wbGVtZW50cyBCYWNrdXAgVXRpbGl0eSIiIgorCitpbXBvcnQganNvbgor aW1wb3J0IG9zCitmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAorZnJvbSBm bGFzayBpbXBvcnQgcmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBjdXJyZW50 X2FwcCwgXAorICAgIHVybF9mb3IsIFJlc3BvbnNlCitmcm9tIGZsYXNrLmV4 dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dCBhcyBfCitmcm9tIHBnYWRtaW4udXRp bHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNlLCBiYWRfcmVxdWVz dAorZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQZ0FkbWluTW9kdWxlLCBn ZXRfc3RvcmFnZV9kaXJlY3RvcnkKK2Zyb20gZmxhc2suZXh0LnNlY3VyaXR5 IGltcG9ydCBsb2dpbl9yZXF1aXJlZCwgY3VycmVudF91c2VyCitmcm9tIHBn YWRtaW4ubW9kZWwgaW1wb3J0IFNlcnZlcgorZnJvbSBjb25maWcgaW1wb3J0 IFBHX0RFRkFVTFRfRFJJVkVSCitmcm9tIHBnYWRtaW4ubWlzYy5iZ3Byb2Nl c3MucHJvY2Vzc2VzIGltcG9ydCBCYXRjaFByb2Nlc3MsIElQcm9jZXNzRGVz YworCisKKyMgc2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCitN T0RVTEVfTkFNRSA9ICdiYWNrdXAnCitzZXJ2ZXJfaW5mbyA9IHt9CisKKwor Y2xhc3MgQmFja3VwTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgorICAgICIiIgor ICAgIGNsYXNzIEJhY2t1cE1vZHVsZShPYmplY3QpOgorCisgICAgICAgIEl0 IGlzIGEgdXRpbGl0eSB3aGljaCBpbmhlcml0cyBQZ0FkbWluTW9kdWxlCisg ICAgICAgIGNsYXNzIGFuZCBkZWZpbmUgbWV0aG9kcyB0byBsb2FkIGl0cyBv d24KKyAgICAgICAgamF2YXNjcmlwdCBmaWxlLgorICAgICIiIgorCisgICAg TEFCRUwgPSBfKCdVdGlsaXRpZXMnKQorCisgICAgZGVmIGdldF9vd25famF2 YXNjcmlwdHMoc2VsZik6CisgICAgICAgICIiIiIKKyAgICAgICAgUmV0dXJu czoKKyAgICAgICAgICAgIGxpc3Q6IGpzIGZpbGVzIHVzZWQgYnkgdGhpcyBt b2R1bGUKKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBbeworICAgICAg ICAgICAgJ25hbWUnOiAncGdhZG1pbi50b29scy5iYWNrdXAnLAorICAgICAg ICAgICAgJ3BhdGgnOiB1cmxfZm9yKCdiYWNrdXAuaW5kZXgnKSArICdiYWNr dXAnLAorICAgICAgICAgICAgJ3doZW4nOiBOb25lCisgICAgICAgIH1dCisK KyAgICBkZWYgc2hvd19zeXN0ZW1fb2JqZWN0cyhzZWxmKToKKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBzeXN0ZW0gcHJlZmVyZW5jZSBvYmplY3Rz CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gc2VsZi5wcmVmX3Nob3df c3lzdGVtX29iamVjdHMKKworICAgICMgR2V0dGVyL1NldHRlciBmb3IgcHJl ZmVyZW5jZXMKKyAgICBkZWYgZ2V0X3V0aWxpdHlfZGlyX3ByZWZlcmVuY2Uo c2VsZiwgc3R5cGUpOgorICAgICAgICBpZiBzdHlwZSA9PSAncGcnOgorICAg ICAgICAgICAgcmV0dXJuIHNlbGYucGdfdXRpbGl0eV9kaXIKKyAgICAgICAg ZWxpZiBzdHlwZSA9PSAncHBhcyc6CisgICAgICAgICAgICByZXR1cm4gc2Vs Zi5lZGJfdXRpbGl0eV9kaXIKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAg IGRlZiByZWdpc3Rlcl9wcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgIyBS ZWdpc3RlciAnUEcgc3BlY2lmaWMgdXRpbGl0eSBiaW5hcnkgZGlyZWN0b3J5 JyBwcmVmZXJlbmNlCisgICAgICAgIHNlbGYucGdfdXRpbGl0eV9kaXIgPSBz ZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICAgICAnb3B0aW9u cycsICdwZ191dGlsaXRpZXNfYmluX2RpcicsCisgICAgICAgICAgICBfKCJQ RyBiaW4gcGF0aCIpLCAndGV4dCcsICcvJywKKyAgICAgICAgICAgIGNhdGVn b3J5X2xhYmVsPV8oJ0JJTiBwYXRoJykKKyAgICAgICAgKQorCisgICAgICAg ICMgUmVnaXN0ZXIgJ0VEQiBzcGVjaWZpYyB1dGlsaXR5IGJpbmFyeSBkaXJl Y3RvcnknIHByZWZlcmVuY2UKKyAgICAgICAgc2VsZi5lZGJfdXRpbGl0eV9k aXIgPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICAgICAn b3B0aW9ucycsICdlZGJfdXRpbGl0aWVzX2Jpbl9kaXInLAorICAgICAgICAg ICAgXygiRURCIGJpbiBwYXRoIiksICd0ZXh0JywgJy8nLAorICAgICAgICAg ICAgY2F0ZWdvcnlfbGFiZWw9XygnQklOIHBhdGgnKQorICAgICAgICApCisK KyMgQ3JlYXRlIGJsdWVwcmludCBmb3IgQmFja3VwTW9kdWxlIGNsYXNzCiti bHVlcHJpbnQgPSBCYWNrdXBNb2R1bGUoCisgICAgTU9EVUxFX05BTUUsIF9f bmFtZV9fLCBzdGF0aWNfdXJsX3BhdGg9JycKKykKKworCitjbGFzcyBCQUNL VVAob2JqZWN0KToKKyAgICAiIiIKKyAgICBDb25zdGFudHMgZGVmaW5lZCBm b3IgQmFja3VwIHV0aWxpdGllcworICAgICIiIgorICAgIEdMT0JBTCA9IDEK KyAgICBTRVJWRVIgPSAyCisgICAgT0JKRUNUID0gMworCisKK2NsYXNzIEJh Y2t1cE1lc3NhZ2UoSVByb2Nlc3NEZXNjKToKKyAgICAiIiIKKyAgICBCYWNr dXBNZXNzYWdlKElQcm9jZXNzRGVzYykKKworICAgIERlZmluZXMgdGhlIG1l c3NhZ2Ugc2hvd24gZm9yIHRoZSBiYWNrdXAgb3BlcmF0aW9uLgorICAgICIi IgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdHlwZSwgX3NpZCwgX2NtZCwg X2FyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5iYWNrdXBfdHlwZSA9 IF90eXBlCisgICAgICAgIHNlbGYuc2lkID0gX3NpZAorICAgICAgICBzZWxm LmNtZCA9IF9jbWQKKyAgICAgICAgc2VsZi5hcmdzID0gX2FyZ3MKKworICAg ICAgICBpZiAnZGF0YWJhc2UnIGluIGt3YXJnczoKKyAgICAgICAgICAgIHNl bGYuZGF0YWJhc2UgPSBrd2FyZ3NbJ2RhdGFiYXNlJ10KKworICAgIEBwcm9w ZXJ0eQorICAgIGRlZiBtZXNzYWdlKHNlbGYpOgorICAgICAgICAjIEZldGNo IHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xl cyBldGMKKyAgICAgICAgc2VydmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9i eSgKKyAgICAgICAgICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRf dXNlci5pZAorICAgICAgICApLmZpcnN0KCkKKyAgICAgICAgcmVzID0gXygn QmFja3VwJykKKworICAgICAgICBpZiBzZWxmLmJhY2t1cF90eXBlID09IEJB Q0tVUC5PQkpFQ1Q6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGlmIHNl bGYuYmFja3VwX3R5cGUgPT0gQkFDS1VQLkdMT0JBTDoKKyAgICAgICAgICAg IHBhc3MKKyAgICAgICAgZWxpZiBzZWxmLmJhY2t1cF90eXBlID09IEJBQ0tV UC5TRVJWRVI6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAjIEl0IHNob3VsZCBuZXZlciByZWFjaCBoZXJlLgorICAg ICAgICAgICAgcmV0dXJuICJVbmtub3duIGJhY2t1cCB0eXBlIgorCisgICAg ICAgIHJldHVybiByZXMKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBkZXRh aWxzKHNlbGYpOgorICAgICAgICBwYXNzCisKKworQGJsdWVwcmludC5yb3V0 ZSgiLyIpCitAbG9naW5fcmVxdWlyZWQKK2RlZiBpbmRleCgpOgorICAgIHJl dHVybiBiYWRfcmVxdWVzdChlcnJvcm1zZz1fKCJUaGlzIFVSTCBjYW4gbm90 IGJlIGNhbGxlZCBkaXJlY3RseSEiKSkKKworCitAYmx1ZXByaW50LnJvdXRl KCIvYmFja3VwLmpzIikKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHNjcmlwdCgp OgorICAgICIiInJlbmRlciBvd24gamF2YXNjcmlwdCIiIgorICAgIHJldHVy biBSZXNwb25zZSgKKyAgICAgICAgcmVzcG9uc2U9cmVuZGVyX3RlbXBsYXRl KAorICAgICAgICAgICAgImJhY2t1cC9qcy9iYWNrdXAuanMiLCBfPV8KKyAg ICAgICAgKSwKKyAgICAgICAgc3RhdHVzPTIwMCwKKyAgICAgICAgbWltZXR5 cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiCisgICAgKQorCisKK2RlZiBf Zm9ybWF0X3F0SWRlbnRzKGRhdGEpOgorICAgICIiIgorICAgIFdlIGhhdmUg dG8gcGFyc2UgJiBmb3JtYXQgcXRpZGVudCB3b3JkcyBhcyBpdCBjb250YWlu cworICAgICIiICYgIi4iIGluIGRhdGFiYXNlIG9iamVjdHMsIGlmIHdlIGRv IG5vdCByZW1vdmUgdGhlbSB0aGVuCisgICAgT1Mgd2lsbCBmYWlsIHRvIHBh cnNlICYgZXhlY3V0ZSBhcmd1bWVudHMKKworICAgIEFyZ3M6CisgICAgICAg IGRhdGE6IEEgc3RyaW5nIHdoaWNoIGNvbnRhaW5zIGNvbW1hbmQgYXJndW1l bnRzCisKKyAgICBSZXR1cm5zOgorICAgICAgICBFc2NhcGVkIGFyZ3VtZW50 IHN0cmluZworCisgICAgVXNhZ2U6CisgICAgICAgID4+PiBwcmludChfZm9y bWF0X3F0SWRlbnRzKHInIiJQb3N0Z3JlcyIudGFibGUiJykpCisgICAgICAg ICJcIlBvc3RncmVzXCIudGFibGUiCisgICAgICAgID4+PiBwcmludChfZm9y bWF0X3F0SWRlbnRzKHInInBvc3RncmVzLiJUYWJsZSIiJykpCisgICAgICAg ICJwb3N0Z3Jlcy5cIlRhYmxlXCIiCisgICAgICAgID4+PiBwcmludChfZm9y bWF0X3F0SWRlbnRzKHInIiJQb3N0Z3JlcyIuIlRhYmxlIiInKSkKKyAgICAg ICAgIlwiUG9zdGdyZXNcIi5cIlRhYmxlXCIiCisgICAgICAgID4+PiBwcmlu dChfZm9ybWF0X3F0SWRlbnRzKHInInBvc3RncmVzLnRhYmxlIicpKQorICAg ICAgICAicG9zdGdyZXMudGFibGUiCisgICAgIiIiCisKKyAgICBpbXBvcnQg cmUKKyAgICAjIENhc2UtMSAgIiJQb3N0Z3JlcworICAgIG1hdGNoT2JqMSA9 IHJlLnNlYXJjaChyJ14iIicsIGRhdGEpCisgICAgaWYgbWF0Y2hPYmoxOgor ICAgICAgICBkYXRhID0gcmUuc3ViKHInXiIiJywgciciXFwiJywgZGF0YSkK KworICAgICMgQ2FzZS0yICBTVFIiLiJUQkwKKyAgICBtYXRjaE9iajIgPSBy ZS5zZWFyY2gocidbXiJdIlxcLiJbXiJdJywgZGF0YSkKKyAgICBpZiBtYXRj aE9iajI6CisgICAgICAgIGRhdGEgPSByZS5zdWIocicoW14iXSkiXFwuIihb XiJdKScsIHInXDFcXCIuXFwiXDInLCBkYXRhKQorICAgIGVsc2U6CisgICAg ICAgICMgQ2FzZS0zICAiU1RSIi50YmwKKyAgICAgICAgbWF0Y2hPYmozID0g cmUuc2VhcmNoKHInIlwuJywgZGF0YSkKKyAgICAgICAgaWYgbWF0Y2hPYmoz OgorICAgICAgICAgICAgZGF0YSA9IHJlLnN1YihyJyJcLicsIHInXFwiLics IGRhdGEpCisKKyAgICAgICAgIyBDYXNlLTQgIHN0ci4iVEJMIgorICAgICAg ICBtYXRjaE9iajQgPSByZS5zZWFyY2gocidcLiInLCBkYXRhKQorICAgICAg ICBpZiBtYXRjaE9iajQ6CisgICAgICAgICAgICBkYXRhID0gcmUuc3ViKHIn XC4iJywgcicuXFwiJywgZGF0YSkKKworICAgICMgQ2FzZS01ICBUQkwiIgor ICAgIG1hdGNoT2JqNSA9IHJlLnNlYXJjaChyJyIiJCcsIGRhdGEpCisgICAg aWYgbWF0Y2hPYmo1OgorICAgICAgICBkYXRhID0gcmUuc3ViKHInIiIkJywg cidcXCIiJywgZGF0YSkKKworICAgIHJldHVybiBkYXRhCisKKworZGVmIHV0 aWxpdHlfd2l0aF9iaW5fcGF0aChzZXJ2ZXJfbWFuYWdlciwgb3BlcmF0aW9u KToKKyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzZXJ2ZXJfbWFuYWdl cjogU2VydmVyIE1hbmFnZXIKKyAgICAgICAgYmFja3VwX3R5cGU6IFR5cGUg b2YgYmFja3VwIChTZXJ2ZXIvT2JqZWN0cykKKworICAgIFJldHVybnM6Cisg ICAgICAgIFV0aWxpdHkgdG8gdXNlIGZvciBiYWNrdXAgd2l0aCBmdWxsIHBh dGggdGFrZW4gZnJvbSBwcmVmZXJlbmNlCisgICAgIiIiCisgICAgIyBTZXQg ZmlsZSBtYW5hZ2VyIGRpcmVjdG9yeSBmcm9tIHByZWZlcmVuY2UKKworICAg IHJldHVybiBvcy5wYXRoLmpvaW4oCisgICAgICAgIGJsdWVwcmludC5nZXRf dXRpbGl0eV9kaXJfcHJlZmVyZW5jZSgKKyAgICAgICAgICAgIHNlcnZlcl9t YW5hZ2VyLnNlcnZlcl90eXBlCisgICAgICAgICkuZ2V0KCksCisgICAgICAg IHNlcnZlcl9tYW5hZ2VyLnV0aWxpdHkob3BlcmF0aW9uKQorICAgICkKKwor CitkZWYgZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aChmaWxlKToK KyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBmaWxlOiBGaWxlIG5hbWUg cmV0dXJuZWQgZnJvbSBjbGllbnQgZmlsZSBtYW5hZ2VyCisKKyAgICBSZXR1 cm5zOgorICAgICAgICBGaWxlbmFtZSB0byB1c2UgZm9yIGJhY2t1cCB3aXRo IGZ1bGwgcGF0aCB0YWtlbiBmcm9tIHByZWZlcmVuY2UKKyAgICAiIiIKKyAg ICAjIFNldCBmaWxlIG1hbmFnZXIgZGlyZWN0b3J5IGZyb20gcHJlZmVyZW5j ZQorICAgIGZpbGVfbWFuYWdlcl9kaXIgPSBnZXRfc3RvcmFnZV9kaXJlY3Rv cnkoKQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZmlsZV9tYW5hZ2VyX2Rp ciwgZmlsZSkKKworCitAYmx1ZXByaW50LnJvdXRlKCcvY3JlYXRlX2pvYi88 aW50OnNpZD4nLCBtZXRob2RzPVsnUE9TVCddKQorQGxvZ2luX3JlcXVpcmVk CitkZWYgY3JlYXRlX2JhY2t1cF9qb2Ioc2lkKToKKyAgICAiIiIKKyAgICBB cmdzOgorICAgICAgICBzaWQ6IFNlcnZlciBJRAorCisgICAgICAgIENyZWF0 ZXMgYSBuZXcgam9iIGZvciBiYWNrdXAgdGFzayAoQmFja3VwIFNlcnZlci9H bG9iYWxzKQorCisgICAgUmV0dXJuczoKKyAgICAgICAgTm9uZQorICAgICIi IgorICAgIGlmIHJlcXVlc3QuZm9ybToKKyAgICAgICAgIyBDb252ZXJ0IElt bXV0YWJsZURpY3QgdG8gZGljdAorICAgICAgICBkYXRhID0gZGljdChyZXF1 ZXN0LmZvcm0pCisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGRhdGFbJ2Rh dGEnXVswXSkKKyAgICBlbHNlOgorICAgICAgICBkYXRhID0ganNvbi5sb2Fk cyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICBkYXRhWydmaWxlJ10g PSBmaWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoKGRhdGFbJ2ZpbGUn XSkKKworICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9z dG5hbWUsIHBvcnQsIHJvbGVzIGV0YworICAgIHNlcnZlciA9IFNlcnZlci5x dWVyeS5maWx0ZXJfYnkoCisgICAgICAgIGlkPXNpZCwgdXNlcl9pZD1jdXJy ZW50X3VzZXIuaWQKKyAgICApLmZpcnN0KCkKKworICAgIGlmIHNlcnZlciBp cyBOb25lOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAor ICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9 XygiQ291bGRuJ3QgZmluZCB0aGUgZ2l2ZW4gc2VydmVyIikKKyAgICAgICAg KQorCisgICAgIyBUbyBmZXRjaCBNZXRhRGF0YSBmb3IgdGhlIHNlcnZlcgor ICAgIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2 ZXIKKyAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVS KQorICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNl cnZlci5pZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKCkKKyAg ICBjb25uZWN0ZWQgPSBjb25uLmNvbm5lY3RlZCgpCisKKyAgICBpZiBub3Qg Y29ubmVjdGVkOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jt c2c9XygiUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBmaXJzdC4uLiIp CisgICAgICAgICkKKworICAgIHV0aWxpdHkgPSB1dGlsaXR5X3dpdGhfYmlu X3BhdGgobWFuYWdlciwgJ2JhY2t1cF9zZXJ2ZXInKQorCisgICAgYXJncyA9 IFsKKyAgICAgICAgJy0taG9zdCcsCisgICAgICAgIHNlcnZlci5ob3N0LAor ICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgc3RyKHNlcnZlci5wb3J0KSwK KyAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICBzZXJ2ZXIudXNlcm5h bWUsCisgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgJy0tZGF0 YWJhc2UnLAorICAgICAgICBkcml2ZXIucXRJZGVudChjb25uLCBzZXJ2ZXIu bWFpbnRlbmFuY2VfZGIpLAorICAgICAgICAnLS1maWxlJywKKyAgICAgICAg ZGF0YVsnZmlsZSddCisgICAgXQorICAgIGlmICdyb2xlJyBpbiBkYXRhIGFu ZCBkYXRhWydyb2xlJ106CisgICAgICAgIGFyZ3MuYXBwZW5kKCctLXJvbGUn KQorICAgICAgICBhcmdzLmFwcGVuZChkYXRhWydyb2xlJ10pCisgICAgaWYg J3ZlcmJvc2UnIGluIGRhdGEgYW5kIGRhdGFbJ3ZlcmJvc2UnXToKKyAgICAg ICAgYXJncy5hcHBlbmQoJy0tdmVyYm9zZScpCisgICAgaWYgJ2Rxb3V0ZScg aW4gZGF0YSBhbmQgZGF0YVsnZHFvdXRlJ106CisgICAgICAgIGFyZ3MuYXBw ZW5kKCctLXF1b3RlLWFsbC1pZGVudGlmaWVycycpCisgICAgaWYgZGF0YVsn dHlwZSddID09ICdnbG9iYWwnOgorICAgICAgICBhcmdzLmFwcGVuZCgnLS1n bG9iYWxzLW9ubHknKQorCisgICAgdHJ5OgorICAgICAgICBwID0gQmF0Y2hQ cm9jZXNzKGRlc2M9J0JhY2t1cCcsIGNtZD11dGlsaXR5LCBhcmdzPWFyZ3Mp CisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBqaWQgPSBwLmlkCisgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZXhjZXB0aW9uKGUpCisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAg ICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9c3RyKGUpCisg ICAgICAgICkKKyAgICAjIFJldHVybiByZXNwb25zZQorICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgIGRhdGE9eydqb2JfaWQnOiBq aWQsICdzdWNjZXNzJzogMX0KKyAgICApCisKKworQGJsdWVwcmludC5yb3V0 ZSgnL2NyZWF0ZV9qb2IvYmFja3VwX29iamVjdC88aW50OnNpZD4nLCBtZXRo b2RzPVsnUE9TVCddKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgY3JlYXRlX2Jh Y2t1cF9vYmplY3RzX2pvYihzaWQpOgorICAgICIiIgorICAgIEFyZ3M6Cisg ICAgICAgIHNpZDogU2VydmVyIElECisKKyAgICAgICAgQ3JlYXRlcyBhIG5l dyBqb2IgZm9yIGJhY2t1cCB0YXNrIChCYWNrdXAgRGF0YWJhc2UocykvU2No ZW1hKHMpL1RhYmxlKHMpKQorCisgICAgUmV0dXJuczoKKyAgICAgICAgTm9u ZQorICAgICIiIgorICAgIGlmIHJlcXVlc3QuZm9ybToKKyAgICAgICAgIyBD b252ZXJ0IEltbXV0YWJsZURpY3QgdG8gZGljdAorICAgICAgICBkYXRhID0g ZGljdChyZXF1ZXN0LmZvcm0pCisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRz KGRhdGFbJ2RhdGEnXVswXSkKKyAgICBlbHNlOgorICAgICAgICBkYXRhID0g anNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICBkYXRh WydmaWxlJ10gPSBmaWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoKGRh dGFbJ2ZpbGUnXSkKKworICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxz IGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0YworICAgIHNlcnZlciA9 IFNlcnZlci5xdWVyeS5maWx0ZXJfYnkoCisgICAgICAgIGlkPXNpZCwgdXNl cl9pZD1jdXJyZW50X3VzZXIuaWQKKyAgICApLmZpcnN0KCkKKworICAgIGlm IHNlcnZlciBpcyBOb25lOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAg ZXJyb3Jtc2c9XygiQ291bGRuJ3QgZmluZCB0aGUgZ2l2ZW4gc2VydmVyIikK KyAgICAgICAgKQorCisgICAgIyBUbyBmZXRjaCBNZXRhRGF0YSBmb3IgdGhl IHNlcnZlcgorICAgIGZyb20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0 IGdldF9kcml2ZXIKKyAgICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFV TFRfRFJJVkVSKQorICAgIG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9t YW5hZ2VyKHNlcnZlci5pZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0 aW9uKCkKKyAgICBjb25uZWN0ZWQgPSBjb25uLmNvbm5lY3RlZCgpCisKKyAg ICBpZiBub3QgY29ubmVjdGVkOgorICAgICAgICByZXR1cm4gbWFrZV9qc29u X3Jlc3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAg ICAgZXJyb3Jtc2c9XygiUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBm aXJzdC4uLiIpCisgICAgICAgICkKKworICAgIHV0aWxpdHkgPSB1dGlsaXR5 X3dpdGhfYmluX3BhdGgobWFuYWdlciwgJ2JhY2t1cCcpCisgICAgYXJncyA9 IFsKKyAgICAgICAgJy0taG9zdCcsCisgICAgICAgIHNlcnZlci5ob3N0LAor ICAgICAgICAnLS1wb3J0JywKKyAgICAgICAgc3RyKHNlcnZlci5wb3J0KSwK KyAgICAgICAgJy0tdXNlcm5hbWUnLAorICAgICAgICBzZXJ2ZXIudXNlcm5h bWUsCisgICAgICAgICctLW5vLXBhc3N3b3JkJywKKyAgICAgICAgJy0tZmls ZScsCisgICAgICAgIGRhdGFbJ2ZpbGUnXQorICAgIF0KKworICAgIGRlZiBz ZXRfcGFyYW0oa2V5LCBwYXJhbSk6CisgICAgICAgIGlmIGtleSBpbiBkYXRh OgorICAgICAgICAgICAgYXJncy5hcHBlbmQocGFyYW0pCisKKyAgICBkZWYg c2V0X3ZhbHVlKGtleSwgcGFyYW0sIHZhbHVlKToKKyAgICAgICAgaWYga2V5 IGluIGRhdGE6CisgICAgICAgICAgICBhcmdzLmFwcGVuZChwYXJhbSkKKyAg ICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgIGlmIHZhbHVl IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHBh cmFtW2tleV0pCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg ICAgICAgICAgYXJncy5hcHBlbmQodmFsdWUpCisKKyAgICBzZXRfcGFyYW0o J3ZlcmJvc2UnLCAnLS12ZXJib3NlJykKKyAgICBzZXRfcGFyYW0oJ2Rxb3V0 ZScsICctLXF1b3RlLWFsbC1pZGVudGlmaWVycycpCisKKyAgICBpZiBkYXRh Wydmb3JtYXQnXSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgZGF0YVsnZm9y bWF0J10gPT0gJ2N1c3RvbSc6CisgICAgICAgICAgICBhcmdzLmV4dGVuZChb Jy0tZm9ybWF0JywgJ2N1c3RvbSddKQorCisgICAgICAgICAgICBzZXRfcGFy YW0oJ2Jsb2JzJywgJy0tYmxvYnMnKQorICAgICAgICAgICAgc2V0X3ZhbHVl KCdyYXRpbycsICctLWNvbXByZXNzJywgVHJ1ZSkKKworICAgICAgICBlbGlm IGRhdGFbJ2Zvcm1hdCddID09ICd0YXInOgorICAgICAgICAgICAgYXJncy5l eHRlbmQoWyctLWZvcm1hdCcsICd0YXInXSkKKworICAgICAgICAgICAgc2V0 X3BhcmFtKCdibG9icycsICctLWJsb2JzJykKKworICAgICAgICBlbGlmIGRh dGFbJ2Zvcm1hdCddID09ICdwbGFpbic6CisgICAgICAgICAgICBhcmdzLmV4 dGVuZChbJy0tZm9ybWF0JywgJ3BsYWluJ10pCisgICAgICAgICAgICBpZiBk YXRhWydvbmx5X2RhdGEnXToKKyAgICAgICAgICAgICAgICBhcmdzLmFwcGVu ZCgnLS1kYXRhLW9ubHknKQorICAgICAgICAgICAgICAgIHNldF9wYXJhbSgn ZGlzYWJsZV90cmlnZ2VyJywgJy0tZGlzYWJsZS10cmlnZ2VycycpCisgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNldF9wYXJhbSgnb25s eV9zY2hlbWEnLCAnLS1zY2hlbWEtb25seScpCisgICAgICAgICAgICAgICAg c2V0X3BhcmFtKCdkbnNfb3duZXInLCAnLS1uby1vd25lcicpCisgICAgICAg ICAgICAgICAgc2V0X3BhcmFtKCdpbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZScs ICctLWNyZWF0ZScpCisgICAgICAgICAgICAgICAgc2V0X3BhcmFtKCdpbmNs dWRlX2Ryb3BfZGF0YWJhc2UnLCAnLS1jbGVhbicpCisgICAgICAgIGVsaWYg ZGF0YVsnZm9ybWF0J10gPT0gJ2RpcmVjdG9yeSc6CisgICAgICAgICAgICBh cmdzLmV4dGVuZChbJy0tZm9ybWF0JywgJ2RpcmVjdG9yeSddKQorCisgICAg c2V0X3BhcmFtKCdwcmVfZGF0YScsICctLXNlY3Rpb24gcHJlLWRhdGEnKQor ICAgIHNldF9wYXJhbSgnZGF0YScsICctLXNlY3Rpb24gZGF0YScpCisgICAg c2V0X3BhcmFtKCdwb3N0X2RhdGEnLCAnLS1zZWN0aW9uIHBvc3QtZGF0YScp CisgICAgc2V0X3BhcmFtKCdkbnNfcHJpdmlsZWdlJywgJy0tbm8tcHJpdmls ZWdlcycpCisgICAgc2V0X3BhcmFtKCdkbnNfdGFibGVzcGFjZScsICctLW5v LXRhYmxlc3BhY2VzJykKKyAgICBzZXRfcGFyYW0oJ2Ruc191bmxvZ2dlZF90 YmxfZGF0YScsICctLW5vLXVubG9nZ2VkLXRhYmxlLWRhdGEnKQorICAgIHNl dF9wYXJhbSgndXNlX2luc2VydF9jb21tYW5kcycsICctLWluc2VydHMnKQor ICAgIHNldF9wYXJhbSgndXNlX2NvbHVtbl9pbnNlcnRzJywgJy0tY29sdW1u LWluc2VydHMnKQorICAgIHNldF9wYXJhbSgnZGlzYWJsZV9xdW90aW5nJywg Jy0tZGlzYWJsZS1kb2xsYXItcXVvdGluZycpCisgICAgc2V0X3BhcmFtKCd3 aXRoX29pZHMnLCAnLS1vaWRzJykKKyAgICBzZXRfcGFyYW0oJ3VzZV9zZXRf c2Vzc2lvbl9hdXRoJywgJy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6YXRp b24nKQorCisgICAgc2V0X3ZhbHVlKCdub19vZl9qb2JzJywgJy0tam9icycs IFRydWUpCisKKyAgICBmb3IgcyBpbiBkYXRhWydzY2hlbWFzJ106CisgICAg ICAgIGFyZ3MuZXh0ZW5kKFsnLS1zY2hlbWEnLCBkcml2ZXIucXRJZGVudChj b25uLCBzKV0pCisKKyAgICBmb3IgcywgdCBpbiBkYXRhWyd0YWJsZXMnXToK KyAgICAgICAgYXJncy5leHRlbmQoWworICAgICAgICAgICAgJy0tdGFibGUn LCBkcml2ZXIucXRJZGVudChjb25uLCBzKSArICcuJyArIGRyaXZlci5xdElk ZW50KGNvbm4sIHQpCisgICAgICAgIF0pCisKKyAgICBhcmdzLmFwcGVuZChk cml2ZXIucXRJZGVudChjb25uLCBzZXJ2ZXIubWFpbnRlbmFuY2VfZGIpKQor CisgICAgdHJ5OgorICAgICAgICBwID0gQmF0Y2hQcm9jZXNzKGRlc2M9J0Jh Y2t1cCcsIGNtZD11dGlsaXR5LCBhcmdzPWFyZ3MpCisgICAgICAgIHAuc3Rh cnQoKQorICAgICAgICBqaWQgPSBwLmlkCisgICAgZXhjZXB0IEV4Y2VwdGlv biBhcyBlOgorICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXhjZXB0aW9u KGUpCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgc3VjY2Vzcz0wLAor ICAgICAgICAgICAgZXJyb3Jtc2c9c3RyKGUpCisgICAgICAgICkKKworICAg ICMgUmV0dXJuIHJlc3BvbnNlCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgZGF0YT17J2pvYl9pZCc6IGppZCwgJ1N1Y2Nlc3Mn OiAxfQorICAgICkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2Jh Y2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1cC5qcyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1cC5q cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjk1NmZl Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3Vw L3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzCkBAIC0wLDAgKzEsNjM2 IEBACitkZWZpbmUoWworICAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3JlJywg J3VuZGVyc2NvcmUuc3RyaW5nJywgJ2FsZXJ0aWZ5JywKKyAgICAgICdwZ2Fk bWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAnYmFja2Zv cm0nLCAncGdhZG1pbi5icm93c2VyLm5vZGUnCisgICAgICBdLAorCisgIC8v IFRoaXMgZGVmaW5lcyBCYWNrdXAgZGlhbG9nCisgIGZ1bmN0aW9uKCQsIF8s IFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwg QmFja2Zvcm0sIHBnTm9kZSkgeworCisgICAgLy8gaWYgbW9kdWxlIGlzIGFs cmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCisgICAgaWYgKHBn QnJvd3Nlci5CYWNrdXApIHsKKyAgICAgIHJldHVybiBwZ0Jyb3dzZXIuQmFj a3VwOworICAgIH0KKworICAgIHZhciBDdXN0b21Td2l0Y2hDb250cm9sID0g QmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCA9IEJhY2tmb3JtLlN3aXRj aENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgdGVtcGxhdGU6IF8udGVtcGxh dGUoWworICAgICAgICAgICc8bGFiZWwgY2xhc3M9IjwlPUJhY2tmb3JtLmNv bnRyb2xMYWJlbENsYXNzTmFtZSU+IGN1c3RvbV9zd2l0Y2hfbGFiZWxfY2xh c3MiPjwlPWxhYmVsJT48L2xhYmVsPicsCisgICAgICAgICAgJzxkaXYgY2xh c3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xzQ2xhc3NOYW1lJT4gY3VzdG9tX3N3 aXRjaF9jb250cm9sX2NsYXNzIj4nLAorICAgICAgICAgICcgIDxkaXYgY2xh c3M9ImNoZWNrYm94Ij4nLAorICAgICAgICAgICcgICAgPGxhYmVsPicsCisg ICAgICAgICAgJyAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9 IjwlPWV4dHJhQ2xhc3Nlcy5qb2luKFwnIFwnKSU+IiBuYW1lPSI8JT1uYW1l JT4iIDwlPXZhbHVlID8gImNoZWNrZWQ9XCdjaGVja2VkXCciIDogIiIlPiA8 JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVpcmVkID8g InJlcXVpcmVkIiA6ICIiJT4gLz4nLAorICAgICAgICAgICcgICAgPC9sYWJl bD4nLAorICAgICAgICAgICcgIDwvZGl2PicsCisgICAgICAgICAgJzwvZGl2 PicsCisgICAgICAgICAgJzwlIGlmIChoZWxwTWVzc2FnZSAmJiBoZWxwTWVz c2FnZS5sZW5ndGgpIHsgJT4nLAorICAgICAgICAgICcgIDxzcGFuIGNsYXNz PSI8JT1CYWNrZm9ybS5oZWxwTWVzc2FnZUNsYXNzTmFtZSU+Ij48JT1oZWxw TWVzc2FnZSU+PC9zcGFuPicsCisgICAgICAgICAgJzwlIH0gJT4nCisgICAg ICAgIF0uam9pbigiXG4iKSksCisgICAgICAgIGNsYXNzTmFtZTogJ3BnYWRt aW4tY29udHJvbC1ncm91cCBmb3JtLWdyb3VwIGNvbC14cy02JworICAgIH0p OworCisgICAgLy9CYWNrdXAgTW9kZWwgKFNlcnZlciBOb2RlKQorICAgIHZh ciBCYWNrdXBNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7CisgICAg ICBpZEF0dHJpYnV0ZTogJ2lkJywKKyAgICAgIGRlZmF1bHRzOiB7CisgICAg ICAgIGZpbGU6IHVuZGVmaW5lZCwKKyAgICAgICAgcm9sZTogdW5kZWZpbmVk LAorICAgICAgICBkcW91dGU6IGZhbHNlLAorICAgICAgICB2ZXJib3NlOiB0 cnVlLAorICAgICAgICB0eXBlOiB1bmRlZmluZWQgLyogZ2xvYmFsLCBzZXJ2 ZXIgKi8KKyAgICAgIH0sCisgICAgICBzY2hlbWE6IFt7CisgICAgICAgIGlk OiAnZmlsZScsIGxhYmVsOiAne3sgXygnRmlsZW5hbWUnKSB9fScsCisgICAg ICAgIHR5cGU6ICd0ZXh0JywgZGlzYWJsZWQ6IGZhbHNlLCBjb250cm9sOiBC YWNrZm9ybS5GaWxlQ29udHJvbCwKKyAgICAgICAgZGlhbG9nX3R5cGU6ICdj cmVhdGVfZmlsZScsIHN1cHBfdHlwZXM6IFsnKicsICdzcWwnXQorICAgICAg fSx7CisgICAgICAgIGlkOiAncm9sZScsIGxhYmVsOiAne3sgXygnUm9sZSBu YW1lJykgfX0nLAorICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5h bWUnLCBub2RlOiAncm9sZScsCisgICAgICAgIHNlbGVjdDI6IHsgYWxsb3dD bGVhcjogZmFsc2UgfQorICAgICAgfSx7CisgICAgICAgIHR5cGU6ICduZXN0 ZWQnLCBjb250cm9sOiAnZmllbGRzZXQnLCBsYWJlbDogJ3t7IF8oJ01pc2Nl bGxhbmVvdXMnKSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAgICAgICAg IGlkOiAndmVyYm9zZScsIGxhYmVsOiAne3sgXygnVmVyYm9zZSBtZXNzYWdl cycpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21T d2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAgZ3Jv dXA6ICd7eyBfKCdNaXNjZWxsYW5lb3VzJykgfX0nCisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnZHFvdXRlJywgbGFiZWw6ICd7eyBfKCdGb3JjZSBk b3VibGUgcXVvdGUgb24gaWRlbnRpZmllcnMnKSB9fScsCisgICAgICAgICAg Y29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJs ZWQ6IGZhbHNlLAorICAgICAgICAgIGdyb3VwOiAne3sgXygnTWlzY2VsbGFu ZW91cycpIH19JworICAgICAgICB9XQorICAgICAgfSx7CisgICAgICAgIGlk OiAnc2VydmVyX25vdGUnLCBsYWJlbDogJ3t7IF8oJ05vdGUnKSB9fScsCisg ICAgICAgIHRleHQ6ICd7eyBfKCdUaGUgYmFja3VwIGZvcm1hdCB3aWxsIGJl IFBMQUlOJykgfX0nLAorICAgICAgICB0eXBlOiAnbm90ZScsIHZpc2libGU6 IGZ1bmN0aW9uKG0peworICAgICAgICAgIHJldHVybiBtLmdldCgndHlwZScp ID09PSAnc2VydmVyJzsKKyAgICAgICAgfQorICAgICAgfSx7CisgICAgICAg IGlkOiAnZ2xvYmFsc19ub3RlJywgbGFiZWw6ICd7eyBfKCdOb3RlJykgfX0n LAorICAgICAgICB0ZXh0OiAne3sgXygnT25seSBvYmplY3RzIGdsb2JhbCB0 byB0aGUgZW50aXJlIGRhdGFiYXNlIHdpbGwgYmUgYmFja2VkIHVwIGluIFBM QUlOIGZvcm1hdCcpIH19JywKKyAgICAgICAgdHlwZTogJ25vdGUnLCB2aXNp YmxlOiBmdW5jdGlvbihtKXsKKyAgICAgICAgICByZXR1cm4gbS5nZXQoJ3R5 cGUnKSA9PT0gJ2dsb2JhbHMnOworICAgICAgICB9CisgICAgIH0seworICAg ICB9XSwKKyAgICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKyAgICAgICAg Ly8gVE9ETzogSE9XIFRPIFZBTElEQVRFID8/PworICAgICAgICByZXR1cm4g bnVsbDsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIC8vQmFja3VwIE1vZGVs IChPYmplY3RzIGxpa2UgRGF0YWJhc2UvU2NoZW1hL1RhYmxlKQorICAgIHZh ciBCYWNrdXBPYmplY3RNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7 CisgICAgICBpZEF0dHJpYnV0ZTogJ2lkJywKKyAgICAgIGRlZmF1bHRzOiB7 CisgICAgICAgIGZpbGU6IHVuZGVmaW5lZCwKKyAgICAgICAgcm9sZTogJ3Bv c3RncmVzJywKKyAgICAgICAgZm9ybWF0OiAnY3VzdG9tJywKKyAgICAgICAg dmVyYm9zZTogdHJ1ZSwKKyAgICAgICAgYmxvYnM6IHRydWUsCisgICAgICAg IGVuY29kaW5nOiB1bmRlZmluZWQsCisgICAgICAgIHNjaGVtYXM6IFtdLAor ICAgICAgICB0YWJsZXM6IFtdLAorICAgICAgICBkYXRhYmFzZTogdW5kZWZp bmVkCisgICAgICB9LAorICAgICAgc2NoZW1hOiBbeworICAgICAgICBpZDog J2ZpbGUnLCBsYWJlbDogJ3t7IF8oJ0ZpbGVuYW1lJykgfX0nLAorICAgICAg ICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmYWxzZSwgY29udHJvbDogQmFj a2Zvcm0uRmlsZUNvbnRyb2wsCisgICAgICAgIGRpYWxvZ190eXBlOiAnY3Jl YXRlX2ZpbGUnLCBzdXBwX3R5cGVzOiBbJyonLCAnc3FsJ10KKyAgICAgIH0s eworICAgICAgICBpZDogJ2Zvcm1hdCcsIGxhYmVsOiAne3sgXygnRm9ybWF0 JykgfX0nLAorICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmYWxz ZSwKKyAgICAgICAgY29udHJvbDogJ3NlbGVjdDInLCBzZWxlY3QyOiB7Cisg ICAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKKyAgICAgICAgICAgIHdp ZHRoOiAiMTAwJSIKKyAgICAgICAgfSwKKyAgICAgICAgb3B0aW9uczogWwor ICAgICAgICAgIHtsYWJlbDogIkN1c3RvbSIsIHZhbHVlOiAiY3VzdG9tIn0s CisgICAgICAgICAge2xhYmVsOiAiVGFyIiwgdmFsdWU6ICJ0YXIifSwKKyAg ICAgICAgICB7bGFiZWw6ICJQbGFpbiIsIHZhbHVlOiAicGxhaW4ifSwKKyAg ICAgICAgICB7bGFiZWw6ICJEaXJlY3RvcnkiLCB2YWx1ZTogImRpcmVjdG9y eSJ9CisgICAgICAgIF0KKyAgICAgIH0seworICAgICAgICBpZDogJ3JhdGlv JywgbGFiZWw6ICd7eyBfKCdDb21wcmFzaW9uIHJhdGlvJykgfX0nLAorICAg ICAgICB0eXBlOiAnaW50JywgbWluOiAwLCBtYXg6OSwgZGlzYWJsZWQ6IGZh bHNlCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdlbmNvZGluZycsIGxhYmVs OiAne3sgXygnRW5jb2RpbmcnKSB9fScsCisgICAgICAgIHR5cGU6ICd0ZXh0 JywgZGlzYWJsZWQ6IGZhbHNlLCAgbm9kZTogJ2RhdGFiYXNlJywKKyAgICAg ICAgY29udHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgdXJsOiAnZ2V0X2Vu Y29kaW5ncycKKyAgICAgIH0seworICAgICAgICBpZDogJ25vX29mX2pvYnMn LCBsYWJlbDogJ3t7IF8oJ051bWJlciBvZiBqb2JzJykgfX0nLAorICAgICAg ICB0eXBlOiAnaW50JywgZGVwczogWydmb3JtYXQnXSwgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICByZXR1cm4gIShtLmdldCgnZm9ybWF0 JykgPT09ICJEaXJlY3RvcnkiKTsKKyAgICAgICAgfQorICAgICAgfSx7Cisg ICAgICAgIGlkOiAncm9sZScsIGxhYmVsOiAne3sgXygnUm9sZSBuYW1lJykg fX0nLAorICAgICAgICBjb250cm9sOiAnbm9kZS1saXN0LWJ5LW5hbWUnLCBu b2RlOiAncm9sZScsCisgICAgICAgIHNlbGVjdDI6IHsgYWxsb3dDbGVhcjog ZmFsc2UgfQorICAgICAgfSx7CisgICAgICAgIHR5cGU6ICduZXN0ZWQnLCBj b250cm9sOiAnZmllbGRzZXQnLCBsYWJlbDogJ3t7IF8oJ1NlY3Rpb25zJykg fX0nLAorICAgICAgICBncm91cDogJ3t7IF8oJ0R1bXAgb3B0aW9ucycpIH19 JywKKyAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAgaWQ6ICdwcmVfZGF0 YScsIGxhYmVsOiAne3sgXygnUHJlLWRhdGEnKSB9fScsCisgICAgICAgICAg Y29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3JvdXA6 ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAgICAgICAgICBkZXBzOiBbJ29u bHlfZGF0YScsICdvbmx5X3NjaGVtYSddLCBkaXNhYmxlZDogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0KCdvbmx5X2RhdGEnKQor ICAgICAgICAgICAgICAgICAgIHx8IG0uZ2V0KCdvbmx5X3NjaGVtYScpOwor ICAgICAgICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdkYXRh JywgbGFiZWw6ICd7eyBfKCdEYXRhJykgfX0nLAorICAgICAgICAgIGNvbnRy b2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2wsIGdyb3VwOiAne3sg XygnU2VjdGlvbnMnKSB9fScsCisgICAgICAgICAgZGVwczogWydvbmx5X2Rh dGEnLCAnb25seV9zY2hlbWEnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgIHJldHVybiBtLmdldCgnb25seV9kYXRhJykKKyAgICAg ICAgICAgICAgICAgICB8fCBtLmdldCgnb25seV9zY2hlbWEnKTsKKyAgICAg ICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAncG9zdF9kYXRh JywgbGFiZWw6ICd7eyBfKCdQb3N0LWRhdGEnKSB9fScsCisgICAgICAgICAg Y29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3JvdXA6 ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAgICAgICAgICBkZXBzOiBbJ29u bHlfZGF0YScsICdvbmx5X3NjaGVtYSddLCBkaXNhYmxlZDogZnVuY3Rpb24o bSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0KCdvbmx5X2RhdGEnKQor ICAgICAgICAgICAgICAgICAgIHx8IG0uZ2V0KCdvbmx5X3NjaGVtYScpOwor ICAgICAgICAgIH0KKyAgICAgICAgfV0KKyAgICAgIH0seworICAgICAgICB0 eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7 eyBfKCdUeXBlIG9mIG9iamVjdHMnKSB9fScsCisgICAgICAgIGdyb3VwOiAn e3sgXygnRHVtcCBvcHRpb25zJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sK KyAgICAgICAgICBpZDogJ29ubHlfZGF0YScsIGxhYmVsOiAne3sgXygnT25s eSBkYXRhJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1 c3RvbVN3aXRjaENvbnRyb2wsIGdyb3VwOiAne3sgXygnVHlwZSBvZiBvYmpl Y3RzJykgfX0nLAorICAgICAgICAgIGRlcHM6IFsncHJlX2RhdGEnLCAnZGF0 YScsICdwb3N0X2RhdGEnLCdvbmx5X3NjaGVtYSddLCBkaXNhYmxlZDogZnVu Y3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIG0uZ2V0KCdwcmVfZGF0 YScpCisgICAgICAgICAgICAgICAgICAgfHwgbS5nZXQoJ2RhdGEnKQorICAg ICAgICAgICAgICAgICAgIHx8IG0uZ2V0KCdwb3N0X2RhdGEnKQorICAgICAg ICAgICAgICAgICAgIHx8IG0uZ2V0KCdvbmx5X3NjaGVtYScpOworICAgICAg ICAgIH0KKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdvbmx5X3NjaGVt YScsIGxhYmVsOiAne3sgXygnT25seSBzY2hlbWEnKSB9fScsCisgICAgICAg ICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3Jv dXA6ICd7eyBfKCdUeXBlIG9mIG9iamVjdHMnKSB9fScsCisgICAgICAgICAg ZGVwczogWydwcmVfZGF0YScsICdkYXRhJywgJ3Bvc3RfZGF0YScsICdvbmx5 X2RhdGEnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg IHJldHVybiBtLmdldCgncHJlX2RhdGEnKQorICAgICAgICAgICAgICAgICAg IHx8IG0uZ2V0KCdkYXRhJykKKyAgICAgICAgICAgICAgICAgICB8fCBtLmdl dCgncG9zdF9kYXRhJykKKyAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgn b25seV9kYXRhJyk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2Jsb2JzJywgbGFiZWw6ICd7eyBfKCdCbG9icycpIH19JywK KyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250 cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnVHlwZSBvZiBv YmplY3RzJykgfX0nCisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAgICAg dHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAn e3sgXygnRG8gbm90IHNhdmUnKSB9fScsCisgICAgICAgIGdyb3VwOiAne3sg XygnRHVtcCBvcHRpb25zJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sKKyAg ICAgICAgICBpZDogJ2Ruc19vd25lcicsIGxhYmVsOiAne3sgXygnT3duZXIn KSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dp dGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ0Rv IG5vdCBzYXZlJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn ZG5zX3ByaXZpbGVnZScsIGxhYmVsOiAne3sgXygnUHJpdmlsZWdlJykgfX0n LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENv bnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdEbyBub3Qg c2F2ZScpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Ruc190 YWJsZXNwYWNlJywgbGFiZWw6ICd7eyBfKCdUYWJsZXNwYWNlJykgfX0nLAor ICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRy b2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdEbyBub3Qgc2F2 ZScpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Ruc191bmxv Z2dlZF90YmxfZGF0YScsIGxhYmVsOiAne3sgXygnVW5sb2dnZWQgdGFibGUg ZGF0YScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0 b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sg XygnRG8gbm90IHNhdmUnKSB9fScKKyAgICAgICAgfV0KKyAgICAgIH0sewor ICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0Jywg bGFiZWw6ICd7eyBfKCdRdWVyaWVzJykgfX0nLAorICAgICAgICBncm91cDog J3t7IF8oJ0R1bXAgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2NoZW1hOlt7 CisgICAgICAgICAgaWQ6ICd1c2VfY29sdW1uX2luc2VydHMnLCBsYWJlbDog J3t7IF8oJ1VzZSBDb2x1bW4gSW5zZXJ0cycpIH19JywKKyAgICAgICAgICBj b250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxl ZDogZmFsc2UsIGdyb3VwOiAne3sgXygnUXVlcmllcycpIH19JworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ3VzZV9pbnNlcnRfY29tbWFuZHMnLCBs YWJlbDogJ3t7IF8oJ1VzZSBJbnNlcnQgQ29tbWFuZHMnKSB9fScsCisgICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwg ZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ1F1ZXJpZXMnKSB9fScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdpbmNsdWRlX2NyZWF0ZV9k YXRhYmFzZScsIGxhYmVsOiAne3sgXygnSW5jbHVkZSBDUkVBVEUgREFUQUJB U0Ugc3RhdGVtZW50JykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tm b3JtLkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3Jv dXA6ICd7eyBfKCdRdWVyaWVzJykgfX0nCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnaW5jbHVkZV9kcm9wX2RhdGFiYXNlJywgbGFiZWw6ICd7eyBf KCdJbmNsdWRlIERST1AgREFUQUJBU0Ugc3RhdGVtZW50JykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdRdWVyaWVzJykgfX0n CisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAgICAgdHlwZTogJ25lc3Rl ZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnRGlzYWJs ZScpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdEdW1wIG9wdGlvbnMn KSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgIGlkOiAnZGlz YWJsZV90cmlnZ2VyJywgbGFiZWw6ICd7eyBfKCdUcmlnZ2VyJykgfX0nLAor ICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRy b2wsIGdyb3VwOiAne3sgXygnRGlzYWJsZScpIH19JywKKyAgICAgICAgICBk ZXBzOiBbJ29ubHlfZGF0YSddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkgewor ICAgICAgICAgICAgcmV0dXJuICEobS5nZXQoJ29ubHlfZGF0YScpKTsKKyAg ICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGlzYWJs ZV9xdW90aW5nJywgbGFiZWw6ICd7eyBfKCckIHF1b3RpbmcnKSB9fScsCisg ICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJv bCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ0Rpc2FibGUnKSB9 fScKKyAgICAgICAgfV0KKyAgICAgIH0seworICAgICAgICB0eXBlOiAnbmVz dGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdNaXNj ZWxsYW5lb3VzJykgfX0nLAorICAgICAgICBncm91cDogJ3t7IF8oJ0R1bXAg b3B0aW9ucycpIH19JywKKyAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAg aWQ6ICd3aXRoX29pZHMnLCBsYWJlbDogJ3t7IF8oJ1dpdGggT0lEKHMpJykg fX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRj aENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdNaXNj ZWxsYW5lb3VzJykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAn dmVyYm9zZScsIGxhYmVsOiAne3sgXygnVmVyYm9zZSBtZXNzYWdlcycpIH19 JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hD b250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnTWlzY2Vs bGFuZW91cycpIH19JworICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ2Rx b3V0ZScsIGxhYmVsOiAne3sgXygnRm9yY2UgZG91YmxlIHF1b3RlIG9uIGlk ZW50aWZpZXJzJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3Jt LkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6 ICd7eyBfKCdNaXNjZWxsYW5lb3VzJykgfX0nCisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAndXNlX3NldF9zZXNzaW9uX2F1dGgnLCBsYWJlbDogJ3t7 IF8oJ1VzZSBTRVQgU0VTU0lPTiBBVVRIT1JJWkFUSU9OJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdNaXNjZWxsYW5lb3Vz JykgfX0nCisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAgICAgICBpZDog J3RvZG8nLCBsYWJlbDogJ3t7IF8oJ1RPRE8nKSB9fScsIHRleHQ6ICd7eyBf KCdBZGQgT2JqZWN0cyBzZWxlY3Rpb24gdHJlZSBoZXJlJykgfX0nLAorICAg ICAgICAgIHR5cGU6ICdub3RlJywgZ3JvdXA6ICd7eyBfKCdPYmplY3RzJykg fX0nCisgICAgIH1dLAorICAgICAgdmFsaWRhdGU6IGZ1bmN0aW9uKCkgewor ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgIH0KKyAgICB9KTsKKworICAg IC8vIENyZWF0ZSBhbiBPYmplY3QgQmFja3VwIG9mIHBnQnJvd3NlciBjbGFz cworICAgIHBnQnJvd3Nlci5CYWNrdXAgID0geworICAgICAgaW5pdDogZnVu Y3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlzLmluaXRpYWxpemVkKQorICAg ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLmluaXRpYWxpemVkID0g dHJ1ZTsKKworICAgICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3 aGljaCBiYWNrdXAgY29udGV4dCBtZW51IG9wdGlvbiBhcHBlYXJzCisgICAg ICAgIHZhciBiYWNrdXBfc3VwcG9ydGVkX25vZGVzID0gWworICAgICAgICAg ICAgICAnZGF0YWJhc2UnLCAnc2NoZW1hJywgJ3RhYmxlJworICAgICAgICAg ICAgXTsKKworICAgICAgICAvKioKKyAgICAgICAgICBFbmFibGUvZGlzYWJs ZSBiYWNrdXAgbWVudSBpbiB0b29scyBiYXNlZAorICAgICAgICAgIG9uIG5v ZGUgc2VsZWN0ZWQKKyAgICAgICAgICBpZiBzZWxlY3RlZCBub2RlIGlzIHBy ZXNlbnQgaW4gc3VwcG9ydGVkX25vZGVzLAorICAgICAgICAgIG1lbnUgd2ls bCBiZSBlbmFibGVkIG90aGVyd2lzZSBkaXNhYmxlZC4KKyAgICAgICAgICBB bHNvLCBoaWRlIGl0IGZvciBzeXN0ZW0gdmlldyBpbiBjYXRhbG9ncworICAg ICAgICAqLworICAgICAgICBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVt RGF0YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAgIHZhciB0ID0gcGdCcm93 c2VyLnRyZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisgICAgICAgICAg dmFyIHBhcmVudF9pdGVtID0gdC5oYXNQYXJlbnQoaSkgPyB0LnBhcmVudChp KTogbnVsbCwKKyAgICAgICAgICAgICAgcGFyZW50X2RhdGEgPSBwYXJlbnRf aXRlbSA/IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVsbDsKKyAgICAg ICAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKGQpICYmICFfLmlzTnVsbChkKSAm JiAhXy5pc051bGwocGFyZW50X2RhdGEpKQorICAgICAgICAgICAgICByZXR1 cm4gKAorICAgICAgICAgICAgICAgIChfLmluZGV4T2YoYmFja3VwX3N1cHBv cnRlZF9ub2RlcywgZC5fdHlwZSkgIT09IC0xICYmCisgICAgICAgICAgICAg ICAgcGFyZW50X2RhdGEuX3R5cGUgIT0gJ2NhdGFsb2cnKSA/IHRydWU6IGZh bHNlCisgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBlbHNlCisgICAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfTsKKworICAgICAg ICBtZW51X2VuYWJsZWRfc2VydmVyID0gZnVuY3Rpb24oaXRlbURhdGEsIGl0 ZW0sIGRhdGEpIHsKKyAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50cmVl LCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworICAgICAgICAgIHZhciBwYXJl bnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSk6IG51bGws CisgICAgICAgICAgICAgIHBhcmVudF9kYXRhID0gcGFyZW50X2l0ZW0gPyB0 Lml0ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51bGw7CisgICAgICAgICAgICAg IC8vIElmIHNlcnZlciBub2RlIHNlbGVjdGVkICYmIGNvbm5lY3RlZAorICAg ICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChkKSAmJiAhXy5pc051bGwo ZCkpCisgICAgICAgICAgICAgICAgcmV0dXJuICgoJ3NlcnZlcicgPT09IGQu X3R5cGUpICYmIGQuY29ubmVjdGVkKTsKKyAgICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICAgIGZhbHNlOworICAgICAgICB9OworCisgICAgICAg IC8vIERlZmluZSB0aGUgbm9kZXMgb24gd2hpY2ggdGhlIG1lbnVzIHRvIGJl IGFwcGVhcgorICAgICAgICB2YXIgbWVudXMgPSBbeworICAgICAgICAgIG5h bWU6ICdiYWNrdXBfZ2xvYmFsJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAg IGFwcGxpZXM6IFsndG9vbHMnXSwgY2FsbGJhY2s6ICdzdGFydF9iYWNrdXBf Z2xvYmFsJywKKyAgICAgICAgICBwcmlvcml0eTogMTAsIGxhYmVsOiAne3tf KCJCYWNrdXAgR2xvYmFscy4uLiIpIH19JywKKyAgICAgICAgICBpY29uOiAn ZmEgZmEtZmxvcHB5LW8nLCBlbmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIK KyAgICAgICAgfSx7CisgICAgICAgICAgbmFtZTogJ2JhY2t1cF9zZXJ2ZXIn LCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWyd0b29scydd LCBjYWxsYmFjazogJ3N0YXJ0X2JhY2t1cF9zZXJ2ZXInLAorICAgICAgICAg IHByaW9yaXR5OiAxMCwgbGFiZWw6ICd7e18oIkJhY2t1cCBTZXJ2ZXIuLi4i KSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywgZW5h YmxlOiBtZW51X2VuYWJsZWRfc2VydmVyCisgICAgICAgIH0seworICAgICAg ICAgIG5hbWU6ICdiYWNrdXBfZ2xvYmFsX2N0eCcsIG1vZHVsZTogdGhpcywg bm9kZTogJ3NlcnZlcicsCisgICAgICAgICAgYXBwbGllczogWydjb250ZXh0 J10sIGNhbGxiYWNrOiAnc3RhcnRfYmFja3VwX2dsb2JhbCcsCisgICAgICAg ICAgcHJpb3JpdHk6IDEwLCBsYWJlbDogJ3t7XygiQmFja3VwIEdsb2JhbHMu Li4iKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZsb3BweS1vJywg ZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyCisgICAgICAgIH0seworICAg ICAgICAgIG5hbWU6ICdiYWNrdXBfc2VydmVyX2N0eCcsIG1vZHVsZTogdGhp cywgbm9kZTogJ3NlcnZlcicsCisgICAgICAgICAgYXBwbGllczogWydjb250 ZXh0J10sIGNhbGxiYWNrOiAnc3RhcnRfYmFja3VwX3NlcnZlcicsCisgICAg ICAgICAgcHJpb3JpdHk6IDEwLCBsYWJlbDogJ3t7XygiQmFja3VwIFNlcnZl ci4uLiIpIH19JywKKyAgICAgICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8n LCBlbmFibGU6IG1lbnVfZW5hYmxlZF9zZXJ2ZXIKKyAgICAgICAgfSx7Cisg ICAgICAgICAgbmFtZTogJ2JhY2t1cF9vYmplY3QnLCBtb2R1bGU6IHRoaXMs CisgICAgICAgICAgYXBwbGllczogWyd0b29scyddLCBjYWxsYmFjazogJ2Jh Y2t1cF9vYmplY3RzJywKKyAgICAgICAgICBwcmlvcml0eTogMTAsIGxhYmVs OiAne3tfKCJCYWNrdXAuLi4iKSB9fScsCisgICAgICAgICAgaWNvbjogJ2Zh IGZhLWZsb3BweS1vJywgZW5hYmxlOiBtZW51X2VuYWJsZWQKKyAgICAgICAg fV07CisKKyAgICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgYmFja3Vw X3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAgICAgICAg bWVudXMucHVzaCh7CisgICAgICAgICAgICBuYW1lOiAnYmFja3VwXycgKyBi YWNrdXBfc3VwcG9ydGVkX25vZGVzW2lkeF0sCisgICAgICAgICAgICBub2Rl OiBiYWNrdXBfc3VwcG9ydGVkX25vZGVzW2lkeF0sIG1vZHVsZTogdGhpcywK KyAgICAgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCddLCBjYWxsYmFjazog J2JhY2t1cF9vYmplY3RzJywKKyAgICAgICAgICAgIHByaW9yaXR5OiAxMCwg bGFiZWw6ICd7e18oIkJhY2t1cC4uLiIpIH19JywKKyAgICAgICAgICAgIGlj b246ICdmYSBmYS1mbG9wcHktbycsIGVuYWJsZTogbWVudV9lbmFibGVkCisg ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHBnQWRtaW4u QnJvd3Nlci5hZGRfbWVudXMobWVudXMpOworICAgICAgICByZXR1cm4gdGhp czsKKyAgICAgIH0sCisgICAgICBzdGFydF9iYWNrdXBfZ2xvYmFsOiBmdW5j dGlvbihhY3Rpb24sIGl0ZW0pIHsKKyAgICAgICAgdmFyIHBhcmFtcyA9IHsn Z2xvYmFscyc6IHRydWUgfTsKKyAgICAgICAgdGhpcy5zdGFydF9iYWNrdXBf Z2xvYmFsX3NlcnZlci5hcHBseSgKKyAgICAgICAgICB0aGlzLCBbYWN0aW9u LCBpdGVtLCBwYXJhbXNdCisgICAgICAgICk7CisgICAgICB9LAorICAgICAg c3RhcnRfYmFja3VwX3NlcnZlcjogZnVuY3Rpb24oYWN0aW9uLCBpdGVtKSB7 CisgICAgICAgIHZhciBwYXJhbXMgPSB7J3NlcnZlcic6IHRydWUgfTsKKyAg ICAgICAgdGhpcy5zdGFydF9iYWNrdXBfZ2xvYmFsX3NlcnZlci5hcHBseSgK KyAgICAgICAgICB0aGlzLCBbYWN0aW9uLCBpdGVtLCBwYXJhbXNdCisgICAg ICAgICk7CisgICAgICB9LAorCisgICAgICAvLyBDYWxsYmFjayB0byBkcmF3 IEJhY2t1cCBEaWFsb2cgZm9yIGdsb2JhbHMvc2VydmVyCisgICAgICBzdGFy dF9iYWNrdXBfZ2xvYmFsX3NlcnZlcjogZnVuY3Rpb24oYWN0aW9uLCBpdGVt LCBwYXJhbXMpIHsKKworICAgICAgICB2YXIgb2ZfdHlwZSA9IHVuZGVmaW5l ZDsKKworICAgICAgICAvLyBTZXQgTm90ZXMgYWNjb3JkaW5nIHRvIHR5cGUg b2YgYmFja3VwCisgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChwYXJhbXNb J2dsb2JhbHMnXSkgJiYgcGFyYW1zWydnbG9iYWxzJ10pIHsKKyAgICAgICAg ICBvZl90eXBlID0gJ2dsb2JhbHMnOworICAgICAgICB9IGVsc2UgeworICAg ICAgICAgIG9mX3R5cGUgPSAnc2VydmVyJzsKKyAgICAgICAgfQorCisgICAg ICAgIHZhciBEaWFsb2dOYW1lID0gJ0JhY2t1cERpYWxvZ18nICsgb2ZfdHlw ZSwKKyAgICAgICAgICAgIERpYWxvZ1RpdGxlID0gKChvZl90eXBlID09ICdn bG9iYWxzJykgPworICAgICAgICAgICAgICAne3sgXygnQmFja3VwIEdsb2Jh bHMuLi4nKSB9fScgOgorICAgICAgICAgICAgICAne3sgXygnQmFja3VwIFNl cnZlci4uLicpIH19Jyk7CisKKyAgICAgICAgaWYoIWFsZXJ0aWZ5W0RpYWxv Z05hbWVdKSB7CisgICAgICAgICAgYWxlcnRpZnkuZGlhbG9nKERpYWxvZ05h bWUgLGZ1bmN0aW9uIGZhY3RvcnkoKSB7CisgICAgICAgICAgICByZXR1cm4g eworICAgICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUpIHsKKyAg ICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7CisgICAg ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgc2V0dXA6ZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAg ICAgIGJ1dHRvbnM6IFt7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd7 eyBfKCdCYWNrdXAnKSB9fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0biBi dG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRv bicKKyAgICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAg ICAgIHRleHQ6ICd7eyBfKCdDYW5jZWwnKSB9fScsIGtleTogMjcsIGNsYXNz TmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFs ZXJ0aWZ5LWJ1dHRvbicKKyAgICAgICAgICAgICAgICAgIH1dLAorICAgICAg ICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZworICAgICAg ICAgICAgICAgICAgb3B0aW9uczogeworICAgICAgICAgICAgICAgICAgICB0 aXRsZTogRGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgIC8vZGlz YWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCisgICAg ICAgICAgICAgICAgICAgIHBhZGRpbmcgOiAhMSwKKyAgICAgICAgICAgICAg ICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICAgICAgICAgICAgICBtb2Rl bDogMCwKKyAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVlLAor ICAgICAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwKKyAgICAg ICAgICAgICAgICAgICAgcGlubmFibGU6IGZhbHNlCisgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgaG9va3M6IHsKKyAgICAgICAgICAgICAgICAvLyBU cmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAorICAgICAgICAg ICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg ICAgaWYgKHRoaXMudmlldykgeworICAgICAgICAgICAgICAgICAgICAvLyBj bGVhciBvdXIgYmFja2Zvcm0gbW9kZWwvdmlldworICAgICAgICAgICAgICAg ICAgICB0aGlzLnZpZXcucmVtb3ZlKHtkYXRhOiB0cnVlLCBpbnRlcm5hbDog dHJ1ZSwgc2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICB2 YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBC YWNrdXAgYnV0dG9uIHVudGlsIHVzZXIgcHJvdmlkZXMgRmlsZW5hbWUKKyAg ICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1swXS5lbGVt ZW50LmRpc2FibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHZhciAk Y29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0nYmFja3VwX2RpYWxvZyc+PC9k aXY+Iik7CisgICAgICAgICAgICAgICAgLy8gRmluZCBjdXJyZW50L3NlbGVj dGVkIG5vZGUKKyAgICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nlci50 cmVlLAorICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKKyAg ICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0 ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAgbm9k ZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOworCisgICAgICAg ICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAgICAgcmV0dXJuOwor ICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0cmVlSW5mbworICAgICAgICAg ICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJj aHkuYXBwbHkobm9kZSwgW2ldKTsKKyAgICAgICAgICAgICAgICAvLyBJbnN0 YW5jZSBvZiBiYWNrYm9uZSBtb2RlbAorICAgICAgICAgICAgICAgIHZhciBu ZXdNb2RlbCA9IG5ldyBCYWNrdXBNb2RlbCgKKyAgICAgICAgICAgICAgICAg IHt0eXBlOiBvZl90eXBlfSwge25vZGVfaW5mbzogdHJlZUluZm99CisgICAg ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgZmllbGRzID0g QmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorICAgICAgICAgICAgICAg ICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0cmVl SW5mby5zZXJ2ZXIsIHRydWUKKyAgICAgICAgICAgICAgICAgICk7CisKKyAg ICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlldyA9IG5ldyBCYWNr Zm9ybS5EaWFsb2coeworICAgICAgICAgICAgICAgICAgZWw6ICRjb250YWlu ZXIsIG1vZGVsOiBuZXdNb2RlbCwgc2NoZW1hOiBmaWVsZHMKKyAgICAgICAg ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgb3VyIGNsYXNz IHRvIGFsZXJ0aWZ5CisgICAgICAgICAgICAgICAgJCh0aGlzLmVsZW1lbnRz LmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAgICAgICAg ICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3By b3BlcnRpZXMnCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAg ICAvLyBSZW5kZXIgZGlhbG9nCisgICAgICAgICAgICAgICAgdmlldy5yZW5k ZXIoKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVu dC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICAgICAg ICAgICAgICAvLyBMaXN0ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBw cm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAgYnV0dG9uCisgICAgICAgICAg ICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRo aXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7 CisgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFy KCk7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1 dHRvbnNbMF0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAg ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgIHNl bGYuX19pbnRlcm5hbC5idXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQgPSB0 cnVlOworICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5z ZXQoJ2ZpbGUnLCAne3sgXygnUGxlYXNlIHByb3ZpZGUgZmlsZW5hbWUnKSB9 fScpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9 KTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgLy8gQ2FsbGJh Y2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhl IEFsZXJ0aWZ5IGRpYWxvZ3MKKyAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1 bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS5idXR0b24udGV4 dCA9PT0gJ3t7IF8oJ0JhY2t1cCcpIH19JykgeworICAgICAgICAgICAgICAg ICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2ZXIgaWQKKyAgICAgICAgICAgICAg ICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAgICAg ICAgIGkgPSB0LnNlbGVjdGVkKCksCisgICAgICAgICAgICAgICAgICAgIGQg PSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZp bmVkLAorICAgICAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dz ZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAgICAgICAgICAgIGlmICgh ZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAg ICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGllcmFy Y2h5LmFwcGx5KG5vZGUsIFtpXSk7CisKKyAgICAgICAgICAgICAgICAgIHZh ciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAgICAgYmFzZVVybCA9 ICJ7eyB1cmxfZm9yKCdiYWNrdXAuaW5kZXgnKSB9fSIgKworICAgICAgICAg ICAgICAgICAgICAgICJjcmVhdGVfam9iLyIgKyB0cmVlSW5mby5zZXJ2ZXIu X2lkLAorICAgICAgICAgICAgICAgICAgICBhcmdzID0gIHRoaXMudmlldy5t b2RlbC50b0pTT04oKTsKKworICAgICAgICAgICAgICAgICAgJC5hamF4KHsK KyAgICAgICAgICAgICAgICAgICAgdXJsOiBiYXNlVXJsLAorICAgICAgICAg ICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKKyAgICAgICAgICAgICAgICAg ICAgZGF0YTp7ICdkYXRhJzogSlNPTi5zdHJpbmdpZnkoYXJncykgfSwKKyAg ICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5zdWNjZXNzKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBhbGVydGlmeS5tZXNzYWdlKCd7eyBfKCdC YWNrZ3JvdW5kIHByb2Nlc3MgZm9yIHRha2luZyBiYWNrdXAgaGFzIGJlZW4g Y3JlYXRlZCEnKSB9fScsIDEpOworICAgICAgICAgICAgICAgICAgICAgICAg cGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKCdwZ2FkbWluLWJncHJvY2Vzczpj cmVhdGVkJywgc2VsZik7CisgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICBlcnJv cjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAg ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZh ciBlcnIgPSAkLnBhcnNlSlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAg ICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAg ICAgICAgICAgICAgICAgICAne3sgXygnQmFja3VwIGZhaWxlZC4uLicpIH19 JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyLmVycm9ybXNnCisg ICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAg ICAgIH0gY2F0Y2ggKGUpIHt9CisgICAgICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgICAgfQorICAgICAgICAgIH07CisgICAgICAgfSk7CisgICAgICB9 CisgICAgICAgIGFsZXJ0aWZ5W0RpYWxvZ05hbWVdKHRydWUpLnJlc2l6ZVRv KCc2MCUnLCc1MCUnKTsKKyAgICAgfSwKKworICAgICAgLy8gQ2FsbGJhY2sg dG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBvYmplY3RzCisgICAgICBiYWNr dXBfb2JqZWN0czogZnVuY3Rpb24oYWN0aW9uLCB0cmVlSXRlbSkgeworICAg ICAgICB2YXIgdGl0bGUgPSBTKCd7eyAnQmFja3VwICglczogJXMpJyB9fScp LAorICAgICAgICAgICAgdHJlZSA9IHBnQnJvd3Nlci50cmVlLAorICAgICAg ICAgICAgaXRlbSA9IHRyZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQoKSwKKyAg ICAgICAgICAgIGRhdGEgPSBpdGVtICYmIGl0ZW0ubGVuZ3RoID09IDEgJiYg dHJlZS5pdGVtRGF0YShpdGVtKSwKKyAgICAgICAgICAgIG5vZGUgPSBkYXRh ICYmIGRhdGEuX3R5cGUgJiYgcGdCcm93c2VyLk5vZGVzW2RhdGEuX3R5cGVd OworCisgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgdGl0bGUgPSB0aXRsZS5zcHJpbnRmKG5vZGUubGFiZWwsIGRh dGEubGFiZWwpLnZhbHVlKCk7CisKKyAgICAgICAgaWYoIWFsZXJ0aWZ5LmJh Y2t1cF9vYmplY3RzKSB7CisgICAgICAgICAgLy8gQ3JlYXRlIERpYWxvZyB0 aXRsZSBvbiB0aGUgZmx5IHdpdGggbm9kZSBkZXRhaWxzCisgICAgICAgICAg YWxlcnRpZnkuZGlhbG9nKCdiYWNrdXBfb2JqZWN0cycgLGZ1bmN0aW9uIGZh Y3RvcnkoKSB7CisgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAg ICAgbWFpbjogZnVuY3Rpb24odGl0bGUpIHsKKyAgICAgICAgICAgICAgICB0 aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7CisgICAgICAgICAgICAgICB9LAor ICAgICAgICAgICAgICAgc2V0dXA6ZnVuY3Rpb24oKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6IFt7 CisgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd7eyBfKCdCYWNrdXAnKSB9 fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeSBmYSBm YS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1dHRvbicKKyAgICAgICAgICAg ICAgICAgICAgfSx7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6ICd7eyBf KCdDYW5jZWwnKSB9fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0biBidG4t ZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicK KyAgICAgICAgICAgICAgICAgIH1dLAorICAgICAgICAgICAgICAgICAgLy8g U2V0IG9wdGlvbnMgZm9yIGRpYWxvZworICAgICAgICAgICAgICAgICAgb3B0 aW9uczogeworICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsCisg ICAgICAgICAgICAgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5k IG92ZXJmbG93IGNvbnRyb2wuCisgICAgICAgICAgICAgICAgICAgIHBhZGRp bmcgOiAhMSwKKyAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICExLAor ICAgICAgICAgICAgICAgICAgICBtb2RlbDogMCwKKyAgICAgICAgICAgICAg ICAgICAgcmVzaXphYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBt YXhpbWl6YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgcGlubmFi bGU6IGZhbHNlCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgaG9va3M6 IHsKKyAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlh bG9nIGlzIGNsb3NlZAorICAgICAgICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0 aW9uKCkgeworICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmlldykgewor ICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHtkYXRhOiB0 cnVlLCBpbnRlcm5hbDogdHJ1ZSwgc2lsZW50OiB0cnVlfSk7CisgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICAg ICAgLy8gRGlzYWJsZSBCYWNrdXAgYnV0dG9uIHVudGlsIHVzZXIgcHJvdmlk ZXMgRmlsZW5hbWUKKyAgICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwu YnV0dG9uc1swXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAg ICAgICAgICB2YXIgJGNvbnRhaW5lciA9ICQoIjxkaXYgY2xhc3M9J2JhY2t1 cF9kaWFsb2cnPjwvZGl2PiIpOworICAgICAgICAgICAgICAgIHZhciB0ID0g cGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAgICAgICBpID0gdC5zZWxl Y3RlZCgpLAorICAgICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGgg PT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCisgICAgICAgICAg ICAgICAgICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07 CisKKyAgICAgICAgICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICAgICAg ICByZXR1cm47CisKKyAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7CisK KyAgICAgICAgICAgICAgICB2YXIgbmV3TW9kZWwgPSBuZXcgQmFja3VwT2Jq ZWN0TW9kZWwoCisgICAgICAgICAgICAgICAgICB7fSwge25vZGVfaW5mbzog dHJlZUluZm99CisgICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAg ICAgICAgZmllbGRzID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAor ICAgICAgICAgICAgICAgICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVh dGUnLCBub2RlLCB0cmVlSW5mby5zZXJ2ZXIsIHRydWUKKyAgICAgICAgICAg ICAgICAgICk7CisKKyAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMu dmlldyA9IG5ldyBCYWNrZm9ybS5EaWFsb2coeworICAgICAgICAgICAgICAg ICAgZWw6ICRjb250YWluZXIsIG1vZGVsOiBuZXdNb2RlbCwgc2NoZW1hOiBm aWVsZHMKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAg ICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxkTm9kZXNbMF0pLmFkZENsYXNz KAorICAgICAgICAgICAgICAgICAgJ2FsZXJ0aWZ5X3Rvb2xzX2RpYWxvZ19w cm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJworICAgICAgICAgICAgICAgICk7 CisKKyAgICAgICAgICAgICAgICB2aWV3LnJlbmRlcigpOworCisgICAgICAg ICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRj b250YWluZXIuZ2V0KDApKTsKKworICAgICAgICAgICAgICAgICAvLyBMaXN0 ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBpcyBwcm92aWRlZCB0aGVuIGVu YWJsZSBCYWNrdXAgYnV0dG9uCisgICAgICAgICAgICAgICAgdGhpcy52aWV3 Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdmaWxlJykp ICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcnKSB7CisgICAgICAgICAgICAg ICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7CisgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMF0uZWxlbWVu dC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9IGVs c2UgeworICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5i dXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAg ICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ2ZpbGUnLCAne3sg XygnUGxlYXNlIHByb3ZpZGUgZmlsZW5hbWUnKSB9fScpCisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg ICAgICB9LAorICAgICAgICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMg d2hlbiBjbGljayBvbiB0aGUgYnV0dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlh bG9ncworICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oZSkgewor ICAgICAgICAgICAgICAgIGlmIChlLmJ1dHRvbi50ZXh0ID09PSAiQmFja3Vw IikgeworICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2 ZXIgaWQKKyAgICAgICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsCisgICAgICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCisg ICAgICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0 Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAg ICBub2RlID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07CisKKyAg ICAgICAgICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgICAgICAgICAg cmV0dXJuOworCisgICAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBu b2RlLmdldFRyZWVOb2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7CisK KyAgICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50IGRhdGFiYXNlIGlu dG8gbW9kZWwKKyAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5z ZXQoJ2RhdGFiYXNlJywgdHJlZUluZm8uZGF0YWJhc2UubGFiZWwpOworCisg ICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAg ICAgICAgICAgIGJhc2VVcmwgPSAie3sgdXJsX2ZvcignYmFja3VwLmluZGV4 JykgfX0iICsKKyAgICAgICAgICAgICAgICAgICAgICAiY3JlYXRlX2pvYi9i YWNrdXBfb2JqZWN0LyIgKyB0cmVlSW5mby5zZXJ2ZXIuX2lkLAorICAgICAg ICAgICAgICAgICAgICAgIGFyZ3MgPSAgdGhpcy52aWV3Lm1vZGVsLnRvSlNP TigpOworCisgICAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAg ICAgICAgICAgICB1cmw6IGJhc2VVcmwsCisgICAgICAgICAgICAgICAgICAg IG1ldGhvZDogJ1BPU1QnLAorICAgICAgICAgICAgICAgICAgICBkYXRhOnsg J2RhdGEnOiBKU09OLnN0cmluZ2lmeShhcmdzKSB9LAorICAgICAgICAgICAg ICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAg ICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIGFsZXJ0aWZ5Lm1lc3NhZ2UoJ3t7IF8oJ0JhY2tncm91bmQg cHJvY2VzcyBmb3IgdGFraW5nIGJhY2t1cCBoYXMgYmVlbiBjcmVhdGVkIScp IH19JywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIu RXZlbnRzLnRyaWdnZXIoJ3BnYWRtaW4tYmdwcm9jZXNzOmNyZWF0ZWQnLCBz ZWxmKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlv bih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAg ICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQu cGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAg ICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICAgICAgICAg ICAgICAgICd7eyBfKCdCYWNrdXAgZmFpbGVkLi4uJykgfX0nLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKKyAgICAgICAgICAg ICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgfSBjYXRj aCAoZSkge30KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0K KyAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIGFs ZXJ0aWZ5LmJhY2t1cF9vYmplY3RzKHRpdGxlKS5yZXNpemVUbygnNjUlJywn NjAlJyk7CisgICAgICB9CisgICAgfTsKKyAgICByZXR1cm4gcGdCcm93c2Vy LkJhY2t1cDsKKyAgfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGls cy9kcml2ZXIvcHN5Y29wZzIvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi91 dGlscy9kcml2ZXIvcHN5Y29wZzIvX19pbml0X18ucHkKaW5kZXggMjA4YjUy Zi4uOWRjZjk2YiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJp dmVyL3BzeWNvcGcyL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0 aWxzL2RyaXZlci9wc3ljb3BnMi9fX2luaXRfXy5weQpAQCAtMzM1LDYgKzMz NSw3IEBAIFdIRVJFCiAgICAgICAgICAgICBmb3Igc3QgaW4ga3dhcmdzWydz ZXJ2ZXJfdHlwZXMnXToKICAgICAgICAgICAgICAgICBpZiBzdC5pbnN0YW5j ZU9mKG1nci52ZXIpOgogICAgICAgICAgICAgICAgICAgICBtZ3Iuc2VydmVy X3R5cGUgPSBzdC5zdHlwZQorICAgICAgICAgICAgICAgICAgICBtZ3Iuc2Vy dmVyX2NscyA9IHN0CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAKICAg ICAgICAgbWdyLnVwZGF0ZV9zZXNzaW9uKCkKQEAgLTEwMTcsNiArMTAxOCw3 IEBAIGNsYXNzIFNlcnZlck1hbmFnZXIob2JqZWN0KToKICAgICAgICAgc2Vs Zi52ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuc3ZlcnNpb24gPSBOb25lCiAg ICAgICAgIHNlbGYuc2VydmVyX3R5cGUgPSBOb25lCisgICAgICAgIHNlbGYu c2VydmVyX2NscyA9IE5vbmUKICAgICAgICAgc2VsZi5wYXNzd29yZCA9IE5v bmUKIAogICAgICAgICBzZWxmLnNpZCA9IHNlcnZlci5pZApAQCAtMTE4OCw2 ICsxMTkwLDcgQEAgV0hFUkUgZGIub2lkID0gezB9IiIiLmZvcm1hdChkaWQp KQogICAgICAgICAgICAgICAgICAgICBzZWxmLnZlciA9IE5vbmUKICAgICAg ICAgICAgICAgICAgICAgc2VsZi5zdmVyc2lvbiA9IE5vbmUKICAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfdHlwZSA9IE5vbmUKKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xzID0gTm9uZQogICAgICAgICAg ICAgICAgICAgICBzZWxmLnBhc3N3b3JkID0gTm9uZQogCiAgICAgICAgICAg ICAgICAgc2VsZi51cGRhdGVfc2Vzc2lvbigpCkBAIC0xMjAzLDYgKzEyMDYs NyBAQCBXSEVSRSBkYi5vaWQgPSB7MH0iIiIuZm9ybWF0KGRpZCkpCiAgICAg ICAgIHNlbGYudmVyID0gTm9uZQogICAgICAgICBzZWxmLnN2ZXJzaW9uID0g Tm9uZQogICAgICAgICBzZWxmLnNlcnZlcl90eXBlID0gTm9uZQorICAgICAg ICBzZWxmLnNlcnZlcl9jbHMgPSBOb25lCiAgICAgICAgIHNlbGYucGFzc3dv cmQgPSBOb25lCiAKICAgICAgICAgc2VsZi51cGRhdGVfc2Vzc2lvbigpCkBA IC0xMjIxLDYgKzEyMjUsMTggQEAgV0hFUkUgZGIub2lkID0gezB9IiIiLmZv cm1hdChkaWQpKQogICAgICAgICAgICAgbWFuYWdlcnNbc2VsZi5zaWRdID0g dXBkYXRlZF9tZ3IKICAgICAgICAgc2Vzc2lvblsnX19wZ3NxbF9zZXJ2ZXJf bWFuYWdlcnMnXSA9IG1hbmFnZXJzCiAKKyAgICBkZWYgdXRpbGl0eShzZWxm LCBvcGVyYXRpb24pOgorICAgICAgICAiIiIKKyAgICAgICAgdXRpbGl0eShv cGVyYXRpb24pCisKKyAgICAgICAgUmV0dXJuczogbmFtZSBvZiB0aGUgdXRp bGl0eSB3aGljaCB1c2VkIGZvciB0aGUgb3BlcmF0aW9uCisgICAgICAgICIi IgorICAgICAgICBpZiBzZWxmLnNlcnZlcl9jbHMgaXMgbm90IE5vbmU6Cisg ICAgICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXJfY2xzLnV0aWxpdHkob3Bl cmF0aW9uLCBzZWxmLnN2ZXJzaW9uKQorCisgICAgICAgIHJldHVybiBOb25l CisKKwogCiBjbGFzcyBEcml2ZXIoQmFzZURyaXZlcik6CiAgICAgIiIiCg== --001a114a91a6d924d00532b82566 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgadmin-hackers --001a114a91a6d924d00532b82566--