<?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>CGExtensions</name>
	<version>1.3</version>
  <mincmsversion>1.2</mincmsversion>
	<help>PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIG1lcmVseSBwcm92aWRlcyBjb252ZW5pZW5jZSBhcGkncyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+CjxoMz5TbWFydHkgQWRkb25zPC9oMz4KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4KPHVsPgo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbgo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4KPC9wPgo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAnZXJyb3JjbGFzcycgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4KPC9wPgo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPgo8L3VsPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dApvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA3LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20iPiZsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGhvdG1haWwuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMzxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPgo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+CjxsaT5WZXJzaW9uIDEuMi4gICBOb3ZlbWJlciAgMjAwNywgIEFkZHMgbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPgo8bGk+VmVyc2lvbiAxLjMuICAgTm92ZW1iZXIgIDIwMDcuICBBZGRzIGV2ZW4gbW9yZSBjb252ZW5pZW5jZSBmdW5jdGlvbnM8L2xpPgo8L3VsPjxiciAvPg==</about>
	<description>This module is a library of php classes used to build advanced forms</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0KCk7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSkgcmV0dXJuIGZhbHNlOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSApCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Vycm9yX3RlbXBsYXRlJ10gKSApCiAgICAgICR0aGlzLT5TZXRFcnJvclRlbXBsYXRlKHRyaW0oJHBhcmFtc1snZXJyb3JfdGVtcGxhdGUnXSkpOwoKICB9CmVsc2UgaWYoIGlzc2V0KCRwYXJhbXNbJ3Jlc2V0dG9mYWN0b3J5J10pICkKICB7CiAgICAkdGhpcy0+UmVzZXRFcnJvclRlbXBsYXRlKCk7CiAgfQoKJGVycm9yX3RlbXBsYXRlID0gJHRoaXMtPkdldEVycm9yVGVtcGxhdGUoKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0JywkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXNldCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXR0b2ZhY3RvcnknLAoJCQkJCQkgJHRoaXMtPkxhbmcoJ3Jlc2V0dG9mYWN0b3J5JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdGVtcGxhdGUnLCR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wbGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZScsCgkJJHRoaXMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwKCQkJCSAgICAgICRlcnJvcl90ZW1wbGF0ZSwnZXJyb3JfdGVtcGxhdGUnKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wYW5lbC50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewogICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCiAgICByZXR1cm47CiAgfQoKaWYoICFpc3NldCggJHBhcmFtc1snbW9kbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQokbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRwYXJhbXNbJ21vZG5hbWUnXSk7CmlmKCAhJG1vZHVsZSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKaWYoICEoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkpICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkLCAkcGFyYW1zWydjZ19hY3RpdmV0YWInXSk7CiAgICByZXR1cm47CiAgfQoKJG1vZHVsZS0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7CiRtb2R1bGUtPlJlZGlyZWN0VG9UYWIoJGlkLCR0aGlzLT5fY3VycmVudF90YWIsJycsJHBhcmFtcyk7CgoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_addtemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICEkZ0NtcyApIGV4aXQoKTsKCmlmKCAhICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewogICAgLy8gdG9kbywgcGVybWlzc2lvbnMgbWVzc2FnZSBoZXJlCiAgICByZXR1cm47CiAgfQoKaWYoICFpc3NldCggJHBhcmFtc1snbW9kbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQokbW9kdWxlID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCRwYXJhbXNbJ21vZG5hbWUnXSk7CmlmKCAhJG1vZHVsZSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2NnX2FjdGl2ZXRhYiddICkgJiYgJHBhcmFtc1snY2dfYWN0aXZldGFiJ10gIT0gJycgKQogICAgICB7CgkkbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwgJHBhcmFtc1snY2dfYWN0aXZldGFiJ10pOwogICAgICB9CiAgICAkbW9kdWxlLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicpOwogIH0KCgokdGVtcGxhdGUgPSAiIjsKaWYoIGlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkgKQogIHsKICAgICR0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgfQogIAokcHJlZml4ID0gIiI7CmlmKCBpc3NldCggJHBhcmFtc1sncHJlZml4J10gKSApCiAgewogICAgJHByZWZpeCA9IHRyaW0oJHBhcmFtc1sncHJlZml4J10pOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgppZiggJHRlbXBsYXRlID09ICIiIHx8ICRwcmVmaXggPT0gIiIgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgoKJG5ld3RlbXBsYXRlID0gJHByZWZpeCAuICR0ZW1wbGF0ZTsKCi8vIGNoZWNrIGlmIHRoaXMgdGVtcGxhdGUgYWxyZWFkeSBleGlzdHMKJHR4dCA9IHRyaW0oJG1vZHVsZS0+R2V0VGVtcGxhdGUoJG5ld3RlbXBsYXRlKSk7CmlmKCAkdHh0ICE9ICIiICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl90ZW1wbGF0ZW5hbWVleGlzdHMnKTsKICAgICRtb2R1bGUtPlJlZGlyZWN0KCRpZCwkcGFyYW1zWydvcmlnYWN0aW9uJ10sJycsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKLy8gd2UncmUgcmVhZHkgdG8gc2V0IGl0CiR0eHQgPSBodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10sRU5UX1FVT1RFUyxnZXRfZW5jb2RpbmcoKSk7CiRtb2R1bGUtPlNldFRlbXBsYXRlKCRuZXd0ZW1wbGF0ZSwkdHh0KTsKCmlmKCAkdGhpcy0+X2N1cnJlbnRfdGFiICE9ICcnICkKICB7CiAgICAkbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwgJHRoaXMtPl9jdXJyZW50X3RhYiApOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.do_edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFF1ZXN0aW9ucyAtIGEgc2ltcGxlIFF1ZXN0aW9ucyAmIEFuc3dlciBtb2R1bGUKIyBWZXJzaW9uOiAxLjAsIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAaG90bWFpbC5jb20+CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7CgppZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkcGFyYW1zWydtb2RuYW1lJ10pOwppZiggISRtb2R1bGUgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKaWYoIGlzc2V0KCAkcGFyYW1zWydjYW5jZWwnXSApICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2NnX2FjdGl2ZXRhYiddICkgJiYgJHBhcmFtc1snY2dfYWN0aXZldGFiJ10gIT0gJycgKQogICAgICB7CgkkbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwgJHBhcmFtc1snY2dfYWN0aXZldGFiJ10pOwogICAgICB9CiAgICAkbW9kdWxlLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicpOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlY29udGVudCddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CgppZiggIWlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCRwYXJhbXNbJ29yaWdhY3Rpb24nXSwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlNldFRlbXBsYXRlKCAkcGFyYW1zWydwcmVmaXgnXS4kcGFyYW1zWyd0ZW1wbGF0ZSddLCAKCQkgICAgICBodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1sndGVtcGxhdGVjb250ZW50J10sRU5UX1FVT1RFUyxnZXRfZW5jb2RpbmcoKSkpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ2FwcGx5YnV0dG9uJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCdlZGl0dGVtcGxhdGUnLCRyZXR1cm5pZCwkcGFyYW1zKTsKICB9CgokbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwgJHRoaXMtPl9jdXJyZW50X3RhYik7CiRtb2R1bGUtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhJGdDbXMgKSBleGl0KCk7CgppZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9ICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkcGFyYW1zWydtb2RuYW1lJ10pOwppZiggISRtb2R1bGUgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKCi8vIGNoZWNrIGlmIHdlIGhhdmUgYSB0ZW1wbGF0ZSBuYW1lCmlmKCAhKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ3ByZWZpeCddKSkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nLCcnLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KaWYoICFpc3NldCgkcGFyYW1zWydtb2RlJ10pIHx8ICFpc3NldCgkcGFyYW1zWyd0aXRsZSddKSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkbW9kdWxlLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsJHBhcmFtcyk7CiAgICByZXR1cm47CiAgfQoKLy8gaGFuZGxlIGVycm9ycy4KaWYoIGlzc2V0KCRwYXJhbXNbJ2Vycm9ycyddKSApCiAgewogICAgZWNobyAkbW9kdWxlLT5TaG93RXJyb3JzKCRwYXJhbXNbJ2Vycm9ycyddKTsKICB9CgoKJHBhcmFtc1snb3JpZ2FjdGlvbiddID0gJHBhcmFtc1snYWN0aW9uJ107CiRjb250ZW50cyA9ICIiOwppZiggJHBhcmFtc1snbW9kZSddID09ICdhZGQnICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2FkZHRlbXBsYXRlJywkcmV0dXJuaWQsJ3Bvc3QnLCcnLAoJCQkJCSAgICBmYWxzZSwgJycsICRwYXJhbXMpKTsKICAgICRzbWFydHktPmFzc2lnbigndGVtcGxhdGVuYW1lJywKCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndGVtcGxhdGUnLCAiIiwgNDAgKSk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsCgkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdwcmVmaXgnLCAkcGFyYW1zWydwcmVmaXgnXSkuCgkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdjZ19hY3RpdmV0YWInLAoJCQkJCSAgICAgJHRoaXMtPl9jdXJyZW50X3RhYikpOwogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2RlZmF1bHR0ZW1wbGF0ZXByZWYnXSkgJiYgJHBhcmFtc1snZGVmYXVsdHRlbXBsYXRlcHJlZiddICE9ICcnICkKICAgICAgewoJJGNvbnRlbnRzID0gJG1vZHVsZS0+R2V0UHJlZmVyZW5jZSgkcGFyYW1zWydkZWZhdWx0dGVtcGxhdGVwcmVmJ10pOwogICAgICB9CiAgfQogZWxzZSAKICAgewogICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkgICAgICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQgKCRpZCwgJ2RvX2VkaXR0ZW1wbGF0ZScsJHJldHVybmlkLCdwb3N0JywnJywKCQkJCQkJICAgIGZhbHNlLCAnJywgJHBhcmFtcykpOwogICAgICRzbWFydHktPmFzc2lnbigndGVtcGxhdGVuYW1lJywkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKICAgICAkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsCgkJICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAndGVtcGxhdGUnLCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkuCgkJICAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnY2dfYWN0aXZldGFiJywKCQkJCQkgICAgICAkdGhpcy0+X2N1cnJlbnRfdGFiKSk7CiAgICAgJGNvbnRlbnRzID0gJG1vZHVsZS0+R2V0VGVtcGxhdGUoJHBhcmFtc1sncHJlZml4J10uJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgICAgJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdhcHBseWJ1dHRvbicsCgkJCQkJCSAgICR0aGlzLT5MYW5nKCdhcHBseScpKSk7CiAgIH0KCiRzbWFydHktPmFzc2lnbigndGl0bGUnLCRwYXJhbXNbJ3RpdGxlJ10pOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZW5hbWUnLCR0aGlzLT5MYW5nKCdwcm9tcHRfdGVtcGxhdGVuYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90ZW1wbGF0ZScsJHRoaXMtPkxhbmcoJ3Byb21wdF90ZW1wbGF0ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZScsCgkJJHRoaXMtPkNyZWF0ZVRleHRBcmVhIChmYWxzZSwgJGlkLAoJCQkJICAgICAgICRjb250ZW50cywgJ3RlbXBsYXRlY29udGVudCcsICcnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ3N1Ym1pdGJ1dHRvbicsCgkJCQkJCSAgICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdjYW5jZWwnLCAKCQkJCQkJICAgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlLnRwbCcpOwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.makedefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFF1ZXN0aW9ucyAtIGEgc2ltcGxlIFF1ZXN0aW9ucyAmIEFuc3dlciBtb2R1bGUKIyBWZXJzaW9uOiAxLjAsIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAaG90bWFpbC5jb20+CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmlmKCAhaXNzZXQoICRnQ21zICkgKSBleGl0KCk7CgppZiggISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIC8vIHRvZG8sIHBlcm1pc3Npb25zIG1lc3NhZ2UgaGVyZQogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ21vZG5hbWUnXSApICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KJG1vZHVsZSA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJHBhcmFtc1snbW9kbmFtZSddKTsKaWYoICEkbW9kdWxlICkKICB7CiAgICAkcGFyYW1zWydlcnJvcnMnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlJ10gKSApCiAgewogICAgJHBhcmFtc1snZXJyb3JzJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CiAgICAkbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwkdGhpcy0+X2N1cnJlbnRfdGFiLCcnLCRwYXJhbXMpOwogICAgcmV0dXJuOwogIH0KCmlmKCAhaXNzZXQoICRwYXJhbXNbJ2RlZmF1bHRwcmVmbmFtZSddICkgKQogIHsKICAgICRwYXJhbXNbJ2Vycm9ycyddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwogICAgJG1vZHVsZS0+UmVkaXJlY3RUb1RhYigkaWQsJHRoaXMtPl9jdXJyZW50X3RhYiwnJywkcGFyYW1zKTsKICAgIHJldHVybjsKICB9CiRtb2R1bGUtPlNldFByZWZlcmVuY2UoJHBhcmFtc1snZGVmYXVsdHByZWZuYW1lJ10sJHBhcmFtc1sndGVtcGxhdGUnXSk7CgokbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCwkdGhpcy0+X2N1cnJlbnRfdGFiKTsKLy8gRU9GCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.setdefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFVwbG9hZHMgLT0gYWxsb3cgdXNlcnMgdG8gdXBsb2FkIHN0dWZmLCBhIHBzZXVkbyBmaWxlIG1hbmFnZXIiIG1vZHVsZQojIEF1dGhvcjogUm9iZXJ0IENhbXBiZWxsIDxyb2JAdGVjaGNvbS5keW5kbnMub3JnPgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDoJLy93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgokdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJyk7IC8vRG9uJ3QgYWN0dWFsbHkgY2FyZS4gIEp1c3QgZm9yY2UgYSBsb2dpbi4KCmlmKCAhaXNzZXQoJHBhcmFtc1snZGVzdG1vZHVsZSddKSApCnsKICAgIHN0YWNrX3RyYWNlKCk7CiAgICBkaWUoJzxici8+RGVzdGluYXRpb24gbW9kdWxlIG5vdCBzZXQnKTsKfQokbW9kdWxlID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgkcGFyYW1zWydkZXN0bW9kdWxlJ10pOwppZiggIWlzX29iamVjdCgkbW9kdWxlKSApCnsKICAgIHN0YWNrX3RyYWNlKCk7CiAgICBkaWUoJzxici8+Q291bGQgbm90IGZpbmQgZGVzdGluYXRpb24gbW9kdWxlJyk7IAp9CgppZiggaXNzZXQoJHBhcmFtc1sncmVzZXR0b2RlZmF1bHQnXSkgJiYKICAgIGlzc2V0KCRwYXJhbXNbJ3ByZWZuYW1lJ10pICYmCiAgICBpc3NldCgkcGFyYW1zWydmaWxlbmFtZSddKSApCiAgewogICAgJGZuID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkuRElSRUNUT1JZX1NFUEFSQVRPUi4kbW9kdWxlLT5HZXROYW1lKCkuRElSRUNUT1JZX1NFUEFSQVRPUi4KICAgICAgJ3RlbXBsYXRlcycuRElSRUNUT1JZX1NFUEFSQVRPUi4kcGFyYW1zWydmaWxlbmFtZSddOwogICAgaWYoIGZpbGVfZXhpc3RzKCAkZm4gKSApCiAgICAgIHsKCSR0ZW1wbGF0ZSA9IEBmaWxlX2dldF9jb250ZW50cygkZm4pOwoJJG1vZHVsZS0+U2V0UHJlZmVyZW5jZSgkcGFyYW1zWydwcmVmbmFtZSddLCR0ZW1wbGF0ZSk7CiAgICAgIH0KICB9CiBlbHNlIGlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkgJiYKCSAgaXNzZXQoJHBhcmFtc1sncHJlZm5hbWUnXSkgKQogICB7CiAgICAgJG1vZHVsZS0+U2V0UHJlZmVyZW5jZSgkcGFyYW1zWydwcmVmbmFtZSddLCRwYXJhbXNbJ2lucHV0X3RlbXBsYXRlJ10pOwogICB9CgokbW9kdWxlLT5TZXRDdXJyZW50VGFiKCR0aGlzLT5fY3VycmVudF90YWIpOwokbW9kdWxlLT5SZWRpcmVjdFRvVGFiKCRpZCk7Ci8vaWYoIGlzc2V0KCAkcGFyYW1zWydhY3RpdmVfdGFiJ10gKSApCi8vICB7Ci8vICAgICRtb2R1bGUtPm15UmVkaXJlY3RUb1RhYigkaWQsJHBhcmFtc1snYWN0aXZlX3RhYiddKTsKLy8gICAgcmV0dXJuOwovLyAgfQovLyRtb2R1bGUtPm15UmVkaXJlY3QoJGlkLCdkZWZhdWx0YWRtaW4nKTsKCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/CGExtensions.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhY2xhc3NfZXhpc3RzKCdDR0V4dGVuc2lvbnMnKSApCiAgewoKCmNsYXNzIENHRXh0ZW5zaW9ucyBleHRlbmRzIENNU01vZHVsZQp7CiAgdmFyICRfaW1hZ2VfZGlyZWN0b3JpZXM7CiAgdmFyICRfY3VycmVudF90YWI7CiAgdmFyICRfZXJyb3Jtc2c7CiAgdmFyICRfcmV0dXJuaWQ7CgoKICAvKgogICAqIEEgc21hcnR5IGJsb2NrIHBsdWdpbiBmb3IgZGlzcGxheWluZyBhbiBlcnJvciB1c2luZwogICAqIGEgdGVtcGxhdGUuICBpLmUge2Vycm9yfWJsYWggYmxhaCBibGFoey9lcnJvcn0KICAgKgogICAqLwogIGZ1bmN0aW9uIGJsb2NrRGlzcGxheUVycm9yKCRwYXJhbXMsJGNvbnRlbnQsJiRzbWFydHksJHJlcGVhdCkKICB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkdHh0ID0gJyc7CiAgICBpZiggdHJpbSgkY29udGVudCkgIT0gJycgKQogICAgICB7CgkkZXJyb3JjbGFzcyA9ICdlcnJvcic7CglpZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yY2xhc3MnXSApICkKCSAgewoJICAgICRlcnJvcmNsYXNzID0gdHJpbSgkcGFyYW1zWydlcnJvcmNsYXNzJ10pOwoJICB9Cgkkb2JqID0mICRnQ21zLT5tb2R1bGVzWydDR0V4dGVuc2lvbnMnXVsnb2JqZWN0J107CgkkdHh0ID0gJG9iai0+RGlzcGxheUVycm9yTWVzc2FnZSgkY29udGVudCwkZXJyb3JjbGFzcyk7CiAgICAgIH0KICAgIAogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydhc3NpZ24nXSApICkKICAgICAgewoJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCR0eHQpOwoJcmV0dXJuICcnOwogICAgICB9CiAgICByZXR1cm4gJHR4dDsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBDb25zdHJ1Y3RvcjoKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBDR0V4dGVuc2lvbnMoKQogIHsKICAgIHBhcmVudDo6Q01TTW9kdWxlKCk7CiAgICAKICAgIGdsb2JhbCAkZ0NtczsKICAgICRzbWFydHkgPSYgJGdDbXMtPkdldFNtYXJ0eSgpOwoKICAgICRzbWFydHktPnJlZ2lzdGVyX2Jsb2NrKCdjZ2Vycm9yJywKCQkJICAgIGFycmF5KCdDR0V4dGVuc2lvbnMnLCdibG9ja0Rpc3BsYXlFcnJvcicpKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXROYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXROYW1lKCkKICB7CiAgICByZXR1cm4gJ0NHRXh0ZW5zaW9ucyc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0RnJpZW5kbHlOYW1lKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQoKCQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldFZlcnNpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogIHsKICAgIHJldHVybiAnMS4zJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRIZWxwKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRIZWxwKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3IoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEF1dGhvcigpCiAgewogICAgcmV0dXJuICdjYWxndXkxMDAwJzsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBdXRob3JFbWFpbCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMEBob3RtYWlsLmNvbSc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0Q2hhbmdlTG9nKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSXNQbHVnaW5Nb2R1bGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSGFzQWRtaW4oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEhhc0FkbWluKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRBZG1pblNlY3Rpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCiAgewogICAgcmV0dXJuICdleHRlbnNpb25zJzsgLy8gTmVlZGVkIGZvciB3aWtpIGhlbHAgbGluayB0byB3b3JrCiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIFZpc2libGVUb0FkbWluVXNlcigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXREZXBlbmRlbmNpZXMoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgcmV0dXJuIGFycmF5KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNaW5pbXVtQ01TVmVyc2lvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS4yIjsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwogIH0KCgogIC8qKioKICAgKiBBIG1ldGhvZCB0byB0ZXN0IGlmIGFuIGFycmF5IGVsZW1lbnQgZXhpc3RzIGJ5IHRlc3RpbmcKICAgKiBhIHN1YnNldCBvZiBpdCdzIGtleQogICAqCiAgICogQHBhcmFtIGFycmF5ICBUaGUgYXJyYXkgdG8gdGVzdAogICAqIEBwYXJhbSBzdHJpbmcgVGhlIHN1YnN0cmluZyBleHByZXNzaW9uIHRvIHRlc3QgZm9yCiAgICovCiAgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0c19zdWJzdHIoICRhcnIsICRleHByICkKICB7CiAgICAka2V5cyA9IGFycmF5X2tleXMoICRhcnIgKTsKICAgIGZvcmVhY2goICRrZXlzIGFzICRrICkKICAgICAgewoJaWYoIHN0cnN0ciggJGssICRleHByICkgKSByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KCgogIC8qKgogICAqIFRlc3QgaWYgYW4gYXJyYXkga2V5IGV4aXN0cywgZ2l2ZW4gYSByZWd1bGFyIGV4cHJlc3Npb24KICAgKgogICAqIEBwYXJhbSBhcnJheSAgVGhlIGFycmF5IHRvIHNlYXJjaAogICAqIEBwYXJhbSBzdHJpbmcgVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0byB1c2UgaW4gdGhlIHNlYXJjaAogICAqLwogIGZ1bmN0aW9uIGFycmF5X2ZpbmRfa2V5X3JlZ2V4cCggJGFyciwgJGV4cHIgKQogIHsKICAgICRrZXlzID0gYXJyYXlfa2V5cyggJGFyciApOwogICAgZm9yZWFjaCggJGtleXMgYXMgJGsgKQogICAgICB7CglpZiggcHJlZ19tYXRjaCggJGV4cHIsICRrICkgKSByZXR1cm4gJGs7CiAgICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CgoKCiAgLyoqCiAgICogTWVyZ2UgdHdvIGhhc2hlcwogICAqCiAgICogQHBhcmFtIGFycmF5ICBUaGUgYXJyYXkgdG8gc2VhcmNoCiAgICogQHBhcmFtIHN0cmluZyBUaGUgcmVndWxhciBleHByZXNzaW9uIHRvIHVzZSBpbiB0aGUgc2VhcmNoCiAgICovCiAgZnVuY3Rpb24gYXJyYXlfbWVyZ2VfYnlfbmFtZV9yZXF1aXJlZCggJGFycjEsICRhcnIyICkKICB7CiAgICAkeHhyZXN1bHQgPSBhcnJheSgpOwogICAgLy8gYWRkIGl0ZW1zIGNvbW1vbiB0byBhcnIxIGFuZCBhcnIyIAogICAgLy8gYnV0IGZhdm9yIHJlcXVpcmVkIGl0ZW1zCiAgICBpZiggIWlzX2FycmF5KCAkYXJyMSApIHx8ICFpc19hcnJheSggJGFycjIgKSApCiAgICAgIHsKCXJldHVybjsKICAgICAgfQogICAgZm9yZWFjaCggJGFycjEgYXMgJGExICkKICAgICAgewoJZm9yZWFjaCggJGFycjIgYXMgJGEyICkKCSAgewoJICAgIGlmKCAkYTFbJ25hbWUnXSA9PSAkYTJbJ25hbWUnXSApIAoJICAgICAgewoJCWlmKCAkYTFbJ3JlcXVpcmVkJ10gPT0gMiApIAoJCSAgewoJCSAgICBhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMSApOwoJCSAgICBicmVhazsKCQkgIH0KCQllbHNlIAoJCSAgewoJCSAgICBhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMiApOwoJCSAgICBicmVhazsKCQkgIH0KCSAgICAgIH0gICAgCgkgIH0KICAgICAgfQogIAogICAgLy8gYWRkIGl0ZW1zIGluIGFycjEgbm90IGluIHJlc3VsdAogICAgZm9yZWFjaCggJGFycjEgYXMgJGExICkKICAgICAgewoJJGZvdW5kID0gZmFsc2U7Cglmb3JlYWNoKCAkeHhyZXN1bHQgYXMgJHJlcyApCgkgIHsKCSAgICBpZiggJGExWyduYW1lJ10gPT0gJHJlc1snbmFtZSddICkKCSAgICAgIHsKCQkkZm91bmQgPSB0cnVlOwoJCWJyZWFrOwoJICAgICAgfQoJICB9CglpZiggISRmb3VuZCApCgkgIHsKCSAgICBhcnJheV9wdXNoKCAkeHhyZXN1bHQsICRhMSApOwoJICB9CiAgICAgIH0KICAKICAgIC8vIGFkZCBpdGVtcyBpbiBhcnIyIG5vdCBpbiByZXN1bHQKICAgIGZvcmVhY2goICRhcnIyIGFzICRhMiApCiAgICAgIHsKCSRmb3VuZCA9IGZhbHNlOwoJZm9yZWFjaCggJHh4cmVzdWx0IGFzICRyZXMgKQoJICB7CgkgICAgaWYoICRhMlsnbmFtZSddID09ICRyZXNbJ25hbWUnXSApCgkgICAgICB7CgkJJGZvdW5kID0gdHJ1ZTsKCQlicmVhazsKCSAgICAgIH0KCSAgfQoJaWYoICEkZm91bmQgKQoJICB7CgkgICAgYXJyYXlfcHVzaCggJHh4cmVzdWx0LCAkYTIgKTsKCSAgfQogICAgICB9CiAgICByZXR1cm4gJHh4cmVzdWx0OwogIH0KCgogIC8qCiAgICogQ29tcGFyZSB0d28gaGFzaGVzIGJ5IHRoZSBrZXkgJ3NvcnRfa2V5JwogICAqLwogIGZ1bmN0aW9uIGNvbXBhcmVfZWxlbWVudHNfYnlfc29ydG9yZGVyX2tleSggJGUxLCAkZTIgKQogIHsKICAgIGlmKCAkZTFbJ3NvcnRfa2V5J10gPCAkZTJbJ3NvcnRfa2V5J10gKQogICAgICB7CglyZXR1cm4gLTE7CiAgICAgIH0KICAgIGVsc2UgaWYoICRlMVsnc29ydF9rZXknXSA+ICRlMlsnc29ydF9rZXknXSApCiAgICAgIHsKCXJldHVybiAxOwogICAgICB9CiAgICByZXR1cm4gMDsKICB9CgoKICAvKgogICAqIEV4cGxvZGUgYW4gYXJyYXkgaW50byBhIGhhc2gKICAgKi8KICBmdW5jdGlvbiBleHBsb2RlX3dpdGhfa2V5KCRzdHIsICRpbmdsdWU9Jz0nLCAkb3V0Z2x1ZT0nJicpCiAgewogICAgJHJldCA9IGFycmF5KCk7CiAgICAkYTEgPSBzcGxpdCgkb3V0Z2x1ZSwkc3RyKTsKICAgIGZvcmVhY2goICRhMSBhcyAkYTIgKQogICAgICB7CglsaXN0KCAkaywgJHYgKSA9IHNwbGl0KCAkaW5nbHVlLCAkYTIgKTsKCSRyZXRbICRrIF0gPSAkdjsKICAgICAgfQogICAgcmV0dXJuICRyZXQ7CiAgfQoKCiAgLyoKICAgKiBGaW5kIHRoZSBpbmRleCB0aGF0IHN0b3JlcyBhIHZhbHVlIGluIGFuIGFycmF5CiAgICovCiAgZnVuY3Rpb24gZmluZF9pbmRleF9vZl92YWx1ZSggJGRhdGEsICR2YWx1ZSwgJGRmbHQgKQogIHsKICAgICRpID0gMDsKICAgIGZvcmVhY2goICRkYXRhIGFzICRrPT4kdiApCiAgICAgIHsKCWlmKCAkdiA9PSAkdmFsdWUgKQoJICB7CgkgICAgcmV0dXJuICRpOwoJICB9CgkkaSsrOwogICAgICB9CiAgICByZXR1cm4gJGRmbHQ7CiAgfQoKCiAgLyoKICAgKiBJbXBsb2RlIGEgaGFzaCBpbnRvIGFuIGFycmF5CiAgICovCiAgZnVuY3Rpb24gaW1wbG9kZV93aXRoX2tleSgkYXNzb2MsICRpbmdsdWUgPSAnPScsICRvdXRnbHVlID0gJyYnKQogIHsKICAgICRyZXR1cm4gPSBudWxsOwogICAgZm9yZWFjaCAoJGFzc29jIGFzICR0ayA9PiAkdHYpICRyZXR1cm4gLj0gJG91dGdsdWUuJHRrLiRpbmdsdWUuJHR2OwogICAgcmV0dXJuIHN1YnN0cigkcmV0dXJuLHN0cmxlbigkb3V0Z2x1ZSkpOwogIH0KCgogIC8qCiAgICogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBjcmVhdGUgYSB1cmwKICAgKi8KICBmdW5jdGlvbiBDcmVhdGVVUkwoJGlkLCRhY3Rpb24sJHJldHVybmlkLCRwYXJhbXM9YXJyYXkoKSwkaW5saW5lPWZhbHNlKQogIHsKICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJGFjdGlvbiwkcmV0dXJuaWQsJycsJHBhcmFtcywnJyx0cnVlLCRpbmxpbmUpOwogIH0KCgogIC8qCiAgICogQ3JlYXRlIGEgeWVzL25vIGRyb3Bkb3duCiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlSW5wdXRZZXNOb0Ryb3Bkb3duKCRpZCwkbmFtZSwkc2VsZWN0ZWR2YWx1ZT0nJywkYWRkdGV4dD0nJykKICB7CiAgICAkY2dleHRlbnNpb25zID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dFeHRlbnNpb25zJyk7CiAgICAkaXRlbXMgPSBhcnJheSgkY2dleHRlbnNpb25zLT5MYW5nKCd5ZXMnKT0+MSwKCQkgICAkY2dleHRlbnNpb25zLT5MYW5nKCdubycpPT4wKTsKICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJG5hbWUsJGl0ZW1zLC0xLCRzZWxlY3RlZHZhbHVlLCRhZGR0ZXh0KTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBhIGNoZWNrYm94CiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICRuYW1lLCAkdmFsdWU9JycsICRzZWxlY3RlZHZhbHVlPScnLCAKCQkJICAgICAgICRhZGR0dGV4dD0nJykKICB7CiAgICAkdGV4dCA9ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicuJGlkLiRuYW1lLiciIHZhbHVlPSInLiR2YWx1ZS4nIic7CiAgICAkYXJyID0gc3BsaXQoIiwiLCRzZWxlY3RlZHZhbHVlKTsKICAgIGZvcmVhY2goICRhcnIgYXMgJGEgKQogICAgICB7CglpZiAoJGEgPT0gJHZhbHVlKQoJICB7CgkgICAgJHRleHQgLj0gJyAnIC4gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKCSAgfQogICAgICB9CiAgICBpZiAoJGFkZHR0ZXh0ICE9ICcnKQogICAgICB7CgkkdGV4dCAuPSAnICcuJGFkZHR0ZXh0OwogICAgICB9CiAgICAkdGV4dCAuPSAiIC8+XG4iOwogICAgcmV0dXJuICR0ZXh0OwogIH0KCgogIC8qCiAgICogQSBDb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgZm9ybXMKICAgKi8KICBmdW5jdGlvbiBDR0NyZWF0ZUZvcm1TdGFydCgkaWQsJGFjdGlvbj0nZGVmYXVsdCcsJHJldHVybmlkPScnLCRwYXJhbXM9YXJyYXkoKSwkaW5saW5lPWZhbHNlLCRtZXRob2Q9J3Bvc3QnLCRlbmN0eXBlPScnLCRpZHN1ZmZpeD0nJywkZXh0cmE9JycpCiAgewogICAgcmV0dXJuICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCRhY3Rpb24sJHJldHVybmlkLCRtZXRob2QsJGVuY3R5cGUsJGlubGluZSwkaWRzdWZmaXgsJHBhcmFtcywkZXh0cmEpOwogIH0KCgogIC8qCiAgICogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBmcm9udGVuZCBmb3JtCiAgICovCiAgZnVuY3Rpb24gQ0dDcmVhdGVGcm9udGVuZEZvcm1TdGFydCgkaWQsJGFjdGlvbj0nZGVmYXVsdCcsJHJldHVybmlkPScnLCRwYXJhbXM9YXJyYXkoKSwkaW5saW5lPXRydWUsJG1ldGhvZD0ncG9zdCcsJGVuY3R5cGU9JycsJGlkc3VmZml4PScnLCRleHRyYT0nJykKICB7CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUZyb250ZW5kRm9ybVN0YXJ0KCRpZCwkcmV0dXJuaWQsJGFjdGlvbiwkbWV0aG9kLCRlbmN0eXBlLCRpbmxpbmUsJGlkc3VmZml4LCRwYXJhbXMsJGV4dHJhKTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIGNyZWF0aW5nIGEgaGlkZGVuIGZvcm0gZWxlbWVudAogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICRuYW1lLCAkdmFsdWU9JycsICRhZGR0ZXh0PScnLCAkZGVsaW09JywnKQogIHsKICAgIGlmKCBpc19hcnJheSggJHZhbHVlICkgKQogICAgICB7CgkkdmFsID0gaW1wbG9kZV93aXRoX2tleSggJHZhbHVlICk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHZhbCA9ICR2YWx1ZTsKICAgICAgfQogICAgJHZhbCA9IHN0cl9yZXBsYWNlKCciJywgJyZxdW90OycsICR2YWwpOwogICAgJHRleHQgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJy4kaWQuJG5hbWUuJyIgdmFsdWU9IicuJHZhbC4nIic7CiAgICBpZiAoJGFkZHRleHQgIT0gJycpCiAgICAgIHsKCSR0ZXh0IC49ICcgJy4kYWRkdGV4dDsKICAgICAgfQogICAgJHRleHQgLj0gIiAvPlxuIjsKICAgIHJldHVybiAkdGV4dDsKICB9CgoKICAvKgogICAqIEEgQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gcmVkaXJlY3QgdG8gYW4gYWRtaW4gdGFiIGluIHRoZQogICAqIGRlZmF1bHRhZG1pbiBhY3Rpb24KICAgKgogICAqIFNlZSBBbHNvOiAgU2V0Q3VycmVudFRhYgogICAqLwogIGZ1bmN0aW9uIFJlZGlyZWN0VG9UYWIoICRpZCwgJHRhYiA9ICcnLCAkcGFyYW1zID0gJycgKQogIHsKICAgICRwYXJtcyA9IGFycmF5KCk7CiAgICBpZiggaXNfYXJyYXkoICRwYXJhbXMgKSApCiAgICAgIHsKCSRwYXJtcyA9ICRwYXJhbXM7CiAgICAgIH0KICAgIGlmKCAkdGFiID09ICcnICkKICAgICAgewoJJHRhYiA9ICR0aGlzLT5fY3VycmVudF90YWI7CiAgICAgIH0KICAgICRwYXJtc1snY2dfYWN0aXZldGFiJ10gPSAkdGFiOwogICAgaWYoICR0aGlzLT5fZXJyb3Jtc2cgIT0gJycgKQogICAgICB7CgkkcGFybXNbJ2NnX2Vycm9yJ10gPSAkdGhpcy0+X2Vycm9ybXNnOwogICAgICB9CgogICAgJHRoaXMtPlJlZGlyZWN0KCAkaWQsICdkZWZhdWx0YWRtaW4nLCAnJywgJHBhcm1zLCB0cnVlICk7CiAgfQoKCiAgLyoKICAgKiBBIHJlcGxhY2VtZW50IGZvciB0aGUgYnVpbHQgaW4gRG9BY3Rpb24gbWV0aG9kCiAgICovCiAgZnVuY3Rpb24gRG9BY3Rpb24oJG5hbWUsJGlkLCRwYXJhbXMsJHJldHVybmlkPScnKQogIHsKICAgICR0aGlzLT5fcmV0dXJuaWQgPSAkcmV0dXJuaWQ7CiAgICBpZiggJHJldHVybmlkID09ICcnICkKICAgICAgewoJaWYoIGlzc2V0KCRwYXJhbXNbJ2NnX2FjdGl2ZXRhYiddKSApCgkgIHsKCSAgICAkdGhpcy0+X2N1cnJlbnRfdGFiID0gdHJpbSgkcGFyYW1zWydjZ19hY3RpdmV0YWInXSk7CgkgICAgdW5zZXQoJHBhcmFtc1snY2dfYWN0aXZldGFiJ10pOwoJICB9CglpZiggaXNzZXQoJHBhcmFtc1snY2dfZXJyb3InXSkgKQoJICB7CgkgICAgJHRoaXMtPl9lcnJvcm1zZyA9ICRwYXJhbXNbJ2NnX2Vycm9yJ107CgkgICAgdW5zZXQoJHBhcmFtc1snY2dfZXJyb3InXSk7CgkgIH0KICAgICAgfQogICAgcGFyZW50OjpEb0FjdGlvbigkbmFtZSwkaWQsJHBhcmFtcywkcmV0dXJuaWQpOwogIH0KCgogIC8qCiAgICogVGVzdCBpZiB0aGUgY3VycmVudCBjb2RlIGlzIGhhbmRsaW5nIGFuIGFkbWluIGFjdGlvbiBvcgogICAqIGEgZnJvbnRlbmQgYWN0aW9uCiAgICovCiAgZnVuY3Rpb24gSXNBZG1pbkFjdGlvbigpCiAgewogICAgcmV0dXJuICgkdGhpcy0+X3JldHVybmlkID09ICcnKTsKICB9CgoKICAvKgogICAqIFNldCBhbiBlcnJvcgogICAqLwogIGZ1bmN0aW9uIFNldEVycm9yKCRzdHIpCiAgewogICAgJHRoaXMtPl9lcnJvcm1zZyA9ICRzdHI7CiAgfQoKCiAgLyoKICAgKiBEaXNwbGF5IGVycm9ycyB1c2luZyB0aGUgY3VycmVudCBkZWZhdWx0IHRlbXBsYXRlCiAgICovCiAgZnVuY3Rpb24gRGlzcGxheUVycm9ycygpCiAgewogICAgaWYoICR0aGlzLT5fZXJyb3Jtc2cgIT0gJycgKQogICAgICB7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5fZXJyb3Jtc2cpOwoJJHRoaXMtPl9lcnJvcm1zZyA9ICcnOwogICAgICB9CiAgfQoKCiAgLyoKICAgKiBTZXQgdGhlIGN1cnJlbnQgYWRtaW4gdGFiCiAgICogU2VlIEFsc286ICBSZWRpcmVjdCBUbyBUYWIKICAgKi8KICBmdW5jdGlvbiBTZXRDdXJyZW50VGFiKCR0YWJuYW1lKQogIHsKICAgICR0aGlzLT5fY3VycmVudF90YWIgPSAkdGFibmFtZTsKICB9CgoKICAvKgogICAqIEEgcmVwbGFjZW1lbnQgZm9yIHRoZSBidWlsdCBpbiBTZXRUYWJIZWFkZXIKICAgKi8KICBmdW5jdGlvbiBTZXRUYWJIZWFkZXIoJG5hbWUsJHN0ciwkc3RhdGUgPSAndW5rbm93bicpCiAgewogICAgaWYoICRzdGF0ZSA9PSAndW5rbm93bicgKQogICAgICB7Cgkkc3RhdGUgPSAoJG5hbWUgPT0gJHRoaXMtPl9jdXJyZW50X3RhYik7CiAgICAgIH0KICAgIHJldHVybiBwYXJlbnQ6OlNldFRhYkhlYWRlcigkbmFtZSwkc3RyLCRzdGF0ZSk7CiAgfQoKCiAgLyoKICAgKiBBIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBhbiA8aW1nPiB0YWcuCiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlSW1hZ2VUYWcoJGltYWdlLCRhbHQ9JycsJHdpZHRoPScnLCRoZWlnaHQ9JycsJGNsYXNzPScnLCRhZGR0ZXh0PScnKQogIHsKICAgICR0eHQgPSAiPGltZyBzcmM9XCIkaW1hZ2VcIiI7CiAgICBpZiggJGFsdCAhPSAnJyApCiAgICAgIHsKCSR0eHQgLj0gIiBhbHQ9XCIkYWx0XCIiOwoJJHR4dCAuPSAiIHRpdGxlPVwiJGFsdFwiIjsKICAgICAgfQogICAgaWYoICR3aWR0aCAhPSAnJyApCiAgICAgIHsKCSR0eHQgLj0gIiB3aWR0aD1cIiR3aWR0aFwiIjsKICAgICAgfQogICAgaWYoICRoZWlnaHQgIT0gJycgKQogICAgICB7CgkkdHh0IC49ICIgaGVpZ2h0PVwiJGhlaWdodFwiIjsKICAgICAgfQogICAgaWYoICRjbGFzcyAhPSAnJyApCiAgICAgIHsKCSR0eHQgLj0gIiBjbGFzcz1cIiRjbGFzc1wiIjsKICAgICAgfQogICAgaWYoICRhZGR0ZXh0ICE9ICcnICkKICAgICAgewoJJHR4dCAuPSAiICRhZGR0ZXh0IjsKICAgICAgfQogICAgJHR4dCAuPSAiIC8+IjsKICAgIHJldHVybiAkdHh0OwogIH0KCgogIC8qCiAgICogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBzZWFyY2ggZm9yIGFuIGltYWdlIGluIGNlcnRhaW4gcHJlc2V0IAogICAqIGRpcmVjdG9yaWVzCiAgICovCiAgZnVuY3Rpb24gRGlzcGxheUltYWdlKCRpbWFnZSwkYWx0PScnLCRjbGFzcz0nJywkd2lkdGg9JycsJGhlaWdodD0nJykKICB7CiAgICBnbG9iYWwgJGdDbXM7CiAgICAkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCiAgICAvLyBjaGVjayBpbWFnZV9kaXJlY3RvcmllcyBmaXJzdAogICAgaWYoIGlzc2V0KCR0aGlzLT5faW1hZ2VfZGlyZWN0b3JpZXMpICYmICFlbXB0eSgkdGhpcy0+X2ltYWdlX2RpcmVjdG9yaWVzKSkKICAgICAgewoJZm9yZWFjaCggJHRoaXMtPl9pbWFnZV9kaXJlY3RvcmllcyBhcyAkZGlyICkKCSAgewoJICAgICR1cmwgPSBjbXNfam9pbl9wYXRoKCRkaXIsJGltYWdlKTsKCSAgICAkcGF0aCA9IGNtc19qb2luX3BhdGgoJGNvbmZpZ1sncm9vdF9wYXRoJ10sJHVybCk7CgoJICAgIGlmKCBpc19yZWFkYWJsZSgkcGF0aCkgKQoJICAgICAgewoJCWlmKCAkdGhpcy0+SXNBZG1pbkFjdGlvbigpICkKCQkgICR1cmwgPSBjbXNfam9pbl9wYXRoKCcuLicsJHVybCk7CgkJcmV0dXJuICR0aGlzLT5DcmVhdGVJbWFnZVRhZygkdXJsLCRhbHQsJHdpZHRoLCRoZWlnaHQsJGNsYXNzKTsKCSAgICAgIH0KCSAgfQogICAgICB9CgogICAgJHRoZW1lID0mICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXTsKICAgIGlmKCBpc19vYmplY3QoJHRoZW1lKSApIAogICAgICB7CgkvLyB3ZSdyZSBpbiB0aGUgYWRtaW4KCSR0eHQgPSAkdGhlbWUtPkRpc3BsYXlJbWFnZSgkaW1hZ2UsJGFsdCwkd2lkdGgsJGhlaWdodCwkY2xhc3MpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCS8vIGZyb250ZW5kCgkkdHh0ID0gJHRoaXMtPkNyZWF0ZUltYWdlVGFnKCRpbWFnZSwkYWx0LCR3aWR0aCwkaGVpZ2h0LCRjbGFzcyk7CiAgICAgIH0KICAgIHJldHVybiAkdHh0OwogIH0KCgogIC8qCiAgICogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgYSBsaW5rIHdpdGggYW4gaW1hZ2UKICAgKi8KICBmdW5jdGlvbiBDcmVhdGVJbWFnZUxpbmsoJGlkLCRhY3Rpb24sJHJldHVybmlkLCRjb250ZW50cywkaW1hZ2UsCgkJCSAgICRwYXJhbXM9YXJyYXkoKSwkY2xhc3NuYW1lPScnLAoJCQkgICAkd2Fybl9tZXNzYWdlPScnLCRpbWFnZW9ubHk9dHJ1ZSwKCQkJICAgJGlubGluZT1mYWxzZSwKCQkJICAgJGFkZHRleHQ9JycsJHRhcmdldGNvbnRlbnRvbmx5PWZhbHNlLCRwcmV0dHl1cmw9JycpCiAgewogICAgaWYoICRjbGFzc25hbWUgPT0gJycgKSAkY2xhc3NuYW1lID0gJ3N5c3RlbWljb24nOwoKICAgICR0eHQgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsJGFjdGlvbiwkcmV0dXJuaWQsCgkJCSAgICAgJHRoaXMtPkRpc3BsYXlJbWFnZSgkaW1hZ2UsJGNvbnRlbnRzLCRjbGFzc25hbWUpLCAKCQkJICAgICAkcGFyYW1zLCAkd2Fybl9tZXNzYWdlLCBmYWxzZSwgJGlubGluZSwgCgkJCSAgICAgJGFkZHRleHQsICR0YXJnZXRjb250ZW50b25seSwgJHByZXR0eXVybCApOwogICAgaWYoICRpbWFnZW9ubHkgIT09IHRydWUgKQogICAgICB7CgkkdHh0IC49ICcmbmJzcDsnOwoJJHR4dCAuPSAkdGhpcy0+Q3JlYXRlTGluawoJICAoJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQsCgkgICAkY29udGVudHMsICRwYXJhbXMsICR3YXJuX21lc3NhZ2UsIGZhbHNlLCAKCSAgICRpbmxpbmUsICRhZGR0ZXh0LCAkdGFyZ2V0Y29udGVudG9ubHksIAoJICAgJHByZXR0eXVybCApOwogICAgICB9CiAgICByZXR1cm4gJHR4dDsKICB9CgoKICAvKgogICAqIEEgZnVuY3Rpb24gZm9yIHVzaW5nIGEgdGVtcGxhdGUgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlCiAgICovCiAgZnVuY3Rpb24gRGlzcGxheUVycm9yTWVzc2FnZSgkdHh0LCRjbGFzcyA9ICdlcnJvcicpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHNtYXJ0eSA9JiAkZ0Ntcy0+R2V0U21hcnR5KCk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2NnX2Vycm9yY2xhc3MnLCRjbGFzcyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2NnX2Vycm9ybXNnJywkdHh0KTsKICAgICRyZXMgPSAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCdjZ19lcnJvcm1zZycsJycsdHJ1ZSwnQ0dFeHRlbnNpb25zJyk7CiAgICByZXR1cm4gJHJlczsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHJldHJpZXZpbmcgdGhlIGN1cnJlbnQgZXJyb3IgdGVtcGxhdGUKICAgKi8KICBmdW5jdGlvbiBHZXRFcnJvclRlbXBsYXRlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkdldFRlbXBsYXRlKCdjZ19lcnJvcm1zZycsJ0NHRXh0ZW5zaW9ucycpOwogIH0KCgogIC8qCiAgICogUmVzZXQgdGhlIGVycm9yIHRlbXBsYXRlIHRvIGZhY3RvcnkgZGVmYXVsdHMKICAgKi8KICBmdW5jdGlvbiBSZXNldEVycm9yVGVtcGxhdGUoKQogIHsKICAgICRmbiA9IGNtc19qb2luX3BhdGgoZGlybmFtZShfX0ZJTEVfXyksJ3RlbXBsYXRlcycsJ29yaWdfZXJyb3JfdGVtcGxhdGUudHBsJyk7CiAgICBpZiggZmlsZV9leGlzdHMoICRmbiApICkKICAgICAgewoJJHRlbXBsYXRlID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRmbik7CgkkdGhpcy0+U2V0VGVtcGxhdGUoICdjZ19lcnJvcm1zZycsICR0ZW1wbGF0ZSwnQ0dFeHRlbnNpb25zJyApOwogICAgICB9CiAgfQoKCiAgLyoKICAgKiBTZXQgdGhlIGVycm9yIHRlbXBsYXRlCiAgICovCiAgZnVuY3Rpb24gU2V0RXJyb3JUZW1wbGF0ZSgkdG1wbCkKICB7CiAgICByZXR1cm4gJHRoaXMtPlNldFRlbXBsYXRlKCdjZ19lcnJvcm1zZycsJHRtcGwsJ0NHRXh0ZW5zaW9ucycpOwogIH0KCgogIC8qCiAgICogQWRkIGEgZGlyZWN0b3J5IHRvIHRoZSBsaXN0IG9mIHNlYXJjaGFibGUgZGlyZWN0b3JpZXMKICAgKi8KICBmdW5jdGlvbiBBZGRJbWFnZURpcigkZGlyKQogIHsKICAgIGlmKCBzdHJwb3MoJy8nLCRkaXIpICE9PSAwICkKICAgICAgewoJJGRpciA9ICJtb2R1bGVzLyIuJHRoaXMtPkdldE5hbWUoKS4nLycuJGRpcjsKICAgICAgfQogICAgJHRoaXMtPl9pbWFnZV9kaXJlY3Rvcmllc1tdID0gJGRpcjsKICB9CgoKICAvKgogICAqIFBhcnQgb2YgdGhlIG11bHRpcGxlIGRhdGFiYXNlIHRlbXBsYXRlIGZ1bmN0aW9uYWxpdHkKICAgKiB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgYWRkaW5nLCBlZGl0aW5nLAogICAqIGRlbGV0aW5nIGFuZCBtYXJraW5nIGFjdGl2ZSBhbGwgdGVtcGxhdGVzIHRoYXQgbWF0Y2gKICAgKiBhIHByZWZpeC4KICAgKi8KICBmdW5jdGlvbiBTaG93VGVtcGxhdGVMaXN0KCRpZCwkcmV0dXJuaWQsJHByZWZpeCwKCQkJICAgICRkZWZhdWx0dGVtcGxhdGVwcmVmLCRhY3RpdmVfdGFiLAoJCQkgICAgJGRlZmF1bHRwcmVmbmFtZSwKCQkJICAgICR0aXRsZSkKICB7CiAgICAkY2dleHRlbnNpb25zID0mICR0aGlzLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dFeHRlbnNpb25zJyk7CiAgICByZXR1cm4gJGNnZXh0ZW5zaW9ucy0+X0Rpc3BsYXlUZW1wbGF0ZUxpc3QoJHRoaXMsJGlkLCRyZXR1cm5pZCwkcHJlZml4LAoJCQkJCSRkZWZhdWx0dGVtcGxhdGVwcmVmLCRhY3RpdmVfdGFiLAoJCQkJCSRkZWZhdWx0cHJlZm5hbWUsJHRpdGxlKTsKICB9CgoKCiAgZnVuY3Rpb24gX0Rpc3BsYXlUZW1wbGF0ZUxpc3QoICYkbW9kdWxlLCAkaWQsICRyZXR1cm5pZCwgJHByZWZpeCwgCgkJCQkgJGRlZmF1bHR0ZW1wbGF0ZXByZWYsIAoJCQkJICRhY3RpdmVfdGFiLCAkZGVmYXVsdHByZWZuYW1lLAoJCQkJICR0aXRsZSkKICB7CiAgICAvLyB3ZSdyZSBnb25uYSBhbGxvdyBtdWx0aXBsZSB0ZW1wbGF0ZXMgaGVyZQogICAgLy8gYnV0IHdlJ3JlIGdvbm5hIHByZWZpeCB0aGVtIGFsbCB3aXRoIHNvbWV0aGluZwogICAgZ2xvYmFsICRnQ21zOwogICAgCiAgICAkZmFsc2VpbWFnZTEgPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsJ21ha2UgZGVmYXVsdCcsJycsJycsJ3N5c3RlbWljb24nKTsKICAgICR0cnVlaW1hZ2UxID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsJ2RlZmF1bHQnLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiAgICAkYWxsdGVtcGxhdGVzID0gJG1vZHVsZS0+TGlzdFRlbXBsYXRlcygpOwogICAgJHJvd2FycmF5ID0gYXJyYXkoKTsKICAgICRyb3djbGFzcyA9ICdyb3cxJzsKICAgIGZvcmVhY2goICRhbGx0ZW1wbGF0ZXMgYXMgJG9uZXRlbXBsYXRlICkKICAgICAgewoJaWYoICFwcmVnX21hdGNoKCIvXiRwcmVmaXgvIiwgJG9uZXRlbXBsYXRlICkgKQoJICB7CgkgICAgY29udGludWU7CgkgIH0KCQoJJHRtcCA9IHN1YnN0cigkb25ldGVtcGxhdGUsc3RybGVuKCRwcmVmaXgpKTsKCSRyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCSRyb3ctPm5hbWUgPSAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCSR0bXAsIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRtcCwKCQkJCQkJICAgICdjZ19hY3RpdmV0YWInID0+ICRhY3RpdmVfdGFiLAoJCQkJCQkgICAgJ3RpdGxlJz0+JHRpdGxlLAoJCQkJCQkgICAgJ3ByZWZpeCc9PiRwcmVmaXgsCgkJCQkJCSAgICAnbW9kbmFtZSc9PiRtb2R1bGUtPkdldE5hbWUoKSwKCQkJCQkJICAgICdtb2RlJz0+J2VkaXQnKSk7Cgkkcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCgkkZGVmYXVsdCA9ICgkbW9kdWxlLT5HZXRQcmVmZXJlbmNlKCRkZWZhdWx0cHJlZm5hbWUpID09ICR0bXApID8gdHJ1ZSA6IGZhbHNlOwoJaWYoICRkZWZhdWx0ICkKCSAgewoJICAgICRyb3ctPmRlZmF1bHQgPSAkdHJ1ZWltYWdlMTsKCSAgfQoJZWxzZQoJICB7CgkgICAgJHJvdy0+ZGVmYXVsdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCAkaWQsICdtYWtlZGVmYXVsdHRlbXBsYXRlJywgJHJldHVybmlkLAoJCQkJCSAgICAgICAkZmFsc2VpbWFnZTEsCgkJCQkJICAgICAgIGFycmF5KCd0ZW1wbGF0ZSc9PiR0bXAsCgkJCQkJCSAgICAgJ2RlZmF1bHRwcmVmbmFtZSc9PiRkZWZhdWx0cHJlZm5hbWUsCgkJCQkJCSAgICAgJ21vZG5hbWUnPT4kbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCSAgICAgJ2NnX2FjdGl2ZXRhYicgPT4gJGFjdGl2ZV90YWIpKTsKCSAgfQoKCSRyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUltYWdlTGluayggJGlkLCdlZGl0dGVtcGxhdGUnLCRyZXR1cm5pZCwKCQkJCQkJICR0aGlzLT5MYW5nKCdwcm9tcHRfZWRpdHRlbXBsYXRlJyksCgkJCQkJCSAnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywKCQkJCQkJIGFycmF5ICgndGVtcGxhdGUnID0+ICR0bXAsCgkJCQkJCQknY2dfYWN0aXZldGFiJyA9PiAkYWN0aXZlX3RhYiwKCQkJCQkJCSdwcmVmaXgnPT4kcHJlZml4LAoJCQkJCQkJJ3RpdGxlJz0+JHRpdGxlLAoJCQkJCQkJJ21vZG5hbWUnPT4kbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCQknbW9kZSc9PidlZGl0JykpOwoJCglpZiggJGRlZmF1bHQgKQoJICB7CgkgICAgJHJvdy0+ZGVsZXRlbGluayA9ICcmbmJzcDsnOwoJICB9CgllbHNlCgkgIHsKCSAgICAkcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUltYWdlTGluayggJGlkLCAnZGVsZXRldGVtcGxhdGUnLCAkcmV0dXJuaWQsCgkJCQkJCSAgICAgICAkdGhpcy0+TGFuZygncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJyksCgkJCQkJCSAgICAgICAnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLAoJCQkJCQkgICAgICAgYXJyYXkgKCd0ZW1wbGF0ZScgPT4gJG9uZXRlbXBsYXRlLAoJCQkJCQkJICAgICAgJ21vZG5hbWUnPT4kbW9kdWxlLT5HZXROYW1lKCksCgkJCQkJCQkgICAgICAnY2dfYWN0aXZldGFiJyA9PiAkYWN0aXZlX3RhYiksCgkJCQkJCSAgICAgICAnJywKCQkJCQkJICAgICAgICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpOwoJICB9CgkKCWFycmF5X3B1c2ggKCRyb3dhcnJheSwgJHJvdyk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIik7CiAgICAgIH0KICAgIAogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSApOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduYW1lcHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9uYW1lJykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0cHJvbXB0JywgJHRoaXMtPkxhbmcoJ3Byb21wdF9kZWZhdWx0JykpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduZXd0ZW1wbGF0ZWxpbmsnLAoJCQkgICR0aGlzLT5DcmVhdGVJbWFnZUxpbmsoICRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwKCQkJCQkJICAkdGhpcy0+TGFuZygncHJvbXB0X25ld3RlbXBsYXRlJyksCgkJCQkJCSAgJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsCgkJCQkJCSAgYXJyYXkoJ3ByZWZpeCcgPT4gJHByZWZpeCwKCQkJCQkJCSdjZ19hY3RpdmV0YWInID0+ICRhY3RpdmVfdGFiLAoJCQkJCQkJJ21vZG5hbWUnID0+ICRtb2R1bGUtPkdldE5hbWUoKSwKCQkJCQkJCSd0aXRsZSc9PiR0aXRsZSwKCQkJCQkJCSdtb2RlJyA9PiAnYWRkJywKCQkJCQkJCSdkZWZhdWx0dGVtcGxhdGVwcmVmJyA9PiAkZGVmYXVsdHRlbXBsYXRlcHJlZgoJCQkJCQkJKSwnJywnJyxmYWxzZSkpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xpc3R0ZW1wbGF0ZXMudHBsJyk7CiAgfQoKCiAgLy8gLS0tLS0tLS0tLS0tIGxpeGxwaXhlbCByZWN1cnNpdmUgUEhQIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tCiAgLy8gcmVjdXJzaXZlX3JlbW92ZV9kaXJlY3RvcnkoIGRpcmVjdG9yeSB0byBkZWxldGUsIGVtcHR5ICkKICAvLyBleHBlY3RzIHBhdGggdG8gZGlyZWN0b3J5IGFuZCBvcHRpb25hbCBUUlVFIC8gRkFMU0UgdG8gZW1wdHkKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiByZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSgkZGlyZWN0b3J5LCAkZW1wdHk9RkFMU0UpCiAgewogICAgaWYoc3Vic3RyKCRkaXJlY3RvcnksLTEpID09ICcvJykKICAgICAgewogICAgICAgICRkaXJlY3RvcnkgPSBzdWJzdHIoJGRpcmVjdG9yeSwwLC0xKTsKICAgICAgfQogICAgaWYoIWZpbGVfZXhpc3RzKCRkaXJlY3RvcnkpIHx8ICFpc19kaXIoJGRpcmVjdG9yeSkpCiAgICAgIHsKICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgIH1lbHNlaWYoaXNfcmVhZGFibGUoJGRpcmVjdG9yeSkpCgkgewoJICAgJGhhbmRsZSA9IG9wZW5kaXIoJGRpcmVjdG9yeSk7CgkgICB3aGlsZSAoRkFMU0UgIT09ICgkaXRlbSA9IHJlYWRkaXIoJGhhbmRsZSkpKQoJICAgICB7CgkgICAgICAgaWYoJGl0ZW0gIT0gJy4nICYmICRpdGVtICE9ICcuLicpCgkJIHsKCQkgICAkcGF0aCA9ICRkaXJlY3RvcnkuJy8nLiRpdGVtOwoJCSAgIGlmKGlzX2RpcigkcGF0aCkpIAoJCSAgICAgewoJCSAgICAgICByZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSgkcGF0aCk7CgkJICAgICB9ZWxzZXsKCQkgICAgIHVubGluaygkcGF0aCk7CgkJICAgfQoJCSB9CgkgICAgIH0KCSAgIGNsb3NlZGlyKCRoYW5kbGUpOwoJICAgaWYoJGVtcHR5ID09IEZBTFNFKQoJICAgICB7CgkgICAgICAgaWYoIXJtZGlyKCRkaXJlY3RvcnkpKQoJCSB7CgkJICAgcmV0dXJuIEZBTFNFOwoJCSB9CgkgICAgIH0KCSB9CiAgICByZXR1cm4gVFJVRTsKICB9CgoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIGEgY291bnRyeSBkcm9wZG93biBsaXN0CiAgICovCiAgZnVuY3Rpb24gQ3JlYXRlSW5wdXRDb3VudHJ5RHJvcGRvd24oJGlkLCRuYW1lLCR2YWx1ZT0nVVMnLCRzZWxlY3RvbmU9ZmFsc2UpCiAgewogICAgJGZuID0gY21zX2pvaW5fcGF0aChkaXJuYW1lKF9fRklMRV9fKSwnY291bnRyaWVzLnR4dCcpOwogICAgJHJhd19jb3VudHJpZXMgPSBAZmlsZSgkZm4pOwogICAgJGNvdW50cmllcyA9IGFycmF5KCk7CiAgICBpZiggJHNlbGVjdG9uZSAhPT0gZmFsc2UgKQogICAgICB7CgkkY291bnRyaWVzWyR0aGlzLT5MYW5nKCdzZWxlY3Rfb25lJyldID0gJyc7CiAgICAgIH0KICAgIGZvcmVhY2goJHJhd19jb3VudHJpZXMgYXMgJG9uZSkKICAgICAgewoJbGlzdCgkYWNyb255bSwkbmFtZSkgPSBzcGxpdCgnLCcsJG9uZSk7CgkkY291bnRyaWVzWyRuYW1lXSA9IHN0cnRvdXBwZXIoJGFjcm9ueW0pOwogICAgICB9CiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCRuYW1lLCRjb3VudHJpZXMsLTEsCgkJCQkgICAgICBzdHJ0b3VwcGVyKCR2YWx1ZSkpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEVkaXREZWZhdWx0VGVtcGxhdGVGb3JtCiAgIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJCgogICBBIGZ1bmN0aW9uIHRoYXQgcHJvdmlkZXMgYSBmb3JtIGZvciBlZGl0aW5nIGEgZGVmYXVsdCB0ZW1wbGF0ZQogICBhbmQvb3IgcmV0dXJuaW5nIGl0IHRvIHN5c3RlbSBkZWZhdWx0cy4KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBFZGl0RGVmYXVsdFRlbXBsYXRlRm9ybSgmJG1vZHVsZSwkaWQsJHJldHVybmlkLCRwcmVmbmFtZSwkYWN0aXZlX3RhYiwkdGl0bGUsCgkJCQkgICAkZmlsZW5hbWUsJGluZm8pCiAgewogICAgJGNnZXh0ZW5zaW9ucyA9JiAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ0NHRXh0ZW5zaW9ucycpOwogICAgJHNtYXJ0eSA9JiAkdGhpcy0+c21hcnR5OwogICAgJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0dGVtcGxhdGVmb3JtX3RpdGxlJywkdGl0bGUpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdpbmZvX3RpdGxlJywkaW5mbyk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsCQoJICAgICRjZ2V4dGVuc2lvbnMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ3NldGRlZmF1bHR0ZW1wbGF0ZScsJHJldHVybmlkLCdwb3N0JywnJyxmYWxzZSwnJywKCQkJCQkgICBhcnJheSgncHJlZm5hbWUnPT4kcHJlZm5hbWUsCgkJCQkJCSAnZGVzdG1vZHVsZSc9PiRtb2R1bGUtPkdldE5hbWUoKSwKCQkJCQkJICdjZ19hY3RpdmV0YWInPT4kYWN0aXZlX3RhYiwKCQkJCQkJICdmaWxlbmFtZSc9PiRmaWxlbmFtZSkpKTsKICAgICRzbWFydHktPmFzc2lnbigncHJvbXB0X3RlbXBsYXRlJywkY2dleHRlbnNpb25zLT5MYW5nKCd0ZW1wbGF0ZScpKTsKICAgICRzbWFydHktPmFzc2lnbignaW5wdXRfdGVtcGxhdGUnLCRjZ2V4dGVuc2lvbnMtPkNyZWF0ZVRleHRBcmVhKGZhbHNlLCRpZCwKCQkJCQkJCSAgICRtb2R1bGUtPkdldFByZWZlcmVuY2UoJHByZWZuYW1lKSwKCQkJCQkJCSAgICdpbnB1dF90ZW1wbGF0ZScpKTsKICAgICRzbWFydHktPmFzc2lnbignc3VibWl0JywkY2dleHRlbnNpb25zLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdCcsJGNnZXh0ZW5zaW9ucy0+TGFuZygnc3VibWl0JykpKTsKICAgICRzbWFydHktPmFzc2lnbigncmVzZXQnLCRjZ2V4dGVuc2lvbnMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwncmVzZXR0b2RlZmF1bHQnLAoJCQkJCQkgICAgICRjZ2V4dGVuc2lvbnMtPkxhbmcoJ3Jlc2V0dG9mYWN0b3J5JykpKTsKICAgICRzbWFydHktPmFzc2lnbignZW5kZm9ybScsCgkJICAgICRjZ2V4dGVuc2lvbnMtPkNyZWF0ZUZvcm1FbmQoKSk7CiAgICBlY2hvICRjZ2V4dGVuc2lvbnMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGRlZmF1bHR0ZW1wbGF0ZS50cGwnKTsKICB9CgoKICBmdW5jdGlvbiAmQXJyYXlUb09iamVjdCgkYXJyYXkpCiAgewogICAgJG9iaiA9IG5ldyBTdGRDbGFzcygpOwogICAgZm9yZWFjaCggJGFycmF5IGFzICRrZXkgPT4gJHZhbHVlICkKICAgICAgewoJJG9iai0+JGtleSA9ICR2YWx1ZTsKICAgICAgfQogICAgcmV0dXJuICRvYmo7CiAgfQoKICAvKgogICAqIEEgY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY3JlYXRlIGEgdXJsIHRvIGEgY2VydGFpbiBDTVMgcGFnZQogICAqLwogIGZ1bmN0aW9uIENyZWF0ZUNvbnRlbnRVUkwoJHBhZ2VpZCkKICB7CglnbG9iYWwgJGdDbXM7CgkkY29uZmlnID0mICRnQ21zLT5HZXRDb25maWcoKTsKCgkkY29udGVudG9wcyA9JiAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsKCSRhbGlhcyA9ICRjb250ZW50b3BzLT5HZXRQYWdlQWxpYXNGcm9tSUQoICRwYWdlaWQgKTsKCgkkdGV4dCA9ICcnOwogICAgICAgIGlmICgkY29uZmlnWyJhc3N1bWVfbW9kX3Jld3JpdGUiXSkKCXsKCQkjIG1vZF9yZXdyaXRlCgkJaWYoICRhbGlhcyA9PSBmYWxzZSApCgkJewoJCQlyZXR1cm4gJzwhLS0gRVJST1I6IGNvdWxkIG5vdCBnZXQgYW4gYWxpYXMgZm9yIHBhZ2VpZD0nLiRwYWdlaWQuJy0tPic7CgkJfQoJCWVsc2UKCQl7CgkJCSR0ZXh0IC49ICRjb25maWdbInJvb3RfdXJsIl0uIi8iLiRhbGlhcy4KCQkJKGlzc2V0KCRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ10pPyRjb25maWdbJ3BhZ2VfZXh0ZW5zaW9uJ106Jy5zaHRtbCcpOwoJCX0KCX0KCWVsc2UKCXsKCQkjIG1vZCByZXdyaXRlCgkJJHRleHQgLj0gJGNvbmZpZ1sicm9vdF91cmwiXS4iL2luZGV4LnBocD8iLiRjb25maWdbInF1ZXJ5X3ZhciJdLiI9Ii4kcGFnZWlkOwoJCXJldHVybiAkdGV4dDsKCX0KICB9CgoKICBmdW5jdGlvbiBHZXRNaW1lVHlwZSgkZmlsZW5hbWUpCiAgewogICAgJG1pbWVfdHlwZSA9ICd1bmtub3duJzsKICAgIGlmKCBmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSApCiAgICAgIHsKCSRmaCA9IGZpbmZvX29wZW4oRklMRUlORk9fQ09NUFJFU1MpOwoJJG1pbWVfdHlwZSA9IGZpbmZvX2ZpbGUoJGZoLCRmaWxlbmFtZSk7CiAgICAgIH0KICAgIGVsc2UgaWYoIGZ1bmN0aW9uX2V4aXN0cygnbWltZV9jb250ZW50X3R5cGUnKSApCiAgICAgIHsKCSRtaW1lX3R5cGUgPSBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZW5hbWUpOwogICAgICB9CgogICAgcmV0dXJuICRtaW1lX3R5cGU7CiAgfQoKCiAgZnVuY3Rpb24gU2VuZERhdGFBbmRFeGl0KCRkYXRhLCRjb250ZW50X3R5cGUgPSAndGV4dC9wbGFpbicsJGZpbGVuYW1lID0gJ3JlcG9ydC50eHQnKQogIHsKICAgICRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsgCiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJy4kY29udGVudF90eXBlKTsKICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIkZmlsZW5hbWVcIiIgKTsKICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gY291bnQoJGRhdGEpKTsKCiAgICAvLyBzZW5kIHRoZSBkYXRhCiAgICBwcmludCgkZGF0YSk7CgogICAgLy8gZG9uJ3QgYWxsb3cgYW55IGZ1cnRoZXIgcHJvY2Vzc2luZy4KICAgIGV4aXQoKTsKICB9CgoKICBmdW5jdGlvbiBTZW5kRmlsZUFuZEV4aXQoJGZpbGUpCiAgewogICAgaWYoICFmaWxlX2V4aXN0cygkZmlsZSkgKQogICAgICB7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAkbWltZV90eXBlID0gJHRoaXMtPkdldE1pbWVUeXBlKCRmaWxlKTsKICAgIGlmKCAkbWltZV90eXBlID09ICd1bmtub3duJyApCiAgICAgIHsKCSRtaW1lX3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgICAgfQoKICAgICRibiA9IGJhc2VuYW1lKCRmaWxlKTsKICAgICRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsgCiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKICAgIGhlYWRlcignUHJhZ21hOiBwdWJsaWMnKTsKICAgIGhlYWRlcignRXhwaXJlczogMCcpOwogICAgaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtdXN0LXJldmFsaWRhdGUsIHBvc3QtY2hlY2s9MCwgcHJlLWNoZWNrPTAnKTsKICAgIGhlYWRlcignQ2FjaGUtQ29udHJvbDogcHJpdmF0ZScsZmFsc2UpOwogICAgaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtVHlwZTogJy4kbWltZV90eXBlKTsKICAgIGhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9XCIkYm5cIiIgKTsKICAgIGhlYWRlcignQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmluYXJ5Jyk7CiAgICBoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoOiAnIC4gZmlsZXNpemUoJGZpbGUpKTsKCiAgICAkaGFuZGxlPWZvcGVuKCRmaWxlLCdyYicpOwogICAgJGNvbnRlbnRzID0gJyc7CiAgICBkbyB7CiAgICAgICRkYXRhID0gZnJlYWQoJGhhbmRsZSwkY2h1bmtzaXplKTsKICAgICAgaWYoIHN0cmxlbigkZGF0YSkgPT0gMCApIGJyZWFrOwogICAgICBwcmludCgkZGF0YSk7IAogICAgfSB3aGlsZSh0cnVlKTsKICAgIGZjbG9zZSgkaGFuZGxlKTsKICAgIAogICAgLy8gZG9uJ3QgYWxsb3cgYW55IG1vcmUgcHJvY2Vzc2luZwogICAgZXhpdCgpOwogIH0KCiAgZnVuY3Rpb24gQ3JlYXRlVXNlck11bHRpc2VsZWN0KCRpZCwgJHNlbGVjdGVkID0gJycsICRuYW1lPSdvd25lcmlkJywgCgkJCQkgJGdyb3VwcyA9IHRydWUsICRzaXplPTUpCiAgewogICAgZ2xvYmFsICRnQ21zOwogICAgJHJlc3VsdCA9ICcnOwogICAgCiAgICAkcmVzdWx0IC49ICc8c2VsZWN0IG11bHRpcGxlIHNpemU9IicuJHNpemUuJyIgbmFtZT0iJy4kaWQuJG5hbWUuJ1tdIj4nOwogICAgaWYoICRncm91cHMgKQogICAgICB7CgkkZ3JvdXBvcHMgPSYgJGdDbXMtPkdldEdyb3VwT3BlcmF0aW9ucygpOwoJJGFsbGdyb3VwcyA9ICRncm91cG9wcy0+TG9hZEdyb3VwcygpOwoJZm9yZWFjaCggJGFsbGdyb3VwcyBhcyAkb25lZ3JvdXAgKQoJICB7CgkgICAgJHJlc3VsdCAuPSAnPG9wdGlvbiB2YWx1ZT0iLScuJG9uZWdyb3VwLT5pZC4nIic7CgkgICAgaWYoIGlzX2FycmF5KCRzZWxlY3RlZCkgJiYgaW5fYXJyYXkoJG9uZWdyb3VwLT5pZCAqIC0xLCAkc2VsZWN0ZWQpICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgZWxzZSBpZiggKCRvbmVncm91cC0+aWQgKiAtMSkgPT0gJHNlbGVjdGVkICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgJHJlc3VsdCAuPSAnPicubGFuZygnZ3JvdXAnKS4nOiAnLiRvbmVncm91cC0+bmFtZS4nPC9vcHRpb24+JzsKCSAgfQogICAgICB9CgogICAgJGFsbHVzZXJzID0gVXNlck9wZXJhdGlvbnM6OkxvYWRVc2VycygpOwogICAgaWYgKGNvdW50KCRhbGx1c2VycykgPiAwKQogICAgICB7Cglmb3JlYWNoICgkYWxsdXNlcnMgYXMgJG9uZXVzZXIpCgkgIHsKCSAgICAkcmVzdWx0IC49ICc8b3B0aW9uIHZhbHVlPSInLiRvbmV1c2VyLT5pZC4nIic7CgkgICAgaWYoIGlzX2FycmF5KCRzZWxlY3RlZCkgJiYgaW5fYXJyYXkoJG9uZXVzZXItPmlkLCAkc2VsZWN0ZWQpICkKCSAgICAgIHsKCQkkcmVzdWx0IC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CgkgICAgICB9CgkgICAgZWxzZSBpZiggJG9uZXVzZXItPmlkID09ICRzZWxlY3RlZCApCgkgICAgICB7CgkJJHJlc3VsdCAuPSAnIHNlbGVjdGVkPSJzZWxlY3RlZCInOwoJICAgICAgfQoJICAgICRyZXN1bHQgLj0gJz4nLiRvbmV1c2VyLT51c2VybmFtZS4nPC9vcHRpb24+JzsKCSAgfQogICAgICB9CiAgICAkcmVzdWx0IC49ICc8L3NlbGVjdD4nOwogICAgCiAgICByZXR1cm4gJHJlc3VsdDsKICB9CgoKCn0gLy8gY2xhc3MKCgogIH0gLy8gaWYKCi8vIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/countries.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QUYsQWZnaGFuaXN0YW4KQUwsQWxiYW5pYQpEWixBbGdlcmlhCkFTLEFtZXJpY2FuIFNhbW9hCkFELEFuZG9ycmEKQU8sQW5nb2xhCkFJLEFuZ3VpbGxhCkFRLEFudGFyY3RpY2EKQUcsQW50aWd1YSBBbmQgQmFyYnVkYQpBUixBcmdlbnRpbmEKQU0sQXJtZW5pYQpBVyxBcnViYQpBVSxBdXN0cmFsaWEKQVQsQXVzdHJpYQpBWixBemVyYmFpamFuCkJTLEJhaGFtYXMKQkgsQmFocmFpbgpCRCxCYW5nbGFkZXNoCkJCLEJhcmJhZG9zCkJZLEJlbGFydXMKQkUsQmVsZ2l1bQpCWixCZWxpemUKQkosQmVuaW4KQk0sQmVybXVkYQpCVCxCaHV0YW4KQk8sQm9saXZpYQpCQSxCb3NuaWEgQW5kIEhlcnplZ293aW5hCkJXLEJvdHN3YW5hCkJWLEJvdXZldCBJc2xhbmQKQlIsQnJhemlsCklPLEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQpCTixCcnVuZWkgRGFydXNzYWxhbQpCRyxCdWxnYXJpYQpCRixCdXJraW5hIEZhc28KQkksQnVydW5kaQpLSCxDYW1ib2RpYQpDTSxDYW1lcm9vbgpDQSxDYW5hZGEKQ1YsQ2FwZSBWZXJkZQpLWSxDYXltYW4gSXNsYW5kcwpDRixDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMKVEQsQ2hhZApDTCxDaGlsZQpDTixDaGluYQpDWCxDaHJpc3RtYXMgSXNsYW5kCkNDLENvY29zIChLZWVsaW5nKSBJc2xhbmRzCkNPLENvbG9tYmlhCktNLENvbW9yb3MKQ0csQ29uZ28KQ0ssQ29vayBJc2xhbmRzCkNSLENvc3RhIFJpY2EKQ0ksQ290ZSBEJ0l2b2lyZQpIUixDcm9hdGlhIChMb2NhbCBOYW1lOiBIcnZhdHNrYSkKQ1UsQ3ViYQpDWSxDeXBydXMKQ1osQ3plY2ggUmVwdWJsaWMKREssRGVubWFyawpESixEamlib3V0aQpETSxEb21pbmljYQpETyxEb21pbmljYW4gUmVwdWJsaWMKVFAsRWFzdCBUaW1vcgpFQyxFY3VhZG9yCkVHLEVneXB0ClNWLEVsIFNhbHZhZG9yCkdRLEVxdWF0b3JpYWwgR3VpbmVhCkVSLEVyaXRyZWEKRUUsRXN0b25pYQpFVCxFdGhpb3BpYQpGSyxGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykKRk8sRmFyb2UgSXNsYW5kcwpGSixGaWppCkZJLEZpbmxhbmQKRlIsRnJhbmNlCkdGLEZyZW5jaCBHdWlhbmEKUEYsRnJlbmNoIFBvbHluZXNpYQpURixGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMKR0EsR2Fib24KR00sR2FtYmlhCkdFLEdlb3JnaWEKREUsR2VybWFueQpHSCxHaGFuYQpHSSxHaWJyYWx0YXIKR1IsR3JlZWNlCkdMLEdyZWVubGFuZApHRCxHcmVuYWRhCkdQLEd1YWRlbG91cGUKR1UsR3VhbQpHVCxHdWF0ZW1hbGEKR04sR3VpbmVhCkdXLEd1aW5lYS1CaXNzYXUKR1ksR3V5YW5hCkhULEhhaXRpCkhNLEhlYXJkIEFuZCBNYyBEb25hbGQgSXNsYW5kcwpWQSxIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQpITixIb25kdXJhcwpISyxIb25nIEtvbmcKSFUsSHVuZ2FyeQpJUyxJY2VsIEFuZApJTixJbmRpYQpJRCxJbmRvbmVzaWEKSVIsSXJhbiAoSXNsYW1pYyBSZXB1YmxpYyBPZikKSVEsSXJhcQpJRSxJcmVsYW5kCklMLElzcmFlbApJVCxJdGFseQpKTSxKYW1haWNhCkpQLEphcGFuCkpPLEpvcmRhbgpLWixLYXpha2hzdGFuCktFLEtlbnlhCktJLEtpcmliYXRpCktQLEtvcmVhLCBEZW0gUGVvcGxlJ1MgUmVwdWJsaWMKS1IsS29yZWEsIFJlcHVibGljIE9mCktXLEt1d2FpdApLRyxLeXJneXpzdGFuCkxBLExhbyBQZW9wbGUnUyBEZW0gUmVwdWJsaWMKTFYsTGF0dmlhCkxCLExlYmFub24KTFMsTGVzb3RobwpMUixMaWJlcmlhCkxZLExpYnlhbiBBcmFiIEphbWFoaXJpeWEKTEksTGllY2h0ZW5zdGVpbgpMVCxMaXRodWFuaWEKTFUsTHV4ZW1ib3VyZwpNTyxNYWNhdQpNSyxNYWNlZG9uaWEKTUcsTWFkYWdhc2NhcgpNVyxNYWxhd2kKTVksTWFsYXlzaWEKTVYsTWFsZGl2ZXMKTUwsTWFsaQpNVCxNYWx0YQpNSCxNYXJzaGFsbCBJc2xhbmRzCk1RLE1hcnRpbmlxdWUKTVIsTWF1cml0YW5pYQpNVSxNYXVyaXRpdXMKWVQsTWF5b3R0ZQpNWCxNZXhpY28KRk0sTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcwpNRCxNb2xkb3ZhLCBSZXB1YmxpYyBPZgpNQyxNb25hY28KTU4sTW9uZ29saWEKTVMsTW9udHNlcnJhdApNQSxNb3JvY2NvCk1aLE1vemFtYmlxdWUKTU0sTXlhbm1hcgpOQSxOYW1pYmlhCk5SLE5hdXJ1Ck5QLE5lcGFsCk5MLE5ldGhlcmxhbmRzCkFOLE5ldGhlcmxhbmRzIEFudCBJbGxlcwpOQyxOZXcgQ2FsZWRvbmlhCk5aLE5ldyBaZWFsYW5kCk5JLE5pY2FyYWd1YQpORSxOaWdlcgpORyxOaWdlcmlhCk5VLE5pdWUKTkYsTm9yZm9sayBJc2xhbmQKTVAsTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCk5PLE5vcndheQpPTSxPbWFuClBLLFBha2lzdGFuClBXLFBhbGF1ClBBLFBhbmFtYQpQRyxQYXB1YSBOZXcgR3VpbmVhClBZLFBhcmFndWF5ClBFLFBlcnUKUEgsUGhpbGlwcGluZXMKUE4sUGl0Y2Fpcm4KUEwsUG9sYW5kClBULFBvcnR1Z2FsClBSLFB1ZXJ0byBSaWNvClFBLFFhdGFyClJFLFJldW5pb24KUk8sUm9tYW5pYQpSVSxSdXNzaWFuIEZlZGVyYXRpb24KUlcsUndhbmRhCktOLFNhaW50IEsgSXR0cyBBbmQgTmV2aXMKTEMsU2FpbnQgTHVjaWEKVkMsU2FpbnQgVmluY2VudCwgVGhlIEdyZW5hZGluZXMKV1MsU2Ftb2EKU00sU2FuIE1hcmlubwpTVCxTYW8gVG9tZSBBbmQgUHJpbmNpcGUKU0EsU2F1ZGkgQXJhYmlhClNOLFNlbmVnYWwKU0MsU2V5Y2hlbGxlcwpTTCxTaWVycmEgTGVvbmUKU0csU2luZ2Fwb3JlClNLLFNsb3Zha2lhIChTbG92YWsgUmVwdWJsaWMpClNJLFNsb3ZlbmlhClNCLFNvbG9tb24gSXNsYW5kcwpTTyxTb21hbGlhClpBLFNvdXRoIEFmcmljYQpHUyxTb3V0aCBHZW9yZ2lhICwgUyBTYW5kd2ljaCBJcy4KRVMsU3BhaW4KTEssU3JpIExhbmthClNILFN0LiBIZWxlbmEKUE0sU3QuIFBpZXJyZSBBbmQgTWlxdWVsb24KU0QsU3VkYW4KU1IsU3VyaW5hbWUKU0osU3ZhbGJhcmQsIEphbiBNYXllbiBJc2xhbmRzClNaLFN3IEF6aWxhbmQKU0UsU3dlZGVuCkNILFN3aXR6ZXJsYW5kClNZLFN5cmlhbiBBcmFiIFJlcHVibGljClRXLFRhaXdhbgpUSixUYWppa2lzdGFuClRaLFRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgT2YKVEgsVGhhaWxhbmQKVEcsVG9nbwpUSyxUb2tlbGF1ClRPLFRvbmdhClRULFRyaW5pZGFkIEFuZCBUb2JhZ28KVE4sVHVuaXNpYQpUUixUdXJrZXkKVE0sVHVya21lbmlzdGFuClRDLFR1cmtzIEFuZCBDYWljb3MgSXNsYW5kcwpUVixUdXZhbHUKVUcsVWdhbmRhClVBLFVrcmFpbmUKQUUsVW5pdGVkIEFyYWIgRW1pcmF0ZXMKR0IsVW5pdGVkIEtpbmdkb20KVVMsVW5pdGVkIFN0YXRlcwpVTSxVbml0ZWQgU3RhdGVzIE1pbm9yIElzLgpVWSxVcnVndWF5ClVaLFV6YmVraXN0YW4KVlUsVmFudWF0dQpWRSxWZW5lenVlbGEKVk4sVmlldCBOYW0KVkcsVmlyZ2luIElzbGFuZHMgKEJyaXRpc2gpClZJLFZpcmdpbiBJc2xhbmRzIChVLlMuKQpXRixXYWxsaXMgQW5kIEZ1dHVuYSBJc2xhbmRzCkVILFdlc3Rlcm4gU2FoYXJhCllFLFllbWVuCllVLFl1Z29zbGF2aWEKWlIsWmFpcmUKWk0sWmFtYmlhClpXLFppbWJhYndlIA==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnR3JvdXAnOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSc7CiRsYW5nWydzZWxlY3Rfb25lJ10gPSAnU2VsZWN0IE9uZSc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnRWRpdCBUZW1wbGF0ZSc7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdEZWxldGUgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUgVGV4dCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ1RlbXBsYXRlIE5hbWUnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTmV3IFRlbXBsYXRlJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnRGVmYXVsdCc7CgokbGFuZ1sneWVzJ10gPSAnWWVzJzsKJGxhbmdbJ25vJ10gPSAnTm8nOwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBwbHknOwokbGFuZ1snY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0JzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdBcmUgeW91IHN1cmU/JzsKCiRsYW5nWydyZXNldHRvZmFjdG9yeSddID0gJ1Jlc2V0IHRvIGZhY3RvcnkgZGVmYXVsdHMnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdFcnJvciBUZW1wbGF0ZSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsZSBFeHRlbnNpb25zJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVGhpcyBtb2R1bGUgaXMgcmVhZHkgdG8gdXNlLiAgQ29kZSBhd2F5ISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnU2VlIHlvdSBhZ2FpbiBzb21lIGRheSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgaXMgYSBsaWJyYXJ5IG9mIHBocCBjbGFzc2VzIHVzZWQgdG8gYnVpbGQgYWR2YW5jZWQgZm9ybXMnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+CjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+CjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+CjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4KPGxpPlZlcnNpb24gMS4yLiAgIE5vdmVtYmVyICAyMDA3LCAgQWRkcyBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+CjxsaT5WZXJzaW9uIDEuMy4gICBOb3ZlbWJlciAgMjAwNy4gIEFkZHMgZXZlbiBtb3JlIGNvbnZlbmllbmNlIGZ1bmN0aW9uczwvbGk+CjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaVwncyBhbmQgc21hcnR5IHRhZ3MgZm9yIHVzZSBpbiBvdGhlciBtb2R1bGVzLiAgSXQgaXMgbWVhbnQgc29sZWx5IGFzIGEgYmFzZSBjbGFzcyBhbmQgdXRpbGl0eSBjbGFzcyBmb3Igb3RoZXIgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+CjxoMz5TbWFydHkgQWRkb25zPC9oMz4KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4KPHVsPgo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbgo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4KPC9wPgo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiBcJ2Vycm9yY2xhc3NcJyA9IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNsYXNzIG5hbWUgaW4gdGhlIHRlbXBsYXRlLgo8L3A+CjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+CjwvdWw+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSI+Jmx0O2NhbGd1eTEwMDBAaG90bWFpbC5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/cs_CZ.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnU2t1cGluYSc7CiRsYW5nWyd0ZW1wbGF0ZSddID0gJyZTY2Fyb247YWJsb25hJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdWeWJyYXQgamVkbnUnOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ1VwcmF2aXQgJnNjYXJvbjthYmxvbnUnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnU21hemF0ICZzY2Fyb247YWJsb251JzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdKbSZlYWN1dGU7bm8gJnNjYXJvbjthYmxvbnknOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGV4dCAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ0ptJmVhY3V0ZTtubyAmc2Nhcm9uO2FibG9ueSc7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdOb3YmYWFjdXRlOyAmc2Nhcm9uO2FibG9uYSc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1YmeWFjdXRlO2Nob3omaWFjdXRlOyc7CiRsYW5nWyd5ZXMnXSA9ICdBbm8nOwokbGFuZ1snbm8nXSA9ICdOZSc7CiRsYW5nWydzdWJtaXQnXSA9ICdWbG/Fvml0JzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBsaWtvdmF0JzsKJGxhbmdbJ2NhbmNlbCddID0gJ1N0b3Jubyc7CiRsYW5nWydlZGl0J10gPSAnVXByYXZpdCc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnT3ByYXZkdT8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdPYm5vdml0IHDFr3ZvZG4maWFjdXRlOyBob2Rub3R5JzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnQ2h5Ym4mYWFjdXRlOyAmc2Nhcm9uO2FibG9uYSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlvdmEgcm96JnNjYXJvbjsmaWFjdXRlO8WZZW4maWFjdXRlOyBtb2R1bMWvJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTW9kdWwgamUgcMWZaXByYXZlbiBrIHBvdcW+aXQmaWFjdXRlOy4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1TEmyZzY2Fyb247JmlhY3V0ZTttZSBzZSBuYXNobGVkYW5vdSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIG9kaW5zdGFsb3YmYWFjdXRlO24uJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsIHZlcnplIGJ5bCAlcyBuYWluc3RhbG92JmFhY3V0ZTtuLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdOYXN0YXZlbiZpYWN1dGU7IG1vZHVsdSBieWxhIGFrdHVhbGl6b3YmYWFjdXRlO25hLic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdQxZkmaWFjdXRlO3N0dXAgemFrJmFhY3V0ZTt6JmFhY3V0ZTtuLiBQcm9zJmlhY3V0ZTttIHprb250cm9sdWp0ZSBzdiZhYWN1dGU7IG9wciZhYWN1dGU7dm7Em24maWFjdXRlOy4nOwokbGFuZ1snZXJyb3InXSA9ICdDaHliYSEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBieWwgcG92JnlhY3V0ZTsmc2Nhcm9uO2VuIG5hIHZlcnppICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1RlbnRvIG1vZHVsIGplIGtuaWhvdm5hIHBocCBmdW5rYyZpYWN1dGU7IHBvdcW+JmlhY3V0ZTt2YW4meWFjdXRlO2NoIGsgdnl0diZhYWN1dGU7xZllbiZpYWN1dGU7IHBva3JvxI1pbCZ5YWN1dGU7Y2ggZm9ybXVsJmFhY3V0ZTvFmcWvJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+Q28gZMSbbCZhYWN1dGU7IHRlbnRvIG1vZHVsPzwvaDM+DQo8cD5UZW50byBtb2R1bCBwb3NreXR1amUgQVBJIGEgU21hcnR5IHRhZ3kgcHJvIHBvdcW+aXQmaWFjdXRlOyB2IG9zdGF0biZpYWN1dGU7Y2ggbW9kdWxlY2guIFMmYWFjdXRlO20gbyBzb2LEmyBwcm90byBuZW0mYWFjdXRlOyDFviZhYWN1dGU7ZG4meWFjdXRlOyBzbXlzbC48L3A+DQo8aDM+SmFrIGhvIHBvdcW+JmlhY3V0ZTt2YXQ/PC9oMz4NCjxwPlBva3VkIG0mYWFjdXRlOyBwcm8gViZhYWN1dGU7cyB0ZW50byBtb2R1bCBzbXlzbCwgamlzdMSbIGRvayZhYWN1dGU7xb5ldGUgcMWZZcSNJmlhY3V0ZTtzdCBuJmFhY3V0ZTtzbGVkdWomaWFjdXRlO2MmaWFjdXRlOyB0ZXh0IHNhbWkgOi0pPC9wPg0KPHA+V2VsbCwgeW91IHN0YXJ0IHlvdXIgb3duIG1vZHVsZSAoSSBzdWdnZXN0IHN0YXJ0aW5nIHdpdGggdGhlIFNrZWxldG9uIG1vZHVsZSksIGFuZCB0aGVuIHdoZW4geW91IG5lZWQgdG8gdXNlIGFuIGFkdmFuY2VkIGZvcm0gb2JqZWN0IGZyb20gdGhpcyBsaWJyYXJ5LCBzaW1wbHkgbWFrZSB5b3VyIG1vZHVsZSBkZXBlbmRhbnQgdXBvbiBGb3JtT2JqZWN0cywgYW5kIHRoZW4gaW5zdGFudGlhdGUgYW4gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgU2VlIHRoZSBjb2RlIGluc2lkZSB0aGUgRm9ybU9iamVjdHMgZGlyZWN0b3J5IGZvciB1c2FnZSBpbnN0cnVjdGlvbnMuPC9wPg0KPGgzPlNtYXJ0eSBBZGRvbnM8L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xhc3MgbmFtZSBpbiB0aGUgdGVtcGxhdGUuDQo8L3A+DQo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuODgwMjY3ODM3LjExODA5OTE2NjkuMTE5NjQzNjEyMS4xMTk2NDk3MTAyLjI0Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTY0MTM1NjQuMjM4LjQ4LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L2luZGV4LnBocC9ib2FyZCw3LjAuaHRtbHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1cmYXVtbDtobGVuIFNpZSBlaW5zIGF1cyc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnVGVtcGxhdGUgYmVhcmJlaXRlbic7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdUZW1wbGF0ZSBsJm91bWw7c2NoZW4nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ1RlbXBsYXRlLU5hbWUnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUtVGV4dCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ1RlbXBsYXRlLU5hbWUnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTmV1ZXMgVGVtcGxhdGUnOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdTdGFuZGFyZCc7CiRsYW5nWyd5ZXMnXSA9ICdKYSc7CiRsYW5nWydubyddID0gJ05laW4nOwokbGFuZ1snc3VibWl0J10gPSAnQWJzZW5kZW4nOwokbGFuZ1snYXBwbHknXSA9ICdBbndlbmRlbic7CiRsYW5nWydjYW5jZWwnXSA9ICdBYmJyZWNoZW4nOwokbGFuZ1snZWRpdCddID0gJ0JlYXJiZWl0ZW4nOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpbmQgU2llIHNpY2hlcj8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdBdWYgZGllIFdlcmtzZWluc3RlbGx1bmdlbiB6dXImdXVtbDtja3NldHplbic7CiRsYW5nWydlcnJvcl90ZW1wbGF0ZSddID0gJ0ZlaGxlci1UZW1wbGF0ZSc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsLUVyd2VpdGVydW5nZW4nOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdEaWVzZXMgTW9kdWwgaXN0IGVpbnNhdHpiZXJlaXQuIFZpZWwgU3Bhc3MgYmVpbSBQcm9ncmFtbWllcmVuISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnQmlzIHNwJmF1bWw7dGVyIGRhbm4gLi4uJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWwgZGVpbnN0YWxsaWVydC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWx2ZXJzaW9uICVzIGluc3RhbGxpZXJ0Lic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGVpbnN0ZWxsdW5nZW4gYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdadWdyaWZmIHZlcndlaWdlcnQuIEJpdHRlIHByJnV1bWw7ZmVuIFNpZSBJaHJlIEJlcmVjaHRpZ3VuZ2VuLic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bCBhdWYgVmVyc2lvbiAlcyBha3R1YWxpc2llcnQuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRGllc2VzIE1vZHVsIGlzdCBlaW5lIFBIUC1LbGFzc2VuLUJpYmxpb3RoZWsgZiZ1dW1sO3IgZGllIEVyemV1Z3VuZyBrb21wbGV4ZXIgRm9ybXVsYXJlLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4NCjxwPkRpZXNlcyBNb2R1bCBzdGVsbHQgZWluZSBBUEkgdW5kIFNtYXJ0eS1UYWdzIHp1ciBWZXJ3ZW5kdW5nIGluIGFuZGVyZW4gTW9kdWxlbiBiZXJlaXQuIERhcyBoZWlzc3QsIGVzIGlzdCBhdXNzY2hsaWUmc3psaWc7bGljaCBlaW5lIEJhc2lzLUtsYXNzZSB1bmQgV2Vya3pldWctS2xhc3NlIGYmdXVtbDtyIGFuZGVyZSBNb2R1bGUuPC9wPg0KPGgzPldpZSB3aXJkIGVzIGVpbmdlc2V0enQ/PC9oMz4NCjxwPldlbm4gU2llIGVpbiBlaWdlbmVzIE1vZHVsIHByb2dyYW1taWVyZW4gbSZvdW1sO2NodGVuLCBlbWZlaGxlIGljaCBJaG5lbiwgbWl0IGRlbSBTa2VsZXRvbi1Nb2R1bCB6dSBiZWdpbm5lbi4gVW5kIHdlbm4gU2llIGRhbm4gZWluIEZvcm11bGFyLU9iamVrdCBhdXMgZGllc2VyIEJpYmxpb3RoZWsgYmVuJm91bWw7dGlnZW4sIG0mdXVtbDtzc2VuIFNpZSBJaHIgTW9kdWwgbnVyIHZvbiBGb3JtT2JqZWN0cyBhYmgmYXVtbDtuZ2lnIG1hY2hlbiB1bmQgZGFtbSBlaW4gT2JqZWt0IGRlcyBlbnRzcHJlY2hlbmRlbiBUeXBzIGluc3RhbnppaWVyZW4uIEYmdXVtbDtyIHdlaXRlcmUgSW5mb3JtYXRpb25lbiBzZWhlbiBTaWUgc2ljaCBiaXR0ZSBkZW4gQ29kZSBpbSBWZXJ6ZWljaG5pcyBGb3JtT2JqZWN0cyBhbi48L3A+DQo8aDM+U21hcnR5LUVyd2VpdGVydW5nZW48L2gzPg0KPHA+RGllc2VzIE1vZHVsIHN0ZWxsdCBlaW5lIHBhYXIgU21hcnR5LUVyd2VpdGVydW5nZW4genVyIFZlcndlbmR1bmcgaW4gYW5kZXJlbiBNb2R1bGVuIGJlcmVpdCwgZGllIGltIGZvbGdlbmRlbiBiZXNjaHJpZWJlbiB3ZXJkZW46PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPkJlaXNwaWVsOiA8Y29kZT57Y2dlcnJvcn1EaWVzIGlzdCBlaW4gRmVobGVydGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvZGVyOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsZSBQYXJhbWV0ZXI6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSAmdXVtbDtiZXJzY2hyZWlidCBkZW4gdm9yZ2VnZWJlbmVuIEtsYXNzZW5uYW1lbiBkZXMgVGVtcGxhdGVzLg0KPC9wPg0KPHA+QmVzY2hyZWlidW5nOiBEaWVzZXMgYmxvY2stUGx1Z2luIHZlcndlbmRldCBkYXMgZXJyb3ItVGVtcGxhdGUsIHVtIGVpbmUgRmVobGVybmFjaHJpY2h0IGFuenV6ZWlnZW4uIERpZXMgaXN0IHZvbiBkZXIgQWRtaW5pc3RyYXRpb24gZGVzIENHRXh0ZW5zaW9ucy1Nb2R1bHMgbSZvdW1sO2dsaWNoLjwvcD4NCjwvdWw+DQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5EaWVzZXMgTW9kdWwgYmVpbmhhbHRldCBrZWluZW4ga29tbWVyemllbGxlbiBTdXBwb3J0LiBTaWUgayZvdW1sO25uZW4gamVkb2NoICZ1dW1sO2JlciBmb2xnZW5kZSBNJm91bWw7Z2xpY2hrZWl0ZW4gSGlsZmUgenUgZGVtIE1vZHVsIGVyaGFsdGVuOjwvcD4NCjx1bD4NCjxsaT5GJnV1bWw7ciBkaWUgbGV0enRlIFZlcnNpb24gZGllc2VzIE1vZHVscywgRkFRcywgZGVtIFZlcnNhbmQgZWluZXMgRmVobGVycmVwb3J0cyBvZGVyIGRlbSBLYXVmIGtvbW1lcnppZWxsZW4gU3VwcG9ydCBiZXN1Y2hlbiBzaWUgYml0dGUgZGllIFByb2pla3RzZWl0ZSB1bnRlciA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkVpbmUgd2VpdGVyZSBEaXNrdXNzaW9uIHp1IGRpZXNlbSBNb2R1bCBpc3QgYXVjaCBpbiBkZW4gRm9yZW4gdm9uIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZTwvYT4genUgZmluZGVuLjwvbGk+DQo8bGk+RGVyIEF1dG9yIGNhbGd1eTEwMDAsIGlzdCBoJmF1bWw7dWZpZyBpbSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+IHp1IGZpbmRlbi48L2xpPg0KPGxpPkxldHp0bGljaCBlcnJlaWNoZW4gc2llIGRlbiBBdXRvciBhdWNoICZ1dW1sO2JlciBlaW5lIGRpcmVrdGUgRW1haWwuPC9saT4gIA0KPC91bD4NCjxwPk5hY2ggZGVyIEdQTCB3aXJkIGRpZXNlIFNvZnR3YXJlIHNvIHZlciZvdW1sO2ZmZW50bGljaHQsIHdpZSBzaWUgaXN0LiBCaXR0ZSBsZXNlbiBTaWUgZGVuIExpemVuenRleHQgZiZ1dW1sO3IgZGVuIHZvbGxlbiBIYWZ0dW5nc2F1c3NjaGx1c3MuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IHVuZCBMaXplbno8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA3LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0mcXVvdDttYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZxdW90Oz5jYWxndXkxMDAwQGhvdG1haWwuY29tPC9hPi4gQWxsZSBSZWNodGUgdm9yYmVoYWx0ZW4uPC9wPg0KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHVudGVyIGRlciA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPic7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjcxNzQ2MjczNi4xMTQ3NTExODU2LjExOTUzMDE1MTkuMTE5NTM4MTI4Mi4yNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTk0Mjg0NzE1LjI0NS4xMTQudXRtY2NuPShyZWZlcnJhbCl8dXRtY3NyPWdvb2dsZS5kZXx1dG1jY3Q9L2lnfHV0bWNtZD1yZWZlcnJhbCc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/es_ES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cG8nOwokbGFuZ1sndGVtcGxhdGUnXSA9ICdQbGFudGlsbGEnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1NlbGVjY2lvbmFyIFVubyc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnRWRpdGFyIFBsYW50aWxsYSc7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdCb3JyYXIgUGxhbnRpbGxhJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdOb21icmUgZGUgUGxhbnRpbGxhJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1RleHRvIGRlIFBsYW50aWxsYSc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ05vbWJyZSBkZSBQbGFudGlsbGEnOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTnVldmEgUGxhbnRpbGxhJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnUG9yIERlZmVjdG8nOwokbGFuZ1sneWVzJ10gPSAnU2knOwokbGFuZ1snbm8nXSA9ICdObyc7CiRsYW5nWydzdWJtaXQnXSA9ICdFbnZpYXInOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2FyJzsKJGxhbmdbJ2NhbmNlbCddID0gJ0NhbmNlbGFyJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0YXInOwokbGFuZ1snYXJleW91c3VyZSddID0gJ0VzdCZhYWN1dGU7IHNlZ3Vybz8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdSZXN0YXVyYXIgYSB2YWxvcmVzIHBvciBkZWZlY3RvJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnUGxhbnRpbGxhIGRlIEVycm9yJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0V4dGVuc2lvbmVzIE1vZHVsYXJlcyBkZSBDYWxndXknOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdFc3RlIG0mb2FjdXRlO2R1bG8gZXN0JmFhY3V0ZTsgbGlzdG8gcGFyYSBzZXIgdXRpbGl6YWRvLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTm9zIHZlbW9zIG90cm8gZCZpYWN1dGU7YS4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNJm9hY3V0ZTtkdWxvIERlc2luc3RhbGFkby4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnVmVyc2lvbiBkZSBlc3RlIG0mb2FjdXRlO2R1bG8gaW5zdGFsYWRhOiAlcyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQcmVmZXJlbmNpYXMgQWN0dWFsaXphZGFzLic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc28gRGVuZWdhZG8uIFBvciBmYXZvciByZXZpc2Ugc3VzIHBlcm1pc29zLic7CiRsYW5nWydlcnJvciddID0gJyZpZXhjbDtFcnJvciEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNJm9hY3V0ZTtkdWxvIGFjdHVhbGl6YWRvIGEgdmVyc2lvbiAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdFc3RlIG0mb2FjdXRlO2R1bG8gZXMgdW5hIGxpYnJlcmlhIGRlIGNsYXNlcyBwaHAgdXNhZGFzIHBhcmEgY29uc3RydWlyIGZvcm11bGFyaW9zIGF2YW56YWRvcyc7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPiZpcXVlc3Q7UXUmZWFjdXRlOyBIYWNlIEVzdG8/PC9oMz4NCjxwPkVzdGUgbSZvYWN1dGU7ZHVsbyBwcm92ZWUgdGFncyBhcGkgeSBzbWFydHkgZGUgY29udmVuaWVuY2lhIGVuIGVsIHVzbyBkZSBvdHJvcyBtJm9hY3V0ZTtkdWxvcy4gIFRpZW5lIGVsIHMmb2FjdXRlO2xvIHNlbnRpZG8gZGUgc2VyIHVuYSBjbGFzZSBkZSBiYXNlIHkgdW5hIGNsYXNlIGRlIHV0aWxpZGFkIHBhcmEgb3Ryb3MgbSZvYWN1dGU7ZHVsb3MuPC9wPg0KPGgzPkMmb2FjdXRlO21vIFVzbyBhIEVzdG88L2gzPg0KPHA+QnVlbm8sIHVzdGVkIGNvbWllbnphIGVsIGRlc2Fycm9sbG8gZGUgc3UgcHJvcGlvIG0mb2FjdXRlO2R1bG8gKHlvIHN1Z2llcm8gaGFjZXJsbyBjb24gZWwgbSZvYWN1dGU7ZHVsbyBTa2VsZXRvbiksIHkgZW50b25jZXMgY3VhbmRvIHVzdGVkIG5lY2VzaXRlIHVzYXIgdW4gb2JqZXRvIGZvcm11bGFyaW8gYXZhbnphZG8gZGUgZXN0YSBsaWJyZXImaWFjdXRlO2EsIHNpbXBsZW1lbnRlIGRlYmUgaGFjZXIgcXVlIHN1IG0mb2FjdXRlO2R1bG8gc2VhIGRlcGVuZGllbnRlIGRlbCBGb3JtT2JqZWN0cywgeSBsdWVnbyBpbnN0YW5jaWFyIHVuIG9iamV0byBkZWwgdGlwbyBhcHJvcGlhZG8uICBWZWEgZWwgYyZvYWN1dGU7ZGlnbyBkZW50cm8gZGVsIGRpcmVjdG9yaW8gZGUgRm9ybU9iamVjdHMgcG9yIGluc3RydWNjaW9uZXMgZGUgdXNvLjwvcD4NCjxoMz5BZ3JlZ2Fkb3MgU21hcnR5PC9oMz4NCjxwPkVzdGUgbSZvYWN1dGU7ZHVsbyBhZ3JlZ2EgdW5hcyBwb2NhcyBldGlxdWV0YXMgc21hcnR5IHBhcmEgc2VyIHVzYWRhcyBlbiBvdHJvcyBtJm9hY3V0ZTtkdWxvcy4gU2UgbGlzdGFuIHkgZGVzY3JpYmVuIGEgY29udGludWFjaSZvYWN1dGU7bjo8L3A+DQo8dWw+DQo8bGk+Y2dlcnJvciAtIDxlbT5ibG9jazwvZW0+IHBsdWdpbg0KPHA+aS5lOiA8Y29kZT57Y2dlcnJvcn1Fc3RlIGVzIHRleHRvIGRlIGVycm9yey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSByZWVtcGxhemEgZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHBvciBkZWZlY3RvIGVuIGxhIHBsYW50aWxsYS4NCjwvcD4NCjxwPkRlc2NyaXBjaSZvYWN1dGU7bjogRXN0ZSBwbHVnaW4gYmxvY2sgdXNhIGxhIHBsYW50aWxsYSBkZSBlcnJvciAoY29uZmlndXJhYmxlIGRlc2RlIGxhIGludGVyZmFzZSBkZSBhZG1pbmlzdHJhY2kmb2FjdXRlO24gZGUgQ0dFeHRlbnNpb25zKSBwYXJhIG1vc3RyYXIgdW4gbWVuc2FqZSBkZSBlcnJvci48L3A+DQo8L3VsPg0KPGgzPlNvcG9ydGU8L2gzPg0KPHA+RXN0ZSBtJm9hY3V0ZTtkdWxvIG5vIGluY2x1eWUgc29wb3J0ZSBjb21lcmNpYWwuIFNpbiBlbWJhcmdvLCBoYXkgdW4gc2luIG4mdWFjdXRlO21lcm8gZGUgcmVjdXJzb3MgZGlzcG9uaWJsZXMgcGFyYSBheXVkYXIgYSB1c3RlZCBjb24gJmVhY3V0ZTtsOjwvcD4NCjx1bD4NCjxsaT5Qb3IgbGEgdmVyc2kmb2FjdXRlO24gJnVhY3V0ZTtsdGltYSBkZSBlc3RlIG0mb2FjdXRlO2R1bG8sIEZBUXMsIHBhcmEgcHJlc2VudGFyIHVuIGFyY2hpdm8gZGUgSW5mb3JtZSBkZSBCdWcgbyBjb21wcmFyIHNvcG9ydGUgY29tZXJjaWFsLCBwb3IgZmF2b3IgdmlzaXRlIGVsIHNpdGlvIHdlYiBkZWwgbSZvYWN1dGU7ZHVsbyBlbiA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZW0mYWFjdXRlO3MgZWwgaW50ZXJjYW1iaW8gZGUgaWRlYXMgcmVzcGVjdG8gYSBlc3RlIG0mb2FjdXRlO2R1bG8gc2UgcHVlZGUgcmVhbGl6YXIgdmlzaXRhbmRvIGEgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Rm9ybyBkZSBDTVMgTWFkZSBTaW1wbGU8L2E+LjwvbGk+DQo8bGk+RWwgYXV0b3IsIGNhbGd1eTEwMDAsIGNvbiBmcmVjdWVuY2lhIHB1ZWRlIGVuY29udHJhcmxvIGVuIGVsIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5GaW5hbG1lbnRlLCBwdWVkZSB0ZW5lciBhbGcmdWFjdXRlO24gJmVhY3V0ZTt4aXRvIGVudmlhbmRvIHVuIGVtYWlsIGFsIGF1dG9yIGVuIGZvcm1hIGRpcmVjdGEuPC9saT4NCjwvdWw+DQo8cD5EZSBhY3VlcmRvIGNvbiBsYSBHUEwsIGVzdGUgc29mdHdhcmUgc2UgcHJvdmVlIGNvbW8gZXMuIFBvciBmYXZvciBsZWEgZWwgdGV4dG8gZGUgbGEgbGljZW5jaWEgcG9yIGNvbXBsZXRvIHBhcmEgY29ub2NlciBzdXMgYWZpcm1hY2lvbmVzLjwvcD4NCjxoMz5Db3B5cmlnaHQgeSBMaWNlbmNpYTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIFRvZG9zIGxvcyBEZXJlY2hvcyBSZXNlcnZhZG9zLjwvcD4NCjxwPkVzdGUgbSZvYWN1dGU7ZHVsbyBzZSBoYSByZWFsaXphZG8gYmFqbyBsYSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5MaWNlbmNpYSBQJnVhY3V0ZTtibGljYSBHTlU8L2E+LiBVc3RlZCBkZWJlIGVzdGFyIGRlIGFjdWVyZG8gY29uIGxhIGxpY2VuY2lhIGFudGVzIGRlIHVzYXIgZWwgbSZvYWN1dGU7ZHVsby48L3A+DQonOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My44MDU2NDE5NTQuMTE5MjQ3NTA0OS4xMTk2NDk5MzE2LjExOTY1MDc0NTguNzQnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTk2NDk2MDgzLjcyLjE1LnV0bWNjbj0ob3JnYW5pYyl8dXRtY3NyPWdvb2dsZXx1dG1jdHI9Y21zIG1zIHRlbXBsYXRlc3x1dG1jbWQ9b3JnYW5pYyc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fi_FI.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnUG9oamEnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1ZhbGl0c2UgeWtzaSc7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnTXVva2thYSBwb2hqYWEnOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnUG9pc3RhIHBvaGphJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdQb2hqYW4gbmltaSc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdQb2hqYW4ga29vZGknOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdQb2hqYW4gbmltaSc7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdVdXNpIHBvaGphJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnT2xldHVzJzsKJGxhbmdbJ3llcyddID0gJ0t5bGwmYXVtbDsnOwokbGFuZ1snbm8nXSA9ICdFaSc7CiRsYW5nWydzdWJtaXQnXSA9ICdMJmF1bWw7aGV0JmF1bWw7JzsKJGxhbmdbJ2FwcGx5J10gPSAnT3RhIGsmYXVtbDt5dHQmb3VtbDsmb3VtbDtuJzsKJGxhbmdbJ2NhbmNlbCddID0gJ1BlcnUnOwokbGFuZ1snZWRpdCddID0gJ011b2trYWEnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ09sZXRrbyB2YXJtYT8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdOb2xsYWEgb2xldHVzIHBvaGpha3NpJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnVmlyaGUgcG9oamEnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBNb2R1bGUgRXh0ZW5zaW9ucyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01vZHVsaSBvbiB2YWxtaXMgayZhdW1sO3l0ZXR0JmF1bWw7diZhdW1sO2tzaS4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ04mYXVtbDtoZCZhdW1sOyZhdW1sO24gdGFhcyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnVmlyaGUhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnVGhpcyBtb2R1bGUgaXMgYSBsaWJyYXJ5IG9mIHBocCBjbGFzc2VzIHVzZWQgdG8gYnVpbGQgYWR2YW5jZWQgZm9ybXMnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaSYjMDM5O3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4NCjwvcD4NCjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/it_IT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUnOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1NlbGV6aW9uYSBVbm8nOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ01vZGlmaWNhIE1vZGVsbG8nOwokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnQ2FuY2VsbGEgTW9kZWxsbyc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTm9tZSBNb2RlbGxvJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1Rlc3RvIE1vZGVsbG8nOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdOb21lIE1vZGVsbG8nOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTnVvdm8gTW9kZWxsbyc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1ByZWRlZmluaXRvJzsKJGxhbmdbJ3llcyddID0gJ1MmaWdyYXZlOyc7CiRsYW5nWydubyddID0gJ05vJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ0ludmlhJzsKJGxhbmdbJ2FwcGx5J10gPSAnQXBwbGljYSc7CiRsYW5nWydjYW5jZWwnXSA9ICdDYW5jZWxsYSc7CiRsYW5nWydlZGl0J10gPSAnTW9kaWZpY2EnOwokbGFuZ1snYXJleW91c3VyZSddID0gJ1NpZXRlIHNpY3VyaT8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdSZWltcG9zdGEgYWkgdmFsb3JpIHByZWRlZmluaXRpJzsKJGxhbmdbJ2Vycm9yX3RlbXBsYXRlJ10gPSAnRXJyb3JlIE1vZGVsbG8nOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnQ2FsZ3V5cyBNb2R1bGUgRXh0ZW5zaW9ucyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1F1ZXN0byBtb2R1bG8gJmVncmF2ZTsgcHJvbnRvIGFsbCYjMDM5O3Vzby4gUGFydGVuemEhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdWZWRpIGRpIG51b3ZvIGZyYSBxdWFsY2hlIGdpb3Jubyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsbyBkaXNpbnN0YWxsYXRvLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdWZXNyaW9uZSBkZWwgbW9kdWxvICVzIGluc3RhbGxhdG8uJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmVuemUgbW9kdWxvIGFnZ2lvcm5hdGUuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2Vzc28gbmVnYXRvLiBTaSBwcmVnYSBkaSBjb250b2xsYXJlIGkgdm9zdHJpIHBlcm1lc3NpLic7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yZSEnOwokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bG8gYWdnaW9ybmF0byBhbGxhIHZlcnNpb25lICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1F1ZXN0byBtb2R1bG8gJmVncmF2ZTsgdW5hIGxpYnJlcmlhIGRpIGNsYXNzaSBwaHAgdXNhdGUgcGVyIGNvc3RydWlyZSBmb3JtIGF2YW56YXRpJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDEuMC4wLiBNYXJjaCAyMDA3LiAgSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMS4gQXByaWwgMjAwNy4gIEZpeGVzIHRvIENyZWF0ZUltYWdlTGluazwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMi4gQXByaWwgMjAwNy4gIENyZWF0ZUltYWdlTGluayB3aWxsIG5vdyB3b3JrIG9uIHRoZSBmcm9udGVuZC48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjMuIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBhcHBseSBidXR0b25zIHRvIG5ldyB0ZW1wbGF0ZXMuPC9saT4NCjxsaT5WZXJzaW9uIDEuMS4gICBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgZGVmYXVsdCBmcm9udGVuZCBlcnJvciBoYW5kbGluZyBwbHVnaW4uPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPlRoaXMgbW9kdWxlIG1lcmVseSBwcm92aWRlcyBjb252ZW5pZW5jZSBhcGkmIzAzOTtzIGFuZCBzbWFydHkgdGFncyBmb3IgdXNlIGluIG90aGVyIG1vZHVsZXMuICBJdCBpcyBtZWFudCBzb2xlbHkgYXMgYSBiYXNlIGNsYXNzIGFuZCB1dGlsaXR5IGNsYXNzIGZvciBvdGhlciBtb2R1bGVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2VsbCwgeW91IHN0YXJ0IHlvdXIgb3duIG1vZHVsZSAoSSBzdWdnZXN0IHN0YXJ0aW5nIHdpdGggdGhlIFNrZWxldG9uIG1vZHVsZSksIGFuZCB0aGVuIHdoZW4geW91IG5lZWQgdG8gdXNlIGFuIGFkdmFuY2VkIGZvcm0gb2JqZWN0IGZyb20gdGhpcyBsaWJyYXJ5LCBzaW1wbHkgbWFrZSB5b3VyIG1vZHVsZSBkZXBlbmRhbnQgdXBvbiBGb3JtT2JqZWN0cywgYW5kIHRoZW4gaW5zdGFudGlhdGUgYW4gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgU2VlIHRoZSBjb2RlIGluc2lkZSB0aGUgRm9ybU9iamVjdHMgZGlyZWN0b3J5IGZvciB1c2FnZSBpbnN0cnVjdGlvbnMuPC9wPg0KPGgzPlNtYXJ0eSBBZGRvbnM8L2gzPg0KPHA+VGhpcyBtb2R1bGUgYWRkcyBhIGZldyBzbWFydHkgY29udmVuaWVuY2VzIGZvciB1c2Ugd2l0aCBvdGhlciBtb2R1bGVzLiBUaGV5IGFyZSBsaXN0ZWQgYW5kIGRlc2NyaWJlZCBoZXJlOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5pLmU6IDxjb2RlPntjZ2Vycm9yfVRoaXMgaXMgZXJyb3IgdGV4dHsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5vcHRpb25hbCBwYXJhbWV0ZXJzOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY2xhc3MgbmFtZSBpbiB0aGUgdGVtcGxhdGUuDQo8L3A+DQo8cD5EZXNjcmlwdGlvbjogVGhpcyBibG9jayBwbHVnaW4gdXNlcyB0aGUgZXJyb3IgdGVtcGxhdGUgKGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBDR0V4dGVuc2lvbnMgYWRtaW4gaW50ZXJmYWNlKSB0byBkaXNwbGF5IGFuIGVycm9yIG1lc3NhZ2UuPC9wPg0KPC91bD4NCjxoMz5TdXBwb3J0PC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDA3LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0mcXVvdDttYWlsdG86Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZxdW90Oz5jYWxndXkxMDAwQGhvdG1haWwuY29tPC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuODQ2NDc4NzMyLjExODczOTg2ODIuMTE5NTE2MDIxNy4xMTk2MDk1MjgwLjIxJzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTE5MjIyNzUyMy4xNi41LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1tdXBwZXRzdWljaWRlLmNvbXx1dG1jY3Q9L2FkbWluL21vZHVsZWludGVyZmFjZS5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnR3J1cHBlJzsKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnTWFsJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdWZWxnIGVuJzsKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyIG1hbCc7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdTbGV0dCBtYWwnOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlbmFtZSddID0gJ01hbCBuYXZuJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ01hbCB0ZWtzdCc7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ01hbCBuYXZuJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ055IG1hbCc7CiRsYW5nWydwcm9tcHRfZGVmYXVsdCddID0gJ1N0YW5kYXJkJzsKJGxhbmdbJ3llcyddID0gJ0phJzsKJGxhbmdbJ25vJ10gPSAnTmVpJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NlbmQnOwokbGFuZ1snYXBwbHknXSA9ICdVdGYmb3NsYXNoO3InOwokbGFuZ1snY2FuY2VsJ10gPSAnQXZicnl0JzsKJGxhbmdbJ2VkaXQnXSA9ICdSZWRpZ2VyJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdFciBkdSBzaWtrZXI/JzsKJGxhbmdbJ3Jlc2V0dG9mYWN0b3J5J10gPSAnVGlsYmFrZXN0aWxsIHRpbCBmYWJyaWtrc3RhbmRhcmQnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdGZWlsIE1hbCc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIE1vZHVsZSBFeHRlbnNpb25zICc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0Rlbm5lIG1vZHVsZW4gZXIgZmVyZGlnIHRpbCBicnVrLiBLb2QgaSB2ZWkhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdTZXIgZGVnIGlnamVuIGVuIGFubmVuIGRhZyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGF2aW5zdGFsbGVydCc7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bCB2ZXJzam9uICVzIGluc3RhbGxlcnQnOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWwgaW5uc3RpbGxpbmdlciBvcHBkYXRlcnQuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FkZ2FuZyBuZWt0ZXQuIFZlbm5saWdzdCBzamVrayBkaW5lIHJldHRpZ2hldGVyLic7CiRsYW5nWydlcnJvciddID0gJ0ZlaWwhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgb3BwZ3JhZGVydCB0aWwgdmVyc2pvbiAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdEZW5uZSBtb2R1bGVuIGVyIGV0IGJpYmxpb3RlayBhdiBwaHAga2xhc3NlciBicnVrdCB0aWwgJmFyaW5nOyBieWdnZSBhdmFuc2VydGUgc2tqZW1hZXInOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+VGhpcyBtb2R1bGUgbWVyZWx5IHByb3ZpZGVzIGNvbnZlbmllbmNlIGFwaSYjMDM5O3MgYW5kIHNtYXJ0eSB0YWdzIGZvciB1c2UgaW4gb3RoZXIgbW9kdWxlcy4gIEl0IGlzIG1lYW50IHNvbGVseSBhcyBhIGJhc2UgY2xhc3MgYW5kIHV0aWxpdHkgY2xhc3MgZm9yIG90aGVyIG1vZHVsZXMuPC9wPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5XZWxsLCB5b3Ugc3RhcnQgeW91ciBvd24gbW9kdWxlIChJIHN1Z2dlc3Qgc3RhcnRpbmcgd2l0aCB0aGUgU2tlbGV0b24gbW9kdWxlKSwgYW5kIHRoZW4gd2hlbiB5b3UgbmVlZCB0byB1c2UgYW4gYWR2YW5jZWQgZm9ybSBvYmplY3QgZnJvbSB0aGlzIGxpYnJhcnksIHNpbXBseSBtYWtlIHlvdXIgbW9kdWxlIGRlcGVuZGFudCB1cG9uIEZvcm1PYmplY3RzLCBhbmQgdGhlbiBpbnN0YW50aWF0ZSBhbiBvYmplY3Qgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUuICBTZWUgdGhlIGNvZGUgaW5zaWRlIHRoZSBGb3JtT2JqZWN0cyBkaXJlY3RvcnkgZm9yIHVzYWdlIGluc3RydWN0aW9ucy48L3A+DQo8aDM+U21hcnR5IEFkZG9uczwvaDM+DQo8cD5UaGlzIG1vZHVsZSBhZGRzIGEgZmV3IHNtYXJ0eSBjb252ZW5pZW5jZXMgZm9yIHVzZSB3aXRoIG90aGVyIG1vZHVsZXMuIFRoZXkgYXJlIGxpc3RlZCBhbmQgZGVzY3JpYmVkIGhlcmU6PC9wPg0KPHVsPg0KPGxpPmNnZXJyb3IgLSA8ZW0+YmxvY2s8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9VGhpcyBpcyBlcnJvciB0ZXh0ey9jZ2Vycm9yfTwvY29kZT48YnIvPg0KICAgIG9yOiA8Y29kZT57Y2dlcnJvcn17JGVycm9ydGV4dHZhcn17L2NnZXJyb3J9PC9icj4NCjwvcD4NCjxwPm9wdGlvbmFsIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVycmlkZSB0aGUgZGVmYXVsdCBjbGFzcyBuYW1lIGluIHRoZSB0ZW1wbGF0ZS4NCjwvcD4NCjxwPkRlc2NyaXB0aW9uOiBUaGlzIGJsb2NrIHBsdWdpbiB1c2VzIHRoZSBlcnJvciB0ZW1wbGF0ZSAoY29uZmlndXJhYmxlIGZyb20gdGhlIENHRXh0ZW5zaW9ucyBhZG1pbiBpbnRlcmZhY2UpIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZS48L3A+DQo8L3VsPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PiZhbXA7bHQ7Y2FsZ3V5MTAwMEBob3RtYWlsLmNvbSZhbXA7Z3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTI1NDA2ODEyLjExODgwNzc0MTcuMTE5NjI4NjczNS4xMTk2Mzc4NDEzLjI4MCc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjExOTYwMDkzNjkuMjcwLjEzLnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1kZXYuY21zbWFkZXNpbXBsZS5vcmd8dXRtY2N0PS9mcnMvfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2phYmxvb24nOwokbGFuZ1snc2VsZWN0X29uZSddID0gJ1NlbGVjdGVlciAmZWFjdXRlOyZlYWN1dGU7bic7CiRsYW5nWydwcm9tcHRfZWRpdHRlbXBsYXRlJ10gPSAnQmV3ZXJrIHNqYWJsb29uJzsKJGxhbmdbJ3Byb21wdF9kZWxldGV0ZW1wbGF0ZSddID0gJ1ZlcndpamRlciBzamFibG9vbic7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnU2phYmxvb25uYWFtJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZSddID0gJ1NqYWJsb29udGVrc3QnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdTamFibG9vbm5hYW0nOwokbGFuZ1sncHJvbXB0X25ld3RlbXBsYXRlJ10gPSAnTmlldXcgc2phYmxvb24nOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdTdGFuZGFhcmQnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWUnOwokbGFuZ1snc3VibWl0J10gPSAnVmVyc3R1dXInOwokbGFuZ1snYXBwbHknXSA9ICdUb2VwYXNzZW4nOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlZXInOwokbGFuZ1snZWRpdCddID0gJ0Jld2Vyayc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnV2VldCB1IGhldCB6ZWtlcj8nOwokbGFuZ1sncmVzZXR0b2ZhY3RvcnknXSA9ICdIZXJzdGVsIG5hYXIgZmFicmlla3NzdGFuZGFhcmQnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdGb3V0ZW5zamFibG9vbic7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDTSBFeHRlbnNpb25zJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGV6ZSBtb2R1bGUgaXMgZ2VyZWVkIHZvb3IgZ2VicnVpay4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RvdCB6aWVucyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBnZWRlaW5zdGFsZWVyZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxldmVyc2llICVzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIHZvb3JrZXVyZW4gYmlqZ2V3ZXJrdC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnVG9lZ2FuZyBnZXdlaWdlcmQuIENvbnRyb2xlZXIgZGUgcmVjaHRlbi4nOwokbGFuZ1snZXJyb3InXSA9ICdGb3V0ISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSBiaWpnZXdlcmt0IG5hYXIgdmVyc2llICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0RlIG1vZHVsZSBpcyBlZW4gYmlibGlvdGhlZWsgbWV0IHBocC1jbGFzc2VzIHZvb3IgaGV0IGJvdXdlbiB2YW4gdWl0Z2VicmVpZGUgZm9ybXVsaWVyZW4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPg0KPGxpPlZlcnNpb24gMS4wLjAuIE1hcmNoIDIwMDcuICBJbml0aWFsIFJlbGVhc2UuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xLiBBcHJpbCAyMDA3LiAgRml4ZXMgdG8gQ3JlYXRlSW1hZ2VMaW5rPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yLiBBcHJpbCAyMDA3LiAgQ3JlYXRlSW1hZ2VMaW5rIHdpbGwgbm93IHdvcmsgb24gdGhlIGZyb250ZW5kLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMy4gU2VwdGVtYmVyIDIwMDcuICBBZGRzIGFwcGx5IGJ1dHRvbnMgdG8gbmV3IHRlbXBsYXRlcy48L2xpPg0KPGxpPlZlcnNpb24gMS4xLiAgIFNlcHRlbWJlciAyMDA3LiAgQWRkcyBkZWZhdWx0IGZyb250ZW5kIGVycm9yIGhhbmRsaW5nIHBsdWdpbi48L2xpPg0KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XYXQgZG9ldCBoZXQ/PC9oMz4NCjxwPkRlemUgbW9kdWxlIGxldmVydCBzbGVjaHRzIGhhbmRpZ2UgQVBJJiMwMzk7cyBlbiBzbWFydHkgdGFncyBvbSB0ZSBnZWJydWlrZW4gaW4gYW5kZXJlIG1vZHVsZXMuICBIZXQgaXMgdWl0c2x1aXRlbmQgYmVkb2VsZCBhbHMgYmFzaXMtY2xhc3MgZW4gdXRpbGl0eS1jbGFzcyB2b29yIGFuZGVyZSBtb2R1bGVzLjwvcD4NCjxoMz5Ib2UgZ2VicnVpa3QgdSBoZXQ/PC9oMz4NCjxwPlUgYmVnaW50IG1ldCB1dyBlaWdlbiBtb2R1bGUgKGlrIHN0ZWwgdm9vciBvbSB0ZSBiZWdpbm5lbiBtZXQgZGUgU2tlbGV0b24tbW9kdWxlKSBlbiBhbHMgdSBlZW4gdWl0Z2VicmVpZCBmb3JtdWxpZXJvYmplY3QgdWl0IGRlemUgYmlibGlvdGhlZWsgbm9kaWcgaGVlZnQsIGRhbiBtYWFrdCB1IHV3IG1vZHVsZSBhZmhhbmtlbGlqayB2YW4gRm9ybU9iamVjdHMsIHZlcnZvbGdlbnMgaW5zdGFudGllZXJ0IHUgZWVuIG9iamVjdCB2YW4gaGV0IGp1aXN0ZSB0eXBlLiBaaWUgZGUgY29kZSBpbiBkZSBGb3JtT2JqZWN0cy1tYXAgdm9vciBnZWJydWlrc2luc3RydWN0aWVzLjwvcD4NCjxoMz5TbWFydHkgQWRkb25zPC9oMz4NCjxwPkRlemUgbW9kdWxlIHZvZWd0IGVua2VsZSBzbWFydHkgaGFuZGlnaGVkZW4gdG9lIHZvb3IgaGV0IGdlYnJ1aWsgbWV0IGFuZGVyZSBtb2R1bGVzLiBaZSB6aWpuIGhpZXJvbmRlciBvcGdlc29tZCBlbiBiZXNjaHJldmVuOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2NrPC9lbT4gcGx1Z2luDQo8cD5kdXM6IDxjb2RlPntjZ2Vycm9yfURpdCBpcyBlZW4gZm91dG1lbGRpbmd7L2NnZXJyb3J9PC9jb2RlPjxici8+DQogICAgb2Y6IDxjb2RlPntjZ2Vycm9yfXskZXJyb3J0ZXh0dmFyfXsvY2dlcnJvcn08L2JyPg0KPC9wPg0KPHA+b3B0aW9uZWxlIHBhcmFtZXRlcnM6ICYjMDM5O2Vycm9yY2xhc3MmIzAzOTsgPSBvdmVyc2NocmlqZiBkZSBzdGFuZGFhcmQgY2xhc3MtbmFhbSBpbiBoZXQgc2phYmxvb24uDQo8L3A+DQo8cD5CZXNjaHJpanZpbmc6IERlemUgYmxvY2sgcGx1Z2luIGdlYnJ1aWt0IGRlIGZvdXRlbnNqYWJsb29uIChjb25maWd1cmVlcmJhYXIgdmlhIGhldCBDR0V4dGVuc2lvbnMtYmVoZWVycGFuZWVsKSBvbSBlZW4gZm91dG1lbGRpbmcgdGUgdG9uZW4uPC9wPg0KPC91bD4NCjxoMz5PbmRlcnN0ZXVuaW5nPC9oMz4NCjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4NCjx1bD4NCjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSZxdW90O2h0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPg0KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmcmcXVvdDs+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4NCjxsaT5UaGUgYXV0aG9yKHMpLCBjYWxndXkgZXQgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0mcXVvdDtpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMmcXVvdDs+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPg0KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yKHMpIGRpcmVjdGx5LjwvbGk+ICANCjwvdWw+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQNCm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCZxdW90Oz5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTU4MTA0MzUyMi4xMTg1MTA4NjU5LjExOTQ0NjU1MTIuMTE5NDUwNDQ5OS4yNjgnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTk0NTA0NDk5LjI2OC4yNS51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9c3ltYmFsb28uY29tfHV0bWNjdD0vbmwvfHV0bWNtZD1yZWZlcnJhbCc7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ro_RO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RlbXBsYXRlJ10gPSAnU2FibG9uJzsKJGxhbmdbJ3NlbGVjdF9vbmUnXSA9ICdBbGVnZXRpIHVudWwoYSknOwokbGFuZ1sncHJvbXB0X2VkaXR0ZW1wbGF0ZSddID0gJ0VkaXRlYXphIHNhYmxvbic7CiRsYW5nWydwcm9tcHRfZGVsZXRldGVtcGxhdGUnXSA9ICdTdGVyZ2Ugc2FibG9uJzsKJGxhbmdbJ3Byb21wdF90ZW1wbGF0ZW5hbWUnXSA9ICdOdW1lIHNhYmxvbic7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGUnXSA9ICdUZXN0IHNhYmxvbic7CiRsYW5nWydwcm9tcHRfbmFtZSddID0gJ051bWUgc2FibG9uJzsKJGxhbmdbJ3Byb21wdF9uZXd0ZW1wbGF0ZSddID0gJ1NhYmxvbiBub3UnOwokbGFuZ1sncHJvbXB0X2RlZmF1bHQnXSA9ICdJbXBsaWNpdCc7CiRsYW5nWyd5ZXMnXSA9ICdEYSc7CiRsYW5nWydubyddID0gJ051JzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1RyaW1pdGUnOwokbGFuZ1snYXBwbHknXSA9ICdBcGxpY2EnOwokbGFuZ1snY2FuY2VsJ10gPSAnQW51bGVhemEnOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlYXphJzsKJGxhbmdbJ2FyZXlvdXN1cmUnXSA9ICdTdW50ZXRpIHNpZ3VyKGEpPyc7CiRsYW5nWydyZXNldHRvZmFjdG9yeSddID0gJ1Jlc3RhYmlsaXJlIHZhbG9yaSBkZSBmYWJyaWNhcmUnOwokbGFuZ1snZXJyb3JfdGVtcGxhdGUnXSA9ICdTYWJsb24gZXJvYXJlJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0V4dGVuc2lpIG1vZHVsIENhbGd1eXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdBY2VzdCBtb2R1bCBlc3RlIHByZWdhdGl0IHBlbnRydSBmb2xvc2lyZS4gIENvZGFyZSB1c29hcmEhJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdMYSByZXZlZGVyZSc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGRlemluc3RhbGF0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdWZXJzaXVuZWEgJXMgYSBtb2R1bHVpIGEgZm9zdCBpbnN0YWxhdGEuJzsKJGxhbmdbJ3ByZWZzdXBkYXRlZCddID0gJ1ByZWZlcmludGUgbW9kdWwgYWN0dWFsaXphdGUuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzIGludGVyemlzLiBWZXJpZmljYXRpLXZhIHBlcm1pc2l1bmlsZSB2YSByb2cuJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJvYXJlISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsIGFjdHVhbGl6YXQgbGEgdmVyc2l1bmVhICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0FjZXN0IG1vZHVsIGVzdGUgbyBiaWJsaW90ZWNhIGRlIGNsYXNlIHBocCBmb2xvc2l0ZSBwZW50cnUgY29uc3RydWlyZWEgZGUgZm9ybXVsYXJlIGF2YW5zYXRlLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zLiBTZXB0ZW1iZXIgMjAwNy4gIEFkZHMgYXBwbHkgYnV0dG9ucyB0byBuZXcgdGVtcGxhdGVzLjwvbGk+DQo8bGk+VmVyc2lvbiAxLjEuICAgU2VwdGVtYmVyIDIwMDcuICBBZGRzIGRlZmF1bHQgZnJvbnRlbmQgZXJyb3IgaGFuZGxpbmcgcGx1Z2luLjwvbGk+DQo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPkNlIHJlYWxpemVhemEgYWNlc3QgbW9kdWw/PC9oMz4NCjxwPkFjZXN0IG1vZHVsIG9mZXJhIGluIHByaW5jaXBhbCBpbnRlcmZldGUgYXBsaWNhdGllIHNpIGV0aWNoZXRlIHNtYXJ0eSBwZW50cnUgZm9sb3NpcmVhIGxvciBpbiBhbHRlIG1vZHVsZS4gRXN0ZSBjb25zdGl0dWl0IGRpbiBjbGFzZSBkZSBiYXphIHNpIGNsYXNlIHV0aWxpdGFyZSBkaXNwb25pYmlsZSBwZW50cnUgYWx0ZSBtb2R1bGUuPC9wPg0KPGgzPkN1bSBpbCBmb2xvc2VzYzwvaDM+DQo8cD5FaSBiaW5lLCBpbmNlcGV0aSBtb2R1bHVsIGR1bW5lYXZvYXN0cmEgKHN1Z2VyZXogc2EgaW5jZXBldGkgY3UgbW9kdWx1bCBTa2VsZXRvbiksIHNpIGFwb2kgY2FuZCBkb3JpdGkgc2EgZm9sb3NpdGkgdW4gb2JpZWN0IGZvcm11bGFyIGF2YW5zYXQgZGluIGFjZWFzdGEgYmlibGlvdGVjYSwgdHJlYnVpZSBkb2FyIHNhIGZhY2V0aSBtb2R1bHVsIGR1bW5lYXZvYXN0cmEgZGVwZW5kZW50IGRpbiBGb3JtT2JqZWN0cywgc2kgc2EgaW5zdGFudGlhdGkgdW4gb2JpZWN0IGRlIHRpcHVsIGNvcmVzcHVuemF0b3IuICBWZXppIGNvZHVsIGRpbiBkaXJlY3RvcnVsIEZvcm1PYmplY3RzIHBlbnRydSBpbnN0cnVjdGl1bmkgZGUgdXRpbGl6YXJlLjwvcD4NCjxoMz5BZGRvbi11cmkgU21hcnR5PC9oMz4NCjxwPkFjZXN0IG1vZHVsIG9mZXJhIGluIHBsdXMgY2F0ZXZhIGNvbnZlbmllbnRlIHNtYXJ0eSBwZW50cnUgZm9sb3NpcmVhIGluIGFsdGUgbW9kdWxlLiBBY2VzdGVhIHN1bnQgbGlzdGF0ZSBzaSBkZXNjcmlzZSBhaWNpOjwvcD4NCjx1bD4NCjxsaT5jZ2Vycm9yIC0gPGVtPmJsb2M8L2VtPiBwbHVnaW4NCjxwPmkuZTogPGNvZGU+e2NnZXJyb3J9QWNlc3RhIGVzdGUgdGV4dHVsIGVyb3JpaXsvY2dlcnJvcn08L2NvZGU+PGJyLz4NCiAgICBvcjogPGNvZGU+e2NnZXJyb3J9eyRlcnJvcnRleHR2YXJ9ey9jZ2Vycm9yfTwvYnI+DQo8L3A+DQo8cD5wYXJhbWV0cmkgb3B0aW9uYWxpOiAmIzAzOTtlcnJvcmNsYXNzJiMwMzk7ID0gc3VwcmFzY3JpZSBudW1lbGUgY2xhc2VpIGltcGxpY2l0ZSBpbiBzYWJsb24uDQo8L3A+DQo8cD5EZXNjcmllcmU6IEFjZXN0IHBsdWdpbiBibG9jIGZvbG9zZXN0ZSBzYWJsb251bCBlcm9hcmUgKGNvbmZpZ3VyYWJpbCBkaW4gaW50ZXJmYXRhIGRlIGFkbWluaXN0cmFyZSBDR0V4dGVuc2lvbnMpIHBlbnRydSBhZmlzZWFyZWEgdW51aSBtZXNhaiBkZSBlcm9hcmUuPC9wPg0KPC91bD4NCjxoMz5TdXBvcnQ8L2gzPg0KPHA+QWNlc3QgbW9kdWwgbnUgb2ZlcmEgc3Vwb3J0IGNvbWVyY2lhbC4gVG90dXNpLCBleGlzdGEgdW4gbnVtYXIgZGlzcG9uaWJpbCBkZSByZXN1cnNlIGNhcmUgdmEgcG90IGFqdXRhOjwvcD4NCjx1bD4NCjxsaT5QZW50cnUgdWx0aW1hIHZlcnNpdW5lIGEgYWNlc3R1aSBtb2R1bCwgRkFRLXVyaSwgcmFwb3J0YXJlYSB1bnVpIEJ1ZyBzYXUgYWNoaXppdGlhIGRlIHN1cG9ydCBjb21lcmNpYWwsIHZhIHJvZyBzYSB2aXppdGF0aSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgbGEgPGEgaHJlZj0mcXVvdDtodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PmRldi5jbXNtYWRlc2ltcGxlLm9yZzwvYT4uPC9saT4NCjxsaT5EaXNjdXRpaSByZWZlcml0b2FyZSBsYSBhY2VzdCBtb2R1bCBwb3QgZmkgZ2FzaXRlIGxhIDxhIGhyZWY9JnF1b3Q7aHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7PkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+DQo8bGk+QXV0b3J1bCwgY2FsZ3V5IHNpIGFsdGlpIHBvdCBmaSBhZGVzZWEgZ2FzaXRpIGxhIDxhIGhyZWY9JnF1b3Q7aXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zJnF1b3Q7PkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4NCjxsaT5JbiBmaW5hbCwgYXRpIHB1dGVhIGF2ZWEgc3VjY2VzIHByaW4gdHJpbWl0ZXJlYSB1bnVpIGUtbWFpbCBkaXJlY3QgYXV0b3J1bHVpLjwvbGk+ICANCjwvdWw+DQo8cD5SZWZlcml0b3IgbGEgR1BMLCBhY2VzdCBzb2Z0IGVzdGUgb2Zlcml0IGFzYSBjdW0gZXN0ZS4gVmEgcm9nIHNhIGNpdGl0aSB0ZXh0dWwgbGljZW50ZWkgcGVudHJ1IGRpc2N1bHBhIHRvdGFsYS48L3A+DQoNCjxoMz5Db3B5cmlnaHQgc2kgTGljZW50YTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDcsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSZxdW90O21haWx0bzpjYWxndXkxMDAwQGhvdG1haWwuY29tJnF1b3Q7PjxjYWxndXkxMDAwQGhvdG1haWwuY29tPjwvYT4uIFRvYXRlIGRyZXB0dXJpbGUgcmV6ZXJ2YXRlLjwvcD4NCjxwPkFjZXN0IG1vZHVsIGEgZm9zdCBsaXZyYXQgc3ViIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkxpY2VudGEgcHVibGljYSBHTlU8L2E+LiBUcmVidWllIHNhIGZpdGkgZGUgYWNvcmQgY3UgYWNlYXN0YSBpbmFpbnRlIHNhIGZvbG9zaXRpIG1vZHVsdWwuPC9wPg0KJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNzAzMDIzOTQyLjExOTMyOTQzODYuMTE5NDYxMjc2MS4xMTk0ODY3MTQyLjI5JzsKJGxhbmdbJ3V0bXonXSA9ICcxNTY4NjEzNTMuMTE5NDUzNjMzNC4yMy41LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1kZS5mNTYyLm1haWwueWFob28uY29tfHV0bWNjdD0veW0vU2hvd0xldHRlcnx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/sv_SE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3Byb21wdF9lZGl0dGVtcGxhdGUnXSA9ICdSZWRpZ2VyYSBtYWxsJzsKJGxhbmdbJ3Byb21wdF9kZWxldGV0ZW1wbGF0ZSddID0gJ1RhIGJvcnQgbWFsbCc7CiRsYW5nWydwcm9tcHRfdGVtcGxhdGVuYW1lJ10gPSAnTWFsbG5hbW4nOwokbGFuZ1sncHJvbXB0X3RlbXBsYXRlJ10gPSAnTWFsbHRleHQnOwokbGFuZ1sncHJvbXB0X25hbWUnXSA9ICdNYWxsbmFtbic7CiRsYW5nWydwcm9tcHRfbmV3dGVtcGxhdGUnXSA9ICdOeSBtYWxsJzsKJGxhbmdbJ3Byb21wdF9kZWZhdWx0J10gPSAnU3RhbmRhcmQnOwokbGFuZ1sneWVzJ10gPSAnSmEnOwokbGFuZ1snbm8nXSA9ICdOZWonOwokbGFuZ1snc3VibWl0J10gPSAnU2tpY2thJzsKJGxhbmdbJ2NhbmNlbCddID0gJyZBcmluZztuZ3JhJzsKJGxhbmdbJ2VkaXQnXSA9ICdSZWRpZ2VyYSc7CiRsYW5nWydhcmV5b3VzdXJlJ10gPSAnJkF1bWw7ciBkdSBzJmF1bWw7a2VyPyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDYWxndXlzIG1vZHVsdGlsbCZhdW1sO2dnJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGVuIGgmYXVtbDtyIG1vZHVsZW4gJmF1bWw7ciBmJmF1bWw7cmRpZyBhdHQgYW52JmF1bWw7bmRhcy4gS29kYSBwJmFyaW5nOyEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1ZpIHNlcyBuJmFyaW5nO24gZGFnJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlbiAmYXVtbDtyIGF2aW5zdGFsbGVyYWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsdmVyc2lvbiAlcyBpbnN0YWxsZXJhZC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxpbnN0JmF1bWw7bGxuaW5nYXJuYSB1cHBkYXRlcmFkZXMuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJyZBcmluZzt0a29tc3QgbmVrYWQuIFYmYXVtbDtubGlnIGtvbnRyb2xsZXJhIGRpbmEgciZhdW1sO3R0aWdoZXRlci4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWwhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlbiB1cHBncmFkZXJhZGVzIHRpbGwgdmVyc2lvbiAlcy4nOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdEZW4gaCZhdW1sO3IgbW9kdWxlbiAmYXVtbDtyIGV0dCBiaWJsaW90ZWsgbWVkIHBocC1rbGFzc2VyIHNvbSBhbnYmYXVtbDtuZHMgZiZvdW1sO3IgYXR0IGJ5Z2dhIGF2YW5jZXJhZGUgZm9ybXVsJmF1bWw7cic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+DQo8bGk+VmVyc2lvbiAxLjAuMC4gTWFyY2ggMjAwNy4gIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KPGxpPlZlcnNpb24gMS4wLjEuIEFwcmlsIDIwMDcuICBGaXhlcyB0byBDcmVhdGVJbWFnZUxpbms8L2xpPg0KPGxpPlZlcnNpb24gMS4wLjIuIEFwcmlsIDIwMDcuICBDcmVhdGVJbWFnZUxpbmsgd2lsbCBub3cgd29yayBvbiB0aGUgZnJvbnRlbmQuPC9saT4NCjwvdWw+JzsKJGxhbmdbJ2hlbHAnXSA9ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4NCjxwPk5vdGhpbmcuIEl0IG1lcmVseSBwcm92aWRlcyBzb21lIGNvbnZlbmllbnQgaGlnaGVyIGxldmVsIGZvcm0gb2JqZWN0cyBmb3IgdXNlIHdoZW4gZGV2ZWxvcGluZyB5b3VyIG93biBtb2R1bGVzLjwvcD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+V2VsbCwgeW91IHN0YXJ0IHlvdXIgb3duIG1vZHVsZSAoSSBzdWdnZXN0IHN0YXJ0aW5nIHdpdGggdGhlIFNrZWxldG9uIG1vZHVsZSksIGFuZCB0aGVuIHdoZW4geW91IG5lZWQgdG8gdXNlIGFuIGFkdmFuY2VkIGZvcm0gb2JqZWN0IGZyb20gdGhpcyBsaWJyYXJ5LCBzaW1wbHkgbWFrZSB5b3VyIG1vZHVsZSBkZXBlbmRhbnQgdXBvbiBGb3JtT2JqZWN0cywgYW5kIHRoZW4gaW5zdGFudGlhdGUgYW4gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSB0eXBlLiAgU2VlIHRoZSBjb2RlIGluc2lkZSB0aGUgRm9ybU9iamVjdHMgZGlyZWN0b3J5IGZvciB1c2FnZSBpbnN0cnVjdGlvbnMuPC9wPg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPg0KPHVsPg0KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0IG9yIGJ1eSBjb21tZXJjaWFsIHN1cHBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgY21zIGRldmVsb3BtZW50IGZvcmdlIGF0IDxhIGhyZWY9JnF1b3Q7aHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+DQo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2h0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyZxdW90Oz5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPg0KPGxpPlRoZSBhdXRob3IocyksIGNhbGd1eSBldCBhbGwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSZxdW90O2lyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyZxdW90Oz5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+DQo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IocykgZGlyZWN0bHkuPC9saT4gIA0KPC91bD4NCjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dA0Kb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KDQo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNywgUm9iZXJ0IENhbXBiZWxsIDxhIGhyZWY9JnF1b3Q7bWFpbHRvOmNhbGd1eTEwMDBAaG90bWFpbC5jb20mcXVvdDs+PGNhbGd1eTEwMDBAaG90bWFpbC5jb20+PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPg0KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMJnF1b3Q7PkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+DQonOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMTc1Nzg5MjAxLjEuMS51dG1jY249KGRpcmVjdCl8dXRtY3NyPShkaXJlY3QpfHV0bWNtZD0obm9uZSknOwokbGFuZ1sndXRtYSddID0gJzE1Njg2MTM1My4yMjU4NjIzNjMuMTE3NTc4OTIwMS4xMTc1ODkwNTIwLjExNzU5Mzg5NDYuMyc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></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[PD9waHAKCiR0aGlzLT5SZXNldEVycm9yVGVtcGxhdGUoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiR0aGlzLT5SZXNldEVycm9yVGVtcGxhdGUoKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogYWRtaW4gcGFuZWwgdGVtcGxhdGUgKn0KeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fSZuYnNwO3skcmVzZXR9PC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/dflt_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90ZW1wbGF0ZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9Jm5ic3A7eyRyZXNldH08L3A+CiAgPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/editdefaulttemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgk8aDQ+eyRkZWZhdWx0dGVtcGxhdGVmb3JtX3RpdGxlfTwvaDQ+CiAgICAgICAgPGVtPnskaW5mb190aXRsZX08L2VtPjxici8+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RlbXBsYXRlfTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JHJlc2V0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cjxici8+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPGgzPnskdGl0bGV9PC9oMz4KPC9kaXY+CnskZm9ybXN0YXJ0fXskaGlkZGVufQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdGVtcGxhdGVuYW1lfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0ZW1wbGF0ZW5hbWV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RlbXBsYXRlfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHRlbXBsYXRlfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHN1Ym1pdH17JGNhbmNlbH17JGFwcGx5fTwvcD4KPC9kaXY+CnskZm9ybWVuZH0K]]></data>
	</file>
	<file>
	  <filename>/templates/listtemplates.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aCB3aWR0aD0iNzUlIj57JG5hbWVwcm9tcHR9PC90aD4KICAgICAgPHRoPnskZGVmYXVsdHByb21wdH08L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogICB7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIiIGFzc2lnbj0ncm93Y2xhc3MnfQogICA8dHIgY2xhc3M9Inskcm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3skcm93Y2xhc3N9JzsiPgogICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICAgPHRkPnskZW50cnktPmRlZmF1bHR9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogICA8L3RyPgp7L2ZvcmVhY2h9CjwvdGFibGU+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRuZXd0ZW1wbGF0ZWxpbmt9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/orig_error_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogb3JpZ2luYWwgdGVtcGxhdGUgZm9yIGRpc3BsYXlpbmcgZnJvbnRlbmQgZXJyb3JzICp9CjxkaXYgY2xhc3M9InskY2dfZXJyb3JjbGFzc30iPnskY2dfZXJyb3Jtc2d9PC9kaXY+]]></data>
	</file>
</module>
