<?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>SitePusher</name>
	<version>0.1</version>
  <mincmsversion>1.1.1</mincmsversion>
	<help>PGgzPldoYXQgaXMgaXQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBhbGxvd3MgcHVzaGluZyB5b3VyIGV4aXN0aW5nIENNUyBNYWRlIFNpbXBsZSB3ZWJzaXRlIG9udG8gYSBibGFuayBob3N0aW5nIGVudmlyb25tZW50LiAgU29tZWUgb2YgdGhlIGZlYXR1cmVzIGluY2x1ZGU6Cjx1bD4KPGxpPkNvbXBsZXRlIGRhdGFiYXNlIGJhY2t1cCBsb2NhbGx5LCBhbmQgcmVzdG9yZSByZW1vdGVseSA8ZW0+KG15c3FsIG9ubHkpPC9lbT48L2xpPgo8bGk+UHVzaGluZyBvZiBhbGwgbW9kdWxlcywgaW1hZ2VzLCBhbmQgb3RoZXIgZmlsZWVzIGZyb20gdGhlIGxvY2FsIG1hY2hpbmUgdG8gdGhlIHJlbW90ZTwvbGk+CjxsaT5SZS1jcmVhdGluZyB0aGUgdG1wIGRpcmVjdG9yeSB3aXRoIHRoZSBjb3JyZWN0IHBlcm1pc3Npb25zIG9uIHRoZSByZW1vdGUgaG9zdC48L2xpPgo8bGk+UmUtY3JlYXRpbmcgdGhlIGNvbmZpZy5waHAgb24gdGhlIHJlbW90ZSBob3N0LjwvbGk+CjwvdWw+CjwvcD4KPGgzPldobyBpcyBpdCBmb3I8L2gzPgo8cD5UaGlzIG1vZHVsZSB3YXMgZGVzaWduZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHB1c2ggYSBkZXZlbG9wbWVudCBzaXRlIGxpdmUgb24gYSByZW1vdGUgc2VydmVyLiAgSXQgd2FzIHdyaXR0ZW4gZm9yIHdlYnNpdGUgZGV2ZWxvcGVycywgYW5kIGFkbWluaXN0cmF0b3JzIHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHN0ZXBzIHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBwcm9kdWN0aW9uIHdlYnNpdGUuPC9wPgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHA+U2l0ZXB1c2hlciBoYXMgbm8gZnJvbnQgZW5kIGludGVyZmFjZSwgb25seSBhbiBhZG1pbiBpbnRlcmZhY2UuICBZb3UgdXNlIHRoaXMgbW9kdWxlIGJ5IHR5cGluZyBpbiB0aGUgcmVtb3RlIGhvc3Qgc2V0dGluZ3MgaW50byB0aGUgcHJlZmVyZW5jZXMgdGFiLCB0ZXN0aW5nIHdpdGggdGhlIHZhcmlvdXMgdGVzdCBmdW5jdGlvbnMsIGFuZCB0aGVuIGhpdHRpbmcgJ2dvJyBvbiB0aGUgcHVzaCB0YWIuPC9wPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+</help>
	<about>PGJyIC8+QXV0aG9yOiBSb2JlcnQgQ2FtcGJlbGwgKGNhbGd1eTEwMDApICZsdDtyY2FtcGJlbGxAc2tpbm55ZmlzaG1lZGlhLmNvbSZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAwLjE8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT4wLjEgLSBTZXB0ZW1iZXIsIDIwMDcKPHA+SW5pdGlhbCByZXZpc2lvbjwvcD4KPC9saT4KPC91bD48YnIgLz4=</about>
	<description>A site rollout utility</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_progress.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgppZiggaXNzZXQoICRwYXJhbXNbJ2RhdGEnXSApICkKICB7CiAgICBlY2hvICJibGFoIGJsc2giOyAKLy8gICAgICRsb2dmaWxlID0gJHRoaXMtPkdldExvZ0ZpbGVOYW1lKCk7Ci8vICAgICAkZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRsb2dmaWxlKTsKLy8gICAgIGVjaG8gJGRhdGE7CiAgICByZXR1cm47CiAgfQoKJHNtYXJ0eS0+YXNzaWduKCdtaWQnLCRpZCk7CiRzbWFydHktPmFzc2lnbigndGl0bGUnLCR0aGlzLT5HZXRGcmllbmRseU5hbWUoKS4nIDogJy4kdGhpcy0+TGFuZygncHJvZ3Jlc3Nfd2luZG93JykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9jbG9zZScsJHRoaXMtPkxhbmcoJ2Nsb3NlJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wcm9ncmVzcycsJHRoaXMtPkxhbmcoJ2pvYl9wcm9ncmVzcycpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSggJ3Byb2dyZXNzLnRwbCcgKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_push.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgovLwovLyBJbmNsdWRlIHJlcXVpcmVkIGZpbGVzCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL21pc2MuZnVuY3Rpb25zLnBocCcpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9saWIvUHJvZ3Jlc3MyX0xpdGUucGhwJyk7CgovLwovLyBDaGVjayBzZWN1cml0eQppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBTaXRlUHVzaGVyJykgKQogIHsKICAgIHJldHVybjsKICB9CgovLyAKLy8gU2V0dXAKZ2xvYmFsICRnQ21zOwokY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCiRzdGVwID0gMTsKJG51bXN0ZXBzID0gMjsKaWYoIGlzc2V0KCAkcGFyYW1zWydzdGVwJ10gKSApICRzdGVwID0gJHBhcmFtc1snc3RlcCddOwokcGFybXMgPSBhcnJheSgpOwokcm9vdF9wYXRoID0gJGdDbXMtPmNvbmZpZ1sncm9vdF9wYXRoJ107CiR1cGxvYWRzX3BhdGggPSAkZ0Ntcy0+Y29uZmlnWyd1cGxvYWRzX3BhdGgnXTsKCmVjaG8gJzxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij48c3Ryb25nPlNpdGUgUHVzaCBJbiBQcm9ncmVzczwvc3Ryb25nPjwvc3Bhbj48YnIvPic7CiRvcHRzID0gYXJyYXkoJ2xlZnQnPT41MCwndG9wJz0+NTAsJ3dpZHRoJz0+MzAwLCdoZWlnaHQnPT4yNSwKCSAgICAgICdtaW4nPT4xLCdtYXgnPT40KTsKJHBnMSA9IG5ldyBIVE1MX1Byb2dyZXNzMl9MaXRlKCRvcHRzKTsKJHBnMS0+YWRkTGFiZWwoJ3RleHQnLCd0eHQxJywkdGhpcy0+TGFuZygnb3ZlcmFsbF9wcm9ncmVzcycpKTsKJHBnMS0+ZGlzcGxheSgpOwokcGcxLT5tb3ZlU3RlcCggJHN0ZXAgKTsKCmlmKCBpc3NldCgkcGFyYW1zWydwdXNoJ10pICkKICB7CiAgICBzd2l0Y2goICRzdGVwICkKICAgICAgewogICAgICBjYXNlIDE6CgkkdGhpcy0+QWRkTG9nVGV4dCgkdGhpcy0+TGFuZygncHVzaF9iZWdpbl9wcmVwZXJhdGlvbl9zdGFnZScpKTsKCgkvLyBjbGVhbiB1cCBhbnkgdGVtcG9yYXJ5IGZpN2xlcwoJY2xlYW5fdGVtcGZpbGVzKCBjbXNfam9pbl9wYXRoKCAkcm9vdF9wYXRoLCAndG1wJyApLCAnc2l0ZXB1c2hlcionICk7CgoJLy8gZG8gYSBteXNxbGR1bXAgYW5kIHN0b3JlIGl0IHNvbWVwbGFjZQoJJHRoaXMtPmJhY2t1cF9kYXRhYmFzZShjbXNfam9pbl9wYXRoKCR1cGxvYWRzX3BhdGgsICdzaXRlcHVzaGVyLnNxbCcpKTsKCgkvLyBnZXQgdGhlIGZpbGUgbGlzdCBhbmQgY2xlYW4gaXQgdXAKCSRmaWxlbGlzdCA9IGdldF9maWxlX2xpc3QoKTsKCSRmaWxlbGlzdCA9IGNsZWFuX2ZpbGVsaXN0X2Zvcl90cmFuc3BvcnQoJGZpbGVsaXN0KTsKCQoJLy8gc3BsaXR1cCB0aGUgZmlsZSBsaXN0IGludG8gdGVtcG9yYXJ5IGZpbGVzCgkkY2h1bmtjb3VudCA9IHNwbGl0X2FycmF5X2FuZF9zdG9yZSggJGZpbGVsaXN0LCAKCQkJICAgICAgIGNtc19qb2luX3BhdGgoICRyb290X3BhdGgsJ3RtcCcpLAoJCQkgICAgICAgJ3NpdGVwdXNoZXJfZmlsZXMuJywgCgkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbnVtZmlsZXMnLDI1MCkpOwoKCS8vIG9uIHRvIHRoZSBuZXh0IHN0ZXAKCSR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdwdXNoX2ZpbmlzaGVkX3N0ZXAnLCRzdGVwKSk7Cgkkc3RlcCsrOwoJJHBhcm1zID0gYXJyYXkoJ3B1c2gnPT4xLCdzdGVwJz0+JHN0ZXAsJ2NodW5rY291bnQnPT4kY2h1bmtjb3VudCk7CglicmVhazsKCiAgICAgIGNhc2UgMjoKCS8vIHNlbmQgdGhlIGZpbGVzIChvbmUgY2h1bmsgYXQgYSB0aW1lLCByZWRpcmVjdCB0aWxsIHRoZXJlIGlzIG5vIG1vcmUKCSRmbnVtID0gMTsKCSRuZmlsZXMgPSAwOwoJJG5kaXJzID0gMDsKCSRjaHVua2NvdW50ID0gMTsKCWlmKGlzc2V0KCRwYXJhbXNbJ2NodW5rY291bnQnXSkpICRjaHVua2NvdW50ID0gJHBhcmFtc1snY2h1bmtjb3VudCddOwoJaWYoaXNzZXQoJHBhcmFtc1snZm51bSddKSkgJGZudW0gPSAkcGFyYW1zWydmbnVtJ107CglpZihpc3NldCgkcGFyYW1zWyduZGlycyddKSkgJG5kaXJzID0gJHBhcmFtc1snbmRpcnMnXTsKCWlmKGlzc2V0KCRwYXJhbXNbJ25maWxlcyddKSkgJG5maWxlcyA9ICRwYXJhbXNbJ25maWxlcyddOwoJJHRoaXMtPkFkZExvZ1RleHQoJHRoaXMtPkxhbmcoJ3B1c2hfc2VuZGluZ19maWxlc19jaHVuaycsJGZudW0pKTsKCgkkb3B0cyA9IGFycmF5KCdsZWZ0Jz0+NTAsJ3RvcCc9PjE1MCwnd2lkdGgnPT4zMDAsJ2hlaWdodCc9PjI1LAoJCSAgICAgICdtaW4nPT4xLCdtYXgnPT4kY2h1bmtjb3VudCk7CgkkcHJvZ3Jlc3MyID0gbmV3IEhUTUxfUHJvZ3Jlc3MyX0xpdGUoJG9wdHMpOwoJJHByb2dyZXNzMi0+YWRkTGFiZWwoJ3RleHQnLCd0eHQyJywKCQkJICAgICAkdGhpcy0+TGFuZygnc2VuZGluZ19maWxlcycsJGZudW0sJGNodW5rY291bnQpKTsKCSRwcm9ncmVzczItPmRpc3BsYXkoKTsKCSRwcm9ncmVzczItPm1vdmVTdGVwKCRmbnVtKTsKCgkkZm4gPSBjbXNfam9pbl9wYXRoKCAkcm9vdF9wYXRoLCAndG1wJywgJ3NpdGVwdXNoZXJfZmlsZXMuJy4kZm51bSApOwoJaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApCgkgIHsKCSAgICAkc21hbGxfbGlzdCA9IGZpbGUoICRmbiApOwoJICAgICR0aGlzLT5mdHBfcHV0ZmlsZXMoICRzbWFsbF9saXN0LCAkcm9vdF9wYXRoLCAkbmZpbGVzLCAkbmRpcnMgKTsKCSAgICBAdW5saW5rKCAkZm4gKTsKCSAgfQoKCS8vIEluY3JlbWVudCB0aGUgZmlsZW51bWJlciBzZWUgaWYgdGhlIGZpbGUgZXhpc3RzCgkkZm51bSsrOwoJJGZuID0gY21zX2pvaW5fcGF0aCggJHJvb3RfcGF0aCwgJ3RtcCcsICdzaXRlcHVzaGVyX2ZpbGVzLicuJGZudW0gKTsKCWlmKCAhZmlsZV9leGlzdHMoICRmbiApICkKCSAgewoJICAgIC8vIG9uIHRvIHRoZSBuZXh0IHN0ZXAKCSAgICAkdGhpcy0+QWRkTG9nVGV4dCgkdGhpcy0+TGFuZygncHVzaF9maW5pc2hlZF9zdGVwJywkc3RlcCkpOwoJICAgICRzdGVwKys7CgkgICAgJHBhcm1zID0gYXJyYXkoJ3B1c2gnPT4xLCdzdGVwJz0+JHN0ZXApOwoJICB9CgllbHNlCgkgIHsKCSAgICAvLyByZXBlYXQgdGhpcyBzdGVwCgkgICAgJHBhcm1zID0gYXJyYXkoJ3B1c2gnPT4xLCAnc3RlcCc9PiRzdGVwLAoJCQkgICAnZm51bSc9PiRmbnVtLAoJCQkgICAnbmRpcnMnPT4kbmRpcnMsCgkJCSAgICduZmlsZXMnPT4kbmZpbGVzLAoJCQkgICAnY2h1bmtjb3VudCc9PiRjaHVua2NvdW50KTsKCSAgfQoJYnJlYWs7CgogICAgICBjYXNlIDM6CgkvKiBjcmVhdGUgdGhlIG5ldyBjb25maWcucGhwIGFuZCB1cGxvYWQgaXQgKi8KCSR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdwdXNoX2NvbmZpZ190bXAnKSk7CgkkbmV3X2NvbmZpZ2ZpbGUgPSBjbXNfam9pbl9wYXRoKCRyb290X3BhdGgsJ3RtcCcsJ3NpdGVwdXNoZXJfY29uZmlnLnBocCcpOwovLyAJJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygncHVzaF9jb25maWdfdG1wJykpOwovLyAJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcm9ncmVzcy50cGwnKTsKLy8gICAgICAgICBmbHVzaCgpOyBvYl9mbHVzaCgpOwoJJHRoaXMtPmNyZWF0ZV9uZXdfY29uZmlnKCAkbmV3X2NvbmZpZ2ZpbGUgKTsKCSR0aGlzLT5mdHBfcHV0X2ZpbGUoICRuZXdfY29uZmlnZmlsZSwgJ2NvbmZpZy5waHAnICk7CgoJLyogY3JlYXRlIHRoZSBuZXcgdG1wIHN0cnVjdHVyZSBhbmQgdXBsb2FkIGl0ICovCgkkdGhpcy0+ZnRwX2NyZWF0ZV90bXBfc3RydWN0dXJlKCk7CgoJLyogb24gdG8gdGhlIG5leHQgc3RlcCAqLwoJJHRoaXMtPkFkZExvZ1RleHQoJHRoaXMtPkxhbmcoJ3B1c2hfZmluaXNoZWRfc3RlcCcsJHN0ZXApKTsKCSRzdGVwKys7CgkkcGFybXMgPSBhcnJheSgncHVzaCc9PjEsJ3N0ZXAnPT4kc3RlcCk7CglicmVhazsKCiAgICAgIGNhc2UgNDoKCSR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdwdXNoX2ltcG9ydGRiJykpOwovLyAJJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygncHVzaF9pbXBvcnRkYicpKTsKLy8gCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncHJvZ3Jlc3MudHBsJyk7Ci8vICAgICAgICAgZmx1c2goKTsgb2JfZmx1c2goKTsKCgkvLyBjcmVhdGUgYSBteXNxbCBpbXBvcnQgc2NyaXB0LCBhbmQgdXBsb2FkIGl0CgkkdG1wZmlsZSA9IGNtc19qb2luX3BhdGgoJHJvb3RfcGF0aCwndG1wJywnc2l0ZXB1c2hlcl9teXNxbC5waHAnKTsKCSR0aGlzLT5jcmVhdGVfbXlzcWxpbXBvcnRfc2NyaXB0KCAkdG1wZmlsZSApOwoJJHRoaXMtPmZ0cF9wdXRfZmlsZSggJHRtcGZpbGUsICd0bXAvc2l0ZXB1c2hlcl9teXNxbC5waHAnICk7CgoJLy8gYW5kIGV4ZWN1dGUgaXQKCSR3ZWJ1cmwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd2VidXJsJywnJyk7CgkkdXJsID0gJHdlYnVybC4nL3RtcC9zaXRlcHVzaGVyX215c3FsLnBocCc7CgkkdGhpcy0+QWRkTG9nVGV4dCgkdGhpcy0+TGFuZygncHVzaF9leGVjdXRldXJsJywkdXJsKSk7CgkkdGhpcy0+QWRkTG9nVGV4dChmaWxlX2dldF9jb250ZW50cygkdXJsKSk7CgoJJHRoaXMtPkFkZExvZ1RleHQoJHRoaXMtPkxhbmcoJ3B1c2hfZmluaXNoZWRfc3RlcCcsJHN0ZXApKTsKCSRzdGVwKys7CgkkcGFybXMgPSBhcnJheSgncHVzaCc9PjEsJ3N0ZXAnPT4kc3RlcCk7CglicmVhazsKCiAgICAgIGRlZmF1bHQ6CgkvLyBkb25lCgllY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJjbG9zZSIgdmFsdWU9IkNsb3NlIiBvbmNsaWNrPSJ3aW5kb3cuY2xvc2UoKSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogMTUwOyB0b3A6IDE1MDsiPic7Ci8vIAkkcGFybXNbJ3RhYiddID0gJ3B1c2gnOwovLyAJJHRoaXMtPlJlZGlyZWN0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJtcyApOwogCXJldHVybjsKICAgICAgfQoKICAgIC8vIEFuZCByZWRpcmVjdAogICAgJHBhcm1zWydkaXNhYmxlX3RoZW1lJ10gPSAxOwogICAgJHBhcm1zWydkaXNhYmxlX2J1ZmZlciddID0gMTsKICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnYWRtaW5fcHVzaCcsICRyZXR1cm5pZCwgJHBhcm1zICk7CiAgfQoKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_saveprefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgppZihpc3NldCggJHBhcmFtc1snbnVtZmlsZXMnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdudW1maWxlcycsJHBhcmFtc1snbnVtZmlsZXMnXSk7CiAgfQoKJHRoaXMtPlJlZGlyZWN0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIAoJCSBhcnJheSgndGFiJz0+J3ByZWZzJykpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_saveremote.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfZnRwaG9zdCddKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoICdmdHBob3N0JywgdHJpbSgkcGFyYW1zWydpbnB1dF9mdHBob3N0J10pKTsKICB9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9mdHB1c2VyJ10pICkKICB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2Z0cHVzZXInLCB0cmltKCRwYXJhbXNbJ2lucHV0X2Z0cHVzZXInXSkpOwogIH0KaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2Z0cHBhc3N3b3JkJ10pICkKICB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2Z0cHBhc3N3b3JkJywgdHJpbSgkcGFyYW1zWydpbnB1dF9mdHBwYXNzd29yZCddKSk7CiAgfQppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfZnRwcGF0aCddKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoICdmdHBwYXRoJywgdHJpbSgkcGFyYW1zWydpbnB1dF9mdHBwYXRoJ10pKTsKICB9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9mdHBjaG1vZF9maWxlJ10pICkKICB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2Z0cGNobW9kX2ZpbGUnLCB0cmltKCRwYXJhbXNbJ2lucHV0X2Z0cGNobW9kX2ZpbGUnXSkpOwogIH0KaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2Z0cGNobW9kX2RpciddKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoICdmdHBjaG1vZF9kaXInLCB0cmltKCRwYXJhbXNbJ2lucHV0X2Z0cGNobW9kX2RpciddKSk7CiAgfQoKCmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF93ZWJ1cmwnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnd2VidXJsJywgdHJpbSgkcGFyYW1zWydpbnB1dF93ZWJ1cmwnXSkpOwogIH0KaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X3NlcnZlcnBhdGgnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnc2VydmVycGF0aCcsIHRyaW0oJHBhcmFtc1snaW5wdXRfc2VydmVycGF0aCddKSk7CiAgfQoKCmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9kYmhvc3QnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnZGJob3N0JywgdHJpbSgkcGFyYW1zWydpbnB1dF9kYmhvc3QnXSkpOwogIH0KaWYoIGlzc2V0KCRwYXJhbXNbJ2lucHV0X2RidXNlciddKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoICdkYnVzZXInLCB0cmltKCRwYXJhbXNbJ2lucHV0X2RidXNlciddKSk7CiAgfQppZiggaXNzZXQoJHBhcmFtc1snaW5wdXRfZGJwYXNzd29yZCddKSApCiAgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoICdkYnBhc3N3b3JkJywgdHJpbSgkcGFyYW1zWydpbnB1dF9kYnBhc3N3b3JkJ10pKTsKICB9CmlmKCBpc3NldCgkcGFyYW1zWydpbnB1dF9kYm5hbWUnXSkgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnZGJuYW1lJywgdHJpbSgkcGFyYW1zWydpbnB1dF9kYm5hbWUnXSkpOwogIH0KCiR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAKCQkgYXJyYXkoJ3RhYic9PidwcmVmcycpKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_tests.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl90ZXN0cy5waHAnKTsKCiRtZXNzYWdlID0gJyc7CiRyZXN1bHRzID0gJyc7CmlmKCBpc3NldCgkcGFyYW1zWyd0ZXN0ZnRwJ10pICkKICB7CiAgICAkcmVzdWx0cyA9IHRlc3RfZnRwX2Nvbm5lY3Rpb24oICR0aGlzLCAkbWVzc2FnZSApOwogIH0KZWxzZSBpZiggaXNzZXQoICRwYXJhbXNbJ3Rlc3RodHRwJ10pICkKICB7CiAgICAkcmVzdWx0cyA9IHRlc3RfaHR0cF9jb25uZWN0aW9uKCAkdGhpcywgJG1lc3NhZ2UgKTsKICB9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWyd0ZXN0bXlzcWwnXSkgKQogIHsKICAgICRyZXN1bHRzID0gdGVzdF9teXNxbF9jb25uZWN0aW9uKCAkdGhpcywgJG1lc3NhZ2UgKTsKICB9CmVsc2UgaWYoIGlzc2V0KCAkcGFyYW1zWydjbGVhbnVwJ10pICkKICB7CiAgICAkcmVzdWx0cyA9IHRlc3RfZnRwX2NsZWFudXAoICR0aGlzLCAkbWVzc2FnZSApOwogIH0KCiRwYXJtcyA9IGFycmF5KCk7CiRwYXJtc1sndGFiJ10gPSAndGVzdHMnOwppZiggJG1lc3NhZ2UgIT0gJycgKQogIHsKICAgICRwYXJtc1snbWVzc2FnZSddID0gJG1lc3NhZ2U7CiAgfQppZiggJHJlc3VsdHMgPT0gZmFsc2UgKQogIHsKICAgICRwYXJtc1snZXJyb3InXSA9IDE7CiAgfQoKJHRoaXMtPlJlZGlyZWN0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJtcyApOwovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokdGFiID0gJ3Rlc3RzJzsKaWYoIGlzc2V0KCRwYXJhbXNbJ3RhYiddKSApCiAgewogICAgJHRhYiA9ICRwYXJhbXNbJ3RhYiddOwogIH0KaWYoIGlzc2V0KCRwYXJhbXNbJ2Vycm9yJ10pICkKICB7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snbWVzc2FnZSddKSApIAogICAgICB7CgkkdGhpcy0+U2hvd0Vycm9ycygkcGFyYW1zWydtZXNzYWdlJ10pOwogICAgICB9CiAgfQplbHNlCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkgKSAKICAgICAgewoJJHRoaXMtPlNob3dNZXNzYWdlKCRwYXJhbXNbJ21lc3NhZ2UnXSk7CiAgICAgIH0KICB9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBTaXRlUHVzaGVyJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncmVtb3RlJywkdGhpcy0+TGFuZygncmVtb3RlX3RhYicpLAoJCQkgICAgICgkdGFiID09ICdyZW1vdGUnKSk7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Rlc3RzJywkdGhpcy0+TGFuZygndGVzdHNfdGFiJyksCgkJCSAgICAgKCR0YWIgPT0gJ3Rlc3RzJykpOwogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwdXNoJywkdGhpcy0+TGFuZygncHVzaF90YWInKSwKCQkJICAgICAoJHRhYiA9PSAncHVzaCcpKTsKICB9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3ByZWZzJywkdGhpcy0+TGFuZygncHJlZnNfdGFiJyksCgkJCSAgICAgKCR0YWIgPT0gJ3ByZWZzJykpOwogIH0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTWFuYWdlIFNpdGVQdXNoZXInKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3JlbW90ZScpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3JlbW90ZXRhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCd0ZXN0cycpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX3Rlc3RzdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3B1c2gnKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9wdXNodGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CiAgfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3ByZWZzJyk7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uYWRtaW5fcHJlZnN0YWIucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKICB9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/ftp.functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgpmdW5jdGlvbiBmdHBfcHV0ZmlsZXMoICRmaWxlbGlzdCwgJG9yaWdfcm9vdF9wYXRoLCAmJGZpbGVzLCAmJGRpcmVjdG9yaWVzLAoJCSAgICAgICAmJGVycm9ycyApCnsKICAgIC8vIG9wZW4gdGhlIGZ0cCBjb25uZWN0aW9uCiAgICAkZnRwaG9zdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiAgICAkZnRwdXNlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHB1c2VyJywnJyk7CiAgICAkZnRwcGFzc3dvcmQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwcGFzc3dvcmQnLCcnKTsKICAgICRmdHBwYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKICAgICRmdHBjaG1vZF9maWxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cGNobW9kX2ZpbGUnLCcnKTsKICAgICRmdHBjaG1vZF9kaXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwY2htb2RfZGlyJywnJyk7CgogICAgLy8gY2hhbmdlIHRvIHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkKICAgICRjb25uX2lkID0gZnRwX2Nvbm5lY3QoJGZ0cGhvc3QpOwogICAgaWYoICRjb25uX2lkID09PSBGQWxTRSApCiAgICAgIHsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9jb3VsZG5vdGNvbm5lY3QnKTsKICAgICAgfQogICAgZWxzZSBpZiggZnRwX2xvZ2luKCAkY29ubl9pZCwgJGZ0cHVzZXIsICRmdHBwYXNzd29yZCApID09PSBGQUxTRSApCiAgICAgIHsKCWZ0cF9jbG9zZSgkY29ubl9pZCk7CgkkcGFyYW1zWydlcnJvciddID0gMTsKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfbG9naW4nKTsKICAgICAgfQogICAgZWxzZSBpZiggZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQogICAgICB7CglmdHBfY2xvc2UoJGNvbm5faWQpOwoJJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX2JhZHBhdGgnKTsKICAgICAgfQogICAgZWxzZSB7CiAgICAgIC8vIEJlZ2luIHByb2Nlc3NpbmcKICAgICAgJGVycm9yc1tdID0gYXJyYXkoKTsKICAgICAgJGZpbGVzID0gMDsKICAgICAgJGRpcmVjdG9yaWVzID0gMDsKICAgICAgZm9yZWFjaCggJGZpbGVsaXN0IGFzICRvbmVmaWxlICkKCXsKCSAgJG9yaWdmaWxlID0gY21zX2pvaW5fcGF0aCgkb3JpZ19yb290X3BhdGgsJG9uZWZpbGUpOwoJICAKCSAgaWYoIGlzX2RpciggJG9yaWdmaWxlICkgKQoJICAgIHsKCSAgICAgIAoJICAgICAgaWYoICFmdHBfbWtkaXIoICRjb25uX2lkLCAkb25lZmlsZSApICkKCQl7CgkJICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX21rZGlyJywkb25lZmlsZSk7CgkJfQoJICAgICAgZWxzZSBpZiggIWZ0cF9jaG1vZCggJGNvbm5faWQsIG9jdGRlYygkZnRwY2htb2RfZGlyKSwgJG9uZWZpbGUgKSApCgkJewoJCSAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9jaG1vZCcsJG9uZWZpbGUpOwoJCX0KCSAgICAgIGVsc2UKCQl7CgkJICArKyRkaXJlY3RvcmllczsKCQl9CgkgICAgfQoJICBlbHNlCgkgICAgewoJICAgICAgaWYoICFmdHBfcHV0KCAkY29ubl9pZCwgJG9uZWZpbGUsICRvcmlnZmlsZSwgRlRQX0JJTkFSWSApICkKCQl7CgkJICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX3B1dCcsJG9uZWZpbGUpOwoJCX0KCSAgICAgIGVsc2UgaWYoICFmdHBfY2htb2QoICRjb25uX2lkLCBvY3RkZWMoJGZ0cGNobW9kX2ZpbGUpLCAkb25lZmlsZSApICkKCQl7CgkJICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX2NobW9kJywkb25lZmlsZSk7CgkJfQoJICAgICAgZWxzZQoJCXsKCQkgICsrJGZpbGVzOwoJCX0KCSAgICB9Cgl9CgogICAgICAvLyBjbG9zZSB0aGUgZnRwIGNvbm5lY3Rpb24KICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgIH0KCgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_prefstab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokbnVtZmlsZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbnVtZmlsZXMnLDUwMCk7Cgokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NhdmVwcmVmcycsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXQnLCR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9udW1maWxlcycsJHRoaXMtPkxhbmcoJ3RpdGxlX251bWZpbGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ2luZm9fbnVtZmlsZXMnLCR0aGlzLT5MYW5nKCdpbmZvX251bWZpbGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF92YWx1ZScsJHRoaXMtPkxhbmcoJ3ZhbHVlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X251bWZpbGVzJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbnVtZmlsZXMnLCRudW1maWxlcykpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3ByZWZzLnRwbCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_pushtab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokZnRwaG9zdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiRmdHB1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHVzZXInLCcnKTsKJGZ0cHBhc3N3b3JkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhc3N3b3JkJywnJyk7CiRmdHBwYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKJHdlYnVybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3ZWJ1cmwnLCcnKTsKJHNlcnZlcnBhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VydmVycGF0aCcsJycpOwokZGJob3N0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RiaG9zdCcsJycpOwokZGJ1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RidXNlcicsJycpOwokZGJwYXNzd29yZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYnBhc3N3b3JkJywnJyk7CiRkYm5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJuYW1lJywnJyk7CgokZnRwZ29vZCA9ICghZW1wdHkoJGZ0cGhvc3QpICYmICFlbXB0eSgkZnRwdXNlcikgJiYgIWVtcHR5KCRmdHBwYXNzd29yZCkgJiYKCSAgICAhZW1wdHkoJGZ0cHBhdGgpKTsKJHdlYmdvb2QgPSAoJGZ0cGdvb2QgJiYgIWVtcHR5KCR3ZWJ1cmwpICYmICFlbXB0eSgkc2VydmVycGF0aCkpOwokZGJnb29kICA9ICgkd2ViZ29vZCAmJiAhZW1wdHkoJGRiaG9zdCkgJiYgIWVtcHR5KCRkYnVzZXIpICYmIAoJICAgICFlbXB0eSgkZGJwYXNzd29yZCkgJiYgIWVtcHR5KCRkYm5hbWUpKTsKCmlmKCBpc3NldCggJHBhcmFtc1snZXJyb3InXSApICkgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsMSk7CmlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKSAKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLHRyaW0oJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQplbHNlIGlmKCAhJGZ0cGdvb2QgKSAKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywxKTsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cHNldHRpbmdzYmFkJykpOwogIH0KZWxzZSBpZiggISR3ZWJnb29kICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywxKTsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPkxhbmcoJ2Vycm9yX3dlYnNldHRpbmdzYmFkJykpOwogIH0KZWxzZSBpZiggISRkYmdvb2QgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLDEpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygnZXJyb3JfZGJzZXR0aW5nc2JhZCcpKTsKICB9Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3B1c2gnLCAkcmV0dXJuaWQgKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7Ci8vICRzbWFydHktPmFzc2lnbignaGlkZGVuJywKLy8gCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCdkaXNhYmxlX2J1ZmZlcicsMSkuCi8vIAkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwnZGlzYWJsZV90aGVtZScsMSkpOwoKCiRzbWFydHktPmFzc2lnbigndGl0bGVfcHVzaCcsJHRoaXMtPkxhbmcoJ3RpdGxlX3B1c2gnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb19wdXNoJywkdGhpcy0+TGFuZygnaW5mb19wdXNoJykpOwppZiggJHdlYmdvb2QgKQogIHsKICAgICR1cmwgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2FkbWluX3B1c2gnLCRyZXR1cm5pZCwnJywKICAgICAJCQkgICAgIGFycmF5KCdwdXNoJz0+MSwKIAkJCQkgICAnZGlzYWJsZV9idWZmZXInPT4xLCdkaXNhYmxlX3RoZW1lJz0+MSksJycsdHJ1ZSk7CiAgICAkYWRkdGV4dCA9ICcnOwogICAgJGFkZHRleHQgPSAnb25jbGljaz0ic3VibWl0X2NsaWNrZWQodGhpcyxcJycuJHVybC4nXCcpOyByZXR1cm4gZmFsc2UiJzsKICAgICRzbWFydHktPmFzc2lnbignYnV0dG9uX3B1c2gnLAoJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdwdXNoJywKCQkJCQkgICAgICR0aGlzLT5MYW5nKCdnbycpLAoJCQkJCSAgICAgJGFkZHRleHQpKTsKICB9CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3B1c2gudHBsJyk7Ci8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_remotetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokZnRwaG9zdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiRmdHBjaG1vZF9maWxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cGNobW9kX2ZpbGUnLCcwNjQ0Jyk7CiRmdHBjaG1vZF9kaXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwY2htb2RfZGlyJywnMDc1NScpOwokZnRwdXNlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHB1c2VyJywnJyk7CiRmdHBwYXNzd29yZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXNzd29yZCcsJycpOwokZnRwcGF0aCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXRoJywnJyk7CiR3ZWJ1cmwgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd2VidXJsJywnJyk7CiRzZXJ2ZXJwYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlcnZlcnBhdGgnLCcnKTsKJGRiaG9zdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYmhvc3QnLCdsb2NhbGhvc3QnKTsKJGRidXNlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYnVzZXInLCcnKTsKJGRicGFzc3dvcmQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJwYXNzd29yZCcsJycpOwokZGJuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RibmFtZScsJycpOwoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9zYXZlcmVtb3RlJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmRmb3JtJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgoKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9mdHBpbmZvJywkdGhpcy0+TGFuZygndGl0bGVfZnRwaW5mbycpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZnRwaG9zdCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9mdHBob3N0JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Z0cGhvc3QnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9mdHBob3N0JywkZnRwaG9zdCwgNDApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZnRwdXNlcicsJHRoaXMtPkxhbmcoJ3Byb21wdF9mdHB1c2VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Z0cHVzZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9mdHB1c2VyJywkZnRwdXNlciwgNDApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZnRwcGFzc3dvcmQnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZnRwcGFzc3dvcmQnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZnRwcGFzc3dvcmQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFBhc3N3b3JkKCRpZCwnaW5wdXRfZnRwcGFzc3dvcmQnLCRmdHBwYXNzd29yZCwgNDApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZnRwcGF0aCcsJHRoaXMtPkxhbmcoJ3Byb21wdF9mdHBwYXRoJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Z0cHBhdGgnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9mdHBwYXRoJywkZnRwcGF0aCwgNDApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZnRwY2htb2RfZmlsZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9mdHBjaG1vZF9maWxlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Z0cGNobW9kX2ZpbGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdpbnB1dF9mdHBjaG1vZF9maWxlJywkZnRwY2htb2RfZmlsZSwgNSkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9mdHBjaG1vZF9kaXInLCR0aGlzLT5MYW5nKCdwcm9tcHRfZnRwY2htb2RfZGlyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Z0cGNobW9kX2RpcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2Z0cGNobW9kX2RpcicsJGZ0cGNobW9kX2RpciwgNSkpOwoKCiRzbWFydHktPmFzc2lnbigndGl0bGVfd2ViaW5mbycsJHRoaXMtPkxhbmcoJ3RpdGxlX3dlYmluZm8nKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3dlYnVybCcsJHRoaXMtPkxhbmcoJ3Byb21wdF93ZWJ1cmwnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfd2VidXJsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfd2VidXJsJywkd2VidXJsLDUwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3NlcnZlcnBhdGgnLCR0aGlzLT5MYW5nKCdwcm9tcHRfc2VydmVycGF0aCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZXJ2ZXJwYXRoJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfc2VydmVycGF0aCcsJHNlcnZlcnBhdGgsNTApKTsKCiRzbWFydHktPmFzc2lnbigndGl0bGVfZGJpbmZvJywkdGhpcy0+TGFuZygndGl0bGVfZGJpbmZvJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kYmhvc3QnLCR0aGlzLT5MYW5nKCdwcm9tcHRfZGJob3N0JykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RiaG9zdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2RiaG9zdCcsJGRiaG9zdCw1MCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kYnVzZXInLCR0aGlzLT5MYW5nKCdwcm9tcHRfZGJ1c2VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RidXNlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2RidXNlcicsJGRidXNlciw1MCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9kYnBhc3N3b3JkJywkdGhpcy0+TGFuZygncHJvbXB0X2RicGFzc3dvcmQnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGJwYXNzd29yZCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2lucHV0X2RicGFzc3dvcmQnLCRkYnBhc3N3b3JkLDUwKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2RibmFtZScsJHRoaXMtPkxhbmcoJ3Byb21wdF9kYm5hbWUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZGJuYW1lJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnaW5wdXRfZGJuYW1lJywkZGJuYW1lLDUwKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3JlbW90ZS50cGwnKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_tests.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgpmdW5jdGlvbiB0ZXN0X2Z0cF9jb25uZWN0aW9uKCAmJG1vZHVsZSwgJiRtZXNzYWdlICkKewogICRtZXNzYWdlID0gJG1vZHVsZS0+TGFuZygncHJvbXB0X2Z0cF9jb25uZWN0aW9uX3Rlc3QnKS4nOiZuYnNwOyc7CiAgJGZ0cGhvc3QgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiAgJGZ0cHVzZXIgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHB1c2VyJywnJyk7CiAgJGZ0cHBhc3N3b3JkID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZnRwcGFzc3dvcmQnLCcnKTsKICAkZnRwcGF0aCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKCiAgJGNvbm5faWQgPSBmdHBfY29ubmVjdCgkZnRwaG9zdCk7CiAgaWYoICRjb25uX2lkID09PSBGQUxTRSApCiAgICB7CiAgICAgICRtZXNzYWdlIC49ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2Z0cF9jb3VsZG5vdGNvbm5lY3QnKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAkc3RhdCA9IGZ0cF9sb2dpbiggJGNvbm5faWQsICRmdHB1c2VyLCAkZnRwcGFzc3dvcmQgKTsKICBpZiggJHN0YXQgPT09IEZBTFNFICkKICAgIHsKICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX2xvZ2luJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgaWYoIGZ0cF9jaGRpciggJGNvbm5faWQsICRmdHBwYXRoICkgPT09IEZBTFNFICkKICAgIHsKICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX2JhZHBhdGgnKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICRtZXNzYWdlIC49ICRtb2R1bGUtPkxhbmcoJ3N1Y2Nlc3MnKTsKICByZXR1cm4gdHJ1ZTsKfQoKCmZ1bmN0aW9uIHRlc3RfaHR0cF9jb25uZWN0aW9uKCAmJG1vZHVsZSwgJiRtZXNzYWdlICkKewogIC8vCiAgLy8gR2V0IHByZWZlcmVuY2VzIGFuZCBzZXQgZGVmYXVsdHMKICAkbWVzc2FnZSA9ICRtb2R1bGUtPkxhbmcoJ3Byb21wdF9odHRwX2Nvbm5lY3Rpb25fdGVzdCcpLic6Jm5ic3A7JzsKICAkZnRwaG9zdCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cGhvc3QnLCcnKTsKICAkZnRwdXNlciA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cHVzZXInLCcnKTsKICAkZnRwcGFzc3dvcmQgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXNzd29yZCcsJycpOwogICRmdHBwYXRoID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZnRwcGF0aCcsJycpOwogICR3ZWJ1cmwgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCd3ZWJ1cmwnLCcnKTsKICAkc2VydmVycGF0aCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ3NlcnZlcnBhdGgnLCcnKTsKICAkZnRwY2htb2RfZmlsZSA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cGNobW9kX2ZpbGUnLCcnKTsKICAKICAvLwogIC8vIENvbm5lY3QgdG8gdGhlIEZUUCBzZXJ2ZXIgYW5kIGF0dGVtcHQgdG8gdXBsb2FkIHRoZSBnZXRjd2QucGhwIHNjcmlwdAogICRjb25uX2lkID0gZnRwX2Nvbm5lY3QoJGZ0cGhvc3QpOwogIGlmKCAkY29ubl9pZCA9PT0gRkFsU0UgKQogICAgewogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfY291bGRub3Rjb25uZWN0Jyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgaWYoIGZ0cF9sb2dpbiggJGNvbm5faWQsICRmdHB1c2VyLCAkZnRwcGFzc3dvcmQgKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfbG9naW4nKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICBpZiggZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfYmFkcGF0aCcpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICRnZXRjd2RzY3JpcHQgPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCdzY3JpcHRzJywnZ2V0Y3dkLnBocCcpOwogIGlmKCBmdHBfcHV0KCAkY29ubl9pZCwgJ2dldGN3ZC5waHAnLCAkZ2V0Y3dkc2NyaXB0LCBGVFBfQklOQVJZICkgPT09IEZBTFNFICkKICAgIHsKICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX3dyaXRlcHJvYmxlbScsJ2dldGN3ZC5waHAnKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICBpZiggZnRwX2NobW9kKCAkY29ubl9pZCwgb2N0ZGVjKCRmdHBjaG1vZF9maWxlKSwgJ2dldGN3ZC5waHAnKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfd3JpdGVwcm9ibGVtJywnZ2V0Y3dkLnBocCcpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIGZ0cF9jbG9zZSggJGNvbm5faWQgKTsKCiAgLy8KICAvLyBDb25uZWN0IHZpYSBodHRwIGFuZCBnZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSB1cmwKICAkdXJsID0gdXJsZW5jb2RlKCR3ZWJ1cmwuJy9nZXRjd2QucGhwJyk7CiAgJHVybCA9ICR3ZWJ1cmwuJy9nZXRjd2QucGhwJzsKICAkcmVzdWx0cyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOwogIGlmKCAkcmVzdWx0cyA9PT0gRkFMU0UgKQogICAgewogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9odHRwX3VybHByb2JsZW0nKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIGlmKCAhcHJlZ19tYXRjaCgnL15TVUNDRVNTLycsJHJlc3VsdHMgKSApCiAgICB7CiAgICAgICRtZXNzYWdlIC49ICRtb2R1bGUtPkxhbmcoJ2Vycm9yX2h0dHBfdXJscHJvYmxlbScpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgJHBhcnRzID0gZXhwbG9kZSgnOicsdHJpbSgkcmVzdWx0cykpOwogIGlmKCAkcGFydHNbMV0gIT0gJHNlcnZlcnBhdGggKQogICAgewogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9odHRwX3VuZXhwZWN0ZWRwYXRoJywkcmVzdWx0cyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnc3VjY2VzcycpOwogIHJldHVybiB0cnVlOwp9CgoKCmZ1bmN0aW9uIHRlc3RfbXlzcWxfY29ubmVjdGlvbiggJiRtb2R1bGUsICYkbWVzc2FnZSApCnsKICAvLwogIC8vIEdldCBwcmVmZXJlbmNlcyBhbmQgc2V0IGRlZmF1bHRzCiAgJG1lc3NhZ2UgPSAkbW9kdWxlLT5MYW5nKCdwcm9tcHRfaHR0cF9jb25uZWN0aW9uX3Rlc3QnKS4nOiZuYnNwOyc7CiAgJGZ0cGhvc3QgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiAgJGZ0cHVzZXIgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHB1c2VyJywnJyk7CiAgJGZ0cHBhc3N3b3JkID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZnRwcGFzc3dvcmQnLCcnKTsKICAkZnRwcGF0aCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKICAkd2VidXJsID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnd2VidXJsJywnJyk7CiAgJHNlcnZlcnBhdGggPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdzZXJ2ZXJwYXRoJywnJyk7CiAgJGZ0cGNobW9kX2ZpbGUgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHBjaG1vZF9maWxlJywnJyk7CiAgJGRiaG9zdCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2RiaG9zdCcsJ2xvY2FsaG9zdCcpOwogICRkYnVzZXIgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdkYnVzZXInLCcnKTsKICAkZGJwYXNzd29yZCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2RicGFzc3dvcmQnLCcnKTsKICAkZGJuYW1lID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZGJuYW1lJywnJyk7CiAgCiAgLy8KICAvLyBDb25uZWN0IHRvIHRoZSBGVFAgc2VydmVyIGFuZCBhdHRlbXB0IHRvIHVwbG9hZCB0aGUgbXlzcWwucGhwIHNjcmlwdAogICRjb25uX2lkID0gZnRwX2Nvbm5lY3QoJGZ0cGhvc3QpOwogIGlmKCAkY29ubl9pZCA9PT0gRkFsU0UgKQogICAgewogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfY291bGRub3Rjb25uZWN0Jyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgaWYoIGZ0cF9sb2dpbiggJGNvbm5faWQsICRmdHB1c2VyLCAkZnRwcGFzc3dvcmQgKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfbG9naW4nKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICBpZiggZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfYmFkcGF0aCcpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIC8vIGJ1aWxkIHRoZSBuYW1lIG9mIHRoZSBzY3JpcHQKICAkbXlzcWxzY3JpcHQgPSBjbXNfam9pbl9wYXRoKGRpcm5hbWUoX19GSUxFX18pLCdzY3JpcHRzJywnbXlzcWwucGhwJyk7CiAgJHR4dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRteXNxbHNjcmlwdCk7CgogIC8vIGFzc2lnbiBzb21lIHNtYXJ0eSB2YXJpYWJsZXMKICBnbG9iYWwgJGdDbXM7CiAgJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7CiAgJHNtYXJ0eS0+YXNzaWduKCdkYmhvc3QnLCRkYmhvc3QpOwogICRzbWFydHktPmFzc2lnbignZGJ1c2VyJywkZGJ1c2VyKTsKICAkc21hcnR5LT5hc3NpZ24oJ2RicGFzc3dvcmQnLCRkYnBhc3N3b3JkKTsKICAkc21hcnR5LT5hc3NpZ24oJ2RibmFtZScsJGRibmFtZSk7CgogIC8vIHByb2Nlc3MgdGhlIHRlbXBsYXRlCiAgJGRhdGEgPSAkbW9kdWxlLT5Qcm9jZXNzVGVtcGxhdGUoJ215c3FsX2hlYWRlci50cGwnKTsKICAkZGF0YSA9ICRkYXRhLiR0eHQ7CgogIC8vIHN0b3JlIGl0IGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uCiAgJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CiAgJG9mbiA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10sJy90bXAnLCdzaXRlcHVzaGVyLmRhdCcpOwogIGZpbGVfcHV0X2NvbnRlbnRzKCAkb2ZuLCAkZGF0YSApOwoKICAvLyBwdXNoIHRoZSB0ZW1wb3JhcnkgZmlsZQogIGlmKCBmdHBfcHV0KCAkY29ubl9pZCwgJ215c3FsLnBocCcsICRvZm4sIEZUUF9CSU5BUlkgKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfd3JpdGVwcm9ibGVtJywnbXlzcWwucGhwJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgaWYoIGZ0cF9jaG1vZCggJGNvbm5faWQsIG9jdGRlYygkZnRwY2htb2RfZmlsZSksICdteXNxbC5waHAnKSA9PT0gRkFMU0UgKQogICAgewogICAgICBmdHBfY2xvc2UoJGNvbm5faWQpOwogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfd3JpdGVwcm9ibGVtJywnbXlzcWwucGhwJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgZnRwX2Nsb3NlKCAkY29ubl9pZCApOwoKICAvLwogIC8vIENvbm5lY3QgdmlhIGh0dHAgYW5kIGdldCB0aGUgY29udGVudHMgb2YgdGhlIHVybAogICR1cmwgPSB1cmxlbmNvZGUoJHdlYnVybC4nL215c3FsLnBocCcpOwogICR1cmwgPSAkd2VidXJsLicvbXlzcWwucGhwJzsKICAkcmVzdWx0cyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwpOwogIGlmKCAkcmVzdWx0cyA9PT0gRkFMU0UgKQogICAgewogICAgICAkbWVzc2FnZSAuPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9odHRwX3VybHByb2JsZW0nKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIGlmKCAhc3Ryc3RyKCRyZXN1bHRzLCdTVUNDRVNTJyApICkKICAgIHsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfaHR0cF91cmxwcm9ibGVtJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAkcGFydHMgPSBleHBsb2RlKCc6Jyx0cmltKCRyZXN1bHRzKSk7CiAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnc3VjY2VzcycpLicgLSAnLiRwYXJ0c1sxXTsKICByZXR1cm4gdHJ1ZTsKfQoKCmZ1bmN0aW9uIHRlc3RfZnRwX2NsZWFudXAoJiRtb2R1bGUsJiRtZXNzYWdlKQp7CiAgJG1lc3NhZ2UgPSAkbW9kdWxlLT5MYW5nKCdwcm9tcHRfZnRwX2NsZWFudXAnKS4nOiZuYnNwOyc7CiAgJGZ0cGhvc3QgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiAgJGZ0cHVzZXIgPSAkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCdmdHB1c2VyJywnJyk7CiAgJGZ0cHBhc3N3b3JkID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgnZnRwcGFzc3dvcmQnLCcnKTsKICAkZnRwcGF0aCA9ICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKCiAgLy8KICAvLyBDb25uZWN0IHRvIHRoZSBGVFAgc2VydmVyIGFuZCBhdHRlbXB0IHRvIHVwbG9hZCB0aGUgZ2V0Y3dkLnBocCBzY3JpcHQKICAkY29ubl9pZCA9IGZ0cF9jb25uZWN0KCRmdHBob3N0KTsKICBpZiggJGNvbm5faWQgPT09IEZBbFNFICkKICAgIHsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX2NvdWxkbm90Y29ubmVjdCcpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogIGlmKCBmdHBfbG9naW4oICRjb25uX2lkLCAkZnRwdXNlciwgJGZ0cHBhc3N3b3JkICkgPT09IEZBTFNFICkKICAgIHsKICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX2xvZ2luJyk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgaWYoIGZ0cF9jaGRpciggJGNvbm5faWQsICRmdHBwYXRoICkgPT09IEZBTFNFICkKICAgIHsKICAgICAgZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgICAgJG1lc3NhZ2UgLj0gJG1vZHVsZS0+TGFuZygnZXJyb3JfZnRwX2JhZHBhdGgnKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAkZXJyb3JzID0gYXJyYXkoKTsKICAkZmlsZXMgPSBhcnJheSgiZ2V0Y3dkLnBocCIsIm15c3FsLnBocCIpOwogIGZvcmVhY2goICRmaWxlcyBhcyAkb25lZmlsZSApCiAgICB7CiAgICAgIGlmKCBmdHBfZGVsZXRlKCAkY29ubl9pZCwgJG9uZWZpbGUgKSA9PT0gRkFMU0UgKQoJewoJICAkZXJyb3JzW10gPSAkbW9kdWxlLT5MYW5nKCdlcnJvcl9mdHBfZGVsZXRlJywkb25lZmlsZSk7Cgl9CiAgICB9CgogIGZ0cF9jbG9zZSggJGNvbm5faWQgKTsKICBpZiggY291bnQoJGVycm9ycykgKQogICAgewogICAgICAkbWVzc2FnZSAuPSAnPGJyLz4nLmltcGxvZGUoJzxici8+JywkZXJyb3JzKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICRtZXNzYWdlIC49ICRtb2R1bGUtPkxhbmcoJ3N1Y2Nlc3MnKTsKICByZXR1cm4gdHJ1ZTsKfQovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/function.admin_teststab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokZnRwaG9zdCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBob3N0JywnJyk7CiRmdHB1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHVzZXInLCcnKTsKJGZ0cHBhc3N3b3JkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhc3N3b3JkJywnJyk7CiRmdHBwYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhdGgnLCcnKTsKJHdlYnVybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3ZWJ1cmwnLCcnKTsKJHNlcnZlcnBhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2VydmVycGF0aCcsJycpOwokZGJob3N0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RiaG9zdCcsJycpOwokZGJ1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RidXNlcicsJycpOwokZGJwYXNzd29yZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYnBhc3N3b3JkJywnJyk7CiRkYm5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJuYW1lJywnJyk7CgokZnRwZ29vZCA9ICghZW1wdHkoJGZ0cGhvc3QpICYmICFlbXB0eSgkZnRwdXNlcikgJiYgIWVtcHR5KCRmdHBwYXNzd29yZCkgJiYKCSAgICAhZW1wdHkoJGZ0cHBhdGgpKTsKJHdlYmdvb2QgPSAoJGZ0cGdvb2QgJiYgIWVtcHR5KCR3ZWJ1cmwpICYmICFlbXB0eSgkc2VydmVycGF0aCkpOwokZGJnb29kICA9ICgkd2ViZ29vZCAmJiAhZW1wdHkoJGRiaG9zdCkgJiYgIWVtcHR5KCRkYnVzZXIpICYmIAoJICAgICFlbXB0eSgkZGJwYXNzd29yZCkgJiYgIWVtcHR5KCRkYm5hbWUpKTsKCmlmKCBpc3NldCggJHBhcmFtc1snZXJyb3InXSApICkgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsMSk7CmlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKSAKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLHRyaW0oJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQplbHNlIGlmKCAhJGZ0cGdvb2QgKSAKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywxKTsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cHNldHRpbmdzYmFkJykpOwogIH0KZWxzZSBpZiggISR3ZWJnb29kICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywxKTsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsJHRoaXMtPkxhbmcoJ2Vycm9yX3dlYnNldHRpbmdzYmFkJykpOwogIH0KZWxzZSBpZiggISRkYmdvb2QgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLDEpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywkdGhpcy0+TGFuZygnZXJyb3JfZGJzZXR0aW5nc2JhZCcpKTsKICB9Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3Rlc3RzJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRzbWFydHktPmFzc2lnbigndGl0bGVfdGVzdGZ0cCcsJHRoaXMtPkxhbmcoJ3RpdGxlX3Rlc3RmdHAnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb190ZXN0ZnRwJywkdGhpcy0+TGFuZygnaW5mb190ZXN0ZnRwJykpOwppZiggJGZ0cGdvb2QgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignYnV0dG9uX3Rlc3RmdHAnLAoJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCd0ZXN0ZnRwJywKCQkJCQkgICAgICR0aGlzLT5MYW5nKCd0ZXN0JykpKTsKICB9Cgokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3Rlc3RodHRwJywkdGhpcy0+TGFuZygndGl0bGVfdGVzdGh0dHAnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb190ZXN0aHR0cCcsJHRoaXMtPkxhbmcoJ2luZm9fdGVzdGh0dHAnKSk7CmlmKCAkd2ViZ29vZCApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdidXR0b25fdGVzdGh0dHAnLAoJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCd0ZXN0aHR0cCcsCgkJCQkJICAgICAkdGhpcy0+TGFuZygndGVzdCcpKSk7CgkJCQkJICAgICAKICB9Cgokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3Rlc3RteXNxbCcsJHRoaXMtPkxhbmcoJ3RpdGxlX3Rlc3RteXNxbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbmZvX3Rlc3RteXNxbCcsJHRoaXMtPkxhbmcoJ2luZm9fdGVzdG15c3FsJykpOwppZiggJGRiZ29vZCApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdidXR0b25fdGVzdG15c3FsJywKCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwndGVzdG15c3FsJywKCQkJCQkgICAgICR0aGlzLT5MYW5nKCd0ZXN0JykpKTsKCQkJCQkgICAgIAogIH0KCiRzbWFydHktPmFzc2lnbigndGl0bGVfY2xlYW51cCcsJHRoaXMtPkxhbmcoJ3RpdGxlX2NsZWFudXAnKSk7CiRzbWFydHktPmFzc2lnbignaW5mb19jbGVhbnVwJywkdGhpcy0+TGFuZygnaW5mb19jbGVhbnVwJykpOwppZiggJGZ0cGdvb2QgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignYnV0dG9uX2NsZWFudXAnLAoJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjbGVhbnVwJywKCQkJCQkgICAgICR0aGlzLT5MYW5nKCdnbycpKSk7CiAgfQoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZXN0cy50cGwnKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2Rlc2NyaXB0aW9uJ10gPSAnQSBzaXRlIHJvbGxvdXQgdXRpbGl0eSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdTaXRlIFB1c2hlcic7CgoKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWwnOwokbGFuZ1snc3VjY2VzcyddID0gJ1N1Y2Nlc3MnOwokbGFuZ1sndGVzdCddID0gJ1Rlc3QnOwokbGFuZ1snZ28nXSA9ICdHbyc7CiRsYW5nWydjbG9zZSddID0gJ0Nsb3NlJzsKJGxhbmdbJ3ZhbHVlJ10gPSAnVmFsdWUnOwoKJGxhbmdbJ292ZXJhbGxfcHJvZ3Jlc3MnXSA9ICdPdmVyYWxsIFByb2dyZXNzJzsKJGxhbmdbJ3NlbmRpbmdfZmlsZXMnXSA9ICdTZW5kaW5nIGZpbGVzOiBDaHVuayAlcyBvZiAlcyc7CiRsYW5nWydyZW1vdGVfdGFiJ10gPSAnUmVtb3RlIEhvc3QgU2V0dGluZ3MnOwokbGFuZ1sndGVzdHNfdGFiJ10gPSAnVGVzdHMnOwokbGFuZ1sncHVzaF90YWInXSA9ICdQdXNoJzsKJGxhbmdbJ3ByZWZzX3RhYiddID0gJ1ByZWZlcmVuY2VzJzsKCiRsYW5nWyd0aXRsZV9udW1maWxlcyddID0gJ0ZpbGUgU2VuZGluZyc7CiRsYW5nWydpbmZvX251bWZpbGVzJ10gPSA8PDxFT1QKVGhpcyBwYXJhbWV0ZXIgY29udHJvbGxzIHRoZSBudW1iZXIgb2YgZmlsZXMgdG8gc2VuZCBpbiBvbmUgYmF0Y2guICBJZiB5b3UgZXhwZXJpZW5jZSBwaHAgdGltZW91dCBlcnJvcnMsIHlvdSBtYXkgd2FudCB0byBkZWNyZWFzZSB0aGlzIG51bWJlcgpFT1Q7CgokbGFuZ1sndGl0bGVfbm90ZXMnXSA9ICdJbXBvcnRhbnQgTm90ZXMnOwokbGFuZ1snYWRtaW5fbm90ZXMnXSA9IDw8PEVPVApUaGlzIG1vZHVsZSBoYXMgZ3JlYXRlciByZXF1aXJlbWVudHMgdGhhbiB0aGUgc3RhbmRhcmQgbW9kdWxlIGZvciBDTVMgTWFkZSBzaW1wbGUuICBZb3UgbWF5IG5lZWQgZ3JlYXRlciBjb250cm9sIG92ZXIgdGhlIHNldHRpbmdzIG9mIHlvdXIgaG9zdCB0aGFuIG5vcm1hbC4gIEluIHBhcnRpY3VsYXIsIHlvdSBtYXkgbmVlZCB0byBhZGp1c3QgdGhlc2UgcGhwLmluaSBzZXR0aW5nczoKPHVsPgo8bGk+bWVtb3J5X2xpbWl0CiA8cD42NE0gb3IgZ3JlYXRlciByZWNvbW1lbmRlZDwvcD4KPC9saT4KPGxpPm1heF9leGVjdXRpb25fdGltZQogPHA+MzAwIG9yIGdyZWF0ZXIgcmVjb21tZW5kZWQ8L3A+CjwvbGk+CjxsaT5mdHAgc3VwcG9ydAogPHA+WW91ciBob3N0IG11c3QgaGF2ZSBwaHAncyBmdHAgZXh0ZW5zaW9ucyBlbmFibGVkPC9wPgo8L2xpPgo8bGk+b3V0Z29pbmcgY29ubmVjdGlvbnMKIDxwPllvdXIgaG9zdCBtdXN0IGFsbG93IG91dGdvaW5nIGh0dHAgY29ubmVjdGlvbnM8L3A+CjwvbGk+CjwvdWw+CkVPVDsKJGxhbmdbJ3Byb2dyZXNzX3dpbmRvdyddID0gJ1Byb2dyZXNzIHdpbmRvdyc7CiRsYW5nWyd0aXRsZV9mdHBpbmZvJ10gPSAnRlRQIERldGFpbHMnOwokbGFuZ1sndGl0bGVfd2ViaW5mbyddID0gJ0hUVFAgRGV0YWlscyc7CiRsYW5nWyd0aXRsZV9kYmluZm8nXSA9ICdEYXRhYmFzZSBEZXRhaWxzJzsKJGxhbmdbJ3RpdGxlX3Rlc3RmdHAnXSA9ICdUZXN0IEZUUCBDb25uZWN0aW9uJzsKJGxhbmdbJ3RpdGxlX3Rlc3RodHRwJ10gPSAnVGVzdCBIVFRQIENvbm5lY3Rpb24gYW5kIHBhdGhzJzsKJGxhbmdbJ3RpdGxlX3Rlc3RteXNxbCddID0gJ1Rlc3QgTVlTUUwgQ29ubmVjdGlvbic7CiRsYW5nWyd0aXRsZV9jbGVhbnVwJ10gPSAnQ2xlYW4gVXAnOwokbGFuZ1sndGl0bGVfcHVzaCddID0gJ1B1c2ggRmlsZXMnOwokbGFuZ1sncHJvbXB0X2Z0cGhvc3QnXSA9ICdGVFAgSG9zdG5hbWUnOwokbGFuZ1sncHJvbXB0X2Z0cHVzZXInXSA9ICdGVFAgVXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X2Z0cHBhc3N3b3JkJ10gPSAnRlRQIFBhc3N3b3JkJzsKJGxhbmdbJ3Byb21wdF9mdHBwYXRoJ10gPSAnRlRQIFN0YXJ0aW5nIERpcmVjdG9yeSc7CiRsYW5nWydwcm9tcHRfZnRwY2htb2RfZmlsZSddID0gJ0RlZmF1bHQgRmlsZSBQZXJtaXNzaW9uJzsKJGxhbmdbJ3Byb21wdF9mdHBjaG1vZF9kaXInXSA9ICdEZWZhdWx0IERpcmVjdG9yeSBQZXJtaXNzaW9uJzsKJGxhbmdbJ3Byb21wdF93ZWJ1cmwnXSA9ICdXZWJzaXRlIFVSTCc7CiRsYW5nWydwcm9tcHRfZGJob3N0J10gPSAnRGF0YWJhc2UgSG9zdCc7CiRsYW5nWydwcm9tcHRfZGJ1c2VyJ10gPSAnVXNlcm5hbWUnOwokbGFuZ1sncHJvbXB0X2RicGFzc3dvcmQnXSA9ICdQYXNzd29yZCc7CiRsYW5nWydwcm9tcHRfZGJuYW1lJ10gPSAnRGF0YWJhc2UgTmFtZSc7CiRsYW5nWydwcm9tcHRfc2VydmVycGF0aCddID0gJ0Fic29sdXRlIFBhdGggb24gU2VydmVyJzsKJGxhbmdbJ2pvYl9wcm9ncmVzcyddID0gJ0pvYiBQcm9ncmVzcyc7CgokbGFuZ1snaW5mb190ZXN0ZnRwJ10gPSA8PDxFT1QKVGhpcyBwZXJmb3JtcyBhIGJhc2ljIGxvZ2luIHRlc3QgdG8gdGhlIHJlbW90ZSBmdHAgc2VydmVyIGFuZCBhbHNvIHRlc3RzIGlmIHRoZSBwYXRoIHNwZWNpZmllZCBleGlzdHMuCkVPVDsKJGxhbmdbJ2luZm9fdGVzdGh0dHAnXSA9IDw8PEVPVApUaGlzIHRlc3QgaXMgZGVzaWduZWQgdG8gdGVzdCB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIGVudGVyZWQgc2V0dGluZ3MuICBJdCB3aWxsIGNvbm5lY3QgdG8gdGhlIHJlbW90ZSBmdHAgc2VydmVyIGluIHRoZSBtZXRob2Qgc3BlY2lmaWVkIGFuZCB1cGxvYWQgYSBiYXNpYyBwaHAgc2NyaXB0LiAgSXQgdGhlbiBhdHRlbXB0cyB0byBleGVjdXRlIHRoYXQgc2NyaXB0IHZpYSBodHRwIGFuZCBwYXJzZSB0aGUgcmVzdWx0cy4gIFRoZSBwYXRoIG9idGFpbmVkIGJ5IHRoaXMgc2hvdWxkIG1hdGNoIHRoZSBvbmUgeW91IGVudGVyZWQgaW4gdGhlIHByZWZlcmVuY2VzIHRhYi4KRU9UOwokbGFuZ1snaW5mb190ZXN0bXlzcWwnXSA9IDw8PEVPVApUaGlzIHRlc3Qgd2lsbCB1cGxvYWQgYSBwaHAgc2NyaXB0IHRvIHRoZSByZW1vdGUgc2VydmVyIHRoYXQgd2lsbCB0ZXN0IG15c3FsIGNvbm5lY3Rpb24gc2V0dGluZ3MuICBJdCBzaG91bGQgcmV0dXJuIHRoZSBudW1iZXIgb2YgdGFibGVzIGluIHRoZSByZW1vdGUgZGF0YWJhc2UuIFplcm8gaXMgYSB2YWxpZCBhbnN3ZXIKRU9UOwokbGFuZ1snaW5mb19jbGVhbnVwJ10gPSA8PDxFT1QKUmVtb3ZlIGFsbCB0ZW1wb3JhcnkgZmlsZXMgY3JlYXRlZCBvbiB0aGUgZnRwIHNpdGUgZHVyaW5nIHRlc3RpbmcuCkVPVDsKJGxhbmdbJ2luZm9fcHVzaCddID0gPDw8RU9UClB1c2ggZmlsZXMgcmVjdXJzaXZlbHkgZnJvbSB0aGUgbG9jYWwgc2VydmVyIHRvIHRoZSByZW1vdGUgc2VydmVyLjxici8+CjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gQSBuZXcgd2luZG93IHdpbGwgbm90IHBvcHVwLiAgVGhlIGpvYiB3aWxsIHRha2Ugb3ZlciB0aGlzIHdpbmRvdywgYW5kIHdpbGwgcmVkaXJlY3QgdG8gYSByZXN1bHRzIHBhZ2UgdXBvbiBjb21wbGV0aW9uLgpFT1Q7CgokbGFuZ1snZXJyb3JfbG9jYWxkYl9saXN0dGFibGVzJ10gPSAnRVJST1I6IENvdWxkIG5vdCBsaXN0IHRhYmxlcyBvbiB0aGUgbG9jYWwgZGF0YWJhc2UnOwokbGFuZ1snZXJyb3JfbG9jYWxkYl9jb25uZWN0J10gPSAnRVJST1I6IENvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBsb2NhbCBkYXRhYmFzZSc7CiRsYW5nWydlcnJvcl9mdHBfbWtkaXInXSA9ICdFUlJPUjogY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJXMnOwokbGFuZ1snZXJyb3JfZnRwX3B1dCddID0gJ0VSUk9SOiBjb3VsZCBub3QgcHV0IGZpbGUgJXMnOwokbGFuZ1snZXJyb3JfZnRwX2RlbGV0ZSddID0gJ0VSUk9SOiBDb3VsZCBub3QgZGVsZXRlIGZpbGUgJXMnOwokbGFuZ1snZXJyb3JfZnRwc2V0dGluZ3NiYWQnXSA9ICdFUlJPUjogRlRQIFNldHRpbmdzIGFyZSBpbmNvcnJyZWN0IG9yIGVtcHR5JzsKJGxhbmdbJ2Vycm9yX3dlYnNldHRpbmdzYmFkJ10gPSAnRVJST1I6IEhUVFAgU2V0dGluZ3MgYXJlIGluY29ycnJlY3Qgb3IgZW1wdHknOwokbGFuZ1snZXJyb3JfZGJzZXR0aW5nc2JhZCddID0gJ0VSUk9SOiBEYXRhYmFzZSBTZXR0aW5ncyBhcmUgaW5jb3JycmVjdCBvciBlbXB0eSc7CiRsYW5nWydlcnJvcl9mdHBfY291bGRub3Rjb25uZWN0J10gPSAnRVJST1I6IENvdWxkIG5vdCBlc3RhYmxpc2ggYW4gZnRwIGNvbm5lY3Rpb24gdG8gdGhlIHNwZWNpZmllZCBob3N0JzsKJGxhbmdbJ2Vycm9yX2Z0cF9sb2dpbiddID0gJ0VSUk9SOiBDb3VsZCBub3QgbG9naW4uIChpbXByb3BlciB1c2VybmFtZSBvciBwYXNzd29yZCknOwokbGFuZ1snZXJyb3JfZnRwX2JhZHBhdGgnXSA9ICdFUlJPUjogQ291bGQgbm90IGZpbmQgdGhlIHBhdGggc3BlY2lmaWVkJzsKJGxhbmdbJ2Vycm9yX2Z0cF93cml0ZXByb2JsZW0nXSA9ICdFUlJPUjogQ291bGQgbm90IHB1dCAlcyc7CiRsYW5nWydlcnJvcl9odHRwX3VybHByb2JsZW0nXSA9ICdFUlJPUjogUHJvYmxlbSByZWFkaW5nIHRoZSB1cmwgc3BlY2lmaWVkJzsKJGxhbmdbJ2Vycm9yX2h0dHBfdW5leHBlY3RlZHBhdGgnXSA9ICdFUlJPUjogVGhlIHBhdGggc3BlY2lmaWVkIGluIHRoZSBjb25maWcgZG9lcyBub3QgbWF0Y2ggdGhlIG9uZSBmb3VuZDogJXMnOwokbGFuZ1sncHJvbXB0X2Z0cF9jb25uZWN0aW9uX3Rlc3QnXSA9ICdGVFAgQ29ubmVjdGlvbiBUZXN0JzsKJGxhbmdbJ3Byb21wdF9odHRwX2Nvbm5lY3Rpb25fdGVzdCddID0gJ0hUVFAgQ29ubmVjdGlvbiBUZXN0JzsKJGxhbmdbJ3Byb21wdF9mdHBfY2xlYW51cCddID0gJ0ZUUCBDbGVhbnVwIG9wZXJhdGlvbic7CgokbGFuZ1sncHVzaF9pbXBvcnRkYiddID0gJ0NyZWF0aW5nIGFuZCB1cGxvYWRpbmcgZGIgaW1wb3J0IHNjcmlwdCc7CiRsYW5nWydwdXNoX2V4ZWN1dGV1cmwnXSA9ICdSZXRyaWV2aW5nIHRoaXMgd2ViIHBhZ2U6ICVzJzsKJGxhbmdbJ3B1c2hfY29uZmlnX3RtcCddID0gJ0NyZWF0aW5nIG5ldyBjb25maWcucGhwIGFuZCB0bXAnOwokbGFuZ1sncHVzaF9maW5pc2hlZF9zdGVwJ10gPSAnUHVzaCBPcGVyYXRpb246IHN0ZXAgJXMgY29tcGxldGVkJzsKJGxhbmdbJ3B1c2hfZmluaXNoZWRfc3RlcF9wYXJ0J10gPSAnUHVzaCBPcGVyYXRpb246IHBhcnQgJXMgb2Ygc3RlcCAlcyBjb21wbGV0ZWQnOwokbGFuZ1sncHVzaF9iZWdpbl9wcmVwYXJhdGlvbl90YWdlJ10gPSAnQmVnaW4gUHJlcGFyYXRpb24gU3RhZ2UnOwokbGFuZ1sncHVzaF9zZW5kaW5nX2ZpbGVzX2NodW5rJ10gPSAnU2VuZGluZyBGaWxlcy4uLi4gY2h1bmsgJXMnOwoKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8aDM+V2hhdCBpcyBpdDwvaDM+CjxwPlRoaXMgbW9kdWxlIGFsbG93cyBwdXNoaW5nIHlvdXIgZXhpc3RpbmcgQ01TIE1hZGUgU2ltcGxlIHdlYnNpdGUgb250byBhIGJsYW5rIGhvc3RpbmcgZW52aXJvbm1lbnQuICBTb21lZSBvZiB0aGUgZmVhdHVyZXMgaW5jbHVkZToKPHVsPgo8bGk+Q29tcGxldGUgZGF0YWJhc2UgYmFja3VwIGxvY2FsbHksIGFuZCByZXN0b3JlIHJlbW90ZWx5IDxlbT4obXlzcWwgb25seSk8L2VtPjwvbGk+CjxsaT5QdXNoaW5nIG9mIGFsbCBtb2R1bGVzLCBpbWFnZXMsIGFuZCBvdGhlciBmaWxlZXMgZnJvbSB0aGUgbG9jYWwgbWFjaGluZSB0byB0aGUgcmVtb3RlPC9saT4KPGxpPlJlLWNyZWF0aW5nIHRoZSB0bXAgZGlyZWN0b3J5IHdpdGggdGhlIGNvcnJlY3QgcGVybWlzc2lvbnMgb24gdGhlIHJlbW90ZSBob3N0LjwvbGk+CjxsaT5SZS1jcmVhdGluZyB0aGUgY29uZmlnLnBocCBvbiB0aGUgcmVtb3RlIGhvc3QuPC9saT4KPC91bD4KPC9wPgo8aDM+V2hvIGlzIGl0IGZvcjwvaDM+CjxwPlRoaXMgbW9kdWxlIHdhcyBkZXNpZ25lZCB0byBtYWtlIGl0IGVhc3kgdG8gcHVzaCBhIGRldmVsb3BtZW50IHNpdGUgbGl2ZSBvbiBhIHJlbW90ZSBzZXJ2ZXIuICBJdCB3YXMgd3JpdHRlbiBmb3Igd2Vic2l0ZSBkZXZlbG9wZXJzLCBhbmQgYWRtaW5pc3RyYXRvcnMgdG8gcmVkdWNlIHRoZSBudW1iZXIgb2Ygc3RlcHMgcmVxdWlyZWQgdG8gcHJvZHVjZSBhIHByb2R1Y3Rpb24gd2Vic2l0ZS48L3A+CjxoMz5Ib3cgZG8gSSB1c2UgaXQ8L2gzPgo8cD5TaXRlcHVzaGVyIGhhcyBubyBmcm9udCBlbmQgaW50ZXJmYWNlLCBvbmx5IGFuIGFkbWluIGludGVyZmFjZS4gIFlvdSB1c2UgdGhpcyBtb2R1bGUgYnkgdHlwaW5nIGluIHRoZSByZW1vdGUgaG9zdCBzZXR0aW5ncyBpbnRvIHRoZSBwcmVmZXJlbmNlcyB0YWIsIHRlc3Rpbmcgd2l0aCB0aGUgdmFyaW91cyB0ZXN0IGZ1bmN0aW9ucywgYW5kIHRoZW4gaGl0dGluZyAnZ28nIG9uIHRoZSBwdXNoIHRhYi48L3A+CkVPVDsKCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PEVPVAo8dWw+CjxsaT4wLjEgLSBTZXB0ZW1iZXIsIDIwMDcKPHA+SW5pdGlhbCByZXZpc2lvbjwvcD4KPC9saT4KPC91bD4KRU9UCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/Progress2_Lite.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogQ29weXJpZ2h0IChjKSAyMDA1LTIwMDcsIExhdXJlbnQgTGF2aWxsZSA8cGVhckBsYXVyZW50LWxhdmlsbGUub3JnPg0KICoNCiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogKg0KICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQogKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCiAqIGFyZSBtZXQ6DQogKg0KICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQNCiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4NCiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0DQogKiAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlDQogKiAgICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLg0KICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgYXV0aG9ycyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMNCiAqICAgICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQ0KICogICAgICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uDQogKg0KICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiDQogKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFDQogKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KICogQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTDQogKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SDQogKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRg0KICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTDQogKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTg0KICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkNCiAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFDQogKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4NCiAqDQogKiBAY2F0ZWdvcnkgICBIVE1MDQogKiBAcGFja2FnZSAgICBIVE1MX1Byb2dyZXNzMg0KICogQGF1dGhvciAgICAgTGF1cmVudCBMYXZpbGxlIDxwZWFyQGxhdXJlbnQtbGF2aWxsZS5vcmc+DQogKiBAY29weXJpZ2h0ICAyMDA1LTIwMDcgTGF1cmVudCBMYXZpbGxlDQogKiBAbGljZW5zZSAgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocCAgTmV3IEJTRCBMaWNlbnNlDQogKiBAdmVyc2lvbiAgICBDVlM6ICRJZDogUHJvZ3Jlc3MyX0xpdGUucGhwLHYgMS45IDIwMDcvMDQvMDggMTQ6NTU6NTYgZmFyZWxsIEV4cCAkDQogKiBAbGluayAgICAgICBodHRwOi8vcGVhci5waHAubmV0L3BhY2thZ2UvSFRNTF9Qcm9ncmVzczINCiAqIEBzaW5jZSAgICAgIEZpbGUgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMi4wLjBSQzENCiAqLw0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnb2JfZ2V0X2NsZWFuJykpIHsNCiAgICBmdW5jdGlvbiBvYl9nZXRfY2xlYW4oKQ0KICAgIHsNCiAgICAgICAgJGNvbnRlbnRzID0gb2JfZ2V0X2NvbnRlbnRzKCk7DQoNCiAgICAgICAgaWYgKCRjb250ZW50cyAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgIG9iX2VuZF9jbGVhbigpOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuICRjb250ZW50czsNCiAgICB9DQp9DQoNCmlmICghZGVmaW5lZCgnUEhQX0VPTCcpKSB7DQogICAgc3dpdGNoIChzdHJ0b3VwcGVyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSkgew0KICAgICAgICAvLyBXaW5kb3dzDQogICAgICAgIGNhc2UgJ1dJTic6DQogICAgICAgICAgICBkZWZpbmUoJ1BIUF9FT0wnLCAiXHJcbiIpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgLy8gTWFjDQogICAgICAgIGNhc2UgJ0RBUic6DQogICAgICAgICAgICBkZWZpbmUoJ1BIUF9FT0wnLCAiXHIiKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgIC8vIFVuaXgNCiAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgIGRlZmluZSgnUEhQX0VPTCcsICJcbiIpOw0KICAgIH0NCn0NCg0KLyoqDQogKiBTdGFuZGFsb25lIEhUTUwgbG9hZGluZyBiYXIgd2l0aCBvbmx5IFBIUCBhbmQgSlMgaW50ZXJmYWNlLg0KICoNCiAqIFRoZSBIVE1MX1Byb2dyZXNzMl9MaXRlIGNsYXNzIGFsbG93IHlvdSB0byBhZGQgYSBxdWljaw0KICogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsb2FkaW5nIGJhciB0byBhbnkgb2YgeW91ciB4aHRtbCBkb2N1bWVudC4NCiAqIFlvdSBzaG91bGQgaGF2ZSBhIGJyb3dzZXIgdGhhdCBhY2NlcHQgREhUTUwgZmVhdHVyZS4NCiAqDQogKiBUaGlzIGNsYXNzIGhhcyBubyBkZXBlbmRlbmN5IGFuZCBjYW4gYmUgdXNlZCBjb21wbGV0ZWx5IG91dHNpZGUNCiAqIHRoZSBQRUFSIGluZnJhc3RydWN0dXJlLg0KICoNCiAqIEhlcmUgaXMgYSBiYXNpYyBleGFtcGxlOg0KICogPGNvZGU+DQogKiA8aHRtbD4NCiAqIDxib2R5Pg0KICogPD9waHANCiAqIHJlcXVpcmVfb25jZSAnSFRNTC9Qcm9ncmVzczJfTGl0ZS5waHAnOw0KICoNCiAqIGZ1bmN0aW9uIG15UHJvY2VzcygpDQogKiB7DQogKiAgICAgZm9yICgkaT0wOyAkaTwxMDAwMDA7ICRpKyspIHsgfQ0KICogfQ0KICoNCiAqICRwYmwgPSBuZXcgSFRNTF9Qcm9ncmVzczJfTGl0ZSgpOw0KICogJHBibC0+YWRkTGFiZWwoJ3RleHQnLCd0eHQxJywnUHJvZ3Jlc3MyIExpdGUgLSBCYXNpYyBFeGFtcGxlJyk7DQogKiAkcGJsLT5kaXNwbGF5KCk7DQogKg0KICogZm9yKCRpPTE7ICRpPD0xMDA7ICRpKyspIHsNCiAqICAgICAkcGJsLT5tb3ZlU3RlcCgkaSk7DQogKiAgICAgbXlQcm9jZXNzKCk7DQogKiB9DQogKiA/Pg0KICogPC9ib2R5Pg0KICogPC9odG1sPg0KICogPC9jb2RlPg0KICoNCiAqIEBjYXRlZ29yeSAgIEhUTUwNCiAqIEBwYWNrYWdlICAgIEhUTUxfUHJvZ3Jlc3MyDQogKiBAYXV0aG9yICAgICBMYXVyZW50IExhdmlsbGUgPHBlYXJAbGF1cmVudC1sYXZpbGxlLm9yZz4NCiAqIEBhdXRob3IgICAgIE1pa2EgVHVyaW4gPHR1cmluQGluYm94Lmx2Pg0KICogQGF1dGhvciAgICAgR2VyZCBXZWl0ZW5iZXJnIDxoYWhuZWJ1ZWNoZW5Ad2ViLmRlPg0KICogQGNvcHlyaWdodCAgMjAwNS0yMDA3IExhdXJlbnQgTGF2aWxsZQ0KICogQGxpY2Vuc2UgICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAgIE5ldyBCU0QgTGljZW5zZQ0KICogQHZlcnNpb24gICAgUmVsZWFzZTogMi4zLjANCiAqIEBsaW5rICAgICAgIGh0dHA6Ly9wZWFyLnBocC5uZXQvcGFja2FnZS9IVE1MX1Byb2dyZXNzMg0KICogQGxpbmsgICAgICAgaHR0cDovL3d3dy5waHBjbGFzc2VzLm9yZy9icm93c2UvcGFja2FnZS8xMjIyLmh0bWwNCiAqICAgICAgICAgICAgIEZyb20gYW4gb3JpZ2luYWwgaWRlYSBvZiBNaWtlIFR1cmluDQogKiBAbGluayAgICAgICBodHRwOi8vd3d3LnBocGNsYXNzZXMub3JnL2Jyb3dzZS9wYWNrYWdlLzE5NjQuaHRtbA0KICogICAgICAgICAgICAgSW1wcm92ZSB2ZXJzaW9uIG9mIEdlcmQgV2VpdGVuYmVyZw0KICogQHNpbmNlICAgICAgQ2xhc3MgYXZhaWxhYmxlIHNpbmNlIFJlbGVhc2UgMi4wLjBSQzENCiAqLw0KDQpjbGFzcyBIVE1MX1Byb2dyZXNzMl9MaXRlDQp7DQogICAgLyoqDQogICAgICogTGFiZWwgdGhhdCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICB2YXIgJF9pZGVudDsNCg0KICAgIC8qKg0KICAgICAqIFN0YXR1cyBvZiB0aGUgcHJvZ3Jlc3MgYmFyIChuZXcsIHNob3csIGhpZGUpLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgdmFyICRfc3RhdHVzID0gJ25ldyc7DQoNCiAgICAvKioNCiAgICAgKiBTdGVwcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHJpdmF0ZQ0KICAgICAqLw0KICAgIHZhciAkX3N0ZXAgPSAwOw0KDQogICAgLyoqDQogICAgICogTWluaW11bSBzdGVwcyBvZiB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRtaW47DQoNCiAgICAvKioNCiAgICAgKiBNYXhpbXVtIHN0ZXBzIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJG1heDsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBwb3NpdGlvbiAoYWJzb2x1dGUsIHJlbGF0aXZlKS4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRwb3NpdGlvbjsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBwb3NpdGlvbiBmcm9tIGxlZnQuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJGxlZnQ7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgcG9zaXRpb24gZnJvbSB0b3AuDQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBpbnRlZ2VyDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJHRvcDsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciB3aWR0aCBpbiBwaXhlbC4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIHZhciAkd2lkdGg7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgaGVpZ2h0IGluIHBpeGVsLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgaW50ZWdlcg0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRoZWlnaHQ7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgcGFkZGluZyBpbiBwaXhlbC4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIHZhciAkcGFkZGluZzsNCg0KICAgIC8qKg0KICAgICAqIFByb2dyZXNzIGJhciBmb3JlZ3JvdW5kIGNvbG9yLg0KICAgICAqDQogICAgICogQHZhciAgICAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICB2YXIgJGZvcmVncm91bmRfY29sb3IgPSAnIzAwMzNGRic7DQoNCiAgICAvKioNCiAgICAgKiBQcm9ncmVzcyBiYXIgZm9yZWdyb3VuZCBjb2xvci4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRiYWNrZ3JvdW5kX2NvbG9yID0gJyNDMEMwQzAnOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGJvcmRlciBwcm9wZXJ0aWVzDQogICAgICoNCiAgICAgKiA8Y29kZT4NCiAgICAgKiAkYm9yZGVyID0gYXJyYXkoDQogICAgICogICAgJ3dpZHRoJyA9PiAxICAgICAgICAgICMgd2lkdGggc2l6ZSBpbiBwaXhlbA0KICAgICAqICAgICdzdHlsZScgPT4gJ3NvbGlkJyAgICAjIHN0eWxlIChzb2xpZCwgZGFzaGVkLCBkb3R0ZWQgLi4uKQ0KICAgICAqICAgICdjb2xvcicgPT4gJyMwMDAwMDAnICAjIGNvbG9yDQogICAgICogKTsNCiAgICAgKiA8L2NvZGU+DQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBhcnJheQ0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRib3JkZXIgPSBhcnJheSgnd2lkdGgnID0+IDEsICdzdHlsZScgPT4gJ3NvbGlkJywgJ2NvbG9yJyA9PiAnIzAwMDAwMCcpOw0KDQogICAgLyoqDQogICAgICogRGlyZWN0aW9uIG9mIG1vdGlvbiAocmlnaHQsIGxlZnQsIHVwLCBkb3duKS4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIHN0cmluZw0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgdmFyICRkaXJlY3Rpb24gPSAncmlnaHQnOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGZyYW1lIHByb3BlcnRpZXMNCiAgICAgKg0KICAgICAqIDxjb2RlPg0KICAgICAqICRmcmFtZSA9IGFycmF5KA0KICAgICAqICAgICdzaG93JyA9PiBmYWxzZSwgICAgICAjIGZyYW1lIHNob3cgKHRydWUvZmFsc2UpDQogICAgICogICAgJ2xlZnQnID0+IDIwMCwgICAgICAgICMgZnJhbWUgcG9zaXRpb24gZnJvbSBsZWZ0DQogICAgICogICAgJ3RvcCcgPT4gMTAwLCAgICAgICAgICMgZnJhbWUgcG9zaXRpb24gZnJvbSB0b3ANCiAgICAgKiAgICAnd2lkdGgnID0+IDMyMCwgICAgICAgIyBmcmFtZSB3aWR0aA0KICAgICAqICAgICdoZWlnaHQnID0+IDkwLCAgICAgICAjIGZyYW1lIGhlaWdodA0KICAgICAqICAgICdjb2xvcicgPT4gJyNDMEMwQzAnLCAjIGZyYW1lIGNvbG9yDQogICAgICogICAgJ2JvcmRlci13aWR0aCcgPT4gMiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgYm9yZGVyIHdpZHRoDQogICAgICogICAgJ2JvcmRlci1zdHlsZScgPT4gJ3NvbGlkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZnJhbWUgYm9yZGVyIHN0eWxlIChzb2xpZCwNCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXNoZWQsIGRvdHRlZCwgaW5zZXQgLi4uKQ0KICAgICAqICAgICdib3JkZXItY29sb3InID0+ICcjREZERkRGICM0MDQwNDAgIzQwNDA0MCAjREZERkRGJyAgICAjIGZyYW1lIGJvcmRlciBjb2xvciAoM2RmeCkNCiAgICAgKiApOw0KICAgICAqIDwvY29kZT4NCiAgICAgKg0KICAgICAqIEB2YXIgICAgICAgIGFycmF5DQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICBzZXRGcmFtZUF0dHJpYnV0ZXMoKQ0KICAgICAqLw0KICAgIHZhciAkZnJhbWUgPSBhcnJheSgnc2hvdycgPT4gZmFsc2UpOw0KDQogICAgLyoqDQogICAgICogUHJvZ3Jlc3MgYmFyIGxhYmVscyBwcm9wZXJ0aWVzDQogICAgICoNCiAgICAgKiA8Y29kZT4NCiAgICAgKiAkbGFiZWwgPSBhcnJheSgNCiAgICAgKiAgICAnbmFtZScgPT4gYXJyYXkoICAgICAgICAgICAgICAgICAgIyBsYWJlbCBuYW1lDQogICAgICogICAgICAndHlwZScgPT4gJ3RleHQnLCAgICAgICAgICAgICAgICMgbGFiZWwgdHlwZQ0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICh0ZXh0LGJ1dHRvbixzdGVwLHBlcmNlbnQsY3Jvc3NiYXIpDQogICAgICogICAgICAndmFsdWUnID0+ICcmbmJzcDsnLCAgICAgICAgICAgICMgbGFiZWwgdmFsdWUNCiAgICAgKiAgICAgICdsZWZ0JyA9PiAoJGxlZnQpLCAgICAgICAgICAgICAgIyBsYWJlbCBwb3NpdGlvbiBmcm9tIGxlZnQNCiAgICAgKiAgICAgICd0b3AnID0+ICgkdG9wIC0gMTYpLCAgICAgICAgICAgIyBsYWJlbCBwb3NpdGlvbiBmcm9tIHRvcA0KICAgICAqICAgICAgJ3dpZHRoJyA9PiAwLCAgICAgICAgICAgICAgICAgICAjIGxhYmVsIHdpZHRoDQogICAgICogICAgICAnaGVpZ2h0JyA9PiAwLCAgICAgICAgICAgICAgICAgICMgbGFiZWwgaGVpZ2h0DQogICAgICogICAgICAnYWxpZ24nID0+ICdsZWZ0JywgICAgICAgICAgICAgICMgbGFiZWwgYWxpZ24NCiAgICAgKiAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLCAgICAgICAgICAjIGxhYmVsIGJhY2tncm91bmQgY29sb3INCiAgICAgKiAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLCAgICAjIGxhYmVsIGZvbnQgZmFtaWx5DQogICAgICogICAgICAnZm9udC1zaXplJyA9PiAxMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IHNpemUNCiAgICAgKiAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsICAgICAgICAgICAgICAgICAgICAjIGxhYmVsIGZvbnQgd2VpZ2h0DQogICAgICogICAgICAnZm9udC1zdHlsZScgPT4gJ25vcm1hbCcsICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IHN0eWxlDQogICAgICogICAgICAnY29sb3InID0+ICcjMDAwMDAwJyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsYWJlbCBmb250IGNvbG9yDQogICAgICogKTsNCiAgICAgKiA8L2NvZGU+DQogICAgICoNCiAgICAgKiBAdmFyICAgICAgICBhcnJheQ0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKSwgc2V0TGFiZWxBdHRyaWJ1dGVzKCkNCiAgICAgKi8NCiAgICB2YXIgJGxhYmVsID0gYXJyYXkoKTsNCg0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yIChaRTEpDQogICAgICoNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEhUTUxfUHJvZ3Jlc3MyX0xpdGUoJG9wdGlvbnMgPSBhcnJheSgpLCAkaWQgPSBudWxsKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9fY29uc3RydWN0KCRvcHRpb25zLCAkaWQpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENvbnN0cnVjdG9yIChaRTIpIFN1bW1hcnkuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBhcnJheSAgICAgJG9wdGlvbnMgICAgICAgKG9wdGlvbmFsKSBoYXMgb2Ygc3R5bGUgcGFyYW1ldGVycw0KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGUgcHJvZ3Jlc3MgYmFyDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRpZCAgICAgICAgICAgIChvcHRpb25hbCkgcHJvZ3Jlc3MgYmFyIHVuaXF1ZSBpZGVudGlmaWVyDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBvYmplY3QNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByb3RlY3RlZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvcHRpb25zID0gYXJyYXkoKSwgJGlkID0gbnVsbCkNCiAgICB7DQogICAgICAgIGlmIChpc19udWxsKCRpZCkpIHsNCiAgICAgICAgICAgICR0aGlzLT5faWRlbnQgPSBzdWJzdHIobWQ1KG1pY3JvdGltZSgpKSwgMCwgNik7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkdGhpcy0+X2lkZW50ID0gJGlkOw0KICAgIH0NCg0KICAgICAgICAkZGVmYXVsdF9vcHRpb25zID0gYXJyYXkoDQogICAgICAgICAgICAncG9zaXRpb24nID0+ICdhYnNvbHV0ZScsDQogICAgICAgICAgICAnbGVmdCcgPT4gMTAsDQogICAgICAgICAgICAndG9wJyA9PiAyNSwNCiAgICAgICAgICAgICd3aWR0aCcgPT4gMzAwLA0KICAgICAgICAgICAgJ2hlaWdodCcgPT4gMjUsDQogICAgICAgICAgICAncGFkZGluZycgPT4gMCwNCiAgICAgICAgICAgICdtaW4nID0+IDAsDQogICAgICAgICAgICAnbWF4JyA9PiAxMDANCiAgICAgICAgKTsNCiAgICAgICAgJGFsbG93ZWRfb3B0aW9ucyA9IGFycmF5X2tleXMoJGRlZmF1bHRfb3B0aW9ucyk7DQoNCiAgICAgICAgJG9wdGlvbnMgPSBhcnJheV9tZXJnZSgkZGVmYXVsdF9vcHRpb25zLCAkb3B0aW9ucyk7DQoNCiAgICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkcHJvcCA9PiAkdmFsKSB7DQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHByb3AsICRhbGxvd2VkX29wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPnskcHJvcH0gPSAkdmFsOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCJvcHRpb24gJyRwcm9wJyBpcyBub3QgYWxsb3dlZCIsIEVfVVNFUl9XQVJOSU5HKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICAkdGhpcy0+X3NldFN0ZXAoMCk7DQoNCiAgICAgICAgb2JfaW1wbGljaXRfZmx1c2goMSk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogTW92ZXMgdGhlIHByb2dyZXNzIGJhciBpbiBhbGwgZGlyZWN0aW9ucyAobGVmdCwgcmlnaHQsIHVwICwgZG93bikuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJGRpcmVjdGlvbiAgICAgZmlsbCB3YXkgb2YgdGhlIHByb2dyZXNzIGJhcg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2V0RGlyZWN0aW9uKCRkaXJlY3Rpb24pDQogICAgew0KICAgICAgICAkdGhpcy0+ZGlyZWN0aW9uID0gJGRpcmVjdGlvbjsNCg0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICRiYXIgPSBvYl9nZXRfY2xlYW4oKTsNCiAgICAgICAgICAgICRwb3NpdGlvbiA9ICR0aGlzLT5fY29tcHV0ZVBvc2l0aW9uKCk7DQoNCiAgICAgICAgICAgICRjc3NUZXh0ICA9ICdsZWZ0OicgLiAkcG9zaXRpb25bJ2xlZnQnXSAuICdweDsnOw0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnOw0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgICAgICRjc3NUZXh0IC49ICdoZWlnaHQ6JyAuICRwb3NpdGlvblsnaGVpZ2h0J10gLiAncHg7JzsNCg0KICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJhcicsICcnLCAkY3NzVGV4dCk7DQoNCiAgICAgICAgICAgIGVjaG8gJGJhciAuIFBIUF9FT0w7DQogICAgICAgICAgICBvYl9zdGFydCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQWRkIGEgbmV3IGxhYmVsIHRvIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJHR5cGUgICAgICAgICAgTGFiZWwgdHlwZSAodGV4dCxidXR0b24sc3RlcCxwZXJjZW50LGNyb3NzYmFyKQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkbmFtZSAgICAgICAgICBMYWJlbCBuYW1lDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICR2YWx1ZSAgICAgICAgIChvcHRpb25hbCkgZGVmYXVsdCBsYWJlbCB2YWx1ZQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgc2V0TGFiZWxBdHRyaWJ1dGVzKCksIHJlbW92ZUxhYmVsKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBhZGRMYWJlbCgkdHlwZSwgJG5hbWUsICR2YWx1ZSA9ICcmbmJzcDsnKQ0KICAgIHsNCiAgICAgICAgc3dpdGNoKCR0eXBlKSB7DQogICAgICAgIGNhc2UgJ3RleHQnOg0KICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZSwNCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICR2YWx1ZSwNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQsDQogICAgICAgICAgICAgICAgJ3RvcCcgPT4gJHRoaXMtPnRvcCAtIDE2LA0KICAgICAgICAgICAgICAgICd3aWR0aCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnaGVpZ2h0JyA9PiAwLA0KICAgICAgICAgICAgICAgICdhbGlnbicgPT4gJ2xlZnQnLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ2J1dHRvbic6DQogICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICR0eXBlLA0KICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHZhbHVlLA0KICAgICAgICAgICAgICAgICdhY3Rpb24nID0+ICcnLA0KICAgICAgICAgICAgICAgICd0YXJnZXQnID0+ICdzZWxmJywNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQsDQogICAgICAgICAgICAgICAgJ3RvcCcgPT4gJHRoaXMtPnRvcCArICR0aGlzLT5oZWlnaHQgKyAxMCwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDAsDQogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdjZW50ZXInLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ3N0ZXAnOg0KICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXSA9IGFycmF5KA0KICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkdHlwZSwNCiAgICAgICAgICAgICAgICAndmFsdWUnID0+ICR2YWx1ZSwNCiAgICAgICAgICAgICAgICAnbGVmdCcgPT4gJHRoaXMtPmxlZnQgKyA1LA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgKyA1LA0KICAgICAgICAgICAgICAgICd3aWR0aCcgPT4gMTAsDQogICAgICAgICAgICAgICAgJ2hlaWdodCcgPT4gMCwNCiAgICAgICAgICAgICAgICAnYWxpZ24nID0+ICdyaWdodCcsDQogICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InID0+ICd0cmFuc3BhcmVudCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc2l6ZScgPT4gMTEsDQogICAgICAgICAgICAgICAgJ2ZvbnQtZmFtaWx5JyA9PiAnVmVyZGFuYSwgVGFob21hLCBBcmlhbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtd2VpZ2h0JyA9PiAnbm9ybWFsJywNCiAgICAgICAgICAgICAgICAnZm9udC1zdHlsZScgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2NvbG9yJyA9PiAnIzAwMDAwMCcNCiAgICAgICAgICAgICk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAncGVyY2VudCc6DQogICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdID0gYXJyYXkoDQogICAgICAgICAgICAgICAgJ3R5cGUnID0+ICR0eXBlLA0KICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHZhbHVlLA0KICAgICAgICAgICAgICAgICdsZWZ0JyA9PiAkdGhpcy0+bGVmdCArICR0aGlzLT53aWR0aCAtIDUwLA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgLSAxNiwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDUwLA0KICAgICAgICAgICAgICAgICdoZWlnaHQnID0+IDAsDQogICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAncmlnaHQnLA0KICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA9PiAndHJhbnNwYXJlbnQnLA0KICAgICAgICAgICAgICAgICdmb250LXNpemUnID0+IDExLA0KICAgICAgICAgICAgICAgICdmb250LWZhbWlseScgPT4gJ1ZlcmRhbmEsIFRhaG9tYSwgQXJpYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXdlaWdodCcgPT4gJ25vcm1hbCcsDQogICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJyMwMDAwMDAnDQogICAgICAgICAgICApOw0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ2Nyb3NzYmFyJzoNCiAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV0gPSBhcnJheSgNCiAgICAgICAgICAgICAgICAndHlwZScgPT4gJHR5cGUsDQogICAgICAgICAgICAgICAgJ3ZhbHVlJyA9PiAkdmFsdWUsDQogICAgICAgICAgICAgICAgJ2xlZnQnID0+ICR0aGlzLT5sZWZ0ICsgKCR0aGlzLT53aWR0aCAvIDIpLA0KICAgICAgICAgICAgICAgICd0b3AnID0+ICR0aGlzLT50b3AgLSAxNiwNCiAgICAgICAgICAgICAgICAnd2lkdGgnID0+IDEwLA0KICAgICAgICAgICAgICAgICdoZWlnaHQnID0+IDAsDQogICAgICAgICAgICAgICAgJ2FsaWduJyA9PiAnY2VudGVyJywNCiAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicgPT4gJ3RyYW5zcGFyZW50JywNCiAgICAgICAgICAgICAgICAnZm9udC1zaXplJyA9PiAxMSwNCiAgICAgICAgICAgICAgICAnZm9udC1mYW1pbHknID0+ICdWZXJkYW5hLCBUYWhvbWEsIEFyaWFsJywNCiAgICAgICAgICAgICAgICAnZm9udC13ZWlnaHQnID0+ICdub3JtYWwnLA0KICAgICAgICAgICAgICAgICdmb250LXN0eWxlJyA9PiAnbm9ybWFsJywNCiAgICAgICAgICAgICAgICAnY29sb3InID0+ICcjMDAwMDAwJw0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVtb3ZlcyBhIGxhYmVsIHRvIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJG5hbWUgICAgICAgICAgTGFiZWwgbmFtZQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHJlbW92ZUxhYmVsKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5sYWJlbFskbmFtZV0pICYmICR0aGlzLT5sYWJlbFskbmFtZV1bJ3R5cGUnXSAhPSAnYnV0dG9uJykgew0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxhYmVsWyRuYW1lXSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBBZGQgYSBuZXcgYnV0dG9uIHdpdGggdGhlIHByb2dyZXNzIGJhci4NCiAgICAgKg0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkbmFtZSAgICAgICAgICBCdXR0b24gbmFtZQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkdmFsdWUgICAgICAgICBMYWJlbCB2YWx1ZQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkYWN0aW9uICAgICAgICBBY3Rpb24gdG8gZG8gKHNlZSBRVUVSWV9TVFJJTkcpDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICR0YXJnZXQgICAgICAgIChvcHRpb25hbCkgRnJhbWUgdGFyZ2V0IChkZWZhdWx0IGlzIHNlbGYpDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICByZW1vdmVCdXR0b24oKSwgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGFkZEJ1dHRvbigkbmFtZSwgJHZhbHVlLCAkYWN0aW9uLCAkdGFyZ2V0ID0gJ3NlbGYnKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmFkZExhYmVsKCdidXR0b24nLCAkbmFtZSwgJHZhbHVlKTsNCiAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnYWN0aW9uJ10gPSAkYWN0aW9uOw0KICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWyd0YXJnZXQnXSA9ICR0YXJnZXQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUmVtb3ZlcyBhIGJ1dHRvbiB0byB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRuYW1lICAgICAgICAgIExhYmVsIG5hbWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIGFkZEJ1dHRvbigpDQogICAgICovDQogICAgZnVuY3Rpb24gcmVtb3ZlQnV0dG9uKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5sYWJlbFskbmFtZV0pICYmICR0aGlzLT5sYWJlbFskbmFtZV1bJ3R5cGUnXSA9PSAnYnV0dG9uJykgew0KICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmxhYmVsWyRuYW1lXSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBCdWlsZCBhIGZyYW1lIGFyb3VuZCB0aGUgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgYXJyYXkgICAgICRhdHRyaWJ1dGVzICAgIChvcHRpb25hbCkgaGFzaCBvZiBzdHlsZSBwYXJhbWV0ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzZXRGcmFtZUF0dHJpYnV0ZXMoJGF0dHJpYnV0ZXMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGRlZmF1bHQgPSBhcnJheSgNCiAgICAgICAgICAgICdzaG93JyA9PiB0cnVlLA0KICAgICAgICAgICAgJ2xlZnQnID0+IDIwMCwNCiAgICAgICAgICAgICd0b3AnID0+IDEwMCwNCiAgICAgICAgICAgICd3aWR0aCcgPT4gMzIwLA0KICAgICAgICAgICAgJ2hlaWdodCcgPT4gOTAsDQogICAgICAgICAgICAnY29sb3InID0+ICcjQzBDMEMwJywNCiAgICAgICAgICAgICdib3JkZXItd2lkdGgnID0+IDIsDQogICAgICAgICAgICAnYm9yZGVyLXN0eWxlJyA9PiAnc29saWQnLA0KICAgICAgICAgICAgJ2JvcmRlci1jb2xvcicgPT4gJyNERkRGREYgIzQwNDA0MCAjNDA0MDQwICNERkRGREYnDQogICAgICAgICk7DQogICAgICAgICRhbGxvd2VkX29wdGlvbnMgPSBhcnJheV9rZXlzKCRkZWZhdWx0KTsNCg0KICAgICAgICAkb3B0aW9ucyA9IGFycmF5X21lcmdlKCRkZWZhdWx0LCAkYXR0cmlidXRlcyk7DQoNCiAgICAgICAgZm9yZWFjaCgkb3B0aW9ucyBhcyAkcHJvcCA9PiAkdmFsKSB7DQogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHByb3AsICRhbGxvd2VkX29wdGlvbnMpKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmZyYW1lWyRwcm9wXSA9ICR2YWw7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoImZyYW1lIG9wdGlvbiAnJHByb3AnIGlzIG5vdCBhbGxvd2VkIiwgRV9VU0VSX1dBUk5JTkcpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogRGVmaW5lcyBtYWluIHN0eWxlIG9mIGEgcHJvZ3Jlc3MgYmFyLg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgYXJyYXkgICAgICRhdHRyaWJ1dGVzICAgIChvcHRpb25hbCkgaGFzaCBvZiBzdHlsZSBwYXJhbWV0ZXJzDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBzZXRCYXJBdHRyaWJ1dGVzKCRhdHRyaWJ1dGVzID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgICRjc3NUZXh0ID0gJGNzc1RleHRfYm9yZGVyID0gJyc7DQogICAgICAgICRiYXIgID0gb2JfZ2V0X2NsZWFuKCk7DQoNCiAgICAgICAgZm9yZWFjaCAoJGF0dHJpYnV0ZXMgYXMgJGF0dHJOYW1lID0+ICRhdHRyVmFsKSB7DQogICAgICAgICAgICBpZiAoJGF0dHJOYW1lID09ICdib3JkZXItc3R5bGUnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJvcmRlclsnc3R5bGUnXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgICAgICRjc3NUZXh0X2JvcmRlciAuPSAnYm9yZGVyU3R5bGU6JyAuICR0aGlzLT5ib3JkZXJbJ3N0eWxlJ10gLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2JvcmRlci13aWR0aCcpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+Ym9yZGVyWyd3aWR0aCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICAgICAgJGNzc1RleHRfYm9yZGVyIC49ICdib3JkZXJXaWR0aDonIC4gJHRoaXMtPmJvcmRlclsnd2lkdGgnXSAuICdweDsnOw0KDQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdib3JkZXItY29sb3InKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJvcmRlclsnY29sb3InXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgICAgICRjc3NUZXh0X2JvcmRlciAuPSAnYm9yZGVyQ29sb3I6JyAuICR0aGlzLT5ib3JkZXJbJ2NvbG9yJ10gLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2JhY2tncm91bmQtY29sb3InKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmJhY2tncm91bmRfY29sb3IgPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dF9ib3JkZXIgLj0gJ2JhY2tncm91bmRDb2xvcjonIC4gJHRoaXMtPmJhY2tncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2NvbG9yJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5mb3JlZ3JvdW5kX2NvbG9yID0gJGF0dHJWYWw7DQogICAgICAgICAgICAgICAgJGNzc1RleHQgLj0gJ2JhY2tncm91bmRDb2xvcjonIC4gJHRoaXMtPmZvcmVncm91bmRfY29sb3IgLiAnOyc7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgIGlmICghZW1wdHkoJGNzc1RleHRfYm9yZGVyKSkgew0KICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BicmQnLCAnJywgJGNzc1RleHRfYm9yZGVyKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghZW1wdHkoJGNzc1RleHQpKSB7DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJhcicsICcnLCAkY3NzVGV4dCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBlY2hvICRiYXIgLiBQSFBfRU9MOw0KICAgICAgICBvYl9zdGFydCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIERlZmluZXMgc3R5bGUgb2YgYSBwcm9ncmVzcyBiYXIgbGFiZWwuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJG5hbWUgICAgICAgICAgTGFiZWwgaWRlbnRpZmllcg0KICAgICAqIEBwYXJhbSAgICAgIGFycmF5ICAgICAkYXR0cmlidXRlcyAgICAob3B0aW9uYWwpIGhhc2ggb2Ygc3R5bGUgcGFyYW1ldGVycw0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgYWRkTGFiZWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHNldExhYmVsQXR0cmlidXRlcygkbmFtZSwgJGF0dHJpYnV0ZXMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGZvbnRmYW1pbHkgPSAkZm9udHdlaWdodCA9ICcnOw0KDQogICAgICAgICRiYXIgPSBvYl9nZXRfY2xlYW4oKTsNCg0KICAgICAgICBmb3JlYWNoICgkYXR0cmlidXRlcyBhcyAkYXR0ck5hbWUgPT4gJGF0dHJWYWwpIHsNCiAgICAgICAgICAgIGlmICgkYXR0ck5hbWUgPT0gJ2NvbG9yJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2NvbG9yJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNzc1RleHQgPSAnY29sb3I6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2NvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnYmFja2dyb3VuZC1jb2xvcicpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWydiYWNrZ3JvdW5kLWNvbG9yJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGNzc1RleHQgPSAnYmFja2dyb3VuZENvbG9yOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydiYWNrZ3JvdW5kLWNvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnZm9udC1zaXplJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtc2l6ZSddID0gJGZvbnQgPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2ZvbnQtZmFtaWx5Jykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtZmFtaWx5J10gPSAkZm9udCA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAnZm9udC13ZWlnaHQnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnZm9udC13ZWlnaHQnXSA9ICRmb250ID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdmb250LXN0eWxlJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtc3R5bGUnXSA9ICRmb250ID0gJGF0dHJWYWw7DQoNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ3ZhbHVlJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ3ZhbHVlJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUxhYmVsVGV4dCgkbmFtZSwgJHRoaXMtPmxhYmVsWyRuYW1lXVsndmFsdWUnXSk7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdsZWZ0Jykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2xlZnQnXSA9ICRhdHRyVmFsOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhdHRyTmFtZSA9PSAndG9wJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ3RvcCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICd3aWR0aCcpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+bGFiZWxbJG5hbWVdWyd3aWR0aCddID0gJGF0dHJWYWw7DQogICAgICAgICAgICB9IGVsc2VpZiAoJGF0dHJOYW1lID09ICdoZWlnaHQnKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmxhYmVsWyRuYW1lXVsnaGVpZ2h0J10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYXR0ck5hbWUgPT0gJ2FsaWduJykgew0KICAgICAgICAgICAgICAgICR0aGlzLT5sYWJlbFskbmFtZV1bJ2FsaWduJ10gPSAkYXR0clZhbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICBpZiAoaXNzZXQoJGZvbnQpKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXMgIT0gJ25ldycpIHsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dCA9ICdmb250U2l6ZTonIC4gJHRoaXMtPmxhYmVsWyRuYW1lXVsnZm9udC1zaXplJ10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ2ZvbnRGYW1pbHk6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2ZvbnQtZmFtaWx5J10gLiAnOycNCiAgICAgICAgICAgICAgICAgICAgICAgICAuICdmb250V2VpZ2h0OicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydmb250LXdlaWdodCddIC4gJzsnDQogICAgICAgICAgICAgICAgICAgICAgICAgLiAnZm9udFN0eWxlOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydmb250LXN0eWxlJ10gLiAnOyc7DQoNCiAgICAgICAgICAgICAgICAkYmFyIC49ICR0aGlzLT5fY2hhbmdlRWxlbWVudFN0eWxlKCdwbGJsJywgJG5hbWUsICRjc3NUZXh0KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cyAhPSAnbmV3Jykgew0KICAgICAgICAgICAgJGNzc1RleHQgPSAndG9wOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAuICdsZWZ0OicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydsZWZ0J10gLiAncHg7JzsNCg0KICAgICAgICAgICAgaWYoJHRoaXMtPmxhYmVsWyRuYW1lXVsnd2lkdGgnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkY3NzVGV4dCAuPSAnd2lkdGg6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKCR0aGlzLT5sYWJlbFskbmFtZV1bJ2hlaWdodCddID4gMCkgew0KICAgICAgICAgICAgICAgICRjc3NUZXh0IC49ICdoZWlnaHQ6JyAuICR0aGlzLT5sYWJlbFskbmFtZV1bJ2hlaWdodCddIC4gJ3B4Oyc7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkY3NzVGV4dCAuPSAndGV4dEFsaWduOicgLiAkdGhpcy0+bGFiZWxbJG5hbWVdWydhbGlnbiddIC4nOyc7DQoNCiAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZWNobyAkYmFyIC4gUEhQX0VPTDsNCiAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDaGFuZ2VzIG5ldyBzdGVwIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBpbnRlZ2VyICAgJHN0ZXAgICAgICAgICAgbmV3IHN0ZXAgdmFsdWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1vdmVTdGVwKCRzdGVwKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zZXRTdGVwKCRzdGVwKTsNCiAgICAgICAgJHBvc2l0aW9uID0gJHRoaXMtPl9jb21wdXRlUG9zaXRpb24oKTsNCiAgICAgICAgJGJhciA9IG9iX2dldF9jbGVhbigpOw0KDQogICAgICAgICRjc3NUZXh0ID0gJyc7DQogICAgICAgIGlmICgkdGhpcy0+ZGlyZWN0aW9uID09ICdyaWdodCcgfHwgJHRoaXMtPmRpcmVjdGlvbiA9PSAnbGVmdCcpIHsNCiAgICAgICAgICAgIGlmICgkdGhpcy0+ZGlyZWN0aW9uID09ICdsZWZ0Jykgew0KICAgICAgICAgICAgICAgICRjc3NUZXh0IC49ICdsZWZ0OicgLiAkcG9zaXRpb25bJ2xlZnQnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7JzsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRoaXMtPmRpcmVjdGlvbiA9PSAndXAnIHx8ICR0aGlzLT5kaXJlY3Rpb24gPT0gJ2Rvd24nKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPmRpcmVjdGlvbiA9PSAndXAnKSB7DQogICAgICAgICAgICAgICAgJGNzc1RleHQgLj0gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGNzc1RleHQgLj0gJ2hlaWdodDonIC4gJHBvc2l0aW9uWydoZWlnaHQnXSAuICdweDsnOw0KICAgICAgICB9DQogICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BiYXInLCAnJywgJGNzc1RleHQpOw0KDQogICAgICAgIGZvcmVhY2goJHRoaXMtPmxhYmVsIGFzICRuYW1lID0+ICRkYXRhKSB7DQogICAgICAgICAgICBzd2l0Y2goJGRhdGFbJ3R5cGUnXSkgew0KICAgICAgICAgICAgY2FzZSAnc3RlcCc6DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUxhYmVsVGV4dCgkbmFtZSwgJHRoaXMtPl9zdGVwLicvJy4kdGhpcy0+bWF4KTsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3BlcmNlbnQnOg0KICAgICAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VMYWJlbFRleHQoJG5hbWUsICR0aGlzLT5fY29tcHV0ZVBlcmNlbnQoKSAuICclJyk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdjcm9zc2Jhcic6DQogICAgICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUNyb3NzSXRlbSgkbmFtZSk7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBlY2hvICRiYXIgLiBQSFBfRU9MOw0KICAgICAgICBvYl9zdGFydCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIENoYW5nZXMgdmFsdWUgb2YgdGhlIHByb2dyZXNzIGJhciB0byB0aGUgbmV4dCBzdGVwLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICogQHNlZSAgICAgICAgbW92ZVN0ZXAoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIG1vdmVOZXh0KCkNCiAgICB7DQogICAgICAgICR0aGlzLT5tb3ZlU3RlcCgkdGhpcy0+X3N0ZXAgKyAxKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDaGFuZ2VzIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIgdG8gdGhlIG1pbmltdW0gc3RlcC4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIG1vdmVTdGVwKCkNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBtb3ZlTWluKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5tb3ZlU3RlcCgkdGhpcy0+bWluKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9ncmVzcyBiYXIgc3RydWN0dXJlIGFzIEhUTUwuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHB1YmxpYw0KICAgICAqIEBzZWUgICAgICAgIGRpc3BsYXkoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRvSHRtbCgpDQogICAgew0KICAgICAgICAkaHRtbCA9ICcnOw0KICAgICAgICAkanMgPSAnJzsNCg0KICAgICAgICAvLyR0aGlzLT5fc2V0U3RlcCgkdGhpcy0+X3N0ZXApOw0KICAgICAgICAkcG9zaXRpb24gPSAkdGhpcy0+X2NvbXB1dGVQb3NpdGlvbigpOw0KDQogICAgICAgICRzdHlsZV9icmQgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3RvcDonIC4gJHRoaXMtPnRvcCAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnbGVmdDonIC4gJHRoaXMtPmxlZnQgLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3dpZHRoOicgLiAkdGhpcy0+d2lkdGggLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ2hlaWdodDonIC4gJHRoaXMtPmhlaWdodCAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnYmFja2dyb3VuZC1jb2xvcjonIC4gJHRoaXMtPmJhY2tncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5ib3JkZXJbJ3dpZHRoJ10gPiAwICkgew0KICAgICAgICAgICAgJHN0eWxlX2JyZCAuPSAnYm9yZGVyLXdpZHRoOicgLiAkdGhpcy0+Ym9yZGVyWyd3aWR0aCddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2JvcmRlci1zdHlsZTonIC4gJHRoaXMtPmJvcmRlclsnc3R5bGUnXSAuICc7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICAnYm9yZGVyLWNvbG9yOicgLiAkdGhpcy0+Ym9yZGVyWydjb2xvciddIC4gJzsnOw0KICAgICAgICB9DQogICAgICAgICRzdHlsZV9iYXIgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3RvcDonIC4gJHBvc2l0aW9uWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnbGVmdDonIC4gJHBvc2l0aW9uWydsZWZ0J10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ3dpZHRoOicgLiAkcG9zaXRpb25bJ3dpZHRoJ10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgIC4gJ2hlaWdodDonIC4gJHBvc2l0aW9uWydoZWlnaHQnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgLiAnYmFja2dyb3VuZC1jb2xvcjonIC4gJHRoaXMtPmZvcmVncm91bmRfY29sb3IgLiAnOyc7DQoNCiAgICAgICAgaWYgKCR0aGlzLT5mcmFtZVsnc2hvdyddKSB7DQogICAgICAgICAgICBpZiAoJHRoaXMtPmZyYW1lWydib3JkZXItd2lkdGgnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkYm9yZGVyID0gJ2JvcmRlci13aWR0aDonIC4gJHRoaXMtPmZyYW1lWydib3JkZXItd2lkdGgnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAgICAuICdib3JkZXItc3R5bGU6JyAuICR0aGlzLT5mcmFtZVsnYm9yZGVyLXN0eWxlJ10gLiAnOycNCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ2JvcmRlci1jb2xvcjonIC4gJHRoaXMtPmZyYW1lWydib3JkZXItY29sb3InXSAuICc7JzsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICgkdGhpcy0+cG9zaXRpb24gPT0gJ3JlbGF0aXZlJykgew0KICAgICAgICAgICAgICAgICRodG1sID0gJzxkaXYgaWQ9InRmcm0nIC4gJHRoaXMtPl9pZGVudCAuICciJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dG9wOjA7bGVmdDowOyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAkdG9wID0gJGxlZnQgPSAwOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkdG9wID0gJHRoaXMtPmZyYW1lWyd0b3AnXTsNCiAgICAgICAgICAgICAgICAkbGVmdCA9ICR0aGlzLT5mcmFtZVsnbGVmdCddOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJGh0bWwgLj0gJzxkaXYgaWQ9InBmcm0nIC4gJHRoaXMtPl9pZGVudCAuJyIgc3R5bGU9IicNCiAgICAgICAgICAgICAgICAgIC4gICdwb3NpdGlvbjphYnNvbHV0ZTsnDQogICAgICAgICAgICAgICAgICAuICAndG9wOicgLiAkdG9wIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgIC4gICdsZWZ0OicgLiAkbGVmdCAuICdweDsnDQogICAgICAgICAgICAgICAgICAuICAnd2lkdGg6JyAuICR0aGlzLT5mcmFtZVsnd2lkdGgnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAuICAnaGVpZ2h0OicgLiAkdGhpcy0+ZnJhbWVbJ2hlaWdodCddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgIC4gICRib3JkZXINCiAgICAgICAgICAgICAgICAgIC4gICdiYWNrZ3JvdW5kLWNvbG9yOicgLiAkdGhpcy0+ZnJhbWVbJ2NvbG9yJ10gLiAnOyI+Jw0KICAgICAgICAgICAgICAgICAgLiAgUEhQX0VPTDsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGlmICgkdGhpcy0+cG9zaXRpb24gPT0gJ3JlbGF0aXZlJykgew0KICAgICAgICAgICAgICAgICRodG1sID0gJzxkaXYgaWQ9InRmcm0nIC4gJHRoaXMtPl9pZGVudCAuICciJw0KICAgICAgICAgICAgICAgICAgICAgIC4gJyBzdHlsZT0icG9zaXRpb246cmVsYXRpdmU7dG9wOjA7bGVmdDowOyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gUEhQX0VPTDsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRodG1sIC49ICc8ZGl2IGlkPSJwYnJkJy4kdGhpcy0+X2lkZW50LiciIHN0eWxlPSInLiRzdHlsZV9icmQuJyI+Jy5QSFBfRU9MOw0KICAgICAgICAkaHRtbCAuPSAnPGRpdiBpZD0icGJhcicuJHRoaXMtPl9pZGVudC4nIiBzdHlsZT0iJy4kc3R5bGVfYmFyLiciPjwvZGl2PjwvZGl2PicuUEhQX0VPTDsNCg0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+bGFiZWwgYXMgJG5hbWUgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICRzdHlsZV9sYmwgPSAncG9zaXRpb246YWJzb2x1dGU7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICd0b3A6JyAuICRkYXRhWyd0b3AnXSAuICdweDsnDQogICAgICAgICAgICAgICAgICAgICAgIC4gJ2xlZnQ6JyAuICRkYXRhWydsZWZ0J10gLiAncHg7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICd0ZXh0LWFsaWduOicgLiAkZGF0YVsnYWxpZ24nXSAuICc7JzsNCg0KICAgICAgICAgICAgaWYgKCRkYXRhWyd3aWR0aCddID4gMCkgew0KICAgICAgICAgICAgICAgICRzdHlsZV9sYmwgLj0gJ3dpZHRoOicgLiAkZGF0YVsnd2lkdGgnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCRkYXRhWydoZWlnaHQnXSA+IDApIHsNCiAgICAgICAgICAgICAgICAkc3R5bGVfbGJsIC49ICdoZWlnaHQ6JyAuICRkYXRhWydoZWlnaHQnXSAuICdweDsnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgJHN0eWxlX2xibCAuPSAnY29sb3I6JyAuICRkYXRhWydjb2xvciddIC4nOycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2ZvbnQtc2l6ZTonIC4gJGRhdGFbJ2ZvbnQtc2l6ZSddIC4gJ3B4OycNCiAgICAgICAgICAgICAgICAgICAgICAgLiAgJ2ZvbnQtZmFtaWx5OicgLiAkZGF0YVsnZm9udC1mYW1pbHknXSAuICc7Jw0KICAgICAgICAgICAgICAgICAgICAgICAuICAnZm9udC13ZWlnaHQ6JyAuICRkYXRhWydmb250LXdlaWdodCddIC4gJzsnOw0KDQogICAgICAgICAgICBpZiAoJGRhdGFbJ2JhY2tncm91bmQtY29sb3InXSAhPSAnJykgew0KICAgICAgICAgICAgICAgICRzdHlsZV9sYmwgLj0gJ2JhY2tncm91bmQtY29sb3I6JyAuICRkYXRhWydiYWNrZ3JvdW5kLWNvbG9yJ10gLiAnOyc7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIHN3aXRjaCgkZGF0YVsndHlwZSddKSB7DQogICAgICAgICAgICBjYXNlICdidXR0b24nOg0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8ZGl2PjxpbnB1dCBpZD0icGxibCcgLiAkbmFtZSAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiB0eXBlPSJidXR0b24iIHZhbHVlPSInIC4gJGRhdGFbJ3ZhbHVlJ10NCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBzdHlsZT0iJyAuICRzdHlsZV9sYmwNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBvbmNsaWNrPSInIC4gJGRhdGFbJ3RhcmdldCddDQogICAgICAgICAgICAgICAgICAgICAgLiAgJy5sb2NhdGlvbi5ocmVmPVwnJyAuICRkYXRhWydhY3Rpb24nXSAuICdcJyIgLz48L2Rpdj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAgUEhQX0VPTDsNCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ3N0ZXAnOg0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8ZGl2IGlkPSJwbGJsJyAuICRuYW1lIC4gJHRoaXMtPl9pZGVudA0KICAgICAgICAgICAgICAgICAgICAgIC4gICciIHN0eWxlPSInIC4gJHN0eWxlX2xibCAuICciPicNCiAgICAgICAgICAgICAgICAgICAgICAuICAkdGhpcy0+X3N0ZXANCiAgICAgICAgICAgICAgICAgICAgICAuICAnPC9kaXY+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gIFBIUF9FT0w7DQogICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdwZXJjZW50JzoNCiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGRpdiBpZD0icGxibCcgLiAkbmFtZSAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAgICAgICAgICAuICAnIiBzdHlsZT0iJyAuICRzdHlsZV9sYmwgLiAnIj4nDQogICAgICAgICAgICAgICAgICAgICAgLiAgJHRoaXMtPl9jb21wdXRlUGVyY2VudCgpIC4gJyUnDQogICAgICAgICAgICAgICAgICAgICAgLiAgJzwvZGl2PicNCiAgICAgICAgICAgICAgICAgICAgICAuICBQSFBfRU9MOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAndGV4dCc6DQogICAgICAgICAgICBjYXNlICdjcm9zc2Jhcic6DQogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzxkaXYgaWQ9InBsYmwnIC4gJG5hbWUgLiAkdGhpcy0+X2lkZW50DQogICAgICAgICAgICAgICAgICAgICAgLiAgJyIgc3R5bGU9IicgLiAkc3R5bGVfbGJsIC4gJyI+Jw0KICAgICAgICAgICAgICAgICAgICAgIC4gICRkYXRhWyd2YWx1ZSddDQogICAgICAgICAgICAgICAgICAgICAgLiAgJzwvZGl2PicNCiAgICAgICAgICAgICAgICAgICAgICAuICBQSFBfRU9MOw0KICAgICAgICAgICAgICAgIGlmICgkZGF0YVsndHlwZSddID09ICdjcm9zc2JhcicpIHsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICdmdW5jdGlvbiBzZXRSb3RhcnlDcm9zcycuJG5hbWUuJHRoaXMtPl9pZGVudC4nKCkgeycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICcgY3Jvc3MgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicGxibCcuJG5hbWUuJHRoaXMtPl9pZGVudC4nIikuZmlyc3RDaGlsZC5ub2RlVmFsdWU7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgICAgICAkanMgLj0gJyBzd2l0Y2goY3Jvc3MpIHsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnICBjYXNlICItLSI6IGNyb3NzID0gIlxcXFwiOyBicmVhazsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnICBjYXNlICJcXFxcIjogY3Jvc3MgPSAifCI7IGJyZWFrOycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICcgIGNhc2UgInwiOiBjcm9zcyA9ICIvIjsgYnJlYWs7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgICAgICAkanMgLj0gJyAgZGVmYXVsdDogY3Jvc3MgPSAiLS0iOyBicmVhazsnLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnIH0nLlBIUF9FT0w7DQogICAgICAgICAgICAgICAgICAgICRqcyAuPSAnIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGJsJy4kbmFtZS4kdGhpcy0+X2lkZW50LiciKS5maXJzdENoaWxkLm5vZGVWYWx1ZSA9IGNyb3NzOycuUEhQX0VPTDsNCiAgICAgICAgICAgICAgICAgICAgJGpzIC49ICd9Jy5QSFBfRU9MOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChjb3VudCgkdGhpcy0+bGFiZWwpID4gMCkgew0KICAgICAgICAgICAgJGpzIC49ICdmdW5jdGlvbiBzZXRMYWJlbFRleHQnLiR0aGlzLT5faWRlbnQuJyhuYW1lLHRleHQpIHsnLlBIUF9FT0w7DQogICAgICAgICAgICAkanMgLj0gJyBuYW1lID0gInBsYmwiICsgbmFtZSArICInLiR0aGlzLT5faWRlbnQuJyI7Jy5QSFBfRU9MOw0KICAgICAgICAgICAgJGpzIC49ICcgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobmFtZSkuZmlyc3RDaGlsZC5ub2RlVmFsdWU9dGV4dDsnLlBIUF9FT0w7DQogICAgICAgICAgICAkanMgLj0gJ30nLlBIUF9FT0w7DQogICAgICAgIH0NCg0KICAgICAgICAkanMgLj0gJ2Z1bmN0aW9uIHNldEVsZW1lbnRTdHlsZScuJHRoaXMtPl9pZGVudC4nKHByZWZpeCxuYW1lLHN0eWxlcykgeycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgbmFtZSA9IHByZWZpeCArIG5hbWUgKyAiJy4kdGhpcy0+X2lkZW50LiciOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgc3R5bGVzID0gc3R5bGVzLnNwbGl0KCI7Iik7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyBzdHlsZXMucG9wKCk7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyBmb3IodmFyIGk9MDsgaTxzdHlsZXMubGVuZ3RoOyBpKyspJy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyB7Jy5QSFBfRU9MOw0KICAgICAgICAkanMgLj0gJyAgIHMgPSBzdHlsZXNbaV0uc3BsaXQoIjoiKTsnLlBIUF9FT0w7DQogICAgICAgICRqcyAuPSAnICAgYyA9ICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChuYW1lKS5zdHlsZS4iK3NbMF0rIj1cIiIrc1sxXSsiXCIiOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgICBldmFsKGMpOycuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICcgfScuUEhQX0VPTDsNCiAgICAgICAgJGpzIC49ICd9Jy5QSFBfRU9MOw0KDQogICAgICAgIGlmICgkdGhpcy0+ZnJhbWVbJ3Nob3cnXSkgew0KICAgICAgICAgICAgJGh0bWwgLj0gJzwvZGl2PicuUEhQX0VPTDsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJHRoaXMtPnBvc2l0aW9uID09ICdyZWxhdGl2ZScpIHsNCiAgICAgICAgICAgICRodG1sIC49ICc8L2Rpdj4nLlBIUF9FT0w7DQogICAgICAgIH0NCg0KICAgICAgICAkaHRtbCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPicuUEhQX0VPTDsNCiAgICAgICAgJGh0bWwgLj0gJGpzOw0KICAgICAgICAkaHRtbCAuPSAnPC9zY3JpcHQ+Jy5QSFBfRU9MOw0KDQogICAgICAgIHJldHVybiAkaHRtbDsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaG93IHRoZSByZW5kZXJzIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKiBAc2VlICAgICAgICB0b0h0bWwoKQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIGRpc3BsYXkoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zdGF0dXMgPSAnc2hvdyc7DQogICAgICAgIGVjaG8gJHRoaXMtPnRvSHRtbCgpOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEhpZGVzIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICB2b2lkDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwdWJsaWMNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBoaWRlKCkNCiAgICB7DQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cz09J3Nob3cnKSB7DQogICAgICAgICAgICAkdGhpcy0+X3N0YXR1cyA9ICdoaWRlJzsNCiAgICAgICAgICAgICR0aGlzLT5faGlkZSgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2hvd3MgYSBwcm9ncmVzcyBiYXIgaGlkZGVuLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHVibGljDQogICAgICovDQogICAgZnVuY3Rpb24gc2hvdygpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9zdGF0dXM9PSdoaWRlJykgew0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0dXMgPSAnc2hvdyc7DQogICAgICAgICAgICAkdGhpcy0+X2hpZGUoKTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNob3cgb3IgSGlkZSBhIHByb2dyZXNzIGJhciBkZXBlbmRpbmcgb2YgaXRzIGN1cnJlbnQgc3RhdHVzLg0KICAgICAqDQogICAgICogQHJldHVybiAgICAgdm9pZA0KICAgICAqIEBzaW5jZSAgICAgIDIuMC4wDQogICAgICogQGFjY2VzcyAgICAgcHJpdmF0ZQ0KICAgICAqLw0KICAgIGZ1bmN0aW9uIF9oaWRlKCkNCiAgICB7DQogICAgICAgIGlmICgkdGhpcy0+X3N0YXR1cyA9PSAnaGlkZScpIHsNCiAgICAgICAgICAgICRjc3NUZXh0ID0gJ3Zpc2liaWxpdHk6aGlkZGVuOyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkY3NzVGV4dCA9ICd2aXNpYmlsaXR5OnZpc2libGU7JzsNCiAgICB9DQogICAgICAgICRiYXIgID0gb2JfZ2V0X2NsZWFuKCk7DQoNCiAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGJyZCcsICcnLCAkY3NzVGV4dCk7DQogICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BiYXInLCAnJywgJGNzc1RleHQpOw0KDQogICAgICAgIGlmICgkdGhpcy0+ZnJhbWVbJ3Nob3cnXSkgew0KICAgICAgICAgICAgJGJhciAuPSAkdGhpcy0+X2NoYW5nZUVsZW1lbnRTdHlsZSgncGZybScsICcnLCAkY3NzVGV4dCk7DQogICAgICAgIH0NCiAgICAgICAgZm9yZWFjaCgkdGhpcy0+bGFiZWwgYXMgJG5hbWUgPT4gJGRhdGEpIHsNCiAgICAgICAgICAgICRiYXIgLj0gJHRoaXMtPl9jaGFuZ2VFbGVtZW50U3R5bGUoJ3BsYmwnLCAkbmFtZSwgJGNzc1RleHQpOw0KICAgICAgICB9DQoNCiAgICAgICAgZWNobyAkYmFyIC4gUEhQX0VPTDsNCiAgICAgICAgb2Jfc3RhcnQoKTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBDYWxjdWxhdGUgdGhlIGN1cnJlbnQgcGVyY2VudCBvZiBwcm9ncmVzcy4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIGludGVnZXINCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY29tcHV0ZVBlcmNlbnQoKQ0KICAgIHsNCiAgICAgICAgJHBlcmNlbnQgPSByb3VuZCgoJHRoaXMtPl9zdGVwIC0gJHRoaXMtPm1pbikgLyAoJHRoaXMtPm1heCAtICR0aGlzLT5taW4pICogMTAwKTsNCiAgICAgICAgaWYgKCRwZXJjZW50ID4gMTAwKSB7DQogICAgICAgICAgICAkcGVyY2VudCA9IDEwMDsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHBlcmNlbnQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2FsY3VsYXRlIHRoZSBuZXcgcG9zaXRpb24gaW4gcGl4ZWwgb2YgdGhlIHByb2dyZXNzIGJhciB2YWx1ZS4NCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY29tcHV0ZVBvc2l0aW9uKCkNCiAgICB7DQogICAgICAgIHN3aXRjaCAoJHRoaXMtPmRpcmVjdGlvbikgew0KICAgICAgICBjYXNlICdyaWdodCc6DQogICAgICAgIGNhc2UgJ2xlZnQnOg0KICAgICAgICAgICAgJGJhciA9ICR0aGlzLT53aWR0aDsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdkb3duJzoNCiAgICAgICAgY2FzZSAndXAnOg0KICAgICAgICAgICAgJGJhciA9ICR0aGlzLT5oZWlnaHQ7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICAkcGl4ZWwgPSByb3VuZCggICgkdGhpcy0+X3N0ZXAgLSAkdGhpcy0+bWluKSAqICgkYmFyIC0gKCR0aGlzLT5wYWRkaW5nICogMikpDQogICAgICAgICAgICAgICAgICAgICAgIC8gKCR0aGlzLT5tYXggLSAkdGhpcy0+bWluKSApOw0KICAgICAgICBpZiAoJHRoaXMtPl9zdGVwIDw9ICR0aGlzLT5taW4pIHsNCiAgICAgICAgICAgICRwaXhlbCA9IDA7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCR0aGlzLT5fc3RlcCA+PSAkdGhpcy0+bWF4KSB7DQogICAgICAgICAgICAkcGl4ZWwgPSAkYmFyIC0gKCR0aGlzLT5wYWRkaW5nICogMik7DQogICAgICAgIH0NCg0KICAgICAgICBzd2l0Y2ggKCR0aGlzLT5kaXJlY3Rpb24pIHsNCiAgICAgICAgY2FzZSAncmlnaHQnOg0KICAgICAgICAgICAgJHBvc2l0aW9uWydsZWZ0J10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsndG9wJ10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsnd2lkdGgnXSA9ICRwaXhlbDsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkdGhpcy0+aGVpZ2h0IC0gKCR0aGlzLT5wYWRkaW5nICogMik7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnbGVmdCc6DQogICAgICAgICAgICAkcG9zaXRpb25bJ2xlZnQnXSA9ICR0aGlzLT53aWR0aCAtICR0aGlzLT5wYWRkaW5nIC0gJHBpeGVsOw0KICAgICAgICAgICAgJHBvc2l0aW9uWyd0b3AnXSA9ICR0aGlzLT5wYWRkaW5nOw0KICAgICAgICAgICAgJHBvc2l0aW9uWyd3aWR0aCddID0gJHBpeGVsOw0KICAgICAgICAgICAgJHBvc2l0aW9uWydoZWlnaHQnXSA9ICR0aGlzLT5oZWlnaHQgLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdkb3duJzoNCiAgICAgICAgICAgICRwb3NpdGlvblsnbGVmdCddID0gJHRoaXMtPnBhZGRpbmc7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3RvcCddID0gJHRoaXMtPnBhZGRpbmc7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3dpZHRoJ10gPSAkdGhpcy0+d2lkdGggLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkcGl4ZWw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAndXAnOg0KICAgICAgICAgICAgJHBvc2l0aW9uWydsZWZ0J10gPSAkdGhpcy0+cGFkZGluZzsNCiAgICAgICAgICAgICRwb3NpdGlvblsndG9wJ10gPSAkdGhpcy0+aGVpZ2h0IC0gJHRoaXMtPnBhZGRpbmcgLSAkcGl4ZWw7DQogICAgICAgICAgICAkcG9zaXRpb25bJ3dpZHRoJ10gPSAkdGhpcy0+d2lkdGggLSAoJHRoaXMtPnBhZGRpbmcgKiAyKTsNCiAgICAgICAgICAgICRwb3NpdGlvblsnaGVpZ2h0J10gPSAkcGl4ZWw7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJHBvc2l0aW9uOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNldHMgdGhlIG5ldyBzdGVwIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBiYXIuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBpbnRlZ2VyICAgJHN0ZXAgICAgICAgICAgbmV3IHN0ZXAgdmFsdWUNCiAgICAgKg0KICAgICAqIEByZXR1cm4gICAgIHZvaWQNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfc2V0U3RlcCgkc3RlcCkNCiAgICB7DQogICAgICAgIGlmKCRzdGVwID4gJHRoaXMtPm1heCkgew0KICAgICAgICAgICAgJHN0ZXAgPSAkdGhpcy0+bWF4Ow0KICAgICAgICB9DQogICAgICAgIGlmKCRzdGVwIDwgJHRoaXMtPm1pbikgew0KICAgICAgICAgICAgJHN0ZXAgPSAkdGhpcy0+bWluOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fc3RlcCA9ICRzdGVwOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNlbmRzIGEgRE9NIGNvbW1hbmQgKGVtdWxhdGUgY3NzVGV4dCBhdHRyaWJ1dGUpIHRocm91Z2ggYSBqYXZhc2NyaXB0IGZ1bmN0aW9uDQogICAgICogdG8gY2hhbmdlIHN0eWxlcyBvZiBhIHByb2dyZXNzIGJhcidzIGVsZW1lbnQuDQogICAgICoNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJHByZWZpeCAgICAgICAgcHJlZml4IGlkZW50aWZpZXIgb2YgdGhlIGVsZW1lbnQNCiAgICAgKiBAcGFyYW0gICAgICBzdHJpbmcgICAgJGVsZW1lbnQgICAgICAgZWxlbWVudCBuYW1lIChsYWJlbCBpZC4pDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRzdHlsZXMgICAgICAgIHN0eWxlcyBvZiBhIERPTSBlbGVtZW50DQogICAgICoNCiAgICAgKiBAcmV0dXJuICAgICBzdHJpbmcNCiAgICAgKiBAc2luY2UgICAgICAyLjAuMA0KICAgICAqIEBhY2Nlc3MgICAgIHByaXZhdGUNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBfY2hhbmdlRWxlbWVudFN0eWxlKCRwcmVmaXgsICRlbGVtZW50LCAkc3R5bGVzKQ0KICAgIHsNCiAgICAgICAgJGNtZCA9ICc8c2NyaXB0IHR5cGU9InRleHQvSmF2YVNjcmlwdCI+Jw0KICAgICAgICAgICAgIC4gJ3NldEVsZW1lbnRTdHlsZScgLiAkdGhpcy0+X2lkZW50DQogICAgICAgICAgICAgLiAnKCInIC4gJHByZWZpeCAuICciLCInIC4gJGVsZW1lbnQgLiAnIiwiJyAuICRzdHlsZXMgLiAnIik7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2VuZHMgYSBET00gY29tbWFuZCAoZW11bGF0ZSBmaXJzdENoaWxkLm5vZGVWYWx1ZSkgdGhyb3VnaCBhIGphdmFzY3JpcHQgZnVuY3Rpb24NCiAgICAgKiB0byBjaGFuZ2UgbGFiZWwgdmFsdWUgb2YgYSBwcm9ncmVzcyBiYXIncyBlbGVtZW50Lg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRlbGVtZW50ICAgICAgIGVsZW1lbnQgbmFtZSAobGFiZWwgaWQuKQ0KICAgICAqIEBwYXJhbSAgICAgIHN0cmluZyAgICAkdGV4dCAgICAgICAgICBlbGVtZW50IHZhbHVlIChsYWJlbCBjb250ZW50KQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgZnVuY3Rpb24gX2NoYW5nZUxhYmVsVGV4dCgkZWxlbWVudCwgJHRleHQpDQogICAgew0KICAgICAgICAkY21kID0gJzxzY3JpcHQgdHlwZT0idGV4dC9KYXZhU2NyaXB0Ij4nDQogICAgICAgICAgICAgLiAnc2V0TGFiZWxUZXh0JyAuICR0aGlzLT5faWRlbnQNCiAgICAgICAgICAgICAuICcoIicgLiAkZWxlbWVudCAuICciLCInIC4gJHRleHQgLiAnIik7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogU2VuZHMgYSBET00gY29tbWFuZCB0aHJvdWdoIGEgamF2YXNjcmlwdCBmdW5jdGlvbg0KICAgICAqIHRvIGNoYW5nZSB0aGUgbmV4dCBmcmFtZSBhbmltYXRpb24gb2YgYSBjcm9zcyBiYXIncyBlbGVtZW50Lg0KICAgICAqDQogICAgICogQHBhcmFtICAgICAgc3RyaW5nICAgICRlbGVtZW50ICAgICAgIGVsZW1lbnQgbmFtZSAoY3Jvc3MgaWQuKQ0KICAgICAqDQogICAgICogQHJldHVybiAgICAgc3RyaW5nDQogICAgICogQHNpbmNlICAgICAgMi4wLjANCiAgICAgKiBAYWNjZXNzICAgICBwcml2YXRlDQogICAgICovDQogICAgZnVuY3Rpb24gX2NoYW5nZUNyb3NzSXRlbSgkZWxlbWVudCkNCiAgICB7DQogICAgICAgICRjbWQgPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L0phdmFTY3JpcHQiPicNCiAgICAgICAgICAgICAuICdzZXRSb3RhcnlDcm9zcycgLiAkZWxlbWVudCAuICR0aGlzLT5faWRlbnQgLiAnKCk7Jw0KICAgICAgICAgICAgIC4gJzwvc2NyaXB0Pic7DQoNCiAgICAgICAgcmV0dXJuICRjbWQ7DQogICAgfQ0KfQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIFNpdGVQdXNoZXInLCdNYW5hZ2UgU2l0ZVB1c2hlcicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZnRwY2htb2RfZmlsZScsJ082NDQnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Z0cGNobW9kX2RpcicsJ083NTUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RiaG9zdCcsJ2xvY2FsaG9zdCcpOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIFNpdGVQdXNoZXInKTsKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/misc.functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgpmdW5jdGlvbiBnZXRfZmlsZV9saXN0KCRwYXRoID0gJycpCnsKICBnbG9iYWwgJGdDbXM7CiAgJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgogICRvd2QgPSBnZXRjd2QoKTsKICBpZiggJHBhdGggPT0gJycgKQogICAgewogICAgICAkcGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddOwogICAgfQogIGNoZGlyKCRwYXRoKTsKCiAgJGZpbGVsaXN0ID0gZ2V0X3JlY3Vyc2l2ZV9maWxlX2xpc3QoICcuJywgYXJyYXkoJ34kJywnLkRTX1N0b3JlJykpOwogIGNoZGlyKCRvd2QpOwoKICByZXR1cm4gJGZpbGVsaXN0Owp9CgoKZnVuY3Rpb24gY2xlYW5fZmlsZWxpc3RfZm9yX3RyYW5zcG9ydCggJGxpc3QgKQp7CiAgZ2xvYmFsICRnQ21zOwogICRjb25maWcgPSYgJGdDbXMtPkdldENvbmZpZygpOwoKICAkbmV3bGlzdCA9IGFycmF5KCk7CiAgZm9yZWFjaCggJGxpc3QgYXMgJG9uZSApCiAgICB7CiAgICAgIGlmKCBzdHJzdHIoICRvbmUsICcuL3RtcCcgKSApIGNvbnRpbnVlOwogICAgICAkbmV3bGlzdFtdID0gJG9uZTsKICAgIH0KICByZXR1cm4gJG5ld2xpc3Q7Cn0KCgpmdW5jdGlvbiBzcGxpdF9hcnJheV9hbmRfc3RvcmUoICYkbGlzdCwgJGRpciwgJGZpbGVwcmVmaXgsICRsaW1pdCApCnsKICAkZmlsZW51bSA9IDE7CiAgJGNvdW50ID0gMTsKICAkdG1wID0gYXJyYXkoKTsKICBmb3JlYWNoKCAkbGlzdCBhcyAkb25lICkKICAgIHsKICAgICAgJHRtcFtdID0gJG9uZTsKICAgICAgKyskY291bnQ7CiAgICAgIGlmKCAoJGNvdW50ICUgJGxpbWl0KSA9PSAwICkgCgl7CgkgIC8vIHNhdmUgdGhlIGZpbGUKCSAgZmlsZV9wdXRfY29udGVudHMoIGNtc19qb2luX3BhdGgoICRkaXIsICRmaWxlcHJlZml4LiRmaWxlbnVtICksCgkJCSAgICAgaW1wbG9kZSgiXG4iLCR0bXApKTsKCgkgIC8vIGFuZCBpbmNyZW1tZW50IGZpbGUgbnVtYmVyCgkgICR0bXAgPSBhcnJheSgpOwoJICAkZmlsZW51bSsrOwoJfQogICAgfQogIC8vIHNhdmUgdGhlIGxhc3QgZmlsZQogIGZpbGVfcHV0X2NvbnRlbnRzKCBjbXNfam9pbl9wYXRoKCAkZGlyLCAkZmlsZXByZWZpeC4kZmlsZW51bSApLAoJCSAgICAgaW1wbG9kZSgiXG4iLCR0bXApKTsKICAKICAvLyBhbmQgaW5jcmVtbWVudCBmaWxlIG51bWJlcgogICR0bXAgPSBhcnJheSgpOwogICRmaWxlbnVtKys7CiAgcmV0dXJuICRmaWxlbnVtLTE7Cn0KCmZ1bmN0aW9uIGNsZWFuX3RlbXBmaWxlcyggJHBhdGgsICRzcGVjICkKewogICRmaWxlcyA9IGdsb2IoIGNtc19qb2luX3BhdGgoICRwYXRoLCAkc3BlYyApICk7CiAgZm9yZWFjaCggJGZpbGVzIGFzICRmaWxlICkKICAgIHsKICAgICAgQHVubGluayggJGZpbGUgKTsKICAgIH0KfQovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/mysqldump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgbXlzcWxkdW1wLnBocAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKfCBDb3B5cmlnaHQgMjAwNiBIdWFuZyBLYWkKfCBoa2FpQGF0dXRpbGl0eS5jb20KfCBodHRwOi8vYXR1dGlsaXR5LmNvbS8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCnwgUmVsZWFzZWQgdW5kZXIgdGhlIHRlcm1zICYgY29uZGl0aW9ucyBvZiB2MiBvZiB0aGUKfCBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gRm9yIGRldGFpbHMgcmVmZXIgdG8KfCB0aGUgaW5jbHVkZWQgZ3BsLnR4dCBmaWxlIG9yIHZpc2l0IGh0dHA6Ly9nbnUub3JnCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KCmZ1bmN0aW9uIF9teXNxbGR1bXAoJG15c3FsX2RhdGFiYXNlLCRwYXJhbXMpCnsKICAkc3FsPSJzaG93IHRhYmxlczsiOwogICR0eHQgPSAnJzsKICAkcmVzdWx0PSBteXNxbF9xdWVyeSgkc3FsKTsKICBpZiggJHJlc3VsdCkKICAgIHsKICAgICAgd2hpbGUoICRyb3c9IG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KSkKCXsKCSAgJHR4dCAuPSBfbXlzcWxkdW1wX3RhYmxlX3N0cnVjdHVyZSgkcm93WzBdLCRwYXJhbXMpOwoJICAKCSAgaWYoIGlzc2V0KCRwYXJhbXNbJ3NxbF90YWJsZV9kYXRhJ10pKQoJICAgIHsKCSAgICAgICR0eHQgLj0gX215c3FsZHVtcF90YWJsZV9kYXRhKCRyb3dbMF0sJHBhcmFtcyk7CgkgICAgfQoJfQogICAgfQogIGVsc2UKICAgIHsKICAgICAgJHR4dCAuPSAiLyogbm8gdGFibGVzIGluICRteXNxbF9kYXRhYmFzZSAqL1xuIjsKICAgIH0KICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICByZXR1cm4gJHR4dDsKfQoKZnVuY3Rpb24gX215c3FsZHVtcF90YWJsZV9zdHJ1Y3R1cmUoJHRhYmxlLCRwYXJhbXMpCnsKICAkdHh0ID0gIi8qIFRhYmxlIHN0cnVjdHVyZSBmb3IgdGFibGUgYCR0YWJsZWAgKi9cbiI7CiAgaWYoIGlzc2V0KCRwYXJhbXNbJ3NxbF9kcm9wX3RhYmxlJ10pKQogICAgewogICAgICAkdHh0IC49ICJEUk9QIFRBQkxFIElGIEVYSVNUUyBgJHRhYmxlYDtcblxuIjsKICAgIH0JCiAgaWYoIGlzc2V0KCRwYXJhbXNbJ3NxbF9jcmVhdGVfdGFibGUnXSkpCiAgICB7CgkKICAgICAgJHNxbD0ic2hvdyBjcmVhdGUgdGFibGUgYCR0YWJsZWA7ICI7CiAgICAgICRyZXN1bHQ9bXlzcWxfcXVlcnkoJHNxbCk7CiAgICAgIGlmKCAkcmVzdWx0KQoJewoJICBpZigkcm93PSBteXNxbF9mZXRjaF9hc3NvYygkcmVzdWx0KSkKCSAgICB7CgkgICAgICAkdHh0IC49ICRyb3dbJ0NyZWF0ZSBUYWJsZSddLiI7XG5cbiI7CgkgICAgfQoJfQogICAgICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICAgIH0KICByZXR1cm4gJHR4dDsKfQoKZnVuY3Rpb24gX215c3FsZHVtcF90YWJsZV9kYXRhKCR0YWJsZSwkcGFyYW1zKQp7CiAgJHR4dCA9ICcnOwogICRzcWw9InNlbGVjdCAqIGZyb20gYCR0YWJsZWA7IjsKICAkcmVzdWx0PW15c3FsX3F1ZXJ5KCRzcWwpOwogIGlmKCAkcmVzdWx0KQogICAgewogICAgICAkbnVtX3Jvd3M9IG15c3FsX251bV9yb3dzKCRyZXN1bHQpOwogICAgICAkbnVtX2ZpZWxkcz0gbXlzcWxfbnVtX2ZpZWxkcygkcmVzdWx0KTsKCQkKICAgICAgaWYoICRudW1fcm93cyA+IDApCgl7CgkgICR0eHQgLj0gIi8qIGR1bXBpbmcgZGF0YSBmb3IgdGFibGUgYCR0YWJsZWAgKi9cbiI7CgkJCQoJICAkZmllbGRfdHlwZT1hcnJheSgpOwoJICAkaT0wOwoJICB3aGlsZSggJGkgPCAkbnVtX2ZpZWxkcykKCSAgICB7CgkgICAgICAkbWV0YT0gbXlzcWxfZmV0Y2hfZmllbGQoJHJlc3VsdCwgJGkpOwoJICAgICAgYXJyYXlfcHVzaCgkZmllbGRfdHlwZSwgJG1ldGEtPnR5cGUpOwoJICAgICAgJGkrKzsKCSAgICB9CgkJCQoJICAvL3ByaW50X3IoICRmaWVsZF90eXBlKTsKCSAgJHR4dCAuPSAiaW5zZXJ0IGludG8gYCR0YWJsZWAgdmFsdWVzXG4iOwoJICAkaW5kZXg9MDsKCSAgd2hpbGUoICRyb3c9IG15c3FsX2ZldGNoX3JvdygkcmVzdWx0KSkKCSAgICB7CgkgICAgICAkdHh0IC49ICIoIjsKCSAgICAgIGZvciggJGk9MDsgJGkgPCAkbnVtX2ZpZWxkczsgJGkrKykKCQl7CgkJICBpZiggaXNfbnVsbCggJHJvd1skaV0pKQoJCSAgICAkdHh0IC49ICJudWxsIjsKCQkgIGVsc2UKCQkgICAgewoJCSAgICAgIHN3aXRjaCggJGZpZWxkX3R5cGVbJGldKQoJCQl7CgkJCWNhc2UgJ2ludCc6CgkJCSAgJHR4dCAuPSAkcm93WyRpXTsKCQkJICBicmVhazsKCQkJY2FzZSAnc3RyaW5nJzoKCQkJY2FzZSAnYmxvYicgOgoJCQlkZWZhdWx0OgoJCQkgICR0eHQgLj0gIiciLm15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygkcm93WyRpXSkuIiciOwoJCQkJCQkJCQoJCQl9CgkJICAgIH0KCQkgIGlmKCAkaSA8ICRudW1fZmllbGRzLTEpCgkJICAgICR0eHQgLj0gIiwiOwoJCX0KCSAgICAgICR0eHQgLj0gIikiOwoJCQkJCgkgICAgICBpZiggJGluZGV4IDwgJG51bV9yb3dzLTEpCgkJJHR4dCAuPSAiLCI7CgkgICAgICBlbHNlCgkJJHR4dCAuPSAiOyI7CgkgICAgICAkdHh0IC49ICJcbiI7CgkJCQkKCSAgICAgICRpbmRleCsrOwoJICAgIH0KCX0KICAgIH0KICBteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKICAkdHh0IC49ICJcbiI7CiAgcmV0dXJuICR0eHQ7Cn0KCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/scripts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/scripts/getcwd.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgovLyBTaW1wbGUgZW5vdWdoIGVoCmVjaG8gIlNVQ0NFU1M6Ii5nZXRjd2QoKTsKCi8vIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/scripts/mysql.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgppZiggIWlzc2V0KCRkYmhvc3RuYW1lKSApIGRpZSgnRkFJTDpubyBkYmhvc3RuYW1lJyk7CmlmKCAhaXNzZXQoJGRidXNlcm5hbWUpICkgZGllKCdGQUlMOm5vIGRidXNlcm5hbWUnKTsKaWYoICFpc3NldCgkZGJwYXNzd29yZCkgKSBkaWUoJ0ZBSUw6bm8gZGJwYXNzd29yZCcpOwppZiggIWlzc2V0KCRkYm5hbWUpICkgZGllKCdGQUlMOm5vIGRibmFtZScpOwoKJGRiaGFuZGxlID0gbXlzcWxfY29ubmVjdCgkZGJob3N0bmFtZSwkZGJ1c2VybmFtZSwkZGJwYXNzd29yZCk7CmlmKCAhJGRiaGFuZGxlICkKICB7CiAgICBkaWUoJ0ZBSUw6Q291bGQgbm90IGNvbm5lY3QnKTsKICB9CgokcmVzdWx0ID0gbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkZGJoYW5kbGUgKTsKaWYoICEkcmVzdWx0ICkKICB7CiAgICBteXNxbF9jbG9zZSgkZGJoYW5kbGUpOwogICAgZGllKCdGQUlMOlNlbGVjdCBEYXRhYmFzZSBmYWlsZWQnKTsKICB9Cgokc3FsID0gIlNIT1cgVEFCTEVTIEZST00gJGRibmFtZSI7CiRyZXN1bHQgPSBteXNxbF9xdWVyeSggJHNxbCwgJGRiaGFuZGxlICk7CmlmKCAhJHJlc3VsdCApCiAgewogICAgbXlzcWxfY2xvc2UoJGRiaGFuZGxlKTsKICAgIGRpZSgnRkFJTDpTSE9XIFRBQkxFUyBGYWlsZWQnKTsKICB9CgoKJGNvdW50ID0gMDsKd2hpbGUoICRyb3cgPSBteXNxbF9mZXRjaF9yb3coJHJlc3VsdCkgKQogIHsKICAgIHByaW50X3IoICRyb3cgKTsgZWNobyAnPGJyLz4nOwogICAgKyskY291bnQ7CiAgfQpteXNxbF9mcmVlX3Jlc3VsdCgkcmVzdWx0KTsKbXlzcWxfY2xvc2UoJGRiaGFuZGxlKTsKZWNobyAiU1VDQ0VTUzpDb3VudGVkICRjb3VudCB0YWJsZXMiOwoKLy8gRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/scripts/mysqlrestore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRmaWxlbmFtZSA9ICcuLi91cGxvYWRzL3NpdGVwdXNoZXIuc3FsJzsKaWYoIGlzc2V0KCAkX0dFVFsnZmlsZSddICkgKQogIHsKICAgICRmaWxlbmFtZSA9IHRyaW0oJF9HRVRbJ2ZpbGUnXSk7CiAgfQoKZnVuY3Rpb24gZXJyb3IoJG1lc3NhZ2UpCnsKICBkaWUoIkVSUk9SOiRtZXNzYWdlIik7Cn0KCmlmKCAhaXNzZXQoJGRiaG9zdG5hbWUpICkgZXJyb3IoJ25vIGRiaG9zdG5hbWUnKTsKaWYoICFpc3NldCgkZGJ1c2VybmFtZSkgKSBlcnJvcignbm8gZGJ1c2VybmFtZScpOwppZiggIWlzc2V0KCRkYnBhc3N3b3JkKSApIGVycm9yKCdubyBkYnBhc3N3b3JkJyk7CmlmKCAhaXNzZXQoJGRibmFtZSkgKSBlcnJvcignbm8gZGJuYW1lJyk7CgovLwovLyBDaGVjayBpZiB0aGUgZmlsZSBleGlzdHMKLy8KaWYoICFpc19maWxlKCRmaWxlbmFtZSkgfHwgIWlzX3JlYWRhYmxlKCRmaWxlbmFtZSkgKQogIHsKICAgIGVycm9yKCdDb3VsZCBub3QgZmluZCBmaWxlJyk7CiAgfQoKLy8KLy8gQ29ubmVjdCB0byB0aGUgZGF0YWJhc2UKLy8KJGRiaGFuZGxlID0gbXlzcWxfY29ubmVjdCgkZGJob3N0bmFtZSwkZGJ1c2VybmFtZSwkZGJwYXNzd29yZCk7CmlmKCAhJGRiaGFuZGxlICkKICB7CiAgICBlcnJvcignQ291bGQgbm90IGNvbm5lY3QnKTsKICB9CgokcmVzdWx0ID0gbXlzcWxfc2VsZWN0X2RiKCAkZGJuYW1lLCAkZGJoYW5kbGUgKTsKaWYoICEkcmVzdWx0ICkKICB7CiAgICBteXNxbF9jbG9zZSgkZGJoYW5kbGUpOwogICAgZXJyb3IoJ1NlbGVjdCBEYXRhYmFzZSBmYWlsZWQnKTsKICB9CgokZmggPSBmb3BlbiggJGZpbGVuYW1lLCAiciIgKTsKaWYoICEkZmggKSBlcnJvcignQ291bGQgbm90IG9wZW4gZmlsZScpOwoKJGxpbmVjb3VudCA9IDA7CiRjb21tYW5kY291bnQgPSAwOwokZXJyb3Jjb3VudCA9IDA7CiRjb21tYW5kID0gJyc7CndoaWxlKCAhZmVvZiggJGZoICkgKQogIHsKICAgIC8vIHJlYWQgaW4gYSBsaW5lCiAgICAkbGluZSA9IGZnZXRzKCRmaCk7CiAgICArKyRsaW5lY291bnQ7CgogICAgLy8gdHJpbSB3aGl0ZXNwYWNlCiAgICAkbGluZSA9IHRyaW0oJGxpbmUpOwoKICAgIC8vIGFkZCBpdCB0byB0aGUgY29tbWFuZAogICAgJGNvbW1hbmQgLj0gJGxpbmUuIlxuIjsKCiAgICAvLyBjaGVjayBmb3IgYSA7IGF0IHRoZSBlbmQgb2YgbGluZQogICAgLy8gdG8gc2lnbmlmeSB0aGUgZW5kIG9mIHRoZSBjb21tYW5kCiAgICBpZiggc3Vic3RyKCAkbGluZSwgLTEgKSAhPSAnOycgKQogICAgICB7Cgljb250aW51ZTsKICAgICAgfQoKICAgIC8vIGhlcmUgd2UncmUgcHJvY2Vzc2luZyBhIGNvbW1hbmQKICAgICRkYnJlc3VsdCA9IG15c3FsX3F1ZXJ5KCAkY29tbWFuZCwgJGRiaGFuZGxlICk7CiAgICBpZiggJGRicmVzdWx0ID09PSBGQUxTRSApCiAgICAgIHsKCSsrJGVycm9yY291bnQ7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJKyskY29tbWFuZGNvdW50OwogICAgICB9CiAgICAkY29tbWFuZCA9ICcnOwogIH0KZmNsb3NlKCRmaCk7Cm15c3FsX2Nsb3NlKCRkYmhhbmRsZSk7CgplY2hvICJTVUNDRVNTOiRsaW5lY291bnQgbGluZXMgcHJvY2Vzc2VkLCAkY29tbWFuZGNvdW50IGNvbW1hbmRzIGV4ZWN1dGVkIjsKPz4K]]></data>
	</file>
	<file>
	  <filename>/SitePusher.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgpjbGFzcyBTaXRlUHVzaGVyIGV4dGVuZHMgQ01TTW9kdWxlCnsKICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ1NpdGVQdXNoZXInOwogIH0KCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCiAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKQogIHsKICAgIHJldHVybiBmYWxzZTsKICB9CgogIGZ1bmN0aW9uIEhhc0FkbWluKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBTaXRlUHVzaGVyJykgfHwKICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICB9CgogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMC4xJzsKICB9CgogIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gJzEuMS4xJzsKICB9CgogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb24nKTsKICB9CgogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdzaXRlYWRtaW4nOwogIH0KCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpCiAgewogICAgLy8gdG9kbwogIH0KCiAgZnVuY3Rpb24gR2V0SGVscCgkbGFuZz0nZW5fVVMnKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwogIH0KCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICB7CiAgICByZXR1cm4gJ1JvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMCknOwogIH0KCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAncmNhbXBiZWxsQHNraW5ueWZpc2htZWRpYS5jb20nOwogIH0KCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwogIH0gCgoKICAvLwogIC8vIEdpdmVuIGEgbGlzdCBvZiBmaWxlcyBQVVQgdGhlbSBvbiB0aGUgZnRwIHNlcnZlcgogIC8vIHVzZSB0aGUgcHJlZmVyZW5jZXMgdG8gZXN0YWJsaXNoIGEgY29ubmVjdGlvbiB0byB0aGUKICAvLyBjb3JyZWN0IGxvY2F0aW9uCiAgLy8KICBmdW5jdGlvbiBmdHBfcHV0ZmlsZXMoICRmaWxlbGlzdCwgJG9yaWdfcm9vdF9wYXRoLCAmJGZpbGVzLCAmJGRpcmVjdG9yaWVzICkKICB7CiAgICAvLyBvcGVuIHRoZSBmdHAgY29ubmVjdGlvbgogICAgJGZ0cGhvc3QgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwaG9zdCcsJycpOwogICAgJGZ0cHVzZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwdXNlcicsJycpOwogICAgJGZ0cHBhc3N3b3JkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHBhc3N3b3JkJywnJyk7CiAgICAkZnRwcGF0aCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXRoJywnJyk7CiAgICAkZnRwY2htb2RfZmlsZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBjaG1vZF9maWxlJywnJyk7CiAgICAkZnRwY2htb2RfZGlyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cGNobW9kX2RpcicsJycpOwogICAgCiAgICAkY29ubl9pZCA9IEBmdHBfY29ubmVjdCgkZnRwaG9zdCk7CiAgICBpZiggJGNvbm5faWQgPT09IEZBbFNFICkKICAgICAgewoJJHRoaXMtPkFkZExvZ1RleHQoJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9jb3VsZG5vdGNvbm5lY3QnKSk7CiAgICAgIH0KICAgIGVsc2UgaWYoIEBmdHBfbG9naW4oICRjb25uX2lkLCAkZnRwdXNlciwgJGZ0cHBhc3N3b3JkICkgPT09IEZBTFNFICkKICAgICAgewoJQGZ0cF9jbG9zZSgkY29ubl9pZCk7CgkkdGhpcy0+QWRkTG9nVGV4dCgkdGhpcy0+TGFuZygnZXJyb3JfZnRwX2xvZ2luJykpOwoJcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICBlbHNlIGlmKCBAZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQogICAgICB7CglAZnRwX2Nsb3NlKCRjb25uX2lkKTsKCSR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfYmFkcGF0aCcpKTsKCXJldHVybiBmYWxzZTsKICAgICAgfQogICAgZWxzZSB7CiAgICAgIC8vIEJlZ2luIHByb2Nlc3NpbmcKICAgICAgJGZpbGVzID0gMDsKICAgICAgJGRpcmVjdG9yaWVzID0gMDsKICAgICAgZm9yZWFjaCggJGZpbGVsaXN0IGFzICRvbmVmaWxlICkKCXsKCSAgJG9uZWZpbGUgPSB0cmltKCRvbmVmaWxlKTsKCSAgJG9yaWdmaWxlID0gY21zX2pvaW5fcGF0aCgkb3JpZ19yb290X3BhdGgsJG9uZWZpbGUpOwoJICAKCSAgaWYoIGlzX2RpciggJG9yaWdmaWxlICkgKQoJICAgIHsKCSAgICAgIGlmKCAhQGZ0cF9ta2RpciggJGNvbm5faWQsICRvbmVmaWxlICkgKQoJCXsKCQkgICR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfbWtkaXInLCRvbmVmaWxlKSk7CgkJfQoJICAgICAgZWxzZSBpZiggIUBmdHBfY2htb2QoICRjb25uX2lkLCBvY3RkZWMoJGZ0cGNobW9kX2RpciksICRvbmVmaWxlICkgKQoJCXsKCQkgICR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfY2htb2QnLCRvbmVmaWxlKSk7CgkJfQoJICAgICAgZWxzZQoJCXsKCQkgICsrJGRpcmVjdG9yaWVzOwoJCX0KCSAgICB9CgkgIGVsc2UKCSAgICB7CgkgICAgICBpZiggIUBmdHBfcHV0KCAkY29ubl9pZCwgJG9uZWZpbGUsICRvcmlnZmlsZSwgRlRQX0JJTkFSWSApICkKCQl7CgkJICAkdGhpcy0+QWRkTG9nVGV4dCgkdGhpcy0+TGFuZygnZXJyb3JfZnRwX3B1dCcsJG9uZWZpbGUpKTsKCQl9CgkgICAgICBlbHNlIGlmKCAhQGZ0cF9jaG1vZCggJGNvbm5faWQsIG9jdGRlYygkZnRwY2htb2RfZmlsZSksICRvbmVmaWxlICkgKQoJCXsKCQkgICR0aGlzLT5BZGRMb2dUZXh0KCR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfY2htb2QnLCRvbmVmaWxlKSk7CgkJfQoJICAgICAgZWxzZQoJCXsKCQkgICsrJGZpbGVzOwoJCX0KCSAgICB9Cgl9CiAgICAgIAogICAgICAvLyBjbG9zZSB0aGUgZnRwIGNvbm5lY3Rpb24KICAgICAgQGZ0cF9jbG9zZSgkY29ubl9pZCk7CiAgICB9CgogICAgcmV0dXJuIHRydWU7CiAgfQoKCiAgZnVuY3Rpb24gYmFja3VwX2RhdGFiYXNlKCRkZXN0ZmlsZSkKICB7CiAgICByZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9teXNxbGR1bXAucGhwJyk7CiAgICAKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7CiAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgICRwYXJhbXNbJ3NxbF9kcm9wX3RhYmxlJ10gPSAxOwogICAgJHBhcmFtc1snc3FsX2NyZWF0ZV90YWJsZSddID0gMTsKICAgICRwYXJhbXNbJ3NxbF90YWJsZV9kYXRhJ10gPSAxOwogICAgJGRhdGEgPSBfbXlzcWxkdW1wKCRjb25maWdbJ2RiX25hbWUnXSwkcGFyYW1zKTsKCiAgICBmaWxlX3B1dF9jb250ZW50cyggJGRlc3RmaWxlLCAkZGF0YSApOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlX25ld19jb25maWcoJGRlc3RmaWxlKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7IC8vIGEgY29weSBub3QgYSByZWYKCgogICAgJHdlYnVybCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3ZWJ1cmwnLCcnKTsKICAgICRzZXJ2ZXJwYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NlcnZlcnBhdGgnLCcnKTsKICAgICRkYmhvc3QgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJob3N0JywnJyk7CiAgICAkZGJ1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RidXNlcicsJycpOwogICAgJGRicGFzc3dvcmQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJwYXNzd29yZCcsJycpOwogICAgJGRibmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYm5hbWUnLCcnKTsKCiAgICAkY29uZmlnWydkYl9ob3N0bmFtZSddID0gJGRiaG9zdDsKICAgICRjb25maWdbJ2RiX3VzZXJuYW1lJ10gPSAkZGJ1c2VyOwogICAgJGNvbmZpZ1snZGJfcGFzc3dvcmQnXSA9ICRkYnBhc3N3b3JkOwogICAgJGNvbmZpZ1snZGJfbmFtZSddID0gICAkZGJuYW1lOwogICAgJGNvbmZpZ1sncm9vdF91cmwnXSA9ICAgJHdlYnVybDsKICAgICRjb25maWdbJ3Jvb3RfcGF0aCddID0gJHNlcnZlcnBhdGg7CiAgICAkY29uZmlnWydwcmV2aWV3X3BhdGgnXSA9ICRzZXJ2ZXJwYXRoLicvdG1wL2NhY2hlJzsKICAgICRjb25maWdbJ3VwbG9hZHNfcGF0aCddID0gJHNlcnZlcnBhdGguJy91cGxvYWRzJzsKICAgICRjb25maWdbJ3VwbG9hZHNfdXJsJ10gPSAkd2VidXJsLicvdXBsb2Fkcyc7CiAgICAkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXSA9ICRzZXJ2ZXJwYXRoLicvdXBsb2Fkcy9pbWFnZXMnOwogICAgJGNvbmZpZ1snaW1hZ2VfdXBsb2Fkc191cmwnXSA9ICR3ZWJ1cmwuJy91cGxvYWRzL2ltYWdlcyc7CgogICAgJGZoID0gZm9wZW4oJGRlc3RmaWxlLCd3Jyk7CiAgICBpZiggJGZoICkKICAgICAgewoJZndyaXRlKCRmaCwgIjw/cGhwXG5cbiIpOwoJZndyaXRlKCRmaCwgY21zX2NvbmZpZ190ZXh0KCRjb25maWcpKTsKCWZ3cml0ZSgkZmgsICJcbj8+Iik7CglmY2xvc2UoJGZoKTsKICAgICAgfQogIH0KCgogIGZ1bmN0aW9uIGZ0cF9wdXRfZmlsZSggJHNyYywgJGRlc3QsICRwZXJtcyA9ICcwNjQ0JywgJGNvbm5faWQgPSAnJyApCiAgewogICAgJGZ0cGNobW9kX2ZpbGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwY2htb2RfZmlsZScsJycpOwogICAgJGZ0cGNobW9kX2RpciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBjaG1vZF9kaXInLCcnKTsKCiAgICAvLyBpZiB3ZSBkb24ndCBoYXZlIGEgY29ubmVjdGlvbiwgb3BlbiBvbmUuCiAgICAkY2FuX2Nsb3NlID0gZmFsc2U7CiAgICBpZiggJGNvbm5faWQgPT0gJycgKQogICAgICB7CgkkY2FuX2Nsb3NlID0gdHJ1ZTsKCSRmdHBob3N0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cGhvc3QnLCcnKTsKCSRmdHB1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHVzZXInLCcnKTsKCSRmdHBwYXNzd29yZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXNzd29yZCcsJycpOwoJJGZ0cHBhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwcGF0aCcsJycpOwoJCgkkY29ubl9pZCA9IEBmdHBfY29ubmVjdCgkZnRwaG9zdCk7CglpZiggJGNvbm5faWQgPT09IEZBbFNFICkKCSAgewoJICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX2NvdWxkbm90Y29ubmVjdCcpOwoJICB9CgllbHNlIGlmKCBAZnRwX2xvZ2luKCAkY29ubl9pZCwgJGZ0cHVzZXIsICRmdHBwYXNzd29yZCApID09PSBGQUxTRSApCgkgIHsKCSAgICBAZnRwX2Nsb3NlKCRjb25uX2lkKTsKCSAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9sb2dpbicpOwoJICB9CgllbHNlIGlmKCBAZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQoJICB7CgkgICAgQGZ0cF9jbG9zZSgkY29ubl9pZCk7CgkgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfYmFkcGF0aCcpOwoJICB9CiAgICAgIH0KCiAgICBpZiggIUBmdHBfcHV0KCAkY29ubl9pZCwgJGRlc3QsICRzcmMsIEZUUF9CSU5BUlkgKSApCiAgICAgIHsKCWlmKCAkY2FuX2Nsb3NlICkgQGZ0cF9jbG9zZSgkY29ubl9pZCk7CglyZXR1cm4gJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9wdXQnLCRkZXN0KTsKICAgICAgfQoKICAgIEBmdHBfY2htb2QoICRjb25uX2lkLCBvY3RkZWMoJGZ0cGNobW9kX2ZpbGUpLCAkZGVzdCApOwogICAgaWYoICRjYW5fY2xvc2UgKSBAZnRwX2Nsb3NlKCRjb25uX2lkKTsKICAgIHJldHVybjsKICB9CgoKICBmdW5jdGlvbiBmdHBfY3JlYXRlX3RtcF9zdHJ1Y3R1cmUoKQogIHsKICAgICRmdHBob3N0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cGhvc3QnLCcnKTsKICAgICRmdHB1c2VyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Z0cHVzZXInLCcnKTsKICAgICRmdHBwYXNzd29yZCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmdHBwYXNzd29yZCcsJycpOwogICAgJGZ0cHBhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZnRwcGF0aCcsJycpOwogICAgCiAgICAkY29ubl9pZCA9IEBmdHBfY29ubmVjdCgkZnRwaG9zdCk7CiAgICBpZiggJGNvbm5faWQgPT09IEZBbFNFICkKICAgICAgewoJcmV0dXJuICR0aGlzLT5MYW5nKCdlcnJvcl9mdHBfY291bGRub3Rjb25uZWN0Jyk7CiAgICAgIH0KICAgIGVsc2UgaWYoIEBmdHBfbG9naW4oICRjb25uX2lkLCAkZnRwdXNlciwgJGZ0cHBhc3N3b3JkICkgPT09IEZBTFNFICkKICAgICAgewoJQGZ0cF9jbG9zZSgkY29ubl9pZCk7CglyZXR1cm4gJHRoaXMtPkxhbmcoJ2Vycm9yX2Z0cF9sb2dpbicpOwogICAgICB9CiAgICBlbHNlIGlmKCBAZnRwX2NoZGlyKCAkY29ubl9pZCwgJGZ0cHBhdGggKSA9PT0gRkFMU0UgKQogICAgICB7CglAZnRwX2Nsb3NlKCRjb25uX2lkKTsKCXJldHVybiAkdGhpcy0+TGFuZygnZXJyb3JfZnRwX2JhZHBhdGgnKTsKICAgICAgfQogICAgCiAgICBAZnRwX21rZGlyKCAkY29ubl9pZCwgJ3RtcCcpOwogICAgQGZ0cF9jaG1vZCggJGNvbm5faWQsIDA3NzcsICd0bXAnKTsKICAgIEBmdHBfbWtkaXIoICRjb25uX2lkLCAndG1wL2NhY2hlJyk7CiAgICBAZnRwX2NobW9kKCAkY29ubl9pZCwgMDc3NywgJ3RtcC9jYWNoZScpOwogICAgQGZ0cF9ta2RpciggJGNvbm5faWQsICd0bXAvdGVtcGxhdGVzX2MnKTsKICAgIEBmdHBfY2htb2QoICRjb25uX2lkLCAwNzc3LCAndG1wL3RlbXBsYXRlc19jJyk7CiAgICBAZnRwX2Nsb3NlKCAkY29ubl9pZCApOwogICAgcmV0dXJuOwogIH0KCiAgZnVuY3Rpb24gY3JlYXRlX215c3FsaW1wb3J0X3NjcmlwdCggJGRlc3RmaWxlICkKICB7CiAgICAkZGJob3N0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RiaG9zdCcsJ2xvY2FsaG9zdCcpOwogICAgJGRidXNlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkYnVzZXInLCcnKTsKICAgICRkYnBhc3N3b3JkID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RicGFzc3dvcmQnLCcnKTsKICAgICRkYm5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGJuYW1lJywnJyk7CgogICAgZ2xvYmFsICRnQ21zOwogICAgJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7CiAgICAkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKICAgICRzbWFydHktPmFzc2lnbignZGJob3N0JywkZGJob3N0KTsKICAgICRzbWFydHktPmFzc2lnbignZGJ1c2VyJywkZGJ1c2VyKTsKICAgICRzbWFydHktPmFzc2lnbignZGJwYXNzd29yZCcsJGRicGFzc3dvcmQpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdkYm5hbWUnLCRkYm5hbWUpOwoKICAgIC8vIHByb2Nlc3MgdGhlIHRlbXBsYXRlCiAgICAkZGF0YSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ215c3FsX2hlYWRlci50cGwnKTsKICAgICRmaWxlID0gZmlsZV9nZXRfY29udGVudHMoY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwgCgkJCSAgICAnc2NyaXB0cycsICdteXNxbHJlc3RvcmUucGhwJykpOwogICAgJGRhdGEgPSAkZGF0YS4kZmlsZTsKICAgIGZpbGVfcHV0X2NvbnRlbnRzKCAkZGVzdGZpbGUsICRkYXRhICk7CiAgfQoKICBmdW5jdGlvbiBHZXRMb2dGaWxlTmFtZSgpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CiAgICAkcm9vdF9wYXRoID0gJGNvbmZpZ1sncm9vdF9wYXRoJ107CiAgICAkbG9nZmlsZSA9IGNtc19qb2luX3BhdGgoJHJvb3RfcGF0aCwndG1wJywnc2l0ZXB1c2hlcl9sb2cnKTsKICAgIHJldHVybiAkbG9nZmlsZTsKICB9CgogIGZ1bmN0aW9uIEFkZExvZ1RleHQoJHRleHQpCiAgewogICAgaWYoICR0ZXh0ID09ICcnICkgcmV0dXJuOwogICAgJHRleHQgPSAkdGV4dCAuICI8YnIvPlxuIjsKICAgICRmbiA9ICR0aGlzLT5HZXRMb2dGaWxlTmFtZSgpOwogICAgJGZoID0gZm9wZW4oJGZuLCdhJyk7CiAgICBmd3JpdGUoICRmaCwgJHRleHQgKTsKICAgIGZjbG9zZSggJGZoICk7CiAgfQp9IC8vIEVuZCBvZiBjbGFzcwoKIyB2aW06dHM9NCBzdz00IG5vZXQKPz4K]]></data>
	</file>
	<file>
	  <filename>/skeleton.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9jbXNtYWRlc2ltcGxlLnNmLm5ldAojCiNUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKI3RoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiNUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKI2J1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiNNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiNHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKI2Fsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiNGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCiMKIyRJZDokCgovLyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/mysql_header.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAkZGJuYW1lID0gJ3skZGJuYW1lfSc7CiAgJGRiaG9zdG5hbWUgPSAneyRkYmhvc3R9JzsKICAkZGJwYXNzd29yZCA9ICd7JGRicGFzc3dvcmR9JzsKICAkZGJ1c2VybmFtZSA9ICd7JGRidXNlcn0nOwo/PgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CiAgPGZpZWxkc2V0PgogIDxsZWdlbmQ+eyR0aXRsZV9udW1maWxlc308L2xlZ2VuZD4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgeyRpbmZvX251bWZpbGVzfQogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdmFsdWV9PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfbnVtZmlsZXN9PC9wPgogIDwvZGl2PgogIDwvZmllbGRzZXQ+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgogIDwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/progress.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIKICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KCjxoZWFkPgo8bWV0YSBuYW1lPSJHZW5lcmF0b3IiIGNvbnRlbnQ9IkNNUyBNYWRlIFNpbXBsZSAtIENvcHlyaWdodCAoQykgMjAwNC02IFRlZCBLdWxwLiBBbGwgcmlnaHRzIHJlc2VydmVkLiIgLz4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CjxtZXRhIG5hbWU9InJvYm90cyIgY29udGVudD0ibm9pbmRleCwgbm9mb2xsb3ciIC8+CntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CnZhciB4bWxodHRwCmZ1bmN0aW9uIG1ha2VfaHR0cF9yZXF1ZXN0KCkKewogIHhtbGh0dHA9bnVsbAoKICAvLyBjb2RlIGZvciBNb3ppbGxhLCBldGMuCiAgaWYgKHdpbmRvdy5YTUxIdHRwUmVxdWVzdCkKICB7CiAgICB4bWxodHRwPW5ldyBYTUxIdHRwUmVxdWVzdCgpCiAgfQogIC8vIGNvZGUgZm9yIElFCiAgZWxzZSBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpCiAgewogICAgeG1saHR0cD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKQogIH0KICBpZiggeG1saHR0cCA9PSBudWxsICkKICB7CiAgICAgYWxlcnQoJ1RoZSBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgeG1saHR0cCcpOwogIH0KICBlbHNlIAogIHsKICAgIHZhciB1cmwgPSBsb2NhdGlvbi5ocmVmICsgJyZtMV9kYXRhPTEnOwogICAgeG1saHR0cC5vbnJlYWR5c3RhdGVjaGFuZ2U9c3RhdGVfY2hhbmdlCiAgICB4bWxodHRwLm9wZW4oJ0dFVCcsdXJsLHRydWUpCiAgICB4bWxodHRwLnNlbmQobnVsbCkKICB9Cn0KCgpmdW5jdGlvbiB1cGRhdGVEaXYobmlkLCB0ZXh0KQp7CQogIGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCkKICAgIHsKICAgICAgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5pZCk7CiAgICAgIHguaW5uZXJIVE1MID0gdGV4dDsKICAgIH0KICBlbHNlIGlmIChkb2N1bWVudC5hbGwpCiAgICB7CiAgICAgIHggPSBkb2N1bWVudC5hbGxbbmlkXTsKICAgICAgeC5pbm5lckhUTUwgPSB0ZXh0OwogICAgfQogIGVsc2UgaWYgKGRvY3VtZW50LmxheWVycykKICAgIHsKICAgICAgeCA9IGRvY3VtZW50LmxheWVyc1tuaWRdOwogICAgICB4LmRvY3VtZW50Lm9wZW4oKTsKICAgICAgeC5kb2N1bWVudC53cml0ZSh0ZXh0KTsKICAgICAgeC5kb2N1bWVudC5jbG9zZSgpOwogICAgfQp9CgoKZnVuY3Rpb24gc3RhdGVfY2hhbmdlKCkKewogIC8vIGlmIHhtbGh0dHAgc2hvd3MgImxvYWRlZCIKICBpZiAoeG1saHR0cC5yZWFkeVN0YXRlPT00KQogIHsKICAgIC8vIGlmICJPSyIKICAgIGlmICh4bWxodHRwLnN0YXR1cz09MjAwKQogICAgewoJICBhbGVydCgnZ29vZCBzdGF0ZV9jaGFuZ2UnKQogICAgICAgIHVwZGF0ZURpdigncGFnZV9zdWJjb250ZW50Jyx4bWxodHRwLnJlc3BvbnNlVGV4dCkKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgYWxlcnQoIlByb2JsZW0gcmV0cmlldmluZyBYTUwgZGF0YSIpCiAgICB9CiAgfQp9CgovL21ha2VfaHR0cF9yZXF1ZXN0KCkKLy9zZXRJbnRlcnZhbCgnbWFrZV9odHRwX3JlcXVlc3QoKScsODAwMCkKCjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cjx0aXRsZT5Sb2JzIERldiBTZXJ2ZXIgLSBTaXRlJm5ic3A7UHVzaGVyPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic3R5bGUucGhwIiAvPgoKPC9oZWFkPgo8Ym9keT4KPGRpdj4KICA8cCBjbGFzcz0ibG9nb2NvbnRhaW5lciI+CiAgIDxpbWcgc3JjPSJ0aGVtZXMvZGVmYXVsdC9pbWFnZXMvbG9nby5naWYiIGFsdD0iIiAvPgogICA8c3BhbiBjbGFzcz0ibG9nb3RleHQiPntzaXRlbmFtZX0gLSB7JHRpdGxlfTwvc3Bhbj4KICA8L3A+CjwvZGl2PgoKPGRpdiBpZD0iTWFpbkNvbnRlbnQiPgogIDxkaXYgY2xhc3M9InBhZ2Vjb250YWluZXIiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPGRpdiBjbGFzcz0icGFnZWhlYWRlciI+CiAgICAgICAgeyR0aXRsZX0KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZmllbGRzZXQgaWQ9InBhZ2VfY29udGVudCI+CiAgICAgICA8bGVnZW5kPnskcHJvbXB0X3Byb2dyZXNzfTwvbGVnZW5kPgogICAgICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgeyRzdGVwdGV4dH0mbmJzcDt7JHN0ZXB9Jm5ic3A7eyRvZnRleHR9Jm5ic3A7eyRudW1zdGVwc308YnIvPgoJIHskbWVzc2FnZX0KICAgICAgIDwvZGl2Pgp7KiAgICAgICA8aWZyYW1lIHNyYz0iLi4vdG1wL3NpdGVwdXNoZXJfbG9nIiB3aWR0aD0iMTAwJSIgc2Nyb2xsaW5nPSJhdXRvIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+ICp9CiAgICA8L2ZpZWxkc2V0PgoKICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBuYW1lPSJjbG9zZSIgdmFsdWU9InskcHJvbXB0X2Nsb3NlfSIgb25jbGljaz0id2luZG93LmNsb3NlKCkiPgogICAgICA8L3A+CiAgICA8L2Rpdj4KCiAgPC9kaXY+PCEtLSBlbmQgcGFnZWNvbnRhaW5lciAtLT4KPC9kaXY+PCEtLSBlbmQgbWFpbmNvbnRlbnQgLS0+CjwvYm9keT4KPC9odG1sPg==]]></data>
	</file>
	<file>
	  <filename>/templates/push.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgIC5hbGVydCB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2IwMDsgfQo8L3N0eWxlPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZ2V0UGFyZW50Rm9ybU5hbWUoZWxlbWVudCkKewogIHZhciB0YWduYW1lID0gJ2Zvcm0nOwogIHZhciBwYTsKICB3aGlsZSgoZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZSkgJiYgIXBhKQogIHsKICAgIGlmKCBlbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PSB0YWduYW1lKQogICAgewogICAgICBwYSA9IGVsZW1lbnQ7CiAgICB9CiAgfQoKICBpZiggcGEgKSAKICAgIHsKICAgICAgcmV0dXJuIHBhLm5hbWU7CiAgICB9CiAgZWxzZQogICAgewogICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7CiAgICB9Cn0KCmZ1bmN0aW9uIHN1Ym1pdF9jbGlja2VkKGVsZW0sdXJsKQp7CiAgd2luZG93Lm9wZW4odXJsLCJwcm9ncmVzcyIsInN0YXR1cz0wLHRvb2xiYXI9MCxsb2NhdGlvbj0wLG1lbnViYXI9MCxkaXJlY3Rvcmllcz0wLHJlc2l6YWJsZT0wLHNjcm9sbGJhcnM9MCxoZWlnaHQ9MjUwLHdpZHRoPTQ1MCIpOwovLyAgdmFyIHRoZWZvcm0gPSBnZXRQYXJlbnRGb3JtTmFtZShlbGVtKTsKLy8gIHRoZWZvcm0uc3VibWl0KCk7CQp9Cgo8L3NjcmlwdD4Key9saXRlcmFsfQoKe2lmIGlzc2V0KCRlcnJvcil9CiAge2Fzc2lnbiB2YXI9J2FsZXJ0Y2xhc3MnIHZhbHVlPSdhbGVydCd9CnsvaWZ9Cgp7aWYgaXNzZXQoJG1lc3NhZ2UpfQogIDxwIGNsYXNzPSJwYWdlb3ZlcmZsb3cgeyRhbGVydGNsYXNzfSI+CiAgICB7JG1lc3NhZ2V9CiAgPC9wPgp7L2lmfQoKeyRmb3Jtc3RhcnR9eyRoaWRkZW59CiAgIDxmaWVsZHNldD4KICAgPGxlZ2VuZD57JHRpdGxlX3B1c2h9PC9sZWdlbmQ+CiAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgeyRpbmZvX3B1c2h9CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRidXR0b25fcHVzaH08L3A+CiAgIDwvZGl2PgogICA8L2ZpZWxkc2V0Pgp7JGZvcm1lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/remote.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CiAgPGZpZWxkc2V0PgogICA8bGVnZW5kPnskdGl0bGVfZnRwaW5mb308L2xlZ2VuZD4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2Z0cGhvc3R9PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZnRwaG9zdH08L3A+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZnRwdXNlcn08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mdHB1c2VyfTwvcD4KICAgPC9kaXY+CiAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9mdHBwYXNzd29yZH08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mdHBwYXNzd29yZH08L3A+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZnRwcGF0aH08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mdHBwYXRofTwvcD4KICAgPC9kaXY+CiAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9mdHBjaG1vZF9maWxlfTwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Z0cGNobW9kX2ZpbGV9PC9wPgogICA8L2Rpdj4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2Z0cGNobW9kX2Rpcn08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mdHBjaG1vZF9kaXJ9PC9wPgogICA8L2Rpdj4KICA8L2ZpZWxkc2V0PgoKICA8ZmllbGRzZXQ+CiAgIDxsZWdlbmQ+eyR0aXRsZV93ZWJpbmZvfTwvbGVnZW5kPgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfd2VidXJsfTwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3dlYnVybH08L3A+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfc2VydmVycGF0aH08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zZXJ2ZXJwYXRofTwvcD4KICAgPC9kaXY+CiAgPC9maWVsZHNldD4KCiAgPGZpZWxkc2V0PgogICA8bGVnZW5kPnskdGl0bGVfZGJpbmZvfTwvbGVnZW5kPgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGJob3N0fTwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RiaG9zdH08L3A+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGJ1c2VyfTwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RidXNlcn08L3A+CiAgIDwvZGl2PgogICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZGJwYXNzd29yZH08L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kYnBhc3N3b3JkfTwvcD4KICAgPC9kaXY+CiAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9kYm5hbWV9PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGJuYW1lfTwvcD4KICAgPC9kaXY+CiAgPC9maWVsZHNldD4KCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgogIDwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/tests.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAgIC5hbGVydCB7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2IwMDsgfQo8L3N0eWxlPgp7L2xpdGVyYWx9Cgp7aWYgaXNzZXQoJGVycm9yKX0KICB7YXNzaWduIHZhcj0nYWxlcnRjbGFzcycgdmFsdWU9J2FsZXJ0J30Key9pZn0KCntpZiBpc3NldCgkbWVzc2FnZSl9CiAgPHAgY2xhc3M9InBhZ2VvdmVyZmxvdyB7JGFsZXJ0Y2xhc3N9Ij4KICAgIHskbWVzc2FnZX0KICA8L3A+CnsvaWZ9Cgp7JGZvcm1zdGFydH0KICAgPGZpZWxkc2V0PgogICA8bGVnZW5kPnskdGl0bGVfdGVzdGZ0cH08L2xlZ2VuZD4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICB7JGluZm9fdGVzdGZ0cH0KICAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJ1dHRvbl90ZXN0ZnRwfTwvcD4KICAgPC9kaXY+CiAgIDwvZmllbGRzZXQ+CgogICA8YnIvPgogICA8ZmllbGRzZXQ+CiAgIDxsZWdlbmQ+eyR0aXRsZV90ZXN0aHR0cH08L2xlZ2VuZD4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICB7JGluZm9fdGVzdGh0dHB9CiAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRidXR0b25fdGVzdGh0dHB9PC9wPgogICA8L2Rpdj4KICAgPC9maWVsZHNldD4KCiAgIDxici8+CiAgIDxmaWVsZHNldD4KICAgPGxlZ2VuZD57JHRpdGxlX3Rlc3RteXNxbH08L2xlZ2VuZD4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICB7JGluZm9fdGVzdG15c3FsfQogICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYnV0dG9uX3Rlc3RteXNxbH08L3A+CiAgIDwvZGl2PgogICA8L2ZpZWxkc2V0PgoKICAgPGJyLz4KICAgPGZpZWxkc2V0PgogICA8bGVnZW5kPnskdGl0bGVfY2xlYW51cH08L2xlZ2VuZD4KICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICB7JGluZm9fY2xlYW51cH0KICAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJ1dHRvbl9jbGVhbnVwfTwvcD4KICAgPC9kaXY+CiAgIDwvZmllbGRzZXQ+CnskZm9ybWVuZH0=]]></data>
	</file>
</module>
