Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1abShx-0000bC-MC for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Mar 2016 12:50:22 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84) (envelope-from ) id 1abShx-0008LT-3Z for pgadmin-hackers@arkaria.postgresql.org; Thu, 03 Mar 2016 12:50:21 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84) (envelope-from ) id 1abShu-0008LM-Ey for pgadmin-hackers@postgresql.org; Thu, 03 Mar 2016 12:50:18 +0000 Received: from mail-wm0-x22f.google.com ([2a00:1450:400c:c09::22f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.84) (envelope-from ) id 1abShn-0002Nf-An for pgadmin-hackers@postgresql.org; Thu, 03 Mar 2016 12:50:17 +0000 Received: by mail-wm0-x22f.google.com with SMTP id l68so129739669wml.0 for ; Thu, 03 Mar 2016 04:50:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=lp9XVDgBhQXBqO7elIz8e8kSFu1kS+CmEgzvEaV0qBA=; b=0S8OXowCRchzjY0MxIvkWtYEE6vKCazr7y/MyjC6OEoGOVYhdtX+h/1XllxiJeBRJf C8EIj4qhYYYW7FQ5wgpySa7BLqmxz7miU/avERj5jtSJBAHElL2JfKj30S6RJSLUgiPz cFnV8CHu7gNiLbxr8G9FxVaZcA60FD4GyklJ+4cQSiDB/cSJKuIdKw0M/KULg6/t3nci pVknv6DhNwySSc2eIE3eJ83CkvskrvwCjABMGkW5GxbpYcnTKBqFa9+ypOhsav8yByf7 wiellmDxyRUjXSEYqjXtf8IO5ShYpbCNy+S2toKoSm2YLKzBE6TiY4CYtC7Cu+JuJNbD 7zew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=lp9XVDgBhQXBqO7elIz8e8kSFu1kS+CmEgzvEaV0qBA=; b=WuwsgfX2AA9tKBrUPv70JtN0HN2PTnW6XZp/eeutTKqxrcrAgAwrgeaJWENNr7bh2J rO1MDePfkKkbfNCTvtx2k82KAo0urSJ2mDjo5RnlGB66ZTa+jW6J+gW+oLymSzK+vlOW ZsqyRIRe0Ng9FyDJUPaSje26EuS44bI13FNmWdVjilEsPpn6lSUVL7ywg+iLdrzFeNQ9 87Dp8Zhdxt8MquRGQpmlIJD7v2/jPrWiqM+sIXLROoVvYVCktjJCiolZJ7uvitLeSGJy kIe/1Dc4I6p2tDuavpBMbVFoaES6P6UXUamnNPNq3l/mUxo2zyaONbqa6kQS4Q/x09FD iYGQ== X-Gm-Message-State: AD7BkJKIr85vrReYTB3ATf6PL8ZtU7hh3GWN9Rzz2PG7hE6b0JMq8w1K5PGlNZVcUaf3AOM/JqiJ4RMlOXmu2D2W X-Received: by 10.28.54.197 with SMTP id y66mr3241950wmh.16.1457009410316; Thu, 03 Mar 2016 04:50:10 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.55.74 with HTTP; Thu, 3 Mar 2016 04:49:40 -0800 (PST) From: Surinder Kumar Date: Thu, 3 Mar 2016 18:19:40 +0530 Message-ID: Subject: [pgAdmin4] [Patch]: Grant Wizard To: pgadmin-hackers Content-Type: multipart/mixed; boundary=001a1143587256e023052d247010 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 --001a1143587256e023052d247010 Content-Type: multipart/alternative; boundary=001a1143587256e01f052d24700e --001a1143587256e01f052d24700e Content-Type: text/plain; charset=UTF-8 Hi, PFA patch for Grant Wizard. Before applying grant wizard patch: 1. Apply patch for "wizard JS file" which Khushboo had shared with Ashesh personally. I am using that patch with few changes in that. Ashesh will review and commit that patch. 2. Apply patches of "Sequence" and "Functions" macros. Please review the patch and Let me know for any comments. Thanks Surinder Kumar --001a1143587256e01f052d24700e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi,

PFA patch for Grant Wizard.

Before applying grant wizard patch:

<= div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 1. Apply patch for "wizard JS file&quo= t; which Khushboo had shared with Ashesh personally.
=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 I am using that patch with few changes in t= hat. Ashesh will review
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0= and commit that patch.

=C2=A0 =C2=A0 =C2=A0 =C2=A0 2. Apply = patches of "Sequence" and "Functions" macros.
=


Please review the patch and Let me know = for any comments.


Thanks
= Surinder Kumar


--001a1143587256e01f052d24700e-- --001a1143587256e023052d247010 Content-Type: application/octet-stream; name="grant_wizard.patch" Content-Disposition: attachment; filename="grant_wizard.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ilc9iffy0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkg Yi93ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CmluZGV4IDM4Njkz ZDQuLmUwMGI2YTcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIv X19pbml0X18ucHkKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRf Xy5weQpAQCAtMTUzLDcgKzE1Myw4IEBAIGNsYXNzIEJyb3dzZXJNb2R1bGUo UGdBZG1pbk1vZHVsZSk6CiAgICAgICAgIGZvciBuYW1lLCBlbmQgaW4gWwog ICAgICAgICAgICAgICAgIFsncGdhZG1pbi5icm93c2VyLm1lbnUnLCAnanMv bWVudSddLAogICAgICAgICAgICAgICAgIFsncGdhZG1pbi5icm93c2VyLnBh bmVsJywgJ2pzL3BhbmVsJ10sCi0gICAgICAgICAgICAgICAgWydwZ2FkbWlu LmJyb3dzZXIuZnJhbWUnLCAnanMvZnJhbWUnXV06CisgICAgICAgICAgICAg ICAgWydwZ2FkbWluLmJyb3dzZXIuZnJhbWUnLCAnanMvZnJhbWUnXSwKKyAg ICAgICAgICAgICAgICBbJ3BnYWRtaW4uYnJvd3Nlci53aXphcmQnLCAnanMv d2l6YXJkJ11dOgogICAgICAgICAgICAgc2NyaXB0cy5hcHBlbmQoewogICAg ICAgICAgICAgICAgICduYW1lJzogbmFtZSwgJ3BhdGgnOiB1cmxfZm9yKCdi cm93c2VyLnN0YXRpYycsIGZpbGVuYW1lPWVuZCksCiAgICAgICAgICAgICAg ICAgJ3ByZWxvYWRlZCc6IFRydWV9KQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS51aS5qcyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL25vZGUudWkuanMKaW5kZXggYjg0YjZlZS4u NDdmMTI2NiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvbm9kZS51aS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0 YXRpYy9qcy9ub2RlLnVpLmpzCkBAIC0yNzksNyArMjc5LDcgQEAgZnVuY3Rp b24oJCwgXywgcGdBZG1pbiwgQmFja2JvbmUsIEJhY2tmb3JtLCBBbGVydGlm eSwgTm9kZSkgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9Owog Ci0gICAgICB3aGlsZShwKSB7CisgICAgICB3aGlsZShwICYmIHAubGVuZ3Ro ID4gMCkgewogICAgICAgICB0b3AgPSBwLmdldCgwKS5vZmZzZXRUb3AgKyBw LmhlaWdodCgpOwogICAgICAgICBwID0gcC5wYXJlbnQoKTsKICAgICAgICAg aWYgKGhhc1Njcm9sbGJhcihwKSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwppbmRleCA0MzQ2MTU2 Li44ZjkxM2QyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv YmFja2Zvcm0ucGdhZG1pbi5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvYmFja2Zvcm0ucGdhZG1pbi5qcwpAQCAtMTA4LDcgKzEwOCw3IEBACiAg ICAgICByZXR1cm4gbVtpZHggPiBsZW4gPyAwIDogaWR4XTsKICAgICB9CiAg ICAgcmV0dXJuIHR5cGU7Ci0gIH0KKyAgfTsKIAogCiAgIHZhciBCYWNrZm9y bUNvbnRyb2xJbml0ID0gQmFja2Zvcm0uQ29udHJvbC5wcm90b3R5cGUuaW5p dGlhbGl6ZSwKQEAgLTc0NSw2ICs3NDUsMTMgQEAKICAgICAgICAgc2VsZi5z dG9wTGlzdGVuaW5nKHNlbGYuY29sbGVjdGlvbiwgImNoYW5nZSIsIHNlbGYu Y29sbGVjdGlvbkNoYW5nZWQpOwogICAgICAgfQogCisgICAgICAvLyBSZW1v dmUgZ3JpZAorICAgICAgaWYgKHRoaXMuZ3JpZCkgeworICAgICAgICB0aGlz LmdyaWQucmVtb3ZlKCk7CisgICAgICAgIGRlbGV0ZSB0aGlzLmdyaWQ7Cisg ICAgICAgIHRoaXMuZ3JpZCA9IG51bGw7CisgICAgICB9CisKICAgICAgIEJh Y2tmb3JtLkNvbnRyb2wucHJvdG90eXBlLnJlbW92ZS5hcHBseSh0aGlzLCBh cmd1bWVudHMpOwogICAgIH0sCiAgICAgY29sbGVjdGlvbkNoYW5nZWQ6IGZ1 bmN0aW9uKG5ld01vZGVsLCBjb2xsLCBvcCkgewpAQCAtMTE0Niw4ICsxMTUz LDEyIEBACiAgICAgICAvKgogICAgICAgICogV2Ugd2lsbCBsaXN0ZW4gdG8g dGhlIHRhYiBjaGFuZ2UgZXZlbnQgdG8gY2hlY2ssIGlmIHRoZSBTUUwgdGFi IGhhcwogICAgICAgICogYmVlbiBjbGlja2VkIG9yLCBub3QuCisgICAgICAg KgorICAgICAgICogQWxzbywgbGlzdGVuIHRvIHRoZSB3aXphcmQgbmV4dC9w cmV2IHBhZ2UgY2hhbmdlZAogICAgICAgICovCiAgICAgICB0aGlzLm1vZGVs Lm9uKCdwZy1wcm9wZXJ0eS10YWItY2hhbmdlZCcsIHRoaXMub25UYWJDaGFu Z2UsIHRoaXMpOworICAgICAgdGhpcy5tb2RlbC5vbigncGdhZG1pbi13aXph cmQ6bmV4dHBhZ2U6c3FsJywgdGhpcy5vbldpemFyZE5leHRQYWdlQ2hhbmdl LCB0aGlzKTsKKyAgICAgIHRoaXMubW9kZWwub24oJ3BnYWRtaW4td2l6YXJk OnByZXZwYWdlOnNxbCcsIHRoaXMub25XaXphcmRQcmV2UGFnZUNoYW5nZSwg dGhpcyk7CiAgICAgfSwKICAgICBnZXRWYWx1ZUZyb21ET006IGZ1bmN0aW9u KCkgewogICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXR0ZXIudG9SYXcodGhp cy4kZWwuZmluZCgidGV4dGFyZWEiKS52YWwoKSwgdGhpcy5tb2RlbCk7CkBA IC0xMjA1LDggKzEyMTYsNDcgQEAKICAgICAgICAgfQogICAgICAgfQogICAg IH0sCisKKyAgICAvLyBUaGlzIG1ldGhvZCBmZXRjaGVzIHRoZSBtb2RpZmll ZCBTUUwgZm9yIHRoZSB3aXphcmQKKyAgICBvbldpemFyZE5leHRQYWdlQ2hh bmdlOiBmdW5jdGlvbihvYmopeworCisgICAgICB2YXIgc2VsZiA9IHRoaXMs CisgICAgICAgIG0gPSBzZWxmLm1vZGVsLAorICAgICAgICBnaWQgPSBtLm5v ZGVfaW5mb1snc2VydmVyLWdyb3VwJ10uX2lkLAorICAgICAgICBzaWQgPSBt Lm5vZGVfaW5mby5zZXJ2ZXIuX2lkLAorICAgICAgICBkaWQgPSBtLm5vZGVf aW5mby5kYXRhYmFzZS5faWQsCisgICAgICAgIG5zcG5hbWUgPSBtLm5vZGVf aW5mby5zY2hlbWEubGFiZWw7CisKKyAgICAgICAgLy8gZ2VuZXJhdGUgZW5j b2RlZCB1cmwgYmFzZWQgb24gd2l6YXJkIHR5cGUKKyAgICAgICAgbXNxbF91 cmwgPSAiL3dpemFyZC8iK29iai53aXphcmRfdHlwZSsiL21zcWwvIisKKyAg ICAgICAgICBTKCclcy8lcy8lcy8lcy8lcy8nKS5zcHJpbnRmKAorICAgICAg ICAgICAgICBlbmNvZGVVUkkoZ2lkKSwgZW5jb2RlVVJJKHNpZCksIGVuY29k ZVVSSShkaWQpLAorICAgICAgICAgICAgICBlbmNvZGVVUkkob2JqLm5vZGVf dHlwZSksIGVuY29kZVVSSShuc3BuYW1lKSkudmFsdWUoKTsKKworICAgICAg Ly8gRmV0Y2hlcyBtb2RpZmllZCBTUUwKKyAgICAgICQuYWpheCh7CisgICAg ICAgIHVybDogbXNxbF91cmwsCisgICAgICAgIHR5cGU6ICdHRVQnLAorICAg ICAgICBjYWNoZTogZmFsc2UsCisgICAgICAgIGRhdGE6IHNlbGYubW9kZWwu dG9KU09OKHRydWUsICdHRVQnKSwKKyAgICAgICAgZGF0YVR5cGU6ICJqc29u IiwKKyAgICAgICAgY29udGVudFR5cGU6ICJhcHBsaWNhdGlvbi9qc29uIgor ICAgICAgfSkuZG9uZShmdW5jdGlvbihyZXMpIHsKKyAgICAgICAgc2VsZi5z cWxUYWIuY2xlYXJIaXN0b3J5KCk7CisgICAgICAgIHNlbGYuc3FsVGFiLnNl dFZhbHVlKHJlcy5kYXRhKTsKKyAgICAgIH0pLmZhaWwoZnVuY3Rpb24oKSB7 CisgICAgICAgIHNlbGYubW9kZWwudHJpZ2dlcigncGdhZG1pbi12aWV3Om1z cWw6ZXJyb3InKTsKKyAgICAgIH0pLmFsd2F5cyhmdW5jdGlvbigpIHsKKyAg ICAgICAgc2VsZi5tb2RlbC50cmlnZ2VyKCdwZ2FkbWluLXZpZXc6bXNxbDpm ZXRjaGVkJyk7CisgICAgICB9KTsKKworICAgIH0sCiAgICAgcmVtb3ZlOiBm dW5jdGlvbigpIHsKICAgICAgIHRoaXMubW9kZWwub2ZmKCdwZy1wcm9wZXJ0 eS10YWItY2hhbmdlZCcsIHRoaXMub25UYWJDaGFuZ2UsIHRoaXMpOworCisg ICAgICAvLyBTdG9wIGxpc3RlbiB0byBuZXh0L3ByZXYgcGFnZSBldmVudHMK KyAgICAgIHRoaXMubW9kZWwub2ZmKCdwZ2FkbWluLXdpemFyZDpuZXh0cGFn ZTpzcWwnLCB0aGlzLm9uV2l6YXJkTmV4dFBhZ2VDaGFuZ2UsIHRoaXMpOwor ICAgICAgdGhpcy5tb2RlbC5vZmYoJ3BnYWRtaW4td2l6YXJkOnByZXZwYWdl OnNxbCcsIHRoaXMub25XaXphcmRQcmV2UGFnZUNoYW5nZSwgdGhpcyk7CiAg ICAgICBCYWNrZm9ybS5Db250cm9sLl9fc3VwZXJfXy5yZW1vdmUuYXBwbHko dGhpcywgYXJndW1lbnRzKTsKICAgICB9CiB9KTsKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3RlbXBsYXRlcy9iYXNlLmh0bWwgYi93ZWIvcGdhZG1pbi90 ZW1wbGF0ZXMvYmFzZS5odG1sCmluZGV4IDZlYTVkNjkuLmQ5MTIwM2EgMTAw NzU1Ci0tLSBhL3dlYi9wZ2FkbWluL3RlbXBsYXRlcy9iYXNlLmh0bWwKKysr IGIvd2ViL3BnYWRtaW4vdGVtcGxhdGVzL2Jhc2UuaHRtbApAQCAtMjgsNiAr MjgsOCBAQAogICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJz dHlsZXNoZWV0IiBocmVmPSJ7eyB1cmxfZm9yKCdzdGF0aWMnLCBmaWxlbmFt ZT0nY3NzL2JhY2tncmlkL2JhY2tncmlkLXBhZ2luYXRvci5jc3MnIGlmIGNv bmZpZy5ERUJVRyBlbHNlICdjc3MvYmFja2dyaWQvYmFja2dyaWQtcGFnaW5h dG9yLm1pbi5jc3MnKX19Ii8+CiAgICAgICAgIDxsaW5rIHR5cGU9InRleHQv Y3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVybF9mb3IoJ3N0YXRp YycsIGZpbGVuYW1lPSdjc3MvYmFja2dyaWQvYmFja2dyaWQtZmlsdGVyLmNz cycgaWYgY29uZmlnLkRFQlVHIGVsc2UgJ2Nzcy9iYWNrZ3JpZC9iYWNrZ3Jp ZC1maWx0ZXIubWluLmNzcycpfX0iLz4KICAgICAgICAgPGxpbmsgdHlwZT0i dGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ie3sgdXJsX2Zvcign c3RhdGljJywgZmlsZW5hbWU9J2Nzcy9zZWxlY3QyL3NlbGVjdDIuY3NzJyBp ZiBjb25maWcuREVCVUcgZWxzZSAnY3NzL3NlbGVjdDIvc2VsZWN0Mi5taW4u Y3NzJyl9fSIvPgorICAgICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVs PSJzdHlsZXNoZWV0IiBocmVmPSJ7eyB1cmxfZm9yKCdncmFudHdpemFyZC5z dGF0aWMnLCBmaWxlbmFtZT0nY3NzL3dpemFyZC5jc3MnKSB9fSIvPgorICAg ICAgICA8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBo cmVmPSJ7eyB1cmxfZm9yKCdncmFudHdpemFyZC5zdGF0aWMnLCBmaWxlbmFt ZT0nY3NzL2dyYW50d2l6YXJkLmNzcycpIH19Ii8+CiAKICAgICAgICAgPCEt LSBWaWV3IHNwZWNpZmllZCBzdHlsZXNoZWV0cyAtLT4KICAgICAgICAgeyUg Zm9yIHN0eWxlc2hlZXQgaW4gY3VycmVudF9hcHAuc3R5bGVzaGVldHMgJX0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50d2l6YXJkL19f aW5pdF9fLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvX19p bml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u OGIyZTgyYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2dyYW50d2l6YXJkL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMjg2IEBACisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisjCisjIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMTYsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKyMgVGhpcyBz b2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisiIiIg SW1wbGVtZW50cyBHcmFudCBXaXphcmQiIiIKKworaW1wb3J0IGpzb24KK2Zy b20gZmxhc2sgaW1wb3J0IHJlbmRlcl90ZW1wbGF0ZSwgcmVxdWVzdCwgY3Vy cmVudF9hcHAKK2Zyb20gZmxhc2suZXh0LmJhYmVsIGltcG9ydCBnZXR0ZXh0 Citmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9yZXNwb25z ZSBhcyBhamF4X3Jlc3BvbnNlLCBcCisgICAgbWFrZV9qc29uX3Jlc3BvbnNl LCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IKK2Zyb20gcGdhZG1pbi51dGlscy5k cml2ZXIgaW1wb3J0IGdldF9kcml2ZXIKK2Zyb20gY29uZmlnIGltcG9ydCBQ R19ERUZBVUxUX0RSSVZFUgorZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVy X2dyb3Vwcy5zZXJ2ZXJzLnV0aWxzIGltcG9ydCBwYXJzZV9wcml2X3RvX2Ri Citmcm9tIHBnYWRtaW4udXRpbHMgaW1wb3J0IFBnQWRtaW5Nb2R1bGUKK2Zy b20gZmxhc2sgaW1wb3J0IFJlc3BvbnNlLCB1cmxfZm9yCitmcm9tIGZsYXNr LmV4dC5zZWN1cml0eSBpbXBvcnQgbG9naW5fcmVxdWlyZWQKKworIyBBcyB1 bmljb2RlIHR5cGUgaXMgbm90IGF2YWlsYWJsZSBpbiBweXRob24zCisjIElm IHdlIGNoZWNrIGEgdmFyaWFibGUgaXMgImlzaW5zdGFuY2UodmFyaWFibGUs IHN0cikKKyMgaXQgYnJlYWtzIGluIHB5dGhvbiAzIGFzIHZhcmlhYmxlIHR5 cGUgaXMgbm90IHN0cmluZyBpdHMgdW5pY29kZS4KKyMgV2UgYXNzaWduIGJh c2VzdHJpbmcgYXMgc3RyIHR5cGUgaWYgaXQgaXMgcHl0aG9uMywgdW5pY29k ZQorIyBpZiBpdCBpcyBweXRob24yLgorCit0cnk6CisgICAgdW5pY29kZSA9 IHVuaWNvZGUKK2V4Y2VwdCBOYW1lRXJyb3I6CisgICAgIyAndW5pY29kZScg aXMgdW5kZWZpbmVkLCBtdXN0IGJlIFB5dGhvbiAzCisgICAgc3RyID0gc3Ry CisgICAgdW5pY29kZSA9IHN0cgorICAgIGJ5dGVzID0gYnl0ZXMKKyAgICBi YXNlc3RyaW5nID0gKHN0ciwgYnl0ZXMpCitlbHNlOgorICAgICMgJ3VuaWNv ZGUnIGV4aXN0cywgbXVzdCBiZSBQeXRob24gMgorICAgIHN0ciA9IHN0cgor ICAgIHVuaWNvZGUgPSB1bmljb2RlCisgICAgYnl0ZXMgPSBzdHIKKyAgICBi YXNlc3RyaW5nID0gYmFzZXN0cmluZworCitNT0RVTEVfTkFNRSA9ICdncmFu dHdpemFyZCcKKworCitjbGFzcyBHcmFudFdpemFyZE1vZHVsZShQZ0FkbWlu TW9kdWxlKToKKyAgICAiIiIKKyAgICBjbGFzcyBHcmFudFdpemFyZE1vZHVs ZShPYmplY3QpOgorCisgICAgICAgIEl0IGlzIGEgd2l6YXJkIHdoaWNoIGlu aGVyaXRzIFBnQWRtaW5Nb2R1bGUKKyAgICAgICAgY2xhc3MgYW5kIGRlZmlu ZSBtZXRob2RzIHRvIGxvYWQgaXRzIG93bgorICAgICAgICBqYXZhc2NyaXB0 IGZpbGUuCisgICAgIiIiCisgICAgZGVmIGdldF9vd25famF2YXNjcmlwdHMo c2VsZik6CisgICAgICAgICIiIkFkZCBncmFudHdpemFyZC5qcyBmaWxlIHRv IGxvYWQgaXQgb24gd2luZG93IGxvYWQiIiIKKyAgICAgICAgcmV0dXJuIFt7 CisgICAgICAgICAgICAnbmFtZSc6ICdwZ2FkbWluLmdyYW50d2l6YXJkJywK KyAgICAgICAgICAgICdwYXRoJzogdXJsX2ZvcignZ3JhbnR3aXphcmQuaW5k ZXgnKSArICdncmFudHdpemFyZCcsCisgICAgICAgICAgICAnd2hlbic6IE5v bmUKKyAgICAgICAgfQorICAgICAgICBdCisKKyMgQ3JlYXRlIGJsdWVwcmlu dCBmb3IgR3JhbnRXaXphcmRNb2R1bGUgY2xhc3MKK2JsdWVwcmludCA9IEdy YW50V2l6YXJkTW9kdWxlKAorICAgIE1PRFVMRV9OQU1FLCBfX25hbWVfXywg c3RhdGljX3VybF9wYXRoPScnLAorICAgIHVybF9wcmVmaXg9Jy93aXphcmQn KQorCisKK0BibHVlcHJpbnQucm91dGUoIi8iKQorQGxvZ2luX3JlcXVpcmVk CitkZWYgaW5kZXgoKToKKyAgICBwYXNzCisKKworQGJsdWVwcmludC5yb3V0 ZSgiL2dyYW50d2l6YXJkLmpzIikKK0Bsb2dpbl9yZXF1aXJlZAorZGVmIHNj cmlwdCgpOgorICAgICIiInJlbmRlciBvd24gamF2YXNjcmlwdCIiIgorICAg IHJldHVybiBSZXNwb25zZShyZXNwb25zZT1yZW5kZXJfdGVtcGxhdGUoCisg ICAgICAgICAgICAgICAgImdyYW50d2l6YXJkL2pzL2dyYW50d2l6YXJkLmpz IiwgXz1nZXR0ZXh0KSwKKyAgICAgICAgICAgICAgICBzdGF0dXM9MjAwLAor ICAgICAgICAgICAgICAgIG1pbWV0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2Ny aXB0IikKKworCitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvZ3JhbnR3aXph cmQvcHJvcGVydGllcy88aW50OmdpZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPicK KyAgICAnLzxpbnQ6bm9kZV9pZD4vPG5vZGVfbmFtZT4vPG5vZGVfdHlwZT4v PG5zcG5hbWU+LycsCisgICAgbWV0aG9kcz0oJ0dFVCcsICdQT1NUJykpCitA bG9naW5fcmVxdWlyZWQKK2RlZiBwcm9wZXJ0aWVzKGdpZCwgc2lkLCBkaWQs IG5vZGVfaWQsIG5vZGVfbmFtZSwgbm9kZV90eXBlLCBuc3BuYW1lKToKKyAg ICAiIiJJdCBmZXRjaGVzIHRoZSBwcm9wZXJ0aWVzIG9mIG9iamVjdCB0eXBl cworICAgICAgIGFuZCByZW5kZXIgaW50byBzZWxlY3Rpb24gcGFnZSBvZiB3 aXphcmQKKyAgICAiIiIKKyAgICByZXNfZGF0YSA9IFtdCisgICAgbWFuYWdl ciA9IGdldF9kcml2ZXIoUEdfREVGQVVMVF9EUklWRVIpLmNvbm5lY3Rpb25f bWFuYWdlcihzaWQpCisgICAgY29ubiA9IG1hbmFnZXIuY29ubmVjdGlvbihk aWQ9ZGlkKQorCisgICAgIyB3ZSB3aWxsIHNldCB0ZW1wbGF0ZSBwYXRoIGZv ciBzcWwgc2NyaXB0cworICAgIHRlbXBsYXRlX3BhdGggPSAnZ3JhbnR3aXph cmQvc3FsJworCisgICAgIyBGZXRjaCBmdW5jdGlvbnMgYWdhaW5zdCBzY2hl bWEKKyAgICBpZiBub2RlX3R5cGUgaW4gWydzY2hlbWEnXToKKyAgICAgICAg U1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAgICAg W3RlbXBsYXRlX3BhdGgsICdwcm9wZXJ0aWVzLnNxbCddKSwKKyAgICAgICAg ICAgIG5vZGVfaWQ9bm9kZV9pZCwgbm9kZV9uYW1lPW5vZGVfbmFtZSwKKyAg ICAgICAgICAgIHR5cGU9bm9kZV90eXBlLCBuc3BuYW1lPW5zcG5hbWUpCisK KyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChTUUwp CisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIHJlc19kYXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkKKworICAgICMgRmV0 Y2ggdHJpZ2dlciBmdW5jdGlvbnMKKyAgICBpZiBub2RlX3R5cGUgaW4gWydz Y2hlbWEnLCAndHJpZ2dlcl9mdW5jdGlvbiddOgorICAgICAgICBTUUwgPSBy ZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAgICAgICBbdGVtcGxh dGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAgICAgICAgICAgbm9k ZV9pZD1ub2RlX2lkLCBub2RlX25hbWU9bm9kZV9uYW1lLAorICAgICAgICAg ICAgdHlwZT0ndHJpZ2dlcl9mdW5jdGlvbicsIG5zcG5hbWU9bnNwbmFtZSkK KyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25uLmV4ZWN1dGVfZGljdChTUUwp CisKKyAgICAgICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVy biBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorCisgICAg ICAgIHJlc19kYXRhLmV4dGVuZChyZXNbJ3Jvd3MnXSkKKworICAgICMgRmV0 Y2ggU2VxdWVuY2VzIGFnYWluc3Qgc2NoZW1hCisgICAgaWYgbm9kZV90eXBl IGluIFsnc2NoZW1hJywgJ3NlcXVlbmNlJ106CisgICAgICAgIFNRTCA9IHJl bmRlcl90ZW1wbGF0ZSgiLyIuam9pbigKKyAgICAgICAgICAgIFt0ZW1wbGF0 ZV9wYXRoLCAncHJvcGVydGllcy5zcWwnXSksCisgICAgICAgICAgICBub2Rl X2lkPW5vZGVfaWQsIG5vZGVfbmFtZT1ub2RlX25hbWUsCisgICAgICAgICAg ICB0eXBlPSdzZXF1ZW5jZScsIG5zcG5hbWU9bnNwbmFtZSkKKworICAgICAg ICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkKKyAgICAg ICAgaWYgbm90IHN0YXR1czoKKyAgICAgICAgICAgIHJldHVybiBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9cmVzKQorICAgICAgICByZXNfZGF0 YS5leHRlbmQocmVzWydyb3dzJ10pCisKKyAgICAjIEZldGNoIFRhYmxlcyBh Z2FpbnN0IHNjaGVtYQorICAgIGlmIG5vZGVfdHlwZSBpbiBbJ3NjaGVtYScs ICd0YWJsZSddOgorICAgICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8i LmpvaW4oCisgICAgICAgICAgICBbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRp ZXMuc3FsJ10pLAorICAgICAgICAgICAgbm9kZV9pZD1ub2RlX2lkLCBub2Rl X25hbWU9bm9kZV9uYW1lLAorICAgICAgICAgICAgdHlwZT0ndGFibGUnLCBu c3BuYW1lPW5zcG5hbWUpCisKKyAgICAgICAgc3RhdHVzLCByZXMgPSBjb25u LmV4ZWN1dGVfZGljdChTUUwpCisgICAgICAgIGlmIG5vdCBzdGF0dXM6Cisg ICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXJlcykKKworICAgICAgICByZXNfZGF0YS5leHRlbmQocmVzWydyb3dz J10pCisKKyAgICAjIEZldGNoIFZpZXdzIGFnYWluc3Qgc2NoZW1hCisgICAg aWYgbm9kZV90eXBlIGluIFsnc2NoZW1hJywgJ2NvbGwtdmlldyddOgorICAg ICAgICBTUUwgPSByZW5kZXJfdGVtcGxhdGUoIi8iLmpvaW4oCisgICAgICAg ICAgICBbdGVtcGxhdGVfcGF0aCwgJ3Byb3BlcnRpZXMuc3FsJ10pLAorICAg ICAgICAgICAgbm9kZV9pZD1ub2RlX2lkLCBub2RlX25hbWU9bm9kZV9uYW1l LAorICAgICAgICAgICAgdHlwZT0nY29sbC12aWV3JywgbnNwbmFtZT1uc3Bu YW1lKQorCisgICAgICAgIHN0YXR1cywgcmVzID0gY29ubi5leGVjdXRlX2Rp Y3QoU1FMKQorICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg cmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJvcm1zZz1yZXMpCisK KyAgICAgICAgcmVzX2RhdGEuZXh0ZW5kKHJlc1sncm93cyddKQorCisgICAg cmV0dXJuIGFqYXhfcmVzcG9uc2UoCisgICAgICAgICAgICByZXNwb25zZT1y ZXNfZGF0YSwKKyAgICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAg ICkKKworCitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvZ3JhbnR3aXphcmQv bXNxbC88aW50OmdpZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPi88bm9kZV90eXBl Pi88bnNwbmFtZT4vJywKKyAgICBtZXRob2RzPSgnR0VUJywgJ1BPU1QnKSkK K2RlZiBtc3FsKGdpZCwgc2lkLCBkaWQsIG5vZGVfdHlwZSwgbnNwbmFtZSk6 CisgICAgIiIiCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiBtb2Rp ZmllZCBTUUwKKyAgICAiIiIKKyAgICBkYXRhID0ge30KKyAgICBmb3Igaywg diBpbiByZXF1ZXN0LmFyZ3MuaXRlbXMoKToKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgZGF0YVtrXSA9IGpzb24ubG9hZHModikKKyAgICAgICAgZXhj ZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBkYXRhW2tdID0gdgorCisg ICAgIyBGb3JtIGRiIGNvbm5lY3Rpb24KKyAgICBtYW5hZ2VyID0gZ2V0X2Ry aXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHNp ZCkKKyAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQpCisK KyAgICAjIHdlIHdpbGwgc2V0IHRlbXBsYXRlIHBhdGggZm9yIHNxbCBzY3Jp cHRzCisgICAgdGVtcGxhdGVfcGF0aCA9ICdncmFudHdpemFyZC9zcWwnCisK KyAgICBhY2xzID0gW10KKyAgICB0cnk6CisgICAgICAgIGFjbHMgPSByZW5k ZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAiLyIuam9pbihbdGVtcGxhdGVf cGF0aCwgJ2FsbG93ZWRfYWNsLmpzb24nXSkKKyAgICAgICAgICAgICkKKyAg ICAgICAgYWNscyA9IGpzb24ubG9hZHMoYWNscykKKyAgICBleGNlcHQgRXhj ZXB0aW9uIGFzIGU6CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5leGNl cHRpb24oZSkKKworICAgIHRyeToKKyAgICAgICAgIyBQYXJzZSBQcml2aWxl Z2VzCisgICAgICAgIGlmICdhY2wnIGluIGRhdGE6CisgICAgICAgICAgICBk YXRhWydhY2wnXSA9IHBhcnNlX3ByaXZfdG9fZGIoZGF0YVsnYWNsJ10sIGFj bHNbbm9kZV90eXBlXVsnYWNsJ10pCisKKyAgICAgICAgIyBQYXNzIERhdGFi YXNlIE9iamVjdHMgYW5kIGdldCBTUUwgZm9yIHByaXZpbGVnZXMKKyAgICAg ICAgU1FMID0gcmVuZGVyX3RlbXBsYXRlKCIvIi5qb2luKAorICAgICAgICAg ICAgW3RlbXBsYXRlX3BhdGgsICdncmFudC5zcWwnXSksCisgICAgICAgICAg ICBkYXRhPWRhdGEsIG5zcG5hbWU9bnNwbmFtZSwgY29ubj1jb25uKQorCisg ICAgICAgIHJlcyA9IHsnZGF0YSc6IFNRTH0KKworICAgICAgICByZXR1cm4g YWpheF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlc3BvbnNlPXJlcywKKyAg ICAgICAgICAgIHN0YXR1cz0yMDAKKyAgICAgICAgICAgICkKKworICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcmV0dXJuIG1ha2VfanNv bl9yZXNwb25zZSgKKyAgICAgICAgICAgIHN0YXR1cz00MTAsCisgICAgICAg ICAgICBzdWNjZXNzPTAsCisgICAgICAgICAgICBlcnJvcm1zZz1lLm1lc3Nh Z2UKKyAgICAgICAgKQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9n cmFudHdpemFyZC9zYXZlLzxpbnQ6Z2lkPi88aW50OnNpZD4vPGludDpkaWQ+ LycKKyAgICAnPG5vZGVfdHlwZT4vPG5zcG5hbWU+LycsCisgICAgbWV0aG9k cz0oJ0dFVCcsICdQT1NUJykpCitkZWYgc2F2ZShnaWQsIHNpZCwgZGlkLCBu b2RlX3R5cGUsIG5zcG5hbWUpOgorICAgICIiIgorICAgIFRoaXMgZnVuY3Rp b24gd2lsbCBhcHBseSB0aGUgcHJpdmlsZWdlcyB0byB0aGUgc2VsZWN0ZWQK KyAgICBEYXRhYmFzZSBPYmplY3RzCisgICAgIiIiCisgICAgZGF0YSA9IHJl cXVlc3QuZm9ybSBpZiByZXF1ZXN0LmZvcm0gZWxzZSBqc29uLmxvYWRzKHJl cXVlc3QuZGF0YS5kZWNvZGUoKSkKKworICAgICMgRm9ybSBkYiBjb25uZWN0 aW9uIGFuZCB3ZSB1c2UgY29ubiB0byBleGVjdXRlIHNxbAorICAgIG1hbmFn ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9u X21hbmFnZXIoc2lkKQorICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24o ZGlkPWRpZCkKKworICAgICMgd2Ugd2lsbCBzZXQgdGVtcGxhdGUgcGF0aCBm b3Igc3FsIHNjcmlwdHMKKyAgICB0ZW1wbGF0ZV9wYXRoID0gJ2dyYW50d2l6 YXJkL3NxbCcKKworICAgIGFjbHMgPSBbXQorICAgIHRyeToKKyAgICAgICAg YWNscyA9IHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAgICAgICAgICIvIi5qb2lu KFt0ZW1wbGF0ZV9wYXRoLCAnYWxsb3dlZF9hY2wuanNvbiddKQorICAgICAg ICAgICAgKQorICAgICAgICBhY2xzID0ganNvbi5sb2FkcyhhY2xzKQorICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLmV4Y2VwdGlvbihlKQorCisgICAgdHJ5OgorCisgICAgICAgICMg UGFyc2UgcHJpdmlsZWdlcworICAgICAgICBpZiAnYWNsJyBpbiBkYXRhOgor ICAgICAgICAgICAgZGF0YVsnYWNsJ10gPSBwYXJzZV9wcml2X3RvX2RiKAor ICAgICAgICAgICAgICAgIGRhdGFbJ2FjbCddLAorICAgICAgICAgICAgICAg IGFjbHNbbm9kZV90eXBlXVsnYWNsJ10KKyAgICAgICAgICAgICAgICApCisK KyAgICAgICAgIyBQYXNzIERhdGFiYXNlIE9iamVjdHMgYW5kIGdldCBTUUwg Zm9yIHByaXZpbGVnZXMKKyAgICAgICAgU1FMID0gcmVuZGVyX3RlbXBsYXRl KCIvIi5qb2luKAorICAgICAgICAgICAgW3RlbXBsYXRlX3BhdGgsICdncmFu dC5zcWwnXSksCisgICAgICAgICAgICBkYXRhPWRhdGEsIG5zcG5hbWU9bnNw bmFtZSwgY29ubj1jb25uKQorCisgICAgICAgIGlmIFNRTCBhbmQgaXNpbnN0 YW5jZShTUUwsIGJhc2VzdHJpbmcpIGFuZCBcCisgICAgICAgICAgICAgICAg U1FMLnN0cmlwKCdcbicpIGFuZCBTUUwuc3RyaXAoJyAnKToKKyAgICAgICAg ICAgICAgICBzdGF0dXMsIHJlcyA9IGNvbm4uZXhlY3V0ZV9kaWN0KFNRTCkK KyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICAgICAg ICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNn PXJlcykKKworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVz cG9uc2UoCisgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MSwKKyAgICAg ICAgICAgICAgICAgICAgaW5mbz0iUHJpdmlsZWdlcyBBcHBsaWVkIgorICAg ICAgICAgICAgICAgICkKKworICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK KyAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAgICAgICAg ICAgIHN0YXR1cz00MTAsCisgICAgICAgICAgICBzdWNjZXNzPTAsCisgICAg ICAgICAgICBlcnJvcm1zZz1lLm1lc3NhZ2UKKyAgICAgICAgKQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvc3RhdGljL2Nz cy9ncmFudHdpemFyZC5jc3MgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudHdp emFyZC9zdGF0aWMvY3NzL2dyYW50d2l6YXJkLmNzcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTNlNzg4Ci0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvc3RhdGljL2Nz cy9ncmFudHdpemFyZC5jc3MKQEAgLTAsMCArMSw0OCBAQAorLyogR3JhbnQg V2l6YXJkIENTUyAqLworCisvKiBDU1MgdG8gbWFrZSBEYiBvYmplY3QgdHlw ZSB0YWJsZQorICogZml4ZWQgc28gdGhhdCB0Ym9keSBjb250ZW50IG1heQor ICogc2Nyb2xsCisgKi8KKy5vYmplY3RfdHlwZV90YWJsZSB0aGVhZCB0ciB7 CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgZGlzcGxheTogYmxvY2s7Cit9 CisKKy5vYmplY3RfdHlwZV90YWJsZSB0Ym9keSB7CisgIGRpc3BsYXk6IGJs b2NrOworICBvdmVyZmxvdy15OiBzY3JvbGw7CisgIGhlaWdodDogMTYwcHg7 Cit9CisKKy5vYmplY3RfdHlwZV90YWJsZSB0Ym9keSB0ciB0ZDpudGgtY2hp bGQoMSksCisub2JqZWN0X3R5cGVfdGFibGUgdGhlYWQgdHIgdGg6bnRoLWNo aWxkKDEpIHsKKyAgd2lkdGg6IDI4cHg7CisgIG1pbi13aWR0aDogMjhweDsK K30KKworLm9iamVjdF90eXBlX3RhYmxlIHRib2R5IHRyIHRkOm50aC1jaGls ZCgyKSwKKy5vYmplY3RfdHlwZV90YWJsZSB0aGVhZCB0ciB0aDpudGgtY2hp bGQoMikgeworICB3aWR0aDogMTg1cHg7CisgIG1pbi13aWR0aDogMTg1cHg7 Cit9CisKKy5vYmplY3RfdHlwZV90YWJsZSB0Ym9keSB0ciB0ZDpudGgtY2hp bGQoMyksCisub2JqZWN0X3R5cGVfdGFibGUgdGhlYWQgdHIgdGg6bnRoLWNo aWxkKDMpIHsKKyAgd2lkdGg6IDExMHB4OworICBtaW4td2lkdGg6IDExMHB4 OworfQorCisub2JqZWN0X3R5cGVfdGFibGUgdGJvZHkgdHIgdGQ6bnRoLWNo aWxkKDQpLAorLm9iamVjdF90eXBlX3RhYmxlIHRoZWFkIHRyIHRoOm50aC1j aGlsZCg0KSB7CisgIHdpZHRoOiAyNDRweDsKK30KKworLmVycm9yX21zZ19k aXYgeworCWRpc3BsYXk6YmxvY2s7Cit9CisKKy8qKiBPdmVycmlkZSBCYWNr Z3JpZCBmaWx0ZXIgQ1NTICoqLworLmJhY2tncmlkLWZpbHRlci5mb3JtLXNl YXJjaCB7CisgIG1hcmdpbjogMHB4IDVweCA1cHggMDsKK30KZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50d2l6YXJkL3N0YXRpYy9jc3Mv d2l6YXJkLmNzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50d2l6YXJkL3N0 YXRpYy9jc3Mvd2l6YXJkLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwLi4wNThhZmE3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvc3RhdGljL2Nzcy93aXphcmQuY3Nz CkBAIC0wLDAgKzEsODYgQEAKKy8qKiBDU1MgZm9yIFdpemFyZCAqKi8KKy53 aXphcmRfZGxnIHsKKwloZWlnaHQ6IDMwMHB4OworCXBhZGRpbmc6IDAgMTBw eDsKK30KKworLmFqcy1jb250ZW50IHsKKwlwYWRkaW5nLXRvcDogMHB4ICFp bXBvcnRhbnQ7Cit9CisKKy8qIFdpemFyZCBIZWFkZXIgQ1NTICovCisud2l6 YXJkLWhlYWRlciB7CisgIGJhY2tncm91bmQ6ICM0MjhiY2E7CisJcGFkZGlu Zy1sZWZ0OiAxNXB4OworCXBhZGRpbmctYm90dG9tOiA3cHg7CisJY29sb3I6 ICNmZmY7CisJZm9udC1zaXplOiAxOHB4OworCW1hcmdpbi1ib3R0b206IDE1 cHg7CisJaGVpZ2h0OiA3NnB4OworCWxpbmUtaGVpZ2h0OiA3NnB4OworfQor Cisud2l6YXJkLWhlYWRlciBoMyB7CisgIGZvbnQtc2l6ZTogMThweDsKKyAg ZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisud2l6YXJkLWNvbnRlbnQg eworCW92ZXJmbG93LXk6IGF1dG87CisJZmxvYXQ6IGxlZnQ7CisJcGFkZGlu ZzogMDsKKwltaW4taGVpZ2h0OiAyODBweDsKKwltYXgtaGVpZ2h0OiAyODBw eDsKK30KKworLyogV2l6YXJkIEZvb3RlciBDU1MgKi8KKy5mb290ZXIgewor ICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvcmRlci10b3A6IDFweCBzb2xp ZCAjY2NjOworICBib3R0b206IDBweDsKKyAgaGVpZ2h0OiA3MXB4OworICBy aWdodDogMHB4OworICBwYWRkaW5nLXRvcDogMjJweDsKK30KKworLyogV2l6 YXJkIEJ1dHRvbiBDU1MgKi8KKy53aXphcmQtYnV0dG9ucyB7CisgIGZsb2F0 OiByaWdodDsKK30KKworLndpemFyZC1idXR0b25zIGJ1dHRvbiB7CisgIGZs b2F0OiBsZWZ0OworICBwYWRkaW5nOiA3cHggMTUuMnB4OworICBmb250LXNp emU6IDE0cHg7CisgIG1hcmdpbi1yaWdodDogNXB4OworfQorCisud2l6YXJk LWZpbmlzaCB7CisgIG1hcmdpbi1yaWdodDogMDsKK30KKworLyogV2l6YXJk IFN0YXR1cyBiYXIgQ1NTICovCisud2l6YXJkLXN0YXR1cy1iYXIgeworICBo ZWlnaHQ6IDUwcHg7CisgIHBhZGRpbmctYm90dG9tOiAxMHB4OworICBtYXJn aW4tYm90dG9tOiAxMHB4OworICBwYWRkaW5nLWxlZnQ6IDE1cHg7Cit9CisK Ky8qIEVycm9yIG1lc3NhZ2UgY3NzICovCisuZXJyb3JfbXNnX2RpdiwKKy5l cnJvcl9tc2dfZGl2IC5wZy1wcm9wLXN0YXR1cy1iYXIgeworICBiYWNrZ3Jv dW5kOiAjZmZmOworICBkaXNwbGF5OiBub25lOworfQorCisvKiBJbiB3aXph cmQgc2VsZWN0MiBkcm9wZG93biBkb2Vzbid0CisgKiBwb3B1cCBiZWNhdXNl IHotaW5kZXggb2YgYWxlcnRpZnkKKyAqIHdpemFyZCBpcyBncmVhdGVyIHRo YW4gdGhlIHotaW5kZXgKKyAqIG9mIHNlbGVjdDIgZHJvcGRvd24uIFRvIG1h a2Ugc2VsZWN0MgorICogdmlzaWJsZSwgc2V0IHotaW5kZXggb2Ygc2VsZWN0 MgorICogaGlnaGVyIHZhbHVlIHRoYW4gd2l6YXJkJ3MKKyAqLworLnNlbGVj dDItY29udGFpbmVyLS1vcGVuIHsKKyAgei1pbmRleDogMTAwMDA7Cit9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudHdpemFyZC9zdGF0 aWMvaW1nL2NvbGwtZXh0ZW5zaW9uLnBuZyBiL3dlYi9wZ2FkbWluL3Rvb2xz L2dyYW50d2l6YXJkL3N0YXRpYy9pbWcvY29sbC1leHRlbnNpb24ucG5nCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZDdjYTk3YTMzZWY1OTVmNDQ4Yjg2 MjExNjhkNTMxZjg2ZDUxZDUKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDEw MTcKemNtVjxWMHx4d3dQKTxoOzNLfExrMDAwZTFOSkxUcTAwMG1HMDAwbU8w e3tSM0NAbHxEMDAwMDFiNWNoXzBJdHApCno9PlB4JV9mU2shTVNeeFooI15O M3A/UiZPZCtfWXUkaWJqJVReNlJvckIjYm1uITFfNXh9MkppVUg5fG09aSRw ewp6UnQ+N2VzWngocmtITUImbXxrcH1Za0YtaStTOXFIb05UWUNmeF58b0s3 Yz5IPkJ4N25lTUVqamZPOXZablFnemcKem5hc3pvLWB2Yy13dzdLXzByQmVB d3lTPWdtMWpQQ0plSkkkR2o9biZ2eXEqWFZ+flZTZVErP0drekx1KXYrKEtD Cno/JlpwdWklQEQ/NV9vN0s1TCp0ZTxHZHwkRSZUaVVgfXAkdF9VIWZXO1Bk Uis+KjIhYS1NWiU0dmc2Z007TClMPQp6azUzdzQ3OU0zQkRRK2xmc0JvJnx4 b0UzITgpRiRqZF9MWEduNWRVbUhFSmNFJCltfmIoeEszKnYqRXFCPWZrayYK enpONnVAbyFfcEkqUChYN2c+az10Zjc2eFAkZElqP1NWZTl1Z1NMcG4+Jn0r bHNGMiNEaVApV2opfGg8TWxoNDQ5CnptNCF1Q1B5fWRMNFZzOFV0Q3YhSHY0 TTVjamVkUFBDfSR1alo2e3hOSkJvY1hCeDQoOyl2azhNaGRfQD01bkstIwp6 V2YodHxPMD1ZRUY9cnJ6dnhuOTMrXnlCTFQkZipBb0BQSWVOMCsja1dSK3Vy Y1FNY0oqU0Ytc1Qmcm5mbFZGancKemthS00lRz1uO0AkKl8tcUlUbF9NIXN5 R0cmN258fFJFXjEqRHw7fSQpNHRmbWhyejZBSWJJWkFucXF7eWkqVCVWCnpI aFZXdFY7JnUxOEkjdGRJRV9OcHprYnJZYzlWZk1MdFBYPFpZeDEmQjVaOU9t M304Vlo3RmlQZXM5by1URHglMQp6d3s2WHtXeCVGWG9yV3s1a35fa3JNdnsz Vk1zemV8dCFgK31nSlI1bUhqK1huWTkoLTtaYipWaEN4JGMxdVUqSGgKelJt Rz1HekBSXmhhdlYqMUpZMzNuUj4qVG95azt8K01MTVpiSylfK1hvakhBSDVt PHl2UjtGVDUjJjFpK1lETDBrCnpKSEs2X2s0dWh3R2xwfDFpK0MpIXBpO0or TX5aWUlmQH5SdFo1RDRfMzBqRiNSO2dxKnk7KzJLSipKJj0kaXR8Swp6YnRi XjFQckl+fSM9KWg7ek1AfXxUXndtMDU/JkQrWTheSjBNSjxtITZrYD4mbkwm NEhDPmQlU1A9YCo0ZF8kM1gKekNvR2FaZlQofEtTX190WkI3VVpRS0QlOE9Y YyZLTDdKK0xPOCtSbTBmPUMhezlUI21KN1VERkUwMDAwMWJXJT1KCnowNl55 MFcmaSpIMGIpeD5MOyMyZDlZX0VHMDEwcU5TI3RtWTNsamhVM2xqa1ZudyVI XzAwME1jTmxpcnUrWEVYQgp6NkNwKFJiY3B9fTBCJVZ7S354eWlVNjhSMnoj dDMrblModHQhM35oWV52R2c0MkZMPWBFRU5ObTB7TSE2LXkxOykKelF4RmF6 dkxfY0sqYjxfb2tGZzBkOEhjI1Y9RWhgKWgreVptcGxlaG5sTlpFZHRnUUBo WDBDTmVJV0VweHchb3lOCm5kY350c3A5VGxpZE96T0MmLSkqfEtIKTNwRDJu Z3IwMDAwME5rdlhYdTBtamY8S05VegoKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAx CgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQv c3RhdGljL2ltZy9leHRlbnNpb24ucG5nIGIvd2ViL3BnYWRtaW4vdG9vbHMv Z3JhbnR3aXphcmQvc3RhdGljL2ltZy9leHRlbnNpb24ucG5nCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAuLmUzYzUzMzM0Nzg4M2ZjMWRlYzczYmNiMjFiMzJm YzU0ZTNjMzE3MzIKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDk5Ngp6Y21W PEEwfmBFX1ApPGg7M0t8TGswMDBlMU5KTFRxMDAwbUcwMDBtTzB7e1IzQ0Bs fEQwMDAwMWI1Y2hfMEl0cCkKej0+UHglYGNPPCVNUTJ6TGZfNkk2Jjl8emRk OTk+LUBhKjJtIUp1bmg3Til8YlJmfC1ieHx6VmJvU0toYV93KGxHCno7bWMt TDRYVlZjUWpiKVIhSW9OPlVUbTZjZFRsUCspNDhhZVlfRigrIXF2aClmSXEk SSRha0BRTTFEZW1iMnAteQp6Wk5JcGclKlU/Wit8MGVVbVI/USlAI0B5THRB M3U5WEZodjhtZHYwdGJ+QyFPayk0eGNrYzNXc2E0PyphVUQ/cEgKekBhZlgt PDtzfGdQLTxIZWN4V0xJVE1uK3t5ZSlEcXtRTEwmYDExTW8/RGc+QV5YJUV7 O2xrK015NWB4azxKR0MpCnooVj9KXlBhMHFyOSVVUlVaWVhKfWFIYHxFWHNk Nz1WO01rdktIYmNpc0Z6bllZOSplQHFzaV5rcTBwK2M7a34hIwp6IT81TVBx djVsaS0+IzY/cD8xTkFhbGUzbikwTnVEa2difG5NUSR2RXd1cjspJlgoUCVr bExlKCpxd3NibjAoWmUKeiYlbHFCZysqM1MxWlk/ZG51dFRJbXJ7R05mcHla MmV0a005WENOcVRDdHI5d2loVk9BVjtpTl91NkQoVEsjeGNmCnpUbmB2ITco Yk90dzRgYj1YQ1E+TGh0PWBpdDx8KCNtdFNGP1c8UVFjbSQ7VD5tMUJaO0cw KlNVeDglV0d0NyY0Qgp6VjNEK3RiOFJJd2dGM0x1dSNiTl43RzR2PT0qeVZS cC1fQGtqbWVvU2RvYUchelN6V3YhS2BVSFVLQyFNVnVaU2oKemFJQUpWZHBB eUY5dnh5Q2xoJmcralk4R0dlJHU7a2xZdW91VEAqaVZEP3cpPlk7N0VzZWtW Qz9EUlIxZ1pfdFFaCnp5S3Y5OVpPeVl+ekB9ODRoQkt7X0pIbighbDZmTFZi VG5oRlpmTVNmViQ2THVsMHFoR0MyKlo/TlA8VHZoQkx+cQp6VUJ8MGMjaXZj Y3BnKVJvOThHI1dUKmBQPiRhNn0oVzsyPmFJO2x9V3ordHxmSWVsamxTY0ZT ZnJlYVhXWiVmMiMKek1aI3R+emc/a15PT0FVcGhJMSo0Y3IzVn1RbnM4Jmln WTFAWSNEQFk3SD9iJFQ4VUN0c2JuXzJTJWkyIXJrISloCnohPkVhTUNjdmFt eVI/KFchS0s4JHFGPDMrOUJDYUFVSik4PDlYNkxtRXNzMURWLT5aVEwzZTI9 OEVQOSloZmF1bQp6THk+d1hFUnNFZHNERW8oM3ptRSRleGBqc3lJbUcmNz1M T09mb2x+VGNPKiVJTkVtSiU3aX1CfFlSbjElMDAwNFcKelFjaEM8Szwzekgw MDAwMVZvT0l2MEVoKTBOQntyOzMyO2JSYXt2R2Y2OTUxVTY5RTk0b0VRS0Ew MChxUU8rXlJXCnowfi14RzQhJkhCRjh9fWxSIUt4YlIyYjdeVT8zajJ4UztW dkxYYnR3VHp+PjBXPVFoVkEpeUhfRmtMe30xO2h1awp6cGFLQ1FLekA9N3Ng e2k5N2kwQHZsMlRTOHcxQzc/UiZHN3k7KTFObTw8T1prQ3tBLWg8Nn1BPENq YkRhUDhxRGUKU1JfNGU2MDAwMDxNTlVNbkxTVGFYLV5MMzcKCmxpdGVyYWwg MApIY21WP2QwMDAwMQoKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L2dyYW50d2l6YXJkL3RlbXBsYXRlcy9ncmFudHdpemFyZC9qcy9ncmFudHdp emFyZC5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50d2l6YXJkL3RlbXBs YXRlcy9ncmFudHdpemFyZC9qcy9ncmFudHdpemFyZC5qcwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTNhMTZhCi0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvdGVtcGxh dGVzL2dyYW50d2l6YXJkL2pzL2dyYW50d2l6YXJkLmpzCkBAIC0wLDAgKzEs ODYzIEBACitkZWZpbmUoWworICAgICAgJ2pxdWVyeScsICd1bmRlcnNjb3Jl JywgJ3VuZGVyc2NvcmUuc3RyaW5nJywgJ2FsZXJ0aWZ5JywKKyAgICAgICdw Z2FkbWluLmJyb3dzZXInLCAnYmFja2JvbmUnLCAnYmFja2dyaWQnLCAncGdh ZG1pbi5icm93c2VyLm5vZGUnLAorICAgICAgJ2JhY2tncmlkLnNlbGVjdC5h bGwnLCAnYmFja2dyaWQuZmlsdGVyJywgJ2JhY2tib25lLnBhZ2luYXRvcics CisgICAgICAnYmFja2dyaWQucGFnaW5hdG9yJywgJ3BnYWRtaW4uYnJvd3Nl ci5zZXJ2ZXIucHJpdmlsZWdlJywKKyAgICAgICdwZ2FkbWluLmJyb3dzZXIu d2l6YXJkJywKKyAgICAgIF0sCisKK2Z1bmN0aW9uKCQsIF8sIFMsIGFsZXJ0 aWZ5LCBwZ0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwgcGdOb2RlKSB7 CisKKyAgaWYgKHBnQnJvd3Nlci5HcmFudFdpemFyZCkgeworICAgIHJldHVy biBwZ0Jyb3dzZXIuR3JhbnRXaXphcmQ7CisgIH0KKworICAvKioKKyAgICBJ dCBpcyBzdWIgbW9kZWwgZm9yIGZpZWxkICJPYmplY3RzIi4gSXQgaGFzIGZp ZWxkcworICAgIGZvciBkYXRhYmFzZSBvYmplY3QgdHlwZXMgc3VjaCBhcyBT Y2hlbWFzLCBWaWV3cyBhbmQKKyAgICBTZXF1ZW5jZSBldGMuCisgICovCisg IHZhciBEYXRhYmFzZU9iamVjdE1vZGVsID0gcGdOb2RlLk1vZGVsLmV4dGVu ZCh7CisgICAgZGVmYXVsdHM6IHsKKyAgICAgIHNlbGVjdGVkOiBmYWxzZSwK KyAgICAgIGljb246ICdpY29uLXVua25vd24nLAorICAgICAgbmFtZTogdW5k ZWZpbmVkLAorICAgICAgbnNwbmFtZTogdW5kZWZpbmVkLAorICAgICAgcHJv YXJnczogdW5kZWZpbmVkLAorICAgICAgb2JqZWN0X3R5cGU6IHVuZGVmaW5l ZCwKKyAgICAgIG9iamVjdF9pZDogdW5kZWZpbmVkCisgICAgfSwKKyAgICBp ZEF0dHJpYnV0ZTogJ29iamVjdF9pZCcsCisgICAgcGFyc2U6IGZ1bmN0aW9u KHJlcykgeworCisgICAgICAvLyBDcmVhdGUgdW5pcXVlIG9iamVjdCBpZAor ICAgICAgcmVzLm9iamVjdF9pZCA9IHJlcy5vYmplY3RfdHlwZSArIHJlcy5u c3BuYW1lICsgJyInICsgcmVzLm5hbWU7CisKKyAgICAgIHJldHVybiByZXM7 CisgICAgfSwKKworICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKKworICAg ICAgLyoKKyAgICAgICogVHJpZ2dlcnMgZXJyb3IgbWVzc2FnZXMgZm9yIG9i amVjdCB0eXBlcyAic2VsZWN0ZWQiCisgICAgICAqIGlmIGl0IGlzIGVtcHR5 L3VuZGVmaW5lZC9udWxsCisgICAgICAqLworICAgICAgdmFyIGVyciA9IHt9 LAorICAgICAgICBlcnJtc2csCisgICAgICAgIG5vZGUgPSB0aGlzLmdldCgn b2JqZWN0cycpLnRvSlNPTigpOworICAgICAgaWYgKF8uaXNFbXB0eShub2Rl KSkgeworICAgICAgICBlcnJbJ3NlbGVjdGVkJ10gPSAne3sgXygiUGxlYXNl IHNlbGVjdCBhbnkgZGF0YWJhc2Ugb2JqZWN0IHR5cGUiKSB9fSc7CisgICAg ICAgIGVycm1zZyA9IGVycm1zZyB8fCBlcnJbJ3NlbGVjdGVkJ107CisgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NlbGVjdGVkJywgZXJybXNnKTsK KyAgICAgICAgcmV0dXJuIGVycm1zZzsKKyAgICAgIH0gZWxzZSB7CisgICAg ICAgIHRoaXMuZXJyb3JNb2RlbC51bnNldCgnc2VsZWN0ZWQnKTsKKyAgICAg IH0KKyAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgfSk7CisKKyAgLy8g RGVmaW5lIHByaXZpbGVnZXMgZm9yIHZhcmlvdXMgdHlwZXMgb2Ygbm9kZXMK KyAgdmFyIHByaXZEaWN0ID0geworICAgICdzY2hlbWEnOiBbJ2EnLCAncics ICd3JywgJ2QnLCAnRCcsICd4JywgJ3QnLCAnVScsICdYJ10sCisgICAgJ2Nv bGwtZnVuY3Rpb24nOiBbJ1gnXSwKKyAgICAnY29sbC1zZXF1ZW5jZSc6IFsn YScsICd3JywgJ1UnXSwKKyAgICAnY29sbC10YWJsZSc6WydhJywgJ3cnLCAn VScsICdkJywgJ0QnLCAneCcsICd0J10sCisgICAgJ2NvbGwtdmlldyc6IFsn YScsICdyJywgJ3cnLCAnZCcsICdEJywgJ3gnLCAndCddLAorICB9OworCisg IC8vIERlZmluZSBjb2x1bW5zIGZvciB0aGUgRGIgT2JqZWN0IFR5cGVzIEdy aWQKKyAgdmFyIGNvbHVtbnMgPSBbeworICAgIG5hbWU6ICJzZWxlY3RlZCIs CisKKyAgICAvKgorICAgICBPdmVycmlkZSByZW5kZXIgbWV0aG9kIG9mIEJh Y2tncmlkLkV4dGVuc2lvbi5TZWxlY3RSb3dDZWxsCisgICAgIGNsYXNzLiBJ dCBoYXMgYW4gaXNzdWU6IEl0IGRvZXNuJ3QgbWFyayByb3dzIGNoZWNrZWQg aWYgd2UgbW92ZSB0byBuZXh0CisgICAgIHBhZ2UgYW5kIHRoZW4gZ28gYmFj ayB0byBwcmV2aW91cyBwYWdlLiBidXQgaXQgbXVzdCBzaG93LgorICAgICBz byB3ZSBoYW5kbGUgdGhpcyBjYXNlIGJ5IG92ZXJyaWRpbmcgdGhlIHJlbmRl ciBtZXRob2QuCisgICAgKi8KKyAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNp b24uU2VsZWN0Um93Q2VsbC5leHRlbmQoeworICAgICAgcmVuZGVyOiBmdW5j dGlvbigpIHsKKworICAgICAgICAvLyBVc2UgdGhlIEJhY2tmb3JtIENvbnRy b2wncyByZW5kZXIgZnVuY3Rpb24KKyAgICAgICAgQmFja2dyaWQuRXh0ZW5z aW9uLlNlbGVjdFJvd0NlbGwucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlz LCBhcmd1bWVudHMpOworCisgICAgICAgIHZhciBjb2wgPSB0aGlzLmNvbHVt bi5nZXQoJ25hbWUnKTsKKyAgICAgICAgaWYgKHRoaXMubW9kZWwgJiYgdGhp cy5tb2RlbC5oYXMoY29sKSkgeworICAgICAgICAgIGlmICh0aGlzLm1vZGVs LmdldChjb2wpKSB7CisgICAgICAgICAgICB0aGlzLmNoZWNrYm94KCkucHJv cCgiY2hlY2tlZCIsIHRydWUpOworICAgICAgICAgICAgdGhpcy4kZWwucGFy ZW50KCkudG9nZ2xlQ2xhc3MoInNlbGVjdGVkIiwgdHJ1ZSk7CisgICAgICAg ICAgICB0aGlzLm1vZGVsLnRyaWdnZXIoImJhY2tncmlkOnNlbGVjdGVkIiwg dGhpcy5tb2RlbCwgdHJ1ZSk7CisgICAgICAgICAgfQorICAgICAgICB9Cisg ICAgICAgIHJldHVybiB0aGlzOworICAgICAgfQorICAgIH0pLAorCisgICAg aGVhZGVyQ2VsbDogInNlbGVjdC1hbGwiLAorCisgIH0seworICAgIG5hbWU6 ICJvYmplY3RfdHlwZSIsCisgICAgbGFiZWw6ICJPYmplY3QgVHlwZSIsCisg ICAgZWRpdGFibGU6IGZhbHNlLAorICAgIGNlbGw6IEJhY2tncmlkLkNlbGwu ZXh0ZW5kKHsKKyAgICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisKKyAgICAg ICAgLy8gT3ZlcnJpZGUgcmVuZGVyIHRvIGFkZCBpY29uIHRvIERiIE9iamVj dCBjb2x1bW4KKyAgICAgICAgQmFja2dyaWQuQ2VsbC5wcm90b3R5cGUucmVu ZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CisgICAgICAgIHRoaXMuJGVs LmFkZENsYXNzKHRoaXMubW9kZWwuZ2V0KCdpY29uJykpLmNzcyh7InBhZGRp bmctbGVmdCI6ICIyMnB4In0pOworCisgICAgICAgIHJldHVybiB0aGlzOwor ICAgICAgfQorICAgIH0pCisgIH0seworICAgIG5hbWU6ICJuc3BuYW1lIiwK KyAgICBsYWJlbDogIlNjaGVtYSIsCisgICAgY2VsbDogInN0cmluZyIsCisg ICAgZWRpdGFibGU6IGZhbHNlCisgIH0seworICAgIG5hbWU6ICJuYW1lIiwK KyAgICBsYWJlbDogIk5hbWUiLAorICAgIGNlbGw6ICJzdHJpbmciLAorICAg IGVkaXRhYmxlOiBmYWxzZQorICB9XTsKKworICAvLyBDcmVhdGUgYW4gT2Jq ZWN0IEdyYW50V2l6YXJkIG9mIHBnQnJvd3NlciBjbGFzcworICBwZ0Jyb3dz ZXIuR3JhbnRXaXphcmQgID0geworICAgIGluaXQ6IGZ1bmN0aW9uKCkgewor ICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgcmV0dXJu OworICAgICAgfQorCisgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsK KworICAgICAgLy8gRGVmaW5lIGxpc3Qgb2Ygbm9kZXMgb24gd2hpY2ggZ3Jh bnQgd2l6YXJkIG9wdGlvbiBhcHBlYXJzCisgICAgICB2YXIgc3VwcG9ydGVk X25vZGVzID0gWworICAgICAgICAgICAgJ3NjaGVtYScsICdmdW5jdGlvbics ICdjb2xsLWZ1bmN0aW9uJywKKyAgICAgICAgICAgICdzZXF1ZW5jZScsICdj b2xsLXNlcXVjZW5lJywKKyAgICAgICAgICAgICd0YWJsZScsICdjb2xsLXRh YmxlJywKKyAgICAgICAgICAgICd2aWV3JywgJ2NvbGwtdmlldycKKyAgICAg ICAgICBdLAorCisgICAgICAgICAgLyoqCisgICAgICAgICAgICBFbmFibGUv ZGlzYWJsZSBncmFudHdpemFyZCBtZW51IGluIHRvb2xzIGJhc2VkCisgICAg ICAgICAgICBvbiBub2RlIHNlbGVjdGVkCisgICAgICAgICAgICBpZiBzZWxl Y3RlZCBub2RlIGlzIHByZXNlbnQgaW4gc3VwcG9ydGVkX25vZGVzLAorICAg ICAgICAgICAgbWVudSB3aWxsIGJlIGVuYWJsZWQgb3RoZXJ3aXNlIGRpc2Fi bGVkLgorICAgICAgICAgICAqLworICAgICAgICAgIG1lbnVfZW5hYmxlZCA9 IGZ1bmN0aW9uKG9iaikgeworICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmlu ZWQob2JqKSAmJiAhXy5pc051bGwob2JqKSkKKyAgICAgICAgICAgICAgcmV0 dXJuIChfLmluZGV4T2Yoc3VwcG9ydGVkX25vZGVzLCBvYmouX3R5cGUpICE9 PSAtMSA/IHRydWU6IGZhbHNlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgIH07CisKKyAgICAg IC8vIERlZmluZSB0aGUgbm9kZXMgb24gd2hpY2ggdGhlIG1lbnVzIHRvIGJl IGFwcGVhcgorICAgICAgdmFyIG1lbnVzID0gW3sKKyAgICAgICAgbmFtZTog J2dyYW50X3dpemFyZF9zY2hlbWEnLCBtb2R1bGU6IHRoaXMsCisgICAgICAg IGFwcGxpZXM6IFsndG9vbHMnXSwgY2FsbGJhY2s6ICdzdGFydF9ncmFudF93 aXphcmQnLAorICAgICAgICBwcmlvcml0eTogMTAsIGxhYmVsOiAne3tfKCJH cmFudCBXaXphcmQuLi4iKSB9fScsCisgICAgICAgIGljb246ICd3Y1RhYklj b24nLCBlbmFibGU6IG1lbnVfZW5hYmxlZAorICAgICAgfV07CisKKyAgICAg IC8vIEFkZCBzdXBwb3J0ZWQgbWVudXMgaW50byB0aGUgbWVudXMgbGlzdAor ICAgICAgZm9yICh2YXIgaWR4ID0gMDsgaWR4IDwgc3VwcG9ydGVkX25vZGVz Lmxlbmd0aDsgaWR4KyspIHsKKyAgICAgICAgbWVudXMucHVzaCh7CisgICAg ICAgICAgbmFtZTogJ2dyYW50X3dpemFyZF9zY2hlbWFfY29udGV4dF8nICsg c3VwcG9ydGVkX25vZGVzW2lkeF0sCisgICAgICAgICAgbm9kZTogc3VwcG9y dGVkX25vZGVzW2lkeF0sIG1vZHVsZTogdGhpcywKKyAgICAgICAgICBhcHBs aWVzOiBbJ2NvbnRleHQnXSwgY2FsbGJhY2s6ICdzdGFydF9ncmFudF93aXph cmQnLAorICAgICAgICAgIHByaW9yaXR5OiAxMCwgbGFiZWw6ICd7e18oIkdy YW50IFdpemFyZC4uLiIpIH19JywKKyAgICAgICAgICBpY29uOiAnd2NUYWJJ Y29uJywgZW5hYmxlOiBtZW51X2VuYWJsZWQKKyAgICAgICAgICB9KTsKKyAg ICAgIH0KKyAgICAgIHBnQWRtaW4uQnJvd3Nlci5hZGRfbWVudXMobWVudXMp OworCisgICAgICByZXR1cm4gdGhpczsKKyAgICB9LAorCisgICAgLy8gQ2Fs bGJhY2sgdG8gZHJhdyBXaXphcmQgRGlhbG9nCisgICAgc3RhcnRfZ3JhbnRf d2l6YXJkOiBmdW5jdGlvbihhY3Rpb24sIGl0ZW0pIHsKKyAgICAgIGlmICgh YWxlcnRpZnkud2l6YXJkRGlhbG9nKSB7CisgICAgICAgIGFsZXJ0aWZ5LmRp YWxvZygnd2l6YXJkRGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgpIHsKKyAg ICAgICAgICByZXR1cm4geworICAgICAgICAgICAgbWFpbjpmdW5jdGlvbih0 aXRsZSkgeworICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRs ZSk7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgc2V0dXA6ZnVuY3Rp b24oKSB7CisgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAg ICAgb3B0aW9uczogeworICAgICAgICAgICAgICAgICAgZnJhbWVsZXNzOiB0 cnVlLAorICAgICAgICAgICAgICAgICAgcmVzaXphYmxlOiBmYWxzZSwKKyAg ICAgICAgICAgICAgICAgIGF1dG9SZXNldDogZmFsc2UsCisgICAgICAgICAg ICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCisgICAgICAgICAgICAgICAg ICBjbG9zYWJsZUJ5RGltbWVyOiBmYWxzZQorICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg ICBob29rczp7CisgICAgICAgICAgICAgIG9uc2hvdzogZnVuY3Rpb24oKSB7 CisKKyAgICAgICAgICAgICAgICAvLyBTZXQgZGltZW5zaW9ucyBmb3Igd2l6 YXJkCisgICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50cy5kaWFsb2cuc3R5 bGUud2lkdGggPSAnMTAwJSc7CisgICAgICAgICAgICAgICAgdGhpcy5lbGVt ZW50cy5kaWFsb2cuc3R5bGUuaGVpZ2h0ID0gJzUzMHB4JzsKKyAgICAgICAg ICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBidWlsZDpm dW5jdGlvbigpIHsgfSwKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAg ICAgIFJldHVybnMgYSBDb2xsZWN0aW9uIHVzZWQgZm9yIHJlbmRlcmluZyBn cmlkCisgICAgICAgICAgICAgIGFuZCBQYWdpbmF0aW9uCisKKyAgICAgICAg ICAgICAgQGNsYXNzIHtCYWNrYm9uZS5QYWdlYWJsZUNvbGxlY3Rpb259Cisg ICAgICAgICAgICAgIEBwYXJhbSB7dmFyaWFibGV9IGJhc2VVcmwgLSBmcm9t IHdoaWNoIGRhdGEgaXMgZmV0Y2hlZAorICAgICAgICAgICAgICBAcGFyYW0g e0JhY2tib25lLk1vZGVsfSBEYXRhYmFzZU9iamVjdE1vZGVsCisgICAgICAg ICAgICAgIEByZXR1cm4ge09iamVjdH0gY29sbAorICAgICAgICAgICAgKi8K KyAgICAgICAgICAgIGdldFBhZ2VhYmxlQ29sbGVjdGlvbjogZnVuY3Rpb24o YmFzZVVybCl7CisgICAgICAgICAgICAgIHZhciBDb2xsID0gQmFja2JvbmUu UGFnZWFibGVDb2xsZWN0aW9uLmV4dGVuZCh7CisgICAgICAgICAgICAgICAg bW9kZWw6IERhdGFiYXNlT2JqZWN0TW9kZWwsCisgICAgICAgICAgICAgICAg dXJsOiBiYXNlVXJsLAorICAgICAgICAgICAgICAgIG1vZGU6ICJjbGllbnQi LAorICAgICAgICAgICAgICAgIHN0YXRlOiB7CisgICAgICAgICAgICAgICAg ICBwYWdlU2l6ZTogMTAwLAorICAgICAgICAgICAgICAgICAgc29ydEtleTog Im9iamVjdF90eXBlIiwKKyAgICAgICAgICAgICAgICAgIG9yZGVyOiAtMQor ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgcXVlcnlQYXJh bXM6IHsKKyAgICAgICAgICAgICAgICAgIHRvdGFsUGFnZXM6IG51bGwsCisg ICAgICAgICAgICAgICAgICB0b3RhbFJlY29yZHM6IG51bGwsCisgICAgICAg ICAgICAgICAgICBzb3J0S2V5OiAic29ydCIKKyAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICByZXR1cm4gbmV3 IENvbGwoKTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIC8qKgor ICAgICAgICAgICAgICBSZXR1cm5zIGEgUGFnaW5hdG9yIENsYXNzIE9iamVj dCB3aGljaCBpcyBhZ2FpbiB0byBiZSByZW5kZXJlZAorCisgICAgICAgICAg ICAgIEBjbGFzcyB7QmFja2dyaWQuRXh0ZW5zaW9uLlBhZ2luYXRvcn0KKyAg ICAgICAgICAgICAgQHBhcmFtIHtCYWNrYm9uZS5Db2xsZWN0aW9ufSBjb2xs IC0gZnJvbSB3aGljaCBkYXRhIGlzIGZldGNoZWQKKyAgICAgICAgICAgICAg QHJldHVybiB7T2JqZWN0fSBwYWdpbmF0b3IKKyAgICAgICAgICAgICovCisg ICAgICAgICAgICBEYlBhZ2luYXRvcjogZnVuY3Rpb24oY29sbCl7CisgICAg ICAgICAgICAgIHZhciBwYWdpbmF0b3IgPSB0aGlzLnBhZ2luYXRvciA9IG5l dyBCYWNrZ3JpZC5FeHRlbnNpb24uUGFnaW5hdG9yKHsKKyAgICAgICAgICAg ICAgICBjb2xsZWN0aW9uOiBjb2xsLAorICAgICAgICAgICAgICAgIHdpbmRv d1NpemU6IDgKKyAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgIHJl dHVybiBwYWdpbmF0b3I7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAg ICAvKioKKyAgICAgICAgICAgICAgQ3JlYXRlIG5ldyBGaWx0ZXIgd2hpY2gg d2lsbCBmaWx0ZXIgdGhlCisgICAgICAgICAgICAgIHJlbmRlcmVkIGdyaWQg Zm9yIFNlbGVjdCBUeXBlIFRhYnVsYXIgRGF0YQorICAgICAgICAgICAgICBA cGFyYW0ge0JhY2tib25lLlBhZ2VhYmxlQ29sbGVjdGlvbn0gY29sbAorICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgIERiT2JqZWN0RmlsdGVyOiBmdW5j dGlvbihjb2xsKXsKKyAgICAgICAgICAgICAgdmFyIGNsaWVudFNpZGVGaWx0 ZXIgPSB0aGlzLmNsaWVudFNpZGVGaWx0ZXIgPSBuZXcgQmFja2dyaWQuRXh0 ZW5zaW9uLkNsaWVudFNpZGVGaWx0ZXIoeworICAgICAgICAgICAgICAgIGNv bGxlY3Rpb246IGNvbGwsCisgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6 IF8oJ1NlYXJjaCBieSBvYmplY3QgdHlwZSBvciBuYW1lJyksCisKKyAgICAg ICAgICAgICAgICAvLyBUaGUgbW9kZWwgZmllbGRzIHRvIHNlYXJjaCBmb3Ig bWF0Y2hlcworICAgICAgICAgICAgICAgIGZpZWxkczogWydvYmplY3RfdHlw ZScsICduYW1lJ10sCisKKyAgICAgICAgICAgICAgICAvLyBIb3cgbG9uZyB0 byB3YWl0IGFmdGVyIHR5cGluZyBoYXMgc3RvcHBlZCBiZWZvcmUgc2VhcmNo aW5nIGNhbiBzdGFydAorICAgICAgICAgICAgICAgIHdhaXQ6IDE1MAorICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudFNp ZGVGaWx0ZXI7CisgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAvL0Vu YWJsZSBEaXNhYmxlIE5leHQgYnV0dG9uIG9mIFBhZ2UgMgorICAgICAgICAg ICAgdXBkYXRlQnV0dG9uczogZnVuY3Rpb24obW9kaWZpZWQpeworICAgICAg ICAgICAgICBpZighbW9kaWZpZWQpCisgICAgICAgICAgICAgICAgJCgnLndp emFyZC1uZXh0JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKKyAgICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICQoJy53aXphcmQtbmV4dCcp LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOworICAgICAgICAgICAgfSwKKwor ICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgIENhbGxiYWNrIGNhbGxl ZCB3aGVuIGFuIGVycm9yTW9kZWwgaXMgc2V0CisgICAgICAgICAgICAgIHdp dGggaW52YWxpZCB2YWx1ZSBhbmQgZXJyb3Jtc2cgaXMgc2V0IGludG8KKyAg ICAgICAgICAgICAgc3RhdHVzIGJhciBlbGVtZW50IGFuZCBuZXh0IGJ1dHRv biBpcyBkaXNhYmxlZAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBv blNlc3Npb25JbnZhbGlkOiBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICAg ICAgJCgnLmVycm9yX21zZ19kaXYgLnBnLXByb3Atc3RhdHVzLWJhcicpLmh0 bWwobXNnKS5jc3MoImRpc3BsYXkiLCAiYmxvY2siKTsKKworICAgICAgICAg ICAgICAvLyBFbmFibGUgZGlzYWJsZSBOZXh0IGJ1dHRvbgorICAgICAgICAg ICAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoZmFsc2UpOworICAgICAgICAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAg IC8qKgorICAgICAgICAgICAgICBDYWxsYmFjayBjYWxsZWQgd2hlbiBhbnl0 aGluZyBpcyBzZXQgaW50byBtb2RlbAorICAgICAgICAgICAgICB0aHVzIGhp ZGUgZXJyb3IgbXNnIGVsZW1lbnQgYW5kIGVuYWJsZSBuZXh0IGJ1dHRvbgor ICAgICAgICAgICAgICBzdGF0dXMgYmFyIGVsZW1lbnQgYW5kIG5leHQgYnV0 dG9uIGlzIGRpc2FibGVkCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAg IG9uU2Vzc2lvblZhbGlkYXRlZDogZnVuY3Rpb24oc2Vzc0hhc0NoYW5nZWQp IHsKKyAgICAgICAgICAgICAgJCgnLmVycm9yX21zZ19kaXYgLnBnLXByb3At c3RhdHVzLWJhcicpLmVtcHR5KCkuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsK KworICAgICAgICAgICAgICAvLyBFbmFibGUgZGlzYWJsZSBOZXh0IGJ1dHRv bgorICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUJ1dHRvbnMoc2Vzc0hhc0No YW5nZWQpOworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLyoKKyAg ICAgICAgICAgICBSZW1vdmUvRGVsZXRlIGV2ZXJ5IG9iamVjdCBpbiB3aXph cmQKKyAgICAgICAgICAgICBvbiB3aXphcmQgY2xvc2UKKyAgICAgICAgICAg ICovCisgICAgICAgICAgICByZWxlYXNlT2JqZWN0czogZnVuY3Rpb24oKXsK KworICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAgICAg ICAgICAgLy8gUmVsZWFzZS9EZWxldGUgZXZlcnkgb2JqZWN0CisgICAgICAg ICAgICAgIGlmKCFfLmlzTnVsbChzZWxmLmRiT2JqZWN0RmlsdGVyKSkgewor ICAgICAgICAgICAgICAgIHNlbGYuZGJPYmplY3RGaWx0ZXIucmVtb3ZlKCk7 CisgICAgICAgICAgICAgICAgc2VsZi5kYk9iamVjdEZpbHRlciA9IG51bGw7 CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZighXy5pc051 bGwoc2VsZi5jbGllbnRTaWRlRmlsdGVyKSkgeworICAgICAgICAgICAgICAg IHNlbGYuY2xpZW50U2lkZUZpbHRlci5yZW1vdmUoKTsKKyAgICAgICAgICAg ICAgICBzZWxmLmNsaWVudFNpZGVGaWx0ZXIgPSBudWxsOworICAgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgICAgLy8gUmVtb3ZlIHBhZ2luYXRvcgor ICAgICAgICAgICAgICBpZighXy5pc051bGwoc2VsZi5wYWdpbmF0b3IpKSB7 CisgICAgICAgICAgICAgICAgc2VsZi5wYWdpbmF0b3IucmVtb3ZlKCk7Cisg ICAgICAgICAgICAgICAgc2VsZi5wYWdpbmF0b3IgPSBudWxsOworICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgLy8gUmVtb3ZlIGNvbGxlY3Rp b24gY29udGFpbmluZyBkYiBvYmplY3QgZGF0YQorICAgICAgICAgICAgICBp ZighXy5pc051bGwoc2VsZi5jb2xsKSkgeworICAgICAgICAgICAgICAgIHNl bGYuY29sbC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICBzZWxmLmNvbGwg PSBudWxsOworICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0sCisK KyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICBFdmVyeSB0aW1lIGEg d2l6YXJkIGlzIG9wZW5lZCwgdGhpcyBmdW5jdGlvbgorICAgICAgICAgICAg ICBpcyBjYWxsZWQgZXZlcnl0aW1lLiBJdCBoYXMgV2l6YXJkIFBhZ2VzIHdo aWNoCisgICAgICAgICAgICAgIGFyZSByZW5kZXJlZCBieSB0aGUgV2l6YXJk IENsYXNzOgorCisgICAgICAgICAgICAgIEBjbGFzcyB7cGdCcm93c2VyLldp emFyZFBhZ2V9IGRiT2JqZWN0VHlwZTEgLSBUaGlzIHBhZ2UKKyAgICAgICAg ICAgICAgQGV4dGVuZHMge0JhY2tib25lLk1vZGVsfQorICAgICAgICAgICAg ICByZW5kZXJzIGEgZ3JpZCBvZiBEYXRhYmFzZSBPYmplY3QgVHlwZXMgc3Vj aCBhcworICAgICAgICAgICAgICAgIFNjaGVtYXMsIFZpZXdzIGFuZCBTZXF1 ZW5jZXMgZXRjLgorCisgICAgICAgICAgICAgIEBjbGFzcyB7cGdCcm93c2Vy LldpemFyZFBhZ2V9IFdpemFyZFBhZ2UyIC0gVGhpcyBwYWdlCisgICAgICAg ICAgICAgIEBleHRlbmRzIHtCYWNrYm9uZS5Nb2RlbH0KKyAgICAgICAgICAg ICAgYWRkcyBQcml2aWxlZ2UgQ29udHJvbCB3aGljaCBwcm92aWRlcyBncmFu dCBwcml2aWxlZ2VzCisgICAgICAgICAgICAgIHN1Y2ggYXMgIkNyZWF0ZSwg SW5zZXJ0LCBEZWxldGUsIFVwZGF0ZSIgc28gb24gdGhlCisgICAgICAgICAg ICAgIGRhdGFiYXNlIG9iamVjdHMgc2VsZWN0ZWQgb24gV2l6YXJkIFBhZ2Vz LgorCisgICAgICAgICAgICAgIEBjbGFzcyB7cGdCcm93c2VyLldpemFyZFBh Z2V9IFdpemFyZFBhZ2UzIC0gVGhpcyBwYWdlCisgICAgICAgICAgICAgIGRp c3BsYXlzIHRoZSBnZW5lcmF0ZWQgR1JBTlQgU1FMIHF1ZXJ5IGZvciB0aGUg RGIKKyAgICAgICAgICAgICAgb2JqZWN0cyBzZWxlY3RlZCB3aXRoIHRoZSBz cGVjaWZpYyBwcml2aWxlZ2VzIGFkZGVkIHRvIGl0LgorICAgICAgICAgICAg ICBAZXh0ZW5kcyB7QmFja2JvbmUuTW9kZWx9CisKKyAgICAgICAgICAgICAg QGNsYXNzIHtCYWNrYm9uZS5Db2xsZWN0aW9ufSBXaXphcmRDb2xsZWN0aW9u IC0gSXQgaXMgdGhlCisgICAgICAgICAgICAgIGNvbGxlY3Rpb24gb2Ygd2l6 YXJkIHBhZ2VzCisKKyAgICAgICAgICAgICAgQGNsYXNzIHtwZ0Jyb3dzZXIu V2l6YXJkfSB3aXphcmQgLSBJdHMgdGFzayBpczoKKyAgICAgICAgICAgICAg LSBDcmVhdGUgYSBXaXphcmQKKyAgICAgICAgICAgICAgLSBBZGQgQnV0dG9u cywgQ2FsbGJhY2tzIHRvIGl0LgorICAgICAgICAgICAgICAtIFJlbmRlciBX aXphcmRQYWdlcworICAgICAgICAgICAgICBAZXh0ZW5kcyB7QmFja2JvbmUu Vmlld30KKworICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHByZXBhcmU6 ZnVuY3Rpb24oKSB7CisKKyAgICAgICAgICAgICAgLy8gUmVtb3ZlIGV4dHJh IGNvbnRhaW5lcgorICAgICAgICAgICAgICBpZigkKCcuYWpzLWNvbnRlbnQn KS5zaXplKCkgPiAxKXsKKyAgICAgICAgICAgICAgICAkKCcuYWpzLWNvbnRl bnQnKVswXS5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgfQorCisgICAgICAg ICAgICAgIC8vIEdlbmVyYXRlIHdpemFyZCBtYWluIGNvbnRhaW5lcgorICAg ICAgICAgICAgICB2YXIgd2l6YXJkX2h0bWwgPSAnPGRpdiBjbGFzcz0id2l6 YXJkX2RsZyI+JywKKyAgICAgICAgICAgICAgICAgIHdpemFyZF9wYXJlbnQg PSAkKCcuYWpzLWNvbnRlbnQnKS5lbXB0eSgpLmFwcGVuZCh3aXphcmRfaHRt bCksCisgICAgICAgICAgICAgICAgICBlbCA9ICQoIi5hanMtY29udGVudCIp OworCisgICAgICAgICAgICAgIC8vIEV4dHJhY3QgdGhlIGRhdGEgZnJvbSB0 aGUgc2VsZWN0ZWQgdHJlZSBub2RlCisgICAgICAgICAgICAgIHZhciB0ID0g cGdCcm93c2VyLnRyZWUsCisgICAgICAgICAgICAgICAgICBpID0gdC5zZWxl Y3RlZCgpLAorICAgICAgICAgICAgICAgICAgZCA9IGkgJiYgaS5sZW5ndGgg PT0gMSA/IHQuaXRlbURhdGEoaSkgOiB1bmRlZmluZWQsCisgICAgICAgICAg ICAgICAgICBpbmZvID0gcGdCcm93c2VyLk5vZGUuZ2V0VHJlZU5vZGVIaWVy YXJjaHkoaSksCisgICAgICAgICAgICAgICAgICBpY29uID0gZC5pY29uOwor CisgICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgIEdlbmVyYXRl IGEgVVJMIHVzaW5nOgorICAgICAgICAgICAgICAgIGdpZCwgZGlkLCBzaWQo c2VydmVyIGlkKSwgbm9kZV9pZChub2RlIGlkKSwKKyAgICAgICAgICAgICAg ICBub2RlXyhub2RlIG5hbWUpLCBub2RlX3R5cGUobm9kZSB0eXBlKQorICAg ICAgICAgICAgICAgIGFuZCBwYXNzIGl0IHRvIGNvbGxlY3Rpb24gd2hpY2gg d2lsbCBmZXRjaCBPYmplY3QgVHlwZSBwcm9wZXJ0aWVzLgorICAgICAgICAg ICAgICAgKi8KKyAgICAgICAgICAgICAgdmFyIGdpZCA9IGluZm9bJ3NlcnZl ci1ncm91cCddLl9pZCwKKyAgICAgICAgICAgICAgICAgIHNpZCA9IGluZm8u c2VydmVyLl9pZCwKKyAgICAgICAgICAgICAgICAgIGRpZCA9IGluZm8uZGF0 YWJhc2UuX2lkLAorICAgICAgICAgICAgICAgICAgbm9kZV9pZCA9IGQuX2lk LAorICAgICAgICAgICAgICAgICAgbnNwbmFtZSA9IGluZm8uc2NoZW1hLmxh YmVsOworICAgICAgICAgICAgICAgICAgbm9kZV90eXBlID0gZC5fdHlwZSwK KyAgICAgICAgICAgICAgICAgIG5vZGVfbGFiZWwgPSBkLmxhYmVsLAorCisg ICAgICAgICAgICAgICAgICAvLyBDb2xsZWN0aW9uIHVybCB0byBmZXRjaCBE YXRhYmFzZSBvYmplY3QgdHlwZXMgZm9yIG9iamVjdHMgZmllbGQKKyAgICAg ICAgICAgICAgICAgIGJhc2VVcmwgPSAie3sgdXJsX2ZvcignZ3JhbnR3aXph cmQuaW5kZXgnKSB9fSIgKyAiZ3JhbnR3aXphcmQvcHJvcGVydGllcy8iICsK KyAgICAgICAgICAgICAgICAgICAgICBTKCclcy8lcy8lcy8lcy8lcy8lcy8l cy8nKS5zcHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNv ZGVVUkkoZ2lkKSwgZW5jb2RlVVJJKHNpZCksIGVuY29kZVVSSShkaWQpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVVUkkobm9kZV9pZCks IGVuY29kZVVSSShub2RlX2xhYmVsKSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5jb2RlVVJJKG5vZGVfdHlwZSksIGVuY29kZVVSSShuc3BuYW1l KSkudmFsdWUoKTsKKworICAgICAgICAgICAgICAgICAgLy8gTW9kZWwncyBz YXZlIHVybAorICAgICAgICAgICAgICAgICAgc2F2ZVVybCA9ICJ7eyB1cmxf Zm9yKCdncmFudHdpemFyZC5pbmRleCcpIH19IiArICJncmFudHdpemFyZC9z YXZlLyIgKworICAgICAgICAgICAgICAgICAgICAgIFMoJyVzLyVzLyVzLyVz LyVzLycpLnNwcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAgIGVu Y29kZVVSSShnaWQpLCBlbmNvZGVVUkkoc2lkKSwgZW5jb2RlVVJJKGRpZCks CisgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZVVSSShub2RlX3R5 cGUpLCBlbmNvZGVVUkkobnNwbmFtZSkpLnZhbHVlKCksCisKKyAgICAgICAg ICAgICAgICAgIC8vIENyZWF0ZSBpbnN0YW5jZXMgb2YgY29sbGVjdGlvbiwg cGFnaW5hdGlvbiBhbmQgZmlsdGVyCisgICAgICAgICAgICAgICAgICBjb2xs ID0gdGhpcy5jb2xsID0gdGhpcy5nZXRQYWdlYWJsZUNvbGxlY3Rpb24oYmFz ZVVybCksCisgICAgICAgICAgICAgICAgICBwYWdpbmF0b3IgPSB0aGlzLnBh Z2luYXRvciA9IHRoaXMuRGJQYWdpbmF0b3IoY29sbCksCisgICAgICAgICAg ICAgICAgICBkYk9iamVjdEZpbHRlciA9IHRoaXMuZGJPYmplY3RGaWx0ZXIg PSB0aGlzLkRiT2JqZWN0RmlsdGVyKGNvbGwpOworCisgICAgICAgICAgICAg IC8qKgorICAgICAgICAgICAgICAgIEl0IGlzIHRoZSBtYWluIG1vZGVsIHdp dGggc2NoZW1hIGRlZmluZWQKKyAgICAgICAgICAgICAgICBFdmVyeSB0aW1l IGEgbmV3IHdpemFyZCBpcyBvcGVuZWQsCisgICAgICAgICAgICAgICAgYSBu ZXcgbW9kZWwgc2hvdWxkIGNyZWF0ZS4KKyAgICAgICAgICAgICAgICovCisg ICAgICAgICAgICAgIHZhciBHcmFudFdpemFyZE1vZGVsID0gcGdOb2RlLk1v ZGVsLmV4dGVuZCh7CisgICAgICAgICAgICAgICAgZGVmYXVsdHM6IHsKKyAg ICAgICAgICAgICAgICAgIG9iamVjdHM6IHVuZGVmaW5lZCwKKyAgICAgICAg ICAgICAgICAgIGFjbDogdW5kZWZpbmVkCisgICAgICAgICAgICAgICAgfSwK KyAgICAgICAgICAgICAgICBzY2hlbWE6IFsKKyAgICAgICAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgICAgICAgaWQ6ICdvYmplY3RzJywgbGFiZWw6 ICd7eyBfKCJPYmplY3RzIikgfX0nLCBtb2RlbDogRGF0YWJhc2VPYmplY3RN b2RlbCwKKyAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2NvbGxlY3Rpb24n LCBncm91cDogJ09iamVjdHMnCisgICAgICAgICAgICAgICAgICB9LAorICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZDogJ2Fj bCcsIGxhYmVsOiAne3sgXygiUHJpdmlsZWdlcyIpIH19Jywgbm9kZTogJ3Jv bGUnLAorICAgICAgICAgICAgICAgICAgICBtb2RlbDogcGdBZG1pbi5Ccm93 c2VyLk5vZGUuUHJpdmlsZWdlUm9sZU1vZGVsLmV4dGVuZCh7CisgICAgICAg ICAgICAgICAgICAgICAgcHJpdmlsZWdlczogcHJpdkRpY3Rbbm9kZV90eXBl XQorICAgICAgICAgICAgICAgICAgICB9KSwgdW5pcXVlQ29sIDogWydncmFu dGVlJywgJ2dyYW50b3InXSwgZWRpdGFibGU6IHRydWUsCisgICAgICAgICAg ICAgICAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJywgZ3JvdXA6ICdQcml2aWxl Z2VzJywgY2FuQWRkOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBjYW5E ZWxldGU6IHRydWUsIGNvbnRyb2w6ICd1bmlxdWUtY29sLWNvbGxlY3Rpb24n CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXSwKKyAg ICAgICAgICAgICAgICB1cmxSb290OiBzYXZlVXJsCisgICAgICAgICAgICAg IH0pOworCisgICAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICAgIENy ZWF0ZSBpbnN0YW5jZSBvZiBHcmFudFdpemFyZCBNb2RlbCwgcHJvdmlkZSB1 cmxSb290CisgICAgICAgICAgICAgICAgbm9kZV9pbmZvIG9iamVjdCwgR2Vu ZXJhdGUgZmllbGRzIG9iamVjdHMKKyAgICAgICAgICAgICAgICovCisgICAg ICAgICAgICAgIHZhciBzZWxmID0gdGhpcywKKyAgICAgICAgICAgICAgICAg IG5ld01vZGVsID0gbmV3IEdyYW50V2l6YXJkTW9kZWwoe30sIHsgbm9kZV9p bmZvOiBpbmZvIH0pLAorICAgICAgICAgICAgICAgICAgZmllbGRzID0gQmFj a2Zvcm0uZ2VuZXJhdGVWaWV3U2NoZW1hKAorICAgICAgICAgICAgICAgICAg ICAgaW5mbywgbmV3TW9kZWwsICdjcmVhdGUnLCBkLl90eXBlLCBkCisgICAg ICAgICAgICAgICAgICAgICApOworCisgICAgICAgICAgICAgIC8qKgorICAg ICAgICAgICAgICAgIEZldGNoIGRhdGEgZnJvbSBzZXJ2ZXIgYW5kIHNldCBp bnRvIGdyaWQKKyAgICAgICAgICAgICAgICBhbmQgc2hvdy9oaWRlIHByb2dy ZXNzIGJhcgorICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgJCgn LndpemFyZC1wcm9ncmVzcy1iYXIgcCcpLnNob3coKTsKKworICAgICAgICAg ICAgICBjb2xsLmZldGNoKHsKKyAgICAgICAgICAgICAgICBzdWNjZXNzOiBm dW5jdGlvbihjb2xsZWN0aW9uLCBkYXRhKSB7CisgICAgICAgICAgICAgICAg ICAkKCcud2l6YXJkLXByb2dyZXNzLWJhciBwJykuaHRtbCgnJyk7CisgICAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICByZXNldDogdHJ1ZQor ICAgICAgICAgICAgICB9LCB0aGlzKTsKKworICAgICAgICAgICAgICAvKioK KyAgICAgICAgICAgICAgICBPdmVycmlkZSBiYWNrZ3JpZCBsaXN0ZW5lciAi YmFja2dyaWQ6c2VsZWN0ZWQiIHRvCisgICAgICAgICAgICAgICAgQWRkL1Jl bW92ZSBtb2RlbCB0by9mcm9tIG9iamVjdHMgY29sbGVjdGlvbgorICAgICAg ICAgICAgICAgKi8KKyAgICAgICAgICAgICAgY29sbC5vbignYmFja2dyaWQ6 c2VsZWN0ZWQnLCBmdW5jdGlvbihtb2RlbCwgc2VsZWN0ZWQpIHsKKyAgICAg ICAgICAgICAgICBtb2RlbC5zZXQoJ3NlbGVjdGVkJywgc2VsZWN0ZWQpOwor CisgICAgICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgICBpZiBh IHJvdyAoY2hlY2tib3gpIGlzIGNoZWNrZWQsIGFkZCB0aGF0IG1vZGVsCisg ICAgICAgICAgICAgICAgICBpbnRvIGNvbGxlY3Rpb24sIHdoZW4gdW5jaGVj a2VkIHJlbW92ZSBpdCBmcm9tCisgICAgICAgICAgICAgICAgICBtb2RlbC4K KyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZihzZWxl Y3RlZCkKKyAgICAgICAgICAgICAgICAgIG5ld01vZGVsLmdldCgnb2JqZWN0 cycpLmFkZChtb2RlbCwgeyBzaWxlbnQ6IHRydWUgfSk7CisgICAgICAgICAg ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgbmV3TW9kZWwuZ2V0KCdv YmplY3RzJykucmVtb3ZlKG1vZGVsKTsKKworICAgICAgICAgICAgICAgIC8v IHZhbGlkYXRlIG1vZGVsIG9uIGNoZWNrYm94IGNoZWNrL3VuY2hlY2sKKyAg ICAgICAgICAgICAgICB2YXIgbXNnID0gIG1vZGVsLnZhbGlkYXRlLmNhbGwo bmV3TW9kZWwpOworCisgICAgICAgICAgICAgICAgLyoqCisgICAgICAgICAg ICAgICAgICBJZiBubyBvYmplY3QgdHlwZSBpcyBzZWxlY3RlZCwgc2V0IGVy cm9yIG1zZworICAgICAgICAgICAgICAgICAgYW5kIGRpc2FibGUgbmV4dCBi dXR0b24sIGVsc2UgZW5hYmxlIG5leHQgYnV0dG9uCisgICAgICAgICAgICAg ICAgICovCisgICAgICAgICAgICAgICAgaWYobXNnKQorICAgICAgICAgICAg ICAgICAgc2VsZi5vblNlc3Npb25JbnZhbGlkLmNhbGwoc2VsZiwgbXNnKTsK KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBzZWxm Lm9uU2Vzc2lvblZhbGlkYXRlZC5jYWxsKHNlbGYsIHRydWUpOworICAgICAg ICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBUbyB0cmFjayBjaGFu Z2VzIGludG8gbW9kZWwsIHN0YXJ0IG5ldyBzZXNzaW9uCisgICAgICAgICAg ICAgIG5ld01vZGVsLnN0YXJ0TmV3U2Vzc2lvbigpOworCisgICAgICAgICAg ICAgIC8vIEFkZCBldmVudCBsaXN0ZW5lciBmb3IgcHJpdmlsZWdlcyBjb250 cm9sCisgICAgICAgICAgICAgIG5ld01vZGVsLm9uKCdwZ2FkbWluLXNlc3Np b246dmFsaWQnLCBzZWxmLm9uU2Vzc2lvblZhbGlkYXRlZC5iaW5kKHRoaXMp KTsKKyAgICAgICAgICAgICAgbmV3TW9kZWwub24oJ3BnYWRtaW4tc2Vzc2lv bjppbnZhbGlkJywgc2VsZi5vblNlc3Npb25JbnZhbGlkLmJpbmQodGhpcykp OworCisgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KyAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAg ICAgICAgICAgICAvLyAgICAgICAgICAgIFdpemFyZCBQYWdlIGZvciBEYiBP YmplY3QgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAg ICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAg ICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgICAgICAgICAg IC8qKgorICAgICAgICAgICAgICAgIENyZWF0ZSB3aXphcmQgcGFnZS4gSXQg cmVuZGVycyBhIGdyaWQgb2YKKyAgICAgICAgICAgICAgICBEYXRhYmFzZSBP YmplY3QgVHlwZXMgc3VjaCBhcworICAgICAgICAgICAgICAgIFNjaGVtYXMs IFZpZXdzIGFuZCBTZXF1ZW5jZXMgZXRjLgorICAgICAgICAgICAgICAgIFNl dCBkZWZhdWx0IHZhbHVlcworICAgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICAgdmFyIGRiT2JqZWN0VHlwZVBhZ2UgPSBzZWxmLmRiT2JqZWN0VHlw ZVBhZ2UgPSBuZXcgcGdCcm93c2VyLldpemFyZFBhZ2UoeworICAgICAgICAg ICAgICAgIGlkOiAxLAorICAgICAgICAgICAgICAgIHBhZ2VfdGl0bGU6ICdP YmplY3QgU2VsZWN0aW9uIChzdGVwIDEgb2YgMyknLAorICAgICAgICAgICAg ICAgIGRpc2FibGVfcHJldjogdHJ1ZSwKKyAgICAgICAgICAgICAgICBkaXNh YmxlX25leHQ6IHRydWUsCisgICAgICAgICAgICAgICAgc2hvd19zdGF0dXNf YmFyOiBfKCdQbGVhc2Ugc2VsZWN0IG9iamVjdHMgZnJvbSB0aGUgYmVsb3cg bGlzdC4nKSwKKyAgICAgICAgICAgICAgICBzaG93X3Byb2dyZXNzX2Jhcjog XygnUGxlYXNlIHdhaXQgd2hpbGUgZmV0Y2hpbmcgcmVjb3Jkcy4uLicpLAor ICAgICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKKyAgICAgICAgICAg ICAgICB2aWV3OiBuZXcgKGZ1bmN0aW9uKCkgeworCisgICAgICAgICAgICAg ICAgICAvLyBTZXQgcGFnZSBJbnN0YW5jZQorICAgICAgICAgICAgICAgICAg dmFyIHBhZ2VWaWV3ID0gdGhpczsKKworICAgICAgICAgICAgICAgICAgXy5l eHRlbmQocGFnZVZpZXcsIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBS ZW1vdmUgZ3JpZCBpZiBpdCBpcyBiZWZvcmUgcmVuZGVyCisgICAgICAgICAg ICAgICAgICAgIGNsZWFudXA6IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAg ICAgICAgICAgIGlmICh0aGlzLmdyaWQpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIHRoaXMuZ3JpZC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGRlbGV0ZSB0aGlzLmdyaWQ7CisgICAgICAgICAgICAgICAgICAg ICAgICB0aGlzLmdyaWQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAg IH0KKworICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBncmlkIGVs ZW1lbnQgaWYgZXhpc3RzCisgICAgICAgICAgICAgICAgICAgICAgaWYgKHRo aXMuZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcy5lbCku cmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhp cy5lbDsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVsZXRlIGdy aWQgYmVmb3JlIHJlbmRlcgorICAgICAgICAgICAgICAgICAgICBncmlkOiBu dWxsLAorCisgICAgICAgICAgICAgICAgICAgIC8vIFJlbmRlciB0aGUgUGFn ZTEKKyAgICAgICAgICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsK KworICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIGdyaWQgY29u dGFpbmVyCisgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWRCb2R5ID0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCc8ZGl2PjxkaXYgaWQ9 ImdyaWRfZmlsdGVyIj48L2Rpdj48L2Rpdj4nKTsKKworICAgICAgICAgICAg ICAgICAgICAgIC8vIFJlbW92ZSBncmlkIGlmIGV4aXRzIGJlZm9yZSByZW5k ZXIKKyAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ncmlkKSB7Cisg ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsZWFudXAoKTsKKyAgICAg ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAv LyBJbml0aWFsaXplIGEgbmV3IEdyaWQgaW5zdGFuY2UKKyAgICAgICAgICAg ICAgICAgICAgICB0aGlzLmdyaWQgPSBuZXcgQmFja2dyaWQuR3JpZCh7Cisg ICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5zOiBfLmNsb25lKGNvbHVt bnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbjogY29s bCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJhY2tn cmlkIHRhYmxlLWJvcmRlcmVkIG9iamVjdF90eXBlX3RhYmxlIgorICAgICAg ICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAg ICAvLyBSZW5kZXIgc2VsZWN0aW9uIFR5cGUgZ3JpZCBhbmQgcGFnaW5hdG9y CisgICAgICAgICAgICAgICAgICAgICAgZ3JpZEJvZHkuYXBwZW5kKAorICAg ICAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnJlbmRlcigpLiRlbAor ICAgICAgICAgICAgICAgICAgICAgICAgKS5hcHBlbmQoc2VsZi5wYWdpbmF0 b3IucmVuZGVyKCkuZWwpOworCisgICAgICAgICAgICAgICAgICAgICAgLy8g UmVuZGVyIFNlYXJjaCBGaWx0ZXIKKyAgICAgICAgICAgICAgICAgICAgICBn cmlkQm9keS5wcmVwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jbGllbnRTaWRlRmlsdGVyLnJlbmRlcigpLmVsKTsKKworICAgICAgICAg ICAgICAgICAgICAgIC8vIEFzc2lnbiBncmlkQm9keSBjb250ZW50IHRvIHBh Z2UgZWxlbWVudAorICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZWwgPSBn cmlkQm9keTsKKworICAgICAgICAgICAgICAgICAgICAgIC8qKgorICAgICAg ICAgICAgICAgICAgICAgICAgRmV0Y2ggc2VsZWN0ZWQgbW9kZWxzIGZyb20g Y29sbGVjdGlvbiBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Ug cm93cyBjaGVja2VkIGluIGdyaWQKKyAgICAgICAgICAgICAgICAgICAgICAg Ki8KKyAgICAgICAgICAgICAgICAgICAgICBuZXdNb2RlbC5nZXQoJ29iamVj dHMnKS5lYWNoKGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHZhciBtb2RlbCA9IGNvbGwuZ2V0KG0uZ2V0KCdvYmplY3RfaWQnKSk7 CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWwpIHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgY29sbC50cmlnZ2VyKCdiYWNrZ3JpZDpz ZWxlY3RlZCcsIG1vZGVsLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg ICAgICAgICAgICAgIC8vIFJlZnJlc2ggZ3JpZCB0byByZSByZW5kZXIgcm93 cy4KKyAgICAgICAgICAgICAgICAgICAgICBjb2xsLnRyaWdnZXIoJ2JhY2tn cmlkOnJlZnJlc2gnKTsKKworICAgICAgICAgICAgICAgICAgICAgIHJldHVy biB0aGlzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9KSwKKworICAgICAgICAgICAg ICAgIGJlZm9yZU5leHQ6IGZ1bmN0aW9uKG9iail7CisgICAgICAgICAgICAg ICAgICB2YXIgc2VsZiA9IHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAg c2VsZWN0ZWRSb3dzID0gc2VsZi52aWV3LmdyaWQuZ2V0U2VsZWN0ZWRNb2Rl bHMoKTsKKyAgICAgICAgICAgICAgICAgICAgICBvYmoub3B0aW9ucy5kaXNh YmxlX25leHQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAvKioKKyAg ICAgICAgICAgICAgICAgICAgRW5hYmxlL0Rpc2FibGUgbmV4dCBidXR0b24g b2YgcGFnZSAyIGlmIG9iamVjdHMKKyAgICAgICAgICAgICAgICAgICAgYXJl IHByZXNlbnQgaW4gbW9kZWwKKyAgICAgICAgICAgICAgICAgICAqLworICAg ICAgICAgICAgICAgICAgaWYobmV3TW9kZWwuZ2V0KCdhY2wnKS5sZW5ndGgg PiAwKQorICAgICAgICAgICAgICAgICAgICBvYmouY29sbGVjdGlvbi5hdCgx KS5zZXQoJ2Rpc2FibGVfbmV4dCcsIGZhbHNlKTsKKworICAgICAgICAgICAg ICAgICAgLy8gQ2xlYW4gdGhlIHZpZXcKKyAgICAgICAgICAgICAgICAgIGlm IChzZWxmLnZpZXcpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52aWV3 LmNsZWFudXAoKTsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGYu dmlldzsKKyAgICAgICAgICAgICAgICAgICAgc2VsZi52aWV3ID0gbnVsbDsK KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIHJldHVy biB0cnVlOworICAgICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAg fSk7CisKKyAgICAgICAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LworICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vCisg ICAgICAgICAgICAgIC8vICAgICAgICAgICAgV2l6YXJkIFBhZ2UgZm9yIFBy aXZpbGVnZSBDb250cm9sICAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAg ICAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAg ICAgICAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAgICAgICAg ICAgLyoqCisgICAgICAgICAgICAgICAgQ3JlYXRlIEZpZWxkIE9iamVjdCB3 aGljaCBoYXMgcHJvcGVydGllcyBsaWtlCisgICAgICAgICAgICAgICAgbm9k ZV9kYXRhLCBub2RlX2luZm8gd2hpY2ggaXMgcmVxdWlyZWQgZm9yIHJlbmRl cmluZworICAgICAgICAgICAgICAgIFByaXZpbGVnZSBjb250cm9sCisgICAg ICAgICAgICAgICAqLworICAgICAgICAgICAgICB2YXIgcHJpdmlsZWdlc0Zp ZWxkID0gbmV3IEJhY2tmb3JtLkZpZWxkKGZpZWxkc1sxXS5maWVsZHNbMF0p OworCisgICAgICAgICAgICAgIC8vIFdpemFyZCBmb3IgUHJpdmVsZWdlIGNv bnRyb2wKKyAgICAgICAgICAgICAgdmFyIHByaXZpbGVnZVBhZ2UgPSBzZWxm LnByaXZpbGVnZVBhZ2UgPSBuZXcgcGdCcm93c2VyLldpemFyZFBhZ2Uoewor ICAgICAgICAgICAgICAgIGlkOiAyLAorICAgICAgICAgICAgICAgIHBhZ2Vf dGl0bGU6IF8oJ1ByaXZpbGVnZXMgU2VsZWN0aW9uIChzdGVwIDIgb2YgMykn KSwKKyAgICAgICAgICAgICAgICBzaG93X3N0YXR1c19iYXI6IF8oJ1BsZWFz ZSBzZWxlY3QgcHJpdmlsZWdlcyBmb3IgdGhlIHNlbGVjdGVkIG9iamVjdHMu JyksCisgICAgICAgICAgICAgICAgZGlzYWJsZV9uZXh0OiB0cnVlLAorICAg ICAgICAgICAgICAgIG1vZGVsOiBuZXdNb2RlbCwKKworICAgICAgICAgICAg ICAgIC8vIENyZWF0ZSBhIHZpZXcgZnVuY3Rpb24gb2JqZWN0CisgICAgICAg ICAgICAgICAgdmlldzogbmV3IChmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICAgIHZhciBwYWdlVmlldyA9IHRoaXM7CisgICAgICAgICAgICAgICAg ICAgIF8uZXh0ZW5kKHBhZ2VWaWV3LCB7CisKKyAgICAgICAgICAgICAgICAg ICAgICAvLyBSZW5kZXIgUHJpdmVsZWdlIGNvbnRyb2wgdG8gZ2VuZXJhdGUg aXRzIGh0bWwgbWFya3VwCisgICAgICAgICAgICAgICAgICAgICAgcmVuZGVy OiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu cHJpdkNvbnRyb2wgPSBuZXcgKHByaXZpbGVnZXNGaWVsZC5nZXQoJ2NvbnRy b2wnKSkgKHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQ6IHBy aXZpbGVnZXNGaWVsZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbW9k ZWw6IG5ld01vZGVsCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7ZWw6IHRoaXMucHJpdkNv bnRyb2wucmVuZGVyKCkuJGVsfTsKKyAgICAgICAgICAgICAgICAgICAgICB9 LAorCisgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcml2 aWxlZ2UgY29udHJvbAorICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXA6 IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRo aXMucHJpdkNvbnRyb2wpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg dGhpcy5wcml2Q29udHJvbC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVsZXRlIHRoaXMucHJpdkNvbnRyb2w7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHRoaXMucHJpdkNvbnRyb2wgPSBudWxsOworICAg ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg fSksCisKKyAgICAgICAgICAgICAgICBiZWZvcmVQcmV2OiBmdW5jdGlvbih3 aXphcmRPYmopIHsKKworICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRo ZSBwcml2aWxlZ2UgY29udHJvbAorICAgICAgICAgICAgICAgICAgaWYgKHRo aXMudmlldykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuY2xl YW51cCgpOworICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy52aWV3 OworICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcgPSBudWxsOworICAg ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAvKioKKyAg ICAgICAgICAgICAgICAgICAgRW5hYmxlL0Rpc2FibGUgbmV4dCBidXR0b24g b2YgcGFnZSAxIGlmIG9iamVjdHMKKyAgICAgICAgICAgICAgICAgICAgYXJl IHByZXNlbnQgaW4gbW9kZWwKKyAgICAgICAgICAgICAgICAgICAqLworICAg ICAgICAgICAgICAgICAgdmFyIG9iamVjdHNNb2RlbCA9IG5ld01vZGVsLmdl dCgnb2JqZWN0cycpOworCisgICAgICAgICAgICAgICAgICBpZighXy5pc1Vu ZGVmaW5lZChvYmplY3RzTW9kZWwpICYmICFfLmlzRW1wdHkob2JqZWN0c01v ZGVsKSAmJgorICAgICAgICAgICAgICAgICAgICAgIG9iamVjdHNNb2RlbC5s ZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHdpemFyZE9iai5j b2xsZWN0aW9uLmF0KDApLnNldCgnZGlzYWJsZV9uZXh0JywgZmFsc2UpOwor CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IHNob3cgcHJvZ3Jlc3Mg YmFyCisgICAgICAgICAgICAgICAgICAgIHdpemFyZE9iai5jb2xsZWN0aW9u LmF0KDApLnNldCgnc2hvd19wcm9ncmVzc19iYXInLCAnJyk7CisgICAgICAg ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIC8qKgorICAgICAg ICAgICAgICAgICAgICBXZSdyZSByZS1yZW5kZXJpbmcgdGhlIGNvbnRyb2xz IGFzIHRoZXkgYXJlIGRlbGV0ZWQKKyAgICAgICAgICAgICAgICAgICAgYmVm b3JlIGhlYWRpbmcgdG8gbmV4dCBwYWdlCisgICAgICAgICAgICAgICAgICAg IFJlZnJlc2ggQmFja2dyaWQgdG8gcmUtcmVuZGVyIHRoZSBlbGVtZW50cyBz ZWxlY3RlZAorICAgICAgICAgICAgICAgICAgICByZS1yZW5kZXIgcGFnaW5h dG9yCisgICAgICAgICAgICAgICAgICAgIHJlLXJlbmRlciBGaWx0ZXIKKyAg ICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgbmV3TW9k ZWwudHJpZ2dlcigiYmFja2dyaWQ6cmVmcmVzaCIsIG5ld01vZGVsLCBmYWxz ZSk7CisgICAgICAgICAgICAgICAgICBzZWxmLnBhZ2luYXRvci5yZW5kZXIo KTsKKyAgICAgICAgICAgICAgICAgIHNlbGYuY2xpZW50U2lkZUZpbHRlci5y ZW5kZXIoKTsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgICAgICBiZWZvcmVOZXh0 OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH0sCisKKyAgICAgICAgICAg ICAgICBvbk5leHQ6IGZ1bmN0aW9uKG9iail7CisKKyAgICAgICAgICAgICAg ICAgIC8vIFJlbW92ZSB0aGUgcHJpdmlsZWdlIGNvbnRyb2wKKyAgICAgICAg ICAgICAgICAgIGlmICh0aGlzLnZpZXcpIHsKKyAgICAgICAgICAgICAgICAg ICAgdGhpcy52aWV3LmNsZWFudXAoKTsKKyAgICAgICAgICAgICAgICAgICAg ZGVsZXRlIHRoaXMudmlldzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy52 aWV3ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg ICAgICAgICAgLy8gRW5hYmxlIGZpbmlzaCBidXR0b24gb24gV2l6YXJkIFBh Z2UgMworICAgICAgICAgICAgICAgICAgc2VsZi53aXphcmQub3B0aW9ucy5k aXNhYmxlX2ZpbmlzaCA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgICAv LyBUcmlnZ2VycyB0byBnZXQgU1FMIHF1ZXJpZXMgZGF0YSB0byByZW5kZXIg aW50byB0aGUKKyAgICAgICAgICAgICAgICAgIC8vIFdpYXJkIFNRTCBUYWIg Q29udHJvbAorICAgICAgICAgICAgICAgICAgdGhpcy5tb2RlbC50cmlnZ2Vy KCdwZ2FkbWluLXdpemFyZDpuZXh0cGFnZTpzcWwnLAorICAgICAgICAgICAg ICAgICAgICAgIHsnd2l6YXJkX3R5cGUnOiAnZ3JhbnR3aXphcmQnLCAnbm9k ZV90eXBlJzogbm9kZV90eXBlIH0pOworICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgICAgfSk7CisKKworICAgICAgICAgICAgICAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisgICAgICAgICAgICAgIC8vICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLy8KKyAgICAgICAgICAgICAgLy8gICAgICAgICAgICBXaXph cmQgUGFnZSBmb3IgU1FMIFRhYiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLworICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8vCisgICAgICAgICAgICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K KworICAgICAgICAgICAgICAvL0NyZWF0ZSBTcWxGaWVsZCBPYmplY3QKKyAg ICAgICAgICAgICAgdmFyIHNxbEZpZWxkID0gbmV3IEJhY2tmb3JtLkZpZWxk KAorICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBp ZDogJ3NxbHRhYicsCisgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU3Fs IFRhYicsCisgICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmaWVsZHMsCisg ICAgICAgICAgICAgICAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlNxbFRhYkNv bnRyb2wKKyAgICAgICAgICAgICAgICAgIH0pLAorCisgICAgICAgICAgICAg ICAgLyoqCisgICAgICAgICAgICAgICAgICBDcmVhdGUgc3FsRmllbGQgdmll dyBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgdG8gcmVuZGVyIGl0IGlu dG8gd2l6YXJkIHBhZ2UKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAg ICAgICAgICBzcWxDb250cm9sID0gbmV3IChzcWxGaWVsZC5nZXQoJ2NvbnRy b2wnKSkoeworICAgICAgICAgICAgICAgICAgZmllbGQ6IHNxbEZpZWxkLAor ICAgICAgICAgICAgICAgICAgbW9kZWw6IG5ld01vZGVsCisgICAgICAgICAg ICAgICAgfSk7CisKKyAgICAgICAgICAgICAgLy8gV2l6YXJkIGZvciBTUUwg dGFiIGNvbnRyb2wKKyAgICAgICAgICAgICAgdmFyIHJldmlld1NRTFBhZ2Ug PSBzZWxmLnJldmlld1NRTFBhZ2UgPSBuZXcgcGdCcm93c2VyLldpemFyZFBh Z2UoeworICAgICAgICAgICAgICAgIGlkOiAzLAorICAgICAgICAgICAgICAg IHBhZ2VfdGl0bGU6IF8oJ0ZpbmFsIChSZXZpZXcgU2VsZWN0aW9uKSAoc3Rl cCAzIG9mIDMpJyksCisgICAgICAgICAgICAgICAgc2hvd19zdGF0dXNfYmFy OiBfKCdGb2xsb3dpbmcgcXVlcnkgd2lsbCBiZSBleGVjdXRlZCBvbiB0aGUg ZGF0YWJhc2UnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyBz ZXJ2ZXIgZm9yIHRoZSBzZWxlY3RlZCBvYmplY3RzLCBhbmQgcHJpdmlsZWdl cy4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyBQbGVhc2Ug Y2xpY2sgb24gRmluaXNoIHRvIGNvbXBsZXRlIHRoZSBwcm9jZXNzLicpLAor CisgICAgICAgICAgICAgICAgdmlldzogbmV3KGZ1bmN0aW9uKCkgeworCisg ICAgICAgICAgICAgICAgICAvLyBSZW5kZXIgU3FsVGFiIGNvbnRyb2wgdG8g Z2VuZXJhdGUgaXRzIGh0bWwgbWFya3VwCisgICAgICAgICAgICAgICAgICB2 YXIgc3FsVGFiSHRtbCA9IHNxbENvbnRyb2wucmVuZGVyKCkuJGVsOworICAg ICAgICAgICAgICAgICAgdGhpcy5yZW5kZXIgPSBmdW5jdGlvbigpIHsKKyAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4ge2VsOiBzcWxUYWJIdG1sfTsK KyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICB9KSwK KworICAgICAgICAgICAgICAgIGJlZm9yZVByZXY6IGZ1bmN0aW9uKHdpemFy ZE9iaikgeworCisgICAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAg ICAgICAgICAgRW5hYmxlIG5leHQgYnV0dG9uIG9uIHBhZ2UgMgorICAgICAg ICAgICAgICAgICAgICBpZiBwcml2aWxlZ2UgbW9kZWwgaXMgbm90IGVtcHR5 CisgICAgICAgICAgICAgICAgICAgIGVsc2UgZGlzYWJsZSBuZXh0IGJ1dHRv bgorICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAg dmFyIGFjbE1vZGVsID0gbmV3TW9kZWwuZ2V0KCdhY2wnKTsKKworICAgICAg ICAgICAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoYWNsTW9kZWwpICYmICFf LmlzRW1wdHkoYWNsTW9kZWwpICYmCisgICAgICAgICAgICAgICAgICAgICAg YWNsTW9kZWwubGVuZ3RoID4gMCkKKyAgICAgICAgICAgICAgICAgICAgd2l6 YXJkT2JqLmNvbGxlY3Rpb24uYXQoMSkuc2V0KCdkaXNhYmxlX25leHQnLCBm YWxzZSk7CisgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg ICAgICAgIHdpemFyZE9iai5jb2xsZWN0aW9uLmF0KDEpLnNldCgnZGlzYWJs ZV9uZXh0JywgdHJ1ZSk7CisKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0pOwor CisKKyAgICAgICAgICAgICAgLy8gQ3JlYXRlIFdpemFyZCBDb2xsZWN0aW9u IG9mIFdpemFyZCBQYWdlcworICAgICAgICAgICAgICB2YXIgV2l6YXJkQ29s bGVjdGlvbiA9IEJhY2tib25lLkNvbGxlY3Rpb24uZXh0ZW5kKHsKKyAgICAg ICAgICAgICAgICBtb2RlbDogcGdCcm93c2VyLldpemFyZFBhZ2UKKyAgICAg ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgLy8gSXQgaG9sZHMgYWxs IHRoZSB3aXphcmQgcGFnZXMgdG8gYmUgcmVuZGVyZWQKKyAgICAgICAgICAg ICAgdGhpcy53aXphcmRDb2xsZWN0aW9uID0gbmV3IFdpemFyZENvbGxlY3Rp b24oCisgICAgICAgICAgICAgICAgW2RiT2JqZWN0VHlwZVBhZ2UsIHByaXZp bGVnZVBhZ2UsIHJldmlld1NRTFBhZ2VdCisgICAgICAgICAgICAgICk7CisK KyAgICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgICAgQ3JlYXRlIHdp emFyZCB3aGljaCBoYXMgZm9sbG93aW5nIG9wZXJhdGlvbnM6CisgICAgICAg ICAgICAgICAgLSByZW5kZXJzIHdpemFyZCBwYWdlcworICAgICAgICAgICAg ICAgIC0gZGVmaW5lcyB0aGUgZmlyc3QgcGFnZSB0byByZW5kZXIgaW4gd2l6 YXJkCisgICAgICAgICAgICAgICAgLSBTYXZlIHRoZSBtb2RlbCBvbiBmaW5p c2hidXR0b24KKyAgICAgICAgICAgICAgICAtIFJlbW92ZSB3aXphcmQgb24g Y2FuY2VsIGJ1dHRvbgorICAgICAgICAgICAgICAgICovCisgICAgICAgICAg ICAgIHZhciB3aXphcmQgPSBzZWxmLndpemFyZCA9IG5ldyAocGdCcm93c2Vy LldpemFyZC5leHRlbmQoeworICAgICAgICAgICAgICAgIG9wdGlvbnM6IHsK KyAgICAgICAgICAgICAgICAgIHRpdGxlOiAnR3JhbnQgV2l6YXJkJywgLyog TWFpbiBXaXphcmQgVGl0bGUgKi8KKyAgICAgICAgICAgICAgICAgIHdpZHRo OiAnJywKKyAgICAgICAgICAgICAgICAgIGhlaWdodDogJycsCisgICAgICAg ICAgICAgICAgICBjdXJyX3BhZ2U6IDAsCisgICAgICAgICAgICAgICAgICBz aG93X2xlZnRfcGFuZWw6IGZhbHNlLAorICAgICAgICAgICAgICAgICAgZGlz YWJsZV9maW5pc2g6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAg ICAgICAgICAgIG9uRmluaXNoOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg ICAgICAgIHZhciBtID0gbmV3TW9kZWwsCisgICAgICAgICAgICAgICAgICAg ICAgZCA9IG0udG9KU09OKCdHRVQnKTsKKworICAgICAgICAgICAgICAgICAg aWYgKGQgJiYgIV8uaXNFbXB0eShkKSkgeworICAgICAgICAgICAgICAgICAg ICBtLnNhdmUoe30sIHsKKyAgICAgICAgICAgICAgICAgICAgICBhdHRyczog ZCwKKyAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZTogZmFsc2UsCisg ICAgICAgICAgICAgICAgICAgICAgY2FjaGU6IGZhbHNlLAorICAgICAgICAg ICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgeworCisgICAg ICAgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIHdpemFyZCBvYmplY3Rz CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CisgICAg ICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICBl cnJvcjogZnVuY3Rpb24obSwganF4aHIpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgIGFsZXJ0aWZ5LnBnTm90aWZpZXIoCisgICAgICAgICAgICAgICAg ICAgICAgICAgICJlcnJvciIsIGpxeGhyLAorICAgICAgICAgICAgICAgICAg ICAgICAgICBTKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7eyBf KCdFcnJvciBkdXJpbmcgc2F2aW5nIHByb3BlcnRpZXMgLSAlJXMhJykgfX0i CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5zcHJpbnRmKGpxeGhy LnN0YXR1c1RleHQpLnZhbHVlKCkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIH0sCisgICAgICAgICAgICAgICAgb25DYW5jZWw6IGZ1bmN0aW9uKCkg eworCisgICAgICAgICAgICAgICAgICAvLyBSZWxlYXNlIHdpemFyZCBvYmpl Y3RzCisgICAgICAgICAgICAgICAgICBzZWxmLnJlbGVhc2VPYmplY3RzKCk7 CisgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICB9KSkgKHsKKyAgICAgICAgICAgICAg ICBjb2xsZWN0aW9uOiB0aGlzLndpemFyZENvbGxlY3Rpb24sCisgICAgICAg ICAgICAgICAgZWw6IGVsLAorICAgICAgICAgICAgICAgIG1vZGVsOiBuZXdN b2RlbAorICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAvLyBS ZW5kZXIgd2l6YXJkCisgICAgICAgICAgICAgIHdpemFyZC5yZW5kZXIoKTsK KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9OworICAgICAgICB9KTsKKyAg ICAgIH0KKworICAgICAgLy8gQ2FsbCBHcmFudCBXaXphcmQgRGlhbG9nCisg ICAgICBhbGVydGlmeS53aXphcmREaWFsb2coJycpOworICAgIH0KKyAgfTsK KworICByZXR1cm4gcGdCcm93c2VyLkdyYW50V2l6YXJkOworfSk7CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFudHdpemFyZC90ZW1wbGF0 ZXMvZ3JhbnR3aXphcmQvc3FsL2FsbG93ZWRfYWNsLmpzb24gYi93ZWIvcGdh ZG1pbi90b29scy9ncmFudHdpemFyZC90ZW1wbGF0ZXMvZ3JhbnR3aXphcmQv c3FsL2FsbG93ZWRfYWNsLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uY2I3M2QyYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL2dyYW50d2l6YXJkL3RlbXBsYXRlcy9ncmFudHdpemFy ZC9zcWwvYWxsb3dlZF9hY2wuanNvbgpAQCAtMCwwICsxLDMwIEBACit7IyBM aXN0IG9mIGFsbG93ZWQgcHJpdmlsZWdlcyBvZiBTY2hlbWEsIHRhYmxlIHNl cXVlbmNlLCBmdW5jdGlvbiBhbmQgdmlldyAjfQoreyMKKyAgICBGb3JtYXQg Zm9yIGFsbG93ZWQgcHJpdmlsZWdlcyBhcmU6CisgICAgIm5vZGVfbmFtZSI6 IHsKKyAgICAgICAgInR5cGUiOiAibmFtZSIsCisgICAgICAgICJhY2wiOiBb Li4uXQorICAgIH0KKyN9Cit7CisgICAgInNjaGVtYSI6IHsKKyAgICAgICAg InR5cGUiOiAiU0NIRU1BIiwKKyAgICAgICAgImFjbCI6IFsiYSIsICJyIiwg InciLCAiZCIsICJEIiwgIngiLCAidCIsICJVIiwgIlgiXQorICAgIH0sCisg ICAgImNvbGwtdGFibGUiOiB7CisgICAgICAgICJ0eXBlIjogIlRBQkxFIiwK KyAgICAgICAgImFjbCI6IFsiYSIsICJ3IiwgIlUiLCAiZCIsICJEIiwgIngi LCAidCJdCisgICAgfSwKKyAgICAiY29sbC1zZXF1ZW5jZSI6IHsKKyAgICAg ICAgInR5cGUiOiAiU0VRVUVOQ0UiLAorICAgICAgICAiYWNsIjogWyJhIiwg InciLCAidSJdCisgICAgfSwKKyAgICAiY29sbC1mdW5jdGlvbiI6IHsKKyAg ICAgICAgInR5cGUiOiAiRlVOQ1RJT04iLAorICAgICAgICAiYWNsIjogWyJY Il0KKyAgICB9LAorICAgICJjb2xsLXZpZXciOiB7CisgICAgICAgICJ0eXBl IjogIlZJRVciLAorICAgICAgICAiYWNsIjogWyJhIiwgInIiLCAidyIsICJk IiwgIkQiLCAieCIsICJ0Il0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9ncmFudHdpemFyZC90ZW1wbGF0ZXMvZ3JhbnR3aXph cmQvc3FsL2dyYW50LnNxbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2dyYW50d2l6 YXJkL3RlbXBsYXRlcy9ncmFudHdpemFyZC9zcWwvZ3JhbnQuc3FsCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYWMxYTcKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9ncmFudHdpemFyZC90 ZW1wbGF0ZXMvZ3JhbnR3aXphcmQvc3FsL2dyYW50LnNxbApAQCAtMCwwICsx LDE5IEBACit7Iz09PT09R3JhbnQgUGVybWlzc2lvbnMgb24gRGF0YWJhc2Ug T2JqZWN0cyBTZWxlY3RlZD09PT0jfQoreyUgaW1wb3J0ICdtYWNyb3Mvc2No ZW1hcy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQUklWSUxFR0UgJX0KK3slIGlt cG9ydCAnbWFjcm9zL2Z1bmN0aW9ucy9wcml2aWxlZ2UubWFjcm9zJyBhcyBQ UklWSUxFR0VfRlVOQ1RJT04gJX0KK3slIGlmIGRhdGEuYWNsICV9Cit7JSBm b3Igb2JqIGluIGRhdGEub2JqZWN0cyAlfQoreyUgZm9yIHByaXYgaW4gZGF0 YS5hY2wgJX0KK3slIHNldCBvYmpfdHlwZSA9IG9iai5vYmplY3RfdHlwZSAl fQoreyUgaWYgb2JqX3R5cGUudXBwZXIoKSAhPSAnRlVOQ1RJT04nIGFuZCBv YmpfdHlwZS51cHBlcigpICE9ICdUUklHR0VSIEZVTkNUSU9OJyAlfQoreyUg aWYgb2JqX3R5cGUudXBwZXIoKSA9PSAnVklFVycgJX0geyMjIyMjIyBWaWV3 cyBhcmUgYWxzbyBraW5kIG9mIHRhYmxlICMjIyMjI30KK3slIHNldCBvYmpf dHlwZSA9ICdUQUJMRScgJX0KK3slIGVuZGlmICV9Cit7eyBQUklWSUxFR0Uu U0VUKGNvbm4sIG9ial90eXBlLnVwcGVyKCksIHByaXYuZ3JhbnRlZSwgb2Jq Lm5hbWUsIHByaXYud2l0aG91dF9ncmFudCwgcHJpdi53aXRoX2dyYW50LCBu c3BuYW1lICkgfX0KK3slIGVsc2UgJX0KK3sjIyMjIyMgaWYgb2JqZWN0X3R5 cGUgaXMgRnVuY3Rpb24gdGhlbiBhcHBseSBmdW5jdGlvbiBtYXJjcm9zICMj IyMjI30KK3t7IFBSSVZJTEVHRV9GVU5DVElPTi5TRVQoY29ubiwgJ0ZVTkNU SU9OJywgcHJpdi5ncmFudGVlLCBvYmoubmFtZSwgcHJpdi53aXRob3V0X2dy YW50LCBwcml2LndpdGhfZ3JhbnQsIG5zcG5hbWUsIG9iai5wcm9hcmdzKX19 Cit7JSBlbmRpZiAlfQoreyUgZW5kZm9yICV9Cit7JSBlbmRmb3IgJX0KK3sl IGVuZGlmICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9ncmFu dHdpemFyZC90ZW1wbGF0ZXMvZ3JhbnR3aXphcmQvc3FsL3Byb3BlcnRpZXMu c3FsIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvdGVtcGxhdGVz L2dyYW50d2l6YXJkL3NxbC9wcm9wZXJ0aWVzLnNxbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTMzYzFmCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZ3JhbnR3aXphcmQvdGVtcGxhdGVz L2dyYW50d2l6YXJkL3NxbC9wcm9wZXJ0aWVzLnNxbApAQCAtMCwwICsxLDY1 IEBACit7Iz09PT09PT09PT09PT09PT09PT1GZXRjaCBsaXN0IG9mIERhdGFi YXNlIG9iamVjdCB0eXBlcyhGdW5jdGlvbnMsIFNlcXVlbmNlLCBUYWJsZXMg b3IgVmlldyk9PT09PT09PT09PT09PT09PT09I30KK3slIGlmIHR5cGUgPT0g J3NjaGVtYScgb3IgdHlwZSA9PSAndHJpZ2dlcl9mdW5jdGlvbicgYW5kIG5v ZGVfaWQgYW5kIG5vZGVfbmFtZSAlfQoreyUgc2V0IGZ1bmNfdHlwZSA9ICdU cmlnZ2VyIEZ1bmN0aW9uJyBpZiB0eXBlID09ICd0cmlnZ2VyX2Z1bmN0aW9u JyBlbHNlICdGdW5jdGlvbicgJX0KK1NFTEVDVAorICAgIHByLnByb25hbWUg QVMgbmFtZSwKKyAgICBwZ19nZXRfZnVuY3Rpb25faWRlbnRpdHlfYXJndW1l bnRzKHByLm9pZCkgQVMgcHJvYXJncywKKyAgICAne3sgZnVuY190eXBlIH19 JyBBUyBvYmplY3RfdHlwZSwKKyAgICAne3sgbnNwbmFtZSB9fScgQVMgbnNw bmFtZSwKKyAgICAnaWNvbi1mdW5jdGlvbicgQVMgaWNvbgorRlJPTSBwZ19w cm9jIHByCisgICAgSk9JTiBwZ190eXBlIHR5cCBPTiB0eXAub2lkPXByb3Jl dHR5cGUKKyAgICBKT0lOIHBnX25hbWVzcGFjZSB0eXBucyBPTiB0eXBucy5v aWQ9dHlwLnR5cG5hbWVzcGFjZQorICAgIEpPSU4gcGdfbGFuZ3VhZ2UgbG5n IE9OIGxuZy5vaWQ9cHJvbGFuZworICAgIExFRlQgT1VURVIgSk9JTiBwZ19k ZXNjcmlwdGlvbiBkZXMgT04gKGRlcy5vYmpvaWQ9cHIub2lkIEFORCBkZXMu Y2xhc3NvaWQ9J3BnX3Byb2MnOjpyZWdjbGFzcykKK1dIRVJFIHByb2lzYWdn ID0gRkFMU0UgQU5EIHByb25hbWVzcGFjZSA9IHt7IG5vZGVfaWQgfX06Om9p ZAorICAgIEFORCB0eXBuYW1lIHt7ICdOT1QnIGlmIHR5cGUgIT0gJ3RyaWdn ZXJfZnVuY3Rpb24nIGVsc2UgJycgfX0gSU4gKCd0cmlnZ2VyJywgJ2V2ZW50 X3RyaWdnZXInKQorT1JERVIgQlkgcHJvbmFtZQoreyUgZW5kaWYgJX0KKwor eyUgaWYgdHlwZSA9PSAnc2VxdWVuY2UnIGFuZCBub2RlX2lkIGFuZCBub2Rl X25hbWUgJX0KK1NFTEVDVAorICAgIGNsLnJlbG5hbWUgQVMgbmFtZSwKKyAg ICAnU2VxdWVuY2UnIEFTIG9iamVjdF90eXBlLAorICAgICd7eyBuc3BuYW1l IH19JyBBUyBuc3BuYW1lLAorICAgICdpY29uLXNlcXVlbmNlJyBBUyBpY29u CitGUk9NIHBnX2NsYXNzIGNsCisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2Rl c2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1jbC5vaWQgQU5EIGRlcy5j bGFzc29pZD0ncGdfY2xhc3MnOjpyZWdjbGFzcykKK1dIRVJFIHJlbGtpbmQg PSAnUycgQU5EIHJlbG5hbWVzcGFjZSAgPSB7eyBub2RlX2lkIH19OjpvaWQK K09SREVSIEJZIGNsLnJlbG5hbWUKK3slIGVuZGlmICV9CisKK3slIGlmIHR5 cGUgPT0gJ3RhYmxlJyBhbmQgbm9kZV9pZCBhbmQgbm9kZV9uYW1lICV9CitT RUxFQ1QgcmVsLnJlbG5hbWUgQVMgbmFtZSwKKyAgICAnVGFibGUnIEFTIG9i amVjdF90eXBlLAorICAgICd7eyBuc3BuYW1lIH19JyBBUyBuc3BuYW1lLAor ICAgICdpY29uLXRhYmxlJyBBUyBpY29uCitGUk9NIHBnX2NsYXNzIHJlbAor ICAgIExFRlQgT1VURVIgSk9JTiBwZ190YWJsZXNwYWNlIHNwYyBPTiBzcGMu b2lkPXJlbC5yZWx0YWJsZXNwYWNlCisgICAgTEVGVCBPVVRFUiBKT0lOIHBn X2Rlc2NyaXB0aW9uIGRlcyBPTiAoZGVzLm9iam9pZD1yZWwub2lkIEFORCBk ZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNsYXNzb2lkPSdwZ19jbGFzcyc6OnJl Z2NsYXNzKQorICAgIExFRlQgT1VURVIgSk9JTiBwZ19jb25zdHJhaW50IGNv biBPTiBjb24uY29ucmVsaWQ9cmVsLm9pZCBBTkQgY29uLmNvbnR5cGU9J3An CisgICAgTEVGVCBPVVRFUiBKT0lOIHBnX2NsYXNzIHRzdCBPTiB0c3Qub2lk ID0gcmVsLnJlbHRvYXN0cmVsaWQKKyAgICBMRUZUIEpPSU4gcGdfdHlwZSB0 eXAgT04gcmVsLnJlbG9mdHlwZT10eXAub2lkCitXSEVSRSByZWwucmVsa2lu ZCBJTiAoJ3InLCdzJywndCcpIEFORCByZWwucmVsbmFtZXNwYWNlID0ge3sg bm9kZV9pZCB9fTo6b2lkCitPUkRFUiBCWSByZWwucmVsbmFtZQoreyUgZW5k aWYgJX0KKworeyUgaWYgdHlwZSA9PSAnY29sbC12aWV3JyBhbmQgbm9kZV9p ZCBhbmQgbm9kZV9uYW1lICV9CitTRUxFQ1QKKyAgICBjLnJlbG5hbWUgQVMg bmFtZSwKKyAgICAnVmlldycgQVMgb2JqZWN0X3R5cGUsCisgICAgJ3t7IG5z cG5hbWUgfX0nIEFTIG5zcG5hbWUsCisgICAgJ2ljb24tY29sbC12aWV3JyBB UyBpY29uCitGUk9NIHBnX2NsYXNzIGMKKyAgICBMRUZUIE9VVEVSIEpPSU4g cGdfdGFibGVzcGFjZSBzcGMgT04gc3BjLm9pZD1jLnJlbHRhYmxlc3BhY2UK KyAgICBMRUZUIE9VVEVSIEpPSU4gcGdfZGVzY3JpcHRpb24gZGVzIE9OIChk ZXMub2Jqb2lkPWMub2lkIGFuZCBkZXMub2Jqc3ViaWQ9MCBBTkQgZGVzLmNs YXNzb2lkPSdwZ19jbGFzcyc6OnJlZ2NsYXNzKQorICAgIExFRlQgT1VURVIg Sk9JTiBwZ19jbGFzcyB0c3QgT04gdHN0Lm9pZCA9IGMucmVsdG9hc3RyZWxp ZAorV0hFUkUgKChjLnJlbGhhc3J1bGVzIEFORCAoRVhJU1RTICgKKyAgICBT RUxFQ1Qgci5ydWxlbmFtZQorICAgIEZST00gcGdfcmV3cml0ZSByCisgICAg V0hFUkUgKChyLmV2X2NsYXNzID0gYy5vaWQpCisgICAgICAgIEFORCAoYnBj aGFyKHIuZXZfdHlwZSkgPSAnMSc6OmJwY2hhcikpICkpCisgICAgICAgKSBP UiAoYy5yZWxraW5kID0gJ3YnOjpjaGFyKSkKK0FORCBjLnJlbG5hbWVzcGFj ZSA9IHt7IG5vZGVfaWQgfX06Om9pZAorT1JERVIgQlkgYy5yZWxuYW1lCit7 JSBlbmRpZiAlfQo= --001a1143587256e023052d247010 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 --001a1143587256e023052d247010--