Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1aMVdX-0007XF-Eg for pgadmin-hackers@arkaria.postgresql.org; Fri, 22 Jan 2016 06:55:59 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1aMVdW-0000nC-Sr for pgadmin-hackers@arkaria.postgresql.org; Fri, 22 Jan 2016 06:55:58 +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) (envelope-from ) id 1aMVdG-0000Xv-Qp for pgadmin-hackers@postgresql.org; Fri, 22 Jan 2016 06:55:43 +0000 Received: from mail-wm0-x230.google.com ([2a00:1450:400c:c09::230]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1aMVdC-0004Da-ML for pgadmin-hackers@postgresql.org; Fri, 22 Jan 2016 06:55:41 +0000 Received: by mail-wm0-x230.google.com with SMTP id b14so116596683wmb.1 for ; Thu, 21 Jan 2016 22:55:38 -0800 (PST) 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 :content-type; bh=6GAbG76qn6+CuisGYME6kG44FGdir+H6MY5hNZ4XERw=; b=RZHelx4mWUpEBkHEQCxQh/jHkTZyf7RDJlRiVXzaO0PjguWzx3G980jZr9+o+k+0Kw oLd0uuvIjUE3Lul0lGsZ3s8gdC5kodHaNCJn4CzlZFQSzmaZyE6dZS8/d7VjNJkIAqAs SVaoZYbGReRoSv9CB7777YO2F/sm3m2999nTDhZyRMc9MpD3TrZy1zb9kqrtox/itCFr njyXRisCiM0j+V9fZ3xgK23m7YBpVtFt+MGDEcP8xiCouhiU3pV5PmuW2eeh3xePErr2 xPyuoH0K+R+Q3WXVIr/+9bkK1huPGlhaEq66yMWbF48uJaj5uO1eM8Fzesh+GUdV2t1E 5q2g== 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:content-type; bh=6GAbG76qn6+CuisGYME6kG44FGdir+H6MY5hNZ4XERw=; b=AnUk0gYvrpxV+A3Fk6c9idafLWi+sJfhfnMVavm4J1508Sr7ef8MLc5g2p93MeryNI TxbnRpoxy94hUpntzI2Uj4e7IF3c0LsKVXi1S0dIzk+DWXWvMYuNyhoLqqVyxs266HYk 0hGtF/Q2JUqn5yOV2wm3/8V8c74Sa3daMZItAdm640Ej0uNdcBdtgFR49u1MhL4uHUTp IXYYRA7UorMgXOgfSO4ttGt8Bb3AxQjKgdz+Fv1TWtBB77YA+I0dMb2nH24zLYxluDN8 OZeT0UajWIvzjcs2SJosPY+mturHXlLdAPEh1yjNfxl5okxNEOgzX2MUfVcWjhc0V8q/ gyyg== X-Gm-Message-State: AG10YOS+w55HWq1Rw925CLAuMDEaA63MtI4/6nRg0i1RAru7d9UNt7so8zzVe2A5/P9TFbVT1viH4kHWbn9i0VJs X-Received: by 10.194.79.227 with SMTP id m3mr1342048wjx.5.1453445736359; Thu, 21 Jan 2016 22:55:36 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.15.66 with HTTP; Thu, 21 Jan 2016 22:55:06 -0800 (PST) In-Reply-To: References: From: Surinder Kumar Date: Fri, 22 Jan 2016 12:25:06 +0530 Message-ID: Subject: Re: [pgAdmin4] [Patch]: Extension Module To: Neel Patel , pgadmin-hackers Content-Type: multipart/mixed; boundary=047d7bf0c6b6d1bc370529e6b43f 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 --047d7bf0c6b6d1bc370529e6b43f Content-Type: multipart/alternative; boundary=047d7bf0c6b6d1bc330529e6b43d --047d7bf0c6b6d1bc330529e6b43d Content-Type: text/plain; charset=UTF-8 Hi Please find the updated patch with following fixes: 1. Missing `owner` column under properties for `extensions collection`. Add cell: 'string' property for owner fixed it 2. Schema object identifier should be wrapped with in function qtIdent . Using function `qtIdent` for schema in create.sql fixed it. Thanks Surinder Kumar On Thu, Jan 21, 2016 at 8:04 PM, Surinder Kumar < surinder.kumar@enterprisedb.com> wrote: > Hi, > > I've fixed the issues given in review comments. > > Please find the attached updated patch for extension module, review it and > let me know for any comments. > > On Mon, Jan 18, 2016 at 5:44 PM, Surinder Kumar < > surinder.kumar@enterprisedb.com> wrote: > >> Thanks Neel for reviewing. I'll send the patch with the fixes suggested. >> >> On Mon, Jan 18, 2016 at 4:52 PM, Neel Patel >> wrote: >> >>> Hi Surinder, >>> >>> We have applied/tested the patch and below are the review comments. >>> >>> 1. When we select the extension "plpython3u", "plperl", "plperu" etc. >>> then it gives 'TypeError' in Javascript. >>> TypeError: d.version is undefined >>> 'version': (!_.isNull(d.version[0]) ? d.version[0]: '') >>> >>> We are getting this error while selecting many extensions so please test >>> with all types of extensions, it should not give any error at client side. >>> >> Fixed. > >> >>> 2. Use 2 space indentation instead of 4 space in javascript file. >>> >> Done > >> >>> 3. In "validate" function in "extension.js" file, validate only the >>> changed values not all, and "this.get('name') - should be called only one >>> time not multiple >>> time". >>> >> Fixed. > >> >>> 4. When we pass object identifier, use the function 'qtIdent', and for >>> the values, use function 'qtLiteral' in all the sql files. >>> >> Done. > >> >>> 5. By default, when we create the extension, "schema_name" and "version" >>> should not be be set with value. It should be set blank by default. >>> >> Kept blank while creating extension. > >> >>> 6. When we create any extension like "citext" then we are not able to >>> create the same extension again after deleting the same extension. May be >>> issue >>> with caching mechanism. >>> >> It is an architecture change. we'll fix it later. > >> >>> 7. When we remove the schema_name during the "Edit" operation then wrong >>> SQL is getting generated. >>> >> Fixed, Now it generates right SQL. > >> >>> >> 8. Remove "Use Slony" option. As discussed with Ashesh, we will implement >>> it as separate module. >>> >> Removed. > >> >>> Please fix the above issues. Let us know if you want more information. >>> >>> Thanks, >>> Neel Patel >>> >>> >>> Thanks, >>> Neel Patel >>> >>> >>> On Tue, Jan 12, 2016 at 1:15 PM, Surinder Kumar < >>> surinder.kumar@enterprisedb.com> wrote: >>> >>>> Please find the updated patch with following changes: >>>> >>>> 1. corrected copyright. >>>> 2. Added proper comment for script_module function in __init__.py >>>> file. >>>> 3. Renamed collection Node's label to Extensions in extensions.js >>>> file. >>>> >>>> >>>> On Tue, Jan 12, 2016 at 12:44 PM, Surinder Kumar < >>>> surinder.kumar@enterprisedb.com> wrote: >>>> >>>>> Hi, >>>>> >>>>> Please find attached patch for the extension module. >>>>> Please review it and Let me know for any comments. >>>>> >>>>> >>>>> Thanks, >>>>> Surinder Kumar >>>>> >>>> >>>> >>>> >>>> -- >>>> Sent via pgadmin-hackers mailing list (pgadmin-hackers@postgresql.org) >>>> To make changes to your subscription: >>>> http://www.postgresql.org/mailpref/pgadmin-hackers >>>> >>>> >>> >> > --047d7bf0c6b6d1bc330529e6b43d Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi

Please find the updated patch with f= ollowing fixes:
1. Missing `owner` column under properties for `e= xtensions collection`. Add cell: 'string' property for owner fixed = it
2. Schema object identifier should be wrapped with in function= qtIdent . Using function `qtIdent` for schema in create.sql fixed it.


Thanks
Surinder Kumar

On Thu, Jan 2= 1, 2016 at 8:04 PM, Surinder Kumar <surinder.kumar@enterpris= edb.com> wrote:
Hi,

I've fixed the issues given in review comm= ents.

Please find the attached updated patch for e= xtension module, review it and let me know for any comments.

On Mon, Jan 18, 2016 at 5:44 PM, Surinder Kumar <surinder.k= umar@enterprisedb.com> wrote:
Thanks Neel for reviewing. I'll send the patch with= the fixes suggested.

On Mon, Jan 18, 2016 at 4:52 PM, Neel Patel <neel.patel@enterprisedb.com> wrote:
Hi Surinder,

We have appl= ied/tested the patch and below are the review comments.

=
1. When we select the extension "plpython3u", "pl= perl", "plperu" etc. then it gives 'TypeError' in Ja= vascript.
TypeError: d.version is undefined
'versio= n': (!_.isNull(d.version[0]) ? d.version[0]: '')

=
We are getting this error while selecting many extensions so ple= ase test with all types of extensions, it should not give any error at clie= nt side.
Fixed.=C2=A0

2.=C2=A0 = Use 2 space indentation instead of 4 space in javascript file.
<= /div>
Done

3. In "validate" function in &quo= t;extension.js" file, validate only the changed values not all, and &q= uot;this.get('name') - should be called only one time not multiple= =C2=A0
=C2=A0 =C2=A0 time".
Fixed.=C2=A0
<= br>
4.=C2=A0When we pass object = identifier, use the function 'qtIdent', and for the values, use fun= ction =C2=A0'qtLiteral' in all the sql files.
Done.=C2=A0

5. By default, when we create the extension,= "schema_name" and "version" should not be be set with = value. It should be set blank by default.
Kept blank while creating extension= .=C2=A0

6. When we create any extension = like "citext" then we are not able to create the same extension a= gain after deleting the same extension. May be issue=C2=A0
=C2=A0= =C2=A0 with caching mechanism.
<= /div>
It is an architecture change. we'll fix i= t later.=C2=A0

7. When we remove the sc= hema_name during the "Edit" operation then wrong SQL is getting g= enerated.
Fixed, Now it generates right SQL.
=C2=A0
=
8. Remove "Use Slony" option. A= s discussed with Ashesh, we will implement it as separate module.
Removed.=C2= =A0

Please fix the above issues. Let us = know if you want more information.

Thanks,
Neel Patel


Thanks,
Nee= l Patel


On Tue, Jan 12, 2016 at 1:15 PM, Surinder Kumar = <surinder.kumar@enterprisedb.com> wrote:
Please = find the updated patch with following changes:
  1. corrected copyri= ght.
  2. Added proper comment for script_module function in __init__.py= file.
  3. Renamed collection Node's label to Extensions in extensi= ons.js file.

=
On Tue, Jan 12, 2016 at 12:44 PM, Surinder Kumar= <surinder.kumar@enterprisedb.com> wrote:
<= blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px= #ccc solid;padding-left:1ex">
Hi,

Please find attached patch for the extension module.
Please review= it and Let me know for any comments.


Thanks,
Surinder Kumar



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





--047d7bf0c6b6d1bc330529e6b43d-- --047d7bf0c6b6d1bc370529e6b43f Content-Type: application/octet-stream; name="extension_v3.patch" Content-Disposition: attachment; filename="extension_v3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ijpc349b1 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vw cy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5IGIv d2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0 YWJhc2VzL2V4dGVuc2lvbnMvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uOGFlMWJkNwotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJz L2RhdGFiYXNlcy9leHRlbnNpb25zL19faW5pdF9fLnB5CkBAIC0wLDAgKzEs MzczIEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBw Z0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAo QykgMjAxMyAtIDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0K KyMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCitpbXBvcnQganNvbgorZnJvbSBmbGFzayBpbXBvcnQgcmVuZGVyX3Rl bXBsYXRlLCBtYWtlX3Jlc3BvbnNlLCByZXF1ZXN0LCBqc29uaWZ5Citmcm9t IGZsYXNrLmV4dC5iYWJlbCBpbXBvcnQgZ2V0dGV4dAorZnJvbSBwZ2FkbWlu LnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgXAorICAg IG1ha2VfcmVzcG9uc2UgYXMgYWpheF9yZXNwb25zZSwgaW50ZXJuYWxfc2Vy dmVyX2Vycm9yCitmcm9tIHBnYWRtaW4uYnJvd3Nlci51dGlscyBpbXBvcnQg Tm9kZVZpZXcKK2Zyb20gcGdhZG1pbi5icm93c2VyLmNvbGxlY3Rpb24gaW1w b3J0IENvbGxlY3Rpb25Ob2RlTW9kdWxlCitpbXBvcnQgcGdhZG1pbi5icm93 c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRhYmFzZXMgYXMgZGF0YWJh c2VzCitmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgcHJlY29uZGl0 aW9uX3JlcXVpcmVkCitmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9y dCBnZXRfZHJpdmVyCitmcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9E UklWRVIKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCisKK2NsYXNz IEV4dGVuc2lvbk1vZHVsZShDb2xsZWN0aW9uTm9kZU1vZHVsZSk6CisgICAg Tk9ERV9UWVBFID0gImV4dGVuc2lvbiIKKyAgICBDT0xMRUNUSU9OX0xBQkVM ID0gZ2V0dGV4dCgiRXh0ZW5zaW9ucyIpCisKKyAgICBkZWYgX19pbml0X18o c2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc3VwZXIoRXh0ZW5z aW9uTW9kdWxlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCisK KyAgICBkZWYgZ2V0X25vZGVzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAg ICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIGNvbGxlY3Rpb24gbm9k ZQorICAgICAgICAiIiIKKyAgICAgICAgeWllbGQgc2VsZi5nZW5lcmF0ZV9i cm93c2VyX2NvbGxlY3Rpb25fbm9kZShkaWQpCisKKyAgICBAcHJvcGVydHkK KyAgICBkZWYgc2NyaXB0X2xvYWQoc2VsZik6CisgICAgICAgICIiIgorICAg ICAgICBMb2FkIHRoZSBtb2R1bGUgc2NyaXB0IGZvciBleHRlbnNpb24sIHdo ZW4gYW55IG9mIHRoZSBkYXRhYmFzZSBub2RlIGlzCisgICAgICAgIGluaXRp YWxpemVkLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGRhdGFiYXNl cy5EYXRhYmFzZU1vZHVsZS5OT0RFX1RZUEUKKworCitibHVlcHJpbnQgPSBF eHRlbnNpb25Nb2R1bGUoX19uYW1lX18pCisKKworY2xhc3MgRXh0ZW5zaW9u VmlldyhOb2RlVmlldyk6CisgICAgbm9kZV90eXBlID0gYmx1ZXByaW50Lm5v ZGVfdHlwZQorCisgICAgcGFyZW50X2lkcyA9IFsKKyAgICAgICAgICAgIHsn dHlwZSc6ICdpbnQnLCAnaWQnOiAnZ2lkJ30sCisgICAgICAgICAgICB7J3R5 cGUnOiAnaW50JywgJ2lkJzogJ3NpZCd9LAorICAgICAgICAgICAgeyd0eXBl JzogJ2ludCcsICdpZCc6ICdkaWQnfQorICAgICAgICAgICAgXQorICAgIGlk cyA9IFsKKyAgICAgICAgICAgIHsndHlwZSc6ICdpbnQnLCAnaWQnOiAnZWlk J30KKyAgICAgICAgICAgIF0KKworICAgIG9wZXJhdGlvbnMgPSBkaWN0KHsK KyAgICAgICAgJ29iaic6IFsKKyAgICAgICAgICAgIHsnZ2V0JzogJ3Byb3Bl cnRpZXMnLCAnZGVsZXRlJzogJ2RlbGV0ZScsICdwdXQnOiAndXBkYXRlJ30s CisgICAgICAgICAgICB7J2dldCc6ICdsaXN0JywgJ3Bvc3QnOiAnY3JlYXRl J30KKyAgICAgICAgXSwKKyAgICAgICAgJ2RlbGV0ZSc6IFt7J2RlbGV0ZSc6 ICdkZWxldGUnfV0sCisgICAgICAgICdub2Rlcyc6IFt7J2dldCc6ICdub2Rl J30sIHsnZ2V0JzogJ25vZGVzJ31dLAorICAgICAgICAnc3FsJzogW3snZ2V0 JzogJ3NxbCd9XSwKKyAgICAgICAgJ21zcWwnOiBbeydnZXQnOiAnbXNxbCd9 LCB7J2dldCc6ICdtc3FsJ31dLAorICAgICAgICAnc3RhdHMnOiBbeydnZXQn OiAnc3RhdGlzdGljcyd9XSwKKyAgICAgICAgJ2RlcGVuZGVuY3knOiBbeydn ZXQnOiAnZGVwZW5kZW5jaWVzJ31dLAorICAgICAgICAnZGVwZW5kZW50Jzog W3snZ2V0JzogJ2RlcGVuZGVudHMnfV0sCisgICAgICAgICdtb2R1bGUuanMn OiBbe30sIHt9LCB7J2dldCc6ICdtb2R1bGVfanMnfV0sCisgICAgICAgICdh dmFpbHMnOiBbe30sIHsnZ2V0JzogJ2F2YWlscyd9XSwKKyAgICAgICAgJ3Nj aGVtYXMnOiBbe30sIHsnZ2V0JzogJ3NjaGVtYXMnfV0sCisgICAgICAgICdj aGlsZHJlbic6IFt7J2dldCc6ICdjaGlsZHJlbid9XQorICAgIH0pCisKKyAg ICBkZWYgY2hlY2tfcHJlY29uZGl0aW9uKGYpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlaGF2ZSBhcyBhIGRlY29yYXRv ciB3aGljaCB3aWxsIGNoZWNrcworICAgICAgICBkYXRhYmFzZSBjb25uZWN0 aW9uIGJlZm9yZSBydW5uaW5nIHZpZXcsIGl0IHdpbGwgYWxzbyBhdHRhY2hl cworICAgICAgICBtYW5hZ2VyLGNvbm4gJiB0ZW1wbGF0ZV9wYXRoIHByb3Bl cnRpZXMgdG8gc2VsZgorICAgICAgICAiIiIKKyAgICAgICAgQHdyYXBzKGYp CisgICAgICAgIGRlZiB3cmFwKCphcmdzLCAqKmt3YXJncyk6CisgICAgICAg ICAgICAjIEhlcmUgYXJnc1swXSB3aWxsIGhvbGQgc2VsZiAmIGt3YXJncyB3 aWxsIGhvbGQgZ2lkLHNpZCxkaWQKKyAgICAgICAgICAgIHNlbGYgPSBhcmdz WzBdCisgICAgICAgICAgICBzZWxmLm1hbmFnZXIgPSBnZXRfZHJpdmVyKFBH X0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoa3dhcmdzWydz aWQnXSkKKyAgICAgICAgICAgIHNlbGYuY29ubiA9IHNlbGYubWFuYWdlci5j b25uZWN0aW9uKGRpZD1rd2FyZ3NbJ2RpZCddKQorICAgICAgICAgICAgc2Vs Zi50ZW1wbGF0ZV9wYXRoID0gJ2V4dGVuc2lvbnMvc3FsJworCisgICAgICAg ICAgICByZXR1cm4gZigqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHJldHVy biB3cmFwCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGxp c3Qoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAgICIiIgorICAgICAg ICBJdCBmZXRjaGVzIGFsbCBleHRlbnNpb25zIHByb3BlcnRpZXMgYW5kIHJl bmRlciBpbnRvIHByb3BlcnRpZXMKKyAgICAgICAgdGFiCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pKQorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQor CisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4g aW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKyAgICAgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAgICAgcmVzcG9u c2U9cmVzWydyb3dzJ10sCisgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAor ICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgbm9kZXMoc2VsZiwgZ2lkLCBzaWQsIGRpZCk6CisgICAgICAg ICIiIgorICAgICAgICBJdCBsaXN0cyBkb3duIHRoZSBhbGwgZXh0ZW5zaW9u cyB1bmRlciB0aGUgRXh0ZW5zaW9ucyBDb2xsZWN0aW9uIG5vZGUKKyAgICAg ICAgIiIiCisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIFNRTCA9IHJlbmRl cl90ZW1wbGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAncHJv cGVydGllcy5zcWwnXSkpCisgICAgICAgIHN0YXR1cywgcnNldCA9IHNlbGYu Y29ubi5leGVjdXRlXzJkYXJyYXkoU1FMKQorICAgICAgICBpZiBub3Qgc3Rh dHVzOgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJv cihlcnJvcm1zZz1yc2V0KQorCisgICAgICAgIGZvciByb3cgaW4gcnNldFsn cm93cyddOgorICAgICAgICAgICAgcmVzLmFwcGVuZCgKKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5ibHVlcHJpbnQuZ2VuZXJhdGVfYnJvd3Nlcl9ub2Rl KAorICAgICAgICAgICAgICAgICAgICAgICAgcm93WydlaWQnXSwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAgICAgJ2ljb24tZXh0ZW5zaW9uJworICAgICAgICAgICAgICAg ICAgICApKQorCisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgZGF0YT1yZXMsCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgcHJvcGVydGllcyhzZWxmLCBnaWQsIHNp ZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgSXQgZmV0Y2hl cyB0aGUgcHJvcGVydGllcyBvZiBhIHNpbmdsZSBleHRlbnNpb24KKyAgICAg ICAgYW5kIHJlbmRlciBpbiBwcm9wZXJ0aWVzIHRhYgorCisgICAgICAgICIi IgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3Nl bGYudGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLCBlaWQ9ZWlk KQorICAgICAgICBzdGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICAg ICAgcmVzcG9uc2U9cmVzWydyb3dzJ11bMF0sCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIEBjaGVja19w cmVjb25kaXRpb24KKyAgICBkZWYgY3JlYXRlKHNlbGYsIGdpZCwgc2lkLCBk aWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxs IGNyZWF0ZXMgbmV3IHRoZSBleHRlbnNpb24gb2JqZWN0CisgICAgICAgICIi IgorICAgICAgICByZXF1aXJlZF9hcmdzID0gWworICAgICAgICAgICAgJ25h bWUnCisgICAgICAgIF0KKworICAgICAgICBkYXRhID0gcmVxdWVzdC5mb3Jt IGlmIHJlcXVlc3QuZm9ybSBlbHNlIGpzb24ubG9hZHMocmVxdWVzdC5kYXRh LmRlY29kZSgpKQorICAgICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6 CisgICAgICAgICAgICBpZiBhcmcgbm90IGluIGRhdGE6CisgICAgICAgICAg ICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAgICAg ICAgICAgICAgc3RhdHVzPTQxMCwKKyAgICAgICAgICAgICAgICAgICAgc3Vj Y2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICBlcnJvcm1zZz1nZXR0ZXh0 KAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkbid0IGZpbmQgdGhl IHJlcXVpcmVkIHBhcmFtZXRlciAoJXMpLiIgJSBhcmcKKyAgICAgICAgICAg ICAgICAgICAgKQorICAgICAgICAgICAgICAgICkKKworICAgICAgICBzdGF0 dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoCisgICAgICAgICAg ICByZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAgICAgIi8iLmpvaW4o W3NlbGYudGVtcGxhdGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksCisgICAgICAg ICAgICAgICAgZGF0YT1kYXRhCisgICAgICAgICAgICAgICAgKQorICAgICAg ICAgICAgKQorCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykK KworICAgICAgICBzdGF0dXMsIHJzZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9k aWN0KAorICAgICAgICAgICAgcmVuZGVyX3RlbXBsYXRlKAorICAgICAgICAg ICAgICAgICIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0 aWVzLnNxbCddKSwKKyAgICAgICAgICAgICAgICBlbmFtZT1kYXRhWyduYW1l J10KKyAgICAgICAgICAgICkKKyAgICAgICAgKQorCisgICAgICAgIGlmIG5v dCBzdGF0dXM6CisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVy X2Vycm9yKGVycm9ybXNnPXJzZXQpCisKKyAgICAgICAgZm9yIHJvdyBpbiBy c2V0Wydyb3dzJ106CisgICAgICAgICAgICByZXR1cm4ganNvbmlmeSgKKyAg ICAgICAgICAgICAgbm9kZT1zZWxmLmJsdWVwcmludC5nZW5lcmF0ZV9icm93 c2VyX25vZGUoCisgICAgICAgICAgICAgICAgICAgIHJvd1snZWlkJ10sCisg ICAgICAgICAgICAgICAgICAgIHJvd1snbmFtZSddLAorICAgICAgICAgICAg ICAgICAgICAnaWNvbi1leHRlbnNpb24nCisgICAgICAgICAgICAgICAgICAg ICkKKyAgICAgICAgICAgICkKKworICAgIEBjaGVja19wcmVjb25kaXRpb24K KyAgICBkZWYgdXBkYXRlKHNlbGYsIGdpZCwgc2lkLCBkaWQsIGVpZCk6Cisg ICAgICAgICIiIgorICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRl IGV4dGVuc2lvbiBvYmplY3QKKyAgICAgICAgIiIiCisgICAgICAgIGRhdGEg PSByZXF1ZXN0LmZvcm0gaWYgcmVxdWVzdC5mb3JtIGVsc2UganNvbi5sb2Fk cyhyZXF1ZXN0LmRhdGEuZGVjb2RlKCkpCisgICAgICAgIFNRTCA9IHNlbGYu Z2V0U1FMKGdpZCwgc2lkLCBkYXRhLCBkaWQsIGVpZCkKKworICAgICAgICB0 cnk6CisgICAgICAgICAgICBpZiBTUUwgYW5kIFNRTC5zdHJpcCgnXG4nKSBh bmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgICAg ICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJlcykKKworICAg ICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAg ICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICAg ICAgaW5mbz0iRXh0ZW5zaW9uIHVwZGF0ZWQiLAorICAgICAgICAgICAgICAg ICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6IGVp ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQsCisgICAg ICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkCisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNl OgorICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAg ICAgICAgICAgaW5mbz0iTm90aGluZyB0byB1cGRhdGUiLAorICAgICAgICAg ICAgICAgICAgICBkYXRhPXsKKyAgICAgICAgICAgICAgICAgICAgICAgICdp ZCc6IGRpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICdzaWQnOiBzaWQs CisgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogZ2lkCisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICApCisKKyAgICAgICAg ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGlu dGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCisKKyAgICBA Y2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIGRlbGV0ZShzZWxmLCBnaWQs IHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBm dW5jdGlvbiB3aWxsIGRlbGV0ZSBkcm9wL2Ryb3AgY2FzY2FkZSB0aGUgZXh0 ZW5zaW9uIG9iamVjdAorICAgICAgICAiIiIKKyAgICAgICAgY2FzY2FkZSA9 IFRydWUgaWYgc2VsZi5jbWQgPT0gJ2RlbGV0ZScgZWxzZSBGYWxzZQorICAg ICAgICB0cnk6CisgICAgICAgICAgICAjIGNoZWNrIGlmIGV4dGVuc2lvbiB3 aXRoIGVpZCBleGlzdHMKKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1w bGF0ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNx bCddKSwgZWlkPWVpZCkKKyAgICAgICAgICAgIHN0YXR1cywgbmFtZSA9IHNl bGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisgICAgICAgICAgICBpZiBu b3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9bmFtZSkKKyAgICAgICAgICAgICMgZHJv cCBleHRlbnNpb24KKyAgICAgICAgICAgIFNRTCA9IHJlbmRlcl90ZW1wbGF0 ZSgiLyIuam9pbihbc2VsZi50ZW1wbGF0ZV9wYXRoLCAnZGVsZXRlLnNxbCdd KSwgbmFtZT1uYW1lLCBjYXNjYWRlPWNhc2NhZGUpCisgICAgICAgICAgICBz dGF0dXMsIHJlcyA9IHNlbGYuY29ubi5leGVjdXRlX3NjYWxhcihTUUwpCisg ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAgICAgIHJl dHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisg ICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAg ICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAgICAgICAgICAgICBpbmZvPWdl dHRleHQoIkV4dGVuc2lvbiBkcm9wcGVkIiksCisgICAgICAgICAgICAgICAg ZGF0YT17CisgICAgICAgICAgICAgICAgICAgICdpZCc6IGRpZCwKKyAgICAg ICAgICAgICAgICAgICAgJ3NpZCc6IHNpZCwKKyAgICAgICAgICAgICAgICAg ICAgJ2dpZCc6IGdpZCwKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICApCisKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAg ICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1z dHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAgZGVmIG1z cWwoc2VsZiwgZ2lkLCBzaWQsIGRpZCwgZWlkPU5vbmUpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB0byByZXR1cm4gbW9kaWZpZWQg U1FMCisgICAgICAgICIiIgorICAgICAgICBkYXRhID0gcmVxdWVzdC5hcmdz LmNvcHkoKQorICAgICAgICBTUUwgPSBzZWxmLmdldFNRTChnaWQsIHNpZCwg ZGF0YSwgZGlkLCBlaWQpCisgICAgICAgIGlmIFNRTC5zdHJpcCgnXG4nKSBh bmQgU1FMLnN0cmlwKCcgJyk6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRhPVNRTCwK KyAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTIwMAorICAgICAgICAgICAg ICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g bWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICBkYXRh PSctLSBNb2RpZmllZCBTUUwgLS0nLAorICAgICAgICAgICAgICAgICAgICBz dGF0dXM9MjAwCisgICAgICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBn ZXRTUUwoc2VsZiwgZ2lkLCBzaWQsIGRhdGEsIGRpZCwgZWlkPU5vbmUpOgor ICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVy YXRlIHNxbCBmcm9tIG1vZGVsIGRhdGEKKyAgICAgICAgIiIiCisgICAgICAg IHJlcXVpcmVkX2FyZ3MgPSBbCisgICAgICAgICAgICAnbmFtZScKKyAgICAg ICAgXQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBlaWQgaXMgbm90 IE5vbmU6CisgICAgICAgICAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNx bCddKSwgZWlkPWVpZCkKKyAgICAgICAgICAgICAgICBzdGF0dXMsIHJlcyA9 IHNlbGYuY29ubi5leGVjdXRlX2RpY3QoU1FMKQorICAgICAgICAgICAgICAg IGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICAg ICAgICAgIG9sZF9kYXRhID0gcmVzWydyb3dzJ11bMF0KKyAgICAgICAgICAg ICAgICBmb3IgYXJnIGluIHJlcXVpcmVkX2FyZ3M6CisgICAgICAgICAgICAg ICAgICAgIGlmIGFyZyBub3QgaW4gZGF0YToKKyAgICAgICAgICAgICAgICAg ICAgICAgIGRhdGFbYXJnXSA9IG9sZF9kYXRhW2FyZ10KKyAgICAgICAgICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVt cGxhdGVfcGF0aCwgJ3VwZGF0ZS5zcWwnXSksIGRhdGE9ZGF0YSwgb19kYXRh PW9sZF9kYXRhKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg ICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxh dGVfcGF0aCwgJ2NyZWF0ZS5zcWwnXSksIGRhdGE9ZGF0YSkKKyAgICAgICAg ICAgIHJldHVybiBTUUwKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihl cnJvcm1zZz1zdHIoZSkpCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisg ICAgZGVmIGF2YWlscyhzZWxmLCBnaWQsIHNpZCwgZGlkKToKKyAgICAgICAg IiIiCisgICAgICAgIFRoaXMgZnVuY3Rpb24gd2l0aCBmZXRjaCBhbGwgdGhl IGF2YWlsYWJsZSBleHRlbnNpb25zCisgICAgICAgICIiIgorICAgICAgICBT UUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oW3NlbGYudGVtcGxhdGVf cGF0aCwgJ2V4dGVuc2lvbnMuc3FsJ10pKQorICAgICAgICBzdGF0dXMsIHJz ZXQgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cnNldCkKKyAgICAgICAgcmV0dXJuIG1ha2Vf anNvbl9yZXNwb25zZSgKKyAgICAgICAgICAgICAgICBkYXRhPXJzZXRbJ3Jv d3MnXSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwCisgICAgICAgICAg ICAgICAgKQorCisgICAgQGNoZWNrX3ByZWNvbmRpdGlvbgorICAgIGRlZiBz Y2hlbWFzKHNlbGYsIGdpZCwgc2lkLCBkaWQpOgorICAgICAgICAiIiIKKyAg ICAgICAgVGhpcyBmdW5jdGlvbiB3aXRoIGZldGNoIGFsbCB0aGUgc2NoZW1h cworICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdzY2hlbWFzLnNxbCdd KSkKKyAgICAgICAgc3RhdHVzLCByc2V0ID0gc2VsZi5jb25uLmV4ZWN1dGVf ZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6CisgICAgICAgICAg ICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXJzZXQp CisgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAg ICAgICAgICAgZGF0YT1yc2V0Wydyb3dzJ10sCisgICAgICAgICAgICAgICAg c3RhdHVzPTIwMAorICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBtb2R1 bGVfanMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGlzIHByb3Bl cnR5IGRlZmluZXMgKGlmIGphdmFzY3JpcHQpIGV4aXN0cyBmb3IgdGhpcyBu b2RlLgorICAgICAgICBPdmVycmlkZSB0aGlzIHByb3BlcnR5IGZvciB5b3Vy IG93biBsb2dpYy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBtYWtl X3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgK KyAgICAgICAgICAgICAgICAgICAgImV4dGVuc2lvbnMvanMvZXh0ZW5zaW9u cy5qcyIsCisgICAgICAgICAgICAgICAgICAgIF89Z2V0dGV4dAorICAgICAg ICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIDIwMCwgeydDb250 ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC1qYXZhc2NyaXB0J30KKyAgICAg ICAgICAgICAgICApCisKKyAgICBAY2hlY2tfcHJlY29uZGl0aW9uCisgICAg ZGVmIHNxbChzZWxmLCBnaWQsIHNpZCwgZGlkLCBlaWQpOgorICAgICAgICAi IiIKKyAgICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGdlbmVyYXRlIHNxbCBm b3Igc3FsIHBhbmVsIAorICAgICAgICAiIiIKKyAgICAgICAgU1FMID0gcmVu ZGVyX3RlbXBsYXRlKCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdw cm9wZXJ0aWVzLnNxbCddKSwgZWlkPWVpZCkKKyAgICAgICAgc3RhdHVzLCBy ZXMgPSBzZWxmLmNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAgICAgaWYg bm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2 ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAgICAgIHJlc3VsdCA9IHJl c1sncm93cyddWzBdCisKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKFtzZWxmLnRlbXBsYXRlX3BhdGgsICdjcmVhdGUuc3FsJ10p LAorICAgICAgICAgICAgZGF0YT1yZXN1bHQsCisgICAgICAgICAgICBjb25u PXNlbGYuY29ubiwKKyAgICAgICAgICAgIGRpc3BsYXlfY29tbWVudHM9VHJ1 ZQorICAgICAgICApCisKKyAgICAgICAgcmV0dXJuIGFqYXhfcmVzcG9uc2Uo cmVzcG9uc2U9U1FMKQorCitFeHRlbnNpb25WaWV3LnJlZ2lzdGVyX25vZGVf dmlldyhibHVlcHJpbnQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93 c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9u cy9zdGF0aWMvaW1nL2NvbGwtZXh0ZW5zaW9uLnBuZyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRl bnNpb25zL3N0YXRpYy9pbWcvY29sbC1leHRlbnNpb24ucG5nCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmVlZDdjYTk3YTMzZWY1OTVmNDQ4Yjg2MjExNjhk NTMxZjg2ZDUxZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEwMTcKemNt VjxWMHx4d3dQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8we3tSM0NA bHxEMDAwMDFiNWNoXzBJdHApCno9PlB4JV9mU2shTVNeeFooI15OM3A/UiZP ZCtfWXUkaWJqJVReNlJvckIjYm1uITFfNXh9MkppVUg5fG09aSRwewp6UnQ+ N2VzWngocmtITUImbXxrcH1Za0YtaStTOXFIb05UWUNmeF58b0s3Yz5IPkJ4 N25lTUVqamZPOXZablFnemcKem5hc3pvLWB2Yy13dzdLXzByQmVBd3lTPWdt MWpQQ0plSkkkR2o9biZ2eXEqWFZ+flZTZVErP0drekx1KXYrKEtDCno/Jlpw dWklQEQ/NV9vN0s1TCp0ZTxHZHwkRSZUaVVgfXAkdF9VIWZXO1BkUis+KjIh YS1NWiU0dmc2Z007TClMPQp6azUzdzQ3OU0zQkRRK2xmc0JvJnx4b0UzITgp RiRqZF9MWEduNWRVbUhFSmNFJCltfmIoeEszKnYqRXFCPWZrayYKenpONnVA byFfcEkqUChYN2c+az10Zjc2eFAkZElqP1NWZTl1Z1NMcG4+Jn0rbHNGMiNE aVApV2opfGg8TWxoNDQ5CnptNCF1Q1B5fWRMNFZzOFV0Q3YhSHY0TTVjamVk UFBDfSR1alo2e3hOSkJvY1hCeDQoOyl2azhNaGRfQD01bkstIwp6V2YodHxP MD1ZRUY9cnJ6dnhuOTMrXnlCTFQkZipBb0BQSWVOMCsja1dSK3VyY1FNY0oq U0Ytc1Qmcm5mbFZGancKemthS00lRz1uO0AkKl8tcUlUbF9NIXN5R0cmN258 fFJFXjEqRHw7fSQpNHRmbWhyejZBSWJJWkFucXF7eWkqVCVWCnpIaFZXdFY7 JnUxOEkjdGRJRV9OcHprYnJZYzlWZk1MdFBYPFpZeDEmQjVaOU9tM304Vlo3 RmlQZXM5by1URHglMQp6d3s2WHtXeCVGWG9yV3s1a35fa3JNdnszVk1zemV8 dCFgK31nSlI1bUhqK1huWTkoLTtaYipWaEN4JGMxdVUqSGgKelJtRz1HekBS XmhhdlYqMUpZMzNuUj4qVG95azt8K01MTVpiSylfK1hvakhBSDVtPHl2UjtG VDUjJjFpK1lETDBrCnpKSEs2X2s0dWh3R2xwfDFpK0MpIXBpO0orTX5aWUlm QH5SdFo1RDRfMzBqRiNSO2dxKnk7KzJLSipKJj0kaXR8Swp6YnRiXjFQckl+ fSM9KWg7ek1AfXxUXndtMDU/JkQrWTheSjBNSjxtITZrYD4mbkwmNEhDPmQl U1A9YCo0ZF8kM1gKekNvR2FaZlQofEtTX190WkI3VVpRS0QlOE9YYyZLTDdK K0xPOCtSbTBmPUMhezlUI21KN1VERkUwMDAwMWJXJT1KCnowNl55MFcmaSpI MGIpeD5MOyMyZDlZX0VHMDEwcU5TI3RtWTNsamhVM2xqa1ZudyVIXzAwME1j TmxpcnUrWEVYQgp6NkNwKFJiY3B9fTBCJVZ7S354eWlVNjhSMnojdDMrblMo dHQhM35oWV52R2c0MkZMPWBFRU5ObTB7TSE2LXkxOykKelF4RmF6dkxfY0sq Yjxfb2tGZzBkOEhjI1Y9RWhgKWgreVptcGxlaG5sTlpFZHRnUUBoWDBDTmVJ V0VweHchb3lOCm5kY350c3A5VGxpZE96T0MmLSkqfEtIKTNwRDJuZ3IwMDAw ME5rdlhYdTBtamY8S05VegoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2ltZy9leHRlbnNp b24ucG5nIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3Nl cnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvc3RhdGljL2ltZy9leHRlbnNp b24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzYzUzMzM0Nzg4M2Zj MWRlYzczYmNiMjFiMzJmYzU0ZTNjMzE3MzIKR0lUIGJpbmFyeSBwYXRjaAps aXRlcmFsIDk5Ngp6Y21WPEEwfmBFX1ApPGg7M0t8TGswMDBlMU5KTFRxMDAw bUcwMDBtTzB7e1IzQ0BsfEQwMDAwMWI1Y2hfMEl0cCkKej0+UHglYGNPPCVN UTJ6TGZfNkk2Jjl8emRkOTk+LUBhKjJtIUp1bmg3Til8YlJmfC1ieHx6VmJv U0toYV93KGxHCno7bWMtTDRYVlZjUWpiKVIhSW9OPlVUbTZjZFRsUCspNDhh ZVlfRigrIXF2aClmSXEkSSRha0BRTTFEZW1iMnAteQp6Wk5JcGclKlU/Wit8 MGVVbVI/USlAI0B5THRBM3U5WEZodjhtZHYwdGJ+QyFPayk0eGNrYzNXc2E0 PyphVUQ/cEgKekBhZlgtPDtzfGdQLTxIZWN4V0xJVE1uK3t5ZSlEcXtRTEwm YDExTW8/RGc+QV5YJUV7O2xrK015NWB4azxKR0MpCnooVj9KXlBhMHFyOSVV UlVaWVhKfWFIYHxFWHNkNz1WO01rdktIYmNpc0Z6bllZOSplQHFzaV5rcTBw K2M7a34hIwp6IT81TVBxdjVsaS0+IzY/cD8xTkFhbGUzbikwTnVEa2difG5N USR2RXd1cjspJlgoUCVrbExlKCpxd3NibjAoWmUKeiYlbHFCZysqM1MxWlk/ ZG51dFRJbXJ7R05mcHlaMmV0a005WENOcVRDdHI5d2loVk9BVjtpTl91NkQo VEsjeGNmCnpUbmB2ITcoYk90dzRgYj1YQ1E+TGh0PWBpdDx8KCNtdFNGP1c8 UVFjbSQ7VD5tMUJaO0cwKlNVeDglV0d0NyY0Qgp6VjNEK3RiOFJJd2dGM0x1 dSNiTl43RzR2PT0qeVZScC1fQGtqbWVvU2RvYUchelN6V3YhS2BVSFVLQyFN VnVaU2oKemFJQUpWZHBBeUY5dnh5Q2xoJmcralk4R0dlJHU7a2xZdW91VEAq aVZEP3cpPlk7N0VzZWtWQz9EUlIxZ1pfdFFaCnp5S3Y5OVpPeVl+ekB9ODRo Qkt7X0pIbighbDZmTFZiVG5oRlpmTVNmViQ2THVsMHFoR0MyKlo/TlA8VHZo Qkx+cQp6VUJ8MGMjaXZjY3BnKVJvOThHI1dUKmBQPiRhNn0oVzsyPmFJO2x9 V3ordHxmSWVsamxTY0ZTZnJlYVhXWiVmMiMKek1aI3R+emc/a15PT0FVcGhJ MSo0Y3IzVn1RbnM4JmlnWTFAWSNEQFk3SD9iJFQ4VUN0c2JuXzJTJWkyIXJr ISloCnohPkVhTUNjdmFteVI/KFchS0s4JHFGPDMrOUJDYUFVSik4PDlYNkxt RXNzMURWLT5aVEwzZTI9OEVQOSloZmF1bQp6THk+d1hFUnNFZHNERW8oM3pt RSRleGBqc3lJbUcmNz1MT09mb2x+VGNPKiVJTkVtSiU3aX1CfFlSbjElMDAw NFcKelFjaEM8SzwzekgwMDAwMVZvT0l2MEVoKTBOQntyOzMyO2JSYXt2R2Y2 OTUxVTY5RTk0b0VRS0EwMChxUU8rXlJXCnowfi14RzQhJkhCRjh9fWxSIUt4 YlIyYjdeVT8zajJ4UztWdkxYYnR3VHp+PjBXPVFoVkEpeUhfRmtMe30xO2h1 awp6cGFLQ1FLekA9N3Nge2k5N2kwQHZsMlRTOHcxQzc/UiZHN3k7KTFObTw8 T1prQ3tBLWg8Nn1BPENqYkRhUDhxRGUKU1JfNGU2MDAwMDxNTlVNbkxTVGFY LV5MMzcKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFi YXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL2pzL2V4dGVu c2lvbnMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMv c2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5z aW9ucy9qcy9leHRlbnNpb25zLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLjRjY2YwNmEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9qcy9leHRlbnNp b25zLmpzCkBAIC0wLDAgKzEsMTkzIEBACitkZWZpbmUoCisgICAgICBbJ2px dWVyeScsICd1bmRlcnNjb3JlJywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ3Bn YWRtaW4nLCAncGdhZG1pbi5icm93c2VyJywgJ3BnYWRtaW4uYnJvd3Nlci5j b2xsZWN0aW9uJ10sCitmdW5jdGlvbigkLCBfLCBTLCBwZ0FkbWluLCBwZ0Jy b3dzZXIpIHsKKworICBpZiAoIXBnQnJvd3Nlci5Ob2Rlc1snY29sbC1leHRl bnNpb24nXSkgeworICAgIHZhciBleHRlbnNpb25zID0gcGdBZG1pbi5Ccm93 c2VyLk5vZGVzWydjb2xsLWV4dGVuc2lvbiddID0KKyAgICAgIHBnQWRtaW4u QnJvd3Nlci5Db2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgIG5vZGU6ICdl eHRlbnNpb24nLAorICAgICAgICBsYWJlbDogJ3t7IF8oJ0V4dGVuc2lvbicp IH19JywKKyAgICAgICAgdHlwZTogJ2NvbGwtZXh0ZW5zaW9uJywKKyAgICAg ICAgY29sdW1uczogWyduYW1lJywgJ293bmVyJywgJ2NvbW1lbnQnXQorICAg ICAgfSk7CisgIH07CisKKyAgaWYgKCFwZ0Jyb3dzZXIuTm9kZXNbJ2V4dGVu c2lvbiddKSB7CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGVzWydleHRlbnNp b24nXSA9CisgICAgcGdBZG1pbi5Ccm93c2VyLk5vZGUuZXh0ZW5kKHsKKyAg ICAgIHBhcmVudF90eXBlOiAnZGF0YWJhc2UnLAorICAgICAgdHlwZTogJ2V4 dGVuc2lvbicsCisgICAgICBoYXNTUUw6IHRydWUsCisgICAgICBjYW5Ecm9w OiB0cnVlLAorICAgICAgY2FuRHJvcENhc2NhZGU6IHRydWUsCisgICAgICBs YWJlbDogJ3t7IF8oJ0V4dGVuc2lvbicpIH19JywKKworICAgICAgSW5pdDog ZnVuY3Rpb24oKXsKKyAgICAgICAgaWYodGhpcy5pbml0aWFsaXplZCkKKyAg ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5pbml0aWFsaXplZCA9 IHRydWU7CisKKyAgICAgICAgcGdCcm93c2VyLmFkZF9tZW51cyhbeworICAg ICAgICAgIG5hbWU6ICdjcmVhdGVfZXh0ZW5zaW9uX29uX2NvbGwnLCBub2Rl OiAnY29sbC1leHRlbnNpb24nLCBtb2R1bGU6IHRoaXMsCisgICAgICAgICAg YXBwbGllczogWydvYmplY3QnLCAnY29udGV4dCddLCBjYWxsYmFjazogJ3No b3dfb2JqX3Byb3BlcnRpZXMnLAorICAgICAgICAgIGNhdGVnb3J5OiAnY3Jl YXRlJywgcHJpb3JpdHk6IDQsIGxhYmVsOiAne3sgXygnRXh0ZW5zaW9uLi4u JykgfX0nLAorICAgICAgICAgIGljb246ICd3Y1RhYkljb24gcGctaWNvbi1l eHRlbnNpb24nLCBkYXRhOiB7YWN0aW9uOiAnY3JlYXRlJ30KKyAgICAgICAg fSx7CisgICAgICAgICAgbmFtZTogJ2NyZWF0ZV9leHRlbnNpb24nLCBub2Rl OiAnZXh0ZW5zaW9uJywgbW9kdWxlOiB0aGlzLAorICAgICAgICAgIGFwcGxp ZXM6IFsnb2JqZWN0JywgJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzaG93X29i al9wcm9wZXJ0aWVzJywKKyAgICAgICAgICBjYXRlZ29yeTogJ2NyZWF0ZScs IHByaW9yaXR5OiA0LCBsYWJlbDogJ3t7IF8oJ0V4dGVuc2lvbi4uLicpIH19 JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJY29uIHBnLWljb24tZXh0ZW5z aW9uJywgZGF0YToge2FjdGlvbjogJ2NyZWF0ZSd9CisgICAgICAgIH0KKyAg ICAgICAgXSk7CisgICAgICB9LAorICAgICAgbW9kZWw6IHBnQWRtaW4uQnJv d3Nlci5Ob2RlLk1vZGVsLmV4dGVuZCh7CisgICAgICAgIHNjaGVtYTogWwor ICAgICAgICAgIHsKKyAgICAgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiAn e3sgXygnTmFtZScpfX0nLCBmaXJzdF9lbXB0eTogdHJ1ZSwKKyAgICAgICAg ICAgIHR5cGU6ICd0ZXh0JywgbW9kZTogWydwcm9wZXJ0aWVzJywgJ2NyZWF0 ZScsICdlZGl0J10sCisgICAgICAgICAgICB2aXNpYmxlOiB0cnVlLCB1cmw6 J2F2YWlscycsIGRpc2FibGVkOiBmdW5jdGlvbihtKSB7CisgICAgICAgICAg ICAgICAgcmV0dXJuICFtLmlzTmV3KCk7CisgICAgICAgICAgICB9LAorICAg ICAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkYXRhKSB7CisgICAgICAg ICAgICAgIHZhciByZXMgPSBbXTsKKyAgICAgICAgICAgICAgdmFyIGxhYmVs ID0gdGhpcy5tb2RlbC5nZXQoJ25hbWUnKTsKKyAgICAgICAgICAgICAgaWYg KCF0aGlzLm1vZGVsLmlzTmV3KCkpeworICAgICAgICAgICAgICAgIHJlcy5w dXNoKHtsYWJlbDogbGFiZWwsIHZhbHVlOiBsYWJlbH0pOworICAgICAgICAg ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChkYXRhICYmIF8u aXNBcnJheShkYXRhKSkgeworICAgICAgICAgICAgICAgICAgXy5lYWNoKGRh dGEsIGZ1bmN0aW9uKGQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGQu aW5zdGFsbGVkX3ZlcnNpb24gPT09IG51bGwpCisgICAgICAgICAgICAgICAg ICAgICAgLyogZCBjb250YWlucyBqc29uIGRhdGEgYW5kIHNldHMgaW50bwor ICAgICAgICAgICAgICAgICAgICAgICogc2VsZWN0J3Mgb3B0aW9uIGNvbnRy b2wKKyAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAg ICAgICAgIHJlcy5wdXNoKHtsYWJlbDogZC5uYW1lLCB2YWx1ZTogZH0pOwor ICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAg ICAgICAgIH0sCisgICAgICAgICAgICAvKiBleHRlbmRzIE5vZGVBamF4T3B0 aW9uc0NvbnRyb2wgdG8gb3ZlcnJpZGUgdGhlIHByb3BlcnRpZXMKKyAgICAg ICAgICAgICogZ2V0VmFsdWVGcm9tRE9NIHdoaWNoIHRha2VzIHN0cmluZ2lm aWVkIGRhdGEgZnJvbSBvcHRpb24gb2YKKyAgICAgICAgICAgICogc2VsZWN0 IGNvbnRyb2wgYW5kIHBhcnNlIGl0LiBBbmQgYG9uQ2hhbmdlYCB0YWtlcyB0 aGUgc3RyaW5naWZpZWQKKyAgICAgICAgICAgICogZGF0YSBmcm9tIHNlbGVj dCdzIG9wdGlvbiwgdGh1cyBjb252ZXJ0IGl0IHRvIGpzb24gZm9ybWF0IGFu ZCBzZXQgdGhlCisgICAgICAgICAgICAqIGRhdGEgaW50byBNb2RlbCB3aGlj aCBpcyB1c2VkIHRvIGVuYWJsZS9kaXNhYmxlIHRoZSBzY2hlbWEgZmllbGQu CisgICAgICAgICAgICAqLworICAgICAgICAgICAgY29udHJvbDogQmFja2Zv cm0uTm9kZUFqYXhPcHRpb25zQ29udHJvbC5leHRlbmQoeworICAgICAgICAg ICAgICBnZXRWYWx1ZUZyb21ET006IGZ1bmN0aW9uKCkgeworICAgICAgICAg ICAgICAgIHZhciBkYXRhID0gdGhpcy5mb3JtYXR0ZXIudG9SYXcodGhpcy4k ZWwuZmluZCgic2VsZWN0IikudmFsKCksIHRoaXMubW9kZWwpOworICAgICAg ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogcmV0dXJuIG51bGwg aWYgZGF0YSBpcyBlbXB0eSB0byBwcmV2ZW50IGl0IGZyb20KKyAgICAgICAg ICAgICAgICAgKiB0aHJvd2luZyBwYXJzaW5nIGVycm9yLiBBZGRzIGNoZWNr IGFzIG5hbWUgY2FuIGJlIGVtcHR5CisgICAgICAgICAgICAgICAgKi8KKyAg ICAgICAgICAgICAgICBpZiAoZGF0YSA9PT0gJycpeworICAgICAgICAgICAg ICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZihkYXRhKSA9PT0gJ3N0cmluZycp IHsKKyAgICAgICAgICAgICAgICAgIGRhdGE9SlNPTi5wYXJzZShkYXRhKTsK KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGRh dGEubmFtZTsKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgb25D aGFuZ2U6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEJhY2tmb3Jt Lk5vZGVBamF4T3B0aW9uc0NvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFw cGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgICAgICAgICAgdmFyIHNl bGVjdGVkVmFsdWUgPSB0aGlzLiRlbC5maW5kKCJzZWxlY3QiKS52YWwoKTsK KyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRWYWx1ZS50cmltKCkgIT0g IiIpeworICAgICAgICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmZvcm1hdHRl ci50b1JhdyhzZWxlY3RlZFZhbHVlLCB0aGlzLm1vZGVsKTsKKyAgICAgICAg ICAgICAgICAgIGlmKHR5cGVvZihkKSA9PT0gJ3N0cmluZycpCisgICAgICAg ICAgICAgICAgICAgIGQ9SlNPTi5wYXJzZShkKTsKKyAgICAgICAgICAgICAg ICAgIHZhciBjaGFuZ2VzID0geworICAgICAgICAgICAgICAgICAgICAndmVy c2lvbicgOiAnJywKKyAgICAgICAgICAgICAgICAgICAgJ3JlbG9jYXRhYmxl JzogKCghXy5pc051bGwoZC5yZWxvY2F0YWJsZVswXSkgJiYgIV8uaXNVbmRl ZmluZWQoZC5yZWxvY2F0YWJsZVswXSkpID8gZC5yZWxvY2F0YWJsZVswXTog JycpLAorICAgICAgICAgICAgICAgICAgICAnc2NoZW1hJzogKCghXy5pc051 bGwoZC5zY2hlbWFbMF0pICYmICFfLmlzVW5kZWZpbmVkKGQuc2NoZW1hWzBd KSkgPyBkLnNjaGVtYVswXTogJycpCisgICAgICAgICAgICAgICAgICAgIH07 CisgICAgICAgICAgICAgICAgICB0aGlzLm1vZGVsLnNldChjaGFuZ2VzKTsK KyAgICAgICAgICAgICAgICB9ZWxzZXsKKyAgICAgICAgICAgICAgICAgIHZh ciBjaGFuZ2VzID0geyd2ZXJzaW9uJzogJycsICdyZWxvY2F0YWJsZSc6IHRy dWUsICdzY2hlbWEnOiAnJ307CisgICAgICAgICAgICAgICAgICB0aGlzLm1v ZGVsLnNldChjaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgIH0sCisgICAgICAgICAgICB9KQorICAgICAgICAgIH0seworICAg ICAgICAgICAgaWQ6ICdlaWQnLCBsYWJlbDogJ3t7IF8oJ09pZCcpfX0nLCBj ZWxsOiAnc3RyaW5nJywKKyAgICAgICAgICAgIHR5cGU6ICd0ZXh0JywgZGlz YWJsZWQ6IHRydWUsIG1vZGU6IFsncHJvcGVydGllcycsICdlZGl0JywgJ2Ny ZWF0ZSddCisgICAgICAgICAgfSx7CisgICAgICAgICAgICBpZDogJ293bmVy JywgbGFiZWw6J3t7IF8oJ093bmVyJykgfX0nLCBjb250cm9sOiAnbm9kZS1s aXN0LWJ5LW5hbWUnLAorICAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVz J10sIG5vZGU6ICdyb2xlJywgY2VsbDogJ3N0cmluZycKKyAgICAgICAgICB9 LHsKKyAgICAgICAgICAgIGlkOiAnc2NoZW1hJywgbGFiZWw6ICd7eyBfKCdT Y2hlbWEnKX19JywgdHlwZTogJ3RleHQnLCBjb250cm9sOiAnbm9kZS1hamF4 LW9wdGlvbnMnLAorICAgICAgICAgICAgbW9kZTogWydwcm9wZXJ0aWVzJywg J2NyZWF0ZScsICdlZGl0J10sIGdyb3VwOiAnRGVmaW5pdGlvbicsIGRlcHM6 IFsncmVsb2NhdGFibGUnXSwKKyAgICAgICAgICAgIHVybDogJ3NjaGVtYXMn LCBmaXJzdF9lbXB0eTogdHJ1ZSwgZGlzYWJsZWQ6IGZ1bmN0aW9uKG0pIHsK KyAgICAgICAgICAgICAgLyogZW5hYmxlIG9yIGRpc2FibGUgc2NoZW1hIGZp ZWxkIGlmIG1vZGVsJ3MgcmVsb2NhdGFibGUKKyAgICAgICAgICAgICAgKiBh dHRyaWJ1dGUgaXMgVHJ1ZSBvciBGYWxzZQorICAgICAgICAgICAgICAqLwor ICAgICAgICAgICAgICByZXR1cm4gKG0uaGFzKCdyZWxvY2F0YWJsZScpID8g IW0uZ2V0KCdyZWxvY2F0YWJsZScpIDogZmFsc2UpOworICAgICAgICAgICAg fSwKKyAgICAgICAgICAgIHRyYW5zZm9ybTogZnVuY3Rpb24oZGF0YSkgewor ICAgICAgICAgICAgICB2YXIgcmVzID0gW107CisgICAgICAgICAgICAgIGlm IChkYXRhICYmIF8uaXNBcnJheShkYXRhKSkgeworICAgICAgICAgICAgICAg IF8uZWFjaChkYXRhLCBmdW5jdGlvbihkKSB7CisgICAgICAgICAgICAgICAg ICByZXMucHVzaCh7bGFiZWw6IGQuc2NoZW1hLCB2YWx1ZTogZC5zY2hlbWF9 KTsKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ3JlbG9jYXRh YmxlJywgbGFiZWw6ICd7eyBfKCdSZWxvY2F0YWJsZT8nKX19JywgY2VsbDog J3N3aXRjaCcsCisgICAgICAgICAgICB0eXBlOiAnc3dpdGNoJywgbW9kZTog Wydwcm9wZXJ0aWVzJ10sICdvcHRpb25zJzogeworICAgICAgICAgICAgICAn b25UZXh0JzogJ1llcycsICdvZmZUZXh0JzogJ05vJywgJ29uQ29sb3InOiAn c3VjY2VzcycsCisgICAgICAgICAgICAgICdvZmZDb2xvcic6ICdkZWZhdWx0 JywgJ3NpemUnOiAnc21hbGwnCisgICAgICAgICAgICB9CisgICAgICAgICAg fSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ3ZlcnNpb24nLCBs YWJlbDogJ3t7IF8oJ1ZlcnNpb24nKX19JywgY2VsbDogJ3N0cmluZycsCisg ICAgICAgICAgICBtb2RlOiBbJ3Byb3BlcnRpZXMnLCAnY3JlYXRlJywgJ2Vk aXQnXSwgZ3JvdXA6ICdEZWZpbml0aW9uJywKKyAgICAgICAgICAgIGNvbnRy b2w6ICdub2RlLWFqYXgtb3B0aW9ucycsIHVybDonYXZhaWxzJywgZmlyc3Rf ZW1wdHk6IHRydWUsCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgKiBU cmFuc2Zvcm0gdGhlIGRhdGEgaW50byB2ZXJzaW9uIGZvciB0aGUgc2VsZWN0 ZWQgZXh0ZW5zaW9uLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHRy YW5zZm9ybTogZnVuY3Rpb24oZGF0YSkgeworICAgICAgICAgICAgICByZXMg PSBbXTsKKyAgICAgICAgICAgICAgdmFyIGV4dGVuc2lvbiA9IHRoaXMubW9k ZWwuZ2V0KCduYW1lJyk7CisgICAgICAgICAgICAgIF8uZWFjaChkYXRhLCBm dW5jdGlvbihkdCl7CisgICAgICAgICAgICAgICAgaWYoZHQubmFtZSA9PSBl eHRlbnNpb24peworICAgICAgICAgICAgICAgICAgaWYoZHQudmVyc2lvbiAm JiBfLmlzQXJyYXkoZHQudmVyc2lvbikpeworICAgICAgICAgICAgICAgICAg ICBfLmVhY2goZHQudmVyc2lvbiwgZnVuY3Rpb24odil7CisgICAgICAgICAg ICAgICAgICAgICAgcmVzLnB1c2goeyBsYWJlbDogdiwgdmFsdWU6IHYgfSk7 CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfSk7CisgICAg ICAgICAgICAgIHJldHVybiByZXM7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfSwKKyAgICAgICAgICB7CisgICAgICAgICAgICBpZDogJ2NvbW1lbnQn LCBsYWJlbDogJ3t7IF8oJ0NvbW1lbnQnKX19JywgY2VsbDogJ3N0cmluZycs CisgICAgICAgICAgICB0eXBlOiAnbXVsdGlsaW5lJywgZGlzYWJsZWQ6IHRy dWUKKyAgICAgICAgICB9CisgICAgICAgIF0sCisgICAgICAgIHZhbGlkYXRl OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAvKgorICAgICAgICAgICogVHJp Z2dlcnMgZXJyb3IgbWVzc2FnZXMgZm9yIG5hbWUKKyAgICAgICAgICAqIGlm IGl0IGlzIGVtcHR5L3VuZGVmaW5lZC9udWxsCisgICAgICAgICAgKi8KKyAg ICAgICAgICB2YXIgZXJyID0ge30sCisgICAgICAgICAgICBlcnJtc2csCisg ICAgICAgICAgICBuYW1lID0gdGhpcy5nZXQoJ25hbWUnKTsKKyAgICAgICAg ICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSB8fCBfLmlzTnVsbChuYW1lKSB8 fAorICAgICAgICAgICAgU3RyaW5nKG5hbWUpLnJlcGxhY2UoL15ccyt8XHMr JC9nLCAnJykgPT0gJycpIHsKKyAgICAgICAgICAgIGVyclsnbmFtZSddID0g J3t7IF8oJ05hbWUgY2FuIG5vdCBiZSBlbXB0eSEnKSB9fSc7CisgICAgICAg ICAgICBlcnJtc2cgPSBlcnJtc2cgfHwgZXJyWyduYW1lJ107CisgICAgICAg ICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCduYW1lJywgZXJybXNnKTsKKyAg ICAgICAgICAgIHJldHVybiBlcnJtc2c7CisgICAgICAgICAgfWVsc2V7Cisg ICAgICAgICAgICB0aGlzLmVycm9yTW9kZWwudW5zZXQoJ25hbWUnKTsKKyAg ICAgICAgICB9CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0K KyAgICAgIH0pCisgICAgfSkKKyAgfTsKKworICByZXR1cm4gcGdCcm93c2Vy Lk5vZGVzWydjb2xsLWV4dGVuc2lvbiddOworfSk7CmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRh YmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvY3Jl YXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9z ZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNp b25zL3NxbC9jcmVhdGUuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmIyMjc0ZGIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMv ZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvY3JlYXRlLnNx bApAQCAtMCwwICsxLDE5IEBACit7Iz09PT09PT09PT09PT09PT09PT09PT09 PT1DcmVhdGUgbmV3IGV4dGVuc2lvbj09PT09PT09PT09PT09PT09PT09PT0j fQoreyM9PT1HZW5lcmF0ZXMgY29tbWVudHMgYW5kIGNvZGUgZm9yIFNRTCB0 YWI9PT0jfQoreyUgaWYgZGlzcGxheV9jb21tZW50cyAlfQorLS0gRXh0ZW5z aW9uOiB7eyBjb25ufHF0SWRlbnQoZGF0YS5uYW1lKSB9fSAKKworLS0gRFJP UCBFWFRFTlNJT04ge3sgY29ubnxxdElkZW50KGRhdGEubmFtZSkgfX07CisK K3slIGVuZGlmICV9Cit7JSBpZiBkYXRhLm5hbWUgJX0KKyBDUkVBVEUgRVhU RU5TSU9OIHt7IGNvbm58cXRJZGVudChkYXRhLm5hbWUpIH19eyUgaWYgZGF0 YS5zY2hlbWEgPT0gJycgYW5kIGRhdGEudmVyc2lvbiA9PSAnJyAlfTt7JSBl bmRpZiAlfQoreyUgaWYgZGF0YS5zY2hlbWEgJX0KKworICAgIFNDSEVNQSB7 eyBjb25ufHF0SWRlbnQoZGF0YS5zY2hlbWEpIH19eyUgaWYgZGF0YS52ZXJz aW9uID09ICcnICV9O3slIGVuZGlmICV9Cit7JSBlbmRpZiAlfQoreyUgaWYg ZGF0YS52ZXJzaW9uICV9CisKKyAgICBWRVJTSU9OIHt7IGNvbm58cXRJZGVu dChkYXRhLnZlcnNpb24pIH19OworeyUgZW5kaWYgJX0KK3slIGVuZGlmICV9 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91 cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0 ZW5zaW9ucy9zcWwvZGVsZXRlLnNxbCBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rl bXBsYXRlcy9leHRlbnNpb25zL3NxbC9kZWxldGUuc3FsCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MTU1ZjYKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9u cy9zcWwvZGVsZXRlLnNxbApAQCAtMCwwICsxLDggQEAKK3sjPT09PT09PT09 PT09PT09PT09PT09PT09PT09PURyb3AvQ2FzY2FkZSBFeHRlbnNpb24gYnkg bmFtZT09PT09PT09PT09PT09PT09PT09PT09PT0jfQoreyUgaWYgZWlkICV9 CitTRUxFQ1QgeC5leHRuYW1lIGZyb20gcGdfZXh0ZW5zaW9uIHgKKyAgICBX SEVSRSB4Lm9pZCA9IHt7IGVpZCB9fTo6aW50Cit7JSBlbmRpZiAlfQoreyUg aWYgbmFtZSAlfQorRFJPUCBFWFRFTlNJT04ge3sgY29ubnxxdElkZW50KG5h bWUpIH19IHslIGlmIGNhc2NhZGUgJX0gQ0FTQ0FERSB7JSBlbmRpZiAlfQor eyUgZW5kaWYgJX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3Rl bXBsYXRlcy9leHRlbnNpb25zL3NxbC9leHRlbnNpb25zLnNxbCBiL3dlYi9w Z2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9leHRlbnNpb25zL3RlbXBsYXRlcy9leHRlbnNpb25zL3NxbC9leHRlbnNp b25zLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5i ZjM5NzlkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nl ci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMv dGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL2V4dGVuc2lvbnMuc3FsCkBAIC0w LDAgKzEsMTIgQEAKK3sjID09PT09PT09PT09PT09PT09PT09PT1GZXRjaCBl eHRlbnNpb25zIG5hbWVzPT09PT09PT09PT09PT09PT09PT09I30KK1NFTEVD VAorICAgIGEubmFtZSwgYS5pbnN0YWxsZWRfdmVyc2lvbiwKKyAgICBhcnJh eV9hZ2coYXYudmVyc2lvbikgYXMgdmVyc2lvbiwKKyAgICBhcnJheV9hZ2co YXYuc2NoZW1hKSBhcyBzY2hlbWEsCisgICAgYXJyYXlfYWdnKGF2LnN1cGVy dXNlcikgYXMgc3VwZXJ1c2VyLAorICAgIGFycmF5X2FnZyhhdi5yZWxvY2F0 YWJsZSkgYXMgcmVsb2NhdGFibGUKK0ZST00KKyAgICBwZ19hdmFpbGFibGVf ZXh0ZW5zaW9ucyBhCisgICAgTEVGVCBKT0lOIHBnX2F2YWlsYWJsZV9leHRl bnNpb25fdmVyc2lvbnMgYXYgT04gKGEubmFtZSA9IGF2Lm5hbWUpCitHUk9V UCBCWSBhLm5hbWUsIGEuaW5zdGFsbGVkX3ZlcnNpb24KK09SREVSIEJZIGEu bmFtZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJf Z3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVz L2V4dGVuc2lvbnMvc3FsL3Byb3BlcnRpZXMuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVu c2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3Byb3BlcnRpZXMuc3Fs Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NTI2NzYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZl cl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5zaW9ucy90ZW1wbGF0 ZXMvZXh0ZW5zaW9ucy9zcWwvcHJvcGVydGllcy5zcWwKQEAgLTAsMCArMSwx NyBAQAoreyM9PT09PT09PT09PT09PT09PT09RmV0Y2ggcHJvcGVydGllcyBv ZiBlYWNoIGV4dGVuc2lvbiBieSBuYW1lIG9yIG9pZD09PT09PT09PT09PT09 PT09PT0jfQorU0VMRUNUCisgICAgeC5vaWQgQVMgZWlkLCBwZ19nZXRfdXNl cmJ5aWQoZXh0b3duZXIpIEFTIG93bmVyLAorICAgIHguZXh0bmFtZSBBUyBu YW1lLCBuLm5zcG5hbWUgQVMgc2NoZW1hLAorICAgIHguZXh0cmVsb2NhdGFi bGUgQVMgcmVsb2NhdGFibGUsIHguZXh0dmVyc2lvbiBBUyB2ZXJzaW9uLAor ICAgIGUuY29tbWVudAorRlJPTQorICAgIHBnX2V4dGVuc2lvbiB4CisgICAg TEVGVCBKT0lOIHBnX25hbWVzcGFjZSBuIE9OIHguZXh0bmFtZXNwYWNlPW4u b2lkCisgICAgSk9JTiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucygpIGUobmFt ZSwgZGVmYXVsdF92ZXJzaW9uLCBjb21tZW50KSBPTiB4LmV4dG5hbWU9ZS5u YW1lCit7JS0gaWYgZWlkICV9CisgV0hFUkUgeC5vaWQgPSB7e2VpZH19Ojpp bnQKK3slIGVsaWYgZW5hbWUgJX0KKyBXSEVSRSB4LmV4dG5hbWUgPSB7e2Vu YW1lfHF0TGl0ZXJhbH19Ojp0ZXh0Cit7JSBlbHNlICV9CisgT1JERVIgQlkg eC5leHRuYW1lCit7JSBlbmRpZiAlfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4 dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3NjaGVtYXMuc3Fs IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL2V4dGVuc2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3Fs L3NjaGVtYXMuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmI4ZTNjOTcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9i cm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvZXh0ZW5z aW9ucy90ZW1wbGF0ZXMvZXh0ZW5zaW9ucy9zcWwvc2NoZW1hcy5zcWwKQEAg LTAsMCArMSwzIEBACit7Iz09PT09PT09PT09PT09PT09PT1mZXRjaCBhbGwg c2NoZW1hcz09PT09PT09PT09PT09PT09PT09PT09PT09I30KK1NFTEVDVCBu c3BuYW1lIEFzIHNjaGVtYSBGUk9NIHBnX25hbWVzcGFjZQorIE9SREVSIEJZ IG5zcG5hbWUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2Vy dmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBs YXRlcy9leHRlbnNpb25zL3NxbC91cGRhdGUuc3FsIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL2V4dGVu c2lvbnMvdGVtcGxhdGVzL2V4dGVuc2lvbnMvc3FsL3VwZGF0ZS5zcWwKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRjZDYyNgotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dy b3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9leHRlbnNpb25zL3RlbXBsYXRlcy9l eHRlbnNpb25zL3NxbC91cGRhdGUuc3FsCkBAIC0wLDAgKzEsMTAgQEAKK3sj ID09PT09PT09PT09PT1VcGRhdGUgZXh0ZW5zaW9uIHNjaGVtYT09PT09PT09 PT09PT0gI30KK3slIGlmIGRhdGEuc2NoZW1hIGFuZCBkYXRhLnNjaGVtYSAh PSBvX2RhdGEuc2NoZW1hICV9CitBTFRFUiBFWFRFTlNJT04ge3sgY29ubnxx dElkZW50KG9fZGF0YS5uYW1lKSB9fQorICAgIFNFVCBTQ0hFTUEge3sgY29u bnxxdElkZW50KGRhdGEuc2NoZW1hKSB9fTsKK3slIGVuZGlmICV9Cit7IyA9 PT09PT09PT09PT09VXBkYXRlIGV4dGVuc2lvbiB2ZXJzaW9uPT09PT09PT09 PT09PSAjfQoreyUgaWYgZGF0YS52ZXJzaW9uIGFuZCBkYXRhLnZlcnNpb24g IT0gb19kYXRhLnZlcnNpb24gJX0KK0FMVEVSIEVYVEVOU0lPTiB7eyBjb25u fHF0SWRlbnQob19kYXRhLm5hbWUpIH19CisgICAgVVBEQVRFIFRPIHt7IGNv bm58cXRJZGVudChkYXRhLnZlcnNpb24pIH19OworeyUgZW5kaWYgJX0K --047d7bf0c6b6d1bc370529e6b43f 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 --047d7bf0c6b6d1bc370529e6b43f--