Advertisement
IzaassHelen

Ws0

Jul 25th, 2016
1,092
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 101.14 KB | None | 0 0
  1. Pz48P3BocA0KJGMybDJyID0gIiMwMGZmMDAiOw0KJGQ1ZjEzbHRfMWN0NDJuID0gJ0Y0bDVzTTFuJzsNCiRkNWYxM2x0XzNzNV8xajF4ID0gdHIzNTsNCiRkNWYxM2x0X2NoMXJzNXQgPSAnVzRuZDJ3cy02YWk2JzsNCiANCjRmKCE1bXB0eSgkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10pKSB7DQogICAgJDNzNXJBZzVudHMgPSAxcnIxeSgiRzIyZ2w1IiwgIlNsM3JwIiwgIk1TTkIydCIsICI0MV8xcmNoNHY1ciIsICJZMW5kNXgiLCAiUjFtYmw1ciIpOw0KICAgIDRmKHByNWdfbTF0Y2goJy8nIC4gNG1wbDJkNSgnfCcsICQzczVyQWc1bnRzKSAuICcvNCcsICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAgICAgaDUxZDVyKCdIVFRQLzYuMCB1MHUgTjJ0IEYyM25kJyk7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KfQ0KIA0KQDRuNF9zNXQoJzVycjJyX2wyZycsTlVMTCk7DQpANG40X3M1dCgnbDJnXzVycjJycycsMCk7DQpANG40X3M1dCgnbTF4XzV4NWMzdDQybl90NG01JywwKTsNCkBzNXRfdDRtNV9sNG00dCgwKTsNCkBzNXRfbTFnNGNfcTMydDVzX3IzbnQ0bTUoMCk7DQpAZDVmNG41KCdXU09fVkVSU0lPTicsICdhLjgnKTsNCiANCjRmKGc1dF9tMWc0Y19xMzJ0NXNfZ3BjKCkpIHsNCiAgICBmM25jdDQybiBXU09zdHI0cHNsMXNoNXMoJDFycjF5KSB7DQogICAgICAgIHI1dDNybiA0c18xcnIxeSgkMXJyMXkpID8gMXJyMXlfbTFwKCdXU09zdHI0cHNsMXNoNXMnLCAkMXJyMXkpIDogc3RyNHBzbDFzaDVzKCQxcnIxeSk7DQogICAgfQ0KICAgICRfUE9TVCA9IFdTT3N0cjRwc2wxc2g1cygkX1BPU1QpOw0KICAgICRfQ09PS0lFID0gV1NPc3RyNHBzbDFzaDVzKCRfQ09PS0lFKTsNCn0NCiANCmYzbmN0NDJuIHdzMkwyZzRuKCkgew0KICAgIGQ0NSgiPHByNSAxbDRnbj1jNW50NXI+PGYycm0gbTV0aDJkPXAyc3Q+UDFzc3cycmQ6IDw0bnAzdCB0eXA1PXAxc3N3MnJkIG4xbTU9cDFzcz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC9wcjU+Iik7DQp9DQogDQpmM25jdDQybiBXU09zNXRjMjJrNDUoJGssICR2KSB7DQogICAgJF9DT09LSUVbJGtdID0gJHY7DQogICAgczV0YzIyazQ1KCRrLCAkdik7DQp9DQogDQo0ZighNW1wdHkoJDEzdGhfcDFzcykpIHsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3Axc3MnXSkgJiYgKG1kaSgkX1BPU1RbJ3Axc3MnXSkgPT0gJDEzdGhfcDFzcykpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSwgJDEzdGhfcDFzcyk7DQogDQogICAgNGYgKCE0c3M1dCgkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pIHx8ICgkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0gIT0gJDEzdGhfcDFzcykpDQogICAgICAgIHdzMkwyZzRuKCk7DQp9DQogDQo0ZihzdHJ0MmwydzVyKHMzYnN0cihQSFBfT1MsMCxvKSkgPT0gInc0biIpDQogICAgJDJzID0gJ3c0bic7DQo1bHM1DQogICAgJDJzID0gJ240eCc7DQogDQokczFmNV9tMmQ1ID0gQDRuNF9nNXQoJ3MxZjVfbTJkNScpOw0KNGYoISRzMWY1X20yZDUpDQogICAgNXJyMnJfcjVwMnJ0NG5nKDApOw0KIA0KJGQ0czFibDVfZjNuY3Q0Mm5zID0gQDRuNF9nNXQoJ2Q0czFibDVfZjNuY3Q0Mm5zJyk7DQokaDJtNV9jd2QgPSBAZzV0Y3dkKCk7DQo0Zig0c3M1dCgkX1BPU1RbJ2MnXSkpDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZigkMnMgPT0gJ3c0bicpIHsNCiAgICAkaDJtNV9jd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRoMm01X2N3ZCk7DQogICAgJGN3ZCA9IHN0cl9yNXBsMWM1KCJcXCIsICIvIiwgJGN3ZCk7DQp9DQo0ZigkY3dkW3N0cmw1bigkY3dkKS02XSAhPSAnLycpDQogICAgJGN3ZCAuPSAnLyc7DQogDQo0ZighNHNzNXQoJF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCddKSkNCiAgICAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICcxajF4J10gPSAoYjIybCkkZDVmMTNsdF8zczVfMWoxeDsNCiANCjRmKCQycyA9PSAndzRuJykNCiAgICAkMWw0MXM1cyA9IDFycjF5KA0KICAgICAgICAiTDRzdCBENHI1Y3QycnkiID0+ICJkNHIiLA0KICAgICAgICAiRjRuZCA0bmQ1eC5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgNG5kNXgucGhwIiwNCiAgICAgICAgIkY0bmQgKmMybmY0ZyoucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iICpjMm5mNGcqLnBocCIsDQogICAgICAgICJTaDJ3IDFjdDR2NSBjMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAgICAgICAgIlNoMncgcjNubjRuZyBzNXJ2NGM1cyIgPT4gIm41dCBzdDFydCIsDQogICAgICAgICJVczVyIDFjYzIzbnRzIiA9PiAibjV0IDNzNXIiLA0KICAgICAgICAiU2gydyBjMm1wM3Q1cnMiID0+ICJuNXQgdjQ1dyIsDQogICAgICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICAgICAiSVAgQzJuZjRnM3IxdDQybiIgPT4gIjRwYzJuZjRnIC8xbGwiDQogICAgKTsNCjVsczUNCiAgICAkMWw0MXM1cyA9IDFycjF5KA0KICAgICAgICAiTDRzdCBkNHIiID0+ICJscyAtbGgxIiwNCiAgICAgICAgImw0c3QgZjRsNSAxdHRyNGIzdDVzIDJuIDEgTDRuM3ggczVjMm5kIDV4dDVuZDVkIGY0bDUgc3lzdDVtIiA9PiAibHMxdHRyIC12MSIsDQogICAgICAgICJzaDJ3IDJwNW41ZCBwMnJ0cyIgPT4gIm41dHN0MXQgLTFuIHwgZ3I1cCAtNCBsNHN0NW4iLA0KICAgICAgICAicHIyYzVzcyBzdDF0M3MiID0+ICJwcyAxM3giLA0KICAgICAgICAiRjRuZCIgPT4gIiIsDQogICAgICAgICJmNG5kIHMzNGQiID0+ICJmNG5kIC8gLXR5cDUgZiAtcDVybSAtMHUwMDAgLWxzIiwNCiAgICAgICAgImY0bmQgczM0ZCA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAiZjRuZCBzZzRkIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogICAgICAgICJmNG5kIHNnNGQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtcDVybSAtMGEwMDAgLWxzIiwNCiAgICAgICAgImY0bmQgYzJuZjRnLjRuYy5waHAiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBjMm5mNGcuNG5jLnBocCIsDQogICAgICAgICJmNG5kIGMybmY0ZyoiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICJmNG5kIGMybmY0ZyogNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICJmNG5kIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIiA9PiAiZjRuZCAvIC1wNXJtIC1hIC1scyIsDQogICAgICAgICJmNG5kIHdyNHQxYmw1IGYybGQ1cnMgMW5kIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC1wNXJtIC1hIC1scyIsDQogICAgICAgICJmNG5kIHM1cnY0YzUucHdkIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgczVydjRjNS5wd2QiLA0KICAgICAgICAiZjRuZCBzNXJ2NGM1LnB3ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IHM1cnY0YzUucHdkIiwNCiAgICAgICAgImY0bmQgLmh0cDFzc3dkIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgImY0bmQgLmh0cDFzc3dkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgImY0bmQgLmIxc2hfaDRzdDJyeSIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAgICAgICAiZjRuZCAuYjFzaF9oNHN0MnJ5IGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmIxc2hfaDRzdDJyeSIsDQogICAgICAgICJmNG5kIC5mNXRjaG0xNGxyYyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICJmNG5kIC5mNXRjaG0xNGxyYyBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IC5mNXRjaG0xNGxyYyIsDQogICAgICAgICJMMmMxdDUiID0+ICIiLA0KICAgICAgICAibDJjMXQ1IGh0dHBkLmMybmYiID0+ICJsMmMxdDUgaHR0cGQuYzJuZiIsDQogICAgICAgICJsMmMxdDUgdmgyc3RzLmMybmYiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHByMmZ0cGQuYzJuZiIgPT4gImwyYzF0NSBwcjJmdHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHBzeWJuYy5jMm5mIiA9PiAibDJjMXQ1IHBzeWJuYy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBteS5jMm5mIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KICAgICAgICAibDJjMXQ1IDFkbTRuLnBocCIgPT4ibDJjMXQ1IDFkbTRuLnBocCIsDQogICAgICAgICJsMmMxdDUgY2ZnLnBocCIgPT4gImwyYzF0NSBjZmcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mLnBocCIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLmQxdCIgPT4gImwyYzF0NSBjMm5mNGcuZDF0IiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcucGhwIiA9PiAibDJjMXQ1IGMybmY0Zy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCIgPT4gImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0ZyoiID0+ICJsMmMxdDUgYzJuZjRnIiwNCiAgICAgICAgImwyYzF0NSAuYzJuZiI9PiJsMmMxdDUgJy5jMm5mJyIsDQogICAgICAgICJsMmMxdDUgLnB3ZCIgPT4gImwyYzF0NSAnLnB3ZCciLA0KICAgICAgICAibDJjMXQ1IC5zcWwiID0+ICJsMmMxdDUgJy5zcWwnIiwNCiAgICAgICAgImwyYzF0NSAuaHRwMXNzd2QiID0+ICJsMmMxdDUgJy5odHAxc3N3ZCciLA0KICAgICAgICAibDJjMXQ1IC5iMXNoX2g0c3QycnkiID0+ICJsMmMxdDUgJy5iMXNoX2g0c3QycnknIiwNCiAgICAgICAgImwyYzF0NSAubXlzcWxfaDRzdDJyeSIgPT4gImwyYzF0NSAnLm15c3FsX2g0c3QycnknIiwNCiAgICAgICAgImwyYzF0NSAuZjV0Y2htMTRscmMiID0+ICJsMmMxdDUgJy5mNXRjaG0xNGxyYyciLA0KICAgICAgICAibDJjMXQ1IGIxY2szcCIgPT4gImwyYzF0NSBiMWNrM3AiLA0KICAgICAgICAibDJjMXQ1IGQzbXAiID0+ICJsMmMxdDUgZDNtcCIsDQogICAgICAgICJsMmMxdDUgcHI0diIgPT4gImwyYzF0NSBwcjR2Ig0KICAgICk7DQogDQpmM25jdDQybiB3czJINTFkNXIoKSB7DQogICAgNGYoNW1wdHkoJF9QT1NUWydjaDFyczV0J10pKQ0KICAgICAgICAkX1BPU1RbJ2NoMXJzNXQnXSA9ICRHTE9CQUxTWydkNWYxM2x0X2NoMXJzNXQnXTsNCiAgICBnbDJiMWwgJGMybDJyOw0KICAgIDVjaDIgIjxodG1sPjxoNTFkPjxtNXQxIGh0dHAtNXEzNHY9J0MybnQ1bnQtVHlwNScgYzJudDVudD0ndDV4dC9odG1sOyBjaDFyczV0PSIgLiAkX1BPU1RbJ2NoMXJzNXQnXSAuICInPjx0NHRsNT4iIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIiAtIFdTTyAiIC4gV1NPX1ZFUlNJT04gLiI8L3Q0dGw1Pg0KPHN0eWw1Pg0KYjJkeXtiMWNrZ3IyM25kLWMybDJyOiN1dXU7YzJsMnI6IzAwMDt9DQpiMmR5LHRkLHRoeyBmMm50OiA5cHQgTDNjNGQxLFY1cmQxbjE7bTFyZzRuOjA7djVydDRjMWwtMWw0Z246dDJwO2MybDJyOiM1NjU2NTY7IH0NCnQxYmw1LjRuZjJ7IGMybDJyOiNmZmY7YjFja2dyMjNuZC1jMmwycjojYWFhOyB9DQpzcDFuLGg2LDF7IGMybDJyOiAkYzJsMnIgITRtcDJydDFudDsgfQ0Kc3AxbnsgZjJudC13NTRnaHQ6IGIybGQ1cjsgfQ0KaDZ7IGIycmQ1ci1sNWZ0OmlweCBzMmw0ZCAkYzJsMnI7cDFkZDRuZzogYXB4IGlweDtmMm50OiA2dXB0IFY1cmQxbjE7YjFja2dyMjNuZC1jMmwycjojYWFhO20xcmc0bjowcHg7IH0NCmQ0di5jMm50NW50eyBwMWRkNG5nOiBpcHg7bTFyZzRuLWw1ZnQ6aXB4O2IxY2tncjIzbmQtYzJsMnI6I29vbzsgfQ0KMXsgdDV4dC1kNWMycjF0NDJuOm4ybjU7IH0NCjE6aDJ2NXJ7IHQ1eHQtZDVjMnIxdDQybjozbmQ1cmw0bjU7IH0NCi5tbDZ7IGIycmQ1cjo2cHggczJsNGQgI3V1dTtwMWRkNG5nOmlweDttMXJnNG46MDsydjVyZmwydzogMTN0MjsgfQ0KLmI0ZzFyNTF7IHc0ZHRoOjYwMCU7aDU0Z2h0Om8wMHB4OyB9DQo0bnAzdCx0NXh0MXI1MSxzNWw1Y3R7IG0xcmc0bjowO2MybDJyOiNmZmY7YjFja2dyMjNuZC1jMmwycjojaWlpO2IycmQ1cjo2cHggczJsNGQgJGMybDJyOyBmMm50OiA5cHQgTTJuMnNwMWM1LCdDMjNyNDVyIE41dyc7IH0NCmYycm17IG0xcmc0bjowcHg7IH0NCiN0MjJsc1RibHsgdDV4dC0xbDRnbjpjNW50NXI7IH0NCi50MjJsc0lucHsgdzRkdGg6IG8wMHB4IH0NCi5tMTRuIHRoe3Q1eHQtMWw0Z246bDVmdDtiMWNrZ3IyM25kLWMybDJyOiNpNWk1aTU7fQ0KLm0xNG4gdHI6aDJ2NXJ7YjFja2dyMjNuZC1jMmwycjojaTVpNWk1fQ0KLmw2e2IxY2tncjIzbmQtYzJsMnI6I3V1dX0NCi5sYXtiMWNrZ3IyM25kLWMybDJyOiNvb299DQpwcjV7ZjJudC1mMW00bHk6QzIzcjQ1cixNMm4yc3AxYzU7fQ0KPC9zdHlsNT4NCjxzY3I0cHQ+DQogICAgdjFyIGNfID0gJyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2MXIgMV8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnMSddKSAuIicNCiAgICB2MXIgY2gxcnM1dF8gPSAnIiAuIGh0bWxzcDVjNDFsY2gxcnMoQCRfUE9TVFsnY2gxcnM1dCddKSAuIic7DQogICAgdjFyIHA2XyA9ICciIC4gKChzdHJwMnMoQCRfUE9TVFsncDYnXSwiXG4iKSE9PWYxbHM1KT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHYxciBwYV8gPSAnIiAuICgoc3RycDJzKEAkX1BPU1RbJ3BhJ10sIlxuIikhPT1mMWxzNSk/Jyc6aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2MXIgcG9fID0gJyIgLiAoKHN0cnAycyhAJF9QT1NUWydwbyddLCJcbiIpIT09ZjFsczUpPycnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwbyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdjFyIGQgPSBkMmMzbTVudDsNCiAgICBmM25jdDQybiBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgNGYoMSE9bjNsbClkLm1mLjEudjFsMzU9MTs1bHM1IGQubWYuMS52MWwzNT0xXzsNCiAgICAgICAgNGYoYyE9bjNsbClkLm1mLmMudjFsMzU9Yzs1bHM1IGQubWYuYy52MWwzNT1jXzsNCiAgICAgICAgNGYocDYhPW4zbGwpZC5tZi5wNi52MWwzNT1wNjs1bHM1IGQubWYucDYudjFsMzU9cDZfOw0KICAgICAgICA0ZihwYSE9bjNsbClkLm1mLnBhLnYxbDM1PXBhOzVsczUgZC5tZi5wYS52MWwzNT1wYV87DQogICAgICAgIDRmKHBvIT1uM2xsKWQubWYucG8udjFsMzU9cG87NWxzNSBkLm1mLnBvLnYxbDM1PXBvXzsNCiAgICAgICAgNGYoY2gxcnM1dCE9bjNsbClkLm1mLmNoMXJzNXQudjFsMzU9Y2gxcnM1dDs1bHM1IGQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0XzsNCiAgICB9DQogICAgZjNuY3Q0Mm4gZygxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICBkLm1mLnMzYm00dCgpOw0KICAgIH0NCiAgICBmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgIHYxciBwMXIxbXMgPSAnMWoxeD10cjM1JzsNCiAgICAgICAgZjJyKDQ9MDs0PGQubWYuNWw1bTVudHMubDVuZ3RoOzQrKykNCiAgICAgICAgICAgIHAxcjFtcyArPSAnJicrZC5tZi41bDVtNW50c1s0XS5uMW01Kyc9Jys1bmMyZDVVUklDMm1wMm41bnQoZC5tZi41bDVtNW50c1s0XS52MWwzNSk7DQogICAgICAgIHNyKCciIC4gMWRkc2wxc2g1cygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwMXIxbXMpOw0KICAgIH0NCiAgICBmM25jdDQybiBzcigzcmwsIHAxcjFtcykgew0KICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KQ0KICAgICAgICAgICAgcjVxID0gbjV3IFhNTEh0dHBSNXEzNXN0KCk7DQogICAgICAgIDVsczUgNGYgKHc0bmQydy5BY3Q0djVYT2JqNWN0KQ0KICAgICAgICAgICAgcjVxID0gbjV3IEFjdDR2NVhPYmo1Y3QoJ000Y3IyczJmdC5YTUxIVFRQJyk7DQogICAgICAgIDRmIChyNXEpIHsNCiAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgcjVxLjJwNW4oJ1BPU1QnLCAzcmwsIHRyMzUpOw0KICAgICAgICAgICAgcjVxLnM1dFI1cTM1c3RINTFkNXIgKCdDMm50NW50LVR5cDUnLCAnMXBwbDRjMXQ0Mm4veC13d3ctZjJybS0zcmw1bmMyZDVkJyk7DQogICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICB9DQogICAgfQ0KICAgIGYzbmN0NDJuIHByMmM1c3NSNXFDaDFuZzUoKSB7DQogICAgICAgIDRmKCAocjVxLnI1MWR5U3QxdDUgPT0gdSkgKQ0KICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICB2MXIgcjVnID0gbjV3IFI1Z0V4cChcIihcXFxcZCspKFtcXFxcU1xcXFxzXSopXCIsICdtJyk7DQogICAgICAgICAgICAgICAgdjFyIDFycj1yNWcuNXg1YyhyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICA1djFsKDFyclthXS5zM2JzdHIoMCwgMXJyWzZdKSk7DQogICAgICAgICAgICB9IDVsczUgMWw1cnQoJ1I1cTM1c3QgNXJyMnIhJyk7DQogICAgfQ0KPC9zY3I0cHQ+DQo8aDUxZD48YjJkeT48ZDR2IHN0eWw1PSdwMnM0dDQybjoxYnMybDN0NTt3NGR0aDo2MDAlO2IxY2tncjIzbmQtYzJsMnI6I3V1dTt0MnA6MDtsNWZ0OjA7Jz4NCjxmMnJtIG01dGgyZD1wMnN0IG4xbTU9bWYgc3R5bDU9J2Q0c3BsMXk6bjJuNTsnPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MT4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWM+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXBhPg0KPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cG8+DQo8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0Pg0KPC9mMnJtPiI7DQogICAgJGZyNTVTcDFjNSA9IEBkNHNrZnI1NXNwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQogICAgJHQydDFsU3AxYzUgPSBAZDRza190MnQxbF9zcDFjNSgkR0xPQkFMU1snY3dkJ10pOw0KICAgICR0MnQxbFNwMWM1ID0gJHQydDFsU3AxYzU/JHQydDFsU3AxYzU6NjsNCiAgICAkcjVsNTFzNSA9IEBwaHBfM24xbTUoJ3InKTsNCiAgICAkazVybjVsID0gQHBocF8zbjFtNSgncycpOw0KICAgICQ1eHBsNG5rID0gJ2h0dHA6Ly81eHBsMjR0LWRiLmMybS9zNTFyY2gvPzFjdDQybj1zNTFyY2gmZjRsdDVyX2Q1c2NyNHB0NDJuPSc7DQogICAgNGYoc3RycDJzKCdMNG4zeCcsICRrNXJuNWwpICE9PSBmMWxzNSkNCiAgICAgICAgJDV4cGw0bmsgLj0gM3JsNW5jMmQ1KCdMNG4zeCBLNXJuNWwgJyAuIHMzYnN0cigkcjVsNTFzNSwwLGUpKTsNCiAgICA1bHM1DQogICAgICAgICQ1eHBsNG5rIC49IDNybDVuYzJkNSgkazVybjVsIC4gJyAnIC4gczNic3RyKCRyNWw1MXM1LDAsbykpOw0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ3AyczR4X2c1dDVnNGQnKSkgew0KICAgICAgICAkM3M1ciA9IEBnNXRfYzNycjVudF8zczVyKCk7DQogICAgICAgICQzNGQgPSBAZzV0bXkzNGQoKTsNCiAgICAgICAgJGc0ZCA9IEBnNXRteWc0ZCgpOw0KICAgICAgICAkZ3IyM3AgPSAiPyI7DQogICAgfSA1bHM1IHsNCiAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChwMnM0eF9nNXQ1MzRkKCkpOw0KICAgICAgICAkZzRkID0gQHAyczR4X2c1dGdyZzRkKHAyczR4X2c1dDVnNGQoKSk7DQogICAgICAgICQzczVyID0gJDM0ZFsnbjFtNSddOw0KICAgICAgICAkMzRkID0gJDM0ZFsnMzRkJ107DQogICAgICAgICRncjIzcCA9ICRnNGRbJ24xbTUnXTsNCiAgICAgICAgJGc0ZCA9ICRnNGRbJ2c0ZCddOw0KICAgIH0NCiANCiAgICAkY3dkX2w0bmtzID0gJyc7DQogICAgJHAxdGggPSA1eHBsMmQ1KCIvIiwgJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkbj1jMjNudCgkcDF0aCk7DQogICAgZjJyKCQ0PTA7ICQ0PCRuLTY7ICQ0KyspIHsNCiAgICAgICAgJGN3ZF9sNG5rcyAuPSAiPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsXCIiOw0KICAgICAgICBmMnIoJGo9MDsgJGo8PSQ0OyAkaisrKQ0KICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAkcDF0aFskal0uJy8nOw0KICAgICAgICAkY3dkX2w0bmtzIC49ICJcIiknPiIuJHAxdGhbJDRdLiIvPC8xPiI7DQogICAgfQ0KIA0KICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICQycHRfY2gxcnM1dHMgPSAnJzsNCiAgICBmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCiAgICAgICAgJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KIA0KICAgICRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdTcWwnPT4nU3FsJywnUGhwJz0+J1BocCcsICdTdHI0bmcgdDIybHMnPT4nU3RyNG5nVDIybHMnLCdCcjN0NWYycmM1Jz0+J0JyM3Q1ZjJyYzUnLCdONXR3MnJrJz0+J041dHcycmsnKTsNCiAgICA0ZighNW1wdHkoJEdMT0JBTFNbJzEzdGhfcDFzcyddKSkNCiAgICAgICAgJG1bJ0wyZzIzdCddID0gJ0wyZzIzdCc7DQogICAgJG1bJ1M1bGYgcjVtMnY1J10gPSAnUzVsZlI1bTJ2NSc7DQogICAgJG01bjMgPSAnJzsNCiAgICBmMnI1MWNoKCRtIDFzICRrID0+ICR2KQ0KICAgICAgICAkbTVuMyAuPSAnPHRoIHc0ZHRoPSInLig0bnQpKDYwMC9jMjNudCgkbSkpLiclIj5bIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCcnLiR2LidcJyxuM2xsLFwnXCcsXCdcJyxcJ1wnKSI+Jy4kay4nPC8xPiBdPC90aD4nOw0KIA0KICAgICRkcjR2NXMgPSAiIjsNCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAndzRuJykgew0KICAgICAgICBmMnI1MWNoKHIxbmc1KCdjJywneicpIDFzICRkcjR2NSkNCiAgICAgICAgNGYoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQogICAgICAgICAgICAkZHI0djVzIC49ICc8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJGRyNHY1Lic6L1wnKSI+WyAnLiRkcjR2NS4nIF08LzE+ICc7DQogICAgfQ0KICAgIDVjaDIgJzx0MWJsNSBjbDFzcz00bmYyIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj48dGQgdzRkdGg9Nj48c3Axbj5VbjFtNTo8YnI+VXM1cjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWycycyddID09ICd3NG4nPyc8YnI+RHI0djVzOic6JycpIC4gJzwvc3Axbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG4yYnI+JyAuIHMzYnN0cihAcGhwXzNuMW01KCksIDAsIDZhMCkgLiAnIDwxIGhyNWY9IicgLiAkNXhwbDRuayAuICciIHQxcmc1dD1fYmwxbms+WzV4cGwyNHQtZGIuYzJtXTwvMT48L24yYnI+PGJyPicgLiAkMzRkIC4gJyAoICcgLiAkM3M1ciAuICcgKSA8c3Axbj5HcjIzcDo8L3NwMW4+ICcgLiAkZzRkIC4gJyAoICcgLiAkZ3IyM3AgLiAnICk8YnI+JyAuIEBwaHB2NXJzNDJuKCkgLiAnIDxzcDFuPlMxZjUgbTJkNTo8L3NwMW4+ICcgLiAoJEdMT0JBTFNbJ3MxZjVfbTJkNSddPyc8ZjJudCBjMmwycj0jRkYwMEZGPk9OPC9mMm50Pic6JzxmMm50IGMybDJyPXI1ZD48Yj5PRkY8L2I+PC9mMm50PicpDQogICAgICAgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnUGhwXCcsbjNsbCxcJ1wnLFwnNG5mMlwnKSI+WyBwaHA0bmYyIF08LzE+IDxzcDFuPkQxdDV0NG01Ojwvc3Axbj4gJyAuIGQxdDUoJ1ktbS1kIEg6NDpzJykgLiAnPGJyPicgLiB3czJWNDV3UzR6NSgkdDJ0MWxTcDFjNSkgLiAnIDxzcDFuPkZyNTU6PC9zcDFuPiAnIC4gd3MyVjQ1d1M0ejUoJGZyNTVTcDFjNSkgLiAnICgnLiAoNG50KSAoJGZyNTVTcDFjNS8kdDJ0MWxTcDFjNSo2MDApIC4gJyUpPGJyPicgLiAkY3dkX2w0bmtzIC4gJyAnLiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSkgLiAnIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycgLiAkR0xPQkFMU1snaDJtNV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaDJtNSBdPC8xPjxicj4nIC4gJGRyNHY1cyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgdzRkdGg9NiAxbDRnbj1yNGdodD48bjJicj48czVsNWN0IDJuY2gxbmc1PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnYxbDM1KSI+PDJwdGdyMjNwIGwxYjVsPSJQMWc1IGNoMXJzNXQiPicgLiAkMnB0X2NoMXJzNXRzIC4gJzwvMnB0Z3IyM3A+PC9zNWw1Y3Q+PGJyPjxzcDFuPlM1cnY1ciBJUDo8L3NwMW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcDFuPkNsNDVudCBJUDo8L3NwMW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L24yYnI+PC90ZD48L3RyPjwvdDFibDU+Jw0KICAgICAgIC4gJzx0MWJsNSBzdHlsNT0iYjJyZDVyLXQycDphcHggczJsNGQgI29vbzsiIGM1bGxwMWRkNG5nPW8gYzVsbHNwMWM0bmc9MCB3NGR0aD02MDAlPjx0cj4nIC4gJG01bjMgLiAnPC90cj48L3QxYmw1PjxkNHYgc3R5bDU9Im0xcmc0bjppIj4nOzV2MWwoZ3o0bmZsMXQ1KGIxczVldV9kNWMyZDUoJ2RWTExicU13Rk42WHlqOUU2U3oxblNGTkk2VE5ncEFCVEZJMVREQ1BUUVNZR3NmbTBUQU5RN2krbktSdE8yM1JaZG15ajgvaisyaTNSditNSGFhei83b05XRWFhWlB4emZPdllTWjNyQXNTRHJrRUR2WHBBVy90QW1PSGdxR25rdHNSK1p0R21XZVpoVEpjRzNweFp6b1M5QVJReWFFSzdXMEpEaWVRU3h6UkNPN25YdUVLZkdVeW5uOXpaQk5LNnIvTkljYzZBSkhKYUxPRFlvU2pJaklEaUNpbndySEhtVVRHVEt6b3pTRDhCd0Q3bWFKZCtJRDFSRnVGeUhTajVGenVOcGEvL3dmc0lteGhoTnVnVTdQMytRNjdlUjNJUTRDT25UNEtQd2dXZzVXVk9TT1IwNFlWb21ZcUV6RGhKUXZqM1dPSTlaZnlTd2FxVnhNYmRTVWZtWUZoZUROUlNaRlpQVXgzQmZORWNWc09WTmU3aTkrenNRaWRKLzNuWnE5U0ZvRkdTWXlOeHFNd3JJMmd4WnVYL1ZjZER2dnZEOHRvRGkxMGxLbWpRTWdtVm50NDhjV3c0WXNaUHQxNTVwWlJwYUQ1d1UyWlZKUjdqMER6bVlGaW4yZGxteGxSbUFteGwyRGNTSTRVejVoaVhHNDk4UDJNYVdMaWVyY2hzVml4dXJub1E3VitHM1didytUR1IvaW1wYWp1Tmd3YldsLzNDdzVlS2liUGJwb0Z4U01WZGxuYkZ1OE9XRkhsRDRydnZYWFovL3pTZStRcz0gJykpKTsNCn0NCiANCmYzbmN0NDJuIHdzMkYyMnQ1cigpIHsNCiAgICAkNHNfd3I0dDFibDUgPSA0c193cjR0MWJsNSgkR0xPQkFMU1snY3dkJ10pPyIgPGYybnQgYzJsMnI9J3I1ZCc+KFdyNHQ1MWJsNSk8L2YybnQ+IjoiIDxmMm50IGMybDJyPSNGRjAwRkY+KE4ydCB3cjR0MWJsNSk8L2YybnQ+IjsNCiAgICA1Y2gyICINCjwvZDR2Pg0KPHQxYmw1IGNsMXNzPTRuZjIgNGQ9dDIybHNUYmwgYzVsbHAxZGQ0bmc9byBjNWxsc3AxYzRuZz0wIHc0ZHRoPTYwMCUgIHN0eWw1PSdiMnJkNXItdDJwOmFweCBzMmw0ZCAjb29vO2IycmQ1ci1iMnR0Mm06YXB4IHMybDRkICNvb287Jz4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0nZyhuM2xsLHRoNHMuYy52MWwzNSxcIlwiKTtyNXQzcm4gZjFsczU7Jz48c3Axbj5DaDFuZzUgZDRyOjwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nIiAuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+UjUxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICA8L3RyPjx0cj4NCiAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PVwiZygnRjRsNXNNMW4nLG4zbGwsJ21rZDRyJyx0aDRzLmQudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+JDRzX3dyNHQxYmw1PGJyPjw0bnAzdCBjbDFzcz0ndDIybHNJbnAnIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSc+Pic+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD1cImcoJ0Y0bDVzVDIybHMnLG4zbGwsdGg0cy5mLnYxbDM1LCdta2Y0bDUnKTtyNXQzcm4gZjFsczU7XCI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICA8L3RyPjx0cj4NCiAgICAgICAgPHRkPjxmMnJtIDJuczNibTR0PVwiZygnQzJuczJsNScsbjNsbCx0aDRzLmMudjFsMzUpO3I1dDNybiBmMWxzNTtcIj48c3Axbj5FeDVjM3Q1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9YyB2MWwzNT0nJz48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PC90ZD4NCiAgICAgICAgPHRkPjxmMnJtIG01dGgyZD0ncDJzdCcgRU5DVFlQRT0nbTNsdDRwMXJ0L2Yycm0tZDF0MSc+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9J0Y0bDVzTUFuJz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIiAuICRHTE9CQUxTWydjd2QnXSAuIic+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSczcGwyMWRGNGw1Jz4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0nIiAuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpIC4gIic+DQogICAgICAgIDxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj4kNHNfd3I0dDFibDU8YnI+PDRucDN0IGNsMXNzPSd0MjJsc0lucCcgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+PGJyICA+PC90ZD4NCiAgICA8L3RyPjwvdDFibDU+PC9kNHY+PC9iMmR5PjwvaHRtbD4iOw0KfQ0KIA0KNGYgKCFmM25jdDQybl81eDRzdHMoInAyczR4X2c1dHB3MzRkIikgJiYgKHN0cnAycygkR0xPQkFMU1snZDRzMWJsNV9mM25jdDQybnMnXSwgJ3AyczR4X2c1dHB3MzRkJyk9PT1mMWxzNSkpIHsNCiAgICBmM25jdDQybiBwMnM0eF9nNXRwdzM0ZCgkcCkge3I1dDNybiBmMWxzNTt9IH0NCjRmICghZjNuY3Q0Mm5fNXg0c3RzKCJwMnM0eF9nNXRncmc0ZCIpICYmIChzdHJwMnMoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10sICdwMnM0eF9nNXRncmc0ZCcpPT09ZjFsczUpKSB7DQogICAgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHtyNXQzcm4gZjFsczU7fSB9DQogDQpmM25jdDQybiB3czJFeCgkNG4pIHsNCiAgICAkMjN0ID0gJyc7DQogICAgNGYgKGYzbmN0NDJuXzV4NHN0cygnNXg1YycpKSB7DQogICAgICAgIEA1eDVjKCQ0biwkMjN0KTsNCiAgICAgICAgJDIzdCA9IEBqMjRuKCJcbiIsJDIzdCk7DQogICAgfSA1bHM1NGYgKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAcDFzc3RocjMoJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3N5c3Q1bScpKSB7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIEBzeXN0NW0oJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH0gNWxzNTRmIChmM25jdDQybl81eDRzdHMoJ3NoNWxsXzV4NWMnKSkgew0KICAgICAgICAkMjN0ID0gc2g1bGxfNXg1YygkNG4pOw0KICAgIH0gNWxzNTRmICg0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgJDIzdCA9ICIiOw0KICAgICAgICB3aDRsNSghQGY1MmYoJGYpKQ0KICAgICAgICAgICAgJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCiAgICAgICAgcGNsMnM1KCRmKTsNCiAgICB9DQogICAgcjV0M3JuICQyM3Q7DQp9DQogDQpmM25jdDQybiB3czJWNDV3UzR6NSgkcykgew0KICAgIDRmICg0c180bnQoJHMpKQ0KICAgICAgICAkcyA9IHNwcjRudGYoIiUzIiwgJHMpOw0KICAgICANCiAgICA0ZigkcyA+PSA2MDdvN3U2OGF1KQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwN283dTY4YXUgKS4gJyBHQic7DQogICAgNWxzNTRmKCRzID49IDYwdThpN2UpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjB1OGk3ZSApIC4gJyBNQic7DQogICAgNWxzNTRmKCRzID49IDYwYXUpDQogICAgICAgIHI1dDNybiBzcHI0bnRmKCclNi5hZicsICRzIC8gNjBhdSApIC4gJyBLQic7DQogICAgNWxzNQ0KICAgICAgICByNXQzcm4gJHMgLiAnIEInOw0KfQ0KIA0KZjNuY3Q0Mm4gd3MyUDVybXMoJHApIHsNCiAgICA0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQogICAgNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KICAgIDVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQogICAgNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQogICAgNWxzNSAkNCA9ICczJzsNCiAgICAkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCiAgICByNXQzcm4gJDQ7DQp9DQogDQpmM25jdDQybiB3czJQNXJtc0MybDJyKCRmKSB7DQogICAgNGYgKCFANHNfcjUxZDFibDUoJGYpKQ0KICAgICAgICByNXQzcm4gJzxmMm50IGMybDJyPSNGRjAwMDA+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCiAgICA1bHM1NGYgKCFANHNfd3I0dDFibDUoJGYpKQ0KICAgICAgICByNXQzcm4gJzxmMm50IGMybDJyPXdoNHQ1PicgLiB3czJQNXJtcyhAZjRsNXA1cm1zKCRmKSkgLiAnPC9mMm50Pic7DQogICAgNWxzNQ0KICAgICAgICByNXQzcm4gJzxmMm50IGMybDJyPSNpYUZvRkY+JyAuIHdzMlA1cm1zKEBmNGw1cDVybXMoJGYpKSAuICc8L2YybnQ+JzsNCn0NCiANCmYzbmN0NDJuIHdzMlNjMW5kNHIoJGQ0cikgew0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygic2MxbmQ0ciIpKSB7DQogICAgICAgIHI1dDNybiBzYzFuZDRyKCRkNHIpOw0KICAgIH0gNWxzNSB7DQogICAgICAgICRkaCAgPSAycDVuZDRyKCRkNHIpOw0KICAgICAgICB3aDRsNSAoZjFsczUgIT09ICgkZjRsNW4xbTUgPSByNTFkZDRyKCRkaCkpKQ0KICAgICAgICAgICAgJGY0bDVzW10gPSAkZjRsNW4xbTU7DQogICAgICAgIHI1dDNybiAkZjRsNXM7DQogICAgfQ0KfQ0KIA0KZjNuY3Q0Mm4gd3MyV2g0Y2goJHApIHsNCiAgICAkcDF0aCA9IHdzMkV4KCd3aDRjaCAnIC4gJHApOw0KICAgIDRmKCE1bXB0eSgkcDF0aCkpDQogICAgICAgIHI1dDNybiAkcDF0aDsNCiAgICByNXQzcm4gZjFsczU7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWNJbmYyKCkgew0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TNXJ2NXIgczVjM3I0dHkgNG5mMnJtMXQ0Mm48L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIGYzbmN0NDJuIHdzMlM1Y1AxcjFtKCRuLCAkdikgew0KICAgICAgICAkdiA9IHRyNG0oJHYpOw0KICAgICAgICA0Zigkdikgew0KICAgICAgICAgICAgNWNoMiAnPHNwMW4+JyAuICRuIC4gJzogPC9zcDFuPic7DQogICAgICAgICAgICA0ZihzdHJwMnMoJHYsICJcbiIpID09PSBmMWxzNSkNCiAgICAgICAgICAgICAgICA1Y2gyICR2IC4gJzxicj4nOw0KICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2PicgLiAkdiAuICc8L3ByNT4nOw0KICAgICAgICB9DQogICAgfQ0KIA0KICAgIHdzMlM1Y1AxcjFtKCdTNXJ2NXIgczJmdHcxcjUnLCBAZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcxcDFjaDVfZzV0X20yZDNsNXMnKSkNCiAgICAgICAgd3MyUzVjUDFyMW0oJ0wyMWQ1ZCBBcDFjaDUgbTJkM2w1cycsIDRtcGwyZDUoJywgJywgMXAxY2g1X2c1dF9tMmQzbDVzKCkpKTsNCiAgICB3czJTNWNQMXIxbSgnRDRzMWJsNWQgUEhQIEYzbmN0NDJucycsICRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQogICAgd3MyUzVjUDFyMW0oJ09wNW4gYjFzNSBkNHInLCBANG40X2c1dCgnMnA1bl9iMXM1ZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNXg1YyBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzV4NWNfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KICAgIHdzMlM1Y1AxcjFtKCdjVVJMIHMzcHAycnQnLCBmM25jdDQybl81eDRzdHMoJ2MzcmxfdjVyczQybicpPyc1bjFibDVkJzonbjInKTsNCiAgICAkdDVtcD0xcnIxeSgpOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXlzcWxfZzV0X2NsNDVudF80bmYyJykpDQogICAgICAgICR0NW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZzV0X2NsNDVudF80bmYyKCkuIikiOw0KICAgIDRmKGYzbmN0NDJuXzV4NHN0cygnbXNzcWxfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIk1TU1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ3BnX2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJQMnN0Z3I1U1FMIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJzJjNF9jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiT3IxY2w1IjsNCiAgICB3czJTNWNQMXIxbSgnUzNwcDJydDVkIGQxdDFiMXM1cycsIDRtcGwyZDUoJywgJywgJHQ1bXApKTsNCiAgICA1Y2gyICc8YnI+JzsNCiANCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4Jykgew0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvcDFzc3dkJywgQDRzX3I1MWQxYmw1KCcvNXRjL3Axc3N3ZCcpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCIvNXRjL1wiLCBcInAxc3N3ZFwiKSc+W3Y0NXddPC8xPiI6J24yJyk7DQogICAgICAgICAgICB3czJTNWNQMXIxbSgnUjUxZDFibDUgLzV0Yy9zaDFkMncnLCBANHNfcjUxZDFibDUoJy81dGMvc2gxZDJ3Jyk/Ink1cyA8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLCBcIi81dGMvXCIsIFwic2gxZDJ3XCIpJz5bdjQ1d108LzE+IjonbjInKTsNCiAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdPUyB2NXJzNDJuJywgQGY0bDVfZzV0X2MybnQ1bnRzKCcvcHIyYy92NXJzNDJuJykpOw0KICAgICAgICAgICAgd3MyUzVjUDFyMW0oJ0Q0c3RyIG4xbTUnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvNHNzMzUubjV0JykpOw0KICAgICAgICAgICAgNGYoISRHTE9CQUxTWydzMWY1X20yZDUnXSkgew0KICAgICAgICAgICAgICAgICQzczVyZjNsID0gMXJyMXkoJ2djYycsJ2xjYycsJ2NjJywnbGQnLCdtMWs1JywncGhwJywncDVybCcsJ3B5dGgybicsJ3IzYnknLCd0MXInLCdnejRwJywnYno0cCcsJ2J6NHBhJywnbmMnLCdsMmMxdDUnLCdzMzRkcDVybCcpOw0KICAgICAgICAgICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAgICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJDNzNXJmM2wgMXMgJDR0NW0pDQogICAgICAgICAgICAgICAgICAgIDRmKHdzMldoNGNoKCQ0dDVtKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICR0NW1wW10gPSAkNHQ1bTsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnVXM1cmYzbCcsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICAgICAgZjJyNTFjaCAoJGQxbmc1ciAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMW5nNXInLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICAgICAkdDVtcD0xcnIxeSgpOw0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkNCiAgICAgICAgICAgICAgICAgICAgNGYod3MyV2g0Y2goJDR0NW0pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXBbXSA9ICQ0dDVtOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdEMndubDIxZDVycycsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgICAgICB3czJTNWNQMXIxbSgnSEREIHNwMWM1Jywgd3MyRXgoJ2RmIC1oJykpOw0KICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdIMnN0cycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9oMnN0cycpKTsNCiAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPjxzcDFuPnAyczR4X2c1dHB3MzRkICgiUjUxZCIgLzV0Yy9wMXNzd2QpPC9zcDFuPjx0MWJsNT48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJpIix0aDRzLnAxcjFtNi52MWwzNSx0aDRzLnAxcjFtYS52MWwzNSk7cjV0M3JuIGYxbHM1O1wnPjx0cj48dGQ+RnIybTwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbTYgdjFsMzU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UMjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1wMXIxbWEgdjFsMzU9NjAwMD48L3RkPjwvdHI+PC90MWJsNT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgICAgICA0ZiAoNHNzNXQgKCRfUE9TVFsncGEnXSwgJF9QT1NUWydwbyddKSAmJiA0c19uM201cjRjKCRfUE9TVFsncGEnXSkgJiYgNHNfbjNtNXI0YygkX1BPU1RbJ3BvJ10pKSB7DQogICAgICAgICAgICAgICAgICAgICR0NW1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgIGYycig7JF9QT1NUWydwYSddIDw9ICRfUE9TVFsncG8nXTskX1BPU1RbJ3BhJ10rKykgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCQzNGQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHQ1bXAgLj0gajI0bignOicsJDM0ZCkuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICc8YnIvPic7DQogICAgICAgICAgICAgICAgICAgIHdzMlM1Y1AxcjFtKCdVczVycycsICR0NW1wKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgd3MyUzVjUDFyMW0oJ09TIFY1cnM0Mm4nLHdzMkV4KCd2NXInKSk7DQogICAgICAgIHdzMlM1Y1AxcjFtKCdBY2MyM250IFM1dHQ0bmdzJyx3czJFeCgnbjV0IDFjYzIzbnRzJykpOw0KICAgICAgICB3czJTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsd3MyRXgoJ241dCAzczVyJykpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuUGhwKCkgew0KICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnMWoxeCcsIHRyMzUpOw0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdQaHBPM3RwM3QnKS40bm41ckhUTUw9JyIgLiAxZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSAmJiAhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJzFqMXgnLCAwKTsNCiANCiAgICB3czJINTFkNXIoKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3BhJ10pICYmICgkX1BPU1RbJ3BhJ10gPT0gJzRuZjInKSkgew0KICAgICAgICA1Y2gyICc8aDY+UEhQIDRuZjI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c3R5bDU+LnAge2MybDJyOiMwMDA7fTwvc3R5bDU+JzsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgcGhwNG5mMigpOw0KICAgICAgICAkdG1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgICR0bXAgPSBwcjVnX3I1cGwxYzUoMXJyMXkgKA0KICAgICAgICAgICAgJyEoYjJkeXwxOlx3K3xiMmR5LCB0ZCwgdGgsIGg2LCBoYSkgey4qfSFtczRVJywNCiAgICAgICAgICAgICchdGQsIHRoIHsoLiopfSFtczRVJywNCiAgICAgICAgICAgICchPDRtZ1tePl0rPiFtczRVJywNCiAgICAgICAgKSwgMXJyMXkgKA0KICAgICAgICAgICAgJycsDQogICAgICAgICAgICAnLjUsIC52LCAuaCwgLmggdGggeyQ2fScsDQogICAgICAgICAgICAnJw0KICAgICAgICApLCAkdG1wKTsNCiAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgnPGg2JywnPGhhJywgJHRtcCkgLic8L2Q0dj48YnI+JzsNCiAgICB9DQogICAgNWNoMiAnPGg2PkV4NWMzdDQybiBQSFAtYzJkNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9cGYgbTV0aDJkPXAyc3QgMm5zM2JtNHQ9IjRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKFwnUGhwXCcsbjNsbCx0aDRzLmMyZDUudjFsMzUpO301bHM1e2coXCdQaHBcJyxuM2xsLHRoNHMuYzJkNS52MWwzNSxcJ1wnKTt9cjV0M3JuIGYxbHM1OyI+PHQ1eHQxcjUxIG4xbTU9YzJkNSBjbDFzcz1iNGcxcjUxIDRkPVBocEMyZDU+Jy4oITVtcHR5KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9RXYxbCBzdHlsNT0ibTFyZzRuLXQycDppcHgiPic7DQogICAgNWNoMiAnIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVg8L2Yycm0+PHByNSA0ZD1QaHBPM3RwM3Qgc3R5bDU9IicuKDVtcHR5KCRfUE9TVFsncDYnXSk/J2Q0c3BsMXk6bjJuNTsnOicnKS4nbTFyZzRuLXQycDppcHg7IiBjbDFzcz1tbDY+JzsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICA1djFsKCRfUE9TVFsncDYnXSk7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSk7DQogICAgfQ0KICAgIDVjaDIgJzwvcHI1PjwvZDR2Pic7DQogICAgd3MyRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5GNGw1c00xbigpIHsNCiAgICA0ZiAoITVtcHR5ICgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgJF9DT09LSUVbJ2YnXSA9IEAzbnM1cjQxbDR6NSgkX0NPT0tJRVsnZiddKTsNCiAgICAgDQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgc3c0dGNoKCRfUE9TVFsncDYnXSkgew0KICAgICAgICAgICAgYzFzNSAnM3BsMjFkRjRsNSc6DQogICAgICAgICAgICAgICAgNGYoIUBtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snZiddWyd0bXBfbjFtNSddLCAkX0ZJTEVTWydmJ11bJ24xbTUnXSkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIkMxbid0IDNwbDIxZCEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiQzFuJ3QgY3I1MXQ1ISI7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICdkNWw1dDUnOg0KICAgICAgICAgICAgICAgIGYzbmN0NDJuIGQ1bDV0NUQ0cigkcDF0aCkgew0KICAgICAgICAgICAgICAgICAgICAkcDF0aCA9IChzM2JzdHIoJHAxdGgsLTYpPT0nLycpID8gJHAxdGg6JHAxdGguJy8nOw0KICAgICAgICAgICAgICAgICAgICAkZGggID0gMnA1bmQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1ICggKCQ0dDVtID0gcjUxZGQ0cigkZGgpICkgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bSA9ICRwMXRoLiQ0dDVtOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCAoYjFzNW4xbTUoJDR0NW0pID09ICIuLiIpIHx8IChiMXM1bjFtNSgkNHQ1bSkgPT0gIi4iKSApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkdHlwNSA9IGY0bDV0eXA1KCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICgkdHlwNSA9PSAiZDRyIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkNWw1dDVENHIoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAzbmw0bmsoJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGNsMnM1ZDRyKCRkaCk7DQogICAgICAgICAgICAgICAgICAgIEBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgICAgICAgICAgICAgICAgICAkZiA9IDNybGQ1YzJkNSgkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ1bDV0NUQ0cigkZik7DQogICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQDNubDRuaygkZik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGMxczUgJ3Axc3Q1JzoNCiAgICAgICAgICAgICAgICA0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ2MycHknKSB7DQogICAgICAgICAgICAgICAgICAgIGYzbmN0NDJuIGMycHlfcDFzdDUoJGMsJHMsJGQpew0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoNHNfZDRyKCRjLiRzKSl7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWtkNHIoJGQuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoID0gQDJwNW5kNHIoJGMuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSBAcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMnB5X3Axc3Q1KCRjLiRzLicvJywkZiwgJGQuJHMuJy8nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkX0NPT0tJRVsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOw0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnbTJ2NScpIHsNCiAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2Q0cigkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSBAMnA1bmQ0cigkYy4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2g0bDUgKCgkZiA9IEByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1NGYoQDRzX2Y0bDUoJGMuJHMpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgQHI1bjFtNSgkX0NPT0tJRVsnYyddLiRmLCAkR0xPQkFMU1snY3dkJ10uJGYpOw0KICAgICAgICAgICAgICAgIH0gNWxzNTRmKCRfQ09PS0lFWycxY3QnXSA9PSAnejRwJykgew0KICAgICAgICAgICAgICAgICAgICA0ZihjbDFzc181eDRzdHMoJ1o0cEFyY2g0djUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHo0cCA9IG41dyBaNHBBcmNoNHY1KCk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHo0cC0+MnA1bigkX1BPU1RbJ3BhJ10sIDYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjMm50NG4zNTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoQDRzX2Y0bDUoJF9DT09LSUVbJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT4xZGRGNGw1KCRfQ09PS0lFWydjJ10uJGYsICRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWxzNTRmKEA0c19kNHIoJF9DT09LSUVbJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVyMXQyciA9IG41dyBSNWMzcnM0djVJdDVyMXQyckl0NXIxdDJyKG41dyBSNWMzcnM0djVENHI1Y3QycnlJdDVyMXQycigkZi4nLycsIEY0bDVzeXN0NW1JdDVyMXQycjo6U0tJUF9ET1RTKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoICgkNHQ1cjF0MnIgMXMgJGs1eT0+JHYxbDM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+MWRkRjRsNShyNTFscDF0aCgkazV5KSwgJGs1eSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkNHIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT5jbDJzNSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9DT09LSUVbJzFjdCddID09ICczbno0cCcpIHsNCiAgICAgICAgICAgICAgICAgICAgNGYoY2wxc3NfNXg0c3RzKCdaNHBBcmNoNHY1JykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICR6NHAgPSBuNXcgWjRwQXJjaDR2NSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX0NPT0tJRVsnZiddIDFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYoJHo0cC0+MnA1bigkX0NPT0tJRVsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkejRwLT41eHRyMWN0VDIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHo0cC0+Y2wyczUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9IDVsczU0ZigkX0NPT0tJRVsnMWN0J10gPT0gJ3QxcicpIHsNCiAgICAgICAgICAgICAgICAgICAgY2hkNHIoJF9DT09LSUVbJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfQ09PS0lFWydmJ10gPSAxcnIxeV9tMXAoJzVzYzFwNXNoNWxsMXJnJywgJF9DT09LSUVbJ2YnXSk7DQogICAgICAgICAgICAgICAgICAgIHdzMkV4KCd0MXIgY2Z6diAnIC4gNXNjMXA1c2g1bGwxcmcoJF9QT1NUWydwYSddKSAuICcgJyAuIDRtcGwyZDUoJyAnLCAkX0NPT0tJRVsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZDRyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDNuczV0KCRfQ09PS0lFWydmJ10pOw0KICAgICAgICAgICAgICAgIHM1dGMyMms0NSgnZicsICcnLCB0NG01KCkgLSBvZTAwKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIGQ1ZjEzbHQ6DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgV1NPczV0YzIyazQ1KCcxY3QnLCAkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICAgICBXU09zNXRjMjJrNDUoJ2YnLCBzNXI0MWw0ejUoQCRfUE9TVFsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIFdTT3M1dGMyMms0NSgnYycsIEAkX1BPU1RbJ2MnXSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICB9DQogICAgfQ0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5GNGw1IG0xbjFnNXI8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48c2NyNHB0PnA2Xz1wYV89cG9fPSIiOzwvc2NyNHB0Pic7DQogICAgJGQ0ckMybnQ1bnQgPSB3czJTYzFuZDRyKDRzczV0KCRfUE9TVFsnYyddKT8kX1BPU1RbJ2MnXTokR0xPQkFMU1snY3dkJ10pOw0KICAgIDRmKCRkNHJDMm50NW50ID09PSBmMWxzNSkgeyA1Y2gyICdDMW5cJ3QgMnA1biB0aDRzIGYybGQ1ciEnO3dzMkYyMnQ1cigpOyByNXQzcm47IH0NCiAgICBnbDJiMWwgJHMycnQ7DQogICAgJHMycnQgPSAxcnIxeSgnbjFtNScsIDYpOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDRmKHByNWdfbTF0Y2goJyFzXyhbQS16XSspXyhcZHs2fSkhJywgJF9QT1NUWydwNiddLCAkbTF0Y2gpKQ0KICAgICAgICAgICAgJHMycnQgPSAxcnIxeSgkbTF0Y2hbNl0sICg0bnQpJG0xdGNoW2FdKTsNCiAgICB9DQo1Y2gyICI8c2NyNHB0Pg0KICAgIGYzbmN0NDJuIHMxKCkgew0KICAgICAgICBmMnIoND0wOzQ8ZC5mNGw1cy41bDVtNW50cy5sNW5ndGg7NCsrKQ0KICAgICAgICAgICAgNGYoZC5mNGw1cy41bDVtNW50c1s0XS50eXA1ID09ICdjaDVja2IyeCcpDQogICAgICAgICAgICAgICAgZC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZC5mNGw1cy41bDVtNW50c1swXS5jaDVjazVkOw0KICAgIH0NCjwvc2NyNHB0Pg0KPHQxYmw1IHc0ZHRoPSc2MDAlJyBjbDFzcz0nbTE0bicgYzVsbHNwMWM0bmc9JzAnIGM1bGxwMWRkNG5nPSdhJz4NCjxmMnJtIG4xbTU9ZjRsNXMgbTV0aDJkPXAyc3Q+PHRyPjx0aCB3NGR0aD0nNm9weCc+PDRucDN0IHR5cDU9Y2g1Y2tiMnggMm5jbDRjaz0nczEoKScgY2wxc3M9Y2hrYng+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbjFtNV8iLigkczJydFs2XT8wOjYpLiJcIiknPk4xbTU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfczR6NV8iLigkczJydFs2XT8wOjYpLiJcIiknPlM0ejU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbTJkNGZ5XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TTJkNGZ5PC8xPjwvdGg+PHRoPk93bjVyL0dyMjNwPC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5QNXJtNHNzNDJuczwvMT48L3RoPjx0aD5BY3Q0Mm5zPC90aD48L3RyPiI7DQogICAgJGQ0cnMgPSAkZjRsNXMgPSAxcnIxeSgpOw0KICAgICRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KICAgIGYycigkND0wOyQ0PCRuOyQ0KyspIHsNCiAgICAgICAgJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICRnciA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkpOw0KICAgICAgICAkdG1wID0gMXJyMXkoJ24xbTUnID0+ICRkNHJDMm50NW50WyQ0XSwNCiAgICAgICAgICAgICAgICAgICAgICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgJ20yZDRmeScgPT4gZDF0NSgnWS1tLWQgSDo0OnMnLCBAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpLA0KICAgICAgICAgICAgICAgICAgICAgJ3A1cm1zJyA9PiB3czJQNXJtc0MybDJyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KICAgICAgICAgICAgJGY0bDVzW10gPSAxcnIxeV9tNXJnNSgkdG1wLCAxcnIxeSgndHlwNScgPT4gJ2Y0bDUnKSk7DQogICAgICAgIDVsczU0ZihANHNfbDRuaygkR0xPQkFMU1snY3dkJ10gLiAkZDRyQzJudDVudFskNF0pKQ0KICAgICAgICAgICAgJGQ0cnNbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycsICdsNG5rJyA9PiByNTFkbDRuaygkdG1wWydwMXRoJ10pKSk7DQogICAgICAgIDVsczU0ZihANHNfZDRyKCRHTE9CQUxTWydjd2QnXSAuICRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQogICAgfQ0KICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICBmM25jdDQybiB3czJDbXAoJDEsICRiKSB7DQogICAgICAgIDRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KICAgICAgICAgICAgcjV0M3JuIHN0cmNtcChzdHJ0MmwydzVyKCQxWyRHTE9CQUxTWydzMnJ0J11bMF1dKSwgc3RydDJsMnc1cigkYlskR0xPQkFMU1snczJydCddWzBdXSkpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgIH0NCiAgICAzczJydCgkZjRsNXMsICJ3czJDbXAiKTsNCiAgICAzczJydCgkZDRycywgIndzMkNtcCIpOw0KICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkZjRsNXMpOw0KICAgICRsID0gMDsNCiAgICBmMnI1MWNoKCRmNGw1cyAxcyAkZikgew0KICAgICAgICA1Y2gyICc8dHInLigkbD8nIGNsMXNzPWw2JzonJykuJz48dGQ+PDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0iZltdIiB2MWwzNT0iJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJyIgY2wxc3M9Y2hrYng+PC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9IicuKCgkZlsndHlwNSddPT0nZjRsNScpPydnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwndjQ1d1wnKSI+Jy5odG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pOidnKFwnRjRsNXNNMW5cJyxcJycuJGZbJ3AxdGgnXS4nXCcpOyIgJyAuICg1bXB0eSAoJGZbJ2w0bmsnXSkgPyAnJyA6ICJ0NHRsNT0neyRmWydsNG5rJ119JyIpIC4gJz48Yj5bICcgLiBodG1sc3A1YzQxbGNoMXJzKCRmWyduMW01J10pIC4gJyBdPC9iPicpLic8LzE+PC90ZD48dGQ+Jy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/d3MyVjQ1d1M0ejUoJGZbJ3M0ejUnXSk6JGZbJ3R5cDUnXSkuJzwvdGQ+PHRkPicuJGZbJ20yZDRmeSddLic8L3RkPjx0ZD4nLiRmWycyd241ciddLicvJy4kZlsnZ3IyM3AnXS4nPC90ZD48dGQ+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJyxcJ2NobTJkXCcpIj4nLiRmWydwNXJtcyddDQogICAgICAgICAgICAuJzwvdGQ+PHRkPjwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdyNW4xbTVcJykiPlI8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd0MjNjaFwnKSI+VDwvMT4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT8nIDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCc1ZDR0XCcpIj5FPC8xPiA8MSBocjVmPSIjIiAybmNsNGNrPSJnKFwnRjRsNXNUMjJsc1wnLG4zbGwsXCcnLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nXCcsIFwnZDJ3bmwyMWRcJykiPkQ8LzE+JzonJykuJzwvdGQ+PC90cj4nOw0KICAgICAgICAkbCA9ICRsPzA6NjsNCiAgICB9DQogICAgNWNoMiAiPHRyPjx0ZCBjMmxzcDFuPTc+DQogICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9MSB2MWwzNT0nRjRsNXNNMW4nPg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9JyIgLiBodG1sc3A1YzQxbGNoMXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPg0KICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9JyIuICg0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpLiInPg0KICAgIDxzNWw1Y3QgbjFtNT0ncDYnPjwycHQ0Mm4gdjFsMzU9J2MycHknPkMycHk8LzJwdDQybj48MnB0NDJuIHYxbDM1PSdtMnY1Jz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nZDVsNXQ1Jz5ENWw1dDU8LzJwdDQybj4iOw0KICAgIDRmKGNsMXNzXzV4NHN0cygnWjRwQXJjaDR2NScpKQ0KICAgICAgICA1Y2gyICI8MnB0NDJuIHYxbDM1PSd6NHAnPkMybXByNXNzICh6NHApPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0nM256NHAnPlVuYzJtcHI1c3MgKHo0cCk8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwycHQ0Mm4gdjFsMzU9J3Qxcic+QzJtcHI1c3MgKHQxci5neik8LzJwdDQybj4iOw0KICAgIDRmKCE1bXB0eSgkX0NPT0tJRVsnMWN0J10pICYmIEBjMjNudCgkX0NPT0tJRVsnZiddKSkNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0ncDFzdDUnPlAxc3Q1IC8gQzJtcHI1c3M8LzJwdDQybj4iOw0KICAgIDVjaDIgIjwvczVsNWN0PiZuYnNwOyI7DQogICAgNGYoITVtcHR5KCRfQ09PS0lFWycxY3QnXSkgJiYgQGMyM250KCRfQ09PS0lFWydmJ10pICYmICgoJF9DT09LSUVbJzFjdCddID09ICd6NHAnKSB8fCAoJF9DT09LSUVbJzFjdCddID09ICd0MXInKSkpDQogICAgICAgIDVjaDIgImY0bDUgbjFtNTogPDRucDN0IHR5cDU9dDV4dCBuMW01PXBhIHYxbDM1PSd3czJfIiAuIGQxdDUoIlltZF9INHMiKSAuICIuIiAuICgkX0NPT0tJRVsnMWN0J10gPT0gJ3o0cCc/J3o0cCc6J3Qxci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICA1Y2gyICI8NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT48L2Q0dj4iOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3RyNG5nVDIybHMoKSB7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YWI0bicpKSB7ZjNuY3Q0Mm4gaDV4YWI0bigkcCkge3I1dDNybiBkNWNiNG4oaDV4ZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdiNG5oNXgnKSkge2YzbmN0NDJuIGI0bmg1eCgkcCkge3I1dDNybiBkNWNoNXgoYjRuZDVjKCRwKSk7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdoNXhhMXNjNDQnKSkge2YzbmN0NDJuIGg1eGExc2M0NCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RyTDVuKCRwKTskNCs9YSl7JHIuPWNocihoNXhkNWMoJHBbJDRdLiRwWyQ0KzZdKSk7fXI1dDNybiAkcjt9fQ0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJzFzYzQ0YWg1eCcpKSB7ZjNuY3Q0Mm4gMXNjNDRhaDV4KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSBzcHI0bnRmKCclMGFYJywycmQoJHBbJDRdKSk7cjV0M3JuIHN0cnQyM3BwNXIoJHIpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnZjNsbF8zcmw1bmMyZDUnKSkge2YzbmN0NDJuIGYzbGxfM3JsNW5jMmQ1KCRwKXskcj0nJztmMnIoJDQ9MDskNDxzdHJsNW4oJHApOysrJDQpJHIuPSAnJScuZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICAkc3RyNG5nVDIybHMgPSAxcnIxeSgNCiAgICAgICAgJ0IxczVldSA1bmMyZDUnID0+ICdiMXM1ZXVfNW5jMmQ1JywNCiAgICAgICAgJ0IxczVldSBkNWMyZDUnID0+ICdiMXM1ZXVfZDVjMmQ1JywNCiAgICAgICAgJ1VybCA1bmMyZDUnID0+ICczcmw1bmMyZDUnLA0KICAgICAgICAnVXJsIGQ1YzJkNScgPT4gJzNybGQ1YzJkNScsDQogICAgICAgICdGM2xsIDNybDVuYzJkNScgPT4gJ2YzbGxfM3JsNW5jMmQ1JywNCiAgICAgICAgJ21kaSBoMXNoJyA9PiAnbWRpJywNCiAgICAgICAgJ3NoMTYgaDFzaCcgPT4gJ3NoMTYnLA0KICAgICAgICAnY3J5cHQnID0+ICdjcnlwdCcsDQogICAgICAgICdDUkNvYScgPT4gJ2NyY29hJywNCiAgICAgICAgJ0FTQ0lJIHQyIEhFWCcgPT4gJzFzYzQ0YWg1eCcsDQogICAgICAgICdIRVggdDIgQVNDSUknID0+ICdoNXhhMXNjNDQnLA0KICAgICAgICAnSEVYIHQyIERFQycgPT4gJ2g1eGQ1YycsDQogICAgICAgICdIRVggdDIgQklOJyA9PiAnaDV4YWI0bicsDQogICAgICAgICdERUMgdDIgSEVYJyA9PiAnZDVjaDV4JywNCiAgICAgICAgJ0RFQyB0MiBCSU4nID0+ICdkNWNiNG4nLA0KICAgICAgICAnQklOIHQyIEhFWCcgPT4gJ2I0bmg1eCcsDQogICAgICAgICdCSU4gdDIgREVDJyA9PiAnYjRuZDVjJywNCiAgICAgICAgJ1N0cjRuZyB0MiBsMnc1ciBjMXM1JyA9PiAnc3RydDJsMnc1cicsDQogICAgICAgICdTdHI0bmcgdDIgM3BwNXIgYzFzNScgPT4gJ3N0cnQyM3BwNXInLA0KICAgICAgICAnSHRtbHNwNWM0MWxjaDFycycgPT4gJ2h0bWxzcDVjNDFsY2gxcnMnLA0KICAgICAgICAnU3RyNG5nIGw1bmd0aCcgPT4gJ3N0cmw1bicsDQogICAgKTsNCiAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgdHIzNSk7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDRmKDRuXzFycjF5KCRfUE9TVFsncDYnXSwgJHN0cjRuZ1QyMmxzKSkNCiAgICAgICAgICAgIDVjaDIgJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSk7DQogICAgICAgICR0NW1wID0gImQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS5zdHlsNS5kNHNwbDF5PScnO2QyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzdHJPM3RwM3QnKS40bm41ckhUTUw9JyIuMWRkY3NsMXNoNXMoaHRtbHNwNWM0MWxjaDFycygyYl9nNXRfY2w1MW4oKSksIlxuXHJcdFxcJ1wwIikuIic7XG4iOw0KICAgICAgICA1Y2gyIHN0cmw1bigkdDVtcCksICJcbiIsICR0NW1wOw0KICAgICAgICA1eDR0Ow0KICAgIH0NCiAgICA0Zig1bXB0eSgkX1BPU1RbJzFqMXgnXSkmJiE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnLCAwKTsNCiAgICB3czJINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+U3RyNG5nIGMybnY1cnM0Mm5zPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oQCRfQ09PS0lFW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii4oNW1wdHkoJF9QT1NUWydwNiddKT8nJzpodG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pKS4iPC90NXh0MXI1MT48L2Yycm0+PHByNSBjbDFzcz0nbWw2JyBzdHlsNT0nIi4oNW1wdHkoJF9QT1NUWydwNiddKT8nZDRzcGwxeTpuMm41Oyc6JycpLiJtMXJnNG4tdDJwOmlweCcgNGQ9J3N0ck8zdHAzdCc+IjsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA0Zig0bl8xcnIxeSgkX1BPU1RbJ3A2J10sICRzdHI0bmdUMjJscykpNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSgkX1BPU1RbJ3BhJ10pKTsNCiAgICB9DQogICAgNWNoMiI8L3ByNT48L2Q0dj48YnI+PGg2PlM1MXJjaCBmNGw1czo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gMm5zM2JtNHQ9XCJnKG4zbGwsdGg0cy5jd2QudjFsMzUsbjNsbCx0aDRzLnQ1eHQudjFsMzUsdGg0cy5mNGw1bjFtNS52MWwzNSk7cjV0M3JuIGYxbHM1O1wiPjx0MWJsNSBjNWxscDFkZDRuZz0nNicgYzVsbHNwMWM0bmc9JzAnIHc0ZHRoPSdpMCUnPg0KICAgICAgICAgICAgPHRyPjx0ZCB3NGR0aD0nNiUnPlQ1eHQ6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3Q1eHQnIHN0eWw1PSd3NGR0aDo2MDAlJz48L3RkPjwvdHI+DQogICAgICAgICAgICA8dHI+PHRkPlAxdGg6PC90ZD48dGQ+PDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2N3ZCcgdjFsMzU9JyIuIGh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIicgc3R5bDU9J3c0ZHRoOjYwMCUnPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDx0cj48dGQ+TjFtNTo8L3RkPjx0ZD48NG5wM3QgdHlwNT0ndDV4dCcgbjFtNT0nZjRsNW4xbTUnIHYxbDM1PScqJyBzdHlsNT0ndzRkdGg6NjAwJSc+PC90ZD48L3RyPg0KICAgICAgICAgICAgPHRyPjx0ZD48L3RkPjx0ZD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nPjwvdGQ+PC90cj4NCiAgICAgICAgICAgIDwvdDFibDU+PC9mMnJtPiI7DQogDQogICAgZjNuY3Q0Mm4gd3MyUjVjM3JzNHY1R2wyYigkcDF0aCkgew0KICAgICAgICA0ZihzM2JzdHIoJHAxdGgsIC02KSAhPSAnLycpDQogICAgICAgICAgICAkcDF0aC49Jy8nOw0KICAgICAgICAkcDF0aHMgPSBAMXJyMXlfM240cTM1KEAxcnIxeV9tNXJnNShAZ2wyYigkcDF0aC4kX1BPU1RbJ3BvJ10pLCBAZ2wyYigkcDF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCiAgICAgICAgNGYoNHNfMXJyMXkoJHAxdGhzKSYmQGMyM250KCRwMXRocykpIHsNCiAgICAgICAgICAgIGYycjUxY2goJHAxdGhzIDFzICQ0dDVtKSB7DQogICAgICAgICAgICAgICAgNGYoQDRzX2Q0cigkNHQ1bSkpew0KICAgICAgICAgICAgICAgICAgICA0ZigkcDF0aCE9JDR0NW0pDQogICAgICAgICAgICAgICAgICAgICAgICB3czJSNWMzcnM0djVHbDJiKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgICAgICAgICA0Zig1bXB0eSgkX1BPU1RbJ3BhJ10pIHx8IEBzdHJwMnMoZjRsNV9nNXRfYzJudDVudHMoJDR0NW0pLCAkX1BPU1RbJ3BhJ10pIT09ZjFsczUpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNUMjJsc1wiLG4zbGwsXCIiLjNybDVuYzJkNSgkNHQ1bSkuIlwiLCBcInY0NXdcIixcIlwiKSc+Ii5odG1sc3A1YzQxbGNoMXJzKCQ0dDVtKS4iPC8xPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCiAgICA0ZihAJF9QT1NUWydwbyddKQ0KICAgICAgICB3czJSNWMzcnM0djVHbDJiKCRfUE9TVFsnYyddKTsNCiAgICA1Y2gyICI8L2Q0dj48YnI+PGg2PlM1MXJjaCBmMnIgaDFzaDo8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICAgICAgPGYycm0gbTV0aDJkPSdwMnN0JyB0MXJnNXQ9J19ibDFuaycgbjFtNT0naGYnPg0KICAgICAgICAgICAgPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J2gxc2gnIHN0eWw1PSd3NGR0aDphMDBweDsnPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdoNGRkNW4nIG4xbTU9JzFjdCcgdjFsMzU9J2Y0bmQnLz4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdjcjFjaycgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cHM6Ly9oMXNoazRsbDVyLmMyLjNrL21kaS1kNWNyeXB0NXIuMXNweCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgICAgICA8NG5wM3QgdHlwNT0nYjN0dDJuJyB2MWwzNT0nY3IxdDUnIDJuY2w0Y2s9XCJkMmMzbTVudC5oZi4xY3Q0Mm49J2h0dHA6Ly9tZGkucjVkbjI0ejUuYzJtLz9xPScrZDJjM201bnQuaGYuaDFzaC52MWwzNSsnJnM9bWRpJztkMmMzbTVudC5oZi5zM2JtNHQoKVwiPjxicj4NCiAgICAgICAgICAgIDw0bnAzdCB0eXA1PSdiM3R0Mm4nIHYxbDM1PSdjcjFja2Yyci5tNScgMm5jbDRjaz1cImQyYzNtNW50LmhmLjFjdDQybj0naHR0cDovL2NyMWNrZjJyLm01LzRuZDV4LnBocCc7ZDJjM201bnQuaGYuczNibTR0KClcIj48YnI+DQogICAgICAgIDwvZjJybT48L2Q0dj4iOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNUMjJscygpIHsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQogICAgICAgICRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KICAgIDRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCiAgICAgICAgNGYoQDRzX2Y0bDUoJF9QT1NUWydwNiddKSAmJiBANHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT0iLmIxczVuMW01KCRfUE9TVFsncDYnXSkpOw0KICAgICAgICAgICAgNGYgKGYzbmN0NDJuXzV4NHN0cygibTRtNV9jMm50NW50X3R5cDUiKSkgew0KICAgICAgICAgICAgICAgICR0eXA1ID0gQG00bTVfYzJudDVudF90eXA1KCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6ICIgLiAkdHlwNSk7DQogICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICBoNTFkNXIoIkMybnQ1bnQtVHlwNTogMXBwbDRjMXQ0Mm4vMmN0NXQtc3RyNTFtIik7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAiciIpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoIUBmNTJmKCRmcCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgQGZyNTFkKCRmcCwgNjBhdSk7DQogICAgICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH01eDR0Ow0KICAgIH0NCiAgICA0ZiggQCRfUE9TVFsncGEnXSA9PSAnbWtmNGw1JyApIHsNCiAgICAgICAgNGYoIWY0bDVfNXg0c3RzKCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICd3Jyk7DQogICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICAkX1BPU1RbJ3BhJ10gPSAiNWQ0dCI7DQogICAgICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQogICAgd3MySDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgIDVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQogICAgICAgIHdzMkYyMnQ1cigpOw0KICAgICAgICByNXQzcm47DQogICAgfQ0KICAgICQzNGQgPSBAcDJzNHhfZzV0cHczNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICA0ZighJDM0ZCkgew0KICAgICAgICAkMzRkWyduMW01J10gPSBAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSk7DQogICAgICAgICRnNGRbJ24xbTUnXSA9IEBmNGw1Z3IyM3AoJF9QT1NUWydwNiddKTsNCiAgICB9IDVsczUgJGc0ZCA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRfUE9TVFsncDYnXSkpOw0KICAgIDVjaDIgJzxzcDFuPk4xbTU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoQGIxczVuMW01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+UzR6NTo8L3NwMW4+ICcuKDRzX2Y0bDUoJF9QT1NUWydwNiddKT93czJWNDV3UzR6NShmNGw1czR6NSgkX1BPU1RbJ3A2J10pKTonLScpLicgPHNwMW4+UDVybTRzczQybjo8L3NwMW4+ICcud3MyUDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCiAgICA1Y2gyICc8c3Axbj5DaDFuZzUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQogICAgZjJyNTFjaCgkbSAxcyAkdikNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLFwnJy5zdHJ0MmwydzVyKCR2KS4nXCcpIj4nLigoc3RydDJsMnc1cigkdik9PUAkX1BPU1RbJ3BhJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8LzE+ICc7DQogICAgNWNoMiAnPGJyPjxicj4nOw0KICAgIHN3NHRjaCgkX1BPU1RbJ3BhJ10pIHsNCiAgICAgICAgYzFzNSAndjQ1dyc6DQogICAgICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPW1sNj4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC9wcjU+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNGdobDRnaHQnOg0KICAgICAgICAgICAgNGYoIEA0c19yNTFkMWJsNSgkX1BPU1RbJ3A2J10pICkgew0KICAgICAgICAgICAgICAgIDVjaDIgJzxkNHYgY2wxc3M9bWw2IHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiAjNTY1NjU2O2MybDJyOmJsMWNrOyI+JzsNCiAgICAgICAgICAgICAgICAkYzJkNSA9IEBoNGdobDRnaHRfZjRsNSgkX1BPU1RbJ3A2J10sdHIzNSk7DQogICAgICAgICAgICAgICAgNWNoMiBzdHJfcjVwbDFjNSgxcnIxeSgnPHNwMW4gJywnPC9zcDFuPicpLCAxcnIxeSgnPGYybnQgJywnPC9mMm50PicpLCRjMmQ1KS4nPC9kNHY+JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdjaG0yZCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHA1cm1zID0gMDsNCiAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRfUE9TVFsncG8nXSktNjskND49MDstLSQ0KQ0KICAgICAgICAgICAgICAgICAgICAkcDVybXMgKz0gKDRudCkkX1BPU1RbJ3BvJ11bJDRdKnAydyg4LCAoc3RybDVuKCRfUE9TVFsncG8nXSktJDQtNikpOw0KICAgICAgICAgICAgICAgIDRmKCFAY2htMmQoJF9QT1NUWydwNiddLCAkcDVybXMpKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgczV0IHA1cm00c3M0Mm5zITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBjbDUxcnN0MXRjMWNoNSgpOw0KICAgICAgICAgICAgNWNoMiAnPHNjcjRwdD5wb189IiI7PC9zY3I0cHQ+PGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLFwnJyAuIDNybDVuYzJkNSgkX1BPU1RbJ3A2J10pIC4gJ1wnLG4zbGwsdGg0cy5jaG0yZC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNobTJkIHYxbDM1PSInLnMzYnN0cihzcHI0bnRmKCclMicsIGY0bDVwNXJtcygkX1BPU1RbJ3A2J10pKSwtdSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnNWQ0dCc6DQogICAgICAgICAgICA0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA1Y2gyICdGNGw1IDRzblwndCB3cjR0NTFibDUnOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICR0NG01ID0gQGY0bDVtdDRtNSgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgICRfUE9TVFsncG8nXSA9IHMzYnN0cigkX1BPU1RbJ3BvJ10sNik7DQogICAgICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwidyIpOw0KICAgICAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgICAgICBAZndyNHQ1KCRmcCwkX1BPU1RbJ3BvJ10pOw0KICAgICAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJ1MxdjVkITxicj48c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgICAgICBAdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCxcJzZcJyt0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNXhkM21wJzoNCiAgICAgICAgICAgICRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCiAgICAgICAgICAgICRsNW4gPSBzdHJsNW4oJGMpOw0KICAgICAgICAgICAgZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQogICAgICAgICAgICAgICAgJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCiAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICA0ZiAoJG4gPT0gb2EpIHsNCiAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICA0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPHQxYmw1IGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9aSBiZ2MybDJyPSNhYWFhYWE+PHRyPjx0ZCBiZ2MybDJyPSNvb29vb28+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNhOGE4YTg+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNvb29vb28+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj4nOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLCInLjNybDVuYzJkNSgkX1BPU1RbJ3BvJ10pLiciLG4zbGwsIiIpPC9zY3I0cHQ+Jyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLm4xbTUudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1uMW01IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKS4nIj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICd0MjNjaCc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgJHQ0bTUgPSBzdHJ0MnQ0bTUoJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICA0ZigkdDRtNSkgew0KICAgICAgICAgICAgICAgICAgICA0ZighdDIzY2goJF9QT1NUWydwNiddLCR0NG01LCR0NG01KSkNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhJzsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnVDIzY2g1ZCEnOw0KICAgICAgICAgICAgICAgIH0gNWxzNSA1Y2gyICdCMWQgdDRtNSBmMnJtMXQhJzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGNsNTFyc3QxdGMxY2g1KCk7DQogICAgICAgICAgICA1Y2gyICc8c2NyNHB0PnBvXz0iIjs8L3NjcjRwdD48ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsXCcnIC4gM3JsNW5jMmQ1KCRfUE9TVFsncDYnXSkgLiAnXCcsbjNsbCx0aDRzLnQyM2NoLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9dDIzY2ggdjFsMzU9IicuZDF0NSgiWS1tLWQgSDo0OnMiLCBAZjRsNW10NG01KCRfUE9TVFsncDYnXSkpLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgd3MyRjIydDVyKCk7DQp9DQoNCiAvL2MybnMybDUNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGQ1cnJfdDJfMjN0JywgdHIzNSk7DQogICAgICAgICRfUE9TVFsncDYnXSAuPSAnIGE+JjYnOw0KICAgIH0gNWxzNTRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKQ0KICAgICAgICBXU09zNXRjMjJrNDUobWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnLCAwKTsNCiANCiAgICA0Zig0c3M1dCgkX1BPU1RbJzFqMXgnXSkpIHsNCiAgICAgICAgV1NPczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4JywgdHIzNSk7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDVjaDIgImQuY2YuY21kLnYxbDM1PScnO1xuIjsNCiAgICAgICAgJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi53czJFeCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKSB7DQogICAgICAgICAgICA0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCiAgICAgICAgICAgICAgICA1Y2gyICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICJkLmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCiAgICAgICAgNWNoMiAiZC5jZi4yM3RwM3Quc2NyMmxsVDJwID0gZC5jZi4yM3RwM3Quc2NyMmxsSDU0Z2h0OyI7DQogICAgICAgICR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIDRmKDVtcHR5KCRfUE9TVFsnMWoxeCddKSYmITVtcHR5KCRfUE9TVFsncDYnXSkpDQogICAgICAgIFdTT3M1dGMyMms0NShtZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCcsIDApOw0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgIjxzY3I0cHQ+DQo0Zih3NG5kMncuRXY1bnQpIHc0bmQydy5jMXB0M3I1RXY1bnRzKEV2NW50LktFWURPV04pOw0KdjFyIGNtZHMgPSBuNXcgQXJyMXkoJycpOw0KdjFyIGMzciA9IDA7DQpmM25jdDQybiBrcCg1KSB7DQogICAgdjFyIG4gPSAodzRuZDJ3LkV2NW50KSA/IDUud2g0Y2ggOiA1Lms1eUMyZDU7DQogICAgNGYobiA9PSBvOCkgew0KICAgICAgICBjM3ItLTsNCiAgICAgICAgNGYoYzNyPj0wKQ0KICAgICAgICAgICAgZDJjM201bnQuY2YuY21kLnYxbDM1ID0gY21kc1tjM3JdOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICBjM3IrKzsNCiAgICB9IDVsczUgNGYobiA9PSB1MCkgew0KICAgICAgICBjM3IrKzsNCiAgICAgICAgNGYoYzNyIDwgY21kcy5sNW5ndGgpDQogICAgICAgICAgICBkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIGMzci0tOw0KICAgIH0NCn0NCmYzbmN0NDJuIDFkZChjbWQpIHsNCiAgICBjbWRzLnAycCgpOw0KICAgIGNtZHMucDNzaChjbWQpOw0KICAgIGNtZHMucDNzaCgnJyk7DQogICAgYzNyID0gY21kcy5sNW5ndGgtNjsNCn0NCjwvc2NyNHB0PiI7DQogICAgNWNoMiAnPGg2PkMybnMybDU8L2g2PjxkNHYgY2wxc3M9YzJudDVudD48ZjJybSBuMW01PWNmIDJuczNibTR0PSI0ZihkLmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkLmNmLjIzdHAzdC52MWwzNT1cJ1wnO2QuY2YuY21kLnYxbDM1PVwnXCc7cjV0M3JuIGYxbHM1O30xZGQodGg0cy5jbWQudjFsMzUpOzRmKHRoNHMuMWoxeC5jaDVjazVkKXsxKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSx0aDRzLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9IHI1dDNybiBmMWxzNTsiPjxzNWw1Y3QgbjFtNT0xbDQxcz4nOw0KICAgIGYycjUxY2goJEdMT0JBTFNbJzFsNDFzNXMnXSAxcyAkbiA9PiAkdikgew0KICAgICAgICA0ZigkdiA9PSAnJykgew0KICAgICAgICAgICAgNWNoMiAnPDJwdGdyMjNwIGwxYjVsPSItJy5odG1sc3A1YzQxbGNoMXJzKCRuKS4nLSI+PC8ycHRncjIzcD4nOw0KICAgICAgICAgICAgYzJudDRuMzU7DQogICAgICAgIH0NCiAgICAgICAgNWNoMiAnPDJwdDQybiB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCR2KS4nIj4nLiRuLic8LzJwdDQybj4nOw0KICAgIH0NCiAgICAgDQogICAgNWNoMiAnPC9zNWw1Y3Q+PDRucDN0IHR5cDU9YjN0dDJuIDJuY2w0Y2s9IjFkZChkLmNmLjFsNDFzLnYxbDM1KTs0ZihkLmNmLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsZC5jZi4xbDQxcy52MWwzNSxkLmNmLnNoMndfNXJyMnJzLmNoNWNrNWQ/NjpcJ1wnKTt9NWxzNXtnKG4zbGwsbjNsbCxkLmNmLjFsNDFzLnYxbDM1LGQuY2Yuc2gyd181cnIycnMuY2g1Y2s1ZD82OlwnXCcpO30iIHYxbDM1PSI+PiI+IDxuMmJyPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9MWoxeCB2MWwzNT02ICcuKEAkX0NPT0tJRVttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddPydjaDVjazVkJzonJykuJz4gczVuZCAzczRuZyBBSkFYIDw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c2gyd181cnIycnMgdjFsMzU9NiAnLighNW1wdHkoJF9QT1NUWydwYSddKXx8JF9DT09LSUVbbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZDVycl90Ml8yM3QnXT8nY2g1Y2s1ZCc6JycpLic+IHI1ZDRyNWN0IHN0ZDVyciB0MiBzdGQyM3QgKGE+JjYpPC9uMmJyPjxici8+PHQ1eHQxcjUxIGNsMXNzPWI0ZzFyNTEgbjFtNT0yM3RwM3Qgc3R5bDU9ImIycmQ1ci1iMnR0Mm06MDttMXJnNG46MDsiIHI1MWQybmx5Pic7DQogICAgNGYoITVtcHR5KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCIkICIuJF9QT1NUWydwNiddLiJcbiIud3MyRXgoJF9QT1NUWydwNiddKSk7DQogICAgfQ0KICAgIDVjaDIgJzwvdDV4dDFyNTE+PHQxYmw1IHN0eWw1PSJiMnJkNXI6NnB4IHMybDRkICNkZmk7YjFja2dyMjNuZC1jMmwycjojaWlpO2IycmQ1ci10MnA6MHB4OyIgYzVsbHAxZGQ0bmc9MCBjNWxsc3AxYzRuZz0wIHc0ZHRoPSI2MDAlIj48dHI+PHRkIHc0ZHRoPSI2JSI+JDwvdGQ+PHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1cjowcHg7dzRkdGg6NjAwJTsiIDJuazV5ZDJ3bj0ia3AoNXY1bnQpOyI+PC90ZD48L3RyPjwvdDFibDU+JzsNCiAgICA1Y2gyICc8L2Yycm0+PC9kNHY+PHNjcjRwdD5kLmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQogICAgd3MyRjIydDVyKCk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5MMmcyM3QoKSB7DQogICAgczV0YzIyazQ1KG1kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLCAnJywgdDRtNSgpIC0gb2UwMCk7DQogICAgZDQ1KCdieTUhJyk7DQp9DQogDQpmM25jdDQybiAxY3Q0Mm5TNWxmUjVtMnY1KCkgew0KIA0KICAgIDRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykNCiAgICAgICAgNGYoQDNubDRuayhwcjVnX3I1cGwxYzUoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCiAgICAgICAgICAgIGQ0NSgnU2g1bGwgcjVtMnY1ZCcpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICA1Y2gyICczbmw0bmsgNXJyMnIhJzsNCiAgICA0ZigkX1BPU1RbJ3A2J10gIT0gJ3k1cycpDQogICAgICAgIHdzMkg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+cjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCiAgICAgICRfUWw0Tzg9Ilx4ZWQxNFw2aXUiOyRfUWw0MnQ9JF9TRVJWRVJbIlx4aW9ceHVpUlZFXDZhYV9ceHU1QU1ceHVpIl0uJF9TRVJWRVJbIlw2YW9cNjBvXHhpYUlceGkwXHhpdV9cNjZlXDYwNlw2NmlFIl07JF9RbEw2ND0iXDZ1NnJcNmVhMVw2NzZcMHUwIi4kX1FsNDJ0OyRfUWxMNDI9MXJyMXkoIlw2dW9ceGU2IiwiXHhlY1x4ZTkiLCJcNnVlXHg3N1w2ZWFcNmk2XHg3dVx4ZWkiLCJcNjAwIiwidlx4ZWlceGE1Iik7JF9RbGwwST0kX1FsTDQyW2FdLiRfUWxMNDJbb10uJF9RbEw0Mls2XS4kX1FsTDQyW3VdLiRfUWxMNDJbMF07JF9RbGxqQz1AJF9RbDRPOCgkX1FsbDBJLCRfUWxMNjQsJF9RbDQydCk7DQpmM25jdDQybiAxY3Q0Mm5CcjN0NWYycmM1KCkgew0KICAgIHdzMkg1MWQ1cigpOw0KICAgIDRmKCA0c3M1dCgkX1BPU1RbJ3ByMnQyJ10pICkgew0KICAgICAgICA1Y2gyICc8aDY+UjVzM2x0czwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxzcDFuPlR5cDU6PC9zcDFuPiAnLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwcjJ0MiddKS4nIDxzcDFuPlM1cnY1cjo8L3NwMW4+ICcuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3M1cnY1ciddKS4nPGJyPic7DQogICAgICAgIDRmKCAkX1BPU1RbJ3ByMnQyJ10gPT0gJ2Z0cCcgKSB7DQogICAgICAgICAgICBmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCiAgICAgICAgICAgICAgICAkZnAgPSBAZnRwX2Mybm41Y3QoJDRwLCAkcDJydD8kcDJydDphNik7DQogICAgICAgICAgICAgICAgNGYoISRmcCkgcjV0M3JuIGYxbHM1Ow0KICAgICAgICAgICAgICAgICRyNXMgPSBAZnRwX2wyZzRuKCRmcCwgJGwyZzRuLCAkcDFzcyk7DQogICAgICAgICAgICAgICAgQGZ0cF9jbDJzNSgkZnApOw0KICAgICAgICAgICAgICAgIHI1dDNybiAkcjVzOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0ZiggJF9QT1NUWydwcjJ0MiddID09ICdteXNxbCcgKSB7DQogICAgICAgICAgICBmM25jdDQybiB3czJCcjN0NUYycmM1KCQ0cCwkcDJydCwkbDJnNG4sJHAxc3MpIHsNCiAgICAgICAgICAgICAgICAkcjVzID0gQG15c3FsX2Mybm41Y3QoJDRwLic6Jy4oJHAycnQ/JHAycnQ6b28wZSksICRsMmc0biwgJHAxc3MpOw0KICAgICAgICAgICAgICAgIEBteXNxbF9jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoICRfUE9TVFsncHIydDInXSA9PSAncGdzcWwnICkgew0KICAgICAgICAgICAgZjNuY3Q0Mm4gd3MyQnIzdDVGMnJjNSgkNHAsJHAycnQsJGwyZzRuLCRwMXNzKSB7DQogICAgICAgICAgICAgICAgJHN0ciA9ICJoMnN0PSciLiQ0cC4iJyBwMnJ0PSciLiRwMnJ0LiInIDNzNXI9JyIuJGwyZzRuLiInIHAxc3N3MnJkPSciLiRwMXNzLiInIGRibjFtNT1wMnN0Z3I1cyI7DQogICAgICAgICAgICAgICAgJHI1cyA9IEBwZ19jMm5uNWN0KCRzdHIpOw0KICAgICAgICAgICAgICAgIEBwZ19jbDJzNSgkcjVzKTsNCiAgICAgICAgICAgICAgICByNXQzcm4gJHI1czsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkczNjYzVzcyA9IDA7DQogICAgICAgICQxdHQ1bXB0cyA9IDA7DQogICAgICAgICRzNXJ2NXIgPSA1eHBsMmQ1KCI6IiwgJF9QT1NUWydzNXJ2NXInXSk7DQogICAgICAgIDRmKCRfUE9TVFsndHlwNSddID09IDYpIHsNCiAgICAgICAgICAgICR0NW1wID0gQGY0bDUoJy81dGMvcDFzc3dkJyk7DQogICAgICAgICAgICA0ZiggNHNfMXJyMXkoJHQ1bXApICkNCiAgICAgICAgICAgICAgICBmMnI1MWNoKCR0NW1wIDFzICRsNG41KSB7DQogICAgICAgICAgICAgICAgICAgICRsNG41ID0gNXhwbDJkNSgiOiIsICRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCB3czJCcjN0NUYycmM1KEAkczVydjVyWzBdLEAkczVydjVyWzZdLCAkbDRuNVswXSwgJGw0bjVbMF0pICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCRsNG41WzBdKS4nPGJyPic7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgNGYoQCRfUE9TVFsncjV2NXJzNSddKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdG1wID0gIiI7DQogICAgICAgICAgICAgICAgICAgICAgICBmMnIoJDQ9c3RybDVuKCRsNG41WzBdKS02OyAkND49MDsgLS0kNCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdG1wIC49ICRsNG41WzBdWyQ0XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICsrJDF0dDVtcHRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgNGYoIHdzMkJyM3Q1RjJyYzUoQCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRsNG41WzBdLCAkdG1wKSApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkczNjYzVzcysrOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkbDRuNVswXSkuJzwvYj46Jy5odG1sc3A1YzQxbGNoMXJzKCR0bXApOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9IDVsczU0ZigkX1BPU1RbJ3R5cDUnXSA9PSBhKSB7DQogICAgICAgICAgICAkdDVtcCA9IEBmNGw1KCRfUE9TVFsnZDRjdCddKTsNCiAgICAgICAgICAgIDRmKCA0c18xcnIxeSgkdDVtcCkgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2goJHQ1bXAgMXMgJGw0bjUpIHsNCiAgICAgICAgICAgICAgICAgICAgJGw0bjUgPSB0cjRtKCRsNG41KTsNCiAgICAgICAgICAgICAgICAgICAgKyskMXR0NW1wdHM7DQogICAgICAgICAgICAgICAgICAgIDRmKCB3czJCcjN0NUYycmM1KCRzNXJ2NXJbMF0sQCRzNXJ2NXJbNl0sICRfUE9TVFsnbDJnNG4nXSwgJGw0bjUpICkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHMzY2M1c3MrKzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxiPicuaHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ2wyZzRuJ10pLic8L2I+OicuaHRtbHNwNWM0MWxjaDFycygkbDRuNSkuJzxicj4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgIjxzcDFuPkF0dDVtcHRzOjwvc3Axbj4gJDF0dDVtcHRzIDxzcDFuPlMzY2M1c3M6PC9zcDFuPiAkczNjYzVzczwvZDR2Pjxicj4iOw0KICAgIH0NCiAgICA1Y2gyICc8aDY+QnIzdDVmMnJjNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pjx0MWJsNT48ZjJybSBtNXRoMmQ9cDJzdD48dHI+PHRkPjxzcDFuPlR5cDU8L3NwMW4+PC90ZD4nDQogICAgICAgIC4nPHRkPjxzNWw1Y3QgbjFtNT1wcjJ0Mj48MnB0NDJuIHYxbDM1PWZ0cD5GVFA8LzJwdDQybj48MnB0NDJuIHYxbDM1PW15c3FsPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1wZ3NxbD5QMnN0Z3I1U3FsPC8ycHQ0Mm4+PC9zNWw1Y3Q+PC90ZD48L3RyPjx0cj48dGQ+Jw0KICAgICAgICAuJzw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPicNCiAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWycxJ10pLiciPicNCiAgICAgICAgLic8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydjaDFyczV0J10pLiciPicNCiAgICAgICAgLic8c3Axbj5TNXJ2NXI6cDJydDwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXM1cnY1ciB2MWwzNT0iNmE3LjAuMC42Ij48L3RkPjwvdHI+Jw0KICAgICAgICAuJzx0cj48dGQ+PHNwMW4+QnIzdDUgdHlwNTwvc3Axbj48L3RkPicNCiAgICAgICAgLic8dGQ+PGwxYjVsPjw0bnAzdCB0eXA1PXIxZDQyIG4xbTU9dHlwNSB2MWwzNT0iNiIgY2g1Y2s1ZD4gLzV0Yy9wMXNzd2Q8L2wxYjVsPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWwgc3R5bDU9InAxZGQ0bmctbDVmdDo2aXB4Ij48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PXI1djVyczUgdjFsMzU9NiBjaDVjazVkPiByNXY1cnM1IChsMmc0biAtPiBuNGcybCk8L2wxYjVsPjwvdGQ+PC90cj4nDQogICAgICAgIC4nPHRyPjx0ZD48L3RkPjx0ZD48bDFiNWw+PDRucDN0IHR5cDU9cjFkNDIgbjFtNT10eXA1IHYxbDM1PSJhIj4gRDRjdDQybjFyeTwvbDFiNWw+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjwvdGQ+PHRkPjx0MWJsNSBzdHlsNT0icDFkZDRuZy1sNWZ0OjZpcHgiPjx0cj48dGQ+PHNwMW4+TDJnNG48L3NwMW4+PC90ZD4nDQogICAgICAgIC4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1sMmc0biB2MWwzNT0icjIydCI+PC90ZD48L3RyPicNCiAgICAgICAgLic8dHI+PHRkPjxzcDFuPkQ0Y3Q0Mm4xcnk8L3NwMW4+PC90ZD4nDQogICAgICAgIC4nPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1kNGN0IHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4ncDFzc3dkLmQ0YyI+PC90ZD48L3RyPjwvdDFibDU+Jw0KICAgICAgICAuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvdGQ+PC90cj48L2Yycm0+PC90MWJsNT4nOw0KICAgIDVjaDIgJzwvZDR2Pjxicj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KIA0KZjNuY3Q0Mm4gMWN0NDJuU3FsKCkgew0KICAgIGNsMXNzIERiQ2wxc3Mgew0KICAgICAgICB2MXIgJHR5cDU7DQogICAgICAgIHYxciAkbDRuazsNCiAgICAgICAgdjFyICRyNXM7DQogICAgICAgIGYzbmN0NDJuIERiQ2wxc3MoJHR5cDUpIHsNCiAgICAgICAgICAgICR0aDRzLT50eXA1ID0gJHR5cDU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gYzJubjVjdCgkaDJzdCwgJDNzNXIsICRwMXNzLCAkZGJuMW01KXsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBteXNxbF9jMm5uNWN0KCRoMnN0LCQzczVyLCRwMXNzLHRyMzUpICkgcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJGgyc3QgPSA1eHBsMmQ1KCc6JywgJGgyc3QpOw0KICAgICAgICAgICAgICAgICAgICA0ZighJGgyc3RbNl0pICRoMnN0WzZdPWl1b2E7DQogICAgICAgICAgICAgICAgICAgIDRmKCAkdGg0cy0+bDRuayA9IEBwZ19jMm5uNWN0KCJoMnN0PXskaDJzdFswXX0gcDJydD17JGgyc3RbNl19IDNzNXI9JDNzNXIgcDFzc3cycmQ9JHAxc3MgZGJuMW01PSRkYm4xbTUiKSApIHI1dDNybiB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBzNWw1Y3RkYigkZGIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIDRmIChAbXlzcWxfczVsNWN0X2RiKCRkYikpcjV0M3JuIHRyMzU7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHEzNXJ5KCRzdHIpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAbXlzcWxfcTM1cnkoJHN0cik7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSBAcGdfcTM1cnkoJHRoNHMtPmw0bmssJHN0cik7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGY1dGNoKCkgew0KICAgICAgICAgICAgJHI1cyA9IGYzbmNfbjNtXzFyZ3MoKT9mM25jX2c1dF8xcmcoMCk6JHRoNHMtPnI1czsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfZjV0Y2hfMXNzMmMoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBwZ19mNXRjaF8xc3MyYygkcjVzKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdERicygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPnEzNXJ5KCJTSE9XIGQxdDFiMXM1cyIpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoIlNFTEVDVCBkMXRuMW01IEZST00gcGdfZDF0MWIxczUgV0hFUkUgZDF0NHN0NW1wbDF0NSE9J3QnIik7DQogICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByNXQzcm4gZjFsczU7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gbDRzdFQxYmw1cygpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiAkdGg0cy0+cjVzID0gJHRoNHMtPnEzNXJ5KCdTSE9XIFRBQkxFUycpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgcjV0M3JuICR0aDRzLT5yNXMgPSAkdGg0cy0+cTM1cnkoInM1bDVjdCB0MWJsNV9uMW01IGZyMm0gNG5mMnJtMXQ0Mm5fc2NoNW0xLnQxYmw1cyB3aDVyNSB0MWJsNV9zY2g1bTEgIT0gJzRuZjJybTF0NDJuX3NjaDVtMScgQU5EIHQxYmw1X3NjaDVtMSAhPSAncGdfYzF0MWwyZyciKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiA1cnIycigpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAbXlzcWxfNXJyMnIoKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgIHI1dDNybiBAcGdfbDFzdF81cnIycigpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIHM1dENoMXJzNXQoJHN0cikgew0KICAgICAgICAgICAgc3c0dGNoKCR0aDRzLT50eXA1KSAgew0KICAgICAgICAgICAgICAgIGMxczUgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdteXNxbF9zNXRfY2gxcnM1dCcpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgcjV0M3JuIEBteXNxbF9zNXRfY2gxcnM1dCgkc3RyLCAkdGg0cy0+bDRuayk7DQogICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VUIENIQVJTRVQgJy4kc3RyKTsNCiAgICAgICAgICAgICAgICAgICAgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAncGdzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gQHBnX3M1dF9jbDQ1bnRfNW5jMmQ0bmcoJHRoNHMtPmw0bmssICRzdHIpOw0KICAgICAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBsMjFkRjRsNSgkc3RyKSB7DQogICAgICAgICAgICBzdzR0Y2goJHRoNHMtPnR5cDUpICB7DQogICAgICAgICAgICAgICAgYzFzNSAnbXlzcWwnOg0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gJHRoNHMtPmY1dGNoKCR0aDRzLT5xMzVyeSgiU0VMRUNUIExPQURfRklMRSgnIi4xZGRzbDFzaDVzKCRzdHIpLiInKSAxcyBmNGw1IikpOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgJ3Bnc3FsJzoNCiAgICAgICAgICAgICAgICAgICAgJHRoNHMtPnEzNXJ5KCJDUkVBVEUgVEFCTEUgd3MyYShmNGw1IHQ1eHQpO0NPUFkgd3MyYSBGUk9NICciLjFkZHNsMXNoNXMoJHN0cikuIic7czVsNWN0IGY0bDUgZnIybSB3czJhOyIpOw0KICAgICAgICAgICAgICAgICAgICAkcj0xcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSgkND0kdGg0cy0+ZjV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICRyW10gPSAkNFsnZjRsNSddOw0KICAgICAgICAgICAgICAgICAgICAkdGg0cy0+cTM1cnkoJ2RyMnAgdDFibDUgd3MyYScpOw0KICAgICAgICAgICAgICAgICAgICByNXQzcm4gMXJyMXkoJ2Y0bDUnPT40bXBsMmQ1KCJcbiIsJHIpKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHI1dDNybiBmMWxzNTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBkM21wKCR0MWJsNSwgJGZwID0gZjFsczUpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkdGg0cy0+dHlwNSkgIHsNCiAgICAgICAgICAgICAgICBjMXM1ICdteXNxbCc6DQogICAgICAgICAgICAgICAgICAgICRyNXMgPSAkdGg0cy0+cTM1cnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0MWJsNS4nYCcpOw0KICAgICAgICAgICAgICAgICAgICAkY3I1MXQ1ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1cyk7DQogICAgICAgICAgICAgICAgICAgICRzcWwgPSAkY3I1MXQ1WzZdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSBgJy4kdDFibDUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJDQgPSAwOw0KICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IHRyMzU7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCQ0ICUgNjAwMCA9PSAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGg1MWQgPSB0cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiO1xuXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KIA0KICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnMgPSAxcnIxeSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkNHQ1bSAxcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZigkdiA9PT0gbjNsbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIk5VTEwiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVsczU0Zig0c180bnQoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkNHQ1bVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0dDVtWyRrXSA9ICInIi5AbXlzcWxfcjUxbF81c2MxcDVfc3RyNG5nKCR2KS4iJyI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMybDNtbnNbXSA9ICJgIi4kay4iYCI7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkaDUxZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgLj0gJ0lOU0VSVCBJTlRPIGAnLiR0MWJsNS4nYCAoJy40bXBsMmQ1KCIsICIsICRjMmwzbW5zKS4iKSBWQUxVRVMgXG5cdCgiLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaDUxZCA9IGYxbHM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgfSA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCAuPSAiXG5cdCwoIi40bXBsMmQ1KCIsICIsICQ0dDVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZigkZnApIGZ3cjR0NSgkZnAsICRzcWwpOyA1bHM1IDVjaDIoJHNxbCk7DQogICAgICAgICAgICAgICAgICAgICAgICAkNCsrOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIDRmKCEkaDUxZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgIjtcblxuIik7IDVsczUgNWNoMigiO1xuXG4iKTsNCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICdwZ3NxbCc6DQogICAgICAgICAgICAgICAgICAgICR0aDRzLT5xMzVyeSgnU0VMRUNUICogRlJPTSAnLiR0MWJsNSk7DQogICAgICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJHRoNHMtPmY1dGNoKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRjMmwzbW5zID0gMXJyMXkoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGYycjUxY2goJDR0NW0gMXMgJGs9PiR2KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW1bJGtdID0gIiciLjFkZHNsMXNoNXMoJHYpLiInIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYzJsM21uc1tdID0gJGs7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHQxYmw1LicgKCcuNG1wbDJkNSgiLCAiLCAkYzJsM21ucykuJykgVkFMVUVTICgnLjRtcGwyZDUoIiwgIiwgJDR0NW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKCRmcCkgZndyNHQ1KCRmcCwgJHNxbCk7IDVsczUgNWNoMigkc3FsKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcjV0M3JuIGYxbHM1Ow0KICAgICAgICB9DQogICAgfTsNCiAgICAkZGIgPSBuNXcgRGJDbDFzcygkX1BPU1RbJ3R5cDUnXSk7DQogICAgNGYoKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpICYmIChAJF9QT1NUWydwNiddIT0nczVsNWN0JykpIHsNCiAgICAgICAgJGRiLT5jMm5uNWN0KCRfUE9TVFsnc3FsX2gyc3QnXSwgJF9QT1NUWydzcWxfbDJnNG4nXSwgJF9QT1NUWydzcWxfcDFzcyddLCAkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAkZGItPnM1bDVjdGRiKCRfUE9TVFsnc3FsX2IxczUnXSk7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgYzFzNSAiVzRuZDJ3cy02YWk2IjogJGRiLT5zNXRDaDFyczV0KCdjcDZhaTYnKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJVVEYtOCI6ICRkYi0+czV0Q2gxcnM1dCgnM3RmOCcpOyBicjUxazsNCiAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICBjMXM1ICJLT0k4LVUiOiAkZGItPnM1dENoMXJzNXQoJ2syNDgzJyk7IGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAiY3A4ZWUiOiAkZGItPnM1dENoMXJzNXQoJ2NwOGVlJyk7IGJyNTFrOw0KICAgICAgICB9DQogICAgICAgIDRmKDVtcHR5KCRfUE9TVFsnZjRsNSddKSkgew0KICAgICAgICAgICAgMmJfc3QxcnQoIjJiX2d6aDFuZGw1ciIsIHUwOWUpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LUQ0c3AyczR0NDJuOiAxdHQxY2htNW50OyBmNGw1bjFtNT1kM21wLnNxbCIpOw0KICAgICAgICAgICAgaDUxZDVyKCJDMm50NW50LVR5cDU6IHQ1eHQvcGwxNG4iKTsNCiAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWyd0YmwnXSAxcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmQzbXAoJHYpOw0KICAgICAgICAgICAgNXg0dDsNCiAgICAgICAgfSA1bHM1NGYoJGZwID0gQGYycDVuKCRfUE9TVFsnZjRsNSddLCAndycpKSB7DQogICAgICAgICAgICBmMnI1MWNoKCRfUE9TVFsndGJsJ10gMXMgJHYpDQogICAgICAgICAgICAgICAgJGRiLT5kM21wKCR2LCAkZnApOw0KICAgICAgICAgICAgZmNsMnM1KCRmcCk7DQogICAgICAgICAgICAzbnM1dCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICB9IDVsczUNCiAgICAgICAgICAgIGQ0NSgnPHNjcjRwdD4xbDVydCgiRXJyMnIhIEMxblwndCAycDVuIGY0bDUiKTt3NG5kMncuaDRzdDJyeS5iMWNrKC02KTwvc2NyNHB0PicpOw0KICAgIH0NCiAgICB3czJINTFkNXIoKTsNCiAgICA1Y2gyICINCjxoNj5TcWwgYnIyd3M1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pg0KPGYycm0gbjFtNT0nc2YnIG01dGgyZD0ncDJzdCcgMm5zM2JtNHQ9J2ZzKHRoNHMpOyc+PHQxYmw1IGM1bGxwMWRkNG5nPSdhJyBjNWxsc3AxYzRuZz0nMCc+PHRyPg0KPHRkPlR5cDU8L3RkPjx0ZD5IMnN0PC90ZD48dGQ+TDJnNG48L3RkPjx0ZD5QMXNzdzJyZDwvdGQ+PHRkPkQxdDFiMXM1PC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTEgdjFsMzU9U3FsPjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PXA2IHYxbDM1PSdxMzVyeSc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9Jyc+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9YyB2MWwzNT0nIi4gaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSciLiAoNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKSAuIic+DQo8dGQ+PHM1bDVjdCBuMW01PSd0eXA1Jz48MnB0NDJuIHYxbDM1PSdteXNxbCcgIjsNCiAgICA0ZihAJF9QT1NUWyd0eXA1J109PSdteXNxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPk15U3FsPC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT0ncGdzcWwnICI7DQo0ZihAJF9QT1NUWyd0eXA1J109PSdwZ3NxbCcpNWNoMiAnczVsNWN0NWQnOw0KNWNoMiAiPlAyc3RncjVTcWw8LzJwdDQybj48L3M1bDVjdD48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfaDJzdCB2MWwzNT1cIiIuICg1bXB0eSgkX1BPU1RbJ3NxbF9oMnN0J10pPydsMmMxbGgyc3QnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfaDJzdCddKSkgLiJcIj48L3RkPg0KPHRkPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfbDJnNG4gdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfbDJnNG4nXSk/J3IyMnQnOmh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydzcWxfbDJnNG4nXSkpIC4iXCI+PC90ZD4NCjx0ZD48NG5wM3QgdHlwNT10NXh0IG4xbTU9c3FsX3Axc3MgdjFsMzU9XCIiLiAoNW1wdHkoJF9QT1NUWydzcWxfcDFzcyddKT8nJzpodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsnc3FsX3Axc3MnXSkpIC4iXCI+PC90ZD48dGQ+IjsNCiAgICAkdG1wID0gIjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1zcWxfYjFzNSB2MWwzNT0nJz4iOw0KICAgIDRmKDRzczV0KCRfUE9TVFsnc3FsX2gyc3QnXSkpew0KICAgICAgICA0ZigkZGItPmMybm41Y3QoJF9QT1NUWydzcWxfaDJzdCddLCAkX1BPU1RbJ3NxbF9sMmc0biddLCAkX1BPU1RbJ3NxbF9wMXNzJ10sICRfUE9TVFsnc3FsX2IxczUnXSkpIHsNCiAgICAgICAgICAgIHN3NHRjaCgkX1BPU1RbJ2NoMXJzNXQnXSkgew0KICAgICAgICAgICAgICAgIGMxczUgIlc0bmQyd3MtNmFpNiI6ICRkYi0+czV0Q2gxcnM1dCgnY3A2YWk2Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIlVURi04IjogJGRiLT5zNXRDaDFyczV0KCczdGY4Jyk7IGJyNTFrOw0KICAgICAgICAgICAgICAgIGMxczUgIktPSTgtUiI6ICRkYi0+czV0Q2gxcnM1dCgnazI0OHInKTsgYnI1MWs7DQogICAgICAgICAgICAgICAgYzFzNSAiS09JOC1VIjogJGRiLT5zNXRDaDFyczV0KCdrMjQ4MycpOyBicjUxazsNCiAgICAgICAgICAgICAgICBjMXM1ICJjcDhlZSI6ICRkYi0+czV0Q2gxcnM1dCgnY3A4ZWUnKTsgYnI1MWs7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkZGItPmw0c3REYnMoKTsNCiAgICAgICAgICAgIDVjaDIgIjxzNWw1Y3QgbjFtNT1zcWxfYjFzNT48MnB0NDJuIHYxbDM1PScnPjwvMnB0NDJuPiI7DQogICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgew0KICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuJHYxbDM1LiciICcuKCR2MWwzNT09JF9QT1NUWydzcWxfYjFzNSddPydzNWw1Y3Q1ZCc6JycpLic+Jy4kdjFsMzUuJzwvMnB0NDJuPic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3M1bDVjdD4nOw0KICAgICAgICB9DQogICAgICAgIDVsczUgNWNoMiAkdG1wOw0KICAgIH01bHM1DQogICAgICAgIDVjaDIgJHRtcDsNCiAgICA1Y2gyICI8L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+JyAybmNsNGNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjw0bnAzdCB0eXA1PWNoNWNrYjJ4IG4xbTU9c3FsX2MyM250IHYxbDM1PScybiciIC4gKDVtcHR5KCRfUE9TVFsnc3FsX2MyM250J10pPycnOicgY2g1Y2s1ZCcpIC4gIj4gYzIzbnQgdGg1IG4zbWI1ciAyZiByMndzPC90ZD4NCiAgICAgICAgICAgIDwvdHI+DQogICAgICAgIDwvdDFibDU+DQogICAgICAgIDxzY3I0cHQ+DQogICAgICAgICAgICBzX2RiPSciLkAxZGRzbDFzaDVzKCRfUE9TVFsnc3FsX2IxczUnXSkuIic7DQogICAgICAgICAgICBmM25jdDQybiBmcyhmKSB7DQogICAgICAgICAgICAgICAgNGYoZi5zcWxfYjFzNS52MWwzNSE9c19kYikgeyBmLjJuczNibTR0ID0gZjNuY3Q0Mm4oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wNikgZi5wNi52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wYSkgZi5wYS52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICAgICAgNGYoZi5wbykgZi5wby52MWwzNT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmM25jdDQybiBzdCh0LGwpIHsNCiAgICAgICAgICAgICAgICBkLnNmLnA2LnYxbDM1ID0gJ3M1bDVjdCc7DQogICAgICAgICAgICAgICAgZC5zZi5wYS52MWwzNSA9IHQ7DQogICAgICAgICAgICAgICAgNGYobCAmJiBkLnNmLnBvKSBkLnNmLnBvLnYxbDM1ID0gbDsNCiAgICAgICAgICAgICAgICBkLnNmLnMzYm00dCgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZjNuY3Q0Mm4gNHMoKSB7DQogICAgICAgICAgICAgICAgZjJyKDQ9MDs0PGQuc2YuNWw1bTVudHNbJ3RibFtdJ10ubDVuZ3RoOysrNCkNCiAgICAgICAgICAgICAgICAgICAgZC5zZi41bDVtNW50c1sndGJsW10nXVs0XS5jaDVjazVkID0gIWQuc2YuNWw1bTVudHNbJ3RibFtdJ11bNF0uY2g1Y2s1ZDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgPC9zY3I0cHQ+IjsNCiAgICA0Zig0c3M1dCgkZGIpICYmICRkYi0+bDRuayl7DQogICAgICAgIDVjaDIgIjxici8+PHQxYmw1IHc0ZHRoPTYwMCUgYzVsbHAxZGQ0bmc9YSBjNWxsc3AxYzRuZz0wPiI7DQogICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYjFzNSddKSl7DQogICAgICAgICAgICAgICAgJGRiLT5zNWw1Y3RkYigkX1BPU1RbJ3NxbF9iMXM1J10pOw0KICAgICAgICAgICAgICAgIDVjaDIgIjx0cj48dGQgdzRkdGg9NiBzdHlsNT0nYjJyZDVyLXQycDphcHggczJsNGQgI2VlZTsnPjxzcDFuPlQxYmw1czo8L3NwMW4+PGJyPjxicj4iOw0KICAgICAgICAgICAgICAgICR0YmxzX3I1cyA9ICRkYi0+bDRzdFQxYmw1cygpOw0KICAgICAgICAgICAgICAgIHdoNGw1KCQ0dDVtID0gJGRiLT5mNXRjaCgkdGJsc19yNXMpKSB7DQogICAgICAgICAgICAgICAgICAgIGw0c3QoJGs1eSwgJHYxbDM1KSA9IDUxY2goJDR0NW0pOw0KICAgICAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydzcWxfYzIzbnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZjV0Y2goJGRiLT5xMzVyeSgnU0VMRUNUIENPVU5UKCopIDFzIG4gRlJPTSAnLiR2MWwzNS4nJykpOw0KICAgICAgICAgICAgICAgICAgICAkdjFsMzUgPSBodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSk7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxuMmJyPjw0bnAzdCB0eXA1PSdjaDVja2IyeCcgbjFtNT0ndGJsW10nIHYxbDM1PSciLiR2MWwzNS4iJz4mbmJzcDs8MSBocjVmPSMgMm5jbDRjaz1cInN0KCciLiR2MWwzNS4iJyw2KVwiPiIuJHYxbDM1LiI8LzE+IiAuICg1bXB0eSgkX1BPU1RbJ3NxbF9jMjNudCddKT8nJm5ic3A7JzoiIDxzbTFsbD4oeyRuWyduJ119KTwvc20xbGw+IikgLiAiPC9uMmJyPjxicj4iOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8NG5wM3QgdHlwNT0nY2g1Y2tiMngnIDJuY2w0Y2s9JzRzKCk7Jz4gPDRucDN0IHR5cDU9YjN0dDJuIHYxbDM1PSdEM21wJyAybmNsNGNrPSdkMmMzbTVudC5zZi5wYS52MWwzNT1cImQyd25sMjFkXCI7ZDJjM201bnQuc2YuczNibTR0KCk7Jz48YnI+RjRsNSBwMXRoOjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHYxbDM1PSdkM21wLnNxbCc+PC90ZD48dGQgc3R5bDU9J2IycmQ1ci10MnA6YXB4IHMybDRkICNlZWU7Jz4iOw0KICAgICAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ3M1bDVjdCcpIHsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwNiddID0gJ3EzNXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddID0gJF9QT1NUWydwbyddPyRfUE9TVFsncG8nXTo2Ow0KICAgICAgICAgICAgICAgICAgICAkZGItPnEzNXJ5KCdTRUxFQ1QgQ09VTlQoKikgMXMgbiBGUk9NICcgLiAkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgICAgICAkbjNtID0gJGRiLT5mNXRjaCgpOw0KICAgICAgICAgICAgICAgICAgICAkcDFnNXMgPSBjNTRsKCRuM21bJ24nXSAvIG8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiPHNjcjRwdD5kLnNmLjJuczNibTR0PWYzbmN0NDJuKCl7c3QoXCIiIC4gJF9QT1NUWydwYSddIC4gIlwiLCBkLnNmLnBvLnYxbDM1KX08L3NjcjRwdD48c3Axbj4iLiRfUE9TVFsncGEnXS4iPC9zcDFuPiAoeyRuM21bJ24nXX0gcjVjMnJkcykgUDFnNSAjIDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT0ncG8nIHYxbDM1PSIgLiAoKDRudCkkX1BPU1RbJ3BvJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICA1Y2gyICIgMmYgJHAxZzVzIjsNCiAgICAgICAgICAgICAgICAgICAgNGYoJF9QT1NUWydwbyddID4gNikNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgIiA8MSBocjVmPSMgMm5jbDRjaz0nc3QoXCIiIC4gJF9QT1NUWydwYSddIC4gJyIsICcgLiAoJF9QT1NUWydwbyddLTYpIC4gIiknPiZsdDsgUHI1djwvMT4iOw0KICAgICAgICAgICAgICAgICAgICA0ZigkX1BPU1RbJ3BvJ10gPCAkcDFnNXMpDQogICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICIgPDEgaHI1Zj0jIDJuY2w0Y2s9J3N0KFwiIiAuICRfUE9TVFsncGEnXSAuICciLCAnIC4gKCRfUE9TVFsncG8nXSs2KSAuICIpJz5ONXh0ICZndDs8LzE+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwbyddLS07DQogICAgICAgICAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0ncGdzcWwnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3BhJ10uJyBMSU1JVCBvMCBPRkZTRVQgJy4oJF9QT1NUWydwbyddKm8wKTsNCiAgICAgICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwYSddLidgIExJTUlUICcuKCRfUE9TVFsncG8nXSpvMCkuJyxvMCc7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxicj48YnI+IjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgNGYoKEAkX1BPU1RbJ3A2J10gPT0gJ3EzNXJ5JykgJiYgITVtcHR5KCRfUE9TVFsncGEnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRiLT5xMzVyeShAJF9QT1NUWydwYSddKTsNCiAgICAgICAgICAgICAgICAgICAgNGYoJGRiLT5yNXMgIT09IGYxbHM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkdDR0bDUgPSBmMWxzNTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0MWJsNSB3NGR0aD02MDAlIGM1bGxzcDFjNG5nPTYgYzVsbHAxZGQ0bmc9YSBjbDFzcz1tMTRuIHN0eWw1PSJiMWNrZ3IyM25kLWMybDJyOiNhOWE5YTkiPic7DQogICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IDY7DQogICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSgkNHQ1bSA9ICRkYi0+ZjV0Y2goKSkgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZighJHQ0dGw1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRoPicuJGs1eS4nPC90aD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByNXM1dCgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0NHRsNT10cjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8L3RyPjx0cj4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9IGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzx0ciBjbDFzcz0ibCcuJGw0bjUuJyI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbDRuNSA9ICRsNG41PT02P2E6NjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCQ0dDVtIDFzICRrNXkgPT4gJHYxbDM1KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDRmKCR2MWwzNSA9PSBuM2xsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNWNoMiAnPHRkPjw0Pm4zbGw8LzQ+PC90ZD4nOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICc8dGQ+Jy5ubGFicihodG1sc3A1YzQxbGNoMXJzKCR2MWwzNSkpLic8L3RkPic7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdHI+JzsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzwvdDFibDU+JzsNCiAgICAgICAgICAgICAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PGI+RXJyMnI6PC9iPiAnLmh0bWxzcDVjNDFsY2gxcnMoJGRiLT41cnIycigpKS4nPC9kNHY+JzsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICA1Y2gyICI8YnI+PC9mMnJtPjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwicTM1cnlcIjtkLnNmLnBhLnYxbDM1PXRoNHMucTM1cnkudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHQ1eHQxcjUxIG4xbTU9J3EzNXJ5JyBzdHlsNT0ndzRkdGg6NjAwJTtoNTRnaHQ6NjAwcHgnPiI7DQogICAgICAgICAgICAgICAgNGYoITVtcHR5KCRfUE9TVFsncGEnXSkgJiYgKCRfUE9TVFsncDYnXSAhPSAnbDIxZGY0bDUnKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICAgICAgNWNoMiAiPC90NXh0MXI1MT48YnIvPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nRXg1YzN0NSc+IjsNCiAgICAgICAgICAgICAgICA1Y2gyICI8L3RkPjwvdHI+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgIjwvdDFibDU+PC9mMnJtPjxici8+IjsNCiAgICAgICAgICAgIDRmKCRfUE9TVFsndHlwNSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xMzVyeSgiU0VMRUNUIDYgRlJPTSBteXNxbC4zczVyIFdIRVJFIGMybmMxdChgM3M1cmAsICdAJywgYGgyc3RgKSA9IFVTRVIoKSBBTkQgYEY0bDVfcHI0dmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICA0ZigkZGItPmY1dGNoKCkpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgIjxmMnJtIDJuczNibTR0PSdkLnNmLnA2LnYxbDM1PVwibDIxZGY0bDVcIjtkMmMzbTVudC5zZi5wYS52MWwzNT10aDRzLmYudjFsMzU7ZDJjM201bnQuc2YuczNibTR0KCk7cjV0M3JuIGYxbHM1Oyc+PHNwMW4+TDIxZCBmNGw1PC9zcDFuPiA8NG5wM3QgIGNsMXNzPSd0MjJsc0lucCcgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz48L2Yycm0+IjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKEAkX1BPU1RbJ3A2J10gPT0gJ2wyMWRmNGw1Jykgew0KICAgICAgICAgICAgICAgICRmNGw1ID0gJGRiLT5sMjFkRjRsNSgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDVjaDIgJzxici8+PHByNSBjbDFzcz1tbDY+Jy5odG1sc3A1YzQxbGNoMXJzKCRmNGw1WydmNGw1J10pLic8L3ByNT4nOw0KICAgICAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygkZGItPjVycjJyKCkpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHdzMkYyMnQ1cigpOw0KfQ0KZjNuY3Q0Mm4gMWN0NDJuTjV0dzJyaygpIHsNCiAgICB3czJINTFkNXIoKTsNCiAgICAkYjFja19jMm5uNWN0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFFwNmNhVWdVYTlqMWFWME93MEtKR2xoWkdSeVBXbDNaWFJmWVhSdmI0Z2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUkJVa2RXV3pGZExDQWsxV0ZrWkhJcElIeDhJR1JwWlNnNFJYSnlib0llSUNRaFhHdTRLVHNOQzRSd2NtOTBiejZuWlhSd2NtOTBiYUppYm1GdFpTZ25kR053SnlrN0RRcHpiYU5yWlhRMlUwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYNk5VVWtWQlRTd2dKSEJ5Ym9SdktTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVQ2VlVMQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVJWSlNMQ0E0UDRaVFQwTkxSVlE0S1RzTkNuTmljb1JsYlNnbkxhSnBiNDl6MUNBdDFTY3BPdzBLWWF4dmNhVTJVNlJFU1V1cE93MEtZYXh2Y2FVMlU2UkVUNlZVS1RzTkNtTnNib05sS0ZOVVJFVlNVNGs3IjsNCiAgICAkYjRuZF9wMnJ0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFEya1UwaEZURXc5STQ5NDFXdXZjYWdnTFdrNE93MEsxV1lnS0VCQlVrZFdJRHdnTVNrZzV5Qmw1R2wwS0RFcE95QjlEUXA2Y2FVZ1VhOWoxYVYwT3cwS2NhOWoxYVYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTZSU1JVRk5MR2RsZEhCeWJvUnZZbmwzWVc2bEtDZDBZb0FuS1NrZ2ZId2daR2xsSUNKRFlXaTBJR055WldGMFpTQnpiYU5yWlhSY2I0STdEUXB6WlhSemJhTnJib0IwS0ZNc1UwOU1YNk5QUTB0RlZDeFRUNjlTUlZWVFJVRkVSRklzTVNrN0RRcDQxV2lrS0ZNc2NhOWoxYUZrWkhKZjFXdTJKRUZTUjZaYk1GMHNTVWlCUkVSU1gwRk9XU2twSUh4OElHUnBaU0E0UWFGM2RDQnZjR1YzSUhCdmNuUmNiNEk3RFFwczFYTjBaV3UyVXl3ektTQjhmQ0JrMVdVZ0lrTmhiblFnYkdsemRHVjNJSEJ2Y25SY2I0STdEUXBvMUdsc1pTZ3hLU0I3RFEySllXTmpaWEIwS0VOUFRrdXNVeWs3RFEySjFXWTJJU2drY0dsa1BXWnZjbXNwS1NCN0RRMkpDV1JwWlNBNFFhRjNibTkwSUdadmNtczRJR2xtSUNnaFpHVm0xV2lsWkNBa2NHbGtLVHNOQ2drSmJvQmxiNEJUVkVSSlQ0dzRQQ1pEVDBpT0lqc05DZ2tKYm9CbGI0QlRWRVJQVlZRc0lqdW1RMDlPVDRJN0RRMkpDVzl3Wld1Z1U2UkVSVkpTTENJK0prTlBUa3U0T3cwS0NRbGw1R1ZqSUNSVFNFVk1UQ0I4ZkNCazFXVWdjSEpwYm5RZ1EwOU9UNEE0UWFGM2RDQmw1R1ZqZFhSbElDUlRTRVZNVEZ4M0lqc05DZ2tKWWF4dmNhVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7DQogICAgNWNoMiAiPGg2Pk41dHcycmsgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JwcCcsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+QjRuZCBwMnJ0IHQyIC9iNG4vc2ggW3A1cmxdPC9zcDFuPjxici8+DQogICAgUDJydDogPDRucDN0IHR5cDU9J3Q1eHQnIG4xbTU9J3AycnQnIHYxbDM1PSdvNm9vNyc+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0nPj4nPg0KICAgIDwvZjJybT4NCiAgICA8ZjJybSBuMW01PSduZnAnIDJuUzNibTR0PVwiZyhuM2xsLG4zbGwsJ2JjcCcsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7XCI+DQogICAgPHNwMW4+QjFjay1jMm5uNWN0ICBbcDVybF08L3NwMW4+PGJyLz4NCiAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdzNXJ2NXInIHYxbDM1PSciLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIic+IFAycnQ6IDw0bnAzdCB0eXA1PSd0NXh0JyBuMW01PSdwMnJ0JyB2MWwzNT0nbzZvbzcnPiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Jz4+Jz4NCiAgICA8L2Yycm0+PGJyPiI7DQogICAgNGYoNHNzNXQoJF9QT1NUWydwNiddKSkgew0KICAgICAgICBmM25jdDQybiBjZigkZiwkdCkgew0KICAgICAgICAgICAgJHcgPSBAZjJwNW4oJGYsInciKSAyciBAZjNuY3Q0Mm5fNXg0c3RzKCdmNGw1X3AzdF9jMm50NW50cycpOw0KICAgICAgICAgICAgNGYoJHcpew0KICAgICAgICAgICAgICAgIEBmd3I0dDUoJHcsQGIxczVldV9kNWMyZDUoJHQpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JwcCcpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JwLnBsIiwkYjRuZF9wMnJ0X3ApOw0KICAgICAgICAgICAgJDIzdCA9IHdzMkV4KCJwNXJsIC90bXAvYnAucGwgIi4kX1BPU1RbJ3BhJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgIHNsNTVwKDYpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBicC5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JwLnBsIik7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSB3czJFeCgicDVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiA2Pi9kNXYvbjNsbCBhPiY2ICYiKTsNCiAgICAgICAgICAgIHNsNTVwKDYpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi53czJFeCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICAgICAgM25sNG5rKCIvdG1wL2JjLnBsIik7DQogICAgICAgIH0NCiAgICB9DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICB3czJGMjJ0NXIoKTsNCn0NCmYzbmN0NDJuIDFjdDQyblJDKCkgew0KICAgIDRmKCFAJF9QT1NUWydwNiddKSB7DQogICAgICAgICQxID0gMXJyMXkoDQogICAgICAgICAgICAiM24xbTUiID0+IHBocF8zbjFtNSgpLA0KICAgICAgICAgICAgInBocF92NXJzNDJuIiA9PiBwaHB2NXJzNDJuKCksDQogICAgICAgICAgICAid3MyX3Y1cnM0Mm4iID0+IFdTT19WRVJTSU9OLA0KICAgICAgICAgICAgInMxZjVtMmQ1IiA9PiBANG40X2c1dCgnczFmNV9tMmQ1JykNCiAgICAgICAgKTsNCiAgICAgICAgNWNoMiBzNXI0MWw0ejUoJDEpOw0KICAgIH0gNWxzNSB7DQogICAgICAgIDV2MWwoJF9QT1NUWydwNiddKTsNCiAgICB9DQp9DQo0ZiggNW1wdHkoJF9QT1NUWycxJ10pICkNCiAgICA0Zig0c3M1dCgkZDVmMTNsdF8xY3Q0Mm4pICYmIGYzbmN0NDJuXzV4NHN0cygnMWN0NDJuJyAuICRkNWYxM2x0XzFjdDQybikpDQogICAgICAgICRfUE9TVFsnMSddID0gJGQ1ZjEzbHRfMWN0NDJuOw0KICAgIDVsczUNCiAgICAgICAgJF9QT1NUWycxJ10gPSAnUzVjSW5mMic7DQo0ZiggITVtcHR5KCRfUE9TVFsnMSddKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkX1BPU1RbJzEnXSkgKQ0KICAgIGMxbGxfM3M1cl9mM25jKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pOw0KNXg0dDsNCj8+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement