<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>XtendedLinks</name>
	<version>0.0.4</version>
  <mincmsversion>1.0.6</mincmsversion>
	<help>Cgk8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KCTxwPlRoaXMgbW9kdWxlIGhhbmRsZSBhIGxpbmtzIGxpYnJhcnkgdGhhdCBjYW4gYmUgbGlua2VkIHdpdGggbXVsdGlwbGUgcGFnZXMgYW5kIGNhdGVnb3JpZXMgdHJvdWdoIE1vZHVsZVh0ZW5kZXI8L3A+CgkKCTxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgoJCgk8cD5UbyBpbmNsdWRlIHRoaXMgbW9kdWxlIG9uIGEgcGFnZSwgdXNlIHRoZSB0YWcge2Ntc19tb2R1bGUgbW9kdWxlPSJYdGVuZGVkTGlua3MifTwvcD4KCQoJPGgzPldoYXQgUGFyYW1ldGVycyBEb2VzIEl0IFRha2U8L2gzPgoJCgk8cD4KCQoJPHVsPgoJCTxsaT48Yj5jdXJyZW50cGFnZTwvYj4gLSBJZiB5b3Ugc2V0IHRoYXQsIGl0IHdpbGwgb25seSBzaG93IHRoZSBjdXJyZW50IHBhZ2UgcmVsYXRlZCBsaW5rcy48L2xpPgoJCTxsaT48Yj5wYWdlczwvYj4gLSBQdXQgdGhlIGxpc3Qgb2YgYWxsIHJlbGF0ZWQgcGFnZXMgKHBhZ2UgaWQpIChzZXBhcmF0ZSBieSBhIGNvbW1hKSB0aGF0IHRoZSBsaXN0IG11c3Qgc2hvdy48L2xpPgoJCTxsaT48Yj5jYXRlZ29yeTwvYj4gLSBJZiB5b3Ugc2V0IHRoYXQsIGl0IHdpbGwgb25seSBzaG93IHRoZSBjYXRlZ29yeSAocHV0IHRoZSBjYXRlZ29yeSBpZCkgcmVsYXRlZCBsaW5rcy48L2xpPgoJCTxsaT48Yj5jYXRlZ29yaWVzPC9iPiAtIFB1dCB0aGUgbGlzdCBvZiBhbGwgcmVsYXRlZCBjYXRlZ29yaWVzIChjYXRlZ29yeSBpZCkgKHNlcGFyYXRlIGJ5IGEgY29tbWEpIHRoYXQgdGhlIGxpc3QgbXVzdCBzaG93LjwvbGk+CgkJPGxpPjxiPm1heF9pdGVtczwvYj4gLSBPbmx5IHNob3cgdGhlIFggbGFzdCBpdGVtcy48L2xpPgoJCTxsaT48Yj51c2Vfc3dpdGNoPC9iPiAtIERlZmF1bHQgRmFsc2UuIFNldCB0byBUcnVlIHRvIGZvcmNlIHJldHJlaXZpbmcgbGlua3Mgd2hlcmUgc3dpdGNoIGlzIHRpY2tlZCBmaXJzdC4KCTwvdWw+CgkKCTwvcD4KCgk8aDM+U3VwcG9ydDwvaDM+Cgk8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoJPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+Cgk8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIEJlbmphbWluIE1hZ2l0cyA8YSBocmVmPSJtYWlsdG86YmVuamFtaW4ubWFnaXRzQGdtYWlsLmNvbSI+Jmx0O2JlbmphbWluLm1hZ2l0c0BnbWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgoJPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD48aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPk1vZHVsZVh0ZW5kZXIgPSZndDsgMC4wLjIuNDwvbGk+PC91bD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==</help>
	<about>PGJyIC8+QXV0aG9yOiBCZW5qYW1pbiBNYWdpdHMgJmx0O2JlbmphbWluLm1hZ2l0c0BnbWFpbC5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC4wLjQ8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz4KCTx1bD4KCQk8bGk+VmVyc2lvbiAwLjAuMSAtIDAxIE9jdG9iZXIgMjAwNy4gSW5pdGlhbCBSZWxlYXNlLgoJCTxsaT5WZXJzaW9uIDAuMC4yIC0gMTEgT2N0b2JlciAyMDA3LiBCdWdzIGZpeGVzICYgTW9kdWxlIFh0ZW5kZXIgaW50ZWdyYXRpb248L2xpPgoJCTxsaT5WZXJzaW9uIDAuMC4zIC0gMTUgT2N0b2JlciAyMDA3LiBPcmRlcmluZyBmaWVsZCBhZGRlZDwvbGk+CgkJPGxpPlZlcnNpb24gMC4wLjQgLSAxNyBPY3RvYmVyIDIwMDcuIE1pbm9yIGxhbmd1YWdlIGZpeGVzLiBCdWcgZml4IGluIGFkZC9lZGl0IGZvcm0uIFN3aXRjaCBmdW5jdGlvbm5hbGl0eTwvbGk+Cgk8L3VsPgo8YnIgLz4=</about>
	<requires>
	  <requiredname>ModuleXtender</requiredname>
	  <requiredversion>0.0.2.4</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.AddEdit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokbW9kdWxleHRlbmRlciA9ICRnQ21zLT5tb2R1bGVzWydNb2R1bGVYdGVuZGVyJ11bJ29iamVjdCddOwovKgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIiIpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoqLwovLyBJZiBjYW5jZWwsIHJldHVybiBob21lLi4uCgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CgkkcGFyYW1zID0gYXJyYXkoCgkJCgkJJ2FjdGl2ZV90YWInID0+ICdMaW5rcycKCQkKCQkpOwkJCgkKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwp9CgovLyBJZiBmb3JtIGlzIHN1Ym1pdHRlZC4uLgoKaWYgKGlzc2V0KCRwYXJhbXNbJ2lucHV0X3N1Ym1pdHRlZCddKSkKewoKCS8qIFdlIGNoZWNrIGZpZWxkcyAqLwoJCglpZihlbXB0eSgkcGFyYW1zWyd0aXRsZSddKSkKCXsKCQkKCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl90aXRsZScpKTsKCQkKCQkkZXJyb3JzVHJ1ZT1UcnVlOwoJCQoJfQoJZWxzZWlmKCBlbXB0eSgkcGFyYW1zWyd1cmwnXSkgb3Igc3Vic3RyKCRwYXJhbXNbJ3VybCddLDAsNykgIT0gJ2h0dHA6Ly8nICkKCXsKCQkKCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl91cmwnKSk7CgkJCgkJJGVycm9yc1RydWU9VHJ1ZTsKCQkKCX0KCQoJCgkKCWlmKCEkZXJyb3JzVHJ1ZSkgLyogSWYgdGhlcmUgaXMgbm8gZXJyb3Igd2UgcHJvY2VzcyB0aGUgZm9ybSAqLwoJewoJCQoJCQoJCS8vaWYgKCFpc3NldCgkcGFyYW1zWydpdGVtX2lkJ10pKSAvKiBFZGl0IEl0ZW0gKi8gCgkJaWYgKCRwYXJhbXNbJ2l0ZW1faWQnXSA9PSAnJykKCQl7CQkJCgkJCQoJCQkkZGJJZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzX3NlcSIpOwoJCQkKCQkJJGl0ZW1faWQgPSAkZGJJZDsKCQkJCgkJCSRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3h0ZW5kZWRsaW5rcyBTRVQgaWQgPSA/LCB0aXRsZSA9ID8sIHVybCA9ID8sIGRlc2NyaXB0aW9uID0gPywgcG9zaXRpb24gPSA/LCBzd2l0Y2ggPSA/ICc7CgkJCQoJCQkkZGJEYXRhID0gYXJyYXkoCgkJCQkJCQkgJGRiSWQKCQkJCQkJCSwkcGFyYW1zWyd0aXRsZSddCgkJCQkJCQksJHBhcmFtc1sndXJsJ10KCQkJCQkJCSwkcGFyYW1zWydkZXNjcmlwdGlvbiddCgkJCQkJCQksJHBhcmFtc1sncG9zaXRpb24nXQoJCQkJCQkJLCRwYXJhbXNbJ3N3aXRjaCddCgkJCQkJCQkpOwoJCQkKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgJGRiRGF0YSk7CgkJCQoJCQkvL0AkdGhpcy0+U2VuZEV2ZW50KCdOZXdMaW5rQWRkZWQnLCBhcnJheSgnaWQnID0+ICRkYklkLCAndXJsJyA9PiAkcGFyYW1zWyd1cmwnXSkpOwoJCQkKCQkJJGZ1dHVyZXBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnaXRlbWFkZGVkJywgJ2FjdGl2ZV90YWInID0+ICdMaW5rcycpOwoJCgkJfQoJCWVsc2UgLyogQWRkIEl0ZW0gKi8KCQl7CgkJCQoJCQkkaXRlbV9pZCA9ICRwYXJhbXNbJ2l0ZW1faWQnXTsKCQkJCgkJCSRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV94dGVuZGVkbGlua3MgU0VUIHRpdGxlID0gPywgdXJsID0gPyAsIGRlc2NyaXB0aW9uID0gPywgcG9zaXRpb24gPSA/LCBzd2l0Y2ggPSA/IFdIRVJFIGlkID0gPyc7CgkKCQkJJGRiRGF0YSA9IGFycmF5KAoJCQkJCQkJICRwYXJhbXNbJ3RpdGxlJ10KCQkJCQkJCSwkcGFyYW1zWyd1cmwnXQoJCQkJCQkJLCRwYXJhbXNbJ2Rlc2NyaXB0aW9uJ10KCQkJCQkJCSwkcGFyYW1zWydwb3NpdGlvbiddCgkJCQkJCQksJHBhcmFtc1snc3dpdGNoJ10KCQkJCQkJCSwkcGFyYW1zWydpdGVtX2lkJ10KCQkJCQkJCSk7CgkJCQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkZGJEYXRhKTsKCQkJCQkJCgkJCS8vQCR0aGlzLT5TZW5kRXZlbnQoJ0xpbmtVcGRhdGVkJywgYXJyYXkoJ2lkJyA9PiAkaWQsICd1cmwnID0+ICRwYXJhbXNbJ3VybCddKSk7CgkJCgkJCSRmdXR1cmVwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2l0ZW1tb2RpZmllZCcsICdhY3RpdmVfdGFiJyA9PiAnTGlua3MnKTsKCQkJCgkJfQoJCQoJCS8vIEVuY29kZSByZWxhdGlvbnMKCQkJCgkJaWYgKCRtb2R1bGV4dGVuZGVyLT5pc1h0ZW5kZWRNb2R1bGUoJHRoaXMtPmdldE5hbWUoKSkpCgkJewoJCQkkbW9kdWxleHRlbmRlci0+Z2V0Rm9ybUlucHV0KCR0aGlzLT5nZXROYW1lKCksICRpdGVtX2lkLCAkcGFyYW1zKTsKCQl9CgkJCgkJLy9wcmludF9yKCRwYXJhbXMpOwoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydpbnB1dF9zdWJtaXR0ZWQnXSkpCgkJewkKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJGZ1dHVyZXBhcmFtcyk7CgkJfQoJCQoJCS8vJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7Cgl9CgkKfQoKLy9lbHNlCi8vewoJLy8gRGlzcGxheSBGb3JtCgkKCS8qIFdlIGRlZmluZSB2YWx1ZXMgKi8KCWlmIChpc3NldCgkcGFyYW1zWydpbnB1dF9zdWJtaXR0ZWQnXSkpCgl7CgkJJGZvcm1yb3cgPSAmJHBhcmFtczsKCX0KCWVsc2VpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkKCXsKCQkkZm9ybXJvdyA9ICR0aGlzLT5HZXRJdGVtSW5mb3MoJHBhcmFtc1snaXRlbV9pZCddKTsKCX0KCWVsc2VpZiAoaXNzZXQoJGl0ZW1faWQpKQoJewoJCSRmb3Jtcm93ID0gJHRoaXMtPkdldEl0ZW1JbmZvcygkaXRlbV9pZCk7Cgl9CgkKCS8vIFN0YXJ0IEZvcm0KCQkKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnQWRkRWRpdCcsICRyZXR1cm5pZCkpOwoJCgkJLyoKCQkqKiBGaWVsZHMgKDEuTGFiZWwgLyAyLkZpZWxkKQoJCSovCgoJCQkvLzEuTGFiZWwKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF90aXRsZV9sYWJlbCcsJHRoaXMtPkxhbmcoJ2ZpZWxkX3RpdGxlX2xhYmVsJykpOwoJCQkvLzIuRmllbGQKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF90aXRsZV9uYW1lJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RpdGxlJywgJGZvcm1yb3dbJ3RpdGxlJ10sIDUwKSk7CgkJCQoJCQkvLzEuTGFiZWwKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF91cmxfbGFiZWwnLCR0aGlzLT5MYW5nKCdmaWVsZF91cmxfbGFiZWwnKSk7CgkJCS8vMi5GaWVsZAoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpZWxkX3VybF9uYW1lJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3VybCcsICRmb3Jtcm93Wyd1cmwnXSwgNTApKTsKCQkJCgkJCS8vMS5MYWJlbAoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpZWxkX3N3aXRjaF9sYWJlbCcsJHRoaXMtPkxhbmcoJ2ZpZWxkX3N3aXRjaF9sYWJlbCcpKTsKCQkJLy8yLkZpZWxkCgkJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZmllbGRfc3dpdGNoX25hbWUnLCR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3N3aXRjaCcsMSwgJGZvcm1yb3dbJ3N3aXRjaCddKSk7CgkJCQoJCQkvLzEuTGFiZWwKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF9wb3NpdGlvbl9sYWJlbCcsJHRoaXMtPkxhbmcoJ2ZpZWxkX3Bvc2l0aW9uX2xhYmVsJykpOwoJCQkvLzIuRmllbGQKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF9wb3NpdGlvbl9uYW1lJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3Bvc2l0aW9uJywgJGZvcm1yb3dbJ3Bvc2l0aW9uJ10sIDEwKSk7CgkJCQoJCQkvLzEuTGFiZWwKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF9kZXNjcmlwdGlvbl9sYWJlbCcsJHRoaXMtPkxhbmcoJ2ZpZWxkX2Rlc2NyaXB0aW9uX2xhYmVsJykpOwoJCQkvLzIuRmllbGQKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF9kZXNjcmlwdGlvbl9uYW1lJywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsICRpZCwgICRmb3Jtcm93WydkZXNjcmlwdGlvbiddLCAnZGVzY3JpcHRpb24nLCAnJywgJycsICcnLCAnJywgJzgwJywgJzUnKSk7CgkKCQkvKgoJCSoqIEhpZGRlbiBmaWVsZHMKCQkqLwoJCQoJCQlpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkKCQkJewoJCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtX2lkJywkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnaXRlbV9pZCcsICRwYXJhbXNbJ2l0ZW1faWQnXSkpOwoJCQl9CgkJCQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3N1Ym1pdHRlZCcsJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2lucHV0X3N1Ym1pdHRlZCcsICcnKSk7CgkJCgkJLyoKCQkqKiBCdXR0b25zCgkJKi8KCQkKCQkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9jYW5jZWwnKSkpOwoJCQkKCQkJLyoKCQkJaWYoIGlzc2V0KCRwYXJhbXNbJ2l0ZW1faWQnXSkgKQoJCQl7CgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FwcGx5X2J1dHRvbicsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2FwcGx5JywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9hcHBseScpKSk7CQoJCQl9CgkJCSovCgkJCQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9idXR0b24nLCR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnYWN0aW9uX3N1Ym1pdCcpKSk7CgkKCQkvKgoJCSoqIE1vZHVsZSBYdGVuZGVyIFBhcnQKCQkqLwoJCQoJCQlpZiAoJG1vZHVsZXh0ZW5kZXItPmlzWHRlbmRlZE1vZHVsZSgkdGhpcy0+Z2V0TmFtZSgpKSkKCQkJewoJCQkJaWYgKCFpc3NldCgkaXRlbV9pZCkgJiYgaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkKCQkJCXsKCQkJCQkkaXRlbV9pZCA9ICRwYXJhbXNbJ2l0ZW1faWQnXTsKCQkJCX0KCgkJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3h0ZW5kZWRfZm9ybScsICRtb2R1bGV4dGVuZGVyLT5YdGVuZE1vZHVsZUZvcm0oJHRoaXMtPmdldE5hbWUoKSwgJGl0ZW1faWQsICRpZCkpOwoJCQl9CgkJCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX2VuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkvL0VuZCBGb3JtCgkKCS8vUHJvY2VzcyB0ZW1wbGF0ZQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbkFkZEVkaXQudHBsJyk7Ci8vfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoaXNzZXQoJF9SRVFVRVNUWydtYWN0J10pICYmIHN0cnBvcygkX1JFUVVFU1RbJ21hY3QnXSwgJ0xpbmtzJykgIT09IGZhbHNlICYmIHN0cnBvcygkX1JFUVVFU1RbJ21hY3QnXSwgJ2RldGFpbHMnKSAhPT0gZmFsc2UpCnsKCQkvLyBEbyBub3RoaW5nCn0KZWxzZSAKewoKCSRpdGVtc2xpc3QgPSAkdGhpcy0+R2V0TGlzdCgkaWQsICRyZXR1cm5pZCwgJHBhcmFtcyk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGl0ZW1zbGlzdCApOwoKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoICRpdGVtc2xpc3QgKSApOwoJCglpZiAoIWlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pIHx8ICEkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSkpCgl7CgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCdkaXNwbGF5X2xpc3QnKTsKCX0KCWVsc2UgCgl7CgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwoJfQkKfQoKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8qCmlmICghICR0aGlzLT5DaGVja0FjY2VzcygpKQoJewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cgl9CiovCiR0YWJzID0gYXJyYXkgKAoJJ2xpbmtzJyA9PiBmYWxzZSwKCSdsaXN0X3RlbXBsYXRlJyA9PiBmYWxzZQopOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkpCnsKCSR0YWJzWyRwYXJhbXNbJ2FjdGl2ZV90YWInXV0gPSB0cnVlOwp9CgkKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpLgoJJHRoaXMtPlNldFRhYkhlYWRlcignbGlua3MnLCR0aGlzLT5MYW5nKCd0aXRsZV9saW5rcycpICwgJHRhYnNbJ2xpbmtzJ10gKS4KCSR0aGlzLT5TZXRUYWJIZWFkZXIoJ2xpc3RfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCd0aXRsZV90ZW1wbGF0ZWxpc3QnKSAsICR0YWJzWydsaXN0X3RlbXBsYXRlJ10pLgoJJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2VuZF90YWInLCR0aGlzLT5FbmRUYWIoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2Zvb3RlcnMnLCR0aGlzLT5FbmRUYWJDb250ZW50KCkpOwoKLy8gU3RhcnQgTGlua3MgVGFiCgoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9zZWN0aW9uJywnTGlua3MnKTsKCQoJLy9UZXh0IGZvciB0YWJsZSBoZWFkZXIKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaGVhZGVyJywgJHRoaXMtPkxhbmcoJ2hlYWRlcicpKTsKCQoJLy8KCSRlbnRyeWFycmF5ID0gYXJyYXkoKTsKCQoJJHF1ZXJ5ID0gIgoJCVNFTEVDVCAKCQkJICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzLiogCgkJRlJPTSAKCQkJIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV94dGVuZGVkbGlua3MKCQlPUkRFUiBCWQoJCQkiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rcy5pZCBERVNDCgkJIjsKCgkKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoJCgkkcm93Y2xhc3MgPSAncm93MSc7CgkKCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgkKCQkkb25lcm93LT5pZCA9ICRyb3dbJ2lkJ107CgkJLy9JdGVtIG5hbWUKCQkkb25lcm93LT5uYW1lID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnQWRkRWRpdCcsICRyZXR1cm5pZCwgJHJvd1sndGl0bGUnXSwgYXJyYXkoJ2l0ZW1faWQnPT4kcm93WydpZCddKSk7CgkJLy9JdGVtIGVkaXQgbGluawoJCSRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnQWRkRWRpdCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0cXVvdGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgnaXRlbV9pZCc9PiRyb3dbJ2lkJ10pKTsKCQkvL0l0ZW0gZGVsZXRlIGxpbmsKCQkkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnRGVsZXRlJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2l0ZW1faWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2NvbmZpcm1fZGVsZXRlJykpOwoJCS8vSXRlbSByb3cgY2xhc3MKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCgkJJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7CgkKCQkoJHJvd2NsYXNzPT0icm93MSI/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsKCQkKCX0KCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignaXRlbXMnLCAkZW50cnlhcnJheSk7CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRpdGVtJywkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ0FkZEVkaXQnLCAnJywgJHRoaXMtPkxhbmcoJ2FkZF9uZXdfaXRlbScpLGFycmF5KCkpKTsKCQkJCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRpdGVtbGluaycsJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdBZGRFZGl0JywgJycsJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZF9uZXdfcXVvdGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgpKSk7CgkJCQkJCgovL0VuZCBsaW5rcyBUYWIKCi8vU3RhcnQgdGVtcGxhdGVzIFRhYgoKICAgIC8vIFRFTVBMQVRFUyBMSVNUCiAgICAKICAgICR0ZW1wbGF0ZV9saXN0ID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKICAgIAkKCSRyb3djbGFzcyA9ICdyb3cxJzsKCQoJJHRlbXBsYXRlcyA9IGFycmF5KCk7CgkKCWZvcmVhY2ggKCR0ZW1wbGF0ZV9saXN0IGFzICR0ZW1wbGF0ZSkKCXsKCQkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7CgkJCgkJJG9uZXJvdy0+bmFtZSA9ICR0ZW1wbGF0ZTsJCgkJCgkJaWYgKCR0ZW1wbGF0ZSAhPSAnZGlzcGxheV9kZXRhaWxzJyAmJiAkdGVtcGxhdGUgIT0gJ2Rpc3BsYXlfbGlzdCcgKQoJCXsKCQkJJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZVRlbXBsYXRlJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlVGVtcGxhdGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGUnPT4kdGVtcGxhdGUpLCAkdGhpcy0+TGFuZygnYXJleW91c3VyZScpKTsKCQl9CgkKCQkkb25lcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ21hbmFnZVRlbXBsYXRlJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXRUZW1wbGF0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCd0ZW1wbGF0ZSc9PiR0ZW1wbGF0ZSkpOwoJCQoJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCQkJCgkJJHRlbXBsYXRlc1tdID0gJG9uZXJvdzsKCQkKCQkoJHJvd2NsYXNzPT0icm93MSI/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsKCX0KCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigndGVtcGxhdGVzJywgJHRlbXBsYXRlcyk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlc19jb3VudCcsIGNvdW50KCR0ZW1wbGF0ZXMpKTsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGUnLCAkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGVsaXN0JykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZHRlbXBsYXRlbGluaycsJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdtYW5hZ2VUZW1wbGF0ZScsICcnLCAkdGhpcy0+TGFuZygnYWN0aW9uX2FkZF90ZW1wbGF0ZScpLGFycmF5KCkpKTsKCQkJCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGR0ZW1wbGF0ZWljb24nLCR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnbWFuYWdlVGVtcGxhdGUnLCAnJywkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWN0aW9uX2FkZF90ZW1wbGF0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCkpKTsKCQovL0VuZCB0ZW1wbGF0ZXMgVGFiCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2xpbmtzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdsaW5rcycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9saXN0X3RlbXBsYXRlX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdsaXN0X3RlbXBsYXRlJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3NlY3Rpb24nLCdkZWZhdWx0YWRtaW4nKTsKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWlucGFuZWwudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.Delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8qCmlmICghICR0aGlzLT5DaGVja0FjY2VzcygiIikpCnsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CiovCgppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSkKewoKCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rcyBXSEVSRSBpZCA9ID8iOwoJCgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydpdGVtX2lkJ10pKTsKCQoJJHRoaXMtPlNlbmRFdmVudCgnTGlua0RlbGV0ZWQnLCBhcnJheSgnaWQnID0+ICRwYXJhbXNbJ2l0ZW1faWQnXSkpOwoJCgkkbW9kdWxleHRlbmRlciA9ICRnQ21zLT5tb2R1bGVzWydNb2R1bGVYdGVuZGVyJ11bJ29iamVjdCddOwkKCQoJaWYgKCRtb2R1bGV4dGVuZGVyLT5pc1h0ZW5kZWRNb2R1bGUoJHRoaXMtPmdldE5hbWUoKSkpCgl7CgkJJG1vZHVsZXh0ZW5kZXItPmRlbGV0ZVJlbGF0aW9ucygkdGhpcy0+Z2V0TmFtZSgpLCAkcGFyYW1zWydpdGVtX2lkJ10pOwoJfQoJCgkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdxdW90ZWRlbGV0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ0xpbmtzJyk7CgkKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwoJCn0KZWxzZSAKewoKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vaWRmb3VuZCcpKTsKCn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.deleteTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIiIpKQoJewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cgl9CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgRG9jdW1lbnRzTGlicmFyeSAibWFuYWdlQ2F0ZWdvcmllcyIgYWRtaW4gYWN0aW9uCiAgIAogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQogICAKICAgVHlwaWNhbGx5LCB0aGlzIHdpbGwgZGlzcGxheSBzb21ldGhpbmcgZnJvbSBhIHRlbXBsYXRlCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4KICAgCiovCgppZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpCnsKCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKCQoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnbGlzdF90ZW1wbGF0ZScpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7Cgp9CmVsc2UgCnsKCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub2lkZm91bmQnKSk7Cn0KCj8+]]></data>
	</file>
	<file>
	  <filename>/action.manageTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgRG9jdW1lbnRzTGlicmFyeSAibWFuYWdlVGVtcGxhdGUiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gUk9DSyBBTkQgTE9BRAppZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJykKewoJJHRpdGxlID0gJHBhcmFtc1sndGVtcGxhdGUnXTsKCQoJaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGJ1dHRvbiddKSB8fCBpc3NldCgkcGFyYW1zWydhcHBseWJ1dHRvbiddKSkKCXsKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSwgJHBhcmFtc1sndGVtcGxhdGVkZXRhaWxzJ10pOwoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRidXR0b24nXSkpCgkJewoJCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdsaXN0X3RlbXBsYXRlJykpOwoJCX0KCX0KfQplbHNlIAp7CgkkdGl0bGUgPSAnJzsKfQoKLy8gREVUQUlMUwoJCQoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ21hbmFnZVRlbXBsYXRlJywgJHJldHVybmlkKSk7CgkKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdmaWVsZF9uYW1lX2xhYmVsJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RlbXBsYXRlJywgJHRpdGxlLCA1MCkpOwoJCglpZiAoaXNzZXQoJHBhcmFtc1sncmVzdG9yZWxpc3QnXSkpCgl7CgkJJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZUZyb21GaWxlKCd0ZW1wbGF0ZS5saXN0Jyk7Cgl9CQoJZWxzZWlmIChpc3NldCgkcGFyYW1zWydyZXN0b3JlZGV0YWlscyddKSkKCXsKCQkkdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJ3RlbXBsYXRlLmRldGFpbHMnKTsKCX0KCWVsc2VpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJykKCXsKCQkkdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwoJfQoJZWxzZWlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZWRldGFpbHMnXSkpCgl7CgkJJHRlbXBsYXRlY29kZSA9ICRwYXJhbXNbJ3RlbXBsYXRlZGV0YWlscyddOwoJfQoJZWxzZSAKCXsKCQkkdGVtcGxhdGVjb2RlID0gJyc7Cgl9CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29kZV90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdmaWVsZF9jb2RlX2xhYmVsJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RleHRhcmVhX3RlbXBsYXRlJywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsICRpZCwgJHRlbXBsYXRlY29kZSwgJ3RlbXBsYXRlZGV0YWlscycsICdwYWdlYmlndGV4dGFyZWEnLCAnJywnJywgJycsIDkwLCAxNSwgJ0VkaXRBcmVhJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19zdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ2FjdGlvbl9zdWJtaXRfdGVtcGxhdGUnKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19hcHBseScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseWJ1dHRvbicsICR0aGlzLT5MYW5nKCdhY3Rpb25fYXBwbHlfdGVtcGxhdGUnKSkpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19yZXN0b3JlbGlzdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdyZXN0b3JlbGlzdCcsICR0aGlzLT5MYW5nKCdhY3Rpb25fcmVzdG9yZV9saXN0JykpKTsKCQoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX2RldGFpbHNfcmVzdG9yZWRldGFpbHMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAncmVzdG9yZWRldGFpbHMnLCAkdGhpcy0+TGFuZygnYWN0aW9uX3Jlc3RvcmVfZGV0YWlscycpKSk7CgoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX2VuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdtYW5hZ2V0ZW1wbGF0ZS50cGwnKTsKCQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1h0ZW5kZWQgTGlua3MnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdQb3N0IEluc3RhbGwgTWVzc2FnZS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1Bvc3QgVW5pbnN0YWxsIE1lc3NhZ2UsIGUuZy4sICJDdXJzZXMhIEZvaWxlZCBBZ2FpbiEiJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bnNpbnN0YWxsIHRoaXMgZmluZSBtb2R1bGU/JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnTGlua3MgYWxsb3dzJzsKCiRsYW5nWydpdGVtYWRkZWQnXSA9ICdMaW5rIGhhcyBiZWVuIGFkZGVkJzsKJGxhbmdbJ21vZGlmaWVkJ10gPSAnTGluayB1cGRhdGVkJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmU/JzsKCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5kWydhZG1pbl90aXRsZSddID0gJ1VzZWZ1bGwgTGlua3MgQWRtaW4gUGFuZWwnOwokbGFuZ1snYWRtaW5kZXNjcmlwdGlvbiddID0gJyc7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdQb3N0IEluc3RhbGwgTWVzc2FnZSwgKGUuZy4sIEJlIHN1cmUgdG8gc2V0ICIiIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZSEpJzsKJGxhbmdbJ0xpbmtzJ10gPSAnTGlua3MnOwokbGFuZ1snVGVtcGxhdGVMaXN0J10gPSAnVGVtcGxhdGUgTGlzdCc7CiRsYW5nWydUZW1wbGF0ZUZlYXR1cmVCb3gnXSA9ICdUZW1wbGF0ZSBGZWF0dXJlIEJveCc7CiRsYW5nWydSZWxhdGlvbnMnXSA9ICdSZWxhdGlvbnMnOwokbGFuZ1snU2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWyd0aXRsZV9saW5rcyddID0gJ0xpbmtzJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlbGlzdCddID0gJ1RlbXBsYXRlIExpc3QnOwokbGFuZ1sndGl0bGVfdGVtcGxhdGVmZWF0dXJlYm94J10gPSAnVGVtcGxhdGUgRmVhdHVyZSBCb3gnOwokbGFuZ1sndGl0bGVfcmVsYXRpb25zJ10gPSAnUmVsYXRpb25zJzsKJGxhbmdbJ3RpdGxlX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwoKJGxhbmdbJ2FkZF9uZXdfaXRlbSddID0gJ0FkZCBsaW5rJzsKCiRsYW5nWydmaWVsZF90aXRsZV9sYWJlbCddID0gJ0xpbmsgTmFtZSc7CiRsYW5nWydmaWVsZF91cmxfbGFiZWwnXSA9ICdVUkwnOwokbGFuZ1snZmllbGRfZGVzY3JpcHRpb25fbGFiZWwnXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWydmaWVsZF9uYW1lX2xhYmVsJ10gPSAnTmFtZSc7CiRsYW5nWydmaWVsZF9zd2l0Y2hfbGFiZWwnXSA9ICdBZGQgdG8gdG9wIDUgbGlzdCc7CiRsYW5nWydmaWVsZF9wb3NpdGlvbl9sYWJlbCddID0gJ1Bvc2l0aW9uJzsKJGxhbmdbJ2ZpZWxkX2NvZGVfbGFiZWwnXSA9ICdDb2RlJzsKCiRsYW5nWydhY3Rpb25fZWRpdCddID0gJ0VkaXQgTGluayc7CiRsYW5nWydhY3Rpb25fYWRkJ10gPSAnQWRkIExpbmsnOwokbGFuZ1snYWN0aW9uX3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydhY3Rpb25fY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2FjdGlvbl9hcHBseSddID0gJ0FwcGx5JzsKJGxhbmdbJ2FjdGlvbl9hZGRfdGVtcGxhdGUnXSA9ICdBZGQgdGVtcGxhdGUnOwokbGFuZ1snYWN0aW9uX3N1Ym1pdF90ZW1wbGF0ZSddID0gJ1N1Ym1pdCc7CiRsYW5nWydhY3Rpb25fYXBwbHlfdGVtcGxhdGUnXSA9ICdVcGRhdGUgdGVtcGxhdGUnOwokbGFuZ1snYWN0aW9uX2RlbGV0ZV90ZW1wbGF0ZSddID0gJ0FwcGx5JzsKJGxhbmdbJ2FjdGlvbl9yZXN0b3JlX2xpc3QnXSA9ICdSZXN0b3JlIExpc3QnOwokbGFuZ1snYWN0aW9uX3Jlc3RvcmVfZGV0YWlscyddID0gJ1Jlc3RvcmUgRGV0YWlscyc7CgokbGFuZ1snY29uZmlybV9kZWxldGUnXSA9ICdBcmUgeW91IHN1cmU/JzsKCiRsYW5nWydoZWFkZXInXSA9ICdMaW5rcyc7CgokbGFuZ1snZXJyb3JfdGl0bGUnXSA9ICdUaGUgZmllbGQgIkxpbmsgbmFtZSIgaXMgbm90IGZpbGxlZCBwcm9wZXJseSc7CiRsYW5nWydlcnJvcl91cmwnXSA9ICdUaGUgZmllbGQgIlVSTCIgaXMgbm90IGZpbGxlZCBwcm9wZXJseS4gSXQgbXVzdCBjb250YWlucyAiaHR0cDovLyIgJzsKCgokbGFuZ1snY2hhbmdlbG9nJ10gPSAnCgk8dWw+CgkJPGxpPlZlcnNpb24gMC4wLjEgLSAwMSBPY3RvYmVyIDIwMDcuIEluaXRpYWwgUmVsZWFzZS4KCQk8bGk+VmVyc2lvbiAwLjAuMiAtIDExIE9jdG9iZXIgMjAwNy4gQnVncyBmaXhlcyAmIE1vZHVsZSBYdGVuZGVyIGludGVncmF0aW9uPC9saT4KCQk8bGk+VmVyc2lvbiAwLjAuMyAtIDE1IE9jdG9iZXIgMjAwNy4gT3JkZXJpbmcgZmllbGQgYWRkZWQ8L2xpPgoJCTxsaT5WZXJzaW9uIDAuMC40IC0gMTcgT2N0b2JlciAyMDA3LiBNaW5vciBsYW5ndWFnZSBmaXhlcy4gQnVnIGZpeCBpbiBhZGQvZWRpdCBmb3JtLiBTd2l0Y2ggZnVuY3Rpb25uYWxpdHk8L2xpPgoJPC91bD4KJzsKJGxhbmdbJ2hlbHAnXSA9ICcKCTxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgoJPHA+VGhpcyBtb2R1bGUgaGFuZGxlIGEgbGlua3MgbGlicmFyeSB0aGF0IGNhbiBiZSBsaW5rZWQgd2l0aCBtdWx0aXBsZSBwYWdlcyBhbmQgY2F0ZWdvcmllcyB0cm91Z2ggTW9kdWxlWHRlbmRlcjwvcD4KCQoJPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CgkKCTxwPlRvIGluY2x1ZGUgdGhpcyBtb2R1bGUgb24gYSBwYWdlLCB1c2UgdGhlIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9Ilh0ZW5kZWRMaW5rcyJ9PC9wPgoJCgk8aDM+V2hhdCBQYXJhbWV0ZXJzIERvZXMgSXQgVGFrZTwvaDM+CgkKCTxwPgoJCgk8dWw+CgkJPGxpPjxiPmN1cnJlbnRwYWdlPC9iPiAtIElmIHlvdSBzZXQgdGhhdCwgaXQgd2lsbCBvbmx5IHNob3cgdGhlIGN1cnJlbnQgcGFnZSByZWxhdGVkIGxpbmtzLjwvbGk+CgkJPGxpPjxiPnBhZ2VzPC9iPiAtIFB1dCB0aGUgbGlzdCBvZiBhbGwgcmVsYXRlZCBwYWdlcyAocGFnZSBpZCkgKHNlcGFyYXRlIGJ5IGEgY29tbWEpIHRoYXQgdGhlIGxpc3QgbXVzdCBzaG93LjwvbGk+CgkJPGxpPjxiPmNhdGVnb3J5PC9iPiAtIElmIHlvdSBzZXQgdGhhdCwgaXQgd2lsbCBvbmx5IHNob3cgdGhlIGNhdGVnb3J5IChwdXQgdGhlIGNhdGVnb3J5IGlkKSByZWxhdGVkIGxpbmtzLjwvbGk+CgkJPGxpPjxiPmNhdGVnb3JpZXM8L2I+IC0gUHV0IHRoZSBsaXN0IG9mIGFsbCByZWxhdGVkIGNhdGVnb3JpZXMgKGNhdGVnb3J5IGlkKSAoc2VwYXJhdGUgYnkgYSBjb21tYSkgdGhhdCB0aGUgbGlzdCBtdXN0IHNob3cuPC9saT4KCQk8bGk+PGI+bWF4X2l0ZW1zPC9iPiAtIE9ubHkgc2hvdyB0aGUgWCBsYXN0IGl0ZW1zLjwvbGk+CgkJPGxpPjxiPnVzZV9zd2l0Y2g8L2I+IC0gRGVmYXVsdCBGYWxzZS4gU2V0IHRvIFRydWUgdG8gZm9yY2UgcmV0cmVpdmluZyBsaW5rcyB3aGVyZSBzd2l0Y2ggaXMgdGlja2VkIGZpcnN0LgoJPC91bD4KCQoJPC9wPgoKCTxoMz5TdXBwb3J0PC9oMz4KCTxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dCBvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgk8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KCTxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgQmVuamFtaW4gTWFnaXRzIDxhIGhyZWY9Im1haWx0bzpiZW5qYW1pbi5tYWdpdHNAZ21haWwuY29tIj4mbHQ7YmVuamFtaW4ubWFnaXRzQGdtYWlsLmNvbSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+Cgk8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEluc3RhbGwoKQoJICAgV2hlbiB5b3VyIG1vZHVsZSBpcyBpbnN0YWxsZWQsIHlvdSBtYXkgbmVlZCB0byBkbyBzb21lCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uCgkgICBhbmQgcHJlcG9wdWxhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsIGRhdGFiYXNlIHNlcXVlbmNlcywKCSAgIHBlcm1pc3Npb25zLCBwcmVmZXJlbmNlcywgZXRjLgoJICAgCSAgIAoJICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBjcmVhdGlvbiBvZiBkYXRhYmFzZSB0YWJsZXMsCgkgICBjaGVjayBvdXQgdGhlIEFET0RCIERhdGEgRGljdGlvbmFyeSBwYWdlIGF0CgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQoJICAgCgkgICBUaGlzIGZ1bmN0aW9uIGNhbiByZXR1cm4gYSBzdHJpbmcgaW4gY2FzZSBvZiBhbnkgZXJyb3IsCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLgoJICAgU3VjY2Vzc2Z1bCBpbnN0YWxscyBzaG91bGQgcmV0dXJuIEZBTFNFIG9yIG5vdGhpbmcgYXQgYWxsLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgSW5pdGlhbGl6YXRpb24KCQkkZGIgPSYgJGdDbXMtPkdldERiKCk7CgkJCgkJLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCgkJJHRhYm9wdGFycmF5ID0gYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKTsKCQkKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCiAgICAgICAgLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiAgICAgICAgJGZsZHMgPSAiCgkJCWlkIEkgS0VZLAoJCQl0aXRsZSBDKDI1NSksCgkJCXVybCBDKDI1NSksCgkJCXBvc2l0aW9uIEksCgkJCWRlc2NyaXB0aW9uIFhMLAoJCQlzd2l0Y2ggSQoJCQkiOwoKCQkvLyBjcmVhdGUgaXQuIFRoaXMgc2hvdWxkIGRvIGVycm9yIGNoZWNraW5nLCBidXQgSSdtIGEgbGF6eSBzb2QuCgkJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rcyIsICRmbGRzLCAkdGFib3B0YXJyYXkpOwoJCQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCQkkdGhpcy0+U2V0VGVtcGxhdGUoJ2Rpc3BsYXlfbGlzdCcsICR0aGlzLT5HZXRUZW1wbGF0ZUZyb21GaWxlKCd0ZW1wbGF0ZS5saXN0JykpOwoJCQoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgncmVsYXRlZF9saXN0JywgJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJ3RlbXBsYXRlLmxpc3QnKSk7CgkJCgkJLy8gY3JlYXRlIGEgc2VxdWVuY2UKCQkKCQkkZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rc19zZXEiKTsKCQkKCQkvLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoJCQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbCgpCgkgICBTb21ldGltZXMsIGFuIGV4Y2VwdGlvbmFsbHkgdW5lbmxpZ2h0ZW5lZCBvciBpZ25vcmFudAoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQKCSAgIHdvdWxkIGJlIGJlc3QgdG8gbGF5IGludG8gdGhlc2UgaWRpb3RzIHdpdGggYSBjbHVlc3RpY2ssCgkgICB3ZSB3aWxsIGRvIHRoZSBtYWduYW5pbW91cyB0aGluZyBhbmQgcmVtb3ZlIHRoZSBtb2R1bGUKCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMKCSAgIHRoYXQgYXJlIHNwZWNpZmljIHRvIGl0LgoJICAgVGhpcyBpcyB0aGUgbWV0aG9kIHdoZXJlIHdlIGRvIHRoaXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgoJCQoJCS8vIFR5cGljYWwgRGF0YWJhc2UgUmVtb3ZhbAoJCSRkYiA9JiAkZ0Ntcy0+R2V0RGIoKTsKCQkKCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgkJLy8gcmVtb3ZlIHRoZSBzZXF1ZW5jZQoJCSRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV94dGVuZGVkbGlua3Nfc2VxIiApOwoJCS8qCgkJLy8gcmVtb3ZlIHRoZSBkYXRhYmFzZSB0YWJsZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rc19vcHRpb25zIiApOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgkJLy8gcmVtb3ZlIHRoZSBzZXF1ZW5jZQoJCSRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV94dGVuZGVkbGlua3Nfb3B0aW9uc19zZXEiICk7CgkJCgkJLy8gcmVtb3ZlIHRoZSBkYXRhYmFzZSB0YWJsZQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rc19yZWxhdGlvbnMiICk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCQkvLyByZW1vdmUgdGhlIHNlcXVlbmNlCgkJJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rc19yZWxhdGlvbnNfc2VxIiApOwoJCQoJCS8vIHJlbW92ZSB0aGUgZGF0YWJhc2UgdGFibGUKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV94dGVuZGVkbGlua3NfY2F0ZWdvcmllcyIgKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoJCS8vIHJlbW92ZSB0aGUgc2VxdWVuY2UKCQkkZGItPkRyb3BTZXF1ZW5jZSggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzX2NhdGVnb3JpZXNfc2VxIiApOwoJCSovCgkJCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwoJCQoJCQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVwZ3JhZGUoKQoJICAgSWYgeW91ciBtb2R1bGUgdmVyc2lvbiBudW1iZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHZlcnNpb24KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUKCSAgIHlvdSBhIGNoYW5jZSB0byB1cGdyYWRlIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIGZ1bmN0aW9uCgkgICB0aGF0IGFjdHVhbGx5IGhhbmRsZXMgdGhlIHVwZ3JhZGUuCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwKCSAgIHNvIHlvdSBjb3VsZCB1cGdyYWRlIGZyb20gdmVyc2lvbiAwLjAuMSB0byAxMC41Ljcgd2l0aAoJICAgYSBzaW5nbGUgY2FsbC4gRm9yIGEgZ3JlYXQgZXhhbXBsZSBvZiB0aGlzLCBzZWUgdGhlIE5ld3MKCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCgkJJGN1cnJlbnRfdmVyc2lvbiA9ICRvbGR2ZXJzaW9uOwoJCQoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQoJCXsKCQkJY2FzZSAiMS4wIjoKCQkJICAgICBicmVhazsKCQkJY2FzZSAiMS4xIjoKCQkJICAgICBicmVhazsKCQl9CgkJCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCgkJJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminAddEdit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3JtX3N0YXJ0fQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRfdGl0bGVfbGFiZWx9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZpZWxkX3RpdGxlX25hbWV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskZmllbGRfdXJsX2xhYmVsfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmaWVsZF91cmxfbmFtZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRmaWVsZF9zd2l0Y2hfbGFiZWx9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZpZWxkX3N3aXRjaF9uYW1lfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkX3Bvc2l0aW9uX2xhYmVsfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmaWVsZF9wb3NpdGlvbl9uYW1lfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGZpZWxkX2Rlc2NyaXB0aW9uX2xhYmVsfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmaWVsZF9kZXNjcmlwdGlvbl9uYW1lfTwvcD4KPC9kaXY+CgoKCnskaW5wdXRfc3VibWl0dGVkfQoKe2lmICRpdGVtX2lkfQoJeyRpdGVtX2lkfQp7L2lmfQoKPGJyLz4KPGRpdj57JHh0ZW5kZWRfZm9ybX08L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRfYnV0dG9ufXskYXBwbHlfYnV0dG9ufXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZm9ybV9lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0YWJfaGVhZGVyc30KCgl7JHN0YXJ0X2xpbmtzX3RhYn0KCQkKCQk8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+CgkJCTxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRpdGVtbGlua30geyRhZGRpdGVtfTwvcD4KCQk8L2Rpdj4KCQkKCQl7aWYgJGl0ZW1jb3VudCA+IDB9CgkJCTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CgkJCQk8dGhlYWQ+CgkJCQkJPHRyPgoJCQkJCQk8dGg+eyRoZWFkZXJ9PC90aD4KCQkJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCQkJPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KCQkJCQk8L3RyPgoJCQkJPC90aGVhZD4KCQkJCTx0Ym9keT4KCQkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQkJCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgoJCQkJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCQkJCQk8dGQgd2lkdGg9IjMwIj57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJCQkJCQk8dGQgd2lkdGg9IjMwIj57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CgkJCQkJPC90cj4KCQkJey9mb3JlYWNofQoJCQkJPC90Ym9keT4KCQkJPC90YWJsZT4KCQl7L2lmfQoJCQoJeyRlbmRfdGFifQoJCgl7JHN0YXJ0X2xpc3RfdGVtcGxhdGVfdGFifQoJCQoJCTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCQkJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZHRlbXBsYXRlaWNvbn0geyRhZGR0ZW1wbGF0ZWxpbmt9PC9wPgoJCTwvZGl2PgoJCQoJCXtpZiAkdGVtcGxhdGVzX2NvdW50ID4gMH0KCQk8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPnskdGl0bGVfdGVtcGxhdGV9PC90aD4KCQkJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kdGVtcGxhdGVzIGl0ZW09ZW50cnl9CgkJCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgoJCQkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJCQkJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CgkJCQkJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCQkJCTwvdHI+CgkJey9mb3JlYWNofQoJCQk8L3Rib2R5PgoJCTwvdGFibGU+CgkJCgkJPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgoJCQk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkdGVtcGxhdGVpY29ufSB7JGFkZHRlbXBsYXRlbGlua308L3A+CgkJPC9kaXY+CgkJCgkJey9pZn0KCQkKCXskZW5kX3RhYn0KCnskdGFiX2Zvb3RlcnN9CgoK]]></data>
	</file>
	<file>
	  <filename>/templates/Display.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQoJPGRpdiBpZD0ibGlua3MiPgoJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQk8ZGl2IGNsYXNzPSJsaW5rIj4KCQkJPGRpdj48YSBocmVmPSJ7JGVudHJ5LT51cmx9IiB0YXJnZXQ9Il9ibGFuayI+eyRlbnRyeS0+dGl0bGV9PC9hPjwvZGl2PgkKCQkJCgkJCXtpZiAkZW50cnktPmRlc2NyaXB0aW9ufQoJCQkJPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPgoJCQkJCXskZW50cnktPmRlc2NyaXB0aW9ufQoJCQkJPC9kaXY+CgkJCXsvaWZ9CgkJPC9kaXY+Cgl7L2ZvcmVhY2h9Cgk8L2Rpdj4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/managetemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3JtX3N0YXJ0fQoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRjb2RlX3RlbXBsYXRlfTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZXh0YXJlYV90ZW1wbGF0ZX08L3A+CjwvZGl2PgoKCgl7JGZvcm1fZGV0YWlsc19zdWJtaXR9Cgl7JGZvcm1fZGV0YWlsc19hcHBseX0KCXskZm9ybV9kZXRhaWxzX3Jlc3RvcmVsaXN0fQoJeyRmb3JtX2RldGFpbHNfcmVzdG9yZWRldGFpbHN9Cgp7JGZvcm1fZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/template.list.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQoKCTxkaXYgaWQ9Ilh0ZW5kZWRMaW5rcyI+CgkKCQk8dWw+CgkJCgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1pdGVtfQoJCQoJCQk8bGk+CgkJCQoJCQkJPGRpdiBjbGFzcz0idGl0bGUiPnskaXRlbS0+dGl0bGV9PC9kaXY+CgkJCQkKCQkJCXtpZiAkaXRlbS0+ZGVzY3JpcHRpb24gbmUgIiJ9CgkJCQkJPGRpdiBjbGFzcz0ic3VtbWFyeSI+eyRpdGVtLT5kZXNjcmlwdGlvbn08L2Rpdj4KCQkJCXsvaWZ9CgkJCQkKCQkJCTxhIGhyZWY9InskaXRlbS0+dXJsfSIgdGFyZ2V0PSJfYmxhbmsiPnskaXRlbS0+dXJsfTwvYT4KCQkJCQoJCQk8L2xpPgoJCQkKCQl7L2ZvcmVhY2h9CgkJCgkJPC91bD4KCQkKCTwvZGl2PgoJCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/template.related.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQoKICAgIDxkaXYgaWQ9Ilh0ZW5kZWRMaW5rcyI+CiAgICAKICAgICAgICA8dWw+CiAgICAgICAgCiAgICAgICAge2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1pdGVtfQogICAgICAgICAgICAKICAgICAgICAgICAge2lmICRpKysgaXMgb2RkIGJ5IDF9IAogICAgICAgICAgICAgICAge2Fzc2lnbiB2YXI9J0NlbGxDU1MnIHZhbHVlPSdnbG9iYWxMaXN0Q2VsbDEnfSAKICAgICAgICAgICAge2Vsc2V9IAogICAgICAgICAgICAgICAge2Fzc2lnbiB2YXI9J0NlbGxDU1MnIHZhbHVlPSdnbG9iYWxMaXN0Q2VsbDInfSAKICAgICAgICAgICAgey9pZn0KICAgICAgICAKICAgICAgICAgICAgIDxsaSBjbGFzcz0ieyRDZWxsQ1NTfSI+PGRpdiBjbGFzcz0idGl0bGUiPjxhIGhyZWY9InskaXRlbS0+dXJsfSIgdGFyZ2V0PSJfYmxhbmsiPnskaXRlbS0+dGl0bGV9PC9hPjwvZGl2PjwvbGk+CiAgICAgICAgICAgIAogICAgICAgIHsvZm9yZWFjaH0KICAgICAgICAKICAgICAgICA8L3VsPgogICAgICAgIAogICAgPC9kaXY+CiAgICAKey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/XtendedLinks.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IExpbmtzIC0gCiMgVmVyc2lvbjogMC4wLjIsIEJlbmphbWluIE1hZ2l0cwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA3IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMgVGhpcyBmaWxlIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBNb2R1bGVNYWtlciBtb2R1bGUsIHZlcnNpb24gMC4zLjEKIyBDb3B5cmlnaHQgKGMpIDIwMDcgYnkgU2FtdWVsIEdvbGRzdGVpbiAoc2pnQGNtc21hZGVzaW1wbGUub3JnKSAKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEZvciBIZWxwIGJ1aWxkaW5nIG1vZHVsZXM6CiMgLSBSZWFkIHRoZSBEb2N1bWVudGF0aW9uIGFzIGl0IGJlY29tZXMgYXZhaWxhYmxlIGF0CiMgICBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnLwojIC0gQ2hlY2sgb3V0IHRoZSBTa2VsZXRvbiBNb2R1bGUgZm9yIGEgY29tbWVudGVkIGV4YW1wbGUKIyAtIExvb2sgYXQgb3RoZXIgbW9kdWxlcywgYW5kIGxlYXJuIGZyb20gdGhlIHNvdXJjZQojIC0gQ2hlY2sgb3V0IHRoZSBmb3J1bXMgYXQgaHR0cDovL2ZvcnVtcy5jbXNtYWRlc2ltcGxlLm9yZwojIC0gQ2hhdCB3aXRoIGRldmVsb3BlcnMgb24gdGhlICNjbXMgSVJDIGNoYW5uZWwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KY2xhc3MgWHRlbmRlZExpbmtzIGV4dGVuZHMgQ01TTW9kdWxlCnsKCglmdW5jdGlvbiBHZXROYW1lKCkKCXsKCQlyZXR1cm4gJ1h0ZW5kZWRMaW5rcyc7Cgl9CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldEZyaWVuZGx5TmFtZSgpCgkgICBUaGlzIGNhbiByZXR1cm4gYW55IHN0cmluZywgcHJlZmVyYWJseSBhIGxvY2FsaXplZCBuYW1lCgkgICBvZiB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQncyBzaG93biBpbiB0aGUKCSAgIEFkbWluIE1lbnVzIGFuZCBzZWN0aW9uIHBhZ2VzIChpZiB0aGUgbW9kdWxlIGhhcyBhbiBhZG1pbgoJICAgY29tcG9uZW50KS4KCSAgIAoJICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKCX0KCgkKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRWZXJzaW9uKCkKCSAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yCgkgICBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLgoJICAgVGhlIENNUyB3aWxsIHVzZSB0aGlzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90CgkgICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQKCSAgIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQoJICAgaXRzZWxmIGlmIHJlcXVlc3RlZC4JICAgCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRWZXJzaW9uKCkKCXsKCQlyZXR1cm4gJzAuMC40JzsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0SGVscCgpCgkgICBUaGlzIHJldHVybnMgSFRNTCBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlLgoJICAgVHlwaWNhbGx5LCB5b3UnbGwgd2FudCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0bwoJICAgdXNlIHRoZSBtb2R1bGUuCgkgICAKCSAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRIZWxwKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0QXV0aG9yKCkKCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlICJBYm91dCIgbGluay4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEF1dGhvcigpCgl7CgkJcmV0dXJuICdCZW5qYW1pbiBNYWdpdHMnOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBdXRob3JFbWFpbCgpCgkgICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQoJICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywKCSAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCgl7CgkJcmV0dXJuICdiZW5qYW1pbi5tYWdpdHNAZ21haWwuY29tJzsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0Q2hhbmdlTG9nKCkKCSAgIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgbW9kdWxlCgkgICBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlIEFib3V0IGxpbmsuIEl0IGhlbHBzIHVzZXJzCgkgICBmaWd1cmUgb3V0IHdoYXQncyBjaGFuZ2VkIGJldHdlZW4gcmVsZWFzZXMuCgkgICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBJc1BsdWdpbk1vZHVsZSgpCgkgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIHVwb24KCSAgIHdoZXRoZXIgdXNlcnMgY2FuIGluY2x1ZGUgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IKCSAgIHRlbXBsYXRlIHVzaW5nIGEgc21hcnR5IHRhZyBvZiB0aGUgZm9ybQoJICAge2Ntc19tb2R1bGUgbW9kdWxlPSdMaW5rcycgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQoJICAgCgkgICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3IKCSAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgSGFzQWRtaW4oKQoJICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgYm9vbGVhbiB2YWx1ZSwgZGVwZW5kaW5nIG9uCgkgICB3aGV0aGVyIHlvdXIgbW9kdWxlIGFkZHMgYW55dGhpbmcgdG8gdGhlIEFkbWluIGFyZWEgb2YKCSAgIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEknbGwgYmUgY2FsbGluZwoJICAgdGhlIGFkbWluIHBhcnQgb2YgeW91ciBtb2R1bGUgdGhlICJBZG1pbiBQYW5lbCIgZm9yCgkgICB3YW50IG9mIGEgYmV0dGVyIHRlcm0uCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBIYXNBZG1pbigpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBHZXRBZG1pblNlY3Rpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkKCSAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cwoJICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0CgkgICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToKCgkgICBtYWluICAgICAgICAtIHRoZSBNYWluIG1lbnUgdGFiLgoJICAgY29udGVudCAgICAgLSB0aGUgQ29udGVudCBtZW51CgkgICBsYXlvdXQgICAgICAtIHRoZSBMYXlvdXQgbWVudQoJICAgdXNlcnNncm91cHMgLSB0aGUgVXNlcnMgYW5kIEdyb3VwcyBtZW51CgkgICBleHRlbnNpb25zICAtIHRoZSBFeHRlbnNpb25zIG1lbnUgKHRoaXMgaXMgdGhlIGRlZmF1bHQpCgkgICBzaXRlYWRtaW4gICAtIHRoZSBTaXRlIEFkbWluIG1lbnUKCSAgIHZpZXdzaXRlICAgIC0gdGhlIFZpZXcgU2l0ZSBtZW51IHRhYgoJICAgbG9nb3V0ICAgICAgLSB0aGUgTG9nb3V0IG1lbnUgdGFiCgkgICAKCSAgIE5vdGUgdGhhdCBpZiB5b3UgcGxhY2UgeW91ciBtb2R1bGUgaW4gdGhlIG1haW4sCgkgICB2aWV3c2l0ZSwgb3IgbG9nb3V0IHNlY3Rpb25zLCBpdCB3aWxsIHNob3cgdXAgaW4gdGhlCgkgICBtZW51cywgYnV0IHdpbGwgbm90IGJlIHZpc2libGUgaW4gYW55IHRvcC1sZXZlbAoJICAgc2VjdGlvbiBwYWdlcy4KCSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCgl7CgkJcmV0dXJuICdjb250ZW50JzsKCX0KCgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIEdldEFkbWluRGVzY3JpcHRpb24oKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24KCSAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdhZG1pbmRlc2NyaXB0aW9uJyk7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBWaXNpYmxlVG9BZG1pblVzZXIoKQoJICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKCSAgIGNhbiBjb250cm9sIHdoZXRoZXIgb3Igbm90IGl0J3MgZGlzcGxheWVkIGJ5IHRoZSBib29sZWFuCgkgICB0aGF0IGlzIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBUaGlzIGlzIHByaW1hcmlseSB1c2VkCgkgICB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKCSAgIHRoZW0uCgkgICAKCSAgIFR5cGljYWxseSwgeW91J2xsIHVzZSBzb21lIHBlcm1pc3Npb24gdG8gc2V0IHRoaXMKCSAgIChlLmcuLCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdTb21lIFBlcm1pc3Npb24nKTsgKQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCXsKICAgICAgICByZXR1cm4gdHJ1ZTsKCX0KCQoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBDaGVja0FjY2VzcygpCgkgICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwKCSAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnJykKCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybSk7Cgl9CgkKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBEaXNwbGF5RXJyb3JQYWdlKCkKCSAgIFRoaXMgaXMgYSBzaW1wbGUgZnVuY3Rpb24gZm9yIGdlbmVyYXRpbmcgZXJyb3IgcGFnZXMuCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgICBmdW5jdGlvbiBEaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlPScnKQogICAgewoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZygnZXJyb3InKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbWVzc2FnZScsICRtZXNzYWdlKTsKCiAgICAgICAgLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCiAgICAgICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsKICAgIH0KCQoKCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICAgR2V0RGVwZW5kZW5jaWVzKCkKCSAgIFlvdXIgbW9kdWxlIG1heSBuZWVkIGFub3RoZXIgbW9kdWxlIHRvIGFscmVhZHkgYmUgaW5zdGFsbGVkCgkgICBiZWZvcmUgeW91IGNhbiBpbnN0YWxsIGl0LgoJICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZAoJICAgbWluaW11bSB2ZXJzaW9uIG51bWJlcnMgdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KCSAgIAoJICAgSXQgc2hvdWxkIHJldHVybiBhbiBoYXNoLCBlZy4KCSAgIHJldHVybiBhcnJheSgnc29tZW1vZHVsZSc9PicxLjAnLCAnb3RoZXJtb2R1bGUnPT4nMS4xJyk7CgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKQoJewoJCXJldHVybiBhcnJheSgnTW9kdWxlWHRlbmRlcic9PicwLjAuMi40Jyk7Cgl9CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIE1pbmltdW1DTVNWZXJzaW9uKCkKCSAgIFlvdXIgbW9kdWxlIG1heSByZXF1aXJlIGZ1bmN0aW9ucyBvciBvYmplY3RzIGZyb20KCSAgIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBDTVMgTWFkZSBTaW1wbGUuCgkgICBFdmVyIHNpbmNlIHZlcnNpb24gMC4xMSwgeW91IGNhbiBzcGVjaWZ5IHdoaWNoIG1pbmltdW0KCSAgIENNUyBNUyB2ZXJzaW9uIGlzIHJlcXVpcmVkIGZvciB5b3VyIG1vZHVsZSwgd2hpY2ggd2lsbAoJICAgcHJldmVudCBpdCBmcm9tIGJlaW5nIGluc3RhbGxlZCBieSBhIHZlcnNpb24gb2YgQ01TIHRoYXQKCSAgIGNhbid0IHJ1biBpdC4KCSAgIAoJICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlCgkgICBtaW5pbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KCSAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCglmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjAuNiI7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBNYXhpbXVtQ01TVmVyc2lvbigpCgkgICBZb3UgbWF5IHdhbnQgdG8gcHJldmVudCBwZW9wbGUgZnJvbSB1c2luZyB5b3VyIG1vZHVsZSBpbgoJICAgZnV0dXJlIHZlcnNpb25zIG9mIENNUyBNYWRlIFNpbXBsZSwgZXNwZWNpYWxseSBpZiB5b3UKCSAgIHRoaW5rIEFQSSBmZWF0dXJlcyB5b3UgdXNlIG1heSBjaGFuZ2UgLS0gYWZ0ZXIgYWxsLCB5b3UKCSAgIG5ldmVyIHJlYWxseSBrbm93IGhvdyB0aGUgQ01TIE1TIEFQSSBjb3VsZCBldm9sdmUuCgkgICAKCSAgIFNvLCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIGZsb29kaW5nIHlvdSB3aXRoIGJ1ZyByZXBvcnRzCgkgICB3aGVuIGEgbmV3IHZlcnNpb24gb2YgQ01TIE1TIGlzIHJlbGVhc2VkLCB5b3UgY2FuIHNpbXBseQoJICAgcmVzdHJpY3QgdGhlIHZlcnNpb24uIFRoZW4sIG9mIGNvdXJzZSwgdGhlIG9udXMgaXMgb24geW91CgkgICB0byByZWxlYXNlIGEgbmV3IHZlcnNpb24gb2YgeW91ciBtb2R1bGUgd2hlbiBhIG5ldyB2ZXJzaW9uCgkgICBvZiB0aGUgQ01TIGlzIHJlbGVhc2VkLi4uCgkgICAKCSAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQoJICAgbWF4aW11bSB2ZXJzaW9uIHRoYXQgdGhpcyBtb2R1bGUgc3VwcG9ydHMuCgkgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQoJewoJCXJldHVybiAiMS4xLjQuMSI7Cgl9CgoKCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQoJICAgQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCgkgICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQoJICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7Cgl9CgoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAgIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKCSAgIEFmdGVyIHJlbW92aW5nIGEgbW9kdWxlLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvCgkgICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQoJICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoJZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwoJfQoKCgoKCS8qKgoJICogVW5pbnN0YWxsUHJlTWVzc2FnZSgpCgkgKiBUaGlzIGFsbG93cyB5b3UgdG8gZGlzcGxheSBhIG1lc3NhZ2UgYWxvbmcgd2l0aCBhIFllcy9ObyBkaWFsb2cgYm94LiBJZiB0aGUgdXNlciByZXNwb25kcwoJICogaW4gdGhlIGFmZmlybWF0aXZlIHRvIHlvdXIgbWVzc2FnZSwgdGhlIHVuaW5zdGFsbCB3aWxsIHByb2NlZWQuIElmIHRoZXkgcmVzcG9uZCBpbiB0aGUKCSAqIG5lZ2F0aXZlLCB0aGUgdW5pbnN0YWxsIHdpbGwgYmUgY2FuY2VsZWQuIFRodXMsIHlvdXIgbWVzc2FnZSBzaG91bGQgYmUgb2YgdGhlIGZvcm0KCSAqICJBbGwgbW9kdWxlIGRhdGEgd2lsbCBiZSBkZWxldGVkLiBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlPyIKCSAqCgkgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGlhbG9nLCBoYXZlIHRoaXMgbWV0aG9kIHJldHVybiBhIEZBTFNFLCB3aGljaCB3aWxsIGNhdXNlIHRoZQoJICogbW9kdWxlIHRvIHVuaW5zdGFsbCBpbW1lZGlhdGVseSBpZiB0aGUgdXNlciBjbGlja3MgdGhlICJ1bmluc3RhbGwiIGxpbmsuCgkgKi8KCWZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwoJfQoJCgkvKioKCSAqIEdldExpc3QoKQoJICogUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIGl0ZW1zCgkgKgoJICogQHJldHVybiBhcnJheQoJICovCgkKCWZ1bmN0aW9uIEdldExpc3QoICRpZCwgJHJldHVybmlkLCAkcGFyYW1zICkKCXsKCQkKCQlnbG9iYWwgJGdDbXM7CgkJCgkJLy8gVVNFIFBBUkFNUwoJCQoJCS8vIFBBR0VTCgkJCgkJJHBhZ2VzID0gYXJyYXkoKTsKCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snY3VycmVudHBhZ2UnXSkpCgkJewoJCQkkcGFnZXNbXSA9ICRnQ21zLT52YXJpYWJsZXNbJ2NvbnRlbnRfaWQnXTsKCQl9CgkJCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2VzJ10pKQoJCXsKCQkJJHBhZ2VzID0gYXJyYXlfbWVyZ2UoJHBhZ2VzLCAkdGhpcy0+YXJyYXlVbnNlcmlhbGlzZSgkcGFyYW1zWydwYWdlcyddKSk7CQoJCX0KCQkKCQkvLyBDQVRFR09SSUVTCgkKCQkkY2F0ZWdvcmllcyA9IGFycmF5KCk7CgkJCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5J10pKQoJCXsKCQkJJGNhdGVnb3JpZXNbXSA9IGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5J10pOwoJCX0KCQkKCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcmllcyddKSkKCQl7CgkJCSRjYXRlZ29yaWVzID0gYXJyYXlfbWVyZ2UoJGNhdGVnb3JpZXMsICR0aGlzLT5hcnJheVVuc2VyaWFsaXNlKCRwYXJhbXNbJ2NhdGVnb3JpZXMnXSkpOwkKCQl9CgkJCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ21heF9pdGVtcyddKSkKCQl7CgkJCSRtYXhfaXRlbXMgPSAkcGFyYW1zWydtYXhfaXRlbXMnXTsKCQl9CgkJZWxzZSAKCQl7CgkJCSAkbWF4X2l0ZW1zID0gMDsKCQl9CgkJCgkJJGZpbHRlcnMgPSBhcnJheSgpOwoJCQoJCWlmIChpc3NldCgkcGFyYW1zWyd5ZWFyJ10pKQoJCXsKCQkJJGZpbHRlcnNbJ3llYXInXSA9ICRwYXJhbXNbJ3llYXInXTsKCQl9CgkJCQoJCQoJCS8vIEVORCBPRiBQQVJBTVMKCQkKCQkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJCgkJaWYgKGNvdW50KCRwYWdlcykgPiAwIHx8IGNvdW50KCRjYXRlZ29yaWVzKSA+IDApCgkJewkKCQkKCQkJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9tb2R1bGV4dGVuZGVyX3JlbGF0aW9uc19saW5rIAoJCQkKCQkJTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzCgkJCQoJCQlPTgoJCQkKCQkJIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV94dGVuZGVkbGlua3MuaWQgPSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX21vZHVsZXh0ZW5kZXJfcmVsYXRpb25zX2xpbmsubW9kdWxlX2lkCgkJCQoJCQlBTkQgbW9kdWxlbmFtZSA9ICciLiR0aGlzLT5HZXROYW1lKCkuIiciOwoJCQoJCQoJCQkkcXVlcnkgLj0gJyBXSEVSRSAnOwoJCQkKCQkJCgkJCS8vIFBhZ2VzIGZpbHRlcgoJCQkKCQkJaWYgKGNvdW50KCRwYWdlcykgPiAwKQoJCQl7CgkJCQkkcXVlcnkgLj0gIihyZWxfY29kZSA9ICdwYWdlcycgQU5EICgiOwoJCQkJCgkJCQkkZmlyc3QgPSAwOwoJCQkJCgkJCQlmb3JlYWNoICgkcGFnZXMgYXMgJHBhZ2VpZCkKCQkJCXsJCQkKCQkJCQlpZiAoISRmaXJzdCkKCQkJCQl7CgkJCQkJCSRxdWVyeSAuPSAncmVsX2lkID0gJy4kcGFnZWlkOwoJCQkJCX0KCQkJCQllbHNlIAoJCQkJCXsKCQkJCQkJJHF1ZXJ5IC49ICcgT1IgcmVsX2lkID0nLiRwYWdlaWQ7CgkJCQkJfQoJCQkJCQkKCQkJCQkkZmlyc3QrKzsJCQkJCgkJCQl9CgkJCQkKCQkJCSRxdWVyeSAuPSAiKSkiOwoJCQl9CgkJCQoJCQlpZiAoY291bnQoJHBhZ2VzKSA+IDAgJiYgY291bnQoJGNhdGVnb3JpZXMpID4gMCkKCQkJewoJCQkJJHF1ZXJ5IC49ICcgT1IgJzsKCQkJfQoJCQkKCQkJaWYgKGNvdW50KCRjYXRlZ29yaWVzKSA+IDApCgkJCXsKCQkJCSRxdWVyeSAuPSAiKHJlbF9jb2RlID0gJ29wdGlvbnMnIEFORCAoIjsKCQkJCQoJCQkJJGZpcnN0ID0gMDsKCQkJCQoJCQkJZm9yZWFjaCAoJGNhdGVnb3JpZXMgYXMgJG9wdGlvbmlkKQoJCQkJewkJCQoJCQkJCWlmICghJGZpcnN0KQoJCQkJCXsKCQkJCQkJJHF1ZXJ5IC49ICdyZWxfaWQgPSAnLiRvcHRpb25pZDsKCQkJCQl9CgkJCQkJZWxzZSAKCQkJCQl7CgkJCQkJCSRxdWVyeSAuPSAnIE9SIHJlbF9pZCA9Jy4kb3B0aW9uaWQ7CgkJCQkJfQoJCQkJCQoJCQkJCSRmaXJzdCsrOwoJCQkJfQoJCQkJCgkJCQkkcXVlcnkgLj0gIikpIjsKCQkJfQoJCQkJCQkKCQl9CgkJZWxzZSAKCQl7CgkJCQoJCQkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3h0ZW5kZWRsaW5rcyI7CgkJCQoJCX0KCQkKCQkkcXVlcnkgLj0gIiBPUkRFUiBCWSAiOwoJCQkKCQlpZiggJHBhcmFtc1sndXNlX3N3aXRjaCddICApCgkJewoJCQkkcXVlcnkgLj0gInN3aXRjaCBERVNDICwiOwoJCX0KCQkKCQkkcXVlcnkgLj0gIiBwb3NpdGlvbiBBU0MiOwoJCQkJCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJCgkJJGxpc3QgPSBhcnJheSgpOwoJCQoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRpdGVtT2JqZWN0ID0gbmV3IHN0ZENsYXNzKCk7CgkJCQoJCQkkaXRlbU9iamVjdC0+aWQ9JHJvd1snaWQnXTsKCQkJCgkJCSRpdGVtT2JqZWN0LT50aXRsZT0kcm93Wyd0aXRsZSddOwoJCQkKCQkJJGl0ZW1PYmplY3QtPnVybD0kcm93Wyd1cmwnXTsKCQkJCgkJCSRpdGVtT2JqZWN0LT5kZXNjcmlwdGlvbj0kcm93WydkZXNjcmlwdGlvbiddOwoJCQkKCQkJaWYgKCRyb3dbJ2lkJ10gIT0gJycpCgkJCXsKCQkJCSRsaXN0W10gPSAkaXRlbU9iamVjdDsKCQkJfQoJCX0KCgkJcmV0dXJuICRsaXN0OwoKCX0KCQoJLyoqCgkgKiBHZXRJdGVtSW5mb3MoKQoJICogUmV0dXJucyBEQiBmaWVsZCB2YWx1ZQoJICogCgkgKiBAcGFyYW0gbnVtZXJpYyAkaWQKCSAqIEBwYXJhbSBhcnJheSAkc2VsZWN0cm93CgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglmdW5jdGlvbiBHZXRJdGVtSW5mb3MgKCRpZCwgJHNlbGVjdHJvdyA9IGFycmF5KCkpCgl7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCQoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfeHRlbmRlZGxpbmtzIFdIRVJFIGlkID0gPyI7CgkJCQkKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWQpKTsKCQkKCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQlpZiAoY291bnQoJHNlbGVjdHJvdykgPiAwKQoJCQl7CgkJCQlmb3JlYWNoICgkc2VsZWN0cm93IGFzICRjb2wpIHsJCgkJCQkJJGFycmF5WyRjb2xdID0gJHJvd1skY29sXTsKCQkJCX0KCQkJCXJldHVybiAkYXJyYXk7IAoJCQkJCgkJCX0KCQkJZWxzZSAKCQkJewoJCQkJcmV0dXJuICRyb3c7CgkJCX0KCQkJCgkJfQkJCQoJfQoJCgkvKioKCSAqIEVudGVyIGRlc2NyaXB0aW9uIGhlcmUuLi4KCSAqCgkgKiBAcGFyYW0gdW5rbm93bl90eXBlICRzdHJpbmcKCSAqIEBwYXJhbSB1bmtub3duX3R5cGUgJHR5cGUKCSAqIEByZXR1cm4gdW5rbm93bgoJICovCglmdW5jdGlvbiBhcnJheVVuc2VyaWFsaXNlICgkc3RyaW5nLCAkdHlwZT0nJykKCXsKCQkvLyBUaGlzIGZ1bmN0aW9uIHVuc2VyaWFsaXNlIGFuIGFycmF5IGdpdmVuIGxpa2UgYSBzdHJpbmcKCgkJJGFycmF5MSA9IHNwbGl0KCcsJywgJHN0cmluZyk7CgkJCgkJaWYgKCR0eXBlID09ICdhc3NvYycpCgkJewoJCQkkYXJyYXkyID0gYXJyYXkoKTsKCQkJCgkJCWZvcmVhY2ggKCRhcnJheTEgYXMgJHN1YmFycmF5KQoJCQl7CgkJCQkkdG1wYXJyYXkgPSBhcnJheSgpOwoJCQkJJHRtcGFycmF5ID0gc3BsaXQoJz0+JywgJHN1YmFycmF5KTsKCQkJCSRhcnJheTJbdHJpbSgkdG1wYXJyYXlbMF0pXSA9IHRyaW0oJHRtcGFycmF5WzFdKTsKCQkJfQoJCX0KCQllbHNlIAoJCXsKCQkJJGFycmF5MiA9ICRhcnJheTE7CgkJfQoJCgkJcmV0dXJuICRhcnJheTI7Cgl9CgkKCWZ1bmN0aW9uIFh0ZW5kZWRNb2R1bGUgKCkKCXsKCQlyZXR1cm4gZmFsc2U7Cgl9CgkKfQoKPz4K]]></data>
	</file>
</module>
