<?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>Utilities</name>
	<version>1.2</version>
    <mincmsversion>2.0</mincmsversion>
	<help><![CDATA[DQo8aDMgbmFtZT0iIj5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+J1V0aWxpdGllcycgcHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLiBQcmV2aW91c2x5IHRoZXNlIHdlcmUgUGx1Z2lucyBvciBVRFRzLjwvcD48YnI+DQo8cD5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczo8L3A+DQo8dWw+DQogICA8bGk+Y29udGVudF90eXBlPC9saT4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnM8L2xpPg0KICAgPGxpPmdvb2dsZUZvbnRVcmw8L2xpPg0KICAgPGxpPmdhbGxlcnlDb3ZlcnM8L2xpPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXI8L2xpPg0KICAgPGxpPmNzc01pbmlmaWVyPC9saT4NCiAgIDxsaT50d2l0dGVyRmVlZDwvbGk+DQogICA8bGk+ZmFjZWJvb2tGZWVkPC9saT4NCiAgIDxsaT5nZXRDdXN0b21HUzwvbGk+DQogICA8bGk+YWRtaW5Vc2VyPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDI+VGFncyAvIFNtYXJ0eSBGdW5jdGlvbnM8L2gyPg0KDQo8aDM+Y29udGVudF90eXBlPC9oMz4NCjxwPntjb250ZW50X3R5cGUgdHlwZT0nc3RyaW5nX21pbWVfdHlwZSd9PC9wPg0KPHA+U2V0cyB0aGUgcmVxdWVzdCBjb250ZW50IHR5cGUgdG8gYSB2YWxpZCBtaW1lIHR5cGUuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dHlwZSAocmVxdWlyZWQpIC0gYSB2YWxpZCBtaW1lIHR5cGUuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+ZWRpdENvbnRlbnRUYWJzPC9oMz4NCjxwPntlZGl0Q29udGVudFRhYnMgLi4ufSBpcyBpbmNsdWRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFkbWluIHRlbXBsYXRlICdtb2R1bGVfY3VzdG9tXENNU0NvbnRlbnRNYW5hZ2VyXHRlbXBsYXRlc1xhZG1pbl9lZGl0Y29udGVudC50cGwnLiBFZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQgbW92ZSBzb21lIGZpZWxkcy48L3A+DQo8cD5JZGVhbGx5IHRoaXMgZnVuY3Rpb25hbGl0eSB3b3VsZCBiZSByZXBsYWNlZCBieSBDTVNNUyBjb3JlIGZ1bmN0aW9uYWxpdHkgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLjwvcD4NCjxwPlRvIGNoYW5nZSB0aGUgZGlzcGxheWVkIEFkbWluIGZpZWxkIHRpdGxlcywganVzdCB1c2UgdGhlIGNvcmUgYWRtaW5fY3VzdG9tIGZ1bmN0aW9uYWxpdHkuIEFkZCBhIGZpbGUgaW50byAvYXNzZXRzL2FkbWluX2N1c3RvbS9sYW5nL2VuX1VTLnBocCAob3Igc2ltaWxhciAtIEM8UzxTIHYyLjIrKSB0aGF0IGNoYW5nZXMgdGhlIGxhbmd1YWdlIHN0cmluZ3MgZnJvbSAvYWRtaW4vbGFuZy9lbl9VUy5waHAuPC9wPjxicj4NCjxwPlRpcDogaWYgbW92aW5nIGluZGl2aWR1YWwgZmllbGRzIGFkZCBvbmUgYXQgYSB0aW1lIHRvIHRoZSBtb3ZlX2ZpZWxkcyBwYXJhbWV0ZXIgYW5kIHNldCBkZWJ1Zz0xIC0gbWFrZXMgaXQgZWFzaWVyIHRvIHdvcmsgb3V0IHRoZSBuZXcgcG9zaXRpb25zITwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmRlYnVnIChvcHRpb25hbCkgLSBzZXQgZGVidWc9MSB0byB0dXJuIG9uIG91dHB1dCBvZiBDb250ZW50IE1hbmFnZXIgdGFicyBhbmQgZmllbGRzLCBiZWZvcmUgYW5kIGFmdGVyIGVkaXRDb250ZW50VGFicyBjaGFuZ2VzLiBKdXN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlZmluZSBjaGFuZ2VzLjwvbGk+DQogICA8bGk+bW92ZV90YWJfY29udGVudCAob3B0aW9uYWwpIC0gbW92ZXMgYWxsIGNvbnRlbnQgZnJvbSBvbmUgVGFiIHRvIGFub3RoZXIgVGFiLiBGb3JtYXQgaXMgbW92ZV90YWJfY29udGVudD0iZnJvbVRhYix0b1RhYnxmcm9tVGFiLHRvVGFiIiBlLmcuIG1vdmVfdGFiX2NvbnRlbnQ9IkxvZ2ljLE9wdGlvbnN8UGVybWlzc2lvbnMsT3B0aW9ucyIgPC9saT4NCiAgIDxsaT5tb3ZlX2ZpZWxkcyAob3B0aW9uYWwpIC0gbW92ZXMgYSBzaW5nbGUgZmllbGQgZnJvbSBvbmUgVGFiIC8gUG9zaXRpb24gdG8gYW5vdGhlciBUYWIgLyBQb3NpdGlvbi4gRm9ybWF0IGlzIG1vdmVfZmllbGRzPSJmcm9tVGFiLGZyb21Qb3NpdGlvbix0b1RhYix0b1Bvc2l0aW9ufGZyb21UYWIsZnJvbVBvc2l0aW9uLHRvVGFiLHRvUG9zaXRpb24iIGUuZy4gbW92ZV9maWVsZHM9Ik5hdmlnYXRpb24sMCxNYWluLDB8J05hdmlnYXRpb24nLDEsJ01haW4nLDEiIDwvbGk+DQogICA8bGk+cmVuYW1lX3RhYiAob3B0aW9uYWwpIC0ganVzdCByZW5hbWVzIG9uZSBvciBtb3JlIHRhYnMuIEZvcm1hdCByZW5hbWVfdGFiPSJmcm9tVGFiLHRvVGFifGZyb21UYWIsdG9UYWIiIGUuZy4gcmVuYW1lX3RhYj0iTmF2aWdhdGlvbixNZW51Ii4gWWVzIC0gSSBrbm93IHRoZXJlIGNhbiBiZSBhY2hpZXZlZCB0aHJvdWdoIHRoZSBtb2R1bGVfY3VzdG9tL2xhbmcgZmlsZXMgLSBpdCBqdXN0IHNlZW1lZCBtb3JlIGNvbnNpc3RlbnQgdG8gbWVzcyB3aXRoIHRhYnMvZmllbGRzIGFsbCBpbiB0aGUgb25lIHBsYWNlITwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmdvb2dsZUZvbnRVcmw8L2gzPg0KPHA+e2dvb2dsZUZvbnRVcmx9IHJldHVybnMgdGhlIGZ1bGwgdXJsIGZvciBpbmNsdWRpbmcgR29vZ2xlIEZvbnRzLCBlLmcuIGZvciB1c2UgaW4gVGlueU1DRSBqcyBmaWxlLjwvcD4NCjxwPmFjdHVhbCBmb250cyBhcmUgc2V0IGJ5IHRoZSBDdXN0b21HUyB2YXJpYWJsZSAnR29vZ2xlIEZvbnRzJy4gRW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoYXQgZmllbGQgaXMgYmxhbmsuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+Y3VzdG9tZ3NfZmllbGQgKG9wdGlvbmFsKSAtIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgQ3VzdG9tR1MgZmllbGQgdG8gdXNlIChkZWZhdWx0OiAnR29vZ2xlIEZvbnRzJykuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+Z2FsbGVyeUNvdmVyczwvaDM+DQo8cD5zZXRzICRnYWxsZXJ5Q292ZXJzIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvdmVyZmlsZSAmIGNvdmVycGF0aCBvZiB0aGUgZnVsbCBzaXplIGNvdmVyIGltYWdlcyBvZiB0aGUgZ2FsbGVyaWVzIGluICRkaXIgcGFyYW1ldGVyIChyZXF1aXJlZCk8L3A+DQo8cD50aGlzIGlzIHJlcXVpcmVkIGFzIGJ5IGRlZmF1bHQgdGhlIEdhbGxlcnkgbW9kdWxlIG9ubHkgcHJvdmlkZXMgYSBwcmUtcHJvY2Vzc2VkIHRodW1ibmFpbCBmb3IgYW55IGRpcmVjdG9yaWVzLCBub3QgYSB1cmwgdG8gdGhlIGZ1bGwgaW1hZ2UuIEFsc28gZG9lc24ndCBoYW5kbGUgYXV0by1yb3RhdGUgY29ycmVjdGx5LjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPiBkaXIgKHJlcXVpcmVkKSAtIEdhbGxlcnkgZGlyZWN0b3J5IDwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPnlvdVR1YmVQbGF5ZXI8L2gzPg0KPHA+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0nSnVyMUZPX25ZOTgnfSBpbWJlZHMgYSBZb3VUdWJlIHZpZGVvIHBsYXllciBpbiB0aGUgcGFnZS4gUmVxdWlyZXMgQm9vdHN0cmFwIENTUy48L3A+DQo8cD51c2VzICI/cmVsPTAmbW9kZXN0YnJhbmRpbmc9MSIgdG8gaGlkZSByZWxhdGVkIHZpZGVvcyBhdCBlbmQgYW5kIHNob3cgbWluaW1hbCBZb3VUdWJlIGJyYW5kaW5nPC9wPg0KPHA+aWZyYW1lIGlzIG5vdyBhbHdheXMgcmVzcG9uc2l2ZSAtIGhlaWdodCAmIHdpZHRoIHBhcmFtYXRlcnMgbm8gbG9uZ2VyIHN1cHBvcnRlZCAodjEuOCk8L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT52aWRlb2lkICAocmVxdWlyZWQpPC9saT4NCiAgIDxsaT5zdGFydCAgICAob3B0aW9uYWwpIC0gYmVnaW5zIHBsYXlpbmcgdGhlIHZpZGVvIGF0IHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdmlkZW88L2xpPg0KICAgPGxpPmNsYXNzICAgIChvcHRpb25hbCkgLSBhZGRpdGlvbmFsIGNsYXNzZXMgdG8gYmUgYWRkZWQgaW50byB0aGUgY2xhc3MgYXR0cmlidXRlPC9saT4NCiAgIDxsaT5hdXRvcGxheSAob3B0aW9uYWwpIC0gc2V0IHRvIDEgdG8gdHVybiBvbiBhdXRvcGxheTwvbGk+DQogICA8bGk+YXNwZWN0ICAgKG9wdGlvbmFsKSAtIHNwZWNpZnkgYXNwZWN0IHJhdGlvICcxNmJ5OScgKGRlZmF1bHQpIG9yICc0YnkzJzwvbGk+DQogICA8bGk+dGh1bWJuYWlsIChvcHRpb25hbCkgLSB1c2UgZWl0aGVyOiAnc21hbGwnLCAnbWVkaXVtJywgJ21heCcsIG9yIHRoZSB1cmwgb2YgYW4gaW1hZ2UgdG8gdXNlLjxicj4NCiAgICdzbWFsbCcgKDMyMHgxODBweCksICdtZWRpdW0nICg0ODB4MzYwcHgpIGFuZCAnbWF4JyAoMTkyMHgxMDgwcHgpIGFyZSBhbGwgWW91VHViZSBnZW5lcmF0ZWQgdGh1bWJuYWlscy4NCjwvdWw+DQo8cD5Ob3RlOiBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIHRlbXBsYXRlIGNvcHkgL1V0aWxpdGllcy90ZW1wbGF0ZXMveW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL3lvdVR1YmVQbGF5ZXJfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+Y3NzTWluaWZpZXI8L2gzPg0KPHA+VGhpcyBDTVNNUyBjc3NNaW5pZmllciBwbHVnaW4gbGV0cyBhIHVzZXIgY29udmVydCB0aGUgZGVmYXVsdCB7Y21zX3N0eWxlc2hlZXR9IGludG8gYSBtaW5pZmllZCBjc3MgZmlsZS48L3A+DQo8cD5UaGlzIGZ1bmN0aW9uIHRha2VzIGNzcyBhbmQgY29tcHJlc3NlcyBpdCwgcmVtb3ZpbmcgdW5uZWNjZXNzYXJ5IHdoaXRlc3BhY2UsIGNvbG9ucywgcmVtb3ZpbmcgdW5uZWNjZXNzYXJ5IHB4L2VtIGRlY2xhcmF0aW9ucyBldGMuPC9wPg0KPHA+UmVwbGFjZSB0aGUgZGVmYXVsdCB7Y21zX3N0eWxlc2hlZXR9IHRhZyB3aXRoOjxicj4NCiAgIDxjb2RlPntjc3NNaW5pZmllciBjc3M9IntjbXNfc3R5bGVzaGVldCBub2xpbmtzPXRydWV9In08L2NvZGU+PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+KHJlcXVpcmVkKSBjc3MgKHN0cmluZykgLSBjc3MgZmlsZW5hbWUgPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIG5vbWluaWZ5IChzdHJpbmcpIC0gaWYgc2V0IHRoZSB1bm1pbmlmaWVkIGNzcyBpcyBvdXRwdXQgKGZvciBkZWJ1Z2dpbmcpPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+dHdpdHRlckZlZWQ8L2gzPg0KPHA+b3V0cHV0cyBhIFR3aXR0ZXIgRmVlZCAoc2VlOiBodHRwczovL2Rldi50d2l0dGVyLmNvbS93ZWIvZW1iZWRkZWQtdGltZWxpbmVzIGZvciBkZXRhaWxzKS48L3A+DQo8cD5BZGQgdGhlIHRhZyB7dHdpdHRlckZlZWR9IGludG8gYSBXaWRnZXQgb3IgRm9vdGVyLCBldGMuIFVzZXMgQ3VzdG9tR1MuVHdpdHRlciBhcyBkZWZhdWx0IHNjcmVlbl9uYW1lIG9yIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzPC9wPg0KPHA+dGVzdCB3aXRoOiB7dHdpdHRlckZlZWQgc2NyZWVuX25hbWU9J05vMUZhcm1lckpha2UnIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIHRoZW1lPWRhcmsgbGlua19jb2xvcj0nI0FBQUE1MicgYm9yZGVyX2NvbG9yPXJlZCBjaHJvbWVfb3B0aW9ucz0nbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4ob3B0aW9uYWwpIHNjcmVlbl9uYW1lIChzdHJpbmcpIC0gdXNlcyBDdXN0b21HUy5Ud2l0dGVyIGFzIGRlZmF1bHQsIG9yIGUuZy4gJ05vMUZhcm1lckpha2UnPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIHdpZHRoIChpbnQpIC0gbGVhdmUgZW1wdHkgZm9yIHJlc3BvbnNpdmU8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgaGVpZ2h0IChpbnQpIC0gZGVmYXVsdCBpcyAzMDA8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgdGhlbWUgKHN0cmluZykgLSAnbGlnaHQnIChkZWZhdWx0KSBvciAnZGFyazwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBsaW5rX2NvbG9yIChzdHJpbmcpIC0gZS5nLiAnI0FBQUE1MicgPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGJvcmRlcl9jb2xvciAoc3RyaW5nKSAtIG9wdGlvbmFsIG9yIHNldCBpbiBDU1M8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgY2hyb21lX29wdGlvbnMgKHN0cmluZykgLSAxIG9yIG1vcmUgb2YgKHNwYWNlIHNlcGFyYXRlZCk6DQogICAgICAgICAgICAgICAgICAgICAgICAnbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyIHRyYW5zcGFyZW50JzwvbGk+DQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL3R3aXR0ZXJGZWVkX3RlbXBsYXRlLnRwbCBpbnRvIGFzc2V0cy9tb2R1bGVfY3VzdG9tL1V0aWxpdGllcy90ZW1wbGF0ZXMvdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+ZmFjZWJvb2tGZWVkPC9oMz4NCjxwPm91dHB1dHMgYSBGYWNlYm9vayBQYWdlIEZlZWQgKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3BsdWdpbnMvcGFnZS1wbHVnaW4vIGZvciBkZXRhaWxzKS48L3A+DQo8cD5BZGQgdGhlIHRhZyB7ZmFjZWJvb2tGZWVkfSBpbnRvIGEgV2lkZ2V0IG9yIEZvb3RlciwgZXRjLiBVc2VzIEN1c3RvbUdTLkZhY2Vib29rIGFzIGRlZmF1bHQgcGFnZUlkIG9yIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzPC9wPg0KPHA+dGVzdCB3aXRoOiB7ZmFjZWJvb2tGZWVkIHBhZ2VJZD0nTm8xRmFybWVySmFrZScgd2lkdGg9NTAwIGhlaWdodD01MDAgdGhlbWU9ZGFyayBsaW5rX2NvbG9yPScjQUFBQTUyJyBib3JkZXJfY29sb3I9cmVkIGNocm9tZV9vcHRpb25zPSdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXInfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPndpZHRoIChvcHRpb25hbCkgLSBUaGUgcGl4ZWwgd2lkdGggb2YgdGhlIHBsdWdpbi4gTWluLiBpcyAxODAgYW5kIE1heC4gaXMgNTAwPC9saT4NCiAgIDxsaT5oZWlnaHQgKG9wdGlvbmFsKSAtIFRoZSBwaXhlbCBoZWlnaHQgb2YgdGhlIHBsdWdpbi4gTWluLiBpcyA3MDwvbGk+DQogICA8bGk+aGlkZUNvdmVyIChvcHRpb25hbCkgLSBIaWRlIGNvdmVyIHBob3RvIGluIHRoZSBoZWFkZXI8L2xpPg0KICAgPGxpPnNob3dGYWNlcGlsZSAob3B0aW9uYWwpIC0gU2hvdyBwcm9maWxlIHBob3RvcyB3aGVuIGZyaWVuZHMgbGlrZSB0aGlzPC9saT4NCiAgIDxsaT5zaG93UG9zdHMgKG9wdGlvbmFsKSAtIFNob3cgcG9zdHMgZnJvbSB0aGUgUGFnZSdzIHRpbWVsaW5lPC9saT4NCiAgIDxsaT5oaWRlQ3RhIChvcHRpb25hbCkgLSBIaWRlIHRoZSBjdXN0b20gY2FsbCB0byBhY3Rpb24gYnV0dG9uIChpZiBhdmFpbGFibGUpPC9saT4NCiAgIDxsaT5zbWFsbEhlYWRlciAob3B0aW9uYWwpIC0gVXNlIHRoZSBzbWFsbCBoZWFkZXIgaW5zdGVhZDwvbGk+DQogICA8bGk+YWRhcHRDb250YWluZXJXaWR0aCAob3B0aW9uYWwpIC0gVHJ5IHRvIGZpdCBpbnNpZGUgdGhlIGNvbnRhaW5lciB3aWR0aCAtIHNlbWktcmVzcG9uc2l2ZTwvbGk+DQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwgYW5kIG1vZGlmeSB0aGF0IHZlcnNpb24uIChOb3QgY2hhbmdlZCBieSBtb2R1bGUgdXBncmFkZXMpLjwvcD4NCjxicj4NCg0KDQoNCjxoMz5nZXRDdXN0b21HUzwvaDM+DQo8cD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ3VzdG9tR1Mgc2V0dGluZy4gIFdpbGwgd29yayBpbiBhZG1pbiBwYWdlIHdoZW4gQ3VzdG9tR1MgaGFzbid0IGJlZW4gc2V0LCBlLmcuIGZvciBzZXR0aW5nIHRoZSBXaWRnZXQgc3R5bGVzIHRoZSBzYW1lIGFzIFNlY3Rpb24gc3R5bGVzLjwvcD4NCjxwPlVzYWdlIC0gIGFkZCB0aGUgdGFnOiB7Z2V0Q3VzdG9tR1MgY3VzdG9tZ3NfZmllbGQ9J3NldHRpbmcgbmFtZSd9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+Y3VzdG9tZ3NfZmllbGQgKHJlcXVpcmVkKSAtIFRoZSBuYW1lICh3aXRoIHNwYWNlcykgb2YgdGhlIEN1c3RvbUdTIGZpZWxkIHRvIHJldHVybiB0aGUgdmFsdWUgb2YuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+YWRtaW5Vc2VyPC9oMz4NCjxwPlRlc3RzIGluIHRoZSBmcm9udCBlbmQgdmlzaXRvciBpcyBhbHNvIGxvZ2dlZCBpbiB0byB0aGUgQ01TTVMgQWRtaW4uIFJldHVybnMgdHJ1ZSBvciBmYWxzZS48L3A+DQo8cD5Vc2FnZSAtICBhZGQgdGhlIHRhZzoge2lmIHthZG1pblVzZXJ9fVllcyAtIElTIEFETUlOIFVTRVJ7ZWxzZX1OTyAtIG5vdCBBZG1pbiBVc2Vyey9pZn08L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5yZWRpcmVjdCAob3B0aW9uYWwpIC0gbm90IHJlY29tbWVuZGVkIGluIG1vc3QgY2FzZXMuIElmIHNldCBhbmQgdmlzdG9yIG5vdCBsb2dnZWQgaW4sIHdpbGwgcmVkaXJlY3QgdG8gdGhlIGFkbWluIGxvZ2luIHBhZ2UuPC9saT4NCiAgIDxsaT5hc3NpZ24gKG9wdGlvbmFsKSAtIHdpbGwgYXNzaWduIHRoZSBib29sZWFuIHJlc3VsdCB0byB0aGUgZ2l2ZW4gdmFyaWFibGUgbmFtZTwvbGk+DQogICByZWRpcmVjdA0KPC91bD4NCjxicj4NCg0KDQoNCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwgbGljZW5jZSwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcyBpcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQpUaGUgbW9kdWxlIGF1dGhvciBpcyBub3Qgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlLiBIb3dldmVyIHlvdSBtaWdodCBnZXQgc3VwcG9ydCB0aHJvdWdoIHRoZSBmb2xsb3dpbmc6PC9wPg0KPHVsPg0KICAgPGxpPkZvciBzdXBwb3J0LCBmaXJzdCA8c3Ryb25nPnNlYXJjaDwvc3Ryb25nPiB0aGUgPGEgaHJlZj0iLy9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtPC9hPiwgZm9yIGlzc3VlcyB3aXRoIHRoZSBtb2R1bGUgc2ltaWxhciB0byB0aG9zZSB5b3UgYXJlIGZpbmRpbmcuPC9saT4NCiAgIDxsaT5UaGVuLCBpZiBuZWNlc3NhcnksIG9wZW4gYSA8c3Ryb25nPm5ldyBmb3J1bSB0b3BpYzwvc3Ryb25nPiB0byByZXF1ZXN0IGhlbHAsIHdpdGggYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0LjwvbGk+DQogICA8bGk+SWYgeW91IGZpbmQgYSBidWcgeW91IGNhbiA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0MjEiPnN1Ym1pdCBhIEJ1ZyBSZXBvcnQ8L2E+LjwvbGk+DQogICA8bGk+Rm9yIGFueSBnb29kIGlkZWFzIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9mZWF0dXJlX3JlcXVlc3QvbGlzdC8xNDIxIj5zdWJtaXQgYSBGZWF0dXJlIFJlcXVlc3Q8L2E+LjwvbGk+DQogICA8bGk+SWYgeW91IGZvdW5kIHRoZSBNb2R1bGUgdXNlZnVsIC0gc2hvdXQgb3V0IHRvIG1lIG9uIFR3aXR0ZXIgPGEgaHJlZj0iLy90d2l0dGVyLmNvbS9LaXdpQ2hyaXNCVCI+QEtpd2lDaHJpc0JUPC9hPjwvbGk+DQo8L3VsPjxicj4NCg0KDQo8aDM+Q29weXJpZ2h0ICZhbXA7IExpY2VuY2U8L2gzPg0KPHA+Q29weXJpZ2h0IMKpIDIwMTksIENocmlzIFRheWxvciA8Y2hyaXMgYXQgYmlubm92YXRpdmUgZG90IGNvIGRvdCB1az4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD48YnI+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHYzLiBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gWW91IG1heSBvbmx5IHVzZSB0aGlzIHNvZnR3YXJlIHdoZW4gdGhlcmUgaXMgYSBjbGVhciBhbmQgb2J2aW91cyBpbmRpY2F0aW9uIGluIHRoZSBhZG1pbiBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlITwvcD48YnI+DQo8YnI+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDaHJpcyBUYXlsb3IgJmx0O2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMjxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPg0KPGgzPlZlcnNpb24gMS4yIC0gMDJKdWwyMDwvaDM+DQo8dWw+DQogICA8bGk+YWRkZWQgYWRtaW5Vc2VyIHRhZzwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEuMSAtIDE3SnVuMTk8L2gzPg0KPHVsPg0KICAgPGxpPm1pbm9yIGJ1ZyBmaXggaW4gaGVscDwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjEgLSAxNE1hcjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5hZGRlZCBub21pbmlmeSBwYXJhbWV0ZXI8L2xpPg0KICAgPGxpPkV4dHJhIGhlbHAgbm90ZXMgZm9yIGVkaXRDb250ZW50VGFiczwvbGk+DQo8L3VsPg0KPGJyPg0KDQo8aDM+VmVyc2lvbiAxLjAgLSAxNkZlYjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5maXJzdCBwdWJsaWMgcmVsZWFzZTwvbGk+DQo8L3VsPg0KPGJyPg0KPGJyIC8+]]></about>
	<description><![CDATA[Provides a set of additional functions useful across many websites.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiAoICFkZWZpbmVkKCdDTVNfVkVSU0lPTicpICkgZXhpdDsNCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.cssMinifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGNzc01pbmlmaWVyKCRwYXJhbXMsICYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBiYXNlZCBvbiBQbHVnaW4gY3NzTWluaWZpZXIgdjEuMCwgYnkgTWFnYWwgSGV6aSBAYXV0aG9yIFN0ZWZmZW4gQmVja2VyDQovLw0KLy8gQ3JlZGl0cyBmb3Igc29tZSBvZiB0aGlzIGNvZGUgZ28gdG86DQovLyAgICAtIE1hZ2FsIEhlemkgQGF1dGhvciBTdGVmZmVuIEJlY2tlciAtIGNzc01pbmlmaWVyIHBsdWdpbg0KLy8gICAgLSBDaHJpc3RpYW4gU2NoYWVmZXI6IHR3aXR0ZXIuY29tL2RlclNjaGVwcCwgZ2l0aHViLmNvbS9TY2hlcHAvQ1NTLUpTLUJvb3N0ZXINCi8vDQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCiAgICRkYXRhX2ZpZWxkID0gaXNzZXQoJHBhcmFtc1snY3NzJ10pID8gJHBhcmFtc1snY3NzJ10gOiAnJzsNCiAgICRjc3NGaWxlcyA9IGV4cGxvZGUoIiwiLCAkZGF0YV9maWVsZCk7DQogICAkY3NzQ29udGVudHMgPSAnJzsNCiAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KICAgZm9yZWFjaCgkY3NzRmlsZXMgYXMgJGZpbGUpIHsNCiAgICAgICRmaWxlbmFtZSA9IGJhc2VuYW1lKCRmaWxlKTsNCg0KICAgICAgaWYgKCBpc3NldCgkcGFyYW1zWydub21pbmlmeSddKSApIHsNCiAgICAgICAgIGVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nL3RtcC9jYWNoZS8nLiRmaWxlbmFtZS4nIiAvPic7DQoNCiAgICAgIH0gZWxzZSB7IC8vIG1pbmlmeQ0KICAgICAgICAgJGNzc0NvbnRlbnRzID0gZmlsZV9nZXRfY29udGVudHMoJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy90bXAvY2FjaGUvJy4kZmlsZW5hbWUpOw0KICAgICAgICAgJG1pbkZpbGVQYXRoID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy90bXAvY2FjaGUvJzsNCiAgICAgICAgICRtaW5GaWxlTmFtZSA9ICdtaW5pZmllZF8nLiRmaWxlbmFtZTsNCiAgICAgICAgICRtaW5GaWxlRnVsbFBhdGggPSAkbWluRmlsZVBhdGguJG1pbkZpbGVOYW1lOw0KDQogICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRtaW5GaWxlRnVsbFBhdGgpKSB7DQogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkbWluRmlsZUZ1bGxQYXRoLCBtaW5pZnlDc3MoJGNzc0NvbnRlbnRzKSk7DQogICAgICAgICB9DQogICAgICAgICBlY2hvICc8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy90bXAvY2FjaGUvJy4kbWluRmlsZU5hbWUuJyIgLz4nOw0KICAgICAgfQ0KICAgfQ0KfQ0KDQoNCg0KZnVuY3Rpb24gbWluaWZ5Q3NzKCRjc3MpIHsNCiAgIC8vIHNvbWUgb2YgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gbWluaW1pemUgdGhlIGNzcy1vdXRwdXQgYXJlIGRpcmVjdGx5IHRha2VuDQogICAvLyBmcm9tIHRoZSBhd2Vzb21lIENTUyBKUyBCb29zdGVyOiBodHRwczovL2dpdGh1Yi5jb20vU2NoZXBwL0NTUy1KUy1Cb29zdGVyDQogICAvLyBhbGwgY3JlZGl0cyB0byBDaHJpc3RpYW4gU2NoYWVmZXI6IGh0dHA6Ly90d2l0dGVyLmNvbS9kZXJTY2hlcHANCg0KICAgLy8gcmVtb3ZlIGNvbW1lbnRzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCchL1wqW14qXSpcKisoW14vXVteKl0qXCorKSovIScsICcnLCAkY3NzKTsNCg0KICAgLy8gYmFja3VwIHZhbHVlcyB3aXRoaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMNCiAgIHByZWdfbWF0Y2hfYWxsKCcvKFwnW15cJ10qP1wnfCJbXiJdKj8iKS9pbXMnLCAkY3NzLCAkaGl0LCBQUkVHX1BBVFRFUk5fT1JERVIpOw0KICAgZm9yICgkaT0wOyAkaSA8IGNvdW50KCRoaXRbMV0pOyAkaSsrKSB7DQogICAgICAkY3NzID0gc3RyX3JlcGxhY2UoJGhpdFsxXVskaV0sICcjIyMjIyMjIyMjJyAuICRpIC4gJyMjIyMjIyMjIyMnLCAkY3NzKTsNCiAgIH0NCg0KICAgLy8gcmVtb3ZlIHRyYWxpbmcgc2VtaWNvbG9uIG9mIHNlbGVjdG9yJ3MgbGFzdCBwcm9wZXJ0eQ0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnLztbXHNcclxuXHRdKj99W1xzXHJcblx0XSovaW1zJywgIn1cclxuIiwgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2UgYmV0d2VlbiBzZW1pY29sb24gYW5kIHByb3BlcnR5LW5hbWUNCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy87W1xzXHJcblx0XSo/KFtcclxuXT9bXlxzXHJcblx0XSkvaW1zJywgJzskMScsICRjc3MpOw0KICAgLy8gcmVtb3ZlIGFueSB3aGl0ZXNwYWNlIHN1cnJvdW5kaW5nIHByb3BlcnR5LWNvbG9uDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvW1xzXHJcblx0XSo6W1xzXHJcblx0XSo/KFteXHNcclxuXHRdKS9pbXMnLCAnOiQxJywgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2Ugc3Vycm91bmRpbmcgc2VsZWN0b3ItY29tbWENCiAgICRjc3MgPSBwcmVnX3JlcGxhY2UoJy9bXHNcclxuXHRdKixbXHNcclxuXHRdKj8oW15cc1xyXG5cdF0pL2ltcycsICcsJDEnLCAkY3NzKTsNCiAgIC8vIHJlbW92ZSBhbnkgd2hpdGVzcGFjZSBzdXJyb3VuZGluZyBvcGVuaW5nIHBhcmVudGhlc2lzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvW1xzXHJcblx0XSp7W1xzXHJcblx0XSo/KFteXHNcclxuXHRdKS9pbXMnLCAneyQxJywgJGNzcyk7DQogICAvLyByZW1vdmUgYW55IHdoaXRlc3BhY2UgYmV0d2VlbiBudW1iZXJzIGFuZCB1bml0cw0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnLyhbXGRcLl0rKVtcc1xyXG5cdF0rKHB4fGVtfHB0fCUpL2ltcycsICckMSQyJywgJGNzcyk7DQogICAvLyBzaG9ydGVuIHplcm8tdmFsdWVzDQogICAkY3NzID0gcHJlZ19yZXBsYWNlKCcvKFteXGRcLl0wKShweHxlbXxwdHwlKS9pbXMnLCAnJDEnLCAkY3NzKTsNCiAgIC8vIGNvbnN0cmFpbiBtdWx0aXBsZSB3aGl0ZXNwYWNlcw0KICAgJGNzcyA9IHByZWdfcmVwbGFjZSgnL1xwe1pzfSsvaW1zJywnICcsICRjc3MpOw0KICAgLy8gcmVtb3ZlIG5ld2xpbmVzDQogICAkY3NzID0gc3RyX3JlcGxhY2UoYXJyYXkoIlxyXG4iLCAiXHIiLCAiXG4iKSwgJycsICRjc3MpOw0KDQogICAvLyBSZXN0b3JlIGJhY2t1cHBlZCB2YWx1ZXMgd2l0aGluIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzDQogICBmb3IgKCRpPTA7ICRpIDwgY291bnQoJGhpdFsxXSk7ICRpKyspIHsNCiAgICAgICRjc3MgPSBzdHJfcmVwbGFjZSgnIyMjIyMjIyMjIycgLiAkaSAuICcjIyMjIyMjIyMjJywgJGhpdFsxXVskaV0sICRjc3MpOw0KICAgfQ0KDQogICByZXR1cm4gJGNzczsNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.editContentTabs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGVkaXRDb250ZW50VGFicygkcGFyYW1zLCYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBlZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQNCi8vIG1vdmUgc29tZSBmaWVsZHMgdG8gb3RoZXIgdGFicw0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgJHRhYl9uYW1lcyA9ICRzbWFydHktPmdldF90ZW1wbGF0ZV92YXJzKCd0YWJfbmFtZXMnKTsNCiAgICR0YWJfY29udGVudHNfYXJyYXkgPSAkc21hcnR5LT5nZXRfdGVtcGxhdGVfdmFycygndGFiX2NvbnRlbnRzX2FycmF5Jyk7DQogICAkdGFiX2xvb2t1cCA9IGFycmF5X2ZsaXAoJHRhYl9uYW1lcyk7DQoNCiAgIGlmICggaXNzZXQoJHBhcmFtc1snZGVidWcnXSkgKSB7DQogICAgICBlY2hvICI8cHJlPmVkaXRDb250ZW50VGFicyAtIGRlYnVnIE9OIC0gYmVmb3JlIGNoYW5nZXMgXG5cbiI7DQogICAgICBlY2hvICJUYWJzICYgQ29udGVudCBhcmU6XG4iOw0KICAgICAgZm9yZWFjaCAoJHRhYl9jb250ZW50c19hcnJheSBhcyAkdGFia2V5ID0+ICR0YWIpIHsNCiAgICAgICAgIGVjaG8gIlRhYjogJyIuJHRhYl9uYW1lc1skdGFia2V5XS4iJ1xuIjsNCiAgICAgICAgIGZvcmVhY2ggKCR0YWIgYXMgJGNvbnRlbnRwb3MgPT4gJGNvbnRlbnQpIHsNCiAgICAgICAgICAgIGVjaG8gIiAgICBbJGNvbnRlbnRwb3NdICciLiRjb250ZW50WzBdLiInXG4iOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgZWNobyAiPC9wcmU+IjsNCiAgIH0NCg0KICAgLy8gbW92ZV90YWJfY29udGVudCAtIG1vdmVzIGFsbCBjb250ZW50IGZyb206IFRhYiB0bzogVGFiDQogICBpZiAoICFlbXB0eSgkcGFyYW1zWydtb3ZlX3RhYl9jb250ZW50J10pICkgew0KICAgICAgJG1vdmVUYWJzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ21vdmVfdGFiX2NvbnRlbnQnXSk7DQogICAgICBmb3JlYWNoICgkbW92ZVRhYnMgYXMgJG1vdmVUYWIpIHsNCiAgICAgICAgICR0bXAgPSBleHBsb2RlKCcsJywgdHJpbSgkbW92ZVRhYikgKTsNCiAgICAgICAgIGlmICggY291bnQoJHRtcCk9PTIgKSB7DQogICAgICAgICAgICAkZnJvbVRhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1RhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0YWJfY29udGVudHNfYXJyYXlbJHRvVGFiXSA9IGFycmF5X21lcmdlICggJHRhYl9jb250ZW50c19hcnJheVskdG9UYWJdLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXSApOw0KICAgICAgICAgICAgdW5zZXQoJHRhYl9uYW1lc1skZnJvbVRhYl0pOw0KICAgICAgICAgICAgdW5zZXQoJHRhYl9jb250ZW50c19hcnJheVskZnJvbVRhYl0pOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQoNCiAgIC8vIG1vdmVfZmllbGRzIC0gZnJvbTogVGFiIC8gUG9zaXRpb24gdG86IFRhYiAvIFBvc2l0aW9uDQogICBpZiAoICFlbXB0eSgkcGFyYW1zWydtb3ZlX2ZpZWxkcyddKSApIHsNCiAgICAgICRtb3ZlcyA9IGV4cGxvZGUoJ3wnLCAkcGFyYW1zWydtb3ZlX2ZpZWxkcyddKTsNCiAgICAgIGZvcmVhY2ggKCRtb3ZlcyBhcyAkbW92ZSkgew0KICAgICAgICAgJHRtcCA9IGV4cGxvZGUoJywnLCB0cmltKCRtb3ZlKSApOw0KICAgICAgICAgaWYgKCBjb3VudCgkdG1wKT09NCApIHsNCiAgICAgICAgICAgICRmcm9tVGFiID0gJHRhYl9sb29rdXBbdHJpbSh0cmltKCR0bXBbMF0sICciJyksICInIildOw0KICAgICAgICAgICAgJGZyb21Qb3MgPSB0cmltKHRyaW0oJHRtcFsxXSwgJyInKSwgIiciKTsNCiAgICAgICAgICAgICR0b1RhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzJdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1BvcyA9IHRyaW0odHJpbSgkdG1wWzNdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgLy8gbm93IG1vdmUgJiByZW1vdmUNCiAgICAgICAgICAgIGFycmF5X3NwbGljZSggJHRhYl9jb250ZW50c19hcnJheVskdG9UYWJdLCAkdG9Qb3MsIDAsDQogICAgICAgICAgICAgICBhcnJheSgkdGFiX2NvbnRlbnRzX2FycmF5WyRmcm9tVGFiXVskZnJvbVBvc10pICk7DQogICAgICAgICAgICB1bnNldCggJHRhYl9jb250ZW50c19hcnJheVskZnJvbVRhYl1bJGZyb21Qb3NdICk7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gcmVuYW1lX3RhYg0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1sncmVuYW1lX3RhYiddKSApIHsNCiAgICAgICRyZW5hbWVUYWJzID0gZXhwbG9kZSgnfCcsICRwYXJhbXNbJ3JlbmFtZV90YWInXSk7DQogICAgICBmb3JlYWNoICgkcmVuYW1lVGFicyBhcyAkcmVuYW1lVGFiKSB7DQogICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsIHRyaW0oJHJlbmFtZVRhYikgKTsNCiAgICAgICAgIGlmICggY291bnQoJHRtcCk9PTIgKSB7DQogICAgICAgICAgICAkZnJvbVRhYiA9ICR0YWJfbG9va3VwW3RyaW0odHJpbSgkdG1wWzBdLCAnIicpLCAiJyIpXTsNCiAgICAgICAgICAgICR0b1RhYiA9IHRyaW0odHJpbSgkdG1wWzFdLCAnIicpLCAiJyIpOw0KICAgICAgICAgICAgJHRhYl9uYW1lc1skZnJvbVRhYl0gPSAkdG9UYWI7DQogICAgICAgICB9DQogICAgICB9DQogICB9DQoNCg0KICAgLy8gaGlkZSB0YWJzIC0gYXV0b21hdGljYWxseSByZW1vdmUgYW55IGVtcHR5IHRhYnMNCiAgIGZvcmVhY2ggKCR0YWJfY29udGVudHNfYXJyYXkgYXMgJHRhYmtleSA9PiAkdGFiKSB7DQogICAgICBpZiAoIGVtcHR5KCR0YWIpICkgew0KICAgICAgICAgdW5zZXQoJHRhYl9uYW1lc1skdGFia2V5XSk7DQogICAgICAgICB1bnNldCgkdGFiX2NvbnRlbnRzX2FycmF5WyR0YWJrZXldKTsNCiAgICAgIH0NCiAgIH0NCg0KDQogICAvLyBzZXQgc21hcnR5IHZhcnMNCiAgICRzbWFydHktPmFzc2lnbigndGFiX25hbWVzJywgJHRhYl9uYW1lcyk7DQogICAkc21hcnR5LT5hc3NpZ24oJ3RhYl9jb250ZW50c19hcnJheScsICR0YWJfY29udGVudHNfYXJyYXkpOw0KDQoNCiAgIGlmICggaXNzZXQoJHBhcmFtc1snZGVidWcnXSkgKSB7DQogICAgICBlY2hvICI8cHJlPmVkaXRDb250ZW50VGFicyAtIGRlYnVnIE9OIC0gYWZ0ZXIgY2hhbmdlc1xuXG4iOw0KICAgICAgZWNobyAiVGFicyAmIENvbnRlbnQgYXJlOlxuIjsNCiAgICAgIGZvcmVhY2ggKCR0YWJfY29udGVudHNfYXJyYXkgYXMgJHRhYmtleSA9PiAkdGFiKSB7DQogICAgICAgICBlY2hvICJUYWI6ICciLiR0YWJfbmFtZXNbJHRhYmtleV0uIidcbiI7DQogICAgICAgICBmb3JlYWNoICgkdGFiIGFzICRjb250ZW50cG9zID0+ICRjb250ZW50KSB7DQogICAgICAgICAgICBlY2hvICIgICAgWyIuJGNvbnRlbnRwb3MuIl0gJyI7DQogICAgICAgICAgICAgICBwcmludF9yKCRjb250ZW50WzBdKTsNCiAgICAgICAgICAgIGVjaG8gIidcbiI7DQogICAgICAgICB9DQogICAgICB9DQogICAgICBlY2hvICI8L3ByZT4iOw0KICAgfQ0KfQ0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/function.facebookFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIGZhY2Vib29rRmVlZCgkcGFyYW1zLCAmJHNtYXJ0eSkgew0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gYmFzZWQgb24gR0NCIC0gdjEuMSAtIDAxRGVjMTUNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldCBkZWZhdWx0cw0KICAgJHdpZHRoID0gNTAwOyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBwbHVnaW4uIE1pbi4gaXMgMTgwIGFuZCBNYXguIGlzIDUwMA0KICAgJGhlaWdodCA9IDQwMDsgICAgICAgICAgICAgICAgICAgLy8gVGhlIHBpeGVsIGhlaWdodCBvZiB0aGUgcGx1Z2luLiBNaW4uIGlzIDcwDQogICAkaGlkZUNvdmVyID0gJ2ZhbHNlJzsgICAgICAgICAgICAvLyBIaWRlIGNvdmVyIHBob3RvIGluIHRoZSBoZWFkZXINCiAgICRzaG93RmFjZXBpbGUgPSAnZmFsc2UnOyAgICAgICAgIC8vIFNob3cgcHJvZmlsZSBwaG90b3Mgd2hlbiBmcmllbmRzIGxpa2UgdGhpcw0KICAgJHNob3dQb3N0cyA9ICd0cnVlJzsgICAgICAgICAgICAgLy8gU2hvdyBwb3N0cyBmcm9tIHRoZSBQYWdlJ3MgdGltZWxpbmUNCiAgICRoaWRlQ3RhID0gJ3RydWUnOyAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGN1c3RvbSBjYWxsIHRvIGFjdGlvbiBidXR0b24gKGlmIGF2YWlsYWJsZSkNCiAgICRzbWFsbEhlYWRlciA9ICd0cnVlJzsgICAgICAgICAgIC8vIFVzZSB0aGUgc21hbGwgaGVhZGVyIGluc3RlYWQNCiAgICRhZGFwdENvbnRhaW5lcldpZHRoID0gJ3RydWUnOyAgIC8vIFRyeSB0byBmaXQgaW5zaWRlIHRoZSBjb250YWluZXIgd2lkdGggLSBzZW1pLXJlc3BvbnNpdmUNCg0KDQogICAvLyBwYWdlSWQgKHJlcXVpcmVkKSBpcyBwYXJhbSBvciBDdXN0b21HUy5GYWNlYm9vayBpZiBzZXQNCiAgIGlmICggIWVtcHR5KCRwYXJhbXNbJ3BhZ2VJZCddKSApew0KICAgICAgJHBhZ2VJZCA9ICRwYXJhbXNbJ3BhZ2VJZCddOw0KICAgfSBlbHNlIHsNCiAgICAgICRDdXN0b21HUyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ3VzdG9tR1MnKTsNCiAgICAgIGlmKCBpc19vYmplY3QoJEN1c3RvbUdTKSApIHsNCiAgICAgICAgICRDdXN0b21HU19GYWNlYm9vayA9ICRDdXN0b21HUy0+R2V0RmllbGQoJ0ZhY2Vib29rJyk7DQogICAgICAgICBpZiAoICFlbXB0eSgkQ3VzdG9tR1NfRmFjZWJvb2tbJ3ZhbHVlJ10pICkgew0KICAgICAgICAgICAgJHBhZ2VJZCA9ICRDdXN0b21HU19GYWNlYm9va1sndmFsdWUnXTsNCiAgICAgICAgIH0NCiAgICAgIH0NCiAgIH0NCg0KICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQogICBpZiggaXNfb2JqZWN0KCRtb2QpICYmICFlbXB0eSgkcGFnZUlkKSApIHsNCiAgICAgIC8vIHVzZSBvdGhlciBwYXJhbXMgaWYgc2V0DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3dpZHRoJ10pKSAkd2lkdGggPSAkcGFyYW1zWyd3aWR0aCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydoZWlnaHQnXSkpICRoZWlnaHQgPSAkcGFyYW1zWydoZWlnaHQnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGlkZUNvdmVyJ10pKSAkaGlkZUNvdmVyID0gJHBhcmFtc1snaGlkZUNvdmVyJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3Nob3dGYWNlcGlsZSddKSkgJHNob3dGYWNlcGlsZSA9ICRwYXJhbXNbJ3Nob3dGYWNlcGlsZSddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydzaG93UG9zdHMnXSkpICRzaG93UG9zdHMgPSAkcGFyYW1zWydzaG93UG9zdHMnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGlkZUN0YSddKSkgJGhpZGVDdGEgPSAkcGFyYW1zWydoaWRlQ3RhJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3NtYWxsSGVhZGVyJ10pKSAkc21hbGxIZWFkZXIgPSAkcGFyYW1zWydzbWFsbEhlYWRlciddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydhZGFwdENvbnRhaW5lcldpZHRoJ10pKSAkYWRhcHRDb250YWluZXJXaWR0aCA9ICRwYXJhbXNbJ2FkYXB0Q29udGFpbmVyV2lkdGgnXTsNCg0KDQogICAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoICRtb2QtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgJHRwbC0+YXNzaWduKCdwYWdlSWQnLCAkcGFnZUlkKTsNCiAgICAgICR0cGwtPmFzc2lnbignd2lkdGgnLCAkd2lkdGgpOw0KICAgICAgJHRwbC0+YXNzaWduKCdoZWlnaHQnLCAkaGVpZ2h0KTsNCiAgICAgICR0cGwtPmFzc2lnbignaGlkZUNvdmVyJywgJGhpZGVDb3Zlcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ3Nob3dGYWNlcGlsZScsICRzaG93RmFjZXBpbGUpOw0KICAgICAgJHRwbC0+YXNzaWduKCdzaG93UG9zdHMnLCAkc2hvd1Bvc3RzKTsNCiAgICAgICR0cGwtPmFzc2lnbignaGlkZUN0YScsICRoaWRlQ3RhKTsNCiAgICAgICR0cGwtPmFzc2lnbignc21hbGxIZWFkZXInLCAkc21hbGxIZWFkZXIpOw0KICAgICAgJHRwbC0+YXNzaWduKCdhZGFwdENvbnRhaW5lcldpZHRoJywgJGFkYXB0Q29udGFpbmVyV2lkdGgpOw0KICAgICAgJHRwbC0+ZGlzcGxheSgpOw0KICAgfQ0KDQp9DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/function.twitterFeed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIHR3aXR0ZXJGZWVkKCRwYXJhbXMsICYkc21hcnR5KSB7DQovLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQovLyBiYXNlZCBvbiBHQ0IgdjEuMCAtIDA5SnVuMTYNCi8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIHNldCBkZWZhdWx0cw0KICAgJHR3aXR0ZXJXaWR0aCA9ICcnOyAgICAgICAgLy8gbGVhdmUgZW1wdHkgZm9yIHJlc3BvbnNpdmUNCiAgICR0d2l0dGVySGVpZ2h0ID0gMzAwOw0KICAgJHR3aXR0ZXJUaGVtZSA9ICdsaWdodCc7ICAgLy8gJ2xpZ2h0JyAoZGVmYXVsdCkgb3IgJ2RhcmsnDQogICAkdHdpdHRlckxpbmtDb2xvciA9ICcnOyAgICAvLyBlLmcuICcjQUFBQTUyJyBvcHRpb25hbA0KICAgJHR3aXR0ZXJCb3JkZXJDb2xvciA9ICcnOyAgLy8gb3B0aW9uYWwgb3Igc2V0IGluIENTUw0KICAgJHR3aXR0ZXJDaHJvbWVPcHRpb25zID0gJ25vZm9vdGVyIHRyYW5zcGFyZW50ICc7ICAgLy8gMSBvciBtb3JlIChzcGFjZSBzZXBhcmF0ZWQpICdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXIgdHJhbnNwYXJlbnQnDQoNCg0KICAgLy8gc2NyZWVuX25hbWUgKHJlcXVpcmVkKSBpcyBwYXJhbSBvciBDdXN0b21HUy5Ud2l0dGVyIGlmIHNldA0KICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snc2NyZWVuX25hbWUnXSkgKXsNCiAgICAgICR0d2l0dGVyU2NyZWVuTmFtZSA9ICRwYXJhbXNbJ3NjcmVlbl9uYW1lJ107DQoNCiAgIH0gZWxzZSB7DQogICAgICAkQ3VzdG9tR1MgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0N1c3RvbUdTJyk7DQogICAgICBpZiggaXNfb2JqZWN0KCRDdXN0b21HUykgKSB7DQogICAgICAgICAkQ3VzdG9tR1NfVHdpdHRlciA9ICRDdXN0b21HUy0+R2V0RmllbGQoJ1R3aXR0ZXInKTsNCiAgICAgICAgIGlmICggIWVtcHR5KCRDdXN0b21HU19Ud2l0dGVyWyd2YWx1ZSddKSApIHsNCiAgICAgICAgICAgICR0d2l0dGVyU2NyZWVuTmFtZSA9ICRDdXN0b21HU19Ud2l0dGVyWyd2YWx1ZSddOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KDQogICAkbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdVdGlsaXRpZXMnKTsNCiAgIGlmKCBpc19vYmplY3QoJG1vZCkgJiYgIWVtcHR5KCR0d2l0dGVyU2NyZWVuTmFtZSkgKSB7DQoNCiAgICAgIC8vIHVzZSBvdGhlciBwYXJhbXMgaWYgc2V0DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ3dpZHRoJ10pKSAkdHdpdHRlcldpZHRoID0gJHBhcmFtc1snd2lkdGgnXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snaGVpZ2h0J10pKSAkdHdpdHRlckhlaWdodCA9ICRwYXJhbXNbJ2hlaWdodCddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWyd0aGVtZSddKSkgJHR3aXR0ZXJUaGVtZSA9ICRwYXJhbXNbJ3RoZW1lJ107DQogICAgICBpZiAoIWVtcHR5KCRwYXJhbXNbJ2xpbmtfY29sb3InXSkpICR0d2l0dGVyTGlua0NvbG9yID0gJHBhcmFtc1snbGlua19jb2xvciddOw0KICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zWydib3JkZXJfY29sb3InXSkpICR0d2l0dGVyQm9yZGVyQ29sb3IgPSAkcGFyYW1zWydib3JkZXJfY29sb3InXTsNCiAgICAgIGlmICghZW1wdHkoJHBhcmFtc1snY2hyb21lX29wdGlvbnMnXSkpICR0d2l0dGVyQ2hyb21lT3B0aW9ucyA9ICRwYXJhbXNbJ2Nocm9tZV9vcHRpb25zJ107DQoNCiAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgndHdpdHRlckZlZWRfdGVtcGxhdGUudHBsJyksIG51bGwsIG51bGwsICRzbWFydHkgKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlclNjcmVlbk5hbWUnLCAkdHdpdHRlclNjcmVlbk5hbWUpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyV2lkdGgnLCAkdHdpdHRlcldpZHRoKTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlckhlaWdodCcsICR0d2l0dGVySGVpZ2h0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndHdpdHRlclRoZW1lJywgJHR3aXR0ZXJUaGVtZSk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJMaW5rQ29sb3InLCAkdHdpdHRlckxpbmtDb2xvcik7DQogICAgICAkdHBsLT5hc3NpZ24oJ3R3aXR0ZXJCb3JkZXJDb2xvcicsICR0d2l0dGVyQm9yZGVyQ29sb3IpOw0KICAgICAgJHRwbC0+YXNzaWduKCd0d2l0dGVyQ2hyb21lT3B0aW9ucycsICR0d2l0dGVyQ2hyb21lT3B0aW9ucyk7DQogICAgICAkdHBsLT5kaXNwbGF5KCk7DQogICB9DQoNCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/function.youTubePlayer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQoNCmZ1bmN0aW9uIHlvdVR1YmVQbGF5ZXIoJHBhcmFtcywmJHNtYXJ0eSkgew0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLy8gYmFzZWQgb24gVURUIHlvdVR1YmVQbGF5ZXIgLSB2MS4yIC0gMjZTZXAxNg0KLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgJG1vZCA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnVXRpbGl0aWVzJyk7DQoNCiAgIGlmICggaXNfb2JqZWN0KCRtb2QpICYmICFlbXB0eSgkcGFyYW1zWyd2aWRlb2lkJ10pICkgew0KICAgICAgJHZpZGVvaWQgPSB0cmltKCRwYXJhbXNbJ3ZpZGVvaWQnXSk7DQogICAgICAkY2xhc3MgPSAnJzsNCiAgICAgICRzdGFydCA9ICcnOw0KICAgICAgJGF1dG9wbGF5ID0gJyc7DQogICAgICAkdGV4dCA9ICcnOw0KICAgICAgJGFzcGVjdCA9ICcxNmJ5OSc7DQogICAgICAkdGh1bWJuYWlsID0gJyc7DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snY2xhc3MnXSkpICRjbGFzcyA9ICRwYXJhbXNbJ2NsYXNzJ107DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snc3RhcnQnXSkpICRzdGFydCA9ICcmc3RhcnQ9Jy4oaW50KSRwYXJhbXNbJ3N0YXJ0J107DQogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snYXV0b3BsYXknXSkgJiYgJHBhcmFtc1snYXV0b3BsYXknXT09MSkgJGF1dG9wbGF5ID0gJyZhdXRvcGxheT0xJzsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWydhc3BlY3QnXSkgJiYgJHBhcmFtc1snYXNwZWN0J109PSc0YnkzJykgJGFzcGVjdCA9ICc0YnkzJzsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd0ZXh0J10pKSAkdGV4dCA9ICRwYXJhbXNbJ3RleHQnXTsNCiAgICAgIGlmIChpc3NldCgkcGFyYW1zWyd0aHVtYm5haWwnXSkpIHsNCiAgICAgICAgICR0aHVtYiA9IHRyaW0oJHBhcmFtc1sndGh1bWJuYWlsJ10pOw0KICAgICAgICAgc3dpdGNoICgkdGh1bWIpIHsNCiAgICAgICAgICAgIGNhc2UgJ3NtYWxsJzoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAnLy9pMS55dGltZy5jb20vdmkvJy4kdmlkZW9pZC4nL21xZGVmYXVsdC5qcGcnOyAgLy8gc21hbGwgLSAzMjAgeCAxODBweA0KICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICBjYXNlICdtZWRpdW0nOg0KICAgICAgICAgICAgICAgJHRodW1ibmFpbCA9ICcvL2kxLnl0aW1nLmNvbS92aS8nLiR2aWRlb2lkLicvMC5qcGcnOyAgLy8gbWVkaXVtIC0gNDgwIHggMzYwcHgNCiAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAnbWF4JzoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAnLy9pMS55dGltZy5jb20vdmkvJy4kdmlkZW9pZC4nL21heHJlc2RlZmF1bHQuanBnJzsgIC8vIG1heCAtIDE5MjAgeCAxMDgwcHgNCiAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICR0aHVtYm5haWwgPSAkdGh1bWI7DQogICAgICAgICB9DQogICAgICB9DQoNCiAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSggJG1vZC0+R2V0VGVtcGxhdGVSZXNvdXJjZSgneW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwnKSwgbnVsbCwgbnVsbCwgJHNtYXJ0eSApOw0KICAgICAgJHRwbC0+YXNzaWduKCd2aWRlb2lkJywgJHZpZGVvaWQpOw0KICAgICAgJHRwbC0+YXNzaWduKCdjbGFzcycsICRjbGFzcyk7DQogICAgICAkdHBsLT5hc3NpZ24oJ3N0YXJ0JywgJHN0YXJ0KTsNCiAgICAgICR0cGwtPmFzc2lnbignYXV0b3BsYXknLCAkYXV0b3BsYXkpOw0KICAgICAgJHRwbC0+YXNzaWduKCdhc3BlY3QnLCAkYXNwZWN0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndGV4dCcsICR0ZXh0KTsNCiAgICAgICR0cGwtPmFzc2lnbigndGh1bWJuYWlsJywgJHRodW1ibmFpbCk7DQogICAgICAkdHBsLT5kaXNwbGF5KCk7DQoNCiAgIH0NCn0NCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxNiBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnVXRpbGl0aWVzJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnUHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLic7DQoNCiRsYW5nWydpbnN0YWxsX21zZyddID0gIllvdSBoYXZlIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgdGhlICdVdGlsaXRpZXMnIG1vZHVsZS4iOw0KJGxhbmdbJ2luc3RhbGxfQklFeHRlbnNpb25zX2Vycm9yJ10gPSAiTW9kdWxlICdCSUV4dGVuc2lvbnMnIG5lZWRzIHRvIGJlIHVuaW5zdGFsbGVkIGJlZm9yZSBpbnN0YWxsaW5nICdVdGlsaXRpZXMnIjsNCiRsYW5nWydhc2tfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGUgVXRpbGl0aWVzIG1vZHVsZT8nOw0KDQoNCg0KDQoNCg0KDQoNCiMjIyAgICAjIyMgICAjIyMjIyMjIyMgICAjIyMgICAgICAgICMjIyMjIyMjIw0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMgICAgIyMjICAgIyMjICAgICAgICAgIyMjICAgICAgICAjIyMgICAjIyMNCiMjIyMjIyMjIyMgICAjIyMjIyMjIyMgICAjIyMgICAgICAgICMjIyMjIyMjIw0KIyMjIyMjIyMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjDQojIyMgICAgIyMjICAgIyMjICAgICAgICAgIyMjICAgICAgICAjIyMNCiMjIyAgICAjIyMgICAjIyMjIyMjIyMgICAjIyMjIyMjIyMgICMjIw0KIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyMjIyMjIyAgIyMjDQoNCiRsYW5nWydoZWxwJ10gPSA8PDwnRU9EJw0KDQo8aDMgbmFtZT0iIj5XaGF0IGRvZXMgdGhpcyBkbz88L2gzPg0KPHA+J1V0aWxpdGllcycgcHJvdmlkZXMgYSBzZXQgb2YgYWRkaXRpb25hbCBmdW5jdGlvbnMgdXNlZnVsIGFjcm9zcyBtYW55IHdlYnNpdGVzLiBQcmV2aW91c2x5IHRoZXNlIHdlcmUgUGx1Z2lucyBvciBVRFRzLjwvcD48YnI+DQo8cD5UYWdzIC8gU21hcnR5IEZ1bmN0aW9uczo8L3A+DQo8dWw+DQogICA8bGk+Y29udGVudF90eXBlPC9saT4NCiAgIDxsaT5lZGl0Q29udGVudFRhYnM8L2xpPg0KICAgPGxpPmdvb2dsZUZvbnRVcmw8L2xpPg0KICAgPGxpPmdhbGxlcnlDb3ZlcnM8L2xpPg0KICAgPGxpPnlvdVR1YmVQbGF5ZXI8L2xpPg0KICAgPGxpPmNzc01pbmlmaWVyPC9saT4NCiAgIDxsaT50d2l0dGVyRmVlZDwvbGk+DQogICA8bGk+ZmFjZWJvb2tGZWVkPC9saT4NCiAgIDxsaT5nZXRDdXN0b21HUzwvbGk+DQogICA8bGk+YWRtaW5Vc2VyPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDI+VGFncyAvIFNtYXJ0eSBGdW5jdGlvbnM8L2gyPg0KDQo8aDM+Y29udGVudF90eXBlPC9oMz4NCjxwPntjb250ZW50X3R5cGUgdHlwZT0nc3RyaW5nX21pbWVfdHlwZSd9PC9wPg0KPHA+U2V0cyB0aGUgcmVxdWVzdCBjb250ZW50IHR5cGUgdG8gYSB2YWxpZCBtaW1lIHR5cGUuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+dHlwZSAocmVxdWlyZWQpIC0gYSB2YWxpZCBtaW1lIHR5cGUuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+ZWRpdENvbnRlbnRUYWJzPC9oMz4NCjxwPntlZGl0Q29udGVudFRhYnMgLi4ufSBpcyBpbmNsdWRlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFkbWluIHRlbXBsYXRlICdtb2R1bGVfY3VzdG9tXENNU0NvbnRlbnRNYW5hZ2VyXHRlbXBsYXRlc1xhZG1pbl9lZGl0Y29udGVudC50cGwnLiBFZGl0cyBhZG1pbiBzbWFydHkgYXJyYXlzICR0YWJfbmFtZXMgJiAkdGFiX2NvbnRlbnRzX2FycmF5LCB0byBoaWRlIHNvbWUgdGFicyBhbmQgbW92ZSBzb21lIGZpZWxkcy48L3A+DQo8cD5JZGVhbGx5IHRoaXMgZnVuY3Rpb25hbGl0eSB3b3VsZCBiZSByZXBsYWNlZCBieSBDTVNNUyBjb3JlIGZ1bmN0aW9uYWxpdHkgYXQgc29tZSBwb2ludCBpbiB0aGUgZnV0dXJlLjwvcD4NCjxwPlRvIGNoYW5nZSB0aGUgZGlzcGxheWVkIEFkbWluIGZpZWxkIHRpdGxlcywganVzdCB1c2UgdGhlIGNvcmUgYWRtaW5fY3VzdG9tIGZ1bmN0aW9uYWxpdHkuIEFkZCBhIGZpbGUgaW50byAvYXNzZXRzL2FkbWluX2N1c3RvbS9sYW5nL2VuX1VTLnBocCAob3Igc2ltaWxhciAtIEM8UzxTIHYyLjIrKSB0aGF0IGNoYW5nZXMgdGhlIGxhbmd1YWdlIHN0cmluZ3MgZnJvbSAvYWRtaW4vbGFuZy9lbl9VUy5waHAuPC9wPjxicj4NCjxwPlRpcDogaWYgbW92aW5nIGluZGl2aWR1YWwgZmllbGRzIGFkZCBvbmUgYXQgYSB0aW1lIHRvIHRoZSBtb3ZlX2ZpZWxkcyBwYXJhbWV0ZXIgYW5kIHNldCBkZWJ1Zz0xIC0gbWFrZXMgaXQgZWFzaWVyIHRvIHdvcmsgb3V0IHRoZSBuZXcgcG9zaXRpb25zITwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPmRlYnVnIChvcHRpb25hbCkgLSBzZXQgZGVidWc9MSB0byB0dXJuIG9uIG91dHB1dCBvZiBDb250ZW50IE1hbmFnZXIgdGFicyBhbmQgZmllbGRzLCBiZWZvcmUgYW5kIGFmdGVyIGVkaXRDb250ZW50VGFicyBjaGFuZ2VzLiBKdXN0IHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlZmluZSBjaGFuZ2VzLjwvbGk+DQogICA8bGk+bW92ZV90YWJfY29udGVudCAob3B0aW9uYWwpIC0gbW92ZXMgYWxsIGNvbnRlbnQgZnJvbSBvbmUgVGFiIHRvIGFub3RoZXIgVGFiLiBGb3JtYXQgaXMgbW92ZV90YWJfY29udGVudD0iZnJvbVRhYix0b1RhYnxmcm9tVGFiLHRvVGFiIiBlLmcuIG1vdmVfdGFiX2NvbnRlbnQ9IkxvZ2ljLE9wdGlvbnN8UGVybWlzc2lvbnMsT3B0aW9ucyIgPC9saT4NCiAgIDxsaT5tb3ZlX2ZpZWxkcyAob3B0aW9uYWwpIC0gbW92ZXMgYSBzaW5nbGUgZmllbGQgZnJvbSBvbmUgVGFiIC8gUG9zaXRpb24gdG8gYW5vdGhlciBUYWIgLyBQb3NpdGlvbi4gRm9ybWF0IGlzIG1vdmVfZmllbGRzPSJmcm9tVGFiLGZyb21Qb3NpdGlvbix0b1RhYix0b1Bvc2l0aW9ufGZyb21UYWIsZnJvbVBvc2l0aW9uLHRvVGFiLHRvUG9zaXRpb24iIGUuZy4gbW92ZV9maWVsZHM9Ik5hdmlnYXRpb24sMCxNYWluLDB8J05hdmlnYXRpb24nLDEsJ01haW4nLDEiIDwvbGk+DQogICA8bGk+cmVuYW1lX3RhYiAob3B0aW9uYWwpIC0ganVzdCByZW5hbWVzIG9uZSBvciBtb3JlIHRhYnMuIEZvcm1hdCByZW5hbWVfdGFiPSJmcm9tVGFiLHRvVGFifGZyb21UYWIsdG9UYWIiIGUuZy4gcmVuYW1lX3RhYj0iTmF2aWdhdGlvbixNZW51Ii4gWWVzIC0gSSBrbm93IHRoZXJlIGNhbiBiZSBhY2hpZXZlZCB0aHJvdWdoIHRoZSBtb2R1bGVfY3VzdG9tL2xhbmcgZmlsZXMgLSBpdCBqdXN0IHNlZW1lZCBtb3JlIGNvbnNpc3RlbnQgdG8gbWVzcyB3aXRoIHRhYnMvZmllbGRzIGFsbCBpbiB0aGUgb25lIHBsYWNlITwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPmdvb2dsZUZvbnRVcmw8L2gzPg0KPHA+e2dvb2dsZUZvbnRVcmx9IHJldHVybnMgdGhlIGZ1bGwgdXJsIGZvciBpbmNsdWRpbmcgR29vZ2xlIEZvbnRzLCBlLmcuIGZvciB1c2UgaW4gVGlueU1DRSBqcyBmaWxlLjwvcD4NCjxwPmFjdHVhbCBmb250cyBhcmUgc2V0IGJ5IHRoZSBDdXN0b21HUyB2YXJpYWJsZSAnR29vZ2xlIEZvbnRzJy4gRW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGlmIHRoYXQgZmllbGQgaXMgYmxhbmsuPC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+Y3VzdG9tZ3NfZmllbGQgKG9wdGlvbmFsKSAtIHNwZWNpZnkgYW4gYWx0ZXJuYXRpdmUgQ3VzdG9tR1MgZmllbGQgdG8gdXNlIChkZWZhdWx0OiAnR29vZ2xlIEZvbnRzJykuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+Z2FsbGVyeUNvdmVyczwvaDM+DQo8cD5zZXRzICRnYWxsZXJ5Q292ZXJzIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvdmVyZmlsZSAmIGNvdmVycGF0aCBvZiB0aGUgZnVsbCBzaXplIGNvdmVyIGltYWdlcyBvZiB0aGUgZ2FsbGVyaWVzIGluICRkaXIgcGFyYW1ldGVyIChyZXF1aXJlZCk8L3A+DQo8cD50aGlzIGlzIHJlcXVpcmVkIGFzIGJ5IGRlZmF1bHQgdGhlIEdhbGxlcnkgbW9kdWxlIG9ubHkgcHJvdmlkZXMgYSBwcmUtcHJvY2Vzc2VkIHRodW1ibmFpbCBmb3IgYW55IGRpcmVjdG9yaWVzLCBub3QgYSB1cmwgdG8gdGhlIGZ1bGwgaW1hZ2UuIEFsc28gZG9lc24ndCBoYW5kbGUgYXV0by1yb3RhdGUgY29ycmVjdGx5LjwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPiBkaXIgKHJlcXVpcmVkKSAtIEdhbGxlcnkgZGlyZWN0b3J5IDwvbGk+DQo8L3VsPg0KPGJyPg0KDQoNCg0KPGgzPnlvdVR1YmVQbGF5ZXI8L2gzPg0KPHA+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0nSnVyMUZPX25ZOTgnfSBpbWJlZHMgYSBZb3VUdWJlIHZpZGVvIHBsYXllciBpbiB0aGUgcGFnZS4gUmVxdWlyZXMgQm9vdHN0cmFwIENTUy48L3A+DQo8cD51c2VzICI/cmVsPTAmbW9kZXN0YnJhbmRpbmc9MSIgdG8gaGlkZSByZWxhdGVkIHZpZGVvcyBhdCBlbmQgYW5kIHNob3cgbWluaW1hbCBZb3VUdWJlIGJyYW5kaW5nPC9wPg0KPHA+aWZyYW1lIGlzIG5vdyBhbHdheXMgcmVzcG9uc2l2ZSAtIGhlaWdodCAmIHdpZHRoIHBhcmFtYXRlcnMgbm8gbG9uZ2VyIHN1cHBvcnRlZCAodjEuOCk8L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT52aWRlb2lkICAocmVxdWlyZWQpPC9saT4NCiAgIDxsaT5zdGFydCAgICAob3B0aW9uYWwpIC0gYmVnaW5zIHBsYXlpbmcgdGhlIHZpZGVvIGF0IHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdmlkZW88L2xpPg0KICAgPGxpPmNsYXNzICAgIChvcHRpb25hbCkgLSBhZGRpdGlvbmFsIGNsYXNzZXMgdG8gYmUgYWRkZWQgaW50byB0aGUgY2xhc3MgYXR0cmlidXRlPC9saT4NCiAgIDxsaT5hdXRvcGxheSAob3B0aW9uYWwpIC0gc2V0IHRvIDEgdG8gdHVybiBvbiBhdXRvcGxheTwvbGk+DQogICA8bGk+YXNwZWN0ICAgKG9wdGlvbmFsKSAtIHNwZWNpZnkgYXNwZWN0IHJhdGlvICcxNmJ5OScgKGRlZmF1bHQpIG9yICc0YnkzJzwvbGk+DQogICA8bGk+dGh1bWJuYWlsIChvcHRpb25hbCkgLSB1c2UgZWl0aGVyOiAnc21hbGwnLCAnbWVkaXVtJywgJ21heCcsIG9yIHRoZSB1cmwgb2YgYW4gaW1hZ2UgdG8gdXNlLjxicj4NCiAgICdzbWFsbCcgKDMyMHgxODBweCksICdtZWRpdW0nICg0ODB4MzYwcHgpIGFuZCAnbWF4JyAoMTkyMHgxMDgwcHgpIGFyZSBhbGwgWW91VHViZSBnZW5lcmF0ZWQgdGh1bWJuYWlscy4NCjwvdWw+DQo8cD5Ob3RlOiBpZiB5b3Ugd2lzaCB0byBtb2RpZnkgdGhlIHRlbXBsYXRlIGNvcHkgL1V0aWxpdGllcy90ZW1wbGF0ZXMveW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL3lvdVR1YmVQbGF5ZXJfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+Y3NzTWluaWZpZXI8L2gzPg0KPHA+VGhpcyBDTVNNUyBjc3NNaW5pZmllciBwbHVnaW4gbGV0cyBhIHVzZXIgY29udmVydCB0aGUgZGVmYXVsdCB7Y21zX3N0eWxlc2hlZXR9IGludG8gYSBtaW5pZmllZCBjc3MgZmlsZS48L3A+DQo8cD5UaGlzIGZ1bmN0aW9uIHRha2VzIGNzcyBhbmQgY29tcHJlc3NlcyBpdCwgcmVtb3ZpbmcgdW5uZWNjZXNzYXJ5IHdoaXRlc3BhY2UsIGNvbG9ucywgcmVtb3ZpbmcgdW5uZWNjZXNzYXJ5IHB4L2VtIGRlY2xhcmF0aW9ucyBldGMuPC9wPg0KPHA+UmVwbGFjZSB0aGUgZGVmYXVsdCB7Y21zX3N0eWxlc2hlZXR9IHRhZyB3aXRoOjxicj4NCiAgIDxjb2RlPntjc3NNaW5pZmllciBjc3M9IntjbXNfc3R5bGVzaGVldCBub2xpbmtzPXRydWV9In08L2NvZGU+PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+KHJlcXVpcmVkKSBjc3MgKHN0cmluZykgLSBjc3MgZmlsZW5hbWUgPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIG5vbWluaWZ5IChzdHJpbmcpIC0gaWYgc2V0IHRoZSB1bm1pbmlmaWVkIGNzcyBpcyBvdXRwdXQgKGZvciBkZWJ1Z2dpbmcpPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+dHdpdHRlckZlZWQ8L2gzPg0KPHA+b3V0cHV0cyBhIFR3aXR0ZXIgRmVlZCAoc2VlOiBodHRwczovL2Rldi50d2l0dGVyLmNvbS93ZWIvZW1iZWRkZWQtdGltZWxpbmVzIGZvciBkZXRhaWxzKS48L3A+DQo8cD5BZGQgdGhlIHRhZyB7dHdpdHRlckZlZWR9IGludG8gYSBXaWRnZXQgb3IgRm9vdGVyLCBldGMuIFVzZXMgQ3VzdG9tR1MuVHdpdHRlciBhcyBkZWZhdWx0IHNjcmVlbl9uYW1lIG9yIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzPC9wPg0KPHA+dGVzdCB3aXRoOiB7dHdpdHRlckZlZWQgc2NyZWVuX25hbWU9J05vMUZhcm1lckpha2UnIHdpZHRoPTUwMCBoZWlnaHQ9NTAwIHRoZW1lPWRhcmsgbGlua19jb2xvcj0nI0FBQUE1MicgYm9yZGVyX2NvbG9yPXJlZCBjaHJvbWVfb3B0aW9ucz0nbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyJ308L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT4ob3B0aW9uYWwpIHNjcmVlbl9uYW1lIChzdHJpbmcpIC0gdXNlcyBDdXN0b21HUy5Ud2l0dGVyIGFzIGRlZmF1bHQsIG9yIGUuZy4gJ05vMUZhcm1lckpha2UnPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIHdpZHRoIChpbnQpIC0gbGVhdmUgZW1wdHkgZm9yIHJlc3BvbnNpdmU8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgaGVpZ2h0IChpbnQpIC0gZGVmYXVsdCBpcyAzMDA8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgdGhlbWUgKHN0cmluZykgLSAnbGlnaHQnIChkZWZhdWx0KSBvciAnZGFyazwvbGk+DQogICA8bGk+KG9wdGlvbmFsKSBsaW5rX2NvbG9yIChzdHJpbmcpIC0gZS5nLiAnI0FBQUE1MicgPC9saT4NCiAgIDxsaT4ob3B0aW9uYWwpIGJvcmRlcl9jb2xvciAoc3RyaW5nKSAtIG9wdGlvbmFsIG9yIHNldCBpbiBDU1M8L2xpPg0KICAgPGxpPihvcHRpb25hbCkgY2hyb21lX29wdGlvbnMgKHN0cmluZykgLSAxIG9yIG1vcmUgb2YgKHNwYWNlIHNlcGFyYXRlZCk6DQogICAgICAgICAgICAgICAgICAgICAgICAnbm9oZWFkZXIgbm9mb290ZXIgbm9ib3JkZXJzIG5vc2Nyb2xsYmFyIHRyYW5zcGFyZW50JzwvbGk+DQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL3R3aXR0ZXJGZWVkX3RlbXBsYXRlLnRwbCBpbnRvIGFzc2V0cy9tb2R1bGVfY3VzdG9tL1V0aWxpdGllcy90ZW1wbGF0ZXMvdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIGFuZCBtb2RpZnkgdGhhdCB2ZXJzaW9uLiAoTm90IGNoYW5nZWQgYnkgbW9kdWxlIHVwZ3JhZGVzKS48L3A+DQo8YnI+DQoNCg0KDQo8aDM+ZmFjZWJvb2tGZWVkPC9oMz4NCjxwPm91dHB1dHMgYSBGYWNlYm9vayBQYWdlIEZlZWQgKHNlZTogaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3BsdWdpbnMvcGFnZS1wbHVnaW4vIGZvciBkZXRhaWxzKS48L3A+DQo8cD5BZGQgdGhlIHRhZyB7ZmFjZWJvb2tGZWVkfSBpbnRvIGEgV2lkZ2V0IG9yIEZvb3RlciwgZXRjLiBVc2VzIEN1c3RvbUdTLkZhY2Vib29rIGFzIGRlZmF1bHQgcGFnZUlkIG9yIHRoZSBwcm92aWRlZCBwYXJhbWV0ZXJzPC9wPg0KPHA+dGVzdCB3aXRoOiB7ZmFjZWJvb2tGZWVkIHBhZ2VJZD0nTm8xRmFybWVySmFrZScgd2lkdGg9NTAwIGhlaWdodD01MDAgdGhlbWU9ZGFyayBsaW5rX2NvbG9yPScjQUFBQTUyJyBib3JkZXJfY29sb3I9cmVkIGNocm9tZV9vcHRpb25zPSdub2hlYWRlciBub2Zvb3RlciBub2JvcmRlcnMgbm9zY3JvbGxiYXInfTwvcD4NCjxwPlBhcmFtZXRlcnM6PC9wPg0KPHVsPg0KICAgPGxpPndpZHRoIChvcHRpb25hbCkgLSBUaGUgcGl4ZWwgd2lkdGggb2YgdGhlIHBsdWdpbi4gTWluLiBpcyAxODAgYW5kIE1heC4gaXMgNTAwPC9saT4NCiAgIDxsaT5oZWlnaHQgKG9wdGlvbmFsKSAtIFRoZSBwaXhlbCBoZWlnaHQgb2YgdGhlIHBsdWdpbi4gTWluLiBpcyA3MDwvbGk+DQogICA8bGk+aGlkZUNvdmVyIChvcHRpb25hbCkgLSBIaWRlIGNvdmVyIHBob3RvIGluIHRoZSBoZWFkZXI8L2xpPg0KICAgPGxpPnNob3dGYWNlcGlsZSAob3B0aW9uYWwpIC0gU2hvdyBwcm9maWxlIHBob3RvcyB3aGVuIGZyaWVuZHMgbGlrZSB0aGlzPC9saT4NCiAgIDxsaT5zaG93UG9zdHMgKG9wdGlvbmFsKSAtIFNob3cgcG9zdHMgZnJvbSB0aGUgUGFnZSdzIHRpbWVsaW5lPC9saT4NCiAgIDxsaT5oaWRlQ3RhIChvcHRpb25hbCkgLSBIaWRlIHRoZSBjdXN0b20gY2FsbCB0byBhY3Rpb24gYnV0dG9uIChpZiBhdmFpbGFibGUpPC9saT4NCiAgIDxsaT5zbWFsbEhlYWRlciAob3B0aW9uYWwpIC0gVXNlIHRoZSBzbWFsbCBoZWFkZXIgaW5zdGVhZDwvbGk+DQogICA8bGk+YWRhcHRDb250YWluZXJXaWR0aCAob3B0aW9uYWwpIC0gVHJ5IHRvIGZpdCBpbnNpZGUgdGhlIGNvbnRhaW5lciB3aWR0aCAtIHNlbWktcmVzcG9uc2l2ZTwvbGk+DQo8L3VsPg0KPHA+Tm90ZTogaWYgeW91IHdpc2ggdG8gbW9kaWZ5IHRoZSB0ZW1wbGF0ZSBjb3B5IC9VdGlsaXRpZXMvdGVtcGxhdGVzL2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwgaW50byBhc3NldHMvbW9kdWxlX2N1c3RvbS9VdGlsaXRpZXMvdGVtcGxhdGVzL2ZhY2Vib29rRmVlZF90ZW1wbGF0ZS50cGwgYW5kIG1vZGlmeSB0aGF0IHZlcnNpb24uIChOb3QgY2hhbmdlZCBieSBtb2R1bGUgdXBncmFkZXMpLjwvcD4NCjxicj4NCg0KDQoNCjxoMz5nZXRDdXN0b21HUzwvaDM+DQo8cD5SZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgQ3VzdG9tR1Mgc2V0dGluZy4gIFdpbGwgd29yayBpbiBhZG1pbiBwYWdlIHdoZW4gQ3VzdG9tR1MgaGFzbid0IGJlZW4gc2V0LCBlLmcuIGZvciBzZXR0aW5nIHRoZSBXaWRnZXQgc3R5bGVzIHRoZSBzYW1lIGFzIFNlY3Rpb24gc3R5bGVzLjwvcD4NCjxwPlVzYWdlIC0gIGFkZCB0aGUgdGFnOiB7Z2V0Q3VzdG9tR1MgY3VzdG9tZ3NfZmllbGQ9J3NldHRpbmcgbmFtZSd9PC9wPg0KPHA+UGFyYW1ldGVyczo8L3A+DQo8dWw+DQogICA8bGk+Y3VzdG9tZ3NfZmllbGQgKHJlcXVpcmVkKSAtIFRoZSBuYW1lICh3aXRoIHNwYWNlcykgb2YgdGhlIEN1c3RvbUdTIGZpZWxkIHRvIHJldHVybiB0aGUgdmFsdWUgb2YuPC9saT4NCjwvdWw+DQo8YnI+DQoNCg0KDQo8aDM+YWRtaW5Vc2VyPC9oMz4NCjxwPlRlc3RzIGluIHRoZSBmcm9udCBlbmQgdmlzaXRvciBpcyBhbHNvIGxvZ2dlZCBpbiB0byB0aGUgQ01TTVMgQWRtaW4uIFJldHVybnMgdHJ1ZSBvciBmYWxzZS48L3A+DQo8cD5Vc2FnZSAtICBhZGQgdGhlIHRhZzoge2lmIHthZG1pblVzZXJ9fVllcyAtIElTIEFETUlOIFVTRVJ7ZWxzZX1OTyAtIG5vdCBBZG1pbiBVc2Vyey9pZn08L3A+DQo8cD5QYXJhbWV0ZXJzOjwvcD4NCjx1bD4NCiAgIDxsaT5yZWRpcmVjdCAob3B0aW9uYWwpIC0gbm90IHJlY29tbWVuZGVkIGluIG1vc3QgY2FzZXMuIElmIHNldCBhbmQgdmlzdG9yIG5vdCBsb2dnZWQgaW4sIHdpbGwgcmVkaXJlY3QgdG8gdGhlIGFkbWluIGxvZ2luIHBhZ2UuPC9saT4NCiAgIDxsaT5hc3NpZ24gKG9wdGlvbmFsKSAtIHdpbGwgYXNzaWduIHRoZSBib29sZWFuIHJlc3VsdCB0byB0aGUgZ2l2ZW4gdmFyaWFibGUgbmFtZTwvbGk+DQogICByZWRpcmVjdA0KPC91bD4NCjxicj4NCg0KDQoNCg0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwgbGljZW5jZSwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcyBpcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuDQpUaGUgbW9kdWxlIGF1dGhvciBpcyBub3Qgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlLiBIb3dldmVyIHlvdSBtaWdodCBnZXQgc3VwcG9ydCB0aHJvdWdoIHRoZSBmb2xsb3dpbmc6PC9wPg0KPHVsPg0KICAgPGxpPkZvciBzdXBwb3J0LCBmaXJzdCA8c3Ryb25nPnNlYXJjaDwvc3Ryb25nPiB0aGUgPGEgaHJlZj0iLy9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtPC9hPiwgZm9yIGlzc3VlcyB3aXRoIHRoZSBtb2R1bGUgc2ltaWxhciB0byB0aG9zZSB5b3UgYXJlIGZpbmRpbmcuPC9saT4NCiAgIDxsaT5UaGVuLCBpZiBuZWNlc3NhcnksIG9wZW4gYSA8c3Ryb25nPm5ldyBmb3J1bSB0b3BpYzwvc3Ryb25nPiB0byByZXF1ZXN0IGhlbHAsIHdpdGggYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0LjwvbGk+DQogICA8bGk+SWYgeW91IGZpbmQgYSBidWcgeW91IGNhbiA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL2J1Zy9saXN0LzE0MjEiPnN1Ym1pdCBhIEJ1ZyBSZXBvcnQ8L2E+LjwvbGk+DQogICA8bGk+Rm9yIGFueSBnb29kIGlkZWFzIHlvdSBjYW4gPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9mZWF0dXJlX3JlcXVlc3QvbGlzdC8xNDIxIj5zdWJtaXQgYSBGZWF0dXJlIFJlcXVlc3Q8L2E+LjwvbGk+DQogICA8bGk+SWYgeW91IGZvdW5kIHRoZSBNb2R1bGUgdXNlZnVsIC0gc2hvdXQgb3V0IHRvIG1lIG9uIFR3aXR0ZXIgPGEgaHJlZj0iLy90d2l0dGVyLmNvbS9LaXdpQ2hyaXNCVCI+QEtpd2lDaHJpc0JUPC9hPjwvbGk+DQo8L3VsPjxicj4NCg0KDQo8aDM+Q29weXJpZ2h0ICZhbXA7IExpY2VuY2U8L2gzPg0KPHA+Q29weXJpZ2h0IMKpIDIwMTksIENocmlzIFRheWxvciA8Y2hyaXMgYXQgYmlubm92YXRpdmUgZG90IGNvIGRvdCB1az4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD48YnI+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgR05VIFB1YmxpYyBMaWNlbnNlIHYzLiBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gWW91IG1heSBvbmx5IHVzZSB0aGlzIHNvZnR3YXJlIHdoZW4gdGhlcmUgaXMgYSBjbGVhciBhbmQgb2J2aW91cyBpbmRpY2F0aW9uIGluIHRoZSBhZG1pbiBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgU2ltcGxlITwvcD48YnI+DQo8YnI+DQpFT0Q7DQoNCg0KDQoNCg0KDQoNCg0KIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMgICAgICAgIyMjIyMjIyMjICAjIyMjIyMjIyMNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjIyAgIyMjIyAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyMjIyMjIyAgIyMjIyMjIyMjDQojIyMgICAgICAgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyMjICAjIyMgICMjIyAgICAgICAgIyMjICAgICAgICMjIyAgICAgICAjIyMgICAjIyMgICMjIw0KIyMjICAgICAgICAjIyMjIyMjIyMjICAjIyMjIyMjIyMjICAjIyMgIyMgIyMjICAjIyMgICAgICAgICMjIyMjIyMjICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMNCiMjIyAgICAgICAgIyMjIyMjIyMjIyAgIyMjIyMjIyMjIyAgIyMjICAjIyMjIyAgIyMjICAgIyMjICAjIyMjIyMjIyAgIyMjICAgICAgICMjIyAgICMjIyAgIyMjICAgIyMjDQojIyMgICAgICAgICMjIyAgICAjIyMgICMjIyAgICAjIyMgICMjIyAgICMjIyMgICMjIyAgICMjIyAgIyMjICAgICAgICMjIyAgICAgICAjIyMgICAjIyMgICMjIyAgICMjIw0KIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMjIyMjIyMgIyMjIyMjIyMjICAjIyMjIyMjIyMNCiMjIyMjIyMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjICAgICMjIyAgIyMjIyMjIyMjICAjIyMjIyMjIyAgIyMjIyMjIyMjICMjIyMjIyMjIyAgIyMjIyMjIyMjDQoNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PCdFT0QnDQoNCjxoMz5WZXJzaW9uIDEuMiAtIDAySnVsMjA8L2gzPg0KPHVsPg0KICAgPGxpPmFkZGVkIGFkbWluVXNlciB0YWc8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4xLjEgLSAxN0p1bjE5PC9oMz4NCjx1bD4NCiAgIDxsaT5taW5vciBidWcgZml4IGluIGhlbHA8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4xIC0gMTRNYXIxOTwvaDM+DQo8dWw+DQogICA8bGk+YWRkZWQgbm9taW5pZnkgcGFyYW1ldGVyPC9saT4NCiAgIDxsaT5FeHRyYSBoZWxwIG5vdGVzIGZvciBlZGl0Q29udGVudFRhYnM8L2xpPg0KPC91bD4NCjxicj4NCg0KPGgzPlZlcnNpb24gMS4wIC0gMTZGZWIxOTwvaDM+DQo8dWw+DQogICA8bGk+Zmlyc3QgcHVibGljIHJlbGVhc2U8L2xpPg0KPC91bD4NCjxicj4NCg0KRU9EOw0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/LICENCE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFV0aWxpdGllcw0KIyBBdXRob3I6IENocmlzIFRheWxvcg0KIyBDb3B5cmlnaHQ6IChDKSAyMDE5IENocmlzIFRheWxvciwgY2hyaXNAYmlubm92YXRpdmUuY28udWsNCiMgTW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvdXRpbGl0aWVzDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTkgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24gKGNvcHlyaWdodEBjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMNCiMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7DQojIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMNCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uDQojIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQokbW9kID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdCSUV4dGVuc2lvbnMnKTsNCmlmICggaXNfb2JqZWN0KCRtb2QpICkgew0KICAgLy8gZmFpbCBpbnN0YWxsICYgcmV0dXJuIG1lc3NhZ2UNCiAgIHJldHVybiAkdGhpcy0+bGFuZygnaW5zdGFsbF9CSUV4dGVuc2lvbnNfZXJyb3InKTsNCn0NCg0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQovLyB1bnJlZ2lzdGVyIGFsbCBmdW5jdGlvbnMNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2NvbnRlbnRfdHlwZScpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2FsbGVyeUNvdmVycycpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ29vZ2xlRm9udFVybCcpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZ2V0Q3VzdG9tR1MnKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2lzX2FkbWluX3VzZXInKTsNCiRzbWFydHktPnVucmVnaXN0ZXJfZnVuY3Rpb24oJ2FkbWluX3VzZXJfYWN0aW9uX3VybCcpOw0KDQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCdjc3NNaW5pZmllcicpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbigneW91VHViZVBsYXllcicpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZWRpdENvbnRlbnRUYWJzJyk7DQokc21hcnR5LT51bnJlZ2lzdGVyX2Z1bmN0aW9uKCd0d2l0dGVyRmVlZCcpOw0KJHNtYXJ0eS0+dW5yZWdpc3Rlcl9mdW5jdGlvbignZmFjZWJvb2tGZWVkJyk7DQoNCg0K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIExpY2VuY2U6IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMw0KIyAgICAgICAgICBzZWUgL1V0aWxpdGllcy9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0Ow0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJVdGlsaXRpZXMiCnZlcnNpb24gPSAxLjIKYXV0aG9yID0gIkNocmlzIFRheWxvciIKYXV0aG9yZW1haWwgPSAiY2hyaXNAYmlubm92YXRpdmUuY28udWsiCm1pbmNtc3ZlcnNpb24gPSAyLjAKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/facebookFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjZWJvb2tGZWVkX3RlbXBsYXRlLnRwbCAtIHYxLjIgLSAwNkZlYjE5DQoNCiAgIC0gdjEuMiAtIDA2RmViMTkgLSBhZGRlZCBpbnRvIFV0aWxpdGllcw0KICAgLSB2MS4xIC0gMDFEZWMxNQ0KDQogICBTZWUgaHR0cHM6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL3BsdWdpbnMvcGFnZS1wbHVnaW4vIGZvciBkZXRhaWxzLg0KDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9DQogICA8ZGl2IGlkPSJmYi1yb290Ij48L2Rpdj4NCiAgIDxzY3JpcHQ+e2xpdGVyYWx9KGZ1bmN0aW9uKGQsIHMsIGlkKSB7DQogICAgIHZhciBqcywgZmpzID0gZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTsNCiAgICAgaWYgKGQuZ2V0RWxlbWVudEJ5SWQoaWQpKSByZXR1cm47DQogICAgIGpzID0gZC5jcmVhdGVFbGVtZW50KHMpOyBqcy5pZCA9IGlkOw0KICAgICBqcy5zcmMgPSAiLy9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9HQi9zZGsuanMjeGZibWw9MSZ2ZXJzaW9uPXYyLjMiOw0KICAgICBmanMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoanMsIGZqcyk7DQogICB9KGRvY3VtZW50LCAnc2NyaXB0JywgJ2ZhY2Vib29rLWpzc2RrJykpOw0KICAgey9saXRlcmFsfTwvc2NyaXB0Pg0KICAgPGRpdiBjbGFzcz0iZmItcGFnZSIgZGF0YS1ocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20veyRwYWdlSWR9LyIgZGF0YS13aWR0aD0ieyR3aWR0aH0iIGRhdGEtaGVpZ2h0PSJ7JGhlaWdodH0iIGRhdGEtaGlkZS1jb3Zlcj0ieyRoaWRlQ292ZXJ9IiBkYXRhLXNob3ctZmFjZXBpbGU9Inskc2hvd0ZhY2VwaWxlfSIgZGF0YS1zaG93LXBvc3RzPSJ7JHNob3dQb3N0c30iIGRhdGEtaGlkZS1jdGE9InskaGlkZUN0YX0iIGRhdGEtc21hbGwtaGVhZGVyPSJ7JHNtYWxsSGVhZGVyfSIgZGF0YS1hZGFwdC1jb250YWluZXItd2lkdGg9InskYWRhcHRDb250YWluZXJXaWR0aH0iPg0KICAgICAgPGRpdiBjbGFzcz0iZmIteGZibWwtcGFyc2UtaWdub3JlIj4NCiAgICAgICAgIDxibG9ja3F1b3RlIGNpdGU9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS97JHBhZ2VJZH0vIj4NCiAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS97JHBhZ2VJZH0vIj57JHNpdGVuYW1lfTwvYT4NCiAgICAgICAgIDwvYmxvY2txdW90ZT4NCiAgICAgIDwvZGl2Pg0KICAgPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/twitterFeed_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogdHdpdHRlckZlZWRfdGVtcGxhdGUudHBsIC0gdjEuMCAtIDA5SnVuMTYNCg0KICAgLSB2MS4wIC0gMDlKdW4xNiAtIGluaXRpYWwgdmVyc2lvbg0KDQogICBTZWUgaHR0cHM6Ly9kZXYudHdpdHRlci5jb20vd2ViL2VtYmVkZGVkLXRpbWVsaW5lcyBmb3IgZGV0YWlscy4NCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqfQ0Ke2lmICR0d2l0dGVyU2NyZWVuTmFtZSE9Jyd9DQp7aWYgJHR3aXR0ZXJIZWlnaHR9DQogICA8ZGl2IGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lLW91dGVyIiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weDt7aWYgJHR3aXR0ZXJCb3JkZXJDb2xvcn0gYm9yZGVyOjFweCBzb2xpZCB7JHR3aXR0ZXJCb3JkZXJDb2xvcn07ey9pZn0iPg0Key9pZn0NCiAgICAgIDxhIGNsYXNzPSJ0d2l0dGVyLXRpbWVsaW5lIiBocmVmPSIvL3R3aXR0ZXIuY29tL3skdHdpdHRlclNjcmVlbk5hbWV9IntzdHJpcH0NCiAgICAgICAgIHtpZiAkdHdpdHRlcldpZHRofSBkYXRhLXdpZHRoPSJ7JHR3aXR0ZXJXaWR0aH0iIHsvaWZ9DQogICAgICAgICB7aWYgJHR3aXR0ZXJIZWlnaHR9IGRhdGEtaGVpZ2h0PSJ7JHR3aXR0ZXJIZWlnaHR9IiBzdHlsZT0iaGVpZ2h0OnskdHdpdHRlckhlaWdodH1weCJ7L2lmfQ0KICAgICAgICAge2lmICR0d2l0dGVyVGhlbWV9IGRhdGEtdGhlbWU9InskdHdpdHRlclRoZW1lfSIgey9pZn0NCiAgICAgICAgIHtpZiAkdHdpdHRlckNocm9tZU9wdGlvbnN9IGRhdGEtY2hyb21lPSJ7JHR3aXR0ZXJDaHJvbWVPcHRpb25zfSIgey9pZn0NCiAgICAgICAgIGRhdGEtZG50PSJ0cnVlIg0KICAgICAgey9zdHJpcH0+VHdlZXRzIGJ5IHskdHdpdHRlclNjcmVlbk5hbWV9PC9hPg0KICAgICAge2xpdGVyYWx9PHNjcmlwdCBhc3luYyBzcmM9Ii8vcGxhdGZvcm0udHdpdHRlci5jb20vd2lkZ2V0cy5qcyIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PnsvbGl0ZXJhbH0NCntpZiAkdHdpdHRlckhlaWdodH0gICA8L2Rpdj57L2lmfQ0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/Utilities_Test_Template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUgLSB2MS4yIC0gMDJKdWwyMA0KDQogICAtIHYxLjIgLSAwMkp1bDIwIC0gZXh0cmEgdGVzdCBmb3IgYWRtaW5fdXNlciAmIG1vdmUgdGVzdCB0ZW1wbGF0ZSBpbnRvIFV0aWxpdGllcy90ZW1wbGF0ZXMNCiAgIC0gdjEuMSAtIDA3RmViMTkgLSByZW1vdmUgc29tZSByZWR1bmRhbnQgY29udGVudA0KICAgLSB2MS4wIC0gMDVGZWIxOSAtDQoNCiAgIFRlbXBsYXRlIHN0b3JlZCBpbiBVdGlsaXRpZXMvdGVtcGxhdGVzL1V0aWxpdGllc19UZXN0X1RlbXBsYXRlLnRwbA0KICAgICAgLSBjcmVhdGUgYSB2ZXJ5IHNpbXBsZSBjb3JlOnBhZ2UgdGVtcGxhdGUgJ1V0aWxpdGllc19UZXN0JyB3aXRoIGp1c3QgdGhlIDEgbGluZToNCiAgICAgICAgICAgIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpVdGlsaXRpZXM7VXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUudHBsJ30NCiAgICAgIC0gY3JlYXRlICdVdGlsaXRpZXMgVGVzdCcgcGFnZSwgdXNpbmcgdGhlIGFib3ZlIHRlbXBsYXRlLg0KDQoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn17c3RyaXB9DQp7Y29udGVudCBvbmVsaW5lPTEgbGFiZWw9IlV0aWxpdGllcyBURVNUIFRlbXBsYXRlIiBhc3NpZ249Y29udGVudDF9DQoNCg0Ke2NnanNfcmVxdWlyZSBsaWI9J2pxdWVyeSd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL2Jvb3RzdHJhcC5idW5kbGUubWluLmpzJ30NCntjZ2pzX3JlcXVpcmUgbGliPSdmb3JtJ30NCntjZ2pzX3JlcXVpcmUganNmaWxlPSdhc3NldHMvanMvc2xpY2subWluLmpzJ30NCntjZ2pzX3JlcXVpcmUganNmaWxlPSdhc3NldHMvanMvbWFpbi5qcyd9DQoNCg0Key9zdHJpcH08IURPQ1RZUEUgaHRtbD4NCjxodG1sIGxhbmc9ImVuIj4NCjxoZWFkPg0Ke2luY2x1ZGUgZmlsZT0nY21zX3RlbXBsYXRlOlN0YW5kYXJkIEdsb2JhbCBNZXRhZGF0YSd9DQogICB7KmNtc19zdHlsZXNoZWV0Kn0NCiAgIHtjc3NNaW5pZmllciBjc3M9IntjbXNfc3R5bGVzaGVldCBub2xpbmtzPXRydWV9In0NCiAgIDxzdHlsZT57bGl0ZXJhbH0ucHJlIHtmb250LWZhbWlseTptb25vc3BhY2U7IHdoaXRlLXNwYWNlOnByZS13cmFwOyB3b3JkLXdyYXA6YnJlYWstd29yZDsNCiAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiNEREQ7IHBhZGRpbmc6MWVtO317L2xpdGVyYWx9PC9zdHlsZT4NCjwvaGVhZD4NCg0KPGJvZHkgY2xhc3M9InBhZ2UteyRwYWdlX2FsaWFzfSI+DQoNCntnbG9iYWxfY29udGVudCBuYW1lPSdoZWFkZXInfQ0KDQo8ZGl2IGNsYXNzPSJtYWluIj4NCiAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+DQogICAgICA8ZGl2IGNsYXNzPSJyb3ciPg0KICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIj4NCg0KPGgxPlV0aWxpdGllcyBUZXN0IFBhZ2UgLSBGcm9udGVuZCBUZXN0czwvaDE+DQoNCg0KPGgyPlRlc3QgMTogZ2FsbGVyeUNvdmVyczwvaDI+DQo8cD4kZ2FsbGVyeUNvdmVycyBkaXI9J3Byb2plY3QtZ2FsbGVyaWVzJyBpczo8L3A+DQo8ZGl2IGNsYXNzPSJwcmUiPntnYWxsZXJ5Q292ZXJzIGRpcj0ncHJvamVjdC1nYWxsZXJpZXMnfXskZ2FsbGVyeUNvdmVyc3xwcmludF9yfTwvZGl2Pg0KPGRpdiBjbGFzcz0icm93Ij4NCiAgIHtmb3JlYWNoICRnYWxsZXJ5Q292ZXJzIGFzICRpbWd9DQogICAgICA8ZGl2IGNsYXNzPSJjb2wtMiI+PGltZyBzcmM9Int1cGxvYWRzX3VybH0veyRpbWd9IiBhbHQ9IiI+PC9kaXY+DQogICB7L2ZvcmVhY2h9DQo8L2Rpdj48YnI+DQoNCg0KDQo8aDI+VGVzdCAyOiBnb29nbGVGb250VXJsPC9oMj4NCntjb250ZW50IGJsb2NrPWNvbnRlbnQyIGxhYmVsPSJnb29nbGVGb250VXJsOiBjaGVjayB0aGF0IGNvcnJlY3QgZm9udHMgYmVpbmcgdXNlZCBpbiBUaW55TUNFIiBhc3NpZ249Y29udGVudDJ9DQo8cD5nb29nbGVGb250VXJsIGlzOiAne2dvb2dsZUZvbnRVcmx9JzwvcD4NCjxicj4NCg0KDQo8aDI+VGVzdCAzOiBjc3NNaW5pZmllcjwvaDI+DQo8cD5UbyBjaGVjayA8c3Ryb25nPmNzc01pbmlmaWVyPC9zdHJvbmc+IG91dHB1dDo8L3A+DQo8b2w+DQogICA8bGk+dmlldyBwYWdlIHNvdXJjZTwvbGk+DQogICA8bGk+ZmluZCBDU1MgbGluayBpbiBoZWFkICcuLi5taW5pZmllZF9zdHlsZXNoZWV0X2NvbWJpbmVkXy4uLic8L2xpPg0KICAgPGxpPm9wZW4gaW4gTmV3IFRhYjwvbGk+DQogICA8bGk+Y2hlY2sgdGhhdCBhbGwgQ1NTIGlzIG1pbmlmaWVkIDopPC9saT4NCjwvb2w+DQo8YnI+DQoNCg0KPGgyPlRlc3QgNDogeW91VHViZVBsYXllcjwvaDI+DQo8cD55b3VUdWJlUGxheWVyIC0gbG9hZCBZb3VUdWJlIGlmcmFtZSBpbW1lZGlhdGVseSAoZGVmYXVsdCk8L3A+DQo8ZGl2IGNsYXNzPSJjb2wtMyI+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0iSnVyMUZPX25ZOTgifTwvZGl2Pjxicj4NCg0KPHA+eW91VHViZVBsYXllciAtIGxvYWQgdGh1bWJuYWlsIG9ubHkgJiBZb3VUdWJlIHBvcHVwIG9ubHkgb24gY2xpY2sgKG5lZWRzIGpzKTwvcD4NCjxkaXYgY2xhc3M9ImNvbC0zIj57eW91VHViZVBsYXllciB2aWRlb2lkPSJKdXIxRk9fblk5OCIgdGh1bWJuYWlsPW1lZGl1bX08L2Rpdj48YnI+DQoNCg0KPGgyPlRlc3QgNTogdHdpdHRlckZlZWQ8L2gyPg0KPGRpdiBjbGFzcz0iY29sLTUiPnt0d2l0dGVyRmVlZCBzY3JlZW5fbmFtZT0nY21zbXMnfTwvZGl2Pjxicj4NCg0KDQo8aDI+VGVzdCA2OiBlZGl0Q29udGVudFRhYnM8L2gyPg0Ke2NvbnRlbnQgYmxvY2s9Y29udGVudDMgbGFiZWw9IlRlc3QgNjogZWRpdENvbnRlbnRUYWJzOiBjaGVjayB0aGF0IGNvcnJlY3QgdGFicyBhbmQgZmllbGRzIGFyZSBiZWluZyBkaXNwbGF5ZWQuIENvdWxkIG1ha2UgYWRkaXRpb25hbCBjaGFuZ2VzICYgdGVzdCBpZiByZXF1aXJlZCIgb25lbGluZT0xIGFzc2lnbj1jb250ZW50M30NCjxwPk5vdGhpbmcgdG8gc2VlIG9uIHRoZSBmcm9udGVuZCE8L3A+PGJyPg0KDQoNCjxoMj5UZXN0IDc6IGZhY2Vib29rRmVlZDwvaDI+DQp7ZmFjZWJvb2tGZWVkIHBhZ2VJZD0nQklubm92YXRpdmVXZWJEZXZlbG9wbWVudCd9PGJyPjxicj4NCg0KDQo8aDI+VGVzdCA4OiBnZXRDdXN0b21HUzwvaDI+DQo8cD5TaG91bGQgc2hvdyB0aGUgQ3VzdG9tR1MgJ0ZhY2Vib29rJyBzZXR0aW5nIGhlcmU6ICd7Z2V0Q3VzdG9tR1MgY3VzdG9tZ3NfZmllbGQ9J0ZhY2Vib29rJ30nPC9wPjxicj4NCg0KDQo8aDI+VGVzdCA5OiBhZG1pbl91c2VyPC9oMj4NCjxwPmFkbWluX3VzZXI6e2lmIHthZG1pblVzZXJ9fVllcyAtIElTIEFETUlOIFVTRVJ7ZWxzZX1OTyAtIG5vdCBBZG1pbiBVc2Vyey9pZn08YnI+DQogICA8c21hbGw+b3BlbiBpbiBpbmNvZ25pdG8gd2luZG93IHRvIHRlc3QgaWYgbm90IGxvZ2dlZCBpbjwvc21hbGw+PC9wPjxicj4NCg0KeyogTk9UIFdPUktJTkchISENCjxoMj5UZXN0IDEwOiBhZG1pblVzZXJBY3Rpb25Vcmw8L2gyPg0KPHA+YWRtaW5Vc2VyQWN0aW9uVXJsOiA8L3A+DQo8cD5jbXNfYWN0aW9uX3VybDoge2Ntc19hY3Rpb25fdXJsIG1vZHVsZT0nQ3VzdG9tR1MnIG1pZD0nbTFfJyByZXR1cm5pZD0nJyBhY3Rpb249ZGVmYXVsdGFkbWlufSwgPGEgaHJlZj0ie2Ntc19hY3Rpb25fdXJsfHJlcGxhY2U6J2NudG50MDEnOidtMV8nIG1vZHVsZT0nQ3VzdG9tR1MnIGFjdGlvbj1kZWZhdWx0YWRtaW59IiBjbGFzcz0iYnRuIGJ0bi1kZWZhdWx0Ij5MaW5rIHRvIEN1c3RvbUdTPC9hPiAgPGJyPg0KICAgPHNtYWxsPm9wZW4gaW4gaW5jb2duaXRvIHdpbmRvdyB0byB0ZXN0IGlmIG5vdCBsb2dnZWQgaW48L3NtYWxsPjwvcD48YnI+DQoqfQ0KDQoNCjxicj48YnI+PHA+VGhhdCdzIGl0LiBBbGwgVGVzdHMgZG9uZSA6KTwvcD4NCg0KICAgICAgICAgPC9kaXY+DQogICAgICA8L2Rpdj4NCiAgIDwvZGl2Pg0KPC9kaXY+PCEtLSBtYWluLS0+DQoNCg0Ke2dsb2JhbF9jb250ZW50IG5hbWU9J2Zvb3Rlcid9DQoNCntnb29nbGVGb250VXJsIHVybG9ubHk9MSBhc3NpZ249Z29vZ2xlRm9udFVybH0NCntpZiAhZW1wdHkoJGdvb2dsZUZvbnRVcmwpfQ0KICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ieyRnb29nbGVGb250VXJsfSI+DQp7L2lmfQ0Ke2NnanNfcmVuZGVyIGFkZGtleT0nMTlPY3QxOCd9DQoNCjwvYm9keT4NCjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/templates/youTubePlayer_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogeW91VHViZVBsYXllcl90ZW1wbGF0ZS50cGwgLSB2MS4wIC0gMDdGZWIxOQ0KDQogICAtIHYxLjAgLSAwN0ZlYjE5IC0gaW5pdGlhbCB2ZXJzaW9uDQoNCiAgIFNlZSBodHRwczovL3N1cHBvcnQuZ29vZ2xlLmNvbS95b3V0dWJlL2Fuc3dlci8xNzE3ODA/aGw9ZW4tR0IgZm9yIGRldGFpbHMuDQoNCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKn0NCntpZiAkdGh1bWJuYWlsPT0nJ30NCnsqIGluc2VydCBZb3VUdWJlIGlmcmFtZSBpbmxpbmUgJiByZXNwb25zaXZlIHVzaW5nIGJvb3RzdHJhcCBjc3MgKn0NCiAgICAgIDxkaXYgY2xhc3M9InZpZGVvLWNvbnRhaW5lciBlbWJlZC1yZXNwb25zaXZlIGVtYmVkLXJlc3BvbnNpdmUteyRhc3BlY3R9IHskY2xhc3N9Ij4NCiAgICAgICAgIDxpZnJhbWUgY2xhc3M9ImVtYmVkLXJlc3BvbnNpdmUtaXRlbSIgc3JjPSIvL3d3dy55b3V0dWJlLmNvbS9lbWJlZC97JHZpZGVvaWR9P3JlbD0wJm1vZGVzdGJyYW5kaW5nPTF7JHN0YXJ0fXskYXV0b3BsYXl9Ij48L2lmcmFtZT4NCiAgICAgIDwvZGl2Pg0KDQp7ZWxzZX0NCnsqIGluc2VydCBzcGVjaWZpZWQgdGh1bWJuYWlsIGFuZCBsb2FkIHBvcHVwIHZpZGVvIG9uIGNsaWNrDQogICBub3RlOiB0aGlzIG9wdGlvbiByZXF1aXJlcyBzbW9lIGN1c3RvbSBqcyBhbmQgY3NzIHRvIGZ1bmN0aW9uICp9DQogICAgICA8YSBjbGFzcz0idmlkZW8tdGh1bWJuYWlsIG1vZGFsLWF1dG8iIGRhdGEtdG9nZ2xlPSJtb2RhbCIgZGF0YS12aWRlby1zcmM9Ii8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL3skdmlkZW9pZH0iIGRhdGEtdGFyZ2V0PSIjbW9kYWwtYXV0byIgZGF0YS1tb2RhbC1zaXplPSJsZyIgaHJlZj0iIyI+DQogICAgICAgICA8aW1nIHNyYz0ieyR0aHVtYm5haWx9IiBhbHQ9InskdGV4dH0iPg0KICAgICAgICAgPHNwYW4gY2xhc3M9Im92ZXJsYXkiPjwvc3Bhbj4NCiAgICAgICAgIDxpIGNsYXNzPSJpY29uLVBsYXktQnV0dG9uIj48L2k+DQogICAgICAgICA8c3BhbiBjbGFzcz0idGV4dCI+eyR0ZXh0fTwvc3Bhbj4NCiAgICAgIDwvYT4NCnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/test/Utilities_Test_Template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUgLSB2MS4xIC0gMDdGZWIxOQ0KDQogICAtIHYxLjEgLSAwN0ZlYjE5IC0gcmVtb3ZlIHNvbWUgcmVkdW5kYW50IGNvbnRlbnQNCiAgIC0gdjEuMCAtIDA1RmViMTkgLQ0KDQogICBUZW1wbGF0ZSBzdG9yZWQgaW4gVXRpbGl0aWVzL3Rlc3QvVXRpbGl0aWVzX1Rlc3RfVGVtcGxhdGUudHBsDQogICAgICAtIGNvcHkgdGVtcGxhdGUgaW50byBhIGNvcmU6cGFnZSB0ZW1wbGF0ZSAmIGNyZWF0ZSAnVXRpbGl0aWVzIFRlc3QnIHBhZ2UNCg0KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKip9e3N0cmlwfQ0Ke2NvbnRlbnQgb25lbGluZT0xIGxhYmVsPSJVdGlsaXRpZXMgVEVTVCBUZW1wbGF0ZSIgYXNzaWduPWNvbnRlbnQxfQ0KDQoNCntjZ2pzX3JlcXVpcmUgbGliPSdqcXVlcnknfQ0Ke2NnanNfcmVxdWlyZSBqc2ZpbGU9J2Fzc2V0cy9qcy9ib290c3RyYXAuYnVuZGxlLm1pbi5qcyd9DQp7Y2dqc19yZXF1aXJlIGxpYj0nZm9ybSd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL3NsaWNrLm1pbi5qcyd9DQp7Y2dqc19yZXF1aXJlIGpzZmlsZT0nYXNzZXRzL2pzL21haW4uanMnfQ0KDQoNCnsvc3RyaXB9PCFET0NUWVBFIGh0bWw+DQo8aHRtbCBsYW5nPSJlbiI+DQo8aGVhZD4NCntpbmNsdWRlIGZpbGU9J2Ntc190ZW1wbGF0ZTpTdGFuZGFyZCBHbG9iYWwgTWV0YWRhdGEnfQ0KICAgeypjbXNfc3R5bGVzaGVldCp9DQogICB7Y3NzTWluaWZpZXIgY3NzPSJ7Y21zX3N0eWxlc2hlZXQgbm9saW5rcz10cnVlfSJ9DQogICA8c3R5bGU+e2xpdGVyYWx9LnByZSB7Zm9udC1mYW1pbHk6bW9ub3NwYWNlOyB3aGl0ZS1zcGFjZTpwcmUtd3JhcDsgd29yZC13cmFwOmJyZWFrLXdvcmQ7DQogICAgICAgYmFja2dyb3VuZC1jb2xvcjojREREOyBwYWRkaW5nOjFlbTt9ey9saXRlcmFsfTwvc3R5bGU+DQo8L2hlYWQ+DQoNCjxib2R5IGNsYXNzPSJwYWdlLXskcGFnZV9hbGlhc30iPg0KDQp7Z2xvYmFsX2NvbnRlbnQgbmFtZT0naGVhZGVyJ30NCg0KPGRpdiBjbGFzcz0ibWFpbiI+DQogICA8ZGl2IGNsYXNzPSJjb250YWluZXIiPg0KICAgICAgPGRpdiBjbGFzcz0icm93Ij4NCiAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiI+DQoNCjxoMT5VdGlsaXRpZXMgVGVzdCBQYWdlIC0gRnJvbnRlbmQgVGVzdHM8L2gxPg0KDQoNCjxoMj5UZXN0IDE6IGdhbGxlcnlDb3ZlcnM8L2gyPg0KPHA+JGdhbGxlcnlDb3ZlcnMgZGlyPSdwcm9qZWN0LWdhbGxlcmllcycgaXM6PC9wPg0KPGRpdiBjbGFzcz0icHJlIj57Z2FsbGVyeUNvdmVycyBkaXI9J3Byb2plY3QtZ2FsbGVyaWVzJ317JGdhbGxlcnlDb3ZlcnN8cHJpbnRfcn08L2Rpdj4NCjxkaXYgY2xhc3M9InJvdyI+DQogICB7Zm9yZWFjaCAkZ2FsbGVyeUNvdmVycyBhcyAkaW1nfQ0KICAgICAgPGRpdiBjbGFzcz0iY29sLTIiPjxpbWcgc3JjPSJ7dXBsb2Fkc191cmx9L3skaW1nfSIgYWx0PSIiPjwvZGl2Pg0KICAgey9mb3JlYWNofQ0KPC9kaXY+PGJyPg0KDQoNCg0KPGgyPlRlc3QgMjogZ29vZ2xlRm9udFVybDwvaDI+DQp7Y29udGVudCBibG9jaz1jb250ZW50MiBsYWJlbD0iZ29vZ2xlRm9udFVybDogY2hlY2sgdGhhdCBjb3JyZWN0IGZvbnRzIGJlaW5nIHVzZWQgaW4gVGlueU1DRSIgYXNzaWduPWNvbnRlbnQyfQ0KPHA+Z29vZ2xlRm9udFVybCBpczogJ3tnb29nbGVGb250VXJsfSc8L3A+DQo8YnI+DQoNCg0KPGgyPlRlc3QgMzogY3NzTWluaWZpZXI8L2gyPg0KPHA+VG8gY2hlY2sgPHN0cm9uZz5jc3NNaW5pZmllcjwvc3Ryb25nPiBvdXRwdXQ6PC9wPg0KPG9sPg0KICAgPGxpPnZpZXcgcGFnZSBzb3VyY2U8L2xpPg0KICAgPGxpPmZpbmQgQ1NTIGxpbmsgaW4gaGVhZCAnLi4ubWluaWZpZWRfc3R5bGVzaGVldF9jb21iaW5lZF8uLi4nPC9saT4NCiAgIDxsaT5vcGVuIGluIE5ldyBUYWI8L2xpPg0KICAgPGxpPmNoZWNrIHRoYXQgYWxsIENTUyBpcyBtaW5pZmllZCA6KTwvbGk+DQo8L29sPg0KPGJyPg0KDQoNCjxoMj5UZXN0IDQ6IHlvdVR1YmVQbGF5ZXI8L2gyPg0KPHA+eW91VHViZVBsYXllciAtIGxvYWQgWW91VHViZSBpZnJhbWUgaW1tZWRpYXRlbHkgKGRlZmF1bHQpPC9wPg0KPGRpdiBjbGFzcz0iY29sLTMiPnt5b3VUdWJlUGxheWVyIHZpZGVvaWQ9Ikp1cjFGT19uWTk4In08L2Rpdj48YnI+DQoNCjxwPnlvdVR1YmVQbGF5ZXIgLSBsb2FkIHRodW1ibmFpbCBvbmx5ICYgWW91VHViZSBwb3B1cCBvbmx5IG9uIGNsaWNrIChuZWVkcyBqcyk8L3A+DQo8ZGl2IGNsYXNzPSJjb2wtMyI+e3lvdVR1YmVQbGF5ZXIgdmlkZW9pZD0iSnVyMUZPX25ZOTgiIHRodW1ibmFpbD1tZWRpdW19PC9kaXY+PGJyPg0KDQoNCjxoMj5UZXN0IDU6IHR3aXR0ZXJGZWVkPC9oMj4NCjxkaXYgY2xhc3M9ImNvbC01Ij57dHdpdHRlckZlZWQgc2NyZWVuX25hbWU9J2Ntc21zJ308L2Rpdj48YnI+DQoNCg0KPGgyPlRlc3QgNjogZWRpdENvbnRlbnRUYWJzPC9oMj4NCntjb250ZW50IGJsb2NrPWNvbnRlbnQzIGxhYmVsPSJUZXN0IDY6IGVkaXRDb250ZW50VGFiczogY2hlY2sgdGhhdCBjb3JyZWN0IHRhYnMgYW5kIGZpZWxkcyBhcmUgYmVpbmcgZGlzcGxheWVkLiBDb3VsZCBtYWtlIGFkZGl0aW9uYWwgY2hhbmdlcyAmIHRlc3QgaWYgcmVxdWlyZWQiIG9uZWxpbmU9MSBhc3NpZ249Y29udGVudDN9DQo8cD5Ob3RoaW5nIHRvIHNlZSBvbiB0aGUgZnJvbnRlbmQhPC9wPjxicj4NCg0KDQo8aDI+VGVzdCA3OiBmYWNlYm9va0ZlZWQ8L2gyPg0Ke2ZhY2Vib29rRmVlZCBwYWdlSWQ9J0JJbm5vdmF0aXZlV2ViRGV2ZWxvcG1lbnQnfTxicj48YnI+DQoNCg0KPGgyPlRlc3QgODogZ2V0Q3VzdG9tR1M8L2gyPg0KPHA+U2hvdWxkIHNob3cgdGhlIEN1c3RvbUdTICdGYWNlYm9vaycgc2V0dGluZyBoZXJlOiAne2dldEN1c3RvbUdTIGN1c3RvbWdzX2ZpZWxkPSdGYWNlYm9vayd9JzwvcD48YnI+DQoNCg0KDQo8YnI+PGJyPjxwPlRoYXQncyBpdC4gQWxsIFRlc3RzIGRvbmUgOik8L3A+DQoNCiAgICAgICAgIDwvZGl2Pg0KICAgICAgPC9kaXY+DQogICA8L2Rpdj4NCjwvZGl2PjwhLS0gbWFpbi0tPg0KDQoNCntnbG9iYWxfY29udGVudCBuYW1lPSdmb290ZXInfQ0KDQp7Z29vZ2xlRm9udFVybCB1cmxvbmx5PTEgYXNzaWduPWdvb2dsZUZvbnRVcmx9DQp7aWYgIWVtcHR5KCRnb29nbGVGb250VXJsKX0NCiAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InskZ29vZ2xlRm9udFVybH0iPg0Key9pZn0NCntjZ2pzX3JlbmRlciBhZGRrZXk9JzE5T2N0MTgnfQ0KDQo8L2JvZHk+DQo8L2h0bWw+]]></data>
	</file>
	<file>
	  <filename>/Utilities.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBVdGlsaXRpZXMNCiMgQXV0aG9yOiBDaHJpcyBUYXlsb3INCiMgQ29weXJpZ2h0OiAoQykgMjAxOSBDaHJpcyBUYXlsb3IsIGNocmlzQGJpbm5vdmF0aXZlLmNvLnVrDQojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3V0aWxpdGllcw0KIyBMaWNlbmNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMNCiMgICAgICAgICAgc2VlIC9VdGlsaXRpZXMvbGFuZy9MSUNFTkNFLnR4dCBvciA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDE5IGJ5IENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIChjb3B5cmlnaHRAY21zbWFkZXNpbXBsZS5vcmcpDQojIFByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlDQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzDQojIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KIw0KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOw0KIyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLg0KIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQojDQojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLg0KIyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCg0KLy8gcHV0IG1vcmUgY29tcGxleCBmdW5jdGlvbnMgaW4gc2VwYXJhdGUgZnVuY3Rpb24uTmFtZS5waHAgZmlsZSAtIGJ1dCByZXF1aXJlIGhlcmU6DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLmNzc01pbmlmaWVyLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24ueW91VHViZVBsYXllci5waHAnKTsgcmVxdWlyZV9vbmNlKCRmbik7DQokZm4gPSBjbXNfam9pbl9wYXRoKF9fRElSX18sJ2Z1bmN0aW9uLnR3aXR0ZXJGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZWRpdENvbnRlbnRUYWJzLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCiRmbiA9IGNtc19qb2luX3BhdGgoX19ESVJfXywnZnVuY3Rpb24uZmFjZWJvb2tGZWVkLnBocCcpOyByZXF1aXJlX29uY2UoJGZuKTsNCg0KDQoNCmNsYXNzIFV0aWxpdGllcyBleHRlbmRzIFxDTVNNb2R1bGUgew0KDQogICBwdWJsaWMgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcxLjInOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJ1V0aWxpdGllcyc7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyByZXR1cm4gVFJVRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyByZXR1cm4gRkFMU0U7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSB7IHJldHVybiBGQUxTRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ0NocmlzIFRheWxvcic7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjaHJpc0BiaW5ub3ZhdGl2ZS5jby51ayc7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpIHsgcmV0dXJuICcyLjAnOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2luc3RhbGxfbXNnJyk7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2Fza191bmluc3RhbGwnKTsgfQ0KDQoNCiAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsNCiAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCg0KICAgICAgJHNtYXJ0eSA9IFxDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXRTbWFydHkoKTsNCiAgICAgIGlmKCAhJHNtYXJ0eSApIHJldHVybjsNCg0KICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIC0gbGVhdmUgc2ltcGxlIGZ1bmN0aW9ucyBpbiB0aGlzIGZpbGUNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjb250ZW50X3R5cGUnLCBhcnJheSgkdGhpcywgJ2NvbnRlbnRfdHlwZScpICk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignZ2FsbGVyeUNvdmVycycsIGFycmF5KCR0aGlzLCAnZ2FsbGVyeUNvdmVycycpICk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignZ29vZ2xlRm9udFVybCcsIGFycmF5KCR0aGlzLCAnZ29vZ2xlRm9udFVybCcpICk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignZ2V0Q3VzdG9tR1MnLCBhcnJheSgkdGhpcywgJ2dldEN1c3RvbUdTJykgKTsNCiAgICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdhZG1pblVzZXInLCBhcnJheSgkdGhpcywgJ2FkbWluVXNlcicpICk7DQoNCg0KICAgICAgLy8gcmVnaXN0ZXIgZnVuY3Rpb25zIC0gcHV0IG1vcmUgY29tcGxleCBmdW5jdGlvbnMgaW4gc2VwYXJhdGUgZnVuY3Rpb24uTmFtZS5waHAgZmlsZQ0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2Nzc01pbmlmaWVyJywgJ2Nzc01pbmlmaWVyJyk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbigneW91VHViZVBsYXllcicsICd5b3VUdWJlUGxheWVyJyk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignZWRpdENvbnRlbnRUYWJzJywgJ2VkaXRDb250ZW50VGFicycpOw0KICAgICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ3R3aXR0ZXJGZWVkJywgJ3R3aXR0ZXJGZWVkJyk7DQogICAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignZmFjZWJvb2tGZWVkJywgJ2ZhY2Vib29rRmVlZCcpOw0KDQogICB9DQoNCg0KDQogICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgew0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NjcmVlbl9uYW1lJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd3aWR0aCcsIENMRUFOX0lOVCk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGVpZ2h0JywgQ0xFQU5fSU5UKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0aGVtZScsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbGlua19jb2xvcicsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYm9yZGVyX2NvbG9yJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjaHJvbWVfb3B0aW9ucycsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYXNzaWduJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjdXN0b21nc19maWVsZCcsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW92ZV90YWJfY29udGVudCcsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW92ZV9maWVsZHMnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JlbmFtZV90YWInLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhZ2VJZCcsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGlkZUNvdmVyJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzaG93RmFjZXBpbGUnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Nob3dQb3N0cycsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaGlkZUN0YScsIENMRUFOX1NUUklORyk7DQogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc21hbGxIZWFkZXInLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkYXB0Q29udGFpbmVyV2lkdGgnLCBDTEVBTl9TVFJJTkcpOw0KICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2N1c3RvbWdzX2ZpZWxkJywgQ0xFQU5fU1RSSU5HKTsNCiAgIH0NCg0KDQoNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8NCiAgIC8vIFNpbXBsZSBmdW5jdGlvbnMgLSBzdGFydCBoZXJlDQogICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vDQoNCg0KDQogICBmdW5jdGlvbiBjb250ZW50X3R5cGUgKCRwYXJhbXMpIHsNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLy8NCiAgIC8vIFNldHMgdGhlIHJlcXVlc3QgY29udGVudCB0eXBlIHRvIGEgdmFsaWQgbWltZSB0eXBlDQogICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC8vDQoNCiAgICAgIGlmICggaXNzZXQoJHBhcmFtc1sndHlwZSddKSApDQogICAgICAgICAkY29udGVudF90eXBlID0gc3RydmFsKCAkcGFyYW1zWyd0eXBlJ10gKTsNCg0KICAgICAgaWYgKCAhZW1wdHkoICRjb250ZW50X3R5cGUgKSApDQogICAgICAgICBDTVNBcHA6OmdldF9pbnN0YW5jZSgpLT5zZXRfY29udGVudF90eXBlKCRjb250ZW50X3R5cGUpOw0KDQogICB9DQoNCg0KICAgZnVuY3Rpb24gZ2FsbGVyeUNvdmVycygkcGFyYW1zLCYkc21hcnR5KSB7DQogICAvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAvLyBzZXRzICRnYWxsZXJ5Q292ZXJzIGFycmF5IGNvbnRhaW5pbmcgdGhlIGNvdmVyZmlsZSAmIGNvdmVycGF0aCBvZiB0aGUgZnVsbCBzaXplIGNvdmVyIGltYWdlcw0KICAgLy8gb2YgdGhlIGdhbGxlcmllcyBpbiAkZGlyIHBhcmFtZXRlciAgcmVxdWlyZWQNCiAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICRvdXQgPSAnJzsNCiAgICAgICRkaXIgPSBzdHJ2YWwoJHBhcmFtc1snZGlyJ10pOw0KDQogICAgICAkZ2FsbGVyeUNvdmVycyA9IGFycmF5KCk7DQogICAgICAkR2FsbGVyeSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnR2FsbGVyeScpOw0KICAgICAgaWYoIGlzX29iamVjdCgkR2FsbGVyeSkgJiYgIWVtcHR5KCRkaXIpICkgew0KICAgICAgICAgLy8gUEcgPSBQYXJlbnQgR2FsbGVyeSwgQ0cgPSBDaGlsZCBHYWxsZXJ5LCBDSSA9IENvdmVyIEltYWdlDQogICAgICAgICAkc3FsID0gIlNFTEVDVCBDRy4qLCBDSS5maWxlbmFtZSBBUyBjb3ZlcmZpbGUsIENJLmZpbGVwYXRoIEFTIGNvdmVycGF0aA0KICAgICAgICAgICAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2dhbGxlcnkgQVMgUEcNCiAgICAgICAgICAgIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5IEFTIENHDQogICAgICAgICAgICAgICBPTiBQRy5maWxlaWQgPSBDRy5nYWxsZXJ5aWQNCiAgICAgICAgICAgIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9nYWxsZXJ5IEFTIENJDQogICAgICAgICAgICAgICAgICBPTiBDRy5kZWZhdWx0ZmlsZSA9IENJLmZpbGVpZA0KICAgICAgICAgICAgV0hFUkUgUEcuZmlsZW5hbWU9JyIuJGRpci4iLyciOw0KICAgICAgICAgJGRiID0gXGNtc191dGlsczo6Z2V0X2RiKCk7DQogICAgICAgICAkcmVzID0gJGRiLT5HZXRBcnJheSgkc3FsLCAkZGlyLicvJyk7DQogICAgICB9DQogICAgICBmb3JlYWNoICgkcmVzIGFzICRnYWxsZXJ5KSB7DQogICAgICAgICAkZ2FsbGVyeUNvdmVyc1skZ2FsbGVyeVsnZmlsZXBhdGgnXS4kZ2FsbGVyeVsnZmlsZW5hbWUnXV0gPQ0KICAgICAgICAgICAgJ2ltYWdlcy9HYWxsZXJ5LycuJGdhbGxlcnlbJ2NvdmVycGF0aCddLiRnYWxsZXJ5Wydjb3ZlcmZpbGUnXTsNCiAgICAgIH0NCg0KICAgICAgJHNtYXJ0eS0+YXNzaWduKCdnYWxsZXJ5Q292ZXJzJywgJGdhbGxlcnlDb3ZlcnMpOw0KICAgfQ0KDQoNCiAgIGZ1bmN0aW9uIGdvb2dsZUZvbnRVcmwoJHBhcmFtcywmJHNtYXJ0eSkgew0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgLy8gYmFzZWQgb24gVURUIGdvb2dsZUZvbnRVcmwNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgICAgICRvdXQ9Jyc7DQogICAgICAkQ3VzdG9tR1MgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0N1c3RvbUdTJyk7DQogICAgICAkQ3VzdG9tR1NGaWVsZCA9ICdHb29nbGUgRm9udHMnOw0KDQogICAgICBpZiAoICFlbXB0eSgkcGFyYW1zWydjdXN0b21nc19maWVsZCddKSApIHsNCiAgICAgICAgICRDdXN0b21HU0ZpZWxkID0gZmlsdGVyX3ZhcigkcGFyYW1zWydjdXN0b21nc19maWVsZCddLCBGSUxURVJfU0FOSVRJWkVfU1RSSU5HKTsNCiAgICAgIH0NCiAgICAgIGlmICggaXNfb2JqZWN0KCRDdXN0b21HUykgKSB7DQogICAgICAgICAkZ29vZ2xlRm9udHMgPSAkQ3VzdG9tR1MtPkdldEZpZWxkKCRDdXN0b21HU0ZpZWxkKTsNCiAgICAgICAgIGlmICggIWVtcHR5KCRnb29nbGVGb250c1sndmFsdWUnXSkgKSB7DQogICAgICAgICAgICAvLyAgb3V0cHV0IGZ1bGwgZ29vZ2xlYXBpcyB1cmwNCiAgICAgICAgICAgICRvdXQgPSAnLy9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PScuJGdvb2dsZUZvbnRzWyd2YWx1ZSddOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgICAgaWYgKCAhZW1wdHkoJHBhcmFtc1snYXNzaWduJ10pICkgew0KICAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCAkcGFyYW1zWydhc3NpZ24nXSwgJG91dCApOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgIGVjaG8gJG91dDsNCiAgICAgIH0NCiAgIH0NCg0KDQoNCiAgIGZ1bmN0aW9uIGdldEN1c3RvbUdTKCRwYXJhbXMsJiRzbWFydHkpIHsNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIGJhc2VkIG9uIHBhZ2VWYXJzIGdldEN1c3RvbUdTDQogICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICAgICAkQ3VzdG9tR1MgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0N1c3RvbUdTJyk7DQoNCiAgICAgIGlmKCBpc19vYmplY3QoJEN1c3RvbUdTKSAmJiAhZW1wdHkoJHBhcmFtc1snY3VzdG9tZ3NfZmllbGQnXSkgKSB7DQogICAgICAgICAkdG1wID0gJEN1c3RvbUdTLT5HZXRGaWVsZCggJHBhcmFtc1snY3VzdG9tZ3NfZmllbGQnXSApOw0KICAgICAgICAgJHZhbHVlID0gJHRtcFsndmFsdWUnXTsNCiAgICAgICAgIHJldHVybiAkdmFsdWU7DQogICAgICB9DQogICB9DQoNCg0KICAgZnVuY3Rpb24gYWRtaW5Vc2VyKCRwYXJhbXMsJiRzbWFydHkpIHsNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIGJhc2VkIG9uIFZlbGRlbnMgc3VnZ2VzdGlvbg0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQogICAgICAkYXNzaWduID0gKGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSA/ICRwYXJhbXNbJ2Fzc2lnbiddIDogZmFsc2UpOw0KICAgICAgJHJlZGlyZWN0ID0gKGlzc2V0KCRwYXJhbXNbJ3JlZGlyZWN0J10pID8gKGJvb2xlYW4pICRwYXJhbXNbJ3JlZGlyZWN0J10gOiBmYWxzZSk7DQoNCiAgICAgICR1c2VyaWQgPSBnZXRfdXNlcmlkKCRyZWRpcmVjdCk7DQoNCiAgICAgIGlmICggJGFzc2lnbiApIHsNCiAgICAgICAgICRzbWFydHktPmFzc2lnbigkYXNzaWduLCAoYm9vbGVhbikgJHVzZXJpZCApOw0KICAgICAgfSBlbHNlIHsNCiAgICAgICAgIHJldHVybiAoYm9vbGVhbikgJHVzZXJpZDsNCiAgICAgIH0NCg0KICAgfQ0KDQoNCg0KDQoNCg0KfQ==]]></data>
	</file>
</module>
