Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1axZBU-0005Ze-91 for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 May 2016 12:12:12 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1axZBT-0001um-M8 for pgadmin-hackers@arkaria.postgresql.org; Tue, 03 May 2016 12:12:11 +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 1axZBE-0001gI-Iz for pgadmin-hackers@postgresql.org; Tue, 03 May 2016 12:11:56 +0000 Received: from mail-qk0-x230.google.com ([2607:f8b0:400d:c09::230]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1axZB7-0005V8-9q for pgadmin-hackers@postgresql.org; Tue, 03 May 2016 12:11:56 +0000 Received: by mail-qk0-x230.google.com with SMTP id r184so7552931qkc.1 for ; Tue, 03 May 2016 05:11:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=TgY6OZGY1KrGt1NoYGYWobisSN0A2opAg3xVSj+4tQE=; b=MeebIF8/TVi9PlnmCXnoZlRxaTW9txftBOZxTGWj5Uy/6bd7TTqhAjGpWd5XU2C1GL bmiJavp3vUc8jhiGjr5PHT7RwgGMYO/12vxnpX2DJZl2cSGLVgruHt9BftYtXyTV1y0O mJ9HA8ClWUPufQ+o5n8OEvFmRshrcf+Tg4uRAy9vnLdOhBxUb8b3Wu3TrTFNQaJBuShQ 3+NAmR+auVy/L8vYCgoDjVOkHGSwG9ZTTl3x3Mp9XKGwXqmoFNIW7tw750UGoIIqWFJc jsrGzj+CxOwz44ILVrtmF3Iioc5BgZjmSaNKCXegpNo5o8prLbQAD6VWsZkX/8z9BkCr qA2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=TgY6OZGY1KrGt1NoYGYWobisSN0A2opAg3xVSj+4tQE=; b=ZrPBtwnjGuioNDxyM5eGmEvEge9hWWr35Slci5L2sznTKR9bc+teHSPFmI/1I0/dVw u7H04E2zcnMZdnGBNlKDyxjstokIpKckyhcFUijlmuRXxPPN/AEByOIyJtCO884oe4V7 IXSKfJRhH8RKk9imgyJrM+cMx0k1mzgAXZCj1Xs22AUmVdI/n8V2Waqxwh3jLbcYg/u8 u1nxJkXngkS1EaueCEbpLhCLhA/R4yyUQ7vdl4cNKfNsCMpjTmG8txGa39MCh+HTLjCE /DdDq43s1r9fqkJIvK9NVkTTsu4HqFMV132+2L8nYLSC0SO2Q9J//kE2fY9PQ4K5wOBr dNcg== X-Gm-Message-State: AOPr4FWFw4mK/2BMS2xnaNptNFQbV0xdoO0sr+lHgb8fZxNYecq6DHI6Gd4Iqqk0Cv9AAAjHebEzfUfjsyPDNWUU X-Received: by 10.233.232.16 with SMTP id a16mr2018250qkg.25.1462277507237; Tue, 03 May 2016 05:11:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.170.147 with HTTP; Tue, 3 May 2016 05:11:27 -0700 (PDT) From: Murtuza Zabuawala Date: Tue, 3 May 2016 17:41:27 +0530 Message-ID: Subject: PATCH: Initiale backup utility [pgAdmin4] To: pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c0348a46202f80531ef0381 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 --94eb2c0348a46202f80531ef0381 Content-Type: multipart/alternative; boundary=94eb2c0348a46202f40531ef037f --94eb2c0348a46202f40531ef037f Content-Type: text/plain; charset=UTF-8 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 -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --94eb2c0348a46202f40531ef037f Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

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

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


TODO:
<= div>- Integrate browser tree control


--
Regards,
Murtuza Zabuawala
Enter= priseDB:=C2=A0http://www.enterpris= edb.com
The Enterprise PostgreSQL Company

--94eb2c0348a46202f40531ef037f-- --94eb2c0348a46202f80531ef0381 Content-Type: application/octet-stream; name="Backup_Utility_v1.patch" Content-Disposition: attachment; filename="Backup_Utility_v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_inre82b10 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVz LmNzcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9jc3Mvb3ZlcnJpZGVzLmNzcwpp bmRleCAxOTI3ZmYxLi5hOTA5OTY0IDEwMDc1NQotLS0gYS93ZWIvcGdhZG1p bi9zdGF0aWMvY3NzL292ZXJyaWRlcy5jc3MKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2Nzcy9vdmVycmlkZXMuY3NzCkBAIC0xMTAxLDMgKzExMDEsMjUg QEAgYnV0dG9uLnBnLWFsZXJ0aWZ5LWJ1dHRvbiB7CiBkaXYuYmFja2Zvcm1f Y29udHJvbF9ub3RlcyBsYWJlbC5jb250cm9sLWxhYmVsIHsKICAgbWluLXdp ZHRoOiAwcHg7CiB9CisKKy8qIEZpeCBBbGVydGlmeSBkaWFsb2cgYWxpZ25t ZW50IGZvciBCYWNrZm9ybSBjb250cm9scyAqLworLmFsZXJ0aWZ5X3Rvb2xz X2RpYWxvZ19wcm9wZXJ0aWVzIHsKKyAgIGJvdHRvbTogMCAhaW1wb3J0YW50 OworICAgbGVmdDogMCAhaW1wb3J0YW50OworICAgcG9zaXRpb246IGFic29s dXRlICFpbXBvcnRhbnQ7CisgICByaWdodDogMCAhaW1wb3J0YW50OworICAg IHRvcDogMzVweCAhaW1wb3J0YW50OworfQorCisvKiBGb3IgQmFja3VwICYg UmVzdG9yZSBEaWFsb2cgKi8KKy5jdXN0b21fc3dpdGNoX2xhYmVsX2NsYXNz IHsKKyAgIG1pbi13aWR0aDogMHB4ICFpbXBvcnRhbnQ7CisgICBwYWRkaW5n LWJvdHRvbTogMTBweCAhaW1wb3J0YW50OworICAgZm9udC1zaXplOiAxM3B4 ICFpbXBvcnRhbnQ7CisgICBmb250LXdlaWdodDogbm9ybWFsICFpbXBvcnRh bnQ7Cit9CisKKy5jdXN0b21fc3dpdGNoX2NvbnRyb2xfY2xhc3MgeworICBt aW4td2lkdGg6IDBweCAhaW1wb3J0YW50OworICBwYWRkaW5nLWJvdHRvbTog MTBweCAhaW1wb3J0YW50OworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvYmFja3VwL19faW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMv YmFja3VwL19faW5pdF9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmY2ZDU2ZWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9iYWNrdXAvX19pbml0X18ucHkKQEAgLTAsMCArMSwzNTgg QEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjCisjIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKyMKKyMgQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAxNiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorIyBU aGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KyIiIkltcGxlbWVudHMgQmFja3VwIFV0aWxpdHkiIiIKKworaW1wb3J0IGpz b24KK2ltcG9ydCBvcworZnJvbSByYW5kb20gaW1wb3J0IHJhbmRpbnQKK2Zy b20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgcmVxdWVzdCwgY3Vy cmVudF9hcHAsIFwKKyAgICB1cmxfZm9yLCBSZXNwb25zZSwgc2Vzc2lvbgor ZnJvbSBmbGFzay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKK2Zyb20gcGdh ZG1pbi51dGlscy5hamF4IGltcG9ydCBtYWtlX3Jlc3BvbnNlIGFzIGFqYXhf cmVzcG9uc2UsIFwKKyAgICBtYWtlX2pzb25fcmVzcG9uc2UsIGludGVybmFs X3NlcnZlcl9lcnJvciwgYmFkX3JlcXVlc3QKK2Zyb20gcGdhZG1pbi51dGls cyBpbXBvcnQgUGdBZG1pbk1vZHVsZQorZnJvbSBmbGFzay5leHQuc2VjdXJp dHkgaW1wb3J0IGxvZ2luX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4ubW9kZWwg aW1wb3J0IGRiLCBKb2JzLCBTZXJ2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQ R19ERUZBVUxUX0RSSVZFUiwgVVRJTElUSUVTCitmcm9tIHBnYWRtaW4udXRp bHMucHJlZmVyZW5jZXMgaW1wb3J0IFByZWZlcmVuY2VzCisKKyMgc2V0IHRl bXBsYXRlIHBhdGggZm9yIHNxbCBzY3JpcHRzCitNT0RVTEVfTkFNRSA9ICdi YWNrdXAnCitzZXJ2ZXJfaW5mbyA9IHt9CisKKworY2xhc3MgQmFja3VwTW9k dWxlKFBnQWRtaW5Nb2R1bGUpOgorICAgICIiIgorICAgIGNsYXNzIEJhY2t1 cE1vZHVsZShPYmplY3QpOgorCisgICAgICAgIEl0IGlzIGEgdXRpbGl0eSB3 aGljaCBpbmhlcml0cyBQZ0FkbWluTW9kdWxlCisgICAgICAgIGNsYXNzIGFu ZCBkZWZpbmUgbWV0aG9kcyB0byBsb2FkIGl0cyBvd24KKyAgICAgICAgamF2 YXNjcmlwdCBmaWxlLgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdCaW5hcnkg UGF0aHMnKQorICAgICIiIgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdVdGls aXRpZXMnKQorCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMoc2VsZik6 CisgICAgICAgICIiIiIKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg IGxpc3Q6IGpzIGZpbGVzIHVzZWQgYnkgdGhpcyBtb2R1bGUKKyAgICAgICAg IiIiCisgICAgICAgIHJldHVybiBbeworICAgICAgICAgICAgJ25hbWUnOiAn cGdhZG1pbi50b29scy5iYWNrdXAnLAorICAgICAgICAgICAgJ3BhdGgnOiB1 cmxfZm9yKCdiYWNrdXAuaW5kZXgnKSArICdiYWNrdXAnLAorICAgICAgICAg ICAgJ3doZW4nOiBOb25lCisgICAgICAgIH1dCisKKyAgICBkZWYgc2hvd19z eXN0ZW1fb2JqZWN0cyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIHJl dHVybiBzeXN0ZW0gcHJlZmVyZW5jZSBvYmplY3RzCisgICAgICAgICIiIgor ICAgICAgICByZXR1cm4gc2VsZi5wcmVmX3Nob3dfc3lzdGVtX29iamVjdHMK KworICAgICMgR2V0dGVyL1NldHRlciBmb3IgcHJlZmVyZW5jZXMKKyAgICBk ZWYgZ2V0X3BnX3V0aWxpdHlfZGlyX3ByZWZlcmVuY2Uoc2VsZik6CisgICAg ICAgIHJldHVybiBzZWxmLnBnX3V0aWxpdHlfZGlyCisKKyAgICBkZWYgZ2V0 X2VkYl91dGlsaXR5X2Rpcl9wcmVmZXJlbmNlKHNlbGYpOgorICAgICAgICBy ZXR1cm4gc2VsZi5lZGJfdXRpbGl0eV9kaXIKKworICAgIGRlZiByZWdpc3Rl cl9wcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEdl dCBzdG9yYWdlIGRpcmVjdG9yeSBwcmVmZXJlbmNlCisgICAgICAgICIiIgor ICAgICAgICBzZWxmLnN0b3JhZ2VfZGlyZWN0b3J5ID0gUHJlZmVyZW5jZXMu bW9kdWxlKCdmaWxlX21hbmFnZXInKQorICAgICAgICBzZWxmLnN0b3JhZ2Vf ZGlyID0gc2VsZi5zdG9yYWdlX2RpcmVjdG9yeS5wcmVmZXJlbmNlKAorICAg ICAgICAgICAgICAgICdzdG9yYWdlX2RpcicKKyAgICAgICAgKQorCisgICAg ICAgICMgUmVnaXN0ZXIgJ1BHIHNwZWNpZmljIHV0aWxpdHkgYmluYXJ5IGRp cmVjdG9yeScgcHJlZmVyZW5jZQorICAgICAgICBzZWxmLnBnX3V0aWxpdHlf ZGlyID0gc2VsZi5wcmVmZXJlbmNlLnJlZ2lzdGVyKAorICAgICAgICAgICAg J29wdGlvbnMnLCAncGdfdXRpbGl0aWVzX2Jpbl9kaXInLAorICAgICAgICAg ICAgZ2V0dGV4dCgiUEcgYmluIHBhdGgiKSwgJ3RleHQnLCAnLycsCisgICAg ICAgICAgICBjYXRlZ29yeV9sYWJlbD1nZXR0ZXh0KCdCSU4gcGF0aCcpCisg ICAgICAgICkKKworICAgICAgICAjIFJlZ2lzdGVyICdFREIgc3BlY2lmaWMg dXRpbGl0eSBiaW5hcnkgZGlyZWN0b3J5JyBwcmVmZXJlbmNlCisgICAgICAg IHNlbGYuZWRiX3V0aWxpdHlfZGlyID0gc2VsZi5wcmVmZXJlbmNlLnJlZ2lz dGVyKAorICAgICAgICAgICAgJ29wdGlvbnMnLCAnZWRiX3V0aWxpdGllc19i aW5fZGlyJywKKyAgICAgICAgICAgIGdldHRleHQoIkVEQiBiaW4gcGF0aCIp LCAndGV4dCcsICcvJywKKyAgICAgICAgICAgIGNhdGVnb3J5X2xhYmVsPWdl dHRleHQoJ0JJTiBwYXRoJykKKyAgICAgICAgKQorCisjIENyZWF0ZSBibHVl cHJpbnQgZm9yIEJhY2t1cE1vZHVsZSBjbGFzcworYmx1ZXByaW50ID0gQmFj a3VwTW9kdWxlKAorICAgIE1PRFVMRV9OQU1FLCBfX25hbWVfXywgc3RhdGlj X3VybF9wYXRoPScnKQorCisKK0BibHVlcHJpbnQucm91dGUoIi8iKQorQGxv Z2luX3JlcXVpcmVkCitkZWYgaW5kZXgoKToKKyAgICByZXR1cm4gYmFkX3Jl cXVlc3QoZXJyb3Jtc2c9Z2V0dGV4dCgiVGhpcyBVUkwgY2FuIG5vdCBiZSBj YWxsZWQgZGlyZWN0bHkhIikpCisKKworQGJsdWVwcmludC5yb3V0ZSgiL2Jh Y2t1cC5qcyIpCitAbG9naW5fcmVxdWlyZWQKK2RlZiBzY3JpcHQoKToKKyAg ICAiIiJyZW5kZXIgb3duIGphdmFzY3JpcHQiIiIKKyAgICByZXR1cm4gUmVz cG9uc2UocmVzcG9uc2U9cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAgICAg ICAgICJiYWNrdXAvanMvYmFja3VwLmpzIiwgXz1nZXR0ZXh0KSwKKyAgICAg ICAgICAgICAgICBzdGF0dXM9MjAwLAorICAgICAgICAgICAgICAgIG1pbWV0 eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IikKKworCitkZWYgX2Zvcm1h dF9xdElkZW50cyhkYXRhKToKKyAgICAiIiIKKyAgICBXZSBoYXZlIHRvIHBh cnNlICYgZm9ybWF0IHF0aWRlbnQgd29yZHMgYXMgaXQgY29udGFpbnMKKyAg ICAiIiAmICIuIiBpbiBkYXRhYmFzZSBvYmplY3RzLCBpZiB3ZSBkbyBub3Qg cmVtb3ZlIHRoZW0gdGhlbgorICAgIE9TIHdpbGwgZmFpbCB0byBwYXJzZSAm IGV4ZWN1dGUgYXJndW1lbnRzCisKKyAgICBBcmdzOgorICAgICAgICBkYXRh OiBBIHN0cmluZyB3aGljaCBjb250YWlucyBjb21tYW5kIGFyZ3VtZW50cwor CisgICAgUmV0dXJuczoKKyAgICAgICAgRXNjYXBlZCBhcmd1bWVudCBzdHJp bmcKKworICAgIFVzYWdlOgorICAgICAgICA+Pj4gcHJpbnQoX2Zvcm1hdF9x dElkZW50cyhyJyIiUG9zdGdyZXMiLnRhYmxlIicpKQorICAgICAgICAiXCJQ b3N0Z3Jlc1wiLnRhYmxlIgorICAgICAgICA+Pj4gcHJpbnQoX2Zvcm1hdF9x dElkZW50cyhyJyJwb3N0Z3Jlcy4iVGFibGUiIicpKQorICAgICAgICAicG9z dGdyZXMuXCJUYWJsZVwiIgorICAgICAgICA+Pj4gcHJpbnQoX2Zvcm1hdF9x dElkZW50cyhyJyIiUG9zdGdyZXMiLiJUYWJsZSIiJykpCisgICAgICAgICJc IlBvc3RncmVzXCIuXCJUYWJsZVwiIgorICAgICAgICA+Pj4gcHJpbnQoX2Zv cm1hdF9xdElkZW50cyhyJyJwb3N0Z3Jlcy50YWJsZSInKSkKKyAgICAgICAg InBvc3RncmVzLnRhYmxlIgorICAgICIiIgorCisgICAgaW1wb3J0IHJlCisg ICAgIyBDYXNlLTEgICIiUG9zdGdyZXMKKyAgICBtYXRjaE9iajEgPSByZS5z ZWFyY2gocideIiInLCBkYXRhKQorICAgIGlmIG1hdGNoT2JqMToKKyAgICAg ICAgZGF0YSA9IHJlLnN1YihyJ14iIicsIHInIlxcIicsIGRhdGEpCisKKyAg ICAjIENhc2UtMiAgU1RSIi4iVEJMCisgICAgbWF0Y2hPYmoyID0gcmUuc2Vh cmNoKHInW14iXSJcXC4iW14iXScsIGRhdGEpCisgICAgaWYgbWF0Y2hPYmoy OgorICAgICAgICBkYXRhID0gcmUuc3ViKHInKFteIl0pIlxcLiIoW14iXSkn LCByJ1wxXFwiLlxcIlwyJywgZGF0YSkKKyAgICBlbHNlOgorICAgICAgICAj IENhc2UtMyAgIlNUUiIudGJsCisgICAgICAgIG1hdGNoT2JqMyA9IHJlLnNl YXJjaChyJyJcLicsIGRhdGEpCisgICAgICAgIGlmIG1hdGNoT2JqMzoKKyAg ICAgICAgICAgIGRhdGEgPSByZS5zdWIociciXC4nLCByJ1xcIi4nLCBkYXRh KQorCisgICAgICAgICMgQ2FzZS00ICBzdHIuIlRCTCIKKyAgICAgICAgbWF0 Y2hPYmo0ID0gcmUuc2VhcmNoKHInXC4iJywgZGF0YSkKKyAgICAgICAgaWYg bWF0Y2hPYmo0OgorICAgICAgICAgICAgZGF0YSA9IHJlLnN1YihyJ1wuIics IHInLlxcIicsIGRhdGEpCisKKyAgICAjIENhc2UtNSAgVEJMIiIKKyAgICBt YXRjaE9iajUgPSByZS5zZWFyY2gociciIiQnLCBkYXRhKQorICAgIGlmIG1h dGNoT2JqNToKKyAgICAgICAgZGF0YSA9IHJlLnN1YihyJyIiJCcsIHInXFwi IicsIGRhdGEpCisKKyAgICByZXR1cm4gZGF0YQorCisKK2RlZiB1dGlsaXR5 X3dpdGhfYmluX3BhdGgoc2VydmVyX3R5cGUsIGJhY2t1cF90eXBlKToKKyAg ICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzZXJ2ZXJfdHlwZTogU2VydmVy IHR5cGUgKFBHL1BQQVMpCisgICAgICAgIGJhY2t1cF90eXBlOiBUeXBlIG9m IGJhY2t1cCAoU2VydmVyL09iamVjdHMpCisKKyAgICBSZXR1cm5zOgorICAg ICAgICBVdGlsaXR5IHRvIHVzZSBmb3IgYmFja3VwIHdpdGggZnVsbCBwYXRo IHRha2VuIGZyb20gcHJlZmVyZW5jZQorICAgICIiIgorICAgIGlmIHNlcnZl cl90eXBlID09ICdwcGFzJzoKKyAgICAgICAgIyBTZXQgZmlsZSBtYW5hZ2Vy IGRpcmVjdG9yeSBmcm9tIHByZWZlcmVuY2UKKyAgICAgICAgZWRiX3V0aWxp dHlfZGlyID0gYmx1ZXByaW50LmdldF9lZGJfdXRpbGl0eV9kaXJfcHJlZmVy ZW5jZSgpLmdldCgpCisgICAgICAgIGlmIGJhY2t1cF90eXBlID09ICdzZXJ2 ZXInOiAgIyBGb3IgU2VydmVyL0dsb2JhbHMgQmFja3VwCisgICAgICAgICAg ICByZXR1cm4gb3MucGF0aC5qb2luKGVkYl91dGlsaXR5X2RpciwgVVRJTElU SUVTWydFREJfQkFDS1VQX1NFUlZFUiddKQorICAgICAgICBlbHNlOiAgIyBG b3IgRGF0YWJhc2UvU2NoZW1hL1RhYmxlIEJhY2t1cAorICAgICAgICAgICAg cmV0dXJuIG9zLnBhdGguam9pbihlZGJfdXRpbGl0eV9kaXIsIFVUSUxJVElF U1snRURCX0JBQ0tVUF9PQkpFQ1QnXSkKKyAgICBlbGlmIHNlcnZlcl90eXBl ID09ICdwZyc6CisgICAgICAgICMgU2V0IGZpbGUgbWFuYWdlciBkaXJlY3Rv cnkgZnJvbSBwcmVmZXJlbmNlCisgICAgICAgIHBnX3V0aWxpdHlfZGlyID0g Ymx1ZXByaW50LmdldF9wZ191dGlsaXR5X2Rpcl9wcmVmZXJlbmNlKCkuZ2V0 KCkKKyAgICAgICAgaWYgYmFja3VwX3R5cGUgPT0gJ3NlcnZlcic6CisgICAg ICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHBnX3V0aWxpdHlfZGlyLCBV VElMSVRJRVNbJ1BHX0JBQ0tVUF9TRVJWRVInXSkKKyAgICAgICAgZWxzZToK KyAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ocGdfdXRpbGl0eV9k aXIsIFVUSUxJVElFU1snUEdfQkFDS1VQX09CSkVDVCddKQorCisKK2RlZiBm aWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoKGZpbGUpOgorICAgICIi IgorICAgIEFyZ3M6CisgICAgICAgIGZpbGU6IEZpbGUgbmFtZSByZXR1cm5l ZCBmcm9tIGNsaWVudCBmaWxlIG1hbmFnZXIKKworICAgIFJldHVybnM6Cisg ICAgICAgIEZpbGVuYW1lIHRvIHVzZSBmb3IgYmFja3VwIHdpdGggZnVsbCBw YXRoIHRha2VuIGZyb20gcHJlZmVyZW5jZQorICAgICIiIgorICAgICMgU2V0 IGZpbGUgbWFuYWdlciBkaXJlY3RvcnkgZnJvbSBwcmVmZXJlbmNlCisgICAg ZmlsZV9tYW5hZ2VyX2RpciA9IGJsdWVwcmludC5zdG9yYWdlX2Rpci5nZXQo KQorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oZmlsZV9tYW5hZ2VyX2Rpciwg ZmlsZSkKKworCitAYmx1ZXByaW50LnJvdXRlKCcvY3JlYXRlX2pvYi88aW50 OnNpZD4nLCBtZXRob2RzPVsnUE9TVCddKQorQGxvZ2luX3JlcXVpcmVkCitk ZWYgY3JlYXRlX2JhY2t1cF9qb2Ioc2lkKToKKyAgICAiIiIKKyAgICBBcmdz OgorICAgICAgICBzaWQ6IFNlcnZlciBJRAorCisgICAgICAgIENyZWF0ZXMg YSBuZXcgam9iIGZvciBiYWNrdXAgdGFzayAoQmFja3VwIFNlcnZlci9HbG9i YWxzKQorCisgICAgUmV0dXJuczoKKyAgICAgICAgTm9uZQorICAgICIiIgor ICAgIGlmIHJlcXVlc3QuZm9ybToKKyAgICAgICAgIyBDb252ZXJ0IEltbXV0 YWJsZURpY3QgdG8gZGljdAorICAgICAgICBkYXRhID0gZGljdChyZXF1ZXN0 LmZvcm0pCisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGRhdGFbJ2RhdGEn XVswXSkKKyAgICBlbHNlOgorICAgICAgICBkYXRhID0ganNvbi5sb2Fkcyhy ZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICBkYXRhWydmaWxlJ10gPSBm aWxlbmFtZV93aXRoX2ZpbGVfbWFuYWdlcl9wYXRoKGRhdGFbJ2ZpbGUnXSkK KworICAgICMgRmV0Y2ggdGhlIHNlcnZlciBkZXRhaWxzIGxpa2UgaG9zdG5h bWUsIHBvcnQsIHJvbGVzIGV0YworICAgIHNlcnZlciA9IFNlcnZlci5xdWVy eS5maWx0ZXJfYnkoCisgICAgICAgIGlkPXNpZCkuZmlyc3QoKQorCisgICAg aWYgc2VydmVyIGlzIE5vbmU6CisgICAgICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoCisgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAg ICBlcnJvcm1zZz1nZXR0ZXh0KCJDb3VsZG4ndCBmaW5kIHRoZSBnaXZlbiBz ZXJ2ZXIiKQorICAgICAgICApCisKKyAgICAjIFRvIGZldGNoIE1ldGFEYXRh IGZvciB0aGUgc2VydmVyCisgICAgZnJvbSBwZ2FkbWluLnV0aWxzLmRyaXZl ciBpbXBvcnQgZ2V0X2RyaXZlcgorICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVy KFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoc2VydmVy LmlkKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oKQorICAgIGNv bm5lY3RlZCA9IGNvbm4uY29ubmVjdGVkKCkKKworICAgIGlmIG5vdCBjb25u ZWN0ZWQ6CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisg ICAgICAgICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJvcm1zZz1n ZXR0ZXh0KCJQbGVhc2UgY29ubmVjdCB0byB0aGUgc2VydmVyIGZpcnN0Li4u IikKKyAgICAgICAgKQorCisgICAgdXRpbGl0eSA9IHV0aWxpdHlfd2l0aF9i aW5fcGF0aChtYW5hZ2VyLnNlcnZlcl90eXBlLCAnc2VydmVyJykKKworICAg ICMgRmV0Y2ggYXJncyBmcm9tIHRlbXBsYXRlCisgICAgYXJndW1lbnRzID0g cmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAnYXJndW1lbnRzL2JhY2t1cF9z ZXJ2ZXIuYXJncycsCisgICAgICAgIHNlcnZlcj1zZXJ2ZXIsCisgICAgICAg IGRhdGE9ZGF0YQorICAgICkKKworICAgIGFyZ3VtZW50cyA9IF9mb3JtYXRf cXRJZGVudHMoYXJndW1lbnRzKQorCisgICAgdHJ5OgorICAgICAgICAjIEdl bmVyYXRlIHJhbmRvbSBqb2IgaWQKKyAgICAgICAgamlkID0gcmFuZGludCgx MDEsIDk5OSkKKyAgICAgICAgY3JlYXRlX2pvYiA9IEpvYnMoCisgICAgICAg ICAgICBqb2JfaWQ9amlkLAorICAgICAgICAgICAgY29tbWFuZD11dGlsaXR5 LAorICAgICAgICAgICAgYXJndW1lbnRzPWFyZ3VtZW50cworICAgICAgICAp CisgICAgICAgICMgU2F2ZSBpdAorICAgICAgICBkYi5zZXNzaW9uLmFkZChj cmVhdGVfam9iKQorICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCisKKyAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgIGN1cnJlbnRfYXBw LmxvZ2dlci5leGNlcHRpb24oZSkKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAg ICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJvcm1zZz1zdHIoZSkK KyAgICAgICAgKQorICAgICMgUmV0dXJuIHJlc3BvbnNlCisgICAgcmV0dXJu IG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgZGF0YT17J2pvYl9pZCc6 IGppZCwgJ1N1Y2Nlc3MnOiAxfQorICAgICkKKworCitAYmx1ZXByaW50LnJv dXRlKCcvY3JlYXRlX2pvYi9iYWNrdXBfb2JqZWN0LzxpbnQ6c2lkPicsIG1l dGhvZHM9WydQT1NUJ10pCitAbG9naW5fcmVxdWlyZWQKK2RlZiBjcmVhdGVf YmFja3VwX29iamVjdHNfam9iKHNpZCk6CisgICAgIiIiCisgICAgQXJnczoK KyAgICAgICAgc2lkOiBTZXJ2ZXIgSUQKKworICAgICAgICBDcmVhdGVzIGEg bmV3IGpvYiBmb3IgYmFja3VwIHRhc2sgKEJhY2t1cCBEYXRhYmFzZShzKS9T Y2hlbWEocykvVGFibGUocykpCisKKyAgICBSZXR1cm5zOgorICAgICAgICBO b25lCisgICAgIiIiCisgICAgaWYgcmVxdWVzdC5mb3JtOgorICAgICAgICAj IENvbnZlcnQgSW1tdXRhYmxlRGljdCB0byBkaWN0CisgICAgICAgIGRhdGEg PSBkaWN0KHJlcXVlc3QuZm9ybSkKKyAgICAgICAgZGF0YSA9IGpzb24ubG9h ZHMoZGF0YVsnZGF0YSddWzBdKQorICAgIGVsc2U6CisgICAgICAgIGRhdGEg PSBqc29uLmxvYWRzKHJlcXVlc3QuZGF0YS5kZWNvZGUoKSkKKworICAgIGRh dGFbJ2ZpbGUnXSA9IGZpbGVuYW1lX3dpdGhfZmlsZV9tYW5hZ2VyX3BhdGgo ZGF0YVsnZmlsZSddKQorCisgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFp bHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9sZXMgZXRjCisgICAgc2VydmVy ID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAgaWQ9c2lkKS5m aXJzdCgpCisKKyAgICBpZiBzZXJ2ZXIgaXMgTm9uZToKKyAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN1Y2Nlc3M9 MCwKKyAgICAgICAgICAgIGVycm9ybXNnPWdldHRleHQoIkNvdWxkbid0IGZp bmQgdGhlIGdpdmVuIHNlcnZlciIpCisgICAgICAgICkKKworICAgICMgVG8g ZmV0Y2ggTWV0YURhdGEgZm9yIHRoZSBzZXJ2ZXIKKyAgICBmcm9tIHBnYWRt aW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCisgICAgbWFuYWdl ciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25f bWFuYWdlcihzZXJ2ZXIuaWQpCisgICAgY29ubiA9IG1hbmFnZXIuY29ubmVj dGlvbigpCisgICAgY29ubmVjdGVkID0gY29ubi5jb25uZWN0ZWQoKQorCisg ICAgaWYgbm90IGNvbm5lY3RlZDoKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAg ICAgIGVycm9ybXNnPWdldHRleHQoIlBsZWFzZSBjb25uZWN0IHRvIHRoZSBz ZXJ2ZXIgZmlyc3QuLi4iKQorICAgICAgICApCisKKyAgICB1dGlsaXR5ID0g dXRpbGl0eV93aXRoX2Jpbl9wYXRoKG1hbmFnZXIuc2VydmVyX3R5cGUsICdv YmplY3QnKQorCisgICAgIyBGZXRjaCBhcmdzIGZyb20gdGVtcGxhdGUKKyAg ICBhcmd1bWVudHMgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICdhcmd1 bWVudHMvYmFja3VwX29iamVjdHMuYXJncycsCisgICAgICAgIHNlcnZlcj1z ZXJ2ZXIsCisgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgY29ubj1jb25u CisgICAgKQorCisgICAgYXJndW1lbnRzID0gX2Zvcm1hdF9xdElkZW50cyhh cmd1bWVudHMpCisKKyAgICB0cnk6CisgICAgICAgICMgR2VuZXJhdGUgcmFu ZG9tIGpvYiBpZAorICAgICAgICBqaWQgPSByYW5kaW50KDEwMDEsIDk5OTkp CisgICAgICAgIGNyZWF0ZV9qb2IgPSBKb2JzKAorICAgICAgICAgICAgam9i X2lkPWppZCwKKyAgICAgICAgICAgIGNvbW1hbmQ9dXRpbGl0eSwKKyAgICAg ICAgICAgIGFyZ3VtZW50cz1hcmd1bWVudHMKKyAgICAgICAgKQorICAgICAg ICAjIFNhdmUgaXQKKyAgICAgICAgZGIuc2Vzc2lvbi5hZGQoY3JlYXRlX2pv YikKKyAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQorCisgICAgZXhjZXB0 IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIu ZXhjZXB0aW9uKGUpCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9u c2UoCisgICAgICAgICAgICBzdGF0dXM9NDEwLAorICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9c3RyKGUpCisgICAgICAg ICkKKyAgICAjIFJldHVybiByZXNwb25zZQorICAgIHJldHVybiBtYWtlX2pz b25fcmVzcG9uc2UoCisgICAgICAgIGRhdGE9eydqb2JfaWQnOiBqaWQsICdT dWNjZXNzJzogMX0KKyAgICApCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9iYWNrdXAvdGVtcGxhdGVzL2FyZ3VtZW50cy9iYWNrdXBfb2JqZWN0 cy5hcmdzIGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3RlbXBsYXRlcy9h cmd1bWVudHMvYmFja3VwX29iamVjdHMuYXJncwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi4zMWUzYjEzCi0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvYmFja3VwL3RlbXBsYXRlcy9hcmd1bWVu dHMvYmFja3VwX29iamVjdHMuYXJncwpAQCAtMCwwICsxLDMyIEBACistLWhv c3Qge3tzZXJ2ZXIuaG9zdH19IC0tcG9ydCB7e3NlcnZlci5wb3J0fX0gLS11 c2VybmFtZSAie3tjb25ufHF0SWRlbnQoc2VydmVyLnVzZXJuYW1lKX19IiAt LXJvbGUgeyUgaWYgZGF0YS5yb2xlICV9Cisie3sgY29ubnxxdElkZW50KGRh dGEucm9sZSkgfX0iIHslIGVsc2UgJX0ie3sgY29ubnxxdElkZW50KHNlcnZl ci5yb2xlKSB9fSIgeyUgZW5kaWYgJX0tLW5vLXBhc3N3b3JkIHslIGlmIGRh dGEudmVyYm9zZSAlfQorLS12ZXJib3NlIHslIGVuZGlmICV9eyUgaWYgZGF0 YS5kcW91dGUgJX0KKy0tcXVvdGUtYWxsLWlkZW50aWZpZXJzIHslIGVuZGlm ICV9eyUgaWYgZGF0YS5maWxlICV9CistLWZpbGUgInt7ZGF0YS5maWxlfX0i IHslIGVuZGlmICV9eyUgaWYgZGF0YS5mb3JtYXQgYW5kIGRhdGEuZm9ybWF0 ID09ICdDdXN0b20nICV9CistLWZvcm1hdCBjdXN0b20geyUgaWYgZGF0YS5i bG9icyAlfQorLS1ibG9icyB7JSBlbmRpZiAlfXslIGlmIGRhdGEucmF0aW8g JX0KKy0tY29tcHJlc3Mge3tkYXRhLnJhdGlvfX0geyUgZW5kaWYgJX17JSBl bGlmIGRhdGEuZm9ybWF0IGFuZCBkYXRhLmZvcm1hdCA9PSAnVGFyJyV9Cist LWZvcm1hdCB0YXIgeyUgaWYgZGF0YS5ibG9icyAlfQorLS1ibG9icyB7JSBl bmRpZiAlfXslIGVsaWYgZGF0YS5mb3JtYXQgYW5kIGRhdGEuZm9ybWF0ID09 ICdQbGFpbiclfQorLS1mb3JtYXQgcGxhaW4geyUgaWYgZGF0YS5vbmx5X2Rh dGEgJX0KKy0tZGF0YS1vbmx5IHslIGlmIGRhdGEuZGlzYWJsZV90cmlnZ2Vy ICV9CistLWRpc2FibGUtdHJpZ2dlcnMgeyUgZW5kaWYgJX17JSBlbHNlICV9 Cit7JSBpZiBkYXRhLm9ubHlfc2NoZW1hICV9LS1zY2hlbWEtb25seSB7JSBl bmRpZiAlfXslIGlmIGRhdGEuZG5zX293bmVyICV9CistLW5vLW93bmVyIHsl IGVuZGlmICV9eyUgaWYgZGF0YS5pbmNsdWRlX2NyZWF0ZV9kYXRhYmFzZSAl fQorLS1jcmVhdGUgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmluY2x1ZGVfZHJv cF9kYXRhYmFzZSAlfQorLS1jbGVhbiB7JSBlbmRpZiAlfXslIGVuZGlmICV9 eyUgZWxpZiBkYXRhLmZvcm1hdCBhbmQgZGF0YS5mb3JtYXQgPT0gJ0RpcmVj dG9yeSclfQorLS1mb3JtYXQgZGlyZWN0b3J5IHslIGVuZGlmICV9eyUgaWYg ZGF0YS5wcmVfZGF0YSAlfQorLS1zZWN0aW9uIHByZS1kYXRhIHslIGVuZGlm ICV9eyUgaWYgZGF0YS5kYXRhICV9CistLXNlY3Rpb24gZGF0YSB7JSBlbmRp ZiAlfXslIGlmIGRhdGEucG9zdF9kYXRhICV9CistLXNlY3Rpb24gcG9zdC1k YXRhIHslIGVuZGlmICV9eyUgaWYgZGF0YS5kbnNfcHJpdmlsZWdlICV9Cist LW5vLXByaXZpbGVnZXMgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmRuc190YWJs ZXNwYWNlICV9CistLW5vLXRhYmxlc3BhY2VzIHslIGVuZGlmICV9eyUgaWYg ZGF0YS5kbnNfdW5sb2dnZWRfdGJsX2RhdGEgJX0KKy0tbm8tdW5sb2dnZWQt dGFibGUtZGF0YSB7JSBlbmRpZiAlfXslIGlmIGRhdGEudXNlX2luc2VydF9j b21tYW5kcyAlfQorLS1pbnNlcnRzIHslIGVuZGlmICV9eyUgaWYgZGF0YS51 c2VfY29sdW1uX2luc2VydHMgJX0KKy0tY29sdW1uLWluc2VydHMgeyUgZW5k aWYgJX17JSBpZiBkYXRhLmRpc2FibGVfcXVvdGluZyAlfQorLS1kaXNhYmxl LWRvbGxhci1xdW90aW5nIHslIGVuZGlmICV9eyUgaWYgZGF0YS53aXRoX29p ZHMgJX0KKy0tb2lkcyB7JSBlbmRpZiAlfXslIGlmIGRhdGEudXNlX3NldF9z ZXNzaW9uX2F1dGggJX0KKy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6YXRp b24geyUgZW5kaWYgJX17JSBpZiBkYXRhLm5vX29mX2pvYnMgJX0KKy0tam9i cyB7e2RhdGEubm9fb2Zfam9ic319IHslIGVuZGlmICV9eyUgaWYgZGF0YS50 YWJsZXMgYW5kIGRhdGEudGFibGVzfGxlbmd0aCA+IDAgJX0KK3slIGZvciBz LHQgaW4gZGF0YS50YWJsZXMgJX0tLXRhYmxlICJ7eyBjb25ufHF0SWRlbnQo cywgdCkgfX0iIHslIGVuZGZvciAlfXslIGVuZGlmICV9eyUgaWYgZGF0YS5z Y2hlbWFzIGFuZCBkYXRhLnNjaGVtYXN8bGVuZ3RoID4gMCAgJX0KK3slIGZv ciBzIGluIGRhdGEuc2NoZW1hcyAlfS0tc2NoZW1hICJ7eyBjb25ufHF0SWRl bnQocykgfX0iIHslIGVuZGZvciAlfXslIGVuZGlmICV9Int7IGNvbm58cXRJ ZGVudChkYXRhLmRhdGFiYXNlKSB9fSIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9iYWNrdXAv dGVtcGxhdGVzL2FyZ3VtZW50cy9iYWNrdXBfc2VydmVyLmFyZ3MgYi93ZWIv cGdhZG1pbi90b29scy9iYWNrdXAvdGVtcGxhdGVzL2FyZ3VtZW50cy9iYWNr dXBfc2VydmVyLmFyZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZGYzYTdjNwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYXJndW1lbnRzL2JhY2t1cF9zZXJ2 ZXIuYXJncwpAQCAtMCwwICsxLDYgQEAKKy0taG9zdCB7e3NlcnZlci5ob3N0 fX0gLS1wb3J0IHt7c2VydmVyLnBvcnR9fSAtLXVzZXJuYW1lICJ7e3NlcnZl ci51c2VybmFtZX19IiAtLXJvbGUgeyUgaWYgZGF0YS5yb2xlICV9Cisie3sg ZGF0YS5yb2xlIH19IiB7JSBlbHNlICV9Int7IHNlcnZlci5yb2xlIH19IiB7 JSBlbmRpZiAlfS0tbm8tcGFzc3dvcmQgeyUgaWYgZGF0YS52ZXJib3NlICV9 CistLXZlcmJvc2UgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmRxb3V0ZSAlfQor LS1xdW90ZS1hbGwtaWRlbnRpZmllcnMgeyUgZW5kaWYgJX17JSBpZiBkYXRh LnR5cGUgPT0gJ2dsb2JhbHMnICV9CistLWRhdGFiYXNlICJwb3N0Z3JlcyIg LS1nbG9iYWxzLW9ubHkgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmZpbGUgJX0K Ky0tZmlsZSAie3tkYXRhLmZpbGV9fSJ7JSBlbmRpZiAlfQpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2JhY2t1cC5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2JhY2t1cC90ZW1wbGF0ZXMvYmFja3VwL2pzL2Jh Y2t1cC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4y MGQ1ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv YmFja3VwL3RlbXBsYXRlcy9iYWNrdXAvanMvYmFja3VwLmpzCkBAIC0wLDAg KzEsNjM5IEBACitkZWZpbmUoWworICAgICAgJ2pxdWVyeScsICd1bmRlcnNj b3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ2FsZXJ0aWZ5JywKKyAgICAg ICdwZ2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAn YmFja2Zvcm0nLCAncGdhZG1pbi5icm93c2VyLm5vZGUnCisgICAgICBdLAor CisgIC8vIFRoaXMgZGVmaW5lcyBCYWNrdXAgZGlhbG9nCisgIGZ1bmN0aW9u KCQsIF8sIFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNr Z3JpZCwgQmFja2Zvcm0sIHBnTm9kZSkgeworCisgICAgLy8gaWYgbW9kdWxl IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRoYXQuCisgICAg aWYgKHBnQnJvd3Nlci5CYWNrdXApIHsKKyAgICAgIHJldHVybiBwZ0Jyb3dz ZXIuQmFja3VwOworICAgIH0KKworICAgIHZhciBDdXN0b21Td2l0Y2hDb250 cm9sID0gQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCA9IEJhY2tmb3Jt LlN3aXRjaENvbnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgdGVtcGxhdGU6IF8u dGVtcGxhdGUoWworICAgICAgICAgICc8bGFiZWwgY2xhc3M9IjwlPUJhY2tm b3JtLmNvbnRyb2xMYWJlbENsYXNzTmFtZSU+IGN1c3RvbV9zd2l0Y2hfbGFi ZWxfY2xhc3MiPjwlPWxhYmVsJT48L2xhYmVsPicsCisgICAgICAgICAgJzxk aXYgY2xhc3M9IjwlPUJhY2tmb3JtLmNvbnRyb2xzQ2xhc3NOYW1lJT4gY3Vz dG9tX3N3aXRjaF9jb250cm9sX2NsYXNzIj4nLAorICAgICAgICAgICcgIDxk aXYgY2xhc3M9ImNoZWNrYm94Ij4nLAorICAgICAgICAgICcgICAgPGxhYmVs PicsCisgICAgICAgICAgJyAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIg Y2xhc3M9IjwlPWV4dHJhQ2xhc3Nlcy5qb2luKFwnIFwnKSU+IiBuYW1lPSI8 JT1uYW1lJT4iIDwlPXZhbHVlID8gImNoZWNrZWQ9XCdjaGVja2VkXCciIDog IiIlPiA8JT1kaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+IDwlPXJlcXVp cmVkID8gInJlcXVpcmVkIiA6ICIiJT4gLz4nLAorICAgICAgICAgICcgICAg PC9sYWJlbD4nLAorICAgICAgICAgICcgIDwvZGl2PicsCisgICAgICAgICAg JzwvZGl2PicsCisgICAgICAgICAgJzwlIGlmIChoZWxwTWVzc2FnZSAmJiBo ZWxwTWVzc2FnZS5sZW5ndGgpIHsgJT4nLAorICAgICAgICAgICcgIDxzcGFu IGNsYXNzPSI8JT1CYWNrZm9ybS5oZWxwTWVzc2FnZUNsYXNzTmFtZSU+Ij48 JT1oZWxwTWVzc2FnZSU+PC9zcGFuPicsCisgICAgICAgICAgJzwlIH0gJT4n CisgICAgICAgIF0uam9pbigiXG4iKSksCisgICAgICAgIGNsYXNzTmFtZTog J3BnYWRtaW4tY29udHJvbC1ncm91cCBmb3JtLWdyb3VwIGNvbC14cy02Jwor ICAgIH0pOworCisgICAgLy9CYWNrdXAgTW9kZWwgKFNlcnZlciBOb2RlKQor ICAgIHZhciBCYWNrdXBNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7 CisgICAgICBpZEF0dHJpYnV0ZTogJ2lkJywKKyAgICAgIGRlZmF1bHRzOiB7 CisgICAgICAgIGZpbGU6IHVuZGVmaW5lZCwKKyAgICAgICAgcm9sZTogJ3Bv c3RncmVzJywKKyAgICAgICAgZHFvdXRlOiBmYWxzZSwKKyAgICAgICAgdmVy Ym9zZTogdHJ1ZSwKKyAgICAgICAgdHlwZTogdW5kZWZpbmVkIC8qIGdsb2Jh bCwgc2VydmVyICovCisgICAgICB9LAorICAgICAgc2NoZW1hOiBbeworICAg ICAgICBpZDogJ2ZpbGUnLCBsYWJlbDogJ3t7IF8oJ0ZpbGVuYW1lJykgfX0n LAorICAgICAgICB0eXBlOiAndGV4dCcsIGRpc2FibGVkOiBmYWxzZSwgY29u dHJvbDogQmFja2Zvcm0uRmlsZUNvbnRyb2wsCisgICAgICAgIGRpYWxvZ190 eXBlOiAnY3JlYXRlX2ZpbGUnLCBzdXBwX3R5cGVzOiBbJyonLCAnc3FsJ10K KyAgICAgIH0seworICAgICAgICBpZDogJ3JvbGUnLCBsYWJlbDogJ3t7IF8o J1JvbGUgbmFtZScpIH19JywKKyAgICAgICAgY29udHJvbDogJ25vZGUtbGlz dC1ieS1uYW1lJywgbm9kZTogJ3JvbGUnLAorICAgICAgICBzZWxlY3QyOiB7 IGFsbG93Q2xlYXI6IGZhbHNlIH0KKyAgICAgIH0seworICAgICAgICB0eXBl OiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBf KCdNaXNjZWxsYW5lb3VzJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sKKyAg ICAgICAgICBpZDogJ3ZlcmJvc2UnLCBsYWJlbDogJ3t7IF8oJ1ZlcmJvc2Ug bWVzc2FnZXMnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0u Q3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLAorICAgICAg ICAgIGdyb3VwOiAne3sgXygnTWlzY2VsbGFuZW91cycpIH19JworICAgICAg ICB9LHsKKyAgICAgICAgICBpZDogJ2Rxb3V0ZScsIGxhYmVsOiAne3sgXygn Rm9yY2UgZG91YmxlIHF1b3RlIG9uIGlkZW50aWZpZXJzJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ01p c2NlbGxhbmVvdXMnKSB9fScKKyAgICAgICAgfV0KKyAgICAgIH0seworICAg ICAgICBpZDogJ3NlcnZlcl9ub3RlJywgbGFiZWw6ICd7eyBfKCdOb3RlJykg fX0nLAorICAgICAgICB0ZXh0OiAne3sgXygnVGhlIGJhY2t1cCBmb3JtYXQg d2lsbCBiZSBQTEFJTicpIH19JywKKyAgICAgICAgdHlwZTogJ25vdGUnLCB2 aXNpYmxlOiBmdW5jdGlvbihtKXsKKyAgICAgICAgICByZXR1cm4gbS5nZXQo J3R5cGUnKSA9PT0gJ3NlcnZlcic7CisgICAgICAgIH0KKyAgICAgIH0sewor ICAgICAgICBpZDogJ2dsb2JhbHNfbm90ZScsIGxhYmVsOiAne3sgXygnTm90 ZScpIH19JywKKyAgICAgICAgdGV4dDogJ3t7IF8oJ09ubHkgb2JqZWN0cyBn bG9iYWwgdG8gdGhlIGVudGlyZSBkYXRhYmFzZSB3aWxsIGJlIGJhY2tlZCB1 cCBpbiBQTEFJTiBmb3JtYXQnKSB9fScsCisgICAgICAgIHR5cGU6ICdub3Rl JywgdmlzaWJsZTogZnVuY3Rpb24obSl7CisgICAgICAgICAgcmV0dXJuIG0u Z2V0KCd0eXBlJykgPT09ICdnbG9iYWxzJzsKKyAgICAgICAgfQorICAgICB9 LHsKKyAgICAgfV0sCisgICAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7Cisg ICAgICAgIC8vIFRPRE86IEhPVyBUTyBWQUxJREFURSA/Pz8KKyAgICAgICAg cmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfSk7CisKKyAgICAvL0JhY2t1 cCBNb2RlbCAoT2JqZWN0cyBsaWtlIERhdGFiYXNlL1NjaGVtYS9UYWJsZSkK KyAgICB2YXIgQmFja3VwT2JqZWN0TW9kZWwgPSBCYWNrYm9uZS5Nb2RlbC5l eHRlbmQoeworICAgICAgaWRBdHRyaWJ1dGU6ICdpZCcsCisgICAgICBkZWZh dWx0czogeworICAgICAgICBmaWxlOiB1bmRlZmluZWQsCisgICAgICAgIHJv bGU6ICdwb3N0Z3JlcycsCisgICAgICAgIGZvcm1hdDogJ0N1c3RvbScsCisg ICAgICAgIHZlcmJvc2U6IHRydWUsCisgICAgICAgIGJsb2JzOiB0cnVlLAor ICAgICAgICBlbmNvZGluZzogdW5kZWZpbmVkLAorICAgICAgICBzY2hlbWFz OiBbXSwKKyAgICAgICAgdGFibGVzOiBbXSwKKyAgICAgICAgZGF0YWJhc2U6 IHVuZGVmaW5lZAorICAgICAgfSwKKyAgICAgIHNjaGVtYTogW3sKKyAgICAg ICAgaWQ6ICdmaWxlJywgbGFiZWw6ICd7eyBfKCdGaWxlbmFtZScpIH19JywK KyAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UsIGNvbnRy b2w6IEJhY2tmb3JtLkZpbGVDb250cm9sLAorICAgICAgICBkaWFsb2dfdHlw ZTogJ2NyZWF0ZV9maWxlJywgc3VwcF90eXBlczogWycqJywgJ3NxbCddCisg ICAgICB9LHsKKyAgICAgICAgaWQ6ICdmb3JtYXQnLCBsYWJlbDogJ3t7IF8o J0Zvcm1hdCcpIH19JywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBkaXNhYmxl ZDogZmFsc2UsCisgICAgICAgIGNvbnRyb2w6ICdzZWxlY3QyJywgc2VsZWN0 MjogeworICAgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisgICAgICAg ICAgICB3aWR0aDogIjEwMCUiCisgICAgICAgIH0sCisgICAgICAgIG9wdGlv bnM6IFsKKyAgICAgICAgICB7bGFiZWw6ICJDdXN0b20iLCB2YWx1ZTogIkN1 c3RvbSJ9LAorICAgICAgICAgIHtsYWJlbDogIlRhciIsIHZhbHVlOiAiVGFy In0sCisgICAgICAgICAge2xhYmVsOiAiUGxhaW4iLCB2YWx1ZTogIlBsYWlu In0sCisgICAgICAgICAge2xhYmVsOiAiRGlyZWN0b3J5IiwgdmFsdWU6ICJE aXJlY3RvcnkifQorICAgICAgICBdCisgICAgICB9LHsKKyAgICAgICAgaWQ6 ICdyYXRpbycsIGxhYmVsOiAne3sgXygnQ29tcHJhc2lvbiByYXRpbycpIH19 JywKKyAgICAgICAgdHlwZTogJ2ludCcsIG1pbjogMCwgbWF4OjksIGRpc2Fi bGVkOiBmYWxzZQorICAgICAgfSx7CisgICAgICAgIGlkOiAnZW5jb2Rpbmcn LCBsYWJlbDogJ3t7IF8oJ0VuY29kaW5nJykgfX0nLAorICAgICAgICB0eXBl OiAndGV4dCcsIGRpc2FibGVkOiBmYWxzZSwgIG5vZGU6ICdkYXRhYmFzZScs CisgICAgICAgIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDog J2dldF9lbmNvZGluZ3MnCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdub19v Zl9qb2JzJywgbGFiZWw6ICd7eyBfKCdOdW1iZXIgb2Ygam9icycpIH19JywK KyAgICAgICAgdHlwZTogJ2ludCcsIGRlcHM6IFsnZm9ybWF0J10sIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAgcmV0dXJuICEobS5nZXQo J2Zvcm1hdCcpID09PSAiRGlyZWN0b3J5Iik7CisgICAgICAgIH0KKyAgICAg IH0seworICAgICAgICBpZDogJ3JvbGUnLCBsYWJlbDogJ3t7IF8oJ1JvbGUg bmFtZScpIH19JywKKyAgICAgICAgY29udHJvbDogJ25vZGUtbGlzdC1ieS1u YW1lJywgbm9kZTogJ3JvbGUnLAorICAgICAgICBzZWxlY3QyOiB7IGFsbG93 Q2xlYXI6IGZhbHNlIH0KKyAgICAgIH0seworICAgICAgICB0eXBlOiAnbmVz dGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdTZWN0 aW9ucycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdEdW1wIG9wdGlv bnMnKSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgIGlkOiAn cHJlX2RhdGEnLCBsYWJlbDogJ3t7IF8oJ1ByZS1kYXRhJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGdyb3VwOiAne3sgXygnU2VjdGlvbnMnKSB9fScsCisgICAgICAgICAgZGVw czogWydvbmx5X2RhdGEnLCAnb25seV9zY2hlbWEnXSwgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiBtLmdldCgnb25seV9k YXRhJykKKyAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgnb25seV9zY2hl bWEnKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlk OiAnZGF0YScsIGxhYmVsOiAne3sgXygnRGF0YScpIH19JywKKyAgICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBncm91 cDogJ3t7IF8oJ1NlY3Rpb25zJykgfX0nLAorICAgICAgICAgIGRlcHM6IFsn b25seV9kYXRhJywgJ29ubHlfc2NoZW1hJ10sIGRpc2FibGVkOiBmdW5jdGlv bihtKSB7CisgICAgICAgICAgICByZXR1cm4gbS5nZXQoJ29ubHlfZGF0YScp CisgICAgICAgICAgICAgICAgICAgfHwgbS5nZXQoJ29ubHlfc2NoZW1hJyk7 CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3Bv c3RfZGF0YScsIGxhYmVsOiAne3sgXygnUG9zdC1kYXRhJykgfX0nLAorICAg ICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2ws IGdyb3VwOiAne3sgXygnU2VjdGlvbnMnKSB9fScsCisgICAgICAgICAgZGVw czogWydvbmx5X2RhdGEnLCAnb25seV9zY2hlbWEnXSwgZGlzYWJsZWQ6IGZ1 bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiBtLmdldCgnb25seV9k YXRhJykKKyAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgnb25seV9zY2hl bWEnKTsKKyAgICAgICAgICB9CisgICAgICAgIH1dCisgICAgICB9LHsKKyAg ICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxh YmVsOiAne3sgXygnVHlwZSBvZiBvYmplY3RzJykgfX0nLAorICAgICAgICBn cm91cDogJ3t7IF8oJ0R1bXAgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2No ZW1hOlt7CisgICAgICAgICAgaWQ6ICdvbmx5X2RhdGEnLCBsYWJlbDogJ3t7 IF8oJ09ubHkgZGF0YScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNr Zm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBncm91cDogJ3t7IF8oJ1R5cGUg b2Ygb2JqZWN0cycpIH19JywKKyAgICAgICAgICBkZXBzOiBbJ3ByZV9kYXRh JywgJ2RhdGEnLCAncG9zdF9kYXRhJywnb25seV9zY2hlbWEnXSwgZGlzYWJs ZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJldHVybiBtLmdldCgn cHJlX2RhdGEnKQorICAgICAgICAgICAgICAgICAgIHx8IG0uZ2V0KCdkYXRh JykKKyAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgncG9zdF9kYXRhJykK KyAgICAgICAgICAgICAgICAgICB8fCBtLmdldCgnb25seV9zY2hlbWEnKTsK KyAgICAgICAgICB9CisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnb25s eV9zY2hlbWEnLCBsYWJlbDogJ3t7IF8oJ09ubHkgc2NoZW1hJykgfX0nLAor ICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRy b2wsIGdyb3VwOiAne3sgXygnVHlwZSBvZiBvYmplY3RzJykgfX0nLAorICAg ICAgICAgIGRlcHM6IFsncHJlX2RhdGEnLCAnZGF0YScsICdwb3N0X2RhdGEn LCAnb25seV9kYXRhJ10sIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAg ICAgICAgICByZXR1cm4gbS5nZXQoJ3ByZV9kYXRhJykKKyAgICAgICAgICAg ICAgICAgICB8fCBtLmdldCgnZGF0YScpCisgICAgICAgICAgICAgICAgICAg fHwgbS5nZXQoJ3Bvc3RfZGF0YScpCisgICAgICAgICAgICAgICAgICAgfHwg bS5nZXQoJ29ubHlfZGF0YScpOworICAgICAgICAgIH0KKyAgICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICdibG9icycsIGxhYmVsOiAne3sgXygnQmxvYnMn KSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dp dGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ1R5 cGUgb2Ygb2JqZWN0cycpIH19JworICAgICAgICB9XQorICAgICAgfSx7Cisg ICAgICAgIHR5cGU6ICduZXN0ZWQnLCBjb250cm9sOiAnZmllbGRzZXQnLCBs YWJlbDogJ3t7IF8oJ0RvIG5vdCBzYXZlJykgfX0nLAorICAgICAgICBncm91 cDogJ3t7IF8oJ0R1bXAgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2NoZW1h Olt7CisgICAgICAgICAgaWQ6ICdkbnNfb3duZXInLCBsYWJlbDogJ3t7IF8o J093bmVyJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1 c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7 eyBfKCdEbyBub3Qgc2F2ZScpIH19JworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ2Ruc19wcml2aWxlZ2UnLCBsYWJlbDogJ3t7IF8oJ1ByaXZpbGVn ZScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21T d2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygn RG8gbm90IHNhdmUnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6 ICdkbnNfdGFibGVzcGFjZScsIGxhYmVsOiAne3sgXygnVGFibGVzcGFjZScp IH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0 Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnRG8g bm90IHNhdmUnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdk bnNfdW5sb2dnZWRfdGJsX2RhdGEnLCBsYWJlbDogJ3t7IF8oJ1VubG9nZ2Vk IHRhYmxlIGRhdGEnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zv cm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91 cDogJ3t7IF8oJ0RvIG5vdCBzYXZlJykgfX0nCisgICAgICAgIH1dCisgICAg ICB9LHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVs ZHNldCcsIGxhYmVsOiAne3sgXygnUXVlcmllcycpIH19JywKKyAgICAgICAg Z3JvdXA6ICd7eyBfKCdEdW1wIG9wdGlvbnMnKSB9fScsCisgICAgICAgIHNj aGVtYTpbeworICAgICAgICAgIGlkOiAndXNlX2NvbHVtbl9pbnNlcnRzJywg bGFiZWw6ICd7eyBfKCdVc2UgQ29sdW1uIEluc2VydHMnKSB9fScsCisgICAg ICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwg ZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8oJ1F1ZXJpZXMnKSB9fScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICd1c2VfaW5zZXJ0X2NvbW1h bmRzJywgbGFiZWw6ICd7eyBfKCdVc2UgSW5zZXJ0IENvbW1hbmRzJykgfX0n LAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENv bnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdRdWVyaWVz JykgfX0nCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnaW5jbHVkZV9j cmVhdGVfZGF0YWJhc2UnLCBsYWJlbDogJ3t7IF8oJ0luY2x1ZGUgQ1JFQVRF IERBVEFCQVNFIHN0YXRlbWVudCcpIH19JywKKyAgICAgICAgICBjb250cm9s OiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFs c2UsIGdyb3VwOiAne3sgXygnUXVlcmllcycpIH19JworICAgICAgICB9LHsK KyAgICAgICAgICBpZDogJ2luY2x1ZGVfZHJvcF9kYXRhYmFzZScsIGxhYmVs OiAne3sgXygnSW5jbHVkZSBEUk9QIERBVEFCQVNFIHN0YXRlbWVudCcpIH19 JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hD b250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnUXVlcmll cycpIH19JworICAgICAgICB9XQorICAgICAgfSx7CisgICAgICAgIHR5cGU6 ICduZXN0ZWQnLCBjb250cm9sOiAnZmllbGRzZXQnLCBsYWJlbDogJ3t7IF8o J0Rpc2FibGUnKSB9fScsCisgICAgICAgIGdyb3VwOiAne3sgXygnRHVtcCBv cHRpb25zJykgfX0nLAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBp ZDogJ2Rpc2FibGVfdHJpZ2dlcicsIGxhYmVsOiAne3sgXygnVHJpZ2dlcicp IH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0 Y2hDb250cm9sLCBncm91cDogJ3t7IF8oJ0Rpc2FibGUnKSB9fScsCisgICAg ICAgICAgZGVwczogWydvbmx5X2RhdGEnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9u KG0pIHsKKyAgICAgICAgICAgIHJldHVybiAhKG0uZ2V0KCdvbmx5X2RhdGEn KSk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBpZDog J2Rpc2FibGVfcXVvdGluZycsIGxhYmVsOiAne3sgXygnJCBxdW90aW5nJykg fX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRj aENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdEaXNh YmxlJykgfX0nCisgICAgICAgIH1dCisgICAgICB9LHsKKyAgICAgICAgdHlw ZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sg XygnTWlzY2VsbGFuZW91cycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBf KCdEdW1wIG9wdGlvbnMnKSB9fScsCisgICAgICAgIHNjaGVtYTpbeworICAg ICAgICAgIGlkOiAnd2l0aF9vaWRzJywgbGFiZWw6ICd7eyBfKCdXaXRoIE9J RChzKScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0 b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sg XygnTWlzY2VsbGFuZW91cycpIH19JworICAgICAgICB9LHsKKyAgICAgICAg ICBpZDogJ3ZlcmJvc2UnLCBsYWJlbDogJ3t7IF8oJ1ZlcmJvc2UgbWVzc2Fn ZXMnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9t U3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBncm91cDogJ3t7IF8o J01pc2NlbGxhbmVvdXMnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAg aWQ6ICdkcW91dGUnLCBsYWJlbDogJ3t7IF8oJ0ZvcmNlIGRvdWJsZSBxdW90 ZSBvbiBpZGVudGlmaWVycycpIH19JywKKyAgICAgICAgICBjb250cm9sOiBC YWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2Us IGdyb3VwOiAne3sgXygnTWlzY2VsbGFuZW91cycpIH19JworICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ3VzZV9zZXRfc2Vzc2lvbl9hdXRoJywgbGFi ZWw6ICd7eyBfKCdVc2UgU0VUIFNFU1NJT04gQVVUSE9SSVpBVElPTicpIH19 JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hD b250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdyb3VwOiAne3sgXygnTWlzY2Vs bGFuZW91cycpIH19JworICAgICAgICB9XQorICAgICAgfSx7CisgICAgICAg ICAgaWQ6ICd0b2RvJywgbGFiZWw6ICd7eyBfKCdUT0RPJykgfX0nLCB0ZXh0 OiAne3sgXygnQWRkIE9iamVjdHMgc2VsZWN0aW9uIHRyZWUgaGVyZScpIH19 JywKKyAgICAgICAgICB0eXBlOiAnbm90ZScsIGdyb3VwOiAne3sgXygnT2Jq ZWN0cycpIH19JworICAgICB9XSwKKyAgICAgIHZhbGlkYXRlOiBmdW5jdGlv bigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgfSk7 CisKKyAgICAvLyBDcmVhdGUgYW4gT2JqZWN0IEJhY2t1cCBvZiBwZ0Jyb3dz ZXIgY2xhc3MKKyAgICBwZ0Jyb3dzZXIuQmFja3VwICA9IHsKKyAgICAgIGlu aXQ6IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAodGhpcy5pbml0aWFsaXpl ZCkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFs aXplZCA9IHRydWU7CisKKyAgICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9k ZXMgb24gd2hpY2ggYmFja3VwIGNvbnRleHQgbWVudSBvcHRpb24gYXBwZWFy cworICAgICAgICB2YXIgYmFja3VwX3N1cHBvcnRlZF9ub2RlcyA9IFsKKyAg ICAgICAgICAgICAgJ2RhdGFiYXNlJywgJ3NjaGVtYScsICd0YWJsZScKKyAg ICAgICAgICAgIF07CisKKyAgICAgICAgLyoqCisgICAgICAgICAgRW5hYmxl L2Rpc2FibGUgYmFja3VwIG1lbnUgaW4gdG9vbHMgYmFzZWQKKyAgICAgICAg ICBvbiBub2RlIHNlbGVjdGVkCisgICAgICAgICAgaWYgc2VsZWN0ZWQgbm9k ZSBpcyBwcmVzZW50IGluIHN1cHBvcnRlZF9ub2RlcywKKyAgICAgICAgICBt ZW51IHdpbGwgYmUgZW5hYmxlZCBvdGhlcndpc2UgZGlzYWJsZWQuCisgICAg ICAgICAgQWxzbywgaGlkZSBpdCBmb3Igc3lzdGVtIHZpZXcgaW4gY2F0YWxv Z3MKKyAgICAgICAgKi8KKyAgICAgICAgbWVudV9lbmFibGVkID0gZnVuY3Rp b24oaXRlbURhdGEsIGl0ZW0sIGRhdGEpIHsKKyAgICAgICAgICB2YXIgdCA9 IHBnQnJvd3Nlci50cmVlLCBpID0gaXRlbSwgZCA9IGl0ZW1EYXRhOworICAg ICAgICAgIHZhciBwYXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5w YXJlbnQoaSk6IG51bGwsCisgICAgICAgICAgICAgIHBhcmVudF9kYXRhID0g cGFyZW50X2l0ZW0gPyB0Lml0ZW1EYXRhKHBhcmVudF9pdGVtKSA6IG51bGw7 CisgICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChkKSAmJiAhXy5pc051 bGwoZCkgJiYgIV8uaXNOdWxsKHBhcmVudF9kYXRhKSkKKyAgICAgICAgICAg ICAgcmV0dXJuICgKKyAgICAgICAgICAgICAgICAoXy5pbmRleE9mKGJhY2t1 cF9zdXBwb3J0ZWRfbm9kZXMsIGQuX3R5cGUpICE9PSAtMSAmJgorICAgICAg ICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBlICE9ICdjYXRhbG9nJykgPyB0 cnVlOiBmYWxzZQorICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxz ZQorICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisK KyAgICAgICAgbWVudV9lbmFibGVkX3NlcnZlciA9IGZ1bmN0aW9uKGl0ZW1E YXRhLCBpdGVtLCBkYXRhKSB7CisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dz ZXIudHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgICB2 YXIgcGFyZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkp OiBudWxsLAorICAgICAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9p dGVtID8gdC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOworICAgICAg ICAgICAgICAvLyBJZiBzZXJ2ZXIgbm9kZSBzZWxlY3RlZCAmJiBjb25uZWN0 ZWQKKyAgICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8u aXNOdWxsKGQpKQorICAgICAgICAgICAgICAgIHJldHVybiAoKCdzZXJ2ZXIn ID09PSBkLl90eXBlKSAmJiBkLmNvbm5lY3RlZCk7CisgICAgICAgICAgICAg IGVsc2UKKyAgICAgICAgICAgICAgICBmYWxzZTsKKyAgICAgICAgfTsKKwor ICAgICAgICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9uIHdoaWNoIHRoZSBtZW51 cyB0byBiZSBhcHBlYXIKKyAgICAgICAgdmFyIG1lbnVzID0gW3sKKyAgICAg ICAgICBuYW1lOiAnYmFja3VwX2dsb2JhbCcsIG1vZHVsZTogdGhpcywKKyAg ICAgICAgICBhcHBsaWVzOiBbJ3Rvb2xzJ10sIGNhbGxiYWNrOiAnc3RhcnRf YmFja3VwX2dsb2JhbCcsCisgICAgICAgICAgcHJpb3JpdHk6IDEwLCBsYWJl bDogJ3t7XygiQmFja3VwIEdsb2JhbHMuLi4iKSB9fScsCisgICAgICAgICAg aWNvbjogJ2ZhIGZhLWZsb3BweS1vJywgZW5hYmxlOiBtZW51X2VuYWJsZWRf c2VydmVyCisgICAgICAgIH0seworICAgICAgICAgIG5hbWU6ICdiYWNrdXBf c2VydmVyJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsn dG9vbHMnXSwgY2FsbGJhY2s6ICdzdGFydF9iYWNrdXBfc2VydmVyJywKKyAg ICAgICAgICBwcmlvcml0eTogMTAsIGxhYmVsOiAne3tfKCJCYWNrdXAgU2Vy dmVyLi4uIikgfX0nLAorICAgICAgICAgIGljb246ICdmYSBmYS1mbG9wcHkt bycsIGVuYWJsZTogbWVudV9lbmFibGVkX3NlcnZlcgorICAgICAgICB9LHsK KyAgICAgICAgICBuYW1lOiAnYmFja3VwX2dsb2JhbF9jdHgnLCBtb2R1bGU6 IHRoaXMsIG5vZGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGFwcGxpZXM6IFsn Y29udGV4dCddLCBjYWxsYmFjazogJ3N0YXJ0X2JhY2t1cF9nbG9iYWwnLAor ICAgICAgICAgIHByaW9yaXR5OiAxMCwgbGFiZWw6ICd7e18oIkJhY2t1cCBH bG9iYWxzLi4uIikgfX0nLAorICAgICAgICAgIGljb246ICdmYSBmYS1mbG9w cHktbycsIGVuYWJsZTogbWVudV9lbmFibGVkX3NlcnZlcgorICAgICAgICB9 LHsKKyAgICAgICAgICBuYW1lOiAnYmFja3VwX3NlcnZlcl9jdHgnLCBtb2R1 bGU6IHRoaXMsIG5vZGU6ICdzZXJ2ZXInLAorICAgICAgICAgIGFwcGxpZXM6 IFsnY29udGV4dCddLCBjYWxsYmFjazogJ3N0YXJ0X2JhY2t1cF9zZXJ2ZXIn LAorICAgICAgICAgIHByaW9yaXR5OiAxMCwgbGFiZWw6ICd7e18oIkJhY2t1 cCBTZXJ2ZXIuLi4iKSB9fScsCisgICAgICAgICAgaWNvbjogJ2ZhIGZhLWZs b3BweS1vJywgZW5hYmxlOiBtZW51X2VuYWJsZWRfc2VydmVyCisgICAgICAg IH0seworICAgICAgICAgIG5hbWU6ICdiYWNrdXBfb2JqZWN0JywgbW9kdWxl OiB0aGlzLAorICAgICAgICAgIGFwcGxpZXM6IFsndG9vbHMnXSwgY2FsbGJh Y2s6ICdiYWNrdXBfb2JqZWN0cycsCisgICAgICAgICAgcHJpb3JpdHk6IDEw LCBsYWJlbDogJ3t7XygiQmFja3VwLi4uIikgfX0nLAorICAgICAgICAgIGlj b246ICdmYSBmYS1mbG9wcHktbycsIGVuYWJsZTogbWVudV9lbmFibGVkCisg ICAgICAgIH1dOworCisgICAgICAgIGZvciAodmFyIGlkeCA9IDA7IGlkeCA8 IGJhY2t1cF9zdXBwb3J0ZWRfbm9kZXMubGVuZ3RoOyBpZHgrKykgeworICAg ICAgICAgIG1lbnVzLnB1c2goeworICAgICAgICAgICAgbmFtZTogJ2JhY2t1 cF8nICsgYmFja3VwX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLAorICAgICAgICAg ICAgbm9kZTogYmFja3VwX3N1cHBvcnRlZF9ub2Rlc1tpZHhdLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgICBhcHBsaWVzOiBbJ2NvbnRleHQnXSwgY2Fs bGJhY2s6ICdiYWNrdXBfb2JqZWN0cycsCisgICAgICAgICAgICBwcmlvcml0 eTogMTAsIGxhYmVsOiAne3tfKCJCYWNrdXAuLi4iKSB9fScsCisgICAgICAg ICAgICBpY29uOiAnZmEgZmEtZmxvcHB5LW8nLCBlbmFibGU6IG1lbnVfZW5h YmxlZAorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBw Z0FkbWluLkJyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKKyAgICAgICAgcmV0 dXJuIHRoaXM7CisgICAgICB9LAorICAgICAgc3RhcnRfYmFja3VwX2dsb2Jh bDogZnVuY3Rpb24oYWN0aW9uLCBpdGVtKSB7CisgICAgICAgIHZhciBwYXJh bXMgPSB7J2dsb2JhbHMnOiB0cnVlIH07CisgICAgICAgIHRoaXMuc3RhcnRf YmFja3VwX2dsb2JhbF9zZXJ2ZXIuYXBwbHkoCisgICAgICAgICAgdGhpcywg W2FjdGlvbiwgaXRlbSwgcGFyYW1zXQorICAgICAgICApOworICAgICAgfSwK KyAgICAgIHN0YXJ0X2JhY2t1cF9zZXJ2ZXI6IGZ1bmN0aW9uKGFjdGlvbiwg aXRlbSkgeworICAgICAgICB2YXIgcGFyYW1zID0geydzZXJ2ZXInOiB0cnVl IH07CisgICAgICAgIHRoaXMuc3RhcnRfYmFja3VwX2dsb2JhbF9zZXJ2ZXIu YXBwbHkoCisgICAgICAgICAgdGhpcywgW2FjdGlvbiwgaXRlbSwgcGFyYW1z XQorICAgICAgICApOworICAgICAgfSwKKworICAgICAgLy8gQ2FsbGJhY2sg dG8gZHJhdyBCYWNrdXAgRGlhbG9nIGZvciBnbG9iYWxzL3NlcnZlcgorICAg ICAgc3RhcnRfYmFja3VwX2dsb2JhbF9zZXJ2ZXI6IGZ1bmN0aW9uKGFjdGlv biwgaXRlbSwgcGFyYW1zKSB7CisKKyAgICAgICAgdmFyIG9mX3R5cGUgPSB1 bmRlZmluZWQ7CisKKyAgICAgICAgLy8gU2V0IE5vdGVzIGFjY29yZGluZyB0 byB0eXBlIG9mIGJhY2t1cAorICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQo cGFyYW1zWydnbG9iYWxzJ10pICYmIHBhcmFtc1snZ2xvYmFscyddKSB7Cisg ICAgICAgICAgb2ZfdHlwZSA9ICdnbG9iYWxzJzsKKyAgICAgICAgfSBlbHNl IHsKKyAgICAgICAgICBvZl90eXBlID0gJ3NlcnZlcic7CisgICAgICAgIH0K KworICAgICAgICB2YXIgRGlhbG9nTmFtZSA9ICdCYWNrdXBEaWFsb2dfJyAr IG9mX3R5cGUsCisgICAgICAgIERpYWxvZ1RpdGxlID0KKyAgICAgICAgICAh Xy5pc1VuZGVmaW5lZChwYXJhbXNbJ2dsb2JhbHMnXSkgJiYgcGFyYW1zWydn bG9iYWxzJ10KKyAgICAgICAgICAgICAgICA/ICd7eyBfKCdCYWNrdXAgR2xv YmFscy4uLicpIH19JworICAgICAgICAgICAgICAgIDogJ3t7IF8oJ0JhY2t1 cCBTZXJ2ZXIuLi4nKSB9fSc7CisKKyAgICAgICAgaWYoIWFsZXJ0aWZ5W0Rp YWxvZ05hbWVdKSB7CisgICAgICAgICAgYWxlcnRpZnkuZGlhbG9nKERpYWxv Z05hbWUgLGZ1bmN0aW9uIGZhY3RvcnkoKSB7CisgICAgICAgICAgICByZXR1 cm4geworICAgICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUpIHsK KyAgICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7Cisg ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgc2V0dXA6ZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg ICAgICAgIGJ1dHRvbnM6IFt7CisgICAgICAgICAgICAgICAgICAgIHRleHQ6 ICd7eyBfKCdCYWNrdXAnKSB9fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0 biBidG4tcHJpbWFyeSBmYSBmYS1sZyBmYS1zYXZlIHBnLWFsZXJ0aWZ5LWJ1 dHRvbicKKyAgICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAgICAgICAg ICAgICAgIHRleHQ6ICd7eyBfKCdDYW5jZWwnKSB9fScsIGtleTogMjcsIGNs YXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyIGZhIGZhLWxnIGZhLXRpbWVzIHBn LWFsZXJ0aWZ5LWJ1dHRvbicKKyAgICAgICAgICAgICAgICAgIH1dLAorICAg ICAgICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZworICAg ICAgICAgICAgICAgICAgb3B0aW9uczogeworICAgICAgICAgICAgICAgICAg ICB0aXRsZTogRGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgIC8v ZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRyb2wuCisg ICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgOiAhMSwKKyAgICAgICAgICAg ICAgICAgICAgb3ZlcmZsb3c6ICExLAorICAgICAgICAgICAgICAgICAgICBt b2RlbDogMCwKKyAgICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiB0cnVl LAorICAgICAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSwKKyAg ICAgICAgICAgICAgICAgICAgcGlubmFibGU6IGZhbHNlCisgICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAg fSwKKyAgICAgICAgICAgICAgaG9va3M6IHsKKyAgICAgICAgICAgICAgICAv LyBUcmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNsb3NlZAorICAgICAg ICAgICAgICAgIG9uY2xvc2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgaWYgKHRoaXMudmlldykgeworICAgICAgICAgICAgICAgICAgICAv LyBjbGVhciBvdXIgYmFja2Zvcm0gbW9kZWwvdmlldworICAgICAgICAgICAg ICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHtkYXRhOiB0cnVlLCBpbnRlcm5h bDogdHJ1ZSwgc2lsZW50OiB0cnVlfSk7CisgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAg ICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICAgICAgLy8gRGlzYWJs ZSBCYWNrdXAgYnV0dG9uIHVudGlsIHVzZXIgcHJvdmlkZXMgRmlsZW5hbWUK KyAgICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwuYnV0dG9uc1swXS5l bGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIHZh ciAkY29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0nYmFja3VwX2RpYWxvZyc+ PC9kaXY+Iik7CisgICAgICAgICAgICAgICAgLy8gRmluZCBjdXJyZW50L3Nl bGVjdGVkIG5vZGUKKyAgICAgICAgICAgICAgICB2YXIgdCA9IHBnQnJvd3Nl ci50cmVlLAorICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwK KyAgICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0 Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAorICAgICAgICAgICAgICAgICAg bm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5cGVdOworCisgICAg ICAgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAgICAgcmV0dXJu OworICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0cmVlSW5mbworICAgICAg ICAgICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVy YXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKyAgICAgICAgICAgICAgICAvLyBJ bnN0YW5jZSBvZiBiYWNrYm9uZSBtb2RlbAorICAgICAgICAgICAgICAgIHZh ciBuZXdNb2RlbCA9IG5ldyBCYWNrdXBNb2RlbCgKKyAgICAgICAgICAgICAg ICAgIHt0eXBlOiBvZl90eXBlfSwge25vZGVfaW5mbzogdHJlZUluZm99Cisg ICAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgZmllbGRz ID0gQmFja2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorICAgICAgICAgICAg ICAgICAgICB0cmVlSW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBub2RlLCB0 cmVlSW5mby5zZXJ2ZXIsIHRydWUKKyAgICAgICAgICAgICAgICAgICk7CisK KyAgICAgICAgICAgICAgICB2YXIgdmlldyA9IHRoaXMudmlldyA9IG5ldyBC YWNrZm9ybS5EaWFsb2coeworICAgICAgICAgICAgICAgICAgZWw6ICRjb250 YWluZXIsIG1vZGVsOiBuZXdNb2RlbCwgc2NoZW1hOiBmaWVsZHMKKyAgICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAvLyBBZGQgb3VyIGNs YXNzIHRvIGFsZXJ0aWZ5CisgICAgICAgICAgICAgICAgJCh0aGlzLmVsZW1l bnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCisgICAgICAgICAg ICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2Jq X3Byb3BlcnRpZXMnCisgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAg ICAgICAvLyBSZW5kZXIgZGlhbG9nCisgICAgICAgICAgICAgICAgdmlldy5y ZW5kZXIoKTsKKworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29u dGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICAg ICAgICAgICAgICAvLyBMaXN0ZW4gdG8gbW9kZWwgJiBpZiBmaWxlbmFtZSBp cyBwcm92aWRlZCB0aGVuIGVuYWJsZSBCYWNrdXAgYnV0dG9uCisgICAgICAg ICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLm9uKCdjaGFuZ2UnLCBmdW5jdGlv bigpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfLmlzVW5kZWZpbmVk KHRoaXMuZ2V0KCdmaWxlJykpICYmIHRoaXMuZ2V0KCdmaWxlJykgIT09ICcn KSB7CisgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLmNs ZWFyKCk7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFs LmJ1dHRvbnNbMF0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOworICAgICAg ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg IHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQg PSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2Rl bC5zZXQoJ2ZpbGUnLCAne3sgXygnUGxlYXNlIHByb3ZpZGUgZmlsZW5hbWUn KSB9fScpCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgLy8gQ2Fs bGJhY2sgZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2Yg dGhlIEFsZXJ0aWZ5IGRpYWxvZ3MKKyAgICAgICAgICAgICAgY2FsbGJhY2s6 IGZ1bmN0aW9uKGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoZS5idXR0b24u dGV4dCA9PT0gJ3t7IF8oJ0JhY2t1cCcpIH19JykgeworICAgICAgICAgICAg ICAgICAgLy8gRmV0Y2ggY3VycmVudCBzZXJ2ZXIgaWQKKyAgICAgICAgICAg ICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAg ICAgICAgIGkgPSB0LnNlbGVjdGVkKCksCisgICAgICAgICAgICAgICAgICAg IGQgPSBpICYmIGkubGVuZ3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5k ZWZpbmVkLAorICAgICAgICAgICAgICAgICAgICBub2RlID0gZCAmJiBwZ0Jy b3dzZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAgICAgICAgICAgIGlm ICghZCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg ICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVOb2RlSGll cmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7CisKKyAgICAgICAgICAgICAgICAg IHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAgICAgYmFzZVVy bCA9ICJ7eyB1cmxfZm9yKCdiYWNrdXAuaW5kZXgnKSB9fSIgKworICAgICAg ICAgICAgICAgICAgICAgICJjcmVhdGVfam9iLyIgKyB0cmVlSW5mby5zZXJ2 ZXIuX2lkLAorICAgICAgICAgICAgICAgICAgICBhcmdzID0gIHRoaXMudmll dy5tb2RlbC50b0pTT04oKTsKKworICAgICAgICAgICAgICAgICAgJC5hamF4 KHsKKyAgICAgICAgICAgICAgICAgICAgdXJsOiBiYXNlVXJsLAorICAgICAg ICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKKyAgICAgICAgICAgICAg ICAgICAgZGF0YTp7ICdkYXRhJzogSlNPTi5zdHJpbmdpZnkoYXJncykgfSwK KyAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7 CisgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9IGFsZXJ0aWZ5Lm1l c3NhZ2UoJ3t7IF8oJ0JhY2t1cCBqb2IgY3JlYXRlZCAoQ2xpY2sgZm9yIG1v cmUgZGV0YWlscyknKSB9fScsIDEwKTsKKyAgICAgICAgICAgICAgICAgICAg ICBtc2cuY2FsbGJhY2sgPSBmdW5jdGlvbiAoaXNDbGlja2VkKSB7CisgICAg ICAgICAgICAgICAgICAgICAgICBpZihpc0NsaWNrZWQpCisgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTaG93IGRldGFpbGVkIGxv Z3MgPj4nICsgcmVzKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAgIGVycm9y OiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKKyAgICAgICAgICAg ICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFy IGVyciA9ICQucGFyc2VKU09OKHhoci5yZXNwb25zZVRleHQpOworICAgICAg ICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAg ICAgICAgICAgICAgICAgICd7eyBfKCdCYWNrdXAgZmFpbGVkLi4uJykgfX0n LAorICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIuZXJyb3Jtc2cKKyAg ICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAg ICAgfSBjYXRjaCAoZSkge30KKyAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICB9CisgICAgICAgICAgfTsKKyAgICAgICB9KTsKKyAgICAgIH0K KyAgICAgICAgYWxlcnRpZnlbRGlhbG9nTmFtZV0odHJ1ZSkucmVzaXplVG8o JzYwJScsJzUwJScpOworICAgICB9LAorCisgICAgICAvLyBDYWxsYmFjayB0 byBkcmF3IEJhY2t1cCBEaWFsb2cgZm9yIG9iamVjdHMKKyAgICAgIGJhY2t1 cF9vYmplY3RzOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7CisgICAg ICAgIHZhciB0aXRsZSA9IFMoJ3t7ICdCYWNrdXAgKCVzOiAlcyknIH19Jyks CisgICAgICAgICAgICB0cmVlID0gcGdCcm93c2VyLnRyZWUsCisgICAgICAg ICAgICBpdGVtID0gdHJlZUl0ZW0gfHwgdHJlZS5zZWxlY3RlZCgpLAorICAg ICAgICAgICAgZGF0YSA9IGl0ZW0gJiYgaXRlbS5sZW5ndGggPT0gMSAmJiB0 cmVlLml0ZW1EYXRhKGl0ZW0pLAorICAgICAgICAgICAgbm9kZSA9IGRhdGEg JiYgZGF0YS5fdHlwZSAmJiBwZ0Jyb3dzZXIuTm9kZXNbZGF0YS5fdHlwZV07 CisKKyAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgIHJldHVybjsKKwor ICAgICAgICB0aXRsZSA9IHRpdGxlLnNwcmludGYobm9kZS5sYWJlbCwgZGF0 YS5sYWJlbCkudmFsdWUoKTsKKworICAgICAgICBpZighYWxlcnRpZnkuYmFj a3VwX29iamVjdHMpIHsKKyAgICAgICAgICAvLyBDcmVhdGUgRGlhbG9nIHRp dGxlIG9uIHRoZSBmbHkgd2l0aCBub2RlIGRldGFpbHMKKyAgICAgICAgICBh bGVydGlmeS5kaWFsb2coJ2JhY2t1cF9vYmplY3RzJyAsZnVuY3Rpb24gZmFj dG9yeSgpIHsKKyAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg ICBtYWluOiBmdW5jdGlvbih0aXRsZSkgeworICAgICAgICAgICAgICAgIHRo aXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKKyAgICAgICAgICAgICAgIH0sCisg ICAgICAgICAgICAgICBzZXR1cDpmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICByZXR1cm4geworICAgICAgICAgICAgICAgICAgYnV0dG9uczogW3sK KyAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3t7IF8oJ0JhY2t1cCcpIH19 Jywga2V5OiAyNywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZh LWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJworICAgICAgICAgICAg ICAgICAgICB9LHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3t7IF8o J0NhbmNlbCcpIH19Jywga2V5OiAyNywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1k YW5nZXIgZmEgZmEtbGcgZmEtdGltZXMgcGctYWxlcnRpZnktYnV0dG9uJwor ICAgICAgICAgICAgICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAvLyBT ZXQgb3B0aW9ucyBmb3IgZGlhbG9nCisgICAgICAgICAgICAgICAgICBvcHRp b25zOiB7CisgICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKKyAg ICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQg b3ZlcmZsb3cgY29udHJvbC4KKyAgICAgICAgICAgICAgICAgICAgcGFkZGlu ZyA6ICExLAorICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCisg ICAgICAgICAgICAgICAgICAgIG1vZGVsOiAwLAorICAgICAgICAgICAgICAg ICAgICByZXNpemFibGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIG1h eGltaXphYmxlOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBwaW5uYWJs ZTogZmFsc2UKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICB9OworICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICBob29rczog eworICAgICAgICAgICAgICAgIC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFs b2cgaXMgY2xvc2VkCisgICAgICAgICAgICAgICAgb25jbG9zZTogZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3KSB7Cisg ICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUoe2RhdGE6IHRy dWUsIGludGVybmFsOiB0cnVlLCBzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg IH0sCisgICAgICAgICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgeworICAg ICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgICAgICAg ICAvLyBEaXNhYmxlIEJhY2t1cCBidXR0b24gdW50aWwgdXNlciBwcm92aWRl cyBGaWxlbmFtZQorICAgICAgICAgICAgICAgIHRoaXMuX19pbnRlcm5hbC5i dXR0b25zWzBdLmVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAg ICAgICAgIHZhciAkY29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0nYmFja3Vw X2RpYWxvZyc+PC9kaXY+Iik7CisgICAgICAgICAgICAgICAgdmFyIHQgPSBw Z0Jyb3dzZXIudHJlZSwKKyAgICAgICAgICAgICAgICAgIGkgPSB0LnNlbGVj dGVkKCksCisgICAgICAgICAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9 PSAxID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZCwKKyAgICAgICAgICAg ICAgICAgIG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsK KworICAgICAgICAgICAgICAgIGlmICghZCkKKyAgICAgICAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9IG5v ZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKwor ICAgICAgICAgICAgICAgIHZhciBuZXdNb2RlbCA9IG5ldyBCYWNrdXBPYmpl Y3RNb2RlbCgKKyAgICAgICAgICAgICAgICAgIHt9LCB7bm9kZV9pbmZvOiB0 cmVlSW5mb30KKyAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgICBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisg ICAgICAgICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0 ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZlciwgdHJ1ZQorICAgICAgICAgICAg ICAgICAgKTsKKworICAgICAgICAgICAgICAgIHZhciB2aWV3ID0gdGhpcy52 aWV3ID0gbmV3IEJhY2tmb3JtLkRpYWxvZyh7CisgICAgICAgICAgICAgICAg ICBlbDogJGNvbnRhaW5lciwgbW9kZWw6IG5ld01vZGVsLCBzY2hlbWE6IGZp ZWxkcworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAg JCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3Mo CisgICAgICAgICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3By b3BlcnRpZXMgb2JqX3Byb3BlcnRpZXMnCisgICAgICAgICAgICAgICAgKTsK KworICAgICAgICAgICAgICAgIHZpZXcucmVuZGVyKCk7CisKKyAgICAgICAg ICAgICAgICB0aGlzLmVsZW1lbnRzLmNvbnRlbnQuYXBwZW5kQ2hpbGQoJGNv bnRhaW5lci5nZXQoMCkpOworCisgICAgICAgICAgICAgICAgIC8vIExpc3Rl biB0byBtb2RlbCAmIGlmIGZpbGVuYW1lIGlzIHByb3ZpZGVkIHRoZW4gZW5h YmxlIEJhY2t1cCBidXR0b24KKyAgICAgICAgICAgICAgICB0aGlzLnZpZXcu bW9kZWwub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5nZXQoJ2ZpbGUnKSkg JiYgdGhpcy5nZXQoJ2ZpbGUnKSAhPT0gJycpIHsKKyAgICAgICAgICAgICAg ICAgICAgICB0aGlzLmVycm9yTW9kZWwuY2xlYXIoKTsKKyAgICAgICAgICAg ICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1swXS5lbGVtZW50 LmRpc2FibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0gZWxz ZSB7CisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1 dHRvbnNbMF0uZWxlbWVudC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgICAg ICAgICAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnZmlsZScsICd7eyBf KCdQbGVhc2UgcHJvdmlkZSBmaWxlbmFtZScpIH19JykKKyAgICAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3 aGVuIGNsaWNrIG9uIHRoZSBidXR0b25zIG9mIHRoZSBBbGVydGlmeSBkaWFs b2dzCisgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihlKSB7Cisg ICAgICAgICAgICAgICAgaWYgKGUuYnV0dG9uLnRleHQgPT09ICJCYWNrdXAi KSB7CisgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50IHNlcnZl ciBpZAorICAgICAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJl ZSwKKyAgICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQoKSwKKyAg ICAgICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQu aXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICAg IG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsKKworICAg ICAgICAgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAgICAgICBy ZXR1cm47CisKKyAgICAgICAgICAgICAgICAgIHZhciB0cmVlSW5mbyA9IG5v ZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKwor ICAgICAgICAgICAgICAgICAgLy8gU2V0IGN1cnJlbnQgZGF0YWJhc2UgaW50 byBtb2RlbAorICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNl dCgnZGF0YWJhc2UnLCB0cmVlSW5mby5kYXRhYmFzZS5sYWJlbCk7CisKKyAg ICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAg ICAgICAgICAgYmFzZVVybCA9ICJ7eyB1cmxfZm9yKCdiYWNrdXAuaW5kZXgn KSB9fSIgKworICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGVfam9iL2Jh Y2t1cF9vYmplY3QvIiArIHRyZWVJbmZvLnNlcnZlci5faWQsCisgICAgICAg ICAgICAgICAgICAgICAgYXJncyA9ICB0aGlzLnZpZXcubW9kZWwudG9KU09O KCk7CisKKyAgICAgICAgICAgICAgICAgICQuYWpheCh7CisgICAgICAgICAg ICAgICAgICAgIHVybDogYmFzZVVybCwKKyAgICAgICAgICAgICAgICAgICAg bWV0aG9kOiAnUE9TVCcsCisgICAgICAgICAgICAgICAgICAgIGRhdGE6eyAn ZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFyZ3MpIH0sCisgICAgICAgICAgICAg ICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworICAgICAgICAgICAg ICAgICAgICAgIHZhciBtc2cgPSBhbGVydGlmeS5tZXNzYWdlKCd7eyBfKCdC YWNrdXAgam9iIGNyZWF0ZWQgKENsaWNrIGZvciBtb3JlIGRldGFpbHMpJykg fX0nLCAxMCk7CisgICAgICAgICAgICAgICAgICAgICAgbXNnLmNhbGxiYWNr ID0gZnVuY3Rpb24gKGlzQ2xpY2tlZCkgeworICAgICAgICAgICAgICAgICAg ICAgICAgaWYoaXNDbGlja2VkKQorICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zb2xlLmxvZygnU2hvdyBkZXRhaWxlZCBsb2dzID4+JyArIHJlcyk7 CisgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICB9LAorICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhy LCBzdGF0dXMsIGVycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgdHJ5 IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSAkLnBhcnNl SlNPTih4aHIucmVzcG9uc2VUZXh0KTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIGFsZXJ0aWZ5LmFsZXJ0KAorICAgICAgICAgICAgICAgICAgICAgICAg ICAne3sgXygnQmFja3VwIGZhaWxlZC4uLicpIH19JywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgZXJyLmVycm9ybXNnCisgICAgICAgICAgICAgICAg ICAgICAgICApOworICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUp IHt9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg IH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAg ICAgICAgfTsKKyAgICAgIH0pOworICAgICAgfQorICAgICAgYWxlcnRpZnku YmFja3VwX29iamVjdHModGl0bGUpLnJlc2l6ZVRvKCc2NSUnLCc2MCUnKTsK KyAgICAgIH0KKyAgICB9OworICAgIHJldHVybiBwZ0Jyb3dzZXIuQmFja3Vw OworICB9KTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg== --94eb2c0348a46202f80531ef0381 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 --94eb2c0348a46202f80531ef0381--