Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ayfmz-0000rP-PJ for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 13:27:30 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1ayfmy-0000yO-My for pgadmin-hackers@arkaria.postgresql.org; Fri, 06 May 2016 13:27:28 +0000 Received: from makus.postgresql.org ([2001:4800:1501:1::229]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1ayfmk-0000ha-6c for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 13:27:14 +0000 Received: from mail-qg0-x233.google.com ([2607:f8b0:400d:c04::233]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1ayfmh-0002DG-0H for pgadmin-hackers@postgresql.org; Fri, 06 May 2016 13:27:12 +0000 Received: by mail-qg0-x233.google.com with SMTP id f74so55818099qge.2 for ; Fri, 06 May 2016 06:27:10 -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=BBY4yv4ZkTRsK8xzI/3AVnaFFeT/4dN/kJlqvcTKzqE=; b=VFlWnp3v328oKj/61lB0Z0hPaUYA4c5YrXB2uwvwpHUrd4g/+lcFr/YqFflFeO5ZYR SSuAjZnZM1A0LjL/1hje394vWybVua3+ES8AgJ64/xC3+rBt3hEsqYPBO+iXpLtEzHSG XEm0oiOfAvSaQuf6fTjJy2AhYujZxJYsjuoU+CgLnCqTZ4EQEwLSD0Ru/2bqV1XipaTF JhwMfyCJZxjSYj0SQCS05oSAbdKLfgcameS0fwOtXcBIcnCovYP+PpA5A6+88J+z1Yg2 6C7HH1rwiBmmL8vQE9cgxUjcIOK6G268nyFfX4KUk5GxerkWG4Zycix/h3p3zNEpxqbI eszQ== 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=BBY4yv4ZkTRsK8xzI/3AVnaFFeT/4dN/kJlqvcTKzqE=; b=Yw9usUtSgxatjllyzUQdHZShSUnQu+p1ZqF0mCUMajrbRxOPNjr1qOXNU63mNwAOMb GXnGCgYeF1U0pAuEg3taR4GmcjhTW9kgDpHT8sCOjZT93WAWy0hz2uNHHM+d9EqqByDr 5I7s3urPs2JJrNg/ra3a8ewzFqH1jF/El0sXKyVgyDzDZq8pWVoHfhTuReMkom4CZ8EE oLPtSgqRRdXnwcJmxDrjudqo4trqsKUTuv4UQ2y7F2MAGa1jxG3ljCp7aof/zmse8Jdn VNIpfslaRWV0Da0VbZj+9cPlXQzjGHCwQWtx7BYdiD9/g9Ockx8lCCN9N/c2rXOIcBn8 5UWg== X-Gm-Message-State: AOPr4FVKgekz3BUAHwUkJx+r0uApZCvtRZkKLTtzJiAH+e1oUoWCKNA+mH394q1czL4isJOtk+CWoN6o+4pMkj8S X-Received: by 10.140.242.210 with SMTP id n201mr21340016qhc.2.1462541229820; Fri, 06 May 2016 06:27:09 -0700 (PDT) MIME-Version: 1.0 Received: by 10.55.170.147 with HTTP; Fri, 6 May 2016 06:26:50 -0700 (PDT) From: Murtuza Zabuawala Date: Fri, 6 May 2016 18:56:50 +0530 Message-ID: Subject: PATCH: Initiale for "Restore Utility" [pgAdmin4] To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a11391316793ce905322c6aee 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 --001a11391316793ce905322c6aee Content-Type: multipart/alternative; boundary=001a11391316793ce405322c6aec --001a11391316793ce405322c6aec Content-Type: text/plain; charset=UTF-8 Hi, PFA initial patch for restore utility. *Note:* This patch depends on File manager patch. -- Regards, Murtuza Zabuawala EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company --001a11391316793ce405322c6aec Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA initial patch for restore utili= ty.

Note: This patch depends on File manage= r patch.


--
Regar= ds,
Murtuza Zabuawala
EnterpriseDB:=C2=A0http://www.enterprisedb.com
The Enterprise P= ostgreSQL Company

--001a11391316793ce405322c6aec-- --001a11391316793ce905322c6aee Content-Type: application/octet-stream; name="Restore_tool_v1.patch" Content-Disposition: attachment; filename="Restore_tool_v1.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_invr8n390 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3Jlc3RvcmUvX19pbml0 X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL19faW5pdF9fLnB5 Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OTZkYTkK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9yZXN0b3Jl L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMjA3IEBACisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBw Z0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJJbXBsZW1lbnRzIFJl c3RvcmUgVXRpbGl0eSIiIgorCitpbXBvcnQganNvbgoraW1wb3J0IG9zCitm cm9tIHJhbmRvbSBpbXBvcnQgcmFuZGludAorZnJvbSBmbGFzayBpbXBvcnQg cmVuZGVyX3RlbXBsYXRlLCByZXF1ZXN0LCBjdXJyZW50X2FwcCwgXAorICAg IHVybF9mb3IsIFJlc3BvbnNlCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBv cnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1h a2VfanNvbl9yZXNwb25zZSwgXAorICAgIGludGVybmFsX3NlcnZlcl9lcnJv ciwgYmFkX3JlcXVlc3QKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBvcnQgUGdB ZG1pbk1vZHVsZQorZnJvbSBmbGFzay5leHQuc2VjdXJpdHkgaW1wb3J0IGxv Z2luX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiLCBK b2JzLCBTZXJ2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RS SVZFUiwgVVRJTElUSUVTCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5j ZXMgaW1wb3J0IFByZWZlcmVuY2VzCitmcm9tIHBnYWRtaW4udG9vbHMuYmFj a3VwIGltcG9ydCBfZm9ybWF0X3F0SWRlbnRzCisKKyMgc2V0IHRlbXBsYXRl IHBhdGggZm9yIHNxbCBzY3JpcHRzCitNT0RVTEVfTkFNRSA9ICdyZXN0b3Jl Jworc2VydmVyX2luZm8gPSB7fQorCisKK2NsYXNzIFJlc3RvcmVNb2R1bGUo UGdBZG1pbk1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgUmVzdG9yZU1v ZHVsZShPYmplY3QpOgorCisgICAgICAgIEl0IGlzIGEgdXRpbGl0eSB3aGlj aCBpbmhlcml0cyBQZ0FkbWluTW9kdWxlCisgICAgICAgIGNsYXNzIGFuZCBk ZWZpbmUgbWV0aG9kcyB0byBsb2FkIGl0cyBvd24KKyAgICAgICAgamF2YXNj cmlwdCBmaWxlLgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdCaW5hcnkgUGF0 aHMnKQorICAgICIiIgorCisgICAgTEFCRUwgPSBnZXR0ZXh0KCdVdGlsaXRp ZXMnKQorCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMoc2VsZik6Cisg ICAgICAgICIiIiIKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAgIGxp c3Q6IGpzIGZpbGVzIHVzZWQgYnkgdGhpcyBtb2R1bGUKKyAgICAgICAgIiIi CisgICAgICAgIHJldHVybiBbeworICAgICAgICAgICAgJ25hbWUnOiAncGdh ZG1pbi50b29scy5yZXN0b3JlJywKKyAgICAgICAgICAgICdwYXRoJzogdXJs X2ZvcigncmVzdG9yZS5pbmRleCcpICsgJ3Jlc3RvcmUnLAorICAgICAgICAg ICAgJ3doZW4nOiBOb25lCisgICAgICAgIH1dCisKKyAgICBkZWYgcmVnaXN0 ZXJfcHJlZmVyZW5jZXMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBH ZXQgc3RvcmFnZSBkaXJlY3RvcnkgcHJlZmVyZW5jZQorICAgICAgICAiIiIK KyAgICAgICAgc2VsZi5zdG9yYWdlX2RpcmVjdG9yeSA9IFByZWZlcmVuY2Vz Lm1vZHVsZSgnZmlsZV9tYW5hZ2VyJykKKyAgICAgICAgc2VsZi5zdG9yYWdl X2RpciA9IHNlbGYuc3RvcmFnZV9kaXJlY3RvcnkucHJlZmVyZW5jZSgKKyAg ICAgICAgICAgICAgICAnc3RvcmFnZV9kaXInCisgICAgICAgICkKKworICAg ICAgICBzZWxmLmJpbl9wYXRoID0gUHJlZmVyZW5jZXMubW9kdWxlKCdiYWNr dXAnKQorICAgICAgICAjIFJlZ2lzdGVyICdFREIgc3BlY2lmaWMgdXRpbGl0 eSBiaW5hcnkgZGlyZWN0b3J5JyBwcmVmZXJlbmNlCisgICAgICAgIHNlbGYu ZWRiX3V0aWxpdHlfZGlyID0gc2VsZi5iaW5fcGF0aC5wcmVmZXJlbmNlKAor ICAgICAgICAgICAgICAgICdlZGJfdXRpbGl0aWVzX2Jpbl9kaXInCisgICAg ICAgICkKKworICAgICAgICAjIFJlZ2lzdGVyICdQRyBzcGVjaWZpYyB1dGls aXR5IGJpbmFyeSBkaXJlY3RvcnknIHByZWZlcmVuY2UKKyAgICAgICAgc2Vs Zi5wZ191dGlsaXR5X2RpciA9IHNlbGYuYmluX3BhdGgucHJlZmVyZW5jZSgK KyAgICAgICAgICAgICAgICAncGdfdXRpbGl0aWVzX2Jpbl9kaXInCisgICAg ICAgICkKKworIyBDcmVhdGUgYmx1ZXByaW50IGZvciBSZXN0b3JlTW9kdWxl IGNsYXNzCitibHVlcHJpbnQgPSBSZXN0b3JlTW9kdWxlKAorICAgIE1PRFVM RV9OQU1FLCBfX25hbWVfXywgc3RhdGljX3VybF9wYXRoPScnKQorCisKK0Bi bHVlcHJpbnQucm91dGUoIi8iKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgaW5k ZXgoKToKKyAgICByZXR1cm4gYmFkX3JlcXVlc3QoZXJyb3Jtc2c9Z2V0dGV4 dCgiVGhpcyBVUkwgY2FuIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkhIikpCisK KworQGJsdWVwcmludC5yb3V0ZSgiL3Jlc3RvcmUuanMiKQorQGxvZ2luX3Jl cXVpcmVkCitkZWYgc2NyaXB0KCk6CisgICAgIiIicmVuZGVyIG93biBqYXZh c2NyaXB0IiIiCisgICAgcmV0dXJuIFJlc3BvbnNlKHJlc3BvbnNlPXJlbmRl cl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICAgICAicmVzdG9yZS9qcy9yZXN0 b3JlLmpzIiwgXz1nZXR0ZXh0KSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9 MjAwLAorICAgICAgICAgICAgICAgIG1pbWV0eXBlPSJhcHBsaWNhdGlvbi9q YXZhc2NyaXB0IikKKworCitkZWYgdXRpbGl0eV93aXRoX2Jpbl9wYXRoKHNl cnZlcl90eXBlKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzZXJ2 ZXJfdHlwZTogU2VydmVyIHR5cGUgKFBHL1BQQVMpCisKKyAgICBSZXR1cm5z OgorICAgICAgICBVdGlsaXR5IHRvIHVzZSBmb3IgcmVzdG9yZSB3aXRoIGZ1 bGwgcGF0aCB0YWtlbiBmcm9tIHByZWZlcmVuY2UKKyAgICAiIiIKKyAgICBp ZiBzZXJ2ZXJfdHlwZSA9PSAncHBhcyc6CisgICAgICAgIHJldHVybiBvcy5w YXRoLmpvaW4oYmx1ZXByaW50LmVkYl91dGlsaXR5X2Rpci5nZXQoKSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBVVElMSVRJRVNbJ0VEQl9SRVNU T1JFJ10pCisgICAgZWxpZiBzZXJ2ZXJfdHlwZSA9PSAncGcnOgorICAgICAg ICByZXR1cm4gb3MucGF0aC5qb2luKGJsdWVwcmludC5wZ191dGlsaXR5X2Rp ci5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVElMSVRJ RVNbJ1BHX1JFU1RPUkUnXSkKKworCitkZWYgZmlsZW5hbWVfd2l0aF9maWxl X21hbmFnZXJfcGF0aChmaWxlKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAg ICAgICBmaWxlOiBGaWxlIG5hbWUgcmV0dXJuZWQgZnJvbSBjbGllbnQgZmls ZSBtYW5hZ2VyCisKKyAgICBSZXR1cm5zOgorICAgICAgICBGaWxlbmFtZSB0 byB1c2UgZm9yIHJlc3RvcmUgd2l0aCBmdWxsIHBhdGggdGFrZW4gZnJvbSBw cmVmZXJlbmNlCisgICAgIiIiCisgICAgIyBTZXQgZmlsZSBtYW5hZ2VyIGRp cmVjdG9yeSBmcm9tIHByZWZlcmVuY2UKKyAgICBmaWxlX21hbmFnZXJfZGly ID0gYmx1ZXByaW50LnN0b3JhZ2VfZGlyLmdldCgpCisgICAgcmV0dXJuIG9z LnBhdGguam9pbihmaWxlX21hbmFnZXJfZGlyLCBmaWxlKQorCisKK0BibHVl cHJpbnQucm91dGUoJy9jcmVhdGVfam9iLzxpbnQ6c2lkPicsIG1ldGhvZHM9 WydQT1NUJ10pCitAbG9naW5fcmVxdWlyZWQKK2RlZiBjcmVhdGVfcmVzdG9y ZV9qb2Ioc2lkKToKKyAgICAiIiIKKyAgICBBcmdzOgorICAgICAgICBzaWQ6 IFNlcnZlciBJRAorCisgICAgICAgIENyZWF0ZXMgYSBuZXcgam9iIGZvciBy ZXN0b3JlIHRhc2sKKworICAgIFJldHVybnM6CisgICAgICAgIE5vbmUKKyAg ICAiIiIKKyAgICBpZiByZXF1ZXN0LmZvcm06CisgICAgICAgICMgQ29udmVy dCBJbW11dGFibGVEaWN0IHRvIGRpY3QKKyAgICAgICAgZGF0YSA9IGRpY3Qo cmVxdWVzdC5mb3JtKQorICAgICAgICBkYXRhID0ganNvbi5sb2FkcyhkYXRh WydkYXRhJ11bMF0pCisgICAgZWxzZToKKyAgICAgICAgZGF0YSA9IGpzb24u bG9hZHMocmVxdWVzdC5kYXRhLmRlY29kZSgpKQorCisgICAgZGF0YVsnZmls ZSddID0gZmlsZW5hbWVfd2l0aF9maWxlX21hbmFnZXJfcGF0aChkYXRhWydm aWxlJ10pCisKKyAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscyBsaWtl IGhvc3RuYW1lLCBwb3J0LCByb2xlcyBldGMKKyAgICBzZXJ2ZXIgPSBTZXJ2 ZXIucXVlcnkuZmlsdGVyX2J5KAorICAgICAgICBpZD1zaWQpLmZpcnN0KCkK KworICAgIGlmIHNlcnZlciBpcyBOb25lOgorICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAg ICAgICAgICAgZXJyb3Jtc2c9Z2V0dGV4dCgiQ291bGRuJ3QgZmluZCB0aGUg Z2l2ZW4gc2VydmVyIikKKyAgICAgICAgKQorCisgICAgIyBUbyBmZXRjaCBN ZXRhRGF0YSBmb3IgdGhlIHNlcnZlcgorICAgIGZyb20gcGdhZG1pbi51dGls cy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKKyAgICBtYW5hZ2VyID0gZ2V0 X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2Vy KHNlcnZlci5pZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKCkK KyAgICBjb25uZWN0ZWQgPSBjb25uLmNvbm5lY3RlZCgpCisKKyAgICBpZiBu b3QgY29ubmVjdGVkOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3Bv bnNlKAorICAgICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJy b3Jtc2c9Z2V0dGV4dCgiUGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBm aXJzdC4uLiIpCisgICAgICAgICkKKworICAgIHV0aWxpdHkgPSB1dGlsaXR5 X3dpdGhfYmluX3BhdGgobWFuYWdlci5zZXJ2ZXJfdHlwZSkKKworICAgIGFy Z3VtZW50cyA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgJ2FyZ3VtZW50 cy9yZXN0b3JlX29iamVjdHMuYXJncycsCisgICAgICAgIHNlcnZlcj1zZXJ2 ZXIsCisgICAgICAgIGRhdGE9ZGF0YSwKKyAgICAgICAgZmlyc3RfdGltZT1G YWxzZQorICAgICkKKworICAgIGFyZ3VtZW50cyA9IF9mb3JtYXRfcXRJZGVu dHMoYXJndW1lbnRzKQorCisgICAgdHJ5OgorICAgICAgICAjIEdlbmVyYXRl IHJhbmRvbSBqb2IgaWQKKyAgICAgICAgamlkID0gcmFuZGludCgyMDAxLCAz MDAwKQorICAgICAgICBjcmVhdGVfam9iID0gSm9icygKKyAgICAgICAgICAg IGpvYl9pZD1qaWQsCisgICAgICAgICAgICBjb21tYW5kPXV0aWxpdHksCisg ICAgICAgICAgICBhcmd1bWVudHM9YXJndW1lbnRzCisgICAgICAgICkKKyAg ICAgICAgIyBTYXZlIGl0CisgICAgICAgIGRiLnNlc3Npb24uYWRkKGNyZWF0 ZV9qb2IpCisgICAgICAgIGRiLnNlc3Npb24uY29tbWl0KCkKKworICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmV4Y2VwdGlvbihlKQorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAg IHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgIGVycm9ybXNnPXN0cihlKQorICAg ICAgICApCisgICAgIyBSZXR1cm4gcmVzcG9uc2UKKyAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICBkYXRhPXsnam9iX2lkJzogamlk LCAnU3VjY2Vzcyc6IDF9CisgICAgKQorCisiIiIKK1RPRE86Ly8KKyAgICBB ZGQgYnJvd3NlciB0cmVlCisiIiIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9yZXN0b3JlL3Rl bXBsYXRlcy9hcmd1bWVudHMvcmVzdG9yZV9vYmplY3RzLmFyZ3MgYi93ZWIv cGdhZG1pbi90b29scy9yZXN0b3JlL3RlbXBsYXRlcy9hcmd1bWVudHMvcmVz dG9yZV9vYmplY3RzLmFyZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uM2U1Nzc1MAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL3Jlc3RvcmUvdGVtcGxhdGVzL2FyZ3VtZW50cy9yZXN0b3Jl X29iamVjdHMuYXJncwpAQCAtMCwwICsxLDMzIEBACistLWhvc3Qge3tzZXJ2 ZXIuaG9zdH19IC0tcG9ydCB7e3NlcnZlci5wb3J0fX0gLS11c2VybmFtZSAi e3tjb25ufHF0SWRlbnQoc2VydmVyLnVzZXJuYW1lKX19IiAtLXJvbGUgeyUg aWYgZGF0YS5yb2xlICV9Cisie3sgY29ubnxxdElkZW50KGRhdGEucm9sZSkg fX0iIHslIGVsc2UgJX0ie3sgY29ubnxxdElkZW50KHNlcnZlci5yb2xlKSB9 fSIgeyUgZW5kaWYgJX0tLW5vLXBhc3N3b3JkIC0tZGJuYW1lICJ7eworY29u bnxxdElkZW50KGRhdGEuZGF0YWJhc2UpIH19IiB7JSBpZiBkYXRhLmZvcm1h dCA9PSAnRGlyZWN0b3J5JyAlfS0tZm9ybWF0IGRpcmVjdG9yeQorIHslIGVu ZGlmICV9eyUgaWYgZGF0YS5wcmVfZGF0YSAlfQorLS1zZWN0aW9uIHByZS1k YXRhIHslIGVuZGlmICV9eyUgaWYgZGF0YS5kYXRhICV9CistLXNlY3Rpb24g ZGF0YSB7JSBlbmRpZiAlfXslIGlmIGRhdGEucG9zdF9kYXRhICV9CistLXNl Y3Rpb24gcG9zdC1kYXRhIHslIGVuZGlmICV9eyUgaWYgZGF0YS5vbmx5X2Rh dGEgJX0KKy0tZGF0YS1vbmx5IHslIGVsc2UgJX0KK3slIGlmIGRhdGEuZG5z X293bmVyICV9CistLW5vLW93bmVyIHslIGVuZGlmICV9eyUgaWYgZGF0YS5k bnNfcHJpdmlsZWdlICV9CistLW5vLXByaXZpbGVnZXMgeyUgZW5kaWYgJX17 JSBpZiBkYXRhLmRuc190YWJsZXNwYWNlICV9CistLW5vLXRhYmxlc3BhY2Vz IHslIGVuZGlmICV9Cit7JSBlbmRpZiAlfXslIGlmIGRhdGEub25seV9zY2hl bWEgJX0KKy0tc2NoZW1hLW9ubHkgeyUgZWxzZSAlfQoreyUgaWYgZGF0YS5k aXNhYmxlX3RyaWdnZXIgJX0tLWRpc2FibGUtdHJpZ2dlcnMgeyUgZW5kaWYg JX0KK3slIGVuZGlmICV9eyUgaWYgZGF0YS5pbmNsdWRlX2NyZWF0ZV9kYXRh YmFzZSAlfQorLS1jcmVhdGUgeyUgZW5kaWYgJX17JSBpZiBkYXRhLmNsZWFu ICV9CistLWNsZWFuIHslIGVuZGlmICV9eyUgaWYgZGF0YS5zaW5nbGVfdHJh bnNhY3Rpb24gJX0KKy0tc2luZ2xlLXRyYW5zYWN0aW9uIHslIGVuZGlmICV9 eyUgaWYgZGF0YS5ub19kYXRhX2ZhaWxfdGFibGUgJX0KKy0tbm8tZGF0YS1m b3ItZmFpbGVkLXRhYmxlcyB7JSBlbmRpZiAlfXslIGlmIGRhdGEudXNlX3Nl dF9zZXNzaW9uX2F1dGggJX0KKy0tdXNlLXNldC1zZXNzaW9uLWF1dGhvcml6 YXRpb24geyUgZW5kaWYgJX17JSBpZiBkYXRhLmV4aXRfb25fZXJyb3IgJX0K Ky0tZXhpdC1vbi1lcnJvciB7JSBlbmRpZiAlfXslIGlmIGRhdGEubm9fb2Zf am9icyAlfQorLS1qb2JzIHt7IGRhdGEubm9fb2Zfam9icyB9fSB7JSBlbmRp ZiAlfXslIGlmIGRhdGEudmVyYm9zZSAlfQorLS12ZXJib3NlIHslIGVuZGlm ICV9eyUgaWYgZGF0YS5zY2hlbWFzICV9CistLXNjaGVtYSB7eyBjb25ufHF0 SWRlbnQoc2NoZW1hcykgfX0geyUgZW5kaWYgJX17JSBpZiBkYXRhLnRhYmxl cyAlfQorLS10YWJsZSB7eyBjb25ufHF0SWRlbnQodGFibGVzKSB9fSB7JSBl bmRpZiAlfXslIGlmIGRhdGEuZnVuY3Rpb25fbm9kZSAlfQorLS1mdW5jdGlv biB7eyBjb25ufHF0SWRlbnQoZnVuY3Rpb25fbm9kZSkgfX0geyUgZW5kaWYg JX17JSBpZiBkYXRhLnRyaWdnZXJfbm9kZSAlfQorLS10cmlnZ2VyIHt7IGNv bm58cXRJZGVudCh0cmlnZ2VyX25vZGUpIH19IHslIGVuZGlmICV9eyUgaWYg ZGF0YS50cmlnZ2VyX2Z1bmN0aW9uX25vZGUgJX0KKy0tZnVuY3Rpb24ge3sg Y29ubnxxdElkZW50KHRyaWdnZXJfZnVuY3Rpb25fbm9kZSkgfX0geyUgZW5k aWYgJX17JSBpZiBkYXRhLmluZGV4X25vZGUgJX0KKy0taW5kZXgge3sgY29u bnxxdElkZW50KGluZGV4X25vZGUpIH19IHslIGVuZGlmICV9eyUgaWYgZGF0 YS5maWxlICV9Cisie3tkYXRhLmZpbGV9fSIKK3slIGVuZGlmICV9eyUgaWYg Zmlyc3RfdGltZSAlfQorLS1saXN0IHslIGVuZGlmICV9ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVzdG9yZS9qcy9yZXN0b3JlLmpzIGIv d2ViL3BnYWRtaW4vdG9vbHMvcmVzdG9yZS90ZW1wbGF0ZXMvcmVzdG9yZS9q cy9yZXN0b3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjBkNjhmNGYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9yZXN0b3JlL3RlbXBsYXRlcy9yZXN0b3JlL2pzL3Jlc3RvcmUuanMK QEAgLTAsMCArMSw0NDIgQEAKK2RlZmluZShbCisgICAgICAnanF1ZXJ5Jywg J3VuZGVyc2NvcmUnLCAndW5kZXJzY29yZS5zdHJpbmcnLCAnYWxlcnRpZnkn LAorICAgICAgJ3BnYWRtaW4uYnJvd3NlcicsICdiYWNrYm9uZScsICdiYWNr Z3JpZCcsICdiYWNrZm9ybScsICdwZ2FkbWluLmJyb3dzZXIubm9kZScKKyAg ICAgIF0sCisKKyAgLy8gVGhpcyBkZWZpbmVzIFJlc3RvcmUgZGlhbG9nCisg IGZ1bmN0aW9uKCQsIF8sIFMsIGFsZXJ0aWZ5LCBwZ0Jyb3dzZXIsIEJhY2ti b25lLCBCYWNrZ3JpZCwgQmFja2Zvcm0sIHBnTm9kZSkgeworCisgICAgLy8g aWYgbW9kdWxlIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQsIHJlZmVyIHRvIHRo YXQuCisgICAgaWYgKHBnQnJvd3Nlci5SZXN0b3JlKSB7CisgICAgICByZXR1 cm4gcGdCcm93c2VyLlJlc3RvcmU7CisgICAgfQorCisgICAgdmFyIEN1c3Rv bVN3aXRjaENvbnRyb2wgPSBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9s ID0gQmFja2Zvcm0uU3dpdGNoQ29udHJvbC5leHRlbmQoeworICAgICAgICB0 ZW1wbGF0ZTogXy50ZW1wbGF0ZShbCisgICAgICAgICAgJzxsYWJlbCBjbGFz cz0iPCU9QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4gY3VzdG9t X3N3aXRjaF9sYWJlbF9jbGFzcyI+PCU9bGFiZWwlPjwvbGFiZWw+JywKKyAg ICAgICAgICAnPGRpdiBjbGFzcz0iPCU9QmFja2Zvcm0uY29udHJvbHNDbGFz c05hbWUlPiBjdXN0b21fc3dpdGNoX2NvbnRyb2xfY2xhc3MiPicsCisgICAg ICAgICAgJyAgPGRpdiBjbGFzcz0iY2hlY2tib3giPicsCisgICAgICAgICAg JyAgICA8bGFiZWw+JywKKyAgICAgICAgICAnICAgICAgPGlucHV0IHR5cGU9 ImNoZWNrYm94IiBjbGFzcz0iPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcp JT4iIG5hbWU9IjwlPW5hbWUlPiIgPCU9dmFsdWUgPyAiY2hlY2tlZD1cJ2No ZWNrZWRcJyIgOiAiIiU+IDwlPWRpc2FibGVkID8gImRpc2FibGVkIiA6ICIi JT4gPCU9cmVxdWlyZWQgPyAicmVxdWlyZWQiIDogIiIlPiAvPicsCisgICAg ICAgICAgJyAgICA8L2xhYmVsPicsCisgICAgICAgICAgJyAgPC9kaXY+JywK KyAgICAgICAgICAnPC9kaXY+JywKKyAgICAgICAgICAnPCUgaWYgKGhlbHBN ZXNzYWdlICYmIGhlbHBNZXNzYWdlLmxlbmd0aCkgeyAlPicsCisgICAgICAg ICAgJyAgPHNwYW4gY2xhc3M9IjwlPUJhY2tmb3JtLmhlbHBNZXNzYWdlQ2xh c3NOYW1lJT4iPjwlPWhlbHBNZXNzYWdlJT48L3NwYW4+JywKKyAgICAgICAg ICAnPCUgfSAlPicKKyAgICAgICAgXS5qb2luKCJcbiIpKSwKKyAgICAgICAg Y2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9sLWdyb3VwIGZvcm0tZ3JvdXAg Y29sLXhzLTYnCisgICAgfSk7CisKKyAgICAvL1Jlc3RvcmUgTW9kZWwgKE9i amVjdHMgbGlrZSBEYXRhYmFzZS9TY2hlbWEvVGFibGUpCisgICAgdmFyIFJl c3RvcmVPYmplY3RNb2RlbCA9IEJhY2tib25lLk1vZGVsLmV4dGVuZCh7Cisg ICAgICBpZEF0dHJpYnV0ZTogJ2lkJywKKyAgICAgIGRlZmF1bHRzOiB7Cisg ICAgICAgIGZpbGU6IHVuZGVmaW5lZCwKKyAgICAgICAgcm9sZTogJ3Bvc3Rn cmVzJywKKyAgICAgICAgZm9ybWF0OiAnQ3VzdG9tIG9yIHRhcicsCisgICAg ICAgIHZlcmJvc2U6IHRydWUsCisgICAgICAgIGJsb2JzOiB0cnVlLAorICAg ICAgICBlbmNvZGluZzogdW5kZWZpbmVkLAorICAgICAgICBkYXRhYmFzZTog dW5kZWZpbmVkLAorICAgICAgICBzY2hlbWFzOiB1bmRlZmluZWQsCisgICAg ICAgIHRhYmxlczogdW5kZWZpbmVkLAorICAgICAgICBmdW5jdGlvbl9ub2Rl OiB1bmRlZmluZWQsCisgICAgICAgIHRyaWdnZXJfbm9kZTogdW5kZWZpbmVk LAorICAgICAgICB0cmlnZ2VyX2Z1bmN0aW9uX25vZGU6IHVuZGVmaW5lZCwK KyAgICAgICAgaW5kZXhfbm9kZTogdW5kZWZpbmVkCisgICAgICB9LAorICAg ICAgICAvLyBEZWZhdWx0IHZhbHVlcyEKKyAgICAgICAgaW5pdGlhbGl6ZTog ZnVuY3Rpb24oYXR0cnMsIGFyZ3MpIHsKKyAgICAgICAgICAvLyBTZXQgZGVm YXVsdCBvcHRpb25zIGFjY29yZGluZyB0byBub2RlIHR5cGUgc2VsZWN0aW9u IGJ5IHVzZXIKKyAgICAgICAgICAgIHZhciBub2RlX3R5cGUgPSBhdHRycy5u b2RlX2RhdGEudHlwZTsKKworICAgICAgICAgICAgaWYgKG5vZGVfdHlwZSkg eworICAgICAgICAgICAgICAvLyBPbmx5X1NjaGVtYSBvcHRpb24KKyAgICAg ICAgICAgICAgaWYgKG5vZGVfdHlwZSA9PT0gJ2Z1bmN0aW9uJyB8fCBub2Rl X3R5cGUgPT09ICdpbmRleCcKKyAgICAgICAgICAgICAgfHwgbm9kZV90eXBl ID09PSAndHJpZ2dlcicpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNldCh7 J29ubHlfc2NoZW1hJzogdHJ1ZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAg ICAgICAgICAgfQorCisgICAgICAgICAgICAgIC8vIE9ubHlfRGF0YSBvcHRp b24KKyAgICAgICAgICAgICAgaWYgKG5vZGVfdHlwZSA9PT0gJ3RhYmxlJykg eworICAgICAgICAgICAgICAgIHRoaXMuc2V0KHsnb25seV9kYXRhJzogdHJ1 ZX0sIHtzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgfQorCisgICAg ICAgICAgICAgIC8vIENsZWFuIG9wdGlvbgorICAgICAgICAgICAgICBpZiAo bm9kZV90eXBlID09PSAnZnVuY3Rpb24nIHx8IG5vZGVfdHlwZSA9PT0gJ3Ry aWdnZXJfZnVuY3Rpb24nKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zZXQo eydjbGVhbic6IHRydWV9LCB7c2lsZW50OiB0cnVlfSk7CisgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBCYWNrYm9uZS5Nb2Rl bC5wcm90b3R5cGUuaW5pdGlhbGl6ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMp OworICAgICAgfSwKKyAgICAgIHNjaGVtYTogW3sKKyAgICAgICAgaWQ6ICdm b3JtYXQnLCBsYWJlbDogJ3t7IF8oJ0Zvcm1hdCcpIH19JywKKyAgICAgICAg dHlwZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgIGNvbnRy b2w6ICdzZWxlY3QyJywgc2VsZWN0MjogeworICAgICAgICAgICAgYWxsb3dD bGVhcjogZmFsc2UsCisgICAgICAgICAgICB3aWR0aDogIjEwMCUiCisgICAg ICAgIH0sCisgICAgICAgIG9wdGlvbnM6IFsKKyAgICAgICAgICB7bGFiZWw6 ICJDdXN0b20gb3IgdGFyIiwgdmFsdWU6ICJDdXN0b20gb3IgdGFyIn0sCisg ICAgICAgICAge2xhYmVsOiAiRGlyZWN0b3J5IiwgdmFsdWU6ICJEaXJlY3Rv cnkifQorICAgICAgICBdCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdmaWxl JywgbGFiZWw6ICd7eyBfKCdGaWxlbmFtZScpIH19JywKKyAgICAgICAgdHlw ZTogJ3RleHQnLCBkaXNhYmxlZDogZmFsc2UsIGNvbnRyb2w6IEJhY2tmb3Jt LkZpbGVDb250cm9sLAorICAgICAgICBkaWFsb2dfdHlwZTogJ3NlbGVjdF9m aWxlJywgc3VwcF90eXBlczogWycqJywgJ2JhY2t1cCcsJ3NxbCcsICdwYXRj aCddCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdub19vZl9qb2JzJywgbGFi ZWw6ICd7eyBfKCdOdW1iZXIgb2Ygam9icycpIH19JywKKyAgICAgICAgdHlw ZTogJ2ludCcKKyAgICAgIH0seworICAgICAgICBpZDogJ3JvbGUnLCBsYWJl bDogJ3t7IF8oJ1JvbGUgbmFtZScpIH19JywKKyAgICAgICAgY29udHJvbDog J25vZGUtbGlzdC1ieS1uYW1lJywgbm9kZTogJ3JvbGUnLAorICAgICAgICBz ZWxlY3QyOiB7IGFsbG93Q2xlYXI6IGZhbHNlIH0KKyAgICAgIH0seworICAg ICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFi ZWw6ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7 eyBfKCdSZXN0b3JlIG9wdGlvbnMnKSB9fScsCisgICAgICAgIHNjaGVtYTpb eworICAgICAgICAgIGlkOiAncHJlX2RhdGEnLCBsYWJlbDogJ3t7IF8oJ1By ZS1kYXRhJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1 c3RvbVN3aXRjaENvbnRyb2wsIGdyb3VwOiAne3sgXygnU2VjdGlvbnMnKSB9 fScsCisgICAgICAgICAgZGVwczogWydvbmx5X2RhdGEnLCAnb25seV9zY2hl bWEnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgIHJl dHVybiB0aGlzLm5vZGUudHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0aGlzLm5v ZGUudHlwZSAhPT0gJ3RhYmxlJworICAgICAgICAgICAgICAgICAgICYmIHRo aXMubm9kZS50eXBlICE9PSAndHJpZ2dlcicKKyAgICAgICAgICAgICAgICAg ICAmJiB0aGlzLm5vZGUudHlwZSAhPT0gJ3RyaWdnZXJfZnVuY3Rpb24nCisg ICAgICAgICAgICAgICAgICAgJiYgKG0uZ2V0KCdvbmx5X2RhdGEnKSB8fCBt LmdldCgnb25seV9zY2hlbWEnKSk7CisgICAgICAgICAgfQorICAgICAgICB9 LHsKKyAgICAgICAgICBpZDogJ2RhdGEnLCBsYWJlbDogJ3t7IF8oJ0RhdGEn KSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dp dGNoQ29udHJvbCwgZ3JvdXA6ICd7eyBfKCdTZWN0aW9ucycpIH19JywKKyAg ICAgICAgICBkZXBzOiBbJ29ubHlfZGF0YScsICdvbmx5X3NjaGVtYSddLCBk aXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJuIHRo aXMubm9kZS50eXBlICE9PSAnZnVuY3Rpb24nICYmIHRoaXMubm9kZS50eXBl ICE9PSAndGFibGUnCisgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5ub2Rl LnR5cGUgIT09ICd0cmlnZ2VyJworICAgICAgICAgICAgICAgICAgICYmIHRo aXMubm9kZS50eXBlICE9PSAndHJpZ2dlcl9mdW5jdGlvbicKKyAgICAgICAg ICAgICAgICAgICAmJiAobS5nZXQoJ29ubHlfZGF0YScpIHx8IG0uZ2V0KCdv bmx5X3NjaGVtYScpKTsKKyAgICAgICAgICB9CisgICAgICAgIH0seworICAg ICAgICAgIGlkOiAncG9zdF9kYXRhJywgbGFiZWw6ICd7eyBfKCdQb3N0LWRh dGEnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9t U3dpdGNoQ29udHJvbCwgZ3JvdXA6ICd7eyBfKCdTZWN0aW9ucycpIH19JywK KyAgICAgICAgICBkZXBzOiBbJ29ubHlfZGF0YScsICdvbmx5X3NjaGVtYSdd LCBkaXNhYmxlZDogZnVuY3Rpb24obSkgeworICAgICAgICAgICAgcmV0dXJu IHRoaXMubm9kZS50eXBlICE9PSAnZnVuY3Rpb24nICYmIHRoaXMubm9kZS50 eXBlICE9PSAndGFibGUnCisgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5u b2RlLnR5cGUgIT09ICd0cmlnZ2VyJworICAgICAgICAgICAgICAgICAgICYm IHRoaXMubm9kZS50eXBlICE9PSAndHJpZ2dlcl9mdW5jdGlvbicKKyAgICAg ICAgICAgICAgICAgICAmJiAobS5nZXQoJ29ubHlfZGF0YScpIHx8IG0uZ2V0 KCdvbmx5X3NjaGVtYScpKTsKKyAgICAgICAgICB9CisgICAgICAgIH1dCisg ICAgICB9LHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdm aWVsZHNldCcsIGxhYmVsOiAne3sgXygnVHlwZSBvZiBvYmplY3RzJykgfX0n LAorICAgICAgICBncm91cDogJ3t7IF8oJ1Jlc3RvcmUgb3B0aW9ucycpIH19 JywKKyAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAgaWQ6ICdvbmx5X2Rh dGEnLCBsYWJlbDogJ3t7IF8oJ09ubHkgZGF0YScpIH19JywKKyAgICAgICAg ICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBncm91 cDogJ3t7IF8oJ1R5cGUgb2Ygb2JqZWN0cycpIH19JywKKyAgICAgICAgICBk ZXBzOiBbJ3ByZV9kYXRhJywgJ2RhdGEnLCAncG9zdF9kYXRhJywnb25seV9z Y2hlbWEnXSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAg IHJldHVybiAodGhpcy5ub2RlLnR5cGUgIT09ICdkYXRhYmFzZScgJiYgdGhp cy5ub2RlLnR5cGUgIT09ICdzY2hlbWEnKQorICAgICAgICAgICAgICAgICAg IHx8ICggbS5nZXQoJ3ByZV9kYXRhJykKKyAgICAgICAgICAgICAgICAgICAg ICAgIHx8bS5nZXQoJ2RhdGEnKQorICAgICAgICAgICAgICAgICAgICAgICAg fHwgbS5nZXQoJ3Bvc3RfZGF0YScpCisgICAgICAgICAgICAgICAgICAgICAg ICB8fCBtLmdldCgnb25seV9zY2hlbWEnKQorICAgICAgICAgICAgICAgICAg ICAgICk7CisgICAgICAgICAgfQorICAgICAgICB9LHsKKyAgICAgICAgICBp ZDogJ29ubHlfc2NoZW1hJywgbGFiZWw6ICd7eyBfKCdPbmx5IHNjaGVtYScp IH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0 Y2hDb250cm9sLCBncm91cDogJ3t7IF8oJ1R5cGUgb2Ygb2JqZWN0cycpIH19 JywKKyAgICAgICAgICBkZXBzOiBbJ3ByZV9kYXRhJywgJ2RhdGEnLCAncG9z dF9kYXRhJywgJ29ubHlfZGF0YSddLCBkaXNhYmxlZDogZnVuY3Rpb24obSkg eworICAgICAgICAgICAgcmV0dXJuICh0aGlzLm5vZGUudHlwZSAhPT0gJ2Rh dGFiYXNlJyAmJiB0aGlzLm5vZGUudHlwZSAhPT0gJ3NjaGVtYScpCisgICAg ICAgICAgICAgICAgICAgfHwgKCBtLmdldCgncHJlX2RhdGEnKQorICAgICAg ICAgICAgICAgICAgICAgICAgfHwgbS5nZXQoJ2RhdGEnKQorICAgICAgICAg ICAgICAgICAgICAgICAgfHwgbS5nZXQoJ3Bvc3RfZGF0YScpCisgICAgICAg ICAgICAgICAgICAgICAgICB8fCBtLmdldCgnb25seV9kYXRhJykKKyAgICAg ICAgICAgICAgICAgICAgICApOworICAgICAgICAgIH0KKyAgICAgICAgfV0K KyAgICAgIH0seworICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJvbDog J2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdEbyBub3Qgc2F2ZScpIH19JywK KyAgICAgICAgZ3JvdXA6ICd7eyBfKCdSZXN0b3JlIG9wdGlvbnMnKSB9fScs CisgICAgICAgIHNjaGVtYTpbeworICAgICAgICAgIGlkOiAnZG5zX293bmVy JywgbGFiZWw6ICd7eyBfKCdPd25lcicpIH19JywKKyAgICAgICAgICBjb250 cm9sOiBCYWNrZm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDog ZmFsc2UsIGdyb3VwOiAne3sgXygnRG8gbm90IHNhdmUnKSB9fScKKyAgICAg ICAgfSx7CisgICAgICAgICAgaWQ6ICdkbnNfcHJpdmlsZWdlJywgbGFiZWw6 ICd7eyBfKCdQcml2aWxlZ2UnKSB9fScsCisgICAgICAgICAgY29udHJvbDog QmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNl LCBncm91cDogJ3t7IF8oJ0RvIG5vdCBzYXZlJykgfX0nCisgICAgICAgIH0s eworICAgICAgICAgIGlkOiAnZG5zX3RhYmxlc3BhY2UnLCBsYWJlbDogJ3t7 IF8oJ1RhYmxlc3BhY2UnKSB9fScsCisgICAgICAgICAgY29udHJvbDogQmFj a2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6IGZhbHNlLCBn cm91cDogJ3t7IF8oJ0RvIG5vdCBzYXZlJykgfX0nCisgICAgICAgIH1dCisg ICAgICB9LHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRyb2w6ICdm aWVsZHNldCcsIGxhYmVsOiAne3sgXygnUXVlcmllcycpIH19JywKKyAgICAg ICAgZ3JvdXA6ICd7eyBfKCdSZXN0b3JlIG9wdGlvbnMnKSB9fScsCisgICAg ICAgIHNjaGVtYTpbeworICAgICAgICAgIGlkOiAnaW5jbHVkZV9jcmVhdGVf ZGF0YWJhc2UnLCBsYWJlbDogJ3t7IF8oJ0luY2x1ZGUgQ1JFQVRFIERBVEFC QVNFIHN0YXRlbWVudCcpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNr Zm9ybS5DdXN0b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsIGdy b3VwOiAne3sgXygnUXVlcmllcycpIH19JworICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2NsZWFuJywgbGFiZWw6ICd7eyBfKCdDbGVhbiBiZWZvcmUg cmVzdG9yZScpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5D dXN0b21Td2l0Y2hDb250cm9sLCBncm91cDogJ3t7IF8oJ1F1ZXJpZXMnKSB9 fScsCisgICAgICAgICAgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsKKyAgICAg ICAgICAgIHJldHVybiB0aGlzLm5vZGUudHlwZSA9PT0gJ2Z1bmN0aW9uJyB8 fAorICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnR5cGUgPT09ICd0 cmlnZ2VyX2Z1bmN0aW9uJzsKKyAgICAgICAgICB9CisgICAgICAgIH0sewor ICAgICAgICAgIGlkOiAnc2luZ2xlX3RyYW5zYWN0aW9uJywgbGFiZWw6ICd7 eyBfKCdTaW5nbGUgdHJhbnNhY3Rpb24nKSB9fScsCisgICAgICAgICAgY29u dHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZGlzYWJsZWQ6 IGZhbHNlLCBncm91cDogJ3t7IF8oJ1F1ZXJpZXMnKSB9fScKKyAgICAgICAg fV0KKyAgICAgIH0seworICAgICAgICB0eXBlOiAnbmVzdGVkJywgY29udHJv bDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdEaXNhYmxlJykgfX0nLAor ICAgICAgICBncm91cDogJ3t7IF8oJ1Jlc3RvcmUgb3B0aW9ucycpIH19JywK KyAgICAgICAgc2NoZW1hOlt7CisgICAgICAgICAgaWQ6ICdkaXNhYmxlX3Ry aWdnZXInLCBsYWJlbDogJ3t7IF8oJ1RyaWdnZXInKSB9fScsCisgICAgICAg ICAgY29udHJvbDogQmFja2Zvcm0uQ3VzdG9tU3dpdGNoQ29udHJvbCwgZ3Jv dXA6ICd7eyBfKCdEaXNhYmxlJykgfX0nCisgICAgICAgIH0seworICAgICAg ICAgIGlkOiAnbm9fZGF0YV9mYWlsX3RhYmxlJywgbGFiZWw6ICd7eyBfKCdO byBkYXRhIGZvciBGYWlsZWQgVGFibGVzJykgfX0nLAorICAgICAgICAgIGNv bnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2FibGVk OiBmYWxzZSwgZ3JvdXA6ICd7eyBfKCdEaXNhYmxlJykgfX0nCisgICAgICAg IH1dCisgICAgICB9LHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNvbnRy b2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnTWlzY2VsbGFuZW91cyAv IEJlaGF2aW9yJykgfX0nLAorICAgICAgICBncm91cDogJ3t7IF8oJ1Jlc3Rv cmUgb3B0aW9ucycpIH19JywKKyAgICAgICAgc2NoZW1hOlt7CisgICAgICAg ICAgaWQ6ICd2ZXJib3NlJywgbGFiZWw6ICd7eyBfKCdWZXJib3NlIG1lc3Nh Z2VzJykgfX0nLAorICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLkN1c3Rv bVN3aXRjaENvbnRyb2wsIGRpc2FibGVkOiBmYWxzZSwKKyAgICAgICAgICBn cm91cDogJ3t7IF8oJ01pc2NlbGxhbmVvdXMgLyBCZWhhdmlvcicpIH19Jwor ICAgICAgICB9LHsKKyAgICAgICAgICBpZDogJ3VzZV9zZXRfc2Vzc2lvbl9h dXRoJywgbGFiZWw6ICd7eyBfKCdVc2UgU0VUIFNFU1NJT04gQVVUSE9SSVpB VElPTicpIH19JywKKyAgICAgICAgICBjb250cm9sOiBCYWNrZm9ybS5DdXN0 b21Td2l0Y2hDb250cm9sLCBkaXNhYmxlZDogZmFsc2UsCisgICAgICAgICAg Z3JvdXA6ICd7eyBfKCdNaXNjZWxsYW5lb3VzIC8gQmVoYXZpb3InKSB9fScK KyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdleGl0X29uX2Vycm9yJywg bGFiZWw6ICd7eyBfKCdFeGl0IG9uIGVycm9yJykgfX0nLAorICAgICAgICAg IGNvbnRyb2w6IEJhY2tmb3JtLkN1c3RvbVN3aXRjaENvbnRyb2wsIGRpc2Fi bGVkOiBmYWxzZSwKKyAgICAgICAgICBncm91cDogJ3t7IF8oJ01pc2NlbGxh bmVvdXMgLyBCZWhhdmlvcicpIH19JworICAgICAgICB9XQorICAgICAgfSx7 CisgICAgICAgICAgaWQ6ICd0b2RvJywgbGFiZWw6ICd7eyBfKCdUT0RPJykg fX0nLCB0ZXh0OiAne3sgXygnQWRkIE9iamVjdHMgc2VsZWN0aW9uIHRyZWUg aGVyZScpIH19JywKKyAgICAgICAgICB0eXBlOiAnbm90ZScsIGdyb3VwOiAn e3sgXygnT2JqZWN0cycpIH19JworICAgICB9XSwKKyAgICAgIHZhbGlkYXRl OiBmdW5jdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9 CisgICAgfSk7CisKKyAgICAvLyBDcmVhdGUgYW4gT2JqZWN0IFJlc3RvcmUg b2YgcGdCcm93c2VyIGNsYXNzCisgICAgcGdCcm93c2VyLlJlc3RvcmUgID0g eworICAgICAgaW5pdDogZnVuY3Rpb24oKSB7CisgICAgICAgIGlmICh0aGlz LmluaXRpYWxpemVkKQorICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0 aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKKworICAgICAgICAvLyBEZWZpbmUg bGlzdCBvZiBub2RlcyBvbiB3aGljaCByZXN0b3JlIGNvbnRleHQgbWVudSBv cHRpb24gYXBwZWFycworICAgICAgICB2YXIgcmVzdG9yZV9zdXBwb3J0ZWRf bm9kZXMgPSBbCisgICAgICAgICAgICAgICdkYXRhYmFzZScsICdzY2hlbWEn LAorICAgICAgICAgICAgICAndGFibGUnLCAnZnVuY3Rpb24nLAorICAgICAg ICAgICAgICAndHJpZ2dlcicsICdpbmRleCcKKyAgICAgICAgICAgIF07CisK KyAgICAgICAgLyoqCisgICAgICAgICAgRW5hYmxlL2Rpc2FibGUgcmVzdG9y ZSBtZW51IGluIHRvb2xzIGJhc2VkCisgICAgICAgICAgb24gbm9kZSBzZWxl Y3RlZAorICAgICAgICAgIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudCBp biBzdXBwb3J0ZWRfbm9kZXMsCisgICAgICAgICAgbWVudSB3aWxsIGJlIGVu YWJsZWQgb3RoZXJ3aXNlIGRpc2FibGVkLgorICAgICAgICAgIEFsc28sIGhp ZGUgaXQgZm9yIHN5c3RlbSB2aWV3IGluIGNhdGFsb2dzCisgICAgICAgICov CisgICAgICAgIG1lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKGl0ZW1EYXRhLCBp dGVtLCBkYXRhKSB7CisgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIudHJl ZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgICB2YXIgcGFy ZW50X2l0ZW0gPSB0Lmhhc1BhcmVudChpKSA/IHQucGFyZW50KGkpOiBudWxs LAorICAgICAgICAgICAgICBwYXJlbnRfZGF0YSA9IHBhcmVudF9pdGVtID8g dC5pdGVtRGF0YShwYXJlbnRfaXRlbSkgOiBudWxsOworICAgICAgICAgICAg aWYoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlz TnVsbChwYXJlbnRfZGF0YSkpCisgICAgICAgICAgICAgIHJldHVybiAoCisg ICAgICAgICAgICAgICAgKF8uaW5kZXhPZihyZXN0b3JlX3N1cHBvcnRlZF9u b2RlcywgZC5fdHlwZSkgIT09IC0xICYmCisgICAgICAgICAgICAgICAgaXNf cGFyZW50X2NhdGFsb2coaXRlbURhdGEsIGl0ZW0sIGRhdGEpICkgPyB0cnVl OiBmYWxzZQorICAgICAgICAgICAgICApOworICAgICAgICAgICAgZWxzZQor ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CisKKyAg ICAgICAgaXNfcGFyZW50X2NhdGFsb2cgPSBmdW5jdGlvbihpdGVtRGF0YSwg aXRlbSwgZGF0YSkgeworICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsIGkgPSBpdGVtLCBkID0gaXRlbURhdGE7CisgICAgICAgICAgLy8gVG8g aXRlcmF0ZSBvdmVyIHRyZWUgdG8gY2hlY2sgcGFyZW50IG5vZGUKKyAgICAg ICAgICB3aGlsZSAoaSkgeworICAgICAgICAgICAgLy8gSWYgaXQgaXMgc2No ZW1hIHRoZW4gYWxsb3cgdXNlciB0byByZXN0b3JlCisgICAgICAgICAgICBp ZiAoXy5pbmRleE9mKFsnY2F0YWxvZyddLCBkLl90eXBlKSA+IC0xKQorICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpID0gdC5o YXNQYXJlbnQoaSkgPyB0LnBhcmVudChpKSA6IG51bGw7CisgICAgICAgICAg ICBkID0gaSA/IHQuaXRlbURhdGEoaSkgOiBudWxsOworICAgICAgICAgIH0K KyAgICAgICAgICAvLyBieSBkZWZhdWx0IHdlIGRvIG5vdCB3YW50IHRvIGFs bG93IGNyZWF0ZSBtZW51CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICAgIH0KKworICAgICAgICAvLyBEZWZpbmUgdGhlIG5vZGVzIG9uIHdoaWNo IHRoZSBtZW51cyB0byBiZSBhcHBlYXIKKyAgICAgICAgdmFyIG1lbnVzID0g W3sKKyAgICAgICAgICBuYW1lOiAncmVzdG9yZV9vYmplY3QnLCBtb2R1bGU6 IHRoaXMsCisgICAgICAgICAgYXBwbGllczogWyd0b29scyddLCBjYWxsYmFj azogJ3Jlc3RvcmVfb2JqZWN0cycsCisgICAgICAgICAgcHJpb3JpdHk6IDks IGxhYmVsOiAne3tfKCJSZXN0b3JlLi4uIikgfX0nLAorICAgICAgICAgIGlj b246ICdmYSBmYS11cGxvYWQnLCBlbmFibGU6IG1lbnVfZW5hYmxlZAorICAg ICAgICB9XTsKKworICAgICAgICBmb3IgKHZhciBpZHggPSAwOyBpZHggPCBy ZXN0b3JlX3N1cHBvcnRlZF9ub2Rlcy5sZW5ndGg7IGlkeCsrKSB7CisgICAg ICAgICAgbWVudXMucHVzaCh7CisgICAgICAgICAgICBuYW1lOiAncmVzdG9y ZV8nICsgcmVzdG9yZV9zdXBwb3J0ZWRfbm9kZXNbaWR4XSwKKyAgICAgICAg ICAgIG5vZGU6IHJlc3RvcmVfc3VwcG9ydGVkX25vZGVzW2lkeF0sIG1vZHVs ZTogdGhpcywKKyAgICAgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCddLCBj YWxsYmFjazogJ3Jlc3RvcmVfb2JqZWN0cycsCisgICAgICAgICAgICBwcmlv cml0eTogOSwgbGFiZWw6ICd7e18oIlJlc3RvcmUuLi4iKSB9fScsCisgICAg ICAgICAgICBpY29uOiAnZmEgZmEtdXBsb2FkJywgZW5hYmxlOiBtZW51X2Vu YWJsZWQKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg cGdBZG1pbi5Ccm93c2VyLmFkZF9tZW51cyhtZW51cyk7CisgICAgICAgIHJl dHVybiB0aGlzOworICAgICAgfSwKKyAgICAgIC8vIENhbGxiYWNrIHRvIGRy YXcgQmFja3VwIERpYWxvZyBmb3Igb2JqZWN0cworICAgICAgcmVzdG9yZV9v YmplY3RzOiBmdW5jdGlvbihhY3Rpb24sIHRyZWVJdGVtKSB7CisgICAgICAg IHZhciB0aXRsZSA9ICd7eyBfKCdSZXN0b3JlJykgfX0nLAorICAgICAgICAg ICAgdHJlZSA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgICAgaXRlbSA9 IHRyZWVJdGVtIHx8IHRyZWUuc2VsZWN0ZWQoKSwKKyAgICAgICAgICAgIGRh dGEgPSBpdGVtICYmIGl0ZW0ubGVuZ3RoID09IDEgJiYgdHJlZS5pdGVtRGF0 YShpdGVtKSwKKyAgICAgICAgICAgIG5vZGUgPSBkYXRhICYmIGRhdGEuX3R5 cGUgJiYgcGdCcm93c2VyLk5vZGVzW2RhdGEuX3R5cGVdOworCisgICAgICAg IGlmICghbm9kZSkKKyAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYo IWFsZXJ0aWZ5LnJlc3RvcmVfb2JqZWN0cykgeworICAgICAgICAgIC8vIENy ZWF0ZSBEaWFsb2cgdGl0bGUgb24gdGhlIGZseSB3aXRoIG5vZGUgZGV0YWls cworICAgICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygncmVzdG9yZV9vYmplY3Rz JyAsZnVuY3Rpb24gZmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHJldHVybiB7 CisgICAgICAgICAgICAgICBtYWluOiBmdW5jdGlvbih0aXRsZSkgeworICAg ICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKKyAgICAg ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICBzZXR1cDpmdW5jdGlvbigp IHsKKyAgICAgICAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgICAg ICAgYnV0dG9uczogW3sKKyAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3t7 IF8oJ1Jlc3RvcmUnKSB9fScsIGtleTogMjcsIGNsYXNzTmFtZTogJ2J0biBi dG4tcHJpbWFyeScKKyAgICAgICAgICAgICAgICAgICAgfSx7CisgICAgICAg ICAgICAgICAgICAgIHRleHQ6ICd7eyBfKCdDYW5jZWwnKSB9fScsIGtleTog MjcsIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyJworICAgICAgICAgICAg ICAgICAgfV0sCisgICAgICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBm b3IgZGlhbG9nCisgICAgICAgICAgICAgICAgICBvcHRpb25zOiB7CisgICAg ICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZSwKKyAgICAgICAgICAgICAg ICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29u dHJvbC4KKyAgICAgICAgICAgICAgICAgICAgcGFkZGluZyA6ICExLAorICAg ICAgICAgICAgICAgICAgICBvdmVyZmxvdzogITEsCisgICAgICAgICAgICAg ICAgICAgIG1vZGVsOiAwLAorICAgICAgICAgICAgICAgICAgICByZXNpemFi bGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOiB0 cnVlLAorICAgICAgICAgICAgICAgICAgICBwaW5uYWJsZTogZmFsc2UKKyAg ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9OworICAgICAg ICAgICAgICB9LAorICAgICAgICAgICAgICBob29rczogeworICAgICAgICAg ICAgICAgIC8vIHRyaWdnZXJlZCB3aGVuIHRoZSBkaWFsb2cgaXMgY2xvc2Vk CisgICAgICAgICAgICAgICAgb25jbG9zZTogZnVuY3Rpb24oKSB7CisgICAg ICAgICAgICAgICAgICBpZiAodGhpcy52aWV3KSB7CisgICAgICAgICAgICAg ICAgICAgIHRoaXMudmlldy5yZW1vdmUoe2RhdGE6IHRydWUsIGludGVybmFs OiB0cnVlLCBzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAg ICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg IHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgICAgICAgICAvLyBEaXNhYmxl IEJhY2t1cCBidXR0b24gdW50aWwgdXNlciBwcm92aWRlcyBGaWxlbmFtZQor ICAgICAgICAgICAgICAgIHRoaXMuX19pbnRlcm5hbC5idXR0b25zWzBdLmVs ZW1lbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHZhciAk Y29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0ncmVzdG9yZV9kaWFsb2cnPjwv ZGl2PiIpOworICAgICAgICAgICAgICAgIHZhciB0ID0gcGdCcm93c2VyLnRy ZWUsCisgICAgICAgICAgICAgICAgICBpID0gdC5zZWxlY3RlZCgpLAorICAg ICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0gMSA/IHQuaXRl bURhdGEoaSkgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAgICAgICBub2Rl ID0gZCAmJiBwZ0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAg ICAgICAgICBpZiAoIWQpCisgICAgICAgICAgICAgICAgICByZXR1cm47CisK KyAgICAgICAgICAgICAgICB2YXIgdHJlZUluZm8gPSBub2RlLmdldFRyZWVO b2RlSGllcmFyY2h5LmFwcGx5KG5vZGUsIFtpXSk7CisKKyAgICAgICAgICAg ICAgICB2YXIgbmV3TW9kZWwgPSBuZXcgUmVzdG9yZU9iamVjdE1vZGVsKAor ICAgICAgICAgICAgICAgICAge25vZGVfZGF0YTogbm9kZX0sIHtub2RlX2lu Zm86IHRyZWVJbmZvfQorICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAg ICAgICAgICAgIGZpZWxkcyA9IEJhY2tmb3JtLmdlbmVyYXRlVmlld1NjaGVt YSgKKyAgICAgICAgICAgICAgICAgICAgdHJlZUluZm8sIG5ld01vZGVsLCAn Y3JlYXRlJywgbm9kZSwgdHJlZUluZm8uc2VydmVyLCB0cnVlCisgICAgICAg ICAgICAgICAgICApOworCisgICAgICAgICAgICAgICAgdmFyIHZpZXcgPSB0 aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKKyAgICAgICAgICAg ICAgICAgIGVsOiAkY29udGFpbmVyLCBtb2RlbDogbmV3TW9kZWwsIHNjaGVt YTogZmllbGRzCisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg ICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRD bGFzcygKKyAgICAgICAgICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFs b2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKKyAgICAgICAgICAgICAg ICApOworCisgICAgICAgICAgICAgICAgdmlldy5yZW5kZXIoKTsKKworICAg ICAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVudC5hcHBlbmRDaGls ZCgkY29udGFpbmVyLmdldCgwKSk7CisKKyAgICAgICAgICAgICAgICAgLy8g TGlzdGVuIHRvIG1vZGVsICYgaWYgZmlsZW5hbWUgaXMgcHJvdmlkZWQgdGhl biBlbmFibGUgQmFja3VwIGJ1dHRvbgorICAgICAgICAgICAgICAgIHRoaXMu dmlldy5tb2RlbC5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnZmls ZScpKSAmJiB0aGlzLmdldCgnZmlsZScpICE9PSAnJykgeworICAgICAgICAg ICAgICAgICAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOworICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuX19pbnRlcm5hbC5idXR0b25zWzBdLmVs ZW1lbnQuZGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJu YWwuYnV0dG9uc1swXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAg ICAgICAgICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdmaWxlJywg J3t7IF8oJ1BsZWFzZSBwcm92aWRlIGZpbGVuYW1lJykgfX0nKQorICAgICAg ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAg ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZnVuY3Rp b25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5 IGRpYWxvZ3MKKyAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUp IHsKKyAgICAgICAgICAgICAgICBpZiAoZS5idXR0b24udGV4dCA9PT0gIlJl c3RvcmUiKSB7CisgICAgICAgICAgICAgICAgICAvLyBGZXRjaCBjdXJyZW50 IHNlcnZlciBpZAorICAgICAgICAgICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dz ZXIudHJlZSwKKyAgICAgICAgICAgICAgICAgICAgaSA9IHQuc2VsZWN0ZWQo KSwKKyAgICAgICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGggPT0g MSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCisgICAgICAgICAgICAg ICAgICAgIG5vZGUgPSBkICYmIHBnQnJvd3Nlci5Ob2Rlc1tkLl90eXBlXTsK KworICAgICAgICAgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAgICAg ICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICAgIHZhciB0cmVlSW5m byA9IG5vZGUuZ2V0VHJlZU5vZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ld KTsKKyAgICAgICAgICAgICAgICAgIC8vIFNldCBjdXJyZW50IG5vZGUgaW5m byBpbnRvIG1vZGVsCisgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcubW9k ZWwuc2V0KCdkYXRhYmFzZScsIHRyZWVJbmZvLmRhdGFiYXNlLmxhYmVsKTsK KyAgICAgICAgICAgICAgICAgIGlmICh0cmVlSW5mby5zY2hlbWEpCisgICAg ICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3NjaGVtYScs IHRyZWVJbmZvLnNjaGVtYS5sYWJlbCk7CisgICAgICAgICAgICAgICAgICBp ZiAodHJlZUluZm8udGFibGUpCisgICAgICAgICAgICAgICAgICAgIHRoaXMu dmlldy5tb2RlbC5zZXQoJ3RhYmxlJywgdHJlZUluZm8udGFibGUubGFiZWwp OworICAgICAgICAgICAgICAgICAgaWYgKHRyZWVJbmZvLmZ1bmN0aW9uKQor ICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwuc2V0KCdmdW5j dGlvbicsIHRyZWVJbmZvLmZ1bmN0aW9uLmxhYmVsKTsKKyAgICAgICAgICAg ICAgICAgIGlmICh0cmVlSW5mby5pbmRleCkKKyAgICAgICAgICAgICAgICAg ICAgdGhpcy52aWV3Lm1vZGVsLnNldCgnaW5kZXgnLCB0cmVlSW5mby5pbmRl eC5sYWJlbCk7CisgICAgICAgICAgICAgICAgICBpZiAodHJlZUluZm8udHJp Z2dlcikKKyAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNl dCgndHJpZ2dlcicsIHRyZWVJbmZvLnRyaWdnZXIubGFiZWwpOworICAgICAg ICAgICAgICAgICAgaWYgKHRyZWVJbmZvLnRyaWdnZXJfZnVuY3Rpb24pCisg ICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5tb2RlbC5zZXQoJ3RyaWdn ZXJfZnVuY3Rpb24nLCB0cmVlSW5mby50cmlnZ2VyX2Z1bmN0aW9uLmxhYmVs KTsKKworICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAg ICAgICAgICAgICAgICAgICBiYXNlVXJsID0gInt7IHVybF9mb3IoJ3Jlc3Rv cmUuaW5kZXgnKSB9fSIgKworICAgICAgICAgICAgICAgICAgICAgICJjcmVh dGVfam9iLyIgKyB0cmVlSW5mby5zZXJ2ZXIuX2lkLAorICAgICAgICAgICAg ICAgICAgICAgIGFyZ3MgPSAgdGhpcy52aWV3Lm1vZGVsLnRvSlNPTigpOwor CisgICAgICAgICAgICAgICAgICAkLmFqYXgoeworICAgICAgICAgICAgICAg ICAgICB1cmw6IGJhc2VVcmwsCisgICAgICAgICAgICAgICAgICAgIG1ldGhv ZDogJ1BPU1QnLAorICAgICAgICAgICAgICAgICAgICBkYXRhOnsgJ2RhdGEn OiBKU09OLnN0cmluZ2lmeShhcmdzKSB9LAorICAgICAgICAgICAgICAgICAg ICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICAg ICAgICB2YXIgbXNnID0gYWxlcnRpZnkubWVzc2FnZSgne3sgXygnUmVzdG9y ZSBqb2IgY3JlYXRlZCAoQ2xpY2sgZm9yIG1vcmUgZGV0YWlscyknKSB9fScs IDEwKTsKKyAgICAgICAgICAgICAgICAgICAgICBtc2cuY2FsbGJhY2sgPSBm dW5jdGlvbiAoaXNDbGlja2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAg ICBpZihpc0NsaWNrZWQpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnNvbGUubG9nKCdTaG93IGRldGFpbGVkIGxvZ3MgPj4nICsgcmVzKTsKKyAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0 YXR1cywgZXJyb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICB0cnkgewor ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9ICQucGFyc2VKU09O KHhoci5yZXNwb25zZVRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAg YWxlcnRpZnkuYWxlcnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICd7 eyBfKCdCYWNrdXAgZmFpbGVkLi4uJykgfX0nLAorICAgICAgICAgICAgICAg ICAgICAgICAgICBlcnIuZXJyb3Jtc2cKKyAgICAgICAgICAgICAgICAgICAg ICAgICk7CisgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge30K KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfSk7 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAg ICB9OworICAgICAgfSk7CisgICAgICB9CisgICAgICBhbGVydGlmeS5yZXN0 b3JlX29iamVjdHModGl0bGUpLnJlc2l6ZVRvKCc2NSUnLCc2MCUnKTsKKyAg ICAgIH0KKyAgICB9OworICAgIHJldHVybiBwZ0Jyb3dzZXIuUmVzdG9yZTsK KyAgfSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo= --001a11391316793ce905322c6aee 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 --001a11391316793ce905322c6aee--