a:3:{s:4:"name";s:6:"attach";s:4:"dirs";a:4:{i:0;s:6:"attach";i:1;s:14:"attach/actions";i:2;s:15:"attach/handlers";i:3;s:20:"attach/handlers/page";}s:5:"files";a:8:{s:15:"attach/desc.xml";s:296:"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8cGx1Z2luIG5hbWU9IndrYXR0YWNoIiB2ZXJzaW9uPSIwLjEiIGFjdGl2ZT0iMSI+CiAgPGF1dGhvcj5HYXJmaWVsZEZyPC9hdXRob3I+CiAgPGxhYmVsPkF0dGFjaDwvbGFiZWw+CiAgPGRlc2M+QWN0aW9uIHBlcm1ldHRhbnQgZGUgam9pbmRyZSB1biBmaWNoaWVyIGEgV2lraW5pPC9kZXNjPgo8L3BsdWdpbj4=";s:16:"attach/index.php";s:416:"PD9waHAKLy8gaW5kZXgucGhwCi8vIEFkbWluaXN0cmF0aW9uIGRlIGwnZXh0ZW5zaW9uIDogaW5pdGlhbGlzYXRpb25zICh0YWJsZXMsIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbikgLCBpbmZvcm1hdGlvbiBldGMuIDogdG91dGVzCi8vIG9w6XJhdGlvbnMgculzZXJ26WVzIOAgbCdhZG1pbmlzdHJhdGV1ciB0ZWNobmlxdWUgZGUgV2lraW5pLgoKLy8gVulyaWZpY2F0aW9uIGRlIHPpY3VyaXTpCmlmICghZGVmaW5lZCgiVE9PTFNfTUFOQUdFUiIpKQp7CiAgICAgICAgZGllICgiYWNjJmVncmF2ZTtzIGRpcmVjdCBpbnRlcmRpdCIpOwp9Cgo/Pgo=";s:31:"attach/actions/attach.class.php";s:34924:"PD9waHAKLyoKYXR0YWNoLmNsYXNzLnBocApDb2RlIG9yaWdpbmFsIGRlIGNlIGZpY2hpZXIgOiBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgKGMpIDIwMDIsIEhlbmRyaWsgTWFucyA8aGVuZHJpa0BtYW5zLmRlPgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBEYXZpZCBERUxPTgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBDaGFybGVzIE5FUE9URQpDb3B5cmlnaHQgIDIwMDMsMjAwNCAgRXJpYyBGRUxEU1RFSU4KQ29weXJpZ2h0ICAyMDAzICBKZWFuLVBhc2NhbCBNSUxDRU5UCkFsbCByaWdodHMgcmVzZXJ2ZWQuClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKYXJlIG1ldDoKMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCmRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCjMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwpkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCklNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KIyBDbGFzc2UgZGUgZ2VzdGlvbiBkZSBsJ2FjdGlvbiB7e2F0dGFjaH19CiMgdm9pciBhY3Rpb25zL2F0dGFjaC5waHAgcHBvdXIgbGEgZG9jdW1lbnRhdGlvbgojIGNvcHlyaWd0aCBFcmljIEZlbGRzdGVpbiAyMDAzLTIwMDQKCmlmICghZGVmaW5lZCgiV0lLSU5JX1ZFUlNJT04iKSkKewogICAgICAgIGRpZSAoImFjYyZlZ3JhdmU7cyBkaXJlY3QgaW50ZXJkaXQiKTsKfQoKaWYgKCFjbGFzc19leGlzdHMoJ2F0dGFjaCcpKXsKCmNsYXNzIGF0dGFjaCB7Cgl2YXIgJHdpa2kgPSAnJzsJCQkJCS8vb2JqZXQgd2lraSBjb3VyYW50CiAgIHZhciAkYXR0YWNoQ29uZmlnID0gYXJyYXkoKTsJLy9jb25maWd1cmF0aW9uIGRlIGwnYWN0aW9uCiAgIHZhciAkZmlsZSA9ICcnOwkJCQkJLy9ub20gZHUgZmljaGllcgogICB2YXIgJGRlc2MgPSAnJzsJCQkJCS8vZGVzY3JpcHRpb24gZHUgZmljaGllcgogICB2YXIgJGxpbmsgPSAnJzsJCQkJCS8vdXJsIGRlIGxpZW4gKGltYWdlIHNlbnNpYmxlKQogICB2YXIgJGlzUGljdHVyZSA9IDA7CQkJCS8vaW5kaXF1ZSBzaSBjJ2VzdCB1bmUgaW1hZ2UKICAgdmFyICRpc0F1ZGlvID0gMDsJCQkJLy9pbmRpcXVlIHNpIGMnZXN0IHVuIGZpY2hpZXIgYXVkaW8gCiAgIHZhciAkaXNGcmVlTWluZE1pbmRNYXAgPSAwOwkJCQkvL2luZGlxdWUgc2kgYydlc3QgdW4gZmljaGllciBtaWluZG1wYSBmcmVlbWluZAogICB2YXIgJGNsYXNzZXMgPSAnJzsJCQkJLy9jbGFzc2UgcG91ciBhZmZpY2hlciB1bmUgaW1hZ2UKICAgdmFyICRhdHRhY2hFcnIgPSAnJzsJCQkJLy9tZXNzYWdlIGQnZXJyZXVyCiAgIHZhciAkcGFnZUlkID0gMDsJCQkJCS8vaWRlbnRpZmlhbnQgZGUgbGEgcGFnZQogICB2YXIgJGlzU2FmZU1vZGUgPSBmYWxzZTsJCS8vaW5kaWNhdGV1ciBkdSBzYWZlIG1vZGUgZGUgUEhQCiAgIC8qKgogICAqIENvbnN0cnVjdGV1ci4gTWV0IGxlcyB2YWxldXJzIHBhciBkZWZhdXQgYXV4IHBhcmFt6HRyZXMgZGUgY29uZmlndXJhdGlvbgogICAqLwoJZnVuY3Rpb24gYXR0YWNoKCYkd2lraSl7CiAgIAkkdGhpcy0+d2lraSA9ICR3aWtpOwoJCSR0aGlzLT5hdHRhY2hDb25maWcgPSAkdGhpcy0+d2lraS0+R2V0Q29uZmlnVmFsdWUoImF0dGFjaF9jb25maWciKTsKCQlpZiAoZW1wdHkoJHRoaXMtPmF0dGFjaENvbmZpZ1siZXh0X2ltYWdlcyJdKSkgJHRoaXMtPmF0dGFjaENvbmZpZ1siZXh0X2ltYWdlcyJdID0gImdpZnxqcGVnfHBuZ3xqcGciOwoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWyJleHRfYXVkaW8iXSkpICR0aGlzLT5hdHRhY2hDb25maWdbImV4dF9hdWRpbyJdID0gIm1wMyI7CgkJaWYgKGVtcHR5KCR0aGlzLT5hdHRhY2hDb25maWdbImV4dF9mcmVlbWluZCJdKSkgJHRoaXMtPmF0dGFjaENvbmZpZ1siZXh0X2ZyZWVtaW5kIl0gPSAibW0iOwoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWyJleHRfc2NyaXB0Il0pKSAkdGhpcy0+YXR0YWNoQ29uZmlnWyJleHRfc2NyaXB0Il0gPSAicGhwfHBocDN8YXNwfGFzeHx2Ynx2YnN8anMiOwoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWyd1cGxvYWRfcGF0aCddKSkgJHRoaXMtPmF0dGFjaENvbmZpZ1sndXBsb2FkX3BhdGgnXSA9ICdmaWxlcyc7CgkJaWYgKGVtcHR5KCR0aGlzLT5hdHRhY2hDb25maWdbJ3VwZGF0ZV9zeW1ib2xlJ10pKSAkdGhpcy0+YXR0YWNoQ29uZmlnWyd1cGRhdGVfc3ltYm9sZSddID0gJyonOwoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWydtYXhfZmlsZV9zaXplJ10pKSAkdGhpcy0+YXR0YWNoQ29uZmlnWydtYXhfZmlsZV9zaXplJ10gPSAxMDI0KjIwMDA7CS8vMjAwMGtvIG1heAoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWydmbURlbGV0ZV9zeW1ib2xlJ10pKSAkdGhpcy0+YXR0YWNoQ29uZmlnWydmbURlbGV0ZV9zeW1ib2xlJ10gPSAnU3Vwcic7CgkJaWYgKGVtcHR5KCR0aGlzLT5hdHRhY2hDb25maWdbJ2ZtUmVzdG9yZV9zeW1ib2xlJ10pKSAkdGhpcy0+YXR0YWNoQ29uZmlnWydmbVJlc3RvcmVfc3ltYm9sZSddID0gJ1Jlc3QnOwoJCWlmIChlbXB0eSgkdGhpcy0+YXR0YWNoQ29uZmlnWydmbVRyYXNoX3N5bWJvbGUnXSkpICR0aGlzLT5hdHRhY2hDb25maWdbJ2ZtVHJhc2hfc3ltYm9sZSddID0gJ1BvdWJlbGxlJzsKCQkkdGhpcy0+aXNTYWZlTW9kZSA9IGluaV9nZXQoInNhZmVfbW9kZSIpOwoJfQovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioJRk9OQ1RJT05TIFVUSUxFUwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJLyoqCgkqIENy6WF0aW9uIGQndW5lIHN1aXRlIGRlIHLpcGVydG9pcmVzIHLpY3Vyc2l2ZW1lbnQKCSovCglmdW5jdGlvbiBta2Rpcl9yZWN1cnNpZiAoJGRpcikgewoJCWlmIChzdHJsZW4oJGRpcikgPT0gMCkgcmV0dXJuIDA7CgkJaWYgKGlzX2RpcigkZGlyKSkgcmV0dXJuIDE7CgkJZWxzZWlmIChkaXJuYW1lKCRkaXIpID09ICRkaXIpIHJldHVybiAxOwoJCXJldHVybiAoJHRoaXMtPm1rZGlyX3JlY3Vyc2lmKGRpcm5hbWUoJGRpcikpIGFuZCBta2RpcigkZGlyLDA3NTUpKTsKCX0KCS8qKgoJKiBSZW52b2lzIGxlIGNoZW1pbiBkdSBzY3JpcHQKCSovCglmdW5jdGlvbiBHZXRTY3JpcHRQYXRoICgpIHsKCQlpZiAocHJlZ19tYXRjaCgiLy4ocGhwKSQvaSIsJF9TRVJWRVJbIlBIUF9TRUxGIl0pKXsKCQkJJGEgPSBleHBsb2RlKCcvJywkX1NFUlZFUlsiUEhQX1NFTEYiXSk7CgkJCSRhW2NvdW50KCRhKS0xXSA9ICcnOwoJCQkkcGF0aCA9IGltcGxvZGUoJy8nLCRhKTsKCQl9ZWxzZXsKCQkJJHBhdGggPSAkX1NFUlZFUlsiUEhQX1NFTEYiXTsKCQl9CgkJcmV0dXJuICFlbXB0eSgkX1NFUlZFUlsiSFRUUF9IT1NUIl0pPyAnaHR0cDovLycuJF9TRVJWRVJbIkhUVFBfSE9TVCJdLiRwYXRoIDogJ2h0dHA6Ly8nLiRfU0VSVkVSWyJTRVJWRVJfTkFNRSJdLiRwYXRoIDsKCX0KCS8qKgoJKiBDYWxjdWwgbGUgcmVwZXJ0b2lyZSBkJ3VwbG9hZCBlbiBmb25jdGlvbiBkdSBzYWZlX21vZGUKCSovCglmdW5jdGlvbiBHZXRVcGxvYWRQYXRoKCl7CgkJaWYgKCR0aGlzLT5pc1NhZmVNb2RlKSB7CgkJCSRwYXRoID0gJHRoaXMtPmF0dGFjaENvbmZpZ1sndXBsb2FkX3BhdGgnXTsKCQl9ZWxzZXsKICAgICAgICAgJHBhdGggPSAkdGhpcy0+YXR0YWNoQ29uZmlnWyd1cGxvYWRfcGF0aCddLicvJy4kdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpOwoJCQlpZiAoISBpc19kaXIoJHBhdGgpKSAkdGhpcy0+bWtkaXJfcmVjdXJzaWYoJHBhdGgpOwoJCX0KCQlyZXR1cm4gJHBhdGg7Cgl9CgkvKioKCSogQ2FsY3VsZSBsZSBub20gY29tcGxldCBkdSBmaWNoaWVyIGF0dGFjaOkgZW4gZm9uY3Rpb24gZHUgc2FmZV9tb2RlLCBkdSBub20gZXQgZGUgbGEgZGF0ZSBkZQoJKiByZXZpc2lvbiBsYSBwYWdlIGNvdXJhbnRlLgoJKiBMZSBub20gZHUgZmljaGllciAibW9uIGZpY2hpZXIuZXh0IiBhdHRhY2hlIOAgbGEgcGFnZSAiTGFQYWdlV2lraSJzZXJhIDoKCSogIG1vbl9maWNoaWVyX2RhdGVwYWdlX3VwZGF0ZS5leHQKCSogICAgIHVwZGF0ZSA6IGRhdGUgZGUgZGVybmllcmUgbWlzZSBhIGpvdXIgZHUgZmljaGllcgoJKiAgICAgZGF0ZXBhZ2UgOiBkYXRlIGRlIHJldmlzaW9uIGRlIGxhIHBhZ2Ug4CBsYXF1ZWxsZSBsZSBmaWNoaWVyIGEgZXRlIGxp6S9taXMgYSBqb3VyCgkqICBTaSBsZSBmaWNoaWVyIG4nZXN0IHBhcyB1bmUgaW1hZ2UgdW4gJ18nIGVzdCBham91dGUgOiBtb25fZmljaGllcl9kYXRlcGFnZV91cGRhdGUuZXh0XwoJKiAgU2Vsb24gbGEgdmFsZXVyIGRlIHNhZmVfbW9kZSA6CgkqICBzYWZlX21vZGUgPSBvbiA6IAlMYVBhZ2VXaWtpX21vbl9maWNoaWVyX2RhdGVwYWdlX3VwZGF0ZS5leHRfCgkqICBzYWZlX21vZGUgPSBvZmY6IAlMYVBhZ2VXaWtpL21vbl9maWNoaWVyX2RhdGVwYWdlX3VwZGF0ZS5leHRfIGF2ZWMgIkxhUGFnZVdpa2kiIHVuIHNvdXMtcmVwZXJ0b2lyZSBkdSBy6XBlcnRvaXJlIHVwbG9hZAoJKi8KCWZ1bmN0aW9uIEdldEZ1bGxGaWxlbmFtZSgkbmV3TmFtZSA9IGZhbHNlKXsKCQkkcGFnZWRhdGUgPSAkdGhpcy0+Y29udmVydERhdGUoJHRoaXMtPndpa2ktPnBhZ2VbJ3RpbWUnXSk7CgkJLy9kZWNvbXBvc2UgbGUgbm9tIGR1IGZpY2hpZXIgZW4gbm9tK2V4dGVuc2lvbgoJCWlmIChwcmVnX21hdGNoKCdgXiguKilcLiguKikkYCcsIHN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPmZpbGUpLCAkbWF0Y2gpKXsKCQkJbGlzdCgsJGZpbGVbJ25hbWUnXSwkZmlsZVsnZXh0J10pPSRtYXRjaDsKCQkJaWYoISR0aGlzLT5pc1BpY3R1cmUoKSAmJiAhJHRoaXMtPmlzQXVkaW8oKSAmJiAhJHRoaXMtPmlzRnJlZU1pbmRNaW5kTWFwKCkpICRmaWxlWydleHQnXSAuPSAnXyc7CgkJfWVsc2V7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJLy9yZWN1cGVyYXRpb24gZHUgY2hlbWluIGQndXBsb2FkCgkJJHBhdGggPSAkdGhpcy0+R2V0VXBsb2FkUGF0aCgkdGhpcy0+aXNTYWZlTW9kZSk7CgkJLy9nZW5lcmF0aW9uIGR1IG5vbSBvdSByZWNoZXJjaGUgZGUgZmljaGllciA/CgkJaWYgKCRuZXdOYW1lKXsKCQkJJGZ1bGxfZmlsZV9uYW1lID0gJGZpbGVbJ25hbWUnXS4nXycuJHBhZ2VkYXRlLidfJy4kdGhpcy0+Z2V0RGF0ZSgpLicuJy4kZmlsZVsnZXh0J107CgkJCWlmKCR0aGlzLT5pc1NhZmVNb2RlKXsKCQkJCSRmdWxsX2ZpbGVfbmFtZSA9ICRwYXRoLicvJy4kdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpLidfJy4kZnVsbF9maWxlX25hbWU7CgkJCX1lbHNlewoJCQkJJGZ1bGxfZmlsZV9uYW1lID0gJHBhdGguJy8nLiRmdWxsX2ZpbGVfbmFtZTsKCQkJfQoJCX1lbHNlewoJCQkvL3JlY2hlcmNoZSBkdSBmaWNoaWVyCgkJCWlmKCR0aGlzLT5pc1NhZmVNb2RlKXsKCQkJCS8vVE9ETyBSZWNoZXJjaGUgZGFucyBsZSBjYXMgb3Ugc2FmZV9tb2RlPW9uCgkJCQkkc2VhcmNoUGF0dGVybiA9ICdgXicuJHRoaXMtPndpa2ktPkdldFBhZ2VUYWcoKS4nXycuJGZpbGVbJ25hbWUnXS4nX1xkezE0fV9cZHsxNH1cLicuJGZpbGVbJ2V4dCddLickYCc7CgkJCX1lbHNlewoJCQkJJHNlYXJjaFBhdHRlcm4gPSAnYF4nLiRmaWxlWyduYW1lJ10uJ19cZHsxNH1fXGR7MTR9XC4nLiRmaWxlWydleHQnXS4nJGAnOwoJCQl9CgkJCSRmaWxlcyA9ICR0aGlzLT5zZWFyY2hGaWxlcygkc2VhcmNoUGF0dGVybiwkcGF0aCk7CgoJCQkkdW5lZGF0ZSA9IDA7CgkJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSl7CgkJCQkvL3JlY2hlcmNoZSBkdSBmaWNoaWVyIHF1aSB1bmUgZGF0ZXBhZ2UgPD0gYSBsYSBkYXRlIGRlIGxhIHBhZ2UKCQkJCWlmKCRmaWxlWydkYXRlcGFnZSddPD0kcGFnZWRhdGUpewoJCQkJCS8vcHVpcyBxdWkgYSB1bmUgZGF0ZXVwbG9hZCBsYSBwbHVzIGdyYW5kZQoJCQkJCWlmICgkZmlsZVsnZGF0ZXVwbG9hZCddPiR1bmVkYXRlKXsKCQkJCQkJJHRoZUZpbGUgPSAkZmlsZTsKCQkJCQkJJHVuZWRhdGUgPSAkZmlsZVsnZGF0ZXVwbG9hZCddOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlpZiAoaXNfYXJyYXkoJHRoZUZpbGUpKXsKCQkJCSRmdWxsX2ZpbGVfbmFtZSA9ICRwYXRoLicvJy4kdGhlRmlsZVsncmVhbG5hbWUnXTsKCQkJfQoJCX0KCQlyZXR1cm4gJGZ1bGxfZmlsZV9uYW1lOwoJfQoJLyoqCgkqIFRlc3Qgc2kgbGUgZmljaGllciBlc3QgdW5lIGltYWdlCgkqLwoJZnVuY3Rpb24gaXNQaWN0dXJlKCl7CgkJcmV0dXJuIHByZWdfbWF0Y2goIi8uKCIuJHRoaXMtPmF0dGFjaENvbmZpZ1siZXh0X2ltYWdlcyJdLiIpJC9pIiwkdGhpcy0+ZmlsZSk9PTE7Cgl9CgkvKioKCSogVGVzdCBzaSBsZSBmaWNoaWVyIGVzdCB1biBmaWNoaWVyIGF1ZGlvCgkqLwoJZnVuY3Rpb24gaXNBdWRpbygpewoJCXJldHVybiBwcmVnX21hdGNoKCIvLigiLiR0aGlzLT5hdHRhY2hDb25maWdbImV4dF9hdWRpbyJdLiIpJC9pIiwkdGhpcy0+ZmlsZSk9PTE7Cgl9CgkvKioKCSogVGVzdCBzaSBsZSBmaWNoaWVyIGVzdCB1biBmaWNoaWVyIGZyZWVtaW5kIG1pbmQgbWFwIAoJKi8KCWZ1bmN0aW9uIGlzRnJlZU1pbmRNaW5kTWFwKCl7CgkJcmV0dXJuIHByZWdfbWF0Y2goIi8uKCIuJHRoaXMtPmF0dGFjaENvbmZpZ1siZXh0X2ZyZWVtaW5kIl0uIikkL2kiLCR0aGlzLT5maWxlKT09MTsKCX0KCQoJLyoqCgkqIFJlbnZvaWUgbGEgZGF0ZSBjb3VyYW50ZSBhdSBmb3JtYXQgdXRpbGlzZSBwYXIgbGVzIGZpY2hpZXJzCgkqLwoJZnVuY3Rpb24gZ2V0RGF0ZSgpewoJCXJldHVybiBkYXRlKCdZbWRIaXMnKTsKCX0KCS8qKgoJKiBjb252ZXJ0aWUgdW5lIGRhdGUgeXl5eS1tbS1kZCBoaDptbTpzcyBhdSBmb3JtYXQgeXl5eW1tZGRoaG1tc3MKCSovCglmdW5jdGlvbiBjb252ZXJ0RGF0ZSgkZGF0ZSl7CgkJJGRhdGUgPSBzdHJfcmVwbGFjZSgnICcsJycsICRkYXRlKTsKCQkkZGF0ZSA9IHN0cl9yZXBsYWNlKCc6JywnJywgJGRhdGUpOwoJCXJldHVybiBzdHJfcmVwbGFjZSgnLScsJycsICRkYXRlKTsKCX0KCS8qKgoJKiBQYXJzZSB1bmUgZGF0ZSBhdSBmb3JtYXQgeXl5eW1tZGRoaG1tc3MgZXQgcmVudm9pZSB1biB0YWJsZWF1IGFzc2lhdGlmCgkqLwoJZnVuY3Rpb24gcGFyc2VEYXRlKCRzRGF0ZSl7CgkJJHBhdHRlcm4gPSAnYF4oXGR7NH0pKFxkezJ9KShcZHsyfSkoXGR7Mn0pKFxkezJ9KShcZHsyfSkkYCc7CgkJJHJlcyA9ICcnOwoJCWlmIChwcmVnX21hdGNoKCRwYXR0ZXJuLCAkc0RhdGUsICRtKSl7CgkJCS8vbGlzdCgsJHJlc1sneWVhciddLCRyZXNbJ21vbnRoJ10sJHJlc1snZGF5J10sJHJlc1snaG91ciddLCRyZXNbJ21pbiddLCRyZXNbJ3NlYyddKT0kbTsKCQkJJHJlcyA9ICRtWzFdLictJy4kbVsyXS4nLScuJG1bM10uJyAnLiRtWzRdLic6Jy4kbVs1XS4nOicuJG1bNl07CgkJfQoJCXJldHVybiAoJHJlcz8kcmVzOmZhbHNlKTsKCX0KCS8qKgoJKiBEZWNvZGUgdW4gbm9tIGxvbmcgZGUgZmljaGllcgoJKi8KCWZ1bmN0aW9uIGRlY29kZUxvbmdGaWxlbmFtZSgkZmlsZW5hbWUpewoJCSRhZmlsZSA9IGFycmF5KCk7CgkJJGFmaWxlWydyZWFsbmFtZSddID0gYmFzZW5hbWUoJGZpbGVuYW1lKTsKCQkkYWZpbGVbJ3NpemUnXSA9IGZpbGVzaXplKCRmaWxlbmFtZSk7CgkJJGFmaWxlWydwYXRoJ10gPSBkaXJuYW1lKCRmaWxlbmFtZSk7CgkJaWYocHJlZ19tYXRjaCgnYF4oLiopXyhcZHsxNH0pXyhcZHsxNH0pXC4oLiopKHRyYXNoXGR7MTR9KT8kYCcsICRhZmlsZVsncmVhbG5hbWUnXSwgJG0pKXsKCQkJJGFmaWxlWyduYW1lJ10gPSAkbVsxXTsKCQkJLy9zdXBwcmVzc2lvbiBkdSBub20gZGUgbGEgcGFnZSBzaSBzYWZlX21vZGU9b24KCQkJaWYgKCR0aGlzLT5pc1NhZmVNb2RlKXsKCQkJCSRhZmlsZVsnbmFtZSddID0gcHJlZ19yZXBsYWNlKCdgXignLiR0aGlzLT53aWtpLT50YWcuJylfKC4qKSRgaScsICckMicsICRhZmlsZVsnbmFtZSddKTsKCQkJfQoJCQkkYWZpbGVbJ2RhdGVwYWdlJ10gPSAkbVsyXTsKCQkJJGFmaWxlWydkYXRldXBsb2FkJ10gPSAkbVszXTsKCQkJJGFmaWxlWyd0cmFzaGRhdGUnXSA9IHByZWdfcmVwbGFjZSgnYCguKil0cmFzaChcZHsxNH0pYCcsICckMicsICRtWzRdKTsKCQkJLy9zdXBwcmVzc2lvbiBkZSB0cmFzaHh4eHh4eHh4eHh4eHh4IGV2ZW50dWVsCgkJCSRhZmlsZVsnZXh0J10gPSBwcmVnX3JlcGxhY2UoJ2BeKC4qKSh0cmFzaFxkezE0fSkkYCcsICckMScsICRtWzRdKTsKCQkJJGFmaWxlWydleHQnXSA9IHJ0cmltKCRhZmlsZVsnZXh0J10sJ18nKTsKCQkJLy8kYWZpbGVbJ2V4dCddID0gcnRyaW0oJG1bNF0sJ18nKTsKCQl9CgkJcmV0dXJuICRhZmlsZTsKCX0KCS8qKgoJKiBSZW52b2lzIHVuIHRhYmxlYXUgZGVzIGZpY2hpZXJzIGNvcnJlc3BvbmRhbnQgYXUgcGF0dGVybi4gQ2hhcXVlIGVsZW1lbnQgZHUgdGFibGVhdSBlc3QgdW4KCSogdGFibGVhdSBhc3NvY2lhdGlmIGNvbnRlbmFudCBsZXMgaW5mb3JtYXRpb25zIHN1ciBsZSBmaWNoaWVyCgkqLwoJZnVuY3Rpb24gc2VhcmNoRmlsZXMoJGZpbGVwYXR0ZXJuLCRzdGFydF9kaXIpewoJCSRmaWxlc19tYXRjaGVkID0gYXJyYXkoKTsKCQkkc3RhcnRfZGlyID0gcnRyaW0oJHN0YXJ0X2RpciwnXC8nKTsKCQkkZmggPSBvcGVuZGlyKCRzdGFydF9kaXIpOwoJCXdoaWxlICgoJGZpbGUgPSByZWFkZGlyKCRmaCkpICE9PSBmYWxzZSkgewoJCQlpZiAoc3RyY21wKCRmaWxlLCAnLicpPT0wIHx8IHN0cmNtcCgkZmlsZSwgJy4uJyk9PTAgfHwgaXNfZGlyKCRmaWxlKSkgY29udGludWU7CgkJCWlmIChwcmVnX21hdGNoKCRmaWxlcGF0dGVybiwgJGZpbGUpKXsKCQkJCSRmaWxlc19tYXRjaGVkW10gPSAkdGhpcy0+ZGVjb2RlTG9uZ0ZpbGVuYW1lKCRzdGFydF9kaXIuJy8nLiRmaWxlKTsKCQkJfQoJCX0KCQlyZXR1cm4gJGZpbGVzX21hdGNoZWQ7Cgl9Ci8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKglGT05DVElPTlMgRCdBVFRBQ0hFTUVOVFMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCS8qKgoJKiBUZXN0IGxlcyBwYXJhbeh0cmVzIHBhc3PpIOAgbCdhY3Rpb24KCSovCglmdW5jdGlvbiBDaGVja1BhcmFtcygpewoJCS8vcmVjdXBlcmF0aW9uIGRlcyBwYXJhbWV0cmVzIG5lY2Vzc2FpcmUKCQkkdGhpcy0+ZmlsZSA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImF0dGFjaGZpbGUiKTsKCQlpZiAoZW1wdHkoJHRoaXMtPmZpbGUpKSAkdGhpcy0+ZmlsZSA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImZpbGUiKTsKCQkkdGhpcy0+ZGVzYyA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImF0dGFjaGRlc2MiKTsKCQlpZiAoZW1wdHkoJHRoaXMtPmRlc2MpKSAkdGhpcy0+ZGVzYyA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImRlc2MiKTsKCQkkdGhpcy0+bGluayA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImF0dGFjaGxpbmsiKTsvL3VybCBkZSBsaWVuIC0gdW5pcXVlbWVudCBzaSBjJ2VzdCB1bmUgaW1hZ2UKCQlpZiAoZW1wdHkoJHRoaXMtPmxpbmspKSAkdGhpcy0+bGluayA9ICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImxpbmsiKTsKCQkvL3Rlc3QgZGUgdmFsaWRpdOkgZGVzIHBhcmFtZXRyZXMKCQlpZiAoZW1wdHkoJHRoaXMtPmZpbGUpKXsKCQkJJHRoaXMtPmF0dGFjaEVyciA9ICR0aGlzLT53aWtpLT5Gb3JtYXQoIi8vYWN0aW9uIGF0dGFjaCA6IHBhcmFt6HRyZSAqKmZpbGUqKiBtYW5xdWFudC8vLS0tIik7CgkJfQoJCWlmICgkdGhpcy0+aXNQaWN0dXJlKCkgJiYgZW1wdHkoJHRoaXMtPmRlc2MpKXsKCQkJJHRoaXMtPmF0dGFjaEVyciAuPSAkdGhpcy0+d2lraS0+Rm9ybWF0KCIvL2FjdGlvbiBhdHRhY2ggOiBwYXJhbeh0cmUgKipkZXNjKiogb2JsaWdhdG9pcmUgcG91ciB1bmUgaW1hZ2UvLy0tLSIpOwoJCX0KCQlpZiAoJHRoaXMtPndpa2ktPkdldFBhcmFtZXRlcigiY2xhc3MiKSkgewogICAJCSRhcnJheV9jbGFzc2VzID0gZXhwbG9kZSgiICIsICR0aGlzLT53aWtpLT5HZXRQYXJhbWV0ZXIoImNsYXNzIikpOwogICAJCWZvcmVhY2ggKCRhcnJheV9jbGFzc2VzIGFzICRjKSB7ICR0aGlzLT5jbGFzc2VzID0gJHRoaXMtPmNsYXNzZXMgLiAiYXR0YWNoXyIgLiAkYyAuICIgIjsgfQogICAJCSR0aGlzLT5jbGFzc2VzID0gdHJpbSgkdGhpcy0+Y2xhc3Nlcyk7CgkJfQoJfQoJLyoqCgkqIEFmZmljaGUgbGUgZmljaGllciBsaekgY29tbWUgdW5lIGltYWdlCgkqLwoJZnVuY3Rpb24gc2hvd0FzSW1hZ2UoJGZ1bGxGaWxlbmFtZSl7CgkJLy9jJ2VzdCB1bmUgaW1hZ2UgOiBiYWxpc2UgPElNRy4uLi4vPgoJCSRpbWcgPQkiPGltZyBzcmM9XCIiLiR0aGlzLT5HZXRTY3JpcHRQYXRoKCkuJGZ1bGxGaWxlbmFtZS4iXCIgIi4KCQkJCQkiYWx0PVwiIi4kdGhpcy0+ZGVzYy4oJHRoaXMtPmxpbms/IlxuTGllbiB2ZXJzOiAkdGhpcy0+bGluayI6IiIpLiJcIiAvPiI7CgkJLy90ZXN0IHNpIGMnZXN0IHVuZSBpbWFnZSBzZW5zaWJsZQoJCWlmKCFlbXB0eSgkdGhpcy0+bGluaykpewoJCQkvL2MnZXN0IHVuZSBpbWFnZSBzZW5zaWJsZQoJCQkvL3Rlc3Qgc2kgbGUgbGllbiBlc3QgdW4gbGllbiBpbnRlcndpa2kKCQkJaWYgKHByZWdfbWF0Y2goIi9eKFtBLVpdW0EtWixhLXpdKylbOl0oW0EtWixhLXosMC05XSopJC9zIiwgJHRoaXMtPmxpbmssICRtYXRjaGVzKSkKCQkJeyAgLy9tb2RpZmllICRsaW5rIHBvdXIg6nRyZSB1biBsaWVuIHZlcnMgdW4gYXV0cmUgd2lraQoJCQkJJHRoaXMtPmxpbmsgPSAkdGhpcy0+d2lraS0+R2V0SW50ZXJXaWtpVXJsKCRtYXRjaGVzWzFdLCAkbWF0Y2hlc1syXSk7CgkJCX0KCQkJLy9jYWxjdWxlIGR1IGxpZW4KCQkJJG91dHB1dCA9ICR0aGlzLT53aWtpLT5Gb3JtYXQoJ1tbJy4kdGhpcy0+bGluay4iICR0aGlzLT5maWxlXV0iKTsKCQkJJG91dHB1dCA9IGVyZWdpX3JlcGxhY2UoIj4kdGhpcy0+ZmlsZTwiLCI+JGltZzwiLCRvdXRwdXQpOy8vaW5zZXJ0aW9uIGR1IHRhZyA8aW1nLi4uPiBkYW5zIGxlIGxpZW4KCQl9ZWxzZXsKCQkJLy9jZSBuJ2VzdCBwYXMgdW5lIGltYWdlIHNlbnNpYmxlCgkJCSRvdXRwdXQgPSAkaW1nOwoJCX0KCQkkb3V0cHV0ID0gKCR0aGlzLT5jbGFzc2VzPyI8c3BhbiBjbGFzcz1cIiR0aGlzLT5jbGFzc2VzXCI+JG91dHB1dDwvc3Bhbj4iOiRvdXRwdXQpOwoJCWVjaG8gJG91dHB1dDsKCQkkdGhpcy0+c2hvd1VwZGF0ZUxpbmsoKTsKCX0KCS8qKgoJKiBBZmZpY2hlIGxlIGZpY2hpZXIgbGnpIGNvbW1lIHVuIGxpZW4KCSovCglmdW5jdGlvbiBzaG93QXNMaW5rKCRmdWxsRmlsZW5hbWUpewoJCSR1cmwgPSAkdGhpcy0+d2lraS0+aHJlZigiZG93bmxvYWQiLCR0aGlzLT53aWtpLT5HZXRQYWdlVGFnKCksImZpbGU9JHRoaXMtPmZpbGUiKTsKCQllY2hvICc8YSBocmVmPSInLiR1cmwuJyI+Jy4oJHRoaXMtPmRlc2M/JHRoaXMtPmRlc2M6JHRoaXMtPmZpbGUpLiI8L2E+IjsKCQkkdGhpcy0+c2hvd1VwZGF0ZUxpbmsoKTsKCX0KCS8vIEFmZmljaGUgbGUgZmljaGllciBsaWVlIGNvbW1lIHVuIGZpY2hpZXIgYXVkaW8KCWZ1bmN0aW9uIHNob3dBc0F1ZGlvKCRmdWxsRmlsZW5hbWUpewoJCSRvdXRwdXQgPSAiPG9iamVjdCB0eXBlPVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIiBkYXRhPVwidG9vbHMvcGxheWVyL2Rld3BsYXllci5zd2Y/c29uPSRmdWxsRmlsZW5hbWUmYW1wO2JnY29sb3I9RkZGRkZGXCIgd2lkdGg9XCIyMDBcIgogaGVpZ2h0PVwiMjBcIj48cGFyYW0gbmFtZT1cIm1vdmllXCIgdmFsdWU9XCJ0b29scy9wbGF5ZXIvZGV3cGxheWVyLnN3Zj9zb249JGZ1bGxGaWxlbmFtZSZhbXA7Ymdjb2xvcj1GRkZGRkZcIi8+PC9vYmplY3Q+IjsKCQkkb3V0cHV0IC49ICI8YnI+PC9icj4iOwoJCSRvdXRwdXQgLj0iWzxhIGhyZWY9XCIkZnVsbEZpbGVuYW1lXCI+bXAzPC9hPl0iOwoJCWVjaG8gJG91dHB1dDsKCQkkdGhpcy0+c2hvd1VwZGF0ZUxpbmsoKTsKCX0KCQoJCS8vIEFmZmljaGUgbGUgZmljaGllciBsaWVlIGNvbW1lIHVuIGZpY2hpZXIgbWluZCBtYXAgIGZyZWVtaW5kCglmdW5jdGlvbiBzaG93QXNGcmVlTWluZE1pbmRNYXAoJGZ1bGxGaWxlbmFtZSl7CiAgICAgICAgJGhhdXQ9JHRoaXMtPmhhdXQ7CiAgICAgICAgJGxhcmdlPSR0aGlzLT5sYXJnZTsKICAgICAgICBpZiAoISRoYXV0KSAkaGF1dCA9ICI2NTAiOwogICAgICAgIGlmICghJGxhcmdlKSAkbGFyZ2UgPSAiMTAwJSI7CiAgICAgICAgJG1pbmRtYXBfdXJsID0gJHRoaXMtPndpa2ktPmhyZWYoImRvd25sb2FkIiwkdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpLCJmaWxlPSR0aGlzLT5maWxlIik7CiAgICAgCSRvdXRwdXQgPSAiPG9iamVjdCB0eXBlPVwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIiBkYXRhPVwidG9vbHMvZnJlZW1pbmQvdmlzb3JGcmVlbWluZC5zd2Y/aW5pdExvYWRGaWxlPS4uLy4uLyRmdWxsRmlsZW5hbWVcIiB3aWR0aD1cIjEwMCVcIgogICAgICAgIGhlaWdodD1cIjY1MFwiPjxwYXJhbSBuYW1lPVwibWluZG1hcFwiIHZhbHVlPVwidG9vbHMvZnJlZW1pbmQvdmlzb3JGcmVlbWluZC5zd2Y/aW5pdExvYWRGaWxlPS4uLy4uLyRmdWxsRmlsZW5hbWVcIi8+PC9vYmplY3Q+IjsKCQkkb3V0cHV0IC49ICI8YnI+PC9icj4iOwoJCSRvdXRwdXQgLj0iWzxhIGhyZWY9XCIkZnVsbEZpbGVuYW1lXCI+bW08L2E+XSI7CgkJZWNobyAkb3V0cHV0OwoJCSR0aGlzLT5zaG93VXBkYXRlTGluaygpOwogICAgICB9CgkJCgkJCgkvLyBFbmQgUGFzdGUKCQkKCQkKCQoJLyoqCgkqIEFmZmljaGUgbGUgbGllbiBkZSBtaXNlIOAgam91cgoJKi8KCWZ1bmN0aW9uIHNob3dVcGRhdGVMaW5rKCl7CgkJZWNobwkiIDxhIGhyZWY9XCIiLgoJCQkJJHRoaXMtPndpa2ktPmhyZWYoInVwbG9hZCIsJHRoaXMtPndpa2ktPkdldFBhZ2VUYWcoKSwiZmlsZT0kdGhpcy0+ZmlsZSIpLgoJCQkJIlwiIHRpdGxlPSdNaXNlIOAgam91cic+Ii4kdGhpcy0+YXR0YWNoQ29uZmlnWyd1cGRhdGVfc3ltYm9sZSddLiI8L2E+IjsKCX0KCS8qKgoJKiBBZmZpY2hlIHVuIGxpZW5zIGNvbW1lIHVuIGZpY2hpZXIgaW5leGlzdGFudAoJKi8KCWZ1bmN0aW9uIHNob3dGaWxlTm90RXhpdHMoKXsKCQllY2hvICR0aGlzLT5maWxlLiI8YSBocmVmPVwiIi4kdGhpcy0+d2lraS0+aHJlZigidXBsb2FkIiwkdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpLCJmaWxlPSR0aGlzLT5maWxlIikuIlwiPj88L2E+IjsKCX0KCS8qKgoJKiBBZmZpY2hlIGwnYXR0YWNoZW1lbnQKCSovCglmdW5jdGlvbiBkb0F0dGFjaCgpewoJCSR0aGlzLT5DaGVja1BhcmFtcygpOwoJCWlmICgkdGhpcy0+YXR0YWNoRXJyKSB7CgkJCWVjaG8gJHRoaXMtPmF0dGFjaEVycjsKCQkJcmV0dXJuOwoJCX0KCQkkZnVsbEZpbGVuYW1lID0gJHRoaXMtPkdldEZ1bGxGaWxlbmFtZSgpOwoJCS8vdGVzdCBkJ2V4aXN0YW5jZSBkdSBmaWNoaWVyCgkJaWYoKCFmaWxlX2V4aXN0cygkZnVsbEZpbGVuYW1lKSl8fCgkZnVsbEZpbGVuYW1lPT0nJykpewoJCQkkdGhpcy0+c2hvd0ZpbGVOb3RFeGl0cygpOwoJCQlyZXR1cm47CgkJfQogICAgICAvL2xlIGZpY2hpZXIgZXhpc3RlIDogYWZmaWNoYWdlIGVuIGZvbmN0aW9uIGR1IHR5cGUKICAgICAgaWYoJHRoaXMtPmlzUGljdHVyZSgpKXsKICAgICAgCSR0aGlzLT5zaG93QXNJbWFnZSgkZnVsbEZpbGVuYW1lKTsKICAgICAgfWVsc2V7CgkgICAgICBpZigkdGhpcy0+aXNBdWRpbygpKXsKCSAgICAgIAkJJHRoaXMtPnNob3dBc0F1ZGlvKCRmdWxsRmlsZW5hbWUpOwoJICAgICAgCX0KCSAgICAgIAllbHNlIHsKCSAgICAgIAkJICBpZigkdGhpcy0+aXNGcmVlTWluZE1pbmRNYXAoKSl7CgkJCSAgICAgIAkkdGhpcy0+c2hvd0FzRnJlZU1pbmRNaW5kTWFwKCRmdWxsRmlsZW5hbWUpOwoJICAgICAgCQkgIH0KCSAgICAgIAkJICBlbHNlIHsKCQkJICAgICAgCSR0aGlzLT5zaG93QXNMaW5rKCRmdWxsRmlsZW5hbWUpOwoJICAgICAgCQkgIH0KCSAgICAgIAl9CiAgICAgIH0KCX0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCUZPTlRJT05TIEQnVVBMT0FEIERFIEZJQ0hJRVJTCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgkvKioKCSogVHJhaXRlbWVudCBkZXMgdXBsb2FkcwoJKi8KCWZ1bmN0aW9uIGRvVXBsb2FkKCl7CgkJJEhhc0FjY2Vzc1dyaXRlPSR0aGlzLT53aWtpLT5IYXNBY2Nlc3MoIndyaXRlIik7CgkJaWYgKCRIYXNBY2Nlc3NXcml0ZSl7CiAgICAgICAgIHN3aXRjaCAoJF9TRVJWRVJbIlJFUVVFU1RfTUVUSE9EIl0pIHsKICAgICAgICAgCWNhc2UgJ0dFVCcgOiAkdGhpcy0+c2hvd1VwbG9hZEZvcm0oKTsgYnJlYWs7CiAgICAgICAgIAljYXNlICdQT1NUJzogJHRoaXMtPnBlcmZvcm1VcGxvYWQoKTsgYnJlYWs7CiAgICAgICAgIAlkZWZhdWx0IDogZWNobyAkdGhpcy0+d2lraS0+Rm9ybWF0KCIvL01ldGhvZGUgZGUgcmVxdWV0ZSBpbnZhbGlkZS8vLS0tIik7CgkJCX0KCQl9ZWxzZXsKCQkJZWNobyAkdGhpcy0+d2lraS0+Rm9ybWF0KCIvL1ZvdXMgbidhdmV6IHBhcyBsJ2FjY+hzIGVuIOljcml0dXJlIOAgY2V0dGUgcGFnZS8vLS0tIik7CgkJCWVjaG8gJHRoaXMtPndpa2ktPkZvcm1hdCgiUmV0b3VyIOAgbGEgcGFnZSAiLiR0aGlzLT53aWtpLT5HZXRQYWdlVGFnKCkpOwoJCX0KCX0KCS8qKgoJKiBGb3JtdWxhaXJlIGQndXBsb2FkCgkqLwoJZnVuY3Rpb24gc2hvd1VwbG9hZEZvcm0oKXsKCQllY2hvICR0aGlzLT53aWtpLT5Gb3JtYXQoIj09PT1Gb3JtdWxhaXJlIGQnZW52b2lzIGRlIGZpY2hpZXI9PT09XG4tLS0iKTsKCQkkdGhpcy0+ZmlsZSA9ICRfR0VUWydmaWxlJ107CgkJZWNobyAJJHRoaXMtPndpa2ktPkZvcm1hdCgiKipFbnZvaXMgZHUgZmljaGllciAkdGhpcy0+ZmlsZSA6KipcbiIpCgkJCQkuIjxmb3JtIGVuY3R5cGU9XCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgbmFtZT1cImZybVVwbG9hZFwiIG1ldGhvZD1cIlBPU1RcIiBhY3Rpb249XCIiLiRfU0VSVkVSWyJQSFBfU0VMRiJdLiJcIj5cbiIKCQkJCS4iCTxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cIndpa2lcIiB2YWx1ZT1cIiIuJHRoaXMtPndpa2ktPkdldFBhZ2VUYWcoKS4iL3VwbG9hZFwiIC8+XG4iCgkJCQkuIgk8aW5wdXQgVFlQRT1cImhpZGRlblwiIG5hbWU9XCJNQVhfRklMRV9TSVpFXCIgdmFsdWU9XCIiLiR0aGlzLT5hdHRhY2hDb25maWdbJ21heF9maWxlX3NpemUnXS4iXCIgLz5cbiIKCQkJCS4iCTxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgbmFtZT1cImZpbGVcIiB2YWx1ZT1cIiR0aGlzLT5maWxlXCIgLz5cbiIKCQkJCS4iCTxpbnB1dCB0eXBlPVwiZmlsZVwiIG5hbWU9XCJ1cEZpbGVcIiBzaXplPVwiNTBcIiAvPjxiciAvPlxuIgoJCQkJLiIJPGlucHV0IHR5cGU9XCJzdWJtaXRcIiB2YWx1ZT1cIkVudm95ZXJcIiAvPlxuIgoJCQkJLiI8L2Zvcm0+XG4iOwoJfQoJLyoqCgkqIEV4ZWN1dGUgbCd1cGxvYWQKCSovCglmdW5jdGlvbiBwZXJmb3JtVXBsb2FkKCl7CgkJJHRoaXMtPmZpbGUgPSAkX1BPU1RbJ2ZpbGUnXTsKCgkJJGRlc3RGaWxlID0gJHRoaXMtPkdldEZ1bGxGaWxlbmFtZSh0cnVlKTsJLy9ub20gZHUgZmljaGllciBkZXN0aW5hdGlvbgoJCS8vdGVzdCBkZSBsYSB0YWlsbGUgZHUgZmljaGllciByZWN1CgkJaWYoJF9GSUxFU1sndXBGaWxlJ11bJ2Vycm9yJ109PTApewoJCQkkc2l6ZSA9IGZpbGVzaXplKCRfRklMRVNbJ3VwRmlsZSddWyd0bXBfbmFtZSddKTsKCQkJaWYgKCRzaXplID4gJHRoaXMtPmF0dGFjaENvbmZpZ1snbWF4X2ZpbGVfc2l6ZSddKXsKCQkJCSRfRklMRVNbJ3VwRmlsZSddWydlcnJvciddPTI7CgkJCX0KCQl9CgkJc3dpdGNoICgkX0ZJTEVTWyd1cEZpbGUnXVsnZXJyb3InXSl7CgkJCWNhc2UgMDoKCQkJCSRzcmNGaWxlID0gJF9GSUxFU1sndXBGaWxlJ11bJ3RtcF9uYW1lJ107CgkJCQlpZiAobW92ZV91cGxvYWRlZF9maWxlKCRzcmNGaWxlLCRkZXN0RmlsZSkpewoJCQkJCWNobW9kKCRkZXN0RmlsZSwwNjQ0KTsKCQkJCQloZWFkZXIoIkxvY2F0aW9uOiAiLiR0aGlzLT53aWtpLT5ocmVmKCIiLCR0aGlzLT53aWtpLT5HZXRQYWdlVGFnKCksIiIpKTsKCQkJCX1lbHNlewoJCQkJCWVjaG8gJHRoaXMtPndpa2ktPkZvcm1hdCgiLy9FcnJldXIgbG9ycyBkdSBk6XBsYWNlbWVudCBkdSBmaWNoaWVyIHRlbXBvcmFpcmUvLy0tLSIpOwoJCQkJfQoJCQkJYnJlYWs7CgkJCWNhc2UgMToKCQkJCWVjaG8gJHRoaXMtPndpa2ktPkZvcm1hdCgiLy9MZSBmaWNoaWVyIHTpbOljaGFyZ+kgZXhj6GRlIGxhIHRhaWxsZSBkZSB1cGxvYWRfbWF4X2ZpbGVzaXplLCBjb25maWd1cukgZGFucyBsZSBwaHAuaW5pLi8vLS0tIik7CgkJCQlicmVhazsKCQkJY2FzZSAyOgoJCQkJZWNobyAkdGhpcy0+d2lraS0+Rm9ybWF0KCIvL0xlIGZpY2hpZXIgdOls6WNoYXJn6SBleGPoZGUgbGEgdGFpbGxlIGRlIE1BWF9GSUxFX1NJWkUsIHF1aSBhIOl06SBzcOljaWZp6WUgZGFucyBsZSBmb3JtdWxhaXJlIEhUTUwuLy8tLS0iKTsKCQkJCWJyZWFrOwoJCQljYXNlIDM6CgkJCQllY2hvICR0aGlzLT53aWtpLT5Gb3JtYXQoIi8vTGUgZmljaGllciBuJ2Eg6XTpIHF1ZSBwYXJ0aWVsbGVtZW50IHTpbOljaGFyZ+kuLy8tLS0iKTsKCQkJCWJyZWFrOwoJCQljYXNlIDQ6CgkJCQllY2hvICR0aGlzLT53aWtpLT5Gb3JtYXQoIi8vQXVjdW4gZmljaGllciBuJ2Eg6XTpIHTpbOljaGFyZ+kuLy8tLS0iKTsKCQkJCWJyZWFrOwoJCX0KCQllY2hvICR0aGlzLT53aWtpLT5Gb3JtYXQoIlJldG91ciDgIGxhIHBhZ2UgIi4kdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpKTsKCX0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCUZVTkNUSU9OUyBERSBET1dOTE9BRCBERSBGSUNISUVSUwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoJZnVuY3Rpb24gZG9Eb3dubG9hZCgpewoJCSR0aGlzLT5maWxlID0gJF9HRVRbJ2ZpbGUnXTsKCQkkZnVsbEZpbGVuYW1lID0gJHRoaXMtPkdldFVwbG9hZFBhdGgoKS4nLycuYmFzZW5hbWUocmVhbHBhdGgoJHRoaXMtPmZpbGUpLiR0aGlzLT5maWxlKTsKLy8JCSRmdWxsRmlsZW5hbWUgPSAkdGhpcy0+R2V0VXBsb2FkUGF0aCgpLicvJy4kdGhpcy0+ZmlsZTsKCQlpZighZmlsZV9leGlzdHMoJGZ1bGxGaWxlbmFtZSkpewoJCQkkZnVsbEZpbGVuYW1lID0gJHRoaXMtPkdldEZ1bGxGaWxlbmFtZSgpOwoJCQkkZGxGaWxlbmFtZSA9ICR0aGlzLT5maWxlOwoJCQkkc2l6ZSA9IGZpbGVzaXplKCRmdWxsRmlsZW5hbWUpOwoJCX1lbHNlewoJCQkkZmlsZSA9ICR0aGlzLT5kZWNvZGVMb25nRmlsZW5hbWUoJGZ1bGxGaWxlbmFtZSk7CgkJCSRzaXplID0gJGZpbGVbJ3NpemUnXTsKCQkJJGRsRmlsZW5hbWUgPSRmaWxlWyduYW1lJ10uJy4nLiRmaWxlWydleHQnXTsKCQl9CiAgICAgICAgaGVhZGVyKCJFeHBpcmVzOiBNb24sIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpOwogICAgICAgIGhlYWRlcigiQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9mb3JjZS1kb3dubG9hZCIpOwogICAgICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgICAgICBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsvLyBIVFRQLzEuMAogICAgICAgIGhlYWRlcignTGFzdC1Nb2RpZmllZDogJy5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzJykgLiAnIEdNVCcpOwogICAgICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUnKTsgLy8gSFRUUC8xLjEKICAgICAgICBoZWFkZXIoJ0NhY2hlLUNvbnRyb2w6IHByZS1jaGVjaz0wLCBwb3N0LWNoZWNrPTAsIG1heC1hZ2U9MCcpOyAvLyBIVFRQLzEuMQogICAgICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogbm9uZScpOwogICAgICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07IG5hbWU9IicgLiAkZGxGaWxlbmFtZSAuICciJyk7IC8vVGhpcyBzaG91bGQgd29yayBmb3IgdGhlIHJlc3QKICAgICAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXRzdHJlYW07IG5hbWU9IicgLiAkZGxGaWxlbmFtZSAuICciJyk7IC8vVGhpcyBzaG91bGQgd29yayBmb3IgSUUgJiBPcGVyYQogICAgICAgIGhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9kb3dubG9hZDsgbmFtZT0iJyAuICRkbEZpbGVuYW1lIC4gJyInKTsgLy9UaGlzIHNob3VsZCB3b3JrIGZvciBJRSAmIE9wZXJhCiAgICAgICAgaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJy4kZGxGaWxlbmFtZS4nIicpOwogICAgICAgIGhlYWRlcigiQ29udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlciIpOwogICAgICAgIGhlYWRlcigiQ29udGVudC1sZW5ndGg6ICRzaXplIi4nYnl0ZXMnKTsKCQlyZWFkZmlsZSgkZnVsbEZpbGVuYW1lKTsKCX0KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCUZPTlRJT05TIERVIEZJTEVNQU5BR0VSCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCglmdW5jdGlvbiBkb0ZpbGVNYW5hZ2VyKCl7CgkJJGRvID0gJF9HRVRbJ2RvJ10/JF9HRVRbJ2RvJ106Jyc7CgkJc3dpdGNoICgkZG8pewoJCQljYXNlICdyZXN0b3JlJyA6CgkJCQkkdGhpcy0+Zm1SZXN0b3JlKCk7CgkJCQkkdGhpcy0+Zm1TaG93KHRydWUpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2VyYXNlJyA6CgkJCQkkdGhpcy0+Zm1FcmFzZSgpOwoJCQkJJHRoaXMtPmZtU2hvdyh0cnVlKTsKCQkJCWJyZWFrOwoJCQljYXNlICdkZWwnIDoKCQkJCSR0aGlzLT5mbURlbGV0ZSgpOwoJCQkJJHRoaXMtPmZtU2hvdygpOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3RyYXNoJyA6CgkJCQkkdGhpcy0+Zm1TaG93KHRydWUpOyBicmVhazsKCQkJY2FzZSAnZW1wdHl0cmFzaCcgOgoJCQkJJHRoaXMtPmZtRW1wdHlUcmFzaCgpOwkvL3BhcyBkZSBicmVhayBjYXIgYXByZXMgdW4gZW1wdHl0cmFzaCA9PiByZXRvdXIgYXUgZ2VzdGlvbm5haXJlCgkJCWRlZmF1bHQgOgoJCQkJJHRoaXMtPmZtU2hvdygpOwoJCX0KCX0KCS8qKgoJKiBBZmZpY2hlIGxhIGxpc3RlIGRlcyBmaWNoaWVycwoJKi8KCWZ1bmN0aW9uIGZtU2hvdygkdHJhc2g9ZmFsc2UpewoJCSRmbVRpdGxlUGFnZSA9ICR0aGlzLT53aWtpLT5Gb3JtYXQoIj09PT1HZXN0aW9uIGRlcyBmaWNoaWVycyBhdHRhY2jpcyDgICBsYSBwYWdlICIuJHRoaXMtPndpa2ktPnRhZy4iPT09PVxuLS0tIik7CgkJaWYoJHRyYXNoKXsKCQkJLy9BdmVydGlzc2VtZW50CgkJCSRmbVRpdGxlUGFnZSAuPSAnPGRpdiBjbGFzcz0icHJldl9hbGVydCI+TGVzIGZpY2hpZXJzIGVmZmFj6XMgc3VyIGNldHRlIHBhZ2UgbGUgc29udCBk6WZpbml0aXZlbWVudDwvZGl2Pic7CgkJCS8vUGllZCBkdSB0YWJsZWF1CgkJCSR1cmwgPSAkdGhpcy0+d2lraS0+TGluaygkdGhpcy0+d2lraS0+dGFnLCdmaWxlbWFuYWdlcicsJ0dlc3Rpb24gZGVzIGZpY2hpZXJzJyk7CiAgICAgIAkkZm1Gb290VGFibGUgPQknCTx0Zm9vdD4nLiJcbiIuCiAgICAgIAkJCQkJCScJCTx0cj4nLiJcbiIuCiAgICAgIAkJCQkJCScJCQk8dGQgY29sc3Bhbj0iNiI+Jy4kdXJsLic8L3RkPicuIlxuIjsKCQkJJHVybCA9ICR0aGlzLT53aWtpLT5MaW5rKCR0aGlzLT53aWtpLT50YWcsJ2ZpbGVtYW5hZ2VyJmRvPWVtcHR5dHJhc2gnLCdWaWRlciBsYSBwb3ViZWxsZScpOwogICAgICAJJGZtRm9vdFRhYmxlLj0JJwkJCTx0ZD4nLiR1cmwuJzwvdGQ+Jy4iXG4iLgogICAgICAJCQkJCQknCQk8L3RyPicuIlxuIi4KICAgICAgCQkJCQkJJwk8L3Rmb290PicuIlxuIjsKCQl9ZWxzZXsKCQkJLy9waWVkIGR1IHRhYmxlYXUKICAgICAgICAgJHVybCA9ICc8YSBocmVmPSInLiR0aGlzLT53aWtpLT5ocmVmKCdmaWxlbWFuYWdlcicsJHRoaXMtPndpa2ktPkdldFBhZ2VUYWcoKSwnZG89dHJhc2gnKS4nIiB0aXRsZT0iUG91YmVsbGUiPicuJHRoaXMtPmF0dGFjaENvbmZpZ1snZm1UcmFzaF9zeW1ib2xlJ10uIjwvYT4iOwogICAgICAJJGZtRm9vdFRhYmxlID0JJwk8dGZvb3Q+Jy4iXG4iLgogICAgICAJCQkJCQknCQk8dHI+Jy4iXG4iLgogICAgICAJCQkJCQknCQkJPHRkIGNvbHNwYW49IjYiPicuJHVybC4nPC90ZD4nLiJcbiIuCiAgICAgIAkJCQkJCScJCTwvdHI+Jy4iXG4iLgogICAgICAJCQkJCQknCTwvdGZvb3Q+Jy4iXG4iOwoJCX0KCQkvL2VudGV0ZSBkdSB0YWJsZWF1CgkJJGZtSGVhZFRhYmxlID0gJwk8dGhlYWQ+Jy4iXG4iLgoJCQkJCQkJJwkJPHRyPicuIlxuIi4KCQkJCQkJCScJCQk8dGQ+Jm5ic3A7PC90ZD4nLiJcbiIuCgkJCQkJCQknCQkJPHRkPk5vbSBkdSBmaWNoaWVyPC90ZD4nLiJcbiIuCgkJCQkJCQknCQkJPHRkPk5vbSBy6WVsIGR1IGZpY2hpZXI8L3RkPicuIlxuIi4KCQkJCQkJCScJCQk8dGQ+VGFpbGxlPC90ZD4nLiJcbiIuCgkJCQkJCQknCQkJPHRkPlLpdmlzaW9uIGRlIGxhIHBhZ2U8L3RkPicuIlxuIi4KCQkJCQkJCScJCQk8dGQ+Uul2aXNvbiBkdSBmaWNoaWVyPC90ZD4nLiJcbiI7CgkJaWYoJHRyYXNoKXsKICAgICAgICAgJGZtSGVhZFRhYmxlLj0gJwkJCTx0ZD5TdXBwcmVzc2lvbjwvdGQ+Jy4iXG4iOwoJCX0KCQkkZm1IZWFkVGFibGUuPSAnCQk8L3RyPicuIlxuIi4KCQkJCQkJCScJPC90aGVhZD4nLiJcbiI7CgkJLy9jb3JwcyBkdSB0YWJsZWF1CgkJJGZpbGVzID0gJHRoaXMtPmZtR2V0RmlsZXMoJHRyYXNoKTsKICAJCSRmaWxlcyA9ICR0aGlzLT5zb3J0QnlOYW1lUmV2RmlsZSgkZmlsZXMpOwoKCQkkZm1Cb2R5VGFibGUgPQknCTx0Ym9keT4nLiJcbiI7CgkJJGkgPSAwOwoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSl7CgkJCSRpKys7CgkJCSRjb2xvcj0gKCRpJTI/InRhYmxlRk1Db2wxIjoidGFibGVGTUNvbDIiKTsKCQkJLy9saWVuIGRlIHN1cHByZXNzaW9uCgkJCWlmICgkdHJhc2gpewoJCQkJJHVybCA9ICR0aGlzLT53aWtpLT5ocmVmKCdmaWxlbWFuYWdlcicsJHRoaXMtPndpa2ktPkdldFBhZ2VUYWcoKSwnZG89ZXJhc2UmZmlsZT0nLiRmaWxlWydyZWFsbmFtZSddKTsKCQkJfWVsc2V7CgkJCQkkdXJsID0gJHRoaXMtPndpa2ktPmhyZWYoJ2ZpbGVtYW5hZ2VyJywkdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpLCdkbz1kZWwmZmlsZT0nLiRmaWxlWydyZWFsbmFtZSddKTsKCQkJfQoJCQkkZGVsbGluayA9ICc8YSBocmVmPSInLiR1cmwuJyIgdGl0bGU9IlN1cHByaW1lciI+Jy4kdGhpcy0+YXR0YWNoQ29uZmlnWydmbURlbGV0ZV9zeW1ib2xlJ10uIjwvYT4iOwoJCQkvL2xpZW4gZGUgcmVzdGF1cmF0aW9uCgkJCSRyZXN0bGluayA9ICcnOwoJCQlpZiAoJHRyYXNoKXsKCQkJCSR1cmwgPSAkdGhpcy0+d2lraS0+aHJlZignZmlsZW1hbmFnZXInLCR0aGlzLT53aWtpLT5HZXRQYWdlVGFnKCksJ2RvPXJlc3RvcmUmZmlsZT0nLiRmaWxlWydyZWFsbmFtZSddKTsKCQkJCSRyZXN0bGluayA9ICc8YSBocmVmPSInLiR1cmwuJyIgdGl0bGU9IlJlc3RhdXJlciI+Jy4kdGhpcy0+YXR0YWNoQ29uZmlnWydmbVJlc3RvcmVfc3ltYm9sZSddLiI8L2E+IjsKCQkJfQoKCQkJLy9saWVuIHBvdXIgZG93bmxvYWRlciBsZSBmaWNoaWVyCgkJCSR1cmwgPSAkdGhpcy0+d2lraS0+aHJlZigiZG93bmxvYWQiLCR0aGlzLT53aWtpLT5HZXRQYWdlVGFnKCksImZpbGU9Ii4kZmlsZVsncmVhbG5hbWUnXSk7CgkJCSRkbExpbmsgPSAnPGEgaHJlZj0iJy4kdXJsLiciPicuJGZpbGVbJ25hbWUnXS4nLicuJGZpbGVbJ2V4dCddLiI8L2E+IjsKCQkJJGZtQm9keVRhYmxlIC49IAknCQk8dHIgY2xhc3M9IicuJGNvbG9yLiciPicuIlxuIi4KCQkJCQkJCQkJJwkJCTx0ZD4nLiRkZWxsaW5rLicgJy4kcmVzdGxpbmsuJzwvdGQ+Jy4iXG4iLgoJCQkJCQkJCQknCQkJPHRkPicuJGRsTGluay4nPC90ZD4nLiJcbiIuCgkJCQkJCQkJCScJCQk8dGQ+Jy4kZmlsZVsncmVhbG5hbWUnXS4nPC90ZD4nLiJcbiIuCgkJCQkJCQkJCScJCQk8dGQ+Jy4kZmlsZVsnc2l6ZSddLic8L3RkPicuIlxuIi4KCQkJCQkJCQkJJwkJCTx0ZD4nLiR0aGlzLT5wYXJzZURhdGUoJGZpbGVbJ2RhdGVwYWdlJ10pLic8L3RkPicuIlxuIi4KCQkJCQkJCQkJJwkJCTx0ZD4nLiR0aGlzLT5wYXJzZURhdGUoJGZpbGVbJ2RhdGV1cGxvYWQnXSkuJzwvdGQ+Jy4iXG4iOwoJCQlpZigkdHJhc2gpewogICAgICAgICAJJGZtQm9keVRhYmxlLj0gJwkJCTx0ZD4nLiR0aGlzLT5wYXJzZURhdGUoJGZpbGVbJ3RyYXNoZGF0ZSddKS4nPC90ZD4nLiJcbiI7CgkJCX0KCQkJJGZtQm9keVRhYmxlIC49IAknCQk8L3RyPicuIlxuIjsKCQl9CgkJJGZtQm9keVRhYmxlIC49ICcJPC90Ym9keT4nLiJcbiI7CgkJLy9waWVkIGRlIGxhIHBhZ2UKCQkkZm1Gb290ZXJQYWdlID0gIi0tLVxuLS0tLS1cbltbIi4kdGhpcy0+d2lraS0+dGFnLiIgUmV0b3VyIOAgbGEgcGFnZSAiLiR0aGlzLT53aWtpLT50YWcuIl1dXG4iOwoJCS8vYWZmaWNoYWdlCgkJZWNobyAkZm1UaXRsZVBhZ2UuIlxuIjsKCQllY2hvICc8dGFibGUgY2xhc3M9InRhYmxlRk0iIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiPicuIlxuIi4kZm1IZWFkVGFibGUuJGZtRm9vdFRhYmxlLiRmbUJvZHlUYWJsZS4nPC90YWJsZT4nLiJcbiI7CgkJZWNobyAkdGhpcy0+d2lraS0+Rm9ybWF0KCRmbUZvb3RlclBhZ2UpOwoJfQoJLyoqCgkqIFJlbnZvaWUgbGEgbGlzdGUgZGVzIGZpY2hpZXJzCgkqLwoJZnVuY3Rpb24gZm1HZXRGaWxlcygkdHJhc2g9ZmFsc2UpewoJCSRwYXRoID0gJHRoaXMtPkdldFVwbG9hZFBhdGgoKTsKCQlpZigkdGhpcy0+aXNTYWZlTW9kZSl7CgkJCSRmaWxlUGF0dGVybiA9ICdeJy4kdGhpcy0+d2lraS0+R2V0UGFnZVRhZygpLidfLipfXGR7MTR9X1xkezE0fVwuLionOwoJCX1lbHNlewoJCQkkZmlsZVBhdHRlcm4gPSAnXi4qX1xkezE0fV9cZHsxNH1cLi4qJzsKCQl9CgkJaWYoJHRyYXNoKXsKCQkJJGZpbGVQYXR0ZXJuIC49ICd0cmFzaFxkezE0fSc7CgkJfWVsc2V7CgkJCSRmaWxlUGF0dGVybiAuPSAnW14odHJhc2hcZHsxNH0pXSc7CgkJfQoJCXJldHVybiAkdGhpcy0+c2VhcmNoRmlsZXMoJ2AnLiRmaWxlUGF0dGVybi4nJGAnLCAkcGF0aCk7Cgl9CgkvKioKCSogVmlkZSBsYSBwb3ViZWxsZQoJKi8KCWZ1bmN0aW9uIGZtRW1wdHlUcmFzaCgpewoJCSRmaWxlcyA9ICR0aGlzLT5mbUdldEZpbGVzKHRydWUpOwoJCWZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSl7CgkJCSRmaWxlbmFtZSA9ICRmaWxlWydwYXRoJ10uJy8nLiRmaWxlWydyZWFsbmFtZSddOwoJCQlpZihmaWxlX2V4aXN0cygkZmlsZW5hbWUpKXsKCQkJCXVubGluaygkZmlsZW5hbWUpOwoJCQl9CgkJfQoJfQoJLyoqCgkqIEVmZmFjZW1lbnQgZCd1biBmaWNoaWVyIGRhbnMgbGEgcG91YmVsbGUKCSovCglmdW5jdGlvbiBmbUVyYXNlKCl7CgkJJHBhdGggPSAkdGhpcy0+R2V0VXBsb2FkUGF0aCgpOwoJCSRmaWxlbmFtZSA9ICRwYXRoLicvJy4oJF9HRVRbJ2ZpbGUnXT8kX0dFVFsnZmlsZSddOicnKTsKCQlpZiAoZmlsZV9leGlzdHMoJGZpbGVuYW1lKSl7CgkJCXVubGluaygkZmlsZW5hbWUpOwoJCX0KCX0KCS8qKgoJKiBNZXQgbGUgZmljaGllciBhIGxhIHBvdWJlbGxlCgkqLwoJZnVuY3Rpb24gZm1EZWxldGUoKXsKCQkkcGF0aCA9ICR0aGlzLT5HZXRVcGxvYWRQYXRoKCk7CgkJJGZpbGVuYW1lID0gJHBhdGguJy8nLigkX0dFVFsnZmlsZSddPyRfR0VUWydmaWxlJ106JycpOwoJCWlmIChmaWxlX2V4aXN0cygkZmlsZW5hbWUpKXsKCQkJJHRyYXNoID0gJGZpbGVuYW1lLid0cmFzaCcuJHRoaXMtPmdldERhdGUoKTsKCQkJcmVuYW1lKCRmaWxlbmFtZSwgJHRyYXNoKTsKCQl9Cgl9CgkvKioKCSogUmVzdGF1cmF0aW9uIGQndW4gZmljaGllciBtaXMgYSBsYSBwb3ViZWxsZQoJKi8KCWZ1bmN0aW9uIGZtUmVzdG9yZSgpewoJCSRwYXRoID0gJHRoaXMtPkdldFVwbG9hZFBhdGgoKTsKCQkkZmlsZW5hbWUgPSAkcGF0aC4nLycuKCRfR0VUWydmaWxlJ10/JF9HRVRbJ2ZpbGUnXTonJyk7CgkJaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpewoJCQkkcmVzdEZpbGUgPSBwcmVnX3JlcGxhY2UoJ2BeKC4qXC4uKil0cmFzaFxkezE0fSRgJywgJyQxJywgJGZpbGVuYW1lKTsKCQkJcmVuYW1lKCRmaWxlbmFtZSwgJHJlc3RGaWxlKTsKCQl9Cgl9CgkvKioKCSogVHJpIHR1IHRhYmxlYXUgbGlzdGUgZGVzIGZpY2hpZXJzIHBhciBub20gcHVpcyBwYXIgZGF0ZSBkZSByZXZpc2lvbih1cGxvYWQpIGR1IGZpY2hpZXIsIG9yZHJlIGNyb2lzc2FudAoJKi8KCWZ1bmN0aW9uIHNvcnRCeU5hbWVSZXZGaWxlKCRmaWxlcyl7CgkJaWYgKCFmdW5jdGlvbl9leGlzdHMoJ0J5TmFtZUJ5UmV2RmlsZScpKXsKCQkJZnVuY3Rpb24gQnlOYW1lQnlSZXZGaWxlKCRmMSwkZjIpewoJCQkJJGYxTmFtZSA9ICRmMVsnbmFtZSddLicuJy4kZjFbJ2V4dCddOwoJCQkJJGYyTmFtZSA9ICRmMlsnbmFtZSddLicuJy4kZjJbJ2V4dCddOwoJCQkJJHJlcyA9IHN0cmNhc2VjbXAoJGYxTmFtZSwgJGYyTmFtZSk7CgkJCQlpZigkcmVzPT0wKXsKCQkJCQkvL3NpIG1lbWUgbm9tID0+IGNvbXBhcmUgbGEgcmV2aXNpb24gZHUgZmljaGllcgoJCQkJCSRyZXMgPSBzdHJjYXNlY21wKCRmMVsnZGF0ZXVwbG9hZCddLCAkZjJbJ2RhdGV1cGxvYWQnXSk7CgkJCQl9CgkJCQlyZXR1cm4gJHJlczsKCQkJfQoJCX0KCQl1c29ydCgkZmlsZXMsJ0J5TmFtZUJ5UmV2RmlsZScpOwoJCXJldHVybiAkZmlsZXM7Cgl9Cn0KfQo/Pgo=";s:25:"attach/actions/attach.php";s:8484:"PD9waHAKLyoKYXR0YWNoLnBocApDb2RlIG9yaWdpbmFsIGRlIGNlIGZpY2hpZXIgOiBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgKGMpIDIwMDIsIEhlbmRyaWsgTWFucyA8aGVuZHJpa0BtYW5zLmRlPgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBEYXZpZCBERUxPTgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBDaGFybGVzIE5FUE9URQpDb3B5cmlnaHQgIDIwMDMsMjAwNCAgRXJpYyBGRUxEU1RFSU4KQ29weXJpZ2h0ICAyMDAzICBKZWFuLVBhc2NhbCBNSUxDRU5UCkFsbCByaWdodHMgcmVzZXJ2ZWQuClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKYXJlIG1ldDoKMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCmRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCjMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwpkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCklNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqCQkJRE9DVU1FTlRBVElPTgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCglSRVNVTUUKTCdhY3Rpb24ge3thdHRhY2h9fSBwZXJtZXQgZGUgbGllciB1biBmaWNoaWVyIOAgdW5lIHBhZ2UsIGQndXBsb2FkZXIgY2UgZmljaGllcgpldCBkZSBkb3dubG9hZGVyIGNlIGZpY2hpZXIuIFNpIGxlIGZpY2hpZXIgZXN0IHVuZSBpbWFnZSwgZWxsZSBlc3QgYWZmaWNo6WUKZGFucyBsYSBwYWdlLiBMb3JzcXVlIGxlIGZpY2hpZXIgZXN0IHN1ciBsZSBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUgZmFpcmUKdW5lIG1pc2Ug4CBqb3VyIGRlIGNlbHVpLWNpLgoKCVBBUkFNRVRSRVMgREUgTCdBQ1RJT04KTCdhY3Rpb24ge3thdHRhY2h9fSBwcmVuZCBsZXMgcGFyYW3odHJlcyBzdWl2YW50cyA6CiAtIGZpbGUgb3UgYXR0YWNoZmlsZTogbm9tIGR1IGZpY2hpZXIgdGVsIHF1J2lsIHNlcmEgc3VyIGxlIHNlcnZldXIuIExlcwogICBlc3BhY2VzIHNvbnQgcmVtcGxhY+kgcGFyIGRlcyAiXyIuIChPQkxJR0FUT0lSRSkKIC0gZGVzYyBvdSBhdHRhY2hkZXNjOiBkZXNjcmlwdGlvbiBkdSBmaWNoaWVyLiBDJ2VzdCBsZSB0ZXh0ZSBxdWkgc2VyYSBhZmZpY2jpCiAgIGNvbW1lIGxpZW4gdmVycyBsZSBmaWNoaWVyIG91IGRhbnMgbCdhdHRyaWJ1dCBhbHQgZGUgbGEgYmFsaXNlIDxpbWc+LiBDZQogICBwYXJhbeh0cmUgZXN0IG9ibGlnYXRvaXJlIHBvdXIgbGVzIGltYWdlcyBwb3VyIOp0cmUgY29uZm9ybWUgYXUgWEhUTUwuCiAtIGRlbGV0ZSBvdSBhdHRhY2hkZWxldGU6IFNpIGNlIHBhcmFt6HRyZSBlc3Qgbm9uIHZpZGUgYWxvcnMgbGUgZmljaGllciBzZXJhCiAgIGVmZmFj6SBzdXIgbGUgc2VydmV1ci4KIC0gbGluayBvdSBhdHRhY2hsaW5rOiBVUkwgZGUgbGllbiBwb3VyIHVuZSBpbWFnZSBzZW5zaWJsZS4gbGUgbGllbiBwZXV0IOp0cmUKICAgdW4gbm9tIGRlIHBhZ2UgV2lraU5pLCB1biBsaWVuIGludGVyd2lraSBvdSB1bmUgYWRyZXNzZSBodHRwCiAtIGNsYXNzOiBpbmRpcXVlIGxlIG5vbSBkZSBsYSBvdSBsZXMgY2xhc3NlcyBkZSBzdHlsZSDgIHV0aWxpc2VyIHBvdXIgYWZmaWNoZXIKICAgbCdpbWFnZS4gbGVzIG5vbXMgZGVzIGNsYXNzZXMgc29udCBz6XBhculzIHBhciB1biBlc3BhY2UuCgoJRVhFTVBMRVMKIC0gQXR0YWNoZXIgdW4gZmljaGllciBhcmNoaXZlOgogCQl7e2F0dGFjaCBmaWxlPSJhcmNoaXZlLnppcCJ9fQogLSBBdHRhY2hlciB1biBmaWNoaWVyIGFyY2hpdmUgYXZlYyB1bmUgZGVzY3JpcHRpb24KIAkJe3thdHRhY2ggZmlsZT0iYXJjaGl2ZS56aXAiIGRlc2M9IkNvZGUgc291cmNlIGRlIGwnYXBwbGljYXRpb24ifX0KIC0gU3VwcHJpbWVyIHVuIGZpY2hpZXI6CiAJCXt7YXR0YWNoIGZpbGU9ImFyY2hpdmUuemlwIiBkZWxldGU9InkifX0KIC0gQWZmaWNoZXIgdW5lIGltYWdlOgogCQl7e2F0dGFjaCBmaWxlPSJpbWFnZS5wbmciIGRlc2M9InZvaWNpIHVuZSBpbWFnZSJ9fQogLSBBZmZpY2hlciB1bmUgaW1hZ2Ugc2Vuc2libGU6CiAJCXt7YXR0YWNoIGZpbGU9ImltYWdlLnBuZyIgZGVzYz0idm9pY2kgdW5lIGltYWdlIiBsaW5rPSJQYWdlUHJpbmNpcGFsZSJ9fQogCQl7e2F0dGFjaCBmaWxlPSJpbWFnZS5wbmciIGRlc2M9InZvaWNpIHVuZSBpbWFnZSIgbGluaz0iV2lraU5pOlBhZ2VQcmluY2lwYWxlIn19CiAJCXt7YXR0YWNoIGZpbGU9ImltYWdlLnBuZyIgZGVzYz0idm9pY2kgdW5lIGltYWdlIiBsaW5rPSJodHRwOi8vd3d3Lndpa2luaS5uZXQifX0KIC0gQWZmaWNoZXIgdW5lIGltYWdlIGNvbGzpIHN1ciBsZSBib3JkIGRyb2l0IGV0IHNhbnMgY29udG91cjoKIAkJe3thdHRhY2ggZmlsZT0iaW1hZ2UucG5nIiBkZXNjPSJ2b2ljaSB1bmUgaW1hZ2UiIGNsYXNzPSJyaWdodCBub2JvcmRlciJ9fQoKCUlOU1RBTExBVElPTgoxKSBDb3BpZXogbGUgZmljaGllciBhdHRhY2gucGhwIGRhbnMgbGUgculwZXJ0b2lyZSBkZXMgYWN0aW9ucyAoL2FjdGlvbnMpCjIpIENvcGlleiBsZSBmaWNoaWVyIGF0dGFjaC5jbGFzcy5waHAgZGFucyBsZSBy6XBlcnRvaXJlIGRlcyBhY3Rpb25zICgvYWN0aW9ucykKMykgQ29waWV6IGxlIGZpY2hpZXIgYXR0YWNoZm0ucGhwIGRhbnMgbGUgcmVwZXJ0b2lyZSBkZXMgYWN0aW9ucyAoL2FjdGlvbnMpCjQpIENvcGlleiBsZSBmaWNoaWVyIGZpbGFtYW5hZ2VyLnBocCBkYW5zIGxlIHLpcGVydG9pcmUgZGVzIGhhbmRsZXJzICgvaGFuZGxlcnMvcGFnZSkKNSkgQ29waWV6IGxlIGZpY2hpZXIgdXBsb2FkLnBocCBkYW5zIGxlIHLpcGVydG9pcmUgZGVzIGhhbmRsZXJzICgvaGFuZGxlcnMvcGFnZSkKNikgQ29waWV6IGxlIGZpY2hpZXIgZG93bmxvYWQucGhwIGRhbnMgbGUgculwZXJ0b2lyZSBkZXMgaGFuZGxlcnMgKC9oYW5kbGVycy9wYWdlKQo3KSBDculleiBsZSBy6XBlcnRvaXJlIHJhY2luZSBkZXMgdXBsb2FkcyBzdXIgbGUgc2l0ZSBkdSB3aWtpLiBTaSBsZSBTQUZFX01PREUKCWRlIFBIUCBlc3QgYWN0aXbpLCB2b3VzIGRldmV6IGNy6WVyIHZvdXMgbeptZSBjZSBy6XBlcnRvaXJlIGV0IGF1dG9yaXNlcgoJbCfpY3JpdHVyZSBkYW5zIGNlIHLpcGVydG9pcmUgcG91ciBsJ3V0aWxpc2F0ZXVyIGV0IGxlIGdyb3VwZS4KOCkgT3V2cmV6IGxlIGZpY2hpZXIgd2Fra2EuY29uZmlnLnBocCBldCBham91dGV6IGxhIGNvbmZpZ3VyYXRpb24gZGUgbCdhY3Rpb24uCglUb3VzIGxlcyBwYXJhbeh0cmVzIGRlIGNvbmZpZ3VyYXRpb24gb250IHVuZSB2YWxldXIgcGFyIGTpZmF1dC4KCUxlIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dCBlc3Q6CgoJJHdha2thQ29uZmlnWyJhdHRhY2hfY29uZmlnIl0gPSBhcnJheSgKCQkJInVwbG9hZF9wYXRoIiA9PiAnZmlsZXMnLAkJCQkvL3JlcGVydG9pcmUgcmFjaW5lIGRlcyB1cGxvYWRzCgkJCSJleHRfaW1hZ2VzIiA9PiAnZ2lmfGpwZWd8cG5nfGpwZycsCS8vZXh0ZW5zaW9uIGRlcyBmaWNoaWVycyBpbWFnZXMKCQkJImV4dF9zY3JpcHQiID0+ICdwaHB8cGhwM3xhc3B8YXN4fHZifHZic3xqcycsCS8vZXh0ZW5zaW9uIGRlcyBzY3JpcHQobm9uIHV0aWxpc+kpCgkJCSJ1cGRhdGVfc3ltYm9sZSIgPT4gJyonLAkJCQkvL3N5bWJvbGUgcG91ciBmYWlyZSB1biB1cGRhdGUgZHUgZmljaGllcgoJCQkibWF4X2ZpbGVfc2l6ZSIgPT4gMTAyNCoyMDAwLAkJCS8vdGFpbGxlIG1heGltdW0gZHUgZmljaGllciBlbiBvY3RlciAoMk0gcGFyIGTpZmF1dCkKCQkJImZtRGVsZXRlX3N5bWJvbGUiID0+ICdTdXByJywJCQkvL3N5bWJvbGUgYSBhZmZpY2hlciBwb3VyIGxlIGxpZW4gInN1cHByaW1lciIgZGFucyBsZSBnZXN0aW9ubmFpcmUgZGUgZmljaGllcgoJCQkiZm1SZXN0b3JlX3N5bWJvbGUiID0+ICdSZXN0JywJCS8vc3ltYm9sZSBhIGFmZmljaGVyIHBvdXIgbGUgbGllbiAicmVzdGF1cmVyIiBkYW5zIGxlIGdlc3Rpb25uYWlyZSBkZSBmaWNoaWVyCgkJCSJmbVRyYXNoX3N5bWJvbGUiID0+ICdQb3ViZWxsZScpCQkvL3N5bWJvbGUgYSBhZmZpY2hlciBwb3VyIGxlIGxpZW4gIlBvdWJlbGxlIiBkYW5zIGxlIGdlc3Rpb25uYWlyZSBkZSBmaWNoaWVyCgo5KSBBam91dGV6IGxlcyBjbGFzc2VzIGRlIHN0eWxlIGF1IGZpY2hpZXIgd2Fra2EuY3NzLiBFeGVtcGxlIGRlIHN0eWxlIDoKLmF0dGFjaF9tYXJnaW4wNWVtIHsgbWFyZ2luOiAwLjVlbTt9Ci5hdHRhY2hfbWFyZ2luMWVtIHsgbWFyZ2luOiAxZW07fQouYXR0YWNoX2xlZnQge2Zsb2F0OiBsZWZ0O30KLmF0dGFjaF9yaWdodCB7ZmxvYXQ6IHJpZ2h0O30KLmF0dGFjaF9ub2JvcmRlciB7Ym9yZGVyLXdpZHRoOiAwcHg7fQouYXR0YWNoX3ZtaWRkbGUge3ZlcnRpY2FsLWFsaWduOiB0ZXh0LWJvdHRvbTt9CgoxMClQb3VyIGNvbmZpZ3VyZXIgbCdhc3BlY3QgZHUgZ2VzdGlvbm5uYWlyZSBkZSBmaWNoaWVyIHV0aWxpc2VyIGxlcyBjbGFzc2VzIGRlIHN0eWxlIC50YWJsZUZNCnRhYmxlRk1Db2wxIGV0IHRhYmxlRk1Db2wyCkV4ZW1wbGUgOgoudGFibGVGTSB7Ym9yZGVyOiB0aGluIHNvbGlkIEJsYWNrOyB3aWR0aDogMTAwJTsgIH0KLnRhYmxlRk0gVEhFQUQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBTaWx2ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyB0ZXh0LWFsaWduOiBjZW50ZXI7ICAgfQoudGFibGVGTSBURk9PVCB7IGJhY2tncm91bmQtY29sb3I6IFNpbHZlcjsgZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IGxlZnQ7ICAgfQoudGFibGVGTSBUQk9EWSBUUiB7IHRleHQtYWxpZ246IGNlbnRlcjsgIH0KLnRhYmxlRk1Db2wxIHsgYmFja2dyb3VuZC1jb2xvcjogQXF1YTsgfQoudGFibGVGTUNvbDIgeyBiYWNrZ3JvdW5kLWNvbG9yOiBZZWxsb3c7IH0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCmlmICghZGVmaW5lZCgiV0lLSU5JX1ZFUlNJT04iKSkKewogICAgICAgIGRpZSAoImFjYyZlZ3JhdmU7cyBkaXJlY3QgaW50ZXJkaXQiKTsKfQoKCmlmICghY2xhc3NfZXhpc3RzKCdhdHRhY2gnKSl7CglpbmNsdWRlKCd0b29scy9hdHRhY2gvYWN0aW9ucy9hdHRhY2guY2xhc3MucGhwJyk7Cn0KJGF0dCA9IG5ldyBhdHRhY2goJHRoaXMpOwokYXR0LT5kb0F0dGFjaCgpOwp1bnNldCgkYXR0KTsKPz4K";s:27:"attach/actions/attachfm.php";s:2488:"PD9waHAKLyoKYXR0YWNoZm0ucGhwCkNvZGUgb3JpZ2luYWwgZGUgY2UgZmljaGllciA6IEVyaWMgRkVMRFNURUlOCkNvcHlyaWdodCAoYykgMjAwMiwgSGVuZHJpayBNYW5zIDxoZW5kcmlrQG1hbnMuZGU+CkNvcHlyaWdodCAyMDAyLCAyMDAzIERhdmlkIERFTE9OCkNvcHlyaWdodCAyMDAyLCAyMDAzIENoYXJsZXMgTkVQT1RFCkNvcHlyaWdodCAgMjAwMywyMDA0ICBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgIDIwMDMgIEplYW4tUGFzY2FsIE1JTENFTlQKQWxsIHJpZ2h0cyByZXNlcnZlZC4KUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwphcmUgbWV0OgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCmRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoqLwovKgoKKi8KCmlmICghZGVmaW5lZCgiV0lLSU5JX1ZFUlNJT04iKSkKewogICAgICAgIGRpZSAoImFjYyZlZ3JhdmU7cyBkaXJlY3QgaW50ZXJkaXQiKTsKfQoKCiR1cmwgPSAkdGhpcy0+aHJlZignZmlsZW1hbmFnZXInLCR0aGlzLT5HZXRQYWdlVGFnKCkpOwplY2hvICc8YSBocmVmPSInLiR1cmwuJyI+PHNwYW4gY2xhc3M9ImF0dGFjaGZtIj48c3Bhbj5HZXN0aW9uIGRlcyBmaWNoaWVycyBhdHRhY2jpczwvc3Bhbj48L3NwYW4+PC9hPic7Cj8+Cg==";s:33:"attach/handlers/page/download.php";s:2748:"PD9waHAKLyoKZG93bmxvYWQucGhwCkNvZGUgb3JpZ2luYWwgZGUgY2UgZmljaGllciA6IEVyaWMgRkVMRFNURUlOCkNvcHlyaWdodCAoYykgMjAwMiwgSGVuZHJpayBNYW5zIDxoZW5kcmlrQG1hbnMuZGU+CkNvcHlyaWdodCAyMDAyLCAyMDAzIERhdmlkIERFTE9OCkNvcHlyaWdodCAyMDAyLCAyMDAzIENoYXJsZXMgTkVQT1RFCkNvcHlyaWdodCAgMjAwMywyMDA0ICBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgIDIwMDMgIEplYW4tUGFzY2FsIE1JTENFTlQKQWxsIHJpZ2h0cyByZXNlcnZlZC4KUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwphcmUgbWV0OgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCmRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoqLwojIEV4ZWN1dGUgbGUgZG93bmxvYWQgZGVzIGZpY2hpZXJzIGxpZXIgcGFyIGwnYWN0aW9uIHt7YXR0YWNofX0KIyBOZWNlc3NpdGUgbGUgZmljaGllciBhY3Rpb25zL2F0dGFjaC5waHAgcG91ciBmb25jdGlvbm5lcgojIHZvaXIgYWN0aW9ucy9hdHRhY2gucGhwIHBwb3VyIGxhIGRvY3VtZW50YXRpb24KIyBjb3B5cmlndGggRXJpYyBGZWxkc3RlaW4gMjAwMy0yMDA0CgovL3bpcmlmaWNhdGlvbiBkZSBz6WN1cml06QppZiAoIVdJS0lOSV9WRVJTSU9OKSB7CiAgICAgZGllICgiYWNjJmVncmF2ZTtzIGRpcmVjdCBpbnRlcmRpdCIpOwp9CmlmICghY2xhc3NfZXhpc3RzKCdhdHRhY2gnKSl7CglpbmNsdWRlKCd0b29scy9hdHRhY2gvYWN0aW9ucy9hdHRhY2guY2xhc3MucGhwJyk7Cn0KJGF0dCA9IG5ldyBhdHRhY2goJHRoaXMpOwokYXR0LT5kb0Rvd25sb2FkKCk7CnVuc2V0KCRhdHQpOwo/Pg==";s:36:"attach/handlers/page/filemanager.php";s:3076:"PD9waHAKLyoKZmlsZW1hbmFnZXIucGhwCkNvZGUgb3JpZ2luYWwgZGUgY2UgZmljaGllciA6IEVyaWMgRkVMRFNURUlOCkNvcHlyaWdodCAoYykgMjAwMiwgSGVuZHJpayBNYW5zIDxoZW5kcmlrQG1hbnMuZGU+CkNvcHlyaWdodCAyMDAyLCAyMDAzIERhdmlkIERFTE9OCkNvcHlyaWdodCAyMDAyLCAyMDAzIENoYXJsZXMgTkVQT1RFCkNvcHlyaWdodCAgMjAwMywyMDA0ICBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgIDIwMDMgIEplYW4tUGFzY2FsIE1JTENFTlQKQWxsIHJpZ2h0cyByZXNlcnZlZC4KUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwphcmUgbWV0OgoxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCjIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cm5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KMy4gVGhlIG5hbWUgb2YgdGhlIGF1dGhvciBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCmRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IKSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgpJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCkRBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQpUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoqLwojIEV4ZWN1dGUgbGUgZ2VzdGlvbiBkZXMgZmljaGllcnMgbGllciBwYXIgbCdhY3Rpb24ge3thdHRhY2h9fQojIE5lY2Vzc2l0ZSBsZSBmaWNoaWVyIGFjdGlvbnMvYXR0YWNoLnBocCBwb3VyIGZvbmN0aW9ubmVyCiMgdm9pciBhY3Rpb25zL2F0dGFjaC5waHAgcHBvdXIgbGEgZG9jdW1lbnRhdGlvbgojIGNvcHlyaWd0aCBFcmljIEZlbGRzdGVpbiAyMDAzLTIwMDQKCi8vdulyaWZpY2F0aW9uIGRlIHPpY3VyaXTpCmlmICghV0lLSU5JX1ZFUlNJT04pIHsKICAgICBkaWUgKCJhY2MmZWdyYXZlO3MgZGlyZWN0IGludGVyZGl0Iik7Cn0KZWNobyAkdGhpcy0+SGVhZGVyKCk7Cj8+CjxkaXYgY2xhc3M9InBhZ2UiPgo8P3BocAppZigkdGhpcy0+VXNlcklzT3duZXIoKSl7CglpZiAoIWNsYXNzX2V4aXN0cygnYXR0YWNoJykpewoJCWluY2x1ZGUoJ3Rvb2xzL2F0dGFjaC9hY3Rpb25zL2F0dGFjaC5jbGFzcy5waHAnKTsKCX0KCSRhdHQgPSBuZXcgYXR0YWNoKCR0aGlzKTsKCSRhdHQtPmRvRmlsZW1hbmFnZXIoKTsKCXVuc2V0KCRhdHQpOwp9ZWxzZXsKCWVjaG8gJHRoaXMtPkZvcm1hdCgiLy9TZXVsIGxlIHByb3Byael0YWlyZSBkZSBjZXR0ZSBwYWdlIHBldXQgYWNj6WRlciBhdSBnZXN0aW9ubmFpcmUgZGVzIGZpY2hpZXJzIGF0dGFjaOkvLyIpOwp9Cj8+CjwvZGl2Pgo8P3BocCBlY2hvICR0aGlzLT5Gb290ZXIoKTsgPz4=";s:31:"attach/handlers/page/upload.php";s:2856:"PD9waHAKLyoKdXBsb2FkLnBocApDb2RlIG9yaWdpbmFsIGRlIGNlIGZpY2hpZXIgOiBFcmljIEZFTERTVEVJTgpDb3B5cmlnaHQgKGMpIDIwMDIsIEhlbmRyaWsgTWFucyA8aGVuZHJpa0BtYW5zLmRlPgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBEYXZpZCBERUxPTgpDb3B5cmlnaHQgMjAwMiwgMjAwMyBDaGFybGVzIE5FUE9URQpDb3B5cmlnaHQgIDIwMDMsMjAwNCAgRXJpYyBGRUxEU1RFSU4KQ29weXJpZ2h0ICAyMDAzICBKZWFuLVBhc2NhbCBNSUxDRU5UCkFsbCByaWdodHMgcmVzZXJ2ZWQuClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKYXJlIG1ldDoKMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodApub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCmRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCjMuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwpkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCklNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4KSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULApJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQKTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLApEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAooSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKi8KIyBFeGVjdXRlIGwndXBsb2FkIGRlcyBmaWNoaWVycyBsaWVyIHBhciBsJ2FjdGlvbiB7e2F0dGFjaH19CiMgTmVjZXNzaXRlIGxlIGZpY2hpZXIgYWN0aW9ucy9hdHRhY2gucGhwIHBvdXIgZm9uY3Rpb25uZXIKIyB2b2lyIGFjdGlvbnMvYXR0YWNoLnBocCBwcG91ciBsYSBkb2N1bWVudGF0aW9uCiMgY29weXJpZ3RoIEVyaWMgRmVsZHN0ZWluIDIwMDMtMjAwNAoKLy926XJpZmljYXRpb24gZGUgc+ljdXJpdOkKaWYgKCFXSUtJTklfVkVSU0lPTikgewogICAgIGRpZSAoImFjYyZlZ3JhdmU7cyBkaXJlY3QgaW50ZXJkaXQiKTsKfQplY2hvICR0aGlzLT5IZWFkZXIoKTsKPz4KPGRpdiBjbGFzcz0icGFnZSI+Cjw/cGhwCgppZiAoIWNsYXNzX2V4aXN0cygnYXR0YWNoJykpewoJaW5jbHVkZSgndG9vbHMvYXR0YWNoL2FjdGlvbnMvYXR0YWNoLmNsYXNzLnBocCcpOwp9CiRhdHQgPSBuZXcgYXR0YWNoKCR0aGlzKTsKJGF0dC0+ZG9VcGxvYWQoKTsKdW5zZXQoJGF0dCk7Cj8+CjwvZGl2Pgo8P3BocCBlY2hvICR0aGlzLT5Gb290ZXIoKTsgPz4=";}}