Sindbad~EG File Manager

Current Path : /var/www/web3/g2data/cache/repository/released/modules/
Upload File :
Current File : /var/www/web3/g2data/cache/repository/released/modules/itemadd-1.0.0-16041-base.package

<?php
function unpack_a4483450cb($outputDir) {
/* Create directory structure. */
@mkdir($outputDir . 'locale');
@mkdir($outputDir . 'po');
@mkdir($outputDir . 'templates');
/* Recreate individual files. */
expand_a4483450cb($outputDir, 'ItemAddFromServer.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogVGhpcyBwbHVnaW4gd2lsbCBoYW5kbGUgdGhlIGFkZGl0aW9uIG9mIGFuIGl0ZW1zIGZyb20gdGhlIHNlcnZlciBmaWxlc3lzdGVtLgogKiBAcGFja2FnZSBJdGVtQWRkCiAqIEBzdWJwYWNrYWdlIFVzZXJJbnRlcmZhY2UKICogQGF1dGhvciBCaGFyYXQgTWVkaXJhdHRhIDxiaGFyYXRAbWVuYWx0by5jb20+CiAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMTU1MTMgJAogKi8KY2xhc3MgSXRlbUFkZEZyb21TZXJ2ZXIgZXh0ZW5kcyBJdGVtQWRkUGx1Z2luIHsKCiAgICAvKioKICAgICAqIEBzZWUgSXRlbUFkZFBsdWdpbjo6aXNBcHByb3ByaWF0ZQogICAgICovCiAgICBmdW5jdGlvbiBpc0FwcHJvcHJpYXRlKCkgewoJbGlzdCAoJHJldCwgJHBhcmFtKSA9IEdhbGxlcnlDb3JlQXBpOjpnZXRQbHVnaW5QYXJhbWV0ZXIoJ21vZHVsZScsICdpdGVtYWRkJywgJ2Zyb21zZXJ2ZXInKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoJaWYgKCRwYXJhbSA9PSAnYWRtaW4nKSB7CgkgICAgbGlzdCAoJHJldCwgJGlzQWRtaW4pID0gR2FsbGVyeUNvcmVBcGk6OmlzVXNlckluU2l0ZUFkbWluR3JvdXAoKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9CgkgICAgJHBhcmFtID0gJGlzQWRtaW4gPyAnb24nIDogJ29mZic7Cgl9CglyZXR1cm4gYXJyYXkobnVsbCwgJHBhcmFtID09ICdvbicpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBJdGVtQWRkUGx1Z2luOjpoYW5kbGVSZXF1ZXN0CiAgICAgKi8KICAgIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3QoJGZvcm0sICYkaXRlbSkgewoJZ2xvYmFsICRnYWxsZXJ5OwoJJHRoaXMtPl9wbGF0Zm9ybSA9JiAkZ2FsbGVyeS0+Z2V0UGxhdGZvcm0oKTsKCSR0aGlzLT5fZGlyU2VwID0gJHRoaXMtPl9wbGF0Zm9ybS0+Z2V0RGlyZWN0b3J5U2VwYXJhdG9yKCk7CgoJJHN0YXR1cyA9ICRlcnJvciA9IGFycmF5KCk7CgoJaWYgKGlzc2V0KCRmb3JtWydhY3Rpb24nXVsnYWRkRnJvbUxvY2FsU2VydmVyJ10pCgkJJiYgKCFlbXB0eSgkZm9ybVsnbG9jYWxTZXJ2ZXJGaWxlcyddKSB8fCAhZW1wdHkoJGZvcm1bJ2xvY2FsU2VydmVyRGlyZWN0b3JpZXMnXSkpKSB7CgkgICAgLyogQWRkIHRoZSBzZWxlY3RlZCBpdGVtcyAqLwoJICAgICR0ZXh0RmllbGRzID0gYXJyYXkoCgkJJ3RpdGxlJyA9PiAoaXNzZXQoJGZvcm1bJ3NldCddWyd0aXRsZSddKSkgPyAxIDogMCwKCQknc3VtbWFyeScgPT4gKGlzc2V0KCRmb3JtWydzZXQnXVsnc3VtbWFyeSddKSkgPyAxIDogMCwKCQknZGVzY3JpcHRpb24nID0+IChpc3NldCgkZm9ybVsnc2V0J11bJ2Rlc2NyaXB0aW9uJ10pKSA/IDEgOiAwKTsKCgkgICAgLyoKCSAgICAgKiBTZWUgbG9hZFRlbXBsYXRlOiB0aGUgaW5wdXQgaXMgaW4gVVRGLTgsCgkgICAgICogdGhlIGZpbGVzeXN0ZW0gbmVlZHMgdGhlIHBhdGggaW4gdGhlIHN5c3RlbSBjaGFyc2V0CgkgICAgICovCgkgICAgJGRpciA9IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0RnJvbVV0ZjgoJGZvcm1bJ2xvY2FsU2VydmVyUGF0aCddKTsKCSAgICBHYWxsZXJ5VXRpbGl0aWVzOjp1bnNhbml0aXplSW5wdXRWYWx1ZXMoJGRpciwgZmFsc2UpOwoKCSAgICAvKiBXZSBuZWVkIHRoZSBsb2NhbFNlcnZlckRpckxpc3Qgb25seSBpbiB0aGUgc3lzdGVtIGNoYXJzZXQgKi8KCSAgICBsaXN0ICgkcmV0LCAkdW51c2VkLCAkbG9jYWxTZXJ2ZXJEaXJMaXN0KSA9ICR0aGlzLT5mZXRjaExvY2FsU2VydmVyRGlyTGlzdCgpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwsIG51bGwpOwoJICAgIH0KCgkgICAgaWYgKCFHYWxsZXJ5VXRpbGl0aWVzOjppc1BhdGhJbkxpc3QoJGRpciwgJGxvY2FsU2VydmVyRGlyTGlzdCkpIHsKCQlyZXR1cm4gYXJyYXkoR2FsbGVyeUNvcmVBcGk6OmVycm9yKEVSUk9SX0JBRF9QQVJBTUVURVIpLAoJCQkgICAgIG51bGwsIG51bGwpOwoJICAgIH0KCSAgICBpZiAoJGRpcntzdHJsZW4oJGRpciktMX0gIT0gJHRoaXMtPl9kaXJTZXApIHsKCQkkZGlyIC49ICR0aGlzLT5fZGlyU2VwOwoJICAgIH0KCgkgICAgbGlzdCAoJHJldCwgJGxvY2tJZCkgPSBHYWxsZXJ5Q29yZUFwaTo6YWNxdWlyZVJlYWRMb2NrKCRpdGVtLT5nZXRJZCgpKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCSAgICB9CgoJICAgIGlmICghZW1wdHkoJGZvcm1bJ2xvY2FsU2VydmVyRmlsZXMnXSkpIHsKCQlmb3JlYWNoICgkZm9ybVsnbG9jYWxTZXJ2ZXJGaWxlcyddIGFzICRmaWxlS2V5ID0+ICRkYXRhKSB7CgkJICAgIGlmICghaXNzZXQoJGRhdGFbJ3NlbGVjdGVkJ10pKSB7CgkJCWNvbnRpbnVlOwoJCSAgICB9CgkJICAgICR1c2VTeW1saW5rID0gaXNzZXQoJGRhdGFbJ3VzZVN5bWxpbmsnXSk7CgkJICAgICRmaWxlID0gJGRpciAuIHVybGRlY29kZSgkZmlsZUtleSk7CgkJICAgIGlmICghR2FsbGVyeVV0aWxpdGllczo6aXNQYXRoSW5MaXN0KGRpcm5hbWUoJGZpbGUpLCAkbG9jYWxTZXJ2ZXJEaXJMaXN0KSkgewoJCQkvKiBFbnN1cmUgbWFsZm9ybWVkIGlucHV0IGxpa2UgZmlsZUtleSA9IC4uL2ZvbyBkb2Vzbid0IHdvcmsgKi8KCQkJY29udGludWU7CgkJICAgIH0KCgkJICAgICRyZXQgPSAkdGhpcy0+YWRkSXRlbSgkaXRlbS0+Z2V0SWQoKSwgJGZpbGUsICR1c2VTeW1saW5rLAoJCQkJCSAgJHRleHRGaWVsZHMsICRzdGF0dXMsICRlcnJvcik7CgkJICAgIGlmICgkcmV0KSB7CgkJCUdhbGxlcnlDb3JlQXBpOjpyZWxlYXNlTG9ja3MoJGxvY2tJZCk7CgkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQkgICAgfQoJCX0KCSAgICB9CgoJICAgIGlmICghZW1wdHkoJGZvcm1bJ2xvY2FsU2VydmVyRGlyZWN0b3JpZXMnXSkpIHsKCQkkdGhpcy0+X2xvY2FsU2VydmVyRGlyTGlzdCA9ICRsb2NhbFNlcnZlckRpckxpc3Q7CgoJCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIHBlcm1pc3Npb24gdG8gYWRkIHN1YmFsYnVtcyAqLwoJCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6YXNzZXJ0SGFzSXRlbVBlcm1pc3Npb24oJGl0ZW0tPmdldElkKCksICdjb3JlLmFkZEFsYnVtSXRlbScpOwoJCWlmICgkcmV0KSB7CgkJICAgIEdhbGxlcnlDb3JlQXBpOjpyZWxlYXNlTG9ja3MoJGxvY2tJZCk7CgkJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQl9CgoJCWZvcmVhY2ggKCRmb3JtWydsb2NhbFNlcnZlckRpcmVjdG9yaWVzJ10gYXMgJGRpcmVjdG9yeSA9PiAkZGF0YSkgewoJCSAgICAvKiBTa2lwIGN1cnJlbnQgb3IgcGFyZW50IGRpcmVjdG9yeSBlbnRyaWVzICovCgkJICAgIGlmICghaXNzZXQoJGRhdGFbJ3NlbGVjdGVkJ10pIHx8ICRkaXJlY3RvcnkgPT0gIi4iIHx8ICRkaXJlY3RvcnkgPT0gIi4uIikgewoJCQljb250aW51ZTsKCQkgICAgfQoJCSAgICAkdXNlU3ltbGluayA9IGlzc2V0KCRkYXRhWyd1c2VTeW1saW5rJ10pOwoKCQkgICAgbGlzdCAoJHJldCwgJGFsYnVtSWQpID0gJHRoaXMtPmFkZERpcmVjdG9yeSgkaXRlbS0+Z2V0SWQoKSwKCQkJJGRpciAuIHVybGRlY29kZSgkZGlyZWN0b3J5KSwgJHVzZVN5bWxpbmssICR0ZXh0RmllbGRzLCAkc3RhdHVzLCAkZXJyb3IpOwoJCSAgICBpZiAoJHJldCkgewoJCQlHYWxsZXJ5Q29yZUFwaTo6cmVsZWFzZUxvY2tzKCRsb2NrSWQpOwoJCQlyZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkJICAgIH0KCQkgICAgaWYgKCRhbGJ1bUlkKSB7CgkJCSRyZXQgPSAkdGhpcy0+cHJvY2Vzc0RpcmVjdG9yeSgkYWxidW1JZCwgJGRpciAuIHVybGRlY29kZSgkZGlyZWN0b3J5KSwKCQkJICAgICR1c2VTeW1saW5rLCAkdGV4dEZpZWxkcywgJHN0YXR1cywgJGVycm9yKTsKCQkJaWYgKCRyZXQpIHsKCQkJICAgIEdhbGxlcnlDb3JlQXBpOjpyZWxlYXNlTG9ja3MoJGxvY2tJZCk7CgkJCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkJCX0KCQkgICAgfQoJCX0KCSAgICB9CgoJICAgICRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVsZWFzZUxvY2tzKCRsb2NrSWQpOwoJICAgIGlmICgkcmV0KSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwsIG51bGwpOwoJICAgIH0KCX0KCglyZXR1cm4gYXJyYXkobnVsbCwgJGVycm9yLCAkc3RhdHVzKTsKICAgIH0KCiAgICBmdW5jdGlvbiBhZGRJdGVtKCRwYXJlbnRJZCwgJGZpbGUsICR1c2VTeW1saW5rLCAkdGV4dEZpZWxkcywgJiRzdGF0dXMsICYkZXJyb3IpIHsKCSRmaWxlTmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsKCWxpc3QgKCRiYXNlLCAkZXh0ZW5zaW9uKSA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldEZpbGVOYW1lQ29tcG9uZW50cygkZmlsZU5hbWUpOwoJbGlzdCAoJHJldCwgJG1pbWVUeXBlKSA9IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0RXh0ZW5zaW9uVG9NaW1lKCRleHRlbnNpb24pOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gJHJldDsKCX0KCSRiYXNlID0gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRUb1V0ZjgoJGJhc2UpOwoJR2FsbGVyeVV0aWxpdGllczo6c2FuaXRpemVJbnB1dFZhbHVlcygkYmFzZSk7CgoJJHRpdGxlID0gKCR0ZXh0RmllbGRzWyd0aXRsZSddKSA/ICRiYXNlIDogJyc7Cgkkc3VtbWFyeSA9ICgkdGV4dEZpZWxkc1snc3VtbWFyeSddKSA/ICRiYXNlIDogJyc7CgkkZGVzY3JpcHRpb24gPSAoJHRleHRGaWVsZHNbJ2Rlc2NyaXB0aW9uJ10pID8gJGJhc2UgOiAnJzsKCglsaXN0ICgkcmV0LCAkbmV3SXRlbSkgPSBHYWxsZXJ5Q29yZUFwaTo6YWRkSXRlbVRvQWxidW0oJGZpbGUsCgkJCQkJCQkgICAgICAgJGZpbGVOYW1lLAoJCQkJCQkJICAgICAgICR0aXRsZSwKCQkJCQkJCSAgICAgICAkc3VtbWFyeSwKCQkJCQkJCSAgICAgICAkZGVzY3JpcHRpb24sCgkJCQkJCQkgICAgICAgJG1pbWVUeXBlLAoJCQkJCQkJICAgICAgICRwYXJlbnRJZCwKCQkJCQkJCSAgICAgICAkdXNlU3ltbGluayk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCSRzdGF0dXNbJ2FkZGVkRmlsZXMnXVtdID0gYXJyYXkoJ2ZpbGVOYW1lJyA9PiBHYWxsZXJ5Q29yZUFwaTo6Y29udmVydFRvVXRmOCgkZmlsZU5hbWUpLAoJCQkJCSdpZCcgPT4gJG5ld0l0ZW0tPmdldElkKCksCgkJCQkJJ3dhcm5pbmdzJyA9PiBhcnJheSgpKTsKCglyZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKiogQHJldHVybiBhcnJheSBvYmplY3QgR2FsbGVyeVN0YXR1cywgbWl4ZWQgaWQgb2YgbmV3IGFsYnVtIG9yIGZhbHNlICovCiAgICBmdW5jdGlvbiBhZGREaXJlY3RvcnkoJHBhcmVudElkLCAkcGF0aCwgJHVzZVN5bWxpbmssICR0ZXh0RmllbGRzLCAmJHN0YXR1cywgJiRlcnJvcikgewoJZ2xvYmFsICRnYWxsZXJ5OwoKCWlmICghR2FsbGVyeVV0aWxpdGllczo6aXNQYXRoSW5MaXN0KCRwYXRoLCAkdGhpcy0+X2xvY2FsU2VydmVyRGlyTGlzdCkKCQl8fCBHYWxsZXJ5VXRpbGl0aWVzOjppc1BhdGhJbkxpc3QoJHBhdGgsCgkJCQkgICAgIGFycmF5KCRnYWxsZXJ5LT5nZXRDb25maWcoJ2RhdGEuZ2FsbGVyeS5hbGJ1bXMnKSkpKSB7CgkgICAgLyoKCSAgICAgKiBTaWxlbnRseSBza2lwIGRpcmVjdG9yeSBpZiBhIHN5bWxpbmsganVtcGVkIHVzIG91dHNpZGUgdGhlIGFwcHJvdmVkCgkgICAgICogZGlyZWN0b3J5IGxpc3Qgb3Igd2UgYXJlIHRyeWluZyB0byBhZGQgZnJvbSBvdXIgb3duIGcyZGF0YSBhbGJ1bXMuCgkgICAgICogQWxzbyBwcm90ZWN0cyBhZ2FpbnN0IG1hbGZvcm1lZCBmb3JtIGlucHV0IGxpa2UgZGlyZWN0b3J5ID0gLi4vZm9vCgkgICAgICovCgkgICAgcmV0dXJuIGFycmF5KG51bGwsIGZhbHNlKTsKCX0KCgkvKiBDcmVhdGUgbmV3IEFsYnVtICovCgkkZGlyTmFtZSA9IGJhc2VuYW1lKCRwYXRoKTsKCSRkaXJOYW1lVXRmOCA9IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0VG9VdGY4KCRkaXJOYW1lKTsKCSRkaXJUaXRsZSA9ICR0ZXh0RmllbGRzWyd0aXRsZSddID8gJGRpck5hbWVVdGY4IDogbnVsbDsKCSRkaXJTdW1tYXJ5ID0gJHRleHRGaWVsZHNbJ3N1bW1hcnknXSA/ICRkaXJOYW1lVXRmOCA6IG51bGw7CgkkZGlyRGVzY3JpcHRpb24gPSAkdGV4dEZpZWxkc1snZGVzY3JpcHRpb24nXSA/ICRkaXJOYW1lVXRmOCA6IG51bGw7CglsaXN0ICgkcmV0LCAkYWxidW0pID0gR2FsbGVyeUNvcmVBcGk6OmNyZWF0ZUFsYnVtKCRwYXJlbnRJZCwgJGRpck5hbWUsICRkaXJUaXRsZSwKCQkJCQkJCSAgJGRpclN1bW1hcnksICRkaXJEZXNjcmlwdGlvbiwgIiIpOwoJaWYgKCRyZXQpIHsKCSAgICBpZiAoJHJldC0+Z2V0RXJyb3JDb2RlKCkgJiBFUlJPUl9DT0xMSVNJT04pIHsKCQkkZXJyb3JbXSA9ICdmb3JtW2Vycm9yXVtwYXRoQ29tcG9uZW50XVtjb2xsaXNpb25dJzsKCQlyZXR1cm4gYXJyYXkobnVsbCwgZmFsc2UpOwoJICAgIH0gZWxzZSB7CgkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJICAgIH0KCX0KCglpZiAoIWlzc2V0KCRhbGJ1bSkpIHsKCSAgICByZXR1cm4gYXJyYXkoR2FsbGVyeUNvcmVBcGk6OmVycm9yKEVSUk9SX01JU1NJTkdfT0JKRUNUKSwgbnVsbCk7Cgl9CgoJJHJldCA9IEdhbGxlcnlDb3JlQXBpOjphZGRVc2VyUGVybWlzc2lvbigkYWxidW0tPmdldElkKCksICRhbGJ1bS0+Z2V0T3duZXJJZCgpLAoJCQkJCQkgJ2NvcmUuYWxsJywgZmFsc2UpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7Cgl9CgoJcmV0dXJuIGFycmF5KG51bGwsICRhbGJ1bS0+Z2V0SWQoKSk7CiAgICB9CgogICAgZnVuY3Rpb24gcHJvY2Vzc0RpcmVjdG9yeSgkYWxidW1JZCwgJHBhdGgsICR1c2VTeW1saW5rLCAkdGV4dEZpZWxkcywgJiRzdGF0dXMsICYkZXJyb3IpIHsKCWdsb2JhbCAkZ2FsbGVyeTsKCglsaXN0ICgkcmV0LCAkbG9ja0lkKSA9IEdhbGxlcnlDb3JlQXBpOjphY3F1aXJlUmVhZExvY2soJGFsYnVtSWQpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gJHJldDsKCX0KCgkvKiBMb29rIGludG8gdGhlIGRpcmVjdG9yeSwgYWRkIGFueXRoaW5nIHdlIGZpbmQgKi8KCSRkaXJMaXN0ID0gJGFsYnVtTGlzdCA9IGFycmF5KCk7CgkkaGFuZGxlID0gJHRoaXMtPl9wbGF0Zm9ybS0+b3BlbmRpcigkcGF0aCk7Cgl3aGlsZSAoKCRmaWxlTmFtZSA9ICR0aGlzLT5fcGxhdGZvcm0tPnJlYWRkaXIoJGhhbmRsZSkpICE9PSBmYWxzZSkgewoJICAgIGlmICgkZmlsZU5hbWUgPT0gJy4nIHx8ICRmaWxlTmFtZSA9PSAnLi4nIHx8ICRmaWxlTmFtZSA9PSAnLnN2bicpIHsKCQljb250aW51ZTsKCSAgICB9CgkgICAgJGRpckxpc3RbXSA9ICRmaWxlTmFtZTsKCX0KCSR0aGlzLT5fcGxhdGZvcm0tPmNsb3NlZGlyKCRoYW5kbGUpOwoJc29ydCgkZGlyTGlzdCk7CgoJZm9yZWFjaCAoJGRpckxpc3QgYXMgJGZpbGVOYW1lKSB7CgkgICAgJGdhbGxlcnktPmd1YXJhbnRlZVRpbWVMaW1pdCgzMCk7CgkgICAgJGZpbGVQYXRoID0gJHBhdGggLiAkdGhpcy0+X2RpclNlcCAuICRmaWxlTmFtZTsKCSAgICBpZiAoJHRoaXMtPl9wbGF0Zm9ybS0+aXNfcmVhZGFibGUoJGZpbGVQYXRoKSkgewoJCWlmICgkdGhpcy0+X3BsYXRmb3JtLT5pc19kaXIoJGZpbGVQYXRoKSkgewoJCSAgICBsaXN0ICgkcmV0LCAkbmV3QWxidW1JZCkgPSAkdGhpcy0+YWRkRGlyZWN0b3J5KCRhbGJ1bUlkLCAkZmlsZVBhdGgsCgkJCSR1c2VTeW1saW5rLCAkdGV4dEZpZWxkcywgJHN0YXR1cywgJGVycm9yKTsKCQkgICAgaWYgKCRyZXQpIHsKCQkJR2FsbGVyeUNvcmVBcGk6OnJlbGVhc2VMb2NrcygkbG9ja0lkKTsKCQkJcmV0dXJuICRyZXQ7CgkJICAgIH0KCQkgICAgaWYgKCRuZXdBbGJ1bUlkKSB7CgkJCSRhbGJ1bUxpc3RbJG5ld0FsYnVtSWRdID0gJGZpbGVQYXRoOwoJCSAgICB9CgkJfSBlbHNlIHsKCQkgICAgJHJldCA9ICR0aGlzLT5hZGRJdGVtKCRhbGJ1bUlkLCAkZmlsZVBhdGgsICR1c2VTeW1saW5rLAoJCQkJCSAgJHRleHRGaWVsZHMsICRzdGF0dXMsICRlcnJvcik7CgkJICAgIGlmICgkcmV0KSB7CgkJCUdhbGxlcnlDb3JlQXBpOjpyZWxlYXNlTG9ja3MoJGxvY2tJZCk7CgkJCXJldHVybiAkcmV0OwoJCSAgICB9CgkJfQoJCWlmICghZW1wdHkoJGVycm9yKSkgewoJCSAgICAvKiBCYWlsIG91dCBpZiBhbiBlcnJvciBoYXMgb2NjdXJyZWQgKi8KCQkgICAgYnJlYWs7CgkJfQoJICAgIH0KCX0KCgkkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnJlbGVhc2VMb2NrcygkbG9ja0lkKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuICRyZXQ7Cgl9CgoJZm9yZWFjaCAoJGFsYnVtTGlzdCBhcyAkbmV3QWxidW1JZCA9PiAkZmlsZVBhdGgpIHsKCSAgICAkcmV0ID0gJHRoaXMtPnByb2Nlc3NEaXJlY3RvcnkoJG5ld0FsYnVtSWQsICRmaWxlUGF0aCwKCQkJCQkgICAkdXNlU3ltbGluaywgJHRleHRGaWVsZHMsICRzdGF0dXMsICRlcnJvcik7CgkgICAgaWYgKCRyZXQpIHsKCQlyZXR1cm4gJHJldDsKCSAgICB9CgkgICAgaWYgKCFlbXB0eSgkZXJyb3IpKSB7CgkJLyogQmFpbCBvdXQgaWYgYW4gZXJyb3IgaGFzIG9jY3VycmVkICovCgkJYnJlYWs7CgkgICAgfQoJfQoKCXJldHVybiBudWxsOwogICAgfQoKICAgIC8qCiAgICAgKiBAcmV0dXJuIGFycmF5IChvYmplY3QgR2FsbGVyeVN0YXR1cyBhIHN0YXR1cyBjb2RlLAogICAgICogICAgICAgICAgICAgICAgYXJyYXkgb2YgVVRGLTggc3RyaW5ncyBsb2NhbFNlcnZlckRpckxpc3QsCiAgICAgKiAgICAgICAgICAgICAgICBhcnJheSBvZiBzeXN0ZW0gY2hhcnNldCBzdHJpbmdzIGxvY2FsU2VydmVyRGlyTGlzdCkKICAgICAqLwogICAgZnVuY3Rpb24gZmV0Y2hMb2NhbFNlcnZlckRpckxpc3QoKSB7CglsaXN0ICgkcmV0LCAkcGFyYW0pID0gR2FsbGVyeUNvcmVBcGk6OmZldGNoQWxsUGx1Z2luUGFyYW1ldGVycygnbW9kdWxlJywgJ2l0ZW1hZGQnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwsIG51bGwpOwoJfQoJJGxvY2FsU2VydmVyRGlyTGlzdCA9IGFycmF5KCk7CgkkbG9jYWxTZXJ2ZXJEaXJMaXN0SW5TeXN0ZW1DaGFyc2V0ID0gYXJyYXkoKTsKCWZvciAoJGkgPSAxOyAhZW1wdHkoJHBhcmFtWyd1cGxvYWRMb2NhbFNlcnZlci5kaXIuJyAuICRpXSk7ICRpKyspIHsKCSAgICAkbG9jYWxTZXJ2ZXJEaXJMaXN0W10gPSAkcGFyYW1bJ3VwbG9hZExvY2FsU2VydmVyLmRpci4nIC4gJGldOwoJICAgICRsb2NhbFNlcnZlckRpckxpc3RJblN5c3RlbUNoYXJzZXRbXSA9CgkJR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRGcm9tVXRmOCgkcGFyYW1bJ3VwbG9hZExvY2FsU2VydmVyLmRpci4nIC4gJGldKTsKCX0KCXJldHVybiBhcnJheShudWxsLCAkbG9jYWxTZXJ2ZXJEaXJMaXN0LAoJCSAgICAgJGxvY2FsU2VydmVyRGlyTGlzdEluU3lzdGVtQ2hhcnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEl0ZW1BZGQ6bG9hZFRlbXBsYXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIGxvYWRUZW1wbGF0ZSgmJHRlbXBsYXRlLCAmJGZvcm0sICRpdGVtKSB7CglnbG9iYWwgJGdhbGxlcnk7CgoJaWYgKCRmb3JtWydmb3JtTmFtZSddICE9ICdJdGVtQWRkRnJvbVNlcnZlcicpIHsKCSAgICAvKiBGaXJzdCB0aW1lIGFyb3VuZCwgbG9hZCB0aGUgZm9ybSB3aXRoIGl0ZW0gZGF0YSAqLwoJICAgICRmb3JtWydsb2NhbFNlcnZlclBhdGgnXSA9ICcnOwoJICAgICRmb3JtWydmb3JtTmFtZSddID0gJ0l0ZW1BZGRGcm9tU2VydmVyJzsKCX0KCglsaXN0ICgkcmV0LCAkbG9jYWxTZXJ2ZXJEaXJMaXN0LCAkbG9jYWxTZXJ2ZXJEaXJMaXN0SW5TeXN0ZW1DaGFyc2V0KSA9CgkgICAgJHRoaXMtPmZldGNoTG9jYWxTZXJ2ZXJEaXJMaXN0KCk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCX0KCgkvKiBMb29rIHVwIHRoZSBwbGF0Zm9ybSB0eXBlICovCgkkcGxhdGZvcm0gPSYgJGdhbGxlcnktPmdldFBsYXRmb3JtKCk7Cgkkc2xhc2ggPSAkcGxhdGZvcm0tPmdldERpcmVjdG9yeVNlcGFyYXRvcigpOwoKCWlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ3N0YXJ0T3ZlciddKSkgewoJICAgICRmb3JtWydsb2NhbFNlcnZlckZpbGVzJ10gPSBhcnJheSgpOwoJfSBlbHNlIGlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ2ZpbmRGaWxlc0Zyb21Mb2NhbFNlcnZlciddKSkgewoJICAgIC8qIElmIHdlJ3JlIHVwbG9hZGluZyBmcm9tIHRoZSBsb2NhbCBzZXJ2ZXIsIGdldCBhIGZpbGUgbGlzdCBub3cgKi8KCSAgICAkbG9jYWxTZXJ2ZXJQYXRoID0gdHJpbSgkZm9ybVsnbG9jYWxTZXJ2ZXJQYXRoJ10pOwoJICAgIC8qCgkgICAgICogQWxsIGlucHV0IGlzIFVURi04LCB3aGV0aGVyIGl0IGNvbWVzIGZyb20gdGhlIGJyb3dzZXIgb3IgZnJvbSB0aGUgZGF0YWJhc2UuCgkgICAgICogV2hlbiB3ZSB1c2UgcmVhbHBhdGgsIGlzX2Rpciwgb3BlbmRpciwgcmVhZGRpciwgLi4sIHdlIG5lZWQgdGhlIHBhdGggaW4gdGhlIHN5c3RlbQoJICAgICAqIGNoYXJzZXQgYW5kIG5vdCBpbiBVVEYtOC4KCSAgICAgKiBUaGVyZWZvcmUsIHdlIHVzZSBVVEYtOCBmb3IgZXZlcnl0aGluZyAob3V0cHV0LCBkYiBpbnB1dCkgYnV0IHRoZSBmaWxlc3lzdGVtCgkgICAgICogaW50ZXJhY3Rpb25zLgoJICAgICAqICRmb3JtWydsb2NhbFNlcnZlclBhdGgnXSBpcyBVVEYtOCwgJGxvY2FsU2VydmVyUGF0aCBpcyBpbiB0aGUgc3lzdGVtIGNoYXJzZXQKCSAgICAgKi8KCSAgICAkbG9jYWxTZXJ2ZXJQYXRoID0gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRGcm9tVXRmOCgkbG9jYWxTZXJ2ZXJQYXRoKTsKCSAgICBHYWxsZXJ5VXRpbGl0aWVzOjp1bnNhbml0aXplSW5wdXRWYWx1ZXMoJGxvY2FsU2VydmVyUGF0aCwgZmFsc2UpOwoJICAgICRsb2NhbFNlcnZlclBhdGggPSAkcGxhdGZvcm0tPnJlYWxwYXRoKCRsb2NhbFNlcnZlclBhdGgpOwoJICAgICRmb3JtWydsb2NhbFNlcnZlclBhdGgnXSA9IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0VG9VdGY4KCRsb2NhbFNlcnZlclBhdGgpOwoKCSAgICAvKiBWYWxpZGF0ZSB0aGUgcGF0aCAqLwoJICAgICRmb3JtWydsb2NhbFNlcnZlckZpbGVzJ10gPSBhcnJheSgpOwoJICAgIGlmIChlbXB0eSgkbG9jYWxTZXJ2ZXJQYXRoKSkgewoJCSRmb3JtWydlcnJvciddWydsb2NhbFNlcnZlclBhdGgnXVsnbWlzc2luZyddID0gMTsKCSAgICB9IGVsc2UgaWYgKCEkcGxhdGZvcm0tPmZpbGVfZXhpc3RzKCRsb2NhbFNlcnZlclBhdGgpIHx8CgkJICAgICAgICEkcGxhdGZvcm0tPmlzX3JlYWRhYmxlKCRsb2NhbFNlcnZlclBhdGgpKSB7CgkJJGZvcm1bJ2Vycm9yJ11bJ2xvY2FsU2VydmVyUGF0aCddWydpbnZhbGlkJ10gPSAxOwoJICAgIH0gZWxzZSBpZiAoIUdhbGxlcnlVdGlsaXRpZXM6OmlzUGF0aEluTGlzdCgkbG9jYWxTZXJ2ZXJQYXRoLAoJCQkJCQkgICAgICAgJGxvY2FsU2VydmVyRGlyTGlzdEluU3lzdGVtQ2hhcnNldCkpIHsKCQkkZm9ybVsnZXJyb3InXVsnbG9jYWxTZXJ2ZXJQYXRoJ11bJ2lsbGVnYWwnXSA9IDE7CgkgICAgfSBlbHNlIHsKCQkkZ2FsbGVyeS0+Z3VhcmFudGVlVGltZUxpbWl0KDMwKTsKCQkkcGF0aCA9ICRsb2NhbFNlcnZlclBhdGg7CgkJaWYgKCRwbGF0Zm9ybS0+aXNfZGlyKCRwYXRoKSkgewoJCSAgICAkaGFuZGxlID0gJHBsYXRmb3JtLT5vcGVuZGlyKCRwYXRoKTsKCQkgICAgJG1pbWVUeXBlSXRlbU1hcCA9IGFycmF5KCk7CgoJCSAgICAvKiBBZGQgcGF0aCB0byB0aGUgcmVjZW50IHBhdGggbGlzdCAqLwoJCSAgICAkc2Vzc2lvbiA9JiAkZ2FsbGVyeS0+Z2V0U2Vzc2lvbigpOwoJCSAgICAkcmVjZW50UGF0aHMgPQoJCQkkc2Vzc2lvbi0+Z2V0KCdpdGVtYWRkLnZpZXcuSXRlbUFkZC5JdGVtQWRkRnJvbVNlcnZlci5yZWNlbnRQYXRocycpOwoJCSAgICAvKiBVc2UgdGhlIFVURi04IHN0cmluZywgcmVjZW50IHBhdGhzIGlzIG9ubHkgZm9yIHRoZSBvdXRwdXQgKi8KCQkgICAgJHJlY2VudFBhdGhzWyRmb3JtWydsb2NhbFNlcnZlclBhdGgnXV0gPSAxOwoJCSAgICAkc2Vzc2lvbi0+cHV0KCdpdGVtYWRkLnZpZXcuSXRlbUFkZC5JdGVtQWRkRnJvbVNlcnZlci5yZWNlbnRQYXRocycsCgkJCQkgICRyZWNlbnRQYXRocyk7CgoJCSAgICB3aGlsZSAoKCRmaWxlTmFtZSA9ICRwbGF0Zm9ybS0+cmVhZGRpcigkaGFuZGxlKSkgIT09IGZhbHNlKSB7CgkJCWlmICgkZmlsZU5hbWUgPT0gJy4nKSB7CgkJCSAgICBjb250aW51ZTsKCQkJfQoJCQkkZmlsZVBhdGggPSAkcGF0aCAuICRzbGFzaCAuICRmaWxlTmFtZTsKCgkJCWlmICgkcGxhdGZvcm0tPmlzX3JlYWRhYmxlKCRmaWxlUGF0aCkpIHsKCQkJICAgIGlmICgkcGxhdGZvcm0tPmlzX2RpcigkZmlsZVBhdGgpKSB7CgkJCQkkZmlsZVBhdGggPSAkcGxhdGZvcm0tPnJlYWxwYXRoKCRmaWxlUGF0aCk7CgkJCQkkbGVnYWwgPQoJCQkJICAgIEdhbGxlcnlVdGlsaXRpZXM6OmlzUGF0aEluTGlzdCgkZmlsZVBhdGgsCgkJCQkJCQkgICAgICAkbG9jYWxTZXJ2ZXJEaXJMaXN0SW5TeXN0ZW1DaGFyc2V0KTsKCQkJCWlmICghJGxlZ2FsICYmICRmaWxlTmFtZSA9PSAnLi4nKSB7CgkJCQkgICAgY29udGludWU7CgkJCQl9CgkJCQkkZm9ybVsnbG9jYWxTZXJ2ZXJGaWxlcyddW10gPQoJCQkJICAgIGFycmF5KCd0eXBlJyA9PiAnZGlyZWN0b3J5JywKCQkJCQkgICdmaWxlTmFtZScgPT4gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRUb1V0ZjgoJGZpbGVOYW1lKSwKCQkJCQkgICdmaWxlUGF0aCcgPT4gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRUb1V0ZjgoJGZpbGVQYXRoKSwKCQkJCQkgICdmaWxlS2V5JyA9PiB1cmxlbmNvZGUoJGZpbGVOYW1lKSwKCQkJCQkgICdsZWdhbCcgPT4gJGxlZ2FsLAoJCQkJCSAgJ3Vua25vd24nID0+IGZhbHNlKTsKCQkJICAgIH0gZWxzZSB7CgkJCQlsaXN0ICgkcmV0LCAkbWltZVR5cGUpID0gR2FsbGVyeUNvcmVBcGk6OmdldE1pbWVUeXBlKCRmaWxlTmFtZSk7CgkJCQlpZiAoJHJldCkgewoJCQkJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQkJCX0KCQkJCWlmICghaXNzZXQoJG1pbWVUeXBlSXRlbU1hcFskbWltZVR5cGVdKSkgewoJCQkJICAgIGxpc3QgKCRyZXQsICRtaW1lVHlwZUl0ZW0pID0KCQkJCQlHYWxsZXJ5Q29yZUFwaTo6bmV3SXRlbUJ5TWltZVR5cGUoJG1pbWVUeXBlKTsKCQkJCSAgICBpZiAoJHJldCkgewoJCQkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQkJCSAgICB9CgkJCQkgICAgLyogR2V0IGxvY2FsaXplZCBhbmQgZW5nbGlzaCBuYW1lczogKi8KCQkJCSAgICAkbWltZVR5cGVJdGVtLT5zZXRNaW1lVHlwZSgkbWltZVR5cGUpOwoJCQkJICAgICRtaW1lVHlwZUl0ZW1NYXBbJG1pbWVUeXBlXSA9CgkJCQkJYXJyYXlfbWVyZ2UoJG1pbWVUeXBlSXRlbS0+aXRlbVR5cGVOYW1lKCksCgkJCQkJCSAgICAkbWltZVR5cGVJdGVtLT5pdGVtVHlwZU5hbWUoZmFsc2UpKTsKCQkJCX0KCgkJCQkkZm9ybVsnbG9jYWxTZXJ2ZXJGaWxlcyddW10gPQoJCQkJICAgIGFycmF5KCd0eXBlJyA9PiAnZmlsZScsCgkJCQkJICAnZmlsZU5hbWUnID0+IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0VG9VdGY4KCRmaWxlTmFtZSksCgkJCQkJICAnc3RhdCcgPT4gJHBsYXRmb3JtLT5zdGF0KCRmaWxlUGF0aCksCgkJCQkJICAnaXRlbVR5cGUnID0+ICRtaW1lVHlwZUl0ZW1NYXBbJG1pbWVUeXBlXVswXSwKCQkJCQkgICd1bmtub3duJyA9PiAkbWltZVR5cGVJdGVtTWFwWyRtaW1lVHlwZV1bM10gPT0gJ3Vua25vd24nLAoJCQkJCSAgJ2ZpbGVLZXknID0+IHVybGVuY29kZSgkZmlsZU5hbWUpKTsKCQkJICAgIH0KCQkJfQoJCSAgICB9CgkJICAgICRwbGF0Zm9ybS0+Y2xvc2VkaXIoJGhhbmRsZSk7CgoJCX0gZWxzZSBpZiAoJHBsYXRmb3JtLT5pc19maWxlKCRwYXRoKSAmJiAhJHBsYXRmb3JtLT5pc19saW5rKCRwYXRoKSkgewoJCSAgICBsaXN0ICgkcmV0LCAkbWltZVR5cGUpID0gR2FsbGVyeUNvcmVBcGk6OmdldE1pbWVUeXBlKCRwYXRoKTsKCQkgICAgaWYgKCRyZXQpIHsKCQkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwsIG51bGwpOwoJCSAgICB9CgkJICAgIGxpc3QgKCRyZXQsICRtaW1lVHlwZUl0ZW0pID0gR2FsbGVyeUNvcmVBcGk6Om5ld0l0ZW1CeU1pbWVUeXBlKCRtaW1lVHlwZSk7CgkJICAgIGlmICgkcmV0KSB7CgkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQkgICAgfQoJCSAgICAkbWltZVR5cGVJdGVtLT5zZXRNaW1lVHlwZSgkbWltZVR5cGUpOwoJCSAgICAkbWltZVR5cGVJdGVtTmFtZSA9IGFycmF5X21lcmdlKCRtaW1lVHlwZUl0ZW0tPml0ZW1UeXBlTmFtZSgpLAoJCQkJCQkgICAgJG1pbWVUeXBlSXRlbS0+aXRlbVR5cGVOYW1lKGZhbHNlKSk7CgoJCSAgICAkZmlsZU5hbWUgPSBiYXNlbmFtZSgkcGF0aCk7CgkJICAgICRmb3JtWydsb2NhbFNlcnZlckZpbGVzJ11bXSA9CgkJCWFycmF5KCd0eXBlJyA9PiAnZmlsZScsCgkJCSAgICAgICdmaWxlTmFtZScgPT4gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRUb1V0ZjgoJGZpbGVOYW1lKSwKCQkJICAgICAgJ3N0YXQnID0+ICRwbGF0Zm9ybS0+c3RhdCgkcGF0aCksCgkJCSAgICAgICdpdGVtVHlwZScgPT4gJG1pbWVUeXBlSXRlbU5hbWVbMF0sCgkJCSAgICAgICd1bmtub3duJyA9PiAkbWltZVR5cGVJdGVtTmFtZVszXSA9PSAndW5rbm93bicsCgkJCSAgICAgICdmaWxlS2V5JyA9PiB1cmxlbmNvZGUoJGZpbGVOYW1lKSk7CgoJCSAgICAvKiBDaGFuZ2UgbG9jYWxTZXJ2ZXJQYXRoIGZyb20gZmlsZSBwYXRoIHRvIHBhcmVudCBkaXIgKi8KCQkgICAgJGZvcm1bJ2xvY2FsU2VydmVyUGF0aCddID0gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRUb1V0ZjgoZGlybmFtZSgkcGF0aCkpOwoJCX0KCSAgICB9Cgl9CgoJLyogRG8gd2UgaGF2ZSBwZXJtaXNzaW9uIHRvIGFkZCBzdWJhbGJ1bXMgKi8KCWxpc3QgKCRyZXQsICRjYW5BZGRBbGJ1bSkgPSBHYWxsZXJ5Q29yZUFwaTo6aGFzSXRlbVBlcm1pc3Npb24oJGl0ZW0tPmdldElkKCksCgkJJ2NvcmUuYWRkQWxidW1JdGVtJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCX0KCSRJdGVtQWRkRnJvbVNlcnZlciA9IGFycmF5KCdwYXRoU2VwYXJhdG9yJyA9PiAkc2xhc2gsCgkJCQkgICAnbG9jYWxTZXJ2ZXJEaXJMaXN0JyA9PiAkbG9jYWxTZXJ2ZXJEaXJMaXN0LAoJCQkJICAgJ2xvY2FsU2VydmVyRmlsZUNvdW50JyA9PgoJCQkJICAgICBpc3NldCgkbG9jYWxTZXJ2ZXJGaWxlQ291bnQpID8gJGxvY2FsU2VydmVyRmlsZUNvdW50IDogbnVsbCwKCQkJCSAgICdjYW5BZGRBbGJ1bScgPT4gJGNhbkFkZEFsYnVtKTsKCglpZiAoIWVtcHR5KCRmb3JtWydsb2NhbFNlcnZlckZpbGVzJ10pKSB7CgkgICAgdXNvcnQoJGZvcm1bJ2xvY2FsU2VydmVyRmlsZXMnXSwgYXJyYXkoJHRoaXMsICdfc29ydEZpbGVzJykpOwoJICAgICRhY2N1bXVsYXRvciA9ICcnOwoJICAgIGZvcmVhY2ggKCRwbGF0Zm9ybS0+c3BsaXRQYXRoKCRmb3JtWydsb2NhbFNlcnZlclBhdGgnXSkgYXMgJGVsZW1lbnQpIHsKCQkkYWNjdW11bGF0b3IgLj0gJGVsZW1lbnQ7CgkJJEl0ZW1BZGRGcm9tU2VydmVyWydwYXRoRWxlbWVudHMnXVtdID0gYXJyYXkoCgkJICAgICduYW1lJyA9PiAkZWxlbWVudCwgJ3BhdGgnID0+ICRhY2N1bXVsYXRvciwKCQkgICAgJ2xlZ2FsJyA9PiBHYWxsZXJ5VXRpbGl0aWVzOjppc1BhdGhJbkxpc3QoCgkJCUdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0RnJvbVV0ZjgoJGFjY3VtdWxhdG9yKSwKCQkJJGxvY2FsU2VydmVyRGlyTGlzdEluU3lzdGVtQ2hhcnNldCkpOwoJCWlmIChjb3VudCgkSXRlbUFkZEZyb21TZXJ2ZXJbJ3BhdGhFbGVtZW50cyddKSA+IDEpIHsKCQkgICAgJGFjY3VtdWxhdG9yIC49ICRzbGFzaDsKCQl9CgkgICAgfQoJfQoKCSRzZXNzaW9uID0mICRnYWxsZXJ5LT5nZXRTZXNzaW9uKCk7CgkkcmVjZW50UGF0aHMgPSAkc2Vzc2lvbi0+Z2V0KCdpdGVtYWRkLnZpZXcuSXRlbUFkZC5JdGVtQWRkRnJvbVNlcnZlci5yZWNlbnRQYXRocycpOwoJaWYgKCFpc3NldCgkcmVjZW50UGF0aHMpKSB7CgkgICAgJHJlY2VudFBhdGhzID0gYXJyYXkoKTsKCX0KCSRJdGVtQWRkRnJvbVNlcnZlclsncmVjZW50UGF0aHMnXSA9IGFycmF5X2tleXMoJHJlY2VudFBhdGhzKTsKCgkvKgoJICogU2V0IHRoZSBJdGVtQWRtaW4gZm9ybSdzIGVuY29kaW5nIHR5cGUgc3BlY2lhbGx5IHNpbmNlIGxlZ2FsIHBhdGhzIG1heSBjb250YWluIHNwZWNpYWwKCSAqIGNoYXJhY3RlcnMgbGlrZSBhbXBlcnNhbmRzICgmKQoJICovCglpZiAoJHRlbXBsYXRlLT5oYXNWYXJpYWJsZSgnSXRlbUFkbWluJykpIHsKCSAgICAkSXRlbUFkbWluID0mICR0ZW1wbGF0ZS0+Z2V0VmFyaWFibGVCeVJlZmVyZW5jZSgnSXRlbUFkbWluJyk7CgkgICAgJEl0ZW1BZG1pblsnZW5jdHlwZSddID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOwoJfSBlbHNlIHsKCSAgICAkSXRlbUFkbWluWydlbmN0eXBlJ10gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YSc7CgkgICAgJHRlbXBsYXRlLT5zZXRWYXJpYWJsZSgnSXRlbUFkbWluJywgJEl0ZW1BZG1pbik7Cgl9CgoJaWYgKCFpc3NldCgkZm9ybVsnc2V0J10pKSB7CgkgICAgJGZvcm1bJ3NldCddID0gYXJyYXkoJ3RpdGxlJyA9PiAxLCAnc3VtbWFyeScgPT4gMCwgJ2Rlc2NyaXB0aW9uJyA9PiAwKTsKCX0KCgkvKiBEbyB3ZSB3YW50IHRvIGFsbG93IHN5bWxpbmtzPyAqLwoJJEl0ZW1BZGRGcm9tU2VydmVyWydzaG93U3ltbGluayddID0gJHBsYXRmb3JtLT5pc1N5bWxpbmtTdXBwb3J0ZWQoKTsKCgkkdGVtcGxhdGUtPnNldFZhcmlhYmxlKCdJdGVtQWRkRnJvbVNlcnZlcicsICRJdGVtQWRkRnJvbVNlcnZlcik7CgoJcmV0dXJuIGFycmF5KG51bGwsCgkJICAgICAnbW9kdWxlcy9pdGVtYWRkL3RlbXBsYXRlcy9JdGVtQWRkRnJvbVNlcnZlci50cGwnLAoJCSAgICAgJ21vZHVsZXNfaXRlbWFkZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBJdGVtQWRkUGx1Z2luOjpnZXRUaXRsZQogICAgICovCiAgICBmdW5jdGlvbiBnZXRUaXRsZSgpIHsKCWxpc3QgKCRyZXQsICRtb2R1bGUpID0gR2FsbGVyeUNvcmVBcGk6OmxvYWRQbHVnaW4oJ21vZHVsZScsICdpdGVtYWRkJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCglyZXR1cm4gYXJyYXkobnVsbCwgJG1vZHVsZS0+dHJhbnNsYXRlKCdGcm9tIExvY2FsIFNlcnZlcicpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNvcnQgZGlyZWN0b3J5IGxpc3RpbmcuLiBkaXJlY3RvcnksIGtub3duIHR5cGVzLCB1bmtub3ducy4KICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfc29ydEZpbGVzKCRhLCAkYikgewoJaWYgKCgkYVsndHlwZSddID09ICdkaXJlY3RvcnknIHx8ICRiWyd0eXBlJ10gPT0gJ2RpcmVjdG9yeScpICYmICRhWyd0eXBlJ10gIT0gJGJbJ3R5cGUnXSkgewoJICAgIHJldHVybiAoJGFbJ3R5cGUnXSA9PSAnZGlyZWN0b3J5JykgPyAtMSA6IDE7Cgl9CglpZiAoKCRhWyd1bmtub3duJ10gfHwgJGJbJ3Vua25vd24nXSkgJiYgJGFbJ3Vua25vd24nXSAhPSAkYlsndW5rbm93biddKSB7CgkgICAgcmV0dXJuICRhWyd1bmtub3duJ10gPyAxIDogLTE7Cgl9CglyZXR1cm4gc3RyY2FzZWNtcCgkYVsnZmlsZU5hbWUnXSwgJGJbJ2ZpbGVOYW1lJ10pOwogICAgfQp9Cj8+Cg==');
expand_a4483450cb($outputDir, 'ItemAddFromWeb.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogVGhpcyBwbHVnaW4gd2lsbCBoYW5kbGUgdGhlIGFkZGl0aW9uIG9mIGl0ZW1zIGZyb20gb3RoZXIgd2ViIHBhZ2VzLgogKiBAcGFja2FnZSBJdGVtQWRkCiAqIEBzdWJwYWNrYWdlIFVzZXJJbnRlcmZhY2UKICogQGF1dGhvciBCaGFyYXQgTWVkaXJhdHRhIDxiaGFyYXRAbWVuYWx0by5jb20+CiAqIEB2ZXJzaW9uICRSZXZpc2lvbjogMTU1MTMgJAogKi8KY2xhc3MgSXRlbUFkZEZyb21XZWIgZXh0ZW5kcyBJdGVtQWRkUGx1Z2luIHsKCiAgICAvKioKICAgICAqIEBzZWUgSXRlbUFkZFBsdWdpbjo6aXNBcHByb3ByaWF0ZQogICAgICovCiAgICBmdW5jdGlvbiBpc0FwcHJvcHJpYXRlKCkgewoJbGlzdCAoJHJldCwgJHBhcmFtKSA9IEdhbGxlcnlDb3JlQXBpOjpnZXRQbHVnaW5QYXJhbWV0ZXIoJ21vZHVsZScsICdpdGVtYWRkJywgJ2Zyb213ZWInKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoJaWYgKCRwYXJhbSA9PSAnYWRtaW4nKSB7CgkgICAgbGlzdCAoJHJldCwgJGlzQWRtaW4pID0gR2FsbGVyeUNvcmVBcGk6OmlzVXNlckluU2l0ZUFkbWluR3JvdXAoKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9CgkgICAgJHBhcmFtID0gJGlzQWRtaW4gPyAnb24nIDogJ29mZic7Cgl9CglyZXR1cm4gYXJyYXkobnVsbCwgJHBhcmFtID09ICdvbicpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBJdGVtQWRkUGx1Z2luOjpoYW5kbGVSZXF1ZXN0CiAgICAgKi8KICAgIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3QoJGZvcm0sICYkaXRlbSkgewoJZ2xvYmFsICRnYWxsZXJ5OwoKCSRzdGF0dXMgPSAkZXJyb3IgPSBhcnJheSgpOwoKCWlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ2ZpbmRGaWxlc0Zyb21XZWJQYWdlJ10pKSB7CgkgICAgLyogRGVsZWdhdGUgYmFjayB0byB0aGUgc2FtZSB2aWV3ICovCgl9IGVsc2UgaWYgKGlzc2V0KCRmb3JtWydhY3Rpb24nXVsnYWRkRnJvbVdlYlBhZ2UnXSkgJiYgZW1wdHkoJGZvcm1bJ3dlYlBhZ2VVcmxzJ10pKSB7CgkgICAgR2FsbGVyeVV0aWxpdGllczo6cHV0UmVxdWVzdFZhcmlhYmxlKCdmb3JtW2Vycm9yXVt3ZWJQYWdlXVtub3RoaW5nU2VsZWN0ZWRdJywgMSk7Cgl9IGVsc2UgaWYgKGlzc2V0KCRmb3JtWydhY3Rpb24nXVsnYWRkRnJvbVdlYlBhZ2UnXSkpIHsKCSAgICAkcGxhdGZvcm0gPSYgJGdhbGxlcnktPmdldFBsYXRmb3JtKCk7CgkgICAgLyogUGFzcyByZWZlcmVyIGNoZWNraW5nICovCgkgICAgaWYgKCFlbXB0eSgkZm9ybVsnd2ViUGFnZSddKSkgewoJCSRleHRyYUhlYWRlcnMgPQoJCSAgICBhcnJheSgnUmVmZXJlcicgPT4gc3RyX3JlcGxhY2UoJyZhbXA7JywgJyYnLCAkZm9ybVsnd2ViUGFnZSddKSk7CgkgICAgfQoJICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGZvcm1bJ3dlYlBhZ2VVcmxzJ10pIGFzICR1cmwpIHsKCQkvKiBDb3B5IHRoZSBmaWxlIGxvY2FsbHkgKi8KCQkkdG1wRGlyID0gJGdhbGxlcnktPmdldENvbmZpZygnZGF0YS5nYWxsZXJ5LnRtcCcpOwoJCSR0bXBGaWxlID0gJHBsYXRmb3JtLT50ZW1wbmFtKCR0bXBEaXIsICdhZGQnKTsKCgkJJHN1Y2Nlc3NmdWxseUNvcGllZCA9IGZhbHNlOwoJCUdhbGxlcnlVdGlsaXRpZXM6OnVuc2FuaXRpemVJbnB1dFZhbHVlcygkdXJsLCBmYWxzZSk7CgkJaWYgKGVtcHR5KCRleHRyYUhlYWRlcnMpKSB7CgkJICAgICRleHRyYUhlYWRlcnMgPSBhcnJheSgnUmVmZXJlcicgPT4gc3RyX3JlcGxhY2UoJyZhbXA7JywgJyYnLCAkdXJsKSk7CgkJfQoJCWxpc3QgKCRzdWNjZXNzZnVsbHlDb3BpZWQsICRyZXNwb25zZSwgJGhlYWRlcnMpID0KCQkgICAgR2FsbGVyeUNvcmVBcGk6OmZldGNoV2ViRmlsZSgkdXJsLCAkdG1wRmlsZSwgJGV4dHJhSGVhZGVycyk7CgkJaWYgKCRzdWNjZXNzZnVsbHlDb3BpZWQpIHsKCQkgICAgLyogQWRkIGl0ICovCgkJICAgIGxpc3QgKCRyZXQsICRtaW1lVHlwZSwgJGZpbGVOYW1lKSA9ICR0aGlzLT5fZ2V0TWltZVR5cGUoJHVybCwgJGhlYWRlcnMsIHRydWUpOwoJCSAgICBpZiAoJHJldCkgewoJCQlyZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkJICAgIH0KCgkJICAgIGxpc3QgKCRiYXNlKSA9IEdhbGxlcnlVdGlsaXRpZXM6OmdldEZpbGVOYW1lQ29tcG9uZW50cygkZmlsZU5hbWUpOwoJCSAgICAkdGl0bGUgPSAoaXNzZXQoJGZvcm1bJ3NldCddWyd0aXRsZSddKSAmJiAkZm9ybVsnc2V0J11bJ3RpdGxlJ10pID8gJGJhc2UgOiAnJzsKCQkgICAgJHN1bW1hcnkgPSAoaXNzZXQoJGZvcm1bJ3NldCddWydzdW1tYXJ5J10pCgkJCSAgICAgJiYgJGZvcm1bJ3NldCddWydzdW1tYXJ5J10pID8gJGJhc2UgOiAnJzsKCQkgICAgJGRlc2NyaXB0aW9uID0gKGlzc2V0KCRmb3JtWydzZXQnXVsnZGVzY3JpcHRpb24nXSkKCQkJCSAmJiAkZm9ybVsnc2V0J11bJ2Rlc2NyaXB0aW9uJ10pID8gJGJhc2UgOiAnJzsKCgkJICAgIGxpc3QgKCRyZXQsICRuZXdJdGVtKSA9IEdhbGxlcnlDb3JlQXBpOjphZGRJdGVtVG9BbGJ1bSgkdG1wRmlsZSwKCQkJCQkJCQkJICAgJGZpbGVOYW1lLAoJCQkJCQkJCQkgICAkdGl0bGUsCgkJCQkJCQkJCSAgICRzdW1tYXJ5LAoJCQkJCQkJCQkgICAkZGVzY3JpcHRpb24sCgkJCQkJCQkJCSAgICRtaW1lVHlwZSwKCQkJCQkJCQkJICAgJGl0ZW0tPmdldElkKCkpOwoJCSAgICBpZiAoJHJldCkgewoJCQlyZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkJICAgIH0KCgkJICAgICRzdGF0dXNbJ2FkZGVkRmlsZXMnXVtdID0gYXJyYXkoJ2ZpbGVOYW1lJyA9PiAkdXJsLAoJCQkJCQkgICAgJ2lkJyA9PiAkbmV3SXRlbS0+Z2V0SWQoKSwKCQkJCQkJICAgICd3YXJuaW5ncycgPT4gYXJyYXkoKSk7CgkJfQoJCUAkcGxhdGZvcm0tPnVubGluaygkdG1wRmlsZSk7CgkgICAgfQoJfQoKCXJldHVybiBhcnJheShudWxsLCAkZXJyb3IsICRzdGF0dXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBJdGVtQWRkOmxvYWRUZW1wbGF0ZQogICAgICovCiAgICBmdW5jdGlvbiBsb2FkVGVtcGxhdGUoJiR0ZW1wbGF0ZSwgJiRmb3JtLCAkaXRlbSkgewoJZ2xvYmFsICRnYWxsZXJ5OwoKCWlmICgkZm9ybVsnZm9ybU5hbWUnXSAhPSAnSXRlbUFkZEZyb21XZWInKSB7CgkgICAgLyogRmlyc3QgdGltZSBhcm91bmQsIGxvYWQgdGhlIGZvcm0gd2l0aCBpdGVtIGRhdGEgKi8KCSAgICAkZm9ybVsnd2ViUGFnZSddID0gJyc7CgkgICAgJGZvcm1bJ2Zvcm1OYW1lJ10gPSAnSXRlbUFkZEZyb21XZWInOwoJfQoKCWlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ2ZpbmRGaWxlc0Zyb21XZWJQYWdlJ10pKSB7CgkgICAgLyogRG93bmxvYWQgdGhlIHdlYiBwYWdlIHRoZW4gcGFyc2UgaXQgdG8gZ2V0IHRoZSBmaWxlIGxpc3QgKi8KCSAgICBpZiAoZW1wdHkoJGZvcm1bJ3dlYlBhZ2UnXSkpIHsKCQkkZm9ybVsnZXJyb3InXVsnd2ViUGFnZSddWydtaXNzaW5nJ10gPSAxOwoJICAgIH0KCSAgICBpZiAoZW1wdHkoJGZvcm1bJ2Vycm9yJ10pKSB7CgkJJGJhc2VVcmxDb21wb25lbnRzID0gcGFyc2VfdXJsKCRmb3JtWyd3ZWJQYWdlJ10pOwoJCWlmIChlbXB0eSgkYmFzZVVybENvbXBvbmVudHNbJ3NjaGVtZSddKSB8fCAkYmFzZVVybENvbXBvbmVudHNbJ3NjaGVtZSddICE9ICdodHRwJykgewoJCSAgICAkZm9ybVsnZXJyb3InXVsnd2ViUGFnZSddWydpbnZhbGlkJ10gPSAxOwoJCX0KCSAgICB9CgkgICAgaWYgKGVtcHR5KCRmb3JtWydlcnJvciddKSkgewoJCWxpc3QgKCRzdWNjZXNzZnVsLCAkYnVmZmVyLCAkcmVzcG9uc2UsICRoZWFkZXJzLCAkYWN0dWFsVXJsKSA9CgkJICAgIEdhbGxlcnlDb3JlQXBpOjpmZXRjaFdlYlBhZ2UoJGZvcm1bJ3dlYlBhZ2UnXSk7CgkJaWYgKGVtcHR5KCRidWZmZXIpIHx8ICEkc3VjY2Vzc2Z1bCkgewoJCSAgICAkZm9ybVsnZXJyb3InXVsnd2ViUGFnZSddWyd1bmF2YWlsYWJsZSddID0gMTsKCQl9CgkgICAgfQoJICAgIGlmIChlbXB0eSgkZm9ybVsnZXJyb3InXSkpIHsKCQlpZiAoaXNzZXQoJGFjdHVhbFVybCkgJiYgJGFjdHVhbFVybCAhPSAkZm9ybVsnd2ViUGFnZSddKSB7CgkJICAgICRmb3JtWyd3ZWJQYWdlJ10gPSBzdHJfcmVwbGFjZSgnJicsICcmYW1wOycsICRhY3R1YWxVcmwpOwoJCSAgICAkYmFzZVVybENvbXBvbmVudHMgPSBwYXJzZV91cmwoJGZvcm1bJ3dlYlBhZ2UnXSk7CgkJfQoKCQkvKiBBZGQgcGF0aCB0byB0aGUgcmVjZW50IHBhdGggbGlzdCAqLwoJCSRzZXNzaW9uID0mICRnYWxsZXJ5LT5nZXRTZXNzaW9uKCk7CgkJJHJlY2VudFVybHMgPSAkc2Vzc2lvbi0+Z2V0KCdpdGVtYWRkLnZpZXcuSXRlbUFkZEZyb21XZWIucmVjZW50VXJscycpOwoJCSRyZWNlbnRVcmxzWyRmb3JtWyd3ZWJQYWdlJ11dID0gMTsKCQkkc2Vzc2lvbi0+cHV0KCdpdGVtYWRkLnZpZXcuSXRlbUFkZEZyb21XZWIucmVjZW50VXJscycsICRyZWNlbnRVcmxzKTsKCgkJJGZvcm1bJ3dlYlBhZ2VVcmxzJ10gPSBhcnJheSgpOwoKCQlpZiAoaXNzZXQoJGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKSkgewoJCSAgICAkY29udGVudFR5cGUgPSAkaGVhZGVyc1snQ29udGVudC1UeXBlJ107CgkJfSBlbHNlIGlmIChpc3NldCgkaGVhZGVyc1snQ29udGVudC10eXBlJ10pKSB7CgkJICAgIC8qCgkJICAgICAqIEdydW1ibGUgZ3J1bWJsZS4gIFNvbWUgc2VydmVycyAoZWcgU3VuLU9ORS1XZWItU2VydmVyLzYuMSkKCQkgICAgICogY2FwaXRhbGl6ZSB0aGlzIGhlYWRlciBkaWZmZXJlbnRseQoJCSAgICAgKi8KCQkgICAgJGNvbnRlbnRUeXBlID0gJGhlYWRlcnNbJ0NvbnRlbnQtdHlwZSddOwoJCX0gZWxzZSB7CgkJICAgICRjb250ZW50VHlwZSA9ICcnOwoJCX0KCgkJaWYgKHN0cm5jbXAoJGNvbnRlbnRUeXBlLCAndGV4dCcsIDQpKSB7CgkJICAgIC8qCgkJICAgICAqIElmIHRoZSBidWZmZXIgZG9lcyBub3QgY29udGFpbiB0ZXh0KC9odG1sKSB0aGVuIGp1c3Qgb2ZmZXIKCQkgICAgICogdG8gYWRkIHRoaXMgdXJsLCByYXRoZXIgdGhhbiBwYXJzaW5nIHRoZSBjb250ZW50cy4KCQkgICAgICovCgkJICAgIGxpc3QgKCRyZXQsICR0eXBlTmFtZSkgPSAkdGhpcy0+X2dldFR5cGVOYW1lKCRmb3JtWyd3ZWJQYWdlJ10sIG51bGwsICRoZWFkZXJzKTsKCQkgICAgaWYgKCRyZXQpIHsKCQkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwsIG51bGwpOwoJCSAgICB9CgkJICAgIGlmICghZW1wdHkoJHR5cGVOYW1lKSkgewoJCQkkZm9ybVsnd2ViUGFnZVVybHMnXVtdID0gYXJyYXkoJ3VybCcgPT4gJGZvcm1bJ3dlYlBhZ2UnXSwKCQkJCQkJICAgICAgICdpdGVtVHlwZScgPT4gJHR5cGVOYW1lKTsKCQkgICAgfQoJCX0gZWxzZSB7CgkJICAgIC8qCgkJICAgICAqIFBhcnNlIHRoZSBidWZmZXIuICBXZSBtYXRjaDoKCQkgICAgICogIGhyZWY9ImZvbyBiYXIiICAgIGhyZWY9J2ZvbyBiYXInICAgaHJlZj1mb28KCQkgICAgICogIHNyYz0iZm9vIGJhciIgICAgIHNyYz0nZm9vIGJhcicgICAgc3JjPWZvbwoJCSAgICAgKiAgdmFsdWU9Imh0dHA6Zm9vIiAgdmFsdWU9J2h0dHA6Zm9vJyB2YWx1ZT1odHRwOmZvbyAob3IgaHR0cHMpCgkJICAgICAqLwoJCSAgICBwcmVnX21hdGNoX2FsbCgnLyhzcmN8aHJlZnx2YWx1ZSg/PVxzKj1ccypbXCciXT9odHRwcz86KSlccyo9XHMqJwoJCQkgICAgLiAnKD86XCIoLio/KVwifFwnKC4qPylcJ3woW15cJ1wiXD4gXSopKS9pJywKCQkJICAgICRidWZmZXIsICRtYXRjaGVzKTsKCgkJICAgICRzZWVuQmVmb3JlID0gYXJyYXkoKTsKCQkgICAgZm9yICgkaSA9IDA7ICRpIDwgY291bnQoJG1hdGNoZXNbMV0pOyAkaSsrKSB7CgkJCSR1cmwgPSAhZW1wdHkoJG1hdGNoZXNbMl1bJGldKSA/ICRtYXRjaGVzWzJdWyRpXQoJCQkJOiAoIWVtcHR5KCRtYXRjaGVzWzNdWyRpXSkgPyAkbWF0Y2hlc1szXVskaV0KCQkJCTogJG1hdGNoZXNbNF1bJGldKTsKCgkJCS8qIEF2b2lkIFhTUyBieSBlbGltaW5hdGluZyBhbnkgSFRNTCBmcm9tIHRoZSB1cmwgKi8KCQkJJHVybCA9IHN0cl9yZXBsYWNlKGFycmF5KCc8JywgJz4nKSwgYXJyYXkoJyZsdDsnLCAnJmd0OycpLCAkdXJsKTsKCgkJCWlmIChlbXB0eSgkdXJsKSB8fCBpc3NldCgkc2VlbkJlZm9yZVskdXJsXSkpIHsKCQkJICAgIGNvbnRpbnVlOwoJCQl9CgkJCSRzZWVuQmVmb3JlWyR1cmxdID0gMTsKCgkJCS8qCgkJCSAqIFNvbWUgc2l0ZXMgKHNsYXNoZG90KSBoYXZlIGltYWdlcyB0aGF0IHN0YXJ0IHdpdGggLy8KCQkJICogYW5kIHRoaXMgY29uZnVzZXMgR2FsbGVyeS4gIFByZXBlbmQgdGhlIGJhc2Ugc2NoZW1lLgoJCQkgKi8KCQkJaWYgKCFzdHJuY21wKCR1cmwsICcvLycsIDIpKSB7CgkJCSAgICAkdXJsID0gJGJhc2VVcmxDb21wb25lbnRzWydzY2hlbWUnXSAuICc6JyAuICR1cmw7CgkJCX0KCgkJCS8qIENvbnZlcnQgdXJscyB3aXRob3V0IHNjaGVtZS9ob3N0IHRvIGZ1bGwgdXJscyAqLwoJCQlpZiAoIXByZWdfbWF0Y2goJy9eXHcrOi8nLCAkdXJsKSkgewoJCQkgICAgJHRtcCA9ICRiYXNlVXJsQ29tcG9uZW50c1snc2NoZW1lJ10gLiAnOi8vJwoJCQkJIC4gJGJhc2VVcmxDb21wb25lbnRzWydob3N0J107CgkJCSAgICBpZiAoIWVtcHR5KCRiYXNlVXJsQ29tcG9uZW50c1sncG9ydCddKSkgewoJCQkJJHRtcCAuPSAnOicgLiAkYmFzZVVybENvbXBvbmVudHNbJ3BvcnQnXTsKCQkJICAgIH0KCQkJICAgIGlmICgkdXJsWzBdID09ICcvJykgewoJCQkJLyogQWJzb2x1dGUgcGF0aDsganVzdCBwcmVwZW5kIHNjaGVtZS9ob3N0OnBvcnQgKi8KCQkJCSR1cmwgPSAkdG1wIC4gJHVybDsKCQkJICAgIH0gZWxzZSB7CgkJCQkvKgoJCQkJICogUmVsYXRpdmUgcGF0aDsgdGhlIGN1cnJlbnQgdXJsIG1pZ2h0IGJlIG9uZSBvZjoKCQkJCSAqICAgaHR0cDovL2V4YW1wbGUuY29tL3BhdGgvdG8vZmlsZS5odG1sCgkJCQkgKiAgIGh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoL3RvLwoJCQkJICoKCQkJCSAqIElmIGl0J3MgYSBkaXJlY3RvcnksIGl0IHNob3VsZCBoYXZlIGEgdHJhaWxpbmcgc2xhc2ggYXQKCQkJCSAqIHRoaXMgcG9pbnQuICBFaXRoZXIgd2F5LCB3ZSB3YW50IHRoZSBiYXNlIHBhdGggdG8gYmU6CgkJCQkgKiAgIGh0dHA6Ly9leGFtcGxlLmNvbS9wYXRoL3RvLwoJCQkJICovCgkJCQlpZiAoaXNzZXQoJGJhc2VVcmxDb21wb25lbnRzWydwYXRoJ10pKSB7CgkJCQkgICAgJGJhc2VQYXRoID0gJGJhc2VVcmxDb21wb25lbnRzWydwYXRoJ107CgkJCQl9IGVsc2UgewoJCQkJICAgICRiYXNlUGF0aCA9ICcvJzsKCQkJCX0KCQkJCWlmICghcHJlZ19tYXRjaCgnL1wvJC8nLCAkYmFzZVBhdGgpKSB7CgkJCQkgICAgJGJhc2VQYXRoID0gZGlybmFtZSgkYmFzZVBhdGgpOwoJCQkJICAgIGlmICgkYmFzZVBhdGggIT0gJy8nKSB7CgkJCQkJJGJhc2VQYXRoIC49ICcvJzsKCQkJCSAgICB9CgkJCQl9CgkJCQkkdG1wIC49ICRiYXNlUGF0aDsKCQkJCSR1cmwgPSAkdG1wIC4gJHVybDsKCQkJICAgIH0KCQkJfQoKCQkJbGlzdCAoJHJldCwgJHR5cGVOYW1lKSA9ICR0aGlzLT5fZ2V0VHlwZU5hbWUoJHVybCwgJG1hdGNoZXNbMV1bJGldKTsKCQkJaWYgKCRyZXQpIHsKCQkJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCQkJfQoKCQkJaWYgKCFlbXB0eSgkdHlwZU5hbWUpKSB7CgkJCSAgICAkZm9ybVsnd2ViUGFnZVVybHMnXVtdID0gYXJyYXkoJ3VybCcgPT4gJHVybCwgJ2l0ZW1UeXBlJyA9PiAkdHlwZU5hbWUpOwoJCQl9CgkJICAgIH0KCQl9CgkJaWYgKGVtcHR5KCRmb3JtWyd3ZWJQYWdlVXJscyddKSkgewoJCSAgICAvKiBEaWRuJ3QgZmluZCBhbnkgdXJscyB0byBhZGQgKi8KCQkgICAgJGZvcm1bJ2Vycm9yJ11bJ3dlYlBhZ2UnXVsnbm9VcmxzRm91bmQnXSA9IDE7CgkJfQoJICAgIH0KCX0KCglpZiAoIWlzc2V0KCRmb3JtWydzZXQnXSkpIHsKCSAgICAkZm9ybVsnc2V0J10gPSBhcnJheSgndGl0bGUnID0+IDEsICdzdW1tYXJ5JyA9PiAwLCAnZGVzY3JpcHRpb24nID0+IDApOwoJfQoKCSRJdGVtQWRkRnJvbVdlYiA9IGFycmF5KAoJICAgICd3ZWJQYWdlVXJsQ291bnQnID0+IGlzc2V0KCRmb3JtWyd3ZWJQYWdlVXJscyddKSA/IGNvdW50KCRmb3JtWyd3ZWJQYWdlVXJscyddKSA6IDApOwoKCSRzZXNzaW9uID0mICRnYWxsZXJ5LT5nZXRTZXNzaW9uKCk7CgkkcmVjZW50VXJscyA9ICRzZXNzaW9uLT5nZXQoJ2l0ZW1hZGQudmlldy5JdGVtQWRkRnJvbVdlYi5yZWNlbnRVcmxzJyk7CglpZiAoIWlzc2V0KCRyZWNlbnRVcmxzKSkgewoJICAgICRyZWNlbnRVcmxzID0gYXJyYXkoKTsKCX0KCSRJdGVtQWRkRnJvbVdlYlsncmVjZW50VXJscyddID0gYXJyYXlfa2V5cygkcmVjZW50VXJscyk7CgoJJHRlbXBsYXRlLT5zZXRWYXJpYWJsZSgnSXRlbUFkZEZyb21XZWInLCAkSXRlbUFkZEZyb21XZWIpOwoJcmV0dXJuIGFycmF5KG51bGwsCgkJICAgICAnbW9kdWxlcy9pdGVtYWRkL3RlbXBsYXRlcy9JdGVtQWRkRnJvbVdlYi50cGwnLAoJCSAgICAgJ21vZHVsZXNfaXRlbWFkZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQW5hbHl6ZSB1cmwgYW5kIGF2YWlsYWJsZSBkYXRhIHRvIGZpbmQgbWltZSB0eXBlLiAgQ2hlY2s6CiAgICAgKiAgMS4gUGFyc2UgdXJsIGZvciBmaWxlIGV4dGVuc2lvbiBhbmQgbWFwIHRoaXMgdG8gYSBtaW1lIHR5cGUuCiAgICAgKiAgMi4gQ2hlY2sgZm9yIENvbnRlbnQtRGlzcG9zaXRpb24gaHR0cCBoZWFkZXIgdGhhbiBpbmNsdWRlcwogICAgICogICAgIGEgZmlsZW5hbWUgYW5kIG1hcCB0aGlzIGV4dGVuc2lvbiB0byBhIG1pbWUgdHlwZS4KICAgICAqICAzLiBDaGVjayBmb3IgQ29udGVudC1UeXBlIGh0dHAgaGVhZGVyIGFuZCB1c2UgdGhhdCBtaW1lIHR5cGUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdXJsIHVybAogICAgICogQHBhcmFtIGFycmF5ICRoZWFkZXJzIChvcHRpb25hbCkgaHR0cCByZXNwb25zZSBoZWFkZXJzCiAgICAgKiBAcGFyYW0gYm9vbGVhbiAkZ2V0RmlsZU5hbWUgKG9wdGlvbmFsKSB0cnVlIHRvIGFsc28gZmlndXJlIG91dCBmaWxlbmFtZQogICAgICogQHJldHVybiBhcnJheSBvYmplY3QgR2FsbGVyeVN0YXR1cyBhIHN0YXR1cyBvYmplY3QKICAgICAqICAgICAgICAgICAgICAgc3RyaW5nIG1pbWUgdHlwZQogICAgICogICAgICAgICAgICAgICBzdHJpbmcgZmlsZW5hbWUgb3IgbnVsbCBpZiBub3QgcmVxdWVzdGVkCiAgICAgKiBAYWNjZXNzIHByaXZhdGUKICAgICAqLwogICAgZnVuY3Rpb24gX2dldE1pbWVUeXBlKCR1cmwsICRoZWFkZXJzPW51bGwsICRnZXRGaWxlTmFtZT1mYWxzZSkgewoJJHVybENvbXBvbmVudHMgPSBwYXJzZV91cmwoJHVybCk7CgoJJGZpbGVOYW1lID0gbnVsbDsKCWlmICgkZ2V0RmlsZU5hbWUpIHsKCSAgICBpZiAoIWVtcHR5KCRoZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ10pCgkJICAgICYmIHByZWdfbWF0Y2goJy9maWxlbmFtZT0iKC4qPykiLycsICRoZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ10sICRtYXRjaCkpIHsKCQkkZmlsZU5hbWUgPSAkbWF0Y2hbMV07CgkgICAgfSBlbHNlIGlmICghZW1wdHkoJHVybENvbXBvbmVudHNbJ3BhdGgnXSkpIHsKCQkkZmlsZU5hbWUgPSBiYXNlbmFtZSgkdXJsQ29tcG9uZW50c1sncGF0aCddKTsKCSAgICB9IGVsc2UgewoJCSRmaWxlTmFtZSA9IGJhc2VuYW1lKCR1cmwpOwoJICAgIH0KCX0KCglpZiAoIWVtcHR5KCR1cmxDb21wb25lbnRzWydwYXRoJ10pKSB7CgkgICAgbGlzdCAoJHJldCwgJG1pbWVUeXBlKSA9IEdhbGxlcnlDb3JlQXBpOjpnZXRNaW1lVHlwZSgkdXJsQ29tcG9uZW50c1sncGF0aCddKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsLCBudWxsKTsKCSAgICB9CgkgICAgaWYgKCFlbXB0eSgkbWltZVR5cGUpICYmICRtaW1lVHlwZSAhPSAnYXBwbGljYXRpb24vdW5rbm93bicpIHsKCQlyZXR1cm4gYXJyYXkobnVsbCwgJG1pbWVUeXBlLCAkZmlsZU5hbWUpOwoJICAgIH0KCX0KCglpZiAoIWVtcHR5KCR1cmxDb21wb25lbnRzWydxdWVyeSddKSkgewoJICAgIC8qCgkgICAgICogVHJ5IGFnYWluIHdpdGggZW5kIG9mIHRoZSBxdWVyeSBzdHJpbmcgLS0ganVzdCBpbiBjYXNlLiAgU29tZSBzaXRlcywgbGlrZQoJICAgICAqIEdvb2dsZSdzIGltYWdlIHNlYXJjaCBmZWF0dXJlLCBwdXQgdGhlIGZpbGUgbmFtZSBhdCB0aGUgZW5kIG9mIHRoZSBxdWVyeSBzdHJpbmcuCgkgICAgICovCgkgICAgbGlzdCAoJHJldCwgJG1pbWVUeXBlKSA9IEdhbGxlcnlDb3JlQXBpOjpnZXRNaW1lVHlwZSgkdXJsQ29tcG9uZW50c1sncXVlcnknXSk7CgkgICAgaWYgKCRyZXQpIHsKCQlyZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkgICAgfQoJICAgIGlmICghZW1wdHkoJG1pbWVUeXBlKSAmJiAkbWltZVR5cGUgIT0gJ2FwcGxpY2F0aW9uL3Vua25vd24nKSB7CgkJcmV0dXJuIGFycmF5KG51bGwsICRtaW1lVHlwZSwgJGZpbGVOYW1lKTsKCSAgICB9Cgl9CgoJaWYgKCFlbXB0eSgkaGVhZGVyc1snQ29udGVudC1EaXNwb3NpdGlvbiddKQoJCSYmIHByZWdfbWF0Y2goJy9maWxlbmFtZT0iKC4qPykiLycsICRoZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ10sICRtYXRjaCkpIHsKCSAgICBsaXN0ICgkcmV0LCAkbWltZVR5cGUpID0gR2FsbGVyeUNvcmVBcGk6OmdldE1pbWVUeXBlKCRtYXRjaFsxXSk7CgkgICAgaWYgKCRyZXQpIHsKCQlyZXR1cm4gYXJyYXkoJHJldCwgbnVsbCwgbnVsbCk7CgkgICAgfQoJICAgIGlmICghZW1wdHkoJG1pbWVUeXBlKSAmJiAkbWltZVR5cGUgIT0gJ2FwcGxpY2F0aW9uL3Vua25vd24nKSB7CgkJcmV0dXJuIGFycmF5KG51bGwsICRtaW1lVHlwZSwgJGZpbGVOYW1lKTsKCSAgICB9Cgl9CgoJaWYgKCFlbXB0eSgkaGVhZGVyc1snQ29udGVudC1UeXBlJ10pKSB7CgkgICAgcmV0dXJuIGFycmF5KG51bGwsICRoZWFkZXJzWydDb250ZW50LVR5cGUnXSwgJGZpbGVOYW1lKTsKCX0KCglyZXR1cm4gYXJyYXkobnVsbCwgbnVsbCwgJGZpbGVOYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFuYWx5emUgdXJsIGFuZCBhdmFpbGFibGUgZGF0YSB0byBmaW5kIGl0ZW0gdHlwZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1cmwgdXJsCiAgICAgKiBAcGFyYW0gc3RyaW5nICRodG1sQXR0cmlidXRlIChvcHRpb25hbCkgaHRtbCBhdHRyaWJ1dGUgdGhpcyB1cmwgd2FzIHBhcnNlZCBmcm9tCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcnMgKG9wdGlvbmFsKSBodHRwIHJlc3BvbnNlIGhlYWRlcnMKICAgICAqIEByZXR1cm4gYXJyYXkgb2JqZWN0IEdhbGxlcnlTdGF0dXMgYSBzdGF0dXMgb2JqZWN0CiAgICAgKiAgICAgICAgICAgICAgIHN0cmluZyB0eXBlIG5hbWUKICAgICAqIEBhY2Nlc3MgcHJpdmF0ZQogICAgICovCiAgICBmdW5jdGlvbiBfZ2V0VHlwZU5hbWUoJHVybCwgJGh0bWxBdHRyaWJ1dGU9bnVsbCwgJGhlYWRlcnM9bnVsbCkgewoJaWYgKGlzc2V0KCRodG1sQXR0cmlidXRlKSAmJiBzdHJ0b2xvd2VyKCRodG1sQXR0cmlidXRlKSA9PSAnc3JjJykgewoJICAgIC8qIEZvciA8aW1nPiBzcmMgYXR0cmlidXRlIGp1c3QgYXNzdW1lICJQaG90byIgYW5kIGRvbid0IGV4YW1pbmUgbWltZSB0eXBlICovCgkgICAgbGlzdCAoJHJldCwgJG1vZHVsZSkgPSBHYWxsZXJ5Q29yZUFwaTo6bG9hZFBsdWdpbignbW9kdWxlJywgJ2l0ZW1hZGQnKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9CgkgICAgcmV0dXJuIGFycmF5KG51bGwsICRtb2R1bGUtPnRyYW5zbGF0ZSgnUGhvdG8nKSk7Cgl9IGVsc2UgewoJICAgIGxpc3QgKCRyZXQsICRtaW1lVHlwZSkgPSAkdGhpcy0+X2dldE1pbWVUeXBlKCR1cmwsICRoZWFkZXJzKTsKCSAgICBpZiAoJHJldCkgewoJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCSAgICB9CgkgICAgaWYgKGVtcHR5KCRtaW1lVHlwZSkpIHsKCQlyZXR1cm4gYXJyYXkobnVsbCwgbnVsbCk7CgkgICAgfQoKCSAgICBzdGF0aWMgJG1pbWVUeXBlTmFtZU1hcCA9IGFycmF5KCk7CgkgICAgaWYgKCFpc3NldCgkbWltZVR5cGVOYW1lTWFwWyRtaW1lVHlwZV0pKSB7CgkJbGlzdCAoJHJldCwgJG1pbWVUeXBlSXRlbSkgPSBHYWxsZXJ5Q29yZUFwaTo6bmV3SXRlbUJ5TWltZVR5cGUoJG1pbWVUeXBlKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7CgkJfQoJCSRtaW1lVHlwZUl0ZW0tPnNldE1pbWVUeXBlKCRtaW1lVHlwZSk7CgkJJG1pbWVUeXBlTmFtZU1hcFskbWltZVR5cGVdID0gJG1pbWVUeXBlSXRlbS0+aXRlbVR5cGVOYW1lKCk7CgkgICAgfQoJICAgIHJldHVybiBhcnJheShudWxsLCAkbWltZVR5cGVOYW1lTWFwWyRtaW1lVHlwZV1bMF0pOwoJfQogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBJdGVtQWRkUGx1Z2luOjpnZXRUaXRsZQogICAgICovCiAgICBmdW5jdGlvbiBnZXRUaXRsZSgpIHsKCWxpc3QgKCRyZXQsICRtb2R1bGUpID0gR2FsbGVyeUNvcmVBcGk6OmxvYWRQbHVnaW4oJ21vZHVsZScsICdpdGVtYWRkJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCglyZXR1cm4gYXJyYXkobnVsbCwgJG1vZHVsZS0+dHJhbnNsYXRlKCdGcm9tIFdlYiBQYWdlJykpOwogICAgfQp9Cj8+Cg==');
expand_a4483450cb($outputDir, 'ItemAddSiteAdmin.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogU2V0dGluZ3MgZm9yIEl0ZW0gQWRkCiAqIEBwYWNrYWdlIEl0ZW1BZGQKICogQHN1YnBhY2thZ2UgVXNlckludGVyZmFjZQogKiBAYXV0aG9yIEFsYW4gSGFyZGVyIDxhbGFuLmhhcmRlckBzdW4uY29tPgogKiBAdmVyc2lvbiAkUmV2aXNpb246IDE1NTEzICQKICovCmNsYXNzIEl0ZW1BZGRTaXRlQWRtaW5Db250cm9sbGVyIGV4dGVuZHMgR2FsbGVyeUNvbnRyb2xsZXIgewoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5Q29udHJvbGxlcjo6aGFuZGxlUmVxdWVzdAogICAgICovCiAgICBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0KCRmb3JtKSB7CglnbG9iYWwgJGdhbGxlcnk7CgoJJHJldCA9IEdhbGxlcnlDb3JlQXBpOjphc3NlcnRVc2VySXNTaXRlQWRtaW5pc3RyYXRvcigpOwoJaWYgKCRyZXQpIHsKCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7Cgl9CglsaXN0ICgkcmV0LCAkcGFyYW1zKSA9IEdhbGxlcnlDb3JlQXBpOjpmZXRjaEFsbFBsdWdpblBhcmFtZXRlcnMoJ21vZHVsZScsICdpdGVtYWRkJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCgkkc3RhdHVzID0gJGVycm9yID0gYXJyYXkoKTsKCWlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ2FkZFVwbG9hZExvY2FsU2VydmVyRGlyJ10pKSB7CgkgICAgJHBhdGggPSAkZm9ybVsndXBsb2FkTG9jYWxTZXJ2ZXInXVsnbmV3RGlyJ107CgkgICAgR2FsbGVyeVV0aWxpdGllczo6dW5zYW5pdGl6ZUlucHV0VmFsdWVzKCRwYXRoLCBmYWxzZSk7CgkgICAgLyogJHBhdGggaXMgVVRGLTgsICRyZWFsUGF0aCBpcyBpbiB0aGUgc3lzdGVtIGNoYXJzZXQgZm9yIGZpbGVzeXN0ZW0gaW50ZXJhY3Rpb25zICovCgkgICAgJHJlYWxQYXRoID0gR2FsbGVyeUNvcmVBcGk6OmNvbnZlcnRGcm9tVXRmOCgkcGF0aCk7CgkgICAgaWYgKGVtcHR5KCRwYXRoKSkgewoJCSRlcnJvcltdID0gJ2Zvcm1bZXJyb3JdW3VwbG9hZExvY2FsU2VydmVyXVtuZXdEaXJdW21pc3NpbmddJzsKCSAgICB9IGVsc2UgewoJCSRwbGF0Zm9ybSA9JiAkZ2FsbGVyeS0+Z2V0UGxhdGZvcm0oKTsKCQkkc3BsaXRQYXRoID0gJHBsYXRmb3JtLT5zcGxpdFBhdGgoJHJlYWxQYXRoKTsKCQlpZiAoIXByZWdfbWF0Y2goJ3tbXFwvXX0nLCAkc3BsaXRQYXRoWzBdKSB8fCBpbl9hcnJheSgnLi4nLCAkc3BsaXRQYXRoKSkgewoJCSAgICAvKiBVc2UgcmVhbHBhdGggdmFsdWUgaWYgcGF0aCBpcyByZWxhdGl2ZSBvciBoYXMgLi4gKi8KCQkgICAgJHJlYWxQYXRoID0gJHBsYXRmb3JtLT5yZWFscGF0aCgkcmVhbFBhdGgpOwoJCSAgICAkcGF0aCA9IEdhbGxlcnlDb3JlQXBpOjpjb252ZXJ0VG9VdGY4KCRyZWFsUGF0aCk7CgkJfQoKCQlpZiAoJHBsYXRmb3JtLT5pc1Jlc3RyaWN0ZWRCeU9wZW5CYXNlRGlyKCRyZWFsUGF0aCkpIHsKCQkgICAgJGVycm9yW10gPSAnZm9ybVtlcnJvcl1bdXBsb2FkTG9jYWxTZXJ2ZXJdW25ld0Rpcl1bcmVzdHJpY3RlZEJ5T3BlbkJhc2VEaXJdJzsKCQl9IGVsc2UgaWYgKCEkcGxhdGZvcm0tPmlzX3JlYWRhYmxlKCRyZWFsUGF0aCkpIHsKCQkgICAgJGVycm9yW10gPSAnZm9ybVtlcnJvcl1bdXBsb2FkTG9jYWxTZXJ2ZXJdW25ld0Rpcl1bbm90UmVhZGFibGVdJzsKCQl9IGVsc2UgaWYgKCEkcGxhdGZvcm0tPmlzX2RpcigkcmVhbFBhdGgpKSB7CgkJICAgICRlcnJvcltdID0gJ2Zvcm1bZXJyb3JdW3VwbG9hZExvY2FsU2VydmVyXVtuZXdEaXJdW25vdEFEaXJlY3RvcnldJzsKCQl9CgkgICAgfQoKCSAgICAvKiBTdG9yZSB0aGUgcGF0aCBpbiBVVEYtOCBpbiB0aGUgZGF0YWJhc2UgKi8KCSAgICBpZiAoZW1wdHkoJGVycm9yKSkgewoJCWZvciAoJGkgPSAxOyAhZW1wdHkoJHBhcmFtc1sndXBsb2FkTG9jYWxTZXJ2ZXIuZGlyLicgLiAkaV0pCgkJCSAgJiYgKCRwYXJhbXNbJ3VwbG9hZExvY2FsU2VydmVyLmRpci4nIC4gJGldICE9ICRwYXRoKTsgJGkrKykgeyB9CgoJCWlmIChlbXB0eSgkcGFyYW1zWyd1cGxvYWRMb2NhbFNlcnZlci5kaXIuJyAuICRpXSkpIHsKCQkgICAgJHJldCA9IEdhbGxlcnlDb3JlQXBpOjpzZXRQbHVnaW5QYXJhbWV0ZXIoCgkJCSdtb2R1bGUnLCAnaXRlbWFkZCcsICd1cGxvYWRMb2NhbFNlcnZlci5kaXIuJyAuICRpLCAkcGF0aCk7CgkJICAgIGlmICgkcmV0KSB7CgkJCXJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCQkgICAgfQoJCSAgICAkc3RhdHVzWydhZGRlZERpciddID0gMTsKCQl9CgkgICAgfQoJfSBlbHNlIGlmIChpc3NldCgkZm9ybVsnYWN0aW9uJ11bJ3JlbW92ZVVwbG9hZExvY2FsU2VydmVyRGlyJ10pKSB7CgkgICAgaWYgKCFlbXB0eSgkZm9ybVsndXBsb2FkTG9jYWxTZXJ2ZXInXVsnc2VsZWN0ZWREaXInXSkpIHsKCQlmb3IgKCRpID0gJGZvcm1bJ3VwbG9hZExvY2FsU2VydmVyJ11bJ3NlbGVjdGVkRGlyJ10gKyAxOwoJCQkhZW1wdHkoJHBhcmFtc1sndXBsb2FkTG9jYWxTZXJ2ZXIuZGlyLicgLiAkaV0pOyAkaSsrKSB7CgkJICAgICRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6c2V0UGx1Z2luUGFyYW1ldGVyKCdtb2R1bGUnLCAnaXRlbWFkZCcsCgkJCSAgICAndXBsb2FkTG9jYWxTZXJ2ZXIuZGlyLicgLiAoJGkgLSAxKSwKCQkJICAgICRwYXJhbXNbJ3VwbG9hZExvY2FsU2VydmVyLmRpci4nIC4gJGldKTsKCQkgICAgaWYgKCRyZXQpIHsKCQkJcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJCSAgICB9CgkJfQoJCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVtb3ZlUGx1Z2luUGFyYW1ldGVyKCdtb2R1bGUnLCAnaXRlbWFkZCcsCgkJCQkJCQkgICAgICd1cGxvYWRMb2NhbFNlcnZlci5kaXIuJyAuICgkaSAtIDEpKTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7CgkJfQoJCSRzdGF0dXNbJ3JlbW92ZWREaXInXSA9IDE7CgkgICAgfSBlbHNlIHsKCQkkZXJyb3JbXSA9ICdmb3JtW2Vycm9yXVt1cGxvYWRMb2NhbFNlcnZlcl1bc2VsZWN0ZWREaXJdW21pc3NpbmddJzsKCSAgICB9Cgl9CglpZiAoaXNzZXQoJGZvcm1bJ2FjdGlvbiddWydzYXZlJ10pIHx8IGlzc2V0KCRzdGF0dXNbJ2FkZGVkRGlyJ10pKSB7CgkgICAgZm9yZWFjaCAoYXJyYXkoJ2Zyb213ZWInLCAnZnJvbXNlcnZlcicpIGFzICRrZXkpIHsKCQkkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnNldFBsdWdpblBhcmFtZXRlcignbW9kdWxlJywgJ2l0ZW1hZGQnLCAka2V5LCAkZm9ybVska2V5XSk7CgkJaWYgKCRyZXQpIHsKCQkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJCX0KCSAgICB9CgkgICAgJHN0YXR1c1snc2F2ZWQnXSA9IDE7Cgl9IC8qIGVsc2UgJGZvcm1bJ2FjdGlvbiddWydyZXNldCddICovCgoJJG1ldGhvZCA9IGVtcHR5KCRlcnJvcikgPyAncmVkaXJlY3QnIDogJ2RlbGVnYXRlJzsKCSRyZXN1bHRzID0gYXJyYXkoJG1ldGhvZCA9PiBhcnJheSgndmlldycgPT4gJ2NvcmUuU2l0ZUFkbWluJywKCQkJCQkgICdzdWJWaWV3JyA9PiAnaXRlbWFkZC5JdGVtQWRkU2l0ZUFkbWluJyksCgkJCSAnc3RhdHVzJyA9PiAkc3RhdHVzLAoJCQkgJ2Vycm9yJyA9PiAkZXJyb3IpOwoKCXJldHVybiBhcnJheShudWxsLCAkcmVzdWx0cyk7CiAgICB9Cn0KCi8qKgogKiBTZXR0aW5ncyBmb3IgSXRlbSBBZGQKICovCmNsYXNzIEl0ZW1BZGRTaXRlQWRtaW5WaWV3IGV4dGVuZHMgR2FsbGVyeVZpZXcgewoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5Vmlldzo6bG9hZFRlbXBsYXRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIGxvYWRUZW1wbGF0ZSgmJHRlbXBsYXRlLCAmJGZvcm0pIHsKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6YXNzZXJ0VXNlcklzU2l0ZUFkbWluaXN0cmF0b3IoKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoJbGlzdCAoJHJldCwgJG1vZHVsZSkgPSBHYWxsZXJ5Q29yZUFwaTo6bG9hZFBsdWdpbignbW9kdWxlJywgJ2l0ZW1hZGQnKTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuIGFycmF5KCRyZXQsIG51bGwpOwoJfQoKCWlmICgkZm9ybVsnZm9ybU5hbWUnXSAhPSAnSXRlbUFkZFNpdGVBZG1pbicpIHsKCSAgICAkZm9ybVsnZm9ybU5hbWUnXSA9ICdJdGVtQWRkU2l0ZUFkbWluJzsKCSAgICAkZm9ybVsndXBsb2FkTG9jYWxTZXJ2ZXInXVsnbmV3RGlyJ10gPSAnJzsKCSAgICBmb3JlYWNoIChhcnJheSgnZnJvbXdlYicsICdmcm9tc2VydmVyJykgYXMgJGtleSkgewoJCWxpc3QgKCRyZXQsICRmb3JtWyRrZXldKSA9ICRtb2R1bGUtPmdldFBhcmFtZXRlcigka2V5KTsKCQlpZiAoJHJldCkgewoJCSAgICByZXR1cm4gYXJyYXkoJHJldCwgbnVsbCk7CgkJfQoJICAgIH0KCX0KCglsaXN0ICgkcmV0LCAkcGFyYW1zKSA9IEdhbGxlcnlDb3JlQXBpOjpmZXRjaEFsbFBsdWdpblBhcmFtZXRlcnMoJ21vZHVsZScsICdpdGVtYWRkJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiBhcnJheSgkcmV0LCBudWxsKTsKCX0KCSRsb2NhbFNlcnZlckRpckxpc3QgPSBhcnJheSgpOwoJZm9yICgkaSA9IDE7ICFlbXB0eSgkcGFyYW1zWyd1cGxvYWRMb2NhbFNlcnZlci5kaXIuJyAuICRpXSk7ICRpKyspIHsKCSAgICAkbG9jYWxTZXJ2ZXJEaXJMaXN0WyRpXSA9ICRwYXJhbXNbJ3VwbG9hZExvY2FsU2VydmVyLmRpci4nIC4gJGldOwoJfQoKCSRJdGVtQWRkU2l0ZUFkbWluID0gYXJyYXkoCgkJJ29wdGlvbkxpc3QnID0+IGFycmF5KCdvbicgPT4KCQkgICAgJG1vZHVsZS0+dHJhbnNsYXRlKCdBdmFpbGFibGUgdG8gYWxsIHVzZXJzIHdpdGggcGVybWlzc2lvbiB0byBhZGQgaXRlbXMnKSwKCQkgICAgJ2FkbWluJyA9PiAkbW9kdWxlLT50cmFuc2xhdGUoJ1NpdGUgQWRtaW5zIG9ubHknKSwKCQkgICAgJ29mZicgPT4gJG1vZHVsZS0+dHJhbnNsYXRlKCdEaXNhYmxlZCcpCgkJICAgICksCgkJJ2xvY2FsU2VydmVyRGlyTGlzdCcgPT4gJGxvY2FsU2VydmVyRGlyTGlzdCwKCQkpOwoKCSR0ZW1wbGF0ZS0+c2V0VmFyaWFibGUoJ0l0ZW1BZGRTaXRlQWRtaW4nLCAkSXRlbUFkZFNpdGVBZG1pbik7CgkkdGVtcGxhdGUtPnNldFZhcmlhYmxlKCdjb250cm9sbGVyJywgJ2l0ZW1hZGQuSXRlbUFkZFNpdGVBZG1pbicpOwoJcmV0dXJuIGFycmF5KG51bGwsIGFycmF5KCdib2R5JyA9PiAnbW9kdWxlcy9pdGVtYWRkL3RlbXBsYXRlcy9JdGVtQWRkU2l0ZUFkbWluLnRwbCcpKTsKICAgIH0KfQo/Pgo=');
expand_a4483450cb($outputDir, 'MANIFEST', 'IyAkUmV2aXNpb246IDE2MDQxICQKIyBGaWxlIGNyYzMyIGNyYzMyKGNybGYpIHNpemUgc2l6ZShjcmxmKSAgb3IgIFIgRmlsZQptb2R1bGVzL2l0ZW1hZGQvSXRlbUFkZEZyb21TZXJ2ZXIuaW5jCTE2NjE2NDQzNDkJMTQ2NDM2MzEwOQkxODQyNwkxODk4NAptb2R1bGVzL2l0ZW1hZGQvSXRlbUFkZEZyb21XZWIuaW5jCTE0ODk5ODA5NTQJMzk2NjM4MzgzNgkxMzQ0MQkxMzg1NQptb2R1bGVzL2l0ZW1hZGQvSXRlbUFkZFNpdGVBZG1pbi5pbmMJODA1NzA5ODE3CTMyODIzOTk2OTQJNTk4NAk2MTYyCm1vZHVsZXMvaXRlbWFkZC9tb2R1bGUuaW5jCTE3NTY3MzY0ODAJMTQxNzA1MDU1MAkyNzQ1CTI4MzcKbW9kdWxlcy9pdGVtYWRkL3RlbXBsYXRlcy9JdGVtQWRkRnJvbVNlcnZlci50cGwJMzczMjMxMjUzOQkzMDczNzExNzY5CTEwODIyCTExMTMzCm1vZHVsZXMvaXRlbWFkZC90ZW1wbGF0ZXMvSXRlbUFkZEZyb21XZWIudHBsCTI2NDk4MjYyNTUJMzY1MzEyMTk1Nwk1NDk2CTU2NjIKbW9kdWxlcy9pdGVtYWRkL3RlbXBsYXRlcy9JdGVtQWRkU2l0ZUFkbWluLnRwbAkxODY0NDg3NzM4CTk5MDc4MDg4Ngk0NDM3CTQ1NTQK');
expand_a4483450cb($outputDir, 'module.inc', 'PD9waHAKLyoKICogR2FsbGVyeSAtIGEgd2ViIGJhc2VkIHBob3RvIGFsYnVtIHZpZXdlciBhbmQgZWRpdG9yCiAqIENvcHlyaWdodCAoQykgMjAwMC0yMDA3IEJoYXJhdCBNZWRpcmF0dGEKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0CiAqIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICoKICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAogKiBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0IC0gRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEsIFVTQS4KICovCgovKioKICogVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJdGVtQWRkIG1vZHVsZS4KICogU3VwcG9ydHMgSXRlbUFkZEZyb21TZXJ2ZXIgYW5kIEl0ZW1BZGRGcm9tV2ViCiAqCiAqIEBwYWNrYWdlIEl0ZW1BZGQKICogQGF1dGhvciBBbGFuIEhhcmRlciA8YWxhbi5oYXJkZXJAc3VuLmNvbT4KICogQHZlcnNpb24gJFJldmlzaW9uOiAxNjAyOSAkCiAqLwpjbGFzcyBJdGVtQWRkTW9kdWxlIGV4dGVuZHMgR2FsbGVyeU1vZHVsZSB7CgogICAgZnVuY3Rpb24gSXRlbUFkZE1vZHVsZSgpIHsKCWdsb2JhbCAkZ2FsbGVyeTsKCSR0aGlzLT5zZXRJZCgnaXRlbWFkZCcpOwoJJHRoaXMtPnNldE5hbWUoJGdhbGxlcnktPmkxOG4oJ0FkZCBJdGVtcycpKTsKCSR0aGlzLT5zZXREZXNjcmlwdGlvbigkZ2FsbGVyeS0+aTE4bignQWRkIGl0ZW1zIGZyb20gbG9jYWwgc2VydmVyIG9yIHRoZSB3ZWInKSk7CgkkdGhpcy0+c2V0VmVyc2lvbignMS4wLjAnKTsKCSR0aGlzLT5zZXRHcm91cCgnaW1wb3J0JywgJGdhbGxlcnktPmkxOG4oJ0ltcG9ydCcpKTsKCSR0aGlzLT5zZXRDYWxsYmFja3MoJ2dldFNpdGVBZG1pblZpZXdzJyk7CgkkdGhpcy0+c2V0UmVxdWlyZWRDb3JlQXBpKGFycmF5KDcsIDQpKTsKCSR0aGlzLT5zZXRSZXF1aXJlZE1vZHVsZUFwaShhcnJheSgzLCAwKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlNb2R1bGU6OnBlcmZvcm1GYWN0b3J5UmVnaXN0cmF0aW9ucwogICAgICovCiAgICBmdW5jdGlvbiBwZXJmb3JtRmFjdG9yeVJlZ2lzdHJhdGlvbnMoKSB7CgkkcmV0ID0gR2FsbGVyeUNvcmVBcGk6OnJlZ2lzdGVyRmFjdG9yeUltcGxlbWVudGF0aW9uKAoJICAgICdJdGVtQWRkUGx1Z2luJywgJ0l0ZW1BZGRGcm9tV2ViJywgJ0l0ZW1BZGRGcm9tV2ViJywKCSAgICAnbW9kdWxlcy9pdGVtYWRkL0l0ZW1BZGRGcm9tV2ViLmluYycsICdpdGVtYWRkJywgbnVsbCwgMyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoKCSRyZXQgPSBHYWxsZXJ5Q29yZUFwaTo6cmVnaXN0ZXJGYWN0b3J5SW1wbGVtZW50YXRpb24oCgkgICAgJ0l0ZW1BZGRQbHVnaW4nLCAnSXRlbUFkZEZyb21TZXJ2ZXInLCAnSXRlbUFkZEZyb21TZXJ2ZXInLAoJICAgICdtb2R1bGVzL2l0ZW1hZGQvSXRlbUFkZEZyb21TZXJ2ZXIuaW5jJywgJ2l0ZW1hZGQnLCBudWxsLCA0KTsKCWlmICgkcmV0KSB7CgkgICAgcmV0dXJuICRyZXQ7Cgl9CgoJcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIEdhbGxlcnlNb2R1bGU6OmdldFNpdGVBZG1pblZpZXdzCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldFNpdGVBZG1pblZpZXdzKCkgewoJcmV0dXJuIGFycmF5KG51bGwsIGFycmF5KGFycmF5KCduYW1lJyA9PiAkdGhpcy0+dHJhbnNsYXRlKCdXZWIvU2VydmVyJyksCgkJCQkgICAgICAgJ3ZpZXcnID0+ICdpdGVtYWRkLkl0ZW1BZGRTaXRlQWRtaW4nKSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBHYWxsZXJ5TW9kdWxlOjp1cGdyYWRlCiAgICAgKi8KICAgIGZ1bmN0aW9uIHVwZ3JhZGUoJGN1cnJlbnRWZXJzaW9uKSB7CglsaXN0ICgkcmV0LCAkcGFyYW1zKSA9IEdhbGxlcnlDb3JlQXBpOjpmZXRjaEFsbFBsdWdpblBhcmFtZXRlcnMoJ21vZHVsZScsICdpdGVtYWRkJyk7CglpZiAoJHJldCkgewoJICAgIHJldHVybiAkcmV0OwoJfQoJZm9yZWFjaCAoYXJyYXkoJ2Zyb21zZXJ2ZXInID0+ICdvbicsICdmcm9td2ViJyA9PiAnYWRtaW4nKSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJICAgIGlmICghaXNzZXQoJHBhcmFtc1ska2V5XSkpIHsKCQkkcmV0ID0gJHRoaXMtPnNldFBhcmFtZXRlcigka2V5LCAkdmFsdWUpOwoJCWlmICgkcmV0KSB7CgkJICAgIHJldHVybiAkcmV0OwoJCX0KCSAgICB9Cgl9CgoJcmV0dXJuIG51bGw7CiAgICB9Cn0KPz4K');
expand_a4483450cb($outputDir, 'po/GNUmakefile', 'R0FMTEVSWURJUiA/PSAuLi8uLi8uLgpUT09MRElSID89ICQoR0FMTEVSWURJUikvbGliL3Rvb2xzCgppbmNsdWRlICQoVE9PTERJUikvcG8vR05VbWFrZWZpbGUuaW5jCgo=');
expand_a4483450cb($outputDir, 'po/strings.raw', 'IyAkSWQ6IHN0cmluZ3MucmF3IDE1ODEyIDIwMDctMDItMTMgMjI6Mzg6MjdaIG1pbmRsZXNzICQKCi8qIEl0ZW1BZGRGcm9tU2VydmVyLmluYyAqLwpnZXR0ZXh0KCJGcm9tIExvY2FsIFNlcnZlciIpCgovKiBJdGVtQWRkRnJvbVdlYi5pbmMgKi8KZ2V0dGV4dCgiUGhvdG8iKQpnZXR0ZXh0KCJGcm9tIFdlYiBQYWdlIikKCi8qIEl0ZW1BZGRTaXRlQWRtaW4uaW5jICovCmdldHRleHQoIkF2YWlsYWJsZSB0byBhbGwgdXNlcnMgd2l0aCBwZXJtaXNzaW9uIHRvIGFkZCBpdGVtcyIpCmdldHRleHQoIlNpdGUgQWRtaW5zIG9ubHkiKQpnZXR0ZXh0KCJEaXNhYmxlZCIpCgovKiBtb2R1bGUuaW5jICovCmdldHRleHQoIkFkZCBJdGVtcyIpCmdldHRleHQoIkFkZCBpdGVtcyBmcm9tIGxvY2FsIHNlcnZlciBvciB0aGUgd2ViIikKZ2V0dGV4dCgiSW1wb3J0IikKZ2V0dGV4dCgiV2ViL1NlcnZlciIpCgovKiB0ZW1wbGF0ZXMvSXRlbUFkZEZyb21TZXJ2ZXIudHBsICovCmdldHRleHQoIlRyYW5zZmVyIGZpbGVzIHRoYXQgYXJlIGFscmVhZHkgb24geW91ciBzZXJ2ZXIgaW50byB5b3VyIEdhbGxlcnkuICBUaGUgZmlsZXMgbXVzdCBhbHJlYWR5IGhhdmUgYmVlbiB1cGxvYWRlZCB0byB5b3VyIHNlcnZlciBzb21lIG90aGVyIHdheSAobGlrZSBGVFApIGFuZCBtdXN0IGJlIHBsYWNlZCBpbiBhIGRpcmVjdG9yeSB3aGVyZSB0aGV5IGFyZSBhY2Nlc3NpYmx5IGJ5IGFueSBlbGVtZW50IG9uIHRoZSBzZXJ2ZXIuICBJZiB5b3UncmUgb24gVW5peCB0aGlzIG1lYW5zIHRoYXQgdGhlIGZpbGVzIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBmaWxlcyBhcmUgaW4gc2hvdWxkIGhhdmUgbW9kZXMgb2YgYXQgbGVhc3QgNzU1LiIpCmdldHRleHQoIkZvciBzZWN1cml0eSBwdXJwb3NlcywgeW91IGNhbid0IHVzZSB0aGlzIGZlYXR1cmUgdW50aWwgdGhlIEdhbGxlcnkgU2l0ZSBBZG1pbmlzdHJhdG9yIGNvbmZpZ3VyZXMgYSBzZXQgb2YgbGVnYWwgdXBsb2FkIGRpcmVjdG9yaWVzLiIpCmdldHRleHQoInNpdGUgYWRtaW4iKQpnZXR0ZXh0KCJTZXJ2ZXIgUGF0aCIpCmdldHRleHQoIllvdSBtdXN0IGVudGVyIGEgZGlyZWN0b3J5LiIpCmdldHRleHQoIlRoZSBkaXJlY3RvcnkgeW91IGVudGVyZWQgaXMgaW52YWxpZC4gIE1ha2Ugc3VyZSB0aGF0IHRoZSBkaXJlY3RvcnkgaXMgcmVhZGFibGUgYnkgYWxsIHVzZXJzLiIpCmdldHRleHQoIlRoZSBkaXJlY3RvcnkgeW91IGVudGVyZWQgaXMgaWxsZWdhbC4gIEl0IG11c3QgYmUgYSBzdWIgZGlyZWN0b3J5IG9mIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGJlbG93LiIpCmdldHRleHQoIkFuIGl0ZW0gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLiIpCmdldHRleHQoIkxlZ2FsIERpcmVjdG9yaWVzIikKZ2V0dGV4dCgibW9kaWZ5IikKZ2V0dGV4dCgiUmVjZW50IERpcmVjdG9yaWVzIikKZ2V0dGV4dCgiRmluZCBGaWxlcyIpIC8qIGFsc28gaW46IHRlbXBsYXRlcy9JdGVtQWRkRnJvbVdlYi50cGwgKi8KZ2V0dGV4dCgiRGlyZWN0b3J5OiAlcyIpCmdldHRleHQoIkZpbGUgbmFtZSIpCmdldHRleHQoIlR5cGUiKSAvKiBhbHNvIGluOiB0ZW1wbGF0ZXMvSXRlbUFkZEZyb21XZWIudHBsICovCmdldHRleHQoIlNpemUiKQpnZXR0ZXh0KCJVc2UgU3ltbGluayIpCm5nZXR0ZXh0KCIlZCBieXRlIiwgIiVkIGJ5dGVzIikKZ2V0dGV4dCgiUGFyZW50IERpcmVjdG9yeSIpCmdldHRleHQoIkRpcmVjdG9yeSIpCmdldHRleHQoIihVbiljaGVjayBhbGwga25vd24gdHlwZXMiKQpnZXR0ZXh0KCIoVW4pY2hlY2sgc3ltbGlua3MiKQpnZXR0ZXh0KCJmb3Igc2VsZWN0ZWQgaXRlbXMiKQpnZXR0ZXh0KCJDb3B5IGJhc2UgZmlsZW5hbWVzIHRvOiIpIC8qIGFsc28gaW46IHRlbXBsYXRlcy9JdGVtQWRkRnJvbVdlYi50cGwgKi8KZ2V0dGV4dCgiVGl0bGUiKSAvKiBhbHNvIGluOiB0ZW1wbGF0ZXMvSXRlbUFkZEZyb21XZWIudHBsICovCmdldHRleHQoIlN1bW1hcnkiKSAvKiBhbHNvIGluOiB0ZW1wbGF0ZXMvSXRlbUFkZEZyb21XZWIudHBsICovCmdldHRleHQoIkRlc2NyaXB0aW9uIikgLyogYWxzbyBpbjogdGVtcGxhdGVzL0l0ZW1BZGRGcm9tV2ViLnRwbCAqLwpnZXR0ZXh0KCJBZGQgRmlsZXMiKQpnZXR0ZXh0KCJTdGFydCBPdmVyIikKCi8qIHRlbXBsYXRlcy9JdGVtQWRkRnJvbVdlYi50cGwgKi8KZ2V0dGV4dCgiSW1wb3J0IGZpbGVzIGludG8gR2FsbGVyeSBmcm9tIGFub3RoZXIgd2Vic2l0ZS4gIEVudGVyIGEgVVJMIGJlbG93IHRvIGEgd2ViIHBhZ2UgYW55d2hlcmUgb24gdGhlIG5ldCBhbmQgR2FsbGVyeSB3aWxsIGFsbG93IHlvdSB0byB1cGxvYWQgYW55IG1lZGlhIGZpbGVzIHRoYXQgaXQgZmluZHMgb24gdGhhdCBwYWdlLiAgTm90ZSB0aGF0IGlmIHlvdSdyZSBlbnRlcmluZyBhIFVSTCB0byBhIGRpcmVjdG9yeSwgeW91IHNob3VsZCBlbmQgdGhlIFVSTCB3aXRoIGEgdHJhaWxpbmcgc2xhc2ggKGVnLCBodHRwOi8vZXhhbXBsZS5jb20vZGlyZWN0b3J5LykuICIpCmdldHRleHQoIlVSTCIpCmdldHRleHQoIllvdSBtdXN0IGVudGVyIGEgVVJMIHRvIGEgd2ViIHBhZ2UiKQpnZXR0ZXh0KCJUaGUgVVJMIGVudGVyZWQgbXVzdCBiZWdpbiB3aXRoIGh0dHA6Ly8iKQpnZXR0ZXh0KCJUaGUgd2ViIHBhZ2UgeW91IHNwZWNpZmllZCBpcyB1bmF2YWlsYWJsZSIpCmdldHRleHQoIk5vdGhpbmcgdG8gYWRkIGZvdW5kIGZyb20gdGhpcyBVUkwiKQpnZXR0ZXh0KCJOb3RoaW5nIGFkZGVkIHNpbmNlIG5vIGl0ZW1zIHdlcmUgc2VsZWN0ZWQiKQpnZXR0ZXh0KCJSZWNlbnQgVVJMcyIpCmdldHRleHQoIlVSTDogJXMiKQpnZXR0ZXh0KCJjaGFuZ2UiKQpuZ2V0dGV4dCgiJWQgdXJsIGZvdW5kIiwgIiVkIHVybHMgZm91bmQiKQpnZXR0ZXh0KCIoVW4pY2hlY2sgYWxsIikKZ2V0dGV4dCgiQWRkIFVSTHMiKQoKLyogdGVtcGxhdGVzL0l0ZW1BZGRTaXRlQWRtaW4udHBsICovCmdldHRleHQoIkFkZCBJdGVtIFNldHRpbmdzIikKZ2V0dGV4dCgiU2V0dGluZ3Mgc2F2ZWQgc3VjY2Vzc2Z1bGx5IikKZ2V0dGV4dCgiRW5hYmxlIikKZ2V0dGV4dCgiQWRkIEZyb20gV2ViIikKZ2V0dGV4dCgiQWRkIEZyb20gU2VydmVyIikKZ2V0dGV4dCgiU2VjdXJpdHkgV2FybmluZyIpCmdldHRleHQoIlwiQWRkIEZyb20gV2ViXCIgY2FuIGJlIGFidXNlZCB0byBhdHRhY2sgb3RoZXIgd2Vic2l0ZXMgaW4geW91ciBuYW1lLiAgRm9yIHRoZSBhdHRhY2tlZCBwYXJ0eSBpdCB3b3VsZCBzZWVtIGFzIGlmIHlvdSwgdGhlIGFkbWluaXN0cmF0b3Igb2YgdGhpcyBHYWxsZXJ5LCBkZWxpYmVyYXRlbHkgYXR0YWNrZWQgdGhlaXIgd2Vic2l0ZSBiZWNhdXNlIHlvdXIgR2FsbGVyeSBhY3RzIG9uIGJlaGFsZiBvZiB5b3VyIHVzZXJzLiAgVGhlcmVmb3JlIGl0IGlzIHJlY29tbWVuZGVkIHRvIGVuYWJsZSBcIkFkZCBGcm9tIFdlYlwiIG9ubHkgZm9yIHRydXN0ZWQgdXNlcnMuIikKZ2V0dGV4dCgiTG9jYWwgU2VydmVyIFVwbG9hZCBQYXRocyIpCmdldHRleHQoIlNwZWNpZnkgdGhlIGxlZ2FsIGRpcmVjdG9yaWVzIG9uIHRoZSBsb2NhbCBzZXJ2ZXIgd2hlcmUgYSB1c2VyIGNhbiBzdG9yZSBmaWxlcyBhbmQgdGhlbiB1cGxvYWQgdGhlbSBpbnRvIEdhbGxlcnkgdXNpbmcgdGhlIDxpPlVwbG9hZCBmcm9tIExvY2FsIFNlcnZlcjwvaT4gZmVhdHVyZS4gIFRoZSBwYXRocyB5b3UgZW50ZXIgaGVyZSBhbmQgYWxsIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdW5kZXIgdGhvc2UgcGF0aHMgd2lsbCBiZSBhdmFpbGFibGUgdG8gYW55IEdhbGxlcnkgdXNlciB3aG8gaGFzIHVwbG9hZCBwcml2aWxlZ2VzLCBzbyB5b3Ugc2hvdWxkIGxpbWl0IHRoaXMgdG8gZGlyZWN0b3JpZXMgdGhhdCB3b24ndCBjb250YWluIHNlbnNpdGl2ZSBkYXRhIChlZy4gL3RtcCBvciAvdXNyL2Z0cC9pbmNvbWluZykiKQpnZXR0ZXh0KCJQYXRoIikKZ2V0dGV4dCgiQWN0aW9uIikKZ2V0dGV4dCgicmVtb3ZlIikKZ2V0dGV4dCgiQWRkIikKZ2V0dGV4dCgiWW91IG11c3QgZW50ZXIgYSBkaXJlY3RvcnkgdG8gYWRkLiIpCmdldHRleHQoIm9wZW5fYmFzZWRpciBkb2N1bWVudGF0aW9uIikKZ2V0dGV4dCgiWW91ciB3ZWJzZXJ2ZXIgaXMgY29uZmlndXJlZCB0byBwcmV2ZW50IHlvdSBmcm9tIGFjY2Vzc2luZyB0aGF0IGRpcmVjdG9yeS4gIFBsZWFzZSByZWZlciB0byB0aGUgJXMgYW5kIGNvbnN1bHQgeW91ciB3ZWJzZXJ2ZXIgYWRtaW5pc3RyYXRvci4iKQpnZXR0ZXh0KCJUaGUgd2Vic2VydmVyIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbnMgdG8gcmVhZCB0aGF0IGRpcmVjdG9yeS4iKQpnZXR0ZXh0KCJUaGUgcGF0aCB5b3Ugc3BlY2lmaWVkIGlzIG5vdCBhIHZhbGlkIGRpcmVjdG9yeS4iKQpnZXR0ZXh0KCJTYXZlIikKZ2V0dGV4dCgiUmVzZXQiKQo=');
expand_a4483450cb($outputDir, 'templates/ItemAddFromServer.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTM0MiAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIC8vIDwhW0NEQVRBWwp7aWYgIWVtcHR5KCRmb3JtLmxvY2FsU2VydmVyRmlsZXMpfQogIHZhciBzeW1TdGF0ZSA9IGZhbHNlOwogIHsqIEdlbmVyYXRlIGluZGV4ZXMgb2YgaXRlbXMgdGhhdCB3ZSBrbm93LCB3aGljaCB3aWxsIGNvcnJlc3BvbmQgdG8gY2hlY2tib3ggaWRzLCBiZWxvdyAqfQogIHtzdHJpcH0KICB2YXIga25vd25UeXBlQ2hlY2tib3hJZHMgPSBuZXcgQXJyYXkoCiAge2Fzc2lnbiB2YXI9ImZpcnN0IiB2YWx1ZT0iMSJ9CiAge2ZvcmVhY2ggbmFtZT1maWxlSW5kZXggZnJvbT0kZm9ybS5sb2NhbFNlcnZlckZpbGVzIGl0ZW09ZmlsZX0KICAgIHtpZiAoICgkZmlsZS50eXBlID09ICdmaWxlJyB8fAoJICAgKCRmaWxlLnR5cGUgPT0gJ2RpcmVjdG9yeScgJiYgJGZpbGUuZmlsZU5hbWUgIT0gJy4uJyAmJiAkZmlsZS5maWxlTmFtZSAhPSAnQ1ZTJykKCSAgKSAmJiBlbXB0eSgkZmlsZS51bmtub3duKSl9CiAgICAgIHtpZiAhJGZpcnN0fSx7ZWxzZX17YXNzaWduIHZhcj0iZmlyc3QiIHZhbHVlPSIwIn17L2lmfQogICAgICAieyRzbWFydHkuZm9yZWFjaC5maWxlSW5kZXguaXRlcmF0aW9ufSIKICAgIHsvaWZ9CiAgey9mb3JlYWNofQogICk7CiAgey9zdHJpcH0KCiAge2xpdGVyYWx9CiAgZnVuY3Rpb24gdG9nZ2xlU2VsZWN0aW9ucygpIHsKICAgIGZvciAoaSA9IDA7IGkgPCBrbm93blR5cGVDaGVja2JveElkcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgY2IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2JfJyArIGtub3duVHlwZUNoZWNrYm94SWRzW2ldKTsKICAgICAgY2IuY2hlY2tlZCA9ICFjYi5jaGVja2VkOwogIHsvbGl0ZXJhbH0KICAgICAge2lmICRJdGVtQWRkRnJvbVNlcnZlci5zaG93U3ltbGlua310b2dnbGVTeW1saW5rRW5hYmxlZChrbm93blR5cGVDaGVja2JveElkc1tpXSk7ey9pZn0KICB7bGl0ZXJhbH0KICAgIH0KICB9CgogIGZ1bmN0aW9uIHRvZ2dsZVN5bWxpbmtFbmFibGVkKGEpIHsKICAgIHZhciBjYlN5bWxpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ltbGlua18nICsgYSApOwogICAgdmFyIGNiU2VsZWN0ZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2JfJyArIGEgKTsKICAgIGlmIChjYlN5bWxpbmspIHsKICAgICAgY2JTeW1saW5rLmRpc2FibGVkID0gIWNiU2VsZWN0ZWQuY2hlY2tlZDsKICAgIH0KICB9CgogIGZ1bmN0aW9uIGludmVydFN5bWxpbmtTZWxlY3Rpb24oKSB7CiAgICBzeW1TdGF0ZSA9ICFzeW1TdGF0ZTsKICAgIGZvciAoaSA9IDA7IGkgPCBrbm93blR5cGVDaGVja2JveElkcy5sZW5ndGg7IGkrKykgewogICAgICB2YXIgY2IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY2JfJyArIGtub3duVHlwZUNoZWNrYm94SWRzW2ldKTsKICAgICAgdmFyIGNiU3ltbGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzeW1saW5rXycgKyBrbm93blR5cGVDaGVja2JveElkc1tpXSk7CiAgICAgIGlmIChjYi5jaGVja2VkID09IHRydWUpIHsKCWlmIChzeW1TdGF0ZSA9PSBmYWxzZSkgewoJICBjYlN5bWxpbmsuY2hlY2tlZCA9IGZhbHNlOwoJfSBlbHNlIHsKCSAgY2JTeW1saW5rLmNoZWNrZWQgPSB0cnVlOwoJfQogICAgICB9CiAgICB9CiAgfQogIHsvbGl0ZXJhbH0Key9pZn0KCiAgZnVuY3Rpb24gc2VsZWN0UGF0aChwYXRoKSB7bGRlbGltfQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpdGVtQWRtaW5Gb3JtJykuZWxlbWVudHNbJ3tnLT5mb3JtVmFyCiAgICB2YXI9ImZvcm1bbG9jYWxTZXJ2ZXJQYXRoXSJ9J10udmFsdWUgPSBwYXRoOwogIHtyZGVsaW19CiAgLy8gXV0+Cjwvc2NyaXB0PgoKPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAge2ctPnRleHQgdGV4dD0iVHJhbnNmZXIgZmlsZXMgdGhhdCBhcmUgYWxyZWFkeSBvbiB5b3VyIHNlcnZlciBpbnRvIHlvdXIgR2FsbGVyeS4gIFRoZSBmaWxlcyBtdXN0IGFscmVhZHkgaGF2ZSBiZWVuIHVwbG9hZGVkIHRvIHlvdXIgc2VydmVyIHNvbWUgb3RoZXIgd2F5IChsaWtlIEZUUCkgYW5kIG11c3QgYmUgcGxhY2VkIGluIGEgZGlyZWN0b3J5IHdoZXJlIHRoZXkgYXJlIGFjY2Vzc2libHkgYnkgYW55IGVsZW1lbnQgb24gdGhlIHNlcnZlci4gIElmIHlvdSdyZSBvbiBVbml4IHRoaXMgbWVhbnMgdGhhdCB0aGUgZmlsZXMgYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGZpbGVzIGFyZSBpbiBzaG91bGQgaGF2ZSBtb2RlcyBvZiBhdCBsZWFzdCA3NTUuIn0KICA8L3A+CgogIHtpZiBlbXB0eSgkSXRlbUFkZEZyb21TZXJ2ZXIubG9jYWxTZXJ2ZXJEaXJMaXN0KX0KICA8ZGl2IGNsYXNzPSJnaVdhcm5pbmciPgogICAge2ctPnRleHQgdGV4dD0iRm9yIHNlY3VyaXR5IHB1cnBvc2VzLCB5b3UgY2FuJ3QgdXNlIHRoaXMgZmVhdHVyZSB1bnRpbCB0aGUgR2FsbGVyeSBTaXRlIEFkbWluaXN0cmF0b3IgY29uZmlndXJlcyBhIHNldCBvZiBsZWdhbCB1cGxvYWQgZGlyZWN0b3JpZXMuIn0KICAgIHtpZiAkSXRlbUFkZC5pc0FkbWlufQogICAgICA8YSBocmVmPSJ7Zy0+dXJsIGFyZzE9InZpZXc9Y29yZS5TaXRlQWRtaW4iIGFyZzI9InN1YlZpZXc9aXRlbWFkZC5JdGVtQWRkU2l0ZUFkbWluIn0iPgoJe2ctPnRleHQgdGV4dD0ic2l0ZSBhZG1pbiJ9CiAgICAgIDwvYT4KICAgIHsvaWZ9CiAgPC9kaXY+CiAge2Vsc2V9CgogIHtpZiBlbXB0eSgkZm9ybS5sb2NhbFNlcnZlckZpbGVzKX0KICAgIDxoND4ge2ctPnRleHQgdGV4dD0iU2VydmVyIFBhdGgifSA8L2g0PgoKICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI4MCIKICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bbG9jYWxTZXJ2ZXJQYXRoXSJ9IiB2YWx1ZT0ieyRmb3JtLmxvY2FsU2VydmVyUGF0aH0iLz4KCiAgICB7aWYgaXNzZXQoJGZvcm0uZXJyb3IucGF0aENvbXBvbmVudC5taXNzaW5nKX0KICAgIDxkaXYgY2xhc3M9ImdpRXJyb3IiPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJZb3UgbXVzdCBlbnRlciBhIGRpcmVjdG9yeS4ifQogICAgPC9kaXY+CiAgICB7L2lmfQogICAge2lmIGlzc2V0KCRmb3JtLmVycm9yLnBhdGhDb21wb25lbnQuaW52YWxpZCl9CiAgICA8ZGl2IGNsYXNzPSJnaUVycm9yIj4KICAgICAge2ctPnRleHQgdGV4dD0iVGhlIGRpcmVjdG9yeSB5b3UgZW50ZXJlZCBpcyBpbnZhbGlkLiAgTWFrZSBzdXJlIHRoYXQgdGhlIGRpcmVjdG9yeSBpcyByZWFkYWJsZSBieSBhbGwgdXNlcnMuIn0KICAgIDwvZGl2PgogICAgey9pZn0KICAgIHtpZiBpc3NldCgkZm9ybS5lcnJvci5wYXRoQ29tcG9uZW50LmlsbGVnYWwpfQogICAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+CiAgICAgIHtnLT50ZXh0IHRleHQ9IlRoZSBkaXJlY3RvcnkgeW91IGVudGVyZWQgaXMgaWxsZWdhbC4gIEl0IG11c3QgYmUgYSBzdWIgZGlyZWN0b3J5IG9mIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGJlbG93LiJ9CiAgICA8L2Rpdj4KICAgIHsvaWZ9CiAgICB7aWYgaXNzZXQoJGZvcm0uZXJyb3IucGF0aENvbXBvbmVudC5jb2xsaXNpb24pfQogICAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+CiAgICAgIHtnLT50ZXh0IHRleHQ9IkFuIGl0ZW0gd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLiJ9CiAgICA8L2Rpdj4KICAgIHsvaWZ9CgogICAgPGJyLz4KICAgIHtnLT50ZXh0IHRleHQ9IkxlZ2FsIERpcmVjdG9yaWVzIn0KCiAgICB7aWYgJEl0ZW1BZGQuaXNBZG1pbn0KICAgIDxhIGhyZWY9IntnLT51cmwgYXJnMT0idmlldz1jb3JlLlNpdGVBZG1pbiIgYXJnMj0ic3ViVmlldz1pdGVtYWRkLkl0ZW1BZGRTaXRlQWRtaW4iIGFyZzM9InJldHVybj10cnVlIn0iPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJtb2RpZnkifQogICAgPC9hPgogICAgey9pZn0KCiAgICA8dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogbm9uZTsgbWFyZ2luLWJvdHRvbTogMWVtIj4KICAgICAge2ZvcmVhY2ggZnJvbT0kSXRlbUFkZEZyb21TZXJ2ZXIubG9jYWxTZXJ2ZXJEaXJMaXN0IGl0ZW09ZGlyfQoJe2NhcHR1cmUgbmFtZT0iZXNjYXBlZERpciJ9eyRkaXJ8ZXNjYXBlfHJlcGxhY2U6IlxcIjoiXFxcXCJ9ey9jYXB0dXJlfQoJPGxpPgoJICA8YSBocmVmPSJqYXZhc2NyaXB0OnNlbGVjdFBhdGgoJ3skc21hcnR5LmNhcHR1cmUuZXNjYXBlZERpcn0nKSI+IHskZGlyfGVzY2FwZX0gPC9hPgoJPC9saT4KICAgICAgey9mb3JlYWNofQogICAgPC91bD4KCiAgICB7aWYgIWVtcHR5KCRJdGVtQWRkRnJvbVNlcnZlci5yZWNlbnRQYXRocyl9CiAgICAgIHtnLT50ZXh0IHRleHQ9IlJlY2VudCBEaXJlY3RvcmllcyJ9CgogICAgICA8dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogbm9uZSI+Cgl7Zm9yZWFjaCBmcm9tPSRJdGVtQWRkRnJvbVNlcnZlci5yZWNlbnRQYXRocyBpdGVtPWRpcn0KCSAge2NhcHR1cmUgbmFtZT0iZXNjYXBlZERpciJ9eyRkaXJ8ZXNjYXBlfHJlcGxhY2U6IlxcIjoiXFxcXCJ9ey9jYXB0dXJlfQoJICA8bGk+CgkgIDxhIGhyZWY9ImphdmFzY3JpcHQ6c2VsZWN0UGF0aCgneyRzbWFydHkuY2FwdHVyZS5lc2NhcGVkRGlyfScpIj4geyRkaXJ8ZXNjYXBlfSA8L2E+CgkgIDwvbGk+Cgl7L2ZvcmVhY2h9CiAgICAgIDwvdWw+CiAgICB7L2lmfQoKICAgIHtjYXB0dXJlIG5hbWU9InN1Ym1pdExpbmtzIn0KICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImlucHV0VHlwZVN1Ym1pdCIKICAgICAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVthY3Rpb25dW2ZpbmRGaWxlc0Zyb21Mb2NhbFNlcnZlcl0ifSIKICAgICAgIHZhbHVlPSJ7Zy0+dGV4dCB0ZXh0PSJGaW5kIEZpbGVzIn0iLz4KICAgIHsvY2FwdHVyZX0KICB7ZWxzZX0geyoge2lmIGVtcHR5KCRmb3JtLmxvY2FsU2VydmVyRmlsZXMpfSAqfQoKICAgIHtjYXB0dXJlIG5hbWU9InBhdGgifXtzdHJpcH0KICAgICAge2ZvcmVhY2ggbmFtZT0icGF0aEVsZW1lbnRzIiBmcm9tPSRJdGVtQWRkRnJvbVNlcnZlci5wYXRoRWxlbWVudHMga2V5PWlkeCBpdGVtPWVsZW1lbnR9Cgl7aWYgJGlkeD4xfXskSXRlbUFkZEZyb21TZXJ2ZXIucGF0aFNlcGFyYXRvcn17L2lmfQoJe2lmICgkZWxlbWVudC5sZWdhbCAmJiAhJHNtYXJ0eS5mb3JlYWNoLnBhdGhFbGVtZW50cy5sYXN0KX0KCSAgPGEgaHJlZj0ie2ctPnVybCBhcmcxPSJjb250cm9sbGVyPWNvcmUuSXRlbUFkZCIgYXJnMj0iYWRkUGx1Z2luPUl0ZW1BZGRGcm9tU2VydmVyIgoJICAgYXJnMz0iZm9ybVtsb2NhbFNlcnZlclBhdGhdPWAkZWxlbWVudC5wYXRoYCIgYXJnND0iaXRlbUlkPWAkSXRlbUFkbWluLml0ZW0uaWRgIgoJICAgYXJnNT0iZm9ybVthY3Rpb25dW2ZpbmRGaWxlc0Zyb21Mb2NhbFNlcnZlcl09MSIKCSAgIGFyZzY9ImZvcm1bZm9ybU5hbWVdPUl0ZW1BZGRGcm9tU2VydmVyIn0iPnskZWxlbWVudC5uYW1lfGVzY2FwZX08L2E+Cgl7ZWxzZX0KCSAgeyRlbGVtZW50Lm5hbWV8ZXNjYXBlfQoJey9pZn0KICAgICAgey9mb3JlYWNofQogICAgey9zdHJpcH17L2NhcHR1cmV9CiAgICA8c3Ryb25nPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJEaXJlY3Rvcnk6ICVzIiBhcmcxPSRzbWFydHkuY2FwdHVyZS5wYXRofQogICAgPC9zdHJvbmc+CgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIKICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bbG9jYWxTZXJ2ZXJQYXRoXSJ9IiB2YWx1ZT0ieyRmb3JtLmxvY2FsU2VydmVyUGF0aHxlc2NhcGV9Ii8+CiAgICA8YnIvPgoKICAgIDx0YWJsZSBjbGFzcz0iZ2JEYXRhVGFibGUiPjx0cj4KICAgICAgPHRoPiA8L3RoPgogICAgICA8dGg+IHtnLT50ZXh0IHRleHQ9IkZpbGUgbmFtZSJ9IDwvdGg+CiAgICAgIDx0aD4ge2ctPnRleHQgdGV4dD0iVHlwZSJ9IDwvdGg+CiAgICAgIDx0aD4ge2ctPnRleHQgdGV4dD0iU2l6ZSJ9IDwvdGg+CiAgICAgIHtpZiAkSXRlbUFkZEZyb21TZXJ2ZXIuc2hvd1N5bWxpbmt9Cgk8dGg+IHtnLT50ZXh0IHRleHQ9IlVzZSBTeW1saW5rIn0gPC90aD4KICAgICAgey9pZn0KICAgIDwvdHI+CiAgICB7Zm9yZWFjaCBuYW1lPWZpbGVJbmRleCBmcm9tPSRmb3JtLmxvY2FsU2VydmVyRmlsZXMgaXRlbT1maWxlfQogICAgICB7YXNzaWduIHZhcj1rZXkgdmFsdWU9JGZpbGUuZmlsZUtleXxlc2NhcGV9CiAgICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0iZ2JFdmVuLGdiT2RkIn0iPgogICAgICB7aWYgKCRmaWxlLnR5cGUgPT0gJ2ZpbGUnKX0KCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyIj4KCSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2JfeyRzbWFydHkuZm9yZWFjaC5maWxlSW5kZXguaXRlcmF0aW9ufSIKCSAgIHtpZiAkSXRlbUFkZEZyb21TZXJ2ZXIuc2hvd1N5bWxpbmt9CgkgICAgIG9uY2xpY2s9InRvZ2dsZVN5bWxpbmtFbmFibGVkKCd7JHNtYXJ0eS5mb3JlYWNoLmZpbGVJbmRleC5pdGVyYXRpb259JykiCgkgICB7L2lmfQoJICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2xvY2FsU2VydmVyRmlsZXNdWyRrZXldW3NlbGVjdGVkXSJ9Ii8+Cgk8L3RkPjx0ZD4KCSAgPGxhYmVsIGZvcj0iY2JfeyRzbWFydHkuZm9yZWFjaC5maWxlSW5kZXguaXRlcmF0aW9ufSI+CgkgICAgeyRmaWxlLmZpbGVOYW1lfGVzY2FwZX0KCSAgPC9sYWJlbD4KCTwvdGQ+PHRkPgoJICB7JGZpbGUuaXRlbVR5cGV9Cgk8L3RkPjx0ZD4KCSAge2ctPnRleHQgb25lPSIlZCBieXRlIiBtYW55PSIlZCBieXRlcyIgY291bnQ9JGZpbGUuc3RhdC5zaXplIGFyZzE9JGZpbGUuc3RhdC5zaXplfQoJPC90ZD4KCXtpZiAkSXRlbUFkZEZyb21TZXJ2ZXIuc2hvd1N5bWxpbmt9CgkgIDx0ZCBhbGlnbj0iY2VudGVyIj4KCSAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGRpc2FibGVkPSJ0cnVlIgoJICAgICBpZD0ic3ltbGlua197JHNtYXJ0eS5mb3JlYWNoLmZpbGVJbmRleC5pdGVyYXRpb259IgoJICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bbG9jYWxTZXJ2ZXJGaWxlc11bJGtleV1bdXNlU3ltbGlua10ifSIvPgoJICA8L3RkPgoJey9pZn0KICAgICAge2Vsc2V9Cgk8dGQ+CgkgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiX3skc21hcnR5LmZvcmVhY2guZmlsZUluZGV4Lml0ZXJhdGlvbn0iCgkgICB7aWYgJEl0ZW1BZGRGcm9tU2VydmVyLnNob3dTeW1saW5rfQoJICAgICBvbmNsaWNrPSJ0b2dnbGVTeW1saW5rRW5hYmxlZCgneyRzbWFydHkuZm9yZWFjaC5maWxlSW5kZXguaXRlcmF0aW9ufScpIgoJICAgey9pZn0KCSAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtsb2NhbFNlcnZlckRpcmVjdG9yaWVzXVska2V5XVtzZWxlY3RlZF0ifSIKCSAgIHtpZiAhJEl0ZW1BZGRGcm9tU2VydmVyLmNhbkFkZEFsYnVtfQoJICAgICBkaXNhYmxlZD0idHJ1ZSIKCSAgIHsvaWZ9CgkgICAvPgoJPC90ZD48dGQ+CgkgIHtpZiAkZmlsZS5sZWdhbH17c3RyaXB9CgkgICAgPGEgaHJlZj0ie2ctPnVybCBhcmcxPSJjb250cm9sbGVyPWNvcmUuSXRlbUFkZCIgYXJnMj0iYWRkUGx1Z2luPUl0ZW1BZGRGcm9tU2VydmVyIgoJICAgICBhcmczPSJmb3JtW2xvY2FsU2VydmVyUGF0aF09YCRmaWxlLmZpbGVQYXRoYCIgYXJnND0iaXRlbUlkPWAkSXRlbUFkbWluLml0ZW0uaWRgIgoJICAgICBhcmc1PSJmb3JtW2FjdGlvbl1bZmluZEZpbGVzRnJvbUxvY2FsU2VydmVyXT0xIgoJICAgICBhcmc2PSJmb3JtW2Zvcm1OYW1lXT1JdGVtQWRkRnJvbVNlcnZlciJ9Ij4KCSAgICAgIHtpZiAkZmlsZS5maWxlTmFtZSA9PSAiLi4ifQoJCSZsYXF1bzsge2ctPnRleHQgdGV4dD0iUGFyZW50IERpcmVjdG9yeSJ9ICZyYXF1bzsKCSAgICAgIHtlbHNlfQoJCXskZmlsZS5maWxlTmFtZXxlc2NhcGV9CgkgICAgICB7L2lmfQoJICAgIDwvYT4KCSAgey9zdHJpcH17ZWxzZX0KCSAgICA8aT57JGZpbGUuZmlsZU5hbWV8ZXNjYXBlfTwvaT4KCSAgey9pZn0KCTwvdGQ+PHRkPgoJICB7Zy0+dGV4dCB0ZXh0PSJEaXJlY3RvcnkifQoJPC90ZD48dGQ+CgkgICZuYnNwOwoJPC90ZD4KCXtpZiAkSXRlbUFkZEZyb21TZXJ2ZXIuc2hvd1N5bWxpbmt9Cgk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlciI+CgkgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgZGlzYWJsZWQ9InRydWUiCgkgICBpZD0ic3ltbGlua197JHNtYXJ0eS5mb3JlYWNoLmZpbGVJbmRleC5pdGVyYXRpb259IgoJICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2xvY2FsU2VydmVyRGlyZWN0b3JpZXNdWyRrZXldW3VzZVN5bWxpbmtdIn0iLz4KCTwvdGQ+Cgl7L2lmfQogICAgICB7L2lmfQogICAgICA8L3RyPgogICAgey9mb3JlYWNofQogICAgPHRyPgogICAgICA8dGg+Cgk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYlNlbGVjdGlvblRvZ2dsZSIgb25jbGljaz0idG9nZ2xlU2VsZWN0aW9ucygpIi8+CiAgICAgIDwvdGg+CiAgICAgIDx0aCBjb2xzcGFuPSJ7aWYgJEl0ZW1BZGRGcm9tU2VydmVyLnNob3dTeW1saW5rfTJ7ZWxzZX0zey9pZn0iPgoJPGxhYmVsIGZvcj0iY2JTZWxlY3Rpb25Ub2dnbGUiPgoJICB7Zy0+dGV4dCB0ZXh0PSIoVW4pY2hlY2sgYWxsIGtub3duIHR5cGVzIn0KCTwvbGFiZWw+CiAgICAgIDwvdGg+CiAgICAgIHtpZiAkSXRlbUFkZEZyb21TZXJ2ZXIuc2hvd1N5bWxpbmt9CiAgICAgIDx0aD4KCTxsYWJlbCBmb3I9ImNiU3ltbGlua1RvZ2dsZSI+CgkgIHtnLT50ZXh0IHRleHQ9IihVbiljaGVjayBzeW1saW5rcyJ9PGJyLz57Zy0+dGV4dCB0ZXh0PSJmb3Igc2VsZWN0ZWQgaXRlbXMifQoJPC9sYWJlbD4KICAgICAgPC90aD4KICAgICAgPHRoIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXIiPgoJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2JTeW1saW5rVG9nZ2xlIiBvbmNsaWNrPSJpbnZlcnRTeW1saW5rU2VsZWN0aW9uKCkiLz4KICAgICAgPC90aD4KICAgICAgey9pZn0KICAgIDwvdHI+PC90YWJsZT4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgICA8cCBjbGFzcz0iZ2lEZXNjcmlwdGlvbiI+CiAgICAgIHtnLT50ZXh0IHRleHQ9IkNvcHkgYmFzZSBmaWxlbmFtZXMgdG86In0KICAgICAgPGJyLz4KICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2JUaXRsZSJ7aWYgJGZvcm0uc2V0LnRpdGxlfSBjaGVja2VkPSJjaGVja2VkInsvaWZ9CiAgICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bc2V0XVt0aXRsZV0ifSIvPgogICAgICA8bGFiZWwgZm9yPSJjYlRpdGxlIj4ge2ctPnRleHQgdGV4dD0iVGl0bGUifSA8L2xhYmVsPgogICAgICAmbmJzcDsKCiAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiU3VtbWFyeSJ7aWYgJGZvcm0uc2V0LnN1bW1hcnl9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0KICAgICAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtzZXRdW3N1bW1hcnldIn0iLz4KICAgICAgPGxhYmVsIGZvcj0iY2JTdW1tYXJ5Ij4ge2ctPnRleHQgdGV4dD0iU3VtbWFyeSJ9IDwvbGFiZWw+CiAgICAgICZuYnNwOwoKICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2JEZXNjcmlwdGlvbiJ7aWYgJGZvcm0uc2V0LmRlc2NyaXB0aW9ufSBjaGVja2VkPSJjaGVja2VkInsvaWZ9CiAgICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bc2V0XVtkZXNjcmlwdGlvbl0ifSIvPgogICAgICA8bGFiZWwgZm9yPSJjYkRlc2NyaXB0aW9uIj4ge2ctPnRleHQgdGV4dD0iRGVzY3JpcHRpb24ifSA8L2xhYmVsPgogICAgPC9wPgoKICAgIHtjYXB0dXJlIG5hbWU9InN1Ym1pdExpbmtzIn0KICAgICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImlucHV0VHlwZVN1Ym1pdCIKICAgICAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVthY3Rpb25dW2FkZEZyb21Mb2NhbFNlcnZlcl0ifSIKICAgICAgIHZhbHVlPSJ7Zy0+dGV4dCB0ZXh0PSJBZGQgRmlsZXMifSIvPgogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iaW5wdXRUeXBlU3VibWl0IgogICAgICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2FjdGlvbl1bc3RhcnRPdmVyXSJ9IiB2YWx1ZT0ie2ctPnRleHQgdGV4dD0iU3RhcnQgT3ZlciJ9Ii8+CiAgICB7L2NhcHR1cmV9CiAgICB7YXNzaWduIHZhcj0ic2hvd09wdGlvbnMiIHZhbHVlPSJ0cnVlIn0KICB7L2lmfSB7KiB7aWYgIWVtcHR5KCRmb3JtLmxvY2FsU2VydmVyRmlsZXMpfSAqfQogIHsvaWZ9IHsqIHtpZiBlbXB0eSgkSXRlbUFkZEZyb21TZXJ2ZXIubG9jYWxTZXJ2ZXJEaXJMaXN0KX0gKn0KPC9kaXY+Cgp7aWYgaXNzZXQoJHNob3dPcHRpb25zKX0KICB7KiBJbmNsdWRlIG91ciBleHRyYSBJdGVtQWRkT3B0aW9ucyAqfQogIHtmb3JlYWNoIGZyb209JEl0ZW1BZGQub3B0aW9ucyBpdGVtPW9wdGlvbn0KICAgIHtpbmNsdWRlIGZpbGU9ImdhbGxlcnk6YCRvcHRpb24uZmlsZWAiIGwxMERvbWFpbj0kb3B0aW9uLmwxMERvbWFpbn0KICB7L2ZvcmVhY2h9CnsvaWZ9Cgp7aWYgIWVtcHR5KCRzbWFydHkuY2FwdHVyZS5zdWJtaXRMaW5rcyl9CjxkaXYgY2xhc3M9ImdiQmxvY2sgZ2NCYWNrZ3JvdW5kMSI+CiAgeyRzbWFydHkuY2FwdHVyZS5zdWJtaXRMaW5rc30KPC9kaXY+CnsvaWZ9Cg==');
expand_a4483450cb($outputDir, 'templates/ItemAddFromWeb.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTM0MiAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogIC8vIDwhW0NEQVRBWwp7aWYgIWVtcHR5KCRmb3JtLndlYlBhZ2VVcmxzKX0KICBmdW5jdGlvbiB0b2dnbGVTZWxlY3Rpb25zKCkge2xkZWxpbX0KICAgIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaXRlbUFkbWluRm9ybScpOwogICAgc3RhdGUgPSBmb3JtLmVsZW1lbnRzWydzZWxlY3Rpb25Ub2dnbGUnXS5jaGVja2VkOwogICAgZm9yIChpID0gMTsgaSA8PSB7JEl0ZW1BZGRGcm9tV2ViLndlYlBhZ2VVcmxDb3VudH07IGkrKykge2xkZWxpbX0KICAgICAgICBjYiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYl8nICsgaSk7CiAgICAgICAgY2IuY2hlY2tlZCA9IHN0YXRlOwogICAge3JkZWxpbX0KICB7cmRlbGltfQp7L2lmfQoKICBmdW5jdGlvbiBzZWxlY3RVcmwodXJsKSB7bGRlbGltfQogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2l0ZW1BZG1pbkZvcm0nKS5lbGVtZW50c1sne2ctPmZvcm1WYXIKICAgICAgdmFyPSJmb3JtW3dlYlBhZ2VdIn0nXS52YWx1ZSA9IHVybDsKICB7cmRlbGltfQogIC8vIF1dPgo8L3NjcmlwdD4KCjxkaXYgY2xhc3M9ImdiQmxvY2siPgogIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgIHtnLT50ZXh0IHRleHQ9IkltcG9ydCBmaWxlcyBpbnRvIEdhbGxlcnkgZnJvbSBhbm90aGVyIHdlYnNpdGUuICBFbnRlciBhIFVSTCBiZWxvdyB0byBhIHdlYiBwYWdlIGFueXdoZXJlIG9uIHRoZSBuZXQgYW5kIEdhbGxlcnkgd2lsbCBhbGxvdyB5b3UgdG8gdXBsb2FkIGFueSBtZWRpYSBmaWxlcyB0aGF0IGl0IGZpbmRzIG9uIHRoYXQgcGFnZS4gIE5vdGUgdGhhdCBpZiB5b3UncmUgZW50ZXJpbmcgYSBVUkwgdG8gYSBkaXJlY3RvcnksIHlvdSBzaG91bGQgZW5kIHRoZSBVUkwgd2l0aCBhIHRyYWlsaW5nIHNsYXNoIChlZywgaHR0cDovL2V4YW1wbGUuY29tL2RpcmVjdG9yeS8pLiAifQogIDwvcD4KCiAge2lmIGVtcHR5KCRmb3JtLndlYlBhZ2VVcmxzKX0KICAgIDxoND4ge2ctPnRleHQgdGV4dD0iVVJMIn0gPC9oND4KCiAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iODAiCiAgICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW3dlYlBhZ2VdIn0iIHZhbHVlPSJ7JGZvcm0ud2ViUGFnZX0iLz4KCiAgICB7aWYgaXNzZXQoJGZvcm0uZXJyb3Iud2ViUGFnZS5taXNzaW5nKX0KICAgIDxkaXYgY2xhc3M9ImdpRXJyb3IiPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJZb3UgbXVzdCBlbnRlciBhIFVSTCB0byBhIHdlYiBwYWdlIn0KICAgIDwvZGl2PgogICAgey9pZn0KICAgIHtpZiBpc3NldCgkZm9ybS5lcnJvci53ZWJQYWdlLmludmFsaWQpfQogICAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+CiAgICAgIHtnLT50ZXh0IHRleHQ9IlRoZSBVUkwgZW50ZXJlZCBtdXN0IGJlZ2luIHdpdGggaHR0cDovLyJ9CiAgICA8L2Rpdj4KICAgIHsvaWZ9CiAgICB7aWYgaXNzZXQoJGZvcm0uZXJyb3Iud2ViUGFnZS51bmF2YWlsYWJsZSl9CiAgICA8ZGl2IGNsYXNzPSJnaUVycm9yIj4KICAgICAge2ctPnRleHQgdGV4dD0iVGhlIHdlYiBwYWdlIHlvdSBzcGVjaWZpZWQgaXMgdW5hdmFpbGFibGUifQogICAgPC9kaXY+CiAgICB7L2lmfQogICAge2lmIGlzc2V0KCRmb3JtLmVycm9yLndlYlBhZ2Uubm9VcmxzRm91bmQpfQogICAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+CiAgICAgIHtnLT50ZXh0IHRleHQ9Ik5vdGhpbmcgdG8gYWRkIGZvdW5kIGZyb20gdGhpcyBVUkwifQogICAgPC9kaXY+CiAgICB7L2lmfQogICAge2lmIGlzc2V0KCRmb3JtLmVycm9yLndlYlBhZ2Uubm90aGluZ1NlbGVjdGVkKX0KICAgIDxkaXYgY2xhc3M9ImdpRXJyb3IiPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJOb3RoaW5nIGFkZGVkIHNpbmNlIG5vIGl0ZW1zIHdlcmUgc2VsZWN0ZWQifQogICAgPC9kaXY+CiAgICB7L2lmfQoKICAgIHtpZiAhZW1wdHkoJEl0ZW1BZGRGcm9tV2ViLnJlY2VudFVybHMpfQogICAgICA8aDQ+IHtnLT50ZXh0IHRleHQ9IlJlY2VudCBVUkxzIn0gPC9oND4KICAgICAgPHA+CiAgICAgIHtmb3JlYWNoIGZyb209JEl0ZW1BZGRGcm9tV2ViLnJlY2VudFVybHMgaXRlbT11cmx9Cgk8YSBocmVmPSJqYXZhc2NyaXB0OnNlbGVjdFVybCgneyR1cmx9JykiPiB7JHVybH0gPC9hPgoJPGJyLz4KICAgICAgey9mb3JlYWNofQogICAgICA8L3A+CiAgICB7L2lmfQoKICAgIHtjYXB0dXJlIG5hbWU9InN1Ym1pdEJ1dHRvbnMifQogICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0iaW5wdXRUeXBlU3VibWl0IgogICAgICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2FjdGlvbl1bZmluZEZpbGVzRnJvbVdlYlBhZ2VdIn0iCiAgICAgICB2YWx1ZT0ie2ctPnRleHQgdGV4dD0iRmluZCBGaWxlcyJ9Ii8+CiAgICB7L2NhcHR1cmV9CiAge2Vsc2V9IHsqIHtpZiBlbXB0eSgkZm9ybS53ZWJQYWdlVXJscyl9ICp9CiAgICA8c3Ryb25nPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJVUkw6ICVzIiBhcmcxPSRmb3JtLndlYlBhZ2V9CiAgICAgICZuYnNwOwogICAgICA8YSBocmVmPSJ7Zy0+dXJsIGFyZzE9InZpZXc9Y29yZS5JdGVtQWRtaW4iIGFyZzI9InN1YlZpZXc9Y29yZS5JdGVtQWRkIgoJIGFyZzM9Iml0ZW1JZD1gJEl0ZW1BZG1pbi5pdGVtLmlkYCIKCSBhcmc0PSJmb3JtW3dlYlBhZ2VdPSJ8Y2F0OiRmb3JtLndlYlBhZ2V8cmVwbGFjZToiJmFtcDsiOiImIgoJIGFyZzU9ImZvcm1bZm9ybU5hbWVdPUl0ZW1BZGRGcm9tV2ViIiBhcmc2PSJhZGRQbHVnaW49SXRlbUFkZEZyb21XZWIifSI+Cgl7Zy0+dGV4dCB0ZXh0PSJjaGFuZ2UifQogICAgICA8L2E+CiAgICA8L3N0cm9uZz4KCiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bd2ViUGFnZV0ifSIgdmFsdWU9InskZm9ybS53ZWJQYWdlfSIvPgogICAgPGJyLz4KCiAgICB7Zy0+dGV4dCBvbmU9IiVkIHVybCBmb3VuZCIgbWFueT0iJWQgdXJscyBmb3VuZCIKCSAgICAgY291bnQ9JEl0ZW1BZGRGcm9tV2ViLndlYlBhZ2VVcmxDb3VudCBhcmcxPSRJdGVtQWRkRnJvbVdlYi53ZWJQYWdlVXJsQ291bnR9CgogICAgPHRhYmxlIGNsYXNzPSJnYkRhdGFUYWJsZSIgc3R5bGU9Im1hcmdpbi10b3A6IDAuNWVtIj48dHI+CiAgICAgIDx0aD4gPC90aD4KICAgICAgPHRoPiB7Zy0+dGV4dCB0ZXh0PSJVUkwifSA8L3RoPgogICAgICA8dGg+IHtnLT50ZXh0IHRleHQ9IlR5cGUifSA8L3RoPgogICAgPC90cj4KICAgIHtmb3JlYWNoIGZyb209JGZvcm0ud2ViUGFnZVVybHMgaXRlbT11cmx9CiAgICA8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9ImdiRXZlbixnYk9kZCJ9Ij4KICAgICAgPHRkPgoJe2NvdW50ZXIgYXNzaWduPSJpZENvdW50In0KCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNiX3skaWRDb3VudH0iCgkgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW3dlYlBhZ2VVcmxzXVtgJHVybC51cmxgXSJ9Ii8+CiAgICAgIDwvdGQ+PHRkPgoJPGxhYmVsIGZvcj0iY2JfeyRpZENvdW50fSI+CgkgIHskdXJsLnVybH0KCTwvbGFiZWw+CiAgICAgIDwvdGQ+PHRkPgoJeyR1cmwuaXRlbVR5cGV9CiAgICAgIDwvdGQ+CiAgICA8L3RyPgogICAgey9mb3JlYWNofQogICAgPHRyPgogICAgICA8dGg+Cgk8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjaGVja0FsbCIgbmFtZT0ic2VsZWN0aW9uVG9nZ2xlIiBvbmNsaWNrPSJ0b2dnbGVTZWxlY3Rpb25zKCkiLz4KICAgICAgPC90aD4KICAgICAgPHRoIGNvbHNwYW49IjIiPgoJPGxhYmVsIGZvcj0iY2hlY2tBbGwiPgoJICB7Zy0+dGV4dCB0ZXh0PSIoVW4pY2hlY2sgYWxsIn0KCTwvbGFiZWw+CiAgICAgIDwvdGg+CiAgICA8L3RyPjwvdGFibGU+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImdiQmxvY2siPgogICAgPHAgY2xhc3M9ImdpRGVzY3JpcHRpb24iPgogICAgICB7Zy0+dGV4dCB0ZXh0PSJDb3B5IGJhc2UgZmlsZW5hbWVzIHRvOiJ9CiAgICAgIDxici8+CgogICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYlRpdGxlIntpZiAkZm9ybS5zZXQudGl0bGV9IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0KICAgICAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtzZXRdW3RpdGxlXSJ9Ii8+CiAgICAgIDxsYWJlbCBmb3I9ImNiVGl0bGUiPiB7Zy0+dGV4dCB0ZXh0PSJUaXRsZSJ9IDwvbGFiZWw+CiAgICAgICZuYnNwOwoKICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iY2JTdW1tYXJ5IntpZiAkZm9ybS5zZXQuc3VtbWFyeX0gY2hlY2tlZD0iY2hlY2tlZCJ7L2lmfQogICAgICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW3NldF1bc3VtbWFyeV0ifSIvPgogICAgICA8bGFiZWwgZm9yPSJjYlN1bW1hcnkiPiB7Zy0+dGV4dCB0ZXh0PSJTdW1tYXJ5In0gPC9sYWJlbD4KICAgICAgJm5ic3A7CgogICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJjYkRlc2NyaXB0aW9uIntpZiAkZm9ybS5zZXQuZGVzY3JpcHRpb259IGNoZWNrZWQ9ImNoZWNrZWQiey9pZn0KICAgICAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtzZXRdW2Rlc2NyaXB0aW9uXSJ9Ii8+CiAgICAgIDxsYWJlbCBmb3I9ImNiRGVzY3JpcHRpb24iPiB7Zy0+dGV4dCB0ZXh0PSJEZXNjcmlwdGlvbiJ9IDwvbGFiZWw+CiAgICA8L3A+CgogICAge2NhcHR1cmUgbmFtZT0ic3VibWl0QnV0dG9ucyJ9CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJpbnB1dFR5cGVTdWJtaXQiCiAgICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bYWN0aW9uXVthZGRGcm9tV2ViUGFnZV0ifSIgdmFsdWU9IntnLT50ZXh0IHRleHQ9IkFkZCBVUkxzIn0iLz4KICAgIHsvY2FwdHVyZX0KICAgIHthc3NpZ24gdmFyPSJzaG93T3B0aW9ucyIgdmFsdWU9InRydWUifQogIHsvaWZ9IHsqIHtpZiAhZW1wdHkoJGZvcm0ud2ViUGFnZVVybHMpfSAqfQo8L2Rpdj4KCntpZiBpc3NldCgkc2hvd09wdGlvbnMpfQogIHsqIEluY2x1ZGUgb3VyIGV4dHJhIEl0ZW1BZGRPcHRpb25zICp9CiAge2ZvcmVhY2ggZnJvbT0kSXRlbUFkZC5vcHRpb25zIGl0ZW09b3B0aW9ufQogICAge2luY2x1ZGUgZmlsZT0iZ2FsbGVyeTpgJG9wdGlvbi5maWxlYCIgbDEwRG9tYWluPSRvcHRpb24ubDEwRG9tYWlufQogIHsvZm9yZWFjaH0Key9pZn0KCjxkaXYgY2xhc3M9ImdiQmxvY2sgZ2NCYWNrZ3JvdW5kMSI+CiAgeyRzbWFydHkuY2FwdHVyZS5zdWJtaXRCdXR0b25zfQo8L2Rpdj4K');
expand_a4483450cb($outputDir, 'templates/ItemAddSiteAdmin.tpl', 'eyoKICogJFJldmlzaW9uOiAxNTgwOCAkCiAqIElmIHlvdSB3YW50IHRvIGN1c3RvbWl6ZSB0aGlzIGZpbGUsIGRvIG5vdCBlZGl0IGl0IGRpcmVjdGx5IHNpbmNlIGZ1dHVyZSB1cGdyYWRlcwogKiBtYXkgb3ZlcndyaXRlIGl0LiAgSW5zdGVhZCwgY29weSBpdCBpbnRvIGEgbmV3IGRpcmVjdG9yeSBjYWxsZWQgImxvY2FsIiBhbmQgZWRpdCB0aGF0CiAqIHZlcnNpb24uICBHYWxsZXJ5IHdpbGwgbG9vayBmb3IgdGhhdCBmaWxlIGZpcnN0IGFuZCB1c2UgaXQgaWYgaXQgZXhpc3RzLgogKn0KPGRpdiBjbGFzcz0iZ2JCbG9jayBnY0JhY2tncm91bmQxIj4KICA8aDI+IHtnLT50ZXh0IHRleHQ9IkFkZCBJdGVtIFNldHRpbmdzIn0gPC9oMj4KPC9kaXY+Cgp7aWYgaXNzZXQoJHN0YXR1cy5zYXZlZCl9CjxkaXYgY2xhc3M9ImdiQmxvY2siPjxoMiBjbGFzcz0iZ2lTdWNjZXNzIj4KICB7Zy0+dGV4dCB0ZXh0PSJTZXR0aW5ncyBzYXZlZCBzdWNjZXNzZnVsbHkifQo8L2gyPjwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0iZ2JCbG9jayI+CiAgPGgzPiB7Zy0+dGV4dCB0ZXh0PSJFbmFibGUifSA8L2gzPgoKICA8dGFibGUgY2xhc3M9ImdiRGF0YVRhYmxlIj48dHI+CiAgICA8dGQ+IHtnLT50ZXh0IHRleHQ9IkFkZCBGcm9tIFdlYiJ9IDwvdGQ+CiAgICA8dGQ+CiAgICAgIDxzZWxlY3QgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2Zyb213ZWJdIn0iPgoJe2h0bWxfb3B0aW9ucyBvcHRpb25zPSRJdGVtQWRkU2l0ZUFkbWluLm9wdGlvbkxpc3Qgc2VsZWN0ZWQ9JGZvcm0uZnJvbXdlYn0KICAgICAgPC9zZWxlY3Q+CiAgICA8L3RkPgogIDwvdHI+PHRyPgogICAgPHRkPiB7Zy0+dGV4dCB0ZXh0PSJBZGQgRnJvbSBTZXJ2ZXIifSA8L3RkPgogICAgPHRkPgogICAgICA8c2VsZWN0IG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVtmcm9tc2VydmVyXSJ9Ij4KCXtodG1sX29wdGlvbnMgb3B0aW9ucz0kSXRlbUFkZFNpdGVBZG1pbi5vcHRpb25MaXN0IHNlbGVjdGVkPSRmb3JtLmZyb21zZXJ2ZXJ9CiAgICAgIDwvc2VsZWN0PgogICAgPC90ZD4KICA8L3RyPjwvdGFibGU+CgogIDxoNCBjbGFzcz0iZ2lXYXJuaW5nIj4ge2ctPnRleHQgdGV4dD0iU2VjdXJpdHkgV2FybmluZyJ9IDwvaDQ+CiAgPGRpdj4KICAgIHtnLT50ZXh0IHRleHQ9JyJBZGQgRnJvbSBXZWIiIGNhbiBiZSBhYnVzZWQgdG8gYXR0YWNrIG90aGVyIHdlYnNpdGVzIGluIHlvdXIgbmFtZS4gIEZvciB0aGUgYXR0YWNrZWQgcGFydHkgaXQgd291bGQgc2VlbSBhcyBpZiB5b3UsIHRoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgR2FsbGVyeSwgZGVsaWJlcmF0ZWx5IGF0dGFja2VkIHRoZWlyIHdlYnNpdGUgYmVjYXVzZSB5b3VyIEdhbGxlcnkgYWN0cyBvbiBiZWhhbGYgb2YgeW91ciB1c2Vycy4gIFRoZXJlZm9yZSBpdCBpcyByZWNvbW1lbmRlZCB0byBlbmFibGUgIkFkZCBGcm9tIFdlYiIgb25seSBmb3IgdHJ1c3RlZCB1c2Vycy4nfQogIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImdiQmxvY2siPgogIDxoMz4ge2ctPnRleHQgdGV4dD0iTG9jYWwgU2VydmVyIFVwbG9hZCBQYXRocyJ9IDwvaDM+CgogIDxwIGNsYXNzPSJnaURlc2NyaXB0aW9uIj4KICAgIHtnLT50ZXh0IHRleHQ9IlNwZWNpZnkgdGhlIGxlZ2FsIGRpcmVjdG9yaWVzIG9uIHRoZSBsb2NhbCBzZXJ2ZXIgd2hlcmUgYSB1c2VyIGNhbiBzdG9yZSBmaWxlcyBhbmQgdGhlbiB1cGxvYWQgdGhlbSBpbnRvIEdhbGxlcnkgdXNpbmcgdGhlIDxpPlVwbG9hZCBmcm9tIExvY2FsIFNlcnZlcjwvaT4gZmVhdHVyZS4gIFRoZSBwYXRocyB5b3UgZW50ZXIgaGVyZSBhbmQgYWxsIHRoZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgdW5kZXIgdGhvc2UgcGF0aHMgd2lsbCBiZSBhdmFpbGFibGUgdG8gYW55IEdhbGxlcnkgdXNlciB3aG8gaGFzIHVwbG9hZCBwcml2aWxlZ2VzLCBzbyB5b3Ugc2hvdWxkIGxpbWl0IHRoaXMgdG8gZGlyZWN0b3JpZXMgdGhhdCB3b24ndCBjb250YWluIHNlbnNpdGl2ZSBkYXRhIChlZy4gL3RtcCBvciAvdXNyL2Z0cC9pbmNvbWluZykifQogIDwvcD4KCiAgPHRhYmxlIGNsYXNzPSJnYkRhdGFUYWJsZSI+PHRyPgogICAgPHRoPiB7Zy0+dGV4dCB0ZXh0PSJQYXRoIn0gPC90aD4KICAgIDx0aD4ge2ctPnRleHQgdGV4dD0iQWN0aW9uIn0gPC90aD4KICA8L3RyPgoKICB7Zm9yZWFjaCBmcm9tPSRJdGVtQWRkU2l0ZUFkbWluLmxvY2FsU2VydmVyRGlyTGlzdCBrZXk9aW5kZXggaXRlbT1kaXJ9CiAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJnYkV2ZW4sZ2JPZGQifSI+CiAgICA8dGQ+CiAgICAgIHskZGlyfGVzY2FwZX0KICAgIDwvdGQ+PHRkPgogICAgICA8YSBocmVmPSJ7Zy0+dXJsIGFyZzE9ImNvbnRyb2xsZXI9aXRlbWFkZC5JdGVtQWRkU2l0ZUFkbWluIgoJCSAgICAgICBhcmcyPSJmb3JtW2FjdGlvbl1bcmVtb3ZlVXBsb2FkTG9jYWxTZXJ2ZXJEaXJdPTEiCgkJICAgICAgIGFyZzM9ImZvcm1bdXBsb2FkTG9jYWxTZXJ2ZXJdW3NlbGVjdGVkRGlyXT0kaW5kZXgifSI+Cgl7Zy0+dGV4dCB0ZXh0PSJyZW1vdmUifQogICAgICA8L2E+CiAgICA8L3RkPgogIDwvdHI+CiAgey9mb3JlYWNofQoKICA8dHI+CiAgICA8dGQ+CiAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI0MCIgaWQ9Im5ld0RpciIgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bdXBsb2FkTG9jYWxTZXJ2ZXJdW25ld0Rpcl0ifSIKICAgICAgIHZhbHVlPSJ7JGZvcm0udXBsb2FkTG9jYWxTZXJ2ZXIubmV3RGlyfSIvPgogICAgICB7Zy0+YXV0b0NvbXBsZXRlIGVsZW1lbnQ9Im5ld0RpciJ9Cgl7Zy0+dXJsIGFyZzE9InZpZXc9Y29yZS5TaW1wbGVDYWxsYmFjayIgYXJnMj0iY29tbWFuZD1sb29rdXBEaXJlY3RvcmllcyIKCQlhcmczPSJwcmVmaXg9X19WQUxVRV9fIiBodG1sRW50aXRpZXM9ZmFsc2V9CiAgICAgIHsvZy0+YXV0b0NvbXBsZXRlfQogICAgPC90ZD48dGQ+CiAgICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJpbnB1dFR5cGVTdWJtaXQiCiAgICAgICBuYW1lPSJ7Zy0+Zm9ybVZhciB2YXI9ImZvcm1bYWN0aW9uXVthZGRVcGxvYWRMb2NhbFNlcnZlckRpcl0ifSIKICAgICAgIHZhbHVlPSJ7Zy0+dGV4dCB0ZXh0PSJBZGQifSIvPgogICAgPC90ZD4KICA8L3RyPjwvdGFibGU+CgogIHtpZiBpc3NldCgkZm9ybS5lcnJvci51cGxvYWRMb2NhbFNlcnZlci5uZXdEaXIubWlzc2luZyl9CiAgPGRpdiBjbGFzcz0iZ2lFcnJvciI+CiAgICB7Zy0+dGV4dCB0ZXh0PSJZb3UgbXVzdCBlbnRlciBhIGRpcmVjdG9yeSB0byBhZGQuIn0KICA8L2Rpdj4KICB7L2lmfQoKICB7aWYgaXNzZXQoJGZvcm0uZXJyb3IudXBsb2FkTG9jYWxTZXJ2ZXIubmV3RGlyLnJlc3RyaWN0ZWRCeU9wZW5CYXNlRGlyKX0KICA8ZGl2IGNsYXNzPSJnaUVycm9yIj4KICAgIHtjYXB0dXJlIG5hbWU9Im9wZW5fYmFzZWRpciJ9CiAgICAgIDxhIGhyZWY9Imh0dHA6Ly9waHAubmV0L2luaV9zZXQiPntnLT50ZXh0IHRleHQ9Im9wZW5fYmFzZWRpciBkb2N1bWVudGF0aW9uIn08L2E+CiAgICB7L2NhcHR1cmV9CiAgICB7Zy0+dGV4dCB0ZXh0PSJZb3VyIHdlYnNlcnZlciBpcyBjb25maWd1cmVkIHRvIHByZXZlbnQgeW91IGZyb20gYWNjZXNzaW5nIHRoYXQgZGlyZWN0b3J5LiAgUGxlYXNlIHJlZmVyIHRvIHRoZSAlcyBhbmQgY29uc3VsdCB5b3VyIHdlYnNlcnZlciBhZG1pbmlzdHJhdG9yLiIgYXJnMT0kc21hcnR5LmNhcHR1cmUub3Blbl9iYXNlZGlyfQogIDwvZGl2PgogIHsvaWZ9CgogIHtpZiBpc3NldCgkZm9ybS5lcnJvci51cGxvYWRMb2NhbFNlcnZlci5uZXdEaXIubm90UmVhZGFibGUpfQogIDxkaXYgY2xhc3M9ImdpRXJyb3IiPgogICAge2ctPnRleHQgdGV4dD0iVGhlIHdlYnNlcnZlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb25zIHRvIHJlYWQgdGhhdCBkaXJlY3RvcnkuIn0KICA8L2Rpdj4KICB7L2lmfQoKICB7aWYgaXNzZXQoJGZvcm0uZXJyb3IudXBsb2FkTG9jYWxTZXJ2ZXIubmV3RGlyLm5vdEFEaXJlY3RvcnkpfQogIDxkaXYgY2xhc3M9ImdpRXJyb3IiPgogICAge2ctPnRleHQgdGV4dD0iVGhlIHBhdGggeW91IHNwZWNpZmllZCBpcyBub3QgYSB2YWxpZCBkaXJlY3RvcnkuIn0KICA8L2Rpdj4KICB7L2lmfQo8L2Rpdj4KCjxkaXYgY2xhc3M9ImdiQmxvY2sgZ2NCYWNrZ3JvdW5kMSI+CiAgPGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9ImlucHV0VHlwZVN1Ym1pdCIKICAgbmFtZT0ie2ctPmZvcm1WYXIgdmFyPSJmb3JtW2FjdGlvbl1bc2F2ZV0ifSIgdmFsdWU9IntnLT50ZXh0IHRleHQ9IlNhdmUifSIvPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGNsYXNzPSJpbnB1dFR5cGVTdWJtaXQiCiAgIG5hbWU9IntnLT5mb3JtVmFyIHZhcj0iZm9ybVthY3Rpb25dW3Jlc2V0XSJ9IiB2YWx1ZT0ie2ctPnRleHQgdGV4dD0iUmVzZXQifSIvPgo8L2Rpdj4K');
}
function expand_a4483450cb($outputDir, $relativePath, $data) {
$fd = fopen($outputDir . $relativePath, 'w');
fwrite($fd, base64_decode($data));
fclose($fd);
}
$unpackFunction = "unpack_a4483450cb";
?>

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists