Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bMWOK-0005yN-2x for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Jul 2016 08:16:36 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bMWOJ-0004nc-MF for pgadmin-hackers@arkaria.postgresql.org; Mon, 11 Jul 2016 08:16:35 +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 1bMWO5-0004Zg-VJ for pgadmin-hackers@postgresql.org; Mon, 11 Jul 2016 08:16:22 +0000 Received: from mail-oi0-x232.google.com ([2607:f8b0:4003:c06::232]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84_2) (envelope-from ) id 1bMWNx-00061D-E4 for pgadmin-hackers@postgresql.org; Mon, 11 Jul 2016 08:16:20 +0000 Received: by mail-oi0-x232.google.com with SMTP id s66so137410597oif.1 for ; Mon, 11 Jul 2016 01:16:13 -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=FQDGS8Q1xV/L//5WSrHqe/qJ90zOYzIhih5xpn7JKBY=; b=RLy88GUgPgpB1ie0UwEfZtMVrr/MfKjWt3s6IcbcrGqKg39vFJFHEs0g+jNjPSMTfC SDain4PCfdwJc+ehReK9ff2R5kKNyKxVgCjUfHe2qdW+2ff2ooWLrFUR2Jf450hFuT/z bTerPVdKb+IcPW5Czi4dRCfZngcoSfcfkvrHFk5oHRo1BIIkGtKM6L6lDhCZ6qLhfGuq ddUxLQmyC88wuthQhFwOFtTYUkIyZvbIcfGMY7fiUsCcZfwhRjWMU48+Qr+Cw1ZNxwfa lz5BSzaKNonEbBN4s9jzkKWt5p7s+AbbDuNB0YM0Pu7kU09TAcOWHv2tCriKm69FvBKg GApQ== 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=FQDGS8Q1xV/L//5WSrHqe/qJ90zOYzIhih5xpn7JKBY=; b=Pmi7rwR6lC6w84862uYTKzmJgqGWRdC4UHBDfdj10BJkvuHSQ7QqcIr8ZRG+rlt3hf cNlDc10Emgsyj8EvGhaxKpIaatDcP4O29hgBw+ud8qPsejTl2+D49jwbQOQMSD0qph+Q ufhFH/dQdUM71CUbHPqodCycOUJgdkA4tBJkArUtgqGi0T7C6SsnHUsCm15AUNkLOJkw SsaB2wfT9O3/KUutHuhTzjfC0JP0Mpi4pV66f6qHQqN+HE+RNi3D8cnrutDkyJpGQxn+ QEuTuPm/HhV0YHVtpZ6CbuTUE48slqDJXOD0vPzlYMVLT5qouQ6Xfwr2G3qjTi5Va54s hi/w== X-Gm-Message-State: ALyK8tIc5UB/zs4KLvK7LouZU0S4KKfJ/Gsn8GXqTNGQSgI6SF/gknVLAcj+ukuco4prW/dJP7PUBoCsWffR1D7j X-Received: by 10.157.12.3 with SMTP id 3mr9999572otr.72.1468224972355; Mon, 11 Jul 2016 01:16:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.157.5.99 with HTTP; Mon, 11 Jul 2016 01:16:11 -0700 (PDT) In-Reply-To: References: <70470862-26C1-4281-838E-F2C755E5C645@enterprisedb.com> <671D8CC8-C1D8-4CC1-BC32-431C496C4C5C@enterprisedb.com> From: Harshal Dhumal Date: Mon, 11 Jul 2016 13:46:11 +0530 Message-ID: Subject: Re: PATCH: Fix the issue for saving query output as CSV To: Akshay Joshi Cc: Murtuza Zabuawala , Dave Page , pgadmin-hackers Content-Type: multipart/mixed; boundary=94eb2c04daa2ed9f8a053757c39e 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 --94eb2c04daa2ed9f8a053757c39e Content-Type: multipart/alternative; boundary=94eb2c04daa2ed9f86053757c39c --94eb2c04daa2ed9f86053757c39c Content-Type: text/plain; charset=UTF-8 Hi, PFA patch for RM1405. Also to allow download in runtime we will still need patch sent by Neel. Changes: To download query result to CSV directly from server and not to use download attr. of anchor tag () as it's not support by all of major browsers (e.g. Safari). Also it's not feasible to load data in html to download if result set of query is very huge (in GBs). -- *Harshal Dhumal* *Software Engineer* EnterpriseDB India: http://www.enterprisedb.com The Enterprise PostgreSQL Company On Wed, Jun 29, 2016 at 4:53 PM, Akshay Joshi wrote: > > > On Wed, Jun 29, 2016 at 3:52 PM, Murtuza Zabuawala enterprisedb.com> wrote: > >> Yes, It will not work in runtime as well but I think Neel is working for >> fix in run time for this issue, We might able to fix it in run time but >> issue persists in Safari unless they add support in browser itself. >> >> https://webkit.org/status/#feature-download-attribute >> >> >> > On 29-Jun-2016, at 3:40 pm, Dave Page wrote: >> > >> > On Tue, Jun 28, 2016 at 10:33 AM, Murtuza Zabuawala >> > wrote: >> >> Yes Dave, I agree that downloading files has been supported in >> browsers since long . >> >> >> >> But in general we send request & then receives files from web server >> but in our case we are fetching our data from Backbone models & then >> converting it to CSV format for downloading as a file at client side in >> browser itself. >> > >> > If Safari doesn't support client-side saving of files, then I have to >> > wonder if our runtime will either - both are webkit based. >> > >> > So I guess the next question to ask is; why don't we just generate the >> > CSV on the server side? >> > >> >> @Akshay, >> Can you please suggest on above? >> > > As we already have complete data in backgrid's full collection, so I > have used it instead of fetching it again. > >> >> > -- >> > Dave Page >> > Blog: http://pgsnake.blogspot.com >> > Twitter: @pgsnake >> > >> > EnterpriseDB UK: http://www.enterprisedb.com >> > The Enterprise PostgreSQL Company >> >> >> >> -- >> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >> To make changes to your subscription: >> http://www.postgresql.org/mailpref/pgadmin-hackers >> > > > > -- > *Akshay Joshi* > *Principal Software Engineer * > > > > *Phone: +91 20-3058-9517Mobile: +91 976-788-8246* > --94eb2c04daa2ed9f86053757c39c Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Changes: To down= load query result to CSV directly from server and not to use download attr.= of anchor tag (<a>) as it's not support by all of major browsers= (e.g. Safari).
Also it's not feasible to load data in html to downl= oad if result set of query is very huge (in GBs).




=

--=C2=A0
Harshal Dhumal
=
Software Engineer

EnterpriseDB India:=C2=A0http://www.enterprisedb.com
The Enterprise PostgreSQL Company

On Wed, Jun 29, 2016 at 4:53 PM, Akshay Josh= i <akshay.joshi@enterprisedb.com> wrote:

=
On Wed, Jun 29, 2016 at 3:5= 2 PM, Murtuza Zabuawala <= murtuza.zabuawala@enterprisedb.com>= wrote:
Yes, It will not work in r= untime as well but I think Neel is working for fix in run time for this iss= ue, We might able to fix it in run time but issue persists in Safari unless= they add support in browser itself.

https://webkit.org/status/#feature-download-att= ribute


> On 29-Jun-2016, at 3:40 pm, Dave Page <dpage@pgadmin.org> wrote:
>
> On Tue, Jun 28, 2016 at 10:33 AM, Murtuza Zabuawala
> <murtuza.zabuawala@enterprisedb.com> wrote:
>> Yes Dave, I agree that downloading files has been supported in bro= wsers since long .
>>
>> But in general we send request & then receives files from web = server but in our case we are fetching our data from Backbone models & = then converting it to CSV format for downloading as a file at client side i= n browser itself.
>
> If Safari doesn't support client-side saving of files, then I have= to
> wonder if our runtime will either - both are webkit based.
>
> So I guess the next question to ask is; why don't we just generate= the
> CSV on the server side?
>

@Akshay,
Can you please suggest on above?

=C2=A0 =C2=A0As we already have complete data in backgrid's full collection, so I have used it instead of fetching it again. =C2=A0 = =C2=A0

> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company



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



--
Akshay Joshi
Princip= al Software Engineer=C2=A0

=

Phone: +91 20-3058-9517
Mobile: +91 976-788-8246

--94eb2c04daa2ed9f86053757c39c-- --94eb2c04daa2ed9f8a053757c39e Content-Type: text/x-patch; charset=US-ASCII; name="RM1405_V2_download_query_result_to_csv_server_side.patch" Content-Disposition: attachment; filename="RM1405_V2_download_query_result_to_csv_server_side.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iqhr4ngy0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3RlbXBs YXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vdG9vbHMv ZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKaW5kZXgg YjEzOGE0Ni4uZmM5MThjNCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFn cmlkL2luZGV4Lmh0bWwKQEAgLTE4MSw2ICsxODEsNyBAQAogICAgICAgICAg ICAgPC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGlkPSJl ZGl0b3ItcGFuZWwiPjwvZGl2PgorICAgICAgICA8aWZyYW1lIGlkPSJkb3du bG9hZC1jc3YiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPjwvaWZyYW1lPgogICAg IDwvZGl2PgogPC9kaXY+CiB7JSBlbmRibG9jayAlfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5IGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL19faW5pdF9fLnB5CmluZGV4IGM3 MTNmYjUuLjQ4ZmQwYmEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvX19pbml0X18ucHkKQEAgLTI4LDYgKzI4LDcgQEAgZnJv bSBwZ2FkbWluLnV0aWxzLnNxbGF1dG9jb21wbGV0ZS5hdXRvY29tcGxldGUg aW1wb3J0IFNRTEF1dG9Db21wbGV0ZQogCiBmcm9tIGNvbmZpZyBpbXBvcnQg UEdfREVGQVVMVF9EUklWRVIKIAorCiAjIGltcG9ydCB1bnF1b3RlIGZyb20g dXJsaWIgZm9yIHB5dGhvbjIueCBhbmQgcHl0aG9uMy54CiB0cnk6CiAgICAg ZnJvbSB1cmxsaWIgaW1wb3J0IHVucXVvdGUKQEAgLTEyMTIsMyArMTIxMyw1 OCBAQCBkZWYgc2F2ZV9maWxlKCk6CiAgICAgICAgICAgICAnc3RhdHVzJzog VHJ1ZSwKICAgICAgICAgfQogICAgICkKKworCitAYmx1ZXByaW50LnJvdXRl KCcvcXVlcnlfdG9vbC9kb3dubG9hZC88aW50OnRyYW5zX2lkPicsIG1ldGhv ZHM9WyJHRVQiXSkKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHN0YXJ0X3F1ZXJ5 X2Rvd25sb2FkX3Rvb2wodHJhbnNfaWQpOgorICAgIHN5bmNfY29ubiA9IE5v bmUKKyAgICBzdGF0dXMsIGVycm9yX21zZywgY29ubiwgdHJhbnNfb2JqLCBz ZXNzaW9uX29iaiA9IGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19p ZCkKKworICAgIGlmIHN0YXR1cyBhbmQgY29ubiBpcyBub3QgTm9uZSBcCisg ICAgICAgICAgICBhbmQgdHJhbnNfb2JqIGlzIG5vdCBOb25lIGFuZCBzZXNz aW9uX29iaiBpcyBub3QgTm9uZToKKworICAgICAgICBkYXRhID0gcmVxdWVz dC5hcmdzIGlmIHJlcXVlc3QuYXJncyBlbHNlIE5vbmUKKyAgICAgICAgdHJ5 OgorICAgICAgICAgICAgaWYgZGF0YSBhbmQgJ3F1ZXJ5JyBpbiBkYXRhOgor ICAgICAgICAgICAgICAgIHNxbCA9IGRhdGFbJ3F1ZXJ5J10KKyAgICAgICAg ICAgICAgICBjb25uX2lkID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5 OTkpKQorICAgICAgICAgICAgICAgIHN5bmNfY29ubiA9IGNvbm4ubWFuYWdl ci5jb25uZWN0aW9uKAorICAgICAgICAgICAgICAgICAgICBkaWQ9dHJhbnNf b2JqLmRpZCwKKyAgICAgICAgICAgICAgICAgICAgY29ubl9pZD1jb25uX2lk LAorICAgICAgICAgICAgICAgICAgICBhdXRvX3JlY29ubmVjdD1GYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgYXN5bmM9RmFsc2UKKyAgICAgICAgICAg ICAgICApCisKKyAgICAgICAgICAgICAgICBzeW5jX2Nvbm4uY29ubmVjdChh dXRvY29tbWl0PUZhbHNlKQorCisgICAgICAgICAgICAgICAgIyBUaGlzIHJl dHVybnMgZ2VuZXJhdG9yIG9mIHJlY29yZHMuCisgICAgICAgICAgICAgICAg c3RhdHVzLCBnZW4gPSBzeW5jX2Nvbm4uZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNf Y3N2KHNxbCwgcmVjb3Jkcz0yMDAwKQorCisgICAgICAgICAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgICAgICAgICAgY29ubi5tYW5hZ2Vy LnJlbGVhc2UoY29ubl9pZD1jb25uX2lkLCBkaWQ9dHJhbnNfb2JqLmRpZCkK KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZ2VuKSkKKworICAgICAgICAgICAgICAgIGRl ZiBjbGVhbnVwKCk6CisgICAgICAgICAgICAgICAgICAgIGNvbm4ubWFuYWdl ci5jb25uZWN0aW9uc1tzeW5jX2Nvbm4uY29ubl9pZF0uX3JlbGVhc2UoKQor ICAgICAgICAgICAgICAgICAgICBkZWwgY29ubi5tYW5hZ2VyLmNvbm5lY3Rp b25zW3N5bmNfY29ubi5jb25uX2lkXQorCisgICAgICAgICAgICAgICAgciA9 IFJlc3BvbnNlKGdlbigpLCBtaW1ldHlwZT0ndGV4dC9jc3YnKQorCisgICAg ICAgICAgICAgICAgaWYgJ2ZpbGVuYW1lJyBpbiBkYXRhIGFuZCBkYXRhWydm aWxlbmFtZSddICE9ICIiOgorICAgICAgICAgICAgICAgICAgICBmaWxlbmFt ZSA9IGRhdGFbJ2ZpbGVuYW1lJ10KKyAgICAgICAgICAgICAgICBlbHNlOgor ICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdGltZQorICAgICAgICAgICAg ICAgICAgICBmaWxlbmFtZSA9IHN0cihpbnQodGltZS50aW1lKCkpKSArICIu Y3N2IgorCisgICAgICAgICAgICAgICAgci5oZWFkZXJzWyJDb250ZW50LURp c3Bvc2l0aW9uIl0gPSAiYXR0YWNobWVudDtmaWxlbmFtZT17MH0iLmZvcm1h dChmaWxlbmFtZSkKKworICAgICAgICAgICAgICAgIHIuY2FsbF9vbl9jbG9z ZShjbGVhbnVwKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHIKKworICAg ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBjb25u Lm1hbmFnZXIucmVsZWFzZShjb25uX2lkPWNvbm5faWQsIGRpZD10cmFuc19v YmouZGlkKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9l cnJvcihlcnJvcm1zZz1zdHIoZSkpCisgICAgZWxzZToKKyAgICAgICAgcmV0 dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1nZXR0ZXh0KCJU cmFuc2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFpbGVkLiIpKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBsYXRlcy9zcWxl ZGl0b3IvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3RlbXBsYXRlcy9zcWxlZGl0b3IvanMvc3FsZWRpdG9yLmpzCmlu ZGV4IDk2NWQ1NmUuLmMzNTVlY2UgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci90ZW1wbGF0ZXMvc3FsZWRpdG9yL2pzL3NxbGVk aXRvci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVt cGxhdGVzL3NxbGVkaXRvci9qcy9zcWxlZGl0b3IuanMKQEAgLTI1ODksNzYg KzI1ODksNjMgQEAgZGVmaW5lKAogCiAgICAgICAgIC8vIFRoaXMgZnVuY3Rp b24gd2lsbCBkb3dubG9hZCB0aGUgZ3JpZCBkYXRhIGFzIENTViBmaWxlLgog ICAgICAgICBfZG93bmxvYWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHZh ciBzZWxmID0gdGhpczsKLSAgICAgICAgICB2YXIgY29sbCA9IHNlbGYuY29s bGVjdGlvbi5mdWxsQ29sbGVjdGlvbiA9PT0gdW5kZWZpbmVkID8gc2VsZi5j b2xsZWN0aW9uIDogc2VsZi5jb2xsZWN0aW9uLmZ1bGxDb2xsZWN0aW9uOwot Ci0gICAgICAgICAgaWYgKHNlbGYuY29sdW1ucyAhPSB1bmRlZmluZWQgJiYK LSAgICAgICAgICAgICAgY29sbCAhPSB1bmRlZmluZWQgJiYKLSAgICAgICAg ICAgICAgY29sbC5sZW5ndGggPiAwKQotICAgICAgICAgIHsKLSAgICAgICAg ICAgIHZhciBjc3ZfY29sID0gXy5pbmRleEJ5KHNlbGYuY29sdW1ucywgJ25h bWUnKSwKLSAgICAgICAgICAgICAgICBsYWJlbHMgPSBfLnBsdWNrKHNlbGYu Y29sdW1ucywgJ2xhYmVsJyksCi0gICAgICAgICAgICAgICAga2V5cyA9IF8u cGx1Y2soc2VsZi5jb2x1bW5zLCAnbmFtZScpOwotCi0gICAgICAgICAgICAv LyBGZXRjaCB0aGUgaXRlbXMgZnJvbSBmdWxsQ29sbGVjdGlvbiBhbmQgY29u dmVydCBpdCBhcyBjc3YgZm9ybWF0Ci0gICAgICAgICAgICB2YXIgY3N2ID0g bGFiZWxzLmpvaW4oJywnKSArICdcbic7Ci0gICAgICAgICAgICBjc3YgKz0g Y29sbC5tYXAoZnVuY3Rpb24oaXRlbSkgewotICAgICAgICAgICAgICAgIHJl dHVybiBfLm1hcChrZXlzLCBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAg ICAgICAgIHZhciBjZWxsID0gY3N2X2NvbCBba2V5XS5jZWxsLAotICAgICAg ICAgICAgICAgICAgICAgIC8vIHN1cHBvc2UgeW91IHdhbnQgdG8gcHJlc2Vy dmUgY3VzdG9tIGZvcm1hdHRlcnMKLSAgICAgICAgICAgICAgICAgICAgICBm b3JtYXR0ZXIgPSBjZWxsLnByb3RvdHlwZSAmJiBjZWxsLnByb3RvdHlwZS5m b3JtYXR0ZXI7Ci0KLSAgICAgICAgICAgICAgICAgIHJldHVybiBmb3JtYXR0 ZXIgJiYgZm9ybWF0dGVyLmZyb21SYXcgPwotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZvcm1hdHRlci5mcm9tUmF3KGl0ZW0uZ2V0KGtleSksIGl0 ZW0pIDogaXRlbS5nZXQoa2V5KTsKLSAgICAgICAgICAgICAgICB9KS5qb2lu KCcsJyk7Ci0gICAgICAgICAgICB9KS5qb2luKCdcbicpOwotCi0gICAgICAg ICAgICAvLyBEb3dubG9hZCB0aGUgZmlsZS4KLSAgICAgICAgICAgIHZhciBl bmNvZGVkVXJpID0gZW5jb2RlVVJJKCdkYXRhOnRleHQvY3N2O2NoYXJzZXQ9 dXRmLTgsJyArIGNzdiksCi0gICAgICAgICAgICAgICAgICAgIGxpbmsgPSBk b2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Ci0gICAgICAgICAgICBsaW5r LnNldEF0dHJpYnV0ZSgnaHJlZicsIGVuY29kZWRVcmkpOwotCi0gICAgICAg ICAgICAvKiBJZiBkb3dubG9hZCBpcyBmcm9tIHZpZXcgZGF0YSB0aGVuIGZp bGUgbmFtZSBzaG91bGQgYmUKLSAgICAgICAgICAgICAqIHRoZSBvYmplY3Qg bmFtZSBmb3Igd2hpY2ggZGF0YSBpcyB0byBiZSBkaXNwbGF5ZWQuCi0gICAg ICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghc2VsZi5pc19xdWVyeV90 b29sKSB7Ci0gICAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAg ICAgdXJsOiAie3sgdXJsX2Zvcignc3FsZWRpdG9yLmluZGV4JykgfX0iICsg Im9iamVjdC9nZXQvIiArIHNlbGYudHJhbnNJZCwKLSAgICAgICAgICAgICAg ICBtZXRob2Q6ICdHRVQnLAotICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1 bmN0aW9uKHJlcykgewotICAgICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRh LnN0YXR1cykgewotICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHJl cy5kYXRhLnJlc3VsdCArICcuY3N2JzsKLSAgICAgICAgICAgICAgICAgICAg bGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywgZmlsZW5hbWUpOwotICAg ICAgICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7Ci0gICAgICAgICAgICAg ICAgICB9Ci0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgICAgICAgaWYgKGUu cmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFsZXJ0 aWZ5LmFsZXJ0KCdHZXQgT2JqZWN0IE5hbWUgRXJyb3InLAotICAgICAgICAg ICAgICAgICAgICAgJ3t7IF8oJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZl ciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNs b3NlZC4nKSB9fScKLSAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAg ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICBzZWxlY3RlZF9j b2RlID0gc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRTZWxlY3Rp b24oKSwKKyAgICAgICAgICBzcWwgPSAiIjsKIAotICAgICAgICAgICAgICAg ICAgdmFyIG1zZyA9IGUucmVzcG9uc2VUZXh0OwotICAgICAgICAgICAgICAg ICAgaWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCAmJgotICAgICAg ICAgICAgICAgICAgICAgIGUucmVzcG9uc2VKU09OLmVycm9ybXNnICE9IHVu ZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgbXNnID0gZS5yZXNwb25z ZUpTT04uZXJyb3Jtc2c7CisgICAgICAgICAgaWYgKHNlbGVjdGVkX2NvZGUu bGVuZ3RoID4gMCkKKyAgICAgICAgICAgIHNxbCA9IHNlbGVjdGVkX2NvZGU7 CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgc3FsID0gc2VsZi5ncmlk Vmlldy5xdWVyeV90b29sX29iai5nZXRWYWx1ZSgpOworCisgICAgICAgICAg Ly8gSWYgaXQgaXMgYW4gZW1wdHkgcXVlcnksIGRvIG5vdGhpbmcuCisgICAg ICAgICAgaWYgKHNxbC5sZW5ndGggPD0gMCkgcmV0dXJuOwogCi0gICAgICAg ICAgICAgICAgICBhbGVydGlmeS5hbGVydCgnR2V0IE9iamVjdCBOYW1lIEVy cm9yJywgbXNnKTsKKyAgICAgICAgICAvKiBJZiBkb3dubG9hZCBpcyBmcm9t IHZpZXcgZGF0YSB0aGVuIGZpbGUgbmFtZSBzaG91bGQgYmUKKyAgICAgICAg ICAgKiB0aGUgb2JqZWN0IG5hbWUgZm9yIHdoaWNoIGRhdGEgaXMgdG8gYmUg ZGlzcGxheWVkLgorICAgICAgICAgICAqLworICAgICAgICAgIGlmICghc2Vs Zi5pc19xdWVyeV90b29sKSB7CisgICAgICAgICAgICAkLmFqYXgoeworICAg ICAgICAgICAgICB1cmw6ICJ7eyB1cmxfZm9yKCdzcWxlZGl0b3IuaW5kZXgn KSB9fSIgKyAib2JqZWN0L2dldC8iICsgc2VsZi50cmFuc0lkLAorICAgICAg ICAgICAgICBtZXRob2Q6ICdHRVQnLAorICAgICAgICAgICAgICBzdWNjZXNz OiBmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzLmRh dGEuc3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IHJl cy5kYXRhLnJlc3VsdCArICcuY3N2JzsKKyAgICAgICAgICAgICAgICAgIHNl bGYuX3RyaWdnZXJfY3N2X2Rvd25sb2FkKHNxbCwgZmlsZW5hbWUpOwogICAg ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg ICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgdmFyIGN1 cl90aW1lID0gbmV3IERhdGUoKTsKLSAgICAgICAgICAgICAgdmFyIGZpbGVu YW1lID0gJ2RhdGEtJyArIGN1cl90aW1lLmdldFRpbWUoKSArICcuY3N2JzsK LSAgICAgICAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoJ2Rvd25sb2FkJywg ZmlsZW5hbWUpOwotICAgICAgICAgICAgICBsaW5rLmNsaWNrKCk7Ci0gICAg ICAgICAgICB9CisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIGVy cm9yOiBmdW5jdGlvbihlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUucmVh ZHlTdGF0ZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICBhbGVydGlmeS5h bGVydCgnR2V0IE9iamVjdCBOYW1lIEVycm9yJywKKyAgICAgICAgICAgICAg ICAgICAne3sgXygnTm90IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRo ZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gY2xvc2VkLicp IH19JworICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICAg IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg ICB2YXIgbXNnID0gZS5yZXNwb25zZVRleHQ7CisgICAgICAgICAgICAgICAg aWYgKGUucmVzcG9uc2VKU09OICE9IHVuZGVmaW5lZCAmJgorICAgICAgICAg ICAgICAgICAgICBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZyAhPSB1bmRlZmlu ZWQpCisgICAgICAgICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5l cnJvcm1zZzsKKworICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmFsZXJ0KCdH ZXQgT2JqZWN0IE5hbWUgRXJyb3InLCBtc2cpOworICAgICAgICAgICAgICB9 CisgICAgICAgICAgICB9KTsKICAgICAgICAgICB9CiAgICAgICAgICAgZWxz ZSB7Ci0gICAgICAgICAgICBhbGVydGlmeS5hbGVydCgnRG93bmxvYWQgRGF0 YScsICdObyBkYXRhIGlzIGF2YWlsYWJsZSB0byBkb3dubG9hZCcpOworICAg ICAgICAgICAgdmFyIGN1cl90aW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAg ICAgIHZhciBmaWxlbmFtZSA9ICdkYXRhLScgKyBjdXJfdGltZS5nZXRUaW1l KCkgKyAnLmNzdic7CisgICAgICAgICAgICBzZWxmLl90cmlnZ2VyX2Nzdl9k b3dubG9hZChzcWwsIGZpbGVuYW1lKTsKICAgICAgICAgICB9CisKKyAgICAg ICAgfSwKKyAgICAgICAgLy8gVHJpZ2dlciBxdWVyeSByZXN1bHQgZG93bmxv YWQgdG8gY3N2LgorICAgICAgICBfdHJpZ2dlcl9jc3ZfZG93bmxvYWQ6IGZ1 bmN0aW9uKHF1ZXJ5LCBmaWxlbmFtZSkgeworICAgICAgICAgIHZhciBzZWxm ID0gdGhpcywKKyAgICAgICAgICAgIGxpbmsgPSAkKHRoaXMuY29udGFpbmVy KS5maW5kKCIjZG93bmxvYWQtY3N2IiksCisgICAgICAgICAgICB1cmwgPSAi e3sgdXJsX2Zvcignc3FsZWRpdG9yLmluZGV4JykgfX0iICsgInF1ZXJ5X3Rv b2wvZG93bmxvYWQvIiArIHNlbGYudHJhbnNJZDsKKworICAgICAgICAgIHVy bCArPSI/IiArICQucGFyYW0oe3F1ZXJ5OnF1ZXJ5LCBmaWxlbmFtZTpmaWxl bmFtZX0pOworICAgICAgICAgIGxpbmsuYXR0cigic3JjIiwgdXJsKTsKICAg ICAgICAgfSwKIAogICAgICAgICBfYXV0b19yb2xsYmFjazogZnVuY3Rpb24o KSB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIvcHN5 Y29wZzIvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi91dGlscy9kcml2ZXIv cHN5Y29wZzIvX19pbml0X18ucHkKaW5kZXggMGJmY2Y4YS4uZjJhODc4YiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvZHJpdmVyL3BzeWNvcGcy L19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL2RyaXZlci9w c3ljb3BnMi9fX2luaXRfXy5weQpAQCAtMTcsMTAgKzE3LDEyIEBAIGltcG9y dCBkYXRldGltZQogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQg c2VsZWN0CitpbXBvcnQgc3lzCitpbXBvcnQgY3N2CiAKIGltcG9ydCBwc3lj b3BnMgogaW1wb3J0IHBzeWNvcGcyLmV4dHJhcwotZnJvbSBmbGFzayBpbXBv cnQgZywgY3VycmVudF9hcHAsIHNlc3Npb24KK2Zyb20gZmxhc2sgaW1wb3J0 IGcsIGN1cnJlbnRfYXBwLCBzZXNzaW9uLCBSZXNwb25zZQogZnJvbSBmbGFz ay5leHQuYmFiZWwgaW1wb3J0IGdldHRleHQKIGZyb20gZmxhc2suZXh0LnNl Y3VyaXR5IGltcG9ydCBjdXJyZW50X3VzZXIKIGZyb20gcGdhZG1pbi51dGls cy5jcnlwdG8gaW1wb3J0IGRlY3J5cHQKQEAgLTMxLDYgKzMzLDExIEBAIGZy b20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgU2VydmVyLCBVc2VyCiBmcm9tIC5r ZXl3b3JkcyBpbXBvcnQgU2NhbktleXdvcmQKIGZyb20gLi5hYnN0cmFjdCBp bXBvcnQgQmFzZURyaXZlciwgQmFzZUNvbm5lY3Rpb24KIAoraWYgc3lzLnZl cnNpb25faW5mbyA8ICgzLCk6CisgICAgZnJvbSBTdHJpbmdJTyBpbXBvcnQg U3RyaW5nSU8KK2Vsc2U6CisgICAgZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8K KwogXyA9IGdldHRleHQKIAogQVNZTkNfV0FJVF9USU1FT1VUID0gMC4wMSAg IyBpbiBzZWNvbmRzIG9yIDEwIG1pbGxpc2Vjb25kcwpAQCAtMjgwLDcgKzI4 NywxMCBAQCBGYWlsZWQgdG8gY29ubmVjdCB0byB0aGUgZGF0YWJhc2Ugc2Vy dmVyKCN7c2VydmVyX2lkfSkgZm9yIGNvbm5lY3Rpb24gKHtjb25uX2lkfQog ICAgICAgICAjIGF1dG9jb21taXQgZmxhZyBkb2VzIG5vdCB3b3JrIHdpdGgg YXN5bmNocm9ub3VzIGNvbm5lY3Rpb25zLgogICAgICAgICAjIEJ5IGRlZmF1 bHQgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gcnVucyBpbiBhdXRvY29tbWl0 IG1vZGUuCiAgICAgICAgIGlmIHNlbGYuYXN5bmMgPT0gMDoKLSAgICAgICAg ICAgIHNlbGYuY29ubi5hdXRvY29tbWl0ID0gVHJ1ZQorICAgICAgICAgICAg aWYgJ2F1dG9jb21taXQnIGluIGt3YXJncyBhbmQga3dhcmdzWydhdXRvY29t bWl0J10gPT0gRmFsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5jb25uLmF1 dG9jb21taXQgPSBGYWxzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg ICAgICAgICBzZWxmLmNvbm4uYXV0b2NvbW1pdCA9IFRydWUKICAgICAgICAg ICAgIHJlZ2lzdGVyX2RhdGVfdHlwZWNhc3RlcnMoc2VsZi5jb25uKQogCiAg ICAgICAgIHN0YXR1cywgcmVzID0gc2VsZi5leGVjdXRlX3NjYWxhcigiIiIK QEAgLTM4MCwxMSArMzkwLDEyIEBAIFdIRVJFCiAKICAgICAgICAgcmV0dXJu IFRydWUsIE5vbmUKIAotICAgIGRlZiBfX2N1cnNvcihzZWxmKToKKyAgICBk ZWYgX19jdXJzb3Ioc2VsZiwgc2VydmVyX2N1cnNvcj1GYWxzZSk6CiAgICAg ICAgIGN1ciA9IGdldGF0dHIoZywgc3RyKHNlbGYubWFuYWdlci5zaWQpICsg JyMnICsgc2VsZi5jb25uX2lkLCBOb25lKQogCiAgICAgICAgIGlmIHNlbGYu Y29ubmVjdGVkKCkgYW5kIGN1ciBhbmQgbm90IGN1ci5jbG9zZWQ6Ci0gICAg ICAgICAgICByZXR1cm4gVHJ1ZSwgY3VyCisgICAgICAgICAgICBpZiBub3Qg c2VydmVyX2N1cnNvciBvciAoc2VydmVyX2N1cnNvciBhbmQgY3VyLm5hbWUp OgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlLCBjdXIKIAogICAgICAg ICBpZiBub3Qgc2VsZi5jb25uZWN0ZWQoKToKICAgICAgICAgICAgIHN0YXR1 cyA9IEZhbHNlCkBAIC00MTUsNyArNDI2LDEzIEBAIEF0dGVtcHQgdG8gcmVj b25uZWN0IGZhaWxlZCB3aXRoIHRoZSBlcnJvcjoKICAgICAgICAgICAgICAg ICByZXR1cm4gRmFsc2UsIG1zZwogCiAgICAgICAgIHRyeToKLSAgICAgICAg ICAgIGN1ciA9IHNlbGYuY29ubi5jdXJzb3IoY3Vyc29yX2ZhY3Rvcnk9cHN5 Y29wZzIuZXh0cmFzLkRpY3RDdXJzb3IpCisgICAgICAgICAgICBpZiBzZXJ2 ZXJfY3Vyc29yOgorICAgICAgICAgICAgICAgICMgUHJvdmlkaW5nIG5hbWUg dG8gY3Vyc29yIHdpbGwgY3JlYXRlIHNlcnZlciBzaWRlIGN1cnNvci4KKyAg ICAgICAgICAgICAgICBjdXJzb3JfbmFtZSA9ICJDVVJTT1I6ezB9Ii5mb3Jt YXQoc2VsZi5jb25uX2lkKQorICAgICAgICAgICAgICAgIGN1ciA9IHNlbGYu Y29ubi5jdXJzb3IobmFtZT1jdXJzb3JfbmFtZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9mYWN0b3J5PXBzeWNv cGcyLmV4dHJhcy5EaWN0Q3Vyc29yKQorICAgICAgICAgICAgZWxzZToKKyAg ICAgICAgICAgICAgICBjdXIgPSBzZWxmLmNvbm4uY3Vyc29yKGN1cnNvcl9m YWN0b3J5PXBzeWNvcGcyLmV4dHJhcy5EaWN0Q3Vyc29yKQogICAgICAgICBl eGNlcHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6CiAgICAgICAgICAgICBlcnJt c2cgPSBnZXR0ZXh0KCIiIgogRmFpbGVkIHRvIGNyZWF0ZSBjdXJzb3IgZm9y IHBzeWNvcGcyIGNvbm5lY3Rpb24gd2l0aCBlcnJvciBtZXNzYWdlIGZvciB0 aGUgXApAQCAtNDY3LDYgKzQ4NCw4MyBAQCBBdHRlbXB0IHRvIHJlY29ubmVj dCBpdCBmYWlsZWQgd2l0aCB0aGUgZXJyb3I6CiAgICAgICAgIGlmIHNlbGYu YXN5bmMgPT0gMToKICAgICAgICAgICAgIHNlbGYuX3dhaXQoY3VyLmNvbm5l Y3Rpb24pCiAKKyAgICBkZWYgZXhlY3V0ZV9vbl9zZXJ2ZXJfYXNfY3N2KHNl bGYsIHF1ZXJ5LCBwYXJhbXM9Tm9uZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9t c2c9RmFsc2UsIHJlY29yZHM9MjAwMCk6CisgICAgICAgIHN0YXR1cywgY3Vy ID0gc2VsZi5fX2N1cnNvcihzZXJ2ZXJfY3Vyc29yPVRydWUpCisgICAgICAg IHNlbGYucm93X2NvdW50ID0gMAorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgICAgICByZXR1cm4gRmFsc2UsIHN0cihjdXIpCisgICAgICAg IHF1ZXJ5X2lkID0gcmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkKKworICAg ICAgICBjdXJyZW50X2FwcC5sb2dnZXIubG9nKDI1LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJFeGVjdXRlICh3aXRoIHNlcnZlciBjdXJz b3IpIGZvciBzZXJ2ZXIgI3tzZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9IChRdWVy eS1pZDoge3F1ZXJ5X2lkfSk6XG57cXVlcnl9Ii5mb3JtYXQoCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1h bmFnZXIuc2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25uX2lkPXNlbGYuY29ubl9pZCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcXVlcnk9cXVlcnksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lkPXF1ZXJ5X2lkCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs Zi5fX2ludGVybmFsX2Jsb2NraW5nX2V4ZWN1dGUoY3VyLCBxdWVyeSwgcGFy YW1zKQorICAgICAgICBleGNlcHQgcHN5Y29wZzIuRXJyb3IgYXMgcGU6Cisg ICAgICAgICAgICBjdXIuY2xvc2UoKQorICAgICAgICAgICAgZXJybXNnID0g c2VsZi5fZm9ybWF0dGVkX2V4Y2VwdGlvbl9tc2cocGUsIGZvcm1hdHRlZF9l eGNlcHRpb25fbXNnKQorICAgICAgICAgICAgY3VycmVudF9hcHAubG9nZ2Vy LmVycm9yKAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZXhlY3V0ZSBx dWVyeSAoKHdpdGggc2VydmVyIGN1cnNvcikgZm9yIHRoZSBzZXJ2ZXIgI3tz ZXJ2ZXJfaWR9IC0ge2Nvbm5faWR9IChRdWVyeS1pZDoge3F1ZXJ5X2lkfSk6 XG5FcnJvciBNZXNzYWdlOntlcnJtc2d9Ii5mb3JtYXQoCisgICAgICAgICAg ICAgICAgICAgIHNlcnZlcl9pZD1zZWxmLm1hbmFnZXIuc2lkLAorICAgICAg ICAgICAgICAgICAgICBjb25uX2lkPXNlbGYuY29ubl9pZCwKKyAgICAgICAg ICAgICAgICAgICAgcXVlcnk9cXVlcnksCisgICAgICAgICAgICAgICAgICAg IGVycm1zZz1lcnJtc2csCisgICAgICAgICAgICAgICAgICAgIHF1ZXJ5X2lk PXF1ZXJ5X2lkCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQor ICAgICAgICAgICAgcmV0dXJuIEZhbHNlLCBlcnJtc2cKKworICAgICAgICBp bXBvcnQgY29weQorCisgICAgICAgIGRlZiBnZW4oKToKKworICAgICAgICAg ICAgcmVzdWx0cyA9IGN1ci5mZXRjaG1hbnkocmVjb3JkcykKKyAgICAgICAg ICAgIGlmIG5vdCByZXN1bHRzOgorICAgICAgICAgICAgICAgIGlmIG5vdCBj dXIuY2xvc2VkOgorICAgICAgICAgICAgICAgICAgICBjdXIuY2xvc2UoKQor ICAgICAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICAgICBjb2x1bW5z ID0gY3VyLmRlc2NyaXB0aW9uIGFuZCBbCisgICAgICAgICAgICAgICAgICAg IGNvcHkuZGVlcGNvcHkoZGVzYy5fYXNkaWN0KCkpIGZvciBkZXNjIGluIGN1 ci5kZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgICAgICBdIG9yIFtdCisK KyAgICAgICAgICAgIGhlYWRlciA9IFtjWyduYW1lJ10gZm9yIGMgaW4gY29s dW1uc10KKworICAgICAgICAgICAgYXJnc19jc3ZfaW8gPSBTdHJpbmdJTygp CisKKyAgICAgICAgICAgIGNzdl93cml0ZXIgPSBjc3Yud3JpdGVyKAorICAg ICAgICAgICAgICAgIGFyZ3NfY3N2X2lvLCBkZWxpbWl0ZXI9c3RyKCcsJyks IHF1b3Rpbmc9Y3N2LlFVT1RFX05PTk5VTUVSSUMKKyAgICAgICAgICAgICkK KyAgICAgICAgICAgIGNzdl93cml0ZXIud3JpdGVyb3coaGVhZGVyKQorICAg ICAgICAgICAgY3N2X3dyaXRlci53cml0ZXJvd3MocmVzdWx0cykKKworICAg ICAgICAgICAgeWllbGQgYXJnc19jc3ZfaW8uZ2V0dmFsdWUoKS5zdHJpcChz dHIoJ1xyXG4nKSkKKworICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAg ICAgICAgICAgICByZXN1bHRzID0gY3VyLmZldGNobWFueShyZWNvcmRzKQor CisgICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdHM6CisgICAgICAgICAg ICAgICAgICAgIGlmIG5vdCBjdXIuY2xvc2VkOgorICAgICAgICAgICAgICAg ICAgICAgICAgY3VyLmNsb3NlKCkKKyAgICAgICAgICAgICAgICAgICAgYnJl YWsKKworICAgICAgICAgICAgICAgIGFyZ3NfY3N2X2lvID0gU3RyaW5nSU8o KQorCisgICAgICAgICAgICAgICAgY3N2X3dyaXRlciA9IGNzdi53cml0ZXIo CisgICAgICAgICAgICAgICAgICAgIGFyZ3NfY3N2X2lvLCBkZWxpbWl0ZXI9 c3RyKCcsJyksIHF1b3Rpbmc9Y3N2LlFVT1RFX01JTklNQUwKKyAgICAgICAg ICAgICAgICApCisKKyAgICAgICAgICAgICAgICBjc3Zfd3JpdGVyLndyaXRl cm93cyhyZXN1bHRzKQorICAgICAgICAgICAgICAgIHlpZWxkIGFyZ3NfY3N2 X2lvLmdldHZhbHVlKCkuc3RyaXAoc3RyKCdcclxuJykpCisKKyAgICAgICAg cmV0dXJuIFRydWUsIGdlbgorCiAgICAgZGVmIGV4ZWN1dGVfc2NhbGFyKHNl bGYsIHF1ZXJ5LCBwYXJhbXM9Tm9uZSwgZm9ybWF0dGVkX2V4Y2VwdGlvbl9t c2c9RmFsc2UpOgogICAgICAgICBzdGF0dXMsIGN1ciA9IHNlbGYuX19jdXJz b3IoKQogICAgICAgICBzZWxmLnJvd19jb3VudCA9IDAKQEAgLTExNDMsNyAr MTIzNyw4IEBAIGNsYXNzIFNlcnZlck1hbmFnZXIob2JqZWN0KToKICAgICAg ICAgcmFpc2UgRXhjZXB0aW9uKCJJbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxh YmxlLiIpCiAKICAgICBkZWYgY29ubmVjdGlvbigKLSAgICAgICAgICAgIHNl bGYsIGRhdGFiYXNlPU5vbmUsIGNvbm5faWQ9Tm9uZSwgYXV0b19yZWNvbm5l Y3Q9VHJ1ZSwgZGlkPU5vbmUKKyAgICAgICAgICAgIHNlbGYsIGRhdGFiYXNl PU5vbmUsIGNvbm5faWQ9Tm9uZSwgYXV0b19yZWNvbm5lY3Q9VHJ1ZSwgZGlk PU5vbmUsCisgICAgICAgICAgICBhc3luYz1Ob25lCiAgICAgKToKICAgICAg ICAgbXNnX2FjdGl2ZV9jb25uID0gZ2V0dGV4dCgKICAgICAgICAgICAgICJT ZXJ2ZXIgaGFzIG5vIGFjdGl2ZSBjb25uZWN0aW9uLiBQbGVhc2UgY29ubmVj dCB0byB0aGUgc2VydmVyLiIKQEAgLTExODksNyArMTI4NCwxMCBAQCBXSEVS RSBkYi5vaWQgPSB7MH0iIiIuZm9ybWF0KGRpZCkpCiAgICAgICAgIGlmIG15 X2lkIGluIHNlbGYuY29ubmVjdGlvbnM6CiAgICAgICAgICAgICByZXR1cm4g c2VsZi5jb25uZWN0aW9uc1tteV9pZF0KICAgICAgICAgZWxzZToKLSAgICAg ICAgICAgIGFzeW5jID0gMSBpZiBjb25uX2lkIGlzIG5vdCBOb25lIGVsc2Ug MAorICAgICAgICAgICAgaWYgYXN5bmMgaXMgTm9uZToKKyAgICAgICAgICAg ICAgICBhc3luYyA9IDEgaWYgY29ubl9pZCBpcyBub3QgTm9uZSBlbHNlIDAK KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXN5bmMgPSAx IGlmIGFzeW5jIGlzIFRydWUgZWxzZSAwCiAgICAgICAgICAgICBzZWxmLmNv bm5lY3Rpb25zW215X2lkXSA9IENvbm5lY3Rpb24oCiAgICAgICAgICAgICAg ICAgc2VsZiwgbXlfaWQsIGRhdGFiYXNlLCBhdXRvX3JlY29ubmVjdCwgYXN5 bmMKICAgICAgICAgICAgICkK --94eb2c04daa2ed9f8a053757c39e 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 --94eb2c04daa2ed9f8a053757c39e--