From a51d0c02052e0b1af9f0ee77e6aa3503b0a81f50 Mon Sep 17 00:00:00 2001 From: Gitea Action Date: Sat, 20 Jun 2026 17:18:03 +0000 Subject: [PATCH] DRIVE: v3.6.0 (2026-06-20T17:18) --- DRIVE/sync-bundle-02.txt | 1264 +++++++++++++++++++------------------- 1 file changed, 632 insertions(+), 632 deletions(-) diff --git a/DRIVE/sync-bundle-02.txt b/DRIVE/sync-bundle-02.txt index 58362fd..fc45c32 100644 --- a/DRIVE/sync-bundle-02.txt +++ b/DRIVE/sync-bundle-02.txt @@ -9735,7 +9735,7 @@ ICAgIH0sIDE1MDApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbG9jYWxT dG9yYWdlLnJlbW92ZUl0ZW0oJ2RyaXZlLXJlc3VtZS1kb2MnKTsKICAgICAgICAgICAgfQogICAg ICAgIH0KICAgIH0gY2F0Y2goZSkgewogICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdk cml2ZS1yZXN1bWUtZG9jJyk7CiAgICB9Cn0pOwo8L3NjcmlwdD4KCjwvYm9keT4KPC9odG1sPgo= -### FILE: server.ps1 | 52719 +### FILE: server.ps1 | 52721 IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQojIEQuUi5JLlYuRS4gUG9ydGFsIHYxLjAgLSBMb2thbGVy IEhUVFAtU2VydmVyCiMgUG93ZXJTaGVsbC1iYXNpZXJ0IC0gS2VpbmUgSW5zdGFsbGF0aW9uIG5v @@ -10030,634 +10030,634 @@ aGVja1V0YyA9IFtkYXRldGltZV06OlV0Y05vdwogICAgJGxvY2FsVmVyID0gJzAuMC4wJwogICAg JF92ZiA9IEpvaW4tUGF0aCAkUm9vdCAnVkVSU0lPTicKICAgIGlmIChUZXN0LVBhdGggLUxpdGVy YWxQYXRoICRfdmYpIHsgJGxvY2FsVmVyID0gKEdldC1Db250ZW50IC1MaXRlcmFsUGF0aCAkX3Zm IC1SYXcpLlRyaW0oKSB9CiAgICB0cnkgewogICAgICAgICRydiA9IChJbnZva2UtV2ViUmVxdWVz -dCAtVXJpICdodHRwczovL2dpdGVhLnJoaW5vLm5ydy9SaGluby9TdGF0dXNRdW9fVXBkYXRlcy9y -YXcvYnJhbmNoL21haW4vRFJJVkUvVkVSU0lPTicgYAogICAgICAgICAgICAgICAtVXNlQmFzaWNQ -YXJzaW5nIC1UaW1lb3V0U2VjIDMgLUVycm9yQWN0aW9uIFN0b3ApLkNvbnRlbnQuVHJpbSgpCiAg -ICAgICAgJHNjcmlwdDpSZW1vdGVWZXJzaW9uICAgPSAkcnYKICAgICAgICAkc2NyaXB0OlVwZGF0 -ZUF2YWlsYWJsZSA9IChbU3lzdGVtLlZlcnNpb25dJHJ2IC1ndCBbU3lzdGVtLlZlcnNpb25dJGxv -Y2FsVmVyKQogICAgICAgIFdyaXRlLUhvc3QgIiAgW1VQREFURS1DSEVDS10gbG9rYWw9JGxvY2Fs -VmVyIHJlbW90ZT0kcnYgYXZhaWxhYmxlPSQoJHNjcmlwdDpVcGRhdGVBdmFpbGFibGUpIgogICAg -fSBjYXRjaCB7CiAgICAgICAgV3JpdGUtSG9zdCAiICBbVVBEQVRFLUNIRUNLXSBuaWNodCBlcnJl -aWNoYmFyICgkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSkiCiAgICB9Cn0KUmVmcmVzaC1VcGRhdGVD -aGVjawoKIyBIVFRQIExpc3RlbmVyIHN0YXJ0ZW4KJExpc3RlbmVyID0gTmV3LU9iamVjdCBTeXN0 -ZW0uTmV0Lkh0dHBMaXN0ZW5lcgokTGlzdGVuZXIuUHJlZml4ZXMuQWRkKCJodHRwOi8vbG9jYWxo -b3N0OiRQb3J0LyIpCgp0cnkgewogICAgJExpc3RlbmVyLlN0YXJ0KCkKfSBjYXRjaCB7CiAgICBX -cml0ZS1Ib3N0ICJGRUhMRVI6IFBvcnQgJFBvcnQgaXN0IGJlcmVpdHMgYmVsZWd0LiIgLUZvcmVn -cm91bmRDb2xvciBSZWQKICAgIFdyaXRlLUhvc3QgIlZlcnN1Y2hlbiBTaWUgZWluZW4gYW5kZXJl -biBQb3J0OiAuXHNlcnZlci5wczEgLVBvcnQgODA4MSIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cK -ICAgIFJlYWQtSG9zdCAiRW50ZXIgZHJ1ZWNrZW4genVtIEJlZW5kZW4iCiAgICBleGl0IDEKfQoK -IyBCcm93c2VyIG9lZmZuZW4gKENocm9tZSA+IEVkZ2UgPiBTdGFuZGFyZC1Ccm93c2VyKQokQnJv -d3NlclVybCA9ICJodHRwOi8vbG9jYWxob3N0OiRQb3J0IgokQnJvd3Nlck9wZW5lZCA9ICRmYWxz -ZQoKIyBDaHJvbWUtUGZhZGUgcHJ1ZWZlbgokQ2hyb21lUGF0aHMgPSBAKAogICAgIiR7ZW52OlBy -b2dyYW1GaWxlc31cR29vZ2xlXENocm9tZVxBcHBsaWNhdGlvblxjaHJvbWUuZXhlIiwKICAgICIk -e2VudjpQcm9ncmFtRmlsZXMoeDg2KX1cR29vZ2xlXENocm9tZVxBcHBsaWNhdGlvblxjaHJvbWUu -ZXhlIiwKICAgICIkZW52OkxPQ0FMQVBQREFUQVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNo -cm9tZS5leGUiCikKZm9yZWFjaCAoJGNwIGluICRDaHJvbWVQYXRocykgewogICAgaWYgKFRlc3Qt -UGF0aCAkY3ApIHsKICAgICAgICBTdGFydC1Qcm9jZXNzICRjcCAkQnJvd3NlclVybAogICAgICAg -ICRCcm93c2VyT3BlbmVkID0gJHRydWUKICAgICAgICBicmVhawogICAgfQp9CgojIEZhbGxiYWNr -OiBFZGdlCmlmICgtbm90ICRCcm93c2VyT3BlbmVkKSB7CiAgICAkRWRnZVBhdGggPSAiJHtlbnY6 -UHJvZ3JhbUZpbGVzKHg4Nil9XE1pY3Jvc29mdFxFZGdlXEFwcGxpY2F0aW9uXG1zZWRnZS5leGUi -CiAgICBpZiAoVGVzdC1QYXRoICRFZGdlUGF0aCkgewogICAgICAgIFN0YXJ0LVByb2Nlc3MgJEVk -Z2VQYXRoICRCcm93c2VyVXJsCiAgICAgICAgJEJyb3dzZXJPcGVuZWQgPSAkdHJ1ZQogICAgfQp9 -CgojIEZhbGxiYWNrOiBTdGFuZGFyZC1Ccm93c2VyIHZpYSBTdGFydAppZiAoLW5vdCAkQnJvd3Nl -ck9wZW5lZCkgewogICAgdHJ5IHsgU3RhcnQtUHJvY2VzcyAkQnJvd3NlclVybDsgJEJyb3dzZXJP -cGVuZWQgPSAkdHJ1ZSB9IGNhdGNoIHt9Cn0KCmlmICgtbm90ICRCcm93c2VyT3BlbmVkKSB7CiAg -ICBXcml0ZS1Ib3N0ICIgIEJyb3dzZXIga29ubnRlIG5pY2h0IGdlb2VmZm5ldCB3ZXJkZW4uIiAt -Rm9yZWdyb3VuZENvbG9yIFllbGxvdwogICAgV3JpdGUtSG9zdCAiICBCaXR0ZSBtYW51ZWxsIG9l -ZmZuZW46ICRCcm93c2VyVXJsIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwp9CgojIEhlYXJ0YmVh -dC1UcmFja2luZzogU2VydmVyIGJlZW5kZXQgc2ljaCB3ZW5uIDEwIE1pbnV0ZW4ga2VpbiBIZWFy -dGJlYXQga29tbXQuCiMgQ2xpZW50IG51dHp0IGVpbmVuIFdlYiBXb3JrZXIgZnVlciB6dXZlcmxh -ZXNzaWdlIEhlYXJ0YmVhdHMgYXVjaCBiZWkgQmFja2dyb3VuZC1UYWJzLgojIDEwIE1pbiBUaW1l -b3V0ID0gbWF4aW1hbGUgUm9idXN0aGVpdCBnZWdlbiBqZWRlIEFydCB2b24gQnJvd3Nlci1UaHJv -dHRsaW5nLgokc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQokSGVhcnRiZWF0VGltZW91 -dFNlYyA9IDE4MDAgICMgMzAgTWluIC0gVGFiLVdlY2hzZWwgcGF1c2llcnQgSGVhcnRiZWF0LCBO -ZXVzdGFydCBwcnVlZnQgUG9ydAokc2NyaXB0OlNodXRkb3duUGVuZGluZyA9ICRudWxsICAjIEdu -YWRlbmZyaXN0IGZ1ZXIgU2h1dGRvd24gKEY1L1JlZnJlc2ggdnMuIFRhYi1DbG9zZSkKJHNjcmlw -dDpTaHV0ZG93bkdyYWNlU2VjID0gNSAgICAgIyBTZWt1bmRlbiBXYXJ0ZXplaXQgYmV2b3IgU2Vy -dmVyIHRhdHNhZWNobGljaCBiZWVuZGV0IHdpcmQKCiMgUmVxdWVzdC1Mb29wIChuaWNodC1ibG9j -a2llcmVuZCBmdWVyIEhlYXJ0YmVhdC1UaW1lb3V0LVBydWVmdW5nKQp0cnkgewogICAgd2hpbGUg -KCRMaXN0ZW5lci5Jc0xpc3RlbmluZykgewogICAgICAgICMgQXN5bmNocm9uZW4gUmVxdWVzdCBt -aXQgVGltZW91dCB3YXJ0ZW4KICAgICAgICAkQXN5bmNSZXN1bHQgPSAkTGlzdGVuZXIuQmVnaW5H -ZXRDb250ZXh0KCRudWxsLCAkbnVsbCkKICAgICAgICB3aGlsZSAoLW5vdCAkQXN5bmNSZXN1bHQu -QXN5bmNXYWl0SGFuZGxlLldhaXRPbmUoMjAwMCkpIHsKICAgICAgICAgICAgIyBQcnVlZmVuIG9i -IGVpbiBTaHV0ZG93biBhbnN0ZWh0IChiZWZvcmV1bmxvYWQgZ2VzZW5kZXQpCiAgICAgICAgICAg -ICMgR25hZGVuZnJpc3Q6IEZhbGxzIFNlaXRlIG51ciBuZXUgZ2VsYWRlbiB3aXJkIChGNSksIGtv -bW10IGlubmVyaGFsYgogICAgICAgICAgICAjIHZvbiA1IFNla3VuZGVuIGVpbiBuZXVlciBIZWFy -dGJlYXQgdW5kIGJyaWNodCBkZW4gU2h1dGRvd24gYWIuCiAgICAgICAgICAgIGlmICgkc2NyaXB0 -OlNodXRkb3duUGVuZGluZykgewogICAgICAgICAgICAgICAgJEdyYWNlRWxhcHNlZCA9ICgoR2V0 -LURhdGUpIC0gJHNjcmlwdDpTaHV0ZG93blBlbmRpbmcpLlRvdGFsU2Vjb25kcwogICAgICAgICAg -ICAgICAgaWYgKCRHcmFjZUVsYXBzZWQgLWd0ICRzY3JpcHQ6U2h1dGRvd25HcmFjZVNlYykgewog -ICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiIKICAgICAgICAgICAgICAgICAgICBXcml0 -ZS1Ib3N0ICIgIFNodXRkb3duLUduYWRlbmZyaXN0IGFiZ2VsYXVmZW4gKCR7R3JhY2VFbGFwc2Vk -fXMpIC0ga2VpbiBSZWxvYWQgZXJrYW5udCwgU2VydmVyIHdpcmQgYmVlbmRldC4uLiIgLUZvcmVn -cm91bmRDb2xvciBZZWxsb3cKICAgICAgICAgICAgICAgICAgICAkTGlzdGVuZXIuU3RvcCgpCiAg -ICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog -ICAgICAgICAgICAjIEFsbGUgMiBTZWt1bmRlbiBwcnVlZmVuIG9iIEhlYXJ0YmVhdC1UaW1lb3V0 -IGVycmVpY2h0CiAgICAgICAgICAgICRTZWNTaW5jZUhlYXJ0YmVhdCA9ICgoR2V0LURhdGUpIC0g -JHNjcmlwdDpMYXN0SGVhcnRiZWF0KS5Ub3RhbFNlY29uZHMKICAgICAgICAgICAgaWYgKCRTZWNT -aW5jZUhlYXJ0YmVhdCAtZ3QgJEhlYXJ0YmVhdFRpbWVvdXRTZWMpIHsKICAgICAgICAgICAgICAg -IFdyaXRlLUhvc3QgIiIKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgS2VpbiBIZWFydGJl -YXQgc2VpdCAkKFtNYXRoXTo6Um91bmQoJFNlY1NpbmNlSGVhcnRiZWF0KSlzIC0gVGFiIHd1cmRl -IGdlc2NobG9zc2VuLCBTZXJ2ZXIgd2lyZCBiZWVuZGV0Li4uIiAtRm9yZWdyb3VuZENvbG9yIFll -bGxvdwogICAgICAgICAgICAgICAgJExpc3RlbmVyLlN0b3AoKQogICAgICAgICAgICAgICAgYnJl -YWsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoLW5vdCAkTGlzdGVuZXIuSXNM -aXN0ZW5pbmcpIHsgYnJlYWsgfQogICAgICAgICRDb250ZXh0ID0gJExpc3RlbmVyLkVuZEdldENv -bnRleHQoJEFzeW5jUmVzdWx0KQogICAgICAgICRSZXF1ZXN0ID0gJENvbnRleHQuUmVxdWVzdAog -ICAgICAgICRSZXNwb25zZSA9ICRDb250ZXh0LlJlc3BvbnNlCiAgICAgICAgJE1ldGhvZCA9ICRS -ZXF1ZXN0Lkh0dHBNZXRob2QKICAgICAgICAkVXJsUGF0aCA9ICRSZXF1ZXN0LlVybC5Mb2NhbFBh -dGgKCiAgICAgICAgIyBQZW5kaW5nIFNodXRkb3duIGJlaSBqZWRlbSBlaW5nZWhlbmRlbiBSZXF1 -ZXN0IGFiYnJlY2hlbgogICAgICAgICMgKFNlaXRlIHd1cmRlIG5ldSBnZWxhZGVuIHVuZCBmcmFn -dCBEYXRlaWVuL0FQSSBhbikKICAgICAgICBpZiAoJHNjcmlwdDpTaHV0ZG93blBlbmRpbmcgLWFu -ZCAkVXJsUGF0aCAtbmUgJy9hcGkvc2h1dGRvd24nKSB7CiAgICAgICAgICAgIFdyaXRlLUhvc3Qg -IiAgSEIgICBTaHV0ZG93biBhYmdlYnJvY2hlbiAtIG5ldWUgQW5mcmFnZSBlcmthbm50ICgkTWV0 -aG9kICRVcmxQYXRoKSIgLUZvcmVncm91bmRDb2xvciBHcmVlbgogICAgICAgICAgICAkc2NyaXB0 -OlNodXRkb3duUGVuZGluZyA9ICRudWxsCiAgICAgICAgfQoKICAgICAgICAjIFJlcXVlc3QtTG9n -Z2luZyAobnVyIEFQSS1BdWZydWZlLCBuaWNodCBIZWFydGJlYXQvc3RhdGlzY2hlIERhdGVpZW4p -CiAgICAgICAgaWYgKCRVcmxQYXRoLlN0YXJ0c1dpdGgoJy9hcGkvJykgLWFuZCAkVXJsUGF0aCAt -bmUgJy9hcGkvaGVhcnRiZWF0JykgewogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIC0tPiAgJE1l -dGhvZCAkVXJsUGF0aCIgLUZvcmVncm91bmRDb2xvciBEYXJrR3JheQogICAgICAgIH0KCiAgICAg -ICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 -PT09PT09PT09CiAgICAgICAgIyBDT1JTIFByZWZsaWdodAogICAgICAgICMgPT09PT09PT09PT09 -PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKICAgICAg -ICBpZiAoJE1ldGhvZCAtZXEgJ09QVElPTlMnKSB7CiAgICAgICAgICAgICRSZXNwb25zZS5TdGF0 -dXNDb2RlID0gMjA0CiAgICAgICAgICAgIEFkZC1TZWN1cml0eUhlYWRlcnMgJFJlc3BvbnNlCiAg -ICAgICAgICAgICRSZXNwb25zZS5IZWFkZXJzLkFkZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctTWV0 -aG9kcyIsICJHRVQsIFBPU1QsIE9QVElPTlMiKQogICAgICAgICAgICAkUmVzcG9uc2UuSGVhZGVy -cy5BZGQoIkFjY2Vzcy1Db250cm9sLUFsbG93LUhlYWRlcnMiLCAiQ29udGVudC1UeXBlIikKICAg -ICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9 -CgogICAgICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 -PT09PT09PT09PT09PT09PQogICAgICAgICMgQVBJLUVuZHB1bmt0ZQogICAgICAgICMgPT09PT09 -PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK -ICAgICAgICAjIC0tLSBQT1NUIC9hcGkvaGVhcnRiZWF0IC0tLQogICAgICAgICMgQnJvd3NlciBz -ZW5kZXQgYWxsZSA1IFNla3VuZGVuIGVpbmVuIEhlYXJ0YmVhdCAodmlhIFdlYiBXb3JrZXIsIG5p -ZSBnZWRyb3NzZWx0KQogICAgICAgICMgU2VydmVyIGZhZWhydCBhdXRvbWF0aXNjaCBoZXJ1bnRl -ciB3ZW5uIDEwIE1pbnV0ZW4ga2VpbiBIZWFydGJlYXQga29tbXQKICAgICAgICAjIEFudHdvcnQg -ZW50aGFlbHQgaWRsZS1TZWt1bmRlbiB1bmQgV2FybnVuZyA2MHMgdm9yIFNodXRkb3duCiAgICAg -ICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9oZWFydGJlYXQnIC1hbmQgJE1ldGhvZCAtZXEgJ1BP -U1QnKSB7CiAgICAgICAgICAgICMgUGVuZGluZyBTaHV0ZG93biBhYmJyZWNoZW4gKFNlaXRlIHd1 -cmRlIG51ciBuZXUgZ2VsYWRlbiwgbmljaHQgZ2VzY2hsb3NzZW4pCiAgICAgICAgICAgIGlmICgk -c2NyaXB0OlNodXRkb3duUGVuZGluZykgewogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBI -QiAgIFNodXRkb3duIGFiZ2Vicm9jaGVuIC0gU2VpdGUgd3VyZGUgbmV1IGdlbGFkZW4gKEY1L1Jl -ZnJlc2gpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAgICAgICAgICAkc2NyaXB0OlNo -dXRkb3duUGVuZGluZyA9ICRudWxsCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJElkbGVTZWMg -PSBbTWF0aF06OlJvdW5kKCgoR2V0LURhdGUpIC0gJHNjcmlwdDpMYXN0SGVhcnRiZWF0KS5Ub3Rh -bFNlY29uZHMpCiAgICAgICAgICAgICRXYXJuaW5nVGhyZXNob2xkID0gJEhlYXJ0YmVhdFRpbWVv -dXRTZWMgLSA2MCAgIyBXYXJudW5nIDYwcyB2b3IgVGltZW91dAogICAgICAgICAgICAkUmVtYWlu -aW5nID0gW01hdGhdOjpNYXgoMCwgJEhlYXJ0YmVhdFRpbWVvdXRTZWMgLSAkSWRsZVNlYykKICAg -ICAgICAgICAgJHNjcmlwdDpMYXN0SGVhcnRiZWF0ID0gR2V0LURhdGUKICAgICAgICAgICAgaWYg -KCRJZGxlU2VjIC1ndCAkV2FybmluZ1RocmVzaG9sZCkgewogICAgICAgICAgICAgICAgU2VuZC1K -c29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBpZGxlID0gJElkbGVTZWM7IHdhcm5pbmcgPSAk -dHJ1ZTsgcmVtYWluaW5nU2Vjb25kcyA9ICRSZW1haW5pbmcgfQogICAgICAgICAgICAgICAgV3Jp -dGUtSG9zdCAiICBIQiAgIEhlYXJ0YmVhdCBuYWNoICR7SWRsZVNlY31zIFBhdXNlIC0gV2FybnVu -ZyBnZXNlbmRldCAobm9jaCAke1JlbWFpbmluZ31zKSIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cK -ICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2Ug -QHsgb2sgPSAkdHJ1ZTsgaWRsZSA9ICRJZGxlU2VjOyB3YXJuaW5nID0gJGZhbHNlOyByZW1haW5p -bmdTZWNvbmRzID0gJFJlbWFpbmluZyB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlc3Bv -bnNlLkNsb3NlKCkKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgICMgLS0t -IEdFVCAvYXBpL2Vudmlyb24gLS0tCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9lbnZp -cm9uJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7CiAgICAgICAgICAgIFJlZnJlc2gtVXBkYXRl -Q2hlY2sKICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAewogICAgICAgICAgICAgICAg -dXNlcm5hbWUgICAgICAgID0gJGVudjpVU0VSTkFNRQogICAgICAgICAgICAgICAgY29tcHV0ZXJu -YW1lICAgID0gJGVudjpDT01QVVRFUk5BTUUKICAgICAgICAgICAgICAgIHVzZXJkb21haW4gICAg -ICA9ICRlbnY6VVNFUkRPTUFJTgogICAgICAgICAgICAgICAgdXBkYXRlQXZhaWxhYmxlID0gJHNj -cmlwdDpVcGRhdGVBdmFpbGFibGUKICAgICAgICAgICAgICAgIHJlbW90ZVZlcnNpb24gICA9ICRz -Y3JpcHQ6UmVtb3RlVmVyc2lvbgogICAgICAgICAgICB9CiAgICAgICAgICAgICRSZXNwb25zZS5D -bG9zZSgpCiAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJICAvYXBpL2Vudmlyb24gIChVc2Vy -OiAkZW52OlVTRVJOQU1FKSIgLUZvcmVncm91bmRDb2xvciBDeWFuCiAgICAgICAgICAgIGNvbnRp -bnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBHRVQgL2FwaS9zY2FuIC0tLQogICAgICAgICMg -U2Nhbm50IGFsbGUgS2F0ZWdvcmllLVVudGVyb3JkbmVyIHVuZCBsaWVmZXJ0IERva3VtZW50LURh -dGVpZW4KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL3NjYW4nIC1hbmQgJE1ldGhvZCAt -ZXEgJ0dFVCcpIHsKICAgICAgICAgICAgJERhdGFEaXIgPSBKb2luLVBhdGggJFJvb3QgImRhdGEi -CiAgICAgICAgICAgICRSZXN1bHQgPSBbU3lzdGVtLkNvbGxlY3Rpb25zLkFycmF5TGlzdF06Om5l -dygpCgogICAgICAgICAgICBpZiAoVGVzdC1QYXRoICREYXRhRGlyKSB7CiAgICAgICAgICAgICAg -ICBHZXQtQ2hpbGRJdGVtICREYXRhRGlyIC1EaXJlY3RvcnkgfCBGb3JFYWNoLU9iamVjdCB7CiAg -ICAgICAgICAgICAgICAgICAgJEthdE5hbWUgPSAkXy5OYW1lCiAgICAgICAgICAgICAgICAgICAg -R2V0LUNoaWxkSXRlbSAkXy5GdWxsTmFtZSAtRmlsdGVyICIqLmpzb24iIHwgRm9yRWFjaC1PYmpl -Y3QgewogICAgICAgICAgICAgICAgICAgICAgICBbdm9pZF0kUmVzdWx0LkFkZChAewogICAgICAg -ICAgICAgICAgICAgICAgICAgICAga2F0ZWdvcmllID0gJEthdE5hbWUKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgIGZpbGVuYW1lICA9ICRfLk5hbWUKICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIHBhdGggICAgICA9ICJkYXRhLyRLYXROYW1lLyQoJF8uTmFtZSkiCiAgICAgICAgICAgICAg -ICAgICAgICAgICAgICBzaXplICAgICAgPSAkXy5MZW5ndGgKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgIG1vZGlmaWVkICA9ICRfLkxhc3RXcml0ZVRpbWVVdGMuVG9TdHJpbmcoIm8iKQogICAg -ICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg -ICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBm -aWxlcyA9IEAoJFJlc3VsdCkgfQogICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAg -ICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgL2FwaS9zY2FuICAoJCgkUmVzdWx0LkNvdW50KSBEb2t1 -bWVudGUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29udGludWUKICAgICAg -ICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL2dvdmVybmFuY2UgLS0tCiAgICAgICAgaWYgKCRV -cmxQYXRoIC1lcSAnL2FwaS9nb3Zlcm5hbmNlJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7CiAg -ICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5jZQogICAgICAgICAgICBpZiAoJEdvdikgewog -ICAgICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1cGVyVXNlciAkR292CiAgICAgICAgICAgICAg -ICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAgICAgICAgICAgICAgICAgICAgZ292ZXJuYW5jZSA9 -ICRHb3YKICAgICAgICAgICAgICAgICAgICBjdXJyZW50VXNlciA9ICRlbnY6VVNFUk5BTUUKICAg -ICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluID0gJGVudjpVU0VSRE9NQUlOCiAgICAgICAg -ICAgICAgICAgICAgaXNTdXBlclVzZXIgPSAkSXNTVQogICAgICAgICAgICAgICAgfQogICAgICAg -ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAewogICAg -ICAgICAgICAgICAgICAgIGdvdmVybmFuY2UgPSAkbnVsbAogICAgICAgICAgICAgICAgICAgIGN1 -cnJlbnRVc2VyID0gJGVudjpVU0VSTkFNRQogICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21h -aW4gPSAkZW52OlVTRVJET01BSU4KICAgICAgICAgICAgICAgICAgICBpc1N1cGVyVXNlciA9ICR0 -cnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlc3BvbnNl -LkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIC9hcGkvZ292ZXJuYW5jZSAg -KFVzZXI6ICRlbnY6VVNFUk5BTUUsIFNVOiAkKFRlc3QtU3VwZXJVc2VyIChHZXQtR292ZXJuYW5j -ZSkpKSIgLUZvcmVncm91bmRDb2xvciBDeWFuCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg -fQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvZ292ZXJuYW5jZSAtLS0KICAgICAgICAjIE51ciBT -dXBlclVzZXIgZGFyZiBnb3Zlcm5hbmNlLmpzb24gYWVuZGVybgogICAgICAgIGlmICgkVXJsUGF0 -aCAtZXEgJy9hcGkvZ292ZXJuYW5jZScgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAg -ICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5jZQogICAgICAg -ICAgICAgICAgJElzU1UgPSBUZXN0LVN1cGVyVXNlciAkR292CiAgICAgICAgICAgICAgICBpZiAo -LW5vdCAkSXNTVSkgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsg -ZXJyb3IgPSAiTnVyIFN1cGVyVXNlciBkYXJmIEdvdmVybmFuY2UtRGF0ZW4gYWVuZGVybiAoVXNl -cjogJGVudjpVU0VSTkFNRSkiIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAi -ICBFUlIgIFBPU1QgL2FwaS9nb3Zlcm5hbmNlICBBQkdFTEVITlQgKFVzZXI6ICRlbnY6VVNFUk5B -TUUpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg -ICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAg -ICAgIGlmICgtbm90ICRCb2R5IC1vciAkQm9keS5MZW5ndGggLWx0IDIpIHsKICAgICAgICAgICAg -ICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJMZWVyZXIgUmVxdWVz -dC1Cb2R5IiB9IDQwMAogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAg -UE9TVCAvYXBpL2dvdmVybmFuY2UgIExlZXJlciBCb2R5IiAtRm9yZWdyb3VuZENvbG9yIFJlZAog -ICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdH -b3YgPSAkQm9keSB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAgICAgICAgICAgICAgICAgU2F2 -ZS1Hb3Zlcm5hbmNlICROZXdHb3YKICAgICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRS -ZXNwb25zZSBAeyBvayA9ICR0cnVlIH0KICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9z -dCAiICBBUEkgIFBPU1QgL2FwaS9nb3Zlcm5hbmNlICBha3R1YWxpc2llcnQgdm9uICRlbnY6VVNF -Uk5BTUUgKCQoJEJvZHkuTGVuZ3RoKSBCeXRlcykiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KICAg -ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2gg -ewogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS9nb3Zlcm5hbmNl -ICBFWENFUFRJT046ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJl -ZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRf -LkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAg -ICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRp -bnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvbG9jayAtLS0KICAgICAgICAj -IFNldHp0IGVpbmVuIExvY2sgYXVmIGVpbiBEb2t1bWVudCAoUGVzc2ltaXN0aWMgTG9ja2luZykK -ICAgICAgICAjIEJvZHk6IHsgImRvY0lkIjogIkQwMDEiIH0KICAgICAgICAjIExvY2stRGF0ZWll -bjogZGF0YS8ubG9ja3MvRDAwMS5sb2NrIChKU09OIG1pdCB1c2VybmFtZSArIHRpbWVzdGFtcCkK -ICAgICAgICAjIExvY2tzIHZlcmZhbGxlbiBhdXRvbWF0aXNjaCBuYWNoIDEwIE1pbnV0ZW4gKFN0 -YWxlLUxvY2stUHJvdGVjdGlvbikKICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2xvY2sn -IC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAg -ICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9 -ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgJERvY0lkID0gJFBhcnNl -ZC5kb2NJZAogICAgICAgICAgICAgICAgJExvY2tEaXIgPSBKb2luLVBhdGggJFJvb3QgImRhdGEv -LmxvY2tzIgogICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAkTG9ja0RpcikpIHsg -TmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkTG9ja0RpciAtRm9yY2UgfCBPdXQt -TnVsbCB9CiAgICAgICAgICAgICAgICAkTG9ja0ZpbGUgPSBKb2luLVBhdGggJExvY2tEaXIgIiRE -b2NJZC5sb2NrIgoKICAgICAgICAgICAgICAgICMgUHJ1ZWZlbiBvYiBiZXJlaXRzIGdlbG9ja3Qg -KHVuZCBMb2NrIG5pY2h0IGFiZ2VsYXVmZW4pCiAgICAgICAgICAgICAgICBpZiAoVGVzdC1QYXRo -ICRMb2NrRmlsZSkgewogICAgICAgICAgICAgICAgICAgICRFeGlzdGluZyA9IEdldC1Db250ZW50 -ICRMb2NrRmlsZSAtUmF3IC1FbmNvZGluZyBVVEY4IHwgQ29udmVydEZyb20tSnNvbgogICAgICAg -ICAgICAgICAgICAgICRMb2NrVGltZSA9IFtEYXRlVGltZV06OlBhcnNlKCRFeGlzdGluZy5sb2Nr -ZWRBdCkKICAgICAgICAgICAgICAgICAgICAkTWludXRlc1NpbmNlID0gKChHZXQtRGF0ZSkgLSAk -TG9ja1RpbWUpLlRvdGFsTWludXRlcwoKICAgICAgICAgICAgICAgICAgICBpZiAoJE1pbnV0ZXNT -aW5jZSAtbHQgMTAgLWFuZCAkRXhpc3RpbmcudXNlcm5hbWUgLW5lICRlbnY6VVNFUk5BTUUpIHsK -ICAgICAgICAgICAgICAgICAgICAgICAgIyBMb2NrIGlzdCBha3RpdiB1bmQgdm9uIGVpbmVtIGFu -ZGVyZW4gVXNlcgogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7 -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZWQgPSAkdHJ1ZQogICAgICAgICAgICAg -ICAgICAgICAgICAgICAgYnkgPSAkRXhpc3RpbmcudXNlcm5hbWUKICAgICAgICAgICAgICAgICAg -ICAgICAgICAgIHNpbmNlID0gJEV4aXN0aW5nLmxvY2tlZEF0CiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICBtaW51dGVzID0gW01hdGhdOjpSb3VuZCgkTWludXRlc1NpbmNlLCAxKQogICAgICAg -ICAgICAgICAgICAgICAgICB9IDQwOQogICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu -Q2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAv -YXBpL2xvY2sgICREb2NJZCBCRUxFR1Qgdm9uICQoJEV4aXN0aW5nLnVzZXJuYW1lKSIgLUZvcmVn -cm91bmRDb2xvciBZZWxsb3cKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAg -ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIyBMb2NrIGFiZ2VsYXVmZW4gb2Rl -ciBlaWdlbmVyIExvY2sgLT4gdWViZXJzY2hyZWliZW4KICAgICAgICAgICAgICAgIH0KCiAgICAg -ICAgICAgICAgICAjIExvY2sgc2V0emVuCiAgICAgICAgICAgICAgICAkTG9ja0RhdGEgPSBAewog -ICAgICAgICAgICAgICAgICAgIGRvY0lkID0gJERvY0lkCiAgICAgICAgICAgICAgICAgICAgdXNl -cm5hbWUgPSAkZW52OlVTRVJOQU1FCiAgICAgICAgICAgICAgICAgICAgbG9ja2VkQXQgPSAoR2V0 -LURhdGUpLlRvU3RyaW5nKCJvIikKICAgICAgICAgICAgICAgIH0gfCBDb252ZXJ0VG8tSnNvbiAt -Q29tcHJlc3MKICAgICAgICAgICAgICAgIFVucHJvdGVjdC1GaWxlICRMb2NrRmlsZQogICAgICAg -ICAgICAgICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJExvY2tGaWxlLCAkTG9ja0RhdGEsIFtU -ZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2UpKQogICAgICAgICAgICAgICAgU2VuZC1Kc29u -ICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBkb2NJZCA9ICREb2NJZCB9CiAgICAgICAgICAgICAg -ICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL2xvY2sgICREb2NJZCBnZWxvY2t0IHZvbiAk -ZW52OlVTRVJOQU1FIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgfSBjYXRjaCB7 -CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2xvY2sgICQoJF8u -RXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAg -dHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdl -IH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9u -c2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAg -ICAgICAjIC0tLSBQT1NUIC9hcGkvdW5sb2NrIC0tLQogICAgICAgICMgR2lidCBlaW5lbiBMb2Nr -IGZyZWkuIEJvZHk6IHsgImRvY0lkIjogIkQwMDEiIH0KICAgICAgICAjIE51ciBkZXIgTG9jay1J -bmhhYmVyIG9kZXIgU3VwZXJVc2VyIGthbm4gZnJlaWdlYmVuCiAgICAgICAgaWYgKCRVcmxQYXRo -IC1lcSAnL2FwaS91bmxvY2snIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAg -IHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAg -ICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAg -ICAgJERvY0lkID0gJFBhcnNlZC5kb2NJZAogICAgICAgICAgICAgICAgJExvY2tGaWxlID0gSm9p -bi1QYXRoICRSb290ICJkYXRhLy5sb2Nrcy8kRG9jSWQubG9jayIKCiAgICAgICAgICAgICAgICBp -ZiAoVGVzdC1QYXRoICRMb2NrRmlsZSkgewogICAgICAgICAgICAgICAgICAgICRFeGlzdGluZyA9 -IEdldC1Db250ZW50ICRMb2NrRmlsZSAtUmF3IC1FbmNvZGluZyBVVEY4IHwgQ29udmVydEZyb20t -SnNvbgogICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5jZQogICAgICAgICAg -ICAgICAgICAgICRJc1NVID0gVGVzdC1TdXBlclVzZXIgJEdvdgoKICAgICAgICAgICAgICAgICAg -ICBpZiAoJEV4aXN0aW5nLnVzZXJuYW1lIC1lcSAkZW52OlVTRVJOQU1FIC1vciAkSXNTVSkgewog -ICAgICAgICAgICAgICAgICAgICAgICBSZW1vdmUtSXRlbSAkTG9ja0ZpbGUgLUZvcmNlCiAgICAg -ICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsgZG9j -SWQgPSAkRG9jSWQgfQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAg -UE9TVCAvYXBpL3VubG9jayAgJERvY0lkIGZyZWlnZWdlYmVuIiAtRm9yZWdyb3VuZENvbG9yIEdy -ZWVuCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg -U2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJMb2NrIGdlaG9lcnQgJCgkRXhpc3Rpbmcu -dXNlcm5hbWUpIiB9IDQwMwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0g -ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0 -cnVlOyBkb2NJZCA9ICREb2NJZCB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0 -Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS91bmxvY2sg -ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAg -ICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5N -ZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAk -UmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg -fQoKICAgICAgICAjIC0tLSBHRVQgL2FwaS9sb2NrcyAtLS0KICAgICAgICAjIExpc3RldCBhbGxl -IGFrdGl2ZW4gTG9ja3MgYXVmIChmdWVyIFVJLUFuemVpZ2UpCiAgICAgICAgaWYgKCRVcmxQYXRo -IC1lcSAnL2FwaS9sb2NrcycgLWFuZCAkTWV0aG9kIC1lcSAnR0VUJykgewogICAgICAgICAgICAk -TG9ja0RpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0YS8ubG9ja3MiCiAgICAgICAgICAgICRMb2Nr -cyA9IFtTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0XTo6bmV3KCkKICAgICAgICAgICAgaWYg -KFRlc3QtUGF0aCAkTG9ja0RpcikgewogICAgICAgICAgICAgICAgR2V0LUNoaWxkSXRlbSAkTG9j -a0RpciAtRmlsdGVyICIqLmxvY2siIHwgRm9yRWFjaC1PYmplY3QgewogICAgICAgICAgICAgICAg -ICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMb2NrID0gR2V0LUNvbnRlbnQgJF8u -RnVsbE5hbWUgLVJhdyAtRW5jb2RpbmcgVVRGOCB8IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAg -ICAgICAgICAgICAgICAgJExvY2tUaW1lID0gW0RhdGVUaW1lXTo6UGFyc2UoJExvY2subG9ja2Vk -QXQpCiAgICAgICAgICAgICAgICAgICAgICAgICRNaW51dGVzU2luY2UgPSAoKEdldC1EYXRlKSAt -ICRMb2NrVGltZSkuVG90YWxNaW51dGVzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkTWlu -dXRlc1NpbmNlIC1sdCAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZvaWRdJExv -Y2tzLkFkZChAewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY0lkID0gJExvY2su -ZG9jSWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZSA9ICRMb2NrLnVz -ZXJuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9ja2VkQXQgPSAkTG9jay5s -b2NrZWRBdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbnV0ZXMgPSBbTWF0aF06 -OlJvdW5kKCRNaW51dGVzU2luY2UsIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KQog -ICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAg -ICAgIyBBYmdlbGF1ZmVuZW4gTG9jayBhdWZyYWV1bWVuCiAgICAgICAgICAgICAgICAgICAgICAg -ICAgICBSZW1vdmUtSXRlbSAkXy5GdWxsTmFtZSAtRm9yY2UKICAgICAgICAgICAgICAgICAgICAg -ICAgfQogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2gge30KICAgICAgICAgICAgICAgIH0KICAg -ICAgICAgICAgfQogICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGxvY2tzID0gQCgk -TG9ja3MpIH0KICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUt -SG9zdCAiICBBUEkgIC9hcGkvbG9ja3MgICgkKCRMb2Nrcy5Db3VudCkgYWt0aXZlIExvY2tzKSIg -LUZvcmVncm91bmRDb2xvciBDeWFuCiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAg -ICAgICAjIC0tLSBQT1NUIC9hcGkvd3JpdGUgLS0tCiAgICAgICAgIyBCb2R5OiB7ICJwYXRoIjog -ImRhdGEvVmVya2Voci9EMDAxX3h4eC5qc29uIiwgImRhdGEiOiB7IC4uLiB9IH0KICAgICAgICBp -ZiAoJFVybFBhdGggLWVxICcvYXBpL3dyaXRlJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewog -ICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJEJvZHkgPSBSZWFkLUJvZHkgJFJlcXVl -c3QKICAgICAgICAgICAgICAgICRQYXJzZWQgPSAkQm9keSB8IENvbnZlcnRGcm9tLUpzb24KICAg -ICAgICAgICAgICAgICRSZWxQYXRoID0gJFBhcnNlZC5wYXRoCiAgICAgICAgICAgICAgICAkU2Fm -ZVBhdGggPSBSZXNvbHZlLVNhZmVQYXRoICRSZWxQYXRoCgogICAgICAgICAgICAgICAgaWYgKC1u -b3QgJFNhZmVQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBA -eyBlcnJvciA9ICJVbmd1ZWx0aWdlciBQZmFkIiB9IDQwMAogICAgICAgICAgICAgICAgfSBlbHNl -IHsKICAgICAgICAgICAgICAgICAgICAjIFNjaHJlaWJzY2h1dHo6IGdvdmVybmFuY2UuanNvbiBp -c3QgdWViZXIgL2FwaS93cml0ZSBuaWNodCBiZXNjaHJlaWJiYXIuCiAgICAgICAgICAgICAgICAg -ICAgaWYgKCRSZWxQYXRoIC1lcSAnZGF0YS9nb3Zlcm5hbmNlLmpzb24nKSB7CiAgICAgICAgICAg -ICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiZ292ZXJuYW5jZS5q -c29uIGthbm4gbnVyIHVlYmVyIC9hcGkvZ292ZXJuYW5jZSBnZWFlbmRlcnQgd2VyZGVuIiB9IDQw -MwogICAgICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAg -ICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg -ICAgICAgIyBTY2hyZWlic2NodXR6OiBjb25maWcuanNvbiBudXIgZHVyY2ggU3VwZXJVc2VyIGFl -bmRlcmJhci4KICAgICAgICAgICAgICAgICAgICBpZiAoJFJlbFBhdGggLWVxICdkYXRhL2NvbmZp -Zy5qc29uJykgewogICAgICAgICAgICAgICAgICAgICAgICAkR292ID0gR2V0LUdvdmVybmFuY2UK -ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtU3VwZXJVc2VyICRHb3YpKSB7 -CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9y -ID0gImNvbmZpZy5qc29uIGthbm4gbnVyIHZvbiBTdXBlclVzZXJuIGdlYWVuZGVydCB3ZXJkZW4i -IH0gNDAzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9T -VCAvYXBpL3dyaXRlICBjb25maWcuanNvbiBCZXJlY2h0aWd1bmcgdmVyd2VpZ2VydCAoJGVudjpV -U0VSTkFNRSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUK -ICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAg -ICAgICAgICAgICAgJERvY0RhdGEgPSAkUGFyc2VkLmRhdGEKCiAgICAgICAgICAgICAgICAgICAg -IyBVbnRlcnNjaGVpZHVuZzogSlNPTi1Eb2t1bWVudCAoUFNDdXN0b21PYmplY3QvSGFzaHRhYmxl -L0FycmF5KSB2cy4gUm9oZGF0ZW4gKFN0cmluZywgei5CLiBIVE1MKQogICAgICAgICAgICAgICAg -ICAgIGlmICgkRG9jRGF0YSAtaXMgW1BTQ3VzdG9tT2JqZWN0XSAtb3IgJERvY0RhdGEgLWlzIFtI -YXNodGFibGVdIC1vciAkRG9jRGF0YSAtaXMgW1N5c3RlbS5PYmplY3RbXV0pIHsKICAgICAgICAg -ICAgICAgICAgICAgICAgIyBTdGF0dXNhZW5kZXJ1bmcgYXVmICJGcmVpZ2VnZWJlbiIgb2RlciAi -QWJnZWxlaG50IiBlcmZvcmRlcnQgUmV2aWV3ZXItCiAgICAgICAgICAgICAgICAgICAgICAgICMg -b2RlciBTdXBlclVzZXItQmVyZWNodGlndW5nLiBEZXIgU2VydmVyIHBydWVmdCBkaWVzIHVuYWJo -YWVuZ2lnIHZvbSBDbGllbnQuCiAgICAgICAgICAgICAgICAgICAgICAgICROZXdTdGF0dXMgPSAk -bnVsbAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJERvY0RhdGEuc3RhdHVzKSB7ICROZXdT -dGF0dXMgPSAkRG9jRGF0YS5zdGF0dXMgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRO -ZXdTdGF0dXMgLWVxICdGcmVpZ2VnZWJlbicgLW9yICROZXdTdGF0dXMgLWVxICdBYmdlbGVobnQn -KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR292ID0gR2V0LUdvdmVybmFuY2UKICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICREb2NLYXQgPSAkbnVsbAogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgaWYgKCREb2NEYXRhLmthdGVnb3JpZSkgeyAkRG9jS2F0ID0gJERvY0RhdGEu -a2F0ZWdvcmllIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJc1NVID0gVGVzdC1TdXBl -clVzZXIgJEdvdgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElzUmV2ID0gVGVzdC1SZXZp -ZXdlciAkR292ICREb2NLYXQKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAk -SXNTVSAtYW5kIC1ub3QgJElzUmV2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -U2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJLZWluZSBCZXJlY2h0aWd1bmcgZnVlciBT -dGF0dXMgJyROZXdTdGF0dXMnIGluIEthdGVnb3JpZSAnJERvY0thdCciIH0gNDAzCiAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS93cml0 -ZSAgU3RhdHVzLUJlcmVjaHRpZ3VuZyB2ZXJ3ZWlnZXJ0ICgkZW52OlVTRVJOQU1FIC0+ICROZXdT -dGF0dXMpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u -dGludWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg -ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAkV3JpdGVDb250ZW50ID0gJERvY0RhdGEgfCBD -b252ZXJ0VG8tSnNvbiAtRGVwdGggMjAKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg -ICAgICAgICAgICAgICAgICAgICAjIFJvaGRhdGVuIChIVE1MLVN0cmluZ3MgZnVlciBTdGFydHNl -aXRlLCBIaWxmZS1JbmhhbHQsIGV0Yy4pCiAgICAgICAgICAgICAgICAgICAgICAgICRXcml0ZUNv -bnRlbnQgPSBbc3RyaW5nXSREb2NEYXRhCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAg -ICAgICAgICAgICAjIE9yZG5lciBlcnN0ZWxsZW4gZmFsbHMgbm9ldGlnCiAgICAgICAgICAgICAg -ICAgICAgJERpciA9IFtJTy5QYXRoXTo6R2V0RGlyZWN0b3J5TmFtZSgkU2FmZVBhdGgpCiAgICAg -ICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRlc3QtUGF0aCAkRGlyKSkgeyBOZXctSXRlbSAtSXRl -bVR5cGUgRGlyZWN0b3J5IC1QYXRoICREaXIgLUZvcmNlIHwgT3V0LU51bGwgfQoKICAgICAgICAg -ICAgICAgICAgICAjIFNjaHJlaWJzY2h1dHogYXVmaGViZW4sIEluaGFsdCBzY2hyZWliZW4sIFNj -aHJlaWJzY2h1dHogc2V0emVuCiAgICAgICAgICAgICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJFNh -ZmVQYXRoCiAgICAgICAgICAgICAgICAgICAgW0lPLkZpbGVdOjpXcml0ZUFsbFRleHQoJFNhZmVQ -YXRoLCAkV3JpdGVDb250ZW50LCBbVGV4dC5VVEY4RW5jb2RpbmddOjpuZXcoJGZhbHNlKSkKICAg -ICAgICAgICAgICAgICAgICBQcm90ZWN0LUZpbGUgJFNhZmVQYXRoCgogICAgICAgICAgICAgICAg -ICAgICRGaWxlSW5mbyA9IEdldC1JdGVtICRTYWZlUGF0aAogICAgICAgICAgICAgICAgICAgIFNl -bmQtSnNvbiAkUmVzcG9uc2UgQHsKICAgICAgICAgICAgICAgICAgICAgICAgb2sgICAgICAgPSAk -dHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICBwYXRoICAgICA9ICRSZWxQYXRoCiAgICAgICAg -ICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gJEZpbGVJbmZvLkxhc3RXcml0ZVRpbWVVdGMuVG9T -dHJpbmcoIm8iKQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBXcml0 -ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL3dyaXRlICAkUmVsUGF0aCIgLUZvcmVncm91bmRDb2xv -ciBHcmVlbgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIHsKICAgICAgICAg -ICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvd3JpdGUgICQoJF8uRXhjZXB0aW9u -Lk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgIyBTY2hyZWli -c2NodXR6IHdpZWRlcmhlcnN0ZWxsZW4gZmFsbHMgYXVmZ2Vob2JlbgogICAgICAgICAgICAgICAg -aWYgKCRTYWZlUGF0aCkgeyB0cnkgeyBQcm90ZWN0LUZpbGUgJFNhZmVQYXRoIH0gY2F0Y2gge30g -fQogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRf -LkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAg -ICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRp -bnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvZGVsZXRlIC0tLQogICAgICAg -ICMgQm9keTogeyAicGF0aCI6ICJkYXRhL1ZlcmtlaHIvRDAwMV94eHguanNvbiIgfQogICAgICAg -ICMgQXV0b3Jpc2llcnVuZzoKICAgICAgICAjICAgLSBBcnRpa2VsIChkYXRhL0thdC9EeHh4Lmpz -b24pIHVuZCBNZWRpYSAobWVkaWEvLi4uKTogSmVkZXIgYXV0aGVudGlmaXppZXJ0ZSBVc2VyCiAg -ICAgICAgIyAgICAgKFBhcGllcmtvcmItV29ya2Zsb3cgaW0gRnJvbnRlbmQgcHJ1ZWZ0IE5XLUtl -bm51bmcgKyBTb2Z0LURlbGV0ZSkKICAgICAgICAjICAgLSBTeXN0ZW1kYXRlaWVuIChjb25maWcu -anNvbiwgZ292ZXJuYW5jZS5qc29uLCAudHJhc2guanNvbiBldGMuKTogTnVyIFNVL0ZBCiAgICAg -ICAgaWYgKCRVcmxQYXRoIC1lcSAnL2FwaS9kZWxldGUnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1Qn -KSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAk -UmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNv -bgogICAgICAgICAgICAgICAgJFJlbFBhdGggPSAkUGFyc2VkLnBhdGgKCiAgICAgICAgICAgICAg -ICAjIFN5c3RlbWRhdGVpZW4gc2NodWV0emVuOiBOdXIgU3VwZXJVc2VyL0ZhY2hhdWZzaWNodAog -ICAgICAgICAgICAgICAgJElzU3lzdGVtRmlsZSA9ICgkUmVsUGF0aCAtZXEgJ2RhdGEvY29uZmln -Lmpzb24nIC1vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmVsUGF0aCAtZXEg -J2RhdGEvZ292ZXJuYW5jZS5qc29uJyAtb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgJFJlbFBhdGggLW1hdGNoICdeZGF0YVsvXFxdXC4nKQogICAgICAgICAgICAgICAgaWYgKCRJ -c1N5c3RlbUZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAkR292ID0gR2V0LUdvdmVybmFuY2UK -ICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1TdXBlclVzZXIgJEdvdikgLWFuZCAt -bm90IChUZXN0LUZhY2hhdWZzaWNodCAkR292KSkgewogICAgICAgICAgICAgICAgICAgICAgICBT -ZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIk51ciBTdXBlclVzZXIgdW5kIEZhY2hhdWZz -aWNodCBkdWVyZmVuIFN5c3RlbWRhdGVpZW4gbG9lc2NoZW4iIH0gNDAzCiAgICAgICAgICAgICAg -ICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvZGVsZXRlICBTeXN0ZW1kYXRl -aS1CZXJlY2h0aWd1bmcgdmVyd2VpZ2VydCAoJGVudjpVU0VSTkFNRSAtPiAkUmVsUGF0aCkiIC1G -b3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9z -ZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAg -fQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTYWZlUGF0aCA9IFJlc29sdmUt -U2FmZVBhdGggJFJlbFBhdGgKCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkU2FmZVBhdGgpIHsK -ICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIlVuZ3Vl -bHRpZ2VyIFBmYWQiIH0gNDAwCiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoVGVzdC1QYXRoICRT -YWZlUGF0aCkgewogICAgICAgICAgICAgICAgICAgIFVucHJvdGVjdC1GaWxlICRTYWZlUGF0aAog -ICAgICAgICAgICAgICAgICAgIFJlbW92ZS1JdGVtICRTYWZlUGF0aCAtUmVjdXJzZSAtRm9yY2UK -ICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IHBh -dGggPSAkUmVsUGF0aCB9CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIFBP -U1QgL2FwaS9kZWxldGUgICRSZWxQYXRoICh2b24gJGVudjpVU0VSTkFNRSkiIC1Gb3JlZ3JvdW5k -Q29sb3IgWWVsbG93CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAg -IFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiRGF0ZWkgbmljaHQgZ2VmdW5kZW4iIH0g -NDA0CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAg -ICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS9kZWxldGUgICQoJF8uRXhjZXB0aW9uLk1l -c3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1K -c29uICRSZXNwb25zZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0 -Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9 -IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQ -T1NUIC9hcGkvZmV0Y2gtaW1hZ2U/dXJsPWh0dHBzOi8vLi4uIC0tLQogICAgICAgICMgUHJveHk6 -IEV4dGVybmVzIEJpbGQgaGVydW50ZXJsYWRlbiAoZnVlciBQYXN0ZSBhdXMgV1dXLCB1bWdlaHQg -Q09SUykKICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2ZldGNoLWltYWdlJyAtYW5kICRN -ZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJEJv -ZHkgPSBSZWFkLUJvZHkgJFJlcXVlc3QKICAgICAgICAgICAgICAgICRQYXJzZWQgPSAkQm9keSB8 -IENvbnZlcnRGcm9tLUpzb24KICAgICAgICAgICAgICAgICRJbWdVcmwgPSAkUGFyc2VkLnVybAoK -ICAgICAgICAgICAgICAgICMgTnVyIGh0dHAvaHR0cHMgVVJMcyBlcmxhdWJlbgogICAgICAgICAg -ICAgICAgaWYgKCRJbWdVcmwgLW5vdG1hdGNoICdeaHR0cHM/Oi8vJykgewogICAgICAgICAgICAg -ICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiTnVyIEhUVFAvSFRUUFMgVVJM -cyBlcmxhdWJ0IiB9IDQwMAogICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAg -ICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg -ICAgICAjIFNTUkYtU2NodXR6OiBQcml2YXRlIElQcyB1bmQgbG9jYWxob3N0IGJsb2NraWVyZW4K -ICAgICAgICAgICAgICAgICRQYXJzZWRVcmkgPSBbU3lzdGVtLlVyaV0kSW1nVXJsCiAgICAgICAg -ICAgICAgICAkSW1nSG9zdCA9ICRQYXJzZWRVcmkuSG9zdAogICAgICAgICAgICAgICAgaWYgKCRJ -bWdIb3N0IC1tYXRjaCAnXihsb2NhbGhvc3R8MTI3XC58MTBcLnwxOTJcLjE2OFwufDE3MlwuKDFb -Ni05XXwyWzAtOV18M1swMV0pXC58MFwuMFwuMFwuMHwxNjlcLjI1NFwuKScgLW9yICRJbWdIb3N0 -IC1lcSAnOjoxJykgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsg -ZXJyb3IgPSAiWnVncmlmZiBhdWYgaW50ZXJuZSBBZHJlc3NlbiBuaWNodCBlcmxhdWJ0IiB9IDQw -MwogICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAg -ICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkV2ViQ2xpZW50 -ID0gTmV3LU9iamVjdCBTeXN0ZW0uTmV0LldlYkNsaWVudAogICAgICAgICAgICAgICAgJFdlYkNs -aWVudC5IZWFkZXJzLkFkZCgiVXNlci1BZ2VudCIsICJNb3ppbGxhLzUuMCBEUklWRS1Qb3J0YWwv -My42IikKICAgICAgICAgICAgICAgICRJbWdCeXRlcyA9ICRXZWJDbGllbnQuRG93bmxvYWREYXRh -KCRJbWdVcmwpCiAgICAgICAgICAgICAgICAkQ29udGVudFR5cGUgPSAkV2ViQ2xpZW50LlJlc3Bv -bnNlSGVhZGVyc1siQ29udGVudC1UeXBlIl0KICAgICAgICAgICAgICAgICRXZWJDbGllbnQuRGlz -cG9zZSgpCgogICAgICAgICAgICAgICAgIyBOdXIgQmlsZGVyIGR1cmNobGFzc2VuCiAgICAgICAg -ICAgICAgICBpZiAoJENvbnRlbnRUeXBlIC1ub3RsaWtlICdpbWFnZS8qJykgewogICAgICAgICAg -ICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiS2VpbiBCaWxkOiAkQ29u -dGVudFR5cGUiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAg -ICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg -ICAgICRSZXNwb25zZS5TdGF0dXNDb2RlID0gMjAwCiAgICAgICAgICAgICAgICAkUmVzcG9uc2Uu -Q29udGVudFR5cGUgPSAkQ29udGVudFR5cGUKICAgICAgICAgICAgICAgIEFkZC1TZWN1cml0eUhl -YWRlcnMgJFJlc3BvbnNlCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0 -ID0gJEltZ0J5dGVzLkxlbmd0aAogICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1dFN0cmVh -bS5Xcml0ZSgkSW1nQnl0ZXMsIDAsICRJbWdCeXRlcy5MZW5ndGgpCiAgICAgICAgICAgICAgICBX -cml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL2ZldGNoLWltYWdlICAkKCRJbWdCeXRlcy5MZW5n -dGgpIEJ5dGVzIHZvbiAkSW1nVXJsIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAg -fSBjYXRjaCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2Zl -dGNoLWltYWdlICAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIgLUZvcmVncm91bmRDb2xvciBSZWQK -ICAgICAgICAgICAgICAgIHRyeSB7IFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiRG93 -bmxvYWQgZmVobGdlc2NobGFnZW46ICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiB9IDUwMCB9IGNh -dGNoIHt9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkg -fSBjYXRjaCB7fQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgIyAtLS0g -UE9TVCAvYXBpL3VwbG9hZD9wYXRoPW1lZGlhL0QwMDEvYmlsZC5wbmcgLS0tCiAgICAgICAgIyBB -a3plcHRpZXJ0IHJvaGUgQnl0ZXMgdW5kIG11bHRpcGFydC9mb3JtLWRhdGEgKEZvcm1EYXRhKSBV -cGxvYWRzLgogICAgICAgICMgTnVyIHNpY2hlcmUgTWVkaWVuZm9ybWF0ZSBlcmxhdWJ0IChCaWxk -ZXIsIFBERiwgVmlkZW8sIEF1ZGlvKS4KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL3Vw -bG9hZCcgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAg -ICAgICAgICAgICMgUGZhZCBtYW51ZWxsIGF1cyBSYXctVVJMIGV4dHJhaGllcmVuIHVuZCBVVEYt -OCBkZWtvZGllcmVuCiAgICAgICAgICAgICAgICAjIChRdWVyeVN0cmluZyB2ZXJ3ZW5kZXQgYXVm -IG1hbmNoZW4gV2luZG93cy1TeXN0ZW1lbiBkaWUgU3lzdGVtY29kZXBhZ2Ugc3RhdHQgVVRGLTgp -CiAgICAgICAgICAgICAgICAkUmF3UXVlcnkgPSAkUmVxdWVzdC5VcmwuUXVlcnkKICAgICAgICAg -ICAgICAgICRQYXRoTWF0Y2ggPSBbcmVnZXhdOjpNYXRjaCgkUmF3UXVlcnksICdwYXRoPShbXiZd -KyknKQogICAgICAgICAgICAgICAgaWYgKC1ub3QgJFBhdGhNYXRjaC5TdWNjZXNzKSB7CiAgICAg -ICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJLZWluIHBhdGgt -UGFyYW1ldGVyIiB9IDQwMAogICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAg -ICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg -ICAgICRSZWxQYXRoID0gW1N5c3RlbS5VcmldOjpVbmVzY2FwZURhdGFTdHJpbmcoJFBhdGhNYXRj -aC5Hcm91cHNbMV0uVmFsdWUpCgogICAgICAgICAgICAgICAgIyBEYXRlaXR5cC1XaGl0ZWxpc3Q6 -IE51ciBzaWNoZXJlIE1lZGllbmZvcm1hdGUgZXJsYXViZW4KICAgICAgICAgICAgICAgICRVcGxv -YWRFeHQgPSBbSU8uUGF0aF06OkdldEV4dGVuc2lvbigkUmVsUGF0aCkuVG9Mb3dlcigpCiAgICAg -ICAgICAgICAgICAkQWxsb3dlZFVwbG9hZEV4dHMgPSBAKCcuanBnJywnLmpwZWcnLCcucG5nJywn -LmdpZicsJy53ZWJwJywnLnN2ZycsJy5pY28nLCcuYm1wJywKICAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgJy5wZGYnLCcubXA0JywnLndlYm0nLCcubXAzJywnLm9nZycsJy53 -YXYnKQogICAgICAgICAgICAgICAgaWYgKCRVcGxvYWRFeHQgLW5vdGluICRBbGxvd2VkVXBsb2Fk -RXh0cykgewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3Ig -PSAiRGF0ZWl0eXAgJyRVcGxvYWRFeHQnIGlzdCBuaWNodCBlcmxhdWJ0LiBFcmxhdWJ0OiBCaWxk -ZXIsIFBERiwgVmlkZW8sIEF1ZGlvLiIgfSA0MDAKICAgICAgICAgICAgICAgICAgICBXcml0ZS1I -b3N0ICIgIEVSUiAgUE9TVCAvYXBpL3VwbG9hZCAgRGF0ZWl0eXAgYWJnZWxlaG50OiAkVXBsb2Fk -RXh0ICgkUmVsUGF0aCkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAgICAg -JFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg -ICAgICAgfQoKICAgICAgICAgICAgICAgICRTYWZlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggJFJl -bFBhdGgKCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkU2FmZVBhdGgpIHsKICAgICAgICAgICAg -ICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIlVuZ3VlbHRpZ2VyIFBmYWQi -IH0gNDAwCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICMgT3Jk -bmVyIGVyc3RlbGxlbgogICAgICAgICAgICAgICAgICAgICREaXIgPSBbSU8uUGF0aF06OkdldERp -cmVjdG9yeU5hbWUoJFNhZmVQYXRoKQogICAgICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0 -LVBhdGggJERpcikpIHsgTmV3LUl0ZW0gLUl0ZW1UeXBlIERpcmVjdG9yeSAtUGF0aCAkRGlyIC1G -b3JjZSB8IE91dC1OdWxsIH0KCiAgICAgICAgICAgICAgICAgICAgIyBCb2R5IGxlc2VuIChtYXgu -IDEwMCBNQikKICAgICAgICAgICAgICAgICAgICAkTWF4VXBsb2FkQnl0ZXMgPSAxMDAgKiAxMDI0 -ICogMTAyNAogICAgICAgICAgICAgICAgICAgICRNZW1TdHJlYW0gPSBOZXctT2JqZWN0IElPLk1l -bW9yeVN0cmVhbQogICAgICAgICAgICAgICAgICAgICRSZXF1ZXN0LklucHV0U3RyZWFtLkNvcHlU -bygkTWVtU3RyZWFtKQogICAgICAgICAgICAgICAgICAgICRSYXdCeXRlcyA9ICRNZW1TdHJlYW0u -VG9BcnJheSgpCiAgICAgICAgICAgICAgICAgICAgJE1lbVN0cmVhbS5EaXNwb3NlKCkKCiAgICAg -ICAgICAgICAgICAgICAgaWYgKCRSYXdCeXRlcy5MZW5ndGggLWd0ICRNYXhVcGxvYWRCeXRlcykg -ewogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g -IkRhdGVpIHp1IGdyb3NzIChtYXguIDEwMCBNQikiIH0gNDEzCiAgICAgICAgICAgICAgICAgICAg -ICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvdXBsb2FkICBadSBncm9zczogJCgkUmF3 -Qnl0ZXMuTGVuZ3RoKSBCeXRlcyAoJFJlbFBhdGgpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAg -ICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAg -ICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAg -IyBNdWx0aXBhcnQvZm9ybS1kYXRhOiBEYXRlaS1CeXRlcyBhdXMgQm9keSBleHRyYWhpZXJlbgog -ICAgICAgICAgICAgICAgICAgICRDVCA9ICRSZXF1ZXN0LkNvbnRlbnRUeXBlCiAgICAgICAgICAg -ICAgICAgICAgaWYgKCRDVCAtYW5kICRDVC5Db250YWlucygnbXVsdGlwYXJ0L2Zvcm0tZGF0YScp -KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCb3VuZGFyeU1hdGNoID0gW3JlZ2V4XTo6TWF0 -Y2goJENULCAnYm91bmRhcnk9KC4rKScpCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkQm91 -bmRhcnlNYXRjaC5TdWNjZXNzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQm91bmRh -cnkgPSBbVGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0ZXMoJy0tJyArICRCb3VuZGFyeU1hdGNo -Lkdyb3Vwc1sxXS5WYWx1ZS5UcmltKCciJykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAj -IERhdGVpLVBhcnQgZmluZGVuOiBzdWNoZSBuYWNoICJmaWxlbmFtZT0iIGltIEhlYWRlciwgZXh0 -cmFoaWVyZSBEYXRlbiBuYWNoIFxyXG5cclxuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAk -UmF3ID0gJFJhd0J5dGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmVlZGxlID0gW1Rl -eHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVzKCdmaWxlbmFtZT0nKQogICAgICAgICAgICAgICAg -ICAgICAgICAgICAgJEhlYWRlckVuZCA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcyhb -Y2hhcl0xMyArIFtjaGFyXTEwICsgW2NoYXJdMTMgKyBbY2hhcl0xMCkKICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICMgRWluZmFjaGVyIEFuc2F0ejogS29udmVydGllcmUgenUgU3RyaW5nLCBm -aW5kZSBPZmZzZXRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUmF3U3RyID0gW1RleHQu -RW5jb2RpbmddOjpHZXRFbmNvZGluZygnaXNvLTg4NTktMScpLkdldFN0cmluZygkUmF3KQogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgJEZuUG9zID0gJFJhd1N0ci5JbmRleE9mKCdmaWxlbmFt -ZT0nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRGblBvcyAtZ2UgMCkgewogICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhU3RhcnQgPSAkUmF3U3RyLkluZGV4T2Yo -KFtjaGFyXTEzKS5Ub1N0cmluZygpICsgKFtjaGFyXTEwKS5Ub1N0cmluZygpICsgKFtjaGFyXTEz -KS5Ub1N0cmluZygpICsgKFtjaGFyXTEwKS5Ub1N0cmluZygpLCAkRm5Qb3MpICsgNAogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICMgRW5kZTogbmFlY2hzdGUgQm91bmRhcnkKICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAkQm91bmRhcnlTdHIgPSBbVGV4dC5FbmNvZGluZ106 -OkdldEVuY29kaW5nKCdpc28tODg1OS0xJykuR2V0U3RyaW5nKCRCb3VuZGFyeSkKICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAkRGF0YUVuZCA9ICRSYXdTdHIuSW5kZXhPZigkQm91bmRh -cnlTdHIsICREYXRhU3RhcnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRE -YXRhRW5kIC1ndCAkRGF0YVN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg -ICAgICMgRW50ZmVybmUgXHJcbiB2b3IgZGVyIEJvdW5kYXJ5CiAgICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICAgICAgIGlmICgkRGF0YUVuZCAtZ2UgMiAtYW5kICRSYXdTdHIuU3Vic3RyaW5n -KCREYXRhRW5kIC0gMiwgMikgLWVxIChbY2hhcl0xMykuVG9TdHJpbmcoKSArIChbY2hhcl0xMCku -VG9TdHJpbmcoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERh -dGFFbmQgLT0gMgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSYXdCeXRlcyA9ICRSYXdbJERhdGFTdGFydC4u -KCREYXRhRW5kIC0gMSldCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg -ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg -ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIFNjaHJlaWJzY2h1dHogYXVmaGVi -ZW4sIERhdGVpIHNjaHJlaWJlbiwgU2NocmVpYnNjaHV0eiBzZXR6ZW4KICAgICAgICAgICAgICAg -ICAgICBVbnByb3RlY3QtRmlsZSAkU2FmZVBhdGgKICAgICAgICAgICAgICAgICAgICBbSU8uRmls -ZV06OldyaXRlQWxsQnl0ZXMoJFNhZmVQYXRoLCAkUmF3Qnl0ZXMpCiAgICAgICAgICAgICAgICAg -ICAgUHJvdGVjdC1GaWxlICRTYWZlUGF0aAoKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24g -JFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IHBhdGggPSAkUmVsUGF0aCB9CiAgICAgICAgICAgICAg -ICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIFBPU1QgL2FwaS91cGxvYWQgICRSZWxQYXRoICgkKCRS -YXdCeXRlcy5MZW5ndGgpIEJ5dGVzKSIgLUZvcmVncm91bmRDb2xvciBHcmVlbgogICAgICAgICAg -ICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3Qg -IiAgRVJSICBQT1NUIC9hcGkvdXBsb2FkICAkKCRfLkV4Y2VwdGlvbi5NZXNzYWdlKSIgLUZvcmVn -cm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgIHRyeSB7IFNlbmQtSnNvbiAkUmVzcG9uc2Ug -QHsgZXJyb3IgPSAkXy5FeGNlcHRpb24uTWVzc2FnZSB9IDUwMCB9IGNhdGNoIHt9CiAgICAgICAg -ICAgIH0KICAgICAgICAgICAgdHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAg -ICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgIyAtLS0gUE9TVCAvYXBpL3NodXRk -b3duIC0tLQogICAgICAgICMgV2lyZCB2b24gYmVmb3JldW5sb2FkIGdlc2VuZGV0IChUYWItQ2xv -c2UgT0RFUiBGNS1SZWZyZXNoKS4KICAgICAgICAjIFN0YXJ0ZXQgZWluZSBHbmFkZW5mcmlzdCBz -dGF0dCBzb2ZvcnRpZ2VtIFNodXRkb3duLgogICAgICAgICMgQmVpIEY1L1JlZnJlc2gga29tbXQg -aW5uZXJoYWxiIHZvbiA1cyBlaW4gbmV1ZXIgSGVhcnRiZWF0IHVuZCBicmljaHQgYWIuCiAgICAg -ICAgIyBCZWkgZWNodGVtIFRhYi1DbG9zZSBrb21tdCBrZWluIEhlYXJ0YmVhdCAtPiBTZXJ2ZXIg -YmVlbmRldCBzaWNoIG5hY2ggR25hZGVuZnJpc3QuCiAgICAgICAgaWYgKCRVcmxQYXRoIC1lcSAn -L2FwaS9zaHV0ZG93bicgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgU2Vu -ZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlIH0KICAgICAgICAgICAgdHJ5IHsgJFJlc3Bv -bnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAgICAgICAgICAkc2NyaXB0OlNodXRkb3duUGVuZGlu -ZyA9IEdldC1EYXRlCiAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgUE9TVCAvYXBpL3NodXRkb3du -IC0gR25hZGVuZnJpc3QgZ2VzdGFydGV0ICgkKCRzY3JpcHQ6U2h1dGRvd25HcmFjZVNlYylzLCB3 -aXJkIGJlaSBIZWFydGJlYXQgYWJnZWJyb2NoZW4pIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdwog -ICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgIyA9PT09PT09PT09PT09PT09 -PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgICAgICAgIyBT -dGF0aXNjaGUgRGF0ZWllbiAobWl0IENhY2hlIGZ1ZXIgaGFldWZpZyBnZWxhZGVuZSBEYXRlaWVu -KQogICAgICAgICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 -PT09PT09PT09PT09PT09PQoKICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvJykgeyAkVXJsUGF0 -aCA9ICcvaW5kZXguaHRtbCcgfQogICAgICAgICRVcmxQYXRoID0gW1N5c3RlbS5VcmldOjpVbmVz -Y2FwZURhdGFTdHJpbmcoJFVybFBhdGgpCiAgICAgICAgIyBQYXRoLVRyYXZlcnNhbC1TY2h1dHo6 -IFJlc29sdmUtU2FmZVBhdGggcHJ1ZWZ0IENvbnRhaW5tZW50IGltIFJvb3QtVmVyemVpY2huaXMK -ICAgICAgICAkRmlsZVBhdGggPSBSZXNvbHZlLVNhZmVQYXRoICgkVXJsUGF0aC5UcmltU3RhcnQo -Jy8nKSkKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKCRGaWxlUGF0aCAtYW5kIChUZXN0 -LVBhdGggJEZpbGVQYXRoIC1QYXRoVHlwZSBMZWFmKSkgewogICAgICAgICAgICAgICAgJEV4dGVu -c2lvbiA9IFtJTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRGaWxlUGF0aCkuVG9Mb3dlcigpCiAgICAg -ICAgICAgICAgICAkQ29udGVudFR5cGUgPSAkTWltZVR5cGVzWyRFeHRlbnNpb25dCiAgICAgICAg -ICAgICAgICBpZiAoLW5vdCAkQ29udGVudFR5cGUpIHsgJENvbnRlbnRUeXBlID0gJ2FwcGxpY2F0 -aW9uL29jdGV0LXN0cmVhbScgfQoKICAgICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50VHlw -ZSA9ICRDb250ZW50VHlwZQogICAgICAgICAgICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAy -MDAKICAgICAgICAgICAgICAgIEFkZC1TZWN1cml0eUhlYWRlcnMgJFJlc3BvbnNlCgogICAgICAg -ICAgICAgICAgIyBDYWNoZSBmdWVyIHN0YXRpc2NoZSBEYXRlaWVuIChpbmRleC5odG1sLCBDU1Ms -IEpTLCBKU09OKQogICAgICAgICAgICAgICAgJEJ5dGVzID0gJG51bGwKICAgICAgICAgICAgICAg -ICRGaWxlTGFzdFdyaXRlID0gKEdldC1JdGVtICRGaWxlUGF0aCAtRm9yY2UpLkxhc3RXcml0ZVRp -bWVVdGMKICAgICAgICAgICAgICAgIGlmICgkc2NyaXB0OlN0YXRpY0NhY2hlLkNvbnRhaW5zS2V5 -KCRGaWxlUGF0aCkpIHsKICAgICAgICAgICAgICAgICAgICAkY2FjaGVkID0gJHNjcmlwdDpTdGF0 -aWNDYWNoZVskRmlsZVBhdGhdCiAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWNoZWQuTW9kaWZp -ZWQgLWdlICRGaWxlTGFzdFdyaXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRCeXRlcyA9 -ICRjYWNoZWQuQnl0ZXMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAg -ICAgICAgICAgICAgICBpZiAoLW5vdCAkQnl0ZXMpIHsKICAgICAgICAgICAgICAgICAgICAkQnl0 -ZXMgPSBbSU8uRmlsZV06OlJlYWRBbGxCeXRlcygkRmlsZVBhdGgpCiAgICAgICAgICAgICAgICAg -ICAgaWYgKCRFeHRlbnNpb24gLW1hdGNoICdeXC4oaHRtbHxjc3N8anN8anNvbnxzdmd8aWNvKSQn -KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzY3JpcHQ6U3RhdGljQ2FjaGVbJEZpbGVQYXRo -XSA9IEB7IEJ5dGVzID0gJEJ5dGVzOyBNb2RpZmllZCA9ICRGaWxlTGFzdFdyaXRlIH0KICAgICAg -ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUmVzcG9u -c2UuQ29udGVudExlbmd0aDY0ID0gJEJ5dGVzLkxlbmd0aAogICAgICAgICAgICAgICAgJFJlc3Bv -bnNlLk91dHB1dFN0cmVhbS5Xcml0ZSgkQnl0ZXMsIDAsICRCeXRlcy5MZW5ndGgpCiAgICAgICAg -ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9IDQwNAog -ICAgICAgICAgICAgICAgJE5vdEZvdW5kID0gW1RleHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVz -KCI0MDQgLSBEYXRlaSBuaWNodCBnZWZ1bmRlbjogJFVybFBhdGgiKQogICAgICAgICAgICAgICAg -JFJlc3BvbnNlLkNvbnRlbnRUeXBlID0gJ3RleHQvcGxhaW47IGNoYXJzZXQ9dXRmLTgnCiAgICAg -ICAgICAgICAgICAkUmVzcG9uc2UuQ29udGVudExlbmd0aDY0ID0gJE5vdEZvdW5kLkxlbmd0aAog -ICAgICAgICAgICAgICAgJFJlc3BvbnNlLk91dHB1dFN0cmVhbS5Xcml0ZSgkTm90Rm91bmQsIDAs -ICROb3RGb3VuZC5MZW5ndGgpCiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIDQwNCAgJFVy -bFBhdGgiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNo -IHsKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIERhdGVpICRVcmxQYXRoICAkKCRfLkV4 -Y2VwdGlvbi5NZXNzYWdlKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICB9CiAgICAgICAg -dHJ5IHsgJFJlc3BvbnNlLkNsb3NlKCkgfSBjYXRjaCB7fQogICAgfQp9IGNhdGNoIHsKICAgICMg -U3RyZytDIG9kZXIgRmVobGVyCn0gZmluYWxseSB7CiAgICAkTGlzdGVuZXIuU3RvcCgpCgogICAg -IyBTY2hyZWlic2NodXR6IGJlaW0gQmVlbmRlbiB3aWVkZXIgc2V0emVuCiAgICBXcml0ZS1Ib3N0 -ICIgIFNjaHJlaWJzY2h1dHogd2lyZCB3aWVkZXJoZXJnZXN0ZWxsdC4uLiIgLUZvcmVncm91bmRD -b2xvciBHcmF5CiAgICBHZXQtQ2hpbGRJdGVtICIkUm9vdFxkYXRhIiAtUmVjdXJzZSAtRmlsdGVy -ICIqLmpzb24iIC1FcnJvckFjdGlvbiBTaWxlbnRseUNvbnRpbnVlIHwgRm9yRWFjaC1PYmplY3Qg -eyBQcm90ZWN0LUZpbGUgJF8uRnVsbE5hbWUgfQogICAgUHJvdGVjdC1GaWxlIChKb2luLVBhdGgg -JFJvb3QgImluZGV4Lmh0bWwiKQoKICAgICMgTG9rYWxlIFRFTVAtS29waWUgYXVmcmFldW1lbiAo -dmVyaGluZGVydCB2ZXJ3YWlzdGUgRGF0ZWllbikKICAgICRUZW1wRGlyID0gSm9pbi1QYXRoICRl -bnY6VEVNUCAiRFJJVkVfU2VydmVyIgogICAgaWYgKFRlc3QtUGF0aCAkVGVtcERpcikgewogICAg -ICAgIFJlbW92ZS1JdGVtICRUZW1wRGlyIC1SZWN1cnNlIC1Gb3JjZSAtRXJyb3JBY3Rpb24gU2ls -ZW50bHlDb250aW51ZQogICAgICAgIFdyaXRlLUhvc3QgIiAgVEVNUC1Lb3BpZSBiZXJlaW5pZ3Qu -IiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKICAgIH0KCiAgICBXcml0ZS1Ib3N0ICIiCiAgICBXcml0 -ZS1Ib3N0ICJTZXJ2ZXIgYmVlbmRldC4iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93Cn0K +dCAtVXJpICdodHRwczovL3VwZGF0ZXMucmhpbm8ubnJ3L3JoaW5vL1N0YXR1c1F1b19VcGRhdGVz +L3Jhdy9icmFuY2gvbWFpbi9EUklWRS9WRVJTSU9OJyBgCiAgICAgICAgICAgICAgIC1Vc2VCYXNp +Y1BhcnNpbmcgLVRpbWVvdXRTZWMgMyAtRXJyb3JBY3Rpb24gU3RvcCkuQ29udGVudC5UcmltKCkK +ICAgICAgICAkc2NyaXB0OlJlbW90ZVZlcnNpb24gICA9ICRydgogICAgICAgICRzY3JpcHQ6VXBk +YXRlQXZhaWxhYmxlID0gKFtTeXN0ZW0uVmVyc2lvbl0kcnYgLWd0IFtTeXN0ZW0uVmVyc2lvbl0k +bG9jYWxWZXIpCiAgICAgICAgV3JpdGUtSG9zdCAiICBbVVBEQVRFLUNIRUNLXSBsb2thbD0kbG9j +YWxWZXIgcmVtb3RlPSRydiBhdmFpbGFibGU9JCgkc2NyaXB0OlVwZGF0ZUF2YWlsYWJsZSkiCiAg +ICB9IGNhdGNoIHsKICAgICAgICBXcml0ZS1Ib3N0ICIgIFtVUERBVEUtQ0hFQ0tdIG5pY2h0IGVy +cmVpY2hiYXIgKCQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpKSIKICAgIH0KfQpSZWZyZXNoLVVwZGF0 +ZUNoZWNrCgojIEhUVFAgTGlzdGVuZXIgc3RhcnRlbgokTGlzdGVuZXIgPSBOZXctT2JqZWN0IFN5 +c3RlbS5OZXQuSHR0cExpc3RlbmVyCiRMaXN0ZW5lci5QcmVmaXhlcy5BZGQoImh0dHA6Ly9sb2Nh +bGhvc3Q6JFBvcnQvIikKCnRyeSB7CiAgICAkTGlzdGVuZXIuU3RhcnQoKQp9IGNhdGNoIHsKICAg +IFdyaXRlLUhvc3QgIkZFSExFUjogUG9ydCAkUG9ydCBpc3QgYmVyZWl0cyBiZWxlZ3QuIiAtRm9y +ZWdyb3VuZENvbG9yIFJlZAogICAgV3JpdGUtSG9zdCAiVmVyc3VjaGVuIFNpZSBlaW5lbiBhbmRl +cmVuIFBvcnQ6IC5cc2VydmVyLnBzMSAtUG9ydCA4MDgxIiAtRm9yZWdyb3VuZENvbG9yIFllbGxv +dwogICAgUmVhZC1Ib3N0ICJFbnRlciBkcnVlY2tlbiB6dW0gQmVlbmRlbiIKICAgIGV4aXQgMQp9 +CgojIEJyb3dzZXIgb2VmZm5lbiAoQ2hyb21lID4gRWRnZSA+IFN0YW5kYXJkLUJyb3dzZXIpCiRC +cm93c2VyVXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6JFBvcnQiCiRCcm93c2VyT3BlbmVkID0gJGZh +bHNlCgojIENocm9tZS1QZmFkZSBwcnVlZmVuCiRDaHJvbWVQYXRocyA9IEAoCiAgICAiJHtlbnY6 +UHJvZ3JhbUZpbGVzfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9tZS5leGUiLAogICAg +IiR7ZW52OlByb2dyYW1GaWxlcyh4ODYpfVxHb29nbGVcQ2hyb21lXEFwcGxpY2F0aW9uXGNocm9t +ZS5leGUiLAogICAgIiRlbnY6TE9DQUxBUFBEQVRBXEdvb2dsZVxDaHJvbWVcQXBwbGljYXRpb25c +Y2hyb21lLmV4ZSIKKQpmb3JlYWNoICgkY3AgaW4gJENocm9tZVBhdGhzKSB7CiAgICBpZiAoVGVz +dC1QYXRoICRjcCkgewogICAgICAgIFN0YXJ0LVByb2Nlc3MgJGNwICRCcm93c2VyVXJsCiAgICAg +ICAgJEJyb3dzZXJPcGVuZWQgPSAkdHJ1ZQogICAgICAgIGJyZWFrCiAgICB9Cn0KCiMgRmFsbGJh +Y2s6IEVkZ2UKaWYgKC1ub3QgJEJyb3dzZXJPcGVuZWQpIHsKICAgICRFZGdlUGF0aCA9ICIke2Vu +djpQcm9ncmFtRmlsZXMoeDg2KX1cTWljcm9zb2Z0XEVkZ2VcQXBwbGljYXRpb25cbXNlZGdlLmV4 +ZSIKICAgIGlmIChUZXN0LVBhdGggJEVkZ2VQYXRoKSB7CiAgICAgICAgU3RhcnQtUHJvY2VzcyAk +RWRnZVBhdGggJEJyb3dzZXJVcmwKICAgICAgICAkQnJvd3Nlck9wZW5lZCA9ICR0cnVlCiAgICB9 +Cn0KCiMgRmFsbGJhY2s6IFN0YW5kYXJkLUJyb3dzZXIgdmlhIFN0YXJ0CmlmICgtbm90ICRCcm93 +c2VyT3BlbmVkKSB7CiAgICB0cnkgeyBTdGFydC1Qcm9jZXNzICRCcm93c2VyVXJsOyAkQnJvd3Nl +ck9wZW5lZCA9ICR0cnVlIH0gY2F0Y2gge30KfQoKaWYgKC1ub3QgJEJyb3dzZXJPcGVuZWQpIHsK +ICAgIFdyaXRlLUhvc3QgIiAgQnJvd3NlciBrb25udGUgbmljaHQgZ2VvZWZmbmV0IHdlcmRlbi4i +IC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93CiAgICBXcml0ZS1Ib3N0ICIgIEJpdHRlIG1hbnVlbGwg +b2VmZm5lbjogJEJyb3dzZXJVcmwiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93Cn0KCiMgSGVhcnRi +ZWF0LVRyYWNraW5nOiBTZXJ2ZXIgYmVlbmRldCBzaWNoIHdlbm4gMTAgTWludXRlbiBrZWluIEhl +YXJ0YmVhdCBrb21tdC4KIyBDbGllbnQgbnV0enQgZWluZW4gV2ViIFdvcmtlciBmdWVyIHp1dmVy +bGFlc3NpZ2UgSGVhcnRiZWF0cyBhdWNoIGJlaSBCYWNrZ3JvdW5kLVRhYnMuCiMgMTAgTWluIFRp +bWVvdXQgPSBtYXhpbWFsZSBSb2J1c3RoZWl0IGdlZ2VuIGplZGUgQXJ0IHZvbiBCcm93c2VyLVRo +cm90dGxpbmcuCiRzY3JpcHQ6TGFzdEhlYXJ0YmVhdCA9IEdldC1EYXRlCiRIZWFydGJlYXRUaW1l +b3V0U2VjID0gMTgwMCAgIyAzMCBNaW4gLSBUYWItV2VjaHNlbCBwYXVzaWVydCBIZWFydGJlYXQs +IE5ldXN0YXJ0IHBydWVmdCBQb3J0CiRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwgICMg +R25hZGVuZnJpc3QgZnVlciBTaHV0ZG93biAoRjUvUmVmcmVzaCB2cy4gVGFiLUNsb3NlKQokc2Ny +aXB0OlNodXRkb3duR3JhY2VTZWMgPSA1ICAgICAjIFNla3VuZGVuIFdhcnRlemVpdCBiZXZvciBT +ZXJ2ZXIgdGF0c2FlY2hsaWNoIGJlZW5kZXQgd2lyZAoKIyBSZXF1ZXN0LUxvb3AgKG5pY2h0LWJs +b2NraWVyZW5kIGZ1ZXIgSGVhcnRiZWF0LVRpbWVvdXQtUHJ1ZWZ1bmcpCnRyeSB7CiAgICB3aGls +ZSAoJExpc3RlbmVyLklzTGlzdGVuaW5nKSB7CiAgICAgICAgIyBBc3luY2hyb25lbiBSZXF1ZXN0 +IG1pdCBUaW1lb3V0IHdhcnRlbgogICAgICAgICRBc3luY1Jlc3VsdCA9ICRMaXN0ZW5lci5CZWdp +bkdldENvbnRleHQoJG51bGwsICRudWxsKQogICAgICAgIHdoaWxlICgtbm90ICRBc3luY1Jlc3Vs +dC5Bc3luY1dhaXRIYW5kbGUuV2FpdE9uZSgyMDAwKSkgewogICAgICAgICAgICAjIFBydWVmZW4g +b2IgZWluIFNodXRkb3duIGFuc3RlaHQgKGJlZm9yZXVubG9hZCBnZXNlbmRldCkKICAgICAgICAg +ICAgIyBHbmFkZW5mcmlzdDogRmFsbHMgU2VpdGUgbnVyIG5ldSBnZWxhZGVuIHdpcmQgKEY1KSwg +a29tbXQgaW5uZXJoYWxiCiAgICAgICAgICAgICMgdm9uIDUgU2VrdW5kZW4gZWluIG5ldWVyIEhl +YXJ0YmVhdCB1bmQgYnJpY2h0IGRlbiBTaHV0ZG93biBhYi4KICAgICAgICAgICAgaWYgKCRzY3Jp +cHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICAkR3JhY2VFbGFwc2VkID0gKChH +ZXQtRGF0ZSkgLSAkc2NyaXB0OlNodXRkb3duUGVuZGluZykuVG90YWxTZWNvbmRzCiAgICAgICAg +ICAgICAgICBpZiAoJEdyYWNlRWxhcHNlZCAtZ3QgJHNjcmlwdDpTaHV0ZG93bkdyYWNlU2VjKSB7 +CiAgICAgICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAgICAgICAgIFdy +aXRlLUhvc3QgIiAgU2h1dGRvd24tR25hZGVuZnJpc3QgYWJnZWxhdWZlbiAoJHtHcmFjZUVsYXBz +ZWR9cykgLSBrZWluIFJlbG9hZCBlcmthbm50LCBTZXJ2ZXIgd2lyZCBiZWVuZGV0Li4uIiAtRm9y +ZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICAgICAgICAgICRMaXN0ZW5lci5TdG9wKCkK +ICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9 +CiAgICAgICAgICAgICMgQWxsZSAyIFNla3VuZGVuIHBydWVmZW4gb2IgSGVhcnRiZWF0LVRpbWVv +dXQgZXJyZWljaHQKICAgICAgICAgICAgJFNlY1NpbmNlSGVhcnRiZWF0ID0gKChHZXQtRGF0ZSkg +LSAkc2NyaXB0Okxhc3RIZWFydGJlYXQpLlRvdGFsU2Vjb25kcwogICAgICAgICAgICBpZiAoJFNl +Y1NpbmNlSGVhcnRiZWF0IC1ndCAkSGVhcnRiZWF0VGltZW91dFNlYykgewogICAgICAgICAgICAg +ICAgV3JpdGUtSG9zdCAiIgogICAgICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBLZWluIEhlYXJ0 +YmVhdCBzZWl0ICQoW01hdGhdOjpSb3VuZCgkU2VjU2luY2VIZWFydGJlYXQpKXMgLSBUYWIgd3Vy +ZGUgZ2VzY2hsb3NzZW4sIFNlcnZlciB3aXJkIGJlZW5kZXQuLi4iIC1Gb3JlZ3JvdW5kQ29sb3Ig +WWVsbG93CiAgICAgICAgICAgICAgICAkTGlzdGVuZXIuU3RvcCgpCiAgICAgICAgICAgICAgICBi +cmVhawogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgtbm90ICRMaXN0ZW5lci5J +c0xpc3RlbmluZykgeyBicmVhayB9CiAgICAgICAgJENvbnRleHQgPSAkTGlzdGVuZXIuRW5kR2V0 +Q29udGV4dCgkQXN5bmNSZXN1bHQpCiAgICAgICAgJFJlcXVlc3QgPSAkQ29udGV4dC5SZXF1ZXN0 +CiAgICAgICAgJFJlc3BvbnNlID0gJENvbnRleHQuUmVzcG9uc2UKICAgICAgICAkTWV0aG9kID0g +JFJlcXVlc3QuSHR0cE1ldGhvZAogICAgICAgICRVcmxQYXRoID0gJFJlcXVlc3QuVXJsLkxvY2Fs +UGF0aAoKICAgICAgICAjIFBlbmRpbmcgU2h1dGRvd24gYmVpIGplZGVtIGVpbmdlaGVuZGVuIFJl +cXVlc3QgYWJicmVjaGVuCiAgICAgICAgIyAoU2VpdGUgd3VyZGUgbmV1IGdlbGFkZW4gdW5kIGZy +YWd0IERhdGVpZW4vQVBJIGFuKQogICAgICAgIGlmICgkc2NyaXB0OlNodXRkb3duUGVuZGluZyAt +YW5kICRVcmxQYXRoIC1uZSAnL2FwaS9zaHV0ZG93bicpIHsKICAgICAgICAgICAgV3JpdGUtSG9z +dCAiICBIQiAgIFNodXRkb3duIGFiZ2Vicm9jaGVuIC0gbmV1ZSBBbmZyYWdlIGVya2FubnQgKCRN +ZXRob2QgJFVybFBhdGgpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAgICAgICRzY3Jp +cHQ6U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICB9CgogICAgICAgICMgUmVxdWVzdC1M +b2dnaW5nIChudXIgQVBJLUF1ZnJ1ZmUsIG5pY2h0IEhlYXJ0YmVhdC9zdGF0aXNjaGUgRGF0ZWll +bikKICAgICAgICBpZiAoJFVybFBhdGguU3RhcnRzV2l0aCgnL2FwaS8nKSAtYW5kICRVcmxQYXRo +IC1uZSAnL2FwaS9oZWFydGJlYXQnKSB7CiAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgLS0+ICAk +TWV0aG9kICRVcmxQYXRoIiAtRm9yZWdyb3VuZENvbG9yIERhcmtHcmF5CiAgICAgICAgfQoKICAg +ICAgICAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 +PT09PT09PT09PT0KICAgICAgICAjIENPUlMgUHJlZmxpZ2h0CiAgICAgICAgIyA9PT09PT09PT09 +PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogICAg +ICAgIGlmICgkTWV0aG9kIC1lcSAnT1BUSU9OUycpIHsKICAgICAgICAgICAgJFJlc3BvbnNlLlN0 +YXR1c0NvZGUgPSAyMDQKICAgICAgICAgICAgQWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UK +ICAgICAgICAgICAgJFJlc3BvbnNlLkhlYWRlcnMuQWRkKCJBY2Nlc3MtQ29udHJvbC1BbGxvdy1N +ZXRob2RzIiwgIkdFVCwgUE9TVCwgT1BUSU9OUyIpCiAgICAgICAgICAgICRSZXNwb25zZS5IZWFk +ZXJzLkFkZCgiQWNjZXNzLUNvbnRyb2wtQWxsb3ctSGVhZGVycyIsICJDb250ZW50LVR5cGUiKQog +ICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAg +IH0KCiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 +PT09PT09PT09PT09PT09PT09CiAgICAgICAgIyBBUEktRW5kcHVua3RlCiAgICAgICAgIyA9PT09 +PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 +CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9oZWFydGJlYXQgLS0tCiAgICAgICAgIyBCcm93c2Vy +IHNlbmRldCBhbGxlIDUgU2VrdW5kZW4gZWluZW4gSGVhcnRiZWF0ICh2aWEgV2ViIFdvcmtlciwg +bmllIGdlZHJvc3NlbHQpCiAgICAgICAgIyBTZXJ2ZXIgZmFlaHJ0IGF1dG9tYXRpc2NoIGhlcnVu +dGVyIHdlbm4gMTAgTWludXRlbiBrZWluIEhlYXJ0YmVhdCBrb21tdAogICAgICAgICMgQW50d29y +dCBlbnRoYWVsdCBpZGxlLVNla3VuZGVuIHVuZCBXYXJudW5nIDYwcyB2b3IgU2h1dGRvd24KICAg +ICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2hlYXJ0YmVhdCcgLWFuZCAkTWV0aG9kIC1lcSAn +UE9TVCcpIHsKICAgICAgICAgICAgIyBQZW5kaW5nIFNodXRkb3duIGFiYnJlY2hlbiAoU2VpdGUg +d3VyZGUgbnVyIG5ldSBnZWxhZGVuLCBuaWNodCBnZXNjaGxvc3NlbikKICAgICAgICAgICAgaWYg +KCRzY3JpcHQ6U2h1dGRvd25QZW5kaW5nKSB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIg +IEhCICAgU2h1dGRvd24gYWJnZWJyb2NoZW4gLSBTZWl0ZSB3dXJkZSBuZXUgZ2VsYWRlbiAoRjUv +UmVmcmVzaCkiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JlZW4KICAgICAgICAgICAgICAgICRzY3JpcHQ6 +U2h1dGRvd25QZW5kaW5nID0gJG51bGwKICAgICAgICAgICAgfQogICAgICAgICAgICAkSWRsZVNl +YyA9IFtNYXRoXTo6Um91bmQoKChHZXQtRGF0ZSkgLSAkc2NyaXB0Okxhc3RIZWFydGJlYXQpLlRv +dGFsU2Vjb25kcykKICAgICAgICAgICAgJFdhcm5pbmdUaHJlc2hvbGQgPSAkSGVhcnRiZWF0VGlt +ZW91dFNlYyAtIDYwICAjIFdhcm51bmcgNjBzIHZvciBUaW1lb3V0CiAgICAgICAgICAgICRSZW1h +aW5pbmcgPSBbTWF0aF06Ok1heCgwLCAkSGVhcnRiZWF0VGltZW91dFNlYyAtICRJZGxlU2VjKQog +ICAgICAgICAgICAkc2NyaXB0Okxhc3RIZWFydGJlYXQgPSBHZXQtRGF0ZQogICAgICAgICAgICBp +ZiAoJElkbGVTZWMgLWd0ICRXYXJuaW5nVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICBTZW5k +LUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IGlkbGUgPSAkSWRsZVNlYzsgd2FybmluZyA9 +ICR0cnVlOyByZW1haW5pbmdTZWNvbmRzID0gJFJlbWFpbmluZyB9CiAgICAgICAgICAgICAgICBX +cml0ZS1Ib3N0ICIgIEhCICAgSGVhcnRiZWF0IG5hY2ggJHtJZGxlU2VjfXMgUGF1c2UgLSBXYXJu +dW5nIGdlc2VuZGV0IChub2NoICR7UmVtYWluaW5nfXMpIiAtRm9yZWdyb3VuZENvbG9yIFllbGxv +dwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25z +ZSBAeyBvayA9ICR0cnVlOyBpZGxlID0gJElkbGVTZWM7IHdhcm5pbmcgPSAkZmFsc2U7IHJlbWFp +bmluZ1NlY29uZHMgPSAkUmVtYWluaW5nIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVz +cG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgIyAt +LS0gR0VUIC9hcGkvZW52aXJvbiAtLS0KICAgICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2Vu +dmlyb24nIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsKICAgICAgICAgICAgUmVmcmVzaC1VcGRh +dGVDaGVjawogICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAgICAgICAgICAgICAg +ICB1c2VybmFtZSAgICAgICAgPSAkZW52OlVTRVJOQU1FCiAgICAgICAgICAgICAgICBjb21wdXRl +cm5hbWUgICAgPSAkZW52OkNPTVBVVEVSTkFNRQogICAgICAgICAgICAgICAgdXNlcmRvbWFpbiAg +ICAgID0gJGVudjpVU0VSRE9NQUlOCiAgICAgICAgICAgICAgICB1cGRhdGVBdmFpbGFibGUgPSAk +c2NyaXB0OlVwZGF0ZUF2YWlsYWJsZQogICAgICAgICAgICAgICAgcmVtb3RlVmVyc2lvbiAgID0g +JHNjcmlwdDpSZW1vdGVWZXJzaW9uCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFJlc3BvbnNl +LkNsb3NlKCkKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBBUEkgIC9hcGkvZW52aXJvbiAgKFVz +ZXI6ICRlbnY6VVNFUk5BTUUpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29u +dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL3NjYW4gLS0tCiAgICAgICAg +IyBTY2FubnQgYWxsZSBLYXRlZ29yaWUtVW50ZXJvcmRuZXIgdW5kIGxpZWZlcnQgRG9rdW1lbnQt +RGF0ZWllbgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvc2NhbicgLWFuZCAkTWV0aG9k +IC1lcSAnR0VUJykgewogICAgICAgICAgICAkRGF0YURpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0 +YSIKICAgICAgICAgICAgJFJlc3VsdCA9IFtTeXN0ZW0uQ29sbGVjdGlvbnMuQXJyYXlMaXN0XTo6 +bmV3KCkKCiAgICAgICAgICAgIGlmIChUZXN0LVBhdGggJERhdGFEaXIpIHsKICAgICAgICAgICAg +ICAgIEdldC1DaGlsZEl0ZW0gJERhdGFEaXIgLURpcmVjdG9yeSB8IEZvckVhY2gtT2JqZWN0IHsK +ICAgICAgICAgICAgICAgICAgICAkS2F0TmFtZSA9ICRfLk5hbWUKICAgICAgICAgICAgICAgICAg +ICBHZXQtQ2hpbGRJdGVtICRfLkZ1bGxOYW1lIC1GaWx0ZXIgIiouanNvbiIgfCBGb3JFYWNoLU9i +amVjdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIFt2b2lkXSRSZXN1bHQuQWRkKEB7CiAgICAg +ICAgICAgICAgICAgICAgICAgICAgICBrYXRlZ29yaWUgPSAkS2F0TmFtZQogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgZmlsZW5hbWUgID0gJF8uTmFtZQogICAgICAgICAgICAgICAgICAgICAg +ICAgICAgcGF0aCAgICAgID0gImRhdGEvJEthdE5hbWUvJCgkXy5OYW1lKSIKICAgICAgICAgICAg +ICAgICAgICAgICAgICAgIHNpemUgICAgICA9ICRfLkxlbmd0aAogICAgICAgICAgICAgICAgICAg +ICAgICAgICAgbW9kaWZpZWQgID0gJF8uTGFzdFdyaXRlVGltZVV0Yy5Ub1N0cmluZygibyIpCiAg +ICAgICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg +ICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7 +IGZpbGVzID0gQCgkUmVzdWx0KSB9CiAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAg +ICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJICAvYXBpL3NjYW4gICgkKCRSZXN1bHQuQ291bnQpIERv +a3VtZW50ZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAgICBjb250aW51ZQogICAg +ICAgIH0KCiAgICAgICAgIyAtLS0gR0VUIC9hcGkvZ292ZXJuYW5jZSAtLS0KICAgICAgICBpZiAo +JFVybFBhdGggLWVxICcvYXBpL2dvdmVybmFuY2UnIC1hbmQgJE1ldGhvZCAtZXEgJ0dFVCcpIHsK +ICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAgICAgICAgIGlmICgkR292KSB7 +CiAgICAgICAgICAgICAgICAkSXNTVSA9IFRlc3QtU3VwZXJVc2VyICRHb3YKICAgICAgICAgICAg +ICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsKICAgICAgICAgICAgICAgICAgICBnb3Zlcm5hbmNl +ID0gJEdvdgogICAgICAgICAgICAgICAgICAgIGN1cnJlbnRVc2VyID0gJGVudjpVU0VSTkFNRQog +ICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4gPSAkZW52OlVTRVJET01BSU4KICAgICAg +ICAgICAgICAgICAgICBpc1N1cGVyVXNlciA9ICRJc1NVCiAgICAgICAgICAgICAgICB9CiAgICAg +ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7CiAg +ICAgICAgICAgICAgICAgICAgZ292ZXJuYW5jZSA9ICRudWxsCiAgICAgICAgICAgICAgICAgICAg +Y3VycmVudFVzZXIgPSAkZW52OlVTRVJOQU1FCiAgICAgICAgICAgICAgICAgICAgY3VycmVudERv +bWFpbiA9ICRlbnY6VVNFUkRPTUFJTgogICAgICAgICAgICAgICAgICAgIGlzU3VwZXJVc2VyID0g +JHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkUmVzcG9u +c2UuQ2xvc2UoKQogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgL2FwaS9nb3Zlcm5hbmNl +ICAoVXNlcjogJGVudjpVU0VSTkFNRSwgU1U6ICQoVGVzdC1TdXBlclVzZXIgKEdldC1Hb3Zlcm5h +bmNlKSkpIiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29udGludWUKICAgICAg +ICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9nb3Zlcm5hbmNlIC0tLQogICAgICAgICMgTnVy +IFN1cGVyVXNlciBkYXJmIGdvdmVybmFuY2UuanNvbiBhZW5kZXJuCiAgICAgICAgaWYgKCRVcmxQ +YXRoIC1lcSAnL2FwaS9nb3Zlcm5hbmNlJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAg +ICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAg +ICAgICAgICAgICAkSXNTVSA9IFRlc3QtU3VwZXJVc2VyICRHb3YKICAgICAgICAgICAgICAgIGlm +ICgtbm90ICRJc1NVKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBA +eyBlcnJvciA9ICJOdXIgU3VwZXJVc2VyIGRhcmYgR292ZXJuYW5jZS1EYXRlbiBhZW5kZXJuIChV +c2VyOiAkZW52OlVTRVJOQU1FKSIgfSA0MDMKICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0 +ICIgIEVSUiAgUE9TVCAvYXBpL2dvdmVybmFuY2UgIEFCR0VMRUhOVCAoVXNlcjogJGVudjpVU0VS +TkFNRSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAg +ICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAgICAgICAgICAg +ICAgICAgaWYgKC1ub3QgJEJvZHkgLW9yICRCb2R5Lkxlbmd0aCAtbHQgMikgewogICAgICAgICAg +ICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIkxlZXJlciBSZXF1 +ZXN0LUJvZHkiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJS +ICBQT1NUIC9hcGkvZ292ZXJuYW5jZSAgTGVlcmVyIEJvZHkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVk +CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5l +d0dvdiA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgICAgICAgICBT +YXZlLUdvdmVybmFuY2UgJE5ld0dvdgogICAgICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24g +JFJlc3BvbnNlIEB7IG9rID0gJHRydWUgfQogICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1I +b3N0ICIgIEFQSSAgUE9TVCAvYXBpL2dvdmVybmFuY2UgIGFrdHVhbGlzaWVydCB2b24gJGVudjpV +U0VSTkFNRSAoJCgkQm9keS5MZW5ndGgpIEJ5dGVzKSIgLUZvcmVncm91bmRDb2xvciBHcmVlbgog +ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRj +aCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2dvdmVybmFu +Y2UgIEVYQ0VQVElPTjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3Ig +UmVkCiAgICAgICAgICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g +JF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAg +ICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29u +dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9sb2NrIC0tLQogICAgICAg +ICMgU2V0enQgZWluZW4gTG9jayBhdWYgZWluIERva3VtZW50IChQZXNzaW1pc3RpYyBMb2NraW5n +KQogICAgICAgICMgQm9keTogeyAiZG9jSWQiOiAiRDAwMSIgfQogICAgICAgICMgTG9jay1EYXRl +aWVuOiBkYXRhLy5sb2Nrcy9EMDAxLmxvY2sgKEpTT04gbWl0IHVzZXJuYW1lICsgdGltZXN0YW1w +KQogICAgICAgICMgTG9ja3MgdmVyZmFsbGVuIGF1dG9tYXRpc2NoIG5hY2ggMTAgTWludXRlbiAo +U3RhbGUtTG9jay1Qcm90ZWN0aW9uKQogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvbG9j +aycgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAg +ICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAgICAgICAgICAgICAkUGFyc2Vk +ID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAgICAgICAgICAgICAkRG9jSWQgPSAkUGFy +c2VkLmRvY0lkCiAgICAgICAgICAgICAgICAkTG9ja0RpciA9IEpvaW4tUGF0aCAkUm9vdCAiZGF0 +YS8ubG9ja3MiCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICRMb2NrRGlyKSkg +eyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICRMb2NrRGlyIC1Gb3JjZSB8IE91 +dC1OdWxsIH0KICAgICAgICAgICAgICAgICRMb2NrRmlsZSA9IEpvaW4tUGF0aCAkTG9ja0RpciAi +JERvY0lkLmxvY2siCgogICAgICAgICAgICAgICAgIyBQcnVlZmVuIG9iIGJlcmVpdHMgZ2Vsb2Nr +dCAodW5kIExvY2sgbmljaHQgYWJnZWxhdWZlbikKICAgICAgICAgICAgICAgIGlmIChUZXN0LVBh +dGggJExvY2tGaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4aXN0aW5nID0gR2V0LUNvbnRl +bnQgJExvY2tGaWxlIC1SYXcgLUVuY29kaW5nIFVURjggfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAg +ICAgICAgICAgICAgICAgJExvY2tUaW1lID0gW0RhdGVUaW1lXTo6UGFyc2UoJEV4aXN0aW5nLmxv +Y2tlZEF0KQogICAgICAgICAgICAgICAgICAgICRNaW51dGVzU2luY2UgPSAoKEdldC1EYXRlKSAt +ICRMb2NrVGltZSkuVG90YWxNaW51dGVzCgogICAgICAgICAgICAgICAgICAgIGlmICgkTWludXRl +c1NpbmNlIC1sdCAxMCAtYW5kICRFeGlzdGluZy51c2VybmFtZSAtbmUgJGVudjpVU0VSTkFNRSkg +ewogICAgICAgICAgICAgICAgICAgICAgICAjIExvY2sgaXN0IGFrdGl2IHVuZCB2b24gZWluZW0g +YW5kZXJlbiBVc2VyCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2Ug +QHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tlZCA9ICR0cnVlCiAgICAgICAgICAg +ICAgICAgICAgICAgICAgICBieSA9ICRFeGlzdGluZy51c2VybmFtZQogICAgICAgICAgICAgICAg +ICAgICAgICAgICAgc2luY2UgPSAkRXhpc3RpbmcubG9ja2VkQXQKICAgICAgICAgICAgICAgICAg +ICAgICAgICAgIG1pbnV0ZXMgPSBbTWF0aF06OlJvdW5kKCRNaW51dGVzU2luY2UsIDEpCiAgICAg +ICAgICAgICAgICAgICAgICAgIH0gNDA5CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25z +ZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJICBQT1NU +IC9hcGkvbG9jayAgJERvY0lkIEJFTEVHVCB2b24gJCgkRXhpc3RpbmcudXNlcm5hbWUpIiAtRm9y +ZWdyb3VuZENvbG9yIFllbGxvdwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAg +ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAjIExvY2sgYWJnZWxhdWZlbiBv +ZGVyIGVpZ2VuZXIgTG9jayAtPiB1ZWJlcnNjaHJlaWJlbgogICAgICAgICAgICAgICAgfQoKICAg +ICAgICAgICAgICAgICMgTG9jayBzZXR6ZW4KICAgICAgICAgICAgICAgICRMb2NrRGF0YSA9IEB7 +CiAgICAgICAgICAgICAgICAgICAgZG9jSWQgPSAkRG9jSWQKICAgICAgICAgICAgICAgICAgICB1 +c2VybmFtZSA9ICRlbnY6VVNFUk5BTUUKICAgICAgICAgICAgICAgICAgICBsb2NrZWRBdCA9IChH +ZXQtRGF0ZSkuVG9TdHJpbmcoIm8iKQogICAgICAgICAgICAgICAgfSB8IENvbnZlcnRUby1Kc29u +IC1Db21wcmVzcwogICAgICAgICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJExvY2tGaWxlCiAgICAg +ICAgICAgICAgICBbSU8uRmlsZV06OldyaXRlQWxsVGV4dCgkTG9ja0ZpbGUsICRMb2NrRGF0YSwg +W1RleHQuVVRGOEVuY29kaW5nXTo6bmV3KCRmYWxzZSkpCiAgICAgICAgICAgICAgICBTZW5kLUpz +b24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWU7IGRvY0lkID0gJERvY0lkIH0KICAgICAgICAgICAg +ICAgIFdyaXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvbG9jayAgJERvY0lkIGdlbG9ja3Qgdm9u +ICRlbnY6VVNFUk5BTUUiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAgICB9IGNhdGNo +IHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvbG9jayAgJCgk +Xy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAg +ICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9uLk1lc3Nh +Z2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7ICRSZXNw +b25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9Cgog +ICAgICAgICMgLS0tIFBPU1QgL2FwaS91bmxvY2sgLS0tCiAgICAgICAgIyBHaWJ0IGVpbmVuIExv +Y2sgZnJlaS4gQm9keTogeyAiZG9jSWQiOiAiRDAwMSIgfQogICAgICAgICMgTnVyIGRlciBMb2Nr +LUluaGFiZXIgb2RlciBTdXBlclVzZXIga2FubiBmcmVpZ2ViZW4KICAgICAgICBpZiAoJFVybFBh +dGggLWVxICcvYXBpL3VubG9jaycgLWFuZCAkTWV0aG9kIC1lcSAnUE9TVCcpIHsKICAgICAgICAg +ICAgdHJ5IHsKICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5ICRSZXF1ZXN0CiAgICAg +ICAgICAgICAgICAkUGFyc2VkID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1Kc29uCiAgICAgICAgICAg +ICAgICAkRG9jSWQgPSAkUGFyc2VkLmRvY0lkCiAgICAgICAgICAgICAgICAkTG9ja0ZpbGUgPSBK +b2luLVBhdGggJFJvb3QgImRhdGEvLmxvY2tzLyREb2NJZC5sb2NrIgoKICAgICAgICAgICAgICAg +IGlmIChUZXN0LVBhdGggJExvY2tGaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4aXN0aW5n +ID0gR2V0LUNvbnRlbnQgJExvY2tGaWxlIC1SYXcgLUVuY29kaW5nIFVURjggfCBDb252ZXJ0RnJv +bS1Kc29uCiAgICAgICAgICAgICAgICAgICAgJEdvdiA9IEdldC1Hb3Zlcm5hbmNlCiAgICAgICAg +ICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1cGVyVXNlciAkR292CgogICAgICAgICAgICAgICAg +ICAgIGlmICgkRXhpc3RpbmcudXNlcm5hbWUgLWVxICRlbnY6VVNFUk5BTUUgLW9yICRJc1NVKSB7 +CiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZS1JdGVtICRMb2NrRmlsZSAtRm9yY2UKICAg +ICAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBvayA9ICR0cnVlOyBk +b2NJZCA9ICREb2NJZCB9CiAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgQVBJ +ICBQT1NUIC9hcGkvdW5sb2NrICAkRG9jSWQgZnJlaWdlZ2ViZW4iIC1Gb3JlZ3JvdW5kQ29sb3Ig +R3JlZW4KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAg +ICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIkxvY2sgZ2Vob2VydCAkKCRFeGlzdGlu +Zy51c2VybmFtZSkiIH0gNDAzCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg +fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0g +JHRydWU7IGRvY0lkID0gJERvY0lkIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBj +YXRjaCB7CiAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3VubG9j +ayAgJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAg +ICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9u +Lk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7 +ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAg +ICB9CgogICAgICAgICMgLS0tIEdFVCAvYXBpL2xvY2tzIC0tLQogICAgICAgICMgTGlzdGV0IGFs +bGUgYWt0aXZlbiBMb2NrcyBhdWYgKGZ1ZXIgVUktQW56ZWlnZSkKICAgICAgICBpZiAoJFVybFBh +dGggLWVxICcvYXBpL2xvY2tzJyAtYW5kICRNZXRob2QgLWVxICdHRVQnKSB7CiAgICAgICAgICAg +ICRMb2NrRGlyID0gSm9pbi1QYXRoICRSb290ICJkYXRhLy5sb2NrcyIKICAgICAgICAgICAgJExv +Y2tzID0gW1N5c3RlbS5Db2xsZWN0aW9ucy5BcnJheUxpc3RdOjpuZXcoKQogICAgICAgICAgICBp +ZiAoVGVzdC1QYXRoICRMb2NrRGlyKSB7CiAgICAgICAgICAgICAgICBHZXQtQ2hpbGRJdGVtICRM +b2NrRGlyIC1GaWx0ZXIgIioubG9jayIgfCBGb3JFYWNoLU9iamVjdCB7CiAgICAgICAgICAgICAg +ICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgJExvY2sgPSBHZXQtQ29udGVudCAk +Xy5GdWxsTmFtZSAtUmF3IC1FbmNvZGluZyBVVEY4IHwgQ29udmVydEZyb20tSnNvbgogICAgICAg +ICAgICAgICAgICAgICAgICAkTG9ja1RpbWUgPSBbRGF0ZVRpbWVdOjpQYXJzZSgkTG9jay5sb2Nr +ZWRBdCkKICAgICAgICAgICAgICAgICAgICAgICAgJE1pbnV0ZXNTaW5jZSA9ICgoR2V0LURhdGUp +IC0gJExvY2tUaW1lKS5Ub3RhbE1pbnV0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRN +aW51dGVzU2luY2UgLWx0IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdm9pZF0k +TG9ja3MuQWRkKEB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jSWQgPSAkTG9j +ay5kb2NJZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lID0gJExvY2su +dXNlcm5hbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrZWRBdCA9ICRMb2Nr +LmxvY2tlZEF0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWludXRlcyA9IFtNYXRo +XTo6Um91bmQoJE1pbnV0ZXNTaW5jZSwgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0p +CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAjIEFiZ2VsYXVmZW5lbiBMb2NrIGF1ZnJhZXVtZW4KICAgICAgICAgICAgICAgICAgICAg +ICAgICAgIFJlbW92ZS1JdGVtICRfLkZ1bGxOYW1lIC1Gb3JjZQogICAgICAgICAgICAgICAgICAg +ICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCB7fQogICAgICAgICAgICAgICAgfQog +ICAgICAgICAgICB9CiAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgbG9ja3MgPSBA +KCRMb2NrcykgfQogICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICBXcml0 +ZS1Ib3N0ICIgIEFQSSAgL2FwaS9sb2NrcyAgKCQoJExvY2tzLkNvdW50KSBha3RpdmUgTG9ja3Mp +IiAtRm9yZWdyb3VuZENvbG9yIEN5YW4KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9Cgog +ICAgICAgICMgLS0tIFBPU1QgL2FwaS93cml0ZSAtLS0KICAgICAgICAjIEJvZHk6IHsgInBhdGgi +OiAiZGF0YS9WZXJrZWhyL0QwMDFfeHh4Lmpzb24iLCAiZGF0YSI6IHsgLi4uIH0gfQogICAgICAg +IGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvd3JpdGUnIC1hbmQgJE1ldGhvZCAtZXEgJ1BPU1QnKSB7 +CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkQm9keSA9IFJlYWQtQm9keSAkUmVx +dWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5IHwgQ29udmVydEZyb20tSnNvbgog +ICAgICAgICAgICAgICAgJFJlbFBhdGggPSAkUGFyc2VkLnBhdGgKICAgICAgICAgICAgICAgICRT +YWZlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggJFJlbFBhdGgKCiAgICAgICAgICAgICAgICBpZiAo +LW5vdCAkU2FmZVBhdGgpIHsKICAgICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNl +IEB7IGVycm9yID0gIlVuZ3VlbHRpZ2VyIFBmYWQiIH0gNDAwCiAgICAgICAgICAgICAgICB9IGVs +c2UgewogICAgICAgICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0ejogZ292ZXJuYW5jZS5qc29u +IGlzdCB1ZWJlciAvYXBpL3dyaXRlIG5pY2h0IGJlc2NocmVpYmJhci4KICAgICAgICAgICAgICAg +ICAgICBpZiAoJFJlbFBhdGggLWVxICdkYXRhL2dvdmVybmFuY2UuanNvbicpIHsKICAgICAgICAg +ICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJnb3Zlcm5hbmNl +Lmpzb24ga2FubiBudXIgdWViZXIgL2FwaS9nb3Zlcm5hbmNlIGdlYWVuZGVydCB3ZXJkZW4iIH0g +NDAzCiAgICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAg +ICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg +ICAgICAgICAjIFNjaHJlaWJzY2h1dHo6IGNvbmZpZy5qc29uIG51ciBkdXJjaCBTdXBlclVzZXIg +YWVuZGVyYmFyLgogICAgICAgICAgICAgICAgICAgIGlmICgkUmVsUGF0aCAtZXEgJ2RhdGEvY29u +ZmlnLmpzb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5j +ZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1TdXBlclVzZXIgJEdvdikp +IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJy +b3IgPSAiY29uZmlnLmpzb24ga2FubiBudXIgdm9uIFN1cGVyVXNlcm4gZ2VhZW5kZXJ0IHdlcmRl +biIgfSA0MDMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQ +T1NUIC9hcGkvd3JpdGUgIGNvbmZpZy5qc29uIEJlcmVjaHRpZ3VuZyB2ZXJ3ZWlnZXJ0ICgkZW52 +OlVTRVJOQU1FKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51 +ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAg +ICAgICAgICAgICAgICAkRG9jRGF0YSA9ICRQYXJzZWQuZGF0YQoKICAgICAgICAgICAgICAgICAg +ICAjIFVudGVyc2NoZWlkdW5nOiBKU09OLURva3VtZW50IChQU0N1c3RvbU9iamVjdC9IYXNodGFi +bGUvQXJyYXkpIHZzLiBSb2hkYXRlbiAoU3RyaW5nLCB6LkIuIEhUTUwpCiAgICAgICAgICAgICAg +ICAgICAgaWYgKCREb2NEYXRhIC1pcyBbUFNDdXN0b21PYmplY3RdIC1vciAkRG9jRGF0YSAtaXMg +W0hhc2h0YWJsZV0gLW9yICREb2NEYXRhIC1pcyBbU3lzdGVtLk9iamVjdFtdXSkgewogICAgICAg +ICAgICAgICAgICAgICAgICAjIFN0YXR1c2FlbmRlcnVuZyBhdWYgIkZyZWlnZWdlYmVuIiBvZGVy +ICJBYmdlbGVobnQiIGVyZm9yZGVydCBSZXZpZXdlci0KICAgICAgICAgICAgICAgICAgICAgICAg +IyBvZGVyIFN1cGVyVXNlci1CZXJlY2h0aWd1bmcuIERlciBTZXJ2ZXIgcHJ1ZWZ0IGRpZXMgdW5h +YmhhZW5naWcgdm9tIENsaWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1N0YXR1cyA9 +ICRudWxsCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkRG9jRGF0YS5zdGF0dXMpIHsgJE5l +d1N0YXR1cyA9ICREb2NEYXRhLnN0YXR1cyB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAo +JE5ld1N0YXR1cyAtZXEgJ0ZyZWlnZWdlYmVuJyAtb3IgJE5ld1N0YXR1cyAtZXEgJ0FiZ2VsZWhu +dCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5jZQog +ICAgICAgICAgICAgICAgICAgICAgICAgICAgJERvY0thdCA9ICRudWxsCiAgICAgICAgICAgICAg +ICAgICAgICAgICAgICBpZiAoJERvY0RhdGEua2F0ZWdvcmllKSB7ICREb2NLYXQgPSAkRG9jRGF0 +YS5rYXRlZ29yaWUgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElzU1UgPSBUZXN0LVN1 +cGVyVXNlciAkR292CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSXNSZXYgPSBUZXN0LVJl +dmlld2VyICRHb3YgJERvY0thdAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgtbm90 +ICRJc1NVIC1hbmQgLW5vdCAkSXNSZXYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIktlaW5lIEJlcmVjaHRpZ3VuZyBmdWVy +IFN0YXR1cyAnJE5ld1N0YXR1cycgaW4gS2F0ZWdvcmllICckRG9jS2F0JyIgfSA0MDMKICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL3dy +aXRlICBTdGF0dXMtQmVyZWNodGlndW5nIHZlcndlaWdlcnQgKCRlbnY6VVNFUk5BTUUgLT4gJE5l +d1N0YXR1cykiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj +b250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg +ICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICRXcml0ZUNvbnRlbnQgPSAkRG9jRGF0YSB8 +IENvbnZlcnRUby1Kc29uIC1EZXB0aCAyMAogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg +ICAgICAgICAgICAgICAgICAgICAgICMgUm9oZGF0ZW4gKEhUTUwtU3RyaW5ncyBmdWVyIFN0YXJ0 +c2VpdGUsIEhpbGZlLUluaGFsdCwgZXRjLikKICAgICAgICAgICAgICAgICAgICAgICAgJFdyaXRl +Q29udGVudCA9IFtzdHJpbmddJERvY0RhdGEKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAg +ICAgICAgICAgICAgICMgT3JkbmVyIGVyc3RlbGxlbiBmYWxscyBub2V0aWcKICAgICAgICAgICAg +ICAgICAgICAkRGlyID0gW0lPLlBhdGhdOjpHZXREaXJlY3RvcnlOYW1lKCRTYWZlUGF0aCkKICAg +ICAgICAgICAgICAgICAgICBpZiAoLW5vdCAoVGVzdC1QYXRoICREaXIpKSB7IE5ldy1JdGVtIC1J +dGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJERpciAtRm9yY2UgfCBPdXQtTnVsbCB9CgogICAgICAg +ICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0eiBhdWZoZWJlbiwgSW5oYWx0IHNjaHJlaWJlbiwg +U2NocmVpYnNjaHV0eiBzZXR6ZW4KICAgICAgICAgICAgICAgICAgICBVbnByb3RlY3QtRmlsZSAk +U2FmZVBhdGgKICAgICAgICAgICAgICAgICAgICBbSU8uRmlsZV06OldyaXRlQWxsVGV4dCgkU2Fm +ZVBhdGgsICRXcml0ZUNvbnRlbnQsIFtUZXh0LlVURjhFbmNvZGluZ106Om5ldygkZmFsc2UpKQog +ICAgICAgICAgICAgICAgICAgIFByb3RlY3QtRmlsZSAkU2FmZVBhdGgKCiAgICAgICAgICAgICAg +ICAgICAgJEZpbGVJbmZvID0gR2V0LUl0ZW0gJFNhZmVQYXRoCiAgICAgICAgICAgICAgICAgICAg +U2VuZC1Kc29uICRSZXNwb25zZSBAewogICAgICAgICAgICAgICAgICAgICAgICBvayAgICAgICA9 +ICR0cnVlCiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggICAgID0gJFJlbFBhdGgKICAgICAg +ICAgICAgICAgICAgICAgICAgbW9kaWZpZWQgPSAkRmlsZUluZm8uTGFzdFdyaXRlVGltZVV0Yy5U +b1N0cmluZygibyIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIFdy +aXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvd3JpdGUgICRSZWxQYXRoIiAtRm9yZWdyb3VuZENv +bG9yIEdyZWVuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAg +ICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS93cml0ZSAgJCgkXy5FeGNlcHRp +b24uTWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICAjIFNjaHJl +aWJzY2h1dHogd2llZGVyaGVyc3RlbGxlbiBmYWxscyBhdWZnZWhvYmVuCiAgICAgICAgICAgICAg +ICBpZiAoJFNhZmVQYXRoKSB7IHRyeSB7IFByb3RlY3QtRmlsZSAkU2FmZVBhdGggfSBjYXRjaCB7 +fSB9CiAgICAgICAgICAgICAgICB0cnkgeyBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0g +JF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBjYXRjaCB7fQogICAgICAgICAgICB9CiAgICAg +ICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgpIH0gY2F0Y2gge30KICAgICAgICAgICAgY29u +dGludWUKICAgICAgICB9CgogICAgICAgICMgLS0tIFBPU1QgL2FwaS9kZWxldGUgLS0tCiAgICAg +ICAgIyBCb2R5OiB7ICJwYXRoIjogImRhdGEvVmVya2Voci9EMDAxX3h4eC5qc29uIiB9CiAgICAg +ICAgIyBBdXRvcmlzaWVydW5nOgogICAgICAgICMgICAtIEFydGlrZWwgKGRhdGEvS2F0L0R4eHgu +anNvbikgdW5kIE1lZGlhIChtZWRpYS8uLi4pOiBKZWRlciBhdXRoZW50aWZpemllcnRlIFVzZXIK +ICAgICAgICAjICAgICAoUGFwaWVya29yYi1Xb3JrZmxvdyBpbSBGcm9udGVuZCBwcnVlZnQgTlct +S2VubnVuZyArIFNvZnQtRGVsZXRlKQogICAgICAgICMgICAtIFN5c3RlbWRhdGVpZW4gKGNvbmZp +Zy5qc29uLCBnb3Zlcm5hbmNlLmpzb24sIC50cmFzaC5qc29uIGV0Yy4pOiBOdXIgU1UvRkEKICAg +ICAgICBpZiAoJFVybFBhdGggLWVxICcvYXBpL2RlbGV0ZScgLWFuZCAkTWV0aG9kIC1lcSAnUE9T +VCcpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRCb2R5ID0gUmVhZC1Cb2R5 +ICRSZXF1ZXN0CiAgICAgICAgICAgICAgICAkUGFyc2VkID0gJEJvZHkgfCBDb252ZXJ0RnJvbS1K +c29uCiAgICAgICAgICAgICAgICAkUmVsUGF0aCA9ICRQYXJzZWQucGF0aAoKICAgICAgICAgICAg +ICAgICMgU3lzdGVtZGF0ZWllbiBzY2h1ZXR6ZW46IE51ciBTdXBlclVzZXIvRmFjaGF1ZnNpY2h0 +CiAgICAgICAgICAgICAgICAkSXNTeXN0ZW1GaWxlID0gKCRSZWxQYXRoIC1lcSAnZGF0YS9jb25m +aWcuanNvbicgLW9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZWxQYXRoIC1l +cSAnZGF0YS9nb3Zlcm5hbmNlLmpzb24nIC1vcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAkUmVsUGF0aCAtbWF0Y2ggJ15kYXRhWy9cXF1cLicpCiAgICAgICAgICAgICAgICBpZiAo +JElzU3lzdGVtRmlsZSkgewogICAgICAgICAgICAgICAgICAgICRHb3YgPSBHZXQtR292ZXJuYW5j +ZQogICAgICAgICAgICAgICAgICAgIGlmICgtbm90IChUZXN0LVN1cGVyVXNlciAkR292KSAtYW5k +IC1ub3QgKFRlc3QtRmFjaGF1ZnNpY2h0ICRHb3YpKSB7CiAgICAgICAgICAgICAgICAgICAgICAg +IFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiTnVyIFN1cGVyVXNlciB1bmQgRmFjaGF1 +ZnNpY2h0IGR1ZXJmZW4gU3lzdGVtZGF0ZWllbiBsb2VzY2hlbiIgfSA0MDMKICAgICAgICAgICAg +ICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS9kZWxldGUgIFN5c3RlbWRh +dGVpLUJlcmVjaHRpZ3VuZyB2ZXJ3ZWlnZXJ0ICgkZW52OlVTRVJOQU1FIC0+ICRSZWxQYXRoKSIg +LUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNs +b3NlKCkKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAg +ICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNhZmVQYXRoID0gUmVzb2x2 +ZS1TYWZlUGF0aCAkUmVsUGF0aAoKICAgICAgICAgICAgICAgIGlmICgtbm90ICRTYWZlUGF0aCkg +ewogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiVW5n +dWVsdGlnZXIgUGZhZCIgfSA0MDAKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChUZXN0LVBhdGgg +JFNhZmVQYXRoKSB7CiAgICAgICAgICAgICAgICAgICAgVW5wcm90ZWN0LUZpbGUgJFNhZmVQYXRo +CiAgICAgICAgICAgICAgICAgICAgUmVtb3ZlLUl0ZW0gJFNhZmVQYXRoIC1SZWN1cnNlIC1Gb3Jj +ZQogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsg +cGF0aCA9ICRSZWxQYXRoIH0KICAgICAgICAgICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAg +UE9TVCAvYXBpL2RlbGV0ZSAgJFJlbFBhdGggKHZvbiAkZW52OlVTRVJOQU1FKSIgLUZvcmVncm91 +bmRDb2xvciBZZWxsb3cKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg +ICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJEYXRlaSBuaWNodCBnZWZ1bmRlbiIg +fSA0MDQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCB7CiAgICAgICAgICAg +ICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgUE9TVCAvYXBpL2RlbGV0ZSAgJCgkXy5FeGNlcHRpb24u +TWVzc2FnZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAgICAgICAgICAgICAgICB0cnkgeyBTZW5k +LUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gJF8uRXhjZXB0aW9uLk1lc3NhZ2UgfSA1MDAgfSBj +YXRjaCB7fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyeSB7ICRSZXNwb25zZS5DbG9zZSgp +IH0gY2F0Y2gge30KICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgICMgLS0t +IFBPU1QgL2FwaS9mZXRjaC1pbWFnZT91cmw9aHR0cHM6Ly8uLi4gLS0tCiAgICAgICAgIyBQcm94 +eTogRXh0ZXJuZXMgQmlsZCBoZXJ1bnRlcmxhZGVuIChmdWVyIFBhc3RlIGF1cyBXV1csIHVtZ2Vo +dCBDT1JTKQogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkvZmV0Y2gtaW1hZ2UnIC1hbmQg +JE1ldGhvZCAtZXEgJ1BPU1QnKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAk +Qm9keSA9IFJlYWQtQm9keSAkUmVxdWVzdAogICAgICAgICAgICAgICAgJFBhcnNlZCA9ICRCb2R5 +IHwgQ29udmVydEZyb20tSnNvbgogICAgICAgICAgICAgICAgJEltZ1VybCA9ICRQYXJzZWQudXJs +CgogICAgICAgICAgICAgICAgIyBOdXIgaHR0cC9odHRwcyBVUkxzIGVybGF1YmVuCiAgICAgICAg +ICAgICAgICBpZiAoJEltZ1VybCAtbm90bWF0Y2ggJ15odHRwcz86Ly8nKSB7CiAgICAgICAgICAg +ICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJOdXIgSFRUUC9IVFRQUyBV +UkxzIGVybGF1YnQiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkK +ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAg +ICAgICAgICMgU1NSRi1TY2h1dHo6IFByaXZhdGUgSVBzIHVuZCBsb2NhbGhvc3QgYmxvY2tpZXJl +bgogICAgICAgICAgICAgICAgJFBhcnNlZFVyaSA9IFtTeXN0ZW0uVXJpXSRJbWdVcmwKICAgICAg +ICAgICAgICAgICRJbWdIb3N0ID0gJFBhcnNlZFVyaS5Ib3N0CiAgICAgICAgICAgICAgICBpZiAo +JEltZ0hvc3QgLW1hdGNoICdeKGxvY2FsaG9zdHwxMjdcLnwxMFwufDE5MlwuMTY4XC58MTcyXC4o +MVs2LTldfDJbMC05XXwzWzAxXSlcLnwwXC4wXC4wXC4wfDE2OVwuMjU0XC4pJyAtb3IgJEltZ0hv +c3QgLWVxICc6OjEnKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBA +eyBlcnJvciA9ICJadWdyaWZmIGF1ZiBpbnRlcm5lIEFkcmVzc2VuIG5pY2h0IGVybGF1YnQiIH0g +NDAzCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkKICAgICAgICAgICAgICAg +ICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRXZWJDbGll +bnQgPSBOZXctT2JqZWN0IFN5c3RlbS5OZXQuV2ViQ2xpZW50CiAgICAgICAgICAgICAgICAkV2Vi +Q2xpZW50LkhlYWRlcnMuQWRkKCJVc2VyLUFnZW50IiwgIk1vemlsbGEvNS4wIERSSVZFLVBvcnRh +bC8zLjYiKQogICAgICAgICAgICAgICAgJEltZ0J5dGVzID0gJFdlYkNsaWVudC5Eb3dubG9hZERh +dGEoJEltZ1VybCkKICAgICAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICRXZWJDbGllbnQuUmVz +cG9uc2VIZWFkZXJzWyJDb250ZW50LVR5cGUiXQogICAgICAgICAgICAgICAgJFdlYkNsaWVudC5E +aXNwb3NlKCkKCiAgICAgICAgICAgICAgICAjIE51ciBCaWxkZXIgZHVyY2hsYXNzZW4KICAgICAg +ICAgICAgICAgIGlmICgkQ29udGVudFR5cGUgLW5vdGxpa2UgJ2ltYWdlLyonKSB7CiAgICAgICAg +ICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJLZWluIEJpbGQ6ICRD +b250ZW50VHlwZSIgfSA0MDAKICAgICAgICAgICAgICAgICAgICAkUmVzcG9uc2UuQ2xvc2UoKQog +ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg +ICAgICAgJFJlc3BvbnNlLlN0YXR1c0NvZGUgPSAyMDAKICAgICAgICAgICAgICAgICRSZXNwb25z +ZS5Db250ZW50VHlwZSA9ICRDb250ZW50VHlwZQogICAgICAgICAgICAgICAgQWRkLVNlY3VyaXR5 +SGVhZGVycyAkUmVzcG9uc2UKICAgICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50TGVuZ3Ro +NjQgPSAkSW1nQnl0ZXMuTGVuZ3RoCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3Ry +ZWFtLldyaXRlKCRJbWdCeXRlcywgMCwgJEltZ0J5dGVzLkxlbmd0aCkKICAgICAgICAgICAgICAg +IFdyaXRlLUhvc3QgIiAgQVBJICBQT1NUIC9hcGkvZmV0Y2gtaW1hZ2UgICQoJEltZ0J5dGVzLkxl +bmd0aCkgQnl0ZXMgdm9uICRJbWdVcmwiIC1Gb3JlZ3JvdW5kQ29sb3IgQ3lhbgogICAgICAgICAg +ICB9IGNhdGNoIHsKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgRVJSICBQT1NUIC9hcGkv +ZmV0Y2gtaW1hZ2UgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJl +ZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJvciA9ICJE +b3dubG9hZCBmZWhsZ2VzY2hsYWdlbjogJCgkXy5FeGNlcHRpb24uTWVzc2FnZSkiIH0gNTAwIH0g +Y2F0Y2gge30KICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2Uo +KSB9IGNhdGNoIHt9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0t +LSBQT1NUIC9hcGkvdXBsb2FkP3BhdGg9bWVkaWEvRDAwMS9iaWxkLnBuZyAtLS0KICAgICAgICAj +IEFremVwdGllcnQgcm9oZSBCeXRlcyB1bmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSAoRm9ybURhdGEp +IFVwbG9hZHMuCiAgICAgICAgIyBOdXIgc2ljaGVyZSBNZWRpZW5mb3JtYXRlIGVybGF1YnQgKEJp +bGRlciwgUERGLCBWaWRlbywgQXVkaW8pLgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy9hcGkv +dXBsb2FkJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICB0cnkgewogICAg +ICAgICAgICAgICAgIyBQZmFkIG1hbnVlbGwgYXVzIFJhdy1VUkwgZXh0cmFoaWVyZW4gdW5kIFVU +Ri04IGRla29kaWVyZW4KICAgICAgICAgICAgICAgICMgKFF1ZXJ5U3RyaW5nIHZlcndlbmRldCBh +dWYgbWFuY2hlbiBXaW5kb3dzLVN5c3RlbWVuIGRpZSBTeXN0ZW1jb2RlcGFnZSBzdGF0dCBVVEYt +OCkKICAgICAgICAgICAgICAgICRSYXdRdWVyeSA9ICRSZXF1ZXN0LlVybC5RdWVyeQogICAgICAg +ICAgICAgICAgJFBhdGhNYXRjaCA9IFtyZWdleF06Ok1hdGNoKCRSYXdRdWVyeSwgJ3BhdGg9KFte +Jl0rKScpCiAgICAgICAgICAgICAgICBpZiAoLW5vdCAkUGF0aE1hdGNoLlN1Y2Nlc3MpIHsKICAg +ICAgICAgICAgICAgICAgICBTZW5kLUpzb24gJFJlc3BvbnNlIEB7IGVycm9yID0gIktlaW4gcGF0 +aC1QYXJhbWV0ZXIiIH0gNDAwCiAgICAgICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNsb3NlKCkK +ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAg +ICAgICAgJFJlbFBhdGggPSBbU3lzdGVtLlVyaV06OlVuZXNjYXBlRGF0YVN0cmluZygkUGF0aE1h +dGNoLkdyb3Vwc1sxXS5WYWx1ZSkKCiAgICAgICAgICAgICAgICAjIERhdGVpdHlwLVdoaXRlbGlz +dDogTnVyIHNpY2hlcmUgTWVkaWVuZm9ybWF0ZSBlcmxhdWJlbgogICAgICAgICAgICAgICAgJFVw +bG9hZEV4dCA9IFtJTy5QYXRoXTo6R2V0RXh0ZW5zaW9uKCRSZWxQYXRoKS5Ub0xvd2VyKCkKICAg +ICAgICAgICAgICAgICRBbGxvd2VkVXBsb2FkRXh0cyA9IEAoJy5qcGcnLCcuanBlZycsJy5wbmcn +LCcuZ2lmJywnLndlYnAnLCcuc3ZnJywnLmljbycsJy5ibXAnLAogICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgICAnLnBkZicsJy5tcDQnLCcud2VibScsJy5tcDMnLCcub2dnJywn +LndhdicpCiAgICAgICAgICAgICAgICBpZiAoJFVwbG9hZEV4dCAtbm90aW4gJEFsbG93ZWRVcGxv +YWRFeHRzKSB7CiAgICAgICAgICAgICAgICAgICAgU2VuZC1Kc29uICRSZXNwb25zZSBAeyBlcnJv +ciA9ICJEYXRlaXR5cCAnJFVwbG9hZEV4dCcgaXN0IG5pY2h0IGVybGF1YnQuIEVybGF1YnQ6IEJp +bGRlciwgUERGLCBWaWRlbywgQXVkaW8uIiB9IDQwMAogICAgICAgICAgICAgICAgICAgIFdyaXRl +LUhvc3QgIiAgRVJSICBQT1NUIC9hcGkvdXBsb2FkICBEYXRlaXR5cCBhYmdlbGVobnQ6ICRVcGxv +YWRFeHQgKCRSZWxQYXRoKSIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgICAgICAg +ICAkUmVzcG9uc2UuQ2xvc2UoKQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAg +ICAgICAgICB9CgogICAgICAgICAgICAgICAgJFNhZmVQYXRoID0gUmVzb2x2ZS1TYWZlUGF0aCAk +UmVsUGF0aAoKICAgICAgICAgICAgICAgIGlmICgtbm90ICRTYWZlUGF0aCkgewogICAgICAgICAg +ICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3IgPSAiVW5ndWVsdGlnZXIgUGZh +ZCIgfSA0MDAKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIyBP +cmRuZXIgZXJzdGVsbGVuCiAgICAgICAgICAgICAgICAgICAgJERpciA9IFtJTy5QYXRoXTo6R2V0 +RGlyZWN0b3J5TmFtZSgkU2FmZVBhdGgpCiAgICAgICAgICAgICAgICAgICAgaWYgKC1ub3QgKFRl +c3QtUGF0aCAkRGlyKSkgeyBOZXctSXRlbSAtSXRlbVR5cGUgRGlyZWN0b3J5IC1QYXRoICREaXIg +LUZvcmNlIHwgT3V0LU51bGwgfQoKICAgICAgICAgICAgICAgICAgICAjIEJvZHkgbGVzZW4gKG1h +eC4gMTAwIE1CKQogICAgICAgICAgICAgICAgICAgICRNYXhVcGxvYWRCeXRlcyA9IDEwMCAqIDEw +MjQgKiAxMDI0CiAgICAgICAgICAgICAgICAgICAgJE1lbVN0cmVhbSA9IE5ldy1PYmplY3QgSU8u +TWVtb3J5U3RyZWFtCiAgICAgICAgICAgICAgICAgICAgJFJlcXVlc3QuSW5wdXRTdHJlYW0uQ29w +eVRvKCRNZW1TdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgJFJhd0J5dGVzID0gJE1lbVN0cmVh +bS5Ub0FycmF5KCkKICAgICAgICAgICAgICAgICAgICAkTWVtU3RyZWFtLkRpc3Bvc2UoKQoKICAg +ICAgICAgICAgICAgICAgICBpZiAoJFJhd0J5dGVzLkxlbmd0aCAtZ3QgJE1heFVwbG9hZEJ5dGVz +KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlbmQtSnNvbiAkUmVzcG9uc2UgQHsgZXJyb3Ig +PSAiRGF0ZWkgenUgZ3Jvc3MgKG1heC4gMTAwIE1CKSIgfSA0MTMKICAgICAgICAgICAgICAgICAg +ICAgICAgV3JpdGUtSG9zdCAiICBFUlIgIFBPU1QgL2FwaS91cGxvYWQgIFp1IGdyb3NzOiAkKCRS +YXdCeXRlcy5MZW5ndGgpIEJ5dGVzICgkUmVsUGF0aCkiIC1Gb3JlZ3JvdW5kQ29sb3IgUmVkCiAg +ICAgICAgICAgICAgICAgICAgICAgICRSZXNwb25zZS5DbG9zZSgpCiAgICAgICAgICAgICAgICAg +ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAg +ICAjIE11bHRpcGFydC9mb3JtLWRhdGE6IERhdGVpLUJ5dGVzIGF1cyBCb2R5IGV4dHJhaGllcmVu +CiAgICAgICAgICAgICAgICAgICAgJENUID0gJFJlcXVlc3QuQ29udGVudFR5cGUKICAgICAgICAg +ICAgICAgICAgICBpZiAoJENUIC1hbmQgJENULkNvbnRhaW5zKCdtdWx0aXBhcnQvZm9ybS1kYXRh +JykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJvdW5kYXJ5TWF0Y2ggPSBbcmVnZXhdOjpN +YXRjaCgkQ1QsICdib3VuZGFyeT0oLispJykKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRC +b3VuZGFyeU1hdGNoLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCb3Vu +ZGFyeSA9IFtUZXh0LkVuY29kaW5nXTo6VVRGOC5HZXRCeXRlcygnLS0nICsgJEJvdW5kYXJ5TWF0 +Y2guR3JvdXBzWzFdLlZhbHVlLlRyaW0oJyInKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICMgRGF0ZWktUGFydCBmaW5kZW46IHN1Y2hlIG5hY2ggImZpbGVuYW1lPSIgaW0gSGVhZGVyLCBl +eHRyYWhpZXJlIERhdGVuIG5hY2ggXHJcblxyXG4KICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICRSYXcgPSAkUmF3Qnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZWVkbGUgPSBb +VGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0ZXMoJ2ZpbGVuYW1lPScpCiAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAkSGVhZGVyRW5kID0gW1RleHQuRW5jb2RpbmddOjpVVEY4LkdldEJ5dGVz +KFtjaGFyXTEzICsgW2NoYXJdMTAgKyBbY2hhcl0xMyArIFtjaGFyXTEwKQogICAgICAgICAgICAg +ICAgICAgICAgICAgICAgIyBFaW5mYWNoZXIgQW5zYXR6OiBLb252ZXJ0aWVyZSB6dSBTdHJpbmcs +IGZpbmRlIE9mZnNldHMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSYXdTdHIgPSBbVGV4 +dC5FbmNvZGluZ106OkdldEVuY29kaW5nKCdpc28tODg1OS0xJykuR2V0U3RyaW5nKCRSYXcpCiAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAkRm5Qb3MgPSAkUmF3U3RyLkluZGV4T2YoJ2ZpbGVu +YW1lPScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJEZuUG9zIC1nZSAwKSB7CiAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGFTdGFydCA9ICRSYXdTdHIuSW5kZXhP +ZigoW2NoYXJdMTMpLlRvU3RyaW5nKCkgKyAoW2NoYXJdMTApLlRvU3RyaW5nKCkgKyAoW2NoYXJd +MTMpLlRvU3RyaW5nKCkgKyAoW2NoYXJdMTApLlRvU3RyaW5nKCksICRGblBvcykgKyA0CiAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFbmRlOiBuYWVjaHN0ZSBCb3VuZGFyeQogICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICRCb3VuZGFyeVN0ciA9IFtUZXh0LkVuY29kaW5n +XTo6R2V0RW5jb2RpbmcoJ2lzby04ODU5LTEnKS5HZXRTdHJpbmcoJEJvdW5kYXJ5KQogICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICREYXRhRW5kID0gJFJhd1N0ci5JbmRleE9mKCRCb3Vu +ZGFyeVN0ciwgJERhdGFTdGFydCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo +JERhdGFFbmQgLWd0ICREYXRhU3RhcnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg +ICAgICAgIyBFbnRmZXJuZSBcclxuIHZvciBkZXIgQm91bmRhcnkKICAgICAgICAgICAgICAgICAg +ICAgICAgICAgICAgICAgICAgaWYgKCREYXRhRW5kIC1nZSAyIC1hbmQgJFJhd1N0ci5TdWJzdHJp +bmcoJERhdGFFbmQgLSAyLCAyKSAtZXEgKFtjaGFyXTEzKS5Ub1N0cmluZygpICsgKFtjaGFyXTEw +KS5Ub1N0cmluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk +RGF0YUVuZCAtPSAyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg +ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJhd0J5dGVzID0gJFJhd1skRGF0YVN0YXJ0 +Li4oJERhdGFFbmQgLSAxKV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAg +ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg +ICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgU2NocmVpYnNjaHV0eiBhdWZo +ZWJlbiwgRGF0ZWkgc2NocmVpYmVuLCBTY2hyZWlic2NodXR6IHNldHplbgogICAgICAgICAgICAg +ICAgICAgIFVucHJvdGVjdC1GaWxlICRTYWZlUGF0aAogICAgICAgICAgICAgICAgICAgIFtJTy5G +aWxlXTo6V3JpdGVBbGxCeXRlcygkU2FmZVBhdGgsICRSYXdCeXRlcykKICAgICAgICAgICAgICAg +ICAgICBQcm90ZWN0LUZpbGUgJFNhZmVQYXRoCgogICAgICAgICAgICAgICAgICAgIFNlbmQtSnNv +biAkUmVzcG9uc2UgQHsgb2sgPSAkdHJ1ZTsgcGF0aCA9ICRSZWxQYXRoIH0KICAgICAgICAgICAg +ICAgICAgICBXcml0ZS1Ib3N0ICIgIEFQSSAgUE9TVCAvYXBpL3VwbG9hZCAgJFJlbFBhdGggKCQo +JFJhd0J5dGVzLkxlbmd0aCkgQnl0ZXMpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuCiAgICAgICAg +ICAgICAgICB9CiAgICAgICAgICAgIH0gY2F0Y2ggewogICAgICAgICAgICAgICAgV3JpdGUtSG9z +dCAiICBFUlIgIFBPU1QgL2FwaS91cGxvYWQgICQoJF8uRXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9y +ZWdyb3VuZENvbG9yIFJlZAogICAgICAgICAgICAgICAgdHJ5IHsgU2VuZC1Kc29uICRSZXNwb25z +ZSBAeyBlcnJvciA9ICRfLkV4Y2VwdGlvbi5NZXNzYWdlIH0gNTAwIH0gY2F0Y2gge30KICAgICAg +ICAgICAgfQogICAgICAgICAgICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAg +ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjIC0tLSBQT1NUIC9hcGkvc2h1 +dGRvd24gLS0tCiAgICAgICAgIyBXaXJkIHZvbiBiZWZvcmV1bmxvYWQgZ2VzZW5kZXQgKFRhYi1D +bG9zZSBPREVSIEY1LVJlZnJlc2gpLgogICAgICAgICMgU3RhcnRldCBlaW5lIEduYWRlbmZyaXN0 +IHN0YXR0IHNvZm9ydGlnZW0gU2h1dGRvd24uCiAgICAgICAgIyBCZWkgRjUvUmVmcmVzaCBrb21t +dCBpbm5lcmhhbGIgdm9uIDVzIGVpbiBuZXVlciBIZWFydGJlYXQgdW5kIGJyaWNodCBhYi4KICAg +ICAgICAjIEJlaSBlY2h0ZW0gVGFiLUNsb3NlIGtvbW10IGtlaW4gSGVhcnRiZWF0IC0+IFNlcnZl +ciBiZWVuZGV0IHNpY2ggbmFjaCBHbmFkZW5mcmlzdC4KICAgICAgICBpZiAoJFVybFBhdGggLWVx +ICcvYXBpL3NodXRkb3duJyAtYW5kICRNZXRob2QgLWVxICdQT1NUJykgewogICAgICAgICAgICBT +ZW5kLUpzb24gJFJlc3BvbnNlIEB7IG9rID0gJHRydWUgfQogICAgICAgICAgICB0cnkgeyAkUmVz +cG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICAgICAgICAgICRzY3JpcHQ6U2h1dGRvd25QZW5k +aW5nID0gR2V0LURhdGUKICAgICAgICAgICAgV3JpdGUtSG9zdCAiICBQT1NUIC9hcGkvc2h1dGRv +d24gLSBHbmFkZW5mcmlzdCBnZXN0YXJ0ZXQgKCQoJHNjcmlwdDpTaHV0ZG93bkdyYWNlU2VjKXMs +IHdpcmQgYmVpIEhlYXJ0YmVhdCBhYmdlYnJvY2hlbikiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93 +CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICAjID09PT09PT09PT09PT09 +PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAgICAgICAj +IFN0YXRpc2NoZSBEYXRlaWVuIChtaXQgQ2FjaGUgZnVlciBoYWV1ZmlnIGdlbGFkZW5lIERhdGVp +ZW4pCiAgICAgICAgIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 +PT09PT09PT09PT09PT09PT09CgogICAgICAgIGlmICgkVXJsUGF0aCAtZXEgJy8nKSB7ICRVcmxQ +YXRoID0gJy9pbmRleC5odG1sJyB9CiAgICAgICAgJFVybFBhdGggPSBbU3lzdGVtLlVyaV06OlVu +ZXNjYXBlRGF0YVN0cmluZygkVXJsUGF0aCkKICAgICAgICAjIFBhdGgtVHJhdmVyc2FsLVNjaHV0 +ejogUmVzb2x2ZS1TYWZlUGF0aCBwcnVlZnQgQ29udGFpbm1lbnQgaW0gUm9vdC1WZXJ6ZWljaG5p +cwogICAgICAgICRGaWxlUGF0aCA9IFJlc29sdmUtU2FmZVBhdGggKCRVcmxQYXRoLlRyaW1TdGFy +dCgnLycpKQoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoJEZpbGVQYXRoIC1hbmQgKFRl +c3QtUGF0aCAkRmlsZVBhdGggLVBhdGhUeXBlIExlYWYpKSB7CiAgICAgICAgICAgICAgICAkRXh0 +ZW5zaW9uID0gW0lPLlBhdGhdOjpHZXRFeHRlbnNpb24oJEZpbGVQYXRoKS5Ub0xvd2VyKCkKICAg +ICAgICAgICAgICAgICRDb250ZW50VHlwZSA9ICRNaW1lVHlwZXNbJEV4dGVuc2lvbl0KICAgICAg +ICAgICAgICAgIGlmICgtbm90ICRDb250ZW50VHlwZSkgeyAkQ29udGVudFR5cGUgPSAnYXBwbGlj +YXRpb24vb2N0ZXQtc3RyZWFtJyB9CgogICAgICAgICAgICAgICAgJFJlc3BvbnNlLkNvbnRlbnRU +eXBlID0gJENvbnRlbnRUeXBlCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuU3RhdHVzQ29kZSA9 +IDIwMAogICAgICAgICAgICAgICAgQWRkLVNlY3VyaXR5SGVhZGVycyAkUmVzcG9uc2UKCiAgICAg +ICAgICAgICAgICAjIENhY2hlIGZ1ZXIgc3RhdGlzY2hlIERhdGVpZW4gKGluZGV4Lmh0bWwsIENT +UywgSlMsIEpTT04pCiAgICAgICAgICAgICAgICAkQnl0ZXMgPSAkbnVsbAogICAgICAgICAgICAg +ICAgJEZpbGVMYXN0V3JpdGUgPSAoR2V0LUl0ZW0gJEZpbGVQYXRoIC1Gb3JjZSkuTGFzdFdyaXRl +VGltZVV0YwogICAgICAgICAgICAgICAgaWYgKCRzY3JpcHQ6U3RhdGljQ2FjaGUuQ29udGFpbnNL +ZXkoJEZpbGVQYXRoKSkgewogICAgICAgICAgICAgICAgICAgICRjYWNoZWQgPSAkc2NyaXB0OlN0 +YXRpY0NhY2hlWyRGaWxlUGF0aF0KICAgICAgICAgICAgICAgICAgICBpZiAoJGNhY2hlZC5Nb2Rp +ZmllZCAtZ2UgJEZpbGVMYXN0V3JpdGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJ5dGVz +ID0gJGNhY2hlZC5CeXRlcwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K +ICAgICAgICAgICAgICAgIGlmICgtbm90ICRCeXRlcykgewogICAgICAgICAgICAgICAgICAgICRC +eXRlcyA9IFtJTy5GaWxlXTo6UmVhZEFsbEJ5dGVzKCRGaWxlUGF0aCkKICAgICAgICAgICAgICAg +ICAgICBpZiAoJEV4dGVuc2lvbiAtbWF0Y2ggJ15cLihodG1sfGNzc3xqc3xqc29ufHN2Z3xpY28p +JCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNjcmlwdDpTdGF0aWNDYWNoZVskRmlsZVBh +dGhdID0gQHsgQnl0ZXMgPSAkQnl0ZXM7IE1vZGlmaWVkID0gJEZpbGVMYXN0V3JpdGUgfQogICAg +ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRSZXNw +b25zZS5Db250ZW50TGVuZ3RoNjQgPSAkQnl0ZXMuTGVuZ3RoCiAgICAgICAgICAgICAgICAkUmVz +cG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCRCeXRlcywgMCwgJEJ5dGVzLkxlbmd0aCkKICAgICAg +ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRSZXNwb25zZS5TdGF0dXNDb2RlID0gNDA0 +CiAgICAgICAgICAgICAgICAkTm90Rm91bmQgPSBbVGV4dC5FbmNvZGluZ106OlVURjguR2V0Qnl0 +ZXMoIjQwNCAtIERhdGVpIG5pY2h0IGdlZnVuZGVuOiAkVXJsUGF0aCIpCiAgICAgICAgICAgICAg +ICAkUmVzcG9uc2UuQ29udGVudFR5cGUgPSAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcKICAg +ICAgICAgICAgICAgICRSZXNwb25zZS5Db250ZW50TGVuZ3RoNjQgPSAkTm90Rm91bmQuTGVuZ3Ro +CiAgICAgICAgICAgICAgICAkUmVzcG9uc2UuT3V0cHV0U3RyZWFtLldyaXRlKCROb3RGb3VuZCwg +MCwgJE5vdEZvdW5kLkxlbmd0aCkKICAgICAgICAgICAgICAgIFdyaXRlLUhvc3QgIiAgNDA0ICAk +VXJsUGF0aCIgLUZvcmVncm91bmRDb2xvciBSZWQKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0 +Y2ggewogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgIEVSUiAgRGF0ZWkgJFVybFBhdGggICQoJF8u +RXhjZXB0aW9uLk1lc3NhZ2UpIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgICAgIH0KICAgICAg +ICB0cnkgeyAkUmVzcG9uc2UuQ2xvc2UoKSB9IGNhdGNoIHt9CiAgICB9Cn0gY2F0Y2ggewogICAg +IyBTdHJnK0Mgb2RlciBGZWhsZXIKfSBmaW5hbGx5IHsKICAgICRMaXN0ZW5lci5TdG9wKCkKCiAg +ICAjIFNjaHJlaWJzY2h1dHogYmVpbSBCZWVuZGVuIHdpZWRlciBzZXR6ZW4KICAgIFdyaXRlLUhv +c3QgIiAgU2NocmVpYnNjaHV0eiB3aXJkIHdpZWRlcmhlcmdlc3RlbGx0Li4uIiAtRm9yZWdyb3Vu +ZENvbG9yIEdyYXkKICAgIEdldC1DaGlsZEl0ZW0gIiRSb290XGRhdGEiIC1SZWN1cnNlIC1GaWx0 +ZXIgIiouanNvbiIgLUVycm9yQWN0aW9uIFNpbGVudGx5Q29udGludWUgfCBGb3JFYWNoLU9iamVj +dCB7IFByb3RlY3QtRmlsZSAkXy5GdWxsTmFtZSB9CiAgICBQcm90ZWN0LUZpbGUgKEpvaW4tUGF0 +aCAkUm9vdCAiaW5kZXguaHRtbCIpCgogICAgIyBMb2thbGUgVEVNUC1Lb3BpZSBhdWZyYWV1bWVu +ICh2ZXJoaW5kZXJ0IHZlcndhaXN0ZSBEYXRlaWVuKQogICAgJFRlbXBEaXIgPSBKb2luLVBhdGgg +JGVudjpURU1QICJEUklWRV9TZXJ2ZXIiCiAgICBpZiAoVGVzdC1QYXRoICRUZW1wRGlyKSB7CiAg +ICAgICAgUmVtb3ZlLUl0ZW0gJFRlbXBEaXIgLVJlY3Vyc2UgLUZvcmNlIC1FcnJvckFjdGlvbiBT +aWxlbnRseUNvbnRpbnVlCiAgICAgICAgV3JpdGUtSG9zdCAiICBURU1QLUtvcGllIGJlcmVpbmln +dC4iIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogICAgfQoKICAgIFdyaXRlLUhvc3QgIiIKICAgIFdy +aXRlLUhvc3QgIlNlcnZlciBiZWVuZGV0LiIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKfQo=