Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1b2CoW-00041M-Qa for pgadmin-hackers@arkaria.postgresql.org; Mon, 16 May 2016 07:19:41 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1b2CoW-0003zb-4K for pgadmin-hackers@arkaria.postgresql.org; Mon, 16 May 2016 07:19:40 +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 1b2CoH-0003lV-Hn for pgadmin-hackers@postgresql.org; Mon, 16 May 2016 07:19:26 +0000 Received: from mail-io0-x22a.google.com ([2607:f8b0:4001:c06::22a]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1b2CoA-0007mV-8x for pgadmin-hackers@postgresql.org; Mon, 16 May 2016 07:19:24 +0000 Received: by mail-io0-x22a.google.com with SMTP id 190so199952299iow.1 for ; Mon, 16 May 2016 00:19:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=sioF2O7UwGaUixbIcqUKBsP7SzwHqoIaazBQ5PtaXc8=; b=D5FyDyPzZQ0puGSkOmmlI+9cy8lyp1WhowsFWWgHECj26JFgaIZClS5XlsBaIKXi/k cJ3R8Cn3w+EjejiQidHQg/QgpjQXio7LTVSiSyIpnLFPpvztVVIgz+FQTwfjYqkYXEd6 DR2+C6MTXCUlzYyaKbpuCrBJgbkrbfg6ronmlYo1Q3vmIVH+CBLWhu9fTa32Rguo5MEq lxEdXTaW+6BEqr2DUBNnSINRHCiIXxxOGnvA9RbtIEkdYDrRZN0y3mY0kAw6W3dr9kRn t0SrGXpuIeIv+6oUHhTVVIJB5EKMCdONXUQFjQFG2sh9KPzOAZ0h0xwCjwZqJjMSSIq6 Y9jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=sioF2O7UwGaUixbIcqUKBsP7SzwHqoIaazBQ5PtaXc8=; b=CwEcvNmo+6WbwAe/TwiUlyKtcYx3Ob6KRlyRHScCwWyVkJUOBCELt5+Wz3xIhvaKcx HP6ry8hkYet830Q/zttrhmbfJlPyI0+yMsZfnBkwT8qZKVXH4T3NMjqGKDVQOo3nu3DF LvkSZ7XUmjsToiIC/YSetSWYzjq4Gw5X4dpr0DnB1Kbg7OgPknpQ0P7BJieqI04j1/jo F4qnLj/HhqogbC9y0s7BlZtGQ4fF41hmQWCt8O3qz5XiMweBPWNbL6Uzz7WrAeFfM91I Ual5Z6yhMyddRbLdVlN2B/IV04JOgxg/3n9sKEzQQ87rM3IDaVUnb8jQwhNj+ygOdi/1 NBMw== X-Gm-Message-State: AOPr4FVB3m7CHZtukWRT7CWKJi4zR0tLoijhYzJn9Rtap2OHSEQ5lxo9tJXkHc3nxIZnLnpCh7yBIM3PeLfN7vuS X-Received: by 10.36.37.73 with SMTP id g70mr7516228itg.51.1463383156953; Mon, 16 May 2016 00:19:16 -0700 (PDT) MIME-Version: 1.0 Received: by 10.107.31.209 with HTTP; Mon, 16 May 2016 00:18:57 -0700 (PDT) In-Reply-To: References: From: Ashesh Vashi Date: Mon, 16 May 2016 12:48:57 +0530 Message-ID: Subject: Re: [pgAdmin4]: Initial patch for Import table To: Neel Patel Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1145a8503dd6480532f071d9 X-Pg-Spam-Score: -1.2 (-) 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 --001a1145a8503dd6480532f071d9 Content-Type: multipart/alternative; boundary=001a1145a8503dd6420532f071d7 --001a1145a8503dd6420532f071d7 Content-Type: text/plain; charset=UTF-8 Hi Neel, As discussed, I am sending you the updated path for based on your new patch (sent personally, which included the background process integration). Also, the COPY Statement expects the file to be present on the server OS, hence - we should be using the '\copy' command of psql to do the job. I have modified the patch accordingly, but - I did not get a chance to test it properly, also - with some cosmetic changes. Can you please review, and test it? -- Thanks & Regards, Ashesh Vashi EnterpriseDB INDIA: Enterprise PostgreSQL Company *http://www.linkedin.com/in/asheshvashi* On Thu, May 5, 2016 at 4:43 PM, Neel Patel wrote: > Hi, > > Please find attached patch file which contains the table Import > functionality. > Attached patch file is depend on the following patch which is not > committed yet. > > - File Manager patch > - Table node patch > > Do review it and let us know for comments. > > Thanks, > Neel Patel > > > -- > Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgadmin-hackers > > --001a1145a8503dd6420532f071d7 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Neel,

As discussed, I am sending you= the updated path for based on your new patch (sent personally, which inclu= ded the background process integration).
Also, the COPY Statement= expects the file to be present on the server OS, hence - we should be usin= g the '\copy' command of psql to do the job.
I have modif= ied the patch accordingly, but - I did not get a chance to test it properly= , also - with some cosmetic changes.

Can you pleas= e review, and test it?


--

Thanks & R= egards,

Ashesh Vashi
EnterpriseDB INDIA: <= /span>Enterprise = PostgreSQL Company

<= br>

<= a href=3D"http://www.linkedin.com/in/asheshvashi" target=3D"_blank">http= ://www.linkedin.com/in/asheshvashi


On Thu, May 5, 2016 at 4:43 PM, Neel Patel <= span dir=3D"ltr"><neel.patel@enterprisedb.com> wrote:
Hi,

Please find at= tached patch file which contains the table Import functionality.
= Attached patch file is depend on the following patch which is not committed= yet.
  • File Manager patch
  • Table node patch
  • Do review it and let us know for comments.

Thanks,
Neel Patel


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


--001a1145a8503dd6420532f071d7-- --001a1145a8503dd6480532f071d9 Content-Type: application/octet-stream; name="import_latest_16May2016.patch" Content-Disposition: attachment; filename="import_latest_16May2016.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_io9oix2h1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC9fX2luaXRf Xy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC9fX2luaXRfXy5weQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDcyNzRiCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvaW1wb3J0L19f aW5pdF9fLnB5CkBAIC0wLDAgKzEsMjc3IEBACisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTYsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisjCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiJBIGJsdWVwcmludCBtb2R1 bGUgaW1wbGVtZW50aW5nIHRoZSBpbXBvcnQgZnVuY3Rpb25hbGl0eSIiIgor CitpbXBvcnQganNvbgoraW1wb3J0IG9zCisKK2Zyb20gZmxhc2sgaW1wb3J0 IHVybF9mb3IsIFJlc3BvbnNlLCByZW5kZXJfdGVtcGxhdGUsIHJlcXVlc3Qs IGN1cnJlbnRfYXBwCitmcm9tIGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0 dGV4dCBhcyBfCitmcm9tIGZsYXNrLmV4dC5zZWN1cml0eSBpbXBvcnQgbG9n aW5fcmVxdWlyZWQsIGN1cnJlbnRfdXNlcgorCitmcm9tIGNvbmZpZyBpbXBv cnQgUEdfREVGQVVMVF9EUklWRVIKK2Zyb20gcGdhZG1pbi51dGlscyBpbXBv cnQgUGdBZG1pbk1vZHVsZSwgZ2V0X3N0b3JhZ2VfZGlyZWN0b3J5LCBodG1s Citmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jl c3BvbnNlLCBiYWRfcmVxdWVzdAorZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9y dCBTZXJ2ZXIKK2Zyb20gcGdhZG1pbi5taXNjLmJncHJvY2Vzcy5wcm9jZXNz ZXMgaW1wb3J0IEJhdGNoUHJvY2VzcywgSVByb2Nlc3NEZXNjCisKK01PRFVM RV9OQU1FID0gJ2ltcG9ydCcKKworCitjbGFzcyBJbXBvcnRNb2R1bGUoUGdB ZG1pbk1vZHVsZSk6CisgICAgIiIiCisgICAgY2xhc3MgSW1wb3J0TW9kdWxl KFBnQWRtaW5Nb2R1bGUpCisKKyAgICAgICAgQSBtb2R1bGUgY2xhc3MgZm9y IGltcG9ydCB3aGljaCBpcyBkZXJpdmVkIGZyb20gUGdBZG1pbk1vZHVsZS4K KworICAgIE1ldGhvZHM6CisgICAgLS0tLS0tLQorICAgICogZ2V0X293bl9q YXZhc2NyaXB0cyhzZWxmKQorICAgICAgLSBNZXRob2QgaXMgdXNlZCB0byBs b2FkIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0IGZpbGVzIGZvciBpbXBvcnQg bW9kdWxlCisgICAgIiIiCisKKyAgICBMQUJFTCA9IF8oJ0ltcG9ydCcpCisK KyAgICBkZWYgZ2V0X293bl9qYXZhc2NyaXB0cyhzZWxmKToKKyAgICAgICAg c2NyaXB0cyA9IGxpc3QoKQorICAgICAgICBmb3IgbmFtZSwgc2NyaXB0IGlu IFsKKyAgICAgICAgICAgICAgICBbJ3BnYWRtaW4udG9vbHMuaW1wb3J0Jywg J2pzL2ltcG9ydCddCisgICAgICAgICAgICAgICAgXToKKyAgICAgICAgICAg IHNjcmlwdHMuYXBwZW5kKHsKKyAgICAgICAgICAgICAgICAnbmFtZSc6IG5h bWUsCisgICAgICAgICAgICAgICAgJ3BhdGgnOiB1cmxfZm9yKCdpbXBvcnQu aW5kZXgnKSArIHNjcmlwdCwKKyAgICAgICAgICAgICAgICAnd2hlbic6IE5v bmUKKyAgICAgICAgICAgICAgICB9KQorCisgICAgICAgIHJldHVybiBzY3Jp cHRzCisKKworYmx1ZXByaW50ID0gSW1wb3J0TW9kdWxlKE1PRFVMRV9OQU1F LCBfX25hbWVfXykKKworCitjbGFzcyBJbXBvcnRNZXNzYWdlKElQcm9jZXNz RGVzYyk6CisgICAgIiIiCisgICAgSW1wb3J0TWVzc2FnZShJUHJvY2Vzc0Rl c2MpCisKKyAgICBEZWZpbmVzIHRoZSBtZXNzYWdlIHNob3duIGZvciB0aGUg SW1wb3J0TWVzc2FnZSBvcGVyYXRpb24uCisgICAgIiIiCisgICAgZGVmIF9f aW5pdF9fKHNlbGYsIF9zaWQsIF9zY2hlbWEsIF90YmwsIF9zdG9yYWdlKToK KyAgICAgICAgc2VsZi5zaWQgPSBfc2lkCisgICAgICAgIHNlbGYuc2NoZW1h ID0gX3NjaGVtYQorICAgICAgICBzZWxmLnRhYmxlID0gX3RibAorICAgICAg ICBzZWxmLnN0b3JhZ2UgPSBfc3RvcmFnZQorCisgICAgQHByb3BlcnR5Cisg ICAgZGVmIG1lc3NhZ2Uoc2VsZik6CisgICAgICAgICMgRmV0Y2ggdGhlIHNl cnZlciBkZXRhaWxzIGxpa2UgaG9zdG5hbWUsIHBvcnQsIHJvbGVzIGV0Ywor ICAgICAgICBzID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieSgKKyAgICAgICAg ICAgIGlkPXNlbGYuc2lkLCB1c2VyX2lkPWN1cnJlbnRfdXNlci5pZAorICAg ICAgICApLmZpcnN0KCkKKworICAgICAgICByZXR1cm4gXygKKyAgICAgICAg ICAgICJJbXBvcnRpbmcgdGFibGUgLSAnezB9LnsxfScgb24gZGF0YWJhc2Ug J3syfScgYW5kIHNlcnZlciAoezN9ezR9KS4uLiIKKyAgICAgICAgKS5mb3Jt YXQoCisgICAgICAgICAgICBzZWxmLnNjaGVtYSwgc2VsZi50YWJsZSwgc2Vs Zi5kYXRhYmFzZSwgcy5ob3N0LCBzLnBvcnQKKyAgICAgICAgKQorCisgICAg ZGVmIGRldGFpbHMoc2VsZiwgY21kLCBhcmdzKToKKyAgICAgICAgIyBGZXRj aCB0aGUgc2VydmVyIGRldGFpbHMgbGlrZSBob3N0bmFtZSwgcG9ydCwgcm9s ZXMgZXRjCisgICAgICAgIHMgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAor ICAgICAgICAgICAgaWQ9c2VsZi5zaWQsIHVzZXJfaWQ9Y3VycmVudF91c2Vy LmlkCisgICAgICAgICkuZmlyc3QoKQorCisgICAgICAgIHJlcyA9ICc8ZGl2 IGNsYXNzPSJoNSI+JworICAgICAgICByZXMgKz0gaHRtbC5zYWZlX3N0cigK KyAgICAgICAgICAgIF8oCisgICAgICAgICAgICAgICAgIkltcG9ydGluZyBk YXRhIGZvciB0aGUgdGFibGUgJ3swfS57MX0nIG9uIGRhdGFiYXNlICd7Mn0n IGZvciB0aGUgc2VydmVyIC0gJ3szfSciCisgICAgICAgICAgICApLmZvcm1h dCgKKyAgICAgICAgICAgICAgICBzZWxmLnNjaGVtYSwgc2VsZi50YWJsZSwg c2VsZi5kYXRhYmFzZSwKKyAgICAgICAgICAgICAgICAiezB9ICh7MX06ezJ9 KSIuZm9ybWF0KHMubmFtZSwgcy5ob3N0LCBzLnBvcnQpCisgICAgICAgICAg ICApCisgICAgICAgICkKKworICAgICAgICByZXMgKz0gJzwvZGl2PjxkaXYg Y2xhc3M9Img1Ij4nCisgICAgICAgIHJlcyArPSBodG1sLnNhZmVfc3RyKAor ICAgICAgICAgICAgXygiUnVubmluZyBjb21tYW5kOiIpCisgICAgICAgICkK KyAgICAgICAgcmVzICs9ICc8L2I+PGJyPjxpPicKKyAgICAgICAgcmVzICs9 IGh0bWwuc2FmZV9zdHIoY21kKQorCisgICAgICAgIHJlcGxhY2VfbmV4dCA9 IEZhbHNlCisKKyAgICAgICAgZGVmIGNtZEFyZyh4KToKKyAgICAgICAgICAg IGlmIHg6CisgICAgICAgICAgICAgICAgeCA9IHgucmVwbGFjZSgnXFwnLCAn XFxcXCcpCisgICAgICAgICAgICAgICAgeCA9IHgucmVwbGFjZSgnIicsICdc XCInKQorICAgICAgICAgICAgICAgIHggPSB4LnJlcGxhY2UoJyIiJywgJ1xc IicpCisKKyAgICAgICAgICAgICAgICByZXR1cm4gJyAiJyArIGh0bWwuc2Fm ZV9zdHIoeCkgKyAnIicKKworICAgICAgICAgICAgcmV0dXJuICcnCisKKyAg ICAgICAgZm9yIGFyZyBpbiBhcmdzOgorICAgICAgICAgICAgaWYgYXJnIGFu ZCBsZW4oYXJnKSA+PSAyIGFuZCBhcmdbOjJdID09ICctLSc6CisgICAgICAg ICAgICAgICAgcmVzICs9ICcgJyArIGFyZworICAgICAgICAgICAgZWxpZiBy ZXBsYWNlX25leHQ6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5zdG9yYWdl OgorICAgICAgICAgICAgICAgICAgICBhcmcgPSBhcmcucmVwbGFjZShzZWxm LnN0b3JhZ2UsICcnKQorICAgICAgICAgICAgICAgIHJlcyArPSAnICInICsg aHRtbC5zYWZlX3N0cihhcmcpICsgJyInCisgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgIGlmIGFyZyA9PSAnLS1jb21tYW5kJzoKKyAgICAg ICAgICAgICAgICAgICAgcmVwbGFjZV9uZXh0ID0gVHJ1ZQorICAgICAgICAg ICAgICAgIHJlcyArPSBjbWRBcmcoYXJnKQorICAgICAgICByZXMgKz0gJzwv aT48L2Rpdj4nCisKKyAgICAgICAgcmV0dXJuIHJlcworCisKK0BibHVlcHJp bnQucm91dGUoIi8iKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgaW5kZXgoKToK KyAgICByZXR1cm4gYmFkX3JlcXVlc3QoZXJyb3Jtc2c9XygiVGhpcyBVUkwg Y2FuIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkhIikpCisKKworQGJsdWVwcmlu dC5yb3V0ZSgiL2pzL2ltcG9ydC5qcyIpCitAbG9naW5fcmVxdWlyZWQKK2Rl ZiBzY3JpcHQoKToKKyAgICAiIiJyZW5kZXIgdGhlIGltcG9ydCBqYXZhc2Ny aXB0IGZpbGUiIiIKKyAgICByZXR1cm4gUmVzcG9uc2UocmVzcG9uc2U9cmVu ZGVyX3RlbXBsYXRlKCJpbXBvcnQvanMvaW1wb3J0LmpzIiwgXz1fKSwKKyAg ICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMCwKKyAgICAgICAgICAgICAg ICAgICAgbWltZXR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiKQorCisK K0BibHVlcHJpbnQucm91dGUoJy9jcmVhdGVfam9iLzxpbnQ6c2lkPicsIG1l dGhvZHM9WydQT1NUJ10pCitAbG9naW5fcmVxdWlyZWQKK2RlZiBjcmVhdGVf aW1wb3J0X2pvYihzaWQpOgorICAgICIiIgorICAgIEFyZ3M6CisgICAgICAg IHNpZDogU2VydmVyIElECisKKyAgICAgICAgQ3JlYXRlcyBhIG5ldyBqb2Ig Zm9yIGltcG9ydAorCisgICAgUmV0dXJuczoKKyAgICAgICAgTm9uZQorICAg ICIiIgorICAgIGlmIHJlcXVlc3QuZm9ybToKKyAgICAgICAgIyBDb252ZXJ0 IEltbXV0YWJsZURpY3QgdG8gZGljdAorICAgICAgICBkYXRhID0gZGljdChy ZXF1ZXN0LmZvcm0pCisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGRhdGFb J2RhdGEnXVswXSkKKyAgICBlbHNlOgorICAgICAgICBkYXRhID0ganNvbi5s b2FkcyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisKKyAgICAjIEZldGNoIHRo ZSBzZXJ2ZXIgZGV0YWlscyBsaWtlIGhvc3RuYW1lLCBwb3J0LCByb2xlcyBl dGMKKyAgICBzZXJ2ZXIgPSBTZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KAorICAg ICAgICBpZD1zaWQpLmZpcnN0KCkKKworICAgIGlmIHNlcnZlciBpcyBOb25l OgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9XygiQ291 bGRuJ3QgZmluZCB0aGUgZ2l2ZW4gc2VydmVyIikKKyAgICAgICAgKQorCisg ICAgIyBUbyBmZXRjaCBNZXRhRGF0YSBmb3IgdGhlIHNlcnZlcgorICAgIGZy b20gcGdhZG1pbi51dGlscy5kcml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKKyAg ICBkcml2ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKQorICAg IG1hbmFnZXIgPSBkcml2ZXIuY29ubmVjdGlvbl9tYW5hZ2VyKHNlcnZlci5p ZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKCkKKyAgICBjb25u ZWN0ZWQgPSBjb25uLmNvbm5lY3RlZCgpCisKKyAgICBpZiBub3QgY29ubmVj dGVkOgorICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAg ICAgICAgICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgZXJyb3Jtc2c9Xygi UGxlYXNlIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBmaXJzdC4uLiIpCisgICAg ICAgICkKKworICAgIHV0aWxpdHkgPSBtYW5hZ2VyLnV0aWxpdHkoJ3NxbCcp CisKKyAgICAjIEdldCB0aGUgc3RvcmFnZSBwYXRoIGZyb20gcHJlZmVyZW5j ZQorICAgIHN0b3JhZ2VfZGlyID0gZ2V0X3N0b3JhZ2VfZGlyZWN0b3J5KCkK KyAgICBpZiAnZmlsZW5hbWUnIGluIGRhdGE6CisgICAgICAgIGlmIG9zLm5h bWUgPT0gJ250JzoKKyAgICAgICAgICAgIGRhdGFbJ2ZpbGVuYW1lJ10gPSBk YXRhWydmaWxlbmFtZSddLnJlcGxhY2UoJy8nLCAnXFwnKQorICAgICAgICAg ICAgaWYgc3RvcmFnZV9kaXI6CisgICAgICAgICAgICAgICAgc3RvcmFnZV9k aXIgPSBzdG9yYWdlX2Rpci5yZXBsYWNlKCcvJywgJ1xcJykKKyAgICAgICAg ICAgIGRhdGFbJ2ZpbGVuYW1lJ10gPSBkYXRhWydmaWxlbmFtZSddLnJlcGxh Y2UoJ1xcJywgJ1xcXFwnKQorICAgICAgICAgICAgZGF0YVsnZmlsZW5hbWUn XSA9IG9zLnBhdGguam9pbihzdG9yYWdlX2RpciwgZGF0YVsnZmlsZW5hbWUn XSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGFbJ2ZpbGVuYW1l J10gPSBvcy5wYXRoLmpvaW4oc3RvcmFnZV9kaXIsIGRhdGFbJ2ZpbGVuYW1l J10pCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNw b25zZSgKKyAgICAgICAgICAgIGRhdGE9eydzdGF0dXMnOiBGYWxzZSwgJ2lu Zm8nOiAnUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBmaWxlJ30KKyAgICAgICAg KQorCisgICAgaWdub3JlX2NvbHVtbl9saXN0ID0gJycKKyAgICBjb2x1bW5f bGlzdF9pbXBvcnQgPSAnJworCisgICAgaWYgZGF0YVsnaWdub3JlX2NvbHVt biddOgorICAgICAgICBuZXdfaWdub3JlX2NvbF9saXN0ID0ganNvbi5sb2Fk cyhkYXRhWydpZ25vcmVfY29sdW1uJ10pCisKKyAgICAgICAgIyBmb3JtYXQg dGhlIGlnbm9yZSBjb2x1bW4gbGlzdCByZXF1aXJlZCBhcyBwZXIgY29weSBj b21tYW5kCisgICAgICAgICMgcmVxdWlyZW1lbnQKKyAgICAgICAgaWYgbmV3 X2lnbm9yZV9jb2xfbGlzdDoKKyAgICAgICAgICAgIGlnbm9yZV9jb2x1bW5f bGlzdCA9ICcoJworICAgICAgICAgICAgaWdub3JlX2NvbF9sZW5ndGggPSBs ZW4obmV3X2lnbm9yZV9jb2xfbGlzdCkKKyAgICAgICAgICAgIGZvciBpIGlu IHJhbmdlKGlnbm9yZV9jb2xfbGVuZ3RoKToKKyAgICAgICAgICAgICAgICBp Z25vcmVfY29sdW1uX2xpc3QgKz0gbmV3X2lnbm9yZV9jb2xfbGlzdFtpXQor ICAgICAgICAgICAgICAgIGlmIGkgIT0gKGlnbm9yZV9jb2xfbGVuZ3RoIC0g MSk6CisgICAgICAgICAgICAgICAgICAgIGlnbm9yZV9jb2x1bW5fbGlzdCAr PSAnLCcKKyAgICAgICAgICAgIGlnbm9yZV9jb2x1bW5fbGlzdCArPSAnKScK KworICAgICMgZm9ybWF0IHRoZSBjb2x1bW4gaW1wb3J0IGxpc3QgcmVxdWly ZWQgYXMgcGVyIGNvcHkgY29tbWFuZCByZXF1aXJlbWVudAorICAgIGlmIGRh dGFbJ2NvbHVtbl9pbXBvcnQnXToKKyAgICAgICAgY29sdW1uX2xpc3RfaW1w b3J0ID0gJygnCisgICAgICAgIGltcG9ydF9jb2xfbGVuZ3RoID0gbGVuKGRh dGFbJ2NvbHVtbl9pbXBvcnQnXSkKKyAgICAgICAgZm9yIGluZGV4Q250IGlu IHJhbmdlKGltcG9ydF9jb2xfbGVuZ3RoKToKKyAgICAgICAgICAgIGNvbHVt bl9saXN0X2ltcG9ydCArPSBkYXRhWydjb2x1bW5faW1wb3J0J11baW5kZXhD bnRdCisgICAgICAgICAgICBpZiBpbmRleENudCAhPSAoaW1wb3J0X2NvbF9s ZW5ndGggLSAxKToKKyAgICAgICAgICAgICAgICBjb2x1bW5fbGlzdF9pbXBv cnQgKz0gJywnCisgICAgICAgIGNvbHVtbl9saXN0X2ltcG9ydCArPSAnKScK KworICAgICMgRmV0Y2ggYXJndW1lbnRzIGZyb20gdGVtcGxhdGUKKyAgICBh cmd1bWVudHMgPSByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICdpbXBvcnQv YXJndW1lbnRzL2ltcG9ydC5hcmdzJywKKyAgICAgICAgY29ubj1jb25uLAor ICAgICAgICBkYXRhPWRhdGEsCisgICAgICAgIGNvbHVtbl9saXN0X2ltcG9y dD1jb2x1bW5fbGlzdF9pbXBvcnQsCisgICAgICAgIGlnbm9yZV9jb2x1bW5f bGlzdD1pZ25vcmVfY29sdW1uX2xpc3QKKyAgICApCisKKyAgICBhcmdzID0g WworICAgICAgICAnLS1ob3N0Jywgc2VydmVyLmhvc3QsICctLXBvcnQnLCBz dHIoc2VydmVyLnBvcnQpLAorICAgICAgICAnLS11c2VybmFtZScsIHNlcnZl ci51c2VybmFtZSwgJy0tZGJuYW1lJywKKyAgICAgICAgZHJpdmVyLnF0SWRl bnQoY29ubiwgZGF0YVsnZGF0YWJhc2UnXSksCisgICAgICAgICctLWNvbW1h bmQnLCBhcmd1bWVudHMKKyAgICBdCisKKyAgICB0cnk6CisgICAgICAgIHAg PSBCYXRjaFByb2Nlc3MoCisgICAgICAgICAgICBkZXNjPUltcG9ydE1lc3Nh Z2UoCisgICAgICAgICAgICAgICAgc2lkLAorICAgICAgICAgICAgICAgIGRh dGFbJ3NjaGVtYSddLAorICAgICAgICAgICAgICAgIGRhdGFbJ3RhYmxlJ10s CisgICAgICAgICAgICAgICAgc3RvcmFnZV9kaXIKKyAgICAgICAgICAgICks CisgICAgICAgICAgICBjbWQ9dXRpbGl0eSwgYXJncz1hcmdzCisgICAgICAg ICkKKyAgICAgICAgbWFuYWdlci5leHBvcnRfcGFzc3dvcmRfZW52KHNpZCwg c3RyKHAuaWQpKQorICAgICAgICBwLnN0YXJ0KCkKKyAgICAgICAgamlkID0g cC5pZAorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgY3Vy cmVudF9hcHAubG9nZ2VyLmV4Y2VwdGlvbihlKQorICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgc3RhdHVzPTQxMCwK KyAgICAgICAgICAgIHN1Y2Nlc3M9MCwKKyAgICAgICAgICAgIGVycm9ybXNn PXN0cihlKQorICAgICAgICApCisKKyAgICAjIFJldHVybiByZXNwb25zZQor ICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgIGRhdGE9 eydqb2JfaWQnOiBqaWQsICdzdWNjZXNzJzogMX0KKyAgICApCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBvcnQvdGVtcGxhdGVzL2ltcG9y dC9hcmd1bWVudHMvaW1wb3J0LmFyZ3MgYi93ZWIvcGdhZG1pbi90b29scy9p bXBvcnQvdGVtcGxhdGVzL2ltcG9ydC9hcmd1bWVudHMvaW1wb3J0LmFyZ3MK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNiODA5YQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC90 ZW1wbGF0ZXMvaW1wb3J0L2FyZ3VtZW50cy9pbXBvcnQuYXJncwpAQCAtMCww ICsxIEBACitcY29weSB7eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEsIGRh dGEudGFibGUpIH19IHslIGlmIGNvbHVtbl9saXN0X2ltcG9ydCAlfSB7eyBj b2x1bW5fbGlzdF9pbXBvcnQgfX0geyUgZW5kaWYgJX0gRlJPTSBFe3sgZGF0 YS5maWxlbmFtZXxxdExpdGVyYWwgfX0geyUgaWYgZGF0YS5vaWQgJX0gT0lE UyB7JSBlbmRpZiAlfXslIGlmIGRhdGEuZGVsaW1pdGVyIGFuZCBkYXRhLmRl bGltaXRlciA9PSAnW3RhYl0nICV9IERFTElNSVRFUiBFJ1xcdCcgeyUgZWxp ZiBkYXRhLmRlbGltaXRlciAlfSBERUxJTUlURVIge3sgZGF0YS5kZWxpbWl0 ZXJ8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmZvcm1hdCA9 PSAnY3N2JyAlfSBDU1YgSEVBREVSIHslIGVuZGlmICV9eyUgaWYgZGF0YS5l bmNvZGluZyAlfSBFTkNPRElORyB7eyBkYXRhLmVuY29kaW5nfHF0TGl0ZXJh bCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5xdW90ZSAlfSBRVU9URSB7eyBk YXRhLnF1b3RlfHF0TGl0ZXJhbCB9fXslIGVuZGlmICV9eyUgaWYgZGF0YS5u dWxsX3N0cmluZyAlfSBOVUxMIHt7IGRhdGEubnVsbF9zdHJpbmd8cXRMaXRl cmFsIH19eyUgZW5kaWYgJX17JSBpZiBkYXRhLmVzY2FwZSAlfSBFU0NBUEUg e3sgZGF0YS5lc2NhcGV8cXRMaXRlcmFsIH19eyUgZW5kaWYgJX17JSBpZiBk YXRhLmZvcm1hdCA9PSAnY3N2JyBhbmQgaWdub3JlX2NvbHVtbl9saXN0ICV9 IEZPUkNFX05PVF9OVUxMIHt7IGlnbm9yZV9jb2x1bW5fbGlzdCB9fSB7JSBl bmRpZiAlfTsiCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9pbXBv cnQvdGVtcGxhdGVzL2ltcG9ydC9qcy9pbXBvcnQuanMgYi93ZWIvcGdhZG1p bi90b29scy9pbXBvcnQvdGVtcGxhdGVzL2ltcG9ydC9qcy9pbXBvcnQuanMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRiNWFhNQot LS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2ltcG9ydC90 ZW1wbGF0ZXMvaW1wb3J0L2pzL2ltcG9ydC5qcwpAQCAtMCwwICsxLDM1NiBA QAorZGVmaW5lKAorICBbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVy c2NvcmUuc3RyaW5nJywgJ2FsZXJ0aWZ5JywgJ3BnYWRtaW4nLAorICAncGdh ZG1pbi5icm93c2VyJywgJ2JhY2tib25lJywgJ2JhY2tncmlkJywgJ2JhY2tm b3JtJywKKyAgJ3BnYWRtaW4uYmFja2Zvcm0nLCAncGdhZG1pbi5iYWNrZ3Jp ZCcsICdwZ2FkbWluLmJyb3dzZXIubm9kZS51aSddLAorICBmdW5jdGlvbigk LCBfLCBTLCBBbGVydGlmeSwgcGdBZG1pbiwgcGdCcm93c2VyLCBCYWNrYm9u ZSwgQmFja2dyaWQsIEJhY2tmb3JtKSB7CisKKyAgcGdBZG1pbiA9IHBnQWRt aW4gfHwgd2luZG93LnBnQWRtaW4gfHwge307CisKKyAgdmFyIHBnVG9vbHMg PSBwZ0FkbWluLlRvb2xzID0gcGdBZG1pbi5Ub29scyB8fCB7fTsKKworICAv LyBSZXR1cm4gYmFjaywgdGhpcyBoYXMgYmVlbiBjYWxsZWQgbW9yZSB0aGFu IG9uY2UKKyAgaWYgKHBnQWRtaW4uVG9vbHMuaW1wb3J0X3V0aWxpdHkpCisg ICAgcmV0dXJuIHBnQWRtaW4uVG9vbHMuaW1wb3J0X3V0aWxpdHk7CisKKyAg Ly8gTWFpbiBtb2RlbCBmb3IgSW1wb3J0IGZ1bmN0aW9uYWxpdHkKKyAgdmFy IEltcG9ydE1vZGVsID0gQmFja2JvbmUuTW9kZWwuZXh0ZW5kKHsKKyAgICBk ZWZhdWx0czogeworICAgICAgZmlsZW5hbWU6IHVuZGVmaW5lZCwKKyAgICAg IGZvcm1hdDogJ3RleHQnLAorICAgICAgZW5jb2Rpbmc6IHVuZGVmaW5lZCwK KyAgICAgIG9pZDogdW5kZWZpbmVkLAorICAgICAgaGVhZGVyOiB1bmRlZmlu ZWQsCisgICAgICBkZWxpbWl0ZXI6IHVuZGVmaW5lZCwKKyAgICAgIHF1b3Rl OiB1bmRlZmluZWQsCisgICAgICBlc2NhcGU6IHVuZGVmaW5lZCwKKyAgICAg IG51bGxfc3RyaW5nOiB1bmRlZmluZWQsCisgICAgICBjb2x1bW5faW1wb3J0 OiBbXSwKKyAgICAgIGlnbm9yZV9jb2x1bW46IFtdLAorICAgICAgZGF0YWJh c2U6IHVuZGVmaW5lZCwKKyAgICAgIHNjaGVtYTogdW5kZWZpbmVkLAorICAg ICAgdGFibGU6IHVuZGVmaW5lZAorICAgIH0sCisgICAgc2NoZW1hOiBbCisg ICAgICB7CisgICAgICAgIGlkOiAnZmlsZW5hbWUnLCBsYWJlbDogJ3t7IF8o J0ZpbGVuYW1lJyl9fScsCisgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJv bDogQmFja2Zvcm0uRmlsZUNvbnRyb2wsIGdyb3VwOiAne3sgXygnRmlsZXMn KX19JywKKyAgICAgICAgZGlhbG9nX3R5cGU6ICdzZWxlY3RfZmlsZScsIHN1 cHBfdHlwZXM6IFsnKicsICd0eHQnXQorICAgICAgfSwKKyAgICAgIHsKKyAg ICAgICAgaWQ6ICdmb3JtYXQnLCBsYWJlbDogJ3t7IF8oIkZvcm1hdCIpIH19 JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIGNvbnRyb2w6ICdzZWxlY3Qy JywgZ3JvdXA6ICd7eyBfKCdGaWxlcycpfX0nLAorICAgICAgICBvcHRpb25z OlsKKyAgICAgICAgICAgIHsnbGFiZWwnOiAndGV4dCcsICd2YWx1ZSc6ICd0 ZXh0J30sCisgICAgICAgICAgICB7J2xhYmVsJzogJ2NzdicsICd2YWx1ZSc6 ICdjc3YnfSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnYmluYXJ5JywgJ3Zh bHVlJzogJ2JpbmFyeSd9LAorICAgICAgICAgIF0sCisgICAgICAgIGRpc2Fi bGVkOiAnaXNEaXNhYmxlZCcsIHNlbGVjdDI6IHthbGxvd0NsZWFyOiBmYWxz ZSwgd2lkdGg6ICIxMDAlIiB9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAg ICAgaWQ6ICdlbmNvZGluZycsIGxhYmVsOiAne3sgXygiRW5jb2RpbmciKSB9 fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAgICBjb250cm9sOiAnbm9kZS1h amF4LW9wdGlvbnMnLCBub2RlOiAnZGF0YWJhc2UnLCB1cmw6ICdnZXRfZW5j b2RpbmdzJywgZmlyc3RfZW1wdHk6IHRydWUsCisgICAgICAgIGdyb3VwOiAn e3sgXygnRmlsZXMnKX19JworICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAg aWQ6ICdjb2x1bW5faW1wb3J0JywgbGFiZWw6ICd7eyBfKCJDb2x1bW5zIHRv IGltcG9ydCIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIHR5cGU6 ICdhcnJheScsIGNvbnRyb2w6IEJhY2tmb3JtLk11bHRpU2VsZWN0QWpheENv bnRyb2wuZXh0ZW5kKHsKKyAgICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGFs bCB0aGUgaW1wb3J0IGNvbHVtbnMgc2hvdWxkIGJlIHNlbGVjdGVkCisgICAg ICAgICAgICBpbml0aWFsaXplOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICBCYWNrZm9ybS5NdWx0aVNlbGVjdEFqYXhDb250cm9sLnByb3RvdHlw ZS5pbml0aWFsaXplLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAg ICAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAorICAgICAgICAgICAgICAgICAg ICBvcHRpb25zID0gc2VsZi5maWVsZC5nZXQoJ29wdGlvbnMnKSwKKyAgICAg ICAgICAgICAgICAgICAgb3BfdmFscyA9IFtdOworICAgICAgICAgICAgICAg IGlmIChfLmlzRnVuY3Rpb24ob3B0aW9ucykpIHsKKyAgICAgICAgICAgICAg ICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRp b25zLmFwcGx5KHNlbGYpCisgICAgICAgICAgICAgICAgICB9IGNhdGNoKGUp IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90aGluZworICAgICAg ICAgICAgICAgICAgICBvcHRpb25zID0gW107CisgICAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF8uZWFj aChvcHRpb25zLCBmdW5jdGlvbihvcCl7CisgICAgICAgICAgICAgICAgICAg IG9wX3ZhbHMucHVzaChvcFsndmFsdWUnXSk7CisgICAgICAgICAgICAgICAg fSk7CisKKyAgICAgICAgICAgICAgICBzZWxmLm1vZGVsLnNldChzZWxmLmZp ZWxkLmdldCgnbmFtZScpLG9wX3ZhbHMpOworICAgICAgICAgICAgfQorICAg ICAgICB9KSwKKyAgICAgICAgbm9kZTogJ2NvbHVtbicsIHVybDogJ25vZGVz JywgZ3JvdXA6ICd7eyBfKCdDb2x1bW5zJyl9fScsCisgICAgICAgIHRyYW5z Zm9ybTogZnVuY3Rpb24ocm93cykgeworICAgICAgICB2YXIgc2VsZiA9IHRo aXMsCisgICAgICAgICAgICBub2RlID0gc2VsZi5maWVsZC5nZXQoJ3NjaGVt YV9ub2RlJyksCisgICAgICAgICAgICByZXMgPSBbXTsKKworICAgICAgICBf LmVhY2gocm93cywgZnVuY3Rpb24ocikgeworICAgICAgICAgICAgdmFyIGwg PSAoXy5pc0Z1bmN0aW9uKG5vZGVbJ25vZGVfbGFiZWwnXSkgPworICAgICAg ICAgICAgICAgICAgKG5vZGVbJ25vZGVfbGFiZWwnXSkuYXBwbHkobm9kZSwg W3IsIHNlbGYubW9kZWwsIHNlbGZdKSA6CisgICAgICAgICAgICAgICAgICBy LmxhYmVsKSwKKyAgICAgICAgICAgICAgICBpbWFnZSA9IChfLmlzRnVuY3Rp b24obm9kZVsnbm9kZV9pbWFnZSddKSA/CisgICAgICAgICAgICAgICAgICAo bm9kZVsnbm9kZV9pbWFnZSddKS5hcHBseSgKKyAgICAgICAgICAgICAgICAg ICAgbm9kZSwgW3IsIHNlbGYubW9kZWwsIHNlbGZdCisgICAgICAgICAgICAg ICAgICAgICkgOgorICAgICAgICAgICAgICAgICAgKG5vZGVbJ25vZGVfaW1h Z2UnXSB8fCAoJ2ljb24tJyArIG5vZGUudHlwZSkpKTsKKyAgICAgICAgICAg IHJlcy5wdXNoKHsKKyAgICAgICAgICAgICAgJ3ZhbHVlJzogci5sYWJlbCwK KyAgICAgICAgICAgICAgJ2ltYWdlJzogaW1hZ2UsCisgICAgICAgICAgICAg ICdsYWJlbCc6IGwKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKwor ICAgICAgICByZXR1cm4gcmVzOworICAgICAgfSwKKyAgICAgICAgc2VsZWN0 MjogeyBtdWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vo b2xkZXI6ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBpbXBvcnQuLi4nKSB9 fSd9LAorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6ICdudWxsX3N0 cmluZycsIGxhYmVsOiAne3sgXygiTlVMTCBTdHJpbmdzIikgfX0nLCBjZWxs OiAnc3RyaW5nJywKKyAgICAgICAgdHlwZTogJ3RleHQnLCBncm91cDogJ3t7 IF8oJ0NvbHVtbnMnKX19JywgZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgZGVw czogWydmb3JtYXQnXQorICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgaWQ6 ICdpZ25vcmVfY29sdW1uJywgbGFiZWw6ICd7eyBfKCJJZ25vcmUgQ29sdW1u cyIpIH19JywgY2VsbDogJ3N0cmluZycsCisgICAgICAgIGNvbnRyb2w6ICdu b2RlLWxpc3QtYnktbmFtZScsIG5vZGU6ICdjb2x1bW4nLAorICAgICAgICBn cm91cDogJ3t7IF8oJ0NvbHVtbnMnKX19JywgZGVwczogWydmb3JtYXQnXSwg ZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywKKyAgICAgICAgc2VsZWN0MjogeyBt dWx0aXBsZTogdHJ1ZSwgYWxsb3dDbGVhcjogdHJ1ZSwgcGxhY2Vob2xkZXI6 ICd7eyBfKCdTZWxlY3QgY29sdW1ucyB0byBpZ25vcmUuLi4nKSB9fSd9LAor ICAgICAgfSwKKyAgICAgIHsKKyAgICAgICAgdHlwZTogJ25lc3RlZCcsIGNv bnRyb2w6ICdmaWVsZHNldCcsIGxhYmVsOiAne3sgXygnTWlzY2VsbGFuZW91 cycpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdPcHRpb25zJykgfX0n LAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBpZDogJ29pZCcsIGxh YmVsOid7eyBfKCdPSUQnKSB9fScsIGNlbGw6ICdzdHJpbmcnLAorICAgICAg ICAgIHR5cGU6ICdzd2l0Y2gnLCBncm91cDogJ3t7IF8oJ01pc2NlbGxhbmVv dXMnKSB9fScKKyAgICAgICAgfSx7CisgICAgICAgICAgaWQ6ICdoZWFkZXIn LCBsYWJlbDone3sgXygnSGVhZGVyJykgfX0nLCBjZWxsOiAnc3RyaW5nJywK KyAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgZ3JvdXA6ICd7eyBfKCdNaXNj ZWxsYW5lb3VzJykgfX0nLCBkZXBzOiBbJ2Zvcm1hdCddLCBkaXNhYmxlZDog J2lzRGlzYWJsZWQnCisgICAgICAgIH0seworICAgICAgICAgIGlkOiAnZGVs aW1pdGVyJywgbGFiZWw6J3t7IF8oJ0RlbGltaXRlcicpIH19JywgY2VsbDog J3N0cmluZycsIGZpcnN0X2VtcHR5OiB0cnVlLCBkZXBzOiBbJ2Zvcm1hdCdd LAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29udHJvbDogJ25vZGUtYWph eC1vcHRpb25zJywgZ3JvdXA6ICd7eyBfKCdNaXNjZWxsYW5lb3VzJykgfX0n LCBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLAorICAgICAgICAgIG9wdGlvbnM6 WworCisgICAgICAgICAgICB7J2xhYmVsJzogJzsnLCAndmFsdWUnOiAnOyd9 LAorICAgICAgICAgICAgeydsYWJlbCc6ICcsJywgJ3ZhbHVlJzogJywnfSwK KyAgICAgICAgICAgIHsnbGFiZWwnOiAnfCcsICd2YWx1ZSc6ICd8J30sCisg ICAgICAgICAgICB7J2xhYmVsJzogJ1t0YWJdJywgJ3ZhbHVlJzogJ1t0YWJd J30sCisKKyAgICAgICAgICBdLAorICAgICAgICAgIHNlbGVjdDI6IHsKKyAg ICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAorICAgICAgICAgICAgd2lk dGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAne3sgXygn U2VsZWN0IGZyb20gbGlzdC4uLicpIH19JworICAgICAgICAgIH0sCisgICAg ICAgIH1dCisgICAgICB9LAorICAgICAgeworICAgICAgICB0eXBlOiAnbmVz dGVkJywgY29udHJvbDogJ2ZpZWxkc2V0JywgbGFiZWw6ICd7eyBfKCdRdW90 ZScpIH19JywKKyAgICAgICAgZ3JvdXA6ICd7eyBfKCdPcHRpb25zJykgfX0n LAorICAgICAgICBzY2hlbWE6W3sKKyAgICAgICAgICBpZDogJ3F1b3RlJywg bGFiZWw6J3t7IF8oJ1F1b3RlJykgfX0nLCBjZWxsOiAnc3RyaW5nJywKKyAg ICAgICAgICB0eXBlOiAndGV4dCcsIGNvbnRyb2w6ICdub2RlLWFqYXgtb3B0 aW9ucycsIGdyb3VwOiAne3sgXygnUXVvdGUnKSB9fScsCisgICAgICAgICAg ZGlzYWJsZWQ6ICdpc0Rpc2FibGVkJywgZGVwczogWydmb3JtYXQnXSwgZmly c3RfZW1wdHk6IHRydWUsCisgICAgICAgICAgb3B0aW9uczpbCisgICAgICAg ICAgICB7J2xhYmVsJzogJ1wiJywgJ3ZhbHVlJzogJ1wiJ30sCisgICAgICAg ICAgICB7J2xhYmVsJzogJ1wnJywgJ3ZhbHVlJzogJ1wnJ30sCisgICAgICAg ICAgXSwKKyAgICAgICAgICBzZWxlY3QyOiB7CisgICAgICAgICAgICBhbGxv d0NsZWFyOiBmYWxzZSwKKyAgICAgICAgICAgIHdpZHRoOiAiMTAwJSIsCisg ICAgICAgICAgICBwbGFjZWhvbGRlcjogJ3t7IF8oJ1NlbGVjdCBmcm9tIGxp c3QuLi4nKSB9fScKKyAgICAgICAgICB9LAorICAgICAgICB9LHsKKyAgICAg ICAgICBpZDogJ2VzY2FwZScsIGxhYmVsOid7eyBfKCdFc2NhcGUnKSB9fScs IGNlbGw6ICdzdHJpbmcnLAorICAgICAgICAgIHR5cGU6ICd0ZXh0JywgY29u dHJvbDogJ25vZGUtYWpheC1vcHRpb25zJywgZ3JvdXA6ICd7eyBfKCdRdW90 ZScpIH19JywKKyAgICAgICAgICBkaXNhYmxlZDogJ2lzRGlzYWJsZWQnLCBk ZXBzOiBbJ2Zvcm1hdCddLCBmaXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAg ICBvcHRpb25zOlsKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnXCInLCAndmFs dWUnOiAnXCInfSwKKyAgICAgICAgICAgIHsnbGFiZWwnOiAnXCcnLCAndmFs dWUnOiAnXCcnfSwKKyAgICAgICAgICBdLAorICAgICAgICAgIHNlbGVjdDI6 IHsKKyAgICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAorICAgICAgICAg ICAgd2lkdGg6ICIxMDAlIiwKKyAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAn e3sgXygnU2VsZWN0IGZyb20gbGlzdC4uLicpIH19JworICAgICAgICAgIH0s CisgICAgICAgIH1dCisgICAgICB9CisgICAgXSwKKworICAgIC8vIEVuYWJs ZS9EaXNhYmxlIHRoZSBpdGVtcyBiYXNlZCBvbiB0aGUgdXNlciBmaWxlIGZv cm1hdCBzZWxlY3Rpb24KKyAgICBpc0Rpc2FibGVkOiBmdW5jdGlvbihtKSB7 CisgICAgICBuYW1lID0gdGhpcy5uYW1lOworICAgICAgc3dpdGNoKG5hbWUp IHsKKyAgICAgICAgY2FzZSAncXVvdGUnOgorICAgICAgICBjYXNlICdlc2Nh cGUnOgorICAgICAgICBjYXNlICdoZWFkZXInOgorICAgICAgICBjYXNlICdp Z25vcmVfY29sdW1uJzoKKyAgICAgICAgICBpZiAobS5nZXQoJ2Zvcm1hdCcp ICE9ICdjc3YnKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4g ZmFsc2U7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAg ICBjYXNlICdudWxsX3N0cmluZyc6CisgICAgICAgIGNhc2UgJ2RlbGltaXRl cic6CisgICAgICAgICAgaWYgKG0uZ2V0KCdmb3JtYXQnKSA9PSAnYmluYXJ5 JykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgfQor ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor ICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVs dDoKKyAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgfSwKKyAgfSk7CisKKyAgcGdUb29scy5pbXBv cnRfdXRpbGl0eSA9IHsKKyAgICAgIGluaXQ6IGZ1bmN0aW9uKCkgeworICAg ICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBpbml0aWFsaXplIHRoZSBtb2R1 bGUgbXVsdGlwbGUgdGltZXMuCisgICAgICAgIGlmICh0aGlzLmluaXRpYWxp emVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuaW5p dGlhbGl6ZWQgPSB0cnVlOworCisgICAgICAgIC8qKgorICAgICAgICAgRW5h YmxlL2Rpc2FibGUgaW1wb3J0IG1lbnUgaW4gdG9vbHMgYmFzZWQgb24gbm9k ZSBzZWxlY3RlZAorICAgICAgICAgSW1wb3J0IG1lbnUgd2lsbCBiZSBlbmFi bGVkIG9ubHkgd2hlbiB1c2VyIHNlbGVjdCB0YWJsZSBub2RlLgorICAgICAg ICAqLworICAgICAgICBtZW51X2VuYWJsZWQgPSBmdW5jdGlvbihpdGVtRGF0 YSwgaXRlbSwgZGF0YSkgeworICAgICAgICAgdmFyIHQgPSBwZ0Jyb3dzZXIu dHJlZSwgaSA9IGl0ZW0sIGQgPSBpdGVtRGF0YTsKKyAgICAgICAgIHZhciBw YXJlbnRfaXRlbSA9IHQuaGFzUGFyZW50KGkpID8gdC5wYXJlbnQoaSk6IG51 bGwsCisgICAgICAgICAgICAgcGFyZW50X2RhdGEgPSBwYXJlbnRfaXRlbSA/ IHQuaXRlbURhdGEocGFyZW50X2l0ZW0pIDogbnVsbDsKKyAgICAgICAgICAg aWYoIV8uaXNVbmRlZmluZWQoZCkgJiYgIV8uaXNOdWxsKGQpICYmICFfLmlz TnVsbChwYXJlbnRfZGF0YSkpCisgICAgICAgICAgICAgcmV0dXJuICgKKyAg ICAgICAgICAgICAgIChfLmluZGV4T2YoWyd0YWJsZSddLCBkLl90eXBlKSAh PT0gLTEgJiYKKyAgICAgICAgICAgICAgIHBhcmVudF9kYXRhLl90eXBlICE9 ICdjYXRhbG9nJykgPyB0cnVlOiBmYWxzZQorICAgICAgICAgICAgICk7Cisg ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH07CisKKyAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgY29udGV4 dCBtZW51IHRvIGRpc3BsYXkgdGhlIGltcG9ydCBvcHRpb25zIHdoZW4gdXNl ciBvcGVuIHRoZSBjb250ZXh0IG1lbnUgZm9yIHRhYmxlCisgICAgICAgIHBn QnJvd3Nlci5hZGRfbWVudXMoW3sKKyAgICAgICAgICBuYW1lOiAnaW1wb3J0 Jywgbm9kZTogJ3RhYmxlJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFw cGxpZXM6IFsndG9vbHMnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ2NhbGxi YWNrX2ltcG9ydCcsCisgICAgICAgICAgY2F0ZWdvcnk6ICdpbXBvcnQnLCBw cmlvcml0eTogMTAsIGxhYmVsOiAne3sgXygnSW1wb3J0Li4uJykgfX0nLAor ICAgICAgICAgIGRhdGE6IHtvYmplY3Q6ICd0YWJsZSd9LCBpY29uOiAnZmEg ZmEtc2lnbi1pbicsIGVuYWJsZTogbWVudV9lbmFibGVkCisgICAgICAgIH0K KyAgICAgICAgXSk7CisgICAgICB9LAorCisgICAgICAvKgorICAgICAgICBP cGVuIHRoZSBkaWFsb2cgZm9yIHRoZSBpbXBvcnQgZnVuY3Rpb25hbGl0eQor ICAgICAgKi8KKyAgICAgIGNhbGxiYWNrX2ltcG9ydDogZnVuY3Rpb24oYXJn cywgaXRlbSkgeworICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisgICAgICAg IHZhciBpbnB1dCA9IGFyZ3MgfHwge30sCisgICAgICAgICAgdCA9IHBnQnJv d3Nlci50cmVlLAorICAgICAgICAgIGkgPSBpdGVtIHx8IHQuc2VsZWN0ZWQo KSwKKyAgICAgICAgICBkID0gaSAmJiBpLmxlbmd0aCA9PSAxID8gdC5pdGVt RGF0YShpKSA6IHVuZGVmaW5lZCwKKyAgICAgICAgICBub2RlID0gZCAmJiBw Z0Jyb3dzZXIuTm9kZXNbZC5fdHlwZV07CisKKyAgICAgICAgaWYgKCFkKQor ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgb2JqTmFtZSA9IGQu bGFiZWw7CisgICAgICAgIHZhciB0cmVlSW5mbyA9IG5vZGUuZ2V0VHJlZU5v ZGVIaWVyYXJjaHkuYXBwbHkobm9kZSwgW2ldKTsKKworICAgICAgICBpZiAo IUFsZXJ0aWZ5LkltcG9ydERpYWxvZykgeworICAgICAgICAgIEFsZXJ0aWZ5 LmRpYWxvZygnSW1wb3J0RGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgpIHsK KworICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgICAgbWFpbjpm dW5jdGlvbih0aXRsZSkgeworICAgICAgICAgICAgICAgIHRoaXMuc2V0KCd0 aXRsZScsIHRpdGxlKTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg ICAgc2V0dXA6ZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu IHsKKyAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6W3sgdGV4dDogInt7IF8o J0ltcG9ydCcpIH19Iiwga2V5OiAyNywgY2xhc3NOYW1lOiAiYnRuIGJ0bi1w cmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uIiB9 LAorICAgICAgICAgICAgICAgICAgICAgICB7IHRleHQ6ICJ7eyBfKCdDYW5j ZWwnKSB9fSIsIGtleTogMjcsIGNsYXNzTmFtZTogImJ0biBidG4tZGFuZ2Vy IGZhIGZhLWxnIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbiIgfV0sCisg ICAgICAgICAgICAgICAgICBvcHRpb25zOiB7IG1vZGFsOiAwfQorICAgICAg ICAgICAgICAgIH07CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9ucyB3aGVuIGNsaWNrIG9uIHRoZSBidXR0 b25zIG9mIHRoZSBBbGVydGlmeSBkaWFsb2dzCisgICAgICAgICAgICAgIGNh bGxiYWNrOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUu YnV0dG9uLnRleHQgPT09ICJ7eyBfKCdJbXBvcnQnKSB9fSIpIHsKKworICAg ICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVsLnNldCh7J2RhdGFiYXNl JzogdHJlZUluZm8uZGF0YWJhc2UubGFiZWwsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICdzY2hlbWEnOiB0cmVlSW5mby5zY2hl bWEubGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICd0YWJsZSc6IHRyZWVJbmZvLnRhYmxlLmxhYmVsfSkKKyAgICAgICAg ICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAg ICAgYmFzZVVybCA9ICJ7eyB1cmxfZm9yKCdpbXBvcnQuaW5kZXgnKSB9fSIg KworICAgICAgICAgICAgICAgICAgICAiY3JlYXRlX2pvYi8iICsgdHJlZUlu Zm8uc2VydmVyLl9pZCwKKyAgICAgICAgICAgICAgICAgICAgYXJncyA9ICB0 aGlzLnZpZXcubW9kZWwudG9KU09OKCk7CisKKyAgICAgICAgICAgICAgICAg ICQuYWpheCh7CisgICAgICAgICAgICAgICAgICAgIHVybDogYmFzZVVybCwK KyAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCisgICAgICAg ICAgICAgICAgICAgIGRhdGE6eyAnZGF0YSc6IEpTT04uc3RyaW5naWZ5KGFy Z3MpIH0sCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9u KHJlcykgeworICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3VjY2Vz cykgeworICAgICAgICAgICAgICAgICAgICAgICAgQWxlcnRpZnkubWVzc2Fn ZSgne3sgXygnQmFja2dyb3VuZCBwcm9jZXNzIGZvciB0YWtpbmcgaW1wb3J0 IGhhcyBiZWVuIGNyZWF0ZWQhJykgfX0nLCAxKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigncGdhZG1pbi1i Z3Byb2Nlc3M6Y3JlYXRlZCcsIHNlbGYpOworICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg ICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgewor ICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg ICAgICAgICB2YXIgZXJyID0gJC5wYXJzZUpTT04oeGhyLnJlc3BvbnNlVGV4 dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBBbGVydGlmeS5hbGVydCgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgJ3t7IF8oJ0ltcG9ydCBmYWls ZWQuLi4nKSB9fScsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVyci5l cnJvcm1zZworICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAg ICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fQorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAg ICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGJ1aWxkOmZ1 bmN0aW9uKCkgeworCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg IGhvb2tzOiB7CisgICAgICAgICAgICAgICAgb25jbG9zZTogZnVuY3Rpb24o KSB7CisgICAgICAgICAgICAgICAgICBpZiAodGhpcy52aWV3KSB7CisgICAg ICAgICAgICAgICAgICAgIHRoaXMudmlldy5yZW1vdmUoe2RhdGE6IHRydWUs IGludGVybmFsOiB0cnVlLCBzaWxlbnQ6IHRydWV9KTsKKyAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0s CisgICAgICAgICAgICAgIHByZXBhcmU6ZnVuY3Rpb24oKSB7CisgICAgICAg ICAgICAgICAgLy8gTWFpbiBpbXBvcnQgbW9kdWxlIGNvbnRhaW5lcgorICAg ICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJCgiPGRpdiBjbGFzcz0n aW1wb3J0X2RsZyc+PC9kaXY+Iik7CisKKyAgICAgICAgICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgICAgICAgICAgICAgaSA9IHQu c2VsZWN0ZWQoKSwKKyAgICAgICAgICAgICAgICAgIGQgPSBpICYmIGkubGVu Z3RoID09IDEgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVkLAorICAgICAg ICAgICAgICAgICAgbm9kZSA9IGQgJiYgcGdCcm93c2VyLk5vZGVzW2QuX3R5 cGVdOworCisgICAgICAgICAgICAgICAgaWYgKCFkKQorICAgICAgICAgICAg ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgdmFyIHRyZWVJbmZv ID0gbm9kZS5nZXRUcmVlTm9kZUhpZXJhcmNoeS5hcHBseShub2RlLCBbaV0p OworCisgICAgICAgICAgICAgICAgdmFyIG5ld01vZGVsID0gbmV3IEltcG9y dE1vZGVsICgKKyAgICAgICAgICAgICAgICAgIHt9LCB7bm9kZV9pbmZvOiB0 cmVlSW5mb30KKyAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgICBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCisg ICAgICAgICAgICAgICAgICAgIHRyZWVJbmZvLCBuZXdNb2RlbCwgJ2NyZWF0 ZScsIG5vZGUsIHRyZWVJbmZvLnNlcnZlciwgdHJ1ZQorICAgICAgICAgICAg ICAgICAgKTsKKworICAgICAgICAgICAgICAgICAgdmFyIHZpZXcgPSB0aGlz LnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKKyAgICAgICAgICAgICAg ICAgICAgZWw6ICRjb250YWluZXIsIG1vZGVsOiBuZXdNb2RlbCwgc2NoZW1h OiBmaWVsZHMKKyAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg ICAgICAgICAkKHRoaXMuZWxlbWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5h ZGRDbGFzcygnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2Jq X3Byb3BlcnRpZXMnKTsKKworICAgICAgICAgICAgICAgICAgdmlldy5yZW5k ZXIoKTsKKworICAgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250 ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0KDApKTsKKyAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgICB9KTsKKyAgICAg ICAgfQorCisgICAgICAgIC8vIE9wZW4gdGhlIEFsZXJ0aWZ5IGRpYWxvZyBm b3IgdGhlIGltcG9ydCBtb2R1bGUKKyAgICAgICAgQWxlcnRpZnkuSW1wb3J0 RGlhbG9nKCdJbXBvcnQgZGF0YSBmcm9tIGZpbGUgaW50byAnICsgdHJlZUlu Zm8udGFibGUubGFiZWwpLnNldCgncmVzaXphYmxlJyx0cnVlKS5yZXNpemVU bygnNjAlJywnNzAlJyk7CisgICAgICB9LAorICAgIH07CisKKyAgICByZXR1 cm4gcGdBZG1pbi5Ub29scy5pbXBvcnRfdXRpbGl0eTsKKyAgfSk7Cg== --001a1145a8503dd6480532f071d9 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 --001a1145a8503dd6480532f071d9--