<?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>CMSForms</name>
	<version>1.10.18</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[Cgk8aDM+SG93IHRvIHVzZSB0aGlzIG1vZHVsZT88L2gzPgoJPHA+VGhpcyBtb2R1bGUgaXMgYWltZWQgdG8gcmVwbGFjZSB0aGUgdHJhZGl0aW9uYWwgd2F5IG9mIG1hbmlwdWxhdGUgZm9ybXMgaW4gQ01TTVMgIkFQSSIuIEl0IGFsbG93cyB5b3UgdG8gZm9jdXMgbW9yZSBvbiB5b3VyIG9iamVjdHMgYW5kIGNvZGUuPC9wPgoJCgk8aDM+UEhQIFNpZGU8L2gzPgoJPHA+VG8gY3JlYXRlIGEgZm9ybSwgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0LjwvcD4KICA8dGV4dGFyZWEgY29scz0iMjAwIiByb3dzPSIyIiBzdHlsZT0iaGVpZ2h0OjQwcHg7ICI+CiAgJGZvcm0gPSBuZXcgQ01TRm9ybSgnTXlNb2R1bGUnLCAkaWQsICdhY3Rpb24nLCAkcmV0dXJuaWQpOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybScsICRmb3JtKTsKICA8L3RleHRhcmVhPgkKICA8cD5UbyBnbyBmdXJ0ZXIsIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOjwvcD4KCTx0ZXh0YXJlYSBjb2xzPSIyMDAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oJ015TW9kdWxlJywgJGlkLCAnYWN0aW9uJywgJHJldHVybmlkKTsKICAKICAkZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc2F2ZScsJ2NhbmNlbCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ2NsYXNzJyA9PiAnZmllbGQnKSk7CiAgCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJGZvcm0pOwogIDwvdGV4dGFyZWE+CiAgPGgzPlNtYXJ0eSBzaWRlPC9oMz4KICA8Y29kZT48cHJlPgogIHtpZiBpc3NldCgkZm9ybSl9CiAgICB7aWYgJGZvcm0tJmd0O2hhc0Vycm9ycygpfSZsdDtkaXYgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7eyRmb3JtLSZndDtzaG93RXJyb3JzKCl9Jmx0Oy9kaXYmZ3Q7ey9pZn0KCXskZm9ybS0mZ3Q7Z2V0SGVhZGVycygpfQoKCXskZm9ybS0mZ3Q7c2hvd1dpZGdldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgl7JGZvcm0tJmd0O3JlbmRlckZpZWxkc2V0cyhcJiN4Mjc7Jmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlb3ZlcmZsb3cmcXVvdDsmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdldGV4dCZxdW90OyZndDslTEFCRUwlOiZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7Jmd0OyVJTlBVVCUgJmx0O2VtJmd0OyVUSVBTJSZsdDsvZW0mZ3Q7Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsgc3R5bGU9JnF1b3Q7Y29sb3I6IHJlZDsmcXVvdDsmZ3Q7JUVSUk9SUyUmbHQ7L2RpdiZndDsKCSZsdDsvZGl2Jmd0O1wmI3gyNzspfQoKCSZsdDtwJmd0OwoJCXskZm9ybS0mZ3Q7Z2V0QnV0dG9ucygpfQoJJmx0Oy9wJmd0OwoJeyRmb3JtLSZndDtnZXRGb290ZXJzKCl9CnsvaWZ9CiAgPC9wcmU+PC9jb2RlPgoKICA8aDM+Q2hhbmdlbG9nPC9oMz4KPHByZT4KMS4xMC4xNgotLS0tLS0tCi0gRXJyb3JzIG1lc3NhZ2VzIGNhbiBiZSB0cmFuc2xhdGVkIHVzaW5nIEkxOG4KLSBWYWxpZGF0b3JzIGFyZSBub3cgaW4gc2VwYXJhdGUgY2xhc3NlcwotIFZhbGlkYXRvcnMgY2FuIG5vdyBkaXJlY3RseSBwYXNzZWQgZnJvbSB0aGUgd2lkZ2V0IGNvbnN0cnVjdG9yIChleDogJ3ZhbGlkYXRvcnMnID0+IGFycmF5KCdteV92YWxpZGF0b3InID0+IG5ldyBDTVNGVmFsaWRhdG9yTm90RW1wdHkoYXJyYXkoJ2ZvbycgPT4gJ2JhcicpKSkKPC9wcmU+Cgk8aDM+Q3JlZGl0czwvaDM+Cgk8cD5KZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSB0b3RvcGhlQHRvdG9waGUuY29tPC9wPgkKCTxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0BhdG9tc2VlZHMuY29tJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTAuMTg8YnIgLz4=]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/.name</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q01TRm9ybXM=]]></data>
	</file>
	<file>
	  <filename>/.idea/CMSForms.iml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1vZHVsZSB0eXBlPSJXRUJfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIj4KICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgogIDwvY29tcG9uZW50Pgo8L21vZHVsZT4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/encodings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJFbmNvZGluZyIgdXNlVVRGR3Vlc3Npbmc9InRydWUiIG5hdGl2ZTJBc2NpaUZvclByb3BlcnRpZXNGaWxlcz0iZmFsc2UiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/misc.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/modules.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CiAgICA8bW9kdWxlcz4KICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uaWRlYS9DTVNGb3Jtcy5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkLy5pZGVhL0NNU0Zvcm1zLmltbCIgLz4KICAgIDwvbW9kdWxlcz4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/.idea/scopes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/scopes/scope_settings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgogIDxzdGF0ZT4KICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgogIDwvc3RhdGU+CjwvY29tcG9uZW50Pg==]]></data>
	</file>
	<file>
	  <filename>/.idea/vcs.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NEaXJlY3RvcnlNYXBwaW5ncyI+CiAgICA8bWFwcGluZyBkaXJlY3Rvcnk9IiRQUk9KRUNUX0RJUiQiIHZjcz0iR2l0IiAvPgogIDwvY29tcG9uZW50Pgo8L3Byb2plY3Q+Cgo=]]></data>
	</file>
	<file>
	  <filename>/.idea/workspace.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CiAgICA8bGlzdCBkZWZhdWx0PSJ0cnVlIiBpZD0iZTE1YjhkNmMtZDI2NC00MzRiLWI2MjctMDQyMjQzYjZmZThlIiBuYW1lPSJEZWZhdWx0IiBjb21tZW50PSIiPgogICAgICA8Y2hhbmdlIHR5cGU9Ik1PRElGSUNBVElPTiIgYmVmb3JlUGF0aD0iJFBST0pFQ1RfRElSJC9DTVNGb3Jtcy5tb2R1bGUucGhwIiBhZnRlclBhdGg9IiRQUk9KRUNUX0RJUiQvQ01TRm9ybXMubW9kdWxlLnBocCIgLz4KICAgICAgPGNoYW5nZSB0eXBlPSJNT0RJRklDQVRJT04iIGJlZm9yZVBhdGg9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEZpbGUucGhwIiBhZnRlclBhdGg9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEZpbGUucGhwIiAvPgogICAgICA8Y2hhbmdlIHR5cGU9Ik1PRElGSUNBVElPTiIgYmVmb3JlUGF0aD0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybVdpZGdldC5waHAiIGFmdGVyUGF0aD0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybVdpZGdldC5waHAiIC8+CiAgICA8L2xpc3Q+CiAgICA8aWdub3JlZCBwYXRoPSJDTVNGb3Jtcy5pd3MiIC8+CiAgICA8aWdub3JlZCBwYXRoPSIuaWRlYS93b3Jrc3BhY2UueG1sIiAvPgogICAgPG9wdGlvbiBuYW1lPSJUUkFDS0lOR19FTkFCTEVEIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iU0hPV19ESUFMT0ciIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX0NPTkZMSUNUUyIgdmFsdWU9InRydWUiIC8+CiAgICA8b3B0aW9uIG5hbWU9IkhJR0hMSUdIVF9OT05fQUNUSVZFX0NIQU5HRUxJU1QiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iTEFTVF9SRVNPTFVUSU9OIiB2YWx1ZT0iSUdOT1JFIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iQ2hhbmdlc1ZpZXdNYW5hZ2VyIiBmbGF0dGVuZWRfdmlldz0idHJ1ZSIgc2hvd19pZ25vcmVkPSJmYWxzZSIgLz4KICA8Y29tcG9uZW50IG5hbWU9IkNyZWF0ZVBhdGNoQ29tbWl0RXhlY3V0b3IiPgogICAgPG9wdGlvbiBuYW1lPSJQQVRDSF9QQVRIIiB2YWx1ZT0iIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iRGFlbW9uQ29kZUFuYWx5emVyIj4KICAgIDxkaXNhYmxlX2hpbnRzIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJFeGVjdXRpb25UYXJnZXRNYW5hZ2VyIiBTRUxFQ1RFRF9UQVJHRVQ9ImRlZmF1bHRfdGFyZ2V0IiAvPgogIDxjb21wb25lbnQgbmFtZT0iRmF2b3JpdGVzTWFuYWdlciI+CiAgICA8ZmF2b3JpdGVzX2xpc3QgbmFtZT0iQ01TRm9ybXMiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJGaWxlRWRpdG9yTWFuYWdlciI+CiAgICA8bGVhZj4KICAgICAgPGZpbGUgbGVhZi1maWxlLW5hbWU9IkNNU0Zvcm1zLm1vZHVsZS5waHAiIHBpbm5lZD0iZmFsc2UiIGN1cnJlbnQ9InRydWUiIGN1cnJlbnQtaW4tdGFiPSJ0cnVlIj4KICAgICAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvQ01TRm9ybXMubW9kdWxlLnBocCI+CiAgICAgICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgICAgIDxzdGF0ZSBsaW5lPSIxMiIgY29sdW1uPSI2MSIgc2VsZWN0aW9uLXN0YXJ0PSIzNDUiIHNlbGVjdGlvbi1lbmQ9IjM0NSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMTU4NTIwNDgiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNzU3Ij4KICAgICAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgICAgICA8L3N0YXRlPgogICAgICAgICAgPC9wcm92aWRlcj4KICAgICAgICA8L2VudHJ5PgogICAgICA8L2ZpbGU+CiAgICA8L2xlYWY+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJGaW5kTWFuYWdlciI+CiAgICA8RmluZFVzYWdlc01hbmFnZXI+CiAgICAgIDxzZXR0aW5nIG5hbWU9Ik9QRU5fTkVXX1RBQiIgdmFsdWU9ImZhbHNlIiAvPgogICAgPC9GaW5kVXNhZ2VzTWFuYWdlcj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkdpdC5TZXR0aW5ncyI+CiAgICA8b3B0aW9uIG5hbWU9IlJFQ0VOVF9HSVRfUk9PVF9QQVRIIiB2YWx1ZT0iJFBST0pFQ1RfRElSJCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkdpdExvZ1NldHRpbmdzIj4KICAgIDxvcHRpb24gbmFtZT0ibXlEYXRlU3RhdGUiPgogICAgICA8TXlEYXRlU3RhdGUgLz4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iSWRlRG9jdW1lbnRIaXN0b3J5Ij4KICAgIDxvcHRpb24gbmFtZT0iY2hhbmdlZEZpbGVzIj4KICAgICAgPGxpc3Q+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0U3RhdGljLnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtLnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL3RlbXBsYXRlcy9hZG1pbi5mb3JtLnRwbCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL0NIQU5HRUxPRyIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRDaGVja2JveC5waHAiIC8+CiAgICAgICAgPG9wdGlvbiB2YWx1ZT0iJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0LnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRGaWxlLnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtV2lkZ2V0LnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL0NNU0Zvcm1zLm1vZHVsZS5waHAiIC8+CiAgICAgIDwvbGlzdD4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUGhwV29ya3NwYWNlUHJvamVjdENvbmZpZ3VyYXRpb24iIGJhY2t3YXJkX2NvbXBhdGliaWxpdHlfcGVyZm9ybWVkPSJ0cnVlIiAvPgogIDxjb21wb25lbnQgbmFtZT0iUHJvamVjdEZyYW1lQm91bmRzIj4KICAgIDxvcHRpb24gbmFtZT0ieCIgdmFsdWU9IjExMiIgLz4KICAgIDxvcHRpb24gbmFtZT0ieSIgdmFsdWU9IjQyNCIgLz4KICAgIDxvcHRpb24gbmFtZT0id2lkdGgiIHZhbHVlPSIxNTM2IiAvPgogICAgPG9wdGlvbiBuYW1lPSJoZWlnaHQiIHZhbHVlPSI4NzgiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TGV2ZWxWY3NNYW5hZ2VyIiBzZXR0aW5nc0VkaXRlZE1hbnVhbGx5PSJmYWxzZSI+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJBZGQiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJSZW1vdmUiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJDaGVja291dCIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlVwZGF0ZSIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlN0YXR1cyIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkVkaXQiIC8+CiAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJBZGQiIC8+CiAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJSZW1vdmUiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0UmVsb2FkU3RhdGUiPgogICAgPG9wdGlvbiBuYW1lPSJTVEFURSIgdmFsdWU9IjAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0VmlldyI+CiAgICA8bmF2aWdhdG9yIGN1cnJlbnRWaWV3PSJQcm9qZWN0UGFuZSIgcHJvcG9ydGlvbnM9IiIgdmVyc2lvbj0iMSIgc3BsaXR0ZXJQcm9wb3J0aW9uPSIwLjUiPgogICAgICA8ZmxhdHRlblBhY2thZ2VzIC8+CiAgICAgIDxzaG93TWVtYmVycyAvPgogICAgICA8c2hvd01vZHVsZXMgLz4KICAgICAgPHNob3dMaWJyYXJ5Q29udGVudHMgUHJvamVjdFBhbmU9InRydWUiIC8+CiAgICAgIDxoaWRlRW1wdHlQYWNrYWdlcyAvPgogICAgICA8YWJicmV2aWF0ZVBhY2thZ2VOYW1lcyAvPgogICAgICA8YXV0b3Njcm9sbFRvU291cmNlIC8+CiAgICAgIDxhdXRvc2Nyb2xsRnJvbVNvdXJjZSAvPgogICAgICA8c29ydEJ5VHlwZSAvPgogICAgPC9uYXZpZ2F0b3I+CiAgICA8cGFuZXM+CiAgICAgIDxwYW5lIGlkPSJTY29wZSIgLz4KICAgICAgPHBhbmUgaWQ9IlByb2plY3RQYW5lIj4KICAgICAgICA8c3ViUGFuZT4KICAgICAgICAgIDxQQVRIPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9InRlbXBsYXRlcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxpYiIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICA8L1BBVEg+CiAgICAgICAgICA8UEFUSD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0iQ01TRm9ybXMiIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlByb2plY3RWaWV3UHJvamVjdE5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJDTVNGb3JtcyIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHNpRGlyZWN0b3J5Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9ImxhbmciIC8+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1UeXBlIiB2YWx1ZT0iY29tLmludGVsbGlqLmlkZS5wcm9qZWN0Vmlldy5pbXBsLm5vZGVzLlBzaURpcmVjdG9yeU5vZGUiIC8+CiAgICAgICAgICAgIDwvUEFUSF9FTEVNRU5UPgogICAgICAgICAgPC9QQVRIPgogICAgICAgIDwvc3ViUGFuZT4KICAgICAgPC9wYW5lPgogICAgPC9wYW5lcz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlByb3BlcnRpZXNDb21wb25lbnQiPgogICAgPHByb3BlcnR5IG5hbWU9IldlYlNlcnZlclRvb2xXaW5kb3dGYWN0b3J5U3RhdGUiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxwcm9wZXJ0eSBuYW1lPSJGdWxsU2NyZWVuIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8cHJvcGVydHkgbmFtZT0iTGF5b3V0Q29kZS5yZWFycmFuZ2VFbnRyaWVzUEhQIiB2YWx1ZT0iZmFsc2UiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJSdW5NYW5hZ2VyIj4KICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9InRydWUiIHR5cGU9IlBIUFVuaXRSdW5Db25maWd1cmF0aW9uVHlwZSIgZmFjdG9yeU5hbWU9IlBIUFVuaXQiPgogICAgICA8VGVzdFJ1bm5lciAvPgogICAgICA8bWV0aG9kIC8+CiAgICA8L2NvbmZpZ3VyYXRpb24+CiAgICA8bGlzdCBzaXplPSIwIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iU2hlbHZlQ2hhbmdlc01hbmFnZXIiIHNob3dfcmVjeWNsZWQ9ImZhbHNlIiAvPgogIDxjb21wb25lbnQgbmFtZT0iVGFza01hbmFnZXIiPgogICAgPHRhc2sgYWN0aXZlPSJ0cnVlIiBpZD0iRGVmYXVsdCIgc3VtbWFyeT0iRGVmYXVsdCB0YXNrIj4KICAgICAgPGNoYW5nZWxpc3QgaWQ9ImUxNWI4ZDZjLWQyNjQtNDM0Yi1iNjI3LTA0MjI0M2I2ZmU4ZSIgbmFtZT0iRGVmYXVsdCIgY29tbWVudD0iIiAvPgogICAgICA8Y3JlYXRlZD4xMzgwNjM5MzE2NzEzPC9jcmVhdGVkPgogICAgICA8dXBkYXRlZD4xMzgwNjM5MzE2NzEzPC91cGRhdGVkPgogICAgPC90YXNrPgogICAgPHNlcnZlcnMgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlRvb2xXaW5kb3dNYW5hZ2VyIj4KICAgIDxmcmFtZSB4PSIxMTIiIHk9IjQyNCIgd2lkdGg9IjE1MzYiIGhlaWdodD0iODc4IiBleHRlbmRlZC1zdGF0ZT0iMCIgLz4KICAgIDxlZGl0b3IgYWN0aXZlPSJ0cnVlIiAvPgogICAgPGxheW91dD4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJDaGFuZ2VzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjciIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVGVybWluYWwiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iOCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJUT0RPIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjYiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGF0YWJhc2UiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIzIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlN0cnVjdHVyZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJQcm9qZWN0IiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImxlZnQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJ0cnVlIiB3ZWlnaHQ9IjAuMjUyNjA0MTYiIHNpZGVXZWlnaHQ9IjAuMCIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9ImNvbWJvIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkRlYnVnIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuNCIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMyIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJGYXZvcml0ZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjIiIHNpZGVfdG9vbD0idHJ1ZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJFdmVudCBMb2ciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNyIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlJ1biIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIyIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlZlcnNpb24gQ29udHJvbCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI3IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IkN2cyIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSI0IiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9Ik1lc3NhZ2UiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJGaW5kIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjEiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iQW50IEJ1aWxkIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9InJpZ2h0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4yNSIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJDb21tYW5kZXIiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IlNMSURJTkciIHR5cGU9IlNMSURJTkciIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuNCIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJJbnNwZWN0aW9uIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuNCIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iNSIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJIaWVyYXJjaHkiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjI1IiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIyIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJjb21ibyIgLz4KICAgIDwvbGF5b3V0PgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iVmNzLkxvZy5VaVByb3BlcnRpZXMiPgogICAgPG9wdGlvbiBuYW1lPSJSRUNFTlRMWV9GSUxURVJFRF9VU0VSX0dST1VQUyI+CiAgICAgIDxjb2xsZWN0aW9uIC8+CiAgICA8L29wdGlvbj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlZjc0NvbnRlbnRBbm5vdGF0aW9uU2V0dGluZ3MiPgogICAgPG9wdGlvbiBuYW1lPSJteUxpbWl0IiB2YWx1ZT0iMjY3ODQwMDAwMCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlZjc01hbmFnZXJDb25maWd1cmF0aW9uIj4KICAgIDxvcHRpb24gbmFtZT0ibXlUb2RvUGFuZWxTZXR0aW5ncyI+CiAgICAgIDxUb2RvUGFuZWxTZXR0aW5ncyAvPgogICAgPC9vcHRpb24+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJYRGVidWdnZXJNYW5hZ2VyIj4KICAgIDxicmVha3BvaW50LW1hbmFnZXI+CiAgICAgIDxvcHRpb24gbmFtZT0idGltZSIgdmFsdWU9IjEiIC8+CiAgICA8L2JyZWFrcG9pbnQtbWFuYWdlcj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9ImVkaXRvckhpc3RvcnlNYW5hZ2VyIj4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0RmlsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjE5IiBjb2x1bW49IjM1IiBzZWxlY3Rpb24tc3RhcnQ9IjM2MSIgc2VsZWN0aW9uLWVuZD0iMzc2IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjI4NSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTQxMCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtV2lkZ2V0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iOTYiIGNvbHVtbj0iMTAiIHNlbGVjdGlvbi1zdGFydD0iMzEyMSIgc2VsZWN0aW9uLWVuZD0iMzEyMSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIxNDQwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI5ODQwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dEZpbGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIwIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMCIgc2VsZWN0aW9uLWVuZD0iMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMjc1Ij4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1XaWRnZXQucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI3OSIgY29sdW1uPSIzNyIgc2VsZWN0aW9uLXN0YXJ0PSIyNTUxIiBzZWxlY3Rpb24tZW5kPSIyNTUxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NNU0Zvcm1zLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEyIiBjb2x1bW49IjYxIiBzZWxlY3Rpb24tc3RhcnQ9IjM0NSIgc2VsZWN0aW9uLWVuZD0iMzQ1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NIQU5HRUxPRyI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMSIgY29sdW1uPSIxIiBzZWxlY3Rpb24tc3RhcnQ9IjkiIHNlbGVjdGlvbi1lbmQ9IjkiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0U3RhdGljLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iNiIgY29sdW1uPSIyMCIgc2VsZWN0aW9uLXN0YXJ0PSIxMDgiIHNlbGVjdGlvbi1lbmQ9IjEwOCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0RGF0ZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjYiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSI0MyIgc2VsZWN0aW9uLWVuZD0iOTgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm0ucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyNCIgY29sdW1uPSI0MiIgc2VsZWN0aW9uLXN0YXJ0PSI2MTMiIHNlbGVjdGlvbi1lbmQ9IjYxMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzNjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9Ijg1MDUiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0RGF0ZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjYiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSI0MyIgc2VsZWN0aW9uLWVuZD0iOTgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSItMC4wNDgzODcwOTUiIHZlcnRpY2FsLW9mZnNldD0iOTAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9Ijk5MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1JbnB1dFN0YXRpYy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjYiIGNvbHVtbj0iMjAiIHNlbGVjdGlvbi1zdGFydD0iMTA4IiBzZWxlY3Rpb24tZW5kPSIxMDgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjE0NTE2MTI5IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjYyMCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGFuZy9lbl9VUy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iLTAuODA5NTIzOCIgdmVydGljYWwtb2Zmc2V0PSI1MTAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjExNDAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NIQU5HRUxPRyI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMSIgY29sdW1uPSIzMCIgc2VsZWN0aW9uLXN0YXJ0PSIzOCIgc2VsZWN0aW9uLWVuZD0iMzgiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAxNzkyMTE0OCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI4MzciIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRDaGVja2JveC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjIxIiBjb2x1bW49IjMyIiBzZWxlY3Rpb24tc3RhcnQ9IjYxMyIgc2VsZWN0aW9uLWVuZD0iNjEzIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xNjc3Njc1MSIgdmVydGljYWwtb2Zmc2V0PSIxNTgiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjkxNSIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvdGVtcGxhdGVzL2FkbWluLmZvcm0udHBsIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMTgiIHNlbGVjdGlvbi1lbmQ9IjIzNyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMDE5ODE1MDYiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNzU3IiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuQ01TRm9ybUlucHV0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMzIwIiBjb2x1bW49IjQ2IiBzZWxlY3Rpb24tc3RhcnQ9Ijk3MzUiIHNlbGVjdGlvbi1lbmQ9Ijk3MzUiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iNDgwMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNjk3NSI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5DTVNGb3JtSW5wdXRGaWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTkiIGNvbHVtbj0iMzUiIHNlbGVjdGlvbi1zdGFydD0iMzYxIiBzZWxlY3Rpb24tZW5kPSIzNzYiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMjg1IiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxNDEwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLkNNU0Zvcm1XaWRnZXQucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI5NiIgY29sdW1uPSIxMCIgc2VsZWN0aW9uLXN0YXJ0PSIzMTIxIiBzZWxlY3Rpb24tZW5kPSIzMTIxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iNC4zNzUiIHZlcnRpY2FsLW9mZnNldD0iMTQ0MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iOTg0MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL0NNU0Zvcm1zLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjEyIiBjb2x1bW49IjYxIiBzZWxlY3Rpb24tc3RhcnQ9IjM0NSIgc2VsZWN0aW9uLWVuZD0iMzQ1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xNTg1MjA0OCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI3NTciPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/CHANGELOG</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[MS4xMC4xNgotLS0tLS0tCi0gRXJyb3JzIG1lc3NhZ2VzIGNhbiBiZSB0cmFuc2xhdGVkIHVzaW5nIEkxOG4KLSBWYWxpZGF0b3JzIGFyZSBub3cgaW4gc2VwYXJhdGUgY2xhc3NlcwotIFZhbGlkYXRvcnMgY2FuIG5vdyBkaXJlY3RseSBwYXNzZWQgZnJvbSB0aGUgd2lkZ2V0IGNvbnN0cnVjdG9yIChleDogJ3ZhbGlkYXRvcnMnID0+IGFycmF5KCdteV92YWxpZGF0b3InID0+IG5ldyBDTVNGVmFsaWRhdG9yTm90RW1wdHkoYXJyYXkoJ2ZvbycgPT4gJ2JhcicpKSkK]]></data>
	</file>
	<file>
	  <filename>/CMSForms.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCglNb2R1bGU6IENNUyBGb3JtcyAtIFRoaXMgbW9kdWxlIGhlbHBzIGRldmVsb3BlcnMgdG8gaGFuZGxlIGZvcm1zIGZvciB0aGVpciBmcm9udGVuZCBvciBiYWNrZW5kIGFwcGxpY2F0aW9ucwoJCglDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDEyIMKpCiovCgoKY2xhc3MgQ01TRm9ybXMgZXh0ZW5kcyBDTVNNb2R1bGUKewoJcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSAgICAgICAgICAgICAgIHsgcmV0dXJuICdDTVNGb3Jtcyc7CSAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgICAgICAgICAgICB7IHJldHVybiAnMS4xMC4xOCc7ICAgICAgICAgICAgICAgICAgICB9CglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgICAgICAgICAgICAgeyByZXR1cm4gJ0plYW4tQ2hyaXN0b3BoZSBDdXZlbGllcic7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpICAgICAgICB7IHJldHVybiAnamNjQGF0b21zZWVkcy5jb20nOyAgIH0KCQogICAgcHVibGljICBmdW5jdGlvbiBHZXRIZWxwKCkgeyAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7ICB9CglwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSAgICB7IHJldHVybiAnMS4xMCc7ICB9Cgp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRsYW5nID0gYXJyYXkoCgkKCQoJCgkKCQovLyBFeGNlcHRpb25zCgonZmllbGRfaXNfZW1wdHknID0+ICdUaGUgZmllbGQgJXMgaXMgZW1wdHkuJywJCidmaWVsZF9jYW5ub3RfYmVfZW1wdHknID0+ICdUaGUgZmllbGQgIiVzIiBjYW5ub3QgYmUgZW1wdHkuJywJCid1bmtub3duIGZpZWxkJyA9PiAnVW5rbm93biBmaWVsZCAiJXMiJywKJ2ZpZWxkcyBub3QgZXF1YWwnID0+ICdUaGUgIiVzIiBhbmQgIiVzIiBoYXZlIHRvIGJlIHRoZSBzYW1lLicsCidpbnZhbGlkIGVtYWlsJyA9PiAnVGhlIGVtYWlsICZsYXF1bzslcyZyYXF1bzsgaXMgbm90IHZhbGlkLicsCidmaWVsZCBub3QgdW5pcXVlJyA9PiAnJXMgYWxyZWFkeSBleGlzdHMuJywKJ3NlbGVjdCBvbmUnID0+ICdTZWxlY3Qgb25lJywKCQoJCgknaGVscCcgPT4gJwoJPGgzPkhvdyB0byB1c2UgdGhpcyBtb2R1bGU/PC9oMz4KCTxwPlRoaXMgbW9kdWxlIGlzIGFpbWVkIHRvIHJlcGxhY2UgdGhlIHRyYWRpdGlvbmFsIHdheSBvZiBtYW5pcHVsYXRlIGZvcm1zIGluIENNU01TICJBUEkiLiBJdCBhbGxvd3MgeW91IHRvIGZvY3VzIG1vcmUgb24geW91ciBvYmplY3RzIGFuZCBjb2RlLjwvcD4KCQoJPGgzPlBIUCBTaWRlPC9oMz4KCTxwPlRvIGNyZWF0ZSBhIGZvcm0sIHVzZSB0aGUgZm9sbG93aW5nIGZvcm1hdC48L3A+CiAgPHRleHRhcmVhIGNvbHM9IjIwMCIgcm93cz0iMiIgc3R5bGU9ImhlaWdodDo0MHB4OyAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oXCdNeU1vZHVsZVwnLCAkaWQsIFwnYWN0aW9uXCcsICRyZXR1cm5pZCk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKFwnZm9ybVwnLCAkZm9ybSk7CiAgPC90ZXh0YXJlYT4JCiAgPHA+VG8gZ28gZnVydGVyLCB5b3UgY2FuIHVzZSBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb21tYW5kczo8L3A+Cgk8dGV4dGFyZWEgY29scz0iMjAwIj4KICAkZm9ybSA9IG5ldyBDTVNGb3JtKFwnTXlNb2R1bGVcJywgJGlkLCBcJ2FjdGlvblwnLCAkcmV0dXJuaWQpOwogIAogICRmb3JtLT5zZXRCdXR0b25zKGFycmF5KFwnc2F2ZVwnLFwnY2FuY2VsXCcpKTsKICAKICAkZm9ybS0+c2V0V2lkZ2V0KFwndGl0bGVcJywgXCd0ZXh0XCcsIGFycmF5KFwnY2xhc3NcJyA9PiBcJ2ZpZWxkXCcpKTsKICAKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oXCdmb3JtXCcsICRmb3JtKTsKICA8L3RleHRhcmVhPgogIDxoMz5TbWFydHkgc2lkZTwvaDM+CiAgPGNvZGU+PHByZT4KICB7aWYgaXNzZXQoJGZvcm0pfQogICAge2lmICRmb3JtLSZndDtoYXNFcnJvcnMoKX0mbHQ7ZGl2IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0O3skZm9ybS0mZ3Q7c2hvd0Vycm9ycygpfSZsdDsvZGl2Jmd0O3svaWZ9Cgl7JGZvcm0tJmd0O2dldEhlYWRlcnMoKX0KCgl7JGZvcm0tJmd0O3Nob3dXaWRnZXRzKFwmI3gyNzsmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VvdmVyZmxvdyZxdW90OyZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2V0ZXh0JnF1b3Q7Jmd0OyVMQUJFTCU6Jmx0Oy9kaXYmZ3Q7CgkJJmx0O2RpdiBjbGFzcz0mcXVvdDtwYWdlaW5wdXQmcXVvdDsmZ3Q7JUlOUFVUJSAmbHQ7ZW0mZ3Q7JVRJUFMlJmx0Oy9lbSZndDsmbHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyBzdHlsZT0mcXVvdDtjb2xvcjogcmVkOyZxdW90OyZndDslRVJST1JTJSZsdDsvZGl2Jmd0OwoJJmx0Oy9kaXYmZ3Q7XCYjeDI3Oyl9CgoJeyRmb3JtLSZndDtyZW5kZXJGaWVsZHNldHMoXCYjeDI3OyZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZW92ZXJmbG93JnF1b3Q7Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZXRleHQmcXVvdDsmZ3Q7JUxBQkVMJTombHQ7L2RpdiZndDsKCQkmbHQ7ZGl2IGNsYXNzPSZxdW90O3BhZ2VpbnB1dCZxdW90OyZndDslSU5QVVQlICZsdDtlbSZndDslVElQUyUmbHQ7L2VtJmd0OyZsdDsvZGl2Jmd0OwoJCSZsdDtkaXYgY2xhc3M9JnF1b3Q7cGFnZWlucHV0JnF1b3Q7IHN0eWxlPSZxdW90O2NvbG9yOiByZWQ7JnF1b3Q7Jmd0OyVFUlJPUlMlJmx0Oy9kaXYmZ3Q7CgkmbHQ7L2RpdiZndDtcJiN4Mjc7KX0KCgkmbHQ7cCZndDsKCQl7JGZvcm0tJmd0O2dldEJ1dHRvbnMoKX0KCSZsdDsvcCZndDsKCXskZm9ybS0mZ3Q7Z2V0Rm9vdGVycygpfQp7L2lmfQogIDwvcHJlPjwvY29kZT4KCiAgPGgzPkNoYW5nZWxvZzwvaDM+CjxwcmU+CjEuMTAuMTYKLS0tLS0tLQotIEVycm9ycyBtZXNzYWdlcyBjYW4gYmUgdHJhbnNsYXRlZCB1c2luZyBJMThuCi0gVmFsaWRhdG9ycyBhcmUgbm93IGluIHNlcGFyYXRlIGNsYXNzZXMKLSBWYWxpZGF0b3JzIGNhbiBub3cgZGlyZWN0bHkgcGFzc2VkIGZyb20gdGhlIHdpZGdldCBjb25zdHJ1Y3RvciAoZXg6IFwndmFsaWRhdG9yc1wnID0+IGFycmF5KFwnbXlfdmFsaWRhdG9yXCcgPT4gbmV3IENNU0ZWYWxpZGF0b3JOb3RFbXB0eShhcnJheShcJ2Zvb1wnID0+IFwnYmFyXCcpKSkKPC9wcmU+Cgk8aDM+Q3JlZGl0czwvaDM+Cgk8cD5KZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSB0b3RvcGhlQHRvdG9waGUuY29tPC9wPgkKCScsCgkKCQoJCik7]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.CMSForm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCmNsYXNzIENNU0Zvcm0gLy9leHRlbmRzICBDbXNPYmplY3QKewoKICAgIHByb3RlY3RlZCAkbW9kdWxlX25hbWU7CiAgICBwcm90ZWN0ZWQgJGlkOyAvLyBUaGUgZm9ybSBJRAogICAgcHJvdGVjdGVkICRyZXR1cm5pZDsKICAgIHByb3RlY3RlZCAkYWN0aW9uOwogICAgcHJvdGVjdGVkICRtZXRob2QgPSAnZ2V0JzsKICAgIHByb3RlY3RlZCAkZW5jdHlwZTsKICAgIHByb3RlY3RlZCAkaW5saW5lID0gZmFsc2U7CgogICAgcHJvdGVjdGVkICR3aWRnZXRzID0gYXJyYXkoKTsgLy8gVGhlIGZvcm0gd2lkZ2V0cwogICAgcHJvdGVjdGVkICRoaWRkZW5fd2lkZ2V0cyA9IGFycmF5KCk7IC8vIFNwZWNpZmljIHdpZGdldHMgc2hvd24gb24gdGhlIGJlZ2luOwogICAgcHJvdGVjdGVkICRmaWVsZHNldHMgPSBhcnJheSgpOyAvLyBTdWIgZm9ybXMgZm9yIGZpZWxkc2V0cwoKICAgIHByb3RlY3RlZCAkbGFiZWxzID0gYXJyYXkoCiAgICAgICAgJ3N1Ym1pdCcgPT4gJ1N1Ym1pdCcsCiAgICAgICAgJ2FwcGx5JyA9PiAnQXBwbHknLAogICAgICAgICdjYW5jZWwnID0+ICdDYW5jZWwnLAogICAgICAgICduZXh0JyA9PiAnTmV4dCcsCiAgICAgICAgJ3ByZXZpb3VzJyA9PiAnUHJldmlvdXMnCiAgICApOwoKICAgIHByb3RlY3RlZCAkYWN0aXZlX2J1dHRvbnMgPSBhcnJheSgnc3VibWl0JywgJ2NhbmNlbCcpOwogICAgcHJvdGVjdGVkICRmb3JtX2Vycm9ycyA9IGFycmF5KCk7CiAgICBwcm90ZWN0ZWQgJHNob3dfcHJpb3JpdHkgPSBmYWxzZTsKCiAgICBwcm90ZWN0ZWQgJHRlbXBsYXRlcyA9IGFycmF5KAogICAgICAgICd3aWRnZXQnID0+ICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICA8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGFnZWlucHV0Ij4lUFJFRklYJSAlSU5QVVQlICVTVUZJWCU8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+CiAgICA8L2Rpdj4nLAogICAgICAgICdlcnJvcnMnID0+ICc8ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4nLAogICAgICAgICdidXR0b25zJyA9PiAnPHA+JUJVVFRPTlMlPC9wPicKICAgICk7CgogICAgcHJvdGVjdGVkICRhY3Rpb25fdXJsOyAvLyBUbyBzcGVjaWZ5IGEgZGlmZmVyZW50IGZvcm0gYWN0aW9uCgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBmb3JtCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2R1bGVfbmFtZSBUaGUgbW9kdWxlIG5hbWUgZm9yIHRoZSBmb3JtCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpZCBUaGUgSUQgb2YgdGhlIHBhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFjdGlvbiBUaGUgYWN0aW9uIHlvdSB3YW50IHRvIGV4ZWN1dGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJldHVybmlkIFRoZSByZXR1cm4gSUQgKHJldHVybiBwYWdlKQogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRtb2R1bGVfbmFtZSwgJGlkLCAkYWN0aW9uLCAkcmV0dXJuaWQpCiAgICB7CiAgICAgICAgJHRoaXMtPm1vZHVsZV9uYW1lID0gJG1vZHVsZV9uYW1lOwogICAgICAgICR0aGlzLT5pZCA9ICRpZDsKICAgICAgICAkdGhpcy0+cmV0dXJuaWQgPSAkcmV0dXJuaWQ7CiAgICAgICAgJHRoaXMtPmFjdGlvbiA9ICRhY3Rpb247CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZW5kZXIoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aWQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldE1ldGhvZCgkbWV0aG9kID0gJ2dldCcpCiAgICB7CiAgICAgICAgaWYgKCRtZXRob2QgPT0gJ3Bvc3QnKSB7CiAgICAgICAgICAgICR0aGlzLT5tZXRob2QgPSAncG9zdCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEFjdGlvblVybCgkYWN0aW9uX3VybCkKICAgIHsKICAgICAgICAkdGhpcy0+YWN0aW9uX3VybCA9ICRhY3Rpb25fdXJsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRNdWx0aXBhcnRGb3JtKCkKICAgIHsKICAgICAgICAkdGhpcy0+bWV0aG9kID0gJ3Bvc3QnOwogICAgICAgICR0aGlzLT5lbmN0eXBlID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldElubGluZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmlubGluZSA9IHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoKQogICAgewogICAgICAgICRzdGF0ZSA9IHRydWU7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkgewogICAgICAgICAgICBpZiAoJHdpZGdldC0+cHJvY2VzcygpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHN0YXRlID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5oaWRkZW5fd2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgIGlmICgkd2lkZ2V0LT5wcm9jZXNzKCkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkc3RhdGUgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpIHsKICAgICAgICAgICAgaWYgKCRmaWVsZHNldC0+cHJvY2VzcygpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHN0YXRlID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzdGF0ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyXygpCiAgICB7CiAgICAgICAgLy8gVE9ETzogTE9BRCBURU1QTEFURSBGUk9NIEZJTEUuLi4KICAgICAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnYWRtaW4uZm9ybS50cGwnKTsKCiAgICAgICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkdGhpcyk7CiAgICAgICAgJHNtYXJ0eS0+X2NvbXBpbGVfc291cmNlKCd0ZW1wb3JhcnkgdGVtcGxhdGUnLCAkdGVtcGxhdGUsICRfY29tcGlsZWQpOwogICAgICAgIEBvYl9zdGFydCgpOwogICAgICAgICRzbWFydHktPl9ldmFsKCc/PicgLiAkX2NvbXBpbGVkKTsKICAgICAgICAkX2NvbnRlbnRzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgICAgIEBvYl9lbmRfY2xlYW4oKTsKICAgICAgICByZXR1cm4gJF9jb250ZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCkKICAgIHsKICAgICAgICAvLyAkZmlsZSA9IGRpcm5hbWUoZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd0ZW1wbGF0ZXMnIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdhZG1pbi5mb3JtLnRwbCc7CiAgICAgICAgJGZpbGUgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnYWRtaW4uZm9ybS50cGwnOwogICAgICAgIC8vICRmaWxlMiA9ICdhZG1pbi5mb3JtLnRwbCc7CiAgICAgICAgLy8gV2UgbG9hZCB0aGUgdGVtcGxhdGUgaGVyZSBiZWNhdXNlIG9mIFNtYXJ0eSByZXN0cmljdGlvbnMKICAgICAgICAvLyAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgICRjbXNfc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgogICAgICAgICRzbWFydHkgPSBuZXcgU21hcnR5KCk7CiAgICAgICAgJHNtYXJ0eS0+Y29tcGlsZV9kaXIgPSAkY21zX3NtYXJ0eS0+Y29tcGlsZV9kaXI7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJHRoaXMpOwoKICAgICAgICByZXR1cm4gJHNtYXJ0eS0+ZmV0Y2goJ2ZpbGU6JyAuICRmaWxlKTsKCiAgICAgICAgLy8gcmV0dXJuICRzbWFydHktPmRpc3BsYXkoJ3N0cmluZzonLiR0ZW1wbGF0ZSk7CiAgICAgICAgLy8gcmV0dXJuICRzbWFydHktPmRpc3BsYXkoJ21vZHVsZV9maWxlX3RwbDpDTVNGb3JtczsnLiRmaWxlMik7CiAgICAgICAgLy8gcmV0dXJuICRzbWFydHktPmRpc3BsYXkoJGZpbGUpOwoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VGVtcGxhdGUoJHRlbXBsYXRlX25hbWUsICR0ZW1wbGF0ZSkKICAgIHsKICAgICAgICAkdGhpcy0+dGVtcGxhdGVzWyR0ZW1wbGF0ZV9uYW1lXSA9ICR0ZW1wbGF0ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVycygpCiAgICB7CiAgICAgICAgaWYgKGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+YWN0aW9uX3VybCkgewogICAgICAgICAgICAgICAgJGh0bWwgPSAnPGZvcm0gbmFtZT0iJyAuICR0aGlzLT5pZCAuICciIG1ldGhvZD0iJyAuICR0aGlzLT5tZXRob2QgLiAnIiBhY3Rpb249IicgLiAkdGhpcy0+YWN0aW9uX3VybCAuICciJzsKCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmVuY3R5cGUpICRodG1sIC49ICcgZW5jdHlwZT0iJyAuICR0aGlzLT5lbmN0eXBlIC4gJyInOwoKICAgICAgICAgICAgICAgICRodG1sIC49ICc+JzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRodG1sID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUZvcm1TdGFydCgkdGhpcy0+aWQsICR0aGlzLT5hY3Rpb24sICR0aGlzLT5yZXR1cm5pZCwgJHRoaXMtPm1ldGhvZCwgJHRoaXMtPmVuY3R5cGUsICR0aGlzLT5pbmxpbmUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+aGlkZGVuX3dpZGdldHMgYXMgJHdpZGdldCkgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJHdpZGdldC0+Z2V0SW5wdXQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJGh0bWw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb290ZXJzKCkKICAgIHsKICAgICAgICBpZiAoKGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpKSkgewogICAgICAgICAgICAkaHRtbCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVGb3JtRW5kKCk7CiAgICAgICAgICAgIHJldHVybiAkaHRtbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldExhYmVsKCRsYWJlbCwgJHRpdGxlKQogICAgewogICAgICAgICR0aGlzLT5sYWJlbHNbJGxhYmVsXSA9ICR0aXRsZTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRMYWJlbHMoJGxhYmVscyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGxhYmVscyBhcyAkbGFiZWwgPT4gJHRpdGxlKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRMYWJlbCgkbGFiZWwsICR0aXRsZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEJ1dHRvbnMoJGJ1dHRvbnMgPSBhcnJheSgpKQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkYnV0dG9ucykpICR0aGlzLT5hY3RpdmVfYnV0dG9ucyA9ICRidXR0b25zOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJ1dHRvbnMoKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFjdGl2ZV9idXR0b25zIGFzICRidXR0b24pIHsKICAgICAgICAgICAgLy8gJGh0bWwgLj0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUlucHV0U3VibWl0KCR0aGlzLT5pZCwgJGJ1dHRvbiwgJHRoaXMtPmxhYmVsc1skYnV0dG9uXSk7CiAgICAgICAgICAgICRodG1sIC49IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVJbnB1dFN1Ym1pdCgkdGhpcy0+aWQsICRidXR0b24sICR0aGlzLT5sYWJlbHNbJGJ1dHRvbl0sICdjbGFzcz0ic3VibWl0IicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRodG1sOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGFuIGlucHV0IGZpZWxkIHRvIHRoZSBmb3JtCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBmaWVsZAogICAgICogQHBhcmFtIHN0cmluZyAkdHlwZSBUaGUgdHlwZSBvZiBpbnB1dAogICAgICogQHBhcmFtIGFycmF5ICRzZXR0aW5ncwogICAgICogQHJldHVybiBudWxsCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCRuYW1lLCAkdHlwZSA9ICd0ZXh0JywgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkd2lkZ2V0ID0gbmV3IENNU0Zvcm1XaWRnZXQoJHRoaXMsICR0aGlzLT5pZCwgJHRoaXMtPm1vZHVsZV9uYW1lLCAkbmFtZSwgJHR5cGUsICRzZXR0aW5ncyk7CiAgICAgICAgaWYgKCR0eXBlID09ICdoaWRkZW4nKSB7CiAgICAgICAgICAgICR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0gPSAkd2lkZ2V0OwogICAgICAgIH0gZWxzZWlmICgkdHlwZSA9PSAnZmlsZScpIHsKICAgICAgICAgICAgJHRoaXMtPnNldE11bHRpcGFydEZvcm0oKTsgLy8gSWYgd2UgYWRkIGZpbGVzLCB3ZSBoYXZlIHRvIGJlIHBvc3RlZCBtdWx0aXBhcnQgZm9ybXMuLi4KICAgICAgICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgICAgICB9IGVsc2VpZiAoJHR5cGUgPT0gJ3Bhc3N3b3JkJykgewogICAgICAgICAgICAkdGhpcy0+c2V0TWV0aG9kKCdwb3N0Jyk7IC8vIElmIHdlIGFzayBwYXNzd29yZCwgd2Ugc2hvdWxkIGFsd2F5cyBwb3N0IHRoZSBmb3JtIGZvciBzZWN1cml0eSByZWFzb24gIQogICAgICAgICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0gPSAkd2lkZ2V0OwogICAgICAgIH0gZWxzZWlmICgoJHR5cGUgPT0gJ3RleHRhcmVhJykgfHwgKCR0eXBlID09ICdjb2RlYXJlYScpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRNZXRob2QoJ3Bvc3QnKTsgLy8gSWYgd2UgYXNrIHBhc3N3b3JkLCB3ZSBzaG91bGQgYWx3YXlzIHBvc3QgdGhlIGZvcm0gZm9yIHNlY3VyaXR5IHJlYXNvbiAhCiAgICAgICAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCRuYW1lKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0V2lkZ2V0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgd2lkZ2V0IG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIENNU0Zvcm1XaWRnZXR8bnVsbAogICAgICovCgogICAgcHVibGljIGZ1bmN0aW9uICYgZ2V0V2lkZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0c1skbmFtZV07CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGlkZGVuX3dpZGdldHNbJG5hbWVdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlkZVdpZGdldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKSkgewogICAgICAgICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXS0+aGlkZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlV2lkZ2V0KCRuYW1lKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldHMoJHRlbXBsYXRlID0gbnVsbCwgJGZvcmNlID0gZmFsc2UpCiAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNob3dXaWRnZXQoJG5hbWUsICR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgJHdpZGdldCA9ICR0aGlzLT53aWRnZXRzWyRuYW1lXTsKICAgICAgICAgICAgJGh0bWwgLj0gJHdpZGdldC0+c2hvdygkdGVtcGxhdGUsICRmb3JjZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkKICAgIHsKICAgICAgICAkaGFzX2Vycm9ycyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+d2lkZ2V0cyBhcyAkd2lkZ2V0KSB7CiAgICAgICAgICAgIGlmICgkd2lkZ2V0LT5oYXNFcnJvcnMoKSkgewogICAgICAgICAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+aGlkZGVuX3dpZGdldHMgYXMgJHdpZGdldCkgewogICAgICAgICAgICBpZiAoJHdpZGdldC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICRoYXNfZXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpIHsKICAgICAgICAgICAgaWYgKCRmaWVsZHNldC0+aGFzRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICRoYXNfZXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgIT0gMCkgewogICAgICAgICAgICAkaGFzX2Vycm9ycyA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhhc19lcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vRXJyb3IoKQogICAgewogICAgICAgIHJldHVybiAhJHRoaXMtPmhhc0Vycm9ycygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ZhbGlkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5vRXJyb3IoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1fZXJyb3JzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxFcnJvcnMoKQogICAgewogICAgICAgICRlcnJvcnMgPSAkdGhpcy0+Zm9ybV9lcnJvcnM7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT53aWRnZXRzIGFzICR3aWRnZXQpIHsKICAgICAgICAgICAgaWYgKCR3aWRnZXQtPmhhc0Vycm9ycygpKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JzWyR3aWRnZXQtPmdldE5hbWUoKV0gPSAkd2lkZ2V0LT5nZXRFcnJvcnMoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNob3dFcnJvcnMoKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgPiAwKSB7CiAgICAgICAgICAgICRodG1sIC49ICc8dWwgY2xhc3M9ImVycm9ycyI+JzsKICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZvcm1fZXJyb3JzIGFzICRwcmlvcml0eSA9PiAkZXJyb3JzKSB7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpPic7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnNob3dfcHJpb3JpdHkpICRodG1sIC49ICc8ZW0gY2xhc3M9ImZvcm1fZXJyb3JfcHJpb3JpdHkiPicgLiAkcHJpb3JpdHkgLiAnPC9lbT4nOwogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVycm9ycyBhcyAkZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpPicgLiAkZXJyb3IgLiAnPC9saT4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzwvdWw+PC9saT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRodG1sIC49ICc8L3VsPic7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RXJyb3IoJG1lc3NhZ2UsICRwcmlvcml0eSA9ICdkZWZhdWx0JykKICAgIHsKICAgICAgICAkdGhpcy0+Zm9ybV9lcnJvcnNbJHByaW9yaXR5XVtdID0gJG1lc3NhZ2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU3VibWl0dGVkKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdzdWJtaXQnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBcHBsaWVkKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdhcHBseSddKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0NhbmNlbGxlZCgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAnY2FuY2VsJ10pKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIDEuMTAuOCBVc2UgaXNTZW50CiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQb3N0ZWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNTZW50KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhhdCB0aGUgZm9ybSBoYXMgYmVlbiBzdWJtaXR0ZWQgdmlhIGEgc3BlY2lmaWMgYnV0dG9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRidXR0b24KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1B1c2hlZCgkYnV0dG9uKQogICAgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJGJ1dHRvbl0pKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhhdCB0aGUgZm9ybSBoYXMgYmVlbiBzZW50ICh2aWEgYW55IGFjdGl2ZSBidXR0b25zKQogICAgICogQHJldHVybiBib29sCiAgICAgKi8KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZW50KCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+YWN0aXZlX2J1dHRvbnMgYXMgJGJ1dHRvbikgewogICAgICAgICAgICBpZiAoJHRoaXMtPmlzUHVzaGVkKCRidXR0b24pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RmllbGRzZXQoJG5hbWUsICRsZWdlbmQgPSAnJykKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5maWVsZHNldHNbJG5hbWVdKSkKICAgICAgICAgICAgJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0gPSBuZXcgQ01TRm9ybUZpZWxkc2V0KCR0aGlzLCAkbmFtZSwgJGxlZ2VuZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJG5hbWUKICAgICAqIEByZXR1cm4gQ01TRm9ybUZpZWxkc2V0fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICYgZ2V0RmllbGRzZXQoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5maWVsZHNldHNbJG5hbWVdKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZpZWxkc2V0c1skbmFtZV07CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaWVsZHNldHMoKQogICAgewogICAgICAgIC8vIHJldHVybiAkdGhpcy0+ZmllbGRzZXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW5kZXJGaWVsZHNldHMoJHdpZGdldF90ZW1wbGF0ZSA9IG51bGwsICRsZWdlbmQgPSB0cnVlKQogICAgewogICAgICAgICRodG1sID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpIHsKICAgICAgICAgICAgJGh0bWwgLj0gJGZpZWxkc2V0LT5yZW5kZXIoJHdpZGdldF90ZW1wbGF0ZSwgJGxlZ2VuZCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyRmllbGRzZXQoJG5hbWUsICR3aWRnZXRfdGVtcGxhdGUgPSBudWxsKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+ZmllbGRzZXRzWyRuYW1lXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5maWVsZHNldHNbJG5hbWVdLT5yZW5kZXIoJHdpZGdldF90ZW1wbGF0ZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormFieldset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1GaWVsZHNldCBleHRlbmRzIENNU0Zvcm0KewogIHByb3RlY3RlZCAkcGFyZW50X2Zvcm07CiAgcHJvdGVjdGVkICRuYW1lOwogIHByb3RlY3RlZCAkbGVnZW5kOwogIHByb3RlY3RlZCAkY2xhc3M7CiAgcHJvdGVjdGVkICRyZW5kZXJlZCA9IGZhbHNlOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZm9ybSwgJG5hbWUsICRsZWdlbmQgPSAnJykKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRmb3JtLT5tb2R1bGVfbmFtZSwgJGZvcm0tPmlkLCAkZm9ybS0+YWN0aW9uLCAkZm9ybS0+cmV0dXJuaWQpOwogICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgIGlmKCRsZWdlbmQgPT0gJycpCiAgICB7CiAgICAgICR0aGlzLT5sZWdlbmQgPSAkbmFtZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHRoaXMtPmxlZ2VuZCA9ICRsZWdlbmQ7CiAgICB9CiAgICAkdGhpcy0+cGFyZW50X2Zvcm0gPSYgJGZvcm07CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzcygkY2xhc3MpCiAgewogICAgJHRoaXMtPmNsYXNzID0gJGNsYXNzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCR3aWRnZXRfdGVtcGxhdGU9bnVsbCwgJGxlZ2VuZCA9IHRydWUpCiAgewogICAgJGh0bWwgPSAnJzsKICAgIGlmKCEkdGhpcy0+cmVuZGVyZWQpCiAgICB7CiAgICAgICRodG1sIC49ICc8ZmllbGRzZXQnOwogICAgICAkaHRtbCAuPSAoJHRoaXMtPmNsYXNzKT8nIGNsYXNzPSInIC4gJHRoaXMtPmNsYXNzIC4gJyInOicnOwogICAgICAkaHRtbCAuPSc+JzsKICAgICAgaWYoJGxlZ2VuZCkgJGh0bWwgLj0nPGxlZ2VuZD4nLiR0aGlzLT5sZWdlbmQuJzwvbGVnZW5kPic7CiAgICAgICRodG1sIC49ICR0aGlzLT5zaG93V2lkZ2V0cygkd2lkZ2V0X3RlbXBsYXRlKTsKICAgICAgJGh0bWwgLj0gJzwvZmllbGRzZXQ+JzsKICAgICAgJHRoaXMtPnJlbmRlcmVkID0gdHJ1ZTsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICAgIAogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldFdpZGdldCgkbmFtZSwkdHlwZSA9ICd0ZXh0Jywkc2V0dGluZ3MgPSBhcnJheSgpKQogIHsKICAgIGlmICgkdHlwZSA9PSAnZmlsZScpCiAgICB7CiAgICAgICR0aGlzLT5wYXJlbnRfZm9ybS0+c2V0TXVsdGlwYXJ0Rm9ybSgpOwogICAgfQogICAgcGFyZW50OjpzZXRXaWRnZXQoJG5hbWUsJHR5cGUsJHNldHRpbmdzKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGlzUG9zdGVkKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPnBhcmVudF9mb3JtLT5pc1Bvc3RlZCgpOwogIH0KICAKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBiYXNlCiovCgovKioKICogQHByb3BlcnR5IG1peGVkIHNob3dfcHJpb3JpdHkKICovCmNsYXNzIENNU0Zvcm1JbnB1dAp7CiAgICBwcm90ZWN0ZWQgJGlkOwogICAgcHJvdGVjdGVkICRuYW1lOwogICAgcHJvdGVjdGVkICR2YWx1ZXMgPSBhcnJheSgpOyAvLyBXZSBhbHdheXMgc3RvcmUgcmVzdWx0cyBpbiBhbiBhcnJheS4gSW4gY2FzZSBvZiBzaW5nbGUgZmllbGQsIHRoZSBzaW5nbGUgdmFsdWUgaXMgYXJyYXlbMF0KCiAgICBwcm90ZWN0ZWQgJGZvcm07CiAgICBwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwogICAgcHJvdGVjdGVkICRzZXR0aW5ncyA9IGFycmF5KCk7CgogICAgLy8gVkFMSURBVElPTgogICAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgICBwcm90ZWN0ZWQgJGZvcm1fZXJyb3JzOwoKICAgIC8vIFBST0NFU1NJTkcKICAgIHByb3RlY3RlZCAkc2hvd25lZCA9IGZhbHNlOwogICAgcHJvdGVjdGVkICRoaWRlID0gZmFsc2U7CgogICAgcHJvdGVjdGVkICR0ZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJmb3JtX3dpZGdldCI+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybV9sYWJlbCI+PGxhYmVsIGZvcj0iJUlEJSI+JUxBQkVMJTwvbGFiZWw+PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybV9lcnJvcnMiPiVFUlJPUlMlPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybV9pbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KICAgICAgPC9kaXY+JzsKCiAgICBwcm90ZWN0ZWQgJGFkbWluX3RlbXBsYXRlID0gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPGRpdiBjbGFzcz0icGFnZXRleHQiPiVMQUJFTCU6PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0Ij4lSU5QVVQlIDxlbT4lVElQUyU8L2VtPjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij4lRVJST1JTJTwvZGl2PgoJPC9kaXY+JzsKCi8vICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCi8vICAgIHsKLy8gICAgICAgIHJldHVybiAkdGhpczsKLy8gICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPiRuYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPiRuYW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0cmFjZSA9IGRlYnVnX2JhY2t0cmFjZSgpOwogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKAogICAgICAgICAgICAgICAgJ1VuZGVmaW5lZCBwcm9wZXJ0eSB2aWEgX19nZXQoKTogJyAuICRuYW1lIC4KICAgICAgICAgICAgICAgICcgaW4gJyAuICR0cmFjZVswXVsnZmlsZSddIC4KICAgICAgICAgICAgICAgICcgb24gbGluZSAnIC4gJHRyYWNlWzBdWydsaW5lJ10sCiAgICAgICAgICAgICAgICBFX1VTRVJfTk9USUNFKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXR1cCgkaWQsICRuYW1lLCAmJGZvcm0sICRtb2R1bGVfbmFtZSwgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkdGhpcy0+aWQgPSAkaWQ7CiAgICAgICAgJHRoaXMtPm5hbWUgPSBpc3NldCgkc2V0dGluZ3NbJ25hbWUnXSkgPyAkc2V0dGluZ3NbJ25hbWUnXSA6ICRuYW1lOwogICAgICAgICR0aGlzLT5mb3JtID0gJGZvcm07CiAgICAgICAgJHRoaXMtPm1vZHVsZV9uYW1lID0gJG1vZHVsZV9uYW1lOwogICAgICAgICR0aGlzLT5zZXR0aW5ncyA9ICRzZXR0aW5nczsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBmaWVsZAogICAgICAgICR0aGlzLT5pbml0VmFsdWVzKCk7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQ01TRm9ybQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9ybSgpCiAgICB7CiAgICAgICAgaWYgKCFpc19vYmplY3QoJHRoaXMtPmZvcm0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FuIGVycm9yIG9jY3VyZWQgcmV0cmlldmluZyB0aGUgZm9ybSBvYmplY3QuJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+Zm9ybTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kdWxlKCkKICAgIHsKICAgICAgICBpZiAoJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkbW9kdWxlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyk7IC8vIERlZmF1bHQgc2FmZWJhY2sKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmcoJHNldHRpbmcsICRkZWZhdWx0X3ZhbHVlID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPnNldHRpbmdzWyRzZXR0aW5nXSkgPyAkdGhpcy0+c2V0dGluZ3NbJHNldHRpbmddIDogJGRlZmF1bHRfdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFNldHRpbmcoJHNldHRpbmcsICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJHNldHRpbmddID0gJHZhbHVlOwogICAgfQoKICAgIC8vICMjIyMjIEZPUk0gIyMjIyMKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5uYW1lOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpJHRoaXMtPmdldFZhbHVlKCk7IC8vIERvbid0IGtub3cgd2hhdCB0byBkbz8gU2hvdyB0aGUgdmFsdWUuCiAgICB9CgogICAgLy8gIyMjIyMgV0lER0VUIFBST0NFU1NJTkcgIyMjIyMKCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzcygkc2F2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgLy8gVmFsaWRhdGUKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoKTsKCiAgICAgICAgLy8gU2F2ZSB2YWx1ZXMKICAgICAgICBpZiAoJHNhdmUgPT0gdHJ1ZSkgewogICAgICAgICAgICAkdGhpcy0+c2F2ZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hvdygkdGVtcGxhdGUgPSBudWxsLCAkZm9yY2UgPSBmYWxzZSkKICAgIHsKICAgICAgICAvLyBUT0RPOiBSRUZBQ1RPUklORwoKICAgICAgICBpZiAoKCEkdGhpcy0+c2hvd25lZCB8fCAkZm9yY2UpKSB7CiAgICAgICAgICAgICRodG1sID0gJyc7CgogICAgICAgICAgICAvLyBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSAmJiAoJHRoaXMtPnR5cGUgIT0gJ2hpZGRlbicpKSAvLyBGSVhNRQogICAgICAgICAgICBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSkgewogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUlEJScsICR0aGlzLT5pZCAuICR0aGlzLT5uYW1lLCAkdGVtcGxhdGUpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUZJRUxETkFNRSUnLCAkdGhpcy0+bmFtZSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUxBQkVMJScsICR0aGlzLT5nZXRMYWJlbCgpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclTEFCRUxfVEFHJScsICR0aGlzLT5nZXRMYWJlbFRhZygpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclSU5QVVQlJywgJHRoaXMtPmdldElucHV0KCksICR0ZXh0KTsKICAgICAgICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVFUlJPUlMlJywgJHRoaXMtPnNob3dFcnJvcnMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVRJUFMlJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVBSRUZJWCUnLCAkdGhpcy0+Z2V0VGlwcygpLCAkdGV4dCk7CiAgICAgICAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclU1VGSVglJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgICAgICAgJGh0bWwgLj0gJHRleHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAoc3RyaW5nKSR0aGlzOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd3aXRoX2RpdiddKSkgewogICAgICAgICAgICAgICAgJGh0bWwgPSAnPGRpdiBjbGFzcz0iJyAuICR0aGlzLT5nZXRTZXR0aW5nKCdjbGFzcycsICdmaWVsZF8nIC4gJHRoaXMtPm5hbWUpIC4gJyI+JyAuICRodG1sIC4gJzwvZGl2Pic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5zaG93bmVkID0gdHJ1ZTsKICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyAjIyMjIyBDT1NNRVRJQ1MgIyMjIyMKCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaG93KCR0aGlzLT5nZXRUZW1wbGF0ZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGVtcGxhdGUoKQogICAgewogICAgICAgIGdsb2JhbCAkQ01TX0FETUlOX1BBR0U7CgogICAgICAgIGlmICgkQ01TX0FETUlOX1BBR0UpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hZG1pbl90ZW1wbGF0ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnRlbXBsYXRlOwogICAgICAgIH0KICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsKCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydsYWJlbCddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydsYWJlbCddOwogICAgICAgIH0KICAgICAgICAvLyBUcnkgdG8gZ2V0IGl0IGZyb20gbGFuZ3VhZ2UgZmlsZQogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPmxhbmcoJ2Zvcm1fJyAuICR0aGlzLT5uYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmllbmRseU5hbWUoKQogICAgewogICAgICAgIGlmKCR0aGlzLT5nZXRMYWJlbCgpKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRMYWJlbCgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldE5hbWUoKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsVGFnKCkKICAgIHsKICAgICAgICByZXR1cm4gJzxsYWJlbCBmb3I9IicgLiAkdGhpcy0+aWQgLiAkdGhpcy0+bmFtZSAuICciPicgLiAkdGhpcy0+Z2V0TGFiZWwoKSAuICc8L2xhYmVsPic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRpcHMoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3RpcHMnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1sndGlwcyddOwogICAgICAgIH0KICAgICAgICAvLyBUcnkgdG8gZ2V0IGl0IGZyb20gbGFuZ3VhZ2UgZmlsZQogICAgICAgIC8vIGlmIChjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKSkKICAgICAgICAvLyAgIHsKICAgICAgICAvLyAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgc2hvd24gb25seSBpdCB0aGUgbGFuZyBrZXkgZXhpc3RzLi4uCiAgICAgICAgLy8gICAgIHJldHVybiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+bGFuZygndGlwc18nLiR0aGlzLT5uYW1lKTsKICAgICAgICAvLyAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCgogICAgLy8gIyMjIyMgVkFMVUVTICMjIyMjCgogICAgLy8gU0FWRQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzYXZlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlzVmFsaWQoKSA9PSB0cnVlKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNhdmVPYmplY3QoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2F2ZVByZWZlcmVuY2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zYXZlVXNlclByZWZlcmVuY2UoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pICYmICEkdGhpcy0+Z2V0Rm9ybSgpLT5pc1NlbnQoKSkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5zZXR0aW5nc1snZGVmYXVsdF92YWx1ZSddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpCiAgICB7CgogICAgICAgIC8vIFRoaXMgZG8gbm90IHNhdmUgdGhlIG9iamVjdCBzdGF0ZSwgc28gd2UgaGF2ZSB0byBkbyBpdCBvdXRzaWRlIHRoZSBmb3JtCgogICAgICAgICR2YWx1ZXMgPSAkdGhpcy0+Z2V0VmFsdWUoKTsKCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2V0X21ldGhvZCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT57JHRoaXMtPnNldHRpbmdzWydzZXRfbWV0aG9kJ119KCR2YWx1ZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9ICR0aGlzLT5uYW1lOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnc2V0JykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnNldCgkbmFtZSwgJHZhbHVlcyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lID0gJHZhbHVlczsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgIGRpZSgnVW5hYmxlIHRvIHNhdmUgdGhlIG9iamVjdDogJyAuICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlUHJlZmVyZW5jZSgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAmJiAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdjYW5jZWwnXSkpIHsKICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUgaXMgbm8gY2FuY2VsIGJ1dHRvbiBmaXJzdCBiZWNhdXNlIHdlIHNhdmUgdGhlIHZhbHVlIGRpcmVjdGx5ICEKICAgICAgICAgICAgJHRoaXMtPmdldE1vZHVsZSgpLT5zZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddLCAkdGhpcy0+Z2V0VmFsdWUoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlVXNlclByZWZlcmVuY2UoKQogICAgewogICAgICAgICRfU0VTU0lPTlsnbW9kdWxlcyddWyR0aGlzLT5tb2R1bGVfbmFtZV1bJ3ByZWZlcmVuY2VzJ11bJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXV0gPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgIH0KCiAgICAvLyBWYWx1ZXMgbWFuaXB1bGF0aW9uCgogICAgcHVibGljIGZ1bmN0aW9uIGluaXRWYWx1ZXMoKQogICAgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSkgewogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKGh0bWxfZW50aXR5X2RlY29kZSgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd2YWx1ZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5zZXR0aW5nc1sndmFsdWUnXSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmICEkdGhpcy0+Z2V0Rm9ybSgpLT5pc1Bvc3RlZCgpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPmZldGNoT2JqZWN0VmFsdWVzKCkpOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkgJiYgJHRoaXMtPmdldE1vZHVsZSgpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAhPSAnJykgewogICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5nZXRNb2R1bGUoKS0+Z2V0UHJlZmVyZW5jZSgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkpOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddKSAmJiAoJHZhbHVlID0gJHRoaXMtPmdldFVzZXJQcmVmZXJlbmNlKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlZmF1bHRfdmFsdWUnXSkgJiYgISR0aGlzLT5nZXRGb3JtKCktPmlzU2VudCgpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5zZXR0aW5nc1snZGVmYXVsdF92YWx1ZSddKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmV0Y2hPYmplY3RWYWx1ZXMoKQogICAgewoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgaXNfb2JqZWN0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT57JHRoaXMtPnNldHRpbmdzWydnZXRfbWV0aG9kJ119KCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbmFtZSA9IGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZmllbGRfbmFtZSddKSA/ICR0aGlzLT5zZXR0aW5nc1snZmllbGRfbmFtZSddIDogJHRoaXMtPm5hbWU7CgogICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSwgJ2dldCcpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPmdldCgkbmFtZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT4kbmFtZTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYXVkaXQoJycsICdDTVNGb3JtcycsICdVbmFibGUgdG8gcmV0cmlldmUgdmFsdWUgZm9yIGZpZWxkICcgLiAkbmFtZSAuICcgd2l0aCBtZXNzYWdlICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRVc2VyUHJlZmVyZW5jZSgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfU0VTU0lPTlsnbW9kdWxlcyddWyR0aGlzLT5tb2R1bGVfbmFtZV1bJ3ByZWZlcmVuY2VzJ11bJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkX1NFU1NJT05bJ21vZHVsZXMnXVskdGhpcy0+bW9kdWxlX25hbWVdWydwcmVmZXJlbmNlcyddWyR0aGlzLT5zZXR0aW5nc1sndXNlcl9wcmVmZXJlbmNlJ11dOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKQogICAgewogICAgICAgIGlmIChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAxKSB7CiAgICAgICAgICAgIHJlc2V0KCR0aGlzLT52YWx1ZXMpOwogICAgICAgICAgICByZXR1cm4gKHN0cmluZyljdXJyZW50KCR0aGlzLT52YWx1ZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKWltcGxvZGUoJ3x8fCcsICR0aGlzLT52YWx1ZXMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJHZhbHVlLCAka2V5ID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWVzWyRrZXldID0gKHN0cmluZykkdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVZhbHVlSWZFcXVhbCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5nZXRWYWx1ZSgpID09ICR2YWx1ZSkgewogICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKGFycmF5KCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWVzKCR2YWx1ZXMgPSBhcnJheSgpKQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSkgewogICAgICAgICAgICAkdGhpcy0+dmFsdWVzID0gJHZhbHVlczsKICAgICAgICB9IGVsc2VpZiAoc3RycG9zKCR2YWx1ZXMsICd8fHwnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlcyA9IGV4cGxvZGUoJ3x8fCcsICR2YWx1ZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXNbMF0gPSAkdmFsdWVzOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXRWYWx1ZXMoKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZWZhdWx0VmFsdWVzKCR2YWx1ZXMpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXMgPSAkdmFsdWVzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgkdmFsdWVzKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKQogICAgewogICAgICAgIGlmICgoY291bnQoJHRoaXMtPnZhbHVlcykgPT0gMSkgJiYgKGVtcHR5KCR0aGlzLT52YWx1ZXNbMF0pKSB8fCAoY291bnQoJHRoaXMtPnZhbHVlcykgPT0gMCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBWYWx1ZXMgdmFsaWRhdGlvbgoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddKSAmJiBpc19hcnJheSgkdGhpcy0+c2V0dGluZ3NbJ3ZhbGlkYXRvcnMnXSkpIHsKICAgICAgICAgICAgLy8gQ0hBTkdFIFRIQVQKCiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddIGFzICR2YWxpZGF0b3IgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoaXNfb2JqZWN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsaWRhdGUgPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgJHZhbGlkYXRlLT5zZXRXaWRnZXQoJHRoaXMpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBERVBSRUNBVEVECiAgICAgICAgICAgICAgICAgICAgJHZhbGlkYXRlID0gbmV3IENNU0Zvcm1WYWxpZGF0b3IoJHRoaXMsICR2YWxpZGF0b3IsICR2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbGlkYXRlLT5jaGVjaygpID09PSBmYWxzZSkgJHRoaXMtPmlzX3ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGUtPmdldE1lc3NhZ2UoKSwgJ2Zvcm0gZXJyb3InKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNWYWxpZCgpCiAgICB7CiAgICAgICAgaWYgKCgkdGhpcy0+aXNfdmFsaWQgPT0gZmFsc2UpIHx8ICR0aGlzLT5oYXNFcnJvcnMoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ11bJHZhbGlkYXRvcl0gPSAkcGFyYW1zOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcikKICAgIHsKICAgICAgICB1bnNldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbGlkYXRvcnMnXVskdmFsaWRhdG9yXSk7CiAgICB9CgogICAgLy8gRVJST1JTCgogICAgcHVibGljIGZ1bmN0aW9uIGhhc0Vycm9ycygpCiAgICB7CiAgICAgICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgPT0gMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub0Vycm9yKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5oYXNFcnJvcnMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1fZXJyb3JzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93RXJyb3JzKCkKICAgIHsKICAgICAgICAkaHRtbCA9ICcnOwogICAgICAgIGlmIChjb3VudCgkdGhpcy0+Zm9ybV9lcnJvcnMpID4gMCkgewogICAgICAgICAgICAkaHRtbCAuPSAnPHVsIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcnMiPic7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mb3JtX2Vycm9ycyBhcyAkcHJpb3JpdHkgPT4gJGVycm9ycykgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzxsaT4nOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5zaG93X3ByaW9yaXR5KSAkaHRtbCAuPSAnPGVtIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcl9wcmlvcml0eSI+JyAuICRwcmlvcml0eSAuICc8L2VtPic7CiAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPHVsPic7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikgewogICAgICAgICAgICAgICAgICAgICRodG1sIC49ICc8bGkgY2xhc3M9ImZvcm1fd2lkZ2V0X2Vycm9yX21lc3NhZ2UiPicgLiAkZXJyb3IgLiAnPC9saT4nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzwvdWw+PC9saT4nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRodG1sIC49ICc8L3VsPic7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RXJyb3IoJG1lc3NhZ2UsICRwcmlvcml0eSA9ICdkZWZhdWx0JykKICAgIHsKICAgICAgICAkdGhpcy0+Zm9ybV9lcnJvcnNbJHByaW9yaXR5XVtdID0gJG1lc3NhZ2U7CiAgICB9CgoKfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCheckbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBDaGVja2JveAoqLwoKY2xhc3MgQ01TRm9ybUlucHV0Q2hlY2tib3ggZXh0ZW5kcyBDTVNGb3JtSW5wdXQKewoKICAgIHByb3RlY3RlZCAkdGVtcGxhdGUgPSAnPGRpdiBjbGFzcz0iZm9ybV93aWRnZXQiPgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1fbGFiZWwiPjxsYWJlbCBmb3I9IiVJRCUiPiVMQUJFTCU8L2xhYmVsPjwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1fZXJyb3JzIj4lRVJST1JTJTwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9ImZvcm1faW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CiAgICAgIDwvZGl2Pic7CgogICAgcHJvdGVjdGVkICRhZG1pbl90ZW1wbGF0ZSA9ICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9sYWJlbD48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2Pic7CgogICAgcHVibGljIGZ1bmN0aW9uIGluaXRWYWx1ZXMoKQogICAgewogICAgICAgIC8vIHZhcl9kdW1wKCdpbml0IGNoZWNrYm94ICcgLiAkdGhpcy0+bmFtZSk7CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPmdldFZhbHVlcygpKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICghaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkgfHwgaXNfbnVsbCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdKSkKICAgICAgICAgICAgJiYKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdzdWJtaXQnXSkKICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgICBpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ2FwcGx5J10pCiAgICAgICAgICAgICkKCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIENhc2Ugd2hlbiBjaGVja2JveCBpcyB1bmNoZWNrZWQgYW5kIGZvcm0gaXMgc3VibWl0dGVkLCB3ZSBzaG91bGQgZW1wdHkgdGhlIHZhbHVlCiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAgICAgLy8gJHRoaXMtPnNldFZhbHVlKC0xKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBwYXJlbnQ6OmluaXRWYWx1ZXMoKTsKICAgICAgICB9CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPmdldFZhbHVlcygpKTsKICAgICAgICAvLyB2YXJfZHVtcCgkdGhpcy0+Z2V0VmFsdWVzKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgJGlucHV0ID0gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVJbnB1dENoZWNrYm94KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICcxJywgKGludGVnZXIpKGJvb2xlYW4pJHRoaXMtPmdldFZhbHVlKCkpOwoKICAgICAgICBpZigkdGV4dCA9ICR0aGlzLT5nZXRTZXR0aW5nKCd0ZXh0JykpCiAgICAgICAgewogICAgICAgICAgICAkaW5wdXQgLj0gJyAnIC4gJHRleHQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGlucHV0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCountries.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0Q291bnRyaWVzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIHN0YXRpYyAkY291bnRyaWVzID0gYXJyYXkoCiAgICAgICdBRicgPT4gJ0FmZ2hhbmlzdGFuJywgJ0FMJyA9PiAnQWxiYW5pYScsICdEWicgPT4gJ0FsZ2VyaWEnLCAnQVMnID0+ICdBbWVyaWNhbiBTYW1vYScsICdBRCcgPT4gJ0FuZG9ycmEnLCAnQU8nID0+ICdBbmdvbGEnLCAnQUknID0+ICdBbmd1aWxsYScsICdBUScgPT4gJ0FudGFyY3RpY2EnLCAnQUcnID0+ICdBbnRpZ3VhIGFuZCBCYXJidWRhJywgJ0FSJyA9PiAnQXJnZW50aW5hJywgJ0FNJyA9PiAnQXJtZW5pYScsICdBVycgPT4gJ0FydWJhJywgJ0FVJyA9PiAnQXVzdHJhbGlhJywgJ0FUJyA9PiAnQXVzdHJpYScsICdBWicgPT4gJ0F6ZXJiYWlqYW4nLCAnQlMnID0+ICdCYWhhbWFzJywgJ0JIJyA9PiAnQmFocmFpbicsICdCRCcgPT4gJ0JhbmdsYWRlc2gnLCAnQkInID0+ICdCYXJiYWRvcycsICdCWScgPT4gJ0JlbGFydXMnLCAnQkUnID0+ICdCZWxnaXVtJywgJ0JaJyA9PiAnQmVsaXplJywgJ0JKJyA9PiAnQmVuaW4nLCAnQk0nID0+ICdCZXJtdWRhJywgJ0JUJyA9PiAnQmh1dGFuJywgJ0JPJyA9PiAnQm9saXZpYScsICdCQScgPT4gJ0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLCAnQlcnID0+ICdCb3Rzd2FuYScsICdCVicgPT4gJ0JvdXZldCBJc2xhbmQnLCAnQlInID0+ICdCcmF6aWwnLCAnSU8nID0+ICdCcml0aXNoIEluZGlhbiBPY2VhbiBUZXJyaXRvcnknLCAnVkcnID0+ICdCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywgJ0JOJyA9PiAnQnJ1bmVpJywgJ0JHJyA9PiAnQnVsZ2FyaWEnLCAnQkYnID0+ICdCdXJraW5hIEZhc28nLCAnQkknID0+ICdCdXJ1bmRpJywgJ0tIJyA9PiAnQ2FtYm9kaWEnLCAnQ00nID0+ICdDYW1lcm9vbicsICdDQScgPT4gJ0NhbmFkYScsICdDVicgPT4gJ0NhcGUgVmVyZGUnLCAnS1knID0+ICdDYXltYW4gSXNsYW5kcycsICdDRicgPT4gJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYycsICdURCcgPT4gJ0NoYWQnLCAnQ0wnID0+ICdDaGlsZScsICdDTicgPT4gJ0NoaW5hJywgJ0NYJyA9PiAnQ2hyaXN0bWFzIElzbGFuZCcsICdDQycgPT4gJ0NvY29zIChLZWVsaW5nKSBJc2xhbmRzJywgJ0NPJyA9PiAnQ29sb21iaWEnLCAnS00nID0+ICdDb21vcm9zJywgJ0NHJyA9PiAnQ29uZ28nLCAnQ0snID0+ICdDb29rIElzbGFuZHMnLCAnQ1InID0+ICdDb3N0YSBSaWNhJywgJ0hSJyA9PiAnQ3JvYXRpYScsICdDVScgPT4gJ0N1YmEnLCAnQ1knID0+ICdDeXBydXMnLCAnQ1onID0+ICdDemVjaCBSZXB1YmxpYycsICdDSScgPT4gJ0PDtHRlIGRcJ0l2b2lyZScsICdDRCcgPT4gJ0RlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlIENvbmdvJywgJ0RLJyA9PiAnRGVubWFyaycsICdESicgPT4gJ0RqaWJvdXRpJywgJ0RNJyA9PiAnRG9taW5pY2EnLCAnRE8nID0+ICdEb21pbmljYW4gUmVwdWJsaWMnLCAnRUMnID0+ICdFY3VhZG9yJywgJ0VHJyA9PiAnRWd5cHQnLCAnU1YnID0+ICdFbCBTYWx2YWRvcicsICdHUScgPT4gJ0VxdWF0b3JpYWwgR3VpbmVhJywgJ0VSJyA9PiAnRXJpdHJlYScsICdFRScgPT4gJ0VzdG9uaWEnLCAnRVQnID0+ICdFdGhpb3BpYScsICdGSycgPT4gJ0ZhbGtsYW5kIElzbGFuZHMnLCAnRk8nID0+ICdGYXJvZSBJc2xhbmRzJywgJ0ZKJyA9PiAnRmlqaScsICdGSScgPT4gJ0ZpbmxhbmQnLCAnRlInID0+ICdGcmFuY2UnLCAnR0YnID0+ICdGcmVuY2ggR3VpYW5hJywgJ1BGJyA9PiAnRnJlbmNoIFBvbHluZXNpYScsICdURicgPT4gJ0ZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllcycsICdHQScgPT4gJ0dhYm9uJywgJ0dNJyA9PiAnR2FtYmlhJywgJ0dFJyA9PiAnR2VvcmdpYScsICdERScgPT4gJ0dlcm1hbnknLCAnR0gnID0+ICdHaGFuYScsICdHSScgPT4gJ0dpYnJhbHRhcicsICdHUicgPT4gJ0dyZWVjZScsICdHTCcgPT4gJ0dyZWVubGFuZCcsICdHRCcgPT4gJ0dyZW5hZGEnLCAnR1AnID0+ICdHdWFkZWxvdXBlJywgJ0dVJyA9PiAnR3VhbScsICdHVCcgPT4gJ0d1YXRlbWFsYScsICdHTicgPT4gJ0d1aW5lYScsICdHVycgPT4gJ0d1aW5lYS1CaXNzYXUnLCAnR1knID0+ICdHdXlhbmEnLCAnSFQnID0+ICdIYWl0aScsICdITScgPT4gJ0hlYXJkIElzbGFuZCBhbmQgTWNEb25hbGQgSXNsYW5kcycsICdITicgPT4gJ0hvbmR1cmFzJywgJ0hLJyA9PiAnSG9uZyBLb25nIFMuQS5SLiwgQ2hpbmEnLCAnSFUnID0+ICdIdW5nYXJ5JywgJ0lTJyA9PiAnSWNlbGFuZCcsICdJTicgPT4gJ0luZGlhJywgJ0lEJyA9PiAnSW5kb25lc2lhJywgJ0lSJyA9PiAnSXJhbicsICdJUScgPT4gJ0lyYXEnLCAnSUUnID0+ICdJcmVsYW5kJywgJ0lMJyA9PiAnSXNyYWVsJywgJ0lUJyA9PiAnSXRhbHknLCAnSk0nID0+ICdKYW1haWNhJywgJ0pQJyA9PiAnSmFwYW4nLCAnSk8nID0+ICdKb3JkYW4nLCAnS1onID0+ICdLYXpha2hzdGFuJywgJ0tFJyA9PiAnS2VueWEnLCAnS0knID0+ICdLaXJpYmF0aScsICdLVicgPT4gJ0tvc292bycsICdLVycgPT4gJ0t1d2FpdCcsICdLRycgPT4gJ0t5cmd5enN0YW4nLCAnTEEnID0+ICdMYW9zJywgJ0xWJyA9PiAnTGF0dmlhJywgJ0xCJyA9PiAnTGViYW5vbicsICdMUycgPT4gJ0xlc290aG8nLCAnTFInID0+ICdMaWJlcmlhJywgJ0xZJyA9PiAnTGlieWEnLCAnTEknID0+ICdMaWVjaHRlbnN0ZWluJywgJ0xUJyA9PiAnTGl0aHVhbmlhJywgJ0xVJyA9PiAnTHV4ZW1ib3VyZycsICdNTycgPT4gJ01hY2FvIFMuQS5SLiwgQ2hpbmEnLCAnTUsnID0+ICdNYWNlZG9uaWEnLCAnTUcnID0+ICdNYWRhZ2FzY2FyJywgJ01XJyA9PiAnTWFsYXdpJywgJ01ZJyA9PiAnTWFsYXlzaWEnLCAnTVYnID0+ICdNYWxkaXZlcycsICdNTCcgPT4gJ01hbGknLCAnTVQnID0+ICdNYWx0YScsICdNSCcgPT4gJ01hcnNoYWxsIElzbGFuZHMnLCAnTVEnID0+ICdNYXJ0aW5pcXVlJywgJ01SJyA9PiAnTWF1cml0YW5pYScsICdNVScgPT4gJ01hdXJpdGl1cycsICdZVCcgPT4gJ01heW90dGUnLCAnTVgnID0+ICdNZXhpY28nLCAnRk0nID0+ICdNaWNyb25lc2lhJywgJ01EJyA9PiAnTW9sZG92YScsICdNQycgPT4gJ01vbmFjbycsICdNTicgPT4gJ01vbmdvbGlhJywgJ01TJyA9PiAnTW9udHNlcnJhdCcsICdNQScgPT4gJ01vcm9jY28nLCAnTVonID0+ICdNb3phbWJpcXVlJywgJ01NJyA9PiAnTXlhbm1hcicsICdOQScgPT4gJ05hbWliaWEnLCAnTlInID0+ICdOYXVydScsICdOUCcgPT4gJ05lcGFsJywgJ05MJyA9PiAnTmV0aGVybGFuZHMnLCAnQU4nID0+ICdOZXRoZXJsYW5kcyBBbnRpbGxlcycsICdOQycgPT4gJ05ldyBDYWxlZG9uaWEnLCAnTlonID0+ICdOZXcgWmVhbGFuZCcsICdOSScgPT4gJ05pY2FyYWd1YScsICdORScgPT4gJ05pZ2VyJywgJ05HJyA9PiAnTmlnZXJpYScsICdOVScgPT4gJ05pdWUnLCAnTkYnID0+ICdOb3Jmb2xrIElzbGFuZCcsICdLUCcgPT4gJ05vcnRoIEtvcmVhJywgJ01QJyA9PiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywgJ05PJyA9PiAnTm9yd2F5JywgJ09NJyA9PiAnT21hbicsICdQSycgPT4gJ1Bha2lzdGFuJywgJ1BXJyA9PiAnUGFsYXUnLCAnUFMnID0+ICdQYWxlc3RpbmlhbiBUZXJyaXRvcnknLCAnUEEnID0+ICdQYW5hbWEnLCAnUEcnID0+ICdQYXB1YSBOZXcgR3VpbmVhJywgJ1BZJyA9PiAnUGFyYWd1YXknLCAnUEUnID0+ICdQZXJ1JywgJ1BIJyA9PiAnUGhpbGlwcGluZXMnLCAnUE4nID0+ICdQaXRjYWlybicsICdQTCcgPT4gJ1BvbGFuZCcsICdQVCcgPT4gJ1BvcnR1Z2FsJywgJ1BSJyA9PiAnUHVlcnRvIFJpY28nLCAnUUEnID0+ICdRYXRhcicsICdSTycgPT4gJ1JvbWFuaWEnLCAnUlUnID0+ICdSdXNzaWEnLCAnUlcnID0+ICdSd2FuZGEnLCAnUkUnID0+ICdSw6l1bmlvbicsICdTSCcgPT4gJ1NhaW50IEhlbGVuYScsICdLTicgPT4gJ1NhaW50IEtpdHRzIGFuZCBOZXZpcycsICdMQycgPT4gJ1NhaW50IEx1Y2lhJywgJ1BNJyA9PiAnU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbicsICdWQycgPT4gJ1NhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzJywgJ1dTJyA9PiAnU2Ftb2EnLCAnU00nID0+ICdTYW4gTWFyaW5vJywgJ1NUJyA9PiAnU2FvIFRvbWUgYW5kIFByaW5jaXBlJywgJ1NBJyA9PiAnU2F1ZGkgQXJhYmlhJywgJ1NOJyA9PiAnU2VuZWdhbCcsICdTUCcgPT4gJ1NlcmJpYScsICdSUycgPT4gJ1NlcmJpYScsICdTQycgPT4gJ1NleWNoZWxsZXMnLCAnU0wnID0+ICdTaWVycmEgTGVvbmUnLCAnU0cnID0+ICdTaW5nYXBvcmUnLCAnU0snID0+ICdTbG92YWtpYScsICdTSScgPT4gJ1Nsb3ZlbmlhJywgJ1NCJyA9PiAnU29sb21vbiBJc2xhbmRzJywgJ1NPJyA9PiAnU29tYWxpYScsICdaQScgPT4gJ1NvdXRoIEFmcmljYScsICdHUycgPT4gJ1NvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywgJ0tSJyA9PiAnU291dGggS29yZWEnLCAnRVMnID0+ICdTcGFpbicsICdMSycgPT4gJ1NyaSBMYW5rYScsICdTRCcgPT4gJ1N1ZGFuJywgJ1NSJyA9PiAnU3VyaW5hbWUnLCAnU0onID0+ICdTdmFsYmFyZCBhbmQgSmFuIE1heWVuJywgJ1NaJyA9PiAnU3dhemlsYW5kJywgJ1NFJyA9PiAnU3dlZGVuJywgJ0NIJyA9PiAnU3dpdHplcmxhbmQnLCAnU1knID0+ICdTeXJpYScsICdUVycgPT4gJ1RhaXdhbicsICdUSicgPT4gJ1RhamlraXN0YW4nLCAnVFonID0+ICdUYW56YW5pYScsICdUSCcgPT4gJ1RoYWlsYW5kJywgJ1RMJyA9PiAnVGltb3ItTGVzdGUnLCAnVEcnID0+ICdUb2dvJywgJ1RLJyA9PiAnVG9rZWxhdScsICdUTycgPT4gJ1RvbmdhJywgJ1RUJyA9PiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsICdUTicgPT4gJ1R1bmlzaWEnLCAnVFInID0+ICdUdXJrZXknLCAnVE0nID0+ICdUdXJrbWVuaXN0YW4nLCAnVEMnID0+ICdUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMnLCAnVFYnID0+ICdUdXZhbHUnLCAnVkknID0+ICdVLlMuIFZpcmdpbiBJc2xhbmRzJywgJ1VHJyA9PiAnVWdhbmRhJywgJ1VBJyA9PiAnVWtyYWluZScsICdBRScgPT4gJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgJ0dCJyA9PiAnVW5pdGVkIEtpbmdkb20nLCAnVVMnID0+ICdVbml0ZWQgU3RhdGVzJywgJ1VNJyA9PiAnVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzJywgJ1VZJyA9PiAnVXJ1Z3VheScsICdVWicgPT4gJ1V6YmVraXN0YW4nLCAnVlUnID0+ICdWYW51YXR1JywgJ1ZBJyA9PiAnVmF0aWNhbicsICdWRScgPT4gJ1ZlbmV6dWVsYScsICdWTicgPT4gJ1ZpZXRuYW0nLCAnV0YnID0+ICdXYWxsaXMgYW5kIEZ1dHVuYScsICdFSCcgPT4gJ1dlc3Rlcm4gU2FoYXJhJywgJ1lFJyA9PiAnWWVtZW4nLCAnWVUnID0+ICdZdWdvc2xhdmlhJywgJ1pNJyA9PiAnWmFtYmlhJywgJ1pXJyA9PiAnWmltYmFid2UnCiAgICAgICk7CiAgICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCksJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpCiAgICB7CiAgICAgICRzZXR0aW5nc1sndmFsdWVzJ10gPSBzZWxmOjokY291bnRyaWVzOwogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZSBleHRlbmRzIENNU0Zvcm1JbnB1dFNlbGVjdAogIHsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkgIHsKICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA+IDEpKQogICAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJzAnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzEnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzInXTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLScsICR0aGlzLT52YWx1ZXMpOwogICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZURhdGVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLCR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydD0wKSB7CiAgICAgIGlmICgoJGVuZCA8IDApfHwoIWlzX251bWVyaWMoJGVuZCkpKSAkZW5kID0gMTsKICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgICB7CiAgICAgICAgJGxpc3RbJGldID0gKCRpIDwgMTApPyAnMCcgLiAoc3RyaW5nKSRpOihzdHJpbmcpJGk7CiAgICAgIH0KICAgICAgcmV0dXJuICRsaXN0OwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURhdGVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJy0nKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCctJywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkc3RhcnRfeWVhciA9IGlzc2V0KCRzZXR0aW5nc1snc3RhcnRfeWVhciddKT8kc2V0dGluZ3NbJ3N0YXJ0X3llYXInXTpkYXRlKCdZJyk7CiAgICAgICRudW1iZXJfeWVhcnMgPSBpc3NldCgkc2V0dGluZ3NbJ251bWJlcl95ZWFycyddKT8kc2V0dGluZ3NbJ251bWJlcl95ZWFycyddOjIwOwogICAgICAkZW5kX3llYXIgPSAkc3RhcnRfeWVhciArICRudW1iZXJfeWVhcnM7CgogICAgICAkeWVhciA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1swXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgkZW5kX3llYXIsJHN0YXJ0X3llYXIpLGFycmF5KCR2YWx1ZXNbMF0pLDEsJycsZmFsc2UpOwogICAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSxhcnJheSgkdmFsdWVzWzFdKSwxLCcnLGZhbHNlKTsKICAgICAgJGRheSA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgzMSwxKSxhcnJheSgkdmFsdWVzWzJdKSwxLCcnLGZhbHNlKTsKICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXVyb3BlYW5fZGF0ZSddKSkKICAgICAgewogICAgICAgIHJldHVybiAkZGF5IC4gJG1vbnRoIC4gJHllYXI7CiAgICAgIH0KICAgICAgcmV0dXJuICR5ZWFyIC4gJG1vbnRoIC4gJGRheTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVNb250aHNMaXN0KCkgewogICAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDEyOyArKyRpKSB7CiAgICAgICAgJHQgPSBta3RpbWUoMCwgMCwgMCwgJGksIDEsIDIwMDApOwogICAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgICAgfQogICAgICByZXR1cm4gJG1vbnRoczsKICAgIH0KICAKICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDateTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZVRpbWUKCQlCYXNlZCBvbiBhIHRpbWVzdGFtcCB2YWx1ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZVRpbWUgZXh0ZW5kcyBDTVNGb3JtSW5wdXRUaW1lCiAgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKSAgewogICAgICBpZiAoKGNvdW50KCR0aGlzLT52YWx1ZXMpID4gMSkpCiAgICAgIHsKCQkJCXJldHVybiBzdHJ0b3RpbWUoCgkJCQkJJHRoaXMtPnZhbHVlc1snMCddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMSddIC4gJy0nIC4gJHRoaXMtPnZhbHVlc1snMiddCgkJCQkJLiAnICcgLiAKCQkJCQkkdGhpcy0+dmFsdWVzWyczJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc0J10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWyc1J10KCQkJCSk7CgogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIHJldHVybiBpbXBsb2RlKCctJywgJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0KICAgIH0KCgkJcHVibGljIGZ1bmN0aW9uIGdldFRpbWUoKQoJCXsKCQkJcmV0dXJuIGRhdGUoJ0g6aTpzJywgJHRoaXMtPmdldFZhbHVlKCkpOwoJCX0KCQkKCQlwdWJsaWMgZnVuY3Rpb24gZ2V0RGF0ZSgpCgkJewoJCQlyZXR1cm4gZGF0ZSgnWS1tLWQnLCAkdGhpcy0+Z2V0VmFsdWUoKSk7CQkJCgkJfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CQogICAgICByZXR1cm4KIAkJCQlzZWxmOjpDcmVhdGVEYXRlU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSxleHBsb2RlKCctJywgJHRoaXMtPmdldERhdGUoKSksICR0aGlzLT5zZXR0aW5ncykKIAkJCQkuIHNlbGY6OkNyZWF0ZVRpbWVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLGV4cGxvZGUoJzonLCR0aGlzLT5nZXRUaW1lKCkpLCAzKTsKICAgIH0gCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBGaWxlCiovCgpjbGFzcyBDTVNGb3JtSW5wdXRGaWxlIGV4dGVuZHMgQ01TRm9ybUlucHV0CnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRVcGxvYWRGaWVsZCgpOwogICAgICAgIC8vIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZUlucHV0SGlkZGVuKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpCiAgICB7CiAgICAgICAgLy8gVE9ETzogVGhpcyBjYXNlCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZGVkRmlsZSgpCiAgICB7CiAgICAgICAgaWYoaXNzZXQoJF9GSUxFU1skdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRfRklMRVNbJHRoaXMtPmlkIC4gJHRoaXMtPm5hbWVdOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0VXBsb2FkRmllbGQoKQogICAgewogICAgICAgICRmaWVsZCA9ICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRGaWxlKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICcnLCAkdGhpcy0+Z2V0U2V0dGluZygnc2l6ZScsIDMwKSk7CgogICAgICAgICRodG1sID0gJzxzcGFuPic7CiAgICAgICAgaWYgKCEkdGhpcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RpcmVjdF9saW5rJ10pICYmICR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXSAhPSAnJykgewogICAgICAgICAgICAgICAgJGZpbGVfdXJsID0gJHRoaXMtPnNldHRpbmdzWydkaXJlY3RfbGluayddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGZpbGVfdXJsID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydiYXNlX3VybCddKSA/ICR0aGlzLT5zZXR0aW5nc1snYmFzZV91cmwnXSA6ICcnOwogICAgICAgICAgICAgICAgaWYgKChzdWJzdHIoJGZpbGVfdXJsLCAtMSkgIT0gJy8nKSAmJiAoc3Vic3RyKCR0aGlzLT5nZXRWYWx1ZSgpLCAwLCAxKSAhPSAnLycpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZpbGVfdXJsIC49ICcvJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRmaWxlX3VybCAuPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgICAgICRmaWxlX3VybCA9IHN0cl9yZXBsYWNlKERJUkVDVE9SWV9TRVBBUkFUT1IsICcvJywgJGZpbGVfdXJsKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHNlbGY6OmlzSW1hZ2UoJHRoaXMtPmdldFZhbHVlKCkpKSB7CiAgICAgICAgICAgICAgICAkdGV4dCA9ICc8aW1nIHNyYz0iJyAuICRmaWxlX3VybCAuICciIC8+JzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0ZXh0ID0gYmFzZW5hbWUoJHRoaXMtPnZhbHVlc1swXSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRodG1sIC49ICc8c3BhbiBzdHlsZT0iZGlzcGxheTpibG9jazsgbWFyZ2luLWJvdHRvbTogN3B4OyI+PGEgaHJlZj0iJyAuICRmaWxlX3VybCAuICciIHJlbD0iZXh0ZXJuYWwiID4nIC4gJHRleHQgLiAnPC9hPjwvc3Bhbj4gJzsKCiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddKSkgewogICAgICAgICAgICAgICAgJGZpZWxkIC49ICcgJyAuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRDaGVja2JveCgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmlkLAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddLAogICAgICAgICAgICAgICAgICAgICAgICAnMScKICAgICAgICAgICAgICAgICAgICApIC4gJyAnIC4gJHRoaXMtPmdldE1vZHVsZSgpLT5sYW5nKCdkZWxldGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICRodG1sIC49ICRmaWVsZCAuICc8L3NwYW4+JzsKCiAgICAgICAgcmV0dXJuICRodG1sOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gaXNJbWFnZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgJHZhbGlkX2V4dGVuc2lvbnMgPSBhcnJheSgnanBlZycsICdqcGcnLCAnZ2lmJywgJ3BuZycpOwogICAgICAgIGlmIChpbl9hcnJheShzZWxmOjpnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSksICR2YWxpZF9leHRlbnNpb25zKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKQogICAgewogICAgICAgICRmaWxlID0gZXhwbG9kZSgnLicsICRmaWxlbmFtZSk7CiAgICAgICAgaWYgKGNvdW50KCRmaWxlKSA+IDEpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnRvbG93ZXIoZW5kKCRmaWxlKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputHidden.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgSGlkZGVuCiAgKi8KICAKICBjbGFzcyBDTVNGb3JtSW5wdXRIaWRkZW4gZXh0ZW5kcyBDTVNGb3JtSW5wdXQKICB7CiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0SW5wdXQoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRIaWRkZW4oJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQogIH0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPages.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFnZXMKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhZ2VzIGV4dGVuZHMgQ01TRm9ybUlucHV0U2VsZWN0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgJHRoaXMtPnNldHRpbmdzWyd2YWx1ZXMnXSA9IGFycmF5KDAgPT4gJyZsYXF1bzsgJyAuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygnc2VsZWN0IG9uZScpIC4gJyAmcmFxdW87JykgKyBzZWxmOjpnZXRQYWdlc0xpc3QoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZVNlbGVjdG9yKCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZXMoKSwgJHRoaXMtPnNldHRpbmdzKTsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlc0xpc3QoJGlkLCRuYW1lLCR2YWx1ZSwkc2V0dGluZ3MgPSBhcnJheSgpKSB7CgogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAgICRhcnJheSA9IGFycmF5KCk7CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKQogICAgICB7CiAgICAgICAgJGNoaWxkcmVub2YgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pOwogICAgICB9CgogICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKQogICAgICB7CiAgICAgICAgJHN0YXJ0X3BhZ2UgPSBzZWxmOjpnZXRQYWdlSWQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pOwogICAgICB9CgogICAgICBmb3JlYWNoKCRwYWdlcyBhcyAkcGFnZSkKICAgICAgewogICAgICAgIGlmICgKICAgICAgICAgICghaXNzZXQoJHN0YXJ0X3BhZ2UpICYmICFpc3NldCgkY2hpbGRyZW5vZikpIAogICAgICAgICAgfHwKICAgICAgICAgIChpc3NldCgkY2hpbGRyZW5vZikgJiYgKCRwYWdlLT5QYXJlbnRJZCgpID09ICRjaGlsZHJlbm9mKSkgLy8gTGlzdCBvZiBhbGwgY2hpbGRyZW5zCiAgICAgICAgICB8fAogICAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZS4nLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAkYXJyYXlbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpOwogICAgICAgIH0KCiAgICAgIH0KCiAgICAgIHJldHVybiAkYXJyYXk7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlSWQoJGFsaWFzKSAgewogICAgICAkbWFuYWdlciA9IGNtc21zKCktPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgICAgJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRhbGlhcyk7CiAgICAgIGlmICgkbm9kZSkgewogICAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgICAgaWYgKCRjb250ZW50KQogICAgICAgICAgewogICAgICAgICAgICAgIHJldHVybiAkY29udGVudC0+SWQoKTsKICAgICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkYWxpYXMpOwogICAgICAgICAgaWYgKCRub2RlKSB7CiAgICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQYWdlU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWUsJHNldHRpbmdzID0gYXJyYXkoKSkgewogICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CgogICAgICAkaHRtbCA9ICc8c2VsZWN0IG5hbWU9IicuJGlkLiRuYW1lLiciPjxvcHRpb24+Jy5jbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyktPmxhbmcoJ3NlbGVjdCBvbmUnKS4nPC9vcHRpb24+JzsKCiAgICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJzxvcHRpb24gdmFsdWU9IicgLiAkcGFnZS0+SWQoKSAuICciJzsKCiAgICAgICAgaWYoJHZhbHVlID09ICRwYWdlLT5JZCgpKQogICAgICAgIHsKICAgICAgICAgICRodG1sIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfSAgICAgIAoKICAgICAgICAkaHRtbCAuPSAnPicgLiAkcGFnZS0+SGllcmFyY2h5KCkuJy4gLSAnLiRwYWdlLT5OYW1lKCkgLiAnPC9vcHRpb24+JzsKICAgICAgfQoKICAgICAgJGh0bWwgLj0gJzwvc2VsZWN0Pic7ICAgIAoKICAgICAgcmV0dXJuICRodG1sOwogICAgfQogICAgCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputPassword.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgUGFzc3dvcmQKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFBhc3N3b3JkIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRQYXNzd29yZCgkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAnJywkdGhpcy0+Z2V0U2V0dGluZygnc2l6ZScsIDIwKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKSB7CgkJCWlmKCR0aGlzLT5nZXRWYWx1ZSgpICE9ICcnKQogICAgICB7CgkJCQlwYXJlbnQ6OnNhdmUoKTsKCQkJfQoJCX0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSelect.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgQ01TRm9ybSBJbnB1dCBTZWxlY3QKKi8KCmNsYXNzIENNU0Zvcm1JbnB1dFNlbGVjdCBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkdGhpcy0+aWQsICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0VmFsdWVzKCksICR0aGlzLT5zZXR0aW5ncyk7CiAgICB9CgoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXhwYW5kZWQnXSkgJiYgJHNldHRpbmdzWydleHBhbmRlZCddID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pID8gJHNldHRpbmdzWyd2YWx1ZXMnXSA6IGFycmF5KCksICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGl0ZW1zID0gaXNzZXQoJHNldHRpbmdzWyd2YWx1ZXMnXSkgPyAkc2V0dGluZ3NbJ3ZhbHVlcyddIDogYXJyYXkoKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkpIHsKICAgICAgICAgICAgICAgIGlmKGlzc2V0KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10pKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRpdGVtcyA9IGFycmF5KCRzZXR0aW5nc1snY3VzdG9tX3ZhbHVlJ10gPT4gJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSArICRpdGVtczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbXMgPSBhcnJheSgnJyA9PiAkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pICsgJGl0ZW1zOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkdmFsdWVzLCBpc3NldCgkc2V0dGluZ3NbJ3NpemUnXSkgPyAkc2V0dGluZ3NbJ3NpemUnXSA6IDEsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKSA/ICRzZXR0aW5nc1snYWRkdGV4dCddIDogJycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSkgPyB0cnVlIDogZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkc2l6ZSA9IDMsICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRzaXplID0gY21zX2h0bWxlbnRpdGllcygkc2l6ZSk7CiAgICAgICAgJG11bHRpcGxlID0gY21zX2h0bWxlbnRpdGllcygkbXVsdGlwbGUpOwoKICAgICAgICBpZiAoJG11bHRpcGxlID09IHRydWUpIHsKICAgICAgICAgICAgJG5hbWUgLj0gJ1tdJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0ID0gJzxzZWxlY3QgbmFtZT0iJyAuICRpZCAuICRuYW1lIC4gJyIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICciJzsKCiAgICAgICAgaWYgKCRhZGR0dGV4dCAhPSAnJykgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAkYWRkdHRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG11bHRpcGxlKSB7CiAgICAgICAgICAgICR0ZXh0IC49ICcgbXVsdGlwbGU9Im11bHRpcGxlIiAnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzaXplID4gMSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIHNpemU9IicgLiAkc2l6ZSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ2NsYXNzJ10pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkc2V0dGluZ3NbJ2NsYXNzJ10pKSAkc2V0dGluZ3NbJ2NsYXNzJ10gPSBpbXBsb2RlKCcgJywgJHNldHRpbmdzWydjbGFzcyddKTsKICAgICAgICAgICAgJHRleHQgLj0gJyBjbGFzcz0iJyAuICRzZXR0aW5nc1snY2xhc3MnXSAuICciJzsKICAgICAgICB9CgogICAgICAgIGlmICgoY291bnQoJGl0ZW1zKSA+IDApICYmIChrZXkoJGl0ZW1zKSA9PSAwKSAmJiAhaXNfYXJyYXkoY3VycmVudCgkaXRlbXMpKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnIGRhdGEtcGxhY2Vob2xkZXI9IicgLiAoc3RyaW5nKWN1cnJlbnQoJGl0ZW1zKSAuICciJzsKICAgICAgICB9CgogICAgICAgICR0ZXh0IC49ICc+JzsKCiAgICAgICAgJGNvdW50ID0gMDsKICAgICAgICBmb3JlYWNoICgkaXRlbXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR0ZXh0IC49ICc8b3B0Z3JvdXAgbGFiZWw9IicgLiAka2V5IC4gJyI+JzsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAka2V5MiA9PiAkZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICAkdGV4dCAuPSBzZWxmOjpnZW5lcmF0ZU9wdGlvbigka2V5MiwgJGVudHJ5LCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGV4dCAuPSAnPC9vcHRncm91cD4nOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRleHQgLj0gc2VsZjo6Z2VuZXJhdGVPcHRpb24oJGtleSwgJHZhbHVlLCAkc2VsZWN0ZWRpdGVtcyk7CiAgICAgICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGV4dCAuPSAnPC9zZWxlY3Q+JyAuICJcbiI7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlT3B0aW9uKCRrZXksICR2YWx1ZSwgJHNlbGVjdGVkaXRlbXMpCiAgICB7CiAgICAgICAgJHRleHQgPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRrZXkgLiAnIic7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCAuPSAnICcgLiAnc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgICAgfQogICAgICAgICR0ZXh0IC49ICc+JzsKICAgICAgICAkdGV4dCAuPSAkdmFsdWU7CiAgICAgICAgJHRleHQgLj0gJzwvb3B0aW9uPic7CgogICAgICAgIHJldHVybiAkdGV4dDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMgPSBhcnJheSgpLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSwgJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgICAkbmFtZSA9IGNtc19odG1sZW50aXRpZXMoJG5hbWUpOwogICAgICAgICRtdWx0aXBsZSA9IGNtc19odG1sZW50aXRpZXMoJG11bHRpcGxlKTsKCiAgICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAka2V5ID0+ICRpdGVtKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkpIHsKICAgICAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgnbGFiZWwnID0+ICc8c3Ryb25nPicgLiAka2V5IC4gJzwvc3Ryb25nPicsICdpbnB1dCcgPT4gJycpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVtIGFzICRrZXkyID0+ICRlbnRyeSkgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRlbnRyeSwgJG5hbWUsICRrZXkyLCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OmdlbmVyYXRlRXhwYW5kZWRMaXN0KCRsaXN0LCAkaWQsICRpdGVtLCAkbmFtZSwgJGtleSwgJHNlbGVjdGVkaXRlbXMsICRtdWx0aXBsZSwgJGFkZHR0ZXh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRwYXJhbXNbJ21vZGUnXSkgJiYgKCRwYXJhbXNbJ21vZGUnXSA9PSAnaHRtbCcpKSB7CiAgICAgICAgICAgIC8vIFRPRE8KICAgICAgICAgICAgcmV0dXJuICdOb3QgaW1wbGVtZW50ZWQgeWV0JzsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHBhcmFtc1snbW9kZSddKSAmJiAoJHBhcmFtc1snbW9kZSddID09ICdhcnJheScpKSB7CiAgICAgICAgICAgIHJldHVybiAkbGlzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaHRtbCA9ICcnOwogICAgICAgICAgICBpZiAoY291bnQoJGxpc3QpID4gMCkgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJzx1bD4nOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGxpc3QgYXMgJGl0ZW0pIHsKICAgICAgICAgICAgICAgICAgICAkaHRtbCAuPSAnPGxpPicgLiAkaXRlbVsnaW5wdXQnXSAuICcgJyAuICRpdGVtWydsYWJlbCddIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRodG1sIC49ICc8L3VsPic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICRodG1sOwogICAgICAgIH0KCiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUV4cGFuZGVkTGlzdCgmJGxpc3QsICRpZCwgJGl0ZW0sICRuYW1lLCAka2V5LCAkc2VsZWN0ZWRpdGVtcywgJG11bHRpcGxlLCAkYWRkdHRleHQpCiAgICB7CiAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRzZWxlY3RlZGl0ZW1zKSkgewogICAgICAgICAgICAkdGV4dCA9ICcgY2hlY2tlZD0iY2hlY2tlZCInIC4gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0ZXh0ID0gJyAnIC4gJGFkZHR0ZXh0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtdWx0aXBsZSkgewogICAgICAgICAgICAkbGlzdFtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbGFiZWwnID0+ICc8bGFiZWwgZm9yPSInIC4gJGlkIC4gJG5hbWUgLiAnWycgLiAka2V5IC4gJ10iPicgLiAkaXRlbSAuICc8L2xhYmVsPicsCiAgICAgICAgICAgICAgICAnaW5wdXQnID0+ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgaWQ9IicgLiAkaWQgLiAkbmFtZSAuICdbJyAuICRrZXkgLiAnXSIgdmFsdWU9IicgLiAka2V5IC4gJyInIC4gJHRleHQgLiAnIC8+JwogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRsaXN0W10gPSBhcnJheSgKICAgICAgICAgICAgICAgICdsYWJlbCcgPT4gJzxsYWJlbCBmb3I9IicgLiAkaWQgLiAkbmFtZSAuICRrZXkgLiAnIj4nIC4gJGl0ZW0gLiAnPC9sYWJlbD4nLAogICAgICAgICAgICAgICAgJ2lucHV0JyA9PiAnPGlucHV0IHR5cGU9InJhZGlvIiBuYW1lPSInIC4gJGlkIC4gJG5hbWUgLiAnIiBpZD0iJyAuICRpZCAuICRuYW1lIC4gJGtleSAuICciIHZhbHVlPSInIC4gJGtleSAuICciJyAuICR0ZXh0IC4gJyAvPicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIC8vIERFUFJFQ0FURUQgVE8gQkUgUkVNT1ZFRAoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zID0gYXJyYXkoKSwgJHNpemUgPSAzLCAkYWRkdHRleHQgPSAnJywgJG11bHRpcGxlID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXMsICRzaXplLCAkYWRkdHRleHQsICRtdWx0aXBsZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcyA9IGFycmF5KCksICRhZGR0dGV4dCA9ICcnLCAkbXVsdGlwbGUgPSB0cnVlLCAkcGFyYW1zID0gYXJyYXkoKSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputStatic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1JbnB1dFN0YXRpYyBleHRlbmRzIENNU0Zvcm1JbnB1dAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9Cgp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputSyntaxarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgQ01TRm9ybUlucHV0U3ludGF4YXJlYQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0U3ludGF4YXJlYSBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVN5bnRheEFyZWEoJHRoaXMtPmlkLCAkdGhpcy0+Z2V0VmFsdWUoKSwgJHRoaXMtPm5hbWUsJ3BhZ2ViaWd0ZXh0YXJlYScsICcnLCcnLCAnJywgOTAsIDE1KTsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputText.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGV4dCBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRUZXh0KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpLCBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3NpemUnXSk/JHRoaXMtPnNldHRpbmdzWydzaXplJ106ODAsIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10pPyR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ106MjU1KTsKCiAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJ2NsYXNzPSJjbXNfdGV4dGZpZWxkIicsICdjbGFzcz0iJy4oc3RyaW5nKSR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10uJyInLCAkaW5wdXQpOwogICAgICB9CgogICAgICBpZihpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJz4nLCAncGxhY2Vob2xkZXI9IicuKHN0cmluZykkdGhpcy0+c2V0dGluZ3NbJ3BsYWNlaG9sZGVyJ10uJyI+JywgJGlucHV0KTsKICAgICAgfQoKICAgICAgcmV0dXJuICRpbnB1dDsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTextarea.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dGFyZWEKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dFRleHRhcmVhIGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkKICAgIHsKICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10pICYmICR0aGlzLT5zZXR0aW5nc1snc2hvd193eXNpd3lnJ10gPT0gdHJ1ZSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZVRleHRBcmVhKHRydWUsICR0aGlzLT5pZCwgJHRoaXMtPmdldFZhbHVlKCksICR0aGlzLT5uYW1lLCAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3MnKSwgJHRoaXMtPmdldFNldHRpbmcoJ2h0bWxpZCcpKTsgICAgICAgICAgICAKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVUZXh0QXJlYSgKICAgICAgICAgIGZhbHNlLAogICAgICAgICAgJHRoaXMtPmlkLAogICAgICAgICAgJHRoaXMtPmdldFZhbHVlKCksIAogICAgICAgICAgJHRoaXMtPm5hbWUsCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY2xhc3NuYW1lJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnaHRtbGlkJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZW5jb2RpbmcnLCcnKSwKICAgICAgICAgICR0aGlzLT5nZXRTZXR0aW5nKCdzdHlsZXNoZWV0JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnY29scycsJzgwJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygncm93cycsJzE1JyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnZm9yY2V3eXNpd3lnJywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnd2FudGVkc3ludGF4JywnJyksCiAgICAgICAgICAkdGhpcy0+Z2V0U2V0dGluZygnYWRkdGV4dCcsJycpCiAgICAgICAgICApOwogICAgICB9CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGltZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGltZSBleHRlbmRzIENNU0Zvcm1JbnB1dERhdGUKICB7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpICB7CiAgICAgIGlmICgoY291bnQoJHRoaXMtPnZhbHVlcykgPiAxKSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzWycwJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycxJ10gLiAnOicgLiAkdGhpcy0+dmFsdWVzWycyJ107CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJzonLCAkdGhpcy0+dmFsdWVzKTsKICAgICAgfQogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CiAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVUaW1lU2VsZWN0KCR0aGlzLT5pZCwkdGhpcy0+bmFtZSwkdGhpcy0+Z2V0VmFsdWVzKCkpOwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVRpbWVTZWxlY3QoJGlkLCRuYW1lLCR2YWx1ZXMsICRwb3MgPSAwKSAgewogICAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgICAgewogICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywkdmFsdWVzWzBdKTsKICAgICAgfQogICAgICAkaG91cnMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4kcG9zLiddJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KDIzKSxhcnJheSgkdmFsdWVzWzBdKSwxLCcnLGZhbHNlKTsKICAgICAgJG1pbnV0ZXMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbJy4oJHBvcysxKS4nXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAgICRzZWNvbmRzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWycuKCRwb3MrMikuJ10nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLGFycmF5KCR2YWx1ZXNbMl0pLDEsJycsZmFsc2UpOwogICAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCi8qKgogKiBDbGFzcyBDTVNGb3JtVmFsaWRhdG9yCiAqIEBkZXByZWNhdGVkIHVzZSBDTVNGVmFsaWRhdG9yIHN1Yi1jbGFzc2VzCiAqLwoKY2xhc3MgQ01TRm9ybVZhbGlkYXRvcgp7CgogICAgcHJpdmF0ZSAkdmFsaWRhdG9yOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHdpZGdldCwgJHZhbGlkYXRvcl9uYW1lLCAkcGFyYW1zKQogICAgewogICAgICAgICR0aGlzLT52YWxpZGF0b3IgPSAkdGhpcy0+YnVpbGRWYWxpZGF0b3IoJHZhbGlkYXRvcl9uYW1lLCAkd2lkZ2V0LCAkcGFyYW1zKTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYnVpbGRWYWxpZGF0b3IoJHZhbGlkYXRvcl9uYW1lLCAmJHdpZGdldCwgJHBhcmFtcykKICAgIHsKICAgICAgICBzd2l0Y2goJHZhbGlkYXRvcl9uYW1lKQogICAgICAgIHsKICAgICAgICAgICAgY2FzZSAnbm90X2VtcHR5JzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvck5vdEVtcHR5KCRwYXJhbXMpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2VxdWFsX2ZpZWxkJzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvckVxdWFsRmllbGQoJHBhcmFtcyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZW1haWwnOgogICAgICAgICAgICAgICAgJHZhbGlkYXRvciA9IG5ldyBDTVNGVmFsaWRhdG9yRW1haWwoJHBhcmFtcyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndW5pcXVlJzoKICAgICAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgQ01TRlZhbGlkYXRvclVuaXF1ZSgkcGFyYW1zKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OwogICAgICAgICAgICAgICAgJHZhbGlkYXRvciA9IG5ldyBDTVNGVmFsaWRhdG9yKCRwYXJhbXMpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkdmFsaWRhdG9yLT5zZXRXaWRnZXQoJHdpZGdldCk7CiAgICAgICAgcmV0dXJuICR2YWxpZGF0b3I7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRWYWxpZGF0b3IoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsaWRhdG9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRWYWxpZGF0b3IoKS0+Y2hlY2soKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkZW1haWwKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogQGRlcHJlY2F0ZWQgdXNlIENNU0ZWYWxpZGF0b3JFbWFpbDo6dmFsaWRFbWFpbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkRW1haWwoJGVtYWlsKQogICAgewogICAgICAgIHJldHVybiBDTVNGVmFsaWRhdG9yRW1haWw6OnZhbGlkRW1haWwoJGVtYWlsKTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormWidget.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAgVGhpcyBjbGFzcyBhaW0gdG8gaGFuZGxlIENNUyBGb3JtcyB2ZXJ5IGRpZmZlcmVudGx5LgoKICBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8Y3liZXJ0b3RvcGhlQGdtYWlsLmNvbT4KICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogIExpY2VuY2U6IEdQTAoKKi8KCmNsYXNzIENNU0Zvcm1XaWRnZXQgLy9leHRlbmRzIENtc09iamVjdAp7CiAgICAvKioKICAgICAqIEB2YXIgJHdpZGdldAogICAgICovCiAgICBwcm90ZWN0ZWQgJHdpZGdldDsKCiAgICBwdWJsaWMgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKICAgICAgICAndGV4dCcgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnVGV4dCBmaWVsZCcsICdhZG8nID0+ICdDKDI1NSknKSwKICAgICAgICAndGV4dGFyZWEnID0+IGFycmF5KCd0aXRsZScgPT4gJ1RleHQgYXJlYScsICdhZG8nID0+ICdYTCcpLAogICAgICAgICdjaGVja2JveCcgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnQ2hlY2tib3gnLCAnYWRvJyA9PiAnSScpLAogICAgICAgICdzZWxlY3QnID0+IGFycmF5KCd0aXRsZScgPT4gJ1NlbGVjdCcsICdhZG8nID0+ICdDKDI1NSknKSwKICAgICAgICAncGFzc3dvcmQnID0+IGFycmF5KCd0aXRsZScgPT4gJ1Bhc3N3b3JkJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgICAgICdkYXRlJyA9PiBhcnJheSgndGl0bGUnID0+ICdEYXRlJywgJ2FkbycgPT4gJ0RUJyksCiAgICAgICAgJ3RpbWUnID0+IGFycmF5KCd0aXRsZScgPT4gJ1RpbWUnLCAnYWRvJyA9PiAnRFQnKSwKICAgICAgICAnZGF0ZXRpbWUnID0+IGFycmF5KCd0aXRsZScgPT4gJ0RhdGUgJiBUaW1lJywgJ2FkbycgPT4gJ0knKSwKICAgICAgICAnZmlsZScgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnRmlsZScsICdhZG8nID0+ICdDKDI1NSknKSk7CgogICAgY29uc3QgRklFTERfVEVYVCA9ICd0ZXh0JzsKCiAgICAvLyBSRUZBQ1RPUgoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGZvcm0sICRpZCwgJG1vZHVsZV9uYW1lLCAkbmFtZSwgJHR5cGUsICRzZXR0aW5ncyA9IGFycmF5KCkpCiAgICB7CgogICAgICAgICR0aGlzLT53aWRnZXQgPSAkdGhpcy0+Z2V0V2lkZ2V0T2JqZWN0KCR0eXBlKQogICAgICAgICAgICAtPnNldHVwKCRpZCwgJG5hbWUsICRmb3JtLCAkbW9kdWxlX25hbWUsICRzZXR0aW5ncykKICAgICAgICAgICAgLT5pbml0KCk7CiAgICAgICAgLy8gdmFyX2R1bXAoJHRoaXMtPndpZGdldCk7CiAgICAgICAgLy8gREVQUkVDQVRFRAogICAgICAgIC8vICR0aGlzLT5mb3JtID0gJGZvcm07CiAgICAgICAgLy8gJHRoaXMtPmlkID0gJGlkOwogICAgICAgIC8vICR0aGlzLT5tb2R1bGVfbmFtZSA9ICRtb2R1bGVfbmFtZTsKICAgICAgICAvLyAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKT8kc2V0dGluZ3NbJ25hbWUnXTokbmFtZTsKICAgICAgICAvLyAkdGhpcy0+dHlwZSA9ICR0eXBlOwogICAgICAgIC8vICR0aGlzLT5zZXR0aW5ncyA9ICRzZXR0aW5nczsKICAgICAgICAvLyAvLyAgLS0KICAgICAgICAvLwogICAgICAgIC8vICR0aGlzLT5pbml0KCk7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V2lkZ2V0T2JqZWN0KCR0eXBlKQogICAgewogICAgICAgIHN3aXRjaCAoJHR5cGUpIHsKICAgICAgICAgICAgY2FzZSAndGV4dCc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRleHQoKTsKICAgICAgICAgICAgY2FzZSAnaGlkZGVuJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7CiAgICAgICAgICAgIGNhc2UgJ3NlbGVjdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFNlbGVjdCgpOwogICAgICAgICAgICBjYXNlICdwYWdlcyc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFBhZ2VzKCk7CiAgICAgICAgICAgIGNhc2UgJ2NvdW50cmllcyc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dENvdW50cmllcygpOwogICAgICAgICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRleHRhcmVhKCk7CiAgICAgICAgICAgIGNhc2UgJ2NvZGVhcmVhJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0U3ludGF4YXJlYSgpOwogICAgICAgICAgICBjYXNlICdkYXRlJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0RGF0ZSgpOwogICAgICAgICAgICBjYXNlICdkYXRldGltZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dERhdGVUaW1lKCk7CiAgICAgICAgICAgIGNhc2UgJ3RpbWUnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRUaW1lKCk7CiAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0Q2hlY2tib3goKTsKICAgICAgICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRQYXNzd29yZCgpOwogICAgICAgICAgICBjYXNlICdmaWxlJzoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0RmlsZSgpOwogICAgICAgICAgICBjYXNlICdzdGF0aWMnOgogICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRTdGF0aWMoKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRjbGFzcyA9ICdDTVNGb3JtSW5wdXQnIC4gJHR5cGU7CiAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3MoKTsKICAgICAgICAgICAgICAgICRjbGFzcyA9ICdDTVNGb3JtSW5wdXQnIC4gdWNmaXJzdCgkdHlwZSk7CiAgICAgICAgICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCRjbGFzcykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3MoKTsKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0KCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRXaWRnZXQoKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHRoaXMtPndpZGdldCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXQoKTsgLy8gU29tZXRoaW5nIHdoZW50IHdyb25nIGR1cmluZyBpbml0IFRPRE86RklYCiAgICAgICAgfQogICAgfQoKCiAgICAvLyBPTEQgV0FZICoqKioqKioqKioqKioqKioqCgogICAgLy8gU2V0dGluZ3MKICAgIHByb3RlY3RlZCAkaWQ7IC8vIFRoZSBmb3JtIElECiAgICBwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwogICAgcHJvdGVjdGVkICRuYW1lOyAvLyBUaGUgaW5wdXQgbmFtZQogICAgcHJvdGVjdGVkICR0eXBlOwogICAgcHJvdGVjdGVkICRpbnB1dDsKICAgIHByb3RlY3RlZCAkdmFsdWVzID0gYXJyYXkoKTsKICAgIHByb3RlY3RlZCAkc2V0dGluZ3MgPSBhcnJheSgpOwogICAgcHJvdGVjdGVkICRmb3JtX2Vycm9yczsKICAgIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwogICAgLy8gIHByb3RlY3RlZCAkdmFsaWRhdGlvbnMgPSBhcnJheSgpOwogICAgcHJvdGVjdGVkICRzaG93bmVkID0gZmFsc2U7CiAgICBwcm90ZWN0ZWQgJGZvcm07CgogICAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgICBwcm90ZWN0ZWQgJHRlbXBsYXRlID0gJyVJTlBVVCUnOwoKICAgIHB1YmxpYyBzdGF0aWMgJGNvdW50cmllcyA9IGFycmF5KCk7IC8vREVQUkVDQVRFRCBDTVNGb3JtSW5wdXRDb3VudHJpZXM6OiRjb3VudHJpZXM7CgoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPiRuYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPiRuYW1lOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0cmFjZSA9IGRlYnVnX2JhY2t0cmFjZSgpOwogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKAogICAgICAgICAgICAgICAgJ1VuZGVmaW5lZCBwcm9wZXJ0eSB2aWEgX19nZXQoKTogJyAuICRuYW1lIC4KICAgICAgICAgICAgICAgICcgaW4gJyAuICR0cmFjZVswXVsnZmlsZSddIC4KICAgICAgICAgICAgICAgICcgb24gbGluZSAnIC4gJHRyYWNlWzBdWydsaW5lJ10sCiAgICAgICAgICAgICAgICBFX1VTRVJfTk9USUNFKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8vIFNFVFVQCiAgICBwdWJsaWMgZnVuY3Rpb24gaGlkZSgpCiAgICB7CgogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0U2V0dGluZygnbGFiZWwnLCAnJyk7CgogICAgICAgICR3aWRnZXQgPSBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7CiAgICAgICAgJHdpZGdldC0+c2V0dXAoCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+aWQsCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+bmFtZSwKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5mb3JtLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPm1vZHVsZV9uYW1lLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldHRpbmdzCiAgICAgICAgKQogICAgICAgICAgICAtPmluaXQoKQogICAgICAgICAgICAtPnNldFZhbHVlcygkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlcygpKTsKICAgICAgICAkdGhpcy0+d2lkZ2V0ID0gJHdpZGdldDsKICAgIH0KCiAgICAvLyBGSUxMCgoKICAgIC8qIENIRUNLIEdURCAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpbml0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aW5pdFZhbHVlcygpOwogICAgfQoKICAgIC8qIEdURCAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluaXRWYWx1ZXMoKQogICAgewoKICAgICAgICBzd2l0Y2ggKCR0aGlzLT50eXBlKSB7CiAgICAgICAgICAgIGNhc2UgJ2NoZWNrYm94JzoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkKICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdzdWJtaXQnXSkKICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdhcHBseSddKQogICAgICAgICAgICAgICAgICAgICkKCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIHdoZW4gY2hlY2tib3ggaXMgdW5jaGVja2VkIGFuZCBmb3JtIGlzIHN1Ym1pdHRlZCwgd2Ugc2hvdWxkIGVtcHR5IHRoZSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRfUkVRVUVTVFskdGhpcy0+aWQgLiAkdGhpcy0+bmFtZV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhodG1sX2VudGl0eV9kZWNvZGUoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICR0aGlzLT5uYW1lXSkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+c2V0dGluZ3NbJ3ZhbHVlJ10pOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKAogICAgICAgICAgICAgICAgICAgIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkIC4gJ3N1Ym1pdCddKSAmJiAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZCAuICdhcHBseSddKQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hWYWx1ZXMoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmIGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgICAgICAgICAgICAvLyR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pICYmICEkdGhpcy0+Zm9ybS0+aXNQb3N0ZWQoKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgLyogR1REICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmV0Y2hWYWx1ZXMoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSAmJiBpc19vYmplY3QoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnskdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXX0oKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRuYW1lID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10pID8gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10gOiAkdGhpcy0+bmFtZTsKCiAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnZ2V0JykpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+Z2V0KCRuYW1lKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lOwogICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyAgZGllKCd1bmFibGUgdG8gZG8nKTsgLy8gVE9ETzogVHJlYXRoIGVycm9yCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8vIExJTktFRCBUTyBXSURHRVRTCgoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93KCR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5fX3RvU3RyaW5nKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRMYWJlbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYWJlbFRhZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0TGFiZWxUYWcoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGlwcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VGlwcygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWZyZXNoKCkKICAgIHsKICAgICAgICAvLyBUT0RPOiBDaGVjayBjb25zZXF1ZW5jZXMKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPmluaXQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0TmFtZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXR0aW5nKCRzZXR0aW5nLCAkZGVmYXVsdF92YWx1ZSA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0U2V0dGluZygkc2V0dGluZywgJGRlZmF1bHRfdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRTZXR0aW5nKCRzZXR0aW5nLCAkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRTZXR0aW5nKCRzZXR0aW5nLCAkdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGb3JtKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRGb3JtKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRGcmllbmRseU5hbWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKQogICAgewogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlucHV0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0SW5wdXQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRUZXh0KCkKICAgIHsKICAgICAgICAkaW5wdXQgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Q3JlYXRlSW5wdXRUZXh0KCR0aGlzLT5pZCwgJHRoaXMtPm5hbWUsICR0aGlzLT5nZXRWYWx1ZSgpLCBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3NpemUnXSkgPyAkdGhpcy0+c2V0dGluZ3NbJ3NpemUnXSA6IDgwLCBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ21heGxlbmd0aCddKSA/ICR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10gOiAyNTUpOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXSkpIHsKICAgICAgICAgICAgLy8gT3ZlcmxvYWQgdGhpcyAiIyNAIcKnJCMiIGNsYXNzIHN5c3RlbQogICAgICAgICAgICAvLyBJbiBmcmVuY2ggaW4gdGhlIHRleHQ6IE5vbSBkZSBEaWV1IGRlIHB1dGFpbiBkZSBib3JkZWwgZGUgbWVyZGUgZGUgc2Fsb3BlcmllIGRlIGNvbm5hcmQgZCdlbmN1bMOpIGRlIHRhIG3DqHJlCiAgICAgICAgICAgIC8vIChodHRwOi8vd3d3LmltZGIuY29tL3RpdGxlL3R0MDIzNDIxNS90cml2aWE/dGFiPXRyJml0ZW09dHIwNzUyMzgyKQogICAgICAgICAgICAvLyAoU29ycnkgZm9yIHBydWRlIGVhcnMsIHRoaXMgaXMganVzdCBhIGNvbW1lbnQgaW4gYSBzb3VyY2UgY29kZS4uLikKICAgICAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJ2NsYXNzPSJjbXNfdGV4dGZpZWxkIicsICdjbGFzcz0iJyAuICR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10gLiAnIicsICRpbnB1dCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGlucHV0OwogICAgfQoKICAgIC8vIFBST0NFU1MKCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzcygkc2F2ZSA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5wcm9jZXNzKCRzYXZlKTsKICAgIH0KCiAgICAvLyBWQUxJREFUSU9OCgogICAgcHVibGljIGZ1bmN0aW9uIGlzVmFsaWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmlzVmFsaWQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+YWRkVmFsaWRhdG9yKCR2YWxpZGF0b3IsICRwYXJhbXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcikKICAgIHsKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnJlbW92ZVZhbGlkYXRvcigkdmFsaWRhdG9yKTsKICAgIH0KCiAgICAvLyBBQ0NFU1MKCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlKCR2YWx1ZSwgJGtleSA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRWYWx1ZSgkdmFsdWUsICRrZXkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+cmVtb3ZlVmFsdWVJZkVxdWFsKCR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWVzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlcygkdmFsdWVzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbHVlcygkdmFsdWVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RGVmYXVsdFZhbHVlcygkdmFsdWVzKQogICAgewogICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0RGVmYXVsdFZhbHVlcygkdmFsdWVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+aXNFbXB0eSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJpbmdWYWx1ZSgpCiAgICB7CiAgICAgICAgLy9ERVBSRUNBVEVECiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzVG9TdHJpbmcoKQogICAgewogICAgICAgIC8vIERFUFJFQ0FURUQKICAgICAgICByZXR1cm4gKHN0cmluZykkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlKCk7CiAgICB9CgogICAgLy8gcHVibGljIGZ1bmN0aW9uIGlzRW1wdHlWYWx1ZXMoKSB7CiAgICAvLyAgIC8vREVQUkVDQVRFRAogICAgLy8KICAgIC8vICAgaWYgKGlzX2FycmF5KCR0aGlzLT52YWx1ZXMpKQogICAgLy8gICB7CiAgICAvLyAgICAgcmV0dXJuICR0aGlzLT5pc0VtcHR5KCk7CiAgICAvLyAgIH0KICAgIC8vICAgZWxzZWlmKGVtcHR5KCR0aGlzLT52YWx1ZXMpKQogICAgLy8gICB7CiAgICAvLyAgICAgcmV0dXJuIHRydWU7CiAgICAvLyAgIH0KICAgIC8vICAgcmV0dXJuIGZhbHNlOwogICAgLy8gfQoKICAgIC8vIERJVkVSUwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RmllbGRzTGlzdCgpCiAgICB7CiAgICAgICAgJGxpc3QgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKHNlbGY6OiRmaWVsZHMgYXMgJHR5cGUgPT4gJGZpZWxkKSB7CiAgICAgICAgICAgICRsaXN0WyR0eXBlXSA9ICRmaWVsZFsndGl0bGUnXTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRsaXN0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWRvVHlwZSgkdHlwZSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoc2VsZjo6JGZpZWxkc1skdHlwZV1bJ2FkbyddKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JGZpZWxkc1skdHlwZV1bJ2FkbyddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAnQygyNTUpJzsgLy8gQmV0dGVyIHRoYW4gbm90aGluZy4uLgogICAgICAgIH0KICAgIH0KCiAgICAvLyBUb29scyAoREVQUkVDQVRFRCA9PT4gU0VFIENMQVNTRVMpCgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlc0xpc3QoJGlkLCAkbmFtZSwgJHZhbHVlLCAkc2V0dGluZ3MgPSBhcnJheSgpKQogICAgewoKICAgICAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAgICAgJGFycmF5ID0gYXJyYXkoKTsKCiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snY2hpbGRyZW5vZiddKSkgewogICAgICAgICAgICAkY2hpbGRyZW5vZiA9IHNlbGY6OmdldFBhZ2VJZCgkc2V0dGluZ3NbJ2NoaWxkcmVub2YnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKSB7CiAgICAgICAgICAgICRzdGFydF9wYWdlID0gc2VsZjo6Z2V0UGFnZUlkKCRzZXR0aW5nc1snc3RhcnRfcGFnZSddKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRwYWdlcyBhcyAkcGFnZSkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoIWlzc2V0KCRzdGFydF9wYWdlKSAmJiAhaXNzZXQoJGNoaWxkcmVub2YpKQogICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAgICAgIChpc3NldCgkY2hpbGRyZW5vZikgJiYgKCRwYWdlLT5QYXJlbnRJZCgpID09ICRjaGlsZHJlbm9mKSkgLy8gTGlzdCBvZiBhbGwgY2hpbGRyZW5zCiAgICAgICAgICAgICAgICB8fAogICAgICAgICAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZSAuICcuJykgPT09IDApKSAvLyBMaXN0IG9mIGFsbCBkZXNjZW5kYW50cwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRhcnJheVskcGFnZS0+SWQoKV0gPSAkcGFnZS0+SGllcmFyY2h5KCkgLiAnLiAtICcgLiAkcGFnZS0+TmFtZSgpOwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhcnJheTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFBhZ2VJZCgkYWxpYXMpCiAgICB7CiAgICAgICAgJG1hbmFnZXIgPSBjbXNtcygpLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAgICAgJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRhbGlhcyk7CiAgICAgICAgaWYgKCRub2RlKSB7CiAgICAgICAgICAgICRjb250ZW50ID0gJG5vZGUtPkdldENvbnRlbnQoKTsKICAgICAgICAgICAgaWYgKCRjb250ZW50KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQtPklkKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJGFsaWFzKTsKICAgICAgICAgICAgaWYgKCRub2RlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGFsaWFzOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUGFnZVNlbGVjdCgkaWQsICRuYW1lLCAkdmFsdWUsICRzZXR0aW5ncyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJHBhZ2VzID0gY21zbXMoKS0+R2V0Q29udGVudE9wZXJhdGlvbnMoKS0+R2V0QWxsQ29udGVudCgpOwoKICAgICAgICAkaHRtbCA9ICc8c2VsZWN0IG5hbWU9IicgLiAkaWQgLiAkbmFtZSAuICciPjxvcHRpb24+JyAuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygnc2VsZWN0IG9uZScpIC4gJzwvb3B0aW9uPic7CgogICAgICAgIGZvcmVhY2ggKCRwYWdlcyBhcyAkcGFnZSkgewogICAgICAgICAgICAkaHRtbCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRwYWdlLT5JZCgpIC4gJyInOwoKICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PSAkcGFnZS0+SWQoKSkgewogICAgICAgICAgICAgICAgJGh0bWwgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGh0bWwgLj0gJz4nIC4gJHBhZ2UtPkhpZXJhcmNoeSgpIC4gJy4gLSAnIC4gJHBhZ2UtPk5hbWUoKSAuICc8L29wdGlvbj4nOwogICAgICAgIH0KCiAgICAgICAgJGh0bWwgLj0gJzwvc2VsZWN0Pic7CgogICAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURhdGVTZWxlY3QoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzKQogICAgewogICAgICAgIGlmIChjb3VudCgkdmFsdWVzKSA9PSAxKSB7CiAgICAgICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJy0nKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCctJywgJHZhbHVlc1swXSk7CiAgICAgICAgfQogICAgICAgICRzdGFydF95ZWFyID0gaXNzZXQoJHNldHRpbmdzWydzdGFydF95ZWFyJ10pID8gJHNldHRpbmdzWydzdGFydF95ZWFyJ10gOiBkYXRlKCdZJyk7CiAgICAgICAgJG51bWJlcl95ZWFycyA9IGlzc2V0KCRzZXR0aW5nc1snbnVtYmVyX3llYXJzJ10pID8gJHNldHRpbmdzWydudW1iZXJfeWVhcnMnXSA6IDIwOwogICAgICAgICRlbmRfeWVhciA9ICRzdGFydF95ZWFyICsgJG51bWJlcl95ZWFyczsKCiAgICAgICAgJHllYXIgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSAuICdbMF0nLCBzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KCRlbmRfeWVhciwgJHN0YXJ0X3llYXIpLCBhcnJheSgkdmFsdWVzWzBdKSwgMSwgJycsIGZhbHNlKTsKICAgICAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSAuICdbMV0nLCBzZWxmOjpDcmVhdGVNb250aHNMaXN0KCksIGFycmF5KCR2YWx1ZXNbMV0pLCAxLCAnJywgZmFsc2UpOwogICAgICAgICRkYXkgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSAuICdbMl0nLCBzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KDMxLCAxKSwgYXJyYXkoJHZhbHVlc1syXSksIDEsICcnLCBmYWxzZSk7CiAgICAgICAgaWYgKGlzc2V0KCRzZXR0aW5nc1snZXVyb3BlYW5fZGF0ZSddKSkgewogICAgICAgICAgICByZXR1cm4gJGRheSAuICRtb250aCAuICR5ZWFyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHllYXIgLiAkbW9udGggLiAkZGF5OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlVGltZVNlbGVjdCgkaWQsICRuYW1lLCAkdmFsdWVzKQogICAgewogICAgICAgIGlmIChjb3VudCgkdmFsdWVzKSA9PSAxKSB7CiAgICAgICAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywgJHZhbHVlc1swXSk7CiAgICAgICAgfQogICAgICAgICRob3VycyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1swXScsIHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoMjMpLCBhcnJheSgkdmFsdWVzWzBdKSwgMSwgJycsIGZhbHNlKTsKICAgICAgICAkbWludXRlcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1sxXScsIHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLCBhcnJheSgkdmFsdWVzWzFdKSwgMSwgJycsIGZhbHNlKTsKICAgICAgICAkc2Vjb25kcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lIC4gJ1syXScsIHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLCBhcnJheSgkdmFsdWVzWzJdKSwgMSwgJycsIGZhbHNlKTsKICAgICAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVNb250aHNMaXN0KCkKICAgIHsKICAgICAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gMTI7ICsrJGkpIHsKICAgICAgICAgICAgJHQgPSBta3RpbWUoMCwgMCwgMCwgJGksIDEsIDIwMDApOwogICAgICAgICAgICAkbW9udGhzWyRpXSA9IGRhdGUoJ00nLCAkdCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkbW9udGhzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlTnVtYmVyTGlzdCgkZW5kLCAkc3RhcnQgPSAwKQogICAgewogICAgICAgIHJldHVybiBDTVNGb3JtSW5wdXREYXRlOjpDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydCk7CgogICAgICAgIC8vIGlmICgoJGVuZCA8IDApfHwoIWlzX251bWVyaWMoJGVuZCkpKSAkZW5kID0gMTsKICAgICAgICAvLyAkbGlzdCA9IGFycmF5KCk7CiAgICAgICAgLy8gZm9yICgkaSA9ICRzdGFydDsgJGkgPD0gJGVuZDsgJGkrKykKICAgICAgICAvLyB7CiAgICAgICAgLy8gICAkbGlzdFskaV0gPSAoc3RyaW5nKSRpOwogICAgICAgIC8vIH0KICAgICAgICAvLyByZXR1cm4gJGxpc3Q7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkaWQsICRuYW1lLCAkdmFsdWVzLCAkc2V0dGluZ3MpCiAgICB7CiAgICAgICAgcmV0dXJuIENNU0Zvcm1JbnB1dENvdW50cmllczo6Q3JlYXRlQ291bnRyaWVzU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzKTsKCiAgICAgICAgLy8gJHNldHRpbmdzWyd2YWx1ZXMnXSA9IENNU0Zvcm1JbnB1dENvdW50cmllczo6JGNvdW50cmllczsKICAgICAgICAvLyByZXR1cm4gc2VsZjo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVNlbGVjdG9yKCRpZCwgJG5hbWUsICR2YWx1ZXMsICRzZXR0aW5ncykKICAgIHsKCiAgICAgICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6Q3JlYXRlU2VsZWN0b3IoJGlkLCAkbmFtZSwgJHZhbHVlcywgJHNldHRpbmdzKTsKCiAgICAgICAgLy8gREVQUkVDQVRFRAogICAgICAgIC8vIGlmKGlzc2V0KCRzZXR0aW5nc1snZXhwYW5kZWQnXSkgJiYgJHNldHRpbmdzWydleHBhbmRlZCddID09IHRydWUpCiAgICAgICAgLy8gICAgewogICAgICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKSwgJHZhbHVlcywgaXNzZXQoJHNldHRpbmdzWydhZGR0ZXh0J10pPyRzZXR0aW5nc1snYWRkdGV4dCddOicnLCBpc3NldCgkc2V0dGluZ3NbJ211bHRpcGxlJ10pP3RydWU6ZmFsc2UsICRzZXR0aW5ncyk7CiAgICAgICAgLy8gICAgfQogICAgICAgIC8vICAgIGVsc2UKICAgICAgICAvLyAgICB7CiAgICAgICAgLy8gICAgICAkaXRlbXMgPSBpc3NldCgkc2V0dGluZ3NbJ3ZhbHVlcyddKT8kc2V0dGluZ3NbJ3ZhbHVlcyddOmFycmF5KCk7CiAgICAgICAgLy8gICAgICBpZihpc3NldCgkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pKQogICAgICAgIC8vICAgICAgewogICAgICAgIC8vICAgICAgICAkaXRlbXMgPSBhcnJheSgnJyA9PiAkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pICsgJGl0ZW1zOwogICAgICAgIC8vICAgICAgfQogICAgICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snc2l6ZSddKT8kc2V0dGluZ3NbJ3NpemUnXToxLCAnJywgaXNzZXQoJHNldHRpbmdzWydtdWx0aXBsZSddKT90cnVlOmZhbHNlKTsKICAgICAgICAvLyAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcyA9IGFycmF5KCksICRzaXplID0gMywgJGFkZHR0ZXh0ID0gJycsICRtdWx0aXBsZSA9IHRydWUpCiAgICB7CgogICAgICAgIHJldHVybiBDTVNGb3JtSW5wdXRTZWxlY3Q6OkRlcHJlY2F0ZWRDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJHNpemUsICRhZGR0dGV4dCwgJG11bHRpcGxlKTsKCiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dEV4cGFuZGVkTGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zID0gYXJyYXkoKSwgJGFkZHR0ZXh0ID0gJycsICRtdWx0aXBsZSA9IHRydWUsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewoKICAgICAgICByZXR1cm4gQ01TRm9ybUlucHV0U2VsZWN0OjpEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkRmllbGQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFVwbG9hZEZpZWxkKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0ltYWdlKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkdmFsaWRfZXh0ZW5zaW9ucyA9IGFycmF5KCdqcGVnJywgJ2pwZycsICdnaWYnLCAncG5nJyk7CiAgICAgICAgaWYgKGluX2FycmF5KHNlbGY6OmdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKSwgJHZhbGlkX2V4dGVuc2lvbnMpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkZmlsZSA9IGV4cGxvZGUoJy4nLCAkZmlsZW5hbWUpOwogICAgICAgIGlmIChjb3VudCgkZmlsZSkgPiAxKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKGVuZCgkZmlsZSkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBFUlJPUlMKCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5oYXNFcnJvcnMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbm9FcnJvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+Z2V0V2lkZ2V0KCktPmhhc0Vycm9ycygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEVycm9ycygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5zaG93RXJyb3JzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCAkcHJpb3JpdHkgPSAnZGVmYXVsdCcpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRFcnJvcigkbWVzc2FnZSwgJHByaW9yaXR5KTsKICAgIH0KCn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3IKewogICAgLyoqIEB2YXIgQ01TRm9ybVdpZGdldCAkd2lkZ2V0ICovCiAgICBwcm90ZWN0ZWQgJHdpZGdldDsKCiAgICBwcm90ZWN0ZWQgJHBhcmFtczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJHRoaXMtPnBhcmFtcyA9ICRwYXJhbXM7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCYkd2lkZ2V0KQogICAgewogICAgICAgICR0aGlzLT53aWRnZXQgPSAkd2lkZ2V0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRXaWRnZXQoKQogICAgewogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPndpZGdldCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aWRnZXQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignV2lkZ2V0IG5vdCBkZWZpbmVkIGZvciB0aGUgdmFsaWRhdG9yJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNXaWRnZXQoKQogICAgewogICAgICAgIHJldHVybiAoYm9vbCkoIWVtcHR5KCR0aGlzLT53aWRnZXQpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2soKQogICAgewogICAgICAgIHJldHVybiB0cnVlOyAvLyBUaGlzIHZhbGlkYXRvciBkb24ndCB2YWxpZGF0ZSBhbnl0aGluZwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWVsZEZyaWVuZGx5TmFtZSgpCiAgICB7CiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPnBhcmFtc1snZmllbGRfbmFtZSddKSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cGFyYW1zWydmaWVsZF9uYW1lJ107CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZyaWVuZGx5TmFtZSgpOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlKCRtZXNzYWdlLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR0aGlzLT5wYXJhbXMpICYmIGlzc2V0KCR0aGlzLT5wYXJhbXNbJ2Vycm9yX21lc3NhZ2UnXSkgJiYgJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddICE9ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cGFyYW1zWydlcnJvcl9tZXNzYWdlJ107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYoJGkxOG4gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0kxOG4nKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHRlbXBsYXRlID0gIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygkbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAkdHJhbnNsYXRpb24gPSBJMThuOjpfXygkdGVtcGxhdGUpOwogICAgICAgICAgICAgICAgJGVycm9yID0gQHZzcHJpbnRmKCR0cmFuc2xhdGlvbiwgJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRlcnJvciA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKS0+bGFuZygkbWVzc2FnZSwgJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgIH0KICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorEmail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JFbWFpbCBleHRlbmRzIENNU0ZWYWxpZGF0b3IKewoKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgJGVtYWlsID0gaW1wbG9kZSgnfCcsICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWVzKCkpOwogICAgICAgIGlmICghc2VsZjo6dmFsaWRFbWFpbCgkZW1haWwpKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdpbnZhbGlkIGVtYWlsJywgJGVtYWlsKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8vIEV4dGVybmFsIGZ1bmN0aW9ucwogICAgLyoqCiAgICBWYWxpZGF0ZSBhbiBlbWFpbCBhZGRyZXNzLgogICAgUHJvdmlkZSBlbWFpbCBhZGRyZXNzIChyYXcgaW5wdXQpCiAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGVtYWlsIGFkZHJlc3MgaGFzIHRoZSBlbWFpbAogICAgYWRkcmVzcyBmb3JtYXQgYW5kIHRoZSBkb21haW4gZXhpc3RzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkRW1haWwoJGVtYWlsKQogICAgewogICAgICAgICRpc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAkYXRJbmRleCA9IHN0cnJwb3MoJGVtYWlsLCAiQCIpOwogICAgICAgIGlmIChpc19ib29sKCRhdEluZGV4KSAmJiAhJGF0SW5kZXgpCiAgICAgICAgewogICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICAkZG9tYWluID0gc3Vic3RyKCRlbWFpbCwgJGF0SW5kZXgrMSk7CiAgICAgICAgICAgICRsb2NhbCA9IHN1YnN0cigkZW1haWwsIDAsICRhdEluZGV4KTsKICAgICAgICAgICAgJGxvY2FsTGVuID0gc3RybGVuKCRsb2NhbCk7CiAgICAgICAgICAgICRkb21haW5MZW4gPSBzdHJsZW4oJGRvbWFpbik7CiAgICAgICAgICAgIGlmICgkbG9jYWxMZW4gPCAxIHx8ICRsb2NhbExlbiA+IDY0KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBsb2NhbCBwYXJ0IGxlbmd0aCBleGNlZWRlZAogICAgICAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICgkZG9tYWluTGVuIDwgMSB8fCAkZG9tYWluTGVuID4gMjU1KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAvLyBkb21haW4gcGFydCBsZW5ndGggZXhjZWVkZWQKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJGxvY2FsWzBdID09ICcuJyB8fCAkbG9jYWxbJGxvY2FsTGVuLTFdID09ICcuJykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gbG9jYWwgcGFydCBzdGFydHMgb3IgZW5kcyB3aXRoICcuJwogICAgICAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChwcmVnX21hdGNoKCcvXFwuXFwuLycsICRsb2NhbCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKCFwcmVnX21hdGNoKCcvXltBLVphLXowLTlcXC1cXC5dKyQvJywgJGRvbWFpbikpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBub3QgdmFsaWQgaW4gZG9tYWluIHBhcnQKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAocHJlZ19tYXRjaCgnL1xcLlxcLi8nLCAkZG9tYWluKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYKICAgICAgICAgICAgKCFwcmVnX21hdGNoKCcvXihcXFxcLnxbQS1aYS16MC05ISMlJmBfPVxcLyRcJyorP157fXx+Li1dKSskLycsCiAgICAgICAgICAgICAgICBzdHJfcmVwbGFjZSgiXFxcXCIsIiIsJGxvY2FsKSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlciBub3QgdmFsaWQgaW4gbG9jYWwgcGFydCB1bmxlc3MKICAgICAgICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaXMgcXVvdGVkCiAgICAgICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eIihcXFxcInxbXiJdKSsiJC8nLAogICAgICAgICAgICAgICAgICAgIHN0cl9yZXBsYWNlKCJcXFxcIiwiIiwkbG9jYWwpKSkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkaXNWYWxpZCAmJiAhKGNoZWNrZG5zcnIoJGRvbWFpbiwiTVgiKSB8fAogICAgICAgICAgICAgICAgICAgIGNoZWNrZG5zcnIoJGRvbWFpbiwiQSIpKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgLy8gZG9tYWluIG5vdCBmb3VuZCBpbiBETlMKICAgICAgICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRpc1ZhbGlkOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorEqualField.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JFcXVhbEZpZWxkIGV4dGVuZHMgQ01TRlZhbGlkYXRvcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2soKQogICAgewogICAgICAgICR2YWx1ZTEgPSBzZXJpYWxpemUoJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZXMoKSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR2YWx1ZTIgPSBzZXJpYWxpemUoJHRoaXMtPmdldFdpZGdldCgpLT5nZXRGb3JtKCktPmdldFdpZGdldCgkdGhpcy0+cGFyYW1zKS0+Z2V0VmFsdWVzKCkpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ3Vua25vd24gZmllbGQnLCAkdGhpcy0+cGFyYW1zKSk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICgkdmFsdWUxICE9ICR2YWx1ZTIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZHMgbm90IGVxdWFsJywgJHRoaXMtPmdldFdpZGdldCgpLT5nZXRMYWJlbCgpLCAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZvcm0oKS0+Z2V0V2lkZ2V0KCR0aGlzLT5wYXJhbXMpLT5nZXRMYWJlbCgpKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorNotEmpty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JOb3RFbXB0eSBleHRlbmRzIENNU0ZWYWxpZGF0b3IKewogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrKCkKICAgIHsKICAgICAgICAkdmFsdWVzID0gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZXMoKTsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlKCk7CiAgICAgICAgLy8gVE9ETzogSXNzdWUgd2hlbiB2YWx1ZSA9PT0gMAogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSAmJiBjb3VudCgkdmFsdWVzKSA9PSAwKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+Z2V0RmllbGRGcmllbmRseU5hbWUoKSkpOwogICAgICAgIH0KICAgICAgICBlbHNlaWYoZW1wdHkoJHZhbHVlcykpCiAgICAgICAgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkX2Nhbm5vdF9iZV9lbXB0eScsICR0aGlzLT5nZXRGaWVsZEZyaWVuZGx5TmFtZSgpKSk7CiAgICAgICAgfQogICAgICAgIGVsc2VpZihlbXB0eSgkdmFsdWUpKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+Z2V0RmllbGRGcmllbmRseU5hbWUoKSkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFValidatorUnique.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0ZWYWxpZGF0b3JVbmlxdWUgZXh0ZW5kcyBDTVNGVmFsaWRhdG9yCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZSgpOwogICAgICAgIGlmIChjYWxsX3VzZXJfZnVuYygkdGhpcy0+cGFyYW1zLCAkdmFsdWUpICE9PSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZCBub3QgdW5pcXVlJywgJHZhbHVlKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin.form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0Ke2lmICRmb3JtLT5oYXNFcnJvcnMoKX08ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+eyRmb3JtLT5zaG93RXJyb3JzKCl9PC9kaXY+ey9pZn0KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJCgl7JGZvcm0tPnNob3dXaWRnZXRzKCl9CgkKCXskZm9ybS0+cmVuZGVyRmllbGRzZXRzKCl9CgkKCTxwPgoJCXskZm9ybS0+Z2V0QnV0dG9ucygpfQoJPC9wPgoJeyRmb3JtLT5nZXRGb290ZXJzKCl9CnsvaWZ9]]></data>
	</file>
</module>
