Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hWI66-00078A-6O for pgadmin-hackers@arkaria.postgresql.org; Thu, 30 May 2019 10:15:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1hWI63-0000so-KR for pgadmin-hackers@arkaria.postgresql.org; Thu, 30 May 2019 10:15:43 +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_SHA1:256) (Exim 4.89) (envelope-from ) id 1hWI63-0000qj-4f for pgadmin-hackers@lists.postgresql.org; Thu, 30 May 2019 10:15:43 +0000 Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hWI5u-0005CQ-LZ for pgadmin-hackers@postgresql.org; Thu, 30 May 2019 10:15:42 +0000 Received: by mail-lf1-x12f.google.com with SMTP id m15so4571514lfh.4 for ; Thu, 30 May 2019 03:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=2OL6rrjocRBjqVMFQwfyrjlSKX6MoDCgk6UXjwRP7cI=; b=OmH9qQoaNa8+xb3tVypeu7m70qQtEXeNb341aYDVu8Nz37Wo/j1LgsmM3KaBX5wLx8 hKEvyv86j2RM5BPrmwDdg4tjfM86oiaVoQTMpIUabGvdRGuSKG5ae+ALIwSCjSdZHtGt DMwMMpZ9NYaIzlaLGETuVQg2n94zWtmRKb+E6n2copcS+1l17tKwt7k2a014Vuu1gxQV LJtE1R/hkRaGSCTxOXkmw5q2eFp7zgc34s/aK5RAgF8sfQeJwVC2hoTwdOhV4qxR9rb4 poQAN7o5XsVQS6Mz8cABxZsMqMB5w3uL2lPU1Tu/q/euFAsAUts3vRJSUwspJHaVEOZp A4sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=2OL6rrjocRBjqVMFQwfyrjlSKX6MoDCgk6UXjwRP7cI=; b=P6GnKvDdhS2c65z+e/bOC6/F2zEZSQv+AHFpBuVvdWnFUTAPgbNTUenmztJ71BYKjn 3Nxf9WYrZMSAzN3YOMUzBv2gkYvrqm77yDOGzX/X9WopIV9D/3dJkO1mqv43S/3Y4MYa zG7csbTvPDwElG82EwVpTR1RCTabLHQLzyBtboi38eRmGSQFOdkv/oFdQ2jnWgHrs5NY VvWQr9ESGzSaZCT0bGx6CyKrZcnHlYzpRr/i01FDQbOtk3nVcIVWUvpdL/R7OaBFrguS xugKEu/NGUs6YWYI2wRT7/KIrigkVlpREJ3dSNOtCReQmKg0ejQ0YUV5pbgpUhYWvAbe b6OA== X-Gm-Message-State: APjAAAWUKZHDLsWG21o61nrOlH0h5hHPuezrEVucL+qPkpHxmaNwJO+Y si9D4JU44/gNuwP2UFPdi3j0t0ErkSkXVVdnwX9ycGjHpMs= X-Google-Smtp-Source: APXvYqyu8sL3DA3vlxEnML/0XO8BQImzHrBWd7JncKp/aQYJ1da590H+NRziGUVs3j6ROqVGfE4R+6mPBIIaoN6w+w8= X-Received: by 2002:ac2:4990:: with SMTP id f16mr1600797lfl.93.1559211331425; Thu, 30 May 2019 03:15:31 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Thu, 30 May 2019 15:44:55 +0530 Message-ID: Subject: [pgAdmin][RM2653] Lock layout To: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000008a4c4e058a182ddb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk --0000000000008a4c4e058a182ddb Content-Type: multipart/alternative; boundary="0000000000008a4c49058a182dd9" --0000000000008a4c49058a182dd9 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached is the patch to introduce feature to lock the layout with three different levels: 1) None - No locking 2) Prevent docking - The docking/undocking of panels will be disabled 3) Full lock - The resizing along with docking/undocking of panels will be disabled - This can be changed from new menu under File->Lock layout-> or from Preferences->Browser->Display->Lock Layout - JS test cases added. With this patch I have also changed below: 1) Moved the maintenance dialog button group control to new common control named RadioModern, which I have re-used in preferences for lock layout levels. 2) Added main nav bar menu with check feature, the menus which can checked. 3) Ability to add submenus from existing get_own_menuitems in python code which is not possible currently. 3) Separated all the layout related functions from browser.js to new file layout.js to help JS testing. Kindly review. -- Thanks and Regards, Aditya Toshniwal Software Engineer | EnterpriseDB India | Pune "Don't Complain about Heat, Plant a TREE" --0000000000008a4c49058a182dd9 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached is the patch to introduce feature to = lock the layout with three different levels:
1) None - No locking
2) Preven= t docking - The docking/undocking of panels will be disabled
3) Full lock -= The resizing along with docking/undocking of panels will be disabled
=

<= /div>
= - This can be changed from new menu under File->Lock layout-><The = level> or from Preferences->Browser->Display->Lock Layout
=
- JS = test cases added.

With this patch I have also changed below:
1) Moved = the maintenance dialog button group control to new common control named Rad= ioModern, which I have re-used in preferences for lock layout levels.
=
= 2) Added main nav bar menu with check feature, the menus which can checked.=
3) Ability to add submenus from existing=C2=A0get_own_menuitems in py= thon code which is not possible currently.
3) Separated all the layo= ut related functions from browser.js to new file layout.js to help JS testi= ng.

Kindly review.

