<?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.2</version>
  <mincmsversion>1.10</mincmsversion>
	<help><![CDATA[CgkKCTxoMz5Ib3cgdG8gdXNlIHRoaXMgbW9kdWxlPzwvaDM+Cgk8cD5UaGlzIG1vZHVsZSBpcyBhaW1lZCB0byByZXBsYWNlIHRoZSB0cmFkaXRpb25hbCB3YXkgb2YgbWFuaXB1bGF0ZSBmb3JtcyBpbiBDTVNNUyAiQVBJIi4gSXQgYWxsb3dzIHlvdSB0byBmb2N1cyBtb3JlIG9uIHlvdXIgb2JqZWN0cyBhbmQgY29kZS48L3A+CgkKCTxoMz5QSFAgU2lkZTwvaDM+Cgk8cD5UbyBjcmVhdGUgYSBmb3JtLCB1c2UgdGhlIGZvbGxvd2luZyBmb3JtYXQuPC9wPgogIDx0ZXh0YXJlYSBjb2xzPSIyMDAiIHJvd3M9IjIiIHN0eWxlPSJoZWlnaHQ6NDBweDsgIj4KICAkZm9ybSA9IG5ldyBDTVNGb3JtKCdNeU1vZHVsZScsICRpZCwgJ2FjdGlvbicsICRyZXR1cm5pZCk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJGZvcm0pOwogIDwvdGV4dGFyZWE+CQogIDxwPlRvIGdvIGZ1cnRlciwgeW91IGNhbiB1c2UgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6PC9wPgoJPHRleHRhcmVhIGNvbHM9IjIwMCI+CiAgJGZvcm0gPSBuZXcgQ01TRm9ybSgnTXlNb2R1bGUnLCAkaWQsICdhY3Rpb24nLCAkcmV0dXJuaWQpOwogIAogICRmb3JtLT5zZXRCdXR0b25zKGFycmF5KCdzYXZlJywnY2FuY2VsJykpOwogIAogICRmb3JtLT5zZXRXaWRnZXQoJ3RpdGxlJywgJ3RleHQnLCBhcnJheSgnY2xhc3MnID0+ICdmaWVsZCcpKTsKICAKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CiAgPC90ZXh0YXJlYT4KCTxoMz5DcmVkaXRzPC9oMz4KCTxwPkplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciAtIHRvdG9waGVAdG90b3BoZS5jb208L3A+CQoJPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2N5YmVydG90b3BoZUBnbWFpbC5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4xMC4yPGJyIC8+]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/CMSForms.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCglNb2R1bGU6IENNUyBGb3JtcyAtIFRoaXMgbW9kdWxlIGhlbHBzIGRldmVsb3BlcnMgdG8gaGFuZGxlIGZvcm1zIGZvciB0aGVpciBmcm9udGVuZCBvciBiYWNrZW5kIGFwcGxpY2F0aW9ucwoJCglDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgLSAyMDEyIMKpCiovCgovLyByZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYi9jbGFzc2VzL0NNU0Zvcm0uY2xhc3MucGhwJzsKLy8gcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWIvY2xhc3Nlcy9DTVNGb3JtV2lkZ2V0LmNsYXNzLnBocCc7Ci8vIHJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvbGliL2NsYXNzZXMvQ01TRm9ybVZhbGlkYXRvci5jbGFzcy5waHAnOwoKY2xhc3MgQ01TRm9ybXMgZXh0ZW5kcyBDTVNNb2R1bGUKewoJcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSAgICAgICAgICAgICAgIHsgcmV0dXJuICdDTVNGb3Jtcyc7CSAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgICAgICAgICAgICB7IHJldHVybiAnMS4xMC4yJzsgICAgICAgICAgICAgICAgICAgIH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSAgICAgICAgICAgICB7IHJldHVybiAnSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyJzsgfQoJcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgICAgICAgIHsgcmV0dXJuICdjeWJlcnRvdG9waGVAZ21haWwuY29tJzsgICB9CgkKICBwdWJsaWMgIGZ1bmN0aW9uIEdldEhlbHAoKSB7ICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgIH0KCXB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpICAgIHsgcmV0dXJuICcxLjEwJzsgIH0KICAvKiBDb21tZW50IGZyb20gQ2xvdWQ5IElERSAqLwp9Cg==]]></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+ICdTZWxlY3Qgb25lJywKCQoJCgknaGVscCcgPT4gJwoJCgk8aDM+SG93IHRvIHVzZSB0aGlzIG1vZHVsZT88L2gzPgoJPHA+VGhpcyBtb2R1bGUgaXMgYWltZWQgdG8gcmVwbGFjZSB0aGUgdHJhZGl0aW9uYWwgd2F5IG9mIG1hbmlwdWxhdGUgZm9ybXMgaW4gQ01TTVMgIkFQSSIuIEl0IGFsbG93cyB5b3UgdG8gZm9jdXMgbW9yZSBvbiB5b3VyIG9iamVjdHMgYW5kIGNvZGUuPC9wPgoJCgk8aDM+UEhQIFNpZGU8L2gzPgoJPHA+VG8gY3JlYXRlIGEgZm9ybSwgdXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0LjwvcD4KICA8dGV4dGFyZWEgY29scz0iMjAwIiByb3dzPSIyIiBzdHlsZT0iaGVpZ2h0OjQwcHg7ICI+CiAgJGZvcm0gPSBuZXcgQ01TRm9ybShcJ015TW9kdWxlXCcsICRpZCwgXCdhY3Rpb25cJywgJHJldHVybmlkKTsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oXCdmb3JtXCcsICRmb3JtKTsKICA8L3RleHRhcmVhPgkKICA8cD5UbyBnbyBmdXJ0ZXIsIHlvdSBjYW4gdXNlIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOjwvcD4KCTx0ZXh0YXJlYSBjb2xzPSIyMDAiPgogICRmb3JtID0gbmV3IENNU0Zvcm0oXCdNeU1vZHVsZVwnLCAkaWQsIFwnYWN0aW9uXCcsICRyZXR1cm5pZCk7CiAgCiAgJGZvcm0tPnNldEJ1dHRvbnMoYXJyYXkoXCdzYXZlXCcsXCdjYW5jZWxcJykpOwogIAogICRmb3JtLT5zZXRXaWRnZXQoXCd0aXRsZVwnLCBcJ3RleHRcJywgYXJyYXkoXCdjbGFzc1wnID0+IFwnZmllbGRcJykpOwogIAogICR0aGlzLT5zbWFydHktPmFzc2lnbihcJ2Zvcm1cJywgJGZvcm0pOwogIDwvdGV4dGFyZWE+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[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCgpjbGFzcyBDTVNGb3JtICAvL2V4dGVuZHMgIENtc09iamVjdAp7CiAgCiAgcHJvdGVjdGVkICRtb2R1bGVfbmFtZTsKICBwcm90ZWN0ZWQgJGlkOyAvLyBUaGUgZm9ybSBJRAogIHByb3RlY3RlZCAkcmV0dXJuaWQ7CiAgcHJvdGVjdGVkICRhY3Rpb247ICAKICBwcm90ZWN0ZWQgJG1ldGhvZCA9ICdnZXQnOwogIHByb3RlY3RlZCAkZW5jdHlwZTsKICBwcm90ZWN0ZWQgJGlubGluZSA9IGZhbHNlOwogIAogIHByb3RlY3RlZCAkd2lkZ2V0cyA9IGFycmF5KCk7IC8vIFRoZSBmb3JtIHdpZGdldHMKICBwcm90ZWN0ZWQgJGhpZGRlbl93aWRnZXRzID0gYXJyYXkoKTsgLy8gU3BlY2lmaWMgd2lkZ2V0cyBzaG93biBvbiB0aGUgYmVnaW47CiAgcHJvdGVjdGVkICRmaWVsZHNldHMgPSBhcnJheSgpOyAvLyBTdWIgZm9ybXMgZm9yIGZpZWxkc2V0cwogIAogIHByb3RlY3RlZCAkbGFiZWxzID0gYXJyYXkoCiAgICAnc3VibWl0JyA9PiAnU3VibWl0JywKICAgICdhcHBseScgPT4gJ0FwcGx5JywKICAgICdjYW5jZWwnID0+ICdDYW5jZWwnLAogICAgJ25leHQnID0+ICdOZXh0JywKICAgICdwcmV2aW91cycgPT4gJ1ByZXZpb3VzJwogICAgKTsKICAgIAogIHByb3RlY3RlZCAkYWN0aXZlX2J1dHRvbnMgPSBhcnJheSgnc3VibWl0JywnY2FuY2VsJyk7CiAgcHJvdGVjdGVkICRmb3JtX2Vycm9ycyA9IGFycmF5KCk7IAogIHByb3RlY3RlZCAkc2hvd19wcmlvcml0eSA9IGZhbHNlOwogIAogIHByb3RlY3RlZCAkdGVtcGxhdGVzID0gYXJyYXkoCiAgICAnd2lkZ2V0JyA9PiAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPGRpdiBjbGFzcz0icGFnZXRleHQiPiVMQUJFTCU6PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JVBSRUZJWCUgJUlOUFVUJSAlU1VGSVglPGVtPiVUSVBTJTwvZW0+PC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9InBhZ2VpbnB1dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij4lRVJST1JTJTwvZGl2PgogICAgPC9kaXY+JywKICAgICdlcnJvcnMnID0+ICc8ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4nLAogICAgJ2J1dHRvbnMnID0+ICc8cD4lQlVUVE9OUyU8L3A+JwogICAgKTsKICAKICBwcm90ZWN0ZWQgJGFjdGlvbl91cmw7IC8vIFRvIHNwZWNpZnkgYSBkaWZmZXJlbnQgZm9ybSBhY3Rpb24KICAKICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1vZHVsZV9uYW1lLCAkaWQsICRhY3Rpb24sICRyZXR1cm5pZCkKICB7CiAgICAkdGhpcy0+bW9kdWxlX25hbWUgPSAkbW9kdWxlX25hbWU7CiAgICAkdGhpcy0+aWQgPSAkaWQ7CiAgICAkdGhpcy0+cmV0dXJuaWQgPSAkcmV0dXJuaWQ7CiAgICAkdGhpcy0+YWN0aW9uID0gJGFjdGlvbjsKICAgIAogICAgcmV0dXJuICR0aGlzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgewogICAgcmV0dXJuICR0aGlzLT5yZW5kZXIoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldElkKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPmlkOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TWV0aG9kKCRtZXRob2QgPSAnZ2V0JykKICB7CiAgICBpZiAoJG1ldGhvZCA9PSAncG9zdCcpCiAgICB7CiAgICAgICR0aGlzLT5tZXRob2QgPSAncG9zdCc7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldEFjdGlvblVybCgkYWN0aW9uX3VybCkKICB7CiAgICAkdGhpcy0+YWN0aW9uX3VybCA9ICRhY3Rpb25fdXJsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TXVsdGlwYXJ0Rm9ybSgpCiAgewogICAgJHRoaXMtPm1ldGhvZCA9ICdwb3N0JzsKICAgICR0aGlzLT5lbmN0eXBlID0gJ211bHRpcGFydC9mb3JtLWRhdGEnOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRJbmxpbmUoKQogIHsKICAgICR0aGlzLT5pbmxpbmUgPSB0cnVlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcygpCiAgewogICAgJHN0YXRlID0gdHJ1ZTsKICAgIGZvcmVhY2goJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkKICAgIHsKICAgICAgaWYoJHdpZGdldC0+cHJvY2VzcygpID09PSBmYWxzZSkKICAgICAgewogICAgICAgICRzdGF0ZSA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPnByb2Nlc3MoKSA9PT0gZmFsc2UpCiAgICAgIHsKICAgICAgICAkc3RhdGUgPSBmYWxzZTsKICAgICAgfQogICAgfSAgICAKICAgIAogICAgZm9yZWFjaCgkdGhpcy0+ZmllbGRzZXRzIGFzICRmaWVsZHNldCkKICAgIHsKICAgICAgaWYoJGZpZWxkc2V0LT5wcm9jZXNzKCkgPT09IGZhbHNlKQogICAgICB7CiAgICAgICAgJHN0YXRlID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAkc3RhdGU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW5kZXJfKCkKICB7ICAKICAgIC8vIFRPRE86IExPQUQgVEVNUExBVEUgRlJPTSBGSUxFLi4uCiAgICAkdGVtcGxhdGUgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnYWRtaW4uZm9ybS50cGwnKTsKICAgIAogICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICRzbWFydHktPmFzc2lnbignZm9ybScsICR0aGlzKTsgICAgCiAgICAkc21hcnR5LT5fY29tcGlsZV9zb3VyY2UoJ3RlbXBvcmFyeSB0ZW1wbGF0ZScsICR0ZW1wbGF0ZSwgJF9jb21waWxlZCApOwogICAgQG9iX3N0YXJ0KCk7CiAgICAkc21hcnR5LT5fZXZhbCgnPz4nIC4gJF9jb21waWxlZCk7CiAgICAkX2NvbnRlbnRzID0gQG9iX2dldF9jb250ZW50cygpOwogICAgQG9iX2VuZF9jbGVhbigpOwogICAgcmV0dXJuICRfY29udGVudHM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW5kZXIoKQogIHsKICAgIC8vICRmaWxlID0gZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKSkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RlbXBsYXRlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2FkbWluLmZvcm0udHBsJzsKICAgICRmaWxlID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3RlbXBsYXRlcycgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2FkbWluLmZvcm0udHBsJzsKICAgIC8vICRmaWxlMiA9ICdhZG1pbi5mb3JtLnRwbCc7CiAgICAvLyBXZSBsb2FkIHRoZSB0ZW1wbGF0ZSBoZXJlIGJlY2F1c2Ugb2YgU21hcnR5IHJlc3RyaWN0aW9ucwogICAgLy8gJHRlbXBsYXRlID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwogICAgCiAgICAkY21zX3NtYXJ0eSA9ICBjbXNtcygpLT5HZXRTbWFydHkoKTsKICAgIAogICAgJHNtYXJ0eSA9IG5ldyBTbWFydHkoKTsKICAgICRzbWFydHktPmNvbXBpbGVfZGlyID0gJGNtc19zbWFydHktPmNvbXBpbGVfZGlyOwogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3JtJywgJHRoaXMpOwogICAgCiAgICByZXR1cm4gJHNtYXJ0eS0+ZmV0Y2goJ2ZpbGU6Jy4kZmlsZSk7CiAgICAKICAgIC8vIHJldHVybiAkc21hcnR5LT5kaXNwbGF5KCdzdHJpbmc6Jy4kdGVtcGxhdGUpOwogICAgLy8gcmV0dXJuICRzbWFydHktPmRpc3BsYXkoJ21vZHVsZV9maWxlX3RwbDpDTVNGb3JtczsnLiRmaWxlMik7CiAgICAvLyByZXR1cm4gJHNtYXJ0eS0+ZGlzcGxheSgkZmlsZSk7CiAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldFRlbXBsYXRlKCR0ZW1wbGF0ZV9uYW1lLCAkdGVtcGxhdGUpCiAgewogICAgJHRoaXMtPnRlbXBsYXRlc1skdGVtcGxhdGVfbmFtZV0gPSAkdGVtcGxhdGU7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJzKCkKICB7CiAgICBpZiAoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpCiAgICB7ICAgICAgCiAgICAgIGlmKCR0aGlzLT5hY3Rpb25fdXJsKQogICAgICB7CiAgICAgICAgJGh0bWwgPSAnPGZvcm0gbmFtZT0iJyAuICR0aGlzLT5pZCAuICciIG1ldGhvZD0iJyAuICR0aGlzLT5tZXRob2QgLiAnIiBhY3Rpb249IicgLiAkdGhpcy0+YWN0aW9uX3VybCAuICciJzsKICAgICAgICAKICAgICAgICBpZigkdGhpcy0+ZW5jdHlwZSkgJGh0bWwgLj0gJyBlbmN0eXBlPSInIC4gJHRoaXMtPmVuY3R5cGUgLiAnIic7CiAgICAgICAgCiAgICAgICAgJGh0bWwgLj0gJz4nOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICRodG1sID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUZvcm1TdGFydCgkdGhpcy0+aWQsICR0aGlzLT5hY3Rpb24sICR0aGlzLT5yZXR1cm5pZCwgJHRoaXMtPm1ldGhvZCwgJHRoaXMtPmVuY3R5cGUsICR0aGlzLT5pbmxpbmUpOwogICAgICB9CiAgICAgIAogICAgICBmb3JlYWNoKCR0aGlzLT5oaWRkZW5fd2lkZ2V0cyBhcyAkd2lkZ2V0KQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJHdpZGdldC0+Z2V0SW5wdXQoKTsKICAgICAgfSAgICAgIAogICAgICByZXR1cm4gJGh0bWw7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldEZvb3RlcnMoKQogIHsKICAgIGlmICgoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpKQogICAgeyAgICAgIAogICAgICAkaHRtbCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVGb3JtRW5kKCk7CiAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KICAgIHJldHVybiBudWxsOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFiZWwoJGxhYmVsLCAkdGl0bGUpCiAgewogICAgJHRoaXMtPmxhYmVsc1skbGFiZWxdID0gJHRpdGxlOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRMYWJlbHMoJGxhYmVscyA9IGFycmF5KCkpCiAgewogICAgZm9yZWFjaCgkbGFiZWxzIGFzICRsYWJlbCA9PiAkdGl0bGUpCiAgICB7CiAgICAgICR0aGlzLT5zZXRMYWJlbCgkbGFiZWwsICR0aXRsZSk7CiAgICB9CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9ICAKICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0QnV0dG9ucygkYnV0dG9ucyA9IGFycmF5KCkpCiAgewogICAgaWYgKGlzX2FycmF5KCRidXR0b25zKSkgICR0aGlzLT5hY3RpdmVfYnV0dG9ucyA9ICRidXR0b25zOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRCdXR0b25zKCkKICB7CiAgICAkaHRtbCA9ICcnOwogICAgZm9yZWFjaCgkdGhpcy0+YWN0aXZlX2J1dHRvbnMgYXMgJGJ1dHRvbikKICAgIHsKICAgICAgLy8gJGh0bWwgLj0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPkNyZWF0ZUlucHV0U3VibWl0KCR0aGlzLT5pZCwgJGJ1dHRvbiwgJHRoaXMtPmxhYmVsc1skYnV0dG9uXSk7CiAgICAgICRodG1sIC49ICBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Q3JlYXRlSW5wdXRTdWJtaXQoJHRoaXMtPmlkLCAkYnV0dG9uLCAkdGhpcy0+bGFiZWxzWyRidXR0b25dLCAnY2xhc3M9InN1Ym1pdCInKTsKICAgIH0KICAgIAogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCRuYW1lLCR0eXBlLCRzZXR0aW5ncyA9IGFycmF5KCkpCiAgewogICAgJHdpZGdldCA9IG5ldyBDTVNGb3JtV2lkZ2V0KCR0aGlzLCR0aGlzLT5pZCwkdGhpcy0+bW9kdWxlX25hbWUsJG5hbWUsJHR5cGUsJHNldHRpbmdzKTsKICAgIGlmICgkdHlwZSA9PSAnaGlkZGVuJykKICAgIHsKICAgICAgJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICB9CiAgICBlbHNlaWYgKCR0eXBlID09ICdmaWxlJykKICAgIHsKICAgICAgJHRoaXMtPnNldE11bHRpcGFydEZvcm0oKTsgLy8gSWYgd2UgYWRkIGZpbGVzLCB3ZSBoYXZlIHRvIGJlIHBvc3RlZCBtdWx0aXBhcnQgZm9ybXMuLi4KICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgIH0gICAgCiAgICBlbHNlaWYgKCR0eXBlID09ICdwYXNzd29yZCcpCiAgICB7CiAgICAgICR0aGlzLT5zZXRNZXRob2QoJ3Bvc3QnKTsgLy8gSWYgd2UgYXNrIHBhc3N3b3JkLCB3ZSBzaG91bGQgYWx3YXlzIHBvc3QgdGhlIGZvcm0gZm9yIHNlY3VyaXR5IHJlYXNvbiAhCiAgICAgICR0aGlzLT53aWRnZXRzWyRuYW1lXSA9ICR3aWRnZXQ7CiAgICB9ICAgIAogICAgZWxzZWlmICgoJHR5cGUgPT0gJ3RleHRhcmVhJykgfHwgKCR0eXBlID09ICdjb2RlYXJlYScpKQogICAgeyAKICAgICAgJHRoaXMtPnNldE1ldGhvZCgncG9zdCcpOyAvLyBJZiB3ZSBhc2sgcGFzc3dvcmQsIHdlIHNob3VsZCBhbHdheXMgcG9zdCB0aGUgZm9ybSBmb3Igc2VjdXJpdHkgcmVhc29uICEKICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHRoaXMtPndpZGdldHNbJG5hbWVdID0gJHdpZGdldDsKICAgIH0KICAgIAogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoJG5hbWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0V2lkZ2V0cygpCiAgewogICAgcmV0dXJuICR0aGlzLT53aWRnZXRzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gJiBnZXRXaWRnZXQoJG5hbWUpCiAgewogICAgaWYgKGlzc2V0KCR0aGlzLT53aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0c1skbmFtZV07CiAgICB9CiAgICBlbHNlaWYgKGlzc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBoaWRlV2lkZ2V0KCRuYW1lKQogIHsKICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICAkdGhpcy0+d2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgICR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0tPmhpZGUoKTsKICAgIH0KICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVdpZGdldCgkbmFtZSkKICB7CiAgICBpZiAoaXNzZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKSkKICAgIHsKICAgICAgdW5zZXQoJHRoaXMtPndpZGdldHNbJG5hbWVdKTsKICAgIH0KICAgIGVsc2VpZiAoaXNzZXQoJHRoaXMtPmhpZGRlbl93aWRnZXRzWyRuYW1lXSkpCiAgICB7CiAgICAgIHVuc2V0KCR0aGlzLT5oaWRkZW5fd2lkZ2V0c1skbmFtZV0pOwogICAgfQogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldHMoJHRlbXBsYXRlPW51bGwsICRmb3JjZT1mYWxzZSkKICB7CiAgICAkaHRtbCA9ICcnOyAgCiAgICBmb3JlYWNoKCR0aGlzLT53aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2hvd1dpZGdldCgkbmFtZSwgJHRlbXBsYXRlPW51bGwsICRmb3JjZT1mYWxzZSkKICB7CiAgICAkaHRtbCA9ICcnOyAKICAgIGlmIChpc3NldCgkdGhpcy0+d2lkZ2V0c1skbmFtZV0pKQogICAgewogICAgICAgJHdpZGdldCA9ICR0aGlzLT53aWRnZXRzWyRuYW1lXTsKICAgICAgICRodG1sIC49ICR3aWRnZXQtPnNob3coJHRlbXBsYXRlLCAkZm9yY2UpOwogICAgfQogICAgcmV0dXJuICRodG1sOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkKICB7CiAgICAkaGFzX2Vycm9ycyA9IGZhbHNlOwogICAgCiAgICBmb3JlYWNoKCR0aGlzLT53aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPmhhc0Vycm9ycygpKQogICAgICB7CiAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmhpZGRlbl93aWRnZXRzIGFzICR3aWRnZXQpCiAgICB7CiAgICAgIGlmKCR3aWRnZXQtPmhhc0Vycm9ycygpKQogICAgICB7CiAgICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgICB9CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPmZpZWxkc2V0cyBhcyAkZmllbGRzZXQpCiAgICB7CiAgICAgIGlmKCRmaWVsZHNldC0+aGFzRXJyb3JzKCkpCiAgICAgIHsKICAgICAgICAkaGFzX2Vycm9ycyA9IHRydWU7CiAgICAgIH0KICAgIH0KICAgIAogICAgaWYgKGNvdW50KCR0aGlzLT5mb3JtX2Vycm9ycykgIT0gMCkKICAgIHsKICAgICAgJGhhc19lcnJvcnMgPSB0cnVlOwogICAgfQogICAgCiAgICByZXR1cm4gJGhhc19lcnJvcnM7IAogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gbm9FcnJvcigpCiAgewogICAgcmV0dXJuICEkdGhpcy0+aGFzRXJyb3JzKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcnMoKQogIHsKICAgIHJldHVybiAkdGhpcy0+Zm9ybV9lcnJvcnM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGxFcnJvcnMoKQogIHsKICAgICRlcnJvcnMgPSAkdGhpcy0+Zm9ybV9lcnJvcnM7CiAgICAKICAgIGZvcmVhY2goJHRoaXMtPndpZGdldHMgYXMgJHdpZGdldCkKICAgICB7CiAgICAgICBpZigkd2lkZ2V0LT5oYXNFcnJvcnMoKSkKICAgICAgIHsKICAgICAgICAgJGVycm9yc1skd2lkZ2V0LT5nZXROYW1lKCldID0gJHdpZGdldC0+Z2V0RXJyb3JzKCk7CiAgICAgICB9CiAgICAgfQogICAgCiAgICByZXR1cm4gJGVycm9yczsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNob3dFcnJvcnMoKQogIHsKICAgICRodG1sID0gJyc7CiAgICBpZihjb3VudCgkdGhpcy0+Zm9ybV9lcnJvcnMpID4gMCkKICAgIHsKICAgICAgJGh0bWwgLj0gJzx1bCBjbGFzcz0iZXJyb3JzIj4nOwogICAgICBmb3JlYWNoKCR0aGlzLT5mb3JtX2Vycm9ycyBhcyAkcHJpb3JpdHkgPT4gJGVycm9ycykKICAgICAgewogICAgICAgICRodG1sIC49ICc8bGk+JzsKICAgICAgICBpZiAoJHRoaXMtPnNob3dfcHJpb3JpdHkpICAkaHRtbCAuPSAnPGVtIGNsYXNzPSJmb3JtX2Vycm9yX3ByaW9yaXR5Ij4nLiRwcmlvcml0eS4nPC9lbT4nOwogICAgICAgICRodG1sIC49ICc8dWw+JzsKICAgICAgICBmb3JlYWNoKCRlcnJvcnMgYXMgJGVycm9yKQogICAgICAgIHsKICAgICAgICAgICRodG1sIC49ICc8bGk+Jy4kZXJyb3IuJzwvbGk+JzsKICAgICAgICB9ICAgICAgICAKICAgICAgICAkaHRtbCAuPSAnPC91bD48L2xpPic7CiAgICAgIH0KICAgICAgJGh0bWwgLj0gJzwvdWw+JzsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCRwcmlvcml0eT0nZGVmYXVsdCcpCiAgewogICAgJHRoaXMtPmZvcm1fZXJyb3JzWyRwcmlvcml0eV1bXSA9ICRtZXNzYWdlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNTdWJtaXR0ZWQoKQogIHsKICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLidzdWJtaXQnXSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNBcHBsaWVkKCkKICB7CiAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkpCiAgICB7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH0gIAogIAogIHB1YmxpYyBmdW5jdGlvbiBpc0NhbmNlbGxlZCgpCiAgewogICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJ2NhbmNlbCddKSkKICAgIHsKICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfQoKICBwdWJsaWMgZnVuY3Rpb24gaXNQb3N0ZWQoKQogIHsKICAgIGZvcmVhY2goJHRoaXMtPmFjdGl2ZV9idXR0b25zIGFzICRidXR0b24pCiAgICB7CiAgICAgIGlmKCRidXR0b24gIT0gJycpCiAgICAgIHsKICAgICAgICBpZigkdGhpcy0+aXNQdXNoZWQoJGJ1dHRvbikpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICAvLyBBZGQgY2hlY2sgZm9yIG5leHQgYW5kIHByZXZpb3VzCiAgICAvLyBpZiAoJHRoaXMtPmlzU3VibWl0dGVkKCkgfHwgJHRoaXMtPmlzQXBwbGllZCgpKQogICAgLy8gewogICAgLy8gICByZXR1cm4gdHJ1ZTsKICAgIC8vIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGlzUHVzaGVkKCRidXR0b24pCiAgewogICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJGJ1dHRvbl0pKQogICAgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGlzU2VudCgpCiAgewogICAgICBmb3JlYWNoKCR0aGlzLT5hY3RpdmVfYnV0dG9ucyBhcyAkYnV0dG9uKQogICAgICB7CiAgICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4kYnV0dG9uXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgfQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gZmFsc2U7CiAgfQogIAogIAogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRGaWVsZHNldCgkbmFtZSwgJGxlZ2VuZD0nJykKICB7CiAgICBpZighaXNzZXQoJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0pKQogICAgJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0gPSBuZXcgQ01TRm9ybUZpZWxkc2V0KCR0aGlzLCRuYW1lLCRsZWdlbmQpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gJiBnZXRGaWVsZHNldCgkbmFtZSkKICB7CiAgICBpZiAoaXNzZXQoJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPmZpZWxkc2V0c1skbmFtZV07CiAgICB9CiAgICByZXR1cm4gbnVsbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldEZpZWxkc2V0cygpCiAgewogICAgLy8gcmV0dXJuICR0aGlzLT5maWVsZHNldHM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW5kZXJGaWVsZHNldHMoJHdpZGdldF90ZW1wbGF0ZSA9IG51bGwsICRsZWdlbmQgPSB0cnVlKQogIHsKICAgICRodG1sID0gJyc7CiAgICBmb3JlYWNoKCR0aGlzLT5maWVsZHNldHMgYXMgJGZpZWxkc2V0KQogICAgewogICAgICAkaHRtbCAuPSAkZmllbGRzZXQtPnJlbmRlcigkd2lkZ2V0X3RlbXBsYXRlLCAkbGVnZW5kKTsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHJlbmRlckZpZWxkc2V0KCRuYW1lLCAkd2lkZ2V0X3RlbXBsYXRlID0gbnVsbCkKICB7CiAgICBpZiAoaXNzZXQoJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0pKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPmZpZWxkc2V0c1skbmFtZV0tPnJlbmRlcigkd2lkZ2V0X3RlbXBsYXRlKTsKICAgIH0KICAgIHJldHVybiBudWxsOwogIH0KICAKfQoK]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormFieldset.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIENNU0Zvcm1GaWVsZHNldCBleHRlbmRzIENNU0Zvcm0KewogIHByb3RlY3RlZCAkcGFyZW50X2Zvcm07CiAgcHJvdGVjdGVkICRuYW1lOwogIHByb3RlY3RlZCAkbGVnZW5kOwogIHByb3RlY3RlZCAkY2xhc3M7CiAgcHJvdGVjdGVkICRyZW5kZXJlZCA9IGZhbHNlOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZm9ybSwgJG5hbWUsICRsZWdlbmQgPSAnJykKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRmb3JtLT5tb2R1bGVfbmFtZSwgJGZvcm0tPmlkLCAkZm9ybS0+YWN0aW9uLCAkZm9ybS0+cmV0dXJuaWQpOwogICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgIGlmKCRsZWdlbmQgPT0gJycpCiAgICB7CiAgICAgICR0aGlzLT5sZWdlbmQgPSAkbmFtZTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgJHRoaXMtPmxlZ2VuZCA9ICRsZWdlbmQ7CiAgICB9CiAgICAkdGhpcy0+cGFyZW50X2Zvcm0gPSYgJGZvcm07CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzcygkY2xhc3MpCiAgewogICAgJHRoaXMtPmNsYXNzID0gJGNsYXNzOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVuZGVyKCR3aWRnZXRfdGVtcGxhdGU9bnVsbCwgJGxlZ2VuZCA9IHRydWUpCiAgewogICAgJGh0bWwgPSAnJzsKICAgIGlmKCEkdGhpcy0+cmVuZGVyZWQpCiAgICB7CiAgICAgICRodG1sIC49ICc8ZmllbGRzZXQnOwogICAgICAkaHRtbCAuPSAoJHRoaXMtPmNsYXNzKT8nIGNsYXNzPSInIC4gJHRoaXMtPmNsYXNzIC4gJyInOicnOwogICAgICAkaHRtbCAuPSc+JzsKICAgICAgaWYoJGxlZ2VuZCkgJGh0bWwgLj0nPGxlZ2VuZD4nLiR0aGlzLT5sZWdlbmQuJzwvbGVnZW5kPic7CiAgICAgICRodG1sIC49ICR0aGlzLT5zaG93V2lkZ2V0cygkd2lkZ2V0X3RlbXBsYXRlKTsKICAgICAgJGh0bWwgLj0gJzwvZmllbGRzZXQ+JzsKICAgICAgJHRoaXMtPnJlbmRlcmVkID0gdHJ1ZTsKICAgIH0KICAgIHJldHVybiAkaHRtbDsKICAgIAogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0V2lkZ2V0KCRuYW1lLCR0eXBlLCRzZXR0aW5ncyA9IGFycmF5KCkpCiAgewogICAgaWYgKCR0eXBlID09ICdmaWxlJykKICAgIHsKICAgICAgJHRoaXMtPnBhcmVudF9mb3JtLT5zZXRNdWx0aXBhcnRGb3JtKCk7CiAgICB9CiAgICBwYXJlbnQ6OnNldFdpZGdldCgkbmFtZSwkdHlwZSwkc2V0dGluZ3MpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gaXNQb3N0ZWQoKQogIHsKICAgIHJldHVybiAkdGhpcy0+cGFyZW50X2Zvcm0tPmlzUG9zdGVkKCk7CiAgfQogIAp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInput.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgYmFzZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0CiAgewogICAgcHJvdGVjdGVkICRpZDsKICAgIHByb3RlY3RlZCAkbmFtZTsKICAgIHByb3RlY3RlZCAkdmFsdWVzID0gYXJyYXkoKTsgLy8gV2UgYWx3YXlzIHN0b3JlIHJlc3VsdHMgaW4gYW4gYXJyYXkuIEluIGNhc2Ugb2Ygc2luZ2xlIGZpZWxkLCB0aGUgc2luZ2xlIHZhbHVlIGlzIGFycmF5WzBdCiAgICAKICAgIHByb3RlY3RlZCAkZm9ybTsKICAgIHByb3RlY3RlZCAkbW9kdWxlX25hbWU7CiAgICBwcm90ZWN0ZWQgJHNldHRpbmdzID0gYXJyYXkoKTsKICAgIAogICAgLy8gVkFMSURBVElPTgogICAgcHJvdGVjdGVkICRpc192YWxpZCA9IHRydWU7CiAgICBwcm90ZWN0ZWQgJGZvcm1fZXJyb3JzOwogICAgCiAgICAvLyBQUk9DRVNTSU5HCiAgICBwcm90ZWN0ZWQgJHNob3duZWQgPSBmYWxzZTsKICAgIHByb3RlY3RlZCAkaGlkZSA9IGZhbHNlOwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICByZXR1cm4gJHRoaXM7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXR1cCgkaWQsICRuYW1lLCAmJGZvcm0sICRtb2R1bGVfbmFtZSwgJHNldHRpbmdzID0gYXJyYXkoKSkKICAgIHsKICAgICAgJHRoaXMtPmlkID0gJGlkOwogICAgICAkdGhpcy0+bmFtZSA9IGlzc2V0KCRzZXR0aW5nc1snbmFtZSddKT8kc2V0dGluZ3NbJ25hbWUnXTokbmFtZTsKICAgICAgJHRoaXMtPmZvcm0gPSAkZm9ybTsKICAgICAgJHRoaXMtPm1vZHVsZV9uYW1lID0gJG1vZHVsZV9uYW1lOwogICAgICAkdGhpcy0+c2V0dGluZ3MgPSAkc2V0dGluZ3M7CiAgICAgIAogICAgICByZXR1cm4gJHRoaXM7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0KCkgIHsKICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZmllbGQKICAgICAgJHRoaXMtPmluaXRWYWx1ZXMoKTsKICAgICAgCiAgICAgIHJldHVybiAkdGhpczsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEZvcm0oKSB7CiAgICAgIGlmKCFpc19vYmplY3QoJHRoaXMtPmZvcm0pKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQW4gZXJyb3Igb2NjdXJlZCByZXRyaWV2aW5nIHRoZSBmb3JtIG9iamVjdC4nKTsKICAgICAgfQogICAgICByZXR1cm4gJHRoaXMtPmZvcm07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsZSgpIHsKICAgICAgaWYoJG1vZHVsZSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpKQogICAgICB7CiAgICAgICAgcmV0dXJuICRtb2R1bGU7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ01TRm9ybXMnKTsgLy8gRGVmYXVsdCBzYWZlYmFjawogICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXR0aW5nKCRzZXR0aW5nLCAkZGVmYXVsdF92YWx1ZSA9IG51bGwpIHsKICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ10pPyR0aGlzLT5zZXR0aW5nc1skc2V0dGluZ106JGRlZmF1bHRfdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFNldHRpbmcoJHNldHRpbmcsICR2YWx1ZSkgIHsKICAgICAgJHRoaXMtPnNldHRpbmdzWyRzZXR0aW5nXSA9ICR2YWx1ZTsKICAgIH0KICAgIAogICAgLy8gIyMjIyMgRk9STSAjIyMjIwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKSB7CiAgICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT5nZXRWYWx1ZSgpOyAvLyBEb24ndCBrbm93IHdoYXQgdG8gZG8/IFNob3cgdGhlIHZhbHVlLgogICAgfQogICAgCiAgICAvLyAjIyMjIyBXSURHRVQgUFJPQ0VTU0lORyAjIyMjIwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzcygkc2F2ZSA9IHRydWUpIHsKICAgICAgLy8gVmFsaWRhdGUKICAgICAgJHRoaXMtPnZhbGlkYXRlKCk7CgogICAgICAvLyBTYXZlIHZhbHVlcwogICAgICBpZiAoJHNhdmUgPT0gdHJ1ZSkKICAgICAgewogICAgICAgICR0aGlzLT5zYXZlKCk7CiAgICAgIH0gCiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93KCR0ZW1wbGF0ZSA9IG51bGwsICRmb3JjZSA9IGZhbHNlKSAgewogICAgICAvLyBUT0RPOiBSRUZBQ1RPUklORwoKICAgICAgaWYgKCghJHRoaXMtPnNob3duZWQgfHwgJGZvcmNlKSkKICAgICAgewogICAgICAgICRodG1sID0gJyc7CgogICAgICAgIAogICAgICAgIC8vIGlmICghaXNfbnVsbCgkdGVtcGxhdGUpICYmICgkdGhpcy0+dHlwZSAhPSAnaGlkZGVuJykpIC8vIEZJWFRISVMKICAgICAgICBpZiAoIWlzX251bGwoJHRlbXBsYXRlKSkKICAgICAgICB7CiAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclRklFTEROQU1FJScsICR0aGlzLT5uYW1lLCAkdGVtcGxhdGUpOwogICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJUxBQkVMJScsICR0aGlzLT5nZXRMYWJlbCgpLCAkdGV4dCk7CiAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclTEFCRUxfVEFHJScsICR0aGlzLT5nZXRMYWJlbFRhZygpLCAkdGV4dCk7CiAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclSU5QVVQlJywgJHRoaXMtPmdldElucHV0KCksICR0ZXh0KTsKICAgICAgICAgICR0ZXh0ID0gc3RyX3JlcGxhY2UoJyVFUlJPUlMlJywgJHRoaXMtPnNob3dFcnJvcnMoKSwgJHRleHQpOwogICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVRJUFMlJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgJHRleHQgPSBzdHJfcmVwbGFjZSgnJVBSRUZJWCUnLCAkdGhpcy0+Z2V0VGlwcygpLCAkdGV4dCk7CiAgICAgICAgICAkdGV4dCA9IHN0cl9yZXBsYWNlKCclU1VGSVglJywgJHRoaXMtPmdldFRpcHMoKSwgJHRleHQpOwogICAgICAgICAgJGh0bWwgLj0gJHRleHQ7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAkaHRtbCAuPSAoc3RyaW5nKSR0aGlzOyAgICAgICAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snd2l0aF9kaXYnXSkpCiAgICAgICAgeyAgICAgICAgICAKICAgICAgICAgICRodG1sID0gJzxkaXYgY2xhc3M9IicuJHRoaXMtPmdldFNldHRpbmcoJ2NsYXNzJywgJ2ZpZWxkXycgLiAkdGhpcy0+bmFtZSkuJyI+JyAuICRodG1sIC4gJzwvZGl2Pic7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c2hvd25lZCA9IHRydWU7CiAgICAgICAgcmV0dXJuICRodG1sOwogICAgICB9CiAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgCiAgICAvLyAjIyMjIyBDT1NNRVRJQ1MgIyMjIyMKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSAgewogICAgICAvLyBUT0RPOiBSRUZBQ1RPUklORwogICAKICAgICAgJGh0bWwgPSAnCiAgICAgIDxkaXYgY2xhc3M9ImZvcm1fd2lkZ2V0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtX2xhYmVsIj48bGFiZWwgZm9yPSInLiR0aGlzLT5pZC4kdGhpcy0+bmFtZS4nIj4nLiR0aGlzLT5nZXRMYWJlbCgpLic8L2xhYmVsPjwvZGl2Pic7ICAgICAgICAgICAgCiAgICAgIGlmICgkdGhpcy0+aGFzRXJyb3JzKCkpCiAgICAgIHsKICAgICAgICAkaHRtbCAuPSAnPGRpdiBjbGFzcz0iZm9ybV9lcnJvcnMiPicgLiAkdGhpcy0+c2hvd0Vycm9ycygpIC4gJzwvZGl2Pic7CiAgICAgIH0gICAgICAgIAogICAgICAkaHRtbCAuPSAnCiAgICAgICAgPGRpdiBjbGFzcz0iZm9ybV9pbnB1dCI+Jy4kdGhpcy0+Z2V0SW5wdXQoKS4nPC9kaXY+CiAgICAgIDwvZGl2Pic7CiAgICAgIHJldHVybiAkaHRtbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFiZWwoKSAgewogICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydsYWJlbCddKSkKICAgICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ2xhYmVsJ107CiAgICAgIH0KICAgICAgLy8gVHJ5IHRvIGdldCBpdCBmcm9tIGxhbmd1YWdlIGZpbGUKICAgICAgcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+bGFuZygnZm9ybV8nLiR0aGlzLT5uYW1lKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEZyaWVuZGx5TmFtZSgpIHsKICAgICAgICAvLyBERVBSRUNBVEVEIChVU0VEIElOIFZBTElEQVRPUikgKFVTRUQgaW4gQ01TRm9ybVdpZGdldCkKICAgICAgICAkdGhpcy0+Z2V0TGFiZWwoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsVGFnKCkgewogICAgICByZXR1cm4gJzxsYWJlbCBmb3I9IicuJHRoaXMtPmlkLiR0aGlzLT5uYW1lLiciPicgLiAkdGhpcy0+Z2V0TGFiZWwoKSAuICc8L2xhYmVsPic7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXBzKCkgewogICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd0aXBzJ10pKQogICAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1sndGlwcyddOwogICAgICB9CiAgICAgIC8vIFRyeSB0byBnZXQgaXQgZnJvbSBsYW5ndWFnZSBmaWxlCgogICAgICAvLyBpZiAoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSkpCiAgICAgIC8vICAgewogICAgICAvLyAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgYmUgc2hvd24gb25seSBpdCB0aGUgbGFuZyBrZXkgZXhpc3RzLi4uCiAgICAgIC8vICAgICByZXR1cm4gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmxhbmcoJ3RpcHNfJy4kdGhpcy0+bmFtZSk7CiAgICAgIC8vICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAKICAgIAogICAgLy8gIyMjIyMgVkFMVUVTICMjIyMjCiAgICAKICAgIC8vIFNBVkUKCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpIHsKICAgICAgaWYoJHRoaXMtPmlzVmFsaWQoKSA9PSB0cnVlKQogICAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pKQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT5zYXZlT2JqZWN0KCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPnNhdmVQcmVmZXJlbmNlKCk7CiAgICAgICAgfQogICAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndXNlcl9wcmVmZXJlbmNlJ10pKQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT5zYXZlVXNlclByZWZlcmVuY2UoKTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpIHsKICAgICAgCiAgICAgICAgLy8gVGhpcyBkbyBub3Qgc2F2ZSB0aGUgb2JqZWN0IHN0YXRlLCBzbyB3ZSBoYXZlIHRvIGRvIGl0IG91dHNpZGUgdGhlIGZvcm0KICAgICAgICAKICAgICAgICAkdmFsdWVzID0gJHRoaXMtPmdldFZhbHVlKCk7CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3NldF9tZXRob2QnXSkpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+eyR0aGlzLT5zZXR0aW5nc1snc2V0X21ldGhvZCddfSgkdmFsdWVzKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ107CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICRuYW1lID0gJHRoaXMtPm5hbWU7CiAgICAgICAgICB9CgogICAgICAgICAgaWYobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnc2V0JykpCiAgICAgICAgICB7ICAgIAogICAgICAgICAgICAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT5zZXQoJG5hbWUsICR2YWx1ZXMpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lID0gJHZhbHVlczsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICBkaWUoJ3VuYWJsZSB0byBkbycpOwogICAgICAgICAgICB9CiAgICAgICAgICB9CgoKICAgICAgICB9CiAgICAgIAogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlUHJlZmVyZW5jZSgpIHsKICAgICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICYmICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLidjYW5jZWwnXSkpCiAgICAgIHsKICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBubyBjYW5jZWwgYnV0dG9uIGZpcnN0IGJlY2F1c2Ugd2Ugc2F2ZSB0aGUgdmFsdWUgZGlyZWN0bHkgIQogICAgICAgICR0aGlzLT5nZXRNb2R1bGUoKS0+c2V0UHJlZmVyZW5jZSgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgICB9CiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlVXNlclByZWZlcmVuY2UoKSB7CiAgICAgICRfU0VTU0lPTlsnbW9kdWxlcyddWyR0aGlzLT5tb2R1bGVfbmFtZV1bJ3ByZWZlcmVuY2VzJ11bJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXV0gPSAkdGhpcy0+Z2V0VmFsdWUoKTsKICAgIH0KICAgIAogICAgLy8gVmFsdWVzIG1hbmlwdWxhdGlvbgogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdFZhbHVlcygpIHsKICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJHRoaXMtPm5hbWVdKSkKICAgICAgewogICAgICAgIGlmIChpc19hcnJheSgkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSkpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSk7CiAgICAgICAgfSAKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhodG1sX2VudGl0eV9kZWNvZGUoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pKTsKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZWlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndmFsdWUnXSkpCiAgICAgIHsKICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCR0aGlzLT5zZXR0aW5nc1sndmFsdWUnXSk7CiAgICAgIH0KICAgICAgZWxzZWlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmICEkdGhpcy0+Z2V0Rm9ybSgpLT5pc1Bvc3RlZCgpKQogICAgICB7CiAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+ZmV0Y2hPYmplY3RWYWx1ZXMoKSk7CiAgICAgIH0KICAgICAgZWxzZWlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAmJiAkdGhpcy0+Z2V0TW9kdWxlKCktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pICE9ICcnKQogICAgICB7CiAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+Z2V0TW9kdWxlKCktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgfQogICAgICBlbHNlaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWyd1c2VyX3ByZWZlcmVuY2UnXSkgJiYgKCR2YWx1ZSA9ICR0aGlzLT5nZXRVc2VyUHJlZmVyZW5jZSgpKSkKICAgICAgewogICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHZhbHVlKTsKICAgICAgfQoKICAgICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pICYmICEkdGhpcy0+Z2V0Rm9ybSgpLT5pc1Bvc3RlZCgpKSAKICAgICAgewogICAgICAgIGlmICgkdGhpcy0+aXNFbXB0eSgpKQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZmV0Y2hPYmplY3RWYWx1ZXMoKSAgewoKICAgICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgaXNfb2JqZWN0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pKQogICAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddKSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXS0+eyR0aGlzLT5zZXR0aW5nc1snZ2V0X21ldGhvZCddfSgpOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgJG5hbWUgPSBpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2ZpZWxkX25hbWUnXSk/JHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ106JHRoaXMtPm5hbWU7CgogICAgICAgICAgaWYobWV0aG9kX2V4aXN0cygkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLCAnZ2V0JykpCiAgICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT5nZXQoJG5hbWUpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZQogICAgICAgICAgewogICAgICAgICAgICB0cnkKICAgICAgICAgICAgewogICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddLT4kbmFtZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAvLyAgZGllKCd1bmFibGUgdG8gZG8nKTsgLy8gVE9ETzogVHJlYXRoIGVycm9yCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9ICAgICAgCiAgICAgIH0KICAgIH0KICAgIAogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFVzZXJQcmVmZXJlbmNlKCkgIHsKICAgICAgaWYoaXNzZXQoJF9TRVNTSU9OWydtb2R1bGVzJ11bJHRoaXMtPm1vZHVsZV9uYW1lXVsncHJlZmVyZW5jZXMnXVskdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddXSkpCiAgICAgIHsKICAgICAgICByZXR1cm4gJF9TRVNTSU9OWydtb2R1bGVzJ11bJHRoaXMtPm1vZHVsZV9uYW1lXVsncHJlZmVyZW5jZXMnXVskdGhpcy0+c2V0dGluZ3NbJ3VzZXJfcHJlZmVyZW5jZSddXTsKICAgICAgfQogICAgICByZXR1cm4gbnVsbDsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIHJlc2V0VmFsdWVzKCkgewogICAgICAkdGhpcy0+dmFsdWVzID0gYXJyYXkoKTsKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkgIHsgICAgICAgCiAgICAgIGlmIChjb3VudCgkdGhpcy0+dmFsdWVzKSA9PSAxKQogICAgICB7CiAgICAgICAgcmVzZXQoJHRoaXMtPnZhbHVlcyk7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpIGN1cnJlbnQoJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpIGltcGxvZGUoJ3x8fCcsJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0gICAgCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlKCR2YWx1ZSwgJGtleSA9IDApICB7CiAgICAgICR0aGlzLT52YWx1ZXNbJGtleV0gPSAoc3RyaW5nKSR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlVmFsdWVJZkVxdWFsKCR2YWx1ZSkgIHsKICAgICAgaWYoJHRoaXMtPmdldFZhbHVlKCkgPT0gJHZhbHVlKQogICAgICB7CiAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhhcnJheSgpKTsKICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXMoKSB7CiAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZXMoJHZhbHVlcyA9IGFycmF5KCkpICB7CiAgICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSkKICAgICAgewogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkdmFsdWVzOwogICAgICB9CiAgICAgIGVsc2VpZiAoc3RycG9zKCR2YWx1ZXMsICd8fHwnKSAhPT0gZmFsc2UpCiAgICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWVzID0gZXhwbG9kZSgnfHx8JywgJHZhbHVlcyk7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlc1swXSA9ICR2YWx1ZXM7CiAgICAgIH0gICAgCiAgICB9ICAKCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXRWYWx1ZXMoKSB7CiAgICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgpOwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RGVmYXVsdFZhbHVlcygkdmFsdWVzKSB7CiAgICAgIGlmIChpc19hcnJheSgkdmFsdWVzKSkKICAgICAgewogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkdmFsdWVzOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR0aGlzLT52YWx1ZXMgPSBhcnJheSgkdmFsdWVzKTsKICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCkgewogICAgICBpZiAoKGNvdW50KCR0aGlzLT52YWx1ZXMpID09IDEpICYmIChlbXB0eSgkdGhpcy0+dmFsdWVzWzBdKSkgfHwgKGNvdW50KCR0aGlzLT52YWx1ZXMpID09IDApKQogICAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICB9CiAgICAKICAgIC8vIFZhbHVlcyB2YWxpZGF0aW9uCiAgICAgCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gdmFsaWRhdGUoKSB7CiAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ3ZhbGlkYXRvcnMnXSkgJiYgaXNfYXJyYXkoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10pKQogICAgICB7CiAgICAgICAgLy8gQ0hBTkdFIFRIQVQKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNldHRpbmdzWyd2YWxpZGF0b3JzJ10gYXMgJHZhbGlkYXRvciA9PiAkdmFsdWUpCiAgICAgICAgewogICAgICAgICAgJHZhbGlkYXRlID0gbmV3IENNU0Zvcm1WYWxpZGF0b3IoJHRoaXMsJHZhbGlkYXRvciwkdmFsdWUpOwogICAgICAgICAgdHJ5CiAgICAgICAgICB7CiAgICAgICAgICAgIGlmKCR2YWxpZGF0ZS0+Y2hlY2soKSA9PT0gZmFsc2UpICR0aGlzLT5pc192YWxpZCA9IGZhbHNlOwogICAgICAgICAgfQogICAgICAgICAgY2F0Y2goRXhjZXB0aW9uICRlKQogICAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGUtPmdldE1lc3NhZ2UoKSwgJ2Zvcm0gZXJyb3InKTsKICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzVmFsaWQoKSB7CiAgICAgIGlmICgoJHRoaXMtPmlzX3ZhbGlkID09IGZhbHNlICkgfHwgJHRoaXMtPmhhc0Vycm9ycygpKQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpIHsKICAgICAgcmV0dXJuICR0aGlzLT5hZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zID0gYXJyYXkoKSkgewogICAgICAkdGhpcy0+c2V0dGluZ3NbJ3ZhbGlkYXRvcnMnXVskdmFsaWRhdG9yXSA9ICRwYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZVZhbGlkYXRvcigkdmFsaWRhdG9yKSB7CiAgICAgIHVuc2V0KCR0aGlzLT5zZXR0aW5nc1sndmFsaWRhdG9ycyddWyR2YWxpZGF0b3JdKTsKICAgIH0KCiAgICAvLyBFUlJPUlMKCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzRXJyb3JzKCkgewogICAgICBpZiAoY291bnQoJHRoaXMtPmZvcm1fZXJyb3JzKSA9PSAwKQogICAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBub0Vycm9yKCkgewogICAgICByZXR1cm4gISR0aGlzLT5oYXNFcnJvcnMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RXJyb3JzKCkgewogICAgICByZXR1cm4gJHRoaXMtPmZvcm1fZXJyb3JzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaG93RXJyb3JzKCkgIHsKICAgICAgJGh0bWwgPSAnJzsKICAgICAgaWYoY291bnQoJHRoaXMtPmZvcm1fZXJyb3JzKSA+IDApCiAgICAgIHsKICAgICAgICAkaHRtbCAuPSAnPHVsIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcnMiPic7CiAgICAgICAgZm9yZWFjaCgkdGhpcy0+Zm9ybV9lcnJvcnMgYXMgJHByaW9yaXR5ID0+ICRlcnJvcnMpCiAgICAgICAgewogICAgICAgICAgJGh0bWwgLj0gJzxsaT4nOwogICAgICAgICAgaWYgKCR0aGlzLT5zaG93X3ByaW9yaXR5KSAkaHRtbCAuPSAnPGVtIGNsYXNzPSJmb3JtX3dpZGdldF9lcnJvcl9wcmlvcml0eSI+Jy4kcHJpb3JpdHkuJzwvZW0+JzsKICAgICAgICAgICRodG1sIC49ICc8dWw+JzsKICAgICAgICAgIGZvcmVhY2goJGVycm9ycyBhcyAkZXJyb3IpCiAgICAgICAgICB7CiAgICAgICAgICAgICRodG1sIC49ICc8bGkgY2xhc3M9ImZvcm1fd2lkZ2V0X2Vycm9yX21lc3NhZ2UiPicuJGVycm9yLic8L2xpPic7CiAgICAgICAgICB9ICAgICAgICAKICAgICAgICAgICRodG1sIC49ICc8L3VsPjwvbGk+JzsKICAgICAgICB9CiAgICAgICAgJGh0bWwgLj0gJzwvdWw+JzsKICAgICAgfQogICAgICByZXR1cm4gJGh0bWw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCRwcmlvcml0eT0nZGVmYXVsdCcpICB7CiAgICAgICR0aGlzLT5mb3JtX2Vycm9yc1skcHJpb3JpdHldW10gPSAkbWVzc2FnZTsKICAgIH0KICAKCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCheckbox.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgQ2hlY2tib3gKICAqLwogIAogIGNsYXNzIENNU0Zvcm1JbnB1dENoZWNrYm94IGV4dGVuZHMgQ01TRm9ybUlucHV0CiAgewogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gaW5pdFZhbHVlcygpCiAgICB7CiAgICAgIC8vIHZhcl9kdW1wKCdpbml0IGNoZWNrYm94ICcgLiAkdGhpcy0+bmFtZSk7CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICAgIGlmKAogICAgICAgICghaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pIHx8IGlzX251bGwoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pKQogICAgICAgICYmCiAgICAgICAgKAogICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nc3VibWl0J10pCiAgICAgICAgICB8fAogICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkKICAgICAgICApCgogICAgICApCiAgICAgIHsKICAgICAgICAvLyBDYXNlIHdoZW4gY2hlY2tib3ggaXMgdW5jaGVja2VkIGFuZCBmb3JtIGlzIHN1Ym1pdHRlZCwgd2Ugc2hvdWxkIGVtcHR5IHRoZSB2YWx1ZQogICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoKTsKICAgICAgICAvLyAkdGhpcy0+c2V0VmFsdWUoLTEpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgIHBhcmVudDo6aW5pdFZhbHVlcygpOwogICAgICB9CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICAgIC8vIHZhcl9kdW1wKCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZUlucHV0Q2hlY2tib3goJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJzEnLCAoaW50ZWdlcikoYm9vbGVhbikkdGhpcy0+Z2V0VmFsdWUoKSk7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputCountries.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgVGV4dAogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0VGV4dCBleHRlbmRzIENNU0Zvcm1JbnB1dFNlbGVjdAogIHsKICAgIHB1YmxpYyBzdGF0aWMgJGNvdW50cmllcyA9IGFycmF5KAogICAgICAnQUYnID0+ICdBZmdoYW5pc3RhbicsICdBTCcgPT4gJ0FsYmFuaWEnLCAnRFonID0+ICdBbGdlcmlhJywgJ0FTJyA9PiAnQW1lcmljYW4gU2Ftb2EnLCAnQUQnID0+ICdBbmRvcnJhJywgJ0FPJyA9PiAnQW5nb2xhJywgJ0FJJyA9PiAnQW5ndWlsbGEnLCAnQVEnID0+ICdBbnRhcmN0aWNhJywgJ0FHJyA9PiAnQW50aWd1YSBhbmQgQmFyYnVkYScsICdBUicgPT4gJ0FyZ2VudGluYScsICdBTScgPT4gJ0FybWVuaWEnLCAnQVcnID0+ICdBcnViYScsICdBVScgPT4gJ0F1c3RyYWxpYScsICdBVCcgPT4gJ0F1c3RyaWEnLCAnQVonID0+ICdBemVyYmFpamFuJywgJ0JTJyA9PiAnQmFoYW1hcycsICdCSCcgPT4gJ0JhaHJhaW4nLCAnQkQnID0+ICdCYW5nbGFkZXNoJywgJ0JCJyA9PiAnQmFyYmFkb3MnLCAnQlknID0+ICdCZWxhcnVzJywgJ0JFJyA9PiAnQmVsZ2l1bScsICdCWicgPT4gJ0JlbGl6ZScsICdCSicgPT4gJ0JlbmluJywgJ0JNJyA9PiAnQmVybXVkYScsICdCVCcgPT4gJ0JodXRhbicsICdCTycgPT4gJ0JvbGl2aWEnLCAnQkEnID0+ICdCb3NuaWEgYW5kIEhlcnplZ292aW5hJywgJ0JXJyA9PiAnQm90c3dhbmEnLCAnQlYnID0+ICdCb3V2ZXQgSXNsYW5kJywgJ0JSJyA9PiAnQnJhemlsJywgJ0lPJyA9PiAnQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5JywgJ1ZHJyA9PiAnQnJpdGlzaCBWaXJnaW4gSXNsYW5kcycsICdCTicgPT4gJ0JydW5laScsICdCRycgPT4gJ0J1bGdhcmlhJywgJ0JGJyA9PiAnQnVya2luYSBGYXNvJywgJ0JJJyA9PiAnQnVydW5kaScsICdLSCcgPT4gJ0NhbWJvZGlhJywgJ0NNJyA9PiAnQ2FtZXJvb24nLCAnQ0EnID0+ICdDYW5hZGEnLCAnQ1YnID0+ICdDYXBlIFZlcmRlJywgJ0tZJyA9PiAnQ2F5bWFuIElzbGFuZHMnLCAnQ0YnID0+ICdDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMnLCAnVEQnID0+ICdDaGFkJywgJ0NMJyA9PiAnQ2hpbGUnLCAnQ04nID0+ICdDaGluYScsICdDWCcgPT4gJ0NocmlzdG1hcyBJc2xhbmQnLCAnQ0MnID0+ICdDb2NvcyAoS2VlbGluZykgSXNsYW5kcycsICdDTycgPT4gJ0NvbG9tYmlhJywgJ0tNJyA9PiAnQ29tb3JvcycsICdDRycgPT4gJ0NvbmdvJywgJ0NLJyA9PiAnQ29vayBJc2xhbmRzJywgJ0NSJyA9PiAnQ29zdGEgUmljYScsICdIUicgPT4gJ0Nyb2F0aWEnLCAnQ1UnID0+ICdDdWJhJywgJ0NZJyA9PiAnQ3lwcnVzJywgJ0NaJyA9PiAnQ3plY2ggUmVwdWJsaWMnLCAnQ0knID0+ICdDw7R0ZSBkXCdJdm9pcmUnLCAnQ0QnID0+ICdEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZSBDb25nbycsICdESycgPT4gJ0Rlbm1hcmsnLCAnREonID0+ICdEamlib3V0aScsICdETScgPT4gJ0RvbWluaWNhJywgJ0RPJyA9PiAnRG9taW5pY2FuIFJlcHVibGljJywgJ0VDJyA9PiAnRWN1YWRvcicsICdFRycgPT4gJ0VneXB0JywgJ1NWJyA9PiAnRWwgU2FsdmFkb3InLCAnR1EnID0+ICdFcXVhdG9yaWFsIEd1aW5lYScsICdFUicgPT4gJ0VyaXRyZWEnLCAnRUUnID0+ICdFc3RvbmlhJywgJ0VUJyA9PiAnRXRoaW9waWEnLCAnRksnID0+ICdGYWxrbGFuZCBJc2xhbmRzJywgJ0ZPJyA9PiAnRmFyb2UgSXNsYW5kcycsICdGSicgPT4gJ0ZpamknLCAnRkknID0+ICdGaW5sYW5kJywgJ0ZSJyA9PiAnRnJhbmNlJywgJ0dGJyA9PiAnRnJlbmNoIEd1aWFuYScsICdQRicgPT4gJ0ZyZW5jaCBQb2x5bmVzaWEnLCAnVEYnID0+ICdGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLCAnR0EnID0+ICdHYWJvbicsICdHTScgPT4gJ0dhbWJpYScsICdHRScgPT4gJ0dlb3JnaWEnLCAnREUnID0+ICdHZXJtYW55JywgJ0dIJyA9PiAnR2hhbmEnLCAnR0knID0+ICdHaWJyYWx0YXInLCAnR1InID0+ICdHcmVlY2UnLCAnR0wnID0+ICdHcmVlbmxhbmQnLCAnR0QnID0+ICdHcmVuYWRhJywgJ0dQJyA9PiAnR3VhZGVsb3VwZScsICdHVScgPT4gJ0d1YW0nLCAnR1QnID0+ICdHdWF0ZW1hbGEnLCAnR04nID0+ICdHdWluZWEnLCAnR1cnID0+ICdHdWluZWEtQmlzc2F1JywgJ0dZJyA9PiAnR3V5YW5hJywgJ0hUJyA9PiAnSGFpdGknLCAnSE0nID0+ICdIZWFyZCBJc2xhbmQgYW5kIE1jRG9uYWxkIElzbGFuZHMnLCAnSE4nID0+ICdIb25kdXJhcycsICdISycgPT4gJ0hvbmcgS29uZyBTLkEuUi4sIENoaW5hJywgJ0hVJyA9PiAnSHVuZ2FyeScsICdJUycgPT4gJ0ljZWxhbmQnLCAnSU4nID0+ICdJbmRpYScsICdJRCcgPT4gJ0luZG9uZXNpYScsICdJUicgPT4gJ0lyYW4nLCAnSVEnID0+ICdJcmFxJywgJ0lFJyA9PiAnSXJlbGFuZCcsICdJTCcgPT4gJ0lzcmFlbCcsICdJVCcgPT4gJ0l0YWx5JywgJ0pNJyA9PiAnSmFtYWljYScsICdKUCcgPT4gJ0phcGFuJywgJ0pPJyA9PiAnSm9yZGFuJywgJ0taJyA9PiAnS2F6YWtoc3RhbicsICdLRScgPT4gJ0tlbnlhJywgJ0tJJyA9PiAnS2lyaWJhdGknLCAnS1YnID0+ICdLb3Nvdm8nLCAnS1cnID0+ICdLdXdhaXQnLCAnS0cnID0+ICdLeXJneXpzdGFuJywgJ0xBJyA9PiAnTGFvcycsICdMVicgPT4gJ0xhdHZpYScsICdMQicgPT4gJ0xlYmFub24nLCAnTFMnID0+ICdMZXNvdGhvJywgJ0xSJyA9PiAnTGliZXJpYScsICdMWScgPT4gJ0xpYnlhJywgJ0xJJyA9PiAnTGllY2h0ZW5zdGVpbicsICdMVCcgPT4gJ0xpdGh1YW5pYScsICdMVScgPT4gJ0x1eGVtYm91cmcnLCAnTU8nID0+ICdNYWNhbyBTLkEuUi4sIENoaW5hJywgJ01LJyA9PiAnTWFjZWRvbmlhJywgJ01HJyA9PiAnTWFkYWdhc2NhcicsICdNVycgPT4gJ01hbGF3aScsICdNWScgPT4gJ01hbGF5c2lhJywgJ01WJyA9PiAnTWFsZGl2ZXMnLCAnTUwnID0+ICdNYWxpJywgJ01UJyA9PiAnTWFsdGEnLCAnTUgnID0+ICdNYXJzaGFsbCBJc2xhbmRzJywgJ01RJyA9PiAnTWFydGluaXF1ZScsICdNUicgPT4gJ01hdXJpdGFuaWEnLCAnTVUnID0+ICdNYXVyaXRpdXMnLCAnWVQnID0+ICdNYXlvdHRlJywgJ01YJyA9PiAnTWV4aWNvJywgJ0ZNJyA9PiAnTWljcm9uZXNpYScsICdNRCcgPT4gJ01vbGRvdmEnLCAnTUMnID0+ICdNb25hY28nLCAnTU4nID0+ICdNb25nb2xpYScsICdNUycgPT4gJ01vbnRzZXJyYXQnLCAnTUEnID0+ICdNb3JvY2NvJywgJ01aJyA9PiAnTW96YW1iaXF1ZScsICdNTScgPT4gJ015YW5tYXInLCAnTkEnID0+ICdOYW1pYmlhJywgJ05SJyA9PiAnTmF1cnUnLCAnTlAnID0+ICdOZXBhbCcsICdOTCcgPT4gJ05ldGhlcmxhbmRzJywgJ0FOJyA9PiAnTmV0aGVybGFuZHMgQW50aWxsZXMnLCAnTkMnID0+ICdOZXcgQ2FsZWRvbmlhJywgJ05aJyA9PiAnTmV3IFplYWxhbmQnLCAnTkknID0+ICdOaWNhcmFndWEnLCAnTkUnID0+ICdOaWdlcicsICdORycgPT4gJ05pZ2VyaWEnLCAnTlUnID0+ICdOaXVlJywgJ05GJyA9PiAnTm9yZm9sayBJc2xhbmQnLCAnS1AnID0+ICdOb3J0aCBLb3JlYScsICdNUCcgPT4gJ05vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcycsICdOTycgPT4gJ05vcndheScsICdPTScgPT4gJ09tYW4nLCAnUEsnID0+ICdQYWtpc3RhbicsICdQVycgPT4gJ1BhbGF1JywgJ1BTJyA9PiAnUGFsZXN0aW5pYW4gVGVycml0b3J5JywgJ1BBJyA9PiAnUGFuYW1hJywgJ1BHJyA9PiAnUGFwdWEgTmV3IEd1aW5lYScsICdQWScgPT4gJ1BhcmFndWF5JywgJ1BFJyA9PiAnUGVydScsICdQSCcgPT4gJ1BoaWxpcHBpbmVzJywgJ1BOJyA9PiAnUGl0Y2Fpcm4nLCAnUEwnID0+ICdQb2xhbmQnLCAnUFQnID0+ICdQb3J0dWdhbCcsICdQUicgPT4gJ1B1ZXJ0byBSaWNvJywgJ1FBJyA9PiAnUWF0YXInLCAnUk8nID0+ICdSb21hbmlhJywgJ1JVJyA9PiAnUnVzc2lhJywgJ1JXJyA9PiAnUndhbmRhJywgJ1JFJyA9PiAnUsOpdW5pb24nLCAnU0gnID0+ICdTYWludCBIZWxlbmEnLCAnS04nID0+ICdTYWludCBLaXR0cyBhbmQgTmV2aXMnLCAnTEMnID0+ICdTYWludCBMdWNpYScsICdQTScgPT4gJ1NhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24nLCAnVkMnID0+ICdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycsICdXUycgPT4gJ1NhbW9hJywgJ1NNJyA9PiAnU2FuIE1hcmlubycsICdTVCcgPT4gJ1NhbyBUb21lIGFuZCBQcmluY2lwZScsICdTQScgPT4gJ1NhdWRpIEFyYWJpYScsICdTTicgPT4gJ1NlbmVnYWwnLCAnU1AnID0+ICdTZXJiaWEnLCAnUlMnID0+ICdTZXJiaWEnLCAnU0MnID0+ICdTZXljaGVsbGVzJywgJ1NMJyA9PiAnU2llcnJhIExlb25lJywgJ1NHJyA9PiAnU2luZ2Fwb3JlJywgJ1NLJyA9PiAnU2xvdmFraWEnLCAnU0knID0+ICdTbG92ZW5pYScsICdTQicgPT4gJ1NvbG9tb24gSXNsYW5kcycsICdTTycgPT4gJ1NvbWFsaWEnLCAnWkEnID0+ICdTb3V0aCBBZnJpY2EnLCAnR1MnID0+ICdTb3V0aCBHZW9yZ2lhIGFuZCB0aGUgU291dGggU2FuZHdpY2ggSXNsYW5kcycsICdLUicgPT4gJ1NvdXRoIEtvcmVhJywgJ0VTJyA9PiAnU3BhaW4nLCAnTEsnID0+ICdTcmkgTGFua2EnLCAnU0QnID0+ICdTdWRhbicsICdTUicgPT4gJ1N1cmluYW1lJywgJ1NKJyA9PiAnU3ZhbGJhcmQgYW5kIEphbiBNYXllbicsICdTWicgPT4gJ1N3YXppbGFuZCcsICdTRScgPT4gJ1N3ZWRlbicsICdDSCcgPT4gJ1N3aXR6ZXJsYW5kJywgJ1NZJyA9PiAnU3lyaWEnLCAnVFcnID0+ICdUYWl3YW4nLCAnVEonID0+ICdUYWppa2lzdGFuJywgJ1RaJyA9PiAnVGFuemFuaWEnLCAnVEgnID0+ICdUaGFpbGFuZCcsICdUTCcgPT4gJ1RpbW9yLUxlc3RlJywgJ1RHJyA9PiAnVG9nbycsICdUSycgPT4gJ1Rva2VsYXUnLCAnVE8nID0+ICdUb25nYScsICdUVCcgPT4gJ1RyaW5pZGFkIGFuZCBUb2JhZ28nLCAnVE4nID0+ICdUdW5pc2lhJywgJ1RSJyA9PiAnVHVya2V5JywgJ1RNJyA9PiAnVHVya21lbmlzdGFuJywgJ1RDJyA9PiAnVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzJywgJ1RWJyA9PiAnVHV2YWx1JywgJ1ZJJyA9PiAnVS5TLiBWaXJnaW4gSXNsYW5kcycsICdVRycgPT4gJ1VnYW5kYScsICdVQScgPT4gJ1VrcmFpbmUnLCAnQUUnID0+ICdVbml0ZWQgQXJhYiBFbWlyYXRlcycsICdHQicgPT4gJ1VuaXRlZCBLaW5nZG9tJywgJ1VTJyA9PiAnVW5pdGVkIFN0YXRlcycsICdVTScgPT4gJ1VuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcycsICdVWScgPT4gJ1VydWd1YXknLCAnVVonID0+ICdVemJla2lzdGFuJywgJ1ZVJyA9PiAnVmFudWF0dScsICdWQScgPT4gJ1ZhdGljYW4nLCAnVkUnID0+ICdWZW5lenVlbGEnLCAnVk4nID0+ICdWaWV0bmFtJywgJ1dGJyA9PiAnV2FsbGlzIGFuZCBGdXR1bmEnLCAnRUgnID0+ICdXZXN0ZXJuIFNhaGFyYScsICdZRScgPT4gJ1llbWVuJywgJ1lVJyA9PiAnWXVnb3NsYXZpYScsICdaTScgPT4gJ1phbWJpYScsICdaVycgPT4gJ1ppbWJhYndlJwogICAgICApOwogICAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVDb3VudHJpZXNTZWxlY3RvcigkdGhpcy0+aWQsJHRoaXMtPm5hbWUsJHRoaXMtPmdldFZhbHVlcygpLCR0aGlzLT5zZXR0aW5ncyk7CiAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlQ291bnRyaWVzU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKQogICAgewogICAgICAkc2V0dGluZ3NbJ3ZhbHVlcyddID0gc2VsZjo6JGNvdW50cmllczsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZVNlbGVjdG9yKCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncyk7CiAgICB9CiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputDate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRGF0ZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RGF0ZSBleHRlbmRzIENNU0Zvcm1JbnB1dFNlbGVjdAogIHsKICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkgIHsKICAgICAgaWYgKChjb3VudCgkdGhpcy0+dmFsdWVzKSA+IDEpKQogICAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJzAnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzEnXSAuICctJyAuICR0aGlzLT52YWx1ZXNbJzInXTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnfHx8JywgJHRoaXMtPnZhbHVlcyk7CiAgICAgIH0KICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGdldElucHV0KCkgewogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlRGF0ZVNlbGVjdCgkdGhpcy0+aWQsJHRoaXMtPm5hbWUsJHRoaXMtPmdldFZhbHVlcygpLCAkdGhpcy0+c2V0dGluZ3MpOwogICAgfQogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZU51bWJlckxpc3QoJGVuZCwgJHN0YXJ0PTApIHsKICAgICAgaWYgKCgkZW5kIDwgMCl8fCghaXNfbnVtZXJpYygkZW5kKSkpICRlbmQgPSAxOwogICAgICAkbGlzdCA9IGFycmF5KCk7CiAgICAgIGZvciAoJGkgPSAkc3RhcnQ7ICRpIDw9ICRlbmQ7ICRpKyspCiAgICAgIHsKICAgICAgICAkbGlzdFskaV0gPSAoc3RyaW5nKSRpOwogICAgICB9CiAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KICAgIAogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVEYXRlU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncykgIHsKICAgICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpCiAgICAgIHsKICAgICAgICBpZiAoc3RycG9zKCR2YWx1ZXNbMF0sICctJykgIT09IGZhbHNlKSAkdmFsdWVzID0gZXhwbG9kZSgnLScsJHZhbHVlc1swXSk7CiAgICAgIH0KICAgICAgJHN0YXJ0X3llYXIgPSBpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3llYXInXSk/JHNldHRpbmdzWydzdGFydF95ZWFyJ106ZGF0ZSgnWScpOwogICAgICAkbnVtYmVyX3llYXJzID0gaXNzZXQoJHNldHRpbmdzWydudW1iZXJfeWVhcnMnXSk/JHNldHRpbmdzWydudW1iZXJfeWVhcnMnXToyMDsKICAgICAgJGVuZF95ZWFyID0gJHN0YXJ0X3llYXIgKyAkbnVtYmVyX3llYXJzOwoKICAgICAgJHllYXIgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMF0nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoJGVuZF95ZWFyLCRzdGFydF95ZWFyKSxhcnJheSgkdmFsdWVzWzBdKSwxLCcnLGZhbHNlKTsKICAgICAgJG1vbnRoID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWzFdJyxzZWxmOjpDcmVhdGVNb250aHNMaXN0KCksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAgICRkYXkgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMl0nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoMzEsMSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICAgIGlmIChpc3NldCgkc2V0dGluZ3NbJ2V1cm9wZWFuX2RhdGUnXSkpCiAgICAgIHsKICAgICAgICByZXR1cm4gJGRheSAuICRtb250aCAuICR5ZWFyOwogICAgICB9CiAgICAgIHJldHVybiAkeWVhciAuICRtb250aCAuICRkYXk7CiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlTW9udGhzTGlzdCgpIHsKICAgICAgJG1vbnRocyA9IGFycmF5KCk7CiAgICAgIGZvciAoJGkgPSAxOyAkaSA8PSAxMjsgKyskaSkgewogICAgICAgICR0ID0gbWt0aW1lKDAsIDAsIDAsICRpLCAxLCAyMDAwKTsKICAgICAgICAkbW9udGhzWyRpXSA9IGRhdGUoJ00nLCAkdCk7CiAgICAgIH0KICAgICAgcmV0dXJuICRtb250aHM7CiAgICB9CiAgCiAgfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormInputFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgRmlsZQogICovCiAgCiAgY2xhc3MgQ01TRm9ybUlucHV0RmlsZSBleHRlbmRzIENNU0Zvcm1JbnB1dAogIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+Z2V0VXBsb2FkRmllbGQoKTsKICAgICAgLy8gcmV0dXJuICR0aGlzLT5nZXRNb2R1bGUoKS0+Q3JlYXRlSW5wdXRIaWRkZW4oJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCkpOwogICAgfQogIAogICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2F2ZU9iamVjdCgpIAogICB7CiAgICAgLy8gVE9ETzogVGhpcyBjYXNlCiAgIH0KICAgIAogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFVwbG9hZEZpZWxkKCkgIHsKICAgICAgJGZpZWxkID0gJHRoaXMtPmdldE1vZHVsZSgpLT5DcmVhdGVJbnB1dEZpbGUoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJycsICR0aGlzLT5nZXRTZXR0aW5nKCdzaXplJywgMzApKTsKICAgICAgCiAgICAgICRodG1sID0gJzxzcGFuPic7CiAgICAgIGlmICghJHRoaXMtPmlzRW1wdHkoKSkKICAgICAgewogICAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXSkgJiYgJHRoaXMtPnNldHRpbmdzWydkaXJlY3RfbGluayddICE9ICcnKQogICAgICAgIHsKICAgICAgICAgICRmaWxlX3VybCA9ICR0aGlzLT5zZXR0aW5nc1snZGlyZWN0X2xpbmsnXTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRmaWxlX3VybCA9IGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snYmFzZV91cmwnXSk/JHRoaXMtPnNldHRpbmdzWydiYXNlX3VybCddOicnOwogICAgICAgICAgaWYgKChzdWJzdHIoJGZpbGVfdXJsLCAtMSkgIT0gJy8nKSAmJiAoc3Vic3RyKCR0aGlzLT5nZXRWYWx1ZSgpLDAsMSkgIT0gJy8nKSkgJGZpbGVfdXJsIC4nLyc7CiAgICAgICAgICAkZmlsZV91cmwgLj0gJHRoaXMtPmdldFZhbHVlKCk7CiAgICAgICAgICAkZmlsZV91cmwgPSBzdHJfcmVwbGFjZShESVJFQ1RPUllfU0VQQVJBVE9SLCAnLycsICRmaWxlX3VybCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6aXNJbWFnZSgkdGhpcy0+Z2V0VmFsdWUoKSkpCiAgICAgICAgewogICAgICAgICAgJHRleHQgPSAnPGltZyBzcmM9IicuJGZpbGVfdXJsLiciIC8+JzsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICR0ZXh0ID0gYmFzZW5hbWUoJHRoaXMtPnZhbHVlc1swXSk7CiAgICAgICAgfQoKICAgICAgICAkaHRtbCAuPSAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6YmxvY2s7IG1hcmdpbi1ib3R0b206IDdweDsiPjxhIGhyZWY9IicuJGZpbGVfdXJsLiAnIiByZWw9ImV4dGVybmFsIiA+Jy4gJHRleHQgLic8L2E+PC9zcGFuPiAnOwoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWxldGVfY2hlY2tib3gnXSkpCiAgICAgICAgewogICAgICAgICAgJGZpZWxkIC49ICcgJyAuICAkdGhpcy0+Z2V0TW9kdWxlKCktPkNyZWF0ZUlucHV0Q2hlY2tib3goJHRoaXMtPmlkLCAkdGhpcy0+c2V0dGluZ3NbJ2RlbGV0ZV9jaGVja2JveCddLCAnMScpIC4gJyAnIC4gICR0aGlzLT5nZXRNb2R1bGUoKS0+bGFuZygnZGVsZXRlJyk7CiAgICAgICAgfQogICAgICB9CgoKCiAgICAgICRodG1sIC49ICRmaWVsZCAuICc8L3NwYW4+JzsKICAgICAgcmV0dXJuICRodG1sOwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGlzSW1hZ2UoJGZpbGVuYW1lKSB7CiAgICAgICR2YWxpZF9leHRlbnNpb25zID0gYXJyYXkoJ2pwZWcnLCdqcGcnLCdnaWYnLCdwbmcnKTsKICAgICAgaWYgKGluX2FycmF5KHNlbGY6OmdldEZpbGVFeHRlbnNpb24oJGZpbGVuYW1lKSwkdmFsaWRfZXh0ZW5zaW9ucykpCiAgICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgfQogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSkgIHsKICAgICAgJGZpbGUgPSBleHBsb2RlKCcuJywgJGZpbGVuYW1lKTsKICAgICAgICBpZiAoY291bnQoJGZpbGUpID4gMSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gc3RydG9sb3dlcihlbmQoJGZpbGUpKTsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CiAgICAKICB9]]></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[PD9waHAKCiAgLyoKICAgIENNU0Zvcm0gSW5wdXQgU2VsZWN0CiAgKi8KICAKICBjbGFzcyBDTVNGb3JtSW5wdXRTZWxlY3QgZXh0ZW5kcyBDTVNGb3JtSW5wdXQKICB7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5wdXQoKQogICAgewogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlU2VsZWN0b3IoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlcygpLCAkdGhpcy0+c2V0dGluZ3MpOwogICAgfQogICAgCiAgICAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzID0gYXJyYXkoKSkgIHsKICAgICAgCiAgICAgIGlmKGlzc2V0KCRzZXR0aW5nc1snZXhwYW5kZWQnXSkgJiYgJHNldHRpbmdzWydleHBhbmRlZCddID09IHRydWUpCiAgICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgaXNzZXQoJHNldHRpbmdzWyd2YWx1ZXMnXSk/JHNldHRpbmdzWyd2YWx1ZXMnXTphcnJheSgpLCAkdmFsdWVzLCBpc3NldCgkc2V0dGluZ3NbJ2FkZHRleHQnXSk/JHNldHRpbmdzWydhZGR0ZXh0J106JycsIGlzc2V0KCRzZXR0aW5nc1snbXVsdGlwbGUnXSk/dHJ1ZTpmYWxzZSwgJHNldHRpbmdzKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAkaXRlbXMgPSBpc3NldCgkc2V0dGluZ3NbJ3ZhbHVlcyddKT8kc2V0dGluZ3NbJ3ZhbHVlcyddOmFycmF5KCk7CiAgICAgICAgaWYoaXNzZXQoJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSkKICAgICAgICB7CiAgICAgICAgICAkaXRlbXMgPSBhcnJheSgnJyA9PiAkc2V0dGluZ3NbJ2luY2x1ZGVfY3VzdG9tJ10pICsgJGl0ZW1zOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHZhbHVlcywgaXNzZXQoJHNldHRpbmdzWydzaXplJ10pPyRzZXR0aW5nc1snc2l6ZSddOjEsIGlzc2V0KCRzZXR0aW5nc1snYWRkdGV4dCddKT8kc2V0dGluZ3NbJ2FkZHRleHQnXTonJywgaXNzZXQoJHNldHRpbmdzWydtdWx0aXBsZSddKT90cnVlOmZhbHNlLCAkc2V0dGluZ3MpOwogICAgICB9CiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXM9YXJyYXkoKSwgJHNpemU9MywgJGFkZHR0ZXh0PScnLCAkbXVsdGlwbGUgPSB0cnVlLCAkc2V0dGluZ3MgPSBhcnJheSgpKSB7CiAgICAgICRpZCA9IGNtc19odG1sZW50aXRpZXMoJGlkKTsKICAgICAgJG5hbWUgPSBjbXNfaHRtbGVudGl0aWVzKCRuYW1lKTsKICAgICAgJHNpemUgPSBjbXNfaHRtbGVudGl0aWVzKCRzaXplKTsKICAgICAgJG11bHRpcGxlID0gY21zX2h0bWxlbnRpdGllcygkbXVsdGlwbGUpOwoKICAgICAgaWYoJG11bHRpcGxlID09IHRydWUpCiAgICAgIHsKICAgICAgICAkbmFtZSAuPSAnW10nOwogICAgICB9CgogICAgICAkdGV4dCA9ICc8c2VsZWN0IG5hbWU9IicuJGlkLiRuYW1lLiciIGlkPSInLiRpZC4kbmFtZS4nIic7CiAgICAgIAogICAgICBpZiAoJGFkZHR0ZXh0ICE9ICcnKQogICAgICB7CiAgICAgICAgJHRleHQgLj0gJyAnIC4gJGFkZHR0ZXh0OwogICAgICB9CiAgICAgIAogICAgICBpZiggJG11bHRpcGxlICkKICAgICAgICB7CiAgICAgICAgJHRleHQgLj0gJyBtdWx0aXBsZT0ibXVsdGlwbGUiICc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHNpemUgPiAxKQogICAgICAgIHsKICAgICAgICAgICR0ZXh0IC49ICcgc2l6ZT0iJy4kc2l6ZS4nIic7CiAgICAgICAgfQogICAgICAgIAogICAgICBpZihpc3NldCgkc2V0dGluZ3NbJ2NsYXNzJ10pKQogICAgICB7CiAgICAgICAgaWYoaXNfYXJyYXkoJHNldHRpbmdzWydjbGFzcyddKSkgJHNldHRpbmdzWydjbGFzcyddID0gaW1wbG9kZSgnICcsICRzZXR0aW5nc1snY2xhc3MnXSk7CiAgICAgICAgJHRleHQgLj0gJyBjbGFzcz0iJyAuICRzZXR0aW5nc1snY2xhc3MnXSAuJyInOwogICAgICB9CgogICAgICBpZigoY291bnQoJGl0ZW1zKSA+IDApICYmIChrZXkoJGl0ZW1zKSA9PSAwKSAmJiAhaXNfYXJyYXkoY3VycmVudCgkaXRlbXMpKSkKICAgICAgewogICAgICAgICR0ZXh0IC49ICcgZGF0YS1wbGFjZWhvbGRlcj0iJy4oc3RyaW5nKWN1cnJlbnQoJGl0ZW1zKS4nIic7CiAgICAgIH0KCiAgICAgICR0ZXh0IC49ICc+JzsKCiAgICAgICRjb3VudCA9IDA7CiAgICAgIGZvcmVhY2ggKCRpdGVtcyBhcyAka2V5PT4kdmFsdWUpCiAgICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkKICAgICAgICAgewogICAgICAgICAgJHRleHQgLj0gJzxvcHRncm91cCBsYWJlbD0iJyAuICRrZXkgLiAnIj4nOwogICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICRrZXkyID0+ICRlbnRyeSkKICAgICAgICAgIHsKICAgICAgICAgICAgJHRleHQgLj0gc2VsZjo6Z2VuZXJhdGVPcHRpb24oJGtleTIsICRlbnRyeSwgJHNlbGVjdGVkaXRlbXMpOwogICAgICAgICAgICAkY291bnQrKzsKICAgICAgICAgIH0KICAgICAgICAgICR0ZXh0IC49ICc8L29wdGdyb3VwPic7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAkdGV4dCAuPSBzZWxmOjpnZW5lcmF0ZU9wdGlvbigka2V5LCAkdmFsdWUsICRzZWxlY3RlZGl0ZW1zKTsKICAgICAgICAgICRjb3VudCsrOwogICAgICAgIH0KICAgICAgfQogICAgICAkdGV4dCAuPSAnPC9zZWxlY3Q+Jy4iXG4iOwoKICAgICAgcmV0dXJuICR0ZXh0OwogICAgfQogICAgCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlT3B0aW9uKCRrZXksICR2YWx1ZSwgJHNlbGVjdGVkaXRlbXMpICB7CiAgICAgICR2YWx1ZSA9ICR2YWx1ZTsKCiAgICAgICR0ZXh0ID0gJzxvcHRpb24gdmFsdWU9IicuJGtleS4nIic7CiAgICAgIGlmIChpbl9hcnJheSgka2V5LCAkc2VsZWN0ZWRpdGVtcykpCiAgICAgIHsKICAgICAgICAkdGV4dCAuPSAnICcgLiAnc2VsZWN0ZWQ9InNlbGVjdGVkIic7CiAgICAgIH0KICAgICAgJHRleHQgLj0gJz4nOwogICAgICAkdGV4dCAuPSAkdmFsdWU7CiAgICAgICR0ZXh0IC49ICc8L29wdGlvbj4nOwoKICAgICAgcmV0dXJuICR0ZXh0OyAgCiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcz1hcnJheSgpLCAkYWRkdHRleHQ9JycsICRtdWx0aXBsZSA9IHRydWUsICRwYXJhbXMgPSBhcnJheSgpKSB7CgogICAgICAkaWQgPSBjbXNfaHRtbGVudGl0aWVzKCRpZCk7CiAgICAgICRuYW1lID0gY21zX2h0bWxlbnRpdGllcygkbmFtZSk7CiAgICAgICRtdWx0aXBsZSA9IGNtc19odG1sZW50aXRpZXMoJG11bHRpcGxlKTsKCiAgICAgICRsaXN0ID0gYXJyYXkoKTsKICAgICAgZm9yZWFjaCgkaXRlbXMgYXMgJGtleSA9PiAkaXRlbSkKICAgICAgewogICAgICAgIGlmIChpc19hcnJheSgkaXRlbSkpCiAgICAgICAgewogICAgICAgICAgJGxpc3RbXSA9IGFycmF5KCdsYWJlbCcgPT4gJzxzdHJvbmc+JyAuICRrZXkgLiAnPC9zdHJvbmc+JywgJ2lucHV0JyA9PiAnJyk7CgogICAgICAgICAgZm9yZWFjaCgkaXRlbSBhcyAka2V5MiA9PiAkZW50cnkpCiAgICAgICAgICB7CiAgICAgICAgICAgICBzZWxmOjpnZW5lcmF0ZUV4cGFuZGVkTGlzdCgkbGlzdCwgJGlkLCAkZW50cnksICRuYW1lLCAka2V5MiwgJHNlbGVjdGVkaXRlbXMsICRtdWx0aXBsZSwgJGFkZHR0ZXh0KTsKICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICBzZWxmOjpnZW5lcmF0ZUV4cGFuZGVkTGlzdCgkbGlzdCwgJGlkLCAkaXRlbSwgJG5hbWUsICRrZXksICRzZWxlY3RlZGl0ZW1zLCAkbXVsdGlwbGUsICRhZGR0dGV4dCk7CiAgICAgICAgfQogICAgICB9CgogICAgICBpZihpc3NldCgkcGFyYW1zWydtb2RlJ10pICYmICgkcGFyYW1zWydtb2RlJ10gPT0gJ2h0bWwnKSkKICAgICAgewogICAgICAgIC8vIFRPRE8KICAgICAgICByZXR1cm4gJ05vdCBpbXBsZW1lbnRlZCB5ZXQnOwogICAgICB9CiAgICAgIGVsc2VpZihpc3NldCgkcGFyYW1zWydtb2RlJ10pICYmICgkcGFyYW1zWydtb2RlJ10gPT0gJ2FycmF5JykpCiAgICAgIHsKICAgICAgICByZXR1cm4gJGxpc3Q7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJGh0bWwgPSAnJzsKICAgICAgICBpZiAoY291bnQoJGxpc3QpID4gMCkKICAgICAgICB7CiAgICAgICAgICAkaHRtbCAuPSAnPHVsPic7CiAgICAgICAgICBmb3JlYWNoKCRsaXN0IGFzICRpdGVtKQogICAgICAgICAgewogICAgICAgICAgICAkaHRtbCAuPSAnPGxpPicuJGl0ZW1bJ2lucHV0J10uICcgJy4gJGl0ZW1bJ2xhYmVsJ10gLic8L2xpPic7CiAgICAgICAgICB9CiAgICAgICAgICAkaHRtbCAuPSAnPC91bD4nOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGh0bWw7CiAgICAgIH0KCiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVFeHBhbmRlZExpc3QoJiRsaXN0LCAkaWQsICRpdGVtLCAkbmFtZSwgJGtleSwgJHNlbGVjdGVkaXRlbXMsICRtdWx0aXBsZSwgJGFkZHR0ZXh0KSB7CiAgICAgIGlmIChpbl9hcnJheSgka2V5LCAkc2VsZWN0ZWRpdGVtcykpCiAgICAgIHsKICAgICAgICAkdGV4dCA9ICcgY2hlY2tlZD0iY2hlY2tlZCInIC4gJyAnIC4gJGFkZHR0ZXh0OwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR0ZXh0ID0gJyAnIC4gJGFkZHR0ZXh0OwogICAgICB9CgogICAgICBpZigkbXVsdGlwbGUpCiAgICAgIHsgICAgICAgIAogICAgICAgICRsaXN0W10gPSBhcnJheSgKICAgICAgICAgICdsYWJlbCcgPT4gJzxsYWJlbCBmb3I9IicuJGlkLiRuYW1lLidbJy4ka2V5LiddIj4nIC4gJGl0ZW0gLiAnPC9sYWJlbD4nLAogICAgICAgICAgJ2lucHV0JyA9PiAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSInLiRpZC4kbmFtZS4nWycuJGtleS4nXSIgaWQ9IicuJGlkLiRuYW1lLidbJy4ka2V5LiddIiB2YWx1ZT0iJy4ka2V5LiciJy4kdGV4dC4nIC8+JwogICAgICAgICAgKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAkbGlzdFtdID0gYXJyYXkoCiAgICAgICAgICAnbGFiZWwnID0+ICc8bGFiZWwgZm9yPSInLiRpZC4kbmFtZS4ka2V5LiciPicgLiAkaXRlbSAuICc8L2xhYmVsPicsCiAgICAgICAgICAnaW5wdXQnID0+ICc8aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9IicuJGlkLiRuYW1lLiciIGlkPSInLiRpZC4kbmFtZS4ka2V5LiciIHZhbHVlPSInLiRrZXkuJyInLiR0ZXh0LicgLz4nCiAgICAgICAgICApOwogICAgICB9CiAgICAgIHJldHVybiAkbGlzdDsKICAgIH0KICAKICAgIC8vIERFUFJFQ0FURUQgVE8gQkUgUkVNT1ZFRAogICAgCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIERlcHJlY2F0ZWRDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcz1hcnJheSgpLCAkc2l6ZT0zLCAkYWRkdHRleHQ9JycsICRtdWx0aXBsZSA9IHRydWUpCiAgICB7CiAgICAgIHJldHVybiBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJHNpemUsICRhZGR0dGV4dCwgJG11bHRpcGxlKTsKICAgIH0KICAgIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcz1hcnJheSgpLCAkYWRkdHRleHQ9JycsICRtdWx0aXBsZSA9IHRydWUsICRwYXJhbXMgPSBhcnJheSgpKQogICAgewogICAgICByZXR1cm4gc2VsZjo6Q3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgfQogIH0=]]></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/JHRoaXMtPnNldHRpbmdzWydzaXplJ106ODAsIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ10pPyR0aGlzLT5zZXR0aW5nc1snbWF4bGVuZ3RoJ106MjU1KTsKCiAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10pKQogICAgICB7CiAgICAgICAgJGlucHV0ID0gc3RyX3JlcGxhY2UoJ2NsYXNzPSJjbXNfdGV4dGZpZWxkIicsICdjbGFzcz0iJy4oc3RyaW5nKSR0aGlzLT5zZXR0aW5nc1snY2xhc3NuYW1lJ10uJyInLCAkaW5wdXQpOwogICAgICB9CgogICAgICByZXR1cm4gJGlucHV0OwogICAgfQogIH0=]]></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+dmFsdWVzWycyJ107CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgcmV0dXJuIGltcGxvZGUoJ3x8fCcsICR0aGlzLT52YWx1ZXMpOwogICAgICB9CiAgICB9CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpIHsKICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZVRpbWVTZWxlY3QoJHRoaXMtPmlkLCR0aGlzLT5uYW1lLCR0aGlzLT5nZXRWYWx1ZXMoKSk7CiAgICB9CiAgICAKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlVGltZVNlbGVjdCgkaWQsJG5hbWUsJHZhbHVlcykgIHsKICAgICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpCiAgICAgIHsKICAgICAgICBpZiAoc3RycG9zKCR2YWx1ZXNbMF0sICc6JykgIT09IGZhbHNlKSAkdmFsdWVzID0gZXhwbG9kZSgnOicsJHZhbHVlc1swXSk7CiAgICAgIH0KICAgICAgJGhvdXJzID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWzBdJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KDIzKSxhcnJheSgkdmFsdWVzWzBdKSwxLCcnLGZhbHNlKTsKICAgICAgJG1pbnV0ZXMgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoNTkpLGFycmF5KCR2YWx1ZXNbMV0pLDEsJycsZmFsc2UpOwogICAgICAkc2Vjb25kcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICAgIHJldHVybiAkaG91cnMgLiAnIDogJyAuICRtaW51dGVzIC4gJyA6ICcgLiAkc2Vjb25kczsKICAgIH0KICB9]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCiAgCmNsYXNzIENNU0Zvcm1WYWxpZGF0b3IKewogIHByb3RlY3RlZCAkd2lkZ2V0OwogIHByb3RlY3RlZCAkdmFsaWRhdG9yOwogIHByb3RlY3RlZCAkcGFyYW1zOwogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJHdpZGdldCwkdmFsaWRhdG9yLCRwYXJhbXMpCiAgewogICAgJHRoaXMtPndpZGdldCA9ICR3aWRnZXQ7CiAgICAkdGhpcy0+dmFsaWRhdG9yID0gJHZhbGlkYXRvcjsKICAgICR0aGlzLT5wYXJhbXMgPSAkcGFyYW1zOwogICAgCiAgICByZXR1cm4gJHRoaXM7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBjaGVjaygpCiAgewogICAgc3dpdGNoKCR0aGlzLT52YWxpZGF0b3IpCiAgICB7CiAgICAgIGNhc2UgJ25vdF9lbXB0eSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja05vdEVtcHR5KCk7CiAgICAgIGNhc2UgJ2VxdWFsX2ZpZWxkJzoKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrRXF1YWxGaWVsZCgpOwogICAgICBjYXNlICdlbWFpbCc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja0VtYWlsKCk7CiAgICAgIGNhc2UgJ3VuaXF1ZSc6CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1VuaXF1ZSgpOwogICAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1Vua25vd24gZm9ybSB2YWxpZGF0b3IgIicuJHRoaXMtPnZhbGlkYXRvciAuJyIuJyk7CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVycm9yTWVzc2FnZSgkbWVzc2FnZSwgJHZhbHVlKQogIHsKICAgIGlmKGlzX2FycmF5KCR0aGlzLT5wYXJhbXMpICYmIGlzc2V0KCR0aGlzLT5wYXJhbXNbJ2Vycm9yX21lc3NhZ2UnXSkgJiYgJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddICE9ICcnKQogICAgewogICAgICByZXR1cm4gJHRoaXMtPnBhcmFtc1snZXJyb3JfbWVzc2FnZSddOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkZXJyb3IgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NNU0Zvcm1zJyktPmxhbmcoJG1lc3NhZ2UsICR2YWx1ZSk7CiAgICAgIHJldHVybiAkZXJyb3I7CiAgICB9CiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBDaGVja1VuaXF1ZSgpCiAgewogICAgJHZhbHVlID0gJHRoaXMtPndpZGdldC0+Z2V0VmFsdWUoKTsKICAgIGlmIChjYWxsX3VzZXJfZnVuYygkdGhpcy0+cGFyYW1zLCAkdmFsdWUpICE9PSBudWxsKQogICAgewogICAgICBnbG9iYWwgJGdDbXM7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPmdldEVycm9yTWVzc2FnZSgnZmllbGQgbm90IHVuaXF1ZScsICR2YWx1ZSkpOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBDaGVja05vdEVtcHR5KCkKICB7ICAKICAgIGdsb2JhbCAkZ0NtczsKICAgICR2YWx1ZXMgPSAkdGhpcy0+d2lkZ2V0LT5nZXRWYWx1ZXMoKTsKICAgICR2YWx1ZSA9ICR0aGlzLT53aWRnZXQtPmdldFZhbHVlKCk7CiAgICBpZiAoaXNfYXJyYXkoJHZhbHVlcykgJiYgY291bnQoJHZhbHVlcykgPT0gMCkKICAgIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+d2lkZ2V0LT5nZXRGcmllbmRseU5hbWUoKSkpOwogICAgfQogICAgZWxzZWlmKGVtcHR5KCR2YWx1ZXMpKQogICAgewogICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ2ZpZWxkX2Nhbm5vdF9iZV9lbXB0eScsICR0aGlzLT53aWRnZXQtPmdldEZyaWVuZGx5TmFtZSgpKSk7CiAgICB9CiAgICBlbHNlaWYoZW1wdHkoJHZhbHVlKSkKICAgIHsKICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZF9jYW5ub3RfYmVfZW1wdHknLCAkdGhpcy0+d2lkZ2V0LT5nZXRGcmllbmRseU5hbWUoKSkpOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBDaGVja0VxdWFsRmllbGQoKQogIHsKICAgIGdsb2JhbCAkZ0NtczsKICAgICAgJHZhbHVlMSA9IHNlcmlhbGl6ZSgkdGhpcy0+d2lkZ2V0LT5nZXRWYWx1ZXMoKSk7CiAgICAgIAogICAgICB0cnkKICAgICAgewogICAgICAgICR2YWx1ZTIgPSBzZXJpYWxpemUoJHRoaXMtPndpZGdldC0+Z2V0Rm9ybSgpLT5nZXRXaWRnZXQoJHRoaXMtPnBhcmFtcyktPmdldFZhbHVlcygpKTsKICAgICAgfQogICAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICAgIHsKICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCR0aGlzLT5nZXRFcnJvck1lc3NhZ2UoJ3Vua25vd24gZmllbGQnLCAkdGhpcy0+cGFyYW1zKSk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICB9CiAgICAgIAogICAgICBpZiAoJHZhbHVlMSAhPSAkdmFsdWUyKQogICAgICB7CiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigkdGhpcy0+Z2V0RXJyb3JNZXNzYWdlKCdmaWVsZHMgbm90IGVxdWFsJywgJHRoaXMtPndpZGdldC0+Z2V0RnJpZW5kbHlOYW1lKCksICR0aGlzLT53aWRnZXQtPmdldEZvcm0oKS0+Z2V0V2lkZ2V0KCR0aGlzLT5wYXJhbXMpLT5nZXRGcmllbmRseU5hbWUoKSkpOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gdHJ1ZTsKICAgIAogIH0KICAKICBwcm90ZWN0ZWQgZnVuY3Rpb24gQ2hlY2tFbWFpbCgpCiAgewogICAgJGVtYWlsID0gaW1wbG9kZSgnfCcsICR0aGlzLT53aWRnZXQtPmdldFZhbHVlcygpKTsKICAgIGlmICghc2VsZjo6dmFsaWRFbWFpbCgkZW1haWwpKQogICAgewogICAgICBnbG9iYWwgJGdDbXM7CiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHRoaXMtPmdldEVycm9yTWVzc2FnZSgnaW52YWxpZCBlbWFpbCcsICRlbWFpbCkpOwogICAgfQogICAgcmV0dXJuIHRydWU7CiAgfQogIC8vIEV4dGVybmFsIGZ1bmN0aW9ucwogIC8qKgogIFZhbGlkYXRlIGFuIGVtYWlsIGFkZHJlc3MuCiAgUHJvdmlkZSBlbWFpbCBhZGRyZXNzIChyYXcgaW5wdXQpCiAgUmV0dXJucyB0cnVlIGlmIHRoZSBlbWFpbCBhZGRyZXNzIGhhcyB0aGUgZW1haWwgCiAgYWRkcmVzcyBmb3JtYXQgYW5kIHRoZSBkb21haW4gZXhpc3RzLgogICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YWxpZEVtYWlsKCRlbWFpbCkKICB7CiAgICAgJGlzVmFsaWQgPSB0cnVlOwogICAgICRhdEluZGV4ID0gc3RycnBvcygkZW1haWwsICJAIik7CiAgICAgaWYgKGlzX2Jvb2woJGF0SW5kZXgpICYmICEkYXRJbmRleCkKICAgICB7CiAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAkZG9tYWluID0gc3Vic3RyKCRlbWFpbCwgJGF0SW5kZXgrMSk7CiAgICAgICAgJGxvY2FsID0gc3Vic3RyKCRlbWFpbCwgMCwgJGF0SW5kZXgpOwogICAgICAgICRsb2NhbExlbiA9IHN0cmxlbigkbG9jYWwpOwogICAgICAgICRkb21haW5MZW4gPSBzdHJsZW4oJGRvbWFpbik7CiAgICAgICAgaWYgKCRsb2NhbExlbiA8IDEgfHwgJGxvY2FsTGVuID4gNjQpCiAgICAgICAgewogICAgICAgICAgIC8vIGxvY2FsIHBhcnQgbGVuZ3RoIGV4Y2VlZGVkCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJGRvbWFpbkxlbiA8IDEgfHwgJGRvbWFpbkxlbiA+IDI1NSkKICAgICAgICB7CiAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgbGVuZ3RoIGV4Y2VlZGVkCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJGxvY2FsWzBdID09ICcuJyB8fCAkbG9jYWxbJGxvY2FsTGVuLTFdID09ICcuJykKICAgICAgICB7CiAgICAgICAgICAgLy8gbG9jYWwgcGFydCBzdGFydHMgb3IgZW5kcyB3aXRoICcuJwogICAgICAgICAgICRpc1ZhbGlkID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHByZWdfbWF0Y2goJy9cXC5cXC4vJywgJGxvY2FsKSkKICAgICAgICB7CiAgICAgICAgICAgLy8gbG9jYWwgcGFydCBoYXMgdHdvIGNvbnNlY3V0aXZlIGRvdHMKICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICghcHJlZ19tYXRjaCgnL15bQS1aYS16MC05XFwtXFwuXSskLycsICRkb21haW4pKQogICAgICAgIHsKICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbm90IHZhbGlkIGluIGRvbWFpbiBwYXJ0CiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocHJlZ19tYXRjaCgnL1xcLlxcLi8nLCAkZG9tYWluKSkKICAgICAgICB7CiAgICAgICAgICAgLy8gZG9tYWluIHBhcnQgaGFzIHR3byBjb25zZWN1dGl2ZSBkb3RzCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZgogICghcHJlZ19tYXRjaCgnL14oXFxcXC58W0EtWmEtejAtOSEjJSZgXz1cXC8kXCcqKz9ee318fi4tXSkrJC8nLAogICAgICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoIlxcXFwiLCIiLCRsb2NhbCkpKQogICAgICAgIHsKICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbm90IHZhbGlkIGluIGxvY2FsIHBhcnQgdW5sZXNzIAogICAgICAgICAgIC8vIGxvY2FsIHBhcnQgaXMgcXVvdGVkCiAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXiIoXFxcXCJ8W14iXSkrIiQvJywKICAgICAgICAgICAgICAgc3RyX3JlcGxhY2UoIlxcXFwiLCIiLCRsb2NhbCkpKQogICAgICAgICAgIHsKICAgICAgICAgICAgICAkaXNWYWxpZCA9IGZhbHNlOwogICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCRpc1ZhbGlkICYmICEoY2hlY2tkbnNycigkZG9tYWluLCJNWCIpIHx8IAogICBjaGVja2Ruc3JyKCRkb21haW4sIkEiKSkpCiAgICAgICAgewogICAgICAgICAgIC8vIGRvbWFpbiBub3QgZm91bmQgaW4gRE5TCiAgICAgICAgICAgJGlzVmFsaWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiAkaXNWYWxpZDsKICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/lib/class.CMSFormWidget.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiAgLyoKICAgIFRoaXMgY2xhc3MgYWltIHRvIGhhbmRsZSBDTVMgRm9ybXMgdmVyeSBkaWZmZXJlbnRseS4KICAgIAogICAgQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGN5YmVydG90b3BoZUBnbWFpbC5jb20+CiAgICBDb3B5cmlnaHRzOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgMjAxMgogICAgTGljZW5jZTogR1BMICAgIAogIAogICovCgpjbGFzcyBDTVNGb3JtV2lkZ2V0ICAvL2V4dGVuZHMgQ21zT2JqZWN0CnsKICBwcm90ZWN0ZWQgJHdpZGdldDsKICAKICBwdWJsaWMgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKICAgICd0ZXh0JyAgICAgICA9PiBhcnJheSgndGl0bGUnID0+ICdUZXh0IGZpZWxkJywgJ2FkbycgPT4gJ0MoMjU1KScpLAogICAgJ3RleHRhcmVhJyAgID0+IGFycmF5KCd0aXRsZScgPT4gJ1RleHQgYXJlYScsICAgJ2FkbycgPT4gJ1hMJyksCiAgICAnY2hlY2tib3gnICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnQ2hlY2tib3gnLCAgICdhZG8nID0+ICdJJyksCiAgICAnc2VsZWN0JyAgICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnU2VsZWN0JywgICAgICdhZG8nID0+ICdDKDI1NSknKSwKICAgICdwYXNzd29yZCcgID0+IGFycmF5KCd0aXRsZScgPT4gJ1Bhc3N3b3JkJywgICAnYWRvJyA9PiAnQygyNTUpJyksCiAgICAnZGF0ZScgICAgICAgPT4gYXJyYXkoJ3RpdGxlJyA9PiAnRGF0ZScsICAgICAgICdhZG8nID0+ICdEVCcpLAogICAgJ3RpbWUnICAgICAgID0+IGFycmF5KCd0aXRsZScgPT4gJ1RpbWUnLCAgICAgICAnYWRvJyA9PiAnRFQnKSwKICAgICdmaWxlJyAgICAgICA9PiBhcnJheSgndGl0bGUnID0+ICdGaWxlJywgICAgICAgJ2FkbycgPT4gJ0MoMjU1KScpKTsKICAKICAvLyBSRUZBQ1RPUgogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgmJGZvcm0sICRpZCwgJG1vZHVsZV9uYW1lLCAkbmFtZSwgJHR5cGUsJHNldHRpbmdzPWFycmF5KCkpIHsKICAgIAogICAgJHRoaXMtPndpZGdldCA9ICR0aGlzLT5nZXRXaWRnZXRPYmplY3QoJHR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAtPnNldHVwKCRpZCwgJG5hbWUsICRmb3JtLCAkbW9kdWxlX25hbWUsICRzZXR0aW5ncykKICAgICAgICAgICAgICAgICAgICAgICAgIC0+aW5pdCgpOwogICAgLy8gdmFyX2R1bXAoJHRoaXMtPndpZGdldCk7CiAgICAvLyBERVBSRUNBVEVECiAgICAvLyAkdGhpcy0+Zm9ybSA9ICRmb3JtOwogICAgLy8gJHRoaXMtPmlkID0gJGlkOwogICAgLy8gJHRoaXMtPm1vZHVsZV9uYW1lID0gJG1vZHVsZV9uYW1lOwogICAgLy8gJHRoaXMtPm5hbWUgPSBpc3NldCgkc2V0dGluZ3NbJ25hbWUnXSk/JHNldHRpbmdzWyduYW1lJ106JG5hbWU7CiAgICAvLyAkdGhpcy0+dHlwZSA9ICR0eXBlOwogICAgLy8gJHRoaXMtPnNldHRpbmdzID0gJHNldHRpbmdzOwogICAgLy8gLy8gIC0tCiAgICAvLyAKICAgIC8vICR0aGlzLT5pbml0KCk7CiAgICAKICAgIHJldHVybiAkdGhpczsKICB9CiAgCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdpZGdldE9iamVjdCgkdHlwZSkKICB7CiAgICBzd2l0Y2goJHR5cGUpCiAgICB7CiAgICAgIGNhc2UgJ3RleHQnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0VGV4dCgpOyAgICAgIAogICAgICBjYXNlICdoaWRkZW4nOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7ICAgICAgCiAgICAgIGNhc2UgJ3NlbGVjdCc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRTZWxlY3QoKTsgICAgICAKICAgICAgY2FzZSAncGFnZXMnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0UGFnZXMoKTsgICAgICAKICAgICAgY2FzZSAnY291bnRyaWVzJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dENvdW50cmllcygpOyAgICAgIAogICAgICBjYXNlICd0ZXh0YXJlYSc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRUZXh0YXJlYSgpOyAgICAgIAogICAgICBjYXNlICdjb2RlYXJlYSc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRTeW50YXhhcmVhKCk7ICAgICAgCiAgICAgIGNhc2UgJ2RhdGUnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0RGF0ZSgpOwogICAgICBjYXNlICd0aW1lJzoKICAgICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dFRpbWUoKTsKICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0Q2hlY2tib3goKTsKICAgICAgY2FzZSAncGFzc3dvcmQnOgogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0UGFzc3dvcmQoKTsKICAgICAgY2FzZSAnZmlsZSc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXRGaWxlKCk7CiAgICAgIGNhc2UgJ3N0YXRpYyc6CiAgICAgICAgcmV0dXJuIG5ldyBDTVNGb3JtSW5wdXQoKTsKICAgICAgZGVmYXVsdDoKICAgICAgICAkY2xhc3MgPSAnQ01TRm9ybUlucHV0JyAuICR0eXBlOwogICAgICAgIGlmKGNsYXNzX2V4aXN0cygkY2xhc3MpKQogICAgICAgIHJldHVybiBuZXcgJGNsYXNzKCk7CiAgICAgICAgJGNsYXNzID0gJ0NNU0Zvcm1JbnB1dCcgLiB1Y2ZpcnN0KCR0eXBlKTsKICAgICAgICBpZihjbGFzc19leGlzdHMoJGNsYXNzKSkKICAgICAgICByZXR1cm4gbmV3ICRjbGFzcygpOwogICAgICAgIHJldHVybiBuZXcgQ01TRm9ybUlucHV0KCk7CiAgICB9CiAgfQogIAogIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRXaWRnZXQoKQogIHsKICAgIGlmIChpc19vYmplY3QoJHRoaXMtPndpZGdldCkpCiAgICB7CiAgICAgIHJldHVybiAkdGhpcy0+d2lkZ2V0OwogICAgfQogICAgZWxzZQogICAgewogICAgICByZXR1cm4gbmV3IENNU0Zvcm1JbnB1dCgpOyAvLyBTb21ldGhpbmcgd2hlbnQgd3JvbmcgZHVyaW5nIGluaXQgVE9ETzpGSVgKICAgIH0KICB9CiAgCiAgCiAgLy8gT0xEIFdBWSAqKioqKioqKioqKioqKioqKgogIAogIC8vIFNldHRpbmdzCiAgcHJvdGVjdGVkICRpZDsgLy8gVGhlIGZvcm0gSUQKICBwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwogIHByb3RlY3RlZCAkbmFtZTsgLy8gVGhlIGlucHV0IG5hbWUKICBwcm90ZWN0ZWQgJHR5cGU7CiAgcHJvdGVjdGVkICRpbnB1dDsKICBwcm90ZWN0ZWQgJHZhbHVlcyA9IGFycmF5KCk7CiAgcHJvdGVjdGVkICRzZXR0aW5ncyA9IGFycmF5KCk7CiAgcHJvdGVjdGVkICRmb3JtX2Vycm9yczsKICBwcm90ZWN0ZWQgJHNob3dfcHJpb3JpdHkgPSBmYWxzZTsKLy8gIHByb3RlY3RlZCAkdmFsaWRhdGlvbnMgPSBhcnJheSgpOwogIHByb3RlY3RlZCAkc2hvd25lZCA9IGZhbHNlOwogIHByb3RlY3RlZCAkZm9ybTsKICAKICBwcm90ZWN0ZWQgJGlzX3ZhbGlkID0gdHJ1ZTsKICBwcm90ZWN0ZWQgJHRlbXBsYXRlID0gJyVJTlBVVCUnOwogIAoKICAgIAogIHB1YmxpYyBzdGF0aWMgJGNvdW50cmllcyA9IGFycmF5KCk7IC8vREVQUkVDQVRFRCBDTVNGb3JtSW5wdXRDb3VudHJpZXM6OiRjb3VudHJpZXM7CiAgCgogIAogIC8vIFNFVFVQCiAgcHVibGljIGZ1bmN0aW9uIGhpZGUoKSAgewogICAgCiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFNldHRpbmcoJ2xhYmVsJywnJyk7CiAgICAKICAgICR3aWRnZXQgPSBuZXcgQ01TRm9ybUlucHV0SGlkZGVuKCk7CiAgICAkd2lkZ2V0LT5zZXR1cCgKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5pZCwKICAgICAgICAgICAgJHRoaXMtPmdldFdpZGdldCgpLT5uYW1lLAogICAgICAgICAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPmZvcm0sCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+bW9kdWxlX25hbWUsCiAgICAgICAgICAgICR0aGlzLT5nZXRXaWRnZXQoKS0+c2V0dGluZ3MKICAgICAgICAgICkKICAgICAgICAgIC0+aW5pdCgpCiAgICAgICAgICAtPnNldFZhbHVlcygkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlcygpKTsKICAgICR0aGlzLT53aWRnZXQgPSAkd2lkZ2V0OwogIH0KCiAgLy8gRklMTAoKICAKICAvKiBDSEVDSyBHVEQgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGluaXQoKSB7CiAgICAkdGhpcy0+aW5pdFZhbHVlcygpOwogIH0KICAKICAvKiBHVEQgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gaW5pdFZhbHVlcygpIHsgIAogICAgICAKICAgICAgc3dpdGNoKCR0aGlzLT50eXBlKQogICAgICB7CiAgICAgICAgY2FzZSAnY2hlY2tib3gnOgogICAgICAgICAgaWYoCiAgICAgICAgICAgICFpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSkKICAgICAgICAgICAgJiYKICAgICAgICAgICAgKAogICAgICAgICAgICAgIGlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJ3N1Ym1pdCddKQogICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAgaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkKICAgICAgICAgICAgKQoKICAgICAgICAgICkKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gQ2FzZSB3aGVuIGNoZWNrYm94IGlzIHVuY2hlY2tlZCBhbmQgZm9ybSBpcyBzdWJtaXR0ZWQsIHdlIHNob3VsZCBlbXB0eSB0aGUgdmFsdWUKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygpOyAgICAgICAgICAgIAogICAgICAgICAgfQogICAgICAgICAgYnJlYWs7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkX1JFUVVFU1RbJHRoaXMtPmlkLiR0aGlzLT5uYW1lXSkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAkdGhpcy0+c2V0VmFsdWVzKCRfUkVRVUVTVFskdGhpcy0+aWQuJHRoaXMtPm5hbWVdKTsKICAgICAgICAgICAgfSAKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcyhodG1sX2VudGl0eV9kZWNvZGUoJF9SRVFVRVNUWyR0aGlzLT5pZC4kdGhpcy0+bmFtZV0pKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgICAgZWxzZWlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sndmFsdWUnXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPnNldHRpbmdzWyd2YWx1ZSddKTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2VpZigKICAgICAgICAgICAgaXNzZXQoJHRoaXMtPnNldHRpbmdzWydvYmplY3QnXSkgJiYgIWlzc2V0KCRfUkVRVUVTVFskdGhpcy0+aWQuJ3N1Ym1pdCddKSAmJiAhaXNzZXQoJF9SRVFVRVNUWyR0aGlzLT5pZC4nYXBwbHknXSkpCiAgICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoJHRoaXMtPmZldGNoVmFsdWVzKCkpOwogICAgICAgICAgfQogICAgICAgICAgZWxzZWlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSAmJiBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJHRoaXMtPm1vZHVsZV9uYW1lKS0+Z2V0UHJlZmVyZW5jZSgkdGhpcy0+c2V0dGluZ3NbJ3ByZWZlcmVuY2UnXSkgIT0gJycpCiAgICAgICAgICB7CiAgICAgICAgICAgICR0aGlzLT5zZXRWYWx1ZXMoY21zX3V0aWxzOjpnZXRfbW9kdWxlKCR0aGlzLT5tb2R1bGVfbmFtZSktPmdldFByZWZlcmVuY2UoJHRoaXMtPnNldHRpbmdzWydwcmVmZXJlbmNlJ10pKTsKICAgICAgICAgICAgLy8kdGhpcy0+c2V0VmFsdWVzKGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5nZXRQcmVmZXJlbmNlKCR0aGlzLT5zZXR0aW5nc1sncHJlZmVyZW5jZSddKSk7CiAgICAgICAgICB9CgogICAgICAgICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydkZWZhdWx0X3ZhbHVlJ10pICYmICEkdGhpcy0+Zm9ybS0+aXNQb3N0ZWQoKSkgCiAgICAgICAgICB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNFbXB0eSgpKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlcygkdGhpcy0+c2V0dGluZ3NbJ2RlZmF1bHRfdmFsdWUnXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICAgIAogICAgICAgICAgYnJlYWs7CiAgICAgIH0KICB9CgogIC8qIEdURCAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBmZXRjaFZhbHVlcygpICB7CiAgICAgIGlmKGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10pICYmIGlzX29iamVjdCgkdGhpcy0+c2V0dGluZ3NbJ29iamVjdCddKSkKICAgICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXSkpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPnskdGhpcy0+c2V0dGluZ3NbJ2dldF9tZXRob2QnXX0oKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICRuYW1lID0gaXNzZXQoJHRoaXMtPnNldHRpbmdzWydmaWVsZF9uYW1lJ10pPyR0aGlzLT5zZXR0aW5nc1snZmllbGRfbmFtZSddOiR0aGlzLT5uYW1lOwogICAgCiAgICAgICAgICBpZihtZXRob2RfZXhpc3RzKCR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10sICdnZXQnKSkKICAgICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPmdldCgkbmFtZSk7CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlCiAgICAgICAgICB7CiAgICAgICAgICAgICAgdHJ5CiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zZXR0aW5nc1snb2JqZWN0J10tPiRuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gJGUpCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgIC8vICBkaWUoJ3VuYWJsZSB0byBkbycpOyAvLyBUT0RPOiBUcmVhdGggZXJyb3IKICAgICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSAgICAgIAogICAgICB9CiAgfQogIAogIC8vIExJTktFRCBUTyBXSURHRVRTICAKICAKCiAgCiAgcHVibGljIGZ1bmN0aW9uIHNob3coJHRlbXBsYXRlID0gbnVsbCwgJGZvcmNlID0gZmFsc2UpICB7CiAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNob3coJHRlbXBsYXRlLCRmb3JjZSk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPl9fdG9TdHJpbmcoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldExhYmVsKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldExhYmVsKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRMYWJlbFRhZygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldExhYmVsVGFnKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRUaXBzKCkgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VGlwcygpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gcmVmcmVzaCgpIHsKICAgIC8vIFRPRE86IENoZWNrIGNvbnNlcXVlbmNlcwogICAgJHRoaXMtPmdldFdpZGdldCgpLT5pbml0KCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldE5hbWUoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFNldHRpbmcoJHNldHRpbmcsICRkZWZhdWx0X3ZhbHVlID0gbnVsbCkgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0U2V0dGluZygkc2V0dGluZywgJGRlZmF1bHRfdmFsdWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0U2V0dGluZygkc2V0dGluZywgJHZhbHVlKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRTZXR0aW5nKCRzZXR0aW5nLCAkdmFsdWUpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gZ2V0Rm9ybSgpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZvcm0oKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldEZyaWVuZGx5TmFtZSgpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEZyaWVuZGx5TmFtZSgpOwogIH0KICAgIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnB1dCgpICB7ICAKICAgIGlmICghZW1wdHkoJHRoaXMtPmlucHV0KSkKICAgIHsKICAgICAgcmV0dXJuICR0aGlzLT5pbnB1dDsKICAgIH0KICAgIAogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0SW5wdXQoKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0VGV4dCgpIAogIHsKICAgICRpbnB1dCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgkdGhpcy0+bW9kdWxlX25hbWUpLT5DcmVhdGVJbnB1dFRleHQoJHRoaXMtPmlkLCAkdGhpcy0+bmFtZSwgJHRoaXMtPmdldFZhbHVlKCksIGlzc2V0KCR0aGlzLT5zZXR0aW5nc1snc2l6ZSddKT8kdGhpcy0+c2V0dGluZ3NbJ3NpemUnXTo4MCwgaXNzZXQoJHRoaXMtPnNldHRpbmdzWydtYXhsZW5ndGgnXSk/JHRoaXMtPnNldHRpbmdzWydtYXhsZW5ndGgnXToyNTUpOwogICAgIAogICAgaWYoaXNzZXQoJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXSkpCiAgICB7CiAgICAgIC8vIE92ZXJsb2FkIHRoaXMgIiMjQCHCpyQjIiBjbGFzcyBzeXN0ZW0KICAgICAgLy8gSW4gZnJlbmNoIGluIHRoZSB0ZXh0OiBOb20gZGUgRGlldSBkZSBwdXRhaW4gZGUgYm9yZGVsIGRlIG1lcmRlIGRlIHNhbG9wZXJpZSBkZSBjb25uYXJkIGQnZW5jdWzDqSBkZSB0YSBtw6hyZQogICAgICAvLyAoaHR0cDovL3d3dy5pbWRiLmNvbS90aXRsZS90dDAyMzQyMTUvdHJpdmlhP3RhYj10ciZpdGVtPXRyMDc1MjM4MikKICAgICAgLy8gKFNvcnJ5IGZvciBwcnVkZSBlYXJzLCB0aGlzIGlzIGp1c3QgYSBjb21tZW50IGluIGEgc291cmNlIGNvZGUuLi4pCiAgICAgICRpbnB1dCA9IHN0cl9yZXBsYWNlKCdjbGFzcz0iY21zX3RleHRmaWVsZCInLCAnY2xhc3M9IicuJHRoaXMtPnNldHRpbmdzWydjbGFzc25hbWUnXS4nIicsICRpbnB1dCk7CiAgICB9CiAgICAKICAgIHJldHVybiAkaW5wdXQ7CiAgfQoKICAvLyBQUk9DRVNTCiAgCiAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoJHNhdmUgPSB0cnVlKSB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnByb2Nlc3MoJHNhdmUpOwogIH0KICAKICAvLyBWQUxJREFUSU9OCiAgCiAgcHVibGljIGZ1bmN0aW9uIGlzVmFsaWQoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5pc1ZhbGlkKCk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyA9IGFycmF5KCkpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGFkZFZhbGlkYXRvcigkdmFsaWRhdG9yLCAkcGFyYW1zID0gYXJyYXkoKSkgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5hZGRWYWxpZGF0b3IoJHZhbGlkYXRvciwgJHBhcmFtcyk7CiAgfQogIAogIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcikgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5yZW1vdmVWYWxpZGF0b3IoJHZhbGlkYXRvcik7CiAgfQogIAogIC8vIEFDQ0VTUwogIAogIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpICB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5nZXRWYWx1ZSgpOyAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIHNldFZhbHVlKCR2YWx1ZSwgJGtleSA9IDApICB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldFZhbHVlKCR2YWx1ZSwka2V5KTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5yZW1vdmVWYWx1ZUlmRXF1YWwoJHZhbHVlKTsKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlcygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFZhbHVlcygpOwogIH0KICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWVzKCR2YWx1ZXMgPSBhcnJheSgpKSAgewogICAgJHRoaXMtPmdldFdpZGdldCgpLT5zZXRWYWx1ZXMoJHZhbHVlcyk7ICAKICB9ICAKICAKICBwdWJsaWMgZnVuY3Rpb24gc2V0RGVmYXVsdFZhbHVlcygkdmFsdWVzKSB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldERlZmF1bHRWYWx1ZXMoJHZhbHVlcyk7CiAgfQogICAgCiAgcHVibGljIGZ1bmN0aW9uIGlzRW1wdHkoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5pc0VtcHR5KCk7CiAgfQogICAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmluZ1ZhbHVlKCkgIHsKICAgIC8vREVQUkVDQVRFRAogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZXNUb1N0cmluZygpIHsKICAgIC8vIERFUFJFQ0FURUQKICAgIHJldHVybiAoc3RyaW5nKSR0aGlzLT5nZXRXaWRnZXQoKS0+Z2V0VmFsdWUoKTsKICB9CiAgCiAgLy8gcHVibGljIGZ1bmN0aW9uIGlzRW1wdHlWYWx1ZXMoKSB7CiAgLy8gICAvL0RFUFJFQ0FURUQKICAvLyAgIAogIC8vICAgaWYgKGlzX2FycmF5KCR0aGlzLT52YWx1ZXMpKQogIC8vICAgewogIC8vICAgICByZXR1cm4gJHRoaXMtPmlzRW1wdHkoKTsKICAvLyAgIH0KICAvLyAgIGVsc2VpZihlbXB0eSgkdGhpcy0+dmFsdWVzKSkKICAvLyAgIHsKICAvLyAgICAgcmV0dXJuIHRydWU7CiAgLy8gICB9CiAgLy8gICByZXR1cm4gZmFsc2U7CiAgLy8gfQogIAogIC8vIERJVkVSUwogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RmllbGRzTGlzdCgpICB7CiAgICAkbGlzdCA9IGFycmF5KCk7CiAgICBmb3JlYWNoKHNlbGY6OiRmaWVsZHMgYXMgJHR5cGUgPT4gJGZpZWxkKQogICAgewogICAgICAkbGlzdFskdHlwZV0gPSAkZmllbGRbJ3RpdGxlJ107CiAgICB9CiAgICByZXR1cm4gJGxpc3Q7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWRvVHlwZSgkdHlwZSkgIHsKICAgIGlmIChpc3NldChzZWxmOjokZmllbGRzWyR0eXBlXVsnYWRvJ10pKQogICAgewogICAgICByZXR1cm4gc2VsZjo6JGZpZWxkc1skdHlwZV1bJ2FkbyddOwogICAgfQogICAgZWxzZQogICAgewogICAgICByZXR1cm4gJ0MoMjU1KSc7IC8vIEJldHRlciB0aGFuIG5vdGhpbmcuLi4KICAgIH0KICB9CiAgICAgICAgCiAgLy8gVG9vbHMgKERFUFJFQ0FURUQgPT0+IFNFRSBDTEFTU0VTKQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0UGFnZXNMaXN0KCRpZCwkbmFtZSwkdmFsdWUsJHNldHRpbmdzID0gYXJyYXkoKSkgewogICAgCiAgICAkcGFnZXMgPSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXRBbGxDb250ZW50KCk7CiAgICAkYXJyYXkgPSBhcnJheSgpOwogICAgCiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydjaGlsZHJlbm9mJ10pKQogICAgewogICAgICAkY2hpbGRyZW5vZiA9IHNlbGY6OmdldFBhZ2VJZCgkc2V0dGluZ3NbJ2NoaWxkcmVub2YnXSk7CiAgICB9CiAgCiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydzdGFydF9wYWdlJ10pKQogICAgewogICAgICAkc3RhcnRfcGFnZSA9IHNlbGY6OmdldFBhZ2VJZCgkc2V0dGluZ3NbJ3N0YXJ0X3BhZ2UnXSk7CiAgICB9CiAgICAKICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgewogICAgICBpZiAoCiAgICAgICAgKCFpc3NldCgkc3RhcnRfcGFnZSkgJiYgIWlzc2V0KCRjaGlsZHJlbm9mKSkgCiAgICAgICAgfHwKICAgICAgICAoaXNzZXQoJGNoaWxkcmVub2YpICYmICgkcGFnZS0+UGFyZW50SWQoKSA9PSAkY2hpbGRyZW5vZikpIC8vIExpc3Qgb2YgYWxsIGNoaWxkcmVucwogICAgICAgIHx8CiAgICAgICAgKGlzc2V0KCRzdGFydF9wYWdlKSAmJiAoc3RycG9zKCRwYWdlLT5JZEhpZXJhcmNoeSgpLCAkc3RhcnRfcGFnZS4nLicpID09PSAwKSkgLy8gTGlzdCBvZiBhbGwgZGVzY2VuZGFudHMKICAgICAgICApCiAgICAgIHsKICAgICAgICAkYXJyYXlbJHBhZ2UtPklkKCldID0gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpOwogICAgICB9CiAgICAgIAogICAgfQogICAgICAgIAogICAgcmV0dXJuICRhcnJheTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQYWdlSWQoJGFsaWFzKSAgewogICAgJG1hbmFnZXIgPSBjbXNtcygpLT5HZXRIaWVyYXJjaHlNYW5hZ2VyKCk7CiAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJGFsaWFzKTsKICAgIGlmICgkbm9kZSkgewogICAgICAgICRjb250ZW50ID0gJG5vZGUtPkdldENvbnRlbnQoKTsKICAgICAgICBpZiAoJGNvbnRlbnQpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQtPklkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJGFsaWFzKTsKICAgICAgICBpZiAoJG5vZGUpIHsKICAgICAgICAgIHJldHVybiAkYWxpYXM7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIG51bGw7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUGFnZVNlbGVjdCgkaWQsJG5hbWUsJHZhbHVlLCRzZXR0aW5ncyA9IGFycmF5KCkpIHsKICAgICRwYWdlcyA9IGNtc21zKCktPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldEFsbENvbnRlbnQoKTsKICAgIAogICAgJGh0bWwgPSAnPHNlbGVjdCBuYW1lPSInLiRpZC4kbmFtZS4nIj48b3B0aW9uPicuY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDTVNGb3JtcycpLT5sYW5nKCdzZWxlY3Qgb25lJykuJzwvb3B0aW9uPic7CiAgICAKICAgIGZvcmVhY2goJHBhZ2VzIGFzICRwYWdlKQogICAgewogICAgICAkaHRtbCAuPSAnPG9wdGlvbiB2YWx1ZT0iJyAuICRwYWdlLT5JZCgpIC4gJyInOwogICAgICAKICAgICAgaWYoJHZhbHVlID09ICRwYWdlLT5JZCgpKQogICAgICB7CiAgICAgICAgJGh0bWwgLj0gJyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzsKICAgICAgfSAgICAgIAogICAgICAKICAgICAgJGh0bWwgLj0gJz4nIC4gJHBhZ2UtPkhpZXJhcmNoeSgpLicuIC0gJy4kcGFnZS0+TmFtZSgpIC4gJzwvb3B0aW9uPic7CiAgICB9CiAgICAKICAgICRodG1sIC49ICc8L3NlbGVjdD4nOyAgICAKICAgIAogICAgcmV0dXJuICRodG1sOwogIH0KICAgIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRGF0ZVNlbGVjdCgkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpICB7CiAgICBpZiAoY291bnQoJHZhbHVlcykgPT0gMSkKICAgIHsKICAgICAgaWYgKHN0cnBvcygkdmFsdWVzWzBdLCAnLScpICE9PSBmYWxzZSkgJHZhbHVlcyA9IGV4cGxvZGUoJy0nLCR2YWx1ZXNbMF0pOwogICAgfQogICAgJHN0YXJ0X3llYXIgPSBpc3NldCgkc2V0dGluZ3NbJ3N0YXJ0X3llYXInXSk/JHNldHRpbmdzWydzdGFydF95ZWFyJ106ZGF0ZSgnWScpOwogICAgJG51bWJlcl95ZWFycyA9IGlzc2V0KCRzZXR0aW5nc1snbnVtYmVyX3llYXJzJ10pPyRzZXR0aW5nc1snbnVtYmVyX3llYXJzJ106MjA7CiAgICAkZW5kX3llYXIgPSAkc3RhcnRfeWVhciArICRudW1iZXJfeWVhcnM7CiAgICAKICAgICR5ZWFyID0gc2VsZjo6Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KCRpZCwkbmFtZS4nWzBdJyxzZWxmOjpDcmVhdGVOdW1iZXJMaXN0KCRlbmRfeWVhciwkc3RhcnRfeWVhciksYXJyYXkoJHZhbHVlc1swXSksMSwnJyxmYWxzZSk7CiAgICAkbW9udGggPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMV0nLHNlbGY6OkNyZWF0ZU1vbnRoc0xpc3QoKSxhcnJheSgkdmFsdWVzWzFdKSwxLCcnLGZhbHNlKTsKICAgICRkYXkgPSBzZWxmOjpDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCRuYW1lLidbMl0nLHNlbGY6OkNyZWF0ZU51bWJlckxpc3QoMzEsMSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICBpZiAoaXNzZXQoJHNldHRpbmdzWydldXJvcGVhbl9kYXRlJ10pKQogICAgewogICAgICByZXR1cm4gJGRheSAuICRtb250aCAuICR5ZWFyOwogICAgfQogICAgcmV0dXJuICR5ZWFyIC4gJG1vbnRoIC4gJGRheTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVUaW1lU2VsZWN0KCRpZCwkbmFtZSwkdmFsdWVzKSAgewogICAgaWYgKGNvdW50KCR2YWx1ZXMpID09IDEpCiAgICB7CiAgICAgIGlmIChzdHJwb3MoJHZhbHVlc1swXSwgJzonKSAhPT0gZmFsc2UpICR2YWx1ZXMgPSBleHBsb2RlKCc6JywkdmFsdWVzWzBdKTsKICAgIH0KICAgICRob3VycyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1swXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCgyMyksYXJyYXkoJHZhbHVlc1swXSksMSwnJyxmYWxzZSk7CiAgICAkbWludXRlcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1sxXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1sxXSksMSwnJyxmYWxzZSk7CiAgICAkc2Vjb25kcyA9IHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsJG5hbWUuJ1syXScsc2VsZjo6Q3JlYXRlTnVtYmVyTGlzdCg1OSksYXJyYXkoJHZhbHVlc1syXSksMSwnJyxmYWxzZSk7CiAgICByZXR1cm4gJGhvdXJzIC4gJyA6ICcgLiAkbWludXRlcyAuICcgOiAnIC4gJHNlY29uZHM7CiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZU1vbnRoc0xpc3QoKSB7CiAgICAkbW9udGhzID0gYXJyYXkoKTsKICAgIGZvciAoJGkgPSAxOyAkaSA8PSAxMjsgKyskaSkgewogICAgICAkdCA9IG1rdGltZSgwLCAwLCAwLCAkaSwgMSwgMjAwMCk7CiAgICAgICRtb250aHNbJGldID0gZGF0ZSgnTScsICR0KTsKICAgIH0KICAgIHJldHVybiAkbW9udGhzOwogIH0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVOdW1iZXJMaXN0KCRlbmQsICRzdGFydD0wKSB7CiAgICByZXR1cm4gQ01TRm9ybUlucHV0RGF0ZTo6Q3JlYXRlTnVtYmVyTGlzdCgkZW5kLCAkc3RhcnQpOwogICAgCiAgICAvLyBpZiAoKCRlbmQgPCAwKXx8KCFpc19udW1lcmljKCRlbmQpKSkgJGVuZCA9IDE7CiAgICAvLyAkbGlzdCA9IGFycmF5KCk7CiAgICAvLyBmb3IgKCRpID0gJHN0YXJ0OyAkaSA8PSAkZW5kOyAkaSsrKQogICAgLy8gewogICAgLy8gICAkbGlzdFskaV0gPSAoc3RyaW5nKSRpOwogICAgLy8gfQogICAgLy8gcmV0dXJuICRsaXN0OwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUNvdW50cmllc1NlbGVjdG9yKCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncykgewogICAgcmV0dXJuIENNU0Zvcm1JbnB1dENvdW50cmllczo6Q3JlYXRlQ291bnRyaWVzU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIAogICAgLy8gJHNldHRpbmdzWyd2YWx1ZXMnXSA9IENNU0Zvcm1JbnB1dENvdW50cmllczo6JGNvdW50cmllczsKICAgIC8vIHJldHVybiBzZWxmOjpDcmVhdGVTZWxlY3RvcigkaWQsJG5hbWUsJHZhbHVlcywkc2V0dGluZ3MpOwogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZVNlbGVjdG9yKCRpZCwkbmFtZSwkdmFsdWVzLCRzZXR0aW5ncykgIHsKICAgIAogICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6Q3JlYXRlU2VsZWN0b3IoJGlkLCRuYW1lLCR2YWx1ZXMsJHNldHRpbmdzKTsKICAgIAogICAgLy8gREVQUkVDQVRFRAogICAgLy8gaWYoaXNzZXQoJHNldHRpbmdzWydleHBhbmRlZCddKSAmJiAkc2V0dGluZ3NbJ2V4cGFuZGVkJ10gPT0gdHJ1ZSkKICAgIC8vICAgIHsKICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsIGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKSwgJHZhbHVlcywgaXNzZXQoJHNldHRpbmdzWydhZGR0ZXh0J10pPyRzZXR0aW5nc1snYWRkdGV4dCddOicnLCBpc3NldCgkc2V0dGluZ3NbJ211bHRpcGxlJ10pP3RydWU6ZmFsc2UsICRzZXR0aW5ncyk7CiAgICAvLyAgICB9CiAgICAvLyAgICBlbHNlCiAgICAvLyAgICB7CiAgICAvLyAgICAgICRpdGVtcyA9IGlzc2V0KCRzZXR0aW5nc1sndmFsdWVzJ10pPyRzZXR0aW5nc1sndmFsdWVzJ106YXJyYXkoKTsKICAgIC8vICAgICAgaWYoaXNzZXQoJHNldHRpbmdzWydpbmNsdWRlX2N1c3RvbSddKSkKICAgIC8vICAgICAgewogICAgLy8gICAgICAgICRpdGVtcyA9IGFycmF5KCcnID0+ICRzZXR0aW5nc1snaW5jbHVkZV9jdXN0b20nXSkgKyAkaXRlbXM7CiAgICAvLyAgICAgIH0KICAgIC8vICAgICAgcmV0dXJuIHNlbGY6OkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICR2YWx1ZXMsIGlzc2V0KCRzZXR0aW5nc1snc2l6ZSddKT8kc2V0dGluZ3NbJ3NpemUnXToxLCAnJywgaXNzZXQoJHNldHRpbmdzWydtdWx0aXBsZSddKT90cnVlOmZhbHNlKTsKICAgIC8vICAgIH0KICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcz1hcnJheSgpLCAkc2l6ZT0zLCAkYWRkdHRleHQ9JycsICRtdWx0aXBsZSA9IHRydWUpIHsKICAgIAogICAgcmV0dXJuIENNU0Zvcm1JbnB1dFNlbGVjdDo6RGVwcmVjYXRlZENyZWF0ZUlucHV0U2VsZWN0TGlzdCgkaWQsICRuYW1lLCAkaXRlbXMsICRzZWxlY3RlZGl0ZW1zLCAkc2l6ZSwgJGFkZHR0ZXh0LCAkbXVsdGlwbGUpOwogIAogIH0KICAKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENyZWF0ZUlucHV0RXhwYW5kZWRMaXN0KCRpZCwgJG5hbWUsICRpdGVtcywgJHNlbGVjdGVkaXRlbXM9YXJyYXkoKSwgJGFkZHR0ZXh0PScnLCAkbXVsdGlwbGUgPSB0cnVlLCAkcGFyYW1zID0gYXJyYXkoKSkgewogICAgCiAgICByZXR1cm4gQ01TRm9ybUlucHV0U2VsZWN0OjpEZXByZWNhdGVkQ3JlYXRlSW5wdXRFeHBhbmRlZExpc3QoJGlkLCAkbmFtZSwgJGl0ZW1zLCAkc2VsZWN0ZWRpdGVtcywgJGFkZHR0ZXh0LCAkbXVsdGlwbGUsICRwYXJhbXMpOwogICAgICAKICB9CiAgCiAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZEZpZWxkKCkgIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldFVwbG9hZEZpZWxkKCk7CiAgfQogIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNJbWFnZSgkZmlsZW5hbWUpIHsKICAgICR2YWxpZF9leHRlbnNpb25zID0gYXJyYXkoJ2pwZWcnLCdqcGcnLCdnaWYnLCdwbmcnKTsKICAgIGlmIChpbl9hcnJheShzZWxmOjpnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSksJHZhbGlkX2V4dGVuc2lvbnMpKQogICAgewogICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlRXh0ZW5zaW9uKCRmaWxlbmFtZSkgIHsKICAgICRmaWxlID0gZXhwbG9kZSgnLicsICRmaWxlbmFtZSk7CiAgICAgIGlmIChjb3VudCgkZmlsZSkgPiAxKQogICAgICB7CiAgICAgICAgcmV0dXJuIHN0cnRvbG93ZXIoZW5kKCRmaWxlKSk7CiAgICAgIH0KICAgICAgZWxzZSAKICAgICAgewogICAgICAgIHJldHVybiBudWxsOwogICAgICB9CiAgfQoKICAvLyBFUlJPUlMKICAgIAogIHB1YmxpYyBmdW5jdGlvbiBoYXNFcnJvcnMoKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFdpZGdldCgpLT5oYXNFcnJvcnMoKTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBub0Vycm9yKCkgewogICAgcmV0dXJuICEkdGhpcy0+Z2V0V2lkZ2V0KCktPmhhc0Vycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpIHsKICAgIHJldHVybiAkdGhpcy0+Z2V0V2lkZ2V0KCktPmdldEVycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNob3dFcnJvcnMoKSAgewogICAgcmV0dXJuICR0aGlzLT5nZXRXaWRnZXQoKS0+c2hvd0Vycm9ycygpOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIHNldEVycm9yKCRtZXNzYWdlLCRwcmlvcml0eT0nZGVmYXVsdCcpICB7CiAgICAkdGhpcy0+Z2V0V2lkZ2V0KCktPnNldEVycm9yKCRtZXNzYWdlLCAkcHJpb3JpdHkpOwogIH0KCn0=]]></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+Z2V0SGVhZGVycygpfQoJCgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2PicpfQoJCgl7JGZvcm0tPnJlbmRlckZpZWxkc2V0cygnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+Cgk8L2Rpdj4nKX0KCQoJPHA+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPmdldEZvb3RlcnMoKX0Key9pZn0=]]></data>
	</file>
</module>