--
Thanks and Regards,Aditya Toshniwal
Software Engineer |=C2= =A0EnterpriseDB India |=C2=A0Pune
"Don't Complain about Heat, Plant a TREE"<= /font>
--0000000000008a4c49058a182dd9-- --0000000000008a4c4e058a182ddb Content-Type: application/octet-stream; name="RM2653.patch" Content-Disposition: attachment; filename="RM2653.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jwai3nxf0 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IGM5 ODkyZjYwLi5mNTY3ZWUyNSAxMDA2NDQKLS0tIGEvd2ViL3BhY2thZ2UuanNvbgorKysgYi93ZWIv cGFja2FnZS5qc29uCkBAIC04OSw3ICs4OSw3IEBACiAgICAgInVuZGVyc2NvcmUiOiAiXjEuOS4x IiwKICAgICAidW5kZXJzY29yZS5zdHJpbmciOiAiXjMuMy41IiwKICAgICAid2F0Y2hpZnkiOiAi fjMuMTEuMSIsCi0gICAgIndlYmNhYmluLWRvY2tlciI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29t L0VudGVycHJpc2VEQi93Y0RvY2tlci8jZTE5MWExMDYzYzExMWQ1NTQyZmYyNmE3YzE2Mzk0MGJl MTgwMzMzZCIsCisgICAgIndlYmNhYmluLWRvY2tlciI6ICJnaXQraHR0cHM6Ly9naXRodWIuY29t L0VudGVycHJpc2VEQi93Y0RvY2tlci8jZjNjNzllNGI5YTllNzZhOGUzNDczNmZjMzM0NzNlNjVj NTI0MDUwYyIsCiAgICAgIndreCI6ICJeMC40LjYiCiAgIH0sCiAgICJzY3JpcHRzIjogewpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jy b3dzZXIvX19pbml0X18ucHkKaW5kZXggNWZkMDhiNWMuLjUwOGE4MDc3IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIv X19pbml0X18ucHkKQEAgLTM5LDYgKzM5LDcgQEAgZnJvbSBwZ2FkbWluLnV0aWxzIGltcG9ydCBQ Z0FkbWluTW9kdWxlCiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jl c3BvbnNlCiBmcm9tIHBnYWRtaW4udXRpbHMuY3NyZiBpbXBvcnQgcGdDU1JGUHJvdGVjdAogZnJv bSBwZ2FkbWluLnV0aWxzLnByZWZlcmVuY2VzIGltcG9ydCBQcmVmZXJlbmNlcworZnJvbSBwZ2Fk bWluLnV0aWxzLm1lbnUgaW1wb3J0IE1lbnVJdGVtCiBmcm9tIHBnYWRtaW4uYnJvd3Nlci5yZWdp c3Rlcl9icm93c2VyX3ByZWZlcmVuY2VzIGltcG9ydCBcCiAgICAgcmVnaXN0ZXJfYnJvd3Nlcl9w cmVmZXJlbmNlcwogZnJvbSBwZ2FkbWluLnV0aWxzLm1hc3Rlcl9wYXNzd29yZCBpbXBvcnQgdmFs aWRhdGVfbWFzdGVyX3Bhc3N3b3JkLCBcCkBAIC0yMTUsNiArMjE2LDQwIEBAIGNsYXNzIEJyb3dz ZXJNb2R1bGUoUGdBZG1pbk1vZHVsZSk6CiAgICAgICAgICAgICBzY3JpcHRzLmV4dGVuZChtb2R1 bGUuZ2V0X293bl9qYXZhc2NyaXB0cygpKQogICAgICAgICByZXR1cm4gc2NyaXB0cwogCisgICAg ZGVmIGdldF9vd25fbWVudWl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1cm4geworICAgICAgICAg ICAgJ2ZpbGVfaXRlbXMnOiBbCisgICAgICAgICAgICAgICAgTWVudUl0ZW0oCisgICAgICAgICAg ICAgICAgICAgIG5hbWU9J21udV9sb2NrbGF5b3V0JywKKyAgICAgICAgICAgICAgICAgICAgbW9k dWxlPSdwZ0FkbWluLkJyb3dzZXInLAorICAgICAgICAgICAgICAgICAgICBsYWJlbD1nZXR0ZXh0 KCdMb2NrIGxheW91dCcpLAorICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT05OTksCisgICAg ICAgICAgICAgICAgICAgIG1lbnVfaXRlbXM9W01lbnVJdGVtKAorICAgICAgICAgICAgICAgICAg ICAgICAgbmFtZT0nbW51X2xvY2tfbm9uZScsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2R1 bGU9J3BnQWRtaW4uQnJvd3NlcicsCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz0n bW51X2xvY2tfbm9uZScsCisgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT0wLAorICAg ICAgICAgICAgICAgICAgICAgICAgbGFiZWw9Z2V0dGV4dCgnTm9uZScpLAorICAgICAgICAgICAg ICAgICAgICAgICAgY2hlY2tlZD1UcnVlCisgICAgICAgICAgICAgICAgICAgICksIE1lbnVJdGVt KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0nbW51X2xvY2tfZG9ja2luZycsCisgICAg ICAgICAgICAgICAgICAgICAgICBtb2R1bGU9J3BnQWRtaW4uQnJvd3NlcicsCisgICAgICAgICAg ICAgICAgICAgICAgICBjYWxsYmFjaz0nbW51X2xvY2tfZG9ja2luZycsCisgICAgICAgICAgICAg ICAgICAgICAgICBwcmlvcml0eT0xLAorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9Z2V0 dGV4dCgnUHJldmVudCBkb2NraW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICBjaGVja2Vk PUZhbHNlCisgICAgICAgICAgICAgICAgICAgICksIE1lbnVJdGVtKAorICAgICAgICAgICAgICAg ICAgICAgICAgbmFtZT0nbW51X2xvY2tfZnVsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBt b2R1bGU9J3BnQWRtaW4uQnJvd3NlcicsCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFj az0nbW51X2xvY2tfZnVsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT0yLAor ICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw9Z2V0dGV4dCgnRnVsbCBsb2NrJyksCisgICAg ICAgICAgICAgICAgICAgICAgICBjaGVja2VkPUZhbHNlCisgICAgICAgICAgICAgICAgICAgICld CisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgXQorICAgICAgICB9CisKICAgICBkZWYg cmVnaXN0ZXJfcHJlZmVyZW5jZXMoc2VsZik6CiAgICAgICAgIHJlZ2lzdGVyX2Jyb3dzZXJfcHJl ZmVyZW5jZXMoc2VsZikKIApAQCAtMjI2LDcgKzI2MSw4IEBAIGNsYXNzIEJyb3dzZXJNb2R1bGUo UGdBZG1pbk1vZHVsZSk6CiAgICAgICAgIHJldHVybiBbJ2Jyb3dzZXIuaW5kZXgnLCAnYnJvd3Nl ci5ub2RlcycsCiAgICAgICAgICAgICAgICAgJ2Jyb3dzZXIuY2hlY2tfbWFzdGVyX3Bhc3N3b3Jk JywKICAgICAgICAgICAgICAgICAnYnJvd3Nlci5zZXRfbWFzdGVyX3Bhc3N3b3JkJywKLSAgICAg ICAgICAgICAgICAnYnJvd3Nlci5yZXNldF9tYXN0ZXJfcGFzc3dvcmQnXQorICAgICAgICAgICAg ICAgICdicm93c2VyLnJlc2V0X21hc3Rlcl9wYXNzd29yZCcsCisgICAgICAgICAgICAgICAgJ2Jy b3dzZXIubG9ja19sYXlvdXQnXQogCiAKIGJsdWVwcmludCA9IEJyb3dzZXJNb2R1bGUoTU9EVUxF X05BTUUsIF9fbmFtZV9fKQpAQCAtODE1LDYgKzg1MSwyMSBAQCBkZWYgc2V0X21hc3Rlcl9wYXNz d29yZCgpOgogICAgICkKIAogCitAYmx1ZXByaW50LnJvdXRlKCIvbG9ja19sYXlvdXQiLCBlbmRw b2ludD0ibG9ja19sYXlvdXQiLCBtZXRob2RzPVsiUFVUIl0pCitkZWYgbG9ja19sYXlvdXQoKToK KyAgICBkYXRhID0gTm9uZQorCisgICAgaWYgaGFzYXR0cihyZXF1ZXN0LmRhdGEsICdkZWNvZGUn KToKKyAgICAgICAgZGF0YSA9IHJlcXVlc3QuZGF0YS5kZWNvZGUoJ3V0Zi04JykKKworICAgIGlm IGRhdGEgIT0gJyc6CisgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGRhdGEpCisKKyAgICBibHVl cHJpbnQubG9ja19sYXlvdXQuc2V0KGRhdGFbJ3ZhbHVlJ10pCisKKyAgICByZXR1cm4gbWFrZV9q c29uX3Jlc3BvbnNlKCkKKworCiAjIE9ubHkgcmVnaXN0ZXIgcm91dGUgaWYgU0VDVVJJVFlfQ0hB TkdFQUJMRSBpcyBzZXQgdG8gVHJ1ZQogIyBXZSBjYW4ndCBhY2Nlc3MgYXBwIGNvbnRleHQgaGVy ZSBzbyBjYW5ub3QKICMgdXNlIGFwcC5jb25maWdbJ1NFQ1VSSVRZX0NIQU5HRUFCTEUnXQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2Vz LnB5IGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2VzLnB5 CmluZGV4IGM0ZDg2YzY2Li4zNWFlNzM0MCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nl ci9yZWdpc3Rlcl9icm93c2VyX3ByZWZlcmVuY2VzLnB5CisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dz ZXIvcmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcy5weQpAQCAtOCw2ICs4LDEyIEBACiAjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwogZnJvbSBmbGFza19iYWJlbGV4IGltcG9ydCBnZXR0ZXh0CiAKK0xPQ0tf TEFZT1VUX0xFVkVMID0geworICAgICdQUkVWRU5UX0RPQ0tJTkcnOiAnZG9ja2luZycsCisgICAg J0ZVTEwnOiAnZnVsbCcsCisgICAgJ05PTkUnOiAnbm9uZScKK30KKwogCiBkZWYgcmVnaXN0ZXJf YnJvd3Nlcl9wcmVmZXJlbmNlcyhzZWxmKToKICAgICBzZWxmLnNob3dfc3lzdGVtX29iamVjdHMg PSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCkBAIC01OCw2ICs2NCwyMCBAQCBkZWYgcmVnaXN0 ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcyhzZWxmKToKICAgICAgICAgKQogICAgICkKIAorICAgIHNl bGYubG9ja19sYXlvdXQgPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCisgICAgICAgICdkaXNw bGF5JywgJ2xvY2tfbGF5b3V0JywKKyAgICAgICAgZ2V0dGV4dCgnTG9jayBsYXlvdXQnKSwgJ3Jh ZGlvTW9kZXJuJywgTE9DS19MQVlPVVRfTEVWRUxbJ05PTkUnXSwKKyAgICAgICAgY2F0ZWdvcnlf bGFiZWw9Z2V0dGV4dCgnRGlzcGxheScpLCBvcHRpb25zPVsKKyAgICAgICAgICAgIHsnbGFiZWwn OiBnZXR0ZXh0KCdOb25lJyksICd2YWx1ZSc6IExPQ0tfTEFZT1VUX0xFVkVMWydOT05FJ119LAor ICAgICAgICAgICAgeydsYWJlbCc6IGdldHRleHQoJ1ByZXZlbnQgZG9ja2luZycpLAorICAgICAg ICAgICAgICd2YWx1ZSc6IExPQ0tfTEFZT1VUX0xFVkVMWydQUkVWRU5UX0RPQ0tJTkcnXX0sCisg ICAgICAgICAgICB7J2xhYmVsJzogZ2V0dGV4dCgnRnVsbCcpLCAndmFsdWUnOiBMT0NLX0xBWU9V VF9MRVZFTFsnRlVMTCddfSwKKyAgICAgICAgXSwKKyAgICAgICAgaGVscF9zdHI9Z2V0dGV4dCgK KyAgICAgICAgICAgICdXaWxsIGNoYW5nZSB0aGlzIGxhdGVyLi4uICcKKyAgICAgICAgKQorICAg ICkKKwogICAgIHNlbGYudGFibGVfcm93X2NvdW50X3RocmVzaG9sZCA9IHNlbGYucHJlZmVyZW5j ZS5yZWdpc3RlcigKICAgICAgICAgJ3Byb3BlcnRpZXMnLCAndGFibGVfcm93X2NvdW50X3RocmVz aG9sZCcsCiAgICAgICAgIGdldHRleHQoIkNvdW50IHJvd3MgaWYgZXN0aW1hdGVkIGxlc3MgdGhh biIpLCAnaW50ZWdlcicsIDIwMDAsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3N0 YXRpYy9qcy9icm93c2VyLmpzIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvYnJvd3Nl ci5qcwppbmRleCA3ZmJlZDVhOS4uNzc4MTBkYzcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jy b3dzZXIvc3RhdGljL2pzL2Jyb3dzZXIuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvYnJvd3Nlci5qcwpAQCAtMTUsNyArMTUsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nl cicsIFsKICAgJ3NvdXJjZXMvY3NyZicsICdwZ2FkbWluLmJyb3dzZXIudXRpbHMnLAogICAnd2Nk b2NrZXInLCAnanF1ZXJ5LmNvbnRleHRtZW51JywgJ2pxdWVyeS5hY2lwbHVnaW4nLCAnanF1ZXJ5 LmFjaXRyZWUnLAogICAncGdhZG1pbi5icm93c2VyLnByZWZlcmVuY2VzJywgJ3BnYWRtaW4uYnJv d3Nlci5tZXNzYWdlcycsCi0gICdwZ2FkbWluLmJyb3dzZXIubWVudScsICdwZ2FkbWluLmJyb3dz ZXIucGFuZWwnLAorICAncGdhZG1pbi5icm93c2VyLm1lbnUnLCAncGdhZG1pbi5icm93c2VyLnBh bmVsJywgJ3BnYWRtaW4uYnJvd3Nlci5sYXlvdXQnLAogICAncGdhZG1pbi5icm93c2VyLmVycm9y JywgJ3BnYWRtaW4uYnJvd3Nlci5mcmFtZScsCiAgICdwZ2FkbWluLmJyb3dzZXIubm9kZScsICdw Z2FkbWluLmJyb3dzZXIuY29sbGVjdGlvbicsCiAgICdzb3VyY2VzL2NvZGVtaXJyb3IvYWRkb24v Zm9sZC9wZ2FkbWluLXNxbGZvbGRjb2RlJywKQEAgLTI4MiwyMiArMjgyLDYgQEAgZGVmaW5lKCdw Z2FkbWluLmJyb3dzZXInLCBbCiAgICAgICBzY3JpcHRzW25dLnB1c2goeyduYW1lJzogbSwgJ3Bh dGgnOiBwLCBsb2FkZWQ6IGZhbHNlfSk7CiAgICAgfSwKICAgICBtYXN0ZXJwYXNzX2NhbGxiYWNr X3F1ZXVlOiBbXSwKLSAgICAvLyBCdWlsZCB0aGUgZGVmYXVsdCBsYXlvdXQKLSAgICBidWlsZERl ZmF1bHRMYXlvdXQ6IGZ1bmN0aW9uKGRvY2tlcikgewotICAgICAgdmFyIGJyb3dzZXJQYW5lbCA9 IGRvY2tlci5hZGRQYW5lbCgnYnJvd3NlcicsIHdjRG9ja2VyLkRPQ0suTEVGVCk7Ci0gICAgICB2 YXIgZGFzaGJvYXJkUGFuZWwgPSBkb2NrZXIuYWRkUGFuZWwoCi0gICAgICAgICdkYXNoYm9hcmQn LCB3Y0RvY2tlci5ET0NLLlJJR0hULCBicm93c2VyUGFuZWwpOwotICAgICAgZG9ja2VyLmFkZFBh bmVsKCdwcm9wZXJ0aWVzJywgd2NEb2NrZXIuRE9DSy5TVEFDS0VELCBkYXNoYm9hcmRQYW5lbCwg ewotICAgICAgICB0YWJPcmllbnRhdGlvbjogd2NEb2NrZXIuVEFCLlRPUCwKLSAgICAgIH0pOwot ICAgICAgZG9ja2VyLmFkZFBhbmVsKCdzcWwnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIGRhc2hi b2FyZFBhbmVsKTsKLSAgICAgIGRvY2tlci5hZGRQYW5lbCgKLSAgICAgICAgJ3N0YXRpc3RpY3Mn LCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIGRhc2hib2FyZFBhbmVsKTsKLSAgICAgIGRvY2tlci5h ZGRQYW5lbCgKLSAgICAgICAgJ2RlcGVuZGVuY2llcycsIHdjRG9ja2VyLkRPQ0suU1RBQ0tFRCwg ZGFzaGJvYXJkUGFuZWwpOwotICAgICAgZG9ja2VyLmFkZFBhbmVsKAotICAgICAgICAnZGVwZW5k ZW50cycsIHdjRG9ja2VyLkRPQ0suU1RBQ0tFRCwgZGFzaGJvYXJkUGFuZWwpOwotICAgIH0sCiAg ICAgLy8gRW5hYmxlL2Rpc2FibGUgbWVudSBvcHRpb25zCiAgICAgZW5hYmxlX2Rpc2FibGVfbWVu dXM6IGZ1bmN0aW9uKGl0ZW0pIHsKICAgICAgIC8vIE1lY2hhbmlzbSB0byBlbmFibGUvZGlzYWJs ZSBtZW51cyBkZXBlbmRpbmcgb24gdGhlIGNvbmRpdGlvbi4KQEAgLTM1NCwzNSArMzM4LDYgQEAg ZGVmaW5lKCdwZ2FkbWluLmJyb3dzZXInLCBbCiAgICAgICAgICRvYmpfbW51LmFwcGVuZChjcmVh dGVfc3VibWVudS4kZWwpOwogICAgICAgfQogICAgIH0sCi0gICAgc2F2ZV9jdXJyZW50X2xheW91 dDogZnVuY3Rpb24obGF5b3V0X2lkLCBkb2NrZXIpIHsKLSAgICAgIGlmKGRvY2tlcikgewotICAg ICAgICB2YXIgbGF5b3V0ID0gZG9ja2VyLnNhdmUoKSwKLSAgICAgICAgICBzZXR0aW5ncyA9IHsg c2V0dGluZzogbGF5b3V0X2lkLCB2YWx1ZTogbGF5b3V0IH07Ci0gICAgICAgICQuYWpheCh7Ci0g ICAgICAgICAgdHlwZTogJ1BPU1QnLAotICAgICAgICAgIHVybDogdXJsX2Zvcignc2V0dGluZ3Mu c3RvcmVfYnVsaycpLAotICAgICAgICAgIGRhdGE6IHNldHRpbmdzLAotICAgICAgICB9KTsKLSAg ICAgIH0KLSAgICB9LAotICAgIHJlc3RvcmVfbGF5b3V0OiBmdW5jdGlvbihkb2NrZXIsIGxheW91 dCwgZGVmYXVsdExheW91dENhbGxiYWNrKSB7Ci0gICAgICAvLyBUcnkgdG8gcmVzdG9yZSB0aGUg bGF5b3V0IGlmIHRoZXJlIGlzIG9uZQotICAgICAgaWYgKGxheW91dCAhPSAnJykgewotICAgICAg ICB0cnkgewotICAgICAgICAgIGRvY2tlci5yZXN0b3JlKGxheW91dCk7Ci0gICAgICAgIH0KLSAg ICAgICAgY2F0Y2goZXJyKSB7Ci0gICAgICAgICAgZG9ja2VyLmNsZWFyKCk7Ci0gICAgICAgICAg aWYoZGVmYXVsdExheW91dENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBkZWZhdWx0TGF5b3V0Q2Fs bGJhY2soZG9ja2VyKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0g ICAgICAgIGlmKGRlZmF1bHRMYXlvdXRDYWxsYmFjaykgewotICAgICAgICAgIGRlZmF1bHRMYXlv dXRDYWxsYmFjayhkb2NrZXIpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfSwKICAgICBpbml0 OiBmdW5jdGlvbigpIHsKICAgICAgIHZhciBvYmo9dGhpczsKICAgICAgIGlmIChvYmouaW5pdGlh bGl6ZWQpIHsKQEAgLTc5Nyw4ICs3NTIsOCBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3NlcicsIFsK ICAgICAgICAgICAgICAgbWVudXMgPSBwZ01lbnVbYV07CiAgICAgICAgICAgICB9CiAKLSAgICAg ICAgICAgIGlmICghXy5oYXMobWVudXMsIG0ubmFtZSkpIHsKLSAgICAgICAgICAgICAgbWVudXNb bS5uYW1lXSA9IG5ldyBNZW51SXRlbSh7CisgICAgICAgICAgICBsZXQgZ2V0X21lbnVpdGVtX29i aiA9IGZ1bmN0aW9uKG0pIHsKKyAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNZW51SXRlbSh7CiAg ICAgICAgICAgICAgICAgbmFtZTogbS5uYW1lLCBsYWJlbDogbS5sYWJlbCwgbW9kdWxlOiBtLm1v ZHVsZSwKICAgICAgICAgICAgICAgICBjYXRlZ29yeTogbS5jYXRlZ29yeSwgY2FsbGJhY2s6IG0u Y2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgcHJpb3JpdHk6IG0ucHJpb3JpdHksIGRhdGE6IG0u ZGF0YSwgdXJsOiBtLnVybCB8fCAnIycsCkBAIC04MDYsOCArNzYxLDIxIEBAIGRlZmluZSgncGdh ZG1pbi5icm93c2VyJywgWwogICAgICAgICAgICAgICAgIGVuYWJsZTogKG0uZW5hYmxlID09ICcn ID8gdHJ1ZSA6IChfLmlzU3RyaW5nKG0uZW5hYmxlKSAmJgogICAgICAgICAgICAgICAgICAgICBt LmVuYWJsZS50b0xvd2VyQ2FzZSgpID09ICdmYWxzZScpID8KICAgICAgICAgICAgICAgICAgIGZh bHNlIDogbS5lbmFibGUpLAotICAgICAgICAgICAgICAgIG5vZGU6IG0ubm9kZSwKKyAgICAgICAg ICAgICAgICBub2RlOiBtLm5vZGUsIGNoZWNrZWQ6IG0uY2hlY2tlZCwKICAgICAgICAgICAgICAg fSk7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoIV8uaGFzKG1lbnVzLCBtLm5h bWUpKSB7CisgICAgICAgICAgICAgIG1lbnVzW20ubmFtZV0gPSBnZXRfbWVudWl0ZW1fb2JqKG0p OworCisgICAgICAgICAgICAgIGlmKG0ubWVudV9pdGVtcykgeworICAgICAgICAgICAgICAgIGxl dCBzdWJfbWVudV9pdGVtcyA9IFtdOworCisgICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8 bS5tZW51X2l0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICBzdWJfbWVudV9p dGVtcy5wdXNoKGdldF9tZW51aXRlbV9vYmoobS5tZW51X2l0ZW1zW2ldKSk7CisgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIG1lbnVzW20ubmFtZV1bJ21lbnVfaXRlbXMnXSA9IHN1 Yl9tZW51X2l0ZW1zOworICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAg fSBlbHNlICB7CiAgICAgICAgICAgICBjb25zb2xlLndhcm4oCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9icm93c2VyL3N0YXRpYy9qcy9sYXlvdXQuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0 YXRpYy9qcy9sYXlvdXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjhi NWU5OTEzCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMv bGF5b3V0LmpzCkBAIC0wLDAgKzEsMTYxIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9z dGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMTksIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIg dGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ltcG9ydCBwZ0FkbWluIGZyb20g J3NvdXJjZXMvcGdhZG1pbic7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3In OworaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKK2ltcG9ydCAqIGFzIEFsZXJ0aWZ5IGZyb20gJ3Bn YWRtaW4uYWxlcnRpZnlqcyc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQn OworaW1wb3J0ICd3Y2RvY2tlcic7CisKK2NvbnN0IHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3Nl ciA9IHBnQWRtaW4uQnJvd3NlciB8fCB7fTsKKwordmFyIHdjRG9ja2VyID0gd2luZG93LndjRG9j a2VyOworCisvKiBBZGQgY2FjaGUgcmVsYXRlZCBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzICovCitf LmV4dGVuZChwZ0Jyb3dzZXIsIHsKKyAgbG9ja19sYXlvdXRfbGV2ZWxzIDogeworICAgIFBSRVZF TlRfRE9DS0lORzogJ2RvY2tpbmcnLAorICAgIEZVTEw6ICdmdWxsJywKKyAgICBOT05FOiAnbm9u ZScsCisgIH0sCisKKyAgLy8gQnVpbGQgdGhlIGRlZmF1bHQgbGF5b3V0CisgIGJ1aWxkRGVmYXVs dExheW91dDogZnVuY3Rpb24oZG9ja2VyKSB7CisgICAgdmFyIGJyb3dzZXJQYW5lbCA9IGRvY2tl ci5hZGRQYW5lbCgnYnJvd3NlcicsIHdjRG9ja2VyLkRPQ0suTEVGVCk7CisgICAgdmFyIGRhc2hi b2FyZFBhbmVsID0gZG9ja2VyLmFkZFBhbmVsKAorICAgICAgJ2Rhc2hib2FyZCcsIHdjRG9ja2Vy LkRPQ0suUklHSFQsIGJyb3dzZXJQYW5lbCk7CisgICAgZG9ja2VyLmFkZFBhbmVsKCdwcm9wZXJ0 aWVzJywgd2NEb2NrZXIuRE9DSy5TVEFDS0VELCBkYXNoYm9hcmRQYW5lbCwgeworICAgICAgdGFi T3JpZW50YXRpb246IHdjRG9ja2VyLlRBQi5UT1AsCisgICAgfSk7CisgICAgZG9ja2VyLmFkZFBh bmVsKCdzcWwnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIGRhc2hib2FyZFBhbmVsKTsKKyAgICBk b2NrZXIuYWRkUGFuZWwoCisgICAgICAnc3RhdGlzdGljcycsIHdjRG9ja2VyLkRPQ0suU1RBQ0tF RCwgZGFzaGJvYXJkUGFuZWwpOworICAgIGRvY2tlci5hZGRQYW5lbCgKKyAgICAgICdkZXBlbmRl bmNpZXMnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIGRhc2hib2FyZFBhbmVsKTsKKyAgICBkb2Nr ZXIuYWRkUGFuZWwoCisgICAgICAnZGVwZW5kZW50cycsIHdjRG9ja2VyLkRPQ0suU1RBQ0tFRCwg ZGFzaGJvYXJkUGFuZWwpOworICB9LAorCisgIHNhdmVfY3VycmVudF9sYXlvdXQ6IGZ1bmN0aW9u KGxheW91dF9pZCwgZG9ja2VyKSB7CisgICAgaWYoZG9ja2VyKSB7CisgICAgICB2YXIgbGF5b3V0 ID0gZG9ja2VyLnNhdmUoKSwKKyAgICAgICAgc2V0dGluZ3MgPSB7IHNldHRpbmc6IGxheW91dF9p ZCwgdmFsdWU6IGxheW91dCB9OworICAgICAgJC5hamF4KHsKKyAgICAgICAgdHlwZTogJ1BPU1Qn LAorICAgICAgICB1cmw6IHVybF9mb3IoJ3NldHRpbmdzLnN0b3JlX2J1bGsnKSwKKyAgICAgICAg ZGF0YTogc2V0dGluZ3MsCisgICAgICB9KTsKKyAgICB9CisgIH0sCisKKyAgcmVzdG9yZV9sYXlv dXQ6IGZ1bmN0aW9uKGRvY2tlciwgbGF5b3V0LCBkZWZhdWx0TGF5b3V0Q2FsbGJhY2spIHsKKyAg ICAvLyBUcnkgdG8gcmVzdG9yZSB0aGUgbGF5b3V0IGlmIHRoZXJlIGlzIG9uZQorICAgIGlmIChs YXlvdXQgIT0gJycpIHsKKyAgICAgIHRyeSB7CisgICAgICAgIGRvY2tlci5yZXN0b3JlKGxheW91 dCk7CisgICAgICB9CisgICAgICBjYXRjaChlcnIpIHsKKyAgICAgICAgZG9ja2VyLmNsZWFyKCk7 CisgICAgICAgIGlmKGRlZmF1bHRMYXlvdXRDYWxsYmFjaykgeworICAgICAgICAgIGRlZmF1bHRM YXlvdXRDYWxsYmFjayhkb2NrZXIpOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIHsK KyAgICAgIGlmKGRlZmF1bHRMYXlvdXRDYWxsYmFjaykgeworICAgICAgICBkZWZhdWx0TGF5b3V0 Q2FsbGJhY2soZG9ja2VyKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBwcmVmZXJlbmNlIGF2 YWlsYWJsZSBvbmx5IHdpdGggdG9wL29wZW5lciBicm93c2VyLiAqLworICAgIGxldCBicm93c2Vy ID0gd2luZG93Lm9wZW5lciA/CisgICAgICB3aW5kb3cub3BlbmVyLnBnQWRtaW4uQnJvd3NlciA6 IHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2VyOworCisgICAgLyogaW50ZXJ2YWwgcmVxdWlyZWQg aW5pdGlhbGx5IGFzIHByZWZlcmVuY2UgbG9hZCBtYXkgdGFrZSB0aW1lICovCisgICAgbGV0IGNh Y2hlSW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpPT4geworICAgICAgbGV0IGJyb3dzZXJQcmVm ID0gYnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOworICAgICAg aWYoYnJvd3NlclByZWYpIHsKKyAgICAgICAgY2xlYXJJbnRlcnZhbChjYWNoZUludGVydmFsSWQp OworCisgICAgICAgIGJyb3dzZXIucmVmbGVjdExvY2tsYXlvdXRDaGFuZ2UoZG9ja2VyKTsKKwor ICAgICAgICBicm93c2VyLm9uUHJlZmVyZW5jZXNDaGFuZ2UoJ2Jyb3dzZXInLCBmdW5jdGlvbigp IHsKKyAgICAgICAgICBicm93c2VyLnJlZmxlY3RMb2NrbGF5b3V0Q2hhbmdlKGRvY2tlcik7Cisg ICAgICAgIH0pOworICAgICAgfQorICAgIH0sIDUwMCk7CisgIH0sCisKKyAgcmVmbGVjdExvY2ts YXlvdXRDaGFuZ2U6IGZ1bmN0aW9uKGRvY2tlcikgeworICAgIGxldCBicm93c2VyID0gd2luZG93 Lm9wZW5lciA/CisgICAgICB3aW5kb3cub3BlbmVyLnBnQWRtaW4uQnJvd3NlciA6IHdpbmRvdy50 b3AucGdBZG1pbi5Ccm93c2VyOworCisgICAgbGV0IGJyb3dzZXJQcmVmID0gYnJvd3Nlci5nZXRf cHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOworICAgIGJyb3dzZXIubG9ja19sYXlv dXQoZG9ja2VyLCBicm93c2VyUHJlZi5sb2NrX2xheW91dCk7CisgIH0sCisKKyAgbG9ja19sYXlv dXQ6IGZ1bmN0aW9uKGRvY2tlciwgb3ApIHsKKyAgICBsZXQgbWVudV9pdGVtcyA9IHRoaXMubWVu dXNbJ2ZpbGUnXVsnbW51X2xvY2tsYXlvdXQnXVsnbWVudV9pdGVtcyddOworCisgICAgc3dpdGNo KG9wKSB7CisgICAgY2FzZSB0aGlzLmxvY2tfbGF5b3V0X2xldmVscy5QUkVWRU5UX0RPQ0tJTkc6 CisgICAgICBkb2NrZXIubG9ja0xheW91dCh3Y0RvY2tlci5MT0NLX0xBWU9VVF9MRVZFTC5QUkVW RU5UX0RPQ0tJTkcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSB0aGlzLmxvY2tfbGF5b3V0X2xl dmVscy5GVUxMOgorICAgICAgZG9ja2VyLmxvY2tMYXlvdXQod2NEb2NrZXIuTE9DS19MQVlPVVRf TEVWRUwuRlVMTCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIHRoaXMubG9ja19sYXlvdXRfbGV2 ZWxzLk5PTkU6CisgICAgICBkb2NrZXIubG9ja0xheW91dCh3Y0RvY2tlci5MT0NLX0xBWU9VVF9M RVZFTC5OT05FKTsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIF8uZWFjaChtZW51X2l0ZW1z LCBmdW5jdGlvbihtZW51X2l0ZW0pIHsKKyAgICAgIGlmKG1lbnVfaXRlbS5uYW1lICE9ICgnbW51 X2xvY2tfJytvcCkpIHsKKyAgICAgICAgbWVudV9pdGVtLmNoYW5nZV9jaGVja2VkKGZhbHNlKTsK KyAgICAgIH0gZWxzZSB7CisgICAgICAgIG1lbnVfaXRlbS5jaGFuZ2VfY2hlY2tlZCh0cnVlKTsK KyAgICAgIH0KKyAgICB9KTsKKyAgfSwKKworICBzYXZlX2xvY2tfbGF5b3V0OiBmdW5jdGlvbihv cCkgeworICAgIGxldCBicm93c2VyID0gd2luZG93Lm9wZW5lciA/CisgICAgICB3aW5kb3cub3Bl bmVyLnBnQWRtaW4uQnJvd3NlciA6IHdpbmRvdy50b3AucGdBZG1pbi5Ccm93c2VyOworCisgICAg JC5hamF4KHsKKyAgICAgIHVybDogdXJsX2ZvcignYnJvd3Nlci5sb2NrX2xheW91dCcpLAorICAg ICAgbWV0aG9kOiAnUFVUJywKKyAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbics CisgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7CisgICAgICAgICd2YWx1ZSc6IG9wLAorICAg ICAgfSksCisgICAgfSkuZG9uZShmdW5jdGlvbigpIHsKKyAgICAgIGJyb3dzZXIuY2FjaGVfcHJl ZmVyZW5jZXMoJ2Jyb3dzZXInKTsKKyAgICB9KS5mYWlsKGZ1bmN0aW9uKHhociwgZXJyb3IpIHsK KyAgICAgIEFsZXJ0aWZ5LnBnTm90aWZpZXIoZXJyb3IsIHhociwgZ2V0dGV4dCgnRmFpbGVkIHRv IHNhdmUgbG9jayBsYXlvdXQgc2V0dGluZy4nKSk7CisgICAgfSk7CisgIH0sCisKKyAgbW51X2xv Y2tfZG9ja2luZzogZnVuY3Rpb24oKSB7CisgICAgdGhpcy5sb2NrX2xheW91dCh0aGlzLmRvY2tl ciwgdGhpcy5sb2NrX2xheW91dF9sZXZlbHMuUFJFVkVOVF9ET0NLSU5HKTsKKyAgICB0aGlzLnNh dmVfbG9ja19sYXlvdXQodGhpcy5sb2NrX2xheW91dF9sZXZlbHMuUFJFVkVOVF9ET0NLSU5HKTsK KyAgfSwKKworICBtbnVfbG9ja19mdWxsOiBmdW5jdGlvbigpIHsKKyAgICB0aGlzLmxvY2tfbGF5 b3V0KHRoaXMuZG9ja2VyLCB0aGlzLmxvY2tfbGF5b3V0X2xldmVscy5GVUxMKTsKKyAgICB0aGlz LnNhdmVfbG9ja19sYXlvdXQodGhpcy5sb2NrX2xheW91dF9sZXZlbHMuRlVMTCk7CisgIH0sCisK KyAgbW51X2xvY2tfbm9uZTogZnVuY3Rpb24oKSB7CisgICAgdGhpcy5sb2NrX2xheW91dCh0aGlz LmRvY2tlciwgdGhpcy5sb2NrX2xheW91dF9sZXZlbHMuTk9ORSk7CisgICAgdGhpcy5zYXZlX2xv Y2tfbGF5b3V0KHRoaXMubG9ja19sYXlvdXRfbGV2ZWxzLk5PTkUpOworICB9LAorfSk7CisKK2V4 cG9ydCB7cGdCcm93c2VyfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGlj L2pzL21lbnUuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9tZW51LmpzCmluZGV4 IGY4YzAxOGRjLi5lNzZjOWVkMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0 aWMvanMvbWVudS5qcworKysgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9tZW51Lmpz CkBAIC0xOSw2ICsxOSw3IEBAIGRlZmluZShbCiAgICAgdmFyIG1lbnVfb3B0cyA9IFsKICAgICAg ICAgJ25hbWUnLCAnbGFiZWwnLCAncHJpb3JpdHknLCAnbW9kdWxlJywgJ2NhbGxiYWNrJywgJ2Rh dGEnLCAnZW5hYmxlJywKICAgICAgICAgJ2NhdGVnb3J5JywgJ3RhcmdldCcsICd1cmwnIC8qIERv IG5vdCBzaG93IGljb24gaW4gdGhlIG1lbnVzLCAnaWNvbicgKi8gLCAnbm9kZScsCisgICAgICAg ICdjaGVja2VkJywgJ21lbnVfaXRlbXMnLAogICAgICAgXSwKICAgICAgIGRlZmF1bHRzID0gewog ICAgICAgICB1cmw6ICcjJywKQEAgLTU1LDMxICs1Niw0OCBAQCBkZWZpbmUoWwogICAgICAqIENy ZWF0ZSB0aGUganF1ZXJ5IGVsZW1lbnQgZm9yIHRoZSBtZW51LWl0ZW0uCiAgICAgICovCiAgICAg Y3JlYXRlX2VsOiBmdW5jdGlvbihub2RlLCBpdGVtKSB7Ci0gICAgICB2YXIgdXJsID0gJCgnPGE+ PC9hPicsIHsKLSAgICAgICAgJ2lkJzogdGhpcy5uYW1lLAotICAgICAgICAnaHJlZic6IHRoaXMu dXJsLAotICAgICAgICAndGFyZ2V0JzogdGhpcy50YXJnZXQsCi0gICAgICAgICdkYXRhLXRvZ2ds ZSc6ICdwZy1tZW51JywKLSAgICAgIH0pLmRhdGEoJ3BnTWVudScsIHsKLSAgICAgICAgbW9kdWxl OiB0aGlzLm1vZHVsZSB8fCBwZ0FkbWluLkJyb3dzZXIsCi0gICAgICAgIGNiOiB0aGlzLmNhbGxi YWNrLAotICAgICAgICBkYXRhOiB0aGlzLmRhdGEsCi0gICAgICB9KS5hZGRDbGFzcygnZHJvcGRv d24taXRlbScpOwogCi0gICAgICB0aGlzLmlzX2Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZChub2Rl LCBpdGVtKTsKLSAgICAgIGlmICh0aGlzLmljb24pIHsKLSAgICAgICAgdXJsLmFwcGVuZCgkKCc8 aT48L2k+JywgewotICAgICAgICAgICdjbGFzcyc6IHRoaXMuaWNvbiwKLSAgICAgICAgfSkpOwot ICAgICAgfQorICAgICAgaWYodGhpcy5tZW51X2l0ZW1zKSB7CisgICAgICAgIF8uZWFjaCh0aGlz Lm1lbnVfaXRlbXMsIGZ1bmN0aW9uKHN1Ym1lbnVfaXRlbSl7CisgICAgICAgICAgc3VibWVudV9p dGVtLmdlbmVyYXRlKG5vZGUsIGl0ZW0pOworICAgICAgICB9KTsKKyAgICAgICAgdmFyIGNyZWF0 ZV9zdWJtZW51ID0gcGdBZG1pbi5Ccm93c2VyLk1lbnVHcm91cCh7CisgICAgICAgICAgJ2xhYmVs JzogdGhpcy5sYWJlbCwKKyAgICAgICAgICAnaWQnOiB0aGlzLm5hbWUsCisgICAgICAgIH0sIHRo aXMubWVudV9pdGVtcyk7CisgICAgICAgIHRoaXMuJGVsID0gY3JlYXRlX3N1Ym1lbnUuJGVsOwor ICAgICAgfSBlbHNlIHsKKyAgICAgICAgdmFyIHVybCA9ICQoJzxhPjwvYT4nLCB7CisgICAgICAg ICAgJ2lkJzogdGhpcy5uYW1lLAorICAgICAgICAgICdocmVmJzogdGhpcy51cmwsCisgICAgICAg ICAgJ3RhcmdldCc6IHRoaXMudGFyZ2V0LAorICAgICAgICAgICdkYXRhLXRvZ2dsZSc6ICdwZy1t ZW51JywKKyAgICAgICAgfSkuZGF0YSgncGdNZW51JywgeworICAgICAgICAgIG1vZHVsZTogdGhp cy5tb2R1bGUgfHwgcGdBZG1pbi5Ccm93c2VyLAorICAgICAgICAgIGNiOiB0aGlzLmNhbGxiYWNr LAorICAgICAgICAgIGRhdGE6IHRoaXMuZGF0YSwKKyAgICAgICAgfSkuYWRkQ2xhc3MoJ2Ryb3Bk b3duLWl0ZW0nKTsKKworICAgICAgICB0aGlzLmlzX2Rpc2FibGVkID0gdGhpcy5kaXNhYmxlZChu b2RlLCBpdGVtKTsKKyAgICAgICAgaWYgKHRoaXMuaWNvbikgeworICAgICAgICAgIHVybC5hcHBl bmQoJCgnPGk+PC9pPicsIHsKKyAgICAgICAgICAgICdjbGFzcyc6IHRoaXMuaWNvbiwKKyAgICAg ICAgICB9KSk7CisgICAgICAgIH0gZWxzZSBpZighXy5pc1VuZGVmaW5lZCh0aGlzLmNoZWNrZWQp KSB7CisgICAgICAgICAgdXJsLmFwcGVuZCgkKCc8aT48L2k+JywgeworICAgICAgICAgICAgJ2Ns YXNzJzogJ2ZhIGZhLWNoZWNrICcrICh0aGlzLmNoZWNrZWQ/Jyc6J3Zpc2liaWxpdHktaGlkZGVu JyksCisgICAgICAgICAgfSkpOworICAgICAgICB9CiAKLSAgICAgIHVybC5hZGRDbGFzcygodGhp cy5pc19kaXNhYmxlZCA/ICcgZGlzYWJsZWQnIDogJycpKTsKKyAgICAgICAgdXJsLmFkZENsYXNz KCh0aGlzLmlzX2Rpc2FibGVkID8gJyBkaXNhYmxlZCcgOiAnJykpOwogCi0gICAgICB2YXIgdGV4 dFNwYW4gPSAkKCc8c3BhbiBkYXRhLXRlc3Q9Im1lbnUtaXRlbS10ZXh0Ij48L3NwYW4+JykudGV4 dCgnICAnICsgdGhpcy5sYWJlbCk7CisgICAgICAgIHZhciB0ZXh0U3BhbiA9ICQoJzxzcGFuIGRh dGEtdGVzdD0ibWVudS1pdGVtLXRleHQiPjwvc3Bhbj4nKS50ZXh0KCcgICcgKyB0aGlzLmxhYmVs KTsKIAotICAgICAgdXJsLmFwcGVuZCh0ZXh0U3Bhbik7CisgICAgICAgIHVybC5hcHBlbmQodGV4 dFNwYW4pOworCisgICAgICAgIHRoaXMuJGVsID0gJCgnPGxpLz4nKS5hcHBlbmQodXJsKTsKKyAg ICAgIH0KIAotICAgICAgdGhpcy4kZWwgPSAkKCc8bGkvPicpLmFwcGVuZCh1cmwpOwogICAgIH0s CiAgICAgLyoKICAgICAgKiBVcGRhdGVzIHRoZSBlbmFibGUvZGlzYWJsZSBzdGF0ZSBvZiB0aGUg bWVudS1pdGVtIGJhc2VkIG9uIHRoZSBjdXJyZW50CkBAIC0xNTQsNiArMTcyLDIwIEBAIGRlZmlu ZShbCiAKICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LAorCisgICAgLyoKKyAgICAgKiBDaGFu Z2UgdGhlIGNoZWNrZWQgdmFsdWUgYW5kIHVwZGF0ZSB0aGUgY2hlY2tlZCBpY29uIG9uIHRoZSBt ZW51CisgICAgICovCisgICAgY2hhbmdlX2NoZWNrZWQoaXNDaGVja2VkKSB7CisgICAgICBpZigh Xy5pc1VuZGVmaW5lZCh0aGlzLmNoZWNrZWQpKSB7CisgICAgICAgIHRoaXMuY2hlY2tlZCA9IGlz Q2hlY2tlZDsKKyAgICAgICAgaWYodGhpcy5jaGVja2VkKSB7CisgICAgICAgICAgdGhpcy4kZWwu ZmluZCgnLmZhLWNoZWNrJykucmVtb3ZlQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgdGhpcy4kZWwuZmluZCgnLmZhLWNoZWNrJykuYWRkQ2xh c3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAogICB9 KTsKIAogICAvKgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJv d3Nlci9qcy91dGlscy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIv anMvdXRpbHMuanMKaW5kZXggY2VmZTlhZTcuLjk5ZDc5NWJjIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9icm93c2VyL3RlbXBsYXRlcy9icm93c2VyL2pzL3V0aWxzLmpzCisrKyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvdXRpbHMuanMKQEAgLTcsNiArNywzMiBA QAogLy8KIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCiAKK3slIG1hY3JvIEFfTUVOVV9JVEVNKGtleSwgaXRlbSkgLSV9Cit7Cisg IG5hbWU6ICJ7eyBpdGVtLm5hbWUgfX0iLAorICB7JSBpZiBpdGVtLm1vZHVsZSAlfW1vZHVsZTog e3sgaXRlbS5tb2R1bGUgfX0sCisgIHslIGVuZGlmICV9eyUgaWYgaXRlbS51cmwgJX11cmw6ICJ7 eyBpdGVtLnVybCB9fSIsCisgIHslIGVuZGlmICV9eyUgaWYgaXRlbS50YXJnZXQgJX10YXJnZXQ6 ICJ7eyBpdGVtLnRhcmdldCB9fSIsCisgIHslIGVuZGlmICV9eyUgaWYgaXRlbS5jYWxsYmFjayAl fWNhbGxiYWNrOiAie3sgaXRlbS5jYWxsYmFjayB9fSIsCisgIHslIGVuZGlmICV9eyUgaWYgaXRl bS5jYXRlZ29yeSAlfWNhdGVnb3J5OiAie3sgaXRlbS5jYXRlZ29yeSB9fSIsCisgIHslIGVuZGlm ICV9eyUgaWYgaXRlbS5pY29uICV9aWNvbjogJ3t7IGl0ZW0uaWNvbiB9fScsCisgIHslIGVuZGlm ICV9eyUgaWYgaXRlbS5kYXRhICV9ZGF0YToge3sgaXRlbS5kYXRhIH19LAorICB7JSBlbmRpZiAl fWxhYmVsOiAne3sgaXRlbS5sYWJlbCB9fScsIGFwcGxpZXM6IFsne3sga2V5Lmxvd2VyKCkgfX0n XSwKKyAgcHJpb3JpdHk6IHt7IGl0ZW0ucHJpb3JpdHkgfX0sCisgIGVuYWJsZTogJ3t7IGl0ZW0u ZW5hYmxlIH19JywKKyAgeyUgaWYgaXRlbS5jaGVja2VkIGlzIGRlZmluZWQgJX1jaGVja2VkOiB7 JSBpZiBpdGVtLmNoZWNrZWQgJX10cnVleyUgZWxzZSAlfWZhbHNleyUgZW5kaWYgJX0sCisgIHsl IGVuZGlmICV9CisgIHslIGlmIGl0ZW0ubWVudV9pdGVtcyAlfW1lbnVfaXRlbXM6IHt7TUVOVV9J VEVNUyhrZXksIGl0ZW0ubWVudV9pdGVtcyl9fQorICB7JSBlbmRpZiAlfQorfQoreyUtIGVuZG1h Y3JvICV9CisKK3slIG1hY3JvIE1FTlVfSVRFTVMoa2V5LCBpdGVtcykgLSV9CitbCisgIHslIGZv ciBpdGVtIGluIGl0ZW1zICV9eyUgaWYgbG9vcC5pbmRleCAhPSAxICV9LCB7JSBlbmRpZiAlfQor ICAgIHt7IEFfTUVOVV9JVEVNKGtleSwgaXRlbSkgfX17JSBzZXQgaGFzTWVudXMgPSBUcnVlICV9 eyUgZW5kZm9yICV9CitdCit7JS0gZW5kbWFjcm8gJX0KIAogZGVmaW5lKCdwZ2FkbWluLmJyb3dz ZXIudXRpbHMnLAogICBbJ3NvdXJjZXMvcGdhZG1pbiddLCBmdW5jdGlvbihwZ0FkbWluKSB7CkBA IC01NiwxOSArODIsNyBAQCBkZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAgICAgICB2 YXIgc2VsZiA9IHRoaXM7CiAgICAgICBpZiAodGhpcy5jb3VudGVyLnRvdGFsID09IHRoaXMuY291 bnRlci5sb2FkZWQpIHsKICAgICAgICAgeyUgZm9yIGtleSBpbiAoJ0ZpbGUnLCAnRWRpdCcsICdP YmplY3QnICdUb29scycsICdNYW5hZ2VtZW50JywgJ0hlbHAnKSAlfQotICAgICAgICBvYmouYWRk X21lbnVzKFt7JSBmb3IgaXRlbSBpbiBjdXJyZW50X2FwcC5tZW51X2l0ZW1zWyclc19pdGVtcycg JSBrZXkubG93ZXIoKV0gJX17JSBpZiBsb29wLmluZGV4ICE9IDEgJX0sIHslIGVuZGlmICV9ewot ICAgICAgICAgIG5hbWU6ICJ7eyBpdGVtLm5hbWUgfX0iLAotICAgICAgICAgIHslIGlmIGl0ZW0u bW9kdWxlICV9bW9kdWxlOiB7eyBpdGVtLm1vZHVsZSB9fSwKLSAgICAgICAgICB7JSBlbmRpZiAl fXslIGlmIGl0ZW0udXJsICV9dXJsOiAie3sgaXRlbS51cmwgfX0iLAotICAgICAgICAgIHslIGVu ZGlmICV9eyUgaWYgaXRlbS50YXJnZXQgJX10YXJnZXQ6ICJ7eyBpdGVtLnRhcmdldCB9fSIsCi0g ICAgICAgICAgeyUgZW5kaWYgJX17JSBpZiBpdGVtLmNhbGxiYWNrICV9Y2FsbGJhY2s6ICJ7eyBp dGVtLmNhbGxiYWNrIH19IiwKLSAgICAgICAgICB7JSBlbmRpZiAlfXslIGlmIGl0ZW0uY2F0ZWdv cnkgJX1jYXRlZ29yeTogInt7IGl0ZW0uY2F0ZWdvcnkgfX0iLAotICAgICAgICAgIHslIGVuZGlm ICV9eyUgaWYgaXRlbS5pY29uICV9aWNvbjogJ3t7IGl0ZW0uaWNvbiB9fScsCi0gICAgICAgICAg eyUgZW5kaWYgJX17JSBpZiBpdGVtLmRhdGEgJX1kYXRhOiB7eyBpdGVtLmRhdGEgfX0sCi0gICAg ICAgICAgeyUgZW5kaWYgJX1sYWJlbDogJ3t7IGl0ZW0ubGFiZWwgfX0nLCBhcHBsaWVzOiBbJ3t7 IGtleS5sb3dlcigpIH19J10sCi0gICAgICAgICAgcHJpb3JpdHk6IHt7IGl0ZW0ucHJpb3JpdHkg fX0sCi0gICAgICAgICAgZW5hYmxlOiAne3sgaXRlbS5lbmFibGUgfX0nCi0gICAgICAgIH17JSBz ZXQgaGFzTWVudXMgPSBUcnVlICV9eyUgZW5kZm9yICV9XSk7CisgICAgICAgIG9iai5hZGRfbWVu dXMoe3sgTUVOVV9JVEVNUyhrZXksIGN1cnJlbnRfYXBwLm1lbnVfaXRlbXNbJyVzX2l0ZW1zJyAl IGtleS5sb3dlcigpXSl9fSk7CiAgICAgICAgIHslIGVuZGZvciAlfQogICAgICAgICBvYmouY3Jl YXRlX21lbnVzKCk7CiAgICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vcHJl ZmVyZW5jZXMvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi9wcmVmZXJlbmNlcy9fX2luaXRfXy5w eQppbmRleCBiYmU5NjkzYi4uNDQ3MzIxNzEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3ByZWZl cmVuY2VzL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2FkbWluL3ByZWZlcmVuY2VzL19faW5pdF9f LnB5CkBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIFByZWZlcmVuY2VzTW9kdWxlKFBnQWRtaW5Nb2R1 bGUpOgogICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgJ2ZpbGVfaXRlbXMnOiBbCiAgICAg ICAgICAgICAgICAgTWVudUl0ZW0obmFtZT0nbW51X3ByZWZlcmVuY2VzJywKLSAgICAgICAgICAg ICAgICAgICAgICAgICBwcmlvcml0eT05OTksCisgICAgICAgICAgICAgICAgICAgICAgICAgcHJp b3JpdHk9OTk3LAogICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZT0icGdBZG1pbi5QcmVm ZXJlbmNlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9J3Nob3cnLAogICAg ICAgICAgICAgICAgICAgICAgICAgIGljb249J2ZhIGZhLWNvZycsCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9wcmVmZXJlbmNlcy9zdGF0aWMvanMvcHJlZmVyZW5jZXMuanMgYi93ZWIvcGdhZG1p bi9wcmVmZXJlbmNlcy9zdGF0aWMvanMvcHJlZmVyZW5jZXMuanMKaW5kZXggNTEzZTMzODEuLmIw NDdiMTNhIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9wcmVmZXJlbmNlcy9zdGF0aWMvanMvcHJl ZmVyZW5jZXMuanMKKysrIGIvd2ViL3BnYWRtaW4vcHJlZmVyZW5jZXMvc3RhdGljL2pzL3ByZWZl cmVuY2VzLmpzCkBAIC0yNzEsNiArMjcxLDggQEAgZGVmaW5lKCdwZ2FkbWluLnByZWZlcmVuY2Vz JywgWwogICAgICAgICAgICAgICByZXR1cm4gJ3N3aXRjaCc7CiAgICAgICAgICAgICBjYXNlICdr ZXlib2FyZHNob3J0Y3V0JzoKICAgICAgICAgICAgICAgcmV0dXJuICdrZXlib2FyZFNob3J0Y3V0 JzsKKyAgICAgICAgICAgIGNhc2UgJ3JhZGlvTW9kZXJuJzoKKyAgICAgICAgICAgICAgcmV0dXJu ICdyYWRpb01vZGVybic7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICBpZiAo Y29uc29sZSAmJiBjb25zb2xlLndhcm4pIHsKICAgICAgICAgICAgICAgICAvLyBXYXJuaW5nIGZv ciBkZXZlbG9wZXIgb25seS4KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3NldHRpbmdzL19faW5p dF9fLnB5IGIvd2ViL3BnYWRtaW4vc2V0dGluZ3MvX19pbml0X18ucHkKaW5kZXggZmQ3OTYzNGUu LmI4NGE1MDcyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zZXR0aW5ncy9fX2luaXRfXy5weQor KysgYi93ZWIvcGdhZG1pbi9zZXR0aW5ncy9fX2luaXRfXy5weQpAQCAtMzksNyArMzksNyBAQCBj bGFzcyBTZXR0aW5nc01vZHVsZShQZ0FkbWluTW9kdWxlKToKICAgICAgICAgICAgICdmaWxlX2l0 ZW1zJzogWwogICAgICAgICAgICAgICAgIE1lbnVJdGVtKAogICAgICAgICAgICAgICAgICAgICBu YW1lPSdtbnVfcmVzZXRsYXlvdXQnLAotICAgICAgICAgICAgICAgICAgICBwcmlvcml0eT05OTks CisgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PTk5OCwKICAgICAgICAgICAgICAgICAgICAg bW9kdWxlPSJwZ0FkbWluLlNldHRpbmdzIiwKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s9 J3Nob3cnLAogICAgICAgICAgICAgICAgICAgICBpY29uPSdmYSBmYS1yZXR3ZWV0JywKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9iYWNrZm9ybS5wZ2FkbWluLmpzIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL2JhY2tmb3JtLnBnYWRtaW4uanMKaW5kZXggMmE4NzkyYjIuLmI5N2Zj MzgwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5q cworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYmFja2Zvcm0ucGdhZG1pbi5qcwpAQCAtNjAs NiArNjAsNyBAQCBkZWZpbmUoWwogICAgICdzZWxlY3QyJzogJ3NlbGVjdDInLAogICAgICdub3Rl JzogJ25vdGUnLAogICAgICdjb2xvcic6ICdjb2xvcicsCisgICAgJ3JhZGlvTW9kZXJuJzogJ3Jh ZGlvTW9kZXJuJywKICAgfTsKIAogICBCYWNrZm9ybS5nZXRNYXBwZWRDb250cm9sID0gZnVuY3Rp b24odHlwZSwgbW9kZSkgewpAQCAtOTUsNiArOTYsMTcgQEAgZGVmaW5lKFsKICAgICByZXR1cm4g dHlwZTsKICAgfTsKIAorICAvKiBSZXR1cm5zIHJhdyBkYXRhIGFzIGl0IGlzICovCisgIHZhciBS YXdGb3JtYXR0ZXIgPSBCYWNrZm9ybS5SYXdGb3JtYXR0ZXIgPSBmdW5jdGlvbigpIHt9OworICBf LmV4dGVuZChSYXdGb3JtYXR0ZXIucHJvdG90eXBlLCB7CisgICAgZnJvbVJhdzogZnVuY3Rpb24o cmF3RGF0YSkgeworICAgICAgcmV0dXJuIHJhd0RhdGE7CisgICAgfSwKKyAgICB0b1JhdzogZnVu Y3Rpb24oZm9ybWF0dGVkRGF0YSkgeworICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGE7CisgICAg fSwKKyAgfSk7CisKIAogICB2YXIgQmFja2Zvcm1Db250cm9sSW5pdCA9IEJhY2tmb3JtLkNvbnRy b2wucHJvdG90eXBlLmluaXRpYWxpemUsCiAgICAgQmFja2Zvcm1Db250cm9sUmVtb3ZlID0gQmFj a2Zvcm0uQ29udHJvbC5wcm90b3R5cGUucmVtb3ZlOwpAQCAtNDIyLDYgKzQzNCw0OCBAQCBkZWZp bmUoWwogICAgICAgfSwKICAgICB9KTsKIAorCisgIEJhY2tmb3JtLlJhZGlvTW9kZXJuQ29udHJv bCA9IEJhY2tmb3JtLlJhZGlvQ29udHJvbC5leHRlbmQoeworICAgIGRlZmF1bHRzOiB7CisgICAg ICBjb250cm9sTGFiZWxDbGFzc05hbWU6IEJhY2tmb3JtLmNvbnRyb2xMYWJlbENsYXNzTmFtZSwK KyAgICAgIGNvbnRyb2xzQ2xhc3NOYW1lOiBCYWNrZm9ybS5jb250cm9sc0NsYXNzTmFtZSwKKyAg ICAgIGV4dHJhQ2xhc3NlczogW10sCisgICAgICBoZWxwTWVzc2FnZTogJycsCisgICAgICBuYW1l OiAnJywKKyAgICB9LAorICAgIHRlbXBsYXRlOiBfLnRlbXBsYXRlKFsKKyAgICAgICc8bGFiZWwg Y2xhc3M9IjwlPWNvbnRyb2xMYWJlbENsYXNzTmFtZSU+Ij48JT1sYWJlbCU+PC9sYWJlbD4nLAor ICAgICAgJzxkaXYgY2xhc3M9IjwlPWNvbnRyb2xzQ2xhc3NOYW1lJT4gPCU9ZXh0cmFDbGFzc2Vz LmpvaW4oXCcgXCcpJT4iPicsCisgICAgICAnIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBwZ2FkbWlu LWNvbnRyb2xzLXJhZGlvLW5vbmUiICBkYXRhLXRvZ2dsZT0iYnV0dG9ucyI+JywKKyAgICAgICcg IDwlIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHsgJT4nLAorICAgICAg JyAgPCUgdmFyIG9wdGlvbiA9IG9wdGlvbnNbaV07ICU+JywKKyAgICAgICcgIDxsYWJlbCBjbGFz cz0iYnRuIGJ0bi1wcmltYXJ5PCUgaWYgKG9wdGlvbi52YWx1ZSA9PSB2YWx1ZSkgeyAlPiBhY3Rp dmU8JX0lPiIgdGFiaW5kZXg9IjAiPicsCisgICAgICAnICAgPGlucHV0IHR5cGU9InJhZGlvIiBu YW1lPSI8JT1uYW1lJT4iIGF1dG9jb21wbGV0ZT0ib2ZmIiB2YWx1ZT08JS1mb3JtYXR0ZXIuZnJv bVJhdyhvcHRpb24udmFsdWUpJT4gPCUgaWYgKG9wdGlvbi52YWx1ZSA9PSB2YWx1ZSkgeyAlPiBj aGVja2VkPCV9JT4gPiA8JS1vcHRpb24ubGFiZWwlPicsCisgICAgICAnICA8L2xhYmVsPicsCisg ICAgICAnICA8JSB9ICU+JywKKyAgICAgICcgPC9kaXY+JywKKyAgICAgICcgPCUgaWYgKGhlbHBN ZXNzYWdlICYmIGhlbHBNZXNzYWdlLmxlbmd0aCkgeyAlPicsCisgICAgICAnICA8c3BhbiBjbGFz cz0iPCU9QmFja2Zvcm0uaGVscE1lc3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3NhZ2UlPjwv c3Bhbj4nLAorICAgICAgJyA8JSB9ICU+JywKKyAgICAgICc8L2Rpdj4nLAorICAgIF0uam9pbign XG4nKSksCisgICAgZm9ybWF0dGVyOiBSYXdGb3JtYXR0ZXIsCisgICAgZ2V0VmFsdWVGcm9tRE9N OiBmdW5jdGlvbigpIHsKKyAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlci50b1Jhdyh0aGlzLiRl bC5maW5kKCdpbnB1dFt0eXBlPSJyYWRpbyJdOmNoZWNrZWQnKS5hdHRyKCd2YWx1ZScpLCB0aGlz Lm1vZGVsKTsKKyAgICB9LAorICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7CisgICAgICBCYWNrZm9y bS5SYWRpb0NvbnRyb2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwor ICAgICAgdGhpcy4kZWwuZmluZCgnLmJ0bicpLm9uKCdrZXl1cCcsIChlKT0+eworICAgICAgICBz d2l0Y2goZS5rZXlDb2RlKSB7CisgICAgICAgIGNhc2UgMzI6IC8qIFNwYWNlYmFyIGNsaWNrICov CisgICAgICAgICAgJChlLmN1cnJlbnRUYXJnZXQpLnRyaWdnZXIoJ2NsaWNrJyk7CisgICAgICAg ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0pOworICAgICAgcmV0dXJuIHRoaXM7CisgICAg fSwKKyAgfSk7CisKICAgLy8gUmVxdWlyZXMgdGhlIEJvb3RzdHJhcCBTd2l0Y2ggdG8gd29yay4K ICAgQmFja2Zvcm0uU3dpdGNoQ29udHJvbCA9IEJhY2tmb3JtLklucHV0Q29udHJvbC5leHRlbmQo ewogICAgIGRlZmF1bHRzOiB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvc2Nzcy9f Ym9vdHN0cmFwLm92ZXJyaWRlcy5zY3NzIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2Jvb3Rz dHJhcC5vdmVycmlkZXMuc2NzcwppbmRleCBlZDE2ZWM4Mi4uNTVmYzVhZmEgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3N0YXRpYy9zY3NzL19ib290c3RyYXAub3ZlcnJpZGVzLnNjc3MKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2Jvb3RzdHJhcC5vdmVycmlkZXMuc2NzcwpAQCAtMzEw LDMgKzMxMCw4IEBAIHRkLnN3aXRjaC1jZWxsID4gZGl2LnRvZ2dsZSB7CiAuYnRuLmRpc2FibGVk LCAuYnRuOmRpc2FibGVkLCAuYnRuW2Rpc2FibGVkXSB7CiAgIG9wYWNpdHk6ICRidG4tZGlzYWJs ZWQtb3BhY2l0eTsKIH0KKworLmJ0bi1ncm91cCBsYWJlbC5idG4uYnRuLXByaW1hcnkuYWN0aXZl IHsKKyAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLXByaW1hcnktbGlnaHQ7CisgIGNvbG9yOiAk Y29sb3ItcHJpbWFyeTsKK30KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5h bmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5h bmNlL3N0YXRpYy9qcy9tYWludGVuYW5jZS5qcwppbmRleCAyMzExYjUwNi4uYWJlODcwMWUgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9qcy9tYWludGVu YW5jZS5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvanMvbWFp bnRlbmFuY2UuanMKQEAgLTUxLDggKzUxLDExIEBAIGRlZmluZShbCiAgICAgICBpZDogJ29wJywK ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdNYWludGVuYW5jZSBvcGVyYXRpb24nKSwKICAgICAgIGNl bGw6ICdzdHJpbmcnLAotICAgICAgdHlwZTogJ3RleHQnLAorICAgICAgdHlwZTogJ3JhZGlvTW9k ZXJuJywKKyAgICAgIGNvbnRyb2xzQ2xhc3NOYW1lOiAncGdhZG1pbi1jb250cm9scyBjb2wtMTIg Y29sLXNtLTgnLAorICAgICAgY29udHJvbExhYmVsQ2xhc3NOYW1lOiAnY29udHJvbC1sYWJlbCBj b2wtc20tNCBjb2wtMTInLAogICAgICAgZ3JvdXA6IGdldHRleHQoJ09wdGlvbnMnKSwKKyAgICAg IHZhbHVlOiAnVkFDVVVNJywKICAgICAgIG9wdGlvbnM6IFt7CiAgICAgICAgICdsYWJlbCc6ICdW QUNVVU0nLAogICAgICAgICAndmFsdWUnOiAnVkFDVVVNJywKQEAgLTcwLDMwICs3Myw2IEBAIGRl ZmluZShbCiAgICAgICAgICd2YWx1ZSc6ICdDTFVTVEVSJywKICAgICAgIH0sCiAgICAgICBdLAot ICAgICAgY29udHJvbDogQmFja2Zvcm0uUmFkaW9Db250cm9sLmV4dGVuZCh7Ci0gICAgICAgIHRl bXBsYXRlOiBfLnRlbXBsYXRlKFsKLSAgICAgICAgICAnPGxhYmVsIGNsYXNzPSJjb250cm9sLWxh YmVsIGNvbC1zbS00IGNvbC0xMiI+PCU9bGFiZWwlPjwvbGFiZWw+JywKLSAgICAgICAgICAnPGRp diBjbGFzcz0icGdhZG1pbi1jb250cm9scyBjb2wtMTIgY29sLXNtLTggYnRuLWdyb3VwIHBnLW1h aW50ZW5hbmNlLW9wIHBnYWRtaW4tY29udHJvbHMtcmFkaW8tbm9uZSIgZGF0YS10b2dnbGU9ImJ1 dHRvbnMiPicsCi0gICAgICAgICAgJyA8JSBmb3IgKHZhciBpPTA7IGkgPCBvcHRpb25zLmxlbmd0 aDsgaSsrKSB7ICU+JywKLSAgICAgICAgICAnIDwlIHZhciBvcHRpb24gPSBvcHRpb25zW2ldOyAl PicsCi0gICAgICAgICAgJyA8bGFiZWwgY2xhc3M9ImJ0biBidG4tcHJpbWFyeTwlIGlmIChpID09 IDApIHsgJT4gYWN0aXZlPCV9JT4iIHRhYmluZGV4PSIwIj4nLAotICAgICAgICAgICcgIDxpbnB1 dCB0eXBlPSJyYWRpbyIgbmFtZT0ib3AiIGlkPSJvcCIgYXV0b2NvbXBsZXRlPSJvZmYiIHZhbHVl PTwlLWZvcm1hdHRlci5mcm9tUmF3KG9wdGlvbi52YWx1ZSklPjwlIGlmIChpID09IDApIHsgJT4g c2VsZWN0ZWQ8JX0lPiA+IDwlLW9wdGlvbi5sYWJlbCU+JywKLSAgICAgICAgICAnIDwvbGFiZWw+ JywKLSAgICAgICAgICAnIDwlIH0gJT4nLAotICAgICAgICAgICc8L2Rpdj4nLAotICAgICAgICBd LmpvaW4oJ1xuJykpLAotICAgICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIEJh Y2tmb3JtLlJhZGlvQ29udHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHRoaXMsIGFyZ3VtZW50 cyk7Ci0gICAgICAgICAgdGhpcy4kZWwuZmluZCgnLnBnLW1haW50ZW5hbmNlLW9wIC5idG4nKS5v bigna2V5dXAnLCAoZSk9PnsKLSAgICAgICAgICAgIHN3aXRjaChlLmtleUNvZGUpIHsKLSAgICAg ICAgICAgIGNhc2UgMzI6IC8qIFNwYWNlYmFyIGNsaWNrICovCi0gICAgICAgICAgICAgICQoZS5j dXJyZW50VGFyZ2V0KS50cmlnZ2VyKCdjbGljaycpOwotICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgICAgICByZXR1cm4gdGhpczsKLSAgICAg ICAgfSwKLSAgICAgIH0pLAogICAgIH0sCiAgICAgewogICAgICAgdHlwZTogJ25lc3RlZCcsCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9tYWludGVuYW5jZS9zdGF0aWMvc2Nzcy9fbWFp bnRlbmFuY2Uuc2NzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL21haW50ZW5hbmNlL3N0YXRpYy9zY3Nz L19tYWludGVuYW5jZS5zY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGY4YTA0 Yy4uMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvbWFpbnRlbmFuY2Uvc3RhdGljL3Nj c3MvX21haW50ZW5hbmNlLnNjc3MKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLS5idG4t Z3JvdXAucGctbWFpbnRlbmFuY2Utb3AgbGFiZWwuYnRuLmJ0bi1wcmltYXJ5LmFjdGl2ZSB7Ci0g IGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5LWxpZ2h0OwotICBjb2xvcjogJGNvbG9y LXByaW1hcnk7Ci19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi91dGlscy9wcmVmZXJlbmNlcy5w eSBiL3dlYi9wZ2FkbWluL3V0aWxzL3ByZWZlcmVuY2VzLnB5CmluZGV4IDY1NmY0NDYzLi5lYzQ4 NGQyZSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdXRpbHMvcHJlZmVyZW5jZXMucHkKKysrIGIv d2ViL3BnYWRtaW4vdXRpbHMvcHJlZmVyZW5jZXMucHkKQEAgLTQyOCw3ICs0MjgsNyBAQCBjbGFz cyBQcmVmZXJlbmNlcyhvYmplY3QpOgogICAgICAgICBhc3NlcnQgX3R5cGUgaXMgbm90IE5vbmUs ICJUeXBlIGZvciBhIHByZWZlcmVuY2UgY2Fubm90IGJlIG5vbmUhIgogICAgICAgICBhc3NlcnQg X3R5cGUgaW4gKAogICAgICAgICAgICAgJ2Jvb2xlYW4nLCAnaW50ZWdlcicsICdudW1lcmljJywg J2RhdGUnLCAnZGF0ZXRpbWUnLAotICAgICAgICAgICAgJ29wdGlvbnMnLCAnbXVsdGlsaW5lJywg J3N3aXRjaCcsICdub2RlJywgJ3RleHQnLAorICAgICAgICAgICAgJ29wdGlvbnMnLCAnbXVsdGls aW5lJywgJ3N3aXRjaCcsICdub2RlJywgJ3RleHQnLCAncmFkaW9Nb2Rlcm4nLAogICAgICAgICAg ICAgJ2tleWJvYXJkc2hvcnRjdXQnCiAgICAgICAgICksICJUeXBlIGNhbm5vdCBiZSBmb3VuZCBp biB0aGUgZGVmaW5lZCBsaXN0ISIKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9icm93c2VyL2xheW91dF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9i cm93c2VyL2xheW91dF9zcGVjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw Li5jMWU2NzA5ZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv YnJvd3Nlci9sYXlvdXRfc3BlYy5qcwpAQCAtMCwwICsxLDEwOSBAQAorLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBn QWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAy MDE5LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJl bGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbXBvcnQg e3BnQnJvd3Nlcn0gZnJvbSAncGdhZG1pbi5icm93c2VyLmxheW91dCc7CitpbXBvcnQgJ3djZG9j a2VyJzsKKwordmFyIHdjRG9ja2VyID0gd2luZG93LndjRG9ja2VyOworCitkZXNjcmliZSgnbGF5 b3V0IHJlbGF0ZWQgZnVuY3Rpb25zIHRlc3QnLCBmdW5jdGlvbigpIHsKKyAgbGV0IG1lbnVfaXRl bXMgPSBudWxsOworICBsZXQgZHVtbXlfY2FjaGUgPSBbeworICAgIGlkOiAyLAorICAgIG1pZDog MSwKKyAgICBtb2R1bGU6J2Jyb3dzZXInLAorICAgIG5hbWU6J2xvY2tfbGF5b3V0JywKKyAgICB2 YWx1ZTogJ25vbmUnLAorICB9XTsKKworICBiZWZvcmVFYWNoKGZ1bmN0aW9uKCl7CisgICAgcGdC cm93c2VyLnByZWZlcmVuY2VzX2NhY2hlID0gZHVtbXlfY2FjaGU7CisgICAgcGdCcm93c2VyLmRv Y2tlciA9IHsKKyAgICAgICdsb2NrTGF5b3V0JzogKCk9Pnt9LAorICAgIH07CisKKyAgICBfLmV4 dGVuZChwZ0Jyb3dzZXIseworICAgICAgJ21lbnVzJzogeworICAgICAgICAnZmlsZSc6IHsKKyAg ICAgICAgICAnbW51X2xvY2tsYXlvdXQnOiB7CisgICAgICAgICAgICAnbWVudV9pdGVtcyc6IFsK KyAgICAgICAgICAgICAgeyduYW1lJzogJ21udV9sb2NrX25vbmUnLCBjaGFuZ2VfY2hlY2tlZDog KCk9PiB7fX0sCisgICAgICAgICAgICAgIHsnbmFtZSc6ICdtbnVfbG9ja19kb2NraW5nJywgY2hh bmdlX2NoZWNrZWQ6ICgpPT4ge319LAorICAgICAgICAgICAgICB7J25hbWUnOiAnbW51X2xvY2tf ZnVsbCcsIGNoYW5nZV9jaGVja2VkOiAoKT0+IHt9fSwKKyAgICAgICAgICAgIF0sCisgICAgICAg ICAgfSwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAgfSk7CisKKyAgICBtZW51X2l0ZW1zID0g cGdCcm93c2VyLm1lbnVzLmZpbGUubW51X2xvY2tsYXlvdXQubWVudV9pdGVtczsKKyAgfSk7CisK KyAgZGVzY3JpYmUoJ2ZvciBtZW51IGFjdGlvbnMnLCBmdW5jdGlvbigpIHsKKyAgICBiZWZvcmVF YWNoKGZ1bmN0aW9uKCl7CisgICAgICBzcHlPbihwZ0Jyb3dzZXIsICdsb2NrX2xheW91dCcpOwor ICAgICAgc3B5T24ocGdCcm93c2VyLCAnc2F2ZV9sb2NrX2xheW91dCcpOworICAgIH0pOworCisg ICAgaXQoJ21udV9sb2NrX25vbmUnLCBmdW5jdGlvbigpIHsKKyAgICAgIHBnQnJvd3Nlci5tbnVf bG9ja19ub25lKCk7CisgICAgICBleHBlY3QocGdCcm93c2VyLmxvY2tfbGF5b3V0KS50b0hhdmVC ZWVuQ2FsbGVkV2l0aChwZ0Jyb3dzZXIuZG9ja2VyLCAnbm9uZScpOworICAgICAgZXhwZWN0KHBn QnJvd3Nlci5zYXZlX2xvY2tfbGF5b3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnbm9uZScpOwor ICAgIH0pOworCisgICAgaXQoJ21udV9sb2NrX2RvY2tpbmcnLCBmdW5jdGlvbigpIHsKKyAgICAg IHBnQnJvd3Nlci5tbnVfbG9ja19kb2NraW5nKCk7CisgICAgICBleHBlY3QocGdCcm93c2VyLmxv Y2tfbGF5b3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChwZ0Jyb3dzZXIuZG9ja2VyLCAnZG9ja2lu ZycpOworICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zYXZlX2xvY2tfbGF5b3V0KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgnZG9ja2luZycpOworICAgIH0pOworCisgICAgaXQoJ21udV9sb2NrX2Z1bGwn LCBmdW5jdGlvbigpIHsKKyAgICAgIHBnQnJvd3Nlci5tbnVfbG9ja19mdWxsKCk7CisgICAgICBl eHBlY3QocGdCcm93c2VyLmxvY2tfbGF5b3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChwZ0Jyb3dz ZXIuZG9ja2VyLCAnZnVsbCcpOworICAgICAgZXhwZWN0KHBnQnJvd3Nlci5zYXZlX2xvY2tfbGF5 b3V0KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnZnVsbCcpOworICAgIH0pOworICB9KTsKKworICBk ZXNjcmliZSgnbG9ja19sYXlvdXQnLCBmdW5jdGlvbigpIHsKKyAgICBsZXQgY2hhbmdlX2NoZWNr ZWRfdGVzdD0gZnVuY3Rpb24obWVudV9uYW1lKSB7CisgICAgICBmb3IobGV0IGk9MDsgaTxtZW51 X2l0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmKG1lbnVfaXRlbXNbaV0ubmFtZSA9PSBt ZW51X25hbWUpIHsKKyAgICAgICAgICBleHBlY3QobWVudV9pdGVtc1tpXS5jaGFuZ2VfY2hlY2tl ZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgodHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg ICAgZXhwZWN0KG1lbnVfaXRlbXNbaV0uY2hhbmdlX2NoZWNrZWQpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH07CisKKyAgICBiZWZvcmVFYWNo KGZ1bmN0aW9uKCl7CisgICAgICBzcHlPbihwZ0Jyb3dzZXIuZG9ja2VyLCAnbG9ja0xheW91dCcp OworICAgICAgZm9yKGxldCBpPTA7IGk8bWVudV9pdGVtcy5sZW5ndGg7IGkrKykgeworICAgICAg ICBzcHlPbihtZW51X2l0ZW1zW2ldLCAnY2hhbmdlX2NoZWNrZWQnKTsKKyAgICAgIH0KKyAgICB9 KTsKKworICAgIGl0KCdub25lJywgZnVuY3Rpb24oKSB7CisgICAgICBwZ0Jyb3dzZXIubG9ja19s YXlvdXQocGdCcm93c2VyLmRvY2tlciwgJ25vbmUnKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXIu ZG9ja2VyLmxvY2tMYXlvdXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHdjRG9ja2VyLkxPQ0tfTEFZ T1VUX0xFVkVMLk5PTkUpOworICAgICAgY2hhbmdlX2NoZWNrZWRfdGVzdCgnbW51X2xvY2tfbm9u ZScpOworICAgIH0pOworCisgICAgaXQoJ2RvY2tpbmcnLCBmdW5jdGlvbigpIHsKKyAgICAgIHBn QnJvd3Nlci5sb2NrX2xheW91dChwZ0Jyb3dzZXIuZG9ja2VyLCAnZG9ja2luZycpOworICAgICAg ZXhwZWN0KHBnQnJvd3Nlci5kb2NrZXIubG9ja0xheW91dCkudG9IYXZlQmVlbkNhbGxlZFdpdGgo d2NEb2NrZXIuTE9DS19MQVlPVVRfTEVWRUwuUFJFVkVOVF9ET0NLSU5HKTsKKyAgICAgIGNoYW5n ZV9jaGVja2VkX3Rlc3QoJ21udV9sb2NrX2RvY2tpbmcnKTsKKyAgICB9KTsKKworICAgIGl0KCdm dWxsJywgZnVuY3Rpb24oKSB7CisgICAgICBwZ0Jyb3dzZXIubG9ja19sYXlvdXQocGdCcm93c2Vy LmRvY2tlciwgJ2Z1bGwnKTsKKyAgICAgIGV4cGVjdChwZ0Jyb3dzZXIuZG9ja2VyLmxvY2tMYXlv dXQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHdjRG9ja2VyLkxPQ0tfTEFZT1VUX0xFVkVMLkZVTEwp OworICAgICAgY2hhbmdlX2NoZWNrZWRfdGVzdCgnbW51X2xvY2tfZnVsbCcpOworICAgIH0pOwor ICB9KTsKK30pOwpkaWZmIC0tZ2l0IGEvd2ViL3dlYnBhY2suc2hpbS5qcyBiL3dlYi93ZWJwYWNr LnNoaW0uanMKaW5kZXggMGQ4NmRjYzguLjhmNDNiMmEzIDEwMDY0NAotLS0gYS93ZWIvd2VicGFj ay5zaGltLmpzCisrKyBiL3dlYi93ZWJwYWNrLnNoaW0uanMKQEAgLTE5MCw2ICsxOTAsNyBAQCB2 YXIgd2VicGFja1NoaW1Db25maWcgPSB7CiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5lcnJvcic6IHBh dGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvZXJyb3InKSwK ICAgICAncGdhZG1pbi5icm93c2VyLmZyYW1lJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdh ZG1pbi9icm93c2VyL3N0YXRpYy9qcy9mcmFtZScpLAogICAgICdwZ2FkbWluLmJyb3dzZXIua2V5 Ym9hcmQnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L2tleWJvYXJkJyksCisgICAgJ3BnYWRtaW4uYnJvd3Nlci5sYXlvdXQnOiBwYXRoLmpvaW4oX19k aXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2xheW91dCcpLAogICAgICdwZ2Fk bWluLmJyb3dzZXIucHJlZmVyZW5jZXMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL3ByZWZlcmVuY2VzJyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5t ZW51JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9t ZW51JyksCiAgICAgJ3BnYWRtaW4uYnJvd3Nlci5tZXNzYWdlcyc6ICcvYnJvd3Nlci9qcy9tZXNz YWdlcycsCmRpZmYgLS1naXQgYS93ZWIvd2VicGFjay50ZXN0LmNvbmZpZy5qcyBiL3dlYi93ZWJw YWNrLnRlc3QuY29uZmlnLmpzCmluZGV4IGQxOWRmOTI5Li5mMTlkNjY2YyAxMDA2NDQKLS0tIGEv d2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMKKysrIGIvd2ViL3dlYnBhY2sudGVzdC5jb25maWcu anMKQEAgLTcyLDYgKzcyLDcgQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgYWxpYXM6IHsKICAg ICAgICd0b3AnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluJyksCiAgICAgICAnanF1 ZXJ5JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vbm9kZV9tb2R1bGVzL2pxdWVyeS9kaXN0L2px dWVyeScpLAorICAgICAgJ3djZG9ja2VyJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vbm9kZV9t b2R1bGVzL3dlYmNhYmluLWRvY2tlci9CdWlsZC93Y0RvY2tlcicpLAogICAgICAgJ2FsZXJ0aWZ5 JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vbm9kZV9tb2R1bGVzL2FsZXJ0aWZ5anMvYnVpbGQv YWxlcnRpZnknKSwKICAgICAgICdqcXVlcnkuZXZlbnQuZHJhZyc6IHBhdGguam9pbihfX2Rpcm5h bWUsICcuL25vZGVfbW9kdWxlcy9zbGlja2dyaWQvbGliL2pxdWVyeS5ldmVudC5kcmFnLTIuMy4w JyksCiAgICAgICAnanF1ZXJ5LnVpJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vbm9kZV9tb2R1 bGVzL3NsaWNrZ3JpZC9saWIvanF1ZXJ5LXVpLTEuMTEuMycpLApAQCAtMTAwLDYgKzEwMSw3IEBA IG1vZHVsZS5leHBvcnRzID0gewogICAgICAgJ3BnYWRtaW4uYmFja2Zvcm0nOiBzb3VyY2VzRGly ICsgJy9qcy9iYWNrZm9ybS5wZ2FkbWluJywKICAgICAgICdwZ2Jyb3dzZXInOiBwYXRoLnJlc29s dmUoX19kaXJuYW1lLCAncmVncmVzc2lvbi9qYXZhc2NyaXB0L2Zha2VfYnJvd3NlcicpLAogICAg ICAgJ3BnYWRtaW4uc2NoZW1hLmRpcic6IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdwZ2FkbWlu L2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3N0YXRpYy9q cycpLAorICAgICAgJ3BnYWRtaW4uYnJvd3Nlci5sYXlvdXQnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2xheW91dCcpLAogICAgICAgJ3BnYWRtaW4u YnJvd3Nlci5wcmVmZXJlbmNlcyc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vYnJv d3Nlci9zdGF0aWMvanMvcHJlZmVyZW5jZXMnKSwKICAgICAgICdidW5kbGVkX2NvZGVtaXJyb3In OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3N0YXRpYy9idW5kbGUvY29kZW1pcnJv cicpLAogICAgIH0sCmRpZmYgLS1naXQgYS93ZWIveWFybi5sb2NrIGIvd2ViL3lhcm4ubG9jawpp bmRleCBjYTk0NGQzMy4uNmEwMGZiODMgMTAwNjQ0Ci0tLSBhL3dlYi95YXJuLmxvY2sKKysrIGIv d2ViL3lhcm4ubG9jawpAQCAtODUwOCw5ICs4NTA4LDkgQEAgd2F0Y2hwYWNrQF4xLjUuMDoKICAg ICBncmFjZWZ1bC1mcyAiXjQuMS4yIgogICAgIG5lby1hc3luYyAiXjIuNS4wIgogCi0id2ViY2Fi aW4tZG9ja2VyQGdpdCtodHRwczovL2dpdGh1Yi5jb20vRW50ZXJwcmlzZURCL3djRG9ja2VyLyNl MTkxYTEwNjNjMTExZDU1NDJmZjI2YTdjMTYzOTQwYmUxODAzMzNkIjoKKyJ3ZWJjYWJpbi1kb2Nr ZXJAZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9FbnRlcnByaXNlREIvd2NEb2NrZXIvI2YzYzc5ZTRi OWE5ZTc2YThlMzQ3MzZmYzMzNDczZTY1YzUyNDA1MGMiOgogICB2ZXJzaW9uICIyLjIuNC1kZXYi Ci0gIHJlc29sdmVkICJnaXQraHR0cHM6Ly9naXRodWIuY29tL0VudGVycHJpc2VEQi93Y0RvY2tl ci8jZTE5MWExMDYzYzExMWQ1NTQyZmYyNmE3YzE2Mzk0MGJlMTgwMzMzZCIKKyAgcmVzb2x2ZWQg ImdpdCtodHRwczovL2dpdGh1Yi5jb20vRW50ZXJwcmlzZURCL3djRG9ja2VyLyNmM2M3OWU0Yjlh OWU3NmE4ZTM0NzM2ZmMzMzQ3M2U2NWM1MjQwNTBjIgogICBkZXBlbmRlbmNpZXM6CiAgICAgRmls ZVNhdmVyICJeMC4xMC4wIgogICAgIGZvbnQtYXdlc29tZSAiXjQuNy4wIgo= --0000000000008a4c4e058a182ddb--